Muy pocos/demasiados usos del registro de cajas en los líderes

Muy pocos/demasiados usos del registro de cajas en los líderes

Estoy jugando un poco con los líderes de TeX y me encontré con un problema que no entiendo. Dado el siguiente código de ejemplo:

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

\bulSegún tengo entendido, debería generar como máximo uno \textbulletcentrado en el espacio disponible si hay un espacio horizontal libre de 5 puntos a 15 puntos. Aquí está el resultado:

ingrese la descripción de la imagen aquí

En la primera línea solo quedan 4 puntos, por lo que no aparece ninguna viñeta. En la línea 2, la bala puede tomar su ancho natural y encajar exactamente una vez. En la tercera línea debe estirarse hasta su ancho máximo. Esos casos están bien. Los que no entiendo están en las dos líneas siguientes.

La línea 4 debe dejar un espacio de 8 puntos en el que una bala pueda caber cómodamente. Sin embargo, no ocurre ninguna bala. ¿Por qué?

El problema opuesto ocurre en la línea 5. Aquí se excede el tramo máximo, por lo que TeX da una underfull \hboxadvertencia. Pero, ¿por qué genera tres cuadros?

Sección 9.3.3 deTeX por temaindica explícitamente que debe usar \copycon los distintos comandos líderes para asegurarse de que el registro del cuadro no esté vacío después de haberlo usado por primera vez. En realidad, este es exactamente el efecto que quiero lograr, por eso usé \box. La salida todavía tiene tres balas.

¿Alguien podría explicar por qué sucede esto (y también cómo solucionarlo)?

Respuesta1

El pegamento con un componente de estiramiento distinto de cero se estirará hasta llenarse de todos modos, a expensas del mal funcionamiento.

En el quinto ejemplo, con \showoutput, verías

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

donde el factor de estiramiento del pegamento es 4. Por lo tanto, el pegamento cuenta como 10+4*5=30 pt. No hay solución, así es como se supone que funciona.

Nota: \tensyes porque compuse el texto con TeX simple para evitar que aparezcan partes irrelevantes.

Con su documento el diagnóstico pertinente sería

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

información relacionada