多列居中和文本换行

多列居中和文本换行

我正在尝试制作一个包含多列的表格,这些多列可以换行,但我希望它们居中对齐。我已使用其他问题中的建议成功让文本换行,但它无法居中,我不知道为什么。

\documentclass{article}

\usepackage{array}
\newcolumntype{D}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}

\begin{document}
\begin{table}[htbp]\centering
\begin{tabular}{l c c c c}
& \multicolumn{2}{D{2cm}}{\textbf{Some Big Words}} & \multicolumn{2}{D{2cm}}{\textbf{More Big Words}} \\
rowname & BlahBlah & BlahBlah & BlahBlah & BlahBlah \\
\end{tabular}
\end{table}
\end{document}

图像

请注意,多列并不位于它们应该跨越的两列的中心,而是偏向左侧。如何将多列居中?

答案1

您的标题在指定的 2cm 宽度内居中,可以c使用嵌套的tabular

在此处输入图片描述

\documentclass{article}

\newcommand\hd[2]{\multicolumn{2}{c}{\bfseries\begin{tabular}{@{}c@{}}#2\end{tabular}}}

\usepackage{array}


\begin{document}
\begin{table}[htbp]\centering
\begin{tabular}{l c c c c}
& \hd{2}{Some Big\\Words} & \hd{2}{More Big\\Words} \\
rowname & BlahBlah & BlahBlah & BlahBlah & BlahBlah \\
\end{tabular}
\end{table}
\end{document}

答案2

由于我不太明白为什么需要 2cm; 的宽度,因此我提出了一个基于makecell包及其\thead命令的非常简单的解决方案,该解决方案允许在单元格中换行并允许对单元格进行通用格式化。此代码是否产生了您想要的结果?

\documentclass{article}
\usepackage{makecell}
\renewcommand\theadfont{\bfseries}

\usepackage{array}

\begin{document}

\begin{table}[htbp]
\centering
\begin{tabular}{l c c c c}
& \multicolumn{2}{c}{\thead{Some Big\\ Words}} & \multicolumn{2}{c}{\thead{More Big\\ Words}} \\
rowname & BlahBlah & BlahBlah & BlahBlah & BlahBlah
\end{tabular}
\end{table}

\end{document} 

在此处输入图片描述

相关内容