PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Longtable: Seitenumbruch innerhalb einer Zeile



caue
18-08-2009, 06:04
Hallo Forum,

Ich habe noch wenig Erfahrung mit Latex und brauche jetzt Tipps bzw. eine Beratung. Um Unterrichtsprotokollen zu schreiben, die sich über mehreren Seiten strecken, habe ich die longtable-Umgebung benutzt. Da aber zwei der 5 Spalten wirklich viel Text haben, habe ich ständig das Problem, dass das Ende einer Spalte nicht in der pdf.datei ausgegeben wird, weil ja longtable die Umbrüche ja nur am Ende einer Zeile vornimmt.

Gegoogelt habe ich sehr wohl nach einer Lösung. Hier im Forum bin ich auf diesen Beitrag gestoßen:
http://mrunix.de/forums/showthread.php?t=61280&highlight=longtable

Im Latex-Begleichter von Frank Mittelbach wird auf der Seite 271 darauf eingegangen und ebenso den Befehl \parfillskip=0pt empfohlen. So konnte ich tatsächlich den Seitenumbruch innerhalb einer Seite vornehmen. Das Ende der Spalte wird dann, wie gewollt, auf die nächste Seite gelegt. Leider wird aber damit auch diese Seite beendet, obwohl noch weitere Zeilen vorhanden sind, die ja angehängt werden sollten!

Hat jemand eine Lösung dafür?

Da in verschiedenen Stellen das Umbruchproblem vorkommt, habe ich denn Eindruck, das ich mit der longtable-Umgebung eine ungeeingnete Entscheidung getroffen habe. Was benutzt Ihr, wenn mehrseitigen Tabellen mit viel Text geschrieben werden sollen?

Mein minimalbeispiel:


documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel,varioref,layout}
\usepackage[TS1,T1]{fontenc}
\usepackage[force,full]{textcomp}
\usepackage[paper=a4paper,landscape,left=20mm,right=20mm,top=1 2mm,bottom=12mm]{geometry}
\usepackage{tabularx}
\usepackage{longtable}
\usepackage{colortbl}
\usepackage{picinpar, graphicx}
\usepackage{rotating}
\usepackage{setspace}
\usepackage{marvosym}
%\usepackage{amssymb}
%\usepackage{pifont}

\begin{document}

\setlongtables

\thispagestyle{empty}

\pagestyle{plain}



\section{ Protokoll}

\begin{longtable}{|p{2.9cm}|p{8cm}|p{4.1cm}|p{4.0c m}|p{6cm}|}
\\
\multicolumn{5}{l}{\emph{Friedrich Neumann Stiftung der FDP unterstütz Militärputsch in Honduras!}} \\ \hline
\endfirsthead

\endhead
\multicolumn{5}{r}{\emph{Weiter auf der nächsten Seite}} \\
\endfoot
\hline

\multicolumn{5}{r}{\emph{}} \\
\endlastfoot


Phase/Dauer &Aktivitäten &Medien& Vermutliches Ziel& Kommentar\\
\hline

Text & viel Text & Text & viel Text &Text\\
\hline
Text & viel Text & Text & viel Text & Text\\ \parfillskip=0pt
\hline
Text & viel Text & Text & viel Text & Text\\
\hline
... &... &... &... &...\\



\hline
\end{longtable}

\end{document}

Ich bedanke mich im Voraus für jede Hilfe!

Viele Grüße,
Caue

caue
18-08-2009, 13:41
Hallo,

ich habe den Eindruck, dass es wirklich so eine komplizierte Sache ist, so dass keiner von Euch mir helfen kann!

Mein Minimalbeispiel ist in der Zeile, wo der Befehl \parfillskip=0pt angewendet wurde, unvollständig. Da muss man ja den übrigen text der durch diesen Befehl unterbrochenen Zeile als (virtuelle?) neue Zeile zuordnen. Die Zeilen der Tabelle wärend dann so:

Phase/Dauer &Aktivitäten &Medien& Vermutliches Ziel& Kommentar\\
\hline

Text & viel Text & Text & viel Text &Text \\
\hline
Text & viel Text & Text & zu viel Text & Text\ \ \parfillskip=0pt
& & & hier den übrigen Text & \\
\hline
Text & viel Text & Text & viel Text & Text\\
\hline
... &... &... &... &...\\


Wobei ich inzwischen diesen Befehl \parfillskip=0pt weiter getestet habe und, was mir jetzt auch einleuchtet, noch mehr Probleme gibt als zuerst geschildert:

a) Er kann zuerst nur in der letzten Zeile und letzten Spalte der longtable verwendet werden;

b) Wird er nicht an der letzten Spalte, sondern an eine vorherigen Zeile verwendet, so werden alle nachstehenden Spalten der Zeile vollständig auf die nächten Seite verschoben, was ja nicht so gewolllt ist;

