![expl3 - 从左侧弹出列表 - 如何拆分来自 \seq_pop_left 的临时变量?](https://linux22.com/image/419083/expl3%20-%20%E4%BB%8E%E5%B7%A6%E4%BE%A7%E5%BC%B9%E5%87%BA%E5%88%97%E8%A1%A8%20-%20%E5%A6%82%E4%BD%95%E6%8B%86%E5%88%86%E6%9D%A5%E8%87%AA%20%5Cseq_pop_left%20%E7%9A%84%E4%B8%B4%E6%97%B6%E5%8F%98%E9%87%8F%EF%BC%9F.png)
我想拆分关于的多行内容\\
,然后拆分关于的每个项目.
。
然后,我想并行迭代每个列表,例如将它们的项目一起打印,例如打印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
。
不清楚整数变量的作用是什么。