Сравнение: опыт использования typst и LaTeX
Недавно я наткнулся на пост на Reddit, где обсуждались сложности работы с таблицами в LaTeX. Я ответил примерно так: да, таблицы в LaTeX могут быть проблемой, но я решил эту задачу, используя typst для их создания, компиляции и вставки в LaTeX. Это просто, удобно и избавляет от многих трудностей.
Это натолкнуло меня на мысль сравнить typst и LaTeX в целом. Я активно использую оба инструмента на протяжении длительного времени и хочу поделиться своим опытом как пользователь, не углубляясь в технические детали их внутренней реализации.
Скорость
Одно из первых заметных отличий между LaTeX и typst — скорость работы. LaTeX может компилировать документы несколько секунд, особенно если они сложные или содержат множество пакетов. В то же время typst выполняет компиляцию за миллисекунды. Это позволяет использовать live preview, где вы сразу видите результат своих изменений в PDF-файле. В LaTeX такая возможность отсутствует без дополнительных инструментов.
Вот результаты простого теста, где в обоих случаях документ содержит лишь "Hello, world":
pdflatex:
Executed in 197.56 millis fish external
usr time 134.26 millis 0.00 micros 134.26 millis
sys time 16.57 millis 594.00 micros 15.98 millis
typst:
Executed in 126.37 millis fish external
usr time 52.09 millis 160.00 micros 51.93 millis
sys time 31.35 millis 155.00 micros 31.20 millis
Кроме того, typst не создает дополнительных файлов при компиляции, в отличие от LaTeX, который генерирует множество вспомогательных файлов (.aux
, .log
, .toc
и т.д.). В typst вы получаете сразу готовый PDF-файл без необходимости очищать рабочую директорию.
Простота использования и функциональность из-под коробки
typst стремится предоставить широкий набор функций без необходимости подключения дополнительных пакетов. В LaTeX же для многих задач требуется устанавливать и подключать пакеты:
Русский язык: В LaTeX необходимо использовать пакеты
babel
с опциейrussian
илиpolyglossia
, а также обеспечить поддержку Unicode с помощьюinputenc
.Смена шрифта: Для использования разных шрифтов часто требуется переключиться на XeLaTeX или LuaLaTeX и подключать пакеты вроде
fontspec
.Математические символы: Для расширенного набора математических символов обычно подключаются пакеты
amsmath
,amssymb
,mathtools
и др.Работа с таблицами: Сложные таблицы требуют использования пакетов
array
,booktabs
,tabularx
и т.д.
В typst многие из этих возможностей доступны сразу без дополнительной настройки. Я опускаю и тот момент, что в LaTeX есть, как минимум, целых 3 компилятора, и не каждый подойдет для любой ситуации. Например, использование эмодзи:
typst:
? Привет, мир!
LaTeX:
\documentclass[12pt]{article}
\usepackage{emoji}
\begin{document}
These are colour emojis using the \texttt{emoji} package and LuaLaTeX:
\emoji{leaves}
\emoji{rose}
You can use emoji-modifiers:
\emoji{woman-health-worker-medium-skin-tone}
\emoji{family-man-woman-girl-boy}
\emoji{flag-malaysia}
\emoji{flag-united-kingdom}
\end{document}
Последнее необходимо компилировать с LuaTeX. Как видите, в typst мне не нужны никакие классы документов, окружение document
и прочее.
Синтаксис же typst напоминает Markdown, но обладает большей выразительностью. Некоторые примеры:
-
Жирный текст:
typst:
текст*
LaTeX:
\textbf{текст}
-
Заголовки:
typst:
= Заголовок уровня 1
LaTeX:
\section{Заголовок уровня 1}
-
Математические формулы:
В typst инлайн-формулы и отдельные формулы оформляются одинаково просто, используя
$...$
.В LaTeX для инлайн используется
$...$
, для отдельных формул —\[...\]
,$$...$$
, или окруженияequation
,align
и т.д.
Пример математики в typst:
$ lim_(x -> c)f(x) equiv forall epsilon exists delta: 0 < abs(x - c) < delta => abs(f(x) - L) < epsilon $
Аналогичный пример в LaTeX:
\begin{align}
\lim_{x\to c} f(x) = L \equiv \forall \epsilon \exists \delta: 0 < \vert x - c \vert < \delta \Rightarrow \vert f(x) - L \vert < \epsilon
\end{align}
Однако для более сложных математических конструкций в LaTeX часто требуются дополнительные пакеты и окружения.
Работа с ошибками и отладка
Ошибки в LaTeX часто могут быть трудными для понимания и исправления, особенно для начинающих пользователей. Сообщения об ошибках могут быть неинформативными, и поиск решения требует обращения к сообществу или документации, которая не всегда удобна для быстрого поиска. В книгах по LaTeX этому посвящены разделы, а на Overleaf есть отдельная статья об ошибках в LaTeX, тут по большей части без комментариев.
typst предоставляет понятные сообщения об ошибках, указывая на конкретное место и причину проблемы:
Это значительно ускоряет процесс отладки и исправления.
Документация
Документация typst хорошо структурирована и оснащена удобным поиском. Это облегчает освоение инструмента и решение возникающих вопросов. В случае с LaTeX, документация может быть менее интуитивной, и пользователи часто обращаются к сторонним ресурсам, руководствам или сообществу для получения помощи.
Более того, вам не нужно читать книги, чтобы изучить typst. Если спросите, с чего бы начать изучать LaTeX, то в русскоязычном поле вам кто-то да подскажет почитать книжку Львовского. Она на 400 страниц. А есть книги по LaTeX и на 700 страниц. Есть документации по отдельным пакетам более чем на тысячу страниц. В typst такого нет: вам действительно с головой хватит доступной документации, которая не слишком объемна, но информативна и понятна. Во всяком случае, если даже не хватит её, то typst имеет отзывчивое сообщество, как в ру сегменте, так и официальный дискорд-канал и отдельный форум.
Размер
typst весит немного, а texlive в full-scheme весит уж точно немало: от 8гб. Да, кто-то скажет, что есть MikTeX, и вообще full -- не единственная схема; но, во-первых, не знаешь, какой именно пакет тебе понадобится -- я полагаю, что многие ставят именно полную схему texlive (в общем-то я и сам ставлю только её). Во-вторых, как мне кажется, MikTeX менее распространен, чем texlive. Да и плюсом, компилируя через MikTeX текст с русским я получал неожиданное поведение в виде слетевшей кодировки. Пакет (опять) cmap
исправлял это, но все же: вроде поставляется LaTeX что там, что тут -- но они точно не работают во всем одинаково, что, опять же, вызывает неудобства в сравнение с typst, который поставляется в единственном образе.
Заключение
В основном я старался выделить преимущества typst в данном сравнении, как вы могли заметить. Мне действительно трудно найти преимущества у LaTeX; пожалуй, на руку ему играет во многом время: typst относительно молод, и у него нет такой базы пакетов, как в LaTeX на каждый случай жизни, хотя они, безусловно, появляются: есть пакеты на упрощение работы с теоремами и их нумерацией, нумерацией уравнения, пакет для рисования CeTZ (аналог TikZ); нет такой же развитой базы ответов и вопросов; журналы предлагают шаблоны преимущественно на LaTeX (и будут еще долго этим заниматься) и прочее. В конце концов, есть и внутренние моменты: например, в typst пока что недоработано поведение красной строки, нельзя обтекать фигуры текстом и т.д. Один раз он меня подвел еще и тем, что сделанная в нем презентация не хотела отображать нормально формулы, когда я уже выступал на публике. В общем, typst-у предстоит исправить свои недочеты относительно LaTeX; но продвигаемый им подход к тому, какой может быть типографическая система, -- это очень большой шаг в прогрессе относительно LaTeX.
Комментарии (16)
roqin
05.12.2024 10:17Меня таблицы в ТеХе тоже выбешивают, прочитав первый абзац я обрадовался, но в дальнейшем никаких примеров с использованием таблиц не увидел. Хотелось бы поглядеть именно на них.
Imaginarium
05.12.2024 10:17О, очередной убийца 'а и снова typst)
Вообще я рад. Людям, которым нужно простое нет смысла заниматься изучением сложных инструментов, но каждый раз смешно читать, как эти люди экстраполируют удобство в своих задачах на всех остальных людей и их задачи))) Судя по тексту, автор просто ничего сложного никогда делал ни там, ни там) (таблицы в надо просто надо уметь готовить)
Не надо путать универсальную систему верстки для сложных технических текстов (в первую очередь) с очередным маркдауном, это сопоставление теплого с мягким.
AlexKev Автор
05.12.2024 10:17Какой раз слышу о том, что в LaTeX есть что-то, что позволяет делать нечто "сложное", а вот в других системах такого не добьешься. Можете привести хотя бы пару примеров такого "сложного"? И да, typst используется: в шоукейсах в их офф. дискорд сервере можете посмотреть немало выпускных работ, написанных на typst. Подобные истории есть в ру тг чате по typst.
Также занимался переводом Logic Primer, MIT, за авторством C. Allen, M. Hand. Шаблон там используется следующий: слева -- какие-то понятия логические, а справа -- уже полные пояснения к ним с примерами (см. пик). У меня и мысли не было делать подобное в Латехе, а на составление точь-в-точь такого же шаблона на тайпст у меня заняло менее 15 минут, и получился ровно такой же темплейт с точностью до расположения элементовUpd.: и да, учитывайте, что typst активно развивается. Ранние версии не содержали многое из того, что есть сейчас; например, до 0.10, насколько я помню, не было поддержки работы с библиографией. А сейчас она есть. Какие принципиальные ограничения Вы видите у typst? Я вот никаких; практически нет сомнений, что в ближайшем будущем typst станет куда более лучшей системой, чем LaTeX
Imaginarium
05.12.2024 10:17Можете привести хотя бы пару примеров такого "сложного"?
нативный PostScript, поддержка MetaPost?.. Возможностей настолько много, что я даже не знаю, с чего начать. Ну, хотя бы с автоматического правильного выбора размера обыкновенных дробей в тексте... Что такое темплейт не знаю, но когда в typst можно будет сделать полную предпечатную подготовку книги по теории категорий с диаграммами (или вот что-то такое, например), вот тогда и поговорим. Пока что я вижу только, что в мире розовых пони нет ничего страшнее розовых пони)
У меня и мысли не было делать подобное в Латехе
Ну, а у меня -- наоборот. И получилось бы классно и гибко. Вы, кажется, критикуете людей, которые умеют пользоваться 'ом за то, что Вы им самим пользоваться не умеете)))
Дальше Ваши унылые обещания великого будущего
очередного csstypst читать стало лень, извините) Вы упорно показываете мне какие-то выравнивания столбцов в таблицах, я рад, что у Вас получаются курсовые, но я о другом, и -- тоже. Удачи.AlexKev Автор
05.12.2024 10:17PS используется где? В последний раз я его видел только в НМУ в курсах 10+ летней давности, скачивая листочки; к метапосту те же вопросы
Написать книгу по теоркату в typst? Я не вижу в этом никаких препятствий. Диаграммы тоже рисовать можно. С размерами дробей проблем не встречал. И что вместо indesign можно использовать латех -- ну, спасибо за открытие. Только вместо латеха теперь можно использовать тайпст.
Унылы только Ваши месседжи, обделенные аргументацией, и уровень компетенции к тому же понятен. Как будете регулярно читать тот же arXiv, например, серьезные технические текста и журналы (неймдропить сложными областями, типа теорката, интуиционисткой теорией типов, полиморфные лябмда-счисления и пр., я тоже могу, но вот кто из нас в них разбирается уже вопрос, конечно :) и немного будете понимать о чем тайпст, переставая его сравнивать с md, тогда и пишите то, что думаете о том и о сем. А пока что вердикт достаточно однозначен: в типовых задачах, по типу написать дипломную или статейку в arXiv, тайпст -- однозначно замена LaTeX. Последний, как я уже описал выше, может удержать позицию ввиду того, что теймплейты на тайпст не появляются достаточно быстро, что касается как архива, так и прочих ресурсов, в то время как на латехе они есть. Удачи.Imaginarium
05.12.2024 10:17Ваши слова ничего не говорят обо мне, но очень много -- о Вас)) пока что Ваш главный навык -- это хамский переход на личности) Не знаю, чему и где Вас учили -- но только не вести себя на людях)
AlexKev Автор
05.12.2024 10:17Не знаю, где там был переход на личность, но, впрочем, по существу я все ещё ничего не увидел. Диаграммы воспроизводимы, типично техническая работа на тайпст может быть написана без проблем, дроби в инлайн тоже есть.
Опять же, советую хоть немного изучить вопрос, потом отписать свои мысли. Пока что вижу только обратное
winorun
05.12.2024 10:17Я тоже скептически относился к программе, но оказалось,что typst не язык разметки это именно аналог latex. Вы можете добавлять свои команды, логику и имеется прекрасный способ обрабатывать как tsv, json так и произвольный текстовый файл.
Есть функции рисования примитивов линий, прямоугольников. И многое другое.
Так что как минимум рекомендую ознакомится. Лично для меня оказался намного удобней как latex, так и ascidoctor для составления документаций, написания всяких документов(заявления на отпуск и прочее), конспектов.
При этом до latex программе несколько далековато. Хотя это разрыв и уменьшается. Как пример до сих пор нет обтекания картинки текстом. Есть только костыль на эту тему. С формулами тоже не совсем всё хорошо. Например A_{x1} в latex отражается. А в typst приходится делать А_х_1. Всё хочу дописать две статьи : одна по созданию ежедневника генерируемого программой, а вторая как я заменил word на typst и как в него занести данные из внешних файлов и sql запросов.
Arastas
05.12.2024 10:17Ой. А если у меня в нижнем индексе сложное выражение со своими индексами и матрицами, то как быть?
AlexKev Автор
05.12.2024 10:17Довольно просто:
$A_(mat( x + y, x + z, ..., x + n; y + y, y + z, ..., y + n; dots.v, dots.v, dots.down, dots.v; n + y, n + z, ..., n + n; )_"матрица A" + mat( 1, 2, ..., 10; 2, 2, ..., 10; dots.v, dots.v, dots.down, dots.v; 10, 10, ..., 10; )_"матрица D" = B)$
khgvghv
05.12.2024 10:17Эт вы правильно решили не повторять прошлогоднюю ошибку и запостили статью от нового пользователя..
Arastas
Кажется, что удобство за счёт упрощения. Должно хорошо закрыть потребности тех, кому что-то простое набрать, но может быть недостаточным для тех, кто хочет что-то посложнее. Например
Окружения aligned, gathered и тому подобные по разному выравнивают формулы. Если от этого отказаться, то теряется гибкость.