每 n 行交替显示彩色行的表格

每 n 行交替显示彩色行的表格

我想创建一个表格,其中行的背景颜色每n>1行都会改变。我见过 维基百科交替行可以有不同的颜色,我查看了xcolor在线找到的一份文档数学.washginton.edu 但我不知道如何让行颜色每n行改变一次,比如每 5 行改变一次。

另外,是否可以定义一些序列,例如 {4,9,11..},它将告诉 LaTeX 在哪一行切换颜色?这样,如果我的观察结果不平衡,那么我仍然可以以不同的方式突出显示背景。我的意思是,如果我有来自模型 1 的 3 行数据、来自模型 2 的 5 行数据和来自模型 3 的 2 行数据,那么我的表格的前 3 行可以是白色,接下来的 5 行可以是灰色,接下来的 2 行可以再次是白色,依此类推...以提高可读性,这是我所需要的,因为我有大量的数字,我想大多数表格都有。:)

现在我正费力地\rowcolor{}在任何我想要着色的行前书写。

任何帮助将不胜感激。

答案1

这展示了一种添加计数器的方法,该计数器每行递增,然后进行一组任意测试以在某种条件下切换颜色。首先,没有背景,在第 4 行切换为绿色,保持绿色,直到第 7 行切换为蓝色,在第 13 行恢复为无背景,然后每 20 行循环一次。

在此处输入图片描述

\documentclass{article}

\usepackage{colortbl}
\newcounter{myc}
\makeatletter
\def\myrow{}
\CT@everycr{\noalign{%
\global\let\CT@row@color\relax
\stepcounter{myc}%
\ifnum\value{myc}=4
  \gdef\myrow{\rowcolor{green}}
\else\ifnum\value{myc}=7
  \gdef\myrow{\rowcolor{blue}}
\else\ifnum\value{myc}=13
  \gdef\myrow{}
\else\ifnum\value{myc}=20
  \setcounter{myc}{0}
\fi\fi\fi\fi
}\myrow}



\begin{document}
\small

\begin{tabular}{>{[\themyc]}ll}
a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\
a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\
a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\
a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\
a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\a&a\\
\end{tabular}
\end{document}

答案2

如果您使用 table 选项加载 xcolor 包,您还可以访问 rowcolors 命令。

语法是\rowcolors{<starting row index>}{<odd row color>}{<even row color>}

编辑:

如果您使用 tabu 包,您可以使用该\taburowcolors命令。

\documentclass[preview]{standalone}
\usepackage{tabu}
\usepackage[table]{xcolor}
\begin{document}

\everyrow{\tabucline-}
\begin{tabu}{|X|X|}
\taburowcolors {green!40..green!40}
test&test\\
test&test\\
test&test\\
test&test\\
\taburowcolors {blue!40..blue!40}
test&test\\
test&test\\
test&test\\
\taburowcolors{white..white}
test&test\\
test&test\\
\end{tabu}

\end{document}

这使:

在此处输入图片描述

答案3

使用,如果您想要 n 行一种颜色后面跟着 n 行另一种颜色,您可以这样做{NiceTabular}nicematrix

\documentclass{article}
\usepackage{nicematrix}

\begin{document} 

\begin{NiceTabular}{cc}
\CodeBefore
  \rowlistcolors{1}{red!15,=,=,=, blue!15,=,=,=}
\Body
  1 & one \\
  2 & two \\
  3 & three \\
  4 & four \\
  5 & five \\
  6 & six \\
  7 & seven \\
  8 & eight \\
  9 & nine \\
  10 & ten \\
  11 & eleven \\
  12 & twelve \\
  13 & thirteen \\
  14 & fourteen \\
  15 & fifteen \\
  16 & sixteen \\
\end{NiceTabular}

\end{document}

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

上述代码的输出

相关内容