PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [longtable-Umgebung] Verwendung von \hline



x-ray
16-09-2008, 14:32
Hallo,

ich habe eine longtable in der ich jede Zeile mit \hline trennen will, beim Seitenumbruch an dieser Trennlinie wird die Linie (\hline) am Ende der Tabelle und auch am Anfang der folgenden Seite gezeichnet. Das führt zu einer Dopplung der Linie, bedingt durch die bereits vorhandenen Linien des Tabellenkopfes/-fusses :confused:

Gibt es, außer einer manuellen Lösung, noch einen Befehl, der selbstständig erkennt, dass an dieser Stelle keine Trennlinie benötigt wird?

vielen Dank,
X-Ray

(ps: Nach einer Lösung dieses Problems habe ich bereits im Forum vergeblich gesucht.)

voss
16-09-2008, 15:40
ich habe eine longtable in der ich jede Zeile mit \hline trennen will, beim Seitenumbruch an dieser Trennlinie wird die Linie (\hline) am Ende der Tabelle und auch am Anfang der folgenden Seite gezeichnet. Das führt zu einer Dopplung der Linie, bedingt durch die bereits vorhandenen Linien des Tabellenkopfes/-fusses :confused:

Gibt es, außer einer manuellen Lösung, noch einen Befehl, der selbstständig erkennt, dass an dieser Stelle keine Trennlinie benötigt wird?


definiere \endfoot ohne \hline

Herbert

x-ray
16-09-2008, 15:50
Gut, aber dann muss ich leider auf unterschiedliche Linienstärken bzw. auf die Wiederholung der Kopfzeile verzichten.



\begin{longtable}{lp{3.7cm}p{4.9cm}p{4.9cm}}
\toprule
\textbf{...} & \textbf{...} & \textbf{...} & \textbf{...} \\
%\midrule
\endfirsthead
%\toprule
% \textbf{...} & \textbf{...} & \textbf{...} & \textbf{...} \\
%\midrule
\endhead
%\midrule
\multicolumn{4}{r}{{\scriptsize continued on next page \ldots}} \\
\bottomrule
\endfoot
\endlastfoot
\midrule
... & ... & ... & ... \\
\hline
[...]
\bottomrule % Tabellenabschluss
\caption{....}
\end{longtable}

voss
16-09-2008, 18:13
Gut, aber dann muss ich leider auf unterschiedliche Linienstärken bzw. auf die Wiederholung der Kopfzeile verzichten.


was hat die Kopfzeile mit dem Fuß zu tun?

Herbert

x-ray
16-09-2008, 18:32
Schau doch mal in den Quell-Code, den ich oben mit angeben habe. Die Kommentarzeichen sollen für die ursprüngliche Version gelöscht werden.

Die Kopfzeile besteht oben aus einer fetten Linie (\toprule) und wird unten mit einer halb so fetten Linie (\midrule) abgeschlossen. Dies gilt für den ersten Tabellenkopf und auch für den der auf Folgeseiten dem Rest der Tabelle vorangestellt wird.

Die Fußdefinition sieht ähnlich aus. Hier eine Linie halber stärke (\midrule) und unten als Abschluss eine fette Linie (\bottomrule).

Jede Zeile hat eine dünne Linie (\hline) als Trennung.

Wenn Latex nun einen Umbruch machen muss und das an der \hline so führt dass zu einer überflüßigen dünnen Linie vor der Fußzeile und ebenso eine überflüssige dünne Linie nach der wiederholten Kopfzeile auf den Folgeseiten.

Soweit verständlich? ;)

voss
17-09-2008, 11:15
Schau doch mal in den Quell-Code, den ich oben mit angeben habe. Die Kommentarzeichen sollen für die ursprüngliche Version gelöscht werden.

Die Kopfzeile besteht oben aus einer fetten Linie (\toprule) und wird unten mit einer halb so fetten Linie (\midrule) abgeschlossen. Dies gilt für den ersten Tabellenkopf und auch für den der auf Folgeseiten dem Rest der Tabelle vorangestellt wird.

Die Fußdefinition sieht ähnlich aus. Hier eine Linie halber stärke (\midrule) und unten als Abschluss eine fette Linie (\bottomrule).

Jede Zeile hat eine dünne Linie (\hline) als Trennung.

