当然还有其他包可以实现这种效果,但我想在 中来实现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}