表格:列自动宽度垂直和水平居中

表格:列自动宽度垂直和水平居中

我正在尝试寻找一种方法,使我能够拥有自动宽度的列,这些列也在水平和垂直方向上居中,就像tabularxX类型居中一样。

这是我迄今为止尝试过的:

\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:正如您所见,它们不会切断水平线。

相关内容