\baselineskip 是自动定义的吗?

\baselineskip 是自动定义的吗?

\baselineskip由 LaTeX 自动定义的吗?它依赖于什么?

我正在经历Wikibook关于长度的部分,我刚刚还意识到 和\bigskip其他的都不依赖于字体大小。 也是一样吗baselineskip

答案1

\baselineskip是 tex 原语,因此它总是被定义为某种东西(除非有人去\let\baselineskip\@undefined,但即使如此,底层寄存器仍然具有值,即使它不可访问。

它在 LaTeX 的各个地方都有设置,最值得注意的是,所有字体大小命令最终都会执行

\fontsize{aaa}{bbb}\selectfont

在这种情况下,\baselineskip设置为 的当前值的 bbb 倍\baselinestretch

答案2

article让我们用标准类或来举例report。选项如(这10pt是默认值),11pt12pt指示 LaTeX 读取size10.clo或(它们将用于类,具有类似的方法)。size11.closize12.clobkXY.clobookmemoir

我们size10.clo发现

\renewcommand\normalsize{%
   \@setfontsize\normalsize\@xpt\@xiipt
   \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
   \abovedisplayshortskip \z@ \@plus3\p@
   \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
   \belowdisplayskip \abovedisplayskip
   \let\@listi\@listI}
\normalsize

的第一条指令\normalsize告诉 LaTeX 主字体大小为 10pt ( \@xpt),基线跳跃为 12pt ( \@xiipt)。但是,赋予 的值\baselineskip将乘以 的当前值\baselinestretch

size11.closize12.clo对应的行是

\renewcommand\normalsize{%
   \@setfontsize\normalsize\@xipt{13.6}%
   ...}

\renewcommand\normalsize{%
   \@setfontsize\normalsize\@xiipt{14.5}%
   ...}

分别。

随后,文件还定义了\large\small类似的命令,同样使用\@setfontsize确定字体大小和基线跳过的命令。

这会产生以下后果:如果你尝试使用以下命令更改默认基线,则跳过

\setlength{\baselineskip}{13pt}

在序言中,它将有因为\begin{document}问题而产生效果\normalsize。将命令放在后面\begin{document}会产生效果,但外层的字体大小更改命令将恢复为文件中建立的值.clo

为了改变基线跳过,最好\linespread在序言中采取行动,它会为设置一个值\baselinestretch,由字体大小更改命令使用,如图所示。

因此,如果您想要 10/13 排版而不是 10/12,请发出

\linespread{1.08333}

因为 12*1.08333=12.99996 足够接近 13。

或者,根据文件中的提示重新定义所有这些命令.clo

相关内容