空格是否总是位于 之后pt
,例如 中的用法\hskip1pt
?如果使用空格,是否存在空格出现在不该出现的位置的情况?如果不使用空格,将pt
无法识别,例如,如果字母紧随其后,例如1ptThe
?
答案1
根据 TeX 的语法规则,任何长度规范都允许在其后留一个可选的空格,但该空格会被忽略。
执行宏扩展时始终会寻找空格,当找到空格或其他不可扩展的标记时,宏扩展结束。然后会忽略空格标记。
因此\hskip1pt Then
和\hskip1ptThen
完全等价(但后者比前者需要多一点点机器工作,因为T
必须将标记放回输入流中)。
但是,你应该记住,<skip>
规范并不以1pt
标记结束:TeX 还会寻找可能的plus
关键字(或minus
,无论如何都会在后面寻找)plus <dimen>
。因此
\hskip1pt plus two
是不是相当于
\hskip1pt\relax plus two
前者会导致Missing number
错误。
因此,最好用 来结束不完整的<skip>
规范\relax
,特别是当它们位于可能在无法完全控制以下标记时展开的宏中时(参见 TeXbook 中的练习 27.4)。
答案2
以下内容应该可以回答您的问题:
\documentclass{article}
\setlength{\parindent}{0pt}% Just for this example
\begin{document}
aaa\hskip20ptbbb \par
aaa\hskip20pt bbb \par
aaa\hskip 20ptbbb \par
aaa\hskip 20pt bbb \par
aaa\rule{20pt}{.4pt}bbb
\end{document}
归根结底,这关乎代码的可读性。从这个意义上讲,将长度与其他文档元素分开(上面的“选项”2 和 4)是有意义的。
当然,如果您的编辑器具有语法高亮功能,那么也许您可以接受所有可能性。