Верстальная программа TeX: какие изменения сделаны в 2021 году

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Обсуждая разработку свободного программного обеспечения, коллеги пишут, что ПО развивается — и только 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.

Источник: https://habr.com/ru/articles/748900/


Интересные статьи

Интересные статьи

Всем привет! Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. Главные темы нового выпу...
Всем привет! Недавно безуспешно пытался найти сравнительный обзор существующих систем защиты от дронов, представленных на российском рынке. В сети довольно много публикаций по этой тематике, только на...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
Цифра в заголовке это итоги января 2021 года, которые удалось подвести Ассоциации компаний интернет-торговли. Эксперты вычислили даже объем локального рынка в начале этог...
Всем привет! Продолжаем дайджесты новостей и других материалов о свободном и открытом ПО и немного о железе. Всё самое главное про пингвинов и не только, в России и мире. Разработчики ...