我们继续负胶水语义然而,这里用更具体的值代替fill
。我刚刚发现了一个早期的代码
\vspace{-.56\baselineskip plus.1\baselineskip minus-.1\baselineskip}
我自己在宏中。我之前没有留下任何有意义的评论,现在我想知道这是什么minus-.1\baselineskip
意思?“减号”后面的“-”是拼写错误还是有意义?我猜,上面的命令会消除一些垂直间隙(默认情况下为 .56\baselineskip),这样无论 .46\baselineskip 和 .56\baselineskip 之间的拉伸或收缩都会被消除,这毫无意义:排字员的典型愿望是,收缩更多应该被消除,而拉伸更少应该被消除;如果我错了,请纠正我。
我还看到IEEEtran.cls
V1.8b 有类似的行,例如
\def\subsection{\@startsection{subsection}{2}{\z@}{-3.5ex plus -1.5ex minus -1.5ex}{0.7ex plus .5ex minus 0ex}{\normalfont\normalsize\sffamily\bfseries}}
第四个参数\@startsection
,即,-3.5ex plus -1.5ex minus -1.5ex
很奇怪。IEEEtran.cls 中的注释说“使用绝对值,neg 表示不缩进正文,使拉伸部分也为负数!”但是,我很困惑:是使用拉伸/收缩部分的绝对值,还是使用拉伸/收缩部分的逐字负值?
答案1
有两个可能的答案。
参数中的负值\@startsection
永远不会用作负长度,长度始终用作正值但符号用作布尔标志,两个长度参数的符号分别控制标题是否内联或显示,以及第一段是否缩进。
相反,如果长度用作跳过,那么它就具有你所期望的含义
xxx\hspace{-2pt plus -3pt minus -4pt}xxx
放置自然宽度为 -2pt 的空间,但如果线上的白色空间需要拉伸,则该空间最多会减少 -3pt(希望在其他地方得到抵消),相反,如果框过满并且白色空间需要缩小,则该空间最多会增加 4pt。
答案2
在以下示例中,第一个箱子的“收缩潜力”为 -1cm+1cm=0cm,因此箱子已满。第二个箱子的“收缩潜力”为 1cm+1cm=2cm:
\documentclass{article}
\begin{document}
\hbox to 3cm{%
\rule{1cm}{1pt}\hspace{1cm minus -1cm}\rule{1cm}{1pt}\hspace{1cm minus 1cm}\rule{1cm}{1pt}}
\hbox to 3cm{%
\rule{1cm}{1pt}\hspace{1cm minus 1cm}\rule{1cm}{1pt}\hspace{1cm minus 1cm}\rule{1cm}{1pt}}
\end{document}