Seite 1 von 1

Zentrierung innerhalb von tabularx

Verfasst: Mi 28. Nov 2012, 11:26
von mr. edd
Hallo zusammen,

ich habe das Problem, dass die Zentrierung in einer tabularx-Umgebung in einigen Zellen Mist baut.

Konkret geht es mir darum, dass die vertikale Zentrierung in Zeile 1 funktioniert, in Zeile zwei aber nicht mehr. (Vgl. die vertikale Ausrichtung von B2 und C2) Ebenso funktioniert die horizontale Zentrierung in C1, in C2 aber nicht mehr.

Kennt einer das Problem? Oder noch besser: Hat jemand eine Lösung dafür?
\documentclass[12pt,paper=a4]{scrartcl}
\usepackage{xunicode,fontspec,xltxtra}  % <-- XeLaTeX
\usepackage{tabularx}
\usepackage{array}
\setmainfont[BoldFont={Arial}]{Arial}  % <-- XeLaTeX

\newcolumntype{Z}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}
\begin{tabularx}{\textwidth}{|m{1ex}||Z{1em}|X|Z{1.5cm}|Z{1.5cm}|}
\hline
 & A & B & C & D\\\hline \hline
1 & A & BBBBB & CCCCC\newline 11111 & D \\\hline
2 & 1 & 1 \newline 2 & lorem\newline ipsum & ipsum \\\hline
\end{tabularx}

\end{document}
Ich verwende XeLaTeX. Wer das normale LaTeX verwendet, kann die beiden markierten Zeilen einfach auskommentieren. Der Effekt tritt bei beiden Compilern auf. Ich weiß, dass die Tabelle zu breit ist. Im Rahmen eines Minimalbeispiel habe ich aber auf alles unnötige zum Reproduzieren des Fehlers verzichtet.

Das generierte PDF kann ich leider nicht anhängen, da ich von der Forensoftware einen Upload Error bekomme. (Kann das Attachment ./files/tabellentest_144.pdf nicht hochladen.)

Viele Grüße
Christoph

Verfasst: Mi 28. Nov 2012, 11:36
von Noch so einer
Ohne Test, da gerade nicht an einem entsprechend ausgestatteten Rechner: In der array-Anleitung bezüglich \raggedright, \raggedleft, \centering in der letzten Spalte nachlesen! Es gibt da einen Konflikt mit dem Tabellenzeilenende, der u. a. mit \tabularnewline behoben werden kann.

Verfasst: Mi 28. Nov 2012, 12:19
von mr. edd
Danke für den Hinweis auf \tabularnewline. Damit habe ich jetzt das Problem mit der horizontalen Zentrierung behoben.

Hier ist das neue Minimalbeispiel, welches immer noch das Problem hat, dass die vertikale Zentrierung in Zeile zwei nicht stimmt.
\documentclass[12pt,paper=a4]{scrartcl}
\usepackage{xunicode,fontspec,xltxtra}  % <-- XeLaTeX
\usepackage{tabularx}
\usepackage{array}
\setmainfont[BoldFont={Arial}]{Arial}  % <-- XeLaTeX

\newcolumntype{Z}[1]{>{\centering}m{#1}}

\begin{document}
\begin{tabularx}{\textwidth}{|m{1ex}||Z{1em}|X|Z{1.5cm}|Z{1.5cm}|}
\hline
 & A & B & C & D \tabularnewline\hline \hline
1 & A & BBBBB & CCCCC\\ 11111 & D \tabularnewline\hline
2 & 1 & 1 \newline 2 & lorem\\ ipsum & ipsum \tabularnewline\hline
\end{tabularx}

\end{document}

Verfasst: Mi 28. Nov 2012, 13:04
von esdd
Hallo,

X-Spalten werden analog zu p-Spalten gesetzt. In deinem Beispiel wird deshalb deren 1.Zeile vertikal zentriert zu den m-Spalten ausgegeben. Aber die X-Spalte kann so umdefiniert werden, dass sie ebenfalls wie eine m-Spalte gesetzt wird:
\documentclass[12pt,paper=a4]{scrartcl} 
\usepackage{xunicode,fontspec,xltxtra}  % <-- XeLaTeX 
\usepackage{tabularx} 
\usepackage{array} 
\setmainfont[BoldFont={Arial}]{Arial}  % <-- XeLaTeX 

\newcolumntype{Z}[1]{>{\centering}m{#1}}

\begin{document}

{\renewcommand\tabularxcolumn[1]{m{#1}}%
  \noindent%
  \begin{tabularx}{\textwidth}{|m{1ex}||Z{1em}|X|Z{1.5cm}|Z{1.5cm}|} 
    \hline 
     & A & B & C & D \tabularnewline\hline \hline 
    1 & A & BBBBB & CCCC\\ 11111 & D \tabularnewline\hline 
    2 & 1 & 1 \newline 2 & lorem\\ ipsum & ipsum \tabularnewline\hline 
  \end{tabularx}%
}

\end{document}
Gruß
Elke

Verfasst: Mi 28. Nov 2012, 13:56
von mr. edd
Super! Mit der Umdefinition der X-Spalte sieht es aus wie geplant.

Der Hinweis, dass p-Spalten ihre erste Zeile vertikal mittig ausrichten war mir neu.

Gruß
Christoph