Использование minted (пакет исходного кода LaTeX) с emacs/auctex

как поясняется в здесь, Я считаю, что чеканный пакет довольно крут для списка исходного кода.

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

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

3 ответов


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 с C-c C-c будут использовать .

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


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

Что такое "-shell-escape " для?

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


в последних версиях 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) [что может произойти за пределами крючком].