12

正如这里所解释的,我发现 minted 包对于源代码列表非常酷。

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

  • Q1:如何修改 AucTeX 以插入-shell-escape? 我的意思是,如何改变C- c+ C-的动作c
  • Q2 : 除了C- c+ C-选项c,我还需要特殊键吗?-shell-escape或者,可以毫无问题地使用它吗?
  • Q3:有什么-shell-escape用?
4

3 回答 3

14

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:一旦您进行了更改,所有使用 Cc Cc 调用 LaTeX 都将使用该-shell-escape选项。

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

于 2010-07-22T12:37:08.147 回答
8

在最近版本的 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)[这可能发生在钩子之外]。

于 2014-11-26T18:07:24.873 回答
7

我只能回答问题3:

'-shell-escape' 有什么用?

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

于 2010-07-21T16:30:44.217 回答