複数回コンパイルする理由
補助ファイル、参考文献パス、そしてなぜ参考文献が印刷されるのか??最初の実行時。
複数回コンパイルする理由
遅かれ早かれ、文書を編集し、PDF を開いて、図番号または引用があるべき場所に「??」を見つけることになるでしょう。何も壊れていません。 1 回のコンパイルはファイルの 1 回のパスであり、一部の情報は 1 回のパスでは実際には知ることができません。
ここでミニチュアの問題が発生します。 2 ページ目に「図 \ref{fig:results} を参照」と書きますが、その図は 7 ページに表示されます。エンジンが 2 ページを植字するとき、まだ 7 ページに到達していないため、図がどの番号になるかわかりません。目次にも同じことが当てはまり、1 ページ目が終了する前に各セクションのページ番号が必要になります。
エンジンがそれを解決する方法
LaTeX エンジンは .tex ファイルを読み取り、すべてのマクロを解決し、PDF を書き込みます。 PDF のほかに、ラベルと引用用の .aux、目次用の .toc、書式設定された文献目録用の .bbl などの小さなヘルパー ファイルも作成されます。これらのファイルは、エンジンが将来の自己のために残すメモです。
- 最初のパスで、エンジンはテキストを植字し、見つかったすべての
\labelと\citeを.auxファイルに書き込み、まだ知らない番号が必要な場合はどこにでも??を出力します。 - 何かを引用すると、文献目録ツール (bibtex または biber) が
.auxファイルを読み取り、.bibデータベース内の各引用を検索し、フォーマットされた参考文献リストを.bblファイルに書き込みます。 - 2 回目、場合によっては 3 回目のパスで、エンジンはこれらのヘルパー ファイルを再度読み込み、相互参照、目次エントリ、および引用ラベルが最終的に実数に解決されます。
最新のセットアップではこれらのパスが自動的に実行されるため、実際には自分でコマンドを入力することはほとんどありません。しかし、サイクルを知ることで症状が説明されます。ラベルまたは引用を追加した後に新たに「??」が表示されるのは、ヘルパー ファイルがまだ追いついていないことを意味しており、もう 1 回コンパイルすると問題が修正されます。
エンジンはそれぞれ 1 行に
いくつかのプログラムが「エンジン」の役割を果たすことができます。 pdfLaTeX は、最も幅広いジャーナルをサポートする古典的な選択肢です。 XeLaTeX は完全な Unicode を追加し、システムにインストールされているフォントを使用できるようにします。 LuaLaTeX は Unicode も話し、高度なパッケージ用のスクリプト言語を埋め込みます。 Tectonic は、初めて必要になったときにオンデマンドでパッケージをダウンロードする最新のエンジンです。 Oleafly はこれをバンドルしているため、最初に TeX ディストリビューションをインストールしなくても新しいプロジェクトがコンパイルされます。
ほとんどの文書では、違いはほとんど問題になりません。テンプレートや会場が期待するものを選択して次に進みます。意図的に選択する必要がある場合は、エンジンの比較 を参照してください。
実際に何かが失敗したとき
コンパイルが失敗すると長いログがダンプされるため、本能的にそれをボトムアップで読み取ろうとします。それには抵抗してください。ログ内の最初のエラーを読み、そのエラーのみを修正します。その後のエラーは、最初のエラーによって引き起こされるカスケード ノイズであることがよくあります。コンパイルが 2 回連続して成功した後でも参照が依然として ?? を出力する場合、通常の原因は、パスの欠落ではなく、\label または \ref 名のタイプミスです。