如何获取 \foreach 循环中元素的数量?

如何获取 \foreach 循环中元素的数量?

PGF 命令是否\foreach提供了一种简单的可能性来获取迭代元素的数量?

它有一个参数count用于保存当前元素数量,因此一个解决方法是迭代列表一次。执行后,最后的计数就是 中的元素数量#1

\foreach \letter [count=\n] in {#1} {}
% \n now keeps the number of elements.

不用迭代整个列表一次就能实现这一点吗?

答案1

\documentclass{minimal}
\usepackage{tikz}
\newcounter{dummy}
\def\getNoOfElements#1#2{%
  \setcounter{dummy}{0}% 
  \foreach\dummy in {#1}{\stepcounter{dummy}}%
  \edef#2{\arabic{dummy}}
}
\begin{document}

\getNoOfElements{a,b,c,d,e,f}\No % save the value in \No
\No

\getNoOfElements{1,2,3,4}\No
\No

\end{document}

答案2

如果不至少迭代一次列表,就不可能知道列表中元素的数量。我认为您不需要以下技巧。

\def\procedure#1#2{%
%#1 comma separated elements
%#2 the number of elements in the list
\foreach \letter in {#1} {}%
% use the #2 here...
}

相关内容