改变箱子高度,重新计算橡胶长度

改变箱子高度,重新计算橡胶长度

我正在使用\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}

结果

相关内容