\kern、\hskip 等参数在哪里结束?

\kern、\hskip 等参数在哪里结束?

在 TeX 中,像这样的代码I\kern37ptlike\hskip100ptcake运行得很好。这让我想知道像 这样的原始命令的语法到底是怎样的\kern\hskip工作的?TeX 如何确定它们的参数在何处结束?

TeX 是否仅仅利用了这样一个事实:(据我所知)所有长度单位都由两个字母组成?

(我看不出需要 MWE。)

答案1

的参数\kern是 ⟨dimen⟩,因此 TeX 首先查找 ⟨decimal number⟩(可以是任何可接受表示形式的整数,也可以是十进制表示法中的小数,小数部分用句号或逗号分隔),然后查找 ⟨unit of measure⟩,即一对字母,代表可接受的单位之一(pt、cm、mm、in、dd、pc、cc、bp、sp、em、ex)。数字和单位之间的任意空格都会被忽略,单位后面可以跟一个可选空格(使用扩展查找)。任何其他字母对都会触发错误消息

! Illegal unit of measure (pt inserted).

因此,\kern37pclike具有正确的值\kern,但\kern 37 pc like会给出完全相同的结果。

小心使用\kern,因为如果在垂直或水平(或数学)模式下调用,该命令会执行不同的操作。\enspace在开始段落之前使用 会让你头疼。

的参数\hskip应该改为 ⟨skip⟩;应用与之前相同的方法,但在表示自然宽度的 ⟨dimen⟩ 之后,TeX 会查找关键字plusminus(带扩展)。如果找到,它会再次使用与之前相同的规则查找 ⟨dimen⟩,但 ⟨decimal number⟩ 后面也可以跟filfillfilll(不是真正的事实,但是一个很好的近似值)后面再加一个可选的空格,它会被查找并忽略。无论是否plus找到 if ,TeX 都会使用minus相同的规则查找关键字。

因此\hskip 2pt minuscule chances of errors会触发令人费解的错误信息。

当 TeX 寻找 ⟨dimen⟩ 或 ⟨skip⟩ 时,与之前相同的方法有效。如有疑问,尤其是 ⟨skip⟩,请添加\relax,即\setlength\hspace然后\vspace在 LaTeX 中执行。

相关内容