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