有人把 LaTeX 视为学术写作的钢铁内核——强大、精细,但也笨重、令人头疼。Typst 出现的那一刻,像是把现代编程语言的清爽语法、即时预览和“可读性优先”心态,带到了排版领域。本文把 Typst 的核心设计、实战工作流、优缺点和迁移策略做成一套可操作的指南,帮助你判断:什么时候该试用 Typst、怎么上手、怎么把现有 LaTeX 工作流平滑过渡。(Typst[1])


为什么会有人想“替代” LaTeX?

LaTeX 的输出质量几乎是无人能及,但它的使用成本也同样显著:庞大的安装体量、多种引擎(pdflatex、xelatex、lualatex 等)带来的困惑、包冲突与宏展开的深层复杂性,尤其是当你需要做定制化时,常常要与“宏语言的怪异语义”搏斗很久。许多用户希望有一种更现代、更可读、更友好的替代方案。Typst 的出现,正是回应这种长期的痛点。(lwn.net[2])


Typst 是什么

Typst 是用 Rust 编写、Apache-2.0 许可的开源排版系统,目标是以更简洁的标记和更现代的语言特性,复现(并在易用性上超越)LaTeX 在技术文档排版上的核心能力。项目活跃,社区与代码快速增长,编译速度快且支持交互式“watch”式的增量编译体验。(GitHub[3])


先画出一个实战场景

想象你正在写一篇包含大量公式和表格的论文。你希望:

  • 编辑器里做改动后能即时看到渲染效果(不要每次都等待 10+ 秒),
  • 源文件易读,方便版本控制和同事审阅,
  • 数学录入不要像解密机器语言那样费劲,
  • 出现语法错误时能得到可理解的、定位明确的报错信息。

如果这些是你的刚需,Typst 的设计目标就是解决这些痛点(速度、错误信息可读性、语法友好性、内置编程能力)。(Typst[4])


核心卖点:为什么它“更友好”?

  1. 标记语法更简洁可读
    Typst 对正文采用类似 Markdown 的轻量语法,数学与函数式调用之间的切换也显得自然(例如 #let#underline() 等)。这让源文件在没有高亮的情况下也更容易阅读与审阅。示例(购物清单):

    = Shopping List
    
    == Vegetables
    
    - Broccoli
    - Asparagus (_fresh only_)
    - Plantains (_ripe and green_)
    
    == Booze
    
    - Rum
      - White
      - Dark
    - #underline[Good] gin
    

    语法既支持“快捷记号”也支持函数式调用,灵活度高。(Typst[5])

  2. 数学渲染保留 TeX 精髓
    Typst 在若干关键算法上沿用了 TeX 的优秀成果(例如 Knuth–Plass 的断行算法),数学呈现也与 TeX 家族非常接近——换句话说,输出质量不会让你失望。

  3. 内置、可编程、且语义清晰的 API
    Typst 的语言设计借鉴了现代语言(有人觉得像 Rust),函数多数是纯函数(无副作用),这减少了包之间因为隐藏状态相互影响导致的奇怪 bug,并让自定义样式变得更直观。

  4. 即时与增量编译体验
    typst watch 能在文件修改时快速增量编译并输出 PDF,和现代编辑器联动能获得几乎即时的预览反馈(结合能自动重载的 PDF 阅读器,例如 Sioyek,会很顺手)。(Typst[6])


快速上手(实用步骤)

下面是一个可靠的「第一天」工作流,都是可执行的命令。

1) 安装(最稳妥的方法)

去 GitHub Releases 或官网下载安装包(Linux/macOS/Windows 都有预编译版本)。示例(手动下载后):

# 假设你把 typst 可执行文件放到 /usr/local/bin 下
chmod +x typst
mv typst /usr/local/bin/
typst --version

查看最新发布可以参考官方仓库 Releases(例如 v0.13.1)。(GitHub[7])

2) 常用命令

# 列出系统可用字体
typst fonts

# 编译 typst 源文件到 PDF(默认)
typst compile paper.typ

# 监听并增量编译(开发时非常高效)
typst watch paper.typ

typst fonts 会扫描系统字体并列出可用选项;typst watch 给你接近即时的预览体验。(Typst[8])

3) 编辑器与工具链

  • 编辑器:任何文本编辑器都可用;Neovim 已有 Typst 的 Tree-sitter 支持,可获得语法高亮与导航。
  • 如果需要把 Typst 转回 LaTeX 或其他格式,可以用 Pandoc 做中介(Pandoc 对 Typst 的支持在演进中,参见 Pandoc 文档与相关扩展)。示例(思路):
# 典型转换路径:typst -> (pandoc 支持的中间格式) -> latex
# 具体命令会根据 pandoc 及 typst 工具链的版本而不同,请参阅 Pandoc / Typst 的最新说明
pandoc -s input.typ -t latex -o output.tex

关于 Pandoc 与 Typst 的集成与转换,参考 Pandoc 文档与相应的 Typst-Pandoc 项目。(pandoc.org[9])


典型工作范例(片段说明)

数学模式(Typst 用 $ 包围 math,与 LaTeX 类似,但语法更接近直觉):

$ integral_0^1 (arcsin x)^2 (dif x)/(x^2 sqrt(1-x^2)) = π ln 2 $

上面示例能直接写 Unicode 字符(比如 π),并且数学输入一般比 LaTeX 更简洁可读。实际渲染结果与 LaTeX 非常接近。


深入对比:哪里更好,哪里还差点意思

