我有下表:
\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}