Автоматическое форматирование кода LaTeX (похоже на clang-format)

Автоматическое форматирование кода LaTeX (похоже на clang-format)

Есть такие инструменты какclang-форматкоторые берут, например, «некрасивый» (неотформатированный) файл исходного кода C++ и применяют определенные отступы и другие правила, чтобы сделать код более читабельным.

Есть ли такой инструмент, который может автоматически форматировать исходный код LaTeX? Я хочу каким-то образом сохранить мои файлы LaTeX чистыми и согласованными между участниками.

решение1

Инструментлатексныйзубчто было предложено @muzimuzhi-Z в комментарии, сработало для меня. Этот скрипт Perl кажется очень мощным, но начать легко:

Монтаж

У меня уже была старая версия (вероятно, через texlive-full), но поскольку этот проект довольно активно развивается, я решил получить последнюю версию:

  1. Я получил источник отего официальный репозиторий GitHub
  2. Я установил все недостающие зависимости с помощьюsudo ./helper-scripts/latexindent-module-installer.pl
  3. Я добавил его в свой путь в ~/.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, формат имеет дополнительное преимущество, так как добавление/удаление, например, слова, не переформатирует абзац, поэтому различия версий действительно выделяют реальные изменения.

Да, переформатирование таким образом — рутинная работа, которую придется выполнять вручную... но она необходима один раз (и будет нужна в дальнейшем).

Связанный контент