Обсуждая разработку свободного программного обеспечения, коллеги пишут, что ПО развивается — и только TEX Дональда Кнута завершён и остановлен. Однако в 2021 году TEX перешёл от версии 3.14159265 к версии 3.141592653. Давайте посмотрим, что изменилось в программе, которая считается образцовой и примерной.

Дональд Кнут выпустил 3.141592653 версию в феврале 2021 года. С 2014 по 2020 год в программе было найдено более 250 проблем. Вместе с тем Кнут считает, что любой нетривиальный код не оптимален, и хотя его можно улучшать — однако не нужно.

У новой версии пять крупных отличий, которые связаны с обработкой ошибок и восстановлением после ошибок.

❶ Иногда TEX переходил в режим \batchmode, но продолжал принимать команды с терминала.

❷ Иногда TEX предлагал закончить сборку документа и перейти в редактор там, где это не нужно, совсем не при чтении исходного файла. Обе ошибки приводили к зависанию.

❸ Иногда TEX зависал в режиме \tracingparagraphs. Причина была в том, что TEX писал сообщение об ошибке в лог-файл, не писал о нём на экране и ждал ответа с терминала. Теперь программа будет жаловаться и в файл, и на экран.

❹ Следующая ошибка не интерактивная. Скорее всего, она уже мешала людям в предыдущие годы. Раньше TEX ошибочно применял (раскрывал) значение параметра, переданного макросу, сразу же после #\bgroup, хотя в инструкции говорилось иначе. Теперь строка

\def\cs#1#\bgroup hi#1}

будет приводить к ошибке. Чтобы повторить прежний результат, следует писать такое:

\def\cs#1\bgroup{hi#1\bgroup}

Здесь исправлен не вполне естественный способ определения макросов. Впрочем, они все там не вполне естественные.

❺ Пусть написана команда с девятью параметрами, от #1 до #9. После этого нельзя использовать символ # в значениях этих параметров, потому что TEX допускает только девять параметров, то есть #9 — это наибольший допустимый параметр. Видя ещё один диез, TEX сообщит об ошибке и скажет, что игнорирует этот диез. Теперь поведение исправлено и TEX будет игнорировать всё, что следует за диезом.

Таковы крупные ошибки. Были и мелкие. Они относились к выводу лога на терминал, к переполнению переменной при обработке переносов в чрезвычайно длинных словах, к обработке курсива в специально испорченном шрифте.

Предыдущие обновления были в 2008 и 2014 годах. Кнут предполагает, что следующие обновления будут в 2028, 2037 и 2047 годах.

Литература

— Knuth, D. The TEX tuneup of 2021 // TUGboat. — 2021. — № 1.

— Обсуждение всех исправлений на сайте Stackexchange.

………
Текст: PereslavlFoto, CC-BY-SA 3.0.