Wenn Latex nun einen Umbruch machen muss und das an der \hline so führt dass zu einer überflüßigen dünnen Linie vor der Fußzeile und ebenso eine überflüssige dünne Linie nach der wiederholten Kopfzeile auf den Folgeseiten.

Soweit verständlich? ;)

Setze das in die Präambel

\makeatletter
\newcommand\nobreakhline{%
\multispan\LT@cols
\unskip\leaders\hrule\@height\arrayrulewidth\hfill \\*}
\makeatother


und nimm statt \hline nun \nobreakhline

was passiert?
Da du kein vernünftiges und _komplettes_ Beipiel angegeben hast, kann ich
es nicht selbst probieren.

Herbert

x-ray
17-09-2008, 11:47
was passiert?
Da du kein vernünftiges und _komplettes_ Beipiel angegeben hast, kann ich
es nicht selbst probieren.

Herbert

Verstehe dich nicht, ich habe meinem Quell-Code nur den Inhalt der Zellen gelöscht und der Übersicht wegen um einige Zeilen der Tabelle gekürzt.

Mit deiner Version der \hline gehts auch nicht richtig, siehe Bild. Es wird hier die Zelle auf der nächsten Seite angezeigt und wie du im Bild erkennen kannst ist hier eine Linie zuviel. Da ich zwischen \midrule und \hline unterscheide, kann ich nicht einfach die \midrule in der Definition der Kopfzeile weglassen (siehe Folgenden Code.).


\begin{longtable}{lp{3.7cm}p{4.9cm}p{4.9cm}}
\toprule
\textbf{ID} & \textbf{Option} & \textbf{Function} & \textbf{Increased Performance} \\
\midrule
\endfirsthead
\toprule
\textbf{ID} & \textbf{Option} & \textbf{Function} & \textbf{Increased Performance} \\
%\midrule % weg lassen wie hier gezeigt würde gehen, wäre aber nicht schön.
\endhead
[...]

voss
17-09-2008, 12:33
Verstehe dich nicht, ich habe meinem Quell-Code nur den Inhalt der Zellen gelöscht und der Übersicht wegen um einige Zeilen der Tabelle gekürzt.




Dies hier ist ein vollständiges Beispiel und hat keine zwei linien.


\documentclass[10pt,a5paper]{article}
\usepackage{longtable,booktabs}


\begin{document}

\begin{longtable}{lp{3.7cm}p{2.9cm}p{2.9cm}}
\caption{....}\\\toprule
\textbf{...} & \textbf{...} & \textbf{...} & \textbf{...}\\\midrule
\endfirsthead
\midrule
\textbf{...} & \textbf{...} & \textbf{...} & \textbf{...}\\
\endhead
\multicolumn{4}{r}{{\scriptsize continued on next page \ldots}} \\
\bottomrule
\endfoot
\bottomrule % Tabellenabschluss
\endlastfoot
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\
\end{longtable}

\end{document}


Herbert

x-ray
17-09-2008, 13:07
:(

\documentclass[10pt,a5paper]{article}
\usepackage{longtable,booktabs}


\begin{document}

\begin{longtable}{lp{3.7cm}p{2.9cm}p{2.9cm}}
\caption{....}\\\toprule
\textbf{...} & \textbf{...} & \textbf{...} & \textbf{...}\\\midrule
\endfirsthead
\toprule
\textbf{...} & \textbf{...} & \textbf{...} & \textbf{...}\\
\midrule
\endhead
\multicolumn{4}{r}{{\scriptsize continued on next page \ldots}} \\
\bottomrule
\endfoot
\bottomrule % Tabellenabschluss
\endlastfoot
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\\hline
\Huge Test ... & ... & ... & ... \\
\end{longtable}

\end{document}


Richtig, deinem Beispiel fehlt auch eine Linie! Siehe meinen vorangegangenen Post. Hier habe ich diese Linie auskommentiert UND auch erwähnt, dass es so geht ABER es nicht zur Gestaltung der ersten Kopfzeile passt, da die Kopfzeile mit einer \midrule abschließt und nicht mit einer \hline ... bitte zoome dein Dokument dann siehst du den unterschied, der auf dem Papier-Ausdruck zu erkennen ist.