我试图理解标记和扩展在以下问题中的工作方式。我想通过一个命令tblr
从包中创建一个环境,该命令以编程方式执行一些格式化。不幸的是,环境不喜欢这样。下面显示了一个最小的工作示例。如果我手动将单元格 (1, 2) 和 (1, 3) 涂成橙色,则不会出现任何问题:tabularray
tblr
\documentclass{article}
% Packages
\usepackage{tabularray}
\usepackage{xcolor}
% Commands
\newcommand{\someRow}{1}
\newcommand{\someColumns}{2, 3}
\newcommand{\someColour}{orange}
\newcommand{\someTable}{%
\begin{tblr}{
colspec = {ccc},
% cell{\someRow}{\someColumns} = {\someColour},
cell{1}{2,3} = {orange!20},
}
a & b & c \\
d & e & f \\
g & h & i
\end{tblr}
}
% Document
\begin{document}
\someTable
\end{document}
但是,如果我想要值2, 3
和分别作为调用函数和orange!20
的结果出现(即,如果我取消注释第 15 行并注释掉第 16 行),我会收到一堆错误,首先是:\someColumns
\someColour
./main.tex:26: Missing = inserted for \ifnum.
<to be read again>
,
l.26 \someTable
如果有人能帮助我解决这个问题,并解释一下这里发生的事情,我将非常感激!
答案1
您可以在传递给之前扩展参数tblr
\documentclass{article}
% Packages
\usepackage{tabularray}
\usepackage{xcolor}
% Commands
\newcommand{\someRow}{1}
\newcommand{\someColumns}{2, 3}
\newcommand{\someColour}{orange}
\newcommand{\someTable}{%
\ExpandArgs{ne}
\begin{tblr}{
colspec = {ccc},
cell{\someRow}{\someColumns} = {\someColour},
% cell{1}{2,3} = {orange!20},
}
a & b & c \\
d & e & f \\
g & h & i
\end{tblr}
}
% Document
\begin{document}
\someTable
\end{document}