c) Dass die nächste Zeile der Tabelle, falls vorhanden, nicht unmittelbar an die Zeile des Befehls angehängt wird, sondern auf eine weitere Seite verschoben wird, habe ich schon in meinem ersten Beitrag erzählt;

Weiss jemand, ob man diese Probleme in der longtable-Umgebung lösen kann? Wenn ja, wie? Wenn nein, was wäre für einer solchen Tabelle, wo so viel Texto eingespielt wird, geeignet?

Ich hoffe, dass jemand sich schon mit ähnlichen Problemen beschäftig hat und mich dabei beraten kann!

Ich bedanke mich herzlich im Voraus!

Viele Grüße,
Cauê

cookie170
18-08-2009, 14:13
Es gibt keinen Seitenumbruch in einer Tabellenzeile.

Weshalb brauchst Du mehrere Spalten auf der Seite in Deinem Protokoll?

Gruß,
Alexander

hakaze
18-08-2009, 14:41
Versuch mal das Paket "ltxtable". Das ermöglicht variable Spalten mit Zeilenumbruch wie tabularx in einem longtable. In dem Fall würde ich ganz auf p-Spalten verzichten und für die "normalen" Spalte die r-Variante und für die mit viel Text die X-variante nehmen (siehe Paketdokus...).

PS. Schau dir auch mal das booktabs-Paket an!

caue
18-08-2009, 15:00
Hallo,

Cookie, ich brauche mehrere Spalten auf der Seite, weil der Inhalt sich auf dieser Weise anschaulicher darstellen lässt. Das entspricht auch das Muster der Dozentin. Das Problem ist nur, dass in zwei der fünf Spalten sehr oft so viel Text steht, dass es einfach nicht ausreicht, die Seite nur an Zeilenende zu umbrechen.

Ich werde mal das Paket itxtable anschauen, das ich bisher noch nicht kannte!

Danke für die Tipps!

Viele Grüße,
Cauê

hakaze
18-08-2009, 15:14
Moin,

muss dir leider sagen, cookie hat recht ;)
Es gibt keinen Seitenumbruch in einer Tabellenzeile.

Ich hab mal ein bisschen mit LTXTABLE und LIPSUM (für Fülltext) rumgespielt. Auch diese Variante bricht immer nach einer Zeile um (und nicht mitten in der Zeile, wenn diese nicht mehr komplett auf die Seite passt). Das Verhalten ist an sich auch sinnvoll, wenn man bedenkt, dass man nicht ständig vor- und zurückblättern will, um alle Spalten einer Zeile zu lesen.

Entweder du belässt es so oder du überlegst dir ein anderes Layout. Z.B. mit der description-Umgebung oder ähnliches...

cookie170
18-08-2009, 15:35
Hallo,

Cookie, ich brauche mehrere Spalten auf der Seite, weil der Inhalt sich auf dieser Weise anschaulicher darstellen lässt. Das entspricht auch das Muster der Dozentin.

Naja, es ist ja nicht besonders anschaulich, wenn in einzelnen Spalten lange Texte zusammengequetscht werden und in anderen alles leer ist.



Das Problem ist nur, dass in zwei der fünf Spalten sehr oft so viel Text steht, dass es einfach nicht ausreicht, die Seite nur an Zeilenende zu umbrechen.

In welchen beiden?



Ich werde mal das Paket itxtable anschauen, das ich bisher noch nicht kannte!

Wenn Du's nicht glaubst . . .

Aber ich bin im Moment ratlos, wie man Dein Problem lösen kann.

Mit grüblerischen Grüßen,
Alexander

cookie170
18-08-2009, 16:03
Ich glaube nicht, dass man mit noch so viel Trickserei auf LaTeX-Ebene einen automatischen Seitenumbruch innerhalb einer longtable-Umgebung und in einer Tabellenzeile hinkriegt. Gleiches gilt für supertabular.

Ich habe eben herumgespielt mit parallel, aber darin funktionieren Tabellen gar nicht. marginpar hat auch noch niemand einen Seitenumbruch beigebracht; tufte-latex hat auch sowas nicht.

Also bleibt nur der manuelle Seitenumbruch.

Ausnahmesweise musst Du das Layout also zu Beginn des Schreibens festlegen: Schrift, Seitenränder, Aussehen der Tabelle.


Gruß,
Alexander

caue
19-08-2009, 02:31
Hallo,

vielen Dank die relevanten Informationen. Es scheint dann doch so zu sein, als ob wir die Grenzen von Laten in diesem Tabellenbereich erreicht hätten. Ich hoffe, jemand schafft es bald eine Erweiterung zu schreiben, die die oben beschriebenen Funktion erledigen kann.

