我正在尝试将 tabularray 中的行列表作为参数传递。(相同的列表将在第二次使用)
和显示包含 `&` 和 `\hline` 标记的 `\_tl` 变量 我尝试将 egreg 给出的代码与 tabular 一起使用,但它不适用于 tabularray。
和tabularray 包似乎无法在 Overleaf 上运行
我尝试过\NewDocumentEnvironment
。
我找到了\c_math_subscript_token
但没有找到与&相当的
% !TeX program = lualatex
\documentclass[11pt]{article}
%https://tex.stackexchange.com/questions/402866/showing-tl-variables-that-contain-and-hline-tokens
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\usepackage{tabularray}
\ExplSyntaxOn
\NewDocumentCommand\myTable{}
{
\tl_set:Nn \l_rn_tabular_tl {1&2&3&4\\}
\begin{tabular}{|c||c|c|c|}
\tl_use:N \l_rn_tabular_tl
\end{tabular}
\par
\tl_set:Nn \l_rn_tabular_tl {1&2&3&4\\}
\begin{tblr}{|c||c|c|c|}
1&2&3&4\\
%\tl_use:N \l_rn_tabular_tl%<-- no work
\end{tblr}
}
%https://tex.stackexchange.com/questions/635842/the-package-tabularray-doesnt-seem-to-work-on-overleaf
\NewDocumentEnvironment{fancytblr}{+b}{
Before Text
\begin{tblr}{hlines}
#1
\end{tblr}
After Text
}{}
\begin{document}
\myTable
\tl_set:Nn \l_rn_tabular_tl {One & Two & Three \\}
\begin{fancytblr}
One & Two & Three \\
%\tl_use:N \l_rn_tabular_tl%<-- no work
\end{fancytblr}
\ExplSyntaxOff
\end{document}
答案1
以下是您可以应用的各种策略,其中没有一种是针对特定情况的tabularray
。在所有情况下,想法都是准备所需的已知有效输入前 tabularray
以其自己的方式进行解析。
\documentclass{article}
\usepackage{tabularray}
\ExplSyntaxOn
\tl_new:N \l_my_tabular_tl
\NewDocumentCommand \myTable { }
{
\tl_set:Nn \l_my_tabular_tl {1&2&3&4\\}
\use:x
{
\exp_not:n { \begin{tblr}{|c|c|c|c|} 1&2&3&4\\ }
\exp_not:V \l_my_tabular_tl
\exp_not:n { \end{tblr} }
}
}
\cs_new_protected:Npn \my_typeset_table:n #1
{
\begin{tblr}{|c|c|c|c|}
1 & 2 & 3 & 4 \\
#1
\end{tblr}
}
\cs_generate_variant:Nn \my_typeset_table:n { V }
% Uncomment if you want document-level access to \my_typeset_table:V
% \cs_new_eq:NN \myTableV \my_typeset_table:V
\cs_new_protected:Npn \my_typeset_table_generic:nn #1#2
{
\group_begin:
\cs_set_protected:Npn \__my_typeset_table_generic_tmp_func:n ##1 {#1}
\__my_typeset_table_generic_tmp_func:n {#2}
\group_end:
}
\cs_generate_variant:Nn \my_typeset_table_generic:nn { nV }
\NewDocumentEnvironment { fancytblr } { m +b }
{
Before~Text
\cs_set_protected:Npn \__my_fancytblr_table_tmp_func:n ##1
{
\begin{tblr}{hlines} #2 ##1 \end{tblr}
}
\__my_fancytblr_table_tmp_func:V #1
After~Text
}
{ }
\cs_new_eq:NN \__my_fancytblr_table_tmp_func:n \use_none:n
\cs_generate_variant:Nn \__my_fancytblr_table_tmp_func:n { V }
\ExplSyntaxOff
\begin{document}
\myTable
\par\medskip
\ExplSyntaxOn
\tl_set:Nn \l_my_tabular_tl { 1 & 2 & 3 & 4 \\ }
\my_typeset_table:V \l_my_tabular_tl
\par\medskip
\my_typeset_table_generic:nn
{
\begin{tblr}{|c|c|c|}
a & b & c \\
#1
\end{tblr}
}
{ 8 & 9 & 10 \\ }
\par\medskip
\tl_set:Nn \l_my_tabular_tl { 11 & 12 & 13 \\ }
\my_typeset_table_generic:nV
{
\begin{tblr}{|c|c|c|}
A & B & C \\
#1
\end{tblr}
}
\l_my_tabular_tl
\par\medskip
\tl_set:Nn \l_my_tabular_tl { ONE & TWO & THREE \\ }
\begin{fancytblr}{\l_my_tabular_tl}
One & Two & Three \\
\end{fancytblr}
\ExplSyntaxOff
\end{document}
PS:不要忘记声明expl3
变量。
答案2
不是与 expl3 而是在 tabularray 的文档中
\def\tblrbody{
\hline
20 & 30 & 40 \\
50 & 60 & 70 \\
\hline
}
\ExplSyntaxOff
\begin{tblr}[expand=\tblrbody]{ccc}
\hline
AA & BB & CC \\
\tblrbody
DD & EE & FF \\
\tblrbody
GG & HH & II \\
\hline
\end{tblr}