将minted(源代码LaTeX包)与emacs/auctex一起使用

将minted(源代码LaTeX包)与emacs/auctex一起使用,emacs,latex,auctex,Emacs,Latex,Auctex,正如中所解释的,我发现minted包对于源代码列表来说非常酷 我的问题是如何与AucTeX/emacs一起使用minted软件包? 对于命令行,我可以使用pdflatex-shell转义源代码,但是 问题1:如何修改AucTeX以插入-shell转义?我的意思是,如何改变C-C+C-C的动作 问题2:我是否需要C-C+C-C以外的特殊键来使用-shell转义选项?或者,可以毫无问题地使用它吗 问题3:shell转义的作用是什么 我只能回答问题3: “外壳逃生”是为了什么 minted使用第三方

正如中所解释的,我发现minted包对于源代码列表来说非常酷

我的问题是如何与AucTeX/emacs一起使用minted软件包? 对于命令行,我可以使用
pdflatex-shell转义源代码
,但是

  • 问题1:如何修改AucTeX以插入
    -shell转义
    ?我的意思是,如何改变C-C+C-C的动作
  • 问题2:我是否需要C-C+C-C以外的特殊键来使用
    -shell转义
    选项?或者,可以毫无问题地使用它吗
  • 问题3:shell转义的作用是什么
我只能回答问题3:

“外壳逃生”是为了什么


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

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")
    )
  )
问题2:进行更改后,所有使用C-C-C调用LaTeX的调用都将使用
-shell转义
选项


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

在AucTeX的最新版本中,设置
TeX命令额外选项
,看起来更可靠,并且不会使您覆盖各种形式的
TeX命令
。据我所知(可能是错误的),这不能全局设置,但必须为每个文件设置。你可以用钩子做这个。例如,在
.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设置为缓冲区局部变量,但似乎不起作用。你需要一个多新的版本?@Mike在底部的回答提供了一种在AucTeX的现代版本中进行同样操作的更简单、更少干扰的方法。