領導者中方框寄存器的使用太少/太多

領導者中方框寄存器的使用太少/太多

我正在和 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 的自由水平空間,則最多應輸出一個以可用空間為中心的內容。結果如下:

在此輸入影像描述

第一行只剩下 4 點,所以沒有出現項目符號。在第 2 行,項目符號可以採用其自然寬度並且恰好適合一次。在第三行,它需要拉伸到最大寬度。這些情況都很好。我不明白的是接下來的兩行。

第 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。沒有修復,這就是它應該如何工作。

註:\tensy是因為我用 plain 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

相關內容