改变 splittopskip 的参考点?

改变 splittopskip 的参考点?

以下示例具有以下设置:

\splittopskip=.3cm

但是在输出中我看不到任何垂直空间。似乎\vsplit从基线开始计算高度。我该如何更改它以便将第一行的最高点用作参考点?

\documentclass{article}
\parindent0pt
\def\exampletext{Text Text Text Text Text Text Text Text Text Text Text Text 
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text 
Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text Text }
\fboxsep=0pt
\fboxrule=1pt

\newbox\boxi
\newbox\boxii
\begin{document}
\begingroup
\setbox\boxi=\vbox%
 {%
    \hsize=8cm\sloppy
    \bfseries\huge\exampletext
 }

\splitmaxdepth0pt \splittopskip=.3cm
\setbox\boxii\vsplit\boxi to2cm
\setbox\boxii=\vbox{\unvbox\boxii}

BOX \verb+\boxii+\hfill\fbox{\box\boxii}

\setbox\boxi=\vbox{\unvbox\boxi}

BOX \verb+\boxi+\hfill\fbox{\box\boxi}
\endgroup
\end{document}

答案1

段落行间距离\baselineskip定义从一个基线到下一个基线的距离,并根据前一行的深度和下一行的高度添加空间以获得精确的值

\topskip或者\splittopskip对段落的第一行执行相同的操作,但不会添加任何负空间,即如果第一行的高度高于其值。除非此行非常高,否则这会将第一行的基线放在预定义位置的框中。此功能很重要,因为在排版中,您经常希望在基线上对齐,而没有\vsplit简单的方法来确定内部第一行的高度。

总之:添加的空间\splittopskip始终取决于里面的第一行,因此您所能做的就是禁用它(通过将其设置为零),然后再添加空间

答案2

如果你总是想要跳过框顶部的内容

\splittopskip=0pt
\setbox\boxii\vsplit\boxi to2cm
\setbox\boxi=\vbox{\vskip.3cm\unvbox\boxi}

相关内容