如何在 Emacs/AUCTeX 上设置我的 LaTeX,以便在调用 pdfTeX 时使用 -file-line-error 选项

如何在 Emacs/AUCTeX 上设置我的 LaTeX,以便在调用 pdfTeX 时使用 -file-line-error 选项

过去几个小时我一直在思考这个问题,但还是没能搞清楚。我在 Emacs 24.2 上使用 AUCTeX 11.87 和 MiKTeX 2.9(从 Vincent Goulet 获得,已预先打包了 AUCTeX):

我在使用 AUCTeX 在 Windows 7 上编译我的 LaTeX 文件时遇到了麻烦,它让我进入一个空白屏幕,并显示一条神秘的消息“最后一个 TeX 文件关闭后出错”。尽管同一个文件在我的 Ubuntu 12.1 设置上可以编译。从我搜索这个网站和谷歌的过程中,我似乎已经将问题追溯到在调用 pdfTeX 时需要使用 -file-line-error 标志。我通读了 AUCTeX 的代码,但它变得非常复杂,我不明白我需要在任何可自定义的选项中插入 -file-line-error 的位置。

欢迎提出任何有关如何进行的建议。我宁愿不手动更改任何配置文件,因为我在 pdfTeX 手册中看到了不要这样做的警告。

答案1

最简单的方法是M-x customize-variable RET LaTeX-command RET,然后添加-file-line-error到命令中,并保存以供将来会话使用。您可能还必须对其他引擎执行相同操作,例如通过自定义TeX-command。您可以通过自定义来更好地控制要使用的引擎TeX-engine-alist

答案2

在最近的 auctex 版本中,设置 似乎更可靠TeX-command-extra-options,它就是为此目的而设计的,并且不会让你覆盖 的各种形式TeX-command。所以这是一种很好的、​​非破坏性的添加选项的方式,不会干扰后续的更改——比如在 TeX 风格之间切换、启用 synctex 等。

据我了解(可能错了),该值不能全局设置,但必须为每个文件设置。您可以使用钩子来执行此操作。我的 中有以下内容.emacs

(add-hook 'TeX-mode-hook
  (lambda ()
    (setq TeX-command-extra-options "-file-line-error -shell-escape")
  )
)

[另请注意,synctex现在可以使用 来打开(setq TeX-source-correlate-mode t),而不是包含在命令行中。这可以全局设置,因此它应该位于该钩子之外。]

答案3

欢迎提出任何有关如何进行的建议。我宁愿不手动更改任何配置文件,因为我在 pdfTeX 手册中看到了不要这样做的警告。

我从来不费心去修复 Emacs 的这种错误行为,因为如果我遇到“TeX 异常退出”,我会快速查看输出。使用“Cc Cl”可以在几分之一秒内得到它。切换到这个缓冲区:“Cx o”并搜索第一的错误。

相关内容