Typst 0.12 发布:全方位提升的排版系统


开源排版工具 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 对 setshow 规则的解析系统也进行了重新设计。

文档迁移指南

对于已经使用 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 都为用户提供了更强大的工具和更便捷的体验。


相關推薦

2023-08-09

作为一款开源的文本排版工具,Typst 在近日发布了 0.7 大版本,带来多项重要更新,极大提升了 Typst 在文本排版和文档生成等方面的能力。本次更新既增加了多种新功能,也在细节处进行了改进完善。新版本在文本布局方面做出

2023-09-15

Typst 0.8版本正式发布,这次更新带来了不少重磅新功能和改进。 最值得一提的是,Typst现在支持插件系统了!开发者可以利用WebAssembly技术,开发Typst插件并发布,这大大拓展了Typst的扩展性。用户不但可以安装社区开发的插件获

2023-11-18

,以及其他潜在的稳定性问题。 综合来看,Bun v1.0.12的发布是该项目在打造更加强大、易用工具方面的一大步。这些更新和改进预期将使Bun在JavaScript开发社区中的作用更为重要,为开发者提供更高效、更可靠的编程体验。

2023-09-17

dioxus等框架集成,打通社区生态资源。 Zino开发框架已发布0.12版本!这一个月的改进,主要集中在以下方面: 初步集成dioxus-desktop,可用来开发桌面应用。 进一步完善ORM功能,新增支持SQLite数据库。 完整支持OpenAPI规范

2023-06-20

WasmEdge 0.12.1 发布:新的 plugin 系统、用于 AI 的 Wasm API、高级 socket networking WasmEdge 0.12.0 和 0.12.1 已经发布。这两个版本带来了大量新的特性、优化和错误修复,进一步提高了 WasmEdge 的性能、安全性和通用性。 主要特性: 新

2023-06-19

atest 版本发布 v0.0.12 atest 是一款用 Golang 编写的、基于 YAML 格式的开源接口测试工具,可以方便地在本地、服务端、持续集成等场景中使用。 我们希望提供一个简单、强大、高质量的测试工具,方便测试、研发人员快速

2023-01-06

「航旅纵横」始终以用户服务质量为首要出发点,致力于全方位打造民航领域数字化综合服务平台。随着业务精细化运营的需求,数据指标时效性成为制约业务发展的掣肘,因此 2022 年3 月中航信移动科技有限公司与北京飞轮数

2023-09-15

.NET 8 is faster. .NET 8 比 .NET 7 的超级快更快! 这篇博客全方位介绍了 .NET 8 的性能表现,包括 JIT、原生 AOT、VM、GC、Mono、线程、文件 I/O、网络、JSON 处理、日志等。 JIT Tiering and Dynamic PGO Vectorization Branching Bounds Checkin

2022-12-22

问题,提供业务监控、流量监控、事件中心和操作记录等全方位的可观测性能力,帮助用户快速低门槛构建微服务。 截止目前,在社区各位开发者的支持下,北极星和 Spring Cloud Tencent 社区经过一年的开源运营,一共收到

2024-09-21

上海)信息技术有限责任公司,致力于为中国开发者提供全方位的支持,推出超过15款可用于专业开发的尖端工具,以构建全面的产品生态系统,确保我们的产品和解决方案能够更好地满足中国开发者的需求。 JetBrains《2023开发

2022-11-30

异的表现,而非某一个或某几个场景,这使得数据库需要全方位的能力提升。 在本次提交的测试结果中,查询性能方面, Apache Doris 在未进行任何调优的情况下, Cold Run 取得同机型所有产品第二名的优异成绩,Hot Run 位列

2024-09-28

华为 BMC 以极致安全为根基,同时提供五大智能管理,全方位保障算力设备稳定高效运行;在安全可信方面,支持基于硅可信根的最小安全子系统,由边界防御转化为纵深防御,保障设备永不脱管,作为计算硬件可信中心和可

2024-06-22

景应用开发的现代编程语言,通过现代语言特性的集成、全方位的编译优化和运行时实现、以及开箱即用的IDE工具链支持,为开发者打造友好开发体验和卓越程序性能。其具体特性表现为: 高效编程:面向应用开发,我们希

2023-08-25

仓库,提供代码托管、代码评审、代码分支管理等服务,全方位保障数字政府代码资产安全。 知识宝典: 提供前端、后端、运维、测试等研发全流程的知识分享、技术心得、在线学习支撑服务。   优势 安全可控:&nb