tabularray 和 expl3 对齐制表符 &. 位置错误

tabularray 和 expl3 对齐制表符 &. 位置错误

我正在尝试将 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}

相关内容