将 minted(源代码 LaTeX 包)与 emacs/auctex 一起使用
Posted
技术标签:
【中文标题】将 minted(源代码 LaTeX 包)与 emacs/auctex 一起使用【英文标题】:Using minted (source code LaTeX package) with emacs/auctex 【发布时间】:2011-03-19 01:09:03 【问题描述】:正如here 中所解释的,我发现 minted 包对于源代码列表非常酷。
我的问题是如何在 AucTeX/emacs 中使用 minted 包?
对于命令行我可以使用pdflatex -shell-escape SOURCE
,但是
-shell-escape
?我的意思是,如何更改 C-c+C-c 的动作?
Q2 : 除了 C-c+C-c 之外,@987654324 是否需要特殊密钥? @ 选项?或者,是否可以毫无问题地使用它?
Q3:-shell-escape
是干什么用的?
【问题讨论】:
【参考方案1】:我只能回答问题3:
'-shell-escape' 是干什么用的?
minted 使用第三方应用程序pygmentize
来处理源代码。出于安全原因,LaTeX 通常不允许调用其他应用程序(恶意程序包可能会调用任意代码)。要显式启用调用外部应用程序,您需要启用这种所谓的转义到 shell——在大多数 LaTeX 安装中,这是通过 -shell-escape
开关完成的。
【讨论】:
【参考方案2】: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
选项。
Q3:见康拉德的回答。请注意,此方法将为在 AucTeX 中编辑的所有文件启用-shell-escape
,因此如果使用其他人的包或文件可能存在潜在的安全风险。
【讨论】:
@Mike 在底部的回答提供了一种在现代 AucTeX 版本中执行相同操作的更简单且干扰更少的方法。【参考方案3】:在最近的 auctex 版本中,设置 TeX-command-extra-options
似乎会更可靠,它就是为此目的而设计的,不会让您覆盖 TeX-command
的各种形式。据我了解(可能是错误的),这不能全局设置,但必须为每个文件设置。你可以用钩子来做到这一点。例如,在.emacs
中,您可以添加以下内容:
(add-hook 'TeX-mode-hook
(lambda ()
(setq TeX-command-extra-options "-shell-escape")
)
)
而且由于您没有完全覆盖 latex 命令调用,其他功能仍然可以使用 - 例如使用(setq TeX-source-correlate-mode t)
开启synctex
支持[这可能发生在挂钩之外]。
【讨论】:
您也可以将其添加到您的.dir-locals.el
以将其设置为一个文件夹中的所有文件
我尝试在 Emacs 24.5.1 (Ubuntu 16.04) 中将 TeX-command-extra-options 设置为缓冲区局部变量,但这似乎不起作用。您需要多长时间的版本?以上是关于将 minted(源代码 LaTeX 包)与 emacs/auctex 一起使用的主要内容,如果未能解决你的问题,请参考以下文章