Espacio vertical más amplio con algunas tablas (¿aquellas que causan \hboxes demasiado llenos?)

Espacio vertical más amplio con algunas tablas (¿aquellas que causan \hboxes demasiado llenos?)

Con el siguiente código:

\documentclass[a4paper]{report}
\usepackage{lipsum}

\begin{document}
a
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Ord & Esplicito (Adam-Bashforth) & Implicito (Adam-Moulton) \\\hline
0 & & $y_{n+1}=y_n+hf_{n+1}$ Eulero implicito \\\hline
1 & $y_{n+1}=y_n+hf_n$, Eulero esplicito & $y_{n+1}=y_n+\frac{h}{2}(f_{n+1}+f_n)$ Greg-Nickolson \\\hline
2 & $y_{n+1}=y_n+\frac{h}{2}(2f_n-f_{n-1})$ & $y_{n+1}=y_n+\frac{h}{12}(5f_{n+1}+8f_n-f_{n-1})$ \\\hline
3 & $y_{n+1}=y_n+\frac{h}{12}(23f_n-16f_{n-1}+5f_{n-2})$ & \\\hline
\end{tabular}
\end{center}
\lipsum[1]
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Ord & Esplicito (Adam-Bashforth) & Implicito (Adam-Moulton) \\\hline
0 & & $y_{n+1}=y_n+hf_{n+1}$ Eulero implicito \\\hline
2 & $y_{n+1}=y_n+\frac{h}{2}(2f_n-f_{n-1})$ & $y_{n+1}=y_n+\frac{h}{12}(5f_{n+1}+8f_n-f_{n-1})$ \\\hline
3 & $y_{n+1}=y_n+\frac{h}{12}(23f_n-16f_{n-1}+5f_{n-2})$ & \\\hline
\end{tabular}
\end{center}
b
\begin{center}
\begin{tabular}{|c|c|c|}
\hline
Ord & Esplicito (Adam-Bashforth) & Implicito (Adam-Moulton) \\\hline
0 & & $y_{n+1}=y_n+hf_{n+1}$ Eulero implicito \\\hline
2 & $y_{n+1}=y_n+\frac{h}{2}(2f_n-f_{n-1})$ & $y_{n+1}=y_n+\frac{h}{12}(5f_{n+1}+8f_n-f_{n-1})$ \\\hline
\end{tabular}
\end{center}
c
\end{document}

Yo obtengo:

ingrese la descripción de la imagen aquí

Los ejemplos me hacen sospechar que el mayor espacio vertical, que es lo que me preocupa, se debe al sobrelleno \hboxque generan las tablas con mayor espacio vertical (que es entre texto encima de la tabla y la tabla). ¿Por qué sucede eso? ¿Es correcta mi sospecha?

Respuesta1

El espacio se debe obviamente a que la tabla está demasiado llena y puede resultar útil comprender el motivo. Lo que ves como un exceso de espacio vertical es una línea vacía.

Cuando lo haces \\dentro centerestás cerrando un párrafo, por lo que el efecto es reproducible con solo

\documentclass{article}
\begin{document}
a
\begin{center}\tracingparagraphs=1
\vrule height 1pt depth 0pt width 1.2\textwidth % an overlong indivisible object
\end{center}
b
\end{document}

El \tracingparagraph=1TeX reportará en el .logarchivo sus cálculos, los cuales son

@firstpass
[]
@\penalty via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
@secondpass
[]
@\penalty via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
|
@\par via @@1 b=* p=-10000 d=*
@@2: line 2.3- t=100 -> @@1

La primera pasada por el párrafo, que consta sólo del cuadro representado por, |obviamente no tiene éxito. El []bit representa el cuadro de sangría (que tiene 0 puntos de ancho).

La segunda pasada muestra una ruptura factible al inicio del párrafo ( @@0, siempre presente, porque un nuevo párrafo comienza en una nueva línea) y luego una penalización (que se inserta mediante el \itemcomando implícitamente insertado por \begin{center}). Esta penalización proporciona un punto de salto de línea, que luego se utiliza porque permite componer una línea que no esté demasiado llena. Sin embargo, la regla demasiado larga hace que TeX tire la toalla.

Una situación muy diferente es cuando \centeringse usa just:

\documentclass{article}
\begin{document}
a
\begingroup\centering \tracingparagraphs=1
\vrule height 1pt depth 0pt width 1.2\textwidth
\par\endgroup
b
\end{document}

que informa

@firstpass
[]\OT1/cmr/m/n/10 a 
@ via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
@secondpass
[]\OT1/cmr/m/n/10 a 
@ via @@0 b=0 p=0 d=100
@@1: line 1.2 t=100 -> @@0
|
@\par via @@1 b=* p=-10000 d=*
@@2: line 2.3- t=100 -> @@1

Aquí no se añade ninguna penalización en el párrafo, por lo que el único punto de quiebre factible está al final. No se agrega ningún “espacio vertical” (en realidad, una línea vacía).

Sin embargo, para empezar, no deberías escribir líneas demasiado completas, por lo que la discusión es solo académica.

Respuesta2

Supongo que el problema realmente proviene del centerentorno, que se basa trivlisten una apertura \item. Cuando la primera “letra” del elemento es demasiado ancha para caber en la línea, TeX inserta un salto de línea. Solución sugerida:

\newenvironment{senter}{\par\centering\medskip}{\par\medskip}

Luego use senteren lugar de center. Cambie la \medskips por algo más grande o más pequeño si lo desea.

información relacionada