出现错误时不要让我手动中止LaTeX编译

正如这里所build议的, latexmk是一个方便的方法来不断编译您的文件,每当源文件更改。 但是,当你在处理文档时,往往会遇到错误,然后在继续之前, latex会惊慌并等待用户input。 这可能会变得非常烦人,特别是最近当我篡改了一些直接从etherpad文档编译latex东西时,在键入的时候会不断保存。

是否有一个latexlatexmk设置使它只是中止与错误消息,如果它不能编译? 或者,如果有必要,我将如何设置某种Expect脚本来自动排除LaTeX的投诉?

(我曾经想过pdflatex的select-halt-on-error会做的,但显然不是。)

奖金的问题:Skim在Mac OSX是一个很好的PDF查看器,当pdf发生变化时,会自动刷新(不像Preview), 除非每次出现乳胶错误,都会使您再次确认要自动刷新。 Texniscope没有这个问题,但是由于其他原因 ,我不得不放弃Texniscope。 有没有办法使脱脂总是autorefresh,还是有另一位观众得到这个权利?


ADDED:根据这个问题的答案latexmk迷你教程:

  1. 在这里获取latexmk : http : latexmk

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

     $pdflatex = 'pdflatex -interaction=nonstopmode'; 

    (对于脱脂OS X)

     $pdf_previewer = "open -a /Applications/Skim.app"; 
  3. 编辑源文件foo.tex ,在terminal中运行以下命令:

     latexmk -pvc -pdf foo.tex 
  4. 使用Skim或其他实时PDF查看器来查看foo.pdf。 对于Skim,只要看一下Skim偏好设置中的“Sync”选项卡并为您的编辑器进行设置即可。

瞧! 点击保存foo.tex现在将导致foo.pdf刷新而不触及任何东西。

使用MikTeX, pdflatex具有以下命令行选项:

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

编辑build议由@ 9999years:

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

从TeX使用技巧 :

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

  • errorstopmode停止所有错误,无论它们是关于源代码中的错误还是不存在的文件。

  • scrollmode不会停止在源错误,但请求input时,像一个丢失的文件更严重的错误发生。

  • 在有些nonstopmode ,TeX在严重错误后不要求input,而是完全停止input。

  • batchmode除了可以防止所有的输出(用于自动化脚本)。 在所有情况下,所有错误都写入日志文件(yourtexfile.log)。

你也可以把\nonstopmode\batchmode放在tex文件的开头; 那么它将与任何TeX版本,而不仅仅是pdflatex 。 有关这些命令和相关命令的更多信息,请参阅David Bausum的(raw)TeX命令的参考 。 特别是来自debugging系列的命令在这里可能是有趣的。

另一个可能的黑客就是简单地使用:

 yes x | latexmk source.tex 

你总是可以为“yes x |”创build一个别名 latexmk“如果你打算使用这个选项很多。 我可以从上面看到的其他build议的主要优点是,当你偶尔想要latexmkperformance得像这样的时候,它是非常快的。

穆罕默德

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