Использование minted (пакет исходного кода LaTeX) с emacs / auctex - PullRequest
11 голосов
/ 21 июля 2010

Как объяснено в здесь , я считаю, что minted пакет довольно хорош для распечатки исходного кода.

Мой вопрос: как использовать пакет minted с AucTeX / emacs?Для командной строки я могу использовать pdflatex -shell-escape SOURCE, но

  • Q1: Как я могу изменить AucTeX для вставки -shell-escape?Я имею в виду, как изменить действие для C - c + C - c ?
  • Q2: DoМне нужен специальный ключ, отличный от C - c + C - c для опции -shell-escape?Или можно использовать его без проблем?
  • Q3: Для чего нужен -shell-escape?

Ответы [ 3 ]

15 голосов
/ 22 июля 2010

Q1: Вам нужно отредактировать способ вызова LaTeX AucTeX.Один из способов сделать это - добавить следующее в ваш файл .emacs:

(eval-after-load "tex" 
  '(setcdr (assoc "LaTeX" TeX-command-list)
          '("%`%l%(mode) -shell-escape%' %t"
          TeX-run-TeX nil (latex-mode doctex-mode) :help "Run LaTeX")
    )
  )

Q2: После внесения изменений все вызовы LaTeX с Cc Cc будут использовать опцию -shell-escape.

Q3: См. Ответ Конрада.Обратите внимание, что этот метод включит -shell-escape для всех файлов, отредактированных в AucTeX, поэтому может представлять потенциальную угрозу безопасности при использовании пакетов или файлов других людей.

7 голосов
/ 21 июля 2010

Я могу ответить только на вопрос 3:

Для чего нужен '-shell-escape'?

minted использует стороннее приложение, pygmentize, для обработки исходного кода.LaTeX обычно не позволяет вызывать другие приложения по соображениям безопасности (в противном случае пакет-мошенник мог бы вызвать код aribtrary).Чтобы явно включить вызов внешних приложений, вам необходимо включить так называемый переход в оболочку, который в большинстве установок LaTeX выполняется с помощью переключателя -shell-escape.

6 голосов
/ 26 ноября 2014

В последних версиях auctex, похоже, будет более надежно установить TeX-command-extra-options, который предназначен именно для этой цели и не заставляет вас игнорировать различные формы TeX-command.Насколько я понимаю (может быть неправильно), это не может быть установлено глобально, но должно быть установлено для каждого файла.Вы можете сделать это с помощью крючка.Например, в .emacs вы можете добавить это:

(add-hook 'TeX-mode-hook
  (lambda ()
    (setq TeX-command-extra-options "-shell-escape")
  )
)

И поскольку вы не полностью перезаписываете вызов команды latex, другие функции все равно будут работать - например, включение поддержки synctex с (setq TeX-source-correlate-mode t) [что может случиться вне крюка].

...