為什麼要多次編譯

輔助文件、參考書目通行證以及為什麼參考文獻會列印?在第一次運行時。

為什麼要多次編譯

遲早你會編譯一個文檔,打開 PDF,並在應該包含圖號或引文的地方找到「??」。沒有任何東西被破壞。一次編譯就是對檔案的一次傳遞,有些資訊其實無法一次獲知。

這是問題的縮影。在第 2 頁上,您寫了“參見圖 \ref{fig:results}”,但圖片出現在第 7 頁。當引擎排版第 2 頁時,它還沒有到達第 7 頁,因此它不知道該圖將得到什麼編號。這同樣適用於目錄,甚至在第一頁完成之前就需要每個部分的頁碼。

引擎是如何解決的

LaTeX 引擎讀取您的“.tex”文件,解析每個宏,並寫入 PDF。除了 PDF 之外,它還編寫小幫助文件:“.aux”用於標籤和引文,“.toc”用於目錄,“.bbl”用於格式化參考書目。這些文件是引擎為其未來留下的註釋。

  1. 在第一遍中,引擎會排版文字並將遇到的每個「\label」和「\cite」寫入「.aux」檔案中,在需要尚不知道的數字的地方列印「??」。
  2. 如果您引用任何內容,參考書目工具(bibtex 或 biber)會讀取“.aux”文件,在“.bib”資料庫中查找每個引文,並將格式化的參考列表寫入“.bbl”文件。
  3. 在第二遍(有時是第三遍)中,引擎會讀回這些幫助文件,因此交叉引用、目錄條目和引文標籤最終解析為實數。

現代設定會自動為您運行這些通道,因此實際上您很少自己鍵入命令。但了解循環就可以解釋症狀:添加標籤或引用後出現新的“??”僅意味著幫助程式檔案尚未跟上,並且需要再進行一次編譯才能修復它。

引擎各排一排

有幾個程式可以扮演「引擎」的角色。 pdfLaTeX 是具有最廣泛期刊支援的經典選擇。 XeLaTeX 新增了完整的 Unicode,並允許您使用系統上安裝的字型。 LuaLaTeX 也支援 Unicode 並嵌入高階套件的腳本語言。 Tectonic 是一種現代引擎,可在您第一次需要時按需下載軟體包。 Oleafly 將其捆綁在一起,因此無需先安裝 TeX 發行版即可編譯新專案。

對於大多數文件來說,差異並不重要;選擇您期望的範本或場地並繼續。當您需要謹慎選擇時,請參閱引擎比較

當某件事實際上失敗時

失敗的編譯會轉儲很長的日誌,自然的本能是自下而上地閱讀它。抵制那個。讀取日誌中的第一個錯誤並僅修復該錯誤;後來的錯誤通常是由第一個錯誤引起的級聯雜訊。如果連續兩次成功編譯後引用仍然打印“??”,則通常的罪魁禍首是“\label”或“\ref”名稱中的拼寫錯誤,而不是缺少傳遞。

返回{曲目}