我一直遵循 Knuth 在 TeXbook 中的建议,在单词和公式之间的适当位置插入连接线(即不间断空格)。但是,当我排版中文文档(使用 CTeX)并在我认为合适的位置插入连接线时,换行算法做了一些可疑的事情,例如断开了因为这个词(“因为”)。我认为这是因为我插入了太多连接线,导致文档难以换行。那么,在中文文档中插入单词和公式之间的连接线有哪些一般规则?
答案1
作为一名以普通话为母语的用户,我认为我们不会将单个单词的字符放在同一行中。(唯一广泛适用的规则是标点符号不能出现在行首。)我认为这是因为
- 每个字符都是一个音节,因此你很少会因为换行而发错音(参见英语中奇怪的连字符),并且
- 字符是等宽的(基本上是正方形),因此将其排版为两边大致对齐会令人赏心悦目。唯一的例外是排版长标题时,应避免在单词中间换行。
我对用 LaTeX 排版普通话不是很熟悉,但即使每个单词都应该保持在同一行,也应该由 LaTeX 来处理,而不是由用户来处理。我认为,一般来说,如果你使用了大量不可分割的空间,那你就做错了。
我认为仅供参考这一页如果您有兴趣的话,可以给出有关排版普通话的非常详细的说明。
答案2
我不熟悉 CTeX 对换行算法的调整(如果有的话),而且我不懂普通话。但据我所知,识别普通话中的所有单词边界极其困难,所以如果您的软件能做到这一点,我会感到惊讶。
以下提示可能有帮助:
- LuaLaTeX 上的包
microtype
允许字体扩展,减少了换行的需要。 - 添加
\emergencystretch=3em
告诉换行算法在拆分单词之前在单词之间添加大量空格,而不会在已经看起来不错的段落中添加过多的空间。 - 如果附近有更好的换行位置,您可以
\linebreak
在那里添加命令。您还可以为其指定一个从 0 到 4 的参数,例如\linebreak[1]
,小于 4 的值表示换行是可选的。也就是说,\linebreak[1]因为
可能会将换行符放在单词之前而不是中间。 因{\nolinebreak}为
只要你真想写,你就可以写。
答案3
如果使用了合适的排版引擎/支持包,则应应用默认的标点惩罚。W3C 中文文本布局要求是对排版引擎自动化的要求(以及如何配置排版引擎提供的功能的指南),而不是对编辑和作者的要求。
除此之外,只有具有特殊含义的重要名称才应该被考虑为不可破坏的,这更多的是由政治影响决定的选择,而不是排版无神论的常见做法。
对于科技写作,唯一需要特别注意的地方是中文中数字和单位混合时,数字和单位之间的空格不能断开。
破坏数学等式是另一个问题,并且许多人不认为行首的数学是个问题:https://academia.stackexchange.com/questions/200139/math-symbols-at-line-begin