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:
Los ejemplos me hacen sospechar que el mayor espacio vertical, que es lo que me preocupa, se debe al sobrelleno \hbox
que 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 center
está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=1
TeX reportará en el .log
archivo 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 \item
comando 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 \centering
se 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 center
entorno, que se basa trivlist
en 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 senter
en lugar de center
. Cambie la \medskip
s por algo más grande o más pequeño si lo desea.