Комментарии (44)


  1. raspberry-porridge
    18.07.2023 17:57
    -19

    Я не встречал ни одного человека, кто добровольно и в здравом уме выбрал TeX для вёрстки документов на постоянную основу. Каким кривым не был бы, например, Word, он просто удобнее.


    1. PereslavlFoto Автор
      18.07.2023 17:57
      +13

      Смотря по задачам. Есть задачи для одного и есть задачи для другого.


      В ворде трудно сделать газету, а в латехе легко.


      В ворде трудно сделать большую и сложную книгу, а в латехе легко.


      В ворде трудно сделать библиографию, а в латехе легко.


      1. hurtavy
        18.07.2023 17:57

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


        1. PereslavlFoto Автор
          18.07.2023 17:57
          +7

          \usepackage{bibunits}


          Приятного аппетита!


      1. krabdb
        18.07.2023 17:57

        А давайте уточнять, что вы понимаете под "сделать большую и сложную книгу". Потому что вы точно подразумеваете "подготовить книгу к печати" и в 99% случаях книга будет академическая. И вообще это задача технического работника - подготовить книгу к печати. Но вот автор non-fiction свою большую книгу будет опять же в 99% случаев писать в чем-то типа Scrivener на маке.


        1. PereslavlFoto Автор
          18.07.2023 17:57
          +10

          Первый признак. Большая и сложная книга не является свитком, не является одним последовательным потоком текста.


          Второй признак. Большая и сложная книга будет прочтена не один и даже не два раза.


          Третий признак. Большая и сложная книга не нужна целиком. Разным её читателям нужны разные части этой книги.


          Мы можем обсудить автора нехудожественной литературы на каком-то примере. Давайте по вашему выбору возьмём такого автора и найдём, где в его книге есть бегущие колонтитулы, нетекстовые объекты, сноски со ссылками на библиографию, указатели, списки иллюстраций, сложные оглавления, маргиналии и всякие другие способы упростить навигацию по тексту.


          1. WASD1
            18.07.2023 17:57
            +1

            Изходя из пунктов 1 и 3 - "большая сложная книга" не должна быть книгой на бумажном носителе, а должна представлять собой гипертекст, возможно ещё и со встроенным поиском.

            Исходя из этого - точно ли такие книги нужно верстать для и печатать на бумаге? А если они верстаются и печатаются - не является ли такое действие борьбой против их потребителей?


            1. PereslavlFoto Автор
              18.07.2023 17:57

              точно ли такие книги нужно верстать для и печатать на бумаге

              Вы совершенно правы. Однако пока ещё никто не знает, какими должны стать такие книги. Поэтому живём в силу традиции.


            1. DreamingKitten
              18.07.2023 17:57
              +1

              Исходя из этого - точно ли такие книги нужно верстать для и печатать на бумаге? А если они верстаются и печатаются - не является ли такое действие борьбой против их потребителей?

              Точно нужно. Таковы, например, требования различных специализированных учёных советов, аттестационных комиссий и министерств. Пока эта почтенная публика не отринет парадигму бумажного делопроизводства в принципе -- молодые научные кадры обречены мучить свои принтеры ещё долгие годы. При том, что все участники процесса прекрасно понимают, что читать эти книги никто не будет, разве что какой-нибудь такой же бедолага в поиске научной степени наткнётся в библиотеке.


      1. astenix
        18.07.2023 17:57
        +1

        В ворде трудно сделать большую и сложную книгу, а в латехе легко.

        Тоже так думал. Но как-то начал в LibreOffice набирать большой текст с главами, потом затеялось что-что со сносками, изображениями, библиографией (прямое цитирование источников из БД из Base), списками использованных картинок, таблиц, с полями (переменные!) и разноуровневыми ToC и полноценным аппендиксом — всë, как в лучших домах с LaTeX.

        Зауважал после этого LO.


      1. rg_software
        18.07.2023 17:57

        Да ничего оно не легко. Шаг влево-шаг вправо, совершенно неожиданные проблемы. Например, верстал я себе таблицу и горя не знал, пока таблица не перевалила за размер страницы. И вот внезапно оказалось, что нельзя! Почему? А вот потому, подключай другой пакет типа "длинные таблицы" и переходи на него. Или, скажем, листинги. Может, сейчас есть лучшее решение, но на моей памяти приходилось вручную ставить табы с помощю знака ">". А ещё выбешивали длинные строки, которые система не хотела разбивать на кусочки (ну по какой-то причине не работал перенос или ещё что). Само по себе это не трагедия, но как узнать? Компилируй документ, крути до того места, где был в прошлый раз такой инцидент, и смотри, изменилось чего или нет.

        Это не к тому, что Word мечта поэта, но в TeXе тоже счастья не так много.


    1. spqr_voldi
      18.07.2023 17:57
      +26

      Я не встречал ни одного человека, кто добровольно и в здравом уме выбрал Word для вёрстки документов на постоянную основу. Каким кривым не был бы, например, TeX, он просто удобнее.


      1. DreamC
        18.07.2023 17:57

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

        Не подскажите программу с нормальным и удобным интерфейсом для редактирования TeX документов? Одной из наиболее нормальных программ, которыми я пользовался - это LyX.


        1. PereslavlFoto Автор
          18.07.2023 17:57
          +6

          Тут сначала надо понять, что такое удобный для вас интерфейс. Какие именно претензии вы ставите к интерфейсу?


          Например, в Ворде интерфейс вообще недоступен, он полностью скрыт за визуальными кнопками и оконными меню. Глядя на документ, я не вижу, где один стиль переключается на другой. Не могу различить, где в документе расставлены заголовки, а где жирные крупные строки. Даже такие простые вещи, как оформление списка, упрятаны в глубине бесконечных окон. Когда мне нужно вставить символ, я вынужден искать его в таблицах Unicode и копировать из браузера. А если нужно изменить пропорции этого символа или наложить два-три символа один на другой, я прямо-таки теряюсь.


          С другой стороны, очень удобным интерфейсом я считаю текстовое окно, где все символы одинаковой ширины, а команды и числа окрашены разными цветами. Очень удобно, если интерфейс сам показывает, какая открывающая скобка сочетается с закрывающей. Великолепно, если интерфейс позволяет различать A или А.


          Итак, что такое удобный для вас интерфейс?


          1. DreamC
            18.07.2023 17:57

            К сожалению, да, я плохо сформулировал что хотел сказать. Но начал именно с этого - удобство интерфейса может быть разным.

            Да, согласен со всеми пунктами что вы назвали про Ворд и сложности с любым оформлением и изменением стиля вне того что уже вынесено на панель. Именно по этой причине и пишу диссертацию в Тех. К сожалению, не смотря на, как кем-то ниже сказано, подключаешь шаблон и не думаешь - думать нужно. Как минимум у меня остаются все те же проблемы форматирования формул с правильными отступами и подобное.

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

            PS: В Ворде можно включить панель отображения использованных в тексте стилей.


            1. PeterFukuyama
              18.07.2023 17:57

              редакторы Тех с графическим интерфейсом для более простых документов

              https://www.texstudio.org/

              https://ru.overleaf.com/


              1. DreamC
                18.07.2023 17:57

                Overleaf в режиме Visual editor - это как раз наиболее близкое из всего что я видел. Studio фактически только добавляет кнопки для быстрой вставки команд что не облегчает его использование обычному человеку.


          1. Alexey2005
            18.07.2023 17:57

            У меня главная претензия к TeX-подобным языкам разметки — необходимость постоянного переключения раскладки для ввода этих тегов. Система просто не предназначена для удобной работы с кириллическими текстами.
            Тот же Markdown например продуман так, что позволяет размечать текст оставаясь в пределах выбранной раскладки, а при работе с TeX руки от Alt+Shift не отлипают вообще.


            1. domix32
              18.07.2023 17:57
              +1

              Тот же Markdown например продуман так, что позволяет размечать текст оставаясь в пределах выбранной раскладки,

              Это как это? Курсив, жирный и подчёркивание допустим универсальны и вообще во многих редакторах живут на отдельных комбинациях клавиш. А если заголовок / подзаголовок? Или код какой? № и ё не помогут. Формулы теховские из той же оперы.

              Alt+Shift не отлипают вообще.

              предлагаю перебиндить капс на смену раскладки. жить после такого становится заметно легче.


            1. DreamingKitten
              18.07.2023 17:57
              +1

              необходимость постоянного переключения раскладки для ввода этих тегов

              Совет бывалого соискателя — используйте редакторы со встроенной поддержкой синтаксиса LaTeX, автодополнениями и клавиатурными макросами. И ещё попробуйте использовать нециклическое переключение раскладок. Это существенно ускоряет набор.

              Система просто не предназначена для удобной работы с кириллическими текстами.

              Ну почему же... Поддержка UTF там есть, шрифтов тоже.


          1. domix32
            18.07.2023 17:57

            Глядя на документ, я не вижу, где один стиль переключается на другой.

            Помню эту студенческую боль, когда пишешь диплом, а он тебе автооглавление не делает, потому что у тебя где-то заголовок по стилю не совпал в подразделе.


    1. wigneddoom
      18.07.2023 17:57
      +6

      Не, ну когда за тебя шаблон и нужные либы подключат, вообще кайф, пишешь текст и ни о чём не думаешь.


    1. DreamingKitten
      18.07.2023 17:57
      +6

      Встречайте.

      Я в LaTeX делал свою докторскую диссертацию, от и до. А перед этим отцовскую докторскую верстал в MS Word. Разница по удобству и возможностям -- небо и земля, не в пользу ворда, при том что ворд я тоже хорошо знаю.


    1. fshp
      18.07.2023 17:57
      +6

      Я написал диплом за пару недель на LaTeX, который с первого раза прошел нормоконтроль.

      Боюсь представить, сколько у меня ушло бы времени на это в word. И меня бросает в пот при мысли версионирования и сравнения изменений.


    1. playermet
      18.07.2023 17:57

      Главный минус, который я приметил на винде - довольно жирный (4Гб) дистрибутив TeX Live, часто рекомендуемый к установке. Но у него есть альтернатива - легковесный MiKTeX, и онлайновый Overleaf.


    1. astenix
      18.07.2023 17:57

      Привет, будем знакомы.


    1. shaggyone
      18.07.2023 17:57

      Я встречал группу моих одногруппников, которые добровольно пусть и с моей подачи изучили латех, чтобы не мучиться с "рисованием" формул в ворде.


    1. AlchemistDark
      18.07.2023 17:57

      Для публикации статей в некоторых научных журналах вёрстка в TeX или LaTeX — необходимое условие.


  1. PeterFukuyama
    18.07.2023 17:57
    +1

    Верстальная программа...

    Дожили. Система верстки вообще-то. Но спасибо за хорошую новость про отличную программу.


    1. PereslavlFoto Автор
      18.07.2023 17:57
      +2

      Вопрос терминов. Я не понимаю, почему система вёрстки это не программа. Если вы расскажете подробнее, я исправлю статью. Спасибо!


      1. PeterFukuyama
        18.07.2023 17:57

        TeX is a typesetting system

        Вроде во всех российских переводах так. По крайней мере, в учебнике Львовского и в вики.

        P. S. Еще нашел «издательская система».


        1. PereslavlFoto Автор
          18.07.2023 17:57
          +1

          Очень хорошо. Что ещё входит в эту систему, кроме сложной программы, состоящей из подпрограмм?


          1. PeterFukuyama
            18.07.2023 17:57
            +1

            кроме сложной программы, состоящей из подпрограмм

            Это разве уже не система?


            1. PereslavlFoto Автор
              18.07.2023 17:57
              +3

              Вы прочли систему, сложенную из отдельных абзацев. Это была не статья, а дайджестная система.


              Под нею вы приняли участие в создании системы, сложенной из отдельных реплик и цитат. Это были не комментарии, а обсуждательная система.


              Всё вокруг нас можно считать системой. Итак, вопрос сводится к терминам, поэтому все правы.


              1. PeterFukuyama
                18.07.2023 17:57

                Ну ок. Надо будет посмотреть, где еще system переводится как программа.


  1. pOmelchenko
    18.07.2023 17:57

    Возьму на вооружение сей метод версионирования)


  1. dm_wrike
    18.07.2023 17:57
    +1

    Ну вы же сами перечислили список. Это багфиксы, нужные и полезные. Совсем не то что "давайте напихаем больше фичей" ????

    Мой тезис в том что приложения которые фокусируются на стабильности (literature programming) конечно существуют, но являются редким исключением.

    P. S. Рад видеть что за вами не заржавеет, респект ????


    1. PereslavlFoto Автор
      18.07.2023 17:57

      Чтобы напихать побольше фичей в программу for или в команду echo, придуманы batch файлы. Этаким путём можно до бесконечности развивать фичи, потому что уже непонятно, где граница программы.


  1. unreal_undead2
    18.07.2023 17:57
    +1

    Здесь исправлен не вполне естественный способ определения макросов. Впрочем, они все там не вполне естественные.

    Хорошо сказано! В С23 фикс на эту тему не планируется? )


  1. vk6677
    18.07.2023 17:57

    Несколько лет назад мне поручили написать руководство пользователя. Работа показалась скучной и что-бы избавиться от рутины решил попутно освоить LaTex и сверстать в нём руководство. Получилось очень даже не плохо. Удобно разбил документ на файлы - разделы. Использовал Git...

    Закончилось тем, что руководство решил подправить мой коллега... Теперь мне не доверяют писать документацию.


    1. astenix
      18.07.2023 17:57
      +1

      А у меня было наоборот — коллега осознал силу LaTeX, подхватил мой документ с интересом.

      Остальные коллеги — да, нифига не поняли, и почему pdf, есть же Confluence…


      1. PereslavlFoto Автор
        18.07.2023 17:57

        почему pdf, есть же Confluence

        А и правда, чем же не хватало конфлюэнса?


        1. astenix
          18.07.2023 17:57

          Есть контент, который идеально втыкается в Confluence, а есть контент, для упорядочивания которого лучше pdf.


    1. wigneddoom
      18.07.2023 17:57
      +1

      Использовал Git...

      Вот этим мне в своё время и понравился TeX, что это просто текст. Работаешь привычно, как с кодом. Мы писали тонны документации, статей, отчётов, а средства совместного редактирования тогда были совсем не развиты. А с TeX сделали репу, отпочковал свою ветку, написал раздел, абзац и pull request. И тебя не волнует форматирование, нумерация рисунков, формулы, библиография - всё само замечательно "отрендерится".