我又遇到了一个相当特殊的问题:我想编辑的最小长度\hfill
。根据 de.wikibooks,它是一个 TeX 原语。因此,我假设它不能被编辑。
\textwidth
这是做什么用的?不管怎样,我都想把几个框挤成一个。它应该类似于\mbox{}
,但不能比文本宽度更宽。
有可能通过计算箱子数量并使用\hspace
(可能)负值来实现这一点,该负值是根据箱子数量计算出来的。但这会相当复杂,并且需要一个辅助文件。
MnWE 解释:
%This box should not be wider than \textwidth. It must be squeezed to \textwidth
\mbox[\textwidth]{ %There is no such instruction \mbox[width]{content}
\parbox{0.5\textwidth}{some Text}
\hfill
\parbox{0.5\textwidth}{some Text}
\hfill
\parbox{0.5\textwidth}{some Text}
}
%to fit, hfill must be -0.25\textwith, but it refuses to get negative, so this box will be wider than the text area.
答案1
\hss
如果需要,“水平收缩/拉伸”将会收缩至负尺寸,或者根据需要拉伸,如评论中所要求的那样。
\documentclass{article}
\begin{document}
\begin{flushleft}
\makebox[\textwidth][s]{%%%%
\parbox{0.5\textwidth}{some Text}%%%%
\hss
\parbox{0.5\textwidth}{some Text}%%%%
\hss
\parbox{0.5\textwidth}{some Text}%%%%
}
\end{flushleft}
\end{document}
答案2
这里我介绍了\Hfill
一个最小间距为\Hfillkern
(根据 OP 的评论进行了编辑),但除此之外它是一个\hfill
。它被定义为
\def\Hfill{\hspace{\Hfillkern}\hfill}
用户可以\Hfillkern
通过 指定长度\setHfillkern{}
。
这是 MWE,\Hfillkern
设置为-.25\textwidth
。
\documentclass{article}
\parskip 1em
\parindent 0pt
\newcommand\setHfillkern[1]{\def\Hfillkern{#1}}
\setHfillkern{-.25\textwidth}
\def\Hfill{\hspace{\Hfillkern}\hfill}
\def\X{\fbox{\makebox[.25\textwidth]{This is my box}}}
\begin{document}
\X\Hfill \X
\X\Hfill \X\Hfill \X
\X\Hfill \X\Hfill \X\Hfill \X
\X\Hfill \X\Hfill \X\Hfill \X\Hfill \X
\X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \X\Hfill \
\end{document}
只要\Hfillkern
设置了盒子的负宽度,就应该能够在线上挤压任意数量的盒子,这似乎是 OP 的要求。
另一方面,如果框宽度的幅度大于\Hfillkern
,那么线上可放置的框的数量就会有一个上限。