列表的长度作为 pgfmath 函数

列表的长度作为 pgfmath 函数

我读此主题但是我想要一个 pgfmath 函数来给出类似列表的长度\def\mylist{1,2,3,5,7},因为我需要该值进行一些后续计算。

以下无法正常工作。

我得到一个输出: 112357
它应该是: 5

我需要做什么?

\documentclass[a4paper]{article}
\usepackage{tikz}

\begin{document}
\makeatletter
\pgfmathdeclarefunction{Len}{1}{%
\begingroup
\def\templist{#1}
\foreach[count=\mycount] \i in \templist {   \xdef\Len{\mycount}  }%
\Len%
\endgroup
}
\makeatother

\def\mylist{1,2,3,5,7}
\pgfmathparse{Len(\mylist)}\pgfmathresult
\end{document}

答案1

请注意,PGF 数组应该有一组额外的括号:

\def\myarray{{1,2,3}}
\pgfmathparse{dim{\myarray}}

你得到 3 个存储在 中\pgfmathresult

您可以访问n第一项

\pgfmathparse{\myarray[n]}

存储\pgfmathresultn第一项。请记住,索引从 0 开始。

完整示例:

\documentclass{article}
\usepackage{pgfmath}

\newcommand{\myarray}{{640,231,100,91,1003}}

\begin{document}

\pgfmathparse{dim{\myarray}}\pgfmathresult: should be 5

\pgfmathparse{\myarray[4]}\pgfmathresult: should be 1003

\pgfmathparse{dim({640,231,100,91,1003})}\pgfmathresult: should be 5

\pgfmathparse{dim{{640,231,100,91,1003}}}\pgfmathresult: should be 5

\end{document}

您会看到dim(...)dim{...}等效,但无论如何都需要数组周围的括号。

在此处输入图片描述

相关内容