数字の代わりに疑問符

ラベルには別のパスが必要です。キャプションの後のラベルの配置。

数字の代わりに疑問符

コンパイルすると、PDF では図や式の番号があるべき場所に「??」が表示されます。それはソースの間違いではありません。これは、LaTeX がまだ解決できない参照をレンダリングする方法であり、修正は通常、再度コンパイルするだけです。

1 つのパスでは不十分な理由

LaTeX は、単一パスで文書を上から下まで読み取ります。 \label に一致すると、現在の番号を .aux ファイルに書き込みます。 \ref に遭遇すると、前回の実行で書き込まれた .aux ファイルから番号を検索します。新たなコンパイルでは以前の実行がないため、すべての参照は「??」として出力されます。 2 番目のパスでは、完成した .aux ファイルを読み取り、数値を入力します。Oleafly にバンドルされているコンパイラは、数値が安定するまで自動的に再実行されますが、pdflatex を手動で操作する場合は、2 番目のコンパイルが仕事になります。

## いつ ?? 2回目のパスでも生き残る

疑問符が残る場合は、3 つのチェックを行ってください。まず、\ref のスペルと \label を 1 文字ずつ比較します。ラベルでは大文字と小文字が区別され、空白スペースもカウントされます。次に、ラベルが貼られている場所を確認します。 \label は最後にステップされたカウンタの値を記録し、float ではカウンタをステップするのは \caption であるため、ラベルはキャプションの後に来る必要があります。

\begin{figure}
\centering
\includegraphics[width=0.7\textwidth]{plot.pdf}
\caption{Convergence of the estimator.}
\label{fig:convergence}
\end{figure}
Figure~\ref{fig:convergence} shows the effect.

キャプションの前に置かれたラベルは問題なくコンパイルされますが、間違ったカウンタ (通常は現在のセクション) を選択するため、リファレンスでは「??」ではなく、もっともらしいが間違った数値が出力されます。このバリアントは見逃しやすいため、さらに悪質です。第三に、.aux ファイルが実行中に削除されたか、コンパイルが中断された場合、記録されたラベルは不完全である可能性があります。クリーンな状態から再コンパイルします。

警告を読む

ログは、どのケースに陥っているかを示します。「未定義の参照がありました」とは、少なくとも 1 つの \ref が何も見つからなかったことを意味します。 「ラベルが変更された可能性があります。相互参照を正しく取得するために再実行してください」は、別のパスで修正されることを意味します。 「ラベルが複数定義されている」とは、2 つの \label コマンドが 1 つの名前を共有し、LaTeX はそのうちの 1 つを暗黙的に使用するため、すべてのラベルが一意になるまで名前を変更することを意味します。 eq:fig:、および tab: 接頭辞を使用した命名規則により、衝突が起こりにくくなり、ソースの検索が容易になります。ラベルのワークフロー自体は、数値と方程式のポインター で説明されています。

ログ読解 に戻る