如何精确地找出导致 LaTeX 警告“存在未定义的引用”的行和/或标签?

如何精确地找出导致 LaTeX 警告“存在未定义的引用”的行和/或标签?

编译我的 LaTeX 文档后,日志文件包含以下消息:

LaTeX 警告:存在未定义的引用。

我如何知道哪些行和/或标签引发了此警告?

PS:这个问题已经在此评论由其他用户提出,并且答复是提问者应该在单独的帖子中提问,但我找不到任何解决这个问题的帖子。

答案1

该消息There were undefined references是屏幕上最后显示的内容之一,以引起您对问题的注意。但是,向上滚动到控制台输出或日志文件将显示未定义引用所在的行号。文件

\documentclass{article}
\begin{document}
\section{foo}\label{foo}
This is section \ref{fo}
\end{document}

返回

LaTeX Warning: Reference `fo' on page 1 undefined on input line 4.

[1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./mwe.aux)

LaTeX Warning: There were undefined references.

当然,如果未定义的引用之后有很多页面,可能还有图表,那么您可能需要向后滚动很多。


如果你使用\input外部文件,那么你必须记住,引用的行号始终指的是当前的 文件。假设我们有一个文件foo.tex

\section{foo}\label{foo}
This is section \ref{fo}

主文件内容main.tex如下

\documentclass{article}
\begin{document}
Text text.
\input{foo}
\end{document}

那么日志将包含

This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017/TeX Live for SUSE Linux) (preloaded format=pdflatex 2019.9.25)  9 APR 2021 14:59
entering extended mode
 restricted \write18 enabled.
 %&-line parsing enabled.
**main.tex
(./main.tex
LaTeX2e <2017-04-15>

% [ ... other stuff ... ]

 (./foo.tex

LaTeX Warning: Reference `fo' on page 1 undefined on input line 2.

) [1

{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] (./mwe.aux)

LaTeX Warning: There were undefined references.

 )
% [ ... other stuff ...]

这里的行号指的是外部的file:注意(./foo.tex表示这是当前打开的文件的字符串。相应的右括号)显示在警告之后;最后的右括号指的是主文件(相应的打开文件在第 6 行)。

相关内容