如here中所述,我发现minted包对于源代码列表来说非常酷。
我的问题是如何使用AucTeX / emacs的铸造包?
对于命令行,我可以使用pdflatex -shell-escape SOURCE
,但
-shell-escape
?我的意思是,如何更改 C 的动作 - c + C - c ?-shell-escape
是什么? 答案 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>