Poucos/muitos usos de caixa registradora em líderes

Poucos/muitos usos de caixa registradora em líderes

Estou brincando um pouco com os líderes do TeX e me deparei com um problema que não entendo. Dado o seguinte código de exemplo:

\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}

\buldeveria, pelo que entendi, gerar no máximo um \textbulletcentralizado no espaço disponível se houver algum espaço horizontal livre de 5 pontos a 15 pontos. Aqui está o resultado:

insira a descrição da imagem aqui

Na primeira linha restam apenas 4 pontos, então nenhum marcador ocorre. Na linha 2, o marcador pode assumir sua largura natural e caber exatamente uma vez. Na terceira linha, ele precisa ser esticado até a largura máxima. Esses casos estão bem. Os que não entendo estão nas próximas duas linhas.

A linha 4 deve deixar um espaço de 8 pontos onde uma bala possa caber confortavelmente. Nenhuma bala ocorre, no entanto. Por que?

O problema oposto está na linha 5. Aqui o trecho máximo é excedido, portanto o TeX emite um underfull \hboxaviso. Mas por que ele produz três caixas?

Seção 9.3.3 deTeX por tópicoafirma explicitamente que você deve usar \copycom os vários comandos líderes para garantir que o registro da caixa não esteja vazio depois de ter sido usado primeiro. Na verdade, esse é exatamente o efeito que quero alcançar, por isso usei \box. A saída ainda tem três marcadores.

Alguém poderia explicar por que isso está acontecendo (e também como consertar)?

Responder1

A cola com um componente elástico diferente de zero esticará para preencher de qualquer maneira, às custas da maldade.

No quinto exemplo, com \showoutput, você veria

...\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

onde o fator de estiramento da cola é 4. Portanto, a cola conta como 10+4*5=30 pt. Sem solução, é assim que deve funcionar.

Nota: \tensyé porque eu escrevi a coisa com TeX simples para evitar que partes irrelevantes apareçam.

Com o seu documento, o diagnóstico relevante seria

..........\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

informação relacionada