多行交替颜色

多行交替颜色

我有下表:

\begin{table}
\centering
\begin{tabular}{@{}l*2{>{}l}%
  l<{}l@{}}
\toprule[0.5pt]
  & \multicolumn{2}{c}{\head{Method 1}} & \multicolumn{2}{c}{\head{Method 2}}\\
   & Iteration & Approximation & Iteration & Approximation \\
  \cmidrule(lr){2-3}\cmidrule(l){4-5}
  \multirow{4}{*}{System (I)}  &  texto1 & texto2 & texto3 & Texto 4\\
  & texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
%  
  \cmidrule(lr){2-3}\cmidrule(l){4-5}
  \multirow{4}{*}{System (II)} &  texto1 & texto2 & texto3 & Texto 4\\
  & texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
\bottomrule[0.5pt]
\end{tabular}
\caption{Comparison of the methods}
\end{table}

我正在使用该包,\usepackage{xcolor}因为\usepackage[table]{xcolor}返回了一个错误......

我想对表格中的某些行进行着色,具体方法是这样的:

texto1 & texto2 & texto3 & Texto 4\ --->白色

& texto1 & texto2 & texto3 & Texto 4 \ --->灰色

& 文本1 & 文本2 & 文本3 & 文本4 \ --->白色

& texto1 & texto2 & texto3 & Texto 4 \ --->灰色

有什么想法吗?

提前感谢您的评论!

答案1

我不知道您遇到了什么错误,您可以尝试分别加载\usepackage{xcolor}\usepackage{colortbl}

为了获得预期的效果,您需要将\multirow条目放在最后的它们跨越的行,而不是第一行,并使用负数行:

\multirow{-4}{*}{System (I)}

这确保了行的颜色不会覆盖\multirow,参见

然后,在你想要着色的每一行的开头添加

\rowcolor{gray!50} \cellcolor{white}

这将使该行变成灰色,但第一个单元格保持白色。完整代码位于文章底部。

彩色表格

