具有不同多列跨度的 Tabularx

具有不同多列跨度的 Tabularx
\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

当您已经定义了列以占据所有行宽时,无需使用tabularxonly 来定义仅在多列中使用的奇怪的内容: 。\newcolumntype{Y}{>{\centering}X}*{4}{|m{\dimexpr.25\linewidth-2\tabcolsep}} |

一个简单的tabularc列就可以解决问题。

我还添加了一个-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}

在此处输入图片描述

相关内容