Крупные проекты LaTeX: структура, просмотр глав и именование
Поддержка большого проекта LaTeX становится дорогой, если непонятно, в каком файле делать правку, компиляция замедляется, а разбросанные пакеты конфликтуют. Разграничьте обязанности файлов, централизуйте преамбулу, ограничивайте предпросмотр и согласуйте имена.
Организуйте каталог по обязанностям
Разделите главы, таблицы и изображения, чтобы имена подсказывали, где искать:
project/├── main.tex % Класс и порядок глав├── preamble.tex % Пакеты и команды проекта├── chapters/│ ├── intro.tex│ ├── method.tex│ └── results.tex├── tables/ % Исходники таблиц для \input└── figures/Для этого основного файла нужны preamble.tex и три файла глав по указанным путям. Для русского текста выберите XeLaTeX:
% main.tex\documentclass[11pt]{article}\usepackage{fontspec}\setmainfont{CMU Serif}\setsansfont{CMU Sans Serif}\setmonofont{CMU Typewriter Text}\usepackage[russian]{babel}\input{preamble}% Раскомментируйте только для просмотра главы; для итогового вывода оставьте комментарий% \includeonly{chapters/method}\begin{document}\include{chapters/intro}\include{chapters/method}\include{chapters/results}\end{document}Основной файл хранит класс, общую настройку и порядок глав. Редактирование главы обычно означает изменение одного файла в chapters/.
Подключайте пакеты через одну точку входа
Подключение пакета в нескольких местах с разными параметрами может вызвать Option clash for package .... Храните список пакетов в preamble.tex:
% preamble.tex — все пакеты проекта подключаются здесь\usepackage{amsmath,amssymb}\usepackage{graphicx}\usepackage{booktabs}\usepackage[hidelinks]{hyperref}Подключайте его через \input до \begin{document}. Порядок пакетов важен; hyperref обычно ближе к концу. Файлы глав не должны независимо повторно подключать те же пакеты. Языковые и шрифтовые настройки русского примера также можно централизовать в преамбуле, оставив одно подключение.
Просматривайте выбранные главы через \includeonly
При предпросмотре \includeonly ограничивает набор подключённых глав. Нумерация и ссылки исключённых глав зависят от существующей вспомогательной информации; не предполагайте её сохранность в каждом задании платформы.
Команда действует на \include, а не \input. Ссылки на главу без доступной вспомогательной информации могут отображаться как ??.
% Просмотр только главы о методе\includeonly{chapters/method}Обновляются только включённые главы. При изменении длины номера пропущенных страниц могут устареть. Перед передачей снимите ограничение и скомпилируйте весь документ.
Используйте префиксы меток
| Объект | Префикс | Пример |
|---|---|---|
| Раздел | sec: | \label{sec:method} |
| Рисунок | fig: | \label{fig:pipeline} |
| Таблица | tab: | \label{tab:ablation} |
| Формула | eq: | \label{eq:update} |
Повторяющиеся метки могут не останавливать компиляцию, но вызывают multiply-defined labels и неверные ссылки. Префиксы упрощают поиск по проекту; сами имена всё равно должны быть уникальными.
В плавающем объекте ставьте \label после \caption. Обратный порядок может без ошибки компиляции привязать метку к предыдущему счётчику.
Проверьте пути, метки и итоговую сборку
После правки сопоставьте список подключений с деревом файлов, проверьте цели ссылок и решите, нужна ли полная компиляция.
| Сообщение | Причина | Действие |
|---|---|---|
There were multiply-defined labels. | Имя метки повторяется | Найдите и переименуйте повторы; обновите ссылки полной компиляцией |
Reference 'fig:x' undefined | Нет сведений о метке или глава исключена | Скомпилируйте весь документ и проверьте расположение метки |
Label(s) may have changed. | Ссылки изменились при компиляции | Дождитесь повторных проходов; исследуйте устойчивое предупреждение |
Option clash for package hyperref. | Пакет подключён с конфликтующими параметрами | Сосредоточьте его в preamble.tex |
\include cannot be nested. | Глава содержит другой \include | Внутри главы используйте \input |
По теме: сокращение повторяющегося кода, диагностика компиляции и безопасные правки ИИ.
Главное
- Разделяйте основную структуру, главы, исходники таблиц и изображения.
- Подключайте пакеты в одном месте.
- Используйте просмотр глав только для локальной проверки; перед передачей компилируйте всё.
- Используйте удобные для поиска префиксы и уникальные метки.
Импортируйте весь каталог в EasyLaTeX и выберите main.tex основным файлом.