未定义引用与重复标签

如果本应出现编号的位置显示 ??(文献引用则是 [?]),说明交叉引用尚未解析。原因几乎总是:编译次数不足、缺少或拼错 \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} 出现了两次,引用目标会变得不明确。请让标签保持唯一(使用前缀或不同名称)。常见原因是复制粘贴时把标签也复制了。