如何退出横向模式?

如何退出横向模式?

有这样一个问题:如何退出水平模式?- 但没有答案如何退出水平模式。

我知道有一个命令\leavevmode\leavevmode 的功能和使用); 帖子什么是垂直模式和水平模式?指向其定义:

Plain、LaTeX 和 pdfTeX 具有内置宏,可以更轻松地从一种模式切换到另一种模式,例如 \leavevmode,它只是一个打开的空白框:

\protected\def\leavevmode{\unhbox \voidb@x}

好的,但是没有\leavehmode命令?

那么我可以使用什么命令来退出水平模式并重新进入垂直模式 - 而不会出现新行等伪影,或者插入额外的水平或垂直空格?

答案1

您似乎误解了垂直和水平模式是什么。

首先,我来考虑一下垂直模式和水平模式之间的关系。TeX 总是以垂直模式开始。

在某些情况下(正是当它看到水平命令),TeX 离开垂直模式并启动水平模式以创建段落。除了结束段落之外,您无法通过其他方式“离开”此模式。

你可能被命令的名称误导了\leavevmode,它可能被命名为类似\StartMakingAParagraphIfItMakesSense;该命令\unhbox\v@idbox\unhbox一个水平命令,因此

  • 如果 TeX 处于垂直模式,则启动(不受限制的)水平模式,
  • 如果 TeX 处于水平模式或数学模式,则不会发生任何事情。

结束不受限制的水平模式的唯一方法是发出(显式或隐式)原始\par命令。每个垂直命令,如果在 TeX 处于不受限制的水平模式时发现,则发出一个\par令牌。

请注意,\par可能并不意味着原始的\par,但重新定义的\par应该在某个时候执行原始的\par,否则会发生奇怪的事情:简单的

\def\par{}
x\vskip1pt

将启动一个无限循环,例如,因为\vskip将继续发出\par以便在永远不会达到的垂直模式下执行。

您可以在水平模式下通过打开\vbox或来启动垂直模式\vtop,但结果列表最终将附加到正在构建的水平列表中,因此这似乎不是您想要的。

有一个方法可以跳转到周围的垂直模式:如果 TeX 处于\vadjust{...}(不受限制的)水平模式,它将打包作为参数给出的垂直列表,并在段落形成后,将此列表插入命令所在的行和下一行之间。这样的垂直列表将附加到线间胶水。因此

abc\vadjust{\vskip3pt} text text ... text

段落第一行与第二行之间将有 3pt 的额外垂直空间。

垂直模式和水平模式之间不具有对称性,因为它们的作用非常不同。

答案2

如果您想结束当前水平列表并进入垂直模式,命令是(原始)\par

如果您想要启动一个嵌套的垂直列表,完成后它将被添加到当前水平列表中,命令是\vbox{...}

相关内容