Как собрать служебные файлы PdfLaTeX в отдельном каталоге

При сборке pdf в каталоге проекта появляется ряд служебных файлов, содержимое которых меняется от билда к билду. Их даже нет смысла засылать в репозиторий.

Можно удалять их перед коммитом.

find -regex '.*\.\(tex~\|sty~\|sh~\|bib~\|backup\|dvi\|ps\)' -print -delete

Можно сказать Kile, что после закрытия надо удалять все «временные файлы». Но закрывать Kile каждый раз перед тем, как сделать коммит — как-то странно.

Можно добавить все такие файлы в .gitignore Но эти файлы так и лежат в каталоге проекта.

А можно компилировать проект, принудительно создавая всякие такие файлы в отдельном каталоге.

В итоге получится такое:

Project directory/
|__ main.tex
|__ main.bib
|__ main.pdf
|__ chapter1.tex
|__ chapter2.tex
|__ …
|__ project_metafiles/
| |__ main.aux
| |__ main.bcf
| |__ main.blg
| |__ main.glo
| |__ main.ist
| |__ main.log
| |__ main.toc
| |__ …
|__ figures/
|__ figure1.pdf
|__ …

Про это всё уже кто-то подумал аж в 2015-ом: texblog.org, но, разумеется, есть нюансы — там нет Kile.

Мои эксперименты с этим трактором заняли часов восемь, самой сложной задачей оказалась неочевидная настройка билд-скриптов в Kile, но он таки завёлся. Заодно я поднаторел в быстром составлении документации по проекту.

Смысл предлагаемого скрипта:

  1. собрать pdf с PdfLaTeX.
  2. собрать его библиографию с BibLaTeX.
  3. итоговый скрипт должен лежать в отдельном каталоге, назовём его kile_scripts/
  4. при сборке main.pdf все служебные файлы должны сразу появляться в project_metafiles/
  5. сборка глоссария и индекса в этот скрипт не войдёт (она нужна редко и запускается через отдельный sh-файл)
  6. билдить нужно по этому скрипту, но из Kile („QuickBuild“ по Ctrl+1)

Ограничения

Это настройка работает глобально, а название главного файла для сборки проекта прописано жёстко — main (.tex).

Если открыть в Kile другой проект, то скрипт будет искать файл main 🙂

Выходом будет прописывание переменной в файле .sh, а неудобство в том, что этот файл при каждой смене проекта надо обновить, прописав в объявляемой переменной соответствующее название файла для сборки (несколько смягчает ситуацию добавление и комментирование строк).

Полная инструкция в Dropbox: http://bit.ly/2IjoqC0 /txt

Добавить комментарий