这两个产生相同的结果:
abc
%\null
def
\bye
abc
\null
def
\bye
这两者是不同的:
abc
%\null
def
\bye
abc
\null
def
\bye
有人知道这种行为记录在哪里吗TeXbook?
答案1
来自TeX 书(章节13 种模式,第 86 页):
练习 13.1:
如果你
\hbox{...}
在水平模式下说,TeX 将构造指定的框,并将结果贡献给当前段落。同样,如果你在\hbox{...}
垂直模式下说,TeX 将构造一个框并将其贡献给当前页面。如果你想用 开始一个段落,你该怎么做\hbox
?回答(附录 A:所有练习的答案,第 313 页):
简单地说
\hbox{...}
是行不通的,因为该框将直接继续前一个垂直列表而不切换模式。您需要明确地开始段落,而最直接的方法就是说\indent\hbox{...}
。但假设您想要定义一个扩展为 的宏hbox
,其中此宏将在段落中间和开头使用;那么您不想强迫用户\indent
在段落开头调用宏之前键入内容,也不想\indent
在宏本身中说 (因为那样可能会插入不必要的缩进)。这个更普遍的问题的一个解决方案是说\ \unskip\hbox{...}
,因为\
使模式为水平 而\unskip
删除了不需要的空格。Plain TeX 提供了一个\leavevmode
宏,它以可能是最有效的方式解决了这个问题:\leavevmode
是 的缩写\unhbox\voidbox
,其中\voidbox
是一个永久为空的盒子寄存器。