我有以下代码:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\cs_new:Nn \__test_current_choice_against_version: { I'm working }
\seq_new:N \g__user_defined_choice_seq
\NewDocumentCommand{\choices}{ O{;} m }{
\texttt{#2}\par
\seq_set_split:Nnn \g__user_defined_choice_seq #1 #2
\seq_show:N \g__user_defined_choice_seq
}
\ExplSyntaxOff
\begin{document}
Choosing \choices{x;y;z;w}
\end{document}
但似乎它根本没有达到我所期望的效果。
第一的正在\seq_show:N
产生错误,文档不会产生输出。错误是:
The sequence \g__user_defined_choice_seq contains the items (without outer
braces):
> {x}.
<recently read> }
l.17 Choosing \choices{x;y;z;w}
?
第二我之所以尝试,\seq_show:N......
是因为我的论点不会被分裂。我期望它\g__user_defined_choice_seq
应该有四个要素,而不仅仅是一个。
编辑
我也曾尝试过\seq_gset_split
认为这可能是论点分裂的问题,但这似乎并没有什么区别。
答案1
您缺少#1
和周围的括号#2
:
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\seq_new:N \l__user_defined_choice_seq
\NewDocumentCommand{\choices}{ O{;} m }
{
\texttt{#2}\par
\seq_set_split:Nnn \l__user_defined_choice_seq { #1 } { #2 }
\seq_show:N \l__user_defined_choice_seq
}
\ExplSyntaxOff
\begin{document}
Choosing \choices{x;y;z;w}
\end{document}
n
类型参数应始终放在括号中,而N
参数则不应放在括号中(并且应仅由一个标记组成)。
此外,您还混淆了“本地”和“全局”。带有前缀的变量g_
应始终在全局范围内起作用。因此,要么使用
\seq_gset_split:Nnn
或使用局部变量。