表格:在 tabularx 环境中使用多列时行颜色不对齐

表格:在 tabularx 环境中使用多列时行颜色不对齐

如何解决下表中的错位问题?

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage{color, colortbl}
\definecolor{gray_header}{gray}{0.6}
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{@{}>{\raggedright}X| L L L L| L L L L L@{}}
\rowcolor{gray_header}
tab1 & \multicolumn{4}{c}{multicolumn1} & \multicolumn{5}{c}{multicolum2} \\
\rowcolor{gray_header}
 &  & & & & \multicolumn{3}{c}{mulmticolum3} & a  & b \\ \hline
1 & 2& 3& 4& 5& 6& 7& 8& 9& 10\\\hline
\end{tabularx}
\end{table}
\end{document}

答案1

我怀疑你的问题是彩色行的颜色溢出了表格。这是由@{}列规范的开始和结束引起的。如果你将它们删除,表格就会变得很好,即彩色行将不再溢出表格。

为了将彩色行限制为表格宽度,您应该\columncolor{white}....向第一个和最后一个表格的列添加如下内容:

\documentclass{article}
\usepackage{tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage[table]{xcolor}
\definecolor{gray_header}{gray}{0.6}

\begin{document}
    \begin{table}
\begin{tabularx}{\textwidth}{@{}
                            >{\columncolor{white}[0pt][\tabcolsep]}L|
                            *{4}{L} | *{4}{L}
                             >{\columncolor{white}[\tabcolsep][0pt]}L
                            @{}}
\rowcolor{gray_header}
tab1 & \multicolumn{4}{c@{}}{multicolumn1} & \multicolumn{5}{c}{multicolum2} \\
\rowcolor{gray_header}
 &  & & & & \multicolumn{3}{c}{mulmticolum3} & a  & b \\
 \hline
1 & 2& 3& 4& 5& 6& 7& 8& 9& 10\\
\hline
\end{tabularx}
    \end{table}
\end{document}

这使

在此处输入图片描述

(红线表示文本边框)

与您的解决方案相比,现在整个表格位于文本区域(宽度)内,即前两行的彩色区域不会溢出表格(和文本区域)。

答案2

感谢 Phelype Oleinik,我能够通过调整代码来解决这个问题:

\documentclass{article}
\usepackage{tabularx}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage{color, colortbl}
\definecolor{gray_header}{gray}{0.6}
\begin{document}
\begin{table}
\begin{tabularx}{\textwidth}{@{}>{\raggedright}X| L L L L| L L L L L@{}}
\rowcolor{gray_header}
tab1 & \multicolumn{4}{c@{}}{multicolumn1} & \multicolumn{5}{c@{}}{multicolum2} \\
\rowcolor{gray_header}
 &  & & & & \multicolumn{3}{c}{mulmticolum3} & a  & b \\
 \hline
1 & 2& 3& 4& 5& 6& 7& 8& 9& 10\\
\hline
\end{tabularx}
\end{table}
\end{document}

在此处输入图片描述

(红线表示文字边框)

答案3

具有(2021-08-10{NiceTabularX}nicematrix≥ 6.0)。

\documentclass{article}
\usepackage{xcolor}
\definecolor{gray_header}{gray}{0.6}

\usepackage{nicematrix}
\newcolumntype{L}{X[l]}

\begin{document}
\begin{table}
\begin{NiceTabularX}{\textwidth}{@{}L|LLLL|LLLLL@{}}[colortbl-like]
\rowcolor{gray_header}
tab1 & \Block{1-4}{multicolumn1} &&&& \Block{1-5}{multicolum2} \\
\rowcolor{gray_header}
& & & & & \Block{1-3}{multicolum3} &&& a  & b \\
\hline
1 & 2& 3& 4& 5& 6& 7& 8& 9& 10\\
\hline
\end{NiceTabularX}
\end{table}
\end{document}

您需要多次编译(因为nicematrix在后台使用 PGF/Tikz 节点)。

上述代码的输出

相关内容