计算列表中逗号的数量

计算列表中逗号的数量

使用以下命令可以计算列表中的标记。如何计算列表中逗号的数量?

\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}

相关内容