En la página 69 deEl libro de texto, hay una figura:
En la página 70 deEl libro de texto, dice
El pegamento nunca se encogerá más que su capacidad de contracción indicada. Por ejemplo, nunca se permitirá que la primera gota de pegamento en nuestra ilustración sea menos de 8 unidades de ancho, y TEX nunca reducirá la lista horizontal dada para que su ancho total sea inferior a 49 unidades.
¿Cómo calcula el autor los límites de contracción aquí?
Respuesta1
la reducción se especifica en unidades, si va, \setlength\baselineskip{15pt minus 2pt}
la reducción es de 2 puntos y el tamaño mínimo es. 13pt
También puede ser infinito fil
, fill
o filll
unidades, por lo que, \vss
por ejemplo, es la abreviatura de\vskip 0pt plus 1fil minus 1fil
Respuesta2
Aquí hay un ejemplo:
\def\ruleA{\vrule height1pt width45pt depth0pt}
\def\ruleB{\vrule height1pt width30pt depth0pt}
\noindent
\vrule height1pt width100pt depth0pt\par
\hbox to 100pt{\ruleA\hskip 20pt plus 4pt minus 15pt\ruleA} % case 1
\hbox to 100pt{\ruleA\hskip 20pt plus 4pt minus 10pt\ruleA} % case 2
\hbox to 100pt{\ruleA\hskip 20pt plus 4pt minus 3pt \ruleA} % case 3
\hbox to 100pt{\ruleB\hskip 20pt plus 4pt minus 3pt \ruleB} % case 4
\bye
He definido dos reglas (una de ancho de 45 puntos y la otra de 30 puntos). Y junté las reglas con pegamento en un cuadro horizontal de 100 puntos de ancho.
En los casos 1 a 3, el ancho total de dos reglas es 90 puntos, por lo que el pegamento debería encogerse 10 puntos ya que su ancho natural es 20 puntos.
- El caso 1 y el caso 2 pueden hacer eso porque su contracción es de 15 puntos y 10 puntos respectivamente. Pero
- Caso 3 no, el ancho mínimo del pegamento es 20pt-3pt = 17pt (por lo que
Overfull \hbox (7.0pt too wide) detected at line 7
aparece una advertencia).
En el caso 4, el pegamento es
20pt plus 4pt minus 3pt
, lo que no significa que el ancho máximo del pegamento sea 24pt. De hecho, se permite que el pegamento se estire arbitrariamente, siempre que tenga un componente de estiramiento positivo. Y como puede ver en la captura de pantalla, el ancho del último pegamento es 100 pt-30 pt*2 = 40 pt (la cantidad de estiramiento es 20 pt > 4 pt). Y este caso da unaUnderfull \hbox (badness 10000)
advertencia.
Respuesta3
La primera gota de pegamento es space 9 stretch 3 shrink 1
, por lo que lo más estrecho que puede llegar a ser es 9 − 1 = 8. (Podrías pensar que lo más ancho es 9 + 3 = 12, pero el texto en la página 70 inmediatamente después de la parte que citaste explica que En realidad, esto no es cierto y puede extenderse más).
Sumando todos los anchos y espacios, obtenemos 5 + 9 + 6 + 9 + 3 + 12 + 8 = 52 como ancho natural; pero si incluimos también los encogimientos, obtenemos 5 + (9 − 1) + 6 + (9 − 2) + 3 + (12 − 0) + 8 = 49 como lo más estrecho que puede llegar.
Así es como se calculan 52, 8 y 49. (Los otros números simplemente están sacados de un sombrero).
Respuesta4
El siguiente código puede brindarle una visualización de lo que está sucediendo. Es instructivo pensar en el pegamento como resortes que pueden expandirse o encogerse para organizar un conjunto de cajas dentro de otras cajas. En el siguiente diagrama están representados por espacios en blanco. Puede observar que cuando el ancho de línea es de 35 mm y TeX está creando, un párrafo box4
se despliega en una segunda línea. Con 49 mm encaja perfectamente. La figura se renderiza insertando los cuadros en una tabla. Experimente cambiando los valores. Para calcular manualmente todas las colas se suman las positivas y las negativas, para obtener la capacidad de estiramiento o contracción.
\documentclass{article}
\usepackage{array,xcolor}
\fboxsep=0pt\fboxrule=0pt
\NewDocumentCommand\Fbox{m m}
{
\colorbox{cyan}{\hbox to#1{box$_#2$\strut}}
}
\parindent0pt
\setlength\arraycolsep{0pt}
\long\def\maketable#1{\par\leavevmode
\begin{tabular}{l|@{}p{#1}@{}|@{}}
#1 &\Fbox{14mm}{1}\hskip\skipa
\Fbox{15mm}{2}\hskip\skipb
\Fbox{8mm}{3}\hskip
\skipc \Fbox{8mm}{4}
\end{tabular}
\smallskip
}
% set the skips
\newskip \skipa
\newskip \skipb
\newskip \skipc
\skipa=0mm plus 3mm minus 1mm
\skipb=0mm plus6mm minus 2mm
\skipc=0mm plus0mm minus 0mm
\begin{document}
%make the tables
\maketable{35mm}
\maketable{49mm}
\maketable{52mm}
\maketable{55mm}
\end{document}