С помощью следующего кода:
\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}
Я получил:
Примеры заставляют меня подозревать, что большее вертикальное пространство, которое меня и беспокоит, вызвано переполнением, \hbox
создаваемым таблицами с большим вертикальным пространством (между текстом над таблицей и таблицей). Почему так происходит? Верны ли мои подозрения?
решение1
Пространство, очевидно, вызвано переполненной таблицей, и может быть полезно понять причину. То, что вы видите как избыточное вертикальное пространство, на самом деле является пустой строкой.
Когда вы это делаете \\
внутри, center
вы закрываете абзац, поэтому эффект воспроизводится просто
\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}
TeX заставит \tracingparagraph=1
отчет в .log
файле о своих вычислениях, которые
@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
Первый проход по абзацу, который состоит только из представленного блока, |
очевидно, не удался. []
Бит представляет собой блок отступа (ширина которого 0pt).
Второй проход показывает возможный разрыв в начале абзаца ( @@0
, всегда присутствует, потому что новый абзац начинается с новой строки), а затем штраф (который вставляется командой, \item
неявно вставленной \begin{center}
). Этот штраф обеспечивает точку разрыва строки, которая затем используется, потому что позволяет набрать не переполненную строку. Однако правило overlong заставляет TeX сдаться.
Совершенно иная ситуация возникает, когда \centering
используется just:
\documentclass{article}
\begin{document}
a
\begingroup\centering \tracingparagraphs=1
\vrule height 1pt depth 0pt width 1.2\textwidth
\par\endgroup
b
\end{document}
что отчеты
@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
Здесь в абзаце не добавляется штраф, поэтому единственная возможная точка разрыва — в конце. Никакого «вертикального пробела» (фактически пустой строки) не добавляется.
Однако для начала не стоит делать слишком длинные строки, поэтому обсуждение носит чисто академический характер.
решение2
Я предполагаю, что проблема действительно исходит из center
среды, которая основана на trivlist
с открытием \item
. Когда первая «буква» в элементе слишком широкая, чтобы поместиться на строке, TeX вставляет разрыв строки. Предлагаемое решение:
\newenvironment{senter}{\par\centering\medskip}{\par\medskip}
Затем используйте senter
вместо center
. Измените \medskip
s на что-то большее или меньшее, если хотите.