答案1
收缩以单位指定,如果你去\setlength\baselineskip{15pt minus 2pt}
那么收缩是 2pt 并且最小尺寸是13pt
它也可以是无限的fil
,fill
或filll
单位,\vss
例如是缩写\vskip 0pt plus 1fil minus 1fil
答案2
以下是一个例子:
\def\ruleA{\vrule height1pt width45pt depth0pt}
\def\ruleB{\vrule height1pt width30pt depth0pt}
\noindent
\vrule height1pt width100pt depth0pt\par
\hbox to 100pt{\ruleA\hskip 20pt plus 4pt minus 15pt\ruleA} % case 1
\hbox to 100pt{\ruleA\hskip 20pt plus 4pt minus 10pt\ruleA} % case 2
\hbox to 100pt{\ruleA\hskip 20pt plus 4pt minus 3pt \ruleA} % case 3
\hbox to 100pt{\ruleB\hskip 20pt plus 4pt minus 3pt \ruleB} % case 4
\bye
我定义了两条规则(一条宽度为 45pt,另一条宽度为 30pt)。然后我使用胶水将两条规则放在一个宽度为 100pt 的水平框中。
在情况 1-3 中,两个规则的总宽度为 90pt,因此粘合应该收缩 10pt,因为它的自然宽度是 20pt。
- 情况 1 和情况 2 可以做到这一点,因为它们的收缩率分别为 15pt、10pt。但是
- 情况 3 不是,粘合的最小宽度为 20pt-3pt = 17pt(因此
Overfull \hbox (7.0pt too wide) detected at line 7
会发出警告。)
在情况 4 中,粘连是
20pt plus 4pt minus 3pt
,这并不意味着粘连的最大宽度是 24pt。事实上,只要粘连具有正的拉伸分量,它就可以任意拉伸。正如您在屏幕截图中看到的那样,最后一个粘连的宽度是 100pt-30pt*2 = 40pt(拉伸量为 20pt > 4pt)。这种情况会发出警告Underfull \hbox (badness 10000)
。
答案3
第一团胶水的尺寸是space 9 stretch 3 shrink 1
,所以它能达到的最窄尺寸是 9 − 1 = 8。(您可能认为最宽尺寸是 9 + 3 = 12,但您引用部分后面第 70 页的文字解释说这实际上并非如此,它可以延伸得更宽。)
将所有宽度和空格加在一起,我们得到 5 + 9 + 6 + 9 + 3 + 12 + 8 = 52 作为自然宽度;但如果我们也包括收缩,那么我们得到 5 + (9 − 1) + 6 + (9 − 2) + 3 + (12 − 0) + 8 = 49 作为它能得到的最窄宽度。
这就是 52、8 和 49 的计算方法。(其他数字都是从帽子里抽出来的。)
答案4
下面的代码可以让你直观地了解正在发生的事情。将胶水想象成弹簧是有益的,它可以扩展或收缩以将一组框排列在其他框中。在下图中,它们由空白表示。你可以观察到,当线宽为 35 毫米且 TeX 正在构建时,一个段落box4
被放到第二行上。在 49 毫米时它刚好适合。该图是通过将框插入表格来呈现的。尝试更改值。要手动计算所有胶水,请将正值和负值加在一起,以获得可拉伸性或可收缩性。
\documentclass{article}
\usepackage{array,xcolor}
\fboxsep=0pt\fboxrule=0pt
\NewDocumentCommand\Fbox{m m}
{
\colorbox{cyan}{\hbox to#1{box$_#2$\strut}}
}
\parindent0pt
\setlength\arraycolsep{0pt}
\long\def\maketable#1{\par\leavevmode
\begin{tabular}{l|@{}p{#1}@{}|@{}}
#1 &\Fbox{14mm}{1}\hskip\skipa
\Fbox{15mm}{2}\hskip\skipb
\Fbox{8mm}{3}\hskip
\skipc \Fbox{8mm}{4}
\end{tabular}
\smallskip
}
% set the skips
\newskip \skipa
\newskip \skipb
\newskip \skipc
\skipa=0mm plus 3mm minus 1mm
\skipb=0mm plus6mm minus 2mm
\skipc=0mm plus0mm minus 0mm
\begin{document}
%make the tables
\maketable{35mm}
\maketable{49mm}
\maketable{52mm}
\maketable{55mm}
\end{document}