Чому ви компілюєте більше одного разу

Файли Aux, перепустки бібліографії та навіщо друкувати посилання?? на першому запуску.

Чому ви компілюєте більше одного разу

Рано чи пізно ви складете документ, відкриєте 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, а не відсутній пропуск.

Назад до Відкрийте петлю