Закон необходимое (минимальное) разнообразие (сложность)

Закон необходимое (минимальное) разнообразие (сложность)

В последнее время я все больше беспокоюсь о том, что LaTeX (возможно) превзойдетТипстиз-за своей простоты.Этот ответпоказывает несколько граней Typst поверх LaTeX.

Я спорил с одним из своих одноклассников о том, почему я все еще выбираю LaTeX, а не Typst:

  • Качество набора LaTeX превосходное(хотя Typst быстро догоняет)
  • Я люблю Ти.кZ, в то время как в Typst нет аналога(на самом деле сейчас естьЦеТЗ)
  • Поддержка CJK в Typst плохая, тогда как XeLaTeX и LuaLaTeX хорошо справляются со шрифтами CJK(Я думаю, что они скоро это исправят)
  • Математика в Typst ужасна, LaTeX уже установил стандарт
  • На самом деле, поскольку я привык к LaTeX, я не хочу переходить на Typst.:-(

Однако меня поразили некоторые факты:

  • Макросы в LaTeX не так удобны, как реальное программирование, хотя есть LaTeX3, который может смягчить эту проблему.
  • Компиляция документов LaTeX может быть медленной, по сравнению с Typst, использующим Rust.
  • Более простой синтаксис Typst побудит людей изучать Typst вместо LaTeX.. LaTeX имеет много пакетов (некоторые из них даже конфликтуют), что может сильно сбивать с толку учащихся.

Я видел некоторые изменения, внесенные в сообщество LaTeX, в том числетектоническийпереписывание LaTeX с использованием Rust.

Так каковы планы сообщества TeX по поддержанию TeX/LaTeX, этого прекрасного языка, в дальнейшем? Я горю желанием узнать больше и хочу внести свой вклад.

решение1

Ну, поначалу я бы с осторожностью отнесся к заявлениям о «легкости» и «быстроте». 10 лет назад я ответил на вопрос о том, чем Word отличается от LaTeX, с помощью

Да, вы можете делать большинство обычных вещей без проблем (а иногда и быстрее или проще) с Word. Но как насчет слегка "необычных вещей"?

typst — «современный», что является еще одним словом для «молодой». Когда он начинался, он даже не мог делать обычные вещи, такие как сноски, плавающие элементы, закладки, двухстраничные макеты, поля форм или комментарии PDF. И хотя некоторые из них теперь реализованы, им все еще не хватает многих параметров конфигурации, которые существуют в LaTeX или поддерживающих пакетах. Текущим примером является это обсуждение того, как получить что-то столь простое, как a \pagerefв typst:https://github.com/typst/typst/issues/2873.

Легко делать простые вещи в легком для изучения синтаксисе, и я полностью согласен, что # my chapterэто хороший, короткий способ создания заголовка (но синтаксис LaTeX \chapter{my chapter}тоже не длинный), но вопрос в том, что произойдет, если вам нужны более сложные вещи. Существует ли интуитивно понятный синтаксис для ненумерованного раздела? Как можно адаптировать запись в оглавлении или заголовке? Он встроен или требуется найти и скопировать десять или более строк кода, как для pageref в проблеме, процитированной выше? Останется ли typst простым в использовании, когда он станет более зрелым и получит запросы на более сложные функции документа?

Во-вторых, я весьма расстроен тем, что "современная" система, такая как typst, изначально не поддерживает функции доступности PDF. Доступность может не иметь значения для личных документов, но любому, кто пишет для какой-либо организации, вскоре придется задуматься об этой теме. Авторы typst знали это, и они знали, что им нужны данные о структуре для размеченного PDF, но тем не менее написали свой компилятор так, чтобы он их терял: "Поскольку в настоящее время фреймы содержат только локаторы, а не полное обратное отображение структуры документа, экспортер не может записать эту информацию о структуре." Онитребоватьчто они естьв хорошем положении, поскольку доступно довольно много семантической информации, но LaTeX располагает семантической информацией, доступной уже 30 лет, и это не позволяет легко создавать доступные, размеченные PDF-файлы.

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

решение2

Как человек, который также пишет замену LaTeX, я думаю, что было бы хорошо, если бы LaTeX был заменен чем-то в будущем. Программирование на макроязыке TeX — это беспорядок, а приверженность обратной совместимости означает, что прогресс медленный, если не невозможный (я все еще думаю, что было грубой ошибкой сворачивать LaTeX3 в развивающийся LaTeX2e, а не воспользоваться преимуществом основного номера версии, чтобы нарушить обратную совместимость).

Я предсказываю, что преемник LaTeX, если он когда-нибудь появится, сохранит разметку LaTeX, но откажется от модели программирования на основе макросов. Авторам нужно иметь возможность перехода с небольшими трудностями. Я не думаю, что кто-то будет оплакивать смерть хрупкой макросистемы LaTeX. То, что TeX является полным по Тьюрингу, не означает, что это лучший способ что-то делать или даже хороший способ.

Я бы ожидал увидеть версионирование пакетов и классов документов (или их эквивалентов), чтобы никто не удивился, когда CTAN обновит пакет на три уровня в глубину, и его документ больше не будет компилироваться. Кроме того, в современных вычислительных системах нет причин, по которым для управления такими вещами, как ссылки и цитаты, должны быть необходимы множественные запуски. Одно приложение могло бы справиться с возможностями LaTeX, BibTeX, makeindex и т. д.

Я также чувствую, что вместо того, чтобы писать, например,

\documentclass{amsart}

лучшим подходом, возможно, было бы сделать что-то вроде

\DocumentStructure{article}
\DocumentFormat{ams}

или еще лучше:

\DocumentStructure{article:1.0}
\DocumentFormat{ams:ams:1.0}

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

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

решение3

Самый большой недостаток typst и, я думаю, серьезная ошибка проектирования, заключается в том, что он несовместим с LaTeX. Что делать с большими объемами существующих документов, архивов и т. д.? Выбросить все и начать с нуля? Я использую LaTeX с момента его создания, то есть почти 40 лет! Вехами в усовершенствованиях стали использование Laserjets (быстро адаптировался), pdfTeX, babel, теперь l3слой, LuaTeX, PGF/Tikz, BiblaTeX, microtype.

Язык разметки TeX/LaTeX, будет существовать и существовать, вероятно, дольше, чем многие из старшего поколения, которые мы все еще используем. Как вам скажет любой, кто читал книгу Dragon, нелегко придумать компилятор, который подбирает команды и параметры из моря букв вокруг него.

Можно ли это улучшить? Да! Области, которые, по моему мнению, можно улучшить:

  1. Автоматическая замена глифов, отсутствующих в шрифтах, подобно тому, что делают веб-браузеры и IDE. В настоящее время это можно сделать с помощью LuaTeX/LuaLaTeX с резервными шрифтами, но это становится мучительно медленным.
  2. Программируемые процедуры вывода. Значения по умолчанию должны быть встроены в сам движок TeX.
  3. Многие проблемы с конфликтами в пакетах возникают из-за hyperef. Необходимо разработать новый механизм, позволяющий авторам использовать ссылки проще, а не зависеть от пакета. Базовые классы можно модифицировать, чтобы включить это, поэтому нет необходимости в hyperref для переопределения всех команд секционирования и ссылок. Включите это в формат.
  4. Обработка индийских и восточноазиатских документов может быть улучшена путем содействия haffbuz и LuaTeX. Не должно быть необходимости загружать пакет для смены языка.
  5. Создание виртуальных шрифтов может быть улучшено.

Всем тем, кто пробует и разрабатывает разные системы, спасибо, конкуренция — это хорошо, желаю вам удачи. На днях я просматривал статистику и заметил, что между l3 и LuaTeX было добавлено около 130 000 loc к тому, что загружается за один запуск. У оригинального TeX было около 20 000 loc. Возможно, некоторые усилия по улучшению самих движков для обработки некоторых проблемных областей будут проще и полезнее, чем переписывание всего с нуля.

решение4

Не зная конкретных планов сообщества латекса, мы можем anticipate future developmentв какой Latex- Typstто степени повторно использовать два научных открытия.

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

Закон необходимое (минимальное) разнообразие (сложность)

Это восходит кУ.Росс Эшби, который является одним из основоположников кибернетики. Он заявил, частично моими словами:

  • чтобы справиться со сложностью
  • регулятор/контроллер должен быть как минимум столь же сложным;
  • регулирование терпит неудачу из-за недостаточно сложных регуляторов
  • особенно в условиях шума (помех).

Пример Эшби

В его«Введение в кибернетику», 1956 г.он использует регулятор температуры для иллюстрации своего основного уравнения и соображений.

Вкратце там говорится следующее:

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

См. напримерздесь (упрощенная глава), илиздесь (Википедия о Разнообразии)илиздесь (в его книге, цитируемой выше).

разнообразие-википедия

Моя иллюстрация

Давайте представим себе простую железную дорогу. Один путь, один поезд, никаких проблем. Поезд ходит туда-сюда целый день.

Давайте постепенно увеличивать сложность (C+) в ответ на постоянно растущие помехи (D+).

Д+: Поставьте второй поезд на тот же путь. Теперь начинаются проблемы, так как они мешают друг другу. В качестве решения нам нужно увеличить сложность системы.

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

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

С+: Давайте добавим стрелочный перевод, чтобы оба поезда могли разъехаться. Давайте скорректируем расписание.

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

  • часто имеют по крайней мере две дорожки в каждом направлении
  • наличие большого количества путей на определенных станциях или около них
  • предлагая разнообразные поезда
  • использование сигналов всех видов
  • предоставление множества различных видов железнодорожных переездов
  • наличие цифровых двойников того, «что происходит снаружи»
  • и т. д.

Упрощать, как это обычно делают экономические контролеры, и кто-то за это платит.(Тупик)

Изобретать, и получите и то, и другое: и проще, и сложнее.(Инновация)

Где последнее является резюме работы изобретателя(намерение) «Инновация как наука», Генрих Альтшуллер. (ТРИЗ, русский акроним, мой перевод по смыслу: практическая теория решения изобретательских ситуаций)

Что это означает для Latex и Typst?

Мы все знаем: LatexЯВЛЯЕТСЯ сложным. Или, по мнению Эшби: он справляется с большим количеством разнообразия/помех. Он созрел до высокого уровня набора... ивсе еще есть, см. здесь.

По своему развитию он Typstвсе еще находится в так называемом состоянии infancy state. Он начинался с определенной концепции в уме, предлагая пока ограниченное количество наборных результатов, и он будет развиваться дальше, как любая техническая система,

  • из противоречия(roadblock, trade-off: this EXOR that)
  • через решение(system change, exact solution: this AND that)
  • к противоречию (next roadblock).

Как многие отметили, TypstЭТО проще, и так и задумано. Что означает:

  • Typstменее сложен, чемLatex
  • Latexможет справиться с большим количеством помех/разнообразия/требований, чем Typstсейчас, и, возможно, будет делать это еще долгое время
  • Чтобы соответствовать разнообразию, предлагаемому Latex, Typstэкосистема (синтаксис, компиляторы, пакеты, библиотеки и т. д.) должна стать более сложной, должна быть способна поглощать больше требований/разнообразия

Поэтому в результате, вероятно, произойдет следующее:

  • будет легче найти Latex2Typstпереводчиков (избавляясь от многообразия)
  • будет сложно или почти невозможно найти Typst2Latexпереводчиков (добавление разнообразия/сложности)(в отличие от простого хранения в формате файла Latex)

Мои выводы и оценки (достигнутое будущее)

В ближайшем будущем я ожидаю Typstбыть и оставатьсяИэтАдругойМаркапЛanguage, при этом Latexбудет продолжаться поддержка набора текста...

Некоторые связи между ними (выше названные переводчиками) будут появляться и исчезать.

Может оказаться, что существует полезное (довольно большое) подмножество Typst, которое может быть поглощено (предоставлено) Latex.

Обратное, по крайней мере, сохранение сложности набора текста, вероятно, никогда не достигнет пригодного к использованию состояния.

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