¿Cómo saber el límite de contracción del "pegamento" en TeX?

¿Cómo saber el límite de contracción del "pegamento" en TeX?

En la página 69 deEl libro de texto, hay una figura: ingrese la descripción de la imagen aquí

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. 13ptTambién puede ser infinito fil, fillo filllunidades, por lo que, \vsspor 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

ingrese la descripción de la imagen aquí

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 7aparece 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 una Underfull \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

ingrese la descripción de la imagen aquí

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

información relacionada