
Betrachten Sie dieses Beispiel:
\documentclass{report}
\usepackage{lipsum}
\usepackage{longtable}
\begin{document}
\lipsum[1-4]
another paragraph
another paragraph
another paragraph
another paragraph
anoteher paragraph
another paragraph
another paragraph
%anoteher paragraph
%another paragraph
\begin{longtable}{lr}
\caption{long table}\\
A&B\\
c&D
\end{longtable}
\end{document}
Nach der Zusammenstellung befindet sich die Überschrift der langen Tabelle auf einer Seite, die Tabelle selbst hingegen auf einer anderen Seite:
Wie vermeide ich eine solch unangenehme Situation?
Antworten kommentieren
Ein zusätzliches Problem entsteht, wenn es \hline
direkt nach der Überschrift verwendet wird:
\documentclass{report}
\usepackage{lipsum}
\usepackage{longtable}
\usepackage{needspace}
\begin{document}
\lipsum[1-4]
another paragraph
another paragraph
another paragraph
another paragraph
anoteher paragraph
another paragraph
another paragraph
%anoteher paragraph
%another paragraph
%\Needspace{5\baselineskip}
\begin{longtable}{lr}
\caption{some table}\\*
\hline
A&B\\
c&D\\
E&F
\end{longtable}
\end{document}
Auch bei der Verwendung von \\*
kehren wir zum Ausgangszustand zurück:
Es scheint, dass das Problem gelöst werden kann, indem man die Zeile auskommentiert%\Needspace{5\baselineskip}
\Needspace
Bei mehrzeiligen Untertiteln scheint jedoch eine manuelle Anpassung erforderlich zu sein .
Betrachten Sie dieses Beispiel:
\documentclass{report}
\usepackage{lipsum}
\usepackage{longtable}
\usepackage{needspace}
\begin{document}
\lipsum[1-4]
another paragraph
another paragraph
another paragraph
another paragraph
anoteher paragraph
%another paragraph
%another paragraph
%anoteher paragraph
%another paragraph
\Needspace{5\baselineskip}
\begin{longtable}{lr}
\caption{\lipsum[1][1-3]}\\*
\hline
A&B\\
c&D\\
E&F
\end{longtable}
\end{document}
Das Ergebnis ist wieder das gleiche:
Dieser Fall wird durch die Änderung 5
von \Needspace{5\baselineskip}
in behoben 6
.
Antwort1
Sie können einfach \\*
anstelle von \\
nach dem verwenden \caption
. Aus dem Handbuch:
\\*
: Dasselbe wie\\
, aber ohne Seitenumbruch nach der Zeile.
longtable
verfügt über einige Makros zur Steuerung von Überschriften (vgl. Handbuch, Abschnitt 3). Je nach Anwendungsfall können Sie sich \endhead
oder ansehen \endfirsthead
. Dieser Code funktioniert bei mir:
\documentclass{report}
\usepackage{lipsum}
\usepackage{longtable}
\begin{document}
\lipsum[1-4]
another paragraph
another paragraph
another paragraph
another paragraph
anoteher paragraph
\begin{longtable}{lr}
\caption{\lipsum[1][1-3]}\\
\hline
\endfirsthead
A&B\\
c&D\\
E&F
\end{longtable}
\end{document}
Antwort2
Angenommen, Sie möchten, dass mindestens 3 Zeilen longtable
angezeigt werden, bevor ein Seitenumbruch als inakzeptabel betrachtet wird, können Sie das needspace
Paket laden und die Direktive ausgeben
\Needspace{5\baselineskip}
unmittelbar vor . Auf diese Weise beginnt \begin{longtable}
der oben auf der nächsten Seite, sofern unten auf der Seite nicht noch mindestens 5 Textzeilen frei sind .longtable
Warum 5\baselineskip
? Weil die Überschrift der Longtable und die Leerzeile zwischen der Überschrift und dem Beginn des Haupttextes zwei weitere Zeilen einnehmen.