当出现错误时,不要让我手动终止 LaTeX 编译

正如建议的 给你latexmk是一种方便的方法,可以在源代码发生变化时不断地编译文档。但是通常当您在处理一个文档时,您会遇到一些错误,然后 latex会感到恐慌,在继续之前等待用户输入。这可能会非常恼人,尤其是最近我从一个 以太板文档中直接编译 latex时,它会在您输入时不断保存。

如果 latexlatexmk无法编译,是否有一个设置使它只是中止并出现错误消息?或者,如果有必要,我如何设置某种 Expect 脚本来自动驳回 LaTeX 的投诉?

(我原以为 pdflatex的选项 -halt-on-error会起作用,但显然没有。)

附加问题: Mac OSX 上的 Skim 是一个不错的 pdf 浏览器,当 pdf 改变时会自动刷新(不同于预览版) ,除了会在出现乳胶错误时让你重新确认你想要自动刷新。Texniscope 没有这个问题,但是我不得不放弃 Texniscope 而选择 其他原因。有没有办法让 Skim 总是自动刷新,还是有另一个查看器可以做到这一点?


补充: 基于这个问题的答案的 latexmk小教程:

  1. 这里是 latexmk: http://www.phys.psu.edu/~collins/software/latexmk-jcc/

  2. ~/.latexmkrc文件中添加以下内容:

    $pdflatex = 'pdflatex -interaction=nonstopmode';
    

    (适用于带有 Skim 的 OS X)

    $pdf_previewer = "open -a /Applications/Skim.app";
    
  3. While editing your source file, foo.tex, run the following in a terminal:

    latexmk -pvc -pdf foo.tex
    
  4. Use Skim or another realtime pdf viewer to view foo.pdf. For Skim, just look at the “Sync” tab in Skim’s preferences and set it up for your editor.

Voila! Hitting save on foo.tex will now cause foo.pdf to refresh without touching a thing.

23112 次浏览

对于 MikTeX,pdflatex有以下命令行选项:

  -interaction=MODE               Set the interaction mode; MODE must be one
of: batchmode, nonstopmode, scrollmode,
errorstopmode.

编辑@9999年建议:

这些值相当于一组提供相同功能的 LaTeX\commands

来自 TeX 使用技巧:

这些模式使得 TeX 的行为方式如下:

  • errorstopmode停止所有错误,无论它们是否与 源代码或不存在的文件

  • scrollmode不会在源中的错误时停止,而是在 更严重的错误,如文件丢失。

  • 在名称有些错误的 nonstopmode中,TeX 在以后不请求输入 严重的错误,但完全停止

  • batchmode防止除此之外的所有输出(用于 在所有情况下,所有错误都写入日志文件 (yourtexfile.log)

另一种可能的黑客手段是简单地使用:

yes x | latexmk source.tex

如果你想使用这个选项,你可以为‘ yes x | latexmk’创建一个别名。这样做的主要优点是,当您偶尔希望 latexmk 这样做时,它非常快速。

穆罕默德

还有一个 \batchmode 命令可以做这项工作。

您也可以将 \nonstopmode\batchmode放在您的 TeX 文件的开头; 然后它将与任何 TeX 版本一起工作,而不仅仅是 pdflatex。关于这些和相关命令的更多信息,请看非常好的 参考(原始) TeX 命令作者: David Bausum。特别是来自 调试家庭的命令可能会引起这里的兴趣。