colortbl 中的命令 \rowcolors 无法按预期工作

colortbl 中的命令 \rowcolors 无法按预期工作

有人能向我解释一下如何申请\rowcolors吗?我找到了答案这里但说实话,它对我来说不起作用,答案中也没有很好地解释!我\rowcolors在手册中也找不到描述。在某种程度上,输入参数给出了预期的结果,如下所示

\rowcolors{<row no. to start from}{odd rows colour}{even rows colour}

例如:\row{3}{lightgray!30}{white}将为所有奇数行定义 30% 的浅灰色,为从第 3 行开始的所有偶数行定义白色。但下面有一些示例,其中此公式不起作用。

我做了下面的 MWE。我尝试了不同的参数\rowcolors,但我可能遗漏了一些东西,因为结果并不像我想象的那样。

让我们看几个例子,其中我更改了代码中的第四行:

\rowcolors{1}{lightgray!30}{} % working

在此处输入图片描述

\rowcolors{2}{}{lightgray!30} % working

在此处输入图片描述

\rowcolors{3}{lightgray!30}{} % working

在此处输入图片描述

% Not working. Colours expected to start from 5th row 
\rowcolors{5}{lightgray!30}{}

在此处输入图片描述

% Not working. Colours expected to start from 4th row
\rowcolors{4}{}{lightgray!30}

在此处输入图片描述

我感觉\rowcolors只有第三行才有效。这是错误还是我应该预料到的事情?

谢谢

\documentclass{article}
\usepackage{booktabs}
\usepackage[usernames,dvipsnames,svgnames,table]{xcolor}
\rowcolors{4}{lightgray!30}{} % To be changed in examples

%\rowcolor{<Start from>}{odd}{even}

\begin{document}

\begin{tabular}{ r l r l r l r l r }

\toprule
 & \multicolumn{2}{c}{\textbf{File 1}}
 & \multicolumn{2}{c}{\textbf{File 2}}
 & \multicolumn{2}{c}{\textbf{File 3}}
 & \multicolumn{2}{c}{\textbf{File 4}} \\
\cmidrule(lr){2-3}
\cmidrule(lr){4-5}
\cmidrule(lr){6-7}
\cmidrule(lr){8-9}
 & \textbf{H1}
 & \textbf{H2}
 & \textbf{H3}
 & \textbf{H4}
 & \textbf{H5} 
 & \textbf{H6}
 & \textbf{H7}
 & \textbf{H8} \\
\midrule
1 & A & B & C & D & E & F & G & H \\
2 & A & B & C & D & E & F & G & H \\
3 & A & B & C & D & E & F & G & H \\
4 & A & B & C & D & E & F & G & H \\
5 & A & B & C & D & E & F & G & H \\
6 & A & B & C & D & E & F & G & H \\
7 & A & B & C & D & E & F & G & H \\
8 & A & B & C & D & E & F & G & H \\
\midrule[\heavyrulewidth]
\rowcolor[gray]{1}
\multicolumn{9}{l}{Extra information} \\
\bottomrule

\end{tabular}

\end{document}

答案1

经过一些测试,问题似乎来自\cmidrule,但并非特定于booktabs,因为也\cline有同样的问题。

另一方面,从必须是奇数。这意味着如果您将起始行号设置为 2,则第一个灰色行将是 3。因此,如果您确实想从行 2 开始,则必须从行 1 开始并交换颜色。

第二个奇怪的特点:两行之间的奇数个 s 似乎\cmidrule/\cline算作补充行。因此,当您想从第 3 行开始时,如果您有 0、2 或 4 个 \cmidrules,您确实会从第 3 行开始,但如果您有 1 或 3 个 \cmidrules,则从第 2 行开始。

以下代码显示了这些问题:

\documentclass{article}
\usepackage[usernames,dvipsnames,svgnames,table]{xcolor}
\rowcolors{4}{lightgray!30}{white} % To be changed in examples

%\rowcolor{<Start from>}{odd}{even}

\rowcolors{3}{lightgray!30}{white} % To be changed in examples
\usepackage{booktabs}

\begin{document}
\rowcolors{3}{lightgray!30}{white}
\begin{tabular}{ r l r l r l r l r }

\toprule
 & \multicolumn{2}{c}{\textbf{File 1}}
 & \multicolumn{2}{c}{\textbf{File 2}}
 & \multicolumn{2}{c}{\textbf{File 3}}
 & \multicolumn{2}{c}{\textbf{File 4}} \\
\cmidrule(lr){2-3}%
%\cmidrule(lr){4-5}
%\cmidrule(lr){6-7}
%\cmidrule(lr){8-9}
 & \textbf{H1}
 & \textbf{H2}
 & \textbf{H3}
 & \textbf{H4}
 & \textbf{H5}
 & \textbf{H6}
 & \textbf{H7}
 & \textbf{H8} \\
