想想经典的编程语言,许多编译器都支持错误级别。错误级别允许指定编译过程停止的严重程度。这非常方便。一旦项目结束,我通常会启用一个非常严格的错误级别,这样我就可以确保我贡献的内容确实没有任何错误。
我想知道 Latex 是否有类似的东西?举个例子,如果有一个标志可以在未定义引用时停止编译,而不是必须伪造我的整个文档才能找到???,我会觉得很理想。
笔记
我最终使用了可接受的答案。由于第一次运行时没有引用,因此我在 Makefile 中添加了 \pedantic 标志。
$(FILE)_pedantic.pdf: *.tex
pdflatex -synctex=1 -shell-escape "\def\pedantic{0} \input{$(FILE).tex}"
pdflatex -synctex=1 -shell-escape "\def\pedantic{0} \input{$(FILE).tex}"
bibtex $(FILE)
makeglossaries $(FILE)
pdflatex -synctex=1 -shell-escape "\def\pedantic{0} \input{$(FILE).tex}"
pdflatex -synctex=1 -shell-escape "\def\pedantic{1} \input{$(FILE).tex}"
然后我的 root.tex 文件设置
\if\pedantic1
\MakeWarningsErrors
\fi
正如所接受答案的作者所建议的那样。
答案1
解决这个问题的一个简单方法是\GenericWarning
用更严格的方法重新定义 LaTeX 的宏\GenericError
:
\documentclass{article}
\newcommand\MakeWarningsErrors{%
\renewcommand\GenericWarning[2]{%
\GenericError{##1}{##2}{}{}%
}%
}
\begin{document}
See section \ref{foo} ...
\MakeWarningsErrors
... and section \ref{bar}.
\end{document}
然后 LaTeX 会正常报告第一个警告,但会停止第二个警告的编译:
LaTeX Warning: Reference `foo' on page 1 undefined on input line 11.
! LaTeX Warning: Reference `bar' on page 1 undefined.
Type H <return> for immediate help.