\documentclass{report}
\usepackage{xcolor}
\usepackage{colortbl}
\usepackage{booktabs}
\usepackage{multirow}
\newcommand{\head}[1]{\textnormal{\textbf{#1}}}

\begin{document}



\begin{table}
    \centering
    \begin{tabular}{@{}l*2{l}%
            ll@{}}
        \toprule[0.5pt]
        & \multicolumn{2}{c}{\head{Method 1}} & \multicolumn{2}{c}{\head{Method 2}}\tabularnewline
        & Iteration & Approximation & Iteration & Approximation \tabularnewline
        \cmidrule(lr){2-3}\cmidrule(l){4-5} 
        &   texto1 & texto2 & texto3 & Texto 4\tabularnewline
        \rowcolor{gray!50} \cellcolor{white} & texto1 & texto2 & texto3 & Texto 4 \tabularnewline
        &  texto1 & texto2 & texto3 & Texto 4 \tabularnewline
        \rowcolor{gray!50} \cellcolor{white} \multirow{-4}{*}{System (I)} &  texto1 & texto2 & texto3 & Texto 4 \tabularnewline
        %  
        \cmidrule(lr){2-3}\cmidrule(l){4-5}
        &  texto1 & texto2 & texto3 & Texto 4\tabularnewline
        \rowcolor{gray!50} \cellcolor{white} & texto1 & texto2 & texto3 & Texto 4 \tabularnewline
        &  texto1 & texto2 & texto3 & Texto 4 \tabularnewline
        \rowcolor{gray!50} \cellcolor{white} \multirow{-4}{*}{System (II)} &  texto1 & texto2 & texto3 & Texto 4 \tabularnewline
        \bottomrule[0.5pt]
    \end{tabular}
    \caption{Comparison of the methods}
\end{table}

\end{document}

答案2

xcolor你可以使用带有选项˙[table]`的包的帮助来给行着色(参见姆韦下面)使用宏

    \rowcolors{2}{white}{gray!20}

在表格开始之前。由于\rowcolor覆盖\columncolor,第一列中的行颜色部分必须被“覆盖” \cellcolor{white}。需要特别注意\multirow。它不会被行颜色覆盖,必须移动到跨越单元格的下方:

\multirow{-4}{*}{System (I)}
    & texto1    & texto2                    & texto3            & Texto 4           

为了在行中留出更多空间,我使用包cellspace并向适当的列类型添加属性S。为了使表格看起来更好,删除了规则周围的垂直空间。

特别注意使行颜色适应表格宽度。由于您@{}在列定义的开始和结束处使用它,因此颜色会溢出表格。这是通过以下方式防止的:

>{\columncolor{white}[0pt][\tabcolsep]}l

在第一列和最后一列(见姆韦以下)。

姆韦

\documentclass{report}
\usepackage[table]{xcolor}
\usepackage{booktabs, cellspace, multirow}
\renewcommand{\aboverulesep}{0pt}
\renewcommand{\belowrulesep}{0pt}
\setlength\cellspacetoplimit{5pt}
\setlength\cellspacebottomlimit{5pt}


\begin{document}
\begin{table}
    \centering
    \rowcolors{2}{white}{gray!20}
\begin{tabular}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l Sl l l
                   >{\columncolor{white}[\tabcolsep][0pt]}l@{}} % column definition is changed!
\toprule[0.5pt]
    & \multicolumn{2}{Sc}{\textbf{Method 1}}  & \multicolumn{2}{Sc}{\textbf{Method 2}}  \\
\cellcolor{white}
    & Iteration & Approximation           & Iteration         & Approximation       \\
    \cmidrule(r){2-3}\cmidrule(l){4-5}
    & texto1    & texto2                    & texto3            & Texto 4           \\
\cellcolor{white}
    & texto1    & texto2                    & texto3            & Texto 4           \\
    & texto1    & texto2                    & texto3            & Texto 4           \\
\cellcolor{white}
\multirow{-4}{*}{System (I)}
    & texto1    & texto2                    & texto3            & Texto 4           \\
\midrule
%
    & texto1    & texto2                    & texto3            & Texto 4           \\
\cellcolor{white}
    & texto1    & texto2                    & texto3            & Texto 4           \\
    & texto1    & texto2                    & texto3            & Texto 4           \\
\cellcolor{white}
\multirow{-4}{*}{System (I)}
    & texto1    & texto2                    & texto3            & Texto 4           \\
\bottomrule[0.5pt]
\end{tabular}
\caption{Comparison of the methods}
\end{table}
\end{document}

在此处输入图片描述

注意:从你的问题来看不是很清楚,你是喜欢multirow单元格白色还是也应该用灰色条纹着色。在后一种情况下你只需要删除\cellcolor{white}表格代码中的所有内容。

编辑: 表格颜色和水平线使用的替代方案(在我看来)可以更好地对行和列进行分组。本例中的表格主体是:

在此处输入图片描述

\begin{table}
    \centering
    \rowcolors{2}{gray!20}{white}
\begin{tabular}{@{}>{\columncolor{white}[0pt][\tabcolsep]}l Sl l l
                   >{\columncolor{white}[\tabcolsep][0pt]}l@{}} % column definition is changed!
\toprule[0.5pt]
    & \multicolumn{2}{Sc}{\textbf{Method 1}}  & \multicolumn{2}{Sc}{\textbf{Method 2}}  \\
\cmidrule(r){2-3}\cmidrule(l){4-5}
    & Iteration & Approximation           & Iteration         & Approximation       \\
\midrule
\cellcolor{white}
    & texto1    & texto2                    & texto3            & Texto 4           \\
    & texto1    & texto2                    & texto3            & Texto 4           \\
 \cellcolor{white}
   & texto1    & texto2                    & texto3            & Texto 4           \\
\multirow{-4}{*}{System (I)}
    & texto1    & texto2                    & texto3            & Texto 4           \\
\midrule
%
\cellcolor{white}
    & texto1    & texto2                    & texto3            & Texto 4           \\
    & texto1    & texto2                    & texto3            & Texto 4           \\
\cellcolor{white}
    & texto1    & texto2                    & texto3            & Texto 4           \\
\multirow{-4}{*}{System (I)}
    & texto1    & texto2                    & texto3            & Texto 4           \\
\bottomrule[0.5pt]
\end{tabular}
\caption{Comparison of the methods}
\end{table}

答案3

使用{NiceTabular}of nicematrix(及其键color-inside),您只需\rowcolors{}{gray!20}在第四行的第二列添加一条指令。行的颜色将从第四行开始(因为指令位于第 4 行),并将应用于右侧第二列的列(因为指令位于第 2 列)。

\documentclass{article}
\usepackage{booktabs}
\usepackage{multirow}
\usepackage{xcolor}
\usepackage{nicematrix}

\begin{document}

\begin{table}
\centering

\begin{NiceTabular}{@{}lllll@{}}[color-inside]
\toprule[0.5pt]
  & \multicolumn{2}{c}{Method 1} & \multicolumn{2}{c}{Method 2}\\
   & Iteration & Approximation & Iteration & Approximation \\
  \cmidrule(lr){2-3}\cmidrule(l){4-5}
  \multirow{4}{*}{System (I)}  &  
  \rowcolors{}{gray!20} texto1 & texto2 & texto3 & Texto 4\\
  & texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
%  
  \cmidrule(lr){2-3}\cmidrule(l){4-5}
  \multirow{4}{*}{System (II)} &  texto1 & texto2 & texto3 & Texto 4\\
  & texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
  &  texto1 & texto2 & texto3 & Texto 4 \\
\bottomrule[0.5pt]
\end{NiceTabular}
\caption{Comparison of the methods}
\end{table}

\end{document}

上述代码的输出

相关内容