出现错误时不要让我手动中止LaTeX编译
正如这里所build议的, latexmk
是一个方便的方法来不断编译您的文件,每当源文件更改。 但是,当你在处理文档时,往往会遇到错误,然后在继续之前, latex
会惊慌并等待用户input。 这可能会变得非常烦人,特别是最近当我篡改了一些直接从etherpad文档编译latex
东西时,在键入的时候会不断保存。
是否有一个latex
或latexmk
设置使它只是中止与错误消息,如果它不能编译? 或者,如果有必要,我将如何设置某种Expect脚本来自动排除LaTeX的投诉?
(我曾经想过pdflatex
的select-halt-on-error
会做的,但显然不是。)
奖金的问题:Skim在Mac OSX是一个很好的PDF查看器,当pdf发生变化时,会自动刷新(不像Preview), 除非每次出现乳胶错误,都会使您再次确认要自动刷新。 Texniscope没有这个问题,但是由于其他原因 ,我不得不放弃Texniscope。 有没有办法使脱脂总是autorefresh,还是有另一位观众得到这个权利?
ADDED:根据这个问题的答案latexmk
迷你教程:
-
在这里获取
latexmk
: http :latexmk
-
将以下内容添加到
~/.latexmkrc
文件中:$pdflatex = 'pdflatex -interaction=nonstopmode';
(对于脱脂OS X)
$pdf_previewer = "open -a /Applications/Skim.app";
-
编辑源文件
foo.tex
,在terminal中运行以下命令:latexmk -pvc -pdf foo.tex
-
使用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
命令可以做这个工作。