为什么 tabularray 不接受来自命令的颜色?

为什么 tabularray 不接受来自命令的颜色?

tabularray我尝试通过命令设置单元格的颜色:

\documentclass{article}

\usepackage{xcolor}
\usepackage{tabularray}

\ExplSyntaxOn

\newcommand{\Tcolor}{
    green
}

\ExplSyntaxOff


\begin{document}
    \textcolor{\Tcolor}{abc}
    
\begin{tblr}{
        colspec  = {l},
        cell{1}{1} = {\Tcolor},
    }
abc  \\
\end{tblr}

\end{document}

不知为何颜色cell{1}{1} = {\Tcolor},就变了。为什么?

cell{1}{1} = {green},作品...

编辑:我想在我尝试创建 MWE 时,我把它缩短得太多了。需要一个函数而不是简单的颜色:

\documentclass{article}

\usepackage{xcolor}
\usepackage{tabularray}

\ExplSyntaxOn


\newcommand{\Tcolor}[1]{
    \int_compare:nNnTF
    {#1} = {0}
    { red } 
    {
        \int_compare:nNnTF
        {#1} < {30}
        { orange } 
        {
            \int_compare:nNnTF
            {#1} < {40}
            { green } 
            {
                blue
            }
        }
    }
    
}

\ExplSyntaxOff


\begin{document}
    \textcolor{\Tcolor{32}}{abc}
    
\begin{tblr}{
        colspec  = {l},
        cell{1}{1} = {\Tcolor{32}},
        cell{1}{2} = {\Tcolor{48}}, 
    }
abc  \\
def \\
\end{tblr}

\end{document}

答案1

cell{<i>}{<j>}键可以接受几种类型的值;例如,根据手册,您可以执行

cell{1}{1}={cmd=\fbox}

因此,值的管理必然很复杂。当值只是一个字符串而不是另一个键时,它被解释为背景的颜色名称。

您可以使用bg=<color>,在这种情况下,您可以使用宏。

\documentclass{article}

\usepackage{xcolor}
\usepackage{tabularray}

\ExplSyntaxOn

\NewExpandableDocumentCommand{\Tcolor}{m}
  {
    \bool_case:nF
      {
        { \int_compare_p:n {#1 = 0} }{ red!80 } 
        { \int_compare_p:n {0 < #1 < 30} }{ orange } 
        { \int_compare_p:n {30 <= #1 < 40} }{ green!80 }
      }
      { blue!60!green }
  }

\ExplSyntaxOff

\begin{document}

\textcolor{\Tcolor{32}}{abc}

\medskip
    
\begin{tblr}{
   colspec  = {l},
   cell{1}{1} = {bg=\Tcolor{0}},
   cell{2}{1} = {bg=\Tcolor{15}}, 
   cell{3}{1} = {bg=\Tcolor{32}}, 
   cell{4}{1} = {bg=\Tcolor{48}}, 
}
abc \\
def \\
ghi \\
jkl \\
\end{tblr}

\end{document}

注意使用\bool_case:nF以避免尴尬的条件嵌套。

在此处输入图片描述

相关内容