\baselineskip
里面可以加一些胶水\vspace
吗?
\documentclass{scrartcl}
\begin{document}
Text
\vspace{\baselineskip}
Works
\vspace{12pt plus 10pt minus 5pt}
Works
\vspace{\baselineskip plus 10pt minus 5pt}
Fails \dots
\end{document}
答案1
由于\vspace
想要一个“胶水”作为其论点,并且\baselineskip
是胶水参数,\vspace{\baselineskip plus 10pt minus 5pt}
是不正确的;最简单的方法是说
\vspace{1\baselineskip plus 10pt minus 5pt}
将1\baselineskip
其变成一个简单的维度,丢弃它的可能性plus
和minus
组成部分。
通常\baselineskip
没有拉伸和收缩分量。如果要稳妥起见,将拉伸分量增加 10pt,将收缩分量增加 5pt,无论它们是什么,“正确”的方法是
\vspace{\glueexpr\baselineskip + 0pt plus 10pt minus 5pt\relax}
注意:\vspace{\dimexpr\baselineskip plus 10pt minus 5pt\relax}
之所以有效,是因为当 TeX 扫描时,\dimexpr
它会到达p
不能成为维度表达式一部分的,并停止扫描,因为它已经转换\baselineskip
为维度,丢弃了拉伸和收缩组件。所以最终结果\relax
是不是和 的分隔符\dimexpr
将进入输入流(在那里它可能没有危害)。