返回

文章详情

Typst 取得了重大进展

Hacker News2026年9月25日 16:25

我们在营销上很糟糕,我们可以承认,营销不是我们的强项。我们的强项是撰写开发者、管理员和自由软件支持者依赖的文章,以了解 Linux 世界正在发生的事情。请今天就订阅,以帮助我们继续做这些事情,这样我们就不必变得擅长营销。Typst 是一个将文档排版成各种格式的系统:PDF、SVG、PNG,以及正在开发中的 HTML。它擅长处理技术材料,常被认为是未来的 LaTeX 替代品。我们在一年前最后关注了 Typst,当时它已达到 0.13 版本。今年 6 月,发布了新版本 0.15,带来了许多新功能,包括对可变字体、MathML、多重参考文献等的支持。Typst 是一款免费的 Apache-2.0 许可证软件,用 Rust 编写。可变字体 Typst 现在支持可变字体。大多数字体以一组文件的形式分发,其中包含不同字重的字形,以及斜体、粗体等变体。排版世界的一项新发展是可变字体的出现,它可以在一个文件中包含所有这些变体。这不仅节省了空间,还可以为作者或设计师提供更大的灵活性。字体特性和变体可以通过设置“轴”的值来选择;每个轴会改变某个特定字形的渲染方面。通常有多个轴可以取离散值,以打开和关闭各种特性,或在两个限度之间取连续值。后者可以用于选择字体的字重等变化。为了测试新 Typst 功能,我下载了两种开源可变字体:Roboto Flex,一种具有 13 个轴的通用字体,以及 Zycon,一种不包含字母而有 17 个小装饰图案的字体。Zycon 的六个连续轴平滑改变图案的不同方面,使得该字体在动画中非常有用。以下是一个使用这两种字体的 Typst 文档,分别对每种字体的一个轴进行了变化: #set text(font:"Roboto Flex") #for n in (-305, -200, -98) { set text(variations:("YTDE": n)) [一只企鹅安静地跳了起来。] } #set text(font:"Zycon") #for n in array.range(0, 10, inclusive:true) { set text(variations:("M1 ": n/10)) str.from-unicode(127773) } 在 Typst 中,# 字符将文档置于"代码模式",接下来的一行或块被解释为 Typst 内置语言中的代码。在代码模式下,用方括号括起来的材料被解释为"文本模式",即要排版的文本。上面的代码包含两个命令,通过名称设置字体,使用 text() 函数的一个选项。接下来是 for 循环,执行的方式与预期相符。在循环内部,我们调用 text() 函数来设置变体变量。用于 Roboto Flex 字体的文本是直接输入的,而使用 Zycon 字体的输出是使用 str.from-unicode() 函数指定的单个字符。可以直接输入,但根据读者浏览器中的字体覆盖,可能无法显示。我们在 Roboto Flex 中操作的轴称为 YTDE。如下面的图所示,该轴决定了字体的降部长度,同时保持其其他特性不变。这在排版表格时可能是有用的,避免降部与表格单元边界之间的碰撞。Zycon 的六个轴之一,称为"M1 "(后面的两个空格是名称的一部分;所有轴名称都包含四个字符),对不同的字符做不同的事情。对月亮字形的影响是改变月相。使用 typst compile vfont.typ 编译此文档会生成一个名为 vfont.pdf 的 PDF,其截图如下: MathML HTML 导出仍然是 Typst 的一项实验性功能,但此版本显示出显著进展。主要的新 HTML 功能是将数学公式翻译为 MathML。之前关于 Typst 的文章展示了一定定积分的标记,并在 Typst 将其渲染为 PDF 时显示了其输出。同样的 Typst 代码,当渲染为 HTML 时,产生了一串几乎所有合理当前的网页浏览器都能理解的 MathML 标记。结果如下所示: ∫01(arcsin𝑥)2d𝑥𝑥21−𝑥2=𝜋ln2 如果您没有看到上面的方程,则说明您的浏览器不支持 MathML。如果您看到了,与之前文章排版的方程比较,PDF 和 HTML 的结果基本上是相同的。能够使用 Typst 在 Web 浏览器中生成 TeX 质量的数学,无需任何 JavaScript 库(如 MathJax)或不得不使用图片,对于科学交流来说是一个福音。要启用实验性的 HTML 输出,Typst 需要一个特殊标志: typst c --features html integral.typ integral.html 那是用于将名为 integral.typ 中的方程标记排版为 HTML 的命令。"

赞助内容

NordVPN Next-gen Antivirus

本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。

☕请我喝杯咖啡