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
以避免尴尬的条件嵌套。