具有完全相同宽度和多列的表格单元格

具有完全相同宽度和多列的表格单元格

我尝试设计一个具有一些非常具体的偏好的表格:

  • 表格应该横跨整个宽度

  • 每个单元格可以有不同的对齐方式

  • 每个单元格都有完全相同的宽度

  • 有些单元格是多列单元格,2 个组合单元格的宽度应与 2 个单个单元格的宽度完全相同

以下是我尝试过的一小部分示例:

\documentclass[]{article}

\usepackage[a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm, headsep=5mm, footskip=10mm, headheight=25mm]{geometry}

\usepackage{tabularx}

\begin{document}
\noindent
\begin{table}[h!]
    \begin{tabularx}{\textwidth}{|X|X|X|X|} \hline
        \multicolumn{3}{|l|}{3 cells left}  & \multicolumn{1}{|r|}{1 cell right} \\ \hline
        \multicolumn{1}{|r|}{1 cell right}  & \multicolumn{3}{|l|}{3 cells left} \\ \hline
        \multicolumn{1}{|r|}{1 cell right}  & \multicolumn{1}{|r|}{1 cell right} & \multicolumn{2}{|r|}{2 cells right} \\ \hline
        \multicolumn{1}{|r|}{1 cell right}  & \multicolumn{1}{|r|}{1 cell right} & \multicolumn{1}{|r|}{1 cell right}   & \multicolumn{1}{|r|}{1 cell right} \\ \hline 
    \end{tabularx}         
\end{table}

\end{document}

此示例中的第一列明显小于其他列。我真的希望有人能帮助我。

答案1

您的问题源于这样一个事实:您的表格定义了 4 个 X 列,但实际上却没有。只需重新定义 X 列类型以确保右对齐,您就会得到一个看起来像您想要的表格,以及更简单的代码。我还在 \multicolumns 中隐藏了多余的垂直线:

\documentclass[a4paper]{article}

\usepackage[top=25mm, hmargin=25mm, bottom=20mm, headsep=5mm, footskip=10mm, headheight=25mm]{geometry}%

\usepackage{tabularx}
\renewcommand{\tabularxcolumn}[1]{>{\raggedleft\arraybackslash}m{#1}}

\begin{document}

\begin{table}[!h]
    \begin{tabularx}{\linewidth}{|X|X|X|X|}
    \hline
        \multicolumn{3}{|l|}{3 cells left} & 1 cell right \\
         \hline
        1 cell right & \multicolumn{3}{l|}{3 cells left} \\
        \hline
        1 cell right & 1 cell right & \multicolumn{2}{r|}{2 cells right} \\
        \hline
        1 cell right & 1 cell right & 1 cell right & 1 cell right \\
        \hline
    \end{tabularx}
\end{table}

\end{document} 

在此处输入图片描述

答案2

以下是使用\hsize

\documentclass[]{article}

\usepackage[a4paper, top=25mm, left=25mm, right=25mm, bottom=20mm, headsep=5mm, footskip=10mm, headheight=25mm]{geometry}

\usepackage{tabularx}
\begin{document}
\noindent
\begin{table}[h!]
    \begin{tabularx}{\textwidth}{|X|X|X|X|} \hline
        \multicolumn{3}{|>{\hsize=3\hsize}X|}{3 cells left}  &
           \multicolumn{1}{>{\raggedleft}X|}{1 cell
                  right} \\ \hline
        \multicolumn{1}{|>{\raggedleft}X|}{1 cell right}  &
            \multicolumn{3}{>{\hsize=3\hsize}X|}{3 cells left} \\ \hline
        \multicolumn{1}{|>{\raggedleft}X|}{1 cell right}  &
            \multicolumn{1}{>{\raggedleft}X|}{1 cell right} &
%               \multicolumn{1}{X}{} &
                \multicolumn{2}{>{\hsize=\dimexpr2\hsize+2\tabcolsep+\arrayrulewidth\relax\raggedleft}X|}{2 cells
                 right} \\ \hline
        \multicolumn{1}{|>{\raggedleft}X|}{1 cell right}  &
           \multicolumn{1}{>{\raggedleft}X|}{1 cell right} &
             \multicolumn{1}{>{\raggedleft}X|}{1 cell right}   &
               \multicolumn{1}{>{\raggedleft}X|}{1 cell right} \\ \hline
    \end{tabularx}
\end{table}

\end{document}

在此处输入图片描述

相关内容