latex3:我不明白的错误

latex3:我不明白的错误

我有以下代码:

\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

或使用局部变量。

相关内容