expl3 - 从左侧弹出列表 - 如何拆分来自 \seq_pop_left 的临时变量?

expl3 - 从左侧弹出列表 - 如何拆分来自 \seq_pop_left 的临时变量?

我想拆分关于的多行内容\\,然后拆分关于的每个项目.

然后,我想并行迭代每个列表,例如将它们的项目一起打印,例如打印a1i b2ii c3iii

我试图从左边弹出第一个列表并逐项阅读,但这不起作用...我想看看a-ok-b-ok-c但我只看到a . b . c...我认为是一个扩展问题......

这个问题是对这个帖子

\documentclass{article}

% Source : https://tex.stackexchange.com/a/475291/6880

\RequirePackage{xparse}

\ExplSyntaxOn

%\seq_new:N \l__pmbc_seq % Not useful here.

% #1 : line separator
% #2 : cell separator
% #3 : content
    \NewDocumentCommand{\splittab}{m m +m}{
        \tnscalc_splittab:nnn{#1}{#2}{#3}
    }

% The internal version of the general purpose macro
    \cs_new_protected:Nn \tnscalc_splittab:nnn{
        % #1 : line separator
        % #2 : cell separator
        % #3 : content

        % A group allows nesting
        \group_begin:
            % Split into parts
            \seq_set_split:Nnn \l__pmbc_seq { #1 } { #3 }

            %\int_zero_new:N \l_mbc_N_int  % Not useful here.
            %\int_set:Nn \l_mbc_N_int { \seq_count:N \l__pmbc_seq }  % Not useful here.
            %
            \seq_pop_left:NN \l__pmbc_seq {\l__temp}
            
            \seq_set_split:Nnn \l__pmbc_subseq { #2 } { \l__temp }
            
            \seq_use:Nn \l__pmbc_subseq { -ok- }
        \group_end:
    } 
\ExplSyntaxOff


\begin{document}
    \splittab{\\}{.}{ a . b . c \\ 1 . 2 . 3 \\ i . ii . ii }
\end{document}

答案1

请使用正确的命名。

\documentclass{article}

% Source : https://tex.stackexchange.com/a/475291/6880

\usepackage{xparse}

\ExplSyntaxOn

\seq_new:N \l__tnscalc_splittab_seq
\seq_new:N \l__tnscalc_subseq_seq
\int_new:N \l__tnscalc_splittab_int
\tl_new:N \l__tnscalc_temp_tl

% #1 : line separator
% #2 : cell separator
% #3 : content
\NewDocumentCommand{\splittab}{m m +m}
 {
  \tnscalc_splittab:nnn{#1}{#2}{#3}
 }

% The internal version of the general purpose macro
\cs_new_protected:Nn \tnscalc_splittab:nnn
 {
  % #1 : line separator
  % #2 : cell separator
  % #3 : content
  % A group allows nesting
  \group_begin:
  % Split into parts
  \seq_set_split:Nnn \l__tnscalc_splittab_seq { #1 } { #3 }

  \int_set:Nn \l__tnscalc_splittab_int { \seq_count:N \l__tnscalc_splittab_seq } % why?
  \seq_pop_left:NN \l__tnscalc_splittab_seq \l__tnscalc_temp_tl
  \seq_set_split:NnV \l__tnscalc_subseq_seq { #2 } \l__tnscalc_temp_tl
  \seq_use:Nn \l__tnscalc_subseq_seq { -ok- }
  \group_end:
 } 
\ExplSyntaxOff


\begin{document}

\splittab{\\}{.}{ a . b . c \\ 1 . 2 . 3 \\ i . ii . ii }

\end{document}

需要对存储弹出项的标记列表的内容进行拆分,因此正确的函数是\seq_set_split:NnV

不清楚整数变量的作用是什么。

相关内容