\vspace{-1em}
例如和之间有什么区别\vskip -1em
?我猜前者是 LaTeX,后者是 TeX。什么时候应该使用前者而不是后者,为什么?
答案1
在处理过程中的任何阶段,TeX 都处于某种模式。TeX 共有六种模式,分为三类:
- 水平模式和受限水平模式,
- 垂直模式和内部垂直模式,以及
- 数学模式和显示数学模式。
当不排版数学时,TeX 处于水平或垂直模式。水平模式通常用于制作文本行;垂直模式通常用于将段落的行堆叠在一起。
\vskip
在垂直行列表中插入粘连。因此\vskip
打破水平模式并进入垂直模式。
\vspace
可以在水平模式和垂直模式下工作。在水平模式下\vspace 1mm
相当于\vadjust{\vskip 1mm \vskip 0pt}
在当前行后插入一个空格。在垂直模式下\vspace 1mm
相当于\vskip 1mm \vskip 0pt
\vskip 0pt
是需要的,所以\removelastskip
不能删除您的垂直空间。
完整定义:
\vspace : -> \@ifstar \@vspacer \@vspace
不带*
大小写 ( \vspace 1mm
):
\@vspace: #1->\ifvmode \vskip #1 \vskip \z@skip \else \@bsphack \vadjust {\@restore
par \vskip #1 \vskip \z@skip }\@esphack \fi
注意,需要
\z@skip
等于0pt
,才能在句点后保存较大的水平空间。需要返回大空间设置。\@bsphack
\@esphack
带*
案例(\vspace* 1mm
):
\@vspacer:#1->\ifvmode \dimen@ \prevdepth \hrule \@height \z@ \nobreak \vskip #1 \v
skip \z@skip \prevdepth \dimen@ \else \@bsphack \vadjust {\@restorepar \hrule @height \z@ \nobreak \vskip #1 \vskip \z@skip }\@esphack \fi
答案2
\vspace
是 LaTeX 命令,\vskip
是 TeX 命令。两者都可以在 LaTeX 中使用。在\vspace
段落中使用时,它会在当前行后插入空格。但如果\vskip
在段落中使用,它会结束段落并立即插入空格。
答案3
答案4
正如 Rob 所说;换句话说,\vskip
应该在您处于垂直模式或想要开始设置垂直模式时使用,并且\vspace
在段落内有意义。
的实现\vspace
在Eijkhout 1990,TUGboat 11(4),p618。