Mir bleibt wohl nichts anderes übrig als die Seite so gut zu gestalten wie es geht und dann manuell den überlaufenden Text in einer neuen Zeile zu leiten.

Sollte jemand doch nocht eine andere Lösung finden, dann freue ich mich (und andere Leser bestimmt auch), wenn sie hier präsentiert wird!

Nochmal vielen Dank Alexander und Hakaze!

Viele Grüße,
Cauê

cookie170
19-08-2009, 09:33
Hallo,

ich denke gerade über ein Konstrukt mit addmargin und Tabellen im linken und rechten Rand nach. In welchen Spalten kommt den viel Text?

Gruß,
Alexander

caue
19-08-2009, 10:47
Hallo Alexander,

in der zweiten und in der letzten Spalte kommt häufig zu viel Text rein.

''Konstrukt mit addmargin und Tabellen''?

Momentan habe ich die Tabelle im Querformat (mit sideways), was mir schon mehr Spielraum gibt. Mehr Spielraum heißt aber nicht, genug Spielraum!

Viele Grüße,
Cauê

cookie170
19-08-2009, 11:02
OK, dann hat sich diese Konstruktion auch erledigt, denn keines der Randnotenpakete kann einen Seitenumbruch.

Gruß,
Alexander

f00
05-09-2012, 15:37
Moin,

ich sitze auch schon eine Weile an dem Thema und möchte es wieder "ausgraben". Ich habe ein Workaround gefunden, was für mich funktioniert. Sicherlich ist es unsauber, so zu arbeiten, aber vielleicht hilft es jemandem. Unterm Strich wird keine Tabelle erstellt sondern eine Liste mit Rahmen drum herum, sieht aber genauso aus und bricht zuverlässig INNERHALB der Zeile auf die nächste Seite um.

Hier der Link zu der Lösung:

http://meinews.niuz.biz/horizontale-t340552.html

cookie170
07-09-2012, 20:44
Danke für Deine Rückmeldung. Der ganze Zauber geht darum, eine Tabelle vorzutäuschen, weil Word so etwas nur in Tabllenform kann und die Leser inzwischen erwarten, dass der Text dann auch in einer Tabelle steht.

Das ist ja geradezu philosophisch: Im ersten Schritt wird der Murks Standard, weil das Publikum nach jahrelanger Gewohnheit gar nicht mehr auf die Idee kommt, es könnte etwas anderes als Murks geben.

Zweiter Schritt: die Leute, denen die Mittel zur Verfügung stünden, etwas besseres als Murks abzuliefern, werden aufgefordert, Murks abzuliefern.

Dritter Schritt: selbige Leute übersehen, dass sie die Mittel hätten, etwas besseres als Murks abzuliefern.

Viertert Schritt: ? -- Nein, mich kriegt ihr nicht. Und ein paar andere TeXies auch nicht.

cgnieder
07-09-2012, 21:43
Man erzählt sich (sinngemäß), dass D. Knuth betreffs Tabellen gesagt haben soll „I'm still surprised this works“.

Die komfortabelste Verbindung zwischen longtable und tabularx ist tabu (http://www.ctan.org/pkg/tabu).

Damit läuft folgendes MWE eigentlich zufriedenstellend (und ohne badboxes):


\documentclass[12pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[paper=a4paper,landscape,left=20mm,right=20mm,top=1 2mm,bottom=12mm]{geometry}
\usepackage{longtable}
\usepackage{tabu}

\usepackage{lipsum} % für Dummy-Text
\begin{document}

\section{ Protokoll}

\begin{longtabu}{|X[2.9]|X[8,R]|X[4.1]|X[4.0,R]|X[6]|} \tabucline-
\multicolumn{5}{|l|}{\emph{Friedrich Neumann Stiftung der FDP unterstütz Militärputsch in Honduras!}} \\ \tabuphantomline\tabucline-
\endfirsthead
\tabucline-
\endhead
\multicolumn{5}{r}{\emph{Weiter auf der nächsten Seite}} \\ \tabuphantomline
\endfoot\tabucline-
\multicolumn{5}{r}{\emph{}} \\ \tabuphantomline
\endlastfoot
Phase/Dauer & Aktivitäten & Medien & Vermutliches Ziel & Kommentar \\ \tabucline-
Text & \lipsum[4] & Text & \lipsum[4] & Text \\ \tabucline-
Text & \lipsum[4] & Text & \lipsum[4] & Text\\
& & & \lipsum[4] & \\ \tabucline- % das ist die Zusatzzeile
Text & \lipsum[4] & Text & \lipsum[4] & Text\\ \tabucline-
... & ... & ... & ... & ...\\ \tabucline-
\end{longtabu}

\end{document}

Grüße