I try to set the color of a cell in a tabularray
by a command:
\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}
Somehow the color cell{1}{1} = {\Tcolor},
breaks. Why?
cell{1}{1} = {green},
works…
EDIT: I guess in my attempt to create a MWE I shortened it too much. There is a need for a function instead of a simple color:
\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}
Best Answer
The
cell{<i>}{<j>}
key can accept several types of values; for instance, according to the manual, you can doThus the managing of values is necessarily complex. When a value is just a string that's not another key, it is interpreted as a color name for the background.
You can use
bg=<color>
and, in this case, you can use a macro.Note the use of
\bool_case:nF
in order to avoid the awkward nesting of conditionals.