\longtable Seitenumbruch verhindern

Tabellen und Grafiken erstellen und anordnen


en.ko
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 20. Nov 2014, 14:02

\longtable Seitenumbruch verhindern

Beitrag von en.ko »

Hallo,

die von mir erstellte \longtable hat eigentlich nur an zwei Punkten die Möglichkeit die Tabelle "aufzutrennen". Allerdings wir die Tabelle gerade da abgetrennt wo die Seite aufhört. Habe schon mehrere Varianten versucht, aber nichts führte zum gewünschten Ergebnis.

Daher die Frage: wie kann ich in der \longtable kontrollieren wann die Tabelle auf der nächsten Seite fortgeführt wird?

Vielen Dank im Voraus für alle sinnvollen Antworten.
\documentclass[]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{longtable}
\usepackage{blindtext}

\begin{document}

\section*{title}
\blindtext

\section*{title}
\blindtext

\section*{title}
\blindtext

\begin{longtable}{|r|l|}

%\hline % Steht am Anfang der Tabelle
%Anfang-Links & Anfang-Rechts \\ 
%\hline \endfirsthead

%\hline % Steht ab der zweiten Seite am Anfang der fortgeführten Tabelle
%Oben-Links & Oben-Rechts \\ 
%\hline \endhead

%\hline % Steht bis zur vorletzten Seite am Ende der fortzuführenden Tabelle
%Unten-Links & Unten-Rechts \\ 
%\hline \endfoot

%\hline % Steht am Ende der Tabelle
%Ende-Links & Ende-Rechts \\ 
%\hline \endlastfoot

 % Tabellenwerte Anfang
\hline
Links & Rechts \\*
\hline \nopagebreak
Links & Rechts \\*
\hline \nopagebreak
Zeile & Umbrechen \\
\hline 
Links & Rechts \\*
\hline \nopagebreak
Links & Rechts \\*
\hline \nopagebreak
Zeile & Umbrechen \\
\hline 
Links & Rechts \\*
\hline \nopagebreak
Links & Rechts \\*
\hline \nopagebreak
Links & Rechts \\*
\hline \nopagebreak
 % Tabellenwerte Ende

\end{longtable}

\end{document}

Besserwisser

Beitrag von Besserwisser »

Das Problem sind die ganzen Linien. longtable definiert \hline so um, dass an dieser Stelle explizit ein Seitenumbruch erlaubt ist und im Falle des Seitenumbruchs die Linie quasi verdoppelt wird, nämlich sowohl am Ende der Seite als auch am Anfang der nächsten ausgegeben wird. Man könnte fast sagen, dass das ein Bug ist, wenn explizit vor dem \hline \\* verwendet wurde. Zumindest ist es unschön. Ein schneller Workaround ist mir auch nicht bekannt – außer die Anzahl der Linien stark zu reduzieren. Vertikale Linien sind ohnehin schlecht und horizontale braucht man normalerweise auch nicht zwischen allen Tabellenzeilen. Gerade, wenn die Zeilen so stark verbinden sind, dass sie nur zusammen umbrochen werden dürfen, sollte man sie in der Regel nicht durch eine Linie voneinander trennen:
\documentclass[]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}

\usepackage{longtable}
\usepackage{blindtext}

\begin{document}

\section*{title}
\blindtext

\section*{title}
\blindtext

\section*{title}
\blindtext

\begin{longtable}{rl}
\hline
Links & Rechts \\*
Links & Rechts \\*
Zeile & Umbrechen \\
\hline
Links & Rechts \\*
Links & Rechts \\*
Zeile & Umbrechen \\
\hline
Links & Rechts \\*
Links & Rechts \\*
Links & Rechts \\*
\hline \nopagebreak
\end{longtable}

\end{document}
Eventuell wäre auch die Verwendung des Paket booktabs anzuraten.


en.ko
Forum-Anfänger
Forum-Anfänger
Beiträge: 12
Registriert: Do 20. Nov 2014, 14:02

Beitrag von en.ko »

Dass es an \hline liegt, darauf wäre ich nicht gekommen. In einer anderen Tabelle habe ich zufälligerweise hhline benutzt. Daher trat der Fehler nicht auf; gibt aber unschöne Nebeneffekte. Auf meiner Suche bin ich sogar auf http://tex.stackexchange.com/questions/ ... 702#186702 getroffen, habe es mir aber nicht bis zum wichtigen Teil durchgelesen. Danke für die Antworten!

Antworten