在 tabularray 中使用标记列表

在 tabularray 中使用标记列表

我正在尝试扩展包含变量的环境\mydataX,并收到以下错误:。在环境中执行相同代码时我没有遇到问题。此外,使用而不是会在环境中生成无限循环。我将不胜感激任何帮助!tblrtlTeX capacity exceeded, sorry [input stack size=10000]. \__tl_if_novalue:w #1-NoValue-#2?#3?!->tabular\NewDocumentCommand\NewExpandableDocumentCommandtblr

\documentclass{article}
\usepackage{tabularray}
\ExplSyntaxOn
\tl_set:cn {l_tmpa_tl}{1 & 2 & 3}
\NewExpandableDocumentCommand{\mydata}{O{,}m}{#2#1~1 & 2 & 3}
\NewExpandableDocumentCommand{\mydataX}{O{,}m}{#2#1~\tl_use:N \l_tmpa_tl}
\ExplSyntaxOff
\begin{document}
\begin{tblr}[expand=\expanded]{vlines, colspec={QQQ}}
    \expanded{\mydata[,]{Data}}  \\
    \expanded{\mydataX[,]{Data}} \\ % Not working!
\end{tblr}


\begin{tabular}{|c|c|c|}
    \mydata[,]{Data}  \\
    \mydataX[,]{Data} \\
\end{tabular}
\end{document}

答案1

不要用它\l_tmpa_tl来存储数据。临时变量可供所有人使用,因此只有当您确定在定义和使用之间没有人更改它们时,才应使用它们。

在这种情况下,如果您添加\tracingassigns=1tblr您将在日志中看到:

{changing \l_tmpa_tl=macro:->1&2&3}
{into \l_tmpa_tl=macro:->\expanded {\mydata [,]{Data}} \ETC.}

然后你的代码就爆炸了……使用其他变量名。顺便说一句:\tl_use:N不需要。

相关内容