Archiv verlassen und diese Seite im Standarddesign anzeigen : supertabular und horizontales Zentrieren
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, 15: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
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, 15: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
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, 16: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, 16: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, 16: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, 16: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, 17: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
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
Hallo noch einmal!
Ich habe gerade die Variante
\newcolumntype{x}[1]{>{\centering\arraybackslash\hspace{0pt}}p{#1}}
ausprobiert. Die läuft durch. Vielen Dank.
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
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.