为了方便使用{\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 节点,则不执行任何操作。