如何否定橡胶长度?

如何否定橡胶长度?

从数学上讲,如果你逐点取反区间 [2,5] 中的点,你会得到区间 [-5,-2]。话虽如此,我预计如果你取反3pt plus2pt minus1pt,你会得到-3pt minus2pt plus1pt。如何实际计算这些橡胶长度?首先,在 上运行 pdflatex

\documentclass{article}
\newlength{\myLength}
\begin{document}
\setlength{\myLength}{3pt plus2pt minus1pt}
\setlength{\myLength}{-\myLength}
\the\myLength
\end{document}

吐出

-3.0pt plus -2.0pt minus -1.0pt

这对于人类读者来说是类似的,但是过于复杂,可能不是我们想要的。

答案1

如果你想取消自然宽度 3pt、拉伸分量 2pt、收缩分量 1pt 的粘连,你必须释放以下量的粘连:

-3pt plus -2pt minus -1pt

拉伸和收缩组件互不相关,TeX 每次只使用其中一个组件(或不使用它)。如果需要拉伸一行或一页,则只考虑拉伸组件,如果需要收缩一行或一页,也同样如此。

如果 Knuth 选择将橡胶长度表示为

<natural width> stretchable <stretch component> shrinkable <shrink component>

你的怀疑可能就不会产生了。

关于您所提观点的另一种看法。指定3pt plus 2pt minus 1pt并不意味着可以使用 2pt 到 5pt 之间的任何间距。

这意味着,当需要收缩时,最终的空间将在 2pt 和 3pt 之间;当进行拉伸时,最佳空间将在 3pt 和 5pt 之间,但它可以以线/页面不良为代价变大。

如果你说

\documentclass{article}

\begin{document}

\rule{100pt}{0.4pt}

\makebox[100pt][s]{a\hspace{3pt plus 2pt minus 1pt}z}

\end{document}

输出将是

enter image description here

因此胶水被拉伸得远远超过 2pt;然而警告

Underfull \hbox (badness 10000) detected at line 9
\OT1/cmr/m/n/10 a z

将发行。相反,

\documentclass[draft]{article}
\usepackage{calc}

\begin{document}

\rule{\widthof{az}+1pt}{0.4pt}

\makebox[\widthof{az}+1pt][s]{a\hspace{3pt plus 2pt minus 1pt}z}

\end{document}

将输出

enter image description here

盒子太满,无法缩小到需要的大小,因为粘合永远不会低于 2pt。

再次,只会使用拉伸组件或收缩组件。

相关内容