TeX божественен.
В свое время решил отказаться от набора документов в офисных пакетах и нисколько об этом не жалею, так как все необходимое все равно набирается в TeX, да еще и с такими-то формулами. Шрифты и оформление PDF даже при стиле по умолчанию крайне сильно радуют глаз, а после печати документы выглядят так что даже не стыдно показать. Но правда если возникает необходимость пользоваться нестандартным стилем, то приходится залезать в гугл, stackexchange и в викикнигу. Но это не так важно.
Важно, что набирать в TeX под Windows просто невозможно. А эта заметка призвана рассказать о том, как настроить Sublime на работу с TeX/BibTeX чтобы можно было хотя бы спокойно печатать.
Стандартный редактор, который идет с дистрибутивом texlive (а тот в свою очередь может устанавливаться около часа) невыносим, а альтернатив как не было, так и нет. Да и не будет, собственно. Все редакторы, которые существуют, в лучшем случае имеют простую палетку для стандартных тегов, которая никому не нужна, так как есть справочник; ну и кнопу «собрать pdf». Есть два исключения, но одно из них это gedit, который крайне криво портировали на Windows с необходимостью тайщить за собой весь gtk, а второе — платный софт.
Впрочем, на Windows тоже можно жить.
Сборка PDF одним хоткеем в Sublime
За основной редактор взят довольно приятный, хотя и сильно дорогой текстовый редактор Sublime Text 3, в нем есть даже неудобный модуль build systems, который правда сильно пригодился. Для удобной работы в sublime придется создать кастомную build system.
Sublime имеет довольно странную поддержку проектов, из которой впрочем достаточно того что он умеет запоминать папку проекта. Структуру проекта приходится поддерживать пользователю, но это несложно.
Если пользоваться всегда одной структурой проекта, то настройка довольно тривиальна. Я сохраняю основной исходник в Document.tex
, который находится в основной папке проекта. В нем можно указать через \input
или \include
пути к другим .tex
файлам, которые будут автоматически подхвачены компилятором и включены в документ. Например в папке проекта можно создать Bibliography\Contents.tex
и включить его в документ через \input{Bibliography/Contents}
.
Чтобы добавить свою build system достаточно просто в менюшке найти New Build System...
и написать простую json-конфигурацию. Например
1 2 3 4 5 |
{ "cmd": ["pdflatex", "Document.tex"], "path": "C:\\texlive\\2011\\bin\\win32", "working_dir": "${project_path}" } |
Впрочем написание даже такой конфигурации оказывается вызывает проблему, так как на официальном сайте есть только старые мануалы по настройке build systems. А еще есть некоторые нюансы. Следует, например, обратить внимание что указание строки в "cmd"
вместо списка может привести к ошибке кодировки где-то в глубинах Python3. "path"
указывает только на префикс для первого элемента в "cmd"
, сама команда выполняется в "working_dir"
, где и будет искаться файл Document.tex
.
После того как указанный файл будет сохранен в AppData\Roaming\Sublime Text 3\Packages\User
в Build Systems
можно будет выбрать новый пункт, и по нажатию на <Ctrl + B>
скомпилировать PDF файл из Document.tex
, а не из любого открытого на данный момент файла.
TeXworks, например, очень сильно раздражает тем, что не умеет запоминать где находится основной исходник и при сборке пытается собрать открытый файл, на котором сборщик выплюнет десяток ошибок и завершится. Приходится искать нужное окно среди пяти открытых.
Генерирование библиографии из BibTeX как дополнительная опция
Если достаточно много работать над отчетами или статьями, до легко заметить, что поддержка библиографии является самым надоедливым делом. Из отчета в отчет приходится копировать иногда одни и те же куски кода, описывающие необходимые источники.
Но все уже давно придумано, поэтому для решения этой проблемы существует BibTeX. BibTeX представляет собой небольшое решение для LaTeX, которое занимается менеджингом библиографии. Причем решение довольно простое и в тоже время крайне удобное.
Вместо того чтобы постоянно копировать одни и те же источники, можно просто создать текстовую библиографическую базу, которая будет хранить всю информацию о статьях с их авторами и использовать только её. А пакет сам отформатирует заданную информацию так как вам будет нужно.
Схема работы с BibTeX не является сложной. Перед сборкой документа достаточно перед \end{document}
указать
1 2 3 |
\bibliographystyle{gost780s} \bibliography{Bibliography/Contents} \end{document} |
Важно что между ними не должно быть пустых строк, потому как это неожиданным образом может послужить причиной ошибки при сборке документа, но в TeX это нормально.
Во время сборки генерируется .aux
файл, содержащий все ссылки и кроссрефернсы в документе, в том числе те, которые указывают на другие источники. Следующий шагом .aux
обрабатывается утилью bibtex, которая входит в дистрибутив LaTeX. bibtex находит указанную в документе базу и анализируя ссылки из .aux
создает минимально необходимую библиографию (чтобы в документе не осталось неразрешенных ссылок) в соответствии со стилем, указанным в \biblyographystyle{}
. После этого документ необходимо заново собрать, чтобы добавить библиографию и сгенерировать новый .aux
с разрешенными ссылками, и еще раз собрать, чтобы разрешить внешние ссылки с помощью только что созданного .aux
.
Если править базу в sublime, то удобно иметь отдельный екшен на обновление библиографии. Для этого необходимо немного подправить build system
1 2 3 4 5 6 7 8 9 10 11 12 |
{ "cmd": ["pdflatex", "Document.tex"], "path": "C:\\texlive\\2011\\bin\\win32", "working_dir": "${project_path}", "variants": [ { "name": "Generate BibTex", "cmd": ["bibtex", "Document.aux"], "working_dir": "${project_path}" } ] } |
После этого сборку можно запустить на <Ctrl + Shift + P>
набрав BibTex, например. Правда обойти необходимость трижды прогонять pdflatex на документе обойти нельзя, тут уже нужно писать полноценный билдскрипт или плагин для Sublime.
Впрочем уже это достаточно удобно. И позволяет набирать документы. Автодополнение в саблайме странное, но все равно лучше чем его отсутствие в TeXworks.