优势(总结)

  • 源码更可读:更少的反斜线与花括号,适合版本控制与代码审阅。
  • 更好的错误信息:定位清晰,不再像老式 TeX 那样“有问必答”的谜语式报错。
  • 内置编程与函数化 API:自定义样式和逻辑更直观,避免复杂宏展开。
  • 编译速度与增量体验:对大文档的交互式编辑更友好。(Typst[10])

局限与风险

  • 生态与包的广度:LaTeX 的包生态经过几十年建设,许多非常专业的宏包还没有等价物;虽然 Typst 生态在快速扩展(数百到上千个包),但某些小众需求仍需谨慎评估。(Typst[11])
  • 排版细节差异:Typst 的页面布局算法与 LaTeX 不完全相同。例如在处理 widows/orphans 或某些极细粒度排版调整时,LaTeX 目前仍占优势。
  • 期刊/出版兼容性:大多数期刊仍然以 LaTeX 为准,直接提交 Typst 源通常不可行——需要转换或旁路方案(例如 Pandoc 转换、先用 Typst 写稿再导出为 LaTeX)。这在投稿流程和审稿协作时需要额外考虑。(pandoc.org[12])
  • 文档与学习曲线:官方文档在快速迭代中存在组织不够理想的问题,新手可能需跳读不同板块来拼出完整知识路线。

迁移策略(如果你现在用 LaTeX)

  • 先在草稿阶段用 Typst:把 Typst 作为“写作与试验”工具,利用快速预览加快写作速度;在需要投稿或严格格式时,再转回 LaTeX。LWN 的实测者就采取了类似方法:用 Typst 编写并通过 Pandoc 转为 LaTeX。(pandoc.org[13])
  • 模块化迁移:先把文档的非关键部分(正文、简单公式、图表)迁入 Typst,复杂的自定义排版或期刊模板保留在 LaTeX。
  • 建立转换测试套件:对关键文档写一组小样本(公式、表格、跨页大表),用 Pandoc 或其他工具做往返测试,确保最终输出可控。(pandoc.org[14])

常见问题(FAQ)

Q:Typst 能完全替代 LaTeX 吗?
A:目前来看,Typst 在很多常见写作场景下已经足够好,尤其适合需要快速交互与更可读源文件的情形。但在极其依赖 LaTeX 专业宏包或期刊模板的场景下,仍需要保留 LaTeX 路径或使用转换工具。(Typst[15])

Q:我如何把 Typst 文档提交到只接受 LaTeX 的期刊?
A:可使用 Pandoc 或社区工具把 Typst 输出转换为 LaTeX,再按照期刊模板调整生成的 LaTeX 文件;不过转换并非万无一失,需做充分测试。(pandoc.org[16])

Q:Typst 的文档与社区资源够用吗?
A:核心教程与参考存在,社区在快速成长。官方文档有 Tutorial/Reference/Guides 分区,但内容更新速度快,有时需从论坛、示例仓库和社区讨论中补充。(Typst[17])


小结与建议

  • 如果你讨厌 LaTeX 的“繁复输入+慢编译”的工作流,值得在新项目或草稿阶段试试 Typst;通过 typst watch 享受即时反馈,然后再按需导出。(Typst[18])
  • 对于投稿到严格期刊、或依赖高度定制化宏包的长文档,建议采取混合策略:在 Typst 中撰写、在必要时用 Pandoc 等工具转换回 LaTeX,并设置完整的回归测试。(pandoc.org[19])
  • 关注官方仓库 Releases 与社区插件(目前项目版本活跃,社区贡献与发布节奏迅速)。阅读官方 Tutorial 和 Reference,是快速上手的捷径。(GitHub[20])

愿景性一句话:Typst 并非要一夜之间“干掉” LaTeX,而是把现代软件工程的可读性、交互体验和可编程性带入排版领域——它已经足够成熟,让真正厌倦了 LaTeX 低效反馈环的作者,开始认真考虑把写作体验换个“更舒服的皮肤”。(Typst[21])


参考文献与延伸阅读

  • Typst 官网与文档(教程 / 参考 / Guides)。(Typst[22])
  • Typst 源码与 Releases(GitHub)。最新版本与 Release notes 推荐关注。(GitHub[23])
  • LWN 深度评测文章(对比 LaTeX 的优势/劣势与实际体验的案例)。(lwn.net[24])
  • Pandoc 与 Typst 转换相关说明(Pandoc 文档 / Typst-Pandoc 社区项目)。(pandoc.org[25])

参考资料

[1]

Typst: The new foundation for documents: undefined

 

[2]

Typst: a possible LaTeX replacement: undefined

 

[3]

typst/typst: A new markup-based typesetting system that is …: undefined

 

[4]

Open Source – the Typst compiler: undefined

 

[5]

Tutorial – Typst Documentation: undefined

 

[6]

Open Source – the Typst compiler: undefined

 

[7]

Releases · typst/typst: undefined

 

[8]

Open Source – the Typst compiler: undefined

 

[9]

Typst property output: undefined

 

[10]

Open Source – the Typst compiler: undefined

 

[11]

Typst: The new foundation for documents: undefined

 

[12]

Typst property output: undefined

 

[13]

Typst property output: undefined

 

[14]

Typst property output: undefined

 

[15]

Typst: The new foundation for documents: undefined

 

[16]

Typst property output: undefined

 

[17]

Typst Documentation: undefined

 

[18]

Open Source – the Typst compiler: undefined

 

[19]

Typst property output: undefined

 

[20]

Releases · typst/typst: undefined

 

[21]

Typst: The new foundation for documents: undefined

 

[22]

Typst: The new foundation for documents: undefined

 

[23]

typst/typst: A new markup-based typesetting system that is …: undefined

 

[24]

Typst: a possible LaTeX replacement: undefined

 

[25]

Typst property output: undefined