PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : supertabular und horizontales Zentrieren



miwieg
08-04-2010, 14:21
Hallo!

Ich habe eine Tabelle mit supertabular kodiert, da die Spaltenweite begrenzt sein soll:

Code:
\begin{supertabular}{|p{1.0cm}|c|c|c|c|} \hline
ziemlich langer Text in dieser Zelle & a & b & c \\ \hline
kürzerer Text & a & b & c \\ \hline
\end{supertabular}

Nun will ich den Inhalt der ersten Spalte horizontal (genau wie die übrigen Spalten) zentrieren. Was muss ich an der Tabelle abändern?

Vielen Dank im Voraus.

lockstep
08-04-2010, 14:28
\documentclass{article}

\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{array}
\usepackage{supertabular}

\begin{document}

\begin{supertabular}{|>{\centering\hspace{0pt}}p{1.0cm}|c|c|c|c|} \hline
ziemlich langer Text in dieser Zelle & a & b & c \\ \hline
kürzerer Text & a & b & c \\ \hline
\end{supertabular}

\end{document}


lockstep

miwieg
08-04-2010, 14:41
Danke für dem Code!
Ich möchte dies in einer komplexeren Tabelle für mehrere Spalten definieren.
Ab einer gewissen Anzahl an Spalten, die

>{\centering\hspace{0pt}} als Prefix erhalten, gibt es eine Fehlermeldung.
Woran kann das liegen?

lockstep
08-04-2010, 14:52
Bin überfragt. Probier noch den folgenden Trick mit neu definiertem Spaltentyp - wenn das nicht hilft, erstelle ein Minimalbeispiel, das den Fehler demonstriert, und hoffe auf TabellenexpertInnen.



\documentclass{article}

\usepackage[latin9]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{array}
\usepackage{supertabular}

\newcolumntype{x}[1]{>{\centering\hspace{0pt}}p{#1}}

\begin{document}

\begin{supertabular}{|x{1.0cm}|c|c|c|c|} \hline
ziemlich langer Text in dieser Zelle & a & b & c \\ \hline
kürzerer Text & a & b & c \\ \hline
\end{supertabular}

\end{document}


lockstep

voss
08-04-2010, 15:22
Ich habe eine Tabelle mit supertabular kodiert, da die Spaltenweite begrenzt sein soll:

Code:
\begin{supertabular}{|p{1.0cm}|c|c|c|c|} \hline
ziemlich langer Text in dieser Zelle & a & b & c \\ \hline
kürzerer Text & a & b & c \\ \hline
\end{supertabular}

Nun will ich den Inhalt der ersten Spalte horizontal (genau wie die übrigen Spalten) zentrieren. Was muss ich an der Tabelle abändern?



\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{array}
\usepackage{supertabular,ragged2e}

\newcolumntype{C}[1]{>{\Centering\hspace{0pt}}p{#1}}

\begin{document}

\begin{supertabular}{|C{1.0cm}|c|c|c|c|} \hline
ziemlich langer Text in dieser Zelle & a & b & c \\ \hline
kürzerer Text & a & b & c \\ \hline
\end{supertabular}

\end{document}

Herbert

mechanicus
08-04-2010, 15:28
Hi,

Anmerkung:




\newcolumntype{x}[1]{>{\centering\hspace{0pt}}p{#1}}

ist eher suboptimal. Entweder die Lösung von Herbert, welche ragged2e verwendet oder:


\newcolumntype{x}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}


Gruß
Marco

lockstep
08-04-2010, 15:29
@voss: Warum ist \Centering hier gegenüber \centering vorzuziehen?

lockstep

EDIT: Zur Klarstellung: Mein Lösungsvorschlag basierte auf S. 255 der deutschen Ausgabe des LaTeX-Begleiters - dort (nur) in einer tabular-Umgebung verwendet, aber ohne Erwähnung von Nebenwirkungen.

mechanicus
08-04-2010, 15:48
Hi,

der Unterschied \Centering und \centering basiert nicht auf der tabular-Umgebung, sondern auf der Spaltendefinition.

Folgendes Beispiel ( die Spaltendefinition entspricht dem Anfangsbuchstaben unsere Namen :D ) Wenn du L auskommentierst, funzt es.


\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}

\usepackage{array}
\usepackage{ragged2e}

\newcolumntype{L}[1]{>{\centering\hspace{0pt}}m{#1}}
\newcolumntype{H}[1]{>{\Centering\hspace{0pt}}m{#1}}
\newcolumntype{M}[1]{>{\centering\arraybackslash\hspace{0pt}}m{#1}}
\begin{document}

\begin{tabular}{|c|c|c|L{1.0cm}|} \hline
a & b & c & ziemlich langer Text in dieser Zelle \\ \hline
a & b & c & kürzerer Text \\ \hline
\end{tabular}

\vspace{2\baselineskip}

\begin{tabular}{|c|c|c|H{1.0cm}|} \hline
a & b & c & ziemlich langer Text in dieser Zelle \\ \hline
a & b & c & kürzerer Text \\ \hline
\end{tabular}

\vspace{2\baselineskip}

\begin{tabular}{|c|c|c|M{1.0cm}|} \hline
a & b & c & ziemlich langer Text in dieser Zelle \\ \hline
a & b & c & kürzerer Text \\ \hline
\end{tabular}

\end{document}

Siehe hierzu Doku array.

Gruß
Marco

lockstep
08-04-2010, 15:59
Habe jetzt nochmal im LaTeX-Begleiter nachgelesen (S. 254f): Demnach definiert \raggedright \\ um, wogegen \arraybackslash hilft. Von \centering ist in diesem Zusammenhang nicht die Rede. Aber egal - werde mir die array-Doku ansehen.

lockstep

u_fischer
08-04-2010, 16:11
Demnach definiert \raggedright \\ um, wogegen \arraybackslash hilft. Von \centering ist in diesem Zusammenhang nicht die Rede

\centering und \raggedleft sind vergleichbar, sie haben das gleiche Problem mit \\.

http://www.mrunix.de/forums/showpost.php?p=309008&postcount=6

voss
08-04-2010, 16:23
der Unterschied \Centering und \centering basiert nicht auf der tabular-Umgebung, sondern auf der Spaltendefinition.


\Centering erlaubt vor allen Dingen eine Trennung, was in schmalen Spalten sinnvoll ist!

Herbert

miwieg
09-04-2010, 11:46
Hallo noch einmal!

Ich habe gerade die Variante


\newcolumntype{x}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}

ausprobiert. Die läuft durch. Vielen Dank.

voss
09-04-2010, 12:15
Hallo noch einmal!

Ich habe gerade die Variante


\newcolumntype{x}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}

ausprobiert. Die läuft durch. Vielen Dank.

"durchlaufen" ist nicht dasselbe wie sinnvoll ...

Herbert