我正在尝试创建以下宏:
\adddescr{<comma separated list>}{<description 1>}...{<description n>}
这个宏应该element -- description \par
相应地打印,以便根据列表中的项目数量,\adddescr
应该读取以下标记的数量。
以下是一些具体的例子:
\adddescr{foo,bar,baz}{aaa}{bbb}{ccc}
\adddescr{one,two,three}1{two}three
输出结果必须是这样的
foo — aaa
bar — bbb
baz — ccc
one — 1
two — two
three — t
hree
这是我目前所拥有的——它目前只能遍历我的列表并打印它,而不能解析以下标记
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\def\adddescr#1{
\seq_set_split:Nnn \l_tempa_seq {,} {#1}
\seq_map_inline:Nn \l_tempa_seq {
##1 ~ -- ~ \par
}
}
\ExplSyntaxOff
\begin{document}
\adddescr{foo,bar,baz}{aaa}{bbb}{ccc}
\\
\adddescr{one,two,three}1{two}three
\end{document}
答案1
\documentclass{article}
\def\adddescr#1{\adddescrx#1,\adddescrstop,\relax}
\def\adddescrx#1,#2\relax{#1\adddescrnext{#2}}
\def\adddescrnext#1#2{ -- #2\par\adddescrx#1\relax}
\def\adddescrstop#1#2{}
\begin{document}
\adddescr{foo,bar,baz}{aaa}{bbb}{ccc}
\adddescr{one,two,three}1{two}three
\end{document}
这里只使用简单的递归而不是expl3
循环。