Mit folgendem Code:
\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}
Ich bekomme:
Die Beispiele lassen mich vermuten, dass der größere vertikale Abstand, der mich beunruhigt, auf die Überfüllung zurückzuführen ist, die \hbox
durch die Tabellen mit dem größeren vertikalen Abstand (der sich zwischen dem Text über der Tabelle und der Tabelle selbst befindet) entsteht. Warum passiert das? Ist meine Vermutung richtig?
Antwort1
Der Leerraum wird offensichtlich durch die überfüllte Tabelle verursacht und es kann hilfreich sein, den Grund dafür zu verstehen. Was Sie als zusätzlichen vertikalen Leerraum sehen, ist eine leere Zeile.
Wenn Sie \\
dies tun, center
schließen Sie einen Absatz, sodass der Effekt reproduzierbar ist, indem Sie
\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 wird dann seine Berechnungen \tracingparagraph=1
in der Datei protokollieren ..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
Der erste Durchgang über den Absatz, der nur aus dem durch dargestellten Feld besteht, |
ist offensichtlich nicht erfolgreich. Das []
Bit stellt das Einzugsfeld dar (das 0pt breit ist).
Der zweite Durchgang zeigt einen möglichen Zeilenumbruch am Anfang des Absatzes ( @@0
, immer vorhanden, da ein neuer Absatz in einer neuen Zeile beginnt) und dann eine Strafe (die durch den \item
von implizit eingefügten Befehl eingefügt wird \begin{center}
). Diese Strafe liefert einen Zeilenumbruchpunkt, der dann verwendet wird, da er den Satz einer nicht überfüllten Zeile ermöglicht. Die Überlängenregel führt jedoch dazu, dass TeX das Handtuch wirft.
Eine völlig andere Situation liegt vor, wenn „just“ \centering
verwendet wird:
\documentclass{article}
\begin{document}
a
\begingroup\centering \tracingparagraphs=1
\vrule height 1pt depth 0pt width 1.2\textwidth
\par\endgroup
b
\end{document}
das berichtet
@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
Hier wird im Absatz kein Punkt hinzugefügt, sodass der einzige mögliche Umbruchpunkt am Ende liegt. Es wird kein „vertikaler Abstand“ (tatsächlich eine leere Zeile) hinzugefügt.
Da Sie jedoch von vornherein keine übermäßig vollen Zeilen erstellen sollten, handelt es sich hierbei um eine rein akademische Diskussion.
Antwort2
Ich vermute, dass das Problem tatsächlich von der Umgebung herrührt , die auf mit einer Öffnung center
basiert . Wenn der erste „Buchstabe“ im Element zu breit ist, um in die Zeile zu passen, fügt TeX einen Zeilenumbruch ein. Vorgeschlagene Lösung:trivlist
\item
\newenvironment{senter}{\par\centering\medskip}{\par\medskip}
Verwenden Sie dann senter
anstelle von center
. Ändern Sie das \medskip
s bei Bedarf in einen größeren oder kleineren Wert.