Tabelle: Automatische Spaltenbreite vertikal und horizontal zentriert

Tabelle: Automatische Spaltenbreite vertikal und horizontal zentriert

Ich versuche, eine Methode zu finden, die es mir ermöglicht, Spalten mit automatischer Breite zu haben, die auch in horizontaler und vertikaler Richtung zentriert sind, genau wie der Spaltentyp tabularxvon , Xnur zentriert.

Hier ist also, was ich bisher versucht habe:

\documentclass{article}
\usepackage{tabularx,booktabs}
\newcolumntype{Z}[0]{>{\centering\arraybackslash\let\newline\\\hspace{0pt}}X}%
\begin{document}
\begin{table}
\begin{tabularx}{7cm}{l|X|X}
& long\newline heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\begin{table}
\begin{tabularx}{7cm}{l|Z|Z}
& long\linebreak heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\end{document}

Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

Das Zweite ist schon fast das, was ich will, nur die vertikale Zentrierung der dritten Spalte fehlt. Wie kann ich das beheben?

Antwort1

für die vertikale Zentrierung möchten Sie eine mSpalte und nicht eine pSpalte, hinter der Sie sitzenX

\documentclass{article}
\usepackage{tabularx,booktabs}
\newcolumntype{Z}[0]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}X}%
\renewcommand\tabularxcolumn[1]{m{#1}}
\begin{document}
\begin{table}
\begin{tabularx}{7cm}{l|X|X}
& long\newline heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\begin{table}
\begin{tabularx}{7cm}{l|Z|Z}
& long\linebreak heading 1 & short heading\\
\toprule
row 1 & 2314 & 2134
\end{tabularx}
\end{table}
\end{document}

Antwort2

Verwenden Sie einfach das makecellPaket und seinen \theadBefehl:

        \documentclass{article}
        \usepackage{tabularx,booktabs, makecell}
        \newcolumntype{Z}[0]{>{\centering\arraybackslash\let\newline\\\hspace{0pt}}X}%

        \begin{document}

        \begin{table}
        \begin{tabularx}{7cm}{l|X|X}
        &\thead{ long\\ heading 1} & \thead{short heading}\\
        \toprule
        row 1 & 2314 & 2134
        \end{tabularx}
        \end{table}

        \begin{table}
        \begin{tabularx}{7cm}{l|Z|Z}
        &\thead{long\\ heading 1} & \thead{short heading}\\
        \toprule
        row 1 & 2314 & 2134
        \end{tabularx}
        \end{table}

        \end{document} 

Bildbeschreibung hier eingeben

Beachten Sie, dass Sie mit makecell den Inhalt der Kopfzellen problemlos formatieren können. Ich möchte darauf hinweisen, dass Sie keine vertikalen Linien verwenden sollten booktabs: Wie Sie sehen, schneiden diese die horizontalen nicht.

verwandte Informationen