Typst,这款近年来凭借简洁语法和极速编译速度迅速在学术圈与技术写作社区掀起波澜的开源排版系统,于2026年6月15日正式推出了其迄今为止规模最大的版本更新——0.15.0。这次更新并非小修小补,而是在字体支持、多文件导出、HTML 渲染、文献管理等多个核心维度实现了质的飞跃。对于那些长期在 LaTeX 的复杂配置与 Word 的排版局限之间左右为难的用户来说,Typst 0.15 或许正是他们期待已久的那个答案。
一、可变字体支持:一份字体文件,无限排版可能
如果说 Typst 0.15 有哪项更新最能让字体爱好者和设计师眼前一亮,那毫无疑问是「可变字体(Variable Fonts)的原生支持」。
传统排版系统中,一个字体家族往往需要多个独立文件:常规体、粗体、斜体、粗斜体,有时还要加上各种字重变体,动辄十几个文件。而可变字体彻底改变了这一局面——它将字体的多种变化维度(字重、字宽、倾斜度、光学尺寸等)编码为连续的参数轴,仅用一个文件便能覆盖整个设计空间。
Typst 0.15 对此提供了完整支持。系统会自动根据文本的 weight、stretch、style、size 参数映射到字体的标准变化轴(wght、wdth、ital、slnt、opsz),用户无需手动配置即可获得精准的字体渲染效果。对于有特殊需求的用户,新增的 variations 参数还支持自定义轴的调节,例如控制某些艺术字体特有的「柔软度」轴:
#set text(font: "Fraunces", size: 50pt)
#text(variations: (SOFT: 0))[Soft / #underline[Rigid]]
#text(variations: (SOFT: 100))[#underline[Soft] / Rigid]
不仅如此,Typst 还对可变字体的命名规则做了统一处理——自动去除字体家族名称末尾的「Variable」「Var」「VF」等后缀,使静态字体和可变字体在调用时拥有相同的名称,开发者无需因版本不同而维护两套配置。
与之配套的是工具链层面的同步升级:typst fonts --variants 命令现在能够展示每款字体的完整变化轴信息,包括轴的范围与默认值;Web 应用的自动补全与悬浮提示也得到了大幅改进,方便用户实时探索字体的设计空间。值得一提的是,Typst 官方已为 Web 应用中所有提供可变版本的字体完成了升级,使用 0.15 版本的项目将自动启用可变字体,而旧版本则继续使用静态版本,做到向后兼容。
二、HTML 导出大跃进:MathML 与多文件 Bundle 双线并进
Typst 最初只是一个面向 PDF 输出的排版系统,但其团队对 Web 发布的野心从未停歇。0.15 版本在 HTML 导出方向上同时落地了两项重量级功能,标志着 Typst 向「一源多发」目标迈出了关键一步。
MathML:让数学公式真正「活」在网页里
此前,Typst 的 HTML 导出对数学公式几乎是无能为力的——导出结果会直接忽略公式,社区流传的变通方案是用 html.frame 将公式渲染为 SVG 图片嵌入页面。这个方案能用,但代价惨重:公式文字无法被选中,屏幕阅读器看不懂,搜索引擎也无从索引。
Typst 0.15 为此引入了「MathML 原生支持」。MathML 是 W3C 标准的数学标记语言,主流浏览器均已实现渲染支持。通过 MathML 导出的公式不仅视觉上清晰准确,还保留了完整的语义结构:文字可选中、可复制,屏幕阅读器能够朗读,也对搜索引擎友好。对于需要兼顾无障碍访问与学术严谨性的文档来说,这一改进的意义不可低估。
当然,MathML 在不同浏览器间的渲染一致性仍存在细微差异。对于追求像素级视觉精度的场景,SVG 渲染路径依然保留。但对于大多数用户,官方明确建议优先采用 MathML 输出。
Bundle 导出:从单一 PDF 到完整网站
另一项改变更具架构意义。过去,无论是 PDF、PNG、SVG 还是早期的 HTML,Typst 每次编译都只能输出单个文件。多页网站的发布需要借助外部脚本拼接,极不方便。
0.15 引入的「实验性 Bundle 导出」彻底打破了这一限制。其核心设计思路颇具美感:原有的 document 元素被赋予了新的职责,可以作为独立的输出单元构造多个文档;新增的 asset 元素则允许将任意字节数据(如 robots.txt、JSON 文件、图片资源)直接写入输出目录。
#document("index.html", title: [Home])[
#title()
#link(<blog>)[Go to blog]
]
#document("blog.html", title: [Blog])[
#title()
Welcome to my blog!
] <blog>
#asset("robots.txt", "Disallow: *")
每个 document 根据其路径扩展名自动选择导出格式,支持 PDF、PNG、SVG 和 HTML。这意味着你可以用同一个 Typst 项目同时输出一个 HTML 网站、一份 PDF 报告,以及若干配套资源文件——全部由单次编译完成。
值得关注的是,Typst 官方文档系统本身已率先迁移至这套架构,typst.app/docs 的全部内容现在都由 Typst 的 Bundle 与 HTML 导出功能生成。官方不仅是功能的提供者,更是第一批重度用户,这本身就是对该特性成熟度的有力背书。
目前 Bundle 导出仍处于实验阶段,需要通过 --features bundle 标志或环境变量显式启用,Web 应用尚不支持。但考虑到其背后的技术完成度,正式毕业或许不会太远。
三、文献管理与 PDF 标准:学术用户的双重礼包
Typst 的目标用户群中,学术研究者占据重要比例。0.15 版本针对这一群体带来了两项期待已久的改进。
多文献列表:终于不再是单一的「参考文献」
在 GitHub 的需求追踪中,多文献列表支持长期高居榜首,拥有超过 90 个点赞。虽然社区已自发创建了 alexandria 和 pergamon 两个第三方包来填补空缺,但原生支持的缺失始终是一个遗憾。
Typst 0.15 正式将此纳入标准库。现在,一个文档中可以包含多个 bibliography 元素,系统会自动将引用分配给最近的匹配文献列表。这套默认规则覆盖了最常见的两种场景:
「按章节分列参考文献」:在每章末尾放置 bibliography 元素,引用自动就近归属,天然适配论文、书籍等长文档结构。
「按主题分列参考文献」:将不同主题的文献分入不同的 .bib 或 .yaml 文件,各自配置对应的 bibliography,Typst 会根据引用键自动路由。
新增的 target 参数支持用户编写选择器,精确控制每个文献列表收录哪些引用;group 参数则控制跨文献列表的编号共享方式。对于信息框、注释框等需要独立文献列表的高度定制场景,这套机制提供了足够的灵活性。
多 PDF 标准并行:长期归档与无障碍访问兼得
PDF 领域存在多个面向不同用途的规范子集:PDF/A 系列面向长期存档,强调字体嵌入和色彩空间的自给自足;PDF/UA 面向无障碍访问,要求完整的结构标签和可访问元数据。
此前,Typst 已分别支持这两类标准,但无法在同一导出中同时满足两者。0.15 解除了这一限制,用户现在可以一次性生成同时符合 PDF/A-2a(适合长期存档)和 PDF/UA-1(满足无障碍要求)的文件。对于受合规约束的政府文件、学术出版物,或是需要在图书馆长期保存的报告而言,这是实质性的进步。
四、布局引擎深度打磨:细节决定品质
大版本更新往往伴随着大量难以一言道尽的底层改进。Typst 0.15 在布局引擎层面进行了系统性的整修,虽然单项改动看似细碎,累积起来却对文档质量产生了可感知的提升。
「基线保留的全面推广」是此次最具影响力的底层变化之一。过去,Typst 在盒子(box)、列表项、行内公式等元素内部的基线信息往往会丢失,导致这些元素与周围文字的对齐出现偏差。0.15 在布局引擎的更多环节中保留并传递基线信息,使得带内边距的盒子、行内公式、列表项目符号都能与周围文字精准对齐。这是一个静默的改进——用户可能说不清楚哪里变了,只是隐约感觉「排版更漂亮了」。
「布局收敛诊断」是另一项对高级用户极具价值的改进。Typst 通过多轮编译解决文档内部的自我依赖问题(如目录页码与正文页码的相互影响),但当文档陷入无法收敛的循环时,之前只会输出一句干巴巴的「layout did not converge in five attempts」,让开发者抓耳挠腮。0.15 为此提供了详细的诊断信息,精确指出是哪个查询或元素计数在每轮编译中不断变化,并附上每轮的观测值,大幅缩短了调试时间。
列表排版的两个长期存在的 Bug 也在此版本中得到修复:列表标记符的对齐方式现在可通过新增的 list.marker-align 属性配置,默认采用基线对齐,视觉效果更自然;列表内容的居中行为也改为基于完整可用宽度计算,而非此前错误地基于列表内容本身的最大宽度。
此外,新增的 within 选择器为内省(introspection)操作提供了作用域限制能力,可以将计数器、引用等的查询范围限定在特定祖先元素之内,在多文档 Bundle 场景中尤为实用。
五、生态成熟的信号:从工具到平台
回顾 Typst 的发展轨迹,0.15 版本的意义不仅在于功能清单的长度,更在于它释放出的若干信号:这个项目正在从「好用的工具」演化为「可信赖的平台」。
「文档系统的自举」是最有力的例证。Typst 团队花费整个发布周期将官方文档迁移至 Typst 自身生成,并同步发布了可打印的 PDF 版本。这既是对 Bundle 导出与 HTML 导出成熟度的实际验证,也展现了「一源发布到网页和印刷品」的核心理念在真实大型项目中的可行性。
「迁移工具与兼容性投入」同样值得关注。此版本首次随 Changelog 附上了完整的迁移指南,逐条列出破坏性变更及对应的修改建议;编译器层面也强化了弃用警告机制,提前告知用户即将在下一版本变更的行为,给予充分的过渡期。这种对开发者体验的细心呵护,是一个项目走向成熟的典型标志。
「最小 Rust 版本提升至 1.92」,typst-kit crate 的全面重构,以及 Nix flake 迁移至社区维护仓库,也都在向外部贡献者传递一个信号:Typst 的工程基础设施正在朝着更开放、更可持续的方向演进。
CLI 方面,新的 typst eval 子命令取代了旧有的 typst query,提供更通用的表达式求值能力;--pretty 标志统一控制 HTML、SVG 和 PDF 的人类可读输出;字体发现延迟化(lazy)处理则让不需要字体的操作(如纯 HTML 导出)速度更快。这些都是不起眼却在日常使用中持续累积价值的改进。
Typst 0.15 的发布,不会让 LaTeX 在一夜之间失去它数十年积累的生态地位,这也从未是 Typst 的承诺。但对于那些正在寻找现代化排版工具的研究者、技术写作者和开发者来说,0.15 带来的每一项改进都在缩小那道鸿沟。可变字体让排版更精美,Bundle 导出让发布更灵活,多文献支持让学术写作更顺畅,而这一切都运行在一个编译速度以毫秒计、语法以人类可读为设计原则的现代系统之上。