pgfmath-function으로 목록의 길이

Oct 29 2020

이 스레드를 읽었 지만 \def\mylist{1,2,3,5,7}나중에 계산할 값이 필요하기 때문에 와 같은 목록의 길이를 제공하는 pgfmath 함수를 갖고 싶습니다 .

다음은 올바르게 작동하지 않습니다.

출력을 얻습니다. 다음과 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}

답변

3 egreg Oct 28 2020 at 23:57

PGF 배열에는 추가 중괄호 세트가 있어야합니다.

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

당신은 \pgfmathresult.

n 번째 항목에 액세스 할 수 있습니다.

\pgfmathparse{\myarray[n]}

에있는 점포 N 번째 항목. 인덱싱은 0에서 시작합니다.\pgfmathresult

전체 예 :

\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{...}동일하지만, 배열의 주위에 괄호가 어쨌든 필요하다.