开源排版工具 Typst 推出了备受期待的 0.12 版本。本次更新不仅带来了多项重磅功能,涵盖布局、PDF 输出和性能优化,还对软件的底层架构进行了深入改进。Typst 0.12 版本的发布标志着该排版工具的进一步成熟,也让开发者和文档创作者们能够以更高效的方式处理复杂的排版任务。
持续创新的 Typst
自 2019 年推出以来,Typst 一直致力于打造一个从最简单到最复杂文档都能胜任的排版引擎。Typst 不仅继承了 LaTeX 等排版系统的优点,还融入了许多全新的设计理念,为用户提供了更直观且灵活的操作方式。本次发布的 Typst 0.12 版本是历时六个月的开发成果,它大幅优化了布局和排版性能,同时对 PDF 输出格式进行了改进,展示了 Typst 不断进步的实力。
Typst 0.12 的更新并不只局限于表面功能的提升。开发团队进行了大量底层重构,为未来的功能扩展和改进奠定了坚实的基础。值得注意的是,Typst 未来计划支持 HTML 输出、更加易访问的 PDF 以及更强大的布局能力,Typst 0.12 已经为这些功能打下了必要的基础。
强大的新布局功能
在 Typst 0.12 中,布局系统的最大亮点是支持跨多栏的浮动图形。通过为 figure
或其他浮动元素指定 scope: "parent"
,用户可以轻松将图形跨越多栏布局。这项功能对于报表、论文以及其他需要复杂排版的文档极为实用。为实现这一功能,Typst 团队对布局引擎进行了全面重构,而不仅仅是采用简单的补丁式改进。这样做的好处在于,不仅仅是多栏浮动图形受益,还修复了孤行标题和脚注定位等问题,并为将来可能推出的侧边浮动图形、图形绕排文本等功能奠定了基础。
#set page(columns: 2)
#set columns(gutter: 15pt)
#set par(justify: true)
#place(
top + center,
float: true,
scope: "parent",
text(13pt)[*关于矩形的论述*]
)
#figure(
placement: bottom,
scope: "parent",
rect(width: 70%),
caption: [一个标准矩形],
)
矩形因其多功能性、简单性和实用性,通常被认为是优越的形状。它们的四个直角和直边使它们易于堆叠、排列和排布...
同时,Typst 0.12 还新增了另一项备受用户期待的功能——自动行号。在学术论文或法律文档中,行号是一个极为实用的工具,尤其是在需要精确定位段落时。Typst 现在支持为文档中的任意文本添加行号,用户可以根据具体需要,灵活控制文档的不同部分是否显示行号。
#set par.line(numbering: "1")
行号非常有用,特别是在需要审阅文档时。它们能让审稿人明确指出某个问题的确切位置...
这项功能对于文档审阅、校对和协作工作极为有益。此外,Typst 的行号功能可以灵活开启或禁用,甚至可以在深度嵌套的结构中使用行号。
更优质的 PDF 输出
Typst 0.12 在 PDF 输出上也进行了重要改进。首先是PDF 文件体积显著缩减。过去,PDF 文件会将字体嵌入文档中,而嵌入的字体体积较大。Typst 0.12 通过改进字体子集化技术,只保留文档中实际使用的字体字形,显著减少了 PDF 文件的大小。尤其是在使用 .otf
字体时,文件体积的减小尤为显著。
其次,Typst 0.12 还解决了一个长期存在的问题:PDF 中的 Emoji 显示。由于 PDF 格式的历史原因,它并不原生支持 Emoji 字体。Typst 通过模拟多种标准,成功实现了 Emoji 的正确渲染,使文档输出更加现代化和多样化。
此外,Typst 0.12 还新增了对PDF/A-2b 标准的支持。PDF/A 是一种专门用于长久保存的 PDF 标准,许多机构要求文档必须符合该标准。Typst 通过在 Web 界面中增加 PDF/A 选项,以及通过命令行参数 --pdf-standard a-2b
,让用户轻松生成符合该标准的 PDF 文件。未来,Typst 还计划支持更多的 PDF 标准,包括专为辅助技术用户设计的 PDF/UA 标准。
性能显著提升
对于排版工具来说,性能至关重要。Typst 团队深知这一点,因此在 0.12 版本中,性能提升成为了一项核心改进。
Typst 0.12 的一个重要升级是多线程布局引擎。在此之前,Typst 的布局引擎几乎是单线程工作的,但现在在合适的条件下,Typst 可以充分利用所有 CPU 核心进行并行处理。虽然速度提升与 CPU 核心数量并非线性关系,但在较大文档中,Typst 0.12 仍能实现 2-3 倍的速度提升。如果用户习惯在章节开始时明确分页,那么性能提升将更加明显。
除了多线程支持,Typst 对段落对齐算法进行了优化。通过引入新的两步算法,段落对齐的速度最高可提升 6 倍,特别是在文档中段落较短的情况下表现尤为突出。此举不仅提高了文档生成速度,还让实时预览变得更加流畅。
内部架构的优化
除了表面的功能改进,Typst 0.12 还在内部系统上进行了大幅重构。这些改动可能在短期内不明显,但为未来的扩展打下了坚实基础。例如,Typst 新增了一个元素跟踪系统,使得布局引擎能够实现多线程处理。团队还重写了排版引擎中的样式和页面布局处理机制,解决了许多长期存在的样式和内省错误。此外,为了支持未来的 HTML 导出功能,Typst 对 set
和 show
规则的解析系统也进行了重新设计。
文档迁移指南
对于已经使用 Typst 的用户,Typst 0.12 的某些更新涉及一些破坏性变更,因此现有文档可能需要进行调整。最重要的变化之一是两栏布局的实现方式:0.12 版本中,用户应使用 page set
规则而非 columns
函数来设置两栏布局。这一改变确保了浮动图形、脚注和行号在多栏文档中的正确显示。
此外,段落间距的设置方式也有所变化。Typst 0.12 允许直接通过 par.spacing
来设置段落间距,而不再需要使用复杂的 show-set 规则。
// Typst 0.12 ✅
#set par(spacing: 1.5em)
// Typst 0.11 及更早版本 ❌
#show par: set block(spacing: 1.5em)
虽然这些改动可能需要用户进行一些调整,但 Typst 提供了详尽的迁移文档和工具,帮助用户顺利升级到新版本。
结语
Typst 0.12 的发布无疑标志着该排版工具迈向更高的水平。通过对核心布局引擎的全面重构、多线程支持、PDF 输出优化以及性能提升,Typst 已成为一款功能强大且高效的开源排版工具。随着更多功能和标准的逐步支持,Typst 未来的发展前景令人期待。无论是学术写作、报告生成,还是复杂文档的编排,Typst 0.12 都为用户提供了更强大的工具和更便捷的体验。