根据单元格内容对表格的行进行着色

根据单元格内容对表格的行进行着色

我四处寻找,但找不到合适的答案。我有一张表格,如果第二个单元格中有复选标记,我想将行变为绿色,否则保留为白色。我还希望它能够自动变为绿色,即如果我写入\checkmark(或类似的自定义命令),行就会自动变为绿色。

colortbl我对-package 和-command进行了一些实验\rowcolor{green},但是它给了我错误消息并删除了表中的某些行,而且它不会自动执行。

以下是 MWE:

\documentclass{scrartcl}
\usepackage{amssymb}
\begin{document}
    \begin{tabular}{|c|c|c|}
        \hline
        Number & Active? & Some more content... \\ \hline
        001 & \checkmark & ... \\ \hline
        002 & \checkmark & ... \\ \hline
        003 &  & ... \\ \hline
        004 &  & ... \\ \hline
        005 & \checkmark & ... \\ \hline
        006 &  & ... \\ \hline
        ... &  & ...
    \end{tabular}
\end{document}

示例行

这里我想将第一、第二和第五行涂成绿色。

谢谢你!

答案1

虽然可以测试列中是否存在复选标记,但我认为简单地标记活动行更容易:

\documentclass{scrartcl}
\usepackage{amssymb}
\usepackage[table]{xcolor}
\usepackage{xparse,array}
\ExplSyntaxOn
\bool_new:N \g_car_active_bool
\NewExpandableDocumentCommand \caractiverow {}
{
 \rowcolor{green}
 \bool_gset_true:N \g_car_active_bool
}

\NewDocumentCommand \carcheckmark {}
 {
  \bool_if:NT \g_car_active_bool
   {
    \checkmark
   }
  \bool_gset_false:N \g_car_active_bool 

 }

\ExplSyntaxOff
\begin{document}
    \begin{tabular}{|c|>{\carcheckmark}c|c|}
        \hline
               Number & Active? & Some more content... \\ \hline
\caractiverow     001 &  & ... \\ \hline
\caractiverow     002 &  & ... \\ \hline
                  003 &  & ... \\ \hline
                  004 &  & ... \\ \hline
\caractiverow     005 &  & ... \\ \hline
                  006 &  & ... \\ \hline
        ... &  & ...
    \end{tabular}
\end{document}

在此处输入图片描述

答案2

看起来第一行的列是渐进的,所以我们可以通过定义一个\newrow命令来检查它是否后面跟着 来挂钩这一点\checkmark

\documentclass{scrartcl}
\usepackage{amssymb}
\usepackage[table]{xcolor}

\newcounter{rowcount}
\renewcommand{\therowcount}{%
  \ifnum\value{rowcount}<100 0\fi
  \ifnum\value{rowcount}<10 0\fi
  \arabic{rowcount}%
}
\makeatletter
\newcommand{\newrow}[1]{%
  \ifx#1\checkmark
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {\rowcolor{green}\stepcounter{rowcount}\therowcount & \checkmark}%
  {\stepcounter{rowcount}\therowcount &&}%
}
\makeatother

\begin{document}

\setcounter{rowcount}{0}
\begin{tabular}{|c|c|c|}
\hline
Number & Active? & Some more content... \\
\hline
\newrow\checkmark & ... \\
\hline
\newrow\checkmark & ... \\
\hline
\newrow           & ... \\
\hline
\newrow           & ... \\
\hline
\newrow\checkmark & ... \\
\hline
\newrow           & ... \\
\hline
\newrow           & ... \\
\hline
\end{tabular}

\end{document}

在此处输入图片描述

您可以将的定义更改\newrow

\makeatletter
\newcommand{\newrow}[1]{%
  \ifx#1*%
    \expandafter\@firstoftwo
  \else
    \expandafter\@secondoftwo
  \fi
  {\rowcolor{green}\stepcounter{rowcount}\therowcount & \checkmark}%
  {\stepcounter{rowcount}\therowcount &&}%
}
\makeatother

因此输入可能更简单:

\setcounter{rowcount}{0}
\begin{tabular}{|c|c|c|}
\hline
Number & Active? & Some more content... \\
\hline
\newrow* & ... \\
\hline
\newrow* & ... \\
\hline
\newrow  & ... \\
\hline
\newrow  & ... \\
\hline
\newrow* & ... \\
\hline
\newrow  & ... \\
\hline
\newrow  & ... \\
\hline
\end{tabular}

相关内容