表格:基于内容的单元格颜色/条件单元格着色

表格:基于内容的单元格颜色/条件单元格着色

我希望表格的单元格颜色根据内容为红色或绿色:如果内容为“a”,则将其设为绿色;如果内容为“b”,则将其设为红色。但如果内容是其他内容(例如列标题),则单元格不应着色。

如果我只有以下代码的两个选项(基于这个答案),我就可以做红色/绿色的事情:https://tex.stackexchange.com/a/174359),但不知道如何阻止它为列标题着色。

\documentclass{article}
\usepackage{colortbl}

\begin{document}

\makeatletter
\newcommand*{\yncellcolor}{}
\def\yncellcolor\ignorespaces{\@ifnextchar{a}{\cellcolor{green}}{\cellcolor{red}}}
\newcolumntype{C}{>{\yncellcolor}c}
\makeatother

\begin{tabular}{C C C}
  1 & 2 & 3 \\
  \hline
  a & b & a \\
  b & b & b \\
  a & a & b \\
  a & a & a \\
\end{tabular}

\end{document}

其他问题也问过这个问题(例如条件 Latex 表:单元格值颜色基于其值),但它们似乎无法解决我的问题。

答案1

\@ifnextchar一种方法是在条件颜色定义中添加另一种方法:

   \documentclass{article}
    \usepackage{colortbl}

    \begin{document}

    \makeatletter
    \newcommand*{\yncellcolor}{}
    \def\yncellcolor\ignorespaces{\@ifnextchar{a}{\cellcolor{green}}{\@ifnextchar{b}{\cellcolor{red}}{}}}
    \newcolumntype{C}{>{\yncellcolor}c}
    \makeatother

    \begin{tabular}{C C C}
      1 & 2 & 3 \\
      \hline
      a & b & a \\
      b & b & b \\
      a & a & b \\
      a & a & a \\
    \end{tabular}

    \end{document}

答案2

与。{NiceTabular}nicematrix

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

\newcolumntype{C}{>{\collectcell\FormatCell}c<{\endcollectcell}}

\ExplSyntaxOn
\NewDocumentCommand \FormatCell { m }
  { 
    \OnlyMainNiceMatrix
      {
        \str_if_eq:nnTF { #1 } { a } 
          { \cellcolor{green} }
          { \cellcolor{red} }
      }
    #1
  }
\ExplSyntaxOff

\begin{document}

\begin{NiceTabular}{CCC}[first-row,colortbl-like]
1 & 2 & 3 \\
\hline
a & b & a \\
b & b & b \\
a & a & b \\
a & a & a 
\end{NiceTabular}

\end{document}

上述代码的输出

相关内容