我想使用latexmk在 Emacs 中编译我的 LaTeX 文档。特别是我需要 Emacs 功能next-error
,它通常用 Cx ` 调用,并跳转到文档中的下一个 LaTeX 错误。
我想调用latexmk
usingC-x compile
或 AUCTeX C-c C-c
。
首先,我设置latexmk
使用
$pdflatex = 'pdflatex -interaction=nonstopmode';
选项 1:Cx 编译
我按下C-x compile
并键入latexmk -pdf foo
,它运行pdflatex
。但next-error
不会跳转到错误,即使 *compilation* 缓冲区包含错误:
! Paragraph ended before \author was complete.
<to be read again>
\par
l.48
[...]
Compilation exited abnormally with code 12
如何在第 48 行自动跳转到此错误?
latexmk
请注意,解析乳胶输出的这个问题与直接无关。当我这样做时也会出现同样的问题C-x compile pdflatex -interaction=nonstopmode foo
。
选项 2:AUCTeX
如何将 AUCTeX 设置为调用latexmk -pdf
而不是pdflatex
在我的 .tex 文件上调用?当然,我也想next-error
在这里工作。
更新:我开始了赏金,因为如果这可行,它将成为许多人的好工具。如果给出的解决方案可以让我在 Emacs 中轻松编译我的 LaTeX 文档latexmk
并使用跳转到错误next-error
(当然,错误可能在包含的.tex 文件中,不一定在主文件或当前缓冲)。
更新:感谢 Ivan(和 Chris)使 AUCTeX+Latexmk 工作。同时,我发现使用Rubber编译 LaTeX 也是一个不错的选择。它将以gcc
和其他编译器使用的格式显示错误消息,因此它自然适用于 Emacs C-x compile
,例如C-x compile rubber --pdf foo
,并且错误消息被正确解析。