リーダーでのボックスレジスタの使用が少なすぎる/多すぎる

リーダーでのボックスレジスタの使用が少なすぎる/多すぎる

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 までの水平方向の空きスペースがある場合、使用可能なスペースの中央に最大 1 つ出力されるはずです。結果は次のとおりです。

ここに画像の説明を入力してください

最初の行には 4pt しか残っていないため、箇条書きは表示されません。2 行目では、箇条書きは自然な幅になり、ちょうど 1 回収まります。3 行目では、最大幅まで伸ばす必要があります。これらのケースは問題ありません。理解できないのは次の 2 行です。

4 行目には、箇条書きがぴったり収まる 8 ポイントのスペースが必要です。しかし、箇条書きは表示されません。なぜでしょうか。

逆の問題は 5 行目にあります。ここでは最大伸長を超えているため、TeX は警告を発しますunderfull \hbox。しかし、なぜ 3 つのボックスが出力されるのでしょうか?

セクション9.3.3トピック別TeXでは、ボックス レジスタが最初に使用された後に空にならないようにするために、さまざまなリーダー コマンドでを使用する必要があることが明示的に示されています\copy。実際、これがまさに私が達成したい効果であるため、 を使用しました\box。出力にはまだ 3 つの箇条書きがあります。

なぜこのようなことが起こるのか(また、それを修正する方法も)を誰か説明してもらえますか?

答え1

ゼロ以外の伸縮コンポーネントを持つグルーは、悪影響を伴いながらも、とにかく伸縮して埋め尽くされます。

5番目の例では\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 ポイントになります。修正はありません。これが動作の想定方法です。

注:\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

関連情報