expl3:拆分为每个新行的序列

expl3:拆分为每个新行的序列

当然还有其他包可以实现这种效果,但我想在 中来实现expl3

我在这个 MWE 中尝试做的是创建一个函数,将其输入放入一个序列中,并将其拆分为每个新行。

代码

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\foo}{+mm}{%
    \begingroup
  \ttfamily
        \seq_new:N \l_troll_seq
        \endlinechar=,
        \seq_set_split:Nnn \l_troll_seq {,} {#1}
        \seq_item:Nn \l_troll_seq {#2}
    \endgroup
}
\ExplSyntaxOff
\begin{document}

Should output ``Bar Foo'':

\foo{
Bar Foo
Baz Bar}{1}

Should output ``Baz Bar'':

\foo{
Bar Foo
Baz Bar}{2}
\end{document}

编辑:输入不受我控制,可能包括空格和大多数常规符号。

答案1

您需要在解析参数之前更改行尾的解释。

在此处输入图片描述

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
        \seq_new:N \l_troll_seq
\NewDocumentCommand{\foo}{}{%
    \begingroup
  \ttfamily
  \endlinechar=`\,
   \fooo}

\NewDocumentCommand{\fooo}{+mm}{%
        \seq_set_split:Nnn \l_troll_seq {,} {#1}
        \seq_item:Nn \l_troll_seq {#2}
    \endgroup
}
\ExplSyntaxOff
\begin{document}

Should output ``Bar'':

\foo{%
Bar
Baz}{1}

Should output ``Baz'':

\foo{%
Bar
Baz}{2}

\end{document}

相关内容