複数回コンパイルする理由

補助ファイル、参考文献パス、そしてなぜ参考文献が印刷されるのか??最初の実行時。

複数回コンパイルする理由

遅かれ早かれ、文書を編集し、PDF を開いて、図番号または引用があるべき場所に「??」を見つけることになるでしょう。何も壊れていません。 1 回のコンパイルはファイルの 1 回のパスであり、一部の情報は 1 回のパスでは実際には知ることができません。

ここでミニチュアの問題が発生します。 2 ページ目に「図 \ref{fig:results} を参照」と書きますが、その図は 7 ページに表示されます。エンジンが 2 ページを植字するとき、まだ 7 ページに到達していないため、図がどの番号になるかわかりません。目次にも同じことが当てはまり、1 ページ目が終了する前に各セクションのページ番号が必要になります。

エンジンがそれを解決する方法

LaTeX エンジンは .tex ファイルを読み取り、すべてのマクロを解決し、PDF を書き込みます。 PDF のほかに、ラベルと引用用の .aux、目次用の .toc、書式設定された文献目録用の .bbl などの小さなヘルパー ファイルも作成されます。これらのファイルは、エンジンが将来の自己のために残すメモです。

  1. 最初のパスで、エンジンはテキストを植字し、見つかったすべての \label\cite.aux ファイルに書き込み、まだ知らない番号が必要な場合はどこにでも ?? を出力します。
  2. 何かを引用すると、文献目録ツール (bibtex または biber) が .aux ファイルを読み取り、.bib データベース内の各引用を検索し、フォーマットされた参考文献リストを .bbl ファイルに書き込みます。
  3. 2 回目、場合によっては 3 回目のパスで、エンジンはこれらのヘルパー ファイルを再度読み込み、相互参照、目次エントリ、および引用ラベルが最終的に実数に解決されます。

最新のセットアップではこれらのパスが自動的に実行されるため、実際には自分でコマンドを入力することはほとんどありません。しかし、サイクルを知ることで症状が説明されます。ラベルまたは引用を追加した後に新たに「??」が表示されるのは、ヘルパー ファイルがまだ追いついていないことを意味しており、もう 1 回コンパイルすると問題が修正されます。

エンジンはそれぞれ 1 行に

いくつかのプログラムが「エンジン」の役割を果たすことができます。 pdfLaTeX は、最も幅広いジャーナルをサポートする古典的な選択肢です。 XeLaTeX は完全な Unicode を追加し、システムにインストールされているフォントを使用できるようにします。 LuaLaTeX は Unicode も話し、高度なパッケージ用のスクリプト言語を埋め込みます。 Tectonic は、初めて必要になったときにオンデマンドでパッケージをダウンロードする最新のエンジンです。 Oleafly はこれをバンドルしているため、最初に TeX ディストリビューションをインストールしなくても新しいプロジェクトがコンパイルされます。

ほとんどの文書では、違いはほとんど問題になりません。テンプレートや会場が期待するものを選択して次に進みます。意図的に選択する必要がある場合は、エンジンの比較 を参照してください。

実際に何かが失敗したとき

コンパイルが失敗すると長いログがダンプされるため、本能的にそれをボトムアップで読み取ろうとします。それには抵抗してください。ログ内の最初のエラーを読み、そのエラーのみを修正します。その後のエラーは、最初のエラーによって引き起こされるカスケード ノイズであることがよくあります。コンパイルが 2 回連続して成功した後でも参照が依然として ?? を出力する場合、通常の原因は、パスの欠落ではなく、\label または \ref 名のタイプミスです。

ループを開く に戻る