Обсуждая разработку свободного программного обеспечения, коллеги пишут, что ПО развивается — и только 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)
PeterFukuyama
18.07.2023 17:57+1Верстальная программа...
Дожили. Система верстки вообще-то. Но спасибо за хорошую новость про отличную программу.
PereslavlFoto Автор
18.07.2023 17:57+2Вопрос терминов. Я не понимаю, почему система вёрстки это не программа. Если вы расскажете подробнее, я исправлю статью. Спасибо!
PeterFukuyama
18.07.2023 17:57TeX is a typesetting system
Вроде во всех российских переводах так. По крайней мере, в учебнике Львовского и в вики.
P. S. Еще нашел «издательская система».
PereslavlFoto Автор
18.07.2023 17:57+1Очень хорошо. Что ещё входит в эту систему, кроме сложной программы, состоящей из подпрограмм?
PeterFukuyama
18.07.2023 17:57+1кроме сложной программы, состоящей из подпрограмм
Это разве уже не система?
PereslavlFoto Автор
18.07.2023 17:57+3Вы прочли систему, сложенную из отдельных абзацев. Это была не статья, а дайджестная система.
Под нею вы приняли участие в создании системы, сложенной из отдельных реплик и цитат. Это были не комментарии, а обсуждательная система.
Всё вокруг нас можно считать системой. Итак, вопрос сводится к терминам, поэтому все правы.
PeterFukuyama
18.07.2023 17:57Ну ок. Надо будет посмотреть, где еще system переводится как программа.
dm_wrike
18.07.2023 17:57+1Ну вы же сами перечислили список. Это багфиксы, нужные и полезные. Совсем не то что "давайте напихаем больше фичей" ????
Мой тезис в том что приложения которые фокусируются на стабильности (literature programming) конечно существуют, но являются редким исключением.
P. S. Рад видеть что за вами не заржавеет, респект ????
PereslavlFoto Автор
18.07.2023 17:57Чтобы напихать побольше фичей в программу for или в команду echo, придуманы batch файлы. Этаким путём можно до бесконечности развивать фичи, потому что уже непонятно, где граница программы.
unreal_undead2
18.07.2023 17:57+1Здесь исправлен не вполне естественный способ определения макросов. Впрочем, они все там не вполне естественные.
Хорошо сказано! В С23 фикс на эту тему не планируется? )
vk6677
18.07.2023 17:57Несколько лет назад мне поручили написать руководство пользователя. Работа показалась скучной и что-бы избавиться от рутины решил попутно освоить LaTex и сверстать в нём руководство. Получилось очень даже не плохо. Удобно разбил документ на файлы - разделы. Использовал Git...
Закончилось тем, что руководство решил подправить мой коллега... Теперь мне не доверяют писать документацию.
astenix
18.07.2023 17:57+1А у меня было наоборот — коллега осознал силу LaTeX, подхватил мой документ с интересом.
Остальные коллеги — да, нифига не поняли, и почему pdf, есть же Confluence…
PereslavlFoto Автор
18.07.2023 17:57почему pdf, есть же Confluence
А и правда, чем же не хватало конфлюэнса?astenix
18.07.2023 17:57Есть контент, который идеально втыкается в Confluence, а есть контент, для упорядочивания которого лучше pdf.
wigneddoom
18.07.2023 17:57+1Использовал Git...
Вот этим мне в своё время и понравился TeX, что это просто текст. Работаешь привычно, как с кодом. Мы писали тонны документации, статей, отчётов, а средства совместного редактирования тогда были совсем не развиты. А с TeX сделали репу, отпочковал свою ветку, написал раздел, абзац и pull request. И тебя не волнует форматирование, нумерация рисунков, формулы, библиография - всё само замечательно "отрендерится".
raspberry-porridge
Я не встречал ни одного человека, кто добровольно и в здравом уме выбрал TeX для вёрстки документов на постоянную основу. Каким кривым не был бы, например, Word, он просто удобнее.
PereslavlFoto Автор
Смотря по задачам. Есть задачи для одного и есть задачи для другого.
В ворде трудно сделать газету, а в латехе легко.
В ворде трудно сделать большую и сложную книгу, а в латехе легко.
В ворде трудно сделать библиографию, а в латехе легко.
hurtavy
я так и не смог сделать в техе двойную библиографию. Пришлось список печатать отдельным документом
PereslavlFoto Автор
\usepackage{bibunits}
Приятного аппетита!
krabdb
А давайте уточнять, что вы понимаете под "сделать большую и сложную книгу". Потому что вы точно подразумеваете "подготовить книгу к печати" и в 99% случаях книга будет академическая. И вообще это задача технического работника - подготовить книгу к печати. Но вот автор non-fiction свою большую книгу будет опять же в 99% случаев писать в чем-то типа Scrivener на маке.
PereslavlFoto Автор
Первый признак. Большая и сложная книга не является свитком, не является одним последовательным потоком текста.
Второй признак. Большая и сложная книга будет прочтена не один и даже не два раза.
Третий признак. Большая и сложная книга не нужна целиком. Разным её читателям нужны разные части этой книги.
Мы можем обсудить автора нехудожественной литературы на каком-то примере. Давайте по вашему выбору возьмём такого автора и найдём, где в его книге есть бегущие колонтитулы, нетекстовые объекты, сноски со ссылками на библиографию, указатели, списки иллюстраций, сложные оглавления, маргиналии и всякие другие способы упростить навигацию по тексту.
WASD1
Изходя из пунктов 1 и 3 - "большая сложная книга" не должна быть книгой на бумажном носителе, а должна представлять собой гипертекст, возможно ещё и со встроенным поиском.
Исходя из этого - точно ли такие книги нужно верстать для и печатать на бумаге? А если они верстаются и печатаются - не является ли такое действие борьбой против их потребителей?
PereslavlFoto Автор
Вы совершенно правы. Однако пока ещё никто не знает, какими должны стать такие книги. Поэтому живём в силу традиции.
DreamingKitten
Точно нужно. Таковы, например, требования различных специализированных учёных советов, аттестационных комиссий и министерств. Пока эта почтенная публика не отринет парадигму бумажного делопроизводства в принципе -- молодые научные кадры обречены мучить свои принтеры ещё долгие годы. При том, что все участники процесса прекрасно понимают, что читать эти книги никто не будет, разве что какой-нибудь такой же бедолага в поиске научной степени наткнётся в библиотеке.
astenix
Тоже так думал. Но как-то начал в LibreOffice набирать большой текст с главами, потом затеялось что-что со сносками, изображениями, библиографией (прямое цитирование источников из БД из Base), списками использованных картинок, таблиц, с полями (переменные!) и разноуровневыми ToC и полноценным аппендиксом — всë, как в лучших домах с LaTeX.
Зауважал после этого LO.
rg_software
Да ничего оно не легко. Шаг влево-шаг вправо, совершенно неожиданные проблемы. Например, верстал я себе таблицу и горя не знал, пока таблица не перевалила за размер страницы. И вот внезапно оказалось, что нельзя! Почему? А вот потому, подключай другой пакет типа "длинные таблицы" и переходи на него. Или, скажем, листинги. Может, сейчас есть лучшее решение, но на моей памяти приходилось вручную ставить табы с помощю знака ">". А ещё выбешивали длинные строки, которые система не хотела разбивать на кусочки (ну по какой-то причине не работал перенос или ещё что). Само по себе это не трагедия, но как узнать? Компилируй документ, крути до того места, где был в прошлый раз такой инцидент, и смотри, изменилось чего или нет.
Это не к тому, что Word мечта поэта, но в TeXе тоже счастья не так много.
spqr_voldi
Я не встречал ни одного человека, кто добровольно и в здравом уме выбрал Word для вёрстки документов на постоянную основу. Каким кривым не был бы, например, TeX, он просто удобнее.
DreamC
Понятие удобства может быть разным. Удобство Ворда заключается в наличии нормального графического интерфейса. Работа же со сложными документами с ссылками и подобным - уже будет неудобно в нем.
Не подскажите программу с нормальным и удобным интерфейсом для редактирования TeX документов? Одной из наиболее нормальных программ, которыми я пользовался - это LyX.
PereslavlFoto Автор
Тут сначала надо понять, что такое удобный для вас интерфейс. Какие именно претензии вы ставите к интерфейсу?
Например, в Ворде интерфейс вообще недоступен, он полностью скрыт за визуальными кнопками и оконными меню. Глядя на документ, я не вижу, где один стиль переключается на другой. Не могу различить, где в документе расставлены заголовки, а где жирные крупные строки. Даже такие простые вещи, как оформление списка, упрятаны в глубине бесконечных окон. Когда мне нужно вставить символ, я вынужден искать его в таблицах Unicode и копировать из браузера. А если нужно изменить пропорции этого символа или наложить два-три символа один на другой, я прямо-таки теряюсь.
С другой стороны, очень удобным интерфейсом я считаю текстовое окно, где все символы одинаковой ширины, а команды и числа окрашены разными цветами. Очень удобно, если интерфейс сам показывает, какая открывающая скобка сочетается с закрывающей. Великолепно, если интерфейс позволяет различать A или А.
Итак, что такое удобный для вас интерфейс?
DreamC
К сожалению, да, я плохо сформулировал что хотел сказать. Но начал именно с этого - удобство интерфейса может быть разным.
Да, согласен со всеми пунктами что вы назвали про Ворд и сложности с любым оформлением и изменением стиля вне того что уже вынесено на панель. Именно по этой причине и пишу диссертацию в Тех. К сожалению, не смотря на, как кем-то ниже сказано, подключаешь шаблон и не думаешь - думать нужно. Как минимум у меня остаются все те же проблемы форматирования формул с правильными отступами и подобное.
В данной ситуации хотел спросить какие, может быть, вам известны редакторы Тех с графическим интерфейсом для более простых документов, т.е. где вам не нужно "форматировать книгу". Самый простой пример - это сразу видеть написанную формулу без компиляции документа заново.
PS: В Ворде можно включить панель отображения использованных в тексте стилей.
PeterFukuyama
https://www.texstudio.org/
https://ru.overleaf.com/
DreamC
Overleaf в режиме Visual editor - это как раз наиболее близкое из всего что я видел. Studio фактически только добавляет кнопки для быстрой вставки команд что не облегчает его использование обычному человеку.
Alexey2005
У меня главная претензия к TeX-подобным языкам разметки — необходимость постоянного переключения раскладки для ввода этих тегов. Система просто не предназначена для удобной работы с кириллическими текстами.
Тот же Markdown например продуман так, что позволяет размечать текст оставаясь в пределах выбранной раскладки, а при работе с TeX руки от Alt+Shift не отлипают вообще.
domix32
Это как это? Курсив, жирный и подчёркивание допустим универсальны и вообще во многих редакторах живут на отдельных комбинациях клавиш. А если заголовок / подзаголовок? Или код какой? № и ё не помогут. Формулы теховские из той же оперы.
предлагаю перебиндить капс на смену раскладки. жить после такого становится заметно легче.
DreamingKitten
Совет бывалого соискателя — используйте редакторы со встроенной поддержкой синтаксиса LaTeX, автодополнениями и клавиатурными макросами. И ещё попробуйте использовать нециклическое переключение раскладок. Это существенно ускоряет набор.
Ну почему же... Поддержка UTF там есть, шрифтов тоже.
domix32
Помню эту студенческую боль, когда пишешь диплом, а он тебе автооглавление не делает, потому что у тебя где-то заголовок по стилю не совпал в подразделе.
wigneddoom
Не, ну когда за тебя шаблон и нужные либы подключат, вообще кайф, пишешь текст и ни о чём не думаешь.
DreamingKitten
Встречайте.
Я в LaTeX делал свою докторскую диссертацию, от и до. А перед этим отцовскую докторскую верстал в MS Word. Разница по удобству и возможностям -- небо и земля, не в пользу ворда, при том что ворд я тоже хорошо знаю.
fshp
Я написал диплом за пару недель на LaTeX, который с первого раза прошел нормоконтроль.
Боюсь представить, сколько у меня ушло бы времени на это в word. И меня бросает в пот при мысли версионирования и сравнения изменений.
playermet
Главный минус, который я приметил на винде - довольно жирный (4Гб) дистрибутив TeX Live, часто рекомендуемый к установке. Но у него есть альтернатива - легковесный MiKTeX, и онлайновый Overleaf.
astenix
Привет, будем знакомы.
shaggyone
Я встречал группу моих одногруппников, которые добровольно пусть и с моей подачи изучили латех, чтобы не мучиться с "рисованием" формул в ворде.
AlchemistDark
Для публикации статей в некоторых научных журналах вёрстка в TeX или LaTeX — необходимое условие.