无法让 TeX-command-extra-options 在 AUCTeX 11.88 中工作

无法让 TeX-command-extra-options 在 AUCTeX 11.88 中工作

我正在使用minted需要-shell-escape将选项移交给处理器的软件包。我使用 XeLateX 作为我的处理器。我在 emacs 24.3.1 中使用 ELPA 更新了 AUCTeX;AUCTeX 现在是版本 11.88。根据问题,我可以简单地将局部变量设置TeX-command-extra-options"-shell-escape".但是,当我执行此操作并执行C-c C-c(启动 LaTeX)时,我仍然收到相同的错误:

Package ifplatform Warning: 
    shell escape is disabled, so I can only detect \ifwindows.

))

! Package minted Error: You must invoke LaTeX with the -shell-escape flag.

See the minted package documentation for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.32 

我做错了什么?我通过以下方式设置了变量

%%% TeX-command-extra-options: "-shell-escape"

在我的.tex源代码中以及M-x set-variable在缓冲区中手动执行。两者都导致相同的结果。

答案1

该手册中提到第 5.3 节你必须将局部变量放在这样的块中:

%%% Local Variables:
%%% TeX-command-extra-options: "-shell-escape"
%%% End:

附言:我也花了一段时间才搞明白。我认为文档应该先介绍局部变量的工作原理(第 5.3 节),然后再给出没有所需上下文的配置行(第 4.1.3 节)。

答案2

您无需每次都插入块,而是%%% Local Variables ... %%%End:使用包minted,应该有一个minted.ellisp 包,它将由 emacs 和 AUCTeX 在您插入文件的瞬间自动加载\usepackage{minted}。(或者,每当您加载一个已经包含的文件时,它都会被加载\usepackage{minted})。

AUCTeX 附带各种预定义的 .el 支持文件。不幸的是,似乎没有适用于该minted包的文件。我尝试自己编写一个,它似乎可以工作(经过短暂且不彻底的测试)。

为了添加潜在的恶意选项,每当minted加载 -package 时,我都会添加以下代码行:

(setq LaTeX-command-style '(("" "%(PDF)%(latex) -shell-escape %S%(PDFout)")))

它是从这篇优秀的文章中复制而来的:从 AUCTeX 向 PDFLaTeX 调用添加一个选项

我还向 emacs.SE 寻求帮助,完善我有些愚蠢的TeX-arg-minted-optslisp 函数,以便能够在命令或环境中插入多个选项,甚至将它们链接到适当的值表达式。如果有人感兴趣:这是 Emacs.SE 上的问题:https://emacs.stackexchange.com/questions/29617/auctex-and-package-minted

我打算将我的 lisp 包提供给 AUCTeX,将其包含在主要发行版中。如果有人对该包感兴趣,请联系我或在 Emcas.SE 上查找。

相关内容