[Tex/LaTex] How to convince longtable to do a page break earlier

longtablepage-breaking

using the longtable package to typeset page spanning tables, I run into a nasty behaviour: only a dummy table head and the caption are put on the following page. The contents of the table is extracted from program sources. I don't have much influence here.

\documentclass[a4paper,twoside,DIV10,BCOR1.5cm]{scrbook}
\usepackage{longtable}
\newlength{\tablcol}
\setlength{\tablcol}{4.7cm}
\newlength{\tabrcol}
\setlength{\tabrcol}{8.1cm}
\itemsep0ex plus0.2ex
%
\begin{document}
\begin{longtable}{p{\tablcol}p{\tabrcol}}%
%
\hline \multicolumn{1}{l}{{\bfseries Feld}} & \multicolumn{1}{l}{{\bfseries Beschreibung}}\\ \hline
\endfirsthead
%
\hline \multicolumn{2}{l}%
{{\small\slshape Fortsetzung der vorherigen Seite}}\\ \hline
\multicolumn{1}{l}{{\bfseries Feld}} & \multicolumn{1}{l}{{\bfseries Beschreibung}}\\ \hline
\endhead
%
\hline \multicolumn{2}{l}%
{{\small\slshape Fortsetzung auf der n\"achsten Seite}}\\ \hline
\endfoot
%
\hline
\caption[show user output]{Beschreibung der Output-Struktur des show user Statements}
\endlastfoot
%
\label{tucshowxuser}%
{\scshape id} & Die Nummer des Repository Objektes \\
{\scshape name} & Der Name des Objektes \\
{\scshape creator} & Name des Benutzers der dieses Objekt angelegt hat \\
{\scshape create\_time} & Datum und Uhrzeit der Erstellung \\
{\scshape changer} & Name des Benutzers der dieses Objekt zuletzt ge\"andert hat \\
{\scshape change\_time} & Datum und Uhrzeit der letzten \"Anderung \\
{\scshape privs} & Zeichenkette die K\"urzel f\"ur die Benutzerrechte auf dieses Objekt enth\"alt \\
{\scshape commenttype} & Typ des Kommentars \\
{\scshape comment} & Kommentar zum Objekt, wenn vorhanden \\
{\scshape id} & Die Nummer des Repository Objektes \\
{\scshape name} & Der Name des Objektes \\
{\scshape creator} & Name des Benutzers der dieses Objekt angelegt hat \\
{\scshape create\_time} & Datum und Uhrzeit der Erstellung \\
{\scshape changer} & Name des Benutzers der dieses Objekt zuletzt ge\"andert hat \\
{\scshape change\_time} & Datum und Uhrzeit der letzten \"Anderung \\
{\scshape privs} & Zeichenkette die K\"urzel f\"ur die Benutzerrechte auf dieses Objekt enth\"alt \\
{\scshape commenttype} & Typ des Kommentars \\
{\scshape comment} & Kommentar zum Objekt, wenn vorhanden \\
{\scshape id} & Die Nummer des Repository Objektes \\
{\scshape name} & Der Name des Objektes \\
{\scshape creator} & Name des Benutzers der dieses Objekt angelegt hat \\
{\scshape create\_time} & Datum und Uhrzeit der Erstellung \\
{\scshape changer} & Name des Benutzers der dieses Objekt zuletzt ge\"andert hat \\
{\scshape change\_time} & Datum und Uhrzeit der letzten \"Anderung \\
{\scshape privs} & Zeichenkette die K\"urzel f\"ur die Benutzerrechte auf dieses Objekt enth\"alt \\
{\scshape commenttype} & Typ des Kommentars \\
{\scshape comment} & Kommentar zum Objekt, wenn vorhanden \\
{\scshape id} & Die Nummer des Repository Objektes \\
{\scshape name} & Der Name des Objektes \\
{\scshape creator} & Name des Benutzers der dieses Objekt angelegt hat \\
{\scshape create\_time} & Datum und Uhrzeit der Erstellung \\
\end{longtable}

\end{document}

The problem is that I don't find a method to force a page break earlier. A page that isn't filled entirely, followed by a page with the last part of a table is better than this.

I tried to add "\needspace{someLength}" at the beginning or end of the rows, but that doesn't work either. It simply makes the rows someLength high instead of forcing a page break if there's no more than someLength room left on the page.

I'd be more than grateful for some solution or even a good hint.

TIA

Best Answer

You can force a page break using \pagebreak

\pagebreak
{\scshape creator} & Name des Benutzers der dieses Objekt angelegt hat \\
{\scshape create\_time} & Datum und Uhrzeit der Erstellung
\end{longtable}

for example will push two rows to the last page.

If you want to ensure that two rows always stay with the caption without having to add \pagebreak then put the final two rows of the table into the \endlastfoot area, as described in the longtable documentation.

Related Question