表:列自動寬度垂直和水平居中

表:列自動寬度垂直和水平居中

我正在嘗試找到一種方法,該方法允許我擁有具有自動寬度的列,這些列也以水平和垂直方向居中,就像僅居中tabularxXcolumntype 一樣。

這是我到目前為止嘗試過的:

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

在此輸入影像描述 在此輸入影像描述

第二個已經幾乎是我想要的,只是缺少第三列的垂直居中。如何解決這個問題?

答案1

對於垂直居中,您需要一m列而不是一p列位於後面X

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

答案2

只需使用該makecell包及其\thead命令:

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

在此輸入影像描述

請注意,使用 makecell,您可以輕鬆格式化頭部單元格的內容。讓我指出,您不應該使用帶有booktabs: 的垂直線,如您所見,它們不會切割水平線。

相關內容