使用minted(源代码LaTeX包)和emacs / auctex

时间:2010-07-21 14:45:38

标签: emacs latex auctex

here中所述,我发现minted包对于源代码列表来说非常酷。

我的问题是如何使用AucTeX / emacs的铸造包? 对于命令行,我可以使用pdflatex -shell-escape SOURCE,但

  • Q1:如何修改AucTeX以插入-shell-escape?我的意思是,如何更改 C 的动作 - c + C - c
  • Q2:我需要{kbd> C - c + C - c 以外的特殊密钥{{ 1}}选项?或者,可以毫无问题地使用它吗?
  • 问题3:-shell-escape是什么?

3 个答案:

答案 0 :(得分:15)

Q1:您需要编辑AucTeX调用LaTeX的方式。一种方法是将以下内容添加到.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:完成更改后,所有使用C-c C-c对LaTeX的调用都将使用-shell-escape选项。

问题3:请参阅Konrad的回答。请注意,此方法将为AucTeX中编辑的所有文件启用-shell-escape,因此如果使用其他人包或文件,则可能存在安全风险。

答案 1 :(得分:7)

我只能回答问题3:

  

什么是'-shell-escape'?

minted使用第三方应用程序pygmentize来处理源代码。由于安全原因,LaTeX通常不允许调用其他应用程序(否则流氓包可能会调用aribtrary代码)。要显式启用调用外部应用程序,您需要启用这个所谓的转义到shell - 在大多数LaTeX安装中,通过-shell-escape开关完成。

答案 2 :(得分:6)

在auctex的最新版本中,设置TeX-command-extra-options似乎更可靠,它是专为此目的而设计的,并且不会覆盖各种形式的{ {1}}。据我所知(可能是错误的),这不能全局设置,但必须为每个文件设置。你可以用钩子做到这一点。例如,在TeX-command中,您可以添加以下内容:

.emacs

由于你没有完全覆盖latex命令调用,其他功能仍然可以正常工作 - 比如启用(add-hook 'TeX-mode-hook (lambda () (setq TeX-command-extra-options "-shell-escape") ) ) 支持synctex [这可能发生在钩子外面]。 / p>