![如何制作具有橡胶宽度的 parbox(例如 \hfill)](https://linux22.com/image/401639/%E5%A6%82%E4%BD%95%E5%88%B6%E4%BD%9C%E5%85%B7%E6%9C%89%E6%A9%A1%E8%83%B6%E5%AE%BD%E5%BA%A6%E7%9A%84%20parbox%EF%BC%88%E4%BE%8B%E5%A6%82%20%5Chfill%EF%BC%89.png)
我有两个彼此相邻的 parbox:
\parbox[t]{2cm}{Foo!}
\hspace{3em}
\parbox[t]{12cm}{Lorem ipsum dolor sit amet, consectetuer
adipiscing elit. Ut purus elit, vestibulum ut, placerat ac,
adipiscing,felis. Curabitur dictum gravida mauris.}
这很好用,但我希望第二个 \parbox 具有弹性宽度,以便它始终延伸到右边距。就像我使用 \hrulefill 所做的一样:
\parbox[t]{2cm}{Foo!}
\hspace{3em}
\hrulefill
正如预期的那样,规则延伸至右边距。
因此我尝试使用 \fill 作为 \parbox 的宽度参数,但结果却是每个单词都占一行,并且会出现大量溢出的水平盒子消息 —— 我推测宽度实际上设置为 0pt。
当然,我可以尝试一下并想出一个很好的宽度值,但一旦我改变纸张格式或需要更大的 \hspace 或...,它就会中断。
我还尝试了固定宽度的 \parbox 和 \hfill 来代替 \hspace,但当纸张格式变化太大时,这种方法也会失效/看起来很丑陋。
我将非常感激任何关于如何优雅地解决这个问题的提示和指示。
答案1
按照我原始评论的建议......
\documentclass{article}
\usepackage{lipsum}
\newcommand\boxAwd{2cm}
\newcommand\midgap{3em}
\newcommand\boxBwd{\dimexpr\linewidth-\boxAwd-\midgap\relax}
\newcommand\boxAB[2]{\noindent\parbox[t]{\boxAwd}{#1\strut}%
\hspace{\midgap}%
\parbox[t]{\boxBwd}{#2\strut}}
\begin{document}
\lipsum[1]
\boxAB{Foo!}{\lipsum[2]}
\renewcommand\midgap{4em}
\boxAB{I pity the Foo!}{\lipsum[2]}
\end{document}