\midrule
1 & A & B & C & D & E & F & G & H \\
2 & A & B & C & D & E & F & G & H \\
3 & A & B & C & D & E & F & G & H \\
4 & A & B & C & D & E & F & G & H \\
5 & A & B & C & D & E & F & G & H \\
6 & A & B & C & D & E & F & G & H \\
7 & A & B & C & D & E & F & G & H \\
8 & A & B & C & D & E & F & G & H \\
\midrule[\heavyrulewidth]
\rowcolor[gray]{1}
\multicolumn{9}{l}{Extra information} \\
\bottomrule

\end{tabular}
\vspace{1cm}

\rowcolors{3}{lightgray!30}{white}
\begin{tabular}{ r l r l r l r l r }

\toprule
 & \multicolumn{2}{c}{\textbf{File 1}}
 & \multicolumn{2}{c}{\textbf{File 2}}
 & \multicolumn{2}{c}{\textbf{File 3}}
 & \multicolumn{2}{c}{\textbf{File 4}} \\
\cmidrule(lr){2-3}%
\cmidrule(lr){4-5}
%\cmidrule(lr){6-7}
%\cmidrule(lr){8-9}
 & \textbf{H1}
 & \textbf{H2}
 & \textbf{H3}
 & \textbf{H4}
 & \textbf{H5}
 & \textbf{H6}
 & \textbf{H7}
 & \textbf{H8} \\
\midrule
1 & A & B & C & D & E & F & G & H \\
2 & A & B & C & D & E & F & G & H \\
3 & A & B & C & D & E & F & G & H \\
4 & A & B & C & D & E & F & G & H \\
5 & A & B & C & D & E & F & G & H \\
6 & A & B & C & D & E & F & G & H \\
7 & A & B & C & D & E & F & G & H \\
8 & A & B & C & D & E & F & G & H \\
\midrule[\heavyrulewidth]
\rowcolor[gray]{1}
\multicolumn{9}{l}{Extra information} \\
\bottomrule

\end{tabular}
\vspace{1cm}

\rowcolors{3}{lightgray!30}{white}
\begin{tabular}{ r l r l r l r l r }

\toprule
 & \multicolumn{2}{c}{\textbf{File 1}}
 & \multicolumn{2}{c}{\textbf{File 2}}
 & \multicolumn{2}{c}{\textbf{File 3}}
 & \multicolumn{2}{c}{\textbf{File 4}} \\
\cmidrule(lr){2-3}%
\cmidrule(lr){4-5}
\cmidrule(lr){6-7}
%\cmidrule(lr){8-9}
 & \textbf{H1}
 & \textbf{H2}
 & \textbf{H3}
 & \textbf{H4}
 & \textbf{H5}
 & \textbf{H6}
 & \textbf{H7}
 & \textbf{H8} \\
\midrule
1 & A & B & C & D & E & F & G & H \\
2 & A & B & C & D & E & F & G & H \\
3 & A & B & C & D & E & F & G & H \\
4 & A & B & C & D & E & F & G & H \\
5 & A & B & C & D & E & F & G & H \\
6 & A & B & C & D & E & F & G & H \\
7 & A & B & C & D & E & F & G & H \\
8 & A & B & C & D & E & F & G & H \\
\midrule[\heavyrulewidth]
\rowcolor[gray]{1}
\multicolumn{9}{l}{Extra information} \\
\bottomrule

\end{tabular}

\end{document} 

在此处输入图片描述

答案2

{NiceTabular}的环境nicematrix有自己的命令\rowcolors,即使使用\cline\cmidrule(of ),它也能按预期工作。booktabs

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

\begin{document}

\begin{NiceTabular}{ r l r l r l r l r }
\CodeBefore
    \rowcolors{4-10}{lightgray!30}{}[restart]
\Body
    \toprule
     & \multicolumn{2}{c}{\textbf{File 1}}
     & \multicolumn{2}{c}{\textbf{File 2}}
     & \multicolumn{2}{c}{\textbf{File 3}}
     & \multicolumn{2}{c}{\textbf{File 4}} \\
    \cmidrule(lr){2-3}
    \cmidrule(lr){4-5}
    \cmidrule(lr){6-7}
    \cmidrule(lr){8-9}
     & \textbf{H1}
     & \textbf{H2}
     & \textbf{H3}
     & \textbf{H4}
     & \textbf{H5} 
     & \textbf{H6}
     & \textbf{H7}
     & \textbf{H8} \\
    \midrule
    1 & A & B & C & D & E & F & G & H \\
    2 & A & B & C & D & E & F & G & H \\
    3 & A & B & C & D & E & F & G & H \\
    4 & A & B & C & D & E & F & G & H \\
    5 & A & B & C & D & E & F & G & H \\
    6 & A & B & C & D & E & F & G & H \\
    7 & A & B & C & D & E & F & G & H \\
    8 & A & B & C & D & E & F & G & H \\
    \midrule[\heavyrulewidth]
    \multicolumn{9}{l}{Extra information} \\
    \bottomrule
\end{NiceTabular}

\end{document}

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

上述代码的输出

相关内容