如何在编译时忽略 latex 错误?

如何在编译时忽略 latex 错误?

编译 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几次,中间穿插调用makeindexbibtex。使用 时,通常需要多次调用 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

相关内容