使用 AUCTeX 时出现不明确的错误消息

使用 AUCTeX 时出现不明确的错误消息

我在使用 AUCTeX 时经常遇到这个错误:

TeX-error: Error occured after last TeX file closed

但是,例如pdflatex在命令行上运行时,我收到了正确的错误消息。但行号信息并不总是有用的,尤其是包含多个文件时。我希望能够在 Emacs 中看到错误。

答案1

AUCTeX 11.89

从此版本的 AUCTeX 开始,选项TeX-file-line-error默认启用file:line:error解决问题的消息。因此,从此版本开始,您不会再遇到此类问题。我还建议将所有更改恢复为LaTeX-command-style,以确保使用默认值。

请参阅下文以了解先前版本。


AUCTeX 11.88 或更早版本

您无需编辑文件,texmf.cnf只需向 TeX 处理器添加选项即可-file-line-error。为此,请将以下代码添加到您的.emacs

(setq LaTeX-command-style '(("" "%(PDF)%(latex) -file-line-error %S%(PDFout)")))

另请参阅AUCTeX 常见问题解答

8.为什么TeX-next-errorC-c `)会失败?

在写入日志文件时,TeX 将与文件相关的信息(包括错误消息)放在一对括号之间。AUCTeX 通过解析日志文件并计算括号数来确定发生错误的文件。当存在其他不匹配的括号时,此方法可能会失败。

作为一种解决方法,您可以为日志文件激活所谓的 file:line:error 消息。(这些更容易解析,但可能缺少一些细节。)您可以在 TeX 系统的配置中执行此操作(请参阅其手册以了解它在哪里),或者向 (la)tex 调用添加命令行开关,例如通过自定义LaTeX-command-styleTeX-command-list

注:已经回答这里

答案2

Gentoo 论坛给出了一个对我有用的解决方案:

我发现如果我注释掉

\usepackage{hyperref}

一切正常。显然,emacs、auctex 和 hyperref 之间存在某种交互,导致了这个问题。

这个解决方案可以快速尝试,但并不理想(您必须hyperref稍后取消注释)。

更好的解决方案是遵循Bug-AUCTeX 列表,在之前的论坛帖子中提到。恢复快速修复:

在文件中将更改file_line_error_style为。fttexmf.cnf

此文件的位置和名称可能会有所不同。以下是一些可能的值:

/usr/share/texmf/web2c/texmf.cnf
/usr/share/texlive/texmf/web2c/texmf.cnf
/etc/texmf/texmf.d/95NonPath.cnf

您可能需要运行update-texmf,但在我的 TeXLive 安装中我不需要这样做。我只需取消注释hyperref之前注释的行即可。

答案3

giordano 的解决方案很棒,但我却遇到了其他问题。

emacs24.2.1直到最近我在 win7 上重建++之前auctex11.87,我从来没有遇到过这个问题miktex2.9。我不仅收到了"TeX-error: Error occured after last TeX file closed"错误消息,甚至无法直接编译新创建的 tex 文件C-c C-c y RET。emacs 不会提醒我像往常一样保存新文件然后再进行编译,但我不得不先用鼠标单击“保存”图标。

在寻找解决方案时,我偶然发现了以下页面 comments.gmane.org/gmane.emacs.auctex.general/5070

所以我尝试替换这两个文件tex-buf.eltex-buf.elcauctex11.87使用来自auctex11.86

我不确定我是否破坏了 auctex11.87 的一些新功能,但至少问题已经解决。

相关内容