“\kern0pt” 可以纠正 TeX 中逗号或句号前的“\/”吗?

“\kern0pt” 可以纠正 TeX 中逗号或句号前的“\/”吗?

为了方便使用{\it text},我们可以定义一个控制序列,例如\def\ital#1{{\it #1\/}},这是 TeXbook 第 20 页底部建议的。因为它会在逗号或句号前添加不必要的额外空格,所以在 TeXbook 第 306 页,Knuth 先生说\def\nocorr{\kern0pt}可以解决这个问题。

\def\ital#1{{\it #1\/}}
\def\nocorr{\kern0pt}
\ital{hello}, hello\par
\ital{hello\nocorr}, hello
\bye % end the document

输出为

在此处输入图片描述

为什么可以调整逗号前的\kern0pt空格?等于什么?0pt\kern0pt\/

答案1

对于 TeX 来说,一个字符仅由四个长度组成:宽度、高度、深度和斜体校正。

该命令\/会回顾当前水平的排版项目列表(不是源代码字符,例如{}),如果当前水平列表中的最后一项是字符节点,并且具有非零斜体校正,则会添加具有该长度的字距。

因此f\/ 在当前字体中添加 f 的斜体校正。

f{}\/作用相同,因为{}不会对水平列表做出任何贡献。

f\kern0pt\/\f\kern0pt与as 相同\/,如果当前列表中的最后一项是 kern 节点,则不执行任何操作。

相关内容