我的设置:AUCTex 11.89.4、MikTeX 2.9 64 位、Windows 10 上的 Emacs 24。除了将查看器设置为 SumatraPDF 和一些颜色和字体外,没有其他重要的定制。
问题:我使用 AUCTex 内部的 pdflatex 编译了一个很长的多部分文件(一本书)。我故意\dasdasa
在某行上添加了一个伪命令。AUCTex 正确识别了错误,pdflatex 报告了错误文件和行号信息
photons.tex:579: Undefined control sequence
但 AUCTex 无法在文件中找到错误的位置。它系统地转到错误的行!有什么提示吗?
答案1
这是 MiKTeX 的问题。您必须向 MiKTeX 开发人员投诉,因为该发行版中包含的 *tex 程序在使用file:line:error
消息样式时提供的详细信息较少,而消息样式应该提供更多信息。您可以向此错误报告添加评论:https://sourceforge.net/p/miktex/bugs/2310/
为了解决此问题,您必须通过使用来设置TeX-file-line-error
为,或者在 init 文件中添加以下行:nil
M-x customize-variable
RET TeX-file-line-error
RET
(setq TeX-file-line-error nil)
另请参阅经常问的问题在 AUCTeX 手册中:
8. 为什么
TeX-next-error
(C-c `)会失败?如果
TeX-file-line-error
设置为nil
(不是默认值),这些失败可能与以下事实有关:在写入日志文件时,TeX 将与文件相关的信息(包括错误消息)放在一对括号之间。在这种情况下,AUCTeX 通过解析日志文件并计算括号数来确定发生错误的文件。当存在其他不匹配的括号时,这可能会失败。激活日志文件的所谓
file:line:error
消息通常可以解决此问题,因为这类消息更容易解析;但是,它们可能缺少一些细节。可以在 TeX 系统的配置中激活(请参阅其手册以了解其位置),也可以简单地将变量保持TeX-file-line-error
为非零的默认值。