10 为什么 `\NewDocumentCommand` 中 `O` 型 argument 中默认指定的 `l3seq` 可以被读取,但是后续自行指定变无法读取了?

发布于 2024-11-14 17:27:11

如题,命令 \foo 接受一个O型argument,默认值 3:2,然后通过 \seq_set_split 读取该argument,分隔符为 :.

但是发现默认值可以读取,而自行指定的值(如 \foo[1:2])却无法读取,或者更进一步来说无法展开. 但是我已经 \seq_set_split:Nee \l__skyrmion_tmp_seq {:} {#1} 把那个argument设为e变体了...

下方MWE输出为:

3, and 2
1:2, and
\documentclass{article}

\ExplSyntaxOn

\seq_new:N \l__skyrmion_tmp_seq
\NewDocumentCommand \foo {O{3:2}}
  {
    \group_begin:
    \seq_set_split:Nee \l__skyrmion_tmp_seq {:} {#1}
    \exp_args:NNe \seq_item:Nn \l__skyrmion_tmp_seq {1},~ and~
    \exp_args:NNe \seq_item:Nn \l__skyrmion_tmp_seq {2}
    \group_end:
  }

\ExplSyntaxOff

\begin{document}

\foo

\foo[1:2]

\end{document}

查看更多

关注者
0
被浏览
96
鱼香肉丝没有鱼先生
脾气不好,别来惹我!!!
\documentclass{article}

\ExplSyntaxOn

\seq_new:N \l__skyrmion_tmp_seq
\NewDocumentCommand \foo {O{3\c_colon_str2}}
  {
    \group_begin:
    \seq_set_split:Nee \l__skyrmion_tmp_seq {\c_colon_str} {#1}
    \exp_args:NNe \seq_item:Nn \l__skyrmion_tmp_seq {1},~ and~
    \exp_args:NNe \seq_item:Nn \l__skyrmion_tmp_seq {2}
    \group_end:
  }

\ExplSyntaxOff

\begin{document}

\foo

\foo[1:2]

\end{document}
1 个回答

撰写答案

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

发布
问题

分享
好友

手机
浏览

扫码手机浏览