PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : ltxtable: feste Spaltenbreite



Bilbo
15-08-2009, 13:59
Hallo,

wie kann ich mit dem Spaltentyp X feste Spaltenbreiten definieren, so dass diese gesamt inklusive der Spaltentrenner (je 6.0pt) die volle Textbreite einnehmen und nicht über den Rand hinaus laufen? Z. B. soll die erste Spalte 20% einnehmen, die zweite 50% und die dritte 30%. Gebe ich XXX an, nimmt jede Spalte genau 1/3 der Gesamtbreite ein.

Noch besser wäre es, wenn sich die Spaltenbreiten dem Inhalt anpassen mit Berücksichtigung eines automatischen Zeilenumbruches.



\documentclass{article}
\usepackage{booktabs,ltxtable,filecontents}

\begin{filecontents*}{tabelle.tex}
\begin{longtable}[c]{XXX}
\caption{Tabelle ohne Namen} \\
\toprule
Spalte 1 & Spalte 2 & Spalte 3 \\
\midrule
\endfirsthead
\toprule
Spalte 1 & Spalte 2 & Spalte 3 \\
\midrule
\endhead
\bottomrule
\endfoot
\bottomrule
\endlastfoot
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
1 & 2 & 3 \\
4 & 5 & 6 \\
\end{longtable}
\end{filecontents*}

\begin{document}

\LTXtable{\textwidth}{tabelle}

\end{document}


Gruß,
Bilbo

Bilbo
15-08-2009, 14:45
Mit


\begin{longtable}[c]{
>{\setlength\hsize{0.6\hsize}}X
>{\setlength\hsize{1.4\hsize}}X
>{\setlength\hsize{1.0\hsize}}X
}

kann man feste Spaltenbreiten angeben. Soweit so gut. Wieso aber wird die Spaltenbreite bei


\begin{longtable}[c]{XXX}

nicht automatisch dem Inhalt angepasst, sondern beträgt jeweils 0.33\textwidth?

Bilbo

Bilbo
16-08-2009, 09:59
bob, haste mal 'ne Lösung? :D

mechanicus
16-08-2009, 10:14
nicht automatisch dem Inhalt angepasst, sondern beträgt jeweils 0.33\textwidth?
Wie ich hier (http://projekte.dante.de/DanteFAQ/Ltxtable) geschrieben habe, ist ltxtable eine Kombination von longtable und tabularx. Für die Verwendung vom Spaltentyp X ist daher tabularx interessant. Hier werde die Spalten immer gleich verteilt:
http://projekte.dante.de/DanteFAQ/Tabularx

Gruß
Marco

Bilbo
16-08-2009, 10:30
Wie ich hier (http://projekte.dante.de/DanteFAQ/Ltxtable) geschrieben habe, ist ltxtable eine Kombination von longtable und tabularx. Für die Verwendung vom Spaltentyp X ist daher tabularx interessant. Hier werde die Spalten immer gleich verteilt:
http://projekte.dante.de/DanteFAQ/Tabularx

Korrekt :) Aber was ist mit intelligenten Spaltenbreiten, die sich dem Spalteninhalt anpassen? Geht das auch mit X?

mechanicus
16-08-2009, 10:46
Korrekt :) Aber was ist mit intelligenten Spaltenbreiten, die sich dem Spalteninhalt anpassen? Geht das auch mit X?
Nein. Die Spalten, welche sich an den Inhalt Orientieren sind l,c,r + Exoten wie D. Hier sind ja bekanntlich keine Umbrüche möglich. Somit ist auch eine feste breite unnötig.

Mir Vorbehalt: Mein derzeitiger Wissenstand ist so, dass ich keinen Spaltentyp kenne, der einen Zeilenumbruch zulässt und gleichzeitig die Spaltenbreite nach dem Inhalt ausrichtet. Ich bin also der Meinung, dass man in solchen Fällen die Breite vorgeben muss.
(Lasse mich auch gerne eines besseren belehren;))

Gruß
Marco

Bilbo
16-08-2009, 12:46
Hatte ich mir schon fast gedacht. Konnte auch nichts dazu finden was darauf hindeutete. Danke trotzdem.

rafael
15-01-2010, 08:32
Mir Vorbehalt: Mein derzeitiger Wissenstand ist so, dass ich keinen Spaltentyp kenne, der einen Zeilenumbruch zulässt und gleichzeitig die Spaltenbreite nach dem Inhalt ausrichtet. Ich bin also der Meinung, dass man in solchen Fällen die Breite vorgeben muss.
(Lasse mich auch gerne eines besseren belehren;))

Falls man keine Seitenumbrüche braucht hilft das Paket tybulary:http://www.tex.ac.uk/tex-archive/macros/latex/contrib/tabulary/tabulary.pdf


\documentclass{scrartcl}
\RequirePackage{tabulary}

\begin{document}

\begin{tabulary}{\textwidth}{|l|J|}
\hline
\textbf{Spalte1} & \textbf{variable Spalte2} \\
\hline
kurz & kurz2 \\
\hline
kurzer Text & Das ist ein etwas längerer Text, um zu zeigen, dass auch mit
\LaTeX{} eine automatische Spaltenbreite möglich ist. Wie man sieht, wird
die Spaltenbreite automatisch berechnet und der Inhalt an passender Stelle
umgebrochen.\\ \hline
\end{tabulary}

\end{document}