编译 tex 文件时,每次检测到错误,编译都会停止,并要求用户通过控制台执行操作(通常是按回车键)。我想问一下,如何避免这种情况。我希望它不会在检测到错误时停止并完成 tex 文件的编译。提前致谢。
答案1
我建议你使用这个;
latex -interaction nonstopmode -halt-on-error -file-line-error filename.tex
指定-interaction nonstopmode
相当于\nonstopmode
在您的文档中使用。
该-halt-on-error
选项指示程序在发现错误时返回非零错误代码。这在从脚本或从make
实用程序。使用make
或等效程序,例如scons
强烈建议用于有索引或使用引文的大型文档。因为在这些情况下,您不仅必须调用 LaTeX,还必须调用程序来生成索引和参考书目。
该-file-line-error
选项可以更轻松地查找源文件中的错误,尤其是当您将\include
长文档分成几部分时(例如将一本书分成几章,并将每章放在单独的 TeX 文件中)。
这是我用于大型 LaTeX 文档的 Makefile 片段;
$(DOCPDF): $(SUBDIR) $(TEXSRC) lbref.bib .git/index
sh tools/vc -m
python tools/mkhistory.py hist.tex
pdflatex --interaction nonstopmode -halt-on-error -file-line-error $*.tex # >/dev/null
makeindex -c -s myindex.ist $*.idx #2>/dev/null
bibtex $* #>/dev/null
pdflatex --interaction nonstopmode -halt-on-error -file-line-error $*.tex #>/dev/null
makeindex -c -s myindex.ist $*.idx #2>/dev/null
pdflatex --interaction nonstopmode -halt-on-error -file-line-error $*.tex #>/dev/null
rm -f $*.lo* *.aux $*.ilg $*.ind $*.toc $*.bbl $*.blg $*.out *.asc
第一行指定当 tex 源文档(变量TEXSRC
)、参考书目数据库(lbref.bib
)或修订控制状态(.git/index
)发生变化时必须执行的命令。前两个命令将修订号添加到文档并添加更改列表。之后,它会调用pdflatex
几次,中间穿插调用makeindex
和bibtex
。使用 时,通常需要多次调用 LaTeX 来解析和稳定所有引用makeindex
。
编辑:我已经改用,latexmk
因为它可以自动解决交叉引用、参考书目等问题。
因此我修改了我的 Makefile:
SUBDIR= figuren lam calc grafieken
OUTDIR= uitvoer
DOCPDF = $(DOCSRC:.tex=.pdf)
# This is the first target in the Makefile.
all: $(DOCPDF)
PDFLATEX= xelatex -interaction nonstopmode -halt-on-error -file-line-error
$(DOCPDF): $(SUBDIR) $(TEXSRC) lbref.bib .git/index
-latexmk -bibtex -recorder -outdir=$(OUTDIR) -auxdir=$(OUTDIR) -pdflatex="$(PDFLATEX)" -pdf $(DOCSRC) 2>&1|grep -C12 '^l\.'
mv $(OUTDIR)/$(DOCPDF) .
${SUBDIR}::
cd ${.TARGET}; make ${.TARGETS}
我已切换到xelatex
因为它的字体处理更简单。现在所有输出文件都放在子目录中,以免弄乱主目录并更易于清理。只有生成的 PDF 文件在创建后才会移动到主目录中。
答案2
尝试
latex -interaction=nonstopmode foo.tex