领导者使用框登记太少/太多

领导者使用框登记太少/太多

我正在玩 TeX 的领导者,遇到了一个我不明白的问题。给出以下示例代码:

\documentclass{article}

\begin{document}

\def\bul{%
    \begingroup
    \setbox0=\hbox to 10pt{\hss\textbullet\hss}%
    \skip0=\wd0 plus 0.5\wd0 minus 0.5\wd0
%    \skip0=10pt plus 5pt minus 5pt  % the same as above
    \cleaders\box0\hskip\skip0
    \endgroup
}

1: \fbox{\hbox to 30pt{\null\hskip13pt\bul\hskip13pt\null}}  okay, too few space

2: \fbox{\hbox to 30pt{\null\hskip10pt\bul\hskip10pt\null}}  okay, space fits exactly

3: \fbox{\hbox to 30pt{\null\hskip7.5pt\bul\hskip7.5pt\null}}  okay, maximum stretch
\medskip

4: \fbox{\hbox to 30pt{\null\hskip11pt\bul\hskip11pt\null}}  wrong, still enough space left

5: \fbox{\hbox to 30pt{\null\bul\null}} wrong, too many bullets

\end{document}

\bul\textbullet据我所知,如果存在 5pt 到 15pt 的可用水平空间,则最多应输出一个以可用空间为中心。结果如下:

在此处输入图片描述

第一行只剩下 4pt,所以没有出现项目符号。第二行的项目符号可以保持其自然宽度,并且正好适合一次。第三行需要拉伸到其最大宽度。这些情况都很好。我不明白的是接下来的两行。

第 4 行应该留出 8pt 的空间,以便可以很轻松地容纳项目符号。但是,没有出现项目符号。为什么?

相反的问题在第 5 行。这里超出了最大拉伸量,因此 TeX 发出警告underfull \hbox。但为什么它输出了三个框呢?

第 9.3.3 节TeX 按主题分类明确指出您应该\copy与各种领导者命令一起使用,以确保盒子寄存器在第一次使用后不为空。实际上,这正是我想要实现的效果,这就是我使用的原因\box。输出仍然有三个项目符号。

谁能解释为什么会发生这种情况(以及如何解决它)?

答案1

具有非零拉伸分量的胶水无论如何都会拉伸以填充,但会造成不良后果。

在第五个例子中,\showoutput你会看到

...\hbox(4.44444+0.0)x30.0, glue set 4.0
....\hbox(0.0+0.0)x0.0
....\cleaders 10.0 plus 5.0 minus 5.0
.....\hbox(4.44444+0.0)x10.0, glue set 2.5fil
......\glue 0.0 plus 1.0fil minus 1.0fil
......\mathon
......\tensy ^^O
......\mathoff
......\glue 0.0 plus 1.0fil minus 1.0fil
....\hbox(0.0+0.0)x0.0

其中粘合拉伸因子为 4。因此粘合计数为 10+4*5=30 pt。没有修复,这就是它应该如何工作。

注意:\tensy是因为我使用纯 TeX 排版以避免出现不相关的部分。

根据你的文档,相关诊断如下:

..........\hbox(4.44444+0.0)x30.0, glue set 4.0
...........\hbox(0.0+0.0)x0.0
...........\cleaders 10.0 plus 5.0 minus 5.0
............\hbox(4.44444+0.0)x10.0, glue set 2.5fil
.............\glue 0.0 plus 1.0fil minus 1.0fil
.............\OMS/cmsy/m/n/10 ^^O
.............\glue 0.0 plus 1.0fil minus 1.0fil
...........\hbox(0.0+0.0)x0.0

相关内容