PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrseite Tabelle mit variabler Spaltenbreite



letscho84
20-10-2011, 21:55
Hallo zusammen,

ich bin gerade auf der Suche nach einer Tabellenumgebung, mit der ich gut und einfach längere Tabellen über mehrere Seiten generiern kann. Des Weiteren ist mir wichtig, dass die erzeugte Tabelle nicht Breiter als das Textfeld ist und die Spaltenbreiten automatisch generiert wird.
Ich bin bei meiner Suche schon auf LTXtable gestoßen, weiß damit aber nicht so Recht etwas anzufangen. Zur Zeit verwände ich \tabularx und würde das, wenn es geht auch weiter verwenden.

Danke schon jetzt für eure Hilfe!

Grüße, Letscho

bobmalaria
20-10-2011, 21:57
hi,

versuche mal das tabu paket bzw. dort die longtabu umgebung. dort wird die funktion von tabularx und longtable kombiniert. der X spaltentyp funktioniert dort ebenfalls.

gruss

letscho84
22-10-2011, 19:32
...versuche mal das tabu paket...

Danke für den Tipp ich werde gleich mal schauen was ich dazu finde!

Grüße, Letscho

ctansearch
22-10-2011, 22:38
Was meinst Du mit "Spaltenbreiten automatisch generieren"?

letscho84
25-10-2011, 12:45
Hi zusammen,


...versuche mal das tabu paket bzw. dort die longtabu umgebung. gruss

ich habe mir jetzt zwar das Manual zu tabu herunter geladen. Jedoch werde ich nicht schlau daraus. Es enthält irgendwie keine Beispiele und ist so für mich sehr schwer zu lesen. Könnt ihr mir vielleicht eine Seite / PDF nennen wo ich etwas mehr darüber finde?


Was meinst Du mit "Spaltenbreiten automatisch generieren"?

Ich meine damit, das LaTeX selbst festlegen kann wie groß/breit es die Spalten macht, damit es auf eine Seite passt.

Grüße, Letscho

Schweinebacke
25-10-2011, 13:18
Die Anleitung zu tabu ist selbst unter Verwendung von tabu geschrieben und als Anhang zu tabu.pdf zu finden. So gesehen gibt es also massenhaft Beispiele. Für die X-Spalten ist darüber hinaus min. ein Beispiel in der Anleitung auch abgedruckt. Für longtabu ist es außerdem nützlich, wenn man die Anleitung zu longtable gelesen hat. Da tabu noch ziemlich neu ist, gibt es AFAIK noch kein Buch und keine alternative LaTeX-Einführung, die dieses Paket behandelt.

Übrigens muss man sich die Anleitungen zu einem installierten Paket normalerweise nicht extra herunterladen. Die wird normalerweise mit dem Paket installiert. Das Programm texdoc liefert in der Regel zu einem Paket die Anleitung, wenn man den Paketnamen als Parameter angibt.

ctansearch
25-10-2011, 22:31
Du kannst die Spalten relativ zu einer Länge festlegen, hier zur selbstdefinierten Länge \tablewidth


