在处理文档的任何阶段,TeX 可以处于以下七种模式之一:无模式(\write
我认为只有在和类似命令中)、数学模式($...$
)、显示数学模式($$...$$
)、受限水平模式(\hbox{...}
)、不限制水平(段落)、内部垂直模式(\vbox{...}
)或在主垂直列表中。
两种垂直模式有何区别?
显然,在 中不能有分页符\vbox
,所以我将问题细化为:假设 TeX 目前位于主垂直列表中,那么执行
\setbox0\vbox{... material ...}\unvbox0
并... material ...
直接放入主垂直列表中?
答案1
就排版而言,据我所知,没有任何区别(与你这样做的情况相反)
\setbox0\hbox{... material ...}\unhbox0
如果我没记错的话,它处理语言节点的方式有些不同(没有 TB)。但当然有一个区别,即如果“材料”中的任何本地分配发生在框内,则将被还原,但如果直接输入,则显然不会还原。
正如所指出的,另一个区别是,在主垂直列表中,不允许删除诸如\unkern
、和 之\unskip
类的内容,而可以在 中使用它们。因此,在准备材料时,vbox 可以具有一些操作优势。\lastbox
`\unpenalty
\vbox
答案2
(参考 TeXbook)
\lastbox
在不受限制的垂直模式下不允许执行该操作(第 222 页)。
\end
并且\dump
不允许在内部垂直模式下。
还要注意,在内部垂直模式下发出的标记不会迁移(第 259 页),因此,除非构造\vbox
或\vtop
拆箱,否则它们将不被看到。