Zentrierung innerhalb von tabularx

Tabellen und Grafiken erstellen und anordnen


mr. edd
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mi 28. Nov 2012, 10:52
Wohnort: Neuhausen a.d.F.

Zentrierung innerhalb von tabularx

Beitrag 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

Noch so einer

Beitrag 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.

mr. edd
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mi 28. Nov 2012, 10:52
Wohnort: Neuhausen a.d.F.

Beitrag 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}

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag 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

mr. edd
Forum-Newbie
Forum-Newbie
Beiträge: 3
Registriert: Mi 28. Nov 2012, 10:52
Wohnort: Neuhausen a.d.F.

Beitrag 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

Antworten