Рабочий процесс: latexmk, git и границы применимости

Заключительный урок: как организовать работу над .tex-проектом и когда LaTeX лучше не использовать.

latexmk — автоматизатор сборки: он сам определяет, сколько раз и в каком порядке запускать движок и BibTeX, чтобы все ссылки и библиография сошлись.

Вы освоили язык — теперь о ремесле: как удобно вести проект, версионировать его, и в каких случаях разумнее взять обычный редактор.

latexmk: одна команда вместо четырёх

Помните цепочку latex → bibtex → latex → latex? latexmk делает её сам — он анализирует, что изменилось, и собирает ровно столько раз, сколько нужно:

latexmk -pdf thesis.tex      # собрать pdfLaTeX, все нужные проходы
latexmk -xelatex thesis.tex  # то же через XeLaTeX
latexmk -pvc thesis.tex      # следить за файлом и пересобирать при сохранении
latexmk -C                   # удалить все служебные файлы

Режим -pvc особенно удобен: вы редактируете .tex в любимом редакторе, а PDF пересобирается автоматически при каждом сохранении — почти как живой предпросмотр Overleaf, но локально.

Версионирование в git

Поскольку .tex — это текст, он идеально ложится в git: видны построчные изменения, можно вести историю, ветки, совместную работу. В репозиторий кладут только исходники, а служебные файлы исключают через .gitignore:

# .gitignore для LaTeX-проекта
*.aux
*.log
*.out
*.toc
*.bbl
*.blg
*.pdf

Совет: пишите каждое предложение с новой строки («one sentence per line»). Тогда git-diff показывает изменения по предложениям, а не по целым перевёрстанным абзацам — обзоры правок становятся читаемыми.

Редакторы и среды

ИнструментЧем хорош
Overleafонлайн, ничего не ставить, совместная работа
TeXstudioлокальная IDE: подсветка, автодополнение, предпросмотр
VS Code + LaTeX Workshopдля тех, кто уже живёт в VS Code
Detexifyрисуете символ мышкой — сайт подсказывает команду

Detexify и Mathpix (распознаёт формулу с фото в LaTeX) экономят массу времени, когда вы не помните команду нужного символа.

Когда LaTeX НЕ нужен

LaTeX — мощный, но не универсальный инструмент. Берите что-то проще, если:

  • Документ короткий и без формул — письмо, записка, объявление. Накладные расходы LaTeX не окупятся.
  • Нужна живая совместная правка с не-технарями — коллеги в Word/Google Docs не освоят разметку.
  • Жёсткий шаблон в .docx обязателен — некоторые издатели и организации принимают только Word.
  • Много сложной нелинейной вёрстки (буклеты, реклама) — там удобнее верстальные пакеты (InDesign).

Золотое правило: LaTeX окупается на длинных структурированных документах с математикой, ссылками и библиографией. Для всего остального честно оцените, не проще ли обычный редактор.

Как работает под капотом

latexmk внутри — это умный скрипт: он хранит контрольные суммы вспомогательных файлов и после каждого прохода проверяет, «устаканились» ли номера в .aux и список в .bbl. Пока что-то меняется между проходами, он запускает движок снова; как только всё стабилизировалось — останавливается. Режим -pvc добавляет наблюдение за временем модификации .tex и запускает пересборку при сохранении. Это автоматизация ровно той двухпроходной логики, которую вы изучили в начале курса.

Файл .latexmkrc и чистка проекта

Чтобы не передавать флаги при каждом запуске, рядом с проектом кладут файл настроек .latexmkrc. В нём один раз задают, каким движком собирать (например, всегда XeLaTeX) и что использовать biber для библиографии; дальше достаточно набрать latexmk без аргументов. Это особенно ценно в командной работе: настройки сборки едут вместе с репозиторием, и у всех участников документ собирается одинаково. Полезно различать две команды чистки: latexmk -c удаляет промежуточные служебные файлы, но оставляет готовый PDF, а latexmk -C сносит и PDF тоже. Первую удобно звать перед коммитом, чтобы не тащить мусор; вторую — когда нужна полностью свежая пересборка с нуля после странных «залипших» ошибок.

Git, Overleaf и история

Совет «одно предложение на строку» стоит дополнить практикой осмысленных коммитов: фиксируйте логически завершённые куски («добавил главу про методику», «исправил библиографию»), а не накапливайте всё в один гигантский коммит перед сдачей. Тогда история становится навигацией по работе, а не свалкой. Overleaf, хоть и онлайн, тоже ведёт историю версий и умеет синхронизироваться с git, так что можно совмещать удобство браузерного редактора с полноценным версионированием. Отдельно отметим разделение труда: исходники .tex и .bib — под контролем версий, а .aux, .log, .bbl и сам .pdf исключают через .gitignore, потому что они полностью воспроизводятся из исходников и только засоряют diff.

Инструменты-помощники и честные границы

Несколько внешних сервисов экономят время на рутине. Detexify подскажет команду символа, который вы нарисовали мышкой; Mathpix распознает формулу с фотографии или скриншота и вернёт готовый LaTeX — незаменимо, когда нужно перенести выкладку из учебника. Но честность важнее энтузиазма: бывают задачи, где обычный редактор объективно выигрывает. Markdown проще для заметок, документации и постов, которые потом рендерятся на сайте; Word и Google Docs незаменимы, когда документ правят несколько не-технических соавторов в реальном времени или когда организация принимает только .docx с жёстким фирменным шаблоном. Зрелость инженера — не тащить LaTeX везде, а выбирать инструмент под задачу: длинный структурированный текст с математикой, ссылками и библиографией — это LaTeX, а короткая записка или совместный черновик с коллегами — скорее нет.

Частые ошибки

  • Собирать вручную по одному проходу вместо latexmk — забытый проход = устаревшие ссылки.
  • Коммитить служебные файлы в git — замусоривают историю; используйте .gitignore.
  • Тянуть LaTeX на одностраничную записку — потеря времени там, где хватит любого редактора.

Итоги

  • latexmk автоматизирует все проходы сборки; -pvc даёт авто-пересборку.
  • .tex отлично версионируется в git; служебные файлы — в .gitignore.
  • LaTeX окупается на больших научных документах; для коротких и не-математических текстов берите редактор попроще.
Проверьте себя
1. Что делает latexmk?
AРисует графики
BСам определяет, сколько раз и в каком порядке запускать движок и BibTeX, чтобы ссылки сошлись
CЗаменяет язык LaTeX
DПереводит документ в Word
2. Какие файлы LaTeX-проекта стоит исключить из git через .gitignore?
AСам .tex и .bib
BСлужебные файлы вроде .aux, .log, .toc, .bbl
CВсе файлы проекта
DТолько .pdf, остальное коммитить
3. В каком случае LaTeX, скорее всего, избыточен?
AДиссертация с формулами и библиографией
BКороткое письмо или записка без математики
CНаучная статья с таблицами
DУчебник со ссылками на рисунки