# [texhax] pgf & dim & 1-element array-like structures

Neal H. Walfield neal at walfield.org
Tue Aug 2 14:13:11 CEST 2016

Hi,

I'm trying to get the length a pgf array-like structure in a macro.
I'm using the "dim" function.  I want the caller to pass a list as
follows:

\foo{"something", "another thing"}

Sometimes, only one string needs to be passed, in this case, the
following should be enough:

\foo{"one thing"}

Here's a simplified version of some code that I've tried:

\documentclass{article}

\usepackage{pgf}
\def\foo#1{
\def\array{{#1}}
\pgfmathparse{dim(\array)}
dim(\array) = \pgfmathresult
}

\def\bar#1{
\def\array{{#1, ""}}
\pgfmathparse{dim(\array)}
dim(\array) = \pgfmathresult
}

\begin{document}

\foo{"xyz"}

\foo{{"xyz"}}

\foo{"xyz", "abc"}

\bar{"xyz"}

\bar{"xyz", "abc"}

\end{document}

The calls to \foo output:

dim("xyz") = 3
dim("xyz") = 1
dim("xyz", "abc") = 2

The "bug" with single element arrays is apparently known.  To work
around it, I thought I'd just add an empty element to the array-like
structure, as shown in \bar above.  But, this results in the following
error:

! Undefined control sequence.
\pgfmath at token@stop ->\pgfmath at stop

l.25 \bar{"xyz"}

! Undefined control sequence.
\pgfmath at token@stop ->\pgfmath at stop

l.27 \bar{"xyz", "abc"}

Does anyone have an idea what the problem could be?

Thanks!

:) Neal