Archiv verlassen und diese Seite im Standarddesign anzeigen : Zelle vertikal zentrieren in tabularx
Hallo zusammen,
es handelt sich um ein oft diskutiertes Problem, bislang habe ich jedoch noch keine Lösung gefunden: Ich möchte in einer tabularx-Tabelle einen Zelleinhalt vertikal zentrieren. Laut Doku lässt sich dies nicht über \newcolumntype erreichen, was letztlich auch logisch ist: Grundsätzlich entspricht eine X-Spalte p{}, ich hätte sie aber gerne als m{}, also vertikal zentriert. Dies lässt sich nicht über einen auf X basierenden newcolumntype erreichen. Die Doku empfiehlt daher: \renewcommand{\tabularxcolumn}[1]{m{#1}}.
Aber: Ich möchte meine X-Spalten nicht immer vertikal zentriert haben, sondern nur in speziellen Situationen. Wenn ich den renewcommand in der Präambel nutze, gilt die Umdefinition jedoch immer.
Ich freue mich auf Vorschläge!
Gruß
Sebastian
es handelt sich um ein oft diskutiertes Problem, bislang habe ich jedoch noch keine Lösung gefunden: Ich möchte in einer tabularx-Tabelle einen Zelleinhalt vertikal zentrieren. Laut Doku lässt sich dies nicht über \newcolumntype erreichen, was letztlich auch logisch ist: Grundsätzlich entspricht eine X-Spalte p{}, ich hätte sie aber gerne als m{}, also vertikal zentriert. Dies lässt sich nicht über einen auf X basierenden newcolumntype erreichen. Die Doku empfiehlt daher: \renewcommand{\tabularxcolumn}[1]{m{#1}}.
Aber: Ich möchte meine X-Spalten nicht immer vertikal zentriert haben, sondern nur in speziellen Situationen. Wenn ich den renewcommand in der Präambel nutze, gilt die Umdefinition jedoch immer.
dann definierst du es nach einer Tabelle wieder um ...
Herbert
Grundsätzlich eine gute Idee, aber ich müsste den Befehl dann innerhalb von Tabellen um- und wieder zurückdefinieren, da sich mein Wunsch nach vertikaler Zentrierung auch auf einzelne Zellen bezieht. Und ein renewcommand innerhalb einer Tabelle liefert "missplaced \omit"-Fehlermeldungen. Wie kann ich Code innerhalb einer Tabelle bringen?
Sebastian
Stefan_K
16-05-2008, 01:49
Hallo Sebastian,
für spezielle Formatierung einzelner Zellen kannst Du \multicolumn (http://www.weinelt.de/latex/multicolumn.html) verwenden. Über eine einzige Spalte, als letzten Parameter für den Inhalt kannst Du eine \parbox angeben, dessen Inhalt Du vertikal zentrieren lässt.
Viele Grüße,
Stefan
Hallo Stefan,
vielen Dank für den Tipp, das hatte ich auch versucht. Das Problem ist jedoch, dass der Inhalt der parbox zwar vertikal zentriert werden kann, aber ja nicht die parbox in der Zelle selbst. Somit ist mein Problem damit nicht gelöst. Hier ein MB, wobei die Texte "ZZZ" vertikal zentriert werden sollen.
\documentclass{scrbook}
\usepackage{tabularx}
% Zeilenumbruch und linksbündig in tabularx:
\newcolumntype{V}{>{\raggedright\arraybackslash}X}
% Zeilenumbruch und zentriert in tabularx:
\newcolumntype{Z}{>{\centering\arraybackslash}X}
\usepackage{booktabs}
\begin{document}
\begin{table}
\begin{tabularx}{\linewidth}{VZZ}
\toprule
& \textbf{Head 1}: Unsicherheit A & Head 2: Unsicherheit B\\
\cmidrule(lr){1-3}
\textbf{Head 3}: Aktives Verhalten, Beeinflussung von Wahrscheinlichkeitsurteilen & \multicolumn{2}{c}{\textbf{ZZZ}}\\
\cmidrule(lr){1-3}
Head 4: Passives Verhalten, fixe Wahrscheinlichkeitsurteile & \multicolumn{2}{c}{ZZZ}\\
\bottomrule
\end{tabularx}
\end{table}
\end{document}
Die Parbox hilft dabei nicht, glaube ich. Oder irre ich mich? Mein Test führte nicht zu einer vertikalen Zentrierung.
Gruß
Sebastian
Die Parbox hilft dabei nicht, glaube ich. Oder irre ich mich? Mein Test führte nicht zu einer vertikalen Zentrierung.
\documentclass{scrbook}
\usepackage{array,ragged2e,calc}
% Zeilenumbruch und linksbündig in tabularx:
\newcolumntype{V}{>{\RaggedRight}X}
% Zeilenumbruch und zentriert in tabularx:
\newcolumntype{P}{>{\RaggedRight}p{0.33\linewidth-2\tabcolsep}}
\newcolumntype{M}{>{\RaggedRight}m{0.33\linewidth-2\tabcolsep}}
\newcolumntype{C}{@{}>{\Centering}m{0.66\linewidth-2\tabcolsep}@{}}
\usepackage{booktabs}
\begin{document}
\begin{tabular}{@{}MPP@{}}\toprule
& \textbf{Head 1}: Unsicherheit A & Head 2: Unsicherheit B\\ \midrule
\textbf{Head 3}: Aktives Verhalten, Beeinflussung von Wahrscheinlichkeitsurteilen
& \multicolumn{2}{C}{\textbf{ZZZ}}\\\midrule
Head 4: Passives Verhalten, fixe Wahrscheinlichkeitsurteile
& \multicolumn{2}{C}{ZZZ}\\\bottomrule
\end{tabular}
\end{document}
Herbert
Wie von Herbert bekannt: eine wunderbare Lösung! So werde ich es machen - tabularx brauche ich bei gerade mal drei gleich großen Spalten tatsächlich nicht.
Vielen Dank!
Sebastian
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.