Эссе о разработке игр, мышлении и книгах

Первый взгляд на LaTeX

Аллюзия на документацию по LaTeX

Аллюзия на документацию по LaTeX

Для личных нужд решил изучить эту штуку. Пока просмотрел только документацию, но определённое мнение сформировалось. Сейчас поделюсь.

Для затравки вот цитата из исследования эффективности MS Word & LaTeX.

We show that LaTeX users were slower than Word users, wrote less text in the same amount of time, and produced more typesetting, orthographical, grammatical, and formatting errors. On most measures, expert LaTeX users performed even worse than novice Word users. LaTeX users, however, more often report enjoying using their respective software.

An Efficiency Comparison of Document Preparation Systems Used in Academic Research and Development Markus Knauff*, Jelica Nejasmic.

Был у меня период в жизни, когда я год писал на Perl и успел с ним близко познакомиться: много кода написал, много документации прочитал. И вот если изучать Perl, то буквально видно как, почему и в каком порядке к нему костылями прикручивали разные фичи. Список особенностей этого ЯП — буквально археологический срез программистской мысли за несколько десятков лет. Видимо поэтому Perl и умер.

Вот от LaTeX (точнее от всего семейства *TeX) у меня аналогичные ощущения.

LaTeX декларируется как язык для описания структуры текста, но в большинстве случаев это утверждение нарушается уже на следующей странице документации. И это таки чистый язык вёрстки (который пытаются пиарить как язык для авторов, а не верстальщиков).  Чтобы получить качественный результат нужно описывать правила переноса, размеры пробелов и дефисов. Многие символы вводятся специальными командами, а не юникодом и так далее.

Выглядит это довольно шизофренично. Совершенно рядом находятся утверждения, что в нём описывается только структура документа и предупреждения об ошибках форматирования, если используешь не ту команду.

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

Присутствует мешанина между командами оригинального TeX и LaTeX (с дублированием функциональности). Рекомендуется использовать, конечно, команды LaTeX, но как отличить их от команд TeX не ясно.

Самое интересное (не уверен что это минус) — отсутствует деление на описание структуры и стиля (например, как HTML и CSS). Если я правильно понял, базовый язык TeX предполагает именно работу со стилистикой, но автор может определять «функции», которые инкапсулируют в себе стили, маскируясь под структурные элементы. Для меня такой подход выглядит диким (так как структура и стиль с большего ортогональные понятия), но определённый шарм в этом есть.

В целом от всей инфраструктуры веет неудобством и олдскульностью. Пока непонятно почему до сих пор не появилось чего-нибудь получше.

Пока что единственная ценность для меня во всём этом — текстовый формат, позволяющий нормально следить за историей в VCS, не теряя в выразительности. Попробую использовать, но как бы всё не вылилось в написание языка разметки, транслируемого в TeX.