使用以下命令可以计算列表中的标记。如何计算列表中逗号的数量?
\documentclass{article}
\usepackage{xfp}
\begin{document}
\ExplSyntaxOn
\NewDocumentCommand{\CountComma}{m}{%
\tl_count:n {#1}
}
\ExplSyntaxOff
\CountComma{1/!/?,2/1/0,3+2/1*2,4/0,5/1/0,6/0,A/B/1,8/0,9/0}
\end{document}
答案1
这只是针对逗号之间没有元素,或者逗号不在成对出现的情况的解决方案{}
:
\clist_count:n
计算逗号分隔列表中元素的数量,但是,{1,2}
会给出2
而不是1
,因此将\int_eval:n{\clist_count:n {#1} -1}
其包裹起来。
使用 egreg 的提示:\int_max:nn {\clist_count:n {#1} -1}{0}
更短
当然,\CountComma
宏应该是可扩展的,因此使用\NewExpandableDocumentCommand
。
\documentclass{article}
\usepackage{xfp}
\ExplSyntaxOn
\NewExpandableDocumentCommand{\CountComma}{m}{% Should be expandable!
\int_max:nn { \clist_count:n {#1}-1 } {0}
}
\ExplSyntaxOff
\begin{document}
\CountComma{1/!/?,2/1/0,3+2/1*2,4/0,5/1/0,6/0,A/B/1,8/0,9/0}
\CountComma{1,2}
\CountComma{4}
\edef\foo{\CountComma{1,2,3}}
Foo is \foo
\end{document}