Автор обновил свой старый workflow для вёрстки статей из Markdown в PDF с помощью Pandoc и Typst. Год назад он сделал шаблон под Typst версии 0.11, но с тех пор оба инструмента обновились: Typst дорос до 0.13, а Pandoc — до 3.6.4. Старые шаблоны перестали работать — Pandoc изменил собственную логику вызова, а в Typst начиная с версии 0.12 произошли крупные изменения.
Новое решение построено иначе. Шаблон теперь использует стандартный Typst-шаблон, написанный именно для Typst, а не для Pandoc. Выглядит это так: pandoc file.md -o file.pdf -V template=article.typ --pdf-engine=typst. Ключ -V передаёт переменную в Pandoc, который в своём шаблоне template.typst отслеживает её и подгружает нужный Typst-шаблон. Это разделяет логику двух программ и, как надеется автор, сделает систему устойчивее к будущим обновлениям.
Сам шаблон собирает всю метадату из Markdown-файла (заголовок, автор, дата). Внутри он делает довольно много: преобразует многосоставную метадату (например, имена авторов с email) в строковый вид, задаёт конфигурацию страницы (размер, шрифт, нумерацию), настраивает колонтитулы для чётных и нечётных страниц (можно отключить, если двусторонняя печать не нужна). Включает поддержку OpenType-опций: лигатур, старых цифр и так далее.
Отдельно прописаны стили для цитат, блоков кода, изображений с подписями и сносок. Настроены три уровня заголовков — автор намеренно сделал их чуть навороченнее базовых, чтобы показать возможности Typst и упростить последующую кастомизацию. Работает и разметка особых секций через Pandoc-синтаксис с ::: #epigraph и ::: #refs — для эпиграфов и списка литературы им заданы отдельные стили (например, висячий отступ для ссылок). Есть и стилизация отдельных текстовых фрагментов — например, дата с «CE» будет отображаться капителью, а также обрабатываются URL.
В конце шаблон выводит титульный блок с заголовком, авторами, датой и абстрактом, отделённый от основного текста линией. Для основного текста включены выравнивание по ширине и отступ первой строки. Завершает всё небольшой колофон с упоминанием Typst и Pandoc.
По сути, функциональность та же, что и год назад, но код проще и чище — отчасти потому, что сам Typst стал умнее, отчасти потому, что автор лучше разобрался в документации.