5 LaTeX3语法与tabularray宏包结合的问题

发布于 2023-07-24 18:41:27

想自动实现这个效果
image.png
代码如下

\documentclass{ctexart}
\usepackage{tabularray}
\SetTblrInner[tblr]{%
    cells={c},
    hlines,
    vlines,
}
\ExplSyntaxOff
\begin{document}
    % 以下是有问题的代码
    \ExplSyntaxOn
    \seq_set_split:Nnn \l_my_seq_a {,}{a,b,c,d,ef}
    \begin{tblr}{}
    \int_step_inline:nnn{1}{\seq_count:N \l_my_seq_a}
    {
        \int_compare:nNnTF {#1}<{\seq_count:N \l_my_seq_a}{
            #1 & 
        }
        {
            #1 \\
        }
    }   
    
    \int_seq_inline:nnn{1}{\seq_count:N \l_my_seq_a}{
        \int_compare:nNnTF {#1}<{\seq_count:N \l_my_seq_a}{
            \seq_item:Nn \l_my_seq_a {#1}&
        }
        {
            \seq_item:Nn \l_my_seq_a {#1}
        }
    }
    \end{tblr} 
    \ExplSyntaxOff

    % \ExplSyntaxOn
    % \seq_set_split:Nnn \l_my_seq_a {,}{a,b,c,d,ef}
    % \begin{tblr}{}
    %     \seq_use:Nn \l_my_seq_a {&}
    % \end{tblr} 
    % \ExplSyntaxOff
\end{document}

报错信息显示
image.png

查看更多

关注者
0
被浏览
1.1k
雾月
雾月 2023-07-24
这家伙很懒,什么也没写!

tabularray 不支持这么写。只能把结果保存到 tl 里,然后用 expand 键。

\documentclass{ctexart}
\usepackage{tabularray}
\SetTblrInner[tblr]{%
    cells={c},
    hlines,
    vlines,
}
\begin{document}
\ExplSyntaxOn

\tl_clear:N \tableval 
\seq_set_split:Nnn \l_my_a_seq { , }{ a,b,c,d,ef }
\int_step_inline:nnn { 1 } { \seq_count:N \l_my_a_seq }
  {
    \int_compare:nNnTF {#1} < { \seq_count:N \l_my_a_seq }
      {
        \tl_put_right:Nn \tableval { #1 & }
      }
      {
        \tl_put_right:Nn \tableval  { #1 \\ }
      }
  }
\int_step_inline:nnn { 1 } { \seq_count:N \l_my_a_seq } 
  {
    \int_compare:nNnTF {#1} < { \seq_count:N \l_my_a_seq }
      {
        \tl_put_right:Nx \tableval { \seq_item:Nn \l_my_a_seq {#1} & }
      }
      {
        \tl_put_right:Nx \tableval { \seq_item:Nn \l_my_a_seq {#1} }
      }
  }
\ExplSyntaxOff

\begin{tblr}[expand=\tableval]{}
\tableval
\end{tblr} 
\end{document}
2 个回答
o(∩_∩)o
o(∩_∩)o 2023-07-24
这家伙很懒,什么也没写!

雾月老师,我还是没有修改正确,麻烦看一下

\documentclass{ctexart}
\usepackage{tabularray}
\SetTblrInner[tblr]{%
    cells={c},
    hlines,
    vlines,
}
\begin{document}
    \ExplSyntaxOn

    \newcommand{\tl}{  
    \seq_set_split:Nnn \l_my_seq_a {,}{a,b,c,d,ef}
    \int_step_inline:nnn{1}{\seq_count:N \l_my_seq_a}
    {
        \int_compare:nNnTF {##1}<{\seq_count:N \l_my_seq_a}{
            ##1 & 
        }
        {
            ##1 \\
        }
    }   
    \int_seq_inline:nnn{1}{\seq_count:N \l_my_seq_a}{
        \int_compare:nNnTF {##1}<{\seq_count:N \l_my_seq_a}{
            \seq_item:Nn \l_my_seq_a {##1 &}
        }
        {
            \seq_item:Nn \l_my_seq_a {##1}
        }
    }
    }
    \begin{tblr}[expand=\tl]{}
        \tl
    \end{tblr} 
    \ExplSyntaxOff
\end{document}

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览