\vspace 与 \vskip

\vspace 与 \vskip

\vspace{-1em}例如和之间有什么区别\vskip -1em?我猜前者是 LaTeX,后者是 TeX。什么时候应该使用前者而不是后者,为什么?

答案1

在处理过程中的任何阶段,TeX 都处于某种模式。TeX 共有六种模式,分为三类:

  1. 水平模式和受限水平模式,
  2. 垂直模式和内部垂直模式,以及
  3. 数学模式和显示数学模式。

当不排版数学时,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

举例说明差异:

\documentclass[preview, border=7mm]{standalone}
\usepackage{xcolor}
\usepackage{blindtext}

\begin{document}

    \textcolor{red}{Line with \texttt{vspace} :} \vspace{1cm} \blindtext

    \hrulefill

    \textcolor{red}{Line with \texttt{vskip} :} \vskip 1cm \blindtext

\end{document}

在此处输入图片描述

答案4

正如 Rob 所说;换句话说,\vskip应该在您处于垂直模式或想要开始设置垂直模式时使用,并且\vspace在段落内有意义。

的实现\vspaceEijkhout 1990,TUGboat 11(4),p618

相关内容