我正在使用\setbox
和\usebox
来定义一个框,测量其默认尺寸并稍后渲染它。在渲染过程中,有时可用的垂直空间比最初测量的多,我想将此空间分配到段落之间。仅使用\mybox
下面示例中的框可以实现这一点吗?
\documentclass{scrartcl}
\pagestyle{empty}
\newbox\mybox
\begin{document}
\setbox\mybox=\hbox{
\begin{minipage}[t]{10em}
\setlength{\parskip}{0ex plus5ex}
First paragraph
Second paragraph
Third paragraph
\end{minipage}
}%
%
\usebox{\mybox}
% How can I render the box with a specified height and distribute the paragraphs
% according to the parskip?
\end{document}
改变盒子宽度后更新胶水似乎相关,但我不知道如何应用那里显示的技术来改变盒子的高度。
答案1
在 的开始和结束处用行尾删除空格后\hbox
,该盒子\mybox
是一个\hbox
,其中包含一个\vtop
。然后 outer\hbox
可以用\unhcopy
或解包\unhbox
(后者会清除盒子的内容)。\lastbox
捕获解包的\vtop
,可以使用 解包\unvcopy
并放入\vtop
具有指定高度的新 中:
\documentclass{scrartcl}
\pagestyle{empty}
\newbox\mybox
\newbox\tmpbox
\begin{document}
\setbox\mybox=\hbox{%
\begin{minipage}[t]{10em}
\setlength{\parskip}{0ex plus5ex}
First paragraph
Second paragraph
Third paragraph
\end{minipage}%
}%
%
\unhcopy\mybox
\setbox\tmpbox=\lastbox
\vtop to 100pt{\unvcopy\tmpbox}
\end{document}