PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit Tabelle - ltablex



ooze
23-09-2010, 17:12
Moin,

ich versuche mir gerade eine 5-spaltige Tabelle zusammenzufrickeln, leider mit mäßigem Erfolg. Da die Tabelle größer ist, als dass sie auf eine einzelne Seite passt, wollte ich das zunächst mit longtable machen. Da ich aber möchte, dass die Tabellenbreite der Seitenbreite entspricht, habe ich mal hier gesucht und bin dadurch auf das Paket "ltablex" gestoßen, welches leider nicht Bestandteil von Tex Live ist. Leider ist die Dokumentation dazu recht knapp und besteht quasi nur aus einem Beispiel. In diesem Beispiel verstehe ich eniges nicht. Die Fehlermeldung die ich erhalte ist

! Misplaced \noalign.
\hline ->\noalign
{\ifnum 0=`}\fi \hrule \@height \arrayrulewidth \futurelet...
l.1677 \end{tabularx}
Leider kann ich damit überhaupt nichts anfangen.

Hier mal mein Minimalbeispiel (ACHTUNG: nicht lauffähig)

\documentclass{article}
\usepackage{ltablex}

\begin{document}
\begin{tabularx}{\linewidth}%
{ % Spalte 1 autosized ragged left
>{\setlength{\hsize}{0.5\hsize}\raggedleft\arraybac kslash}X%
% Spalte 2 default centered
c%
% Spalte 3 autosized ragged left
>{\setlength{\hsize}{0.5\hsize}\raggedleft\arraybac kslash}X%
% Spalte 4 autosized ragged left
>{\setlength{\hsize}{1.0\hsize}\raggedleft\arraybac kslash}X%
% Spalte 5 default centered
c}
\caption{lalalalalalalala}\\
\label{tab:tabelle_symmetriegruppen}
\hline
foo1 & foo2 & foo3 & foo4 & foo5\\
\hline
\hline
\endfirsthead
\hline
bar1 & bar2 & bar3 & bar4 & bar5\\
\hline
\hline
\endhead

\hline
\hline
foot1 & foot2 & foot3 & foot4 & foot5\\
\hline
\endfoot

\hline
\hline
Lfoot1 & Lfoot2 & Lfoot3 & Lfoot4 & Lfoot5\\
\hline
\endlastfoot

test 1 & test 2 & test 3 & test 4 & test5\\

\end{tabularx}
\end{document}

Die Spaltenbreiten sollen wie folgt gestaltet sein:
Spalte 1: automatisch linksbündig
Spalte 2: automatisch zentriert
Spalte 3: doppelt so breit wie Spalte 1
Spalte 4: doppelt so breit wie Spalte 1
Spalte 5: automatisch

Insbesondere den \hsize Befehl verstehe ich nicht. Ich habe etwas gegoogelt und mir scheint es so, als ob die Summe der \hsize Längen immer 2 ergeben muss, allerdings hab ich immer nur Beispiele mit weniger als 5 Spalten gefunden.

Ich freue mich über alle Antworten.

ooze
23-09-2010, 17:33
ok, nach weiterem herumspielen bin ich wohl darauf gekommen, dass

a) das \label{} ebenfalls mit \\ abgeschlossen werden muss
b) die Summe der Werte für \hsize gleich der Anzahl der X-Spalten sein muss

trotzdem Danke für's lesen

ooze
23-09-2010, 18:02
Nun hab ich doch noch ein Problem:
wie kann ich innerhalb einen Zeilenumbruch bzw. Trennung erzwingen?

Das Problem ist, dass der Inhalt der Zellen zwar immer nur aus einer zweistelligen Zahl besteht, also ein sehr kurzer text, aber die Beschriftung der Spalte ein längeres Wort ("Klassennummer") sein soll. Die Tabelle würde natürlich schöner aussehen wenn die Spalte nicht so breit wie "Klassennummer" ist, daher würde ich dort gerne

"Klassen-
nummer"

stehen haben.

Geht das irgendwie? Hier mal das geänderte und lauffähige Minimalbeispiel:

\documentclass{article}
\usepackage{ltablex}
\tracingtabularx
\begin{document}
{\normalsize
\begin{tabularx}{\textwidth}%
{ % Spalte 1 autosized ragged left
>{\setlength{\hsize}{0.6\hsize}\raggedleft\arraybac kslash}X%
% Spalte 2 default centered
c%
% Spalte 3 autosized ragged left
>{\setlength{\hsize}{1.2\hsize}\raggedleft\arraybac kslash}X%
% Spalte 4 autosized ragged left
>{\setlength{\hsize}{1.2\hsize}\raggedleft\arraybac kslash}X%
% Spalte 5 default centered
c}
\caption{Tritratrallala}\\
\label{tab:tabelle_symmetriegruppen}\\
\hline
System & Klassennummer & Kristallklasse & Transformationen & $n$\\
\hline
\hline
\endfirsthead
\hline
bar1 & bar2 & bar3 & bar4 & bar5\\
\hline
\hline
\endhead

\hline
\hline
foot1 & foot2 & foot3 & foot4 & foot5\\
\hline
\endfoot

\hline
\hline
Lfoot1 & Lfoot2 & Lfoot3 & Lfoot4 & Lfoot5\\
\hline
\endlastfoot

test 1 & test 2 & test 3 & test 4 & test5\\
Triklinisch & 1 & Pedial & I & 1\\
loremipsum & 1 & rhombic-disphenoiidal & a b c d e f g h i j k l m n o p & k\\

\end{tabularx}
}
\end{document}

rais
23-09-2010, 20:58
Moin moin,


Das Problem ist, dass der Inhalt der Zellen zwar immer nur aus einer zweistelligen Zahl besteht, also ein sehr kurzer text, aber die Beschriftung der Spalte ein längeres Wort ("Klassennummer") sein soll. Die Tabelle würde natürlich schöner aussehen wenn die Spalte nicht so breit wie "Klassennummer" ist, daher würde ich dort gerne

"Klassen-
nummer"

stehen haben.



\documentclass{article}
\usepackage{ltablex,ragged2e}
\tracingtabularx
\begin{document}
{\normalsize
\begin{tabularx}{\textwidth}%
{ % Spalte 1 autosized ragged left
>{\setlength{\hsize}{0.6\hsize}\RaggedLeft}X%
% Spalte 2 default centered
>{\Centering\hspace{0pt}}p{4em}%
% Spalte 3 autosized ragged left
>{\setlength{\hsize}{1.2\hsize}\RaggedLeft}X%
% Spalte 4 autosized ragged left
>{\setlength{\hsize}{1.2\hsize}\RaggedLeft}X%
% Spalte 5 default centered
c}
\caption{Tritratrallala}\\
\label{tab:tabelle_symmetriegruppen}\\
\hline
System & Klassennummer & Kristallklasse & Transformationen & $n$\\
\hline
\hline
\endfirsthead
\hline
bar1 & bar2 & bar3 & bar4 & bar5\\
\hline
\hline
\endhead

\hline
\hline
foot1 & foot2 & foot3 & foot4 & foot5\\
\hline
\endfoot

\hline
\hline
Lfoot1 & Lfoot2 & Lfoot3 & Lfoot4 & Lfoot5\\
\hline
\endlastfoot

test 1 & test 2 & test 3 & test 4 & test5\\
Triklinisch & 1 & Pedial & I & 1\\
loremipsum & 1 & rhombic-disphenoiidal & a b c d e f g h i j k l m n o p & k\\

\end{tabularx}
}
\end{document}

schau vllt auch nach ``das erste Wort wird nicht getrennt'' oder so ähnlich.

MfG

ooze
23-09-2010, 23:32
schau vllt auch nach ``das erste Wort wird nicht getrennt'' oder so ähnlich.

Ähm, vielen Dank für die Antwort, aber wenn ich danach suche finde ich genau diesen Eintrag hier. Und warum das erste Wort?

rais
24-09-2010, 00:19
Moin moin,

Ähm, vielen Dank für die Antwort, aber wenn ich danach suche finde ich genau diesen Eintrag hier.

öhhmm,
http://www.mrunix.de/forums/showpost.php?p=282404&postcount=3
http://mrunix.de/forums/showpost.php?p=317155&postcount=2
http://mrunix.de/forums/showpost.php?p=316392&postcount=5
um mal nur drei Beispiele zu nennen ...

Und warum das erste Wort?
Deshalb solltest Du ja danach suchen;-)
BTW: Dein hier verwendeter Begriff `Klassennummer' ist das erste (und einzige) Wort innerhalb einer Tabellenzelle ...
Vergleiche mal


\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\def\x{Klassennummer}
\begin{document}
\parbox{1em}{\x}

\bigskip
\parbox{1em}{\x{} \x}

\bigskip
\parbox{1em}{\hspace{0pt}\x}
\end{document}

MfG

ooze
24-09-2010, 12:10
ok, das Einfügen von \hspace{0pt} hat leider nichts geholfen, es wird nicht getrennt. Ich habe ebenfalls eine Trennstelle manuell angegeben falls TeX das Wort nicht kennt, also:

... & \hspace{0pt}Klassen\-nummer & ...

woran kann das noch liegen?

rais
24-09-2010, 23:53
Moin moin,

ok, das Einfügen von \hspace{0pt} hat leider nichts geholfen, es wird nicht getrennt. Ich habe ebenfalls eine Trennstelle manuell angegeben falls TeX das Wort nicht kennt, also:

... & \hspace{0pt}Klassen\-nummer & ...

woran kann das noch liegen?
c-Spalte?


\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext,array}
\def\x{Klassennummer}
\begin{document}
\begin{tabular}{c}
\x\\
\end{tabular}

\bigskip
\begin{tabular}{>{\centering\arraybackslash}p{1em}}
\x\\
\end{tabular}

\bigskip
\begin{tabular}{>{\centering\arraybackslash\hspace{0pt}}p{1em}}
\x\\
\end{tabular}

\bigskip
\begin{tabular}{c}
\blindtext\\
\end{tabular}

\end{document}

BTW: hast Du mein Beispiel aus Beitrag#4 denn nicht probiert?

MfG