TeXbook第76页:
当形成连字或通过 指定特殊字符时
\char
,空间因子代码是根据生成连字的各个字符计算的。
问题是关于“当通过“指定特殊字符时\char
”。
恕我直言, \char 需要<number>
,并且之后的空间<number>
无论如何都会被吞噬。
那么,有没有什么例子可以适用这个案例呢?
''
此外,为什么在下面的例子中后面没有添加空格:
\tracingonline=1
\showboxbreadth \maxdimen
\showboxdepth \maxdimen
\setbox0=\hbox{``Oh, oh!\char"27\char"27\space cried Baby Sally. Dick and Jane laughed.}
\showbox0
答案1
在显式的 ⟨number⟩ 之后,TeX 会查找 ⟨one 可选空格⟩(带扩展),然后将其忽略。二空间标记,只有第一个会被忽略,所以
\char"27 \space
\char"27\space\space
会给出所需的结果。请注意,空格也会在字母常数,所以它不会帮助打字
\char`\- cried
无论如何都需要两个空格标记;请注意,后面的空格`\-
在标记化过程中不会被忽略,因为它\-
是控制符号,但它会被忽略,因为它跟在一个显式常量后面。相反,参数后面的空格不会被忽略:
\newcount\foo
\foo="27
\char\foo\space cried
是正确的,而双空格标记将导致两个空格。
空间系数设定前制作连字;输入\char<number>
相当于输入具有该数字的字符。以下是一个测试:
\sfcode`i=10000 \xspaceskip=30pt % in order to magnify the result
fi x
f\char`i\space\space x
gi x
\char12\space\space x
\bye
您可以看到,前三种情况下的结果是相同的,而在最后一种情况下使用了与字符 12 相对应的空间因子(默认情况下为 1000;插槽 12 是连字符fi
在字体中的位置)。