7

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

  • 1
    longtable has a \pagebreak command defined. – Troy Mar 14 '17 at 15:48
  • Why do you put the caption in the last foot? That's an odd place for a tabular caption. – Ulrike Fischer Mar 14 '17 at 15:53
  • @Troy I know, but the program that generates the table from the sources has no idea where on the page it is. A "\pagebreak" after each line isn't exactly what I am targeting at. – Ronald Mar 14 '17 at 15:55
  • @Ronald That wasn't clear in your question. In that case, a description of how your program outputs this data is required here, I would imagine. – Troy Mar 14 '17 at 15:58
  • The bottom caption might be an odd place, but all the captions in the document are bottom captions. – Ronald Mar 14 '17 at 16:00
10

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.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.