我想使用拉特克斯克在Emacs中编译我的LaTeX文档。特别是我需要Emacs功能next-error,它通常用C调用,然后跳转到文档中的下一个LaTeX错误。
我想将latexmk称为C-x compile或AUCTeX C-c C-c。
首先,我将latexmk设置为
$pdflatex = 'pdflatex -interaction=nonstopmode';选项1: C编译
我按C-x compile并键入latexmk -pdf foo,它运行pdflatex。但是,即使* next-error *缓冲区包含错误,也不会跳到错误:
! Paragraph ended before \author was complete.
<to be read again>
\par
l.48
[...]
Compilation exited abnormally with code 12 如何自动跳转到第48行中的错误?
请注意,解析latex输出的问题与latexmk没有直接关系。当我只执行C-x compile pdflatex -interaction=nonstopmode foo时,也会出现同样的问题。
选项2: AUCTeX
如何将AUCTeX设置为在latexmk -pdf文件上调用latexmk -pdf而不是pdflatex?当然,我也希望next-error在这里工作。
更新:,我启动了一个奖品,因为如果这能成功的话,对很多人来说它将是一个很好的工具。如果给出了一个解决方案,使我能够在Emacs中轻松地使用LaTeX编译latexmk文档,然后使用next-error跳到错误(当然,错误可能在包含的.tex文件中,而不一定在主文件或当前缓冲区中),我将考虑这个问题。
更新:感谢Ivan (和Chris)让AUCTeX+Latexmk工作。同时,我发现使用橡胶编译LaTeX也是一个很好的选择。它将以gcc和其他编译器使用的格式显示错误消息,因此它自然地与Emacs C-x compile (例如C-x compile rubber --pdf foo )一起工作,并正确地解析错误消息。
发布于 2010-02-11 22:01:08
对不起,我没有能力发表评论,否则我只会把这个作为评论。Conway的答案有效,只是它应该使用TeX-run-TeX而不是TeX-run-command,以便AucTeX知道如何处理错误消息。
(add-hook 'LaTeX-mode-hook (lambda ()
(push
'("Latexmk" "latexmk -pdf %s" TeX-run-TeX nil t
:help "Run Latexmk on file")
TeX-command-list)))添加以下内容也可能是明智的
'("%(-PDF)"
(lambda ()
(if (and (not TeX-Omega-mode)
(or TeX-PDF-mode TeX-DVI-via-PDFTeX))
"-pdf" "")))TeX-expand-list,并使用"latexmk %(-PDF) %s",这样它就可以在pdf和dvi模式下工作。就我个人而言,我发现使用定制更容易,尤其是当您正在试验时。
发布于 2012-07-10 13:38:33
添加%(模式)为latexmk提供了更多的选项,例如,如果在拍卖行中将其设置为非交互式的。
(add-hook 'LaTeX-mode-hook (lambda ()
(push
'("Latexmk" "latexmk -pdf %(mode) %s" TeX-run-TeX nil t
:help "Run Latexmk on file")
TeX-command-list)))https://stackoverflow.com/questions/2199678
复制相似问题