Seitenaufteilung zwischen Longtable-Überschrift und Tabelle

Seitenaufteilung zwischen Longtable-Überschrift und Tabelle

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:

Bildbeschreibung hier eingeben

Wie vermeide ich eine solch unangenehme Situation?

Antworten kommentieren

Ein zusätzliches Problem entsteht, wenn es \hlinedirekt 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:

Bildbeschreibung hier eingeben

Es scheint, dass das Problem gelöst werden kann, indem man die Zeile auskommentiert%\Needspace{5\baselineskip}

\NeedspaceBei 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:

Bildbeschreibung hier eingeben

Dieser Fall wird durch die Änderung 5von \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.


longtableverfügt über einige Makros zur Steuerung von Überschriften (vgl. Handbuch, Abschnitt 3). Je nach Anwendungsfall können Sie sich \endheadoder 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}

Bildbeschreibung hier eingeben

Antwort2

Angenommen, Sie möchten, dass mindestens 3 Zeilen longtableangezeigt werden, bevor ein Seitenumbruch als inakzeptabel betrachtet wird, können Sie das needspacePaket 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.

verwandte Informationen