%20%D1%80%D0%B0%D0%B7%D0%BD%D0%BE%D0%BE%D0%B1%D1%80%D0%B0%D0%B7%D0%B8%D0%B5%20(%D1%81%D0%BB%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D1%8C).png)
В последнее время я все больше беспокоюсь о том, что 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, нелегко придумать компилятор, который подбирает команды и параметры из моря букв вокруг него.
Можно ли это улучшить? Да! Области, которые, по моему мнению, можно улучшить:
- Автоматическая замена глифов, отсутствующих в шрифтах, подобно тому, что делают веб-браузеры и IDE. В настоящее время это можно сделать с помощью LuaTeX/LuaLaTeX с резервными шрифтами, но это становится мучительно медленным.
- Программируемые процедуры вывода. Значения по умолчанию должны быть встроены в сам движок TeX.
- Многие проблемы с конфликтами в пакетах возникают из-за
hyperef
. Необходимо разработать новый механизм, позволяющий авторам использовать ссылки проще, а не зависеть от пакета. Базовые классы можно модифицировать, чтобы включить это, поэтому нет необходимости в hyperref для переопределения всех команд секционирования и ссылок. Включите это в формат. - Обработка индийских и восточноазиатских документов может быть улучшена путем содействия haffbuz и LuaTeX. Не должно быть необходимости загружать пакет для смены языка.
- Создание виртуальных шрифтов может быть улучшено.
Всем тем, кто пробует и разрабатывает разные системы, спасибо, конкуренция — это хорошо, желаю вам удачи. На днях я просматривал статистику и заметил, что между 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
.
Обратное, по крайней мере, сохранение сложности набора текста, вероятно, никогда не достигнет пригодного к использованию состояния.