Сборка большого документа из нескольких файлов (input и include)
Зачем делить большой проект на отдельные файлы
Дипломная работа, магистерская диссертация или монография содержит от 60 до 200+ страниц, сотни формул, рисунков и таблиц. Вести такой объем в одном файле main.tex неудобно: поиск нужного абзаца превращается в бесконечный скроллинг, а случайная ошибка в одном месте ломает компиляцию всей работы.
Модульная архитектура разбивает проект на логические части: введение, отдельные главы, заключение, список литературы и приложения лежат в изолированных файлах, собираемых главным корневым документом.
Разница между командами \input и \include
В LaTeX существует две директивы подключения внешних файлов, имеющие принципиальные различия (это особенно важно при выносе приложений и листингов в дипломной работе):
\input{путь/к/файлу}— буквально вставляет содержимое файла в текущее место документа «как есть». Не создает разрывов страниц. Идеально для преамбулы (\input{preamble.tex}), таблиц или фрагментов текста внутри раздела.\include{путь/к/файлу}— вставляет файл, всегда предваряя и завершая его командой \clearpage (начиная новую страницу). Создает собственный вспомогательный файл.aux, что позволяет использовать механизм выборочной компиляции. Идеально для крупных глав (chapter).
Разбить диплом на несколько файлов latex: эталонная иерархия папок
Вот проверенная академическая структура проекта (разбить диплом на несколько файлов latex), рекомендованная при оформлении диплома по ГОСТ в LaTeX:
my-diploma/
├── main.tex % Главный файл со сборкой
├── preamble.tex % Все пакеты и настройки ГОСТ
├── biblio.bib % База источников BibTeX
├── chapters/ % Папка с главами работы
│ ├── 00-intro.tex % Введение
│ ├── 01-analysis.tex % Глава 1: Анализ предметной области
│ ├── 02-design.tex % Глава 2: Проектирование системы
│ ├── 03-impl.tex % Глава 3: Реализация и тестирование
│ └── 04-concl.tex % Заключение
└── appendices/ % Приложения с кодом
└── app-a-code.tex
В главном файле main.tex сборка выглядит компактно и наглядно:
\documentclass[14pt,a4paper]{report}
\input{preamble} % Подключаем преамбулу
\begin{document}
\include{chapters/00-intro}
\include{chapters/01-analysis}
\include{chapters/02-design}
\include{chapters/03-impl}
\include{chapters/04-concl}
\bibliographystyle{gost-numeric}
\bibliography{biblio}
\end{document}
Команда include latex и выборочная компиляция через includeonly
Когда вы работаете над конкретной главой, нет смысла каждый раз перекомпилировать весь стостраничный документ. Команда include latex поддерживает волшебную директиву \includeonly в преамбуле:
% Компилировать СТРОГО главу 2, сохраняя сквозные номера страниц и формул!
\includeonly{chapters/02-design}
Благодаря отдельным .aux файлам LaTeX сохранит верные перекрестные ссылки на формулы из других глав, но сборка займет 1 секунду вместо 15.
Продвинутый подход: пакет subfiles для автономной компиляции глав
Пакет subfiles позволяет компилировать каждую главу как автономный независимый документ (нажатием кнопки сборки прямо внутри 02-design.tex), так и в составе единого проекта main.tex без изменения кода.
Практические советы
Не указывайте расширение .tex
При вызове \include{chapters/intro} не дописывайте расширение .tex: LaTeX подставит его автоматически.
Запрет вложенных include
Внутри файла, подключенного через \include, нельзя вызывать другой \include. Для вложенных подфайлов используйте команду \input.