如果本应出现编号的位置显示 ??(文献引用则是 [?]),说明交叉引用尚未解析。原因几乎总是:编译次数不足、缺少或拼错 \label,或 \label 放错位置。标签重复还会产生另一种警告。
?? 的含义
\ref / \pageref 读取的是上一次运行写出的 .aux。因此第一次编译(或刚添加标签后)还不知道值,会显示 ??,日志中会提示 “Rerun to get cross-references right”。\cite 也同样会显示 [?]。解决方法是再编译一次,总共至少两次(latexmk 等构建工具会自动处理)。如果两次后仍有 ??,就是真正找不到标签。
找不到标签
- 没有与
\ref{x}对应的\label{x},或拼写不一致。 - 在浮动体中,把
\label放在\caption正后方(且位于 float 内部);放在前面或外面会抓到错误编号,例如章节号。 - 引用一直是
[?]→ 运行bibtex/biber并重新编译,或该 key 不在.bib中。 - 使用一致的标签前缀(
fig:、sec:、eq:),便于整理和搜索。
latex
\begin{figure}
\includegraphics{fig.pdf}
\caption{グラフ}
\label{fig:graph} % \caption の直後に / right after \caption
\end{figure}
... 図~\ref{fig:graph} を参照。标签重复
LaTeX Warning: Label 'x' multiply defined 表示同一个 \label{x} 出现了两次,引用目标会变得不明确。请让标签保持唯一(使用前缀或不同名称)。常见原因是复制粘贴时把标签也复制了。