\documentclass[a4paper,10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\newlength\tablewidth
\usepackage{longtable,blindtext}
\begin{document}
\tablewidth=12cm
\begin{longtable}{p{0.4\tablewidth}p{0.3\tablewidt h}p{0.3\tablewidth}}
\blindtext &\blindtext &\blindtext \\
\end{longtable}
\end{document}

letscho84
15-11-2011, 10:41
Hallo zusammen,

nach langer Ruhepause habe ich mich für das tabu paket entschieden und bekomme das auch gut zum laufen. Jedoch ist mein Problem, dass mir bei der Ausgabe immer die Tabellenunterschrift gleich unter dem Tabellentitel gesetzt wird UND das die Beschreibung für die Fortsetzung der Tabelle immer mit gedruckt wird.

Meine Frage ist nun, wie kann ich das einstellen, dass diese Beschreibung nur geschrieben wird, wenn ein Seitenumbruch stattfindet UND wie bekomme ich es hin, dass die Tabellenbeschreibung für das TOC unter der gesamten steht.

Hier nun mein Bsp:



\documentclass[a4paper, 11pt, oneside,]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{longtable}
\usepackage{tabu}

\begin{document}

\section{SphereBladder Tank}

\begin{longtabu}to\textwidth{l l c c X}
\hline
Name & Typ & Wert & Einheit & Beschreibung \\ \hline
\endfirsthead
Name & Typ & Wert & Einheit & Beschreibung \\ \hline
\endhead
$Q_{flag}$ & Boolesch & WAHR & & Kennzeichnung des Wärmetransports: konstant oder variabel \\
\hline
\multicolumn{5}{|r|}{Fortsetzung auf der nächsten Seite}\\ \hline
\endfoot
\caption{Text}
\end{longtabu}

\end{document}


Das Ergebnis könnt ihr dem Anhang entnehmen

hakaze
15-11-2011, 13:21
Du musst die longtable-übliche Reihenfolge der definitionen einhalten:
\endfirsthead -> \endhead -> \endfoot -> \endlastfoot -> Tabelleninhalt
Ich habe das mal mit einige Blöcken Blindtext veranschaulicht, und die hlines durch "bessere" Trennlinien aus dem booktabs-Paket ersetzt:

\documentclass[a4paper, 11pt, oneside,]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{longtable,tabu,booktabs,lmodern,lipsum }

\begin{document}

\section{SphereBladder Tank}

\begin{longtabu}to\textwidth{llccX}
\toprule
Name & Typ & Wert & Einheit & Beschreibung \\ \midrule
\endfirsthead
\toprule
Name & Typ & Wert & Einheit & Beschreibung \\ \midrule
\endhead
\midrule \multicolumn{5}{r}{Fortsetzung auf der nächsten Seite}\\
\endfoot
\bottomrule \caption{text}
\endlastfoot
$Q_{flag}$ & Boolesch & WAHR & & Kennzeichnung des Wärmetransports: konstant oder variabel \\
$Q_{flag}$ & Boolesch & WAHR & & \lipsum[1] \\
$Q_{flag}$ & Boolesch & WAHR & & \lipsum[2] \\
$Q_{flag}$ & Boolesch & WAHR & & \lipsum[3] \\
$Q_{flag}$ & Boolesch & WAHR & & \lipsum[4] \\
\end{longtabu}

\end{document}

letscho84
15-11-2011, 16:47
Du musst die longtable-übliche Reihenfolge der definitionen einhalten:
\endfirsthead -> \endhead -> \endfoot -> \endlastfoot -> Tabelleninhalt
Ich habe das mal mit einige Blöcken Blindtext veranschaulicht, und die hlines durch "bessere" Trennlinien aus dem booktabs-Paket ersetzt:


Hallo Hakaze,

danke für den Tipp! Mit deinen Anpassungen sieht die Tabelle auch gleich viel entspannter aus und nicht so zusammen gequetscht. Ist es aber damit auch möglich durchgehende vertikale Linien zu zeichnen? Denn wenn ich das mit den üblichen || versuche werden die Linien immer bei jeder horizontalen Linie unterbrochen.

Grüße, Letscho

bobmalaria
15-11-2011, 17:38
hi,

die caption bei einer longtable-umgebung waere am sinnvollsten ganz oben ueber der tabelle aufgehoben. sonst muss ich eventuell 3 seiten vorblaettern um nachzusehen was das jetzt fuer eine tabelle ist.

das ist eigentlich auch in praktisch allen buechern so die ich kenne

vertikale linien verden idR geaechtet und als dem lesefluss hinderlich betrachtet. wenn du sie verwenden willst, dann kannst du \midrule, \bottomrule usw nicht mehr verwenden. tabu hat dafuer eventuell einen eigenen mechanisms. in kombination mit \hline geht es sicher.
versuche aber uaf vertikale linen und eine gitternnetz-struktur zu verzichten.

gruss

letscho84
15-11-2011, 17:43
Was mir auch noch eingefallen ist:

Wie verhält es sich mit mehrzeiligen Kopfzeilen. Ich habe versucht mit folgendem Bsp einen mehrzeiligen Tabellkopf zu erstellen.



\documentclass[a4paper, 11pt, oneside,]{scrbook}
\usepackage[latin1]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[dvipsnames]{xcolor}
\usepackage{longtable,tabu,booktabs,lmodern,lipsum }


\usepackage{multirow}

\begin{document}

\begin{longtabu}{ccc}
\toprule
\multirow{2}{*}{\textbf{Massenstrom}} & \multicolumn{2}{c}{\textbf{Druckverlust [bar]} \\ \midrule
& \textit{LMP-103S} & \textit{Hydrazin} \\ \midrule
\endfirsthead
\toprule
\multirow{2}{*}{\textbf{Massenstrom}} & \multicolumn{2}{c}{\textbf{Druckverlust [bar]} \\ \midrule
& \textit{LMP-103S} & \textit{Hydrazin} \\ \midrule
\endhead
\midrule \multicolumn{3}{r}{Fortsetzung auf der nächsten Seite}\\
\endfoot
\\[-1.8ex]
\endlastfoot
0,1 & 0,0099 & 0,0123 \\
0,3 & 0,0892 & 0,1103 \\
0,5 & 0,2478 & 0,3065 \\
0,7 & 0,4857 & 0,6007 \\
1 & 0,9912 & 1,2258 \\
\end{longtable}

\end{document}


Wenn ich dies aber kompelieren möchte stoppt Latex sofort und ich weiß nicht woran es liegt.

Der Tabellenkopf soll ähnlich dem Anhang aussehen.

Grüße, Letscho

hakaze
16-11-2011, 08:45
Schrittweises Auskommentieren (siehe auch hier (http://www.minimalbeispiel.de/mini.html)) führt zu den Übeltätern: einer fehlenden schließenden Klammer bei multicolumn und einem "\begin{longtabu} ... \end{longtable}". Für Linien über einige Spalten gibt es cmdirules im booktabs-Paket.

Hier mal mein Bespiel:
\documentclass[a4paper, 11pt, oneside,]{scrbook}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}

\usepackage[dvipsnames]{xcolor}
\usepackage{siunitx,longtable,multirow,tabu,bookta bs,lmodern,lipsum}
\sisetup{locale=DE}
\begin{document}

\begin{longtabu}{SSS}
\toprule
\multirow{2}{*}{\textbf{Massenstrom}} & \multicolumn{2}{c}{\textbf{Druckverlust / bar}} \\ \cmidrule(l){2-3}
& \textit{LMP-103S} & \textit{Hydrazin} \\ \midrule
\endfirsthead
\toprule
\multirow{2}{*}{\textbf{Massenstrom}} & \multicolumn{2}{c}{\textbf{Druckverlust / bar}} \\ \cmidrule(l){2-3}
& \textit{LMP-103S} & \textit{Hydrazin} \\ \midrule
\endhead
\midrule \multicolumn{3}{r}{Fortsetzung auf der nächsten Seite}\\
\endfoot
\bottomrule
\endlastfoot
0,1 & 0,0099 & 0,0123 \\
0,3 & 0,0892 & 0,1103 \\
0,5 & 0,2478 & 0,3065 \\
0,7 & 0,4857 & 0,6007 \\
1 & 0,9912 & 1,2258 \\
\end{longtabu}

\end{document}Ich habe mir auch die Freiheit genommen, siunitx für die Aurichtung der Zahlen in den S-Spalten zu verwenden.

letscho84
16-11-2011, 16:43
Danke für den Tipp! Ich habe dann auch gesehen, dass ich beim übertragen des Minimalbsp einen Fehler hatte.

Ich glaube aber ich bleibe beim unit Paket...mal sehen.

Was mir noch aufgefallen ist, gibt es eine Möglichkeit diese Tabelle einen floating Umgebung zu setzen? Soll heißen mit:



...
\begin{table}[htb]
\begin{tabular}
...
\end{tabular}
\end{table}


lassen sich ja Tabellen erzeugen, die LaTeX selbst an die "richtige" Stelle setzt. Ist das mit longtabu auch möglich? Ich habe es jedenfalls nicht hinbekommen.

Vielen Dank schon jetzt für eure Mühen.

Grüße, Letscho

bobmalaria
16-11-2011, 16:45
hi,

longtable floaten aus prinzip nicht. du musst entscheiden wo du deinen text fuer 2 oder 3 seiten unterbrechen willst. vermutlich eher am ende des abschnitttes oder im appendix. diese aufgabe kann dir nicht abgenommen werden.

gruss

letscho84
20-11-2011, 17:17
hi,

longtable floaten aus prinzip nicht. du musst entscheiden wo du deinen text fuer 2 oder 3 seiten unterbrechen willst. vermutlich eher am ende des abschnitttes oder im appendix. diese aufgabe kann dir nicht abgenommen werden.

gruss

MIST!

Ich dachte mir schon so etwas. Ist es denn möglich LaTeX zu sagen, dass wenn der Float eine bestimmte Seitenlänge überschreitet er ihn an einer vorher definierten Stelle trennen kann? Mir geht es dabei nur um längere Tabellen, die ich gerne innerhalb des Fließtextes meiner Arbeit unterbringen möchte.

Bzw. Kann ich dem tabu Packet dies sagen. Also in der Präambel festlegen wo umgebrochen werden kann wenn die Seitenlänge überschritten wird?

Grüße, Letscho