各位 typst 写作者和开发者,大家好!
我们最近把《Typst 与中文排版的差距分析(clreq-gap for typst)》更新到了 v0.14.0。 之前介绍过,这份文档描述 typst 在中文支持方面的差距,特别是排版和参考文献著录。
🔗 Chinese Layout Gap Analysis for Typst. 分析 Typst 与中文排版的差距。
typst v0.14.0 修改了设置数学公式内中文字体的方式。
由于默认数学字体(New Computer Modern Math)不支持(定义)这样的中文字符,必须设置中文字体。若不设置,这些字符要么变成豆腐块□□,要么回落到系统安装的名称最短且标注为 serif 的字体(通常是 KaiTi)。
之前 v0.13 时,在数学公式内处理文本有很多局限性,设置中文字体的方法其实“依赖”一些 bug。最近归功于 mkorje 等人的贡献,情况在 v0.14.0 有很大改善。
$"x"$)和变量($x$)的处理方式更一致了。因此,现在推荐这样设置数学公式内的中文字体:
1#show math.equation: set text(font: (2 (name: "New Computer Modern Math", covers: "latin-in-cjk"), // 数学3 (name: "Source Han Serif SC", covers: regex(".")), // 中文4 "New Computer Modern Math", // 数学5))6$hat(alpha)(f) = f(alpha) "(同上,α–map的“定义”)"$7$ f(alpha) #[或者*任意*内容 _α–map_ $alpha$–map] $8$ cases("Math" 1 I l, "正文 1Il") $
“”等中西共用标点,则使用 New Computer Modern Math。之所以需要这种特定重复和顺序,是考虑到以下几点情况。
covers的字体作为数学基准字体。这个字体必须提供数学排版数据,不然会提示“warning: rendering may be poor”。cases中的{会使用中文字体,导致无法拉伸。如果你不会在数学公式内使用标点,那么设置可以如下简化。
1#show math.equation: set text(font: (2 "New Computer Modern Math",3 "Noto Serif CJK SC"4))
如需分别设置拉丁字母和数学符号的字体,请参考如何修改公式里的中文字体?,或者使用网站 Typst set font 生成代码。这个网站计划在完成后移动到 Typst 中文社区的 GitHub 组织下。
参考文献方面一直是重灾区。如概要所示,这里红点和橙点最多。有些基础需求还缺乏简洁方案。参考文献在一篇文档中自动化程度最高,但代价是小修小补异常困难。一旦typst 缺少内置支持,我们自己很难修补回来。
好消息是这方面一直在慢慢改进,而 Typst 0.14.0 有些关键进展。
Citation Style Language (CSL) 基于 XML,用于描述引用、注释、参考文献著录表的格式。你可以用它定制bibliography.style。
然而 Typst v0.13.1 不识别 CSL 1.0.2 规范的某些元素。例如旧版 Typst 会拒绝加载历史研究.csl,并抛出以下谜之错误:
Failed to load CSL style (unknown variant page, expected one of chapter-number, citation-number, collection-number, edition, first-reference-note-number, issue, locator, number, number-of-pages, number-of-volumes, page-first, part-number, printing, printing-number, section, supplement-number, version, volume)
这是因为历史研究.csl用了<number variable="page"/>。即使你实际没有这种引用,这个问题也会导致完全无法加载CSL。
Typst v0.14.0 不再抛出以上错误。根据我们的调查,全部 ~300 个中文CSL样式在去除非标准元素后全都能被新版 Typst 加载了。
之前提到,中文习惯的引用编号格式是[1]。在 Typst v0.13.1,1可能向上飘出[],严重程度取决于具体设置。
Typst v0.14.0 在 #5777 修复了上标的定位问题,所以cite函数生成的[1]也一同修复了。现在文档中的两个例子都正常了。
然而,这处修改触发了另一个问题,关于上标与中西间距相互作用(#7113 及 w3c/clreq#713)。不过还好,我们赶在版本发布前改正了。
参考文献著录规则国标规定了三种标注方法:numeric 顺序编码、author-date 著者-出版年、note/footnote 注释/脚注。
之前在 Typst v0.13.1 时,脚注格式完全无法使用,因为 Typst 没给 CSL 传入正确信息。你可能会得到;;.这种可笑结果。
现在 Typst v0.14 改正了,这些;;.变成了期望的“同上”(ibid.)。
Typst v0.14.0 还修复了文本间距调整方面的一个小问题。
文档使用 typst 撰写,并且开源(Apache 2.0)。
归功于新的 HTML类型化API,升级到 v0.14 时删除了 1410 行代码。
欢迎讨论及贡献。在仓库评论时,中英均可;不过在论坛回复时,还请用英语(论坛对此有约定)。
感谢关注!
—
本文最初版本由 Y.D.X. 附图发表于论坛。根据 pg999w 的建议,后来增加了一段介绍设置数学公式内中文字体的简单方法。