\documentclass{article}
%\usepackage[margin=1in]{geometry}
\usepackage{multirow,tabularx}
\newcolumntype{Y}{>{\centering}X}
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{
*{4}{|m{\dimexpr.25\linewidth-2\tabcolsep}} |
}
\hline
1 & 2 & 3 & 4 \\ \hline
\multicolumn{3}{|Y|}{1-3 centered} & 4 \\ \hline
\multicolumn{2}{|Y|}{1-2 centered} & \multicolumn{2}{Y|}{3-4 centered} \\ \hline
\end{tabularx}
\end{table}
\end{document}
为什么第二行 (multicol 3) 的第一个单元格没有跨 3 列居中,而是像下一行一样仅跨 2 列?
答案1
当您已经定义了列以占据所有行宽时,无需使用tabularx
only 来定义仅在多列中使用的奇怪的内容: 。\newcolumntype{Y}{>{\centering}X}
*{4}{|m{\dimexpr.25\linewidth-2\tabcolsep}} |
一个简单的tabular
多c
列就可以解决问题。
我还添加了一个-1.25\arrayrulewidth
以避免 hbox 过满。该值1.25\arrayrulewidth
是由于1\arrayrulewidth
加上.25\arrayrulewidth
,后者是1\arrayrulewidth
(第 5 条规则的宽度)除以4
(列数)。感谢 Zarko 指出了 的必要性.25
。
\documentclass{article}
\usepackage{array}
\begin{document}
\begin{table}
\begin{tabular}{
*{4}{|m{\dimexpr.25\linewidth-2\tabcolsep-1.25\arrayrulewidth}} |
}
\hline
1 & 2 & 3 & 4 \\
\hline
\multicolumn{3}{|c|}{1-3 centered} & 4 \\ \hline
\multicolumn{2}{|c|}{1-2 centered} & \multicolumn{2}{c|}{3-4 centered} \\
\hline
\end{tabular}
\end{table}
\end{document}
答案2
不那么简单的答案车牌但是它基于使用tabularx
(我对您的问题的评论的改进版本):
\documentclass{article}
\usepackage{tabularx}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcommand\mcc[2]{% shortcut for cells spanned two columns
\multicolumn{2}{#1>{\hsize=\dimexpr2\hsize+2\tabcolsep+1\arrayrulewidth}C|}{#2}}
\newcommand\mccc[2]{% shortcut for cells spanned three columns
\multicolumn{3}{#1>{\hsize=\dimexpr3\hsize+4\tabcolsep+2\arrayrulewidth}C|}{#2}}
%-------------------------------- show page layout, only for test
\usepackage{showframe}
\renewcommand\ShowFrameLinethickness{0.15pt}
\renewcommand*\ShowFrameColor{\color{red}}
%---------------------------------------------------------------%
%\setlength\arrayrulewidth{10pt}
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{|C|C|C|C|}
\hline
1 & 2 & 3 & 4 \\
\hline
\mccc{|}{ \rule{\hsize}{4pt} } & 4 \\
\hline
\mccc{|}{ 1-3 centered } & 4 \\
\hline
\mcc{|}{ \rule{\hsize}{4pt} } & \mcc{}{ \rule{\hsize}{4pt} } \\
\hline
\mcc{|}{ 1-2 centered } & \mcc{}{ 3-4 centered } \\
\hline
\end{tabularx}
\end{table}
\end{document}