我编写了这个宏来将以逗号分隔的对象列表转换为自定义分隔的对象列表:
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand{\separators}{m}{%
\clist_map_inline:nn{#1}{{##1}\ **\ }%
}
\ExplSyntaxOff
但\separators{a, b, c}
显然收益
a ** b ** c **
代替
a ** b ** c
如何防止我的列表中的最后一项以与其他项相同的方式进行处理?
答案1
该map
函数旨在平等地处理所有条目。在这里,你实际上是使用a clist
(将其插入到输出中)
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\NewDocumentCommand \separators { m }
{
\clist_set:Nn \l_tmpa_clist {#1}
\clist_use:Nn \l_tmpa_clist { ~**~ }
}
\ExplSyntaxOff
\begin{document}
\separators{a,b,c}
\end{document}
另请查看\clist_use:Nnnn
是否需要在较长列表末尾采取不同的行为,以及当恰好有两个条目时。