引言
在排版文档时,我们经常需要让文本在页面两侧对齐,以实现整洁和专业的视觉效果。Typst 作为一个现代的排版系统,虽然 par
提供了 justify
属性来实现英文的两侧对齐,但对于中文排版,这一功能却不尽如人意。为了解决这个问题,我开发了一段代码,使得中文文本也能在 Typst 中实现完美的两侧对齐。
Typst 原生对齐的局限性
par
的 justify
属性能够自动调整英文单词间的空格,使得每一行的首尾都能对齐页面的左右边缘。然而,中文字符之间没有空格,使得 justify
属性在中文排版中效果有限,常常导致排版不美观。
开发中文对齐功能的动机
为了改善中文排版的效果,我决定编写一段代码,通过插入可伸缩的空白(fraction),使得中文文本在 Typst 中也能实现两侧对齐。这样的处理可以让 justify
属性有足够的空白进行调整,从而达到自然对齐的效果。
实现中文两侧对齐的代码
以下是我编写的代码,用于实现 Typst 中的中文两侧对齐功能:
#let distr(s, w: auto) = {
block(width: w, stack(dir: ltr, ..s.clusters().map(x => [#x]).intersperse(1fr)))
}
这段代码通过创建一个名为 distr
的函数,该函数接受一个字符串和一个宽度参数,然后使用 stack
和 intersperse
方法来分布文本,实现两侧对齐的效果。
使用方法
在 Typst 文档中,你可以通过以下方式使用这段代码来实现中文的两侧对齐:
- 首先,将上述代码片段添加到你的 Typst 文档中。
- 然后,使用
distr
函数并传入需要对齐的文本和容器宽度。
例如:
#distr("这是一段需要对齐的中文文本。", 4em)
这将使得传入的中文文本在指定的容器内实现两侧对齐。
结语
通过这段代码,我们不仅解决了 Typst 在中文排版上的一个痛点,还提升了文档的整体美观度。我希望这个解决方案能够帮助到更多的 Typst 用户,让他们在处理中文文档时能够更加得心应手。未来,我期待与社区一起探索更多提升 Typst 排版能力的方法。