\vspace 命令插入的空间超过指定值

\vspace 命令插入的空间超过指定值

我对 LaTeX 还很陌生,在摆弄一些命令时发现了一些奇怪的东西。以这个简单的 vspace 命令为例:

\documentclass[]{article}

\begin{document}

\noindent
p

\vspace{10 mm}

\noindent
b

\end{document}

这应该只是在 p 的下端和 b 的上端之间插入一个 10 毫米的间隙。不幸的是,当我排版并用尺子测量间隙时,结果显示间隙约为 18-19 毫米。我使用 TeXstudio 作为我的 LaTeX 编辑器,想知道编辑器是否与此有关?

答案1

TeX 并不像您猜测的那样工作。

两条线之间的正常距离是从 所在基线p到下一条基线(b)测量的 12pt。

的下端距p基线 1.94444pt, 的上端距b基线 6.94444pt。因此两点之间的法线距离为 3.11112pt = 1.09343mm

如果在此基础上添加 10 毫米,则得到的距离为 11.09343 毫米,这与下图相对应,由最小文档生成

\documentclass{article}
\begin{document}

\noindent p

\vspace{10mm}

\noindent b%
\settoheight{\dimen0}{b}\smash{\raisebox{\dimen0}{\vrule height 11.09343mm}}

\end{document}

下面的行\noindent b只是添加了测量规则,由于 ,它不会影响正常间距\smash。如果您得到 18 毫米,那么您还有其他未指定的设置。

在此处输入图片描述

答案2

要查看 TeX 正在做什么,请添加

\showoutput
\showboxdepth=3

对于你的序言,TeX 将记录:

...\glue(\topskip) 5.69446
...\hbox(4.30554+1.94444)x345.0, glue set 339.44443fil []
...\glue 28.45274
...\glue 0.0
...\glue(\parskip) 0.0 plus 1.0
...\glue(\baselineskip) 3.11111
...\hbox(6.94444+0.0)x345.0, glue set 339.44443fil []

两个 hbox 是您的 p 和 b,它们之间是您指定的粘合,即 baselineskip 和 parskip 粘合(可以拉伸但在这种情况下不会拉伸)。

vspace添加的是额外的空格不是字母之间的空格。如果你没有添加空格,那么空格就不会是 0,除非你对其参数进行了非常非标准的设置,否则 TeX 不会将文本行设置为一行的上升部分接触上一行的下降部分。

相关内容