Есть такие инструменты какclang-форматкоторые берут, например, «некрасивый» (неотформатированный) файл исходного кода C++ и применяют определенные отступы и другие правила, чтобы сделать код более читабельным.
Есть ли такой инструмент, который может автоматически форматировать исходный код LaTeX? Я хочу каким-то образом сохранить мои файлы LaTeX чистыми и согласованными между участниками.
решение1
Инструментлатексныйзубчто было предложено @muzimuzhi-Z в комментарии, сработало для меня. Этот скрипт Perl кажется очень мощным, но начать легко:
Монтаж
У меня уже была старая версия (вероятно, через texlive-full
), но поскольку этот проект довольно активно развивается, я решил получить последнюю версию:
- Я получил источник отего официальный репозиторий GitHub
- Я установил все недостающие зависимости с помощью
sudo ./helper-scripts/latexindent-module-installer.pl
- Я добавил его в свой путь в
~/.bashrc
:export PATH="/path/to/latexindent.pl:$PATH"
Применение
Параметры по умолчанию, перезапись файла ( -w
), без записи копии в терминал ( -s
):
latexindent.pl -w -s myfile.tex
Это сохранит резервную копию исходного файла .bak0
(или .bak1
т. п.). Если у вас это есть в репозитории, вы можете добавить *.bak?
в свой .gitignore
.
Вы также можете указать собственный стиль форматирования в yml
файле, например: latexindent.pl -l mysettings.yml myfile.tex
.
решение2
emacs (сюрприз!) поставляется с поддержкой LaTeX «из коробки», во многом,многоБолее популярная поддержка предоставляется AUC-TeX (и RefTeX для перекрестных ссылок и цитирования библиографий). Все стандартные пакеты, проверьте индекс пакетов.
В любом случае я форматирую исходные файлы LaTeX так, чтобы каждая строка содержала фразу, заканчивающуюся знаком препинания, ... Таким образом (предложилдлинныйв то время как когда я писал troff (!) для своей диссертации, используя vi...) изменения часто означают удаление/вставку или перемещение строки/строк, проверка на ляпы, такие как "an thesis" или "a elephant" или "the the case" может быть сделана с помощью строчно-ориентированных инструментов (исправить даже автоматизировано с помощью простой замены регулярного выражения). Сегодня я спрятал его в git, формат имеет дополнительное преимущество, так как добавление/удаление, например, слова, не переформатирует абзац, поэтому различия версий действительно выделяют реальные изменения.
Да, переформатирование таким образом — рутинная работа, которую придется выполнять вручную... но она необходима один раз (и будет нужна в дальнейшем).