PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeile \longtable automatisch auf nächste Seite



cleinert
09-10-2006, 10:38
Hallo zusammen,

hab mal wieder ein problem bei meiner Diplomarbeit. Ich habe eine Tabelle mit \longtable erstellt. Sie besteht aus 4 Zeilen. Da in diesen Zeilen einen Menge Text steht, möchte ich, dass sie am Ende der Seite automatisch geteilt werden. Latex teilt die Zeile aber nicht, sondern schreibt sie auf die nächste Seite, sodass am Ende der Seite immer realativ große Lücken sind, weil die tabelle erst auf der nächsten Seite weitergeht.
Wie kann ich Latex sagen, dass er die Zeile am Ende der Seite trennen soll?
Kennt sich da jemand aus?

Gruß Cathleen

edico
09-10-2006, 21:13
Seitenumbrüche gibt es nur zwischen Zellen. Also Zellen kleiner
machen.
Man kann sie vermeiden, indem man alle \tabularnewline,
an denen kein Seitenumbruch erfolgen soll, mit einem * versieht.

edico

RedCloud
09-10-2006, 21:33
Hallo zusammen,

hab mal wieder ein problem bei meiner Diplomarbeit. Ich habe eine Tabelle mit \longtable erstellt. Sie besteht aus 4 Zeilen. Da in diesen Zeilen einen Menge Text steht, möchte ich, dass sie am Ende der Seite automatisch geteilt werden. Latex teilt die Zeile aber nicht, sondern schreibt sie auf die nächste Seite, sodass am Ende der Seite immer realativ große Lücken sind, weil die tabelle erst auf der nächsten Seite weitergeht.
Wie kann ich Latex sagen, dass er die Zeile am Ende der Seite trennen soll?


Das geht, aber nur mit einem Trick:
- du setzt die longtable wie üblich und ermittelst die Zeile, bei der
ein Umbruch sinnvoll wäre.
- am Beginn der Zelle in der sich diese Zeile befindet, schreibst du
\setlength\parfillskip{0pt}
- am Ende der besagten Zeile fügst du jetzt ein normales Zeilenende für
die Tabelle ein: \tabularnewline
- die nächste Tabellenzeile enthält jetzt den Rest des ursprünglichen Inhalts
der Tabellenzelle. Wenn es die dritte Spalte war dann z.B. so:
& & weiterer Text ... & \tabularnewline


das \setlength\parfillskip{0pt} sorgt dafür, dass auch die letzte Zeile in einer Tabellenzelle im Blocksatz gesetzt wird, sodass man es gar nicht merkt, dass eine neue Tabellenzeile begonnen wird.

rc

edico
10-10-2006, 08:25
- du setzt die longtable wie üblich und ermittelst die Zeile, bei der
ein Umbruch sinnvoll wäre.
- am Beginn der Zelle in der sich diese Zeile befindet, schreibst du
\setlength\parfillskip{0pt}
rc

[1] welche Zeile ist dabei gemeint?
[2] du meinst nicht: 'am Beginn der Zeile, in der sich diese Zelle befindet ...'
... so geht's nicht - warum?

\documentclass{article}
\usepackage{longtable}
\usepackage{booktabs}
\usepackage{blindtext}
\begin{document}
\begin{longtable}{p{25pt}p{50pt}p{75pt}p{150pt}}
1 & 2 & 3 & 4 \blindtext \tabularnewline
% 1 & 2 & 3 & 4 \Blindtext \tabularnewline
%? \setlength\parfillskip{0pt} 1 & 2 & 3 & 4 \Blindtext \tabularnewline
1 & 2 & 3 & \setlength\parfillskip{0pt} 4 \Blindtext \tabularnewline
1 & 2 & 3 & 4 \blindtext \tabularnewline
1 & 2 & 3 & 4 \blindtext \tabularnewline
\end{longtable}
\end{document}

edico

RedCloud
10-10-2006, 08:52
[1] welche Zeile ist dabei gemeint?
[2] du meinst nicht: 'am Beginn der Zeile, in der sich diese Zelle befindet ...'
... so geht's nicht - warum?



ich sprach ja vom Mauscheln ... man muss schon einen Zeilenumbruch einfügen, der jedoch nicht sichtbar ist, weil die letzte Zeile im Blocksatz bleibt.



\documentclass[a5paper]{article}
\usepackage{longtable}
\def\x{Das ist hier irgend ein sinnloser Text. }

\begin{document}
die folgende longtable ermöglicht nur einen Seitenumbruch nach einer
Zeile.

\begin{longtable}{p{25pt}p{50pt}p{75pt}p{150pt}}
1 & 2 & 3 & 4 \x \tabularnewline
1 & 2 & \x\x\x\x\x\x\x\x\x\x\x\x & 4 \x\x \tabularnewline
1 & 2 & 3 & 4
\end{longtable}

\clearpage
Jetzt wird das geaendert. Die letzte Zeile ist im Blocksatz

\begin{longtable}{p{25pt}p{50pt}p{75pt}p{150pt}}
1 & 2 & 3 & 4 \x \tabularnewline
1 & 2 & \setlength\parfillskip{0pt}
\x\x\x\x\x\x\x\x & 4 \x\x \tabularnewline
& & \x\x\x\x \tabularnewline
1 & 2 & 3 & 4
\end{longtable}

\end{document}


rc

edico
10-10-2006, 11:09
1 & 2 & \setlength\parfillskip{0pt}
\x\x\x\x\x\x\x\x & 4 \x\x \tabularnewline
& & \x\x\x\x \tabularnewline



rc

Ja - du 'zerlegst' die dritte ('überlange') Spalte.
Danke.

Ich erinnere mich dunkel, dass Heiko Oberdiek mal einen workaround (?) in Verbindung mit pagegoal: Zielhöhe der laufenden Seite und pagetotal: aktuelle Höhe dazu geschrieben hat ...

edico

RedCloud
10-10-2006, 12:50
Ja - du 'zerlegst' die dritte ('überlange') Spalte.
Danke.

Ich erinnere mich dunkel, dass Heiko Oberdiek mal einen workaround (?) in Verbindung mit pagegoal: Zielhöhe der laufenden Seite und pagetotal: aktuelle Höhe dazu geschrieben hat ...


nein, für longtable gibt es nichts anderes ...

rc