diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex | 1014 |
1 files changed, 510 insertions, 504 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex index 8ccdc64493a..bf95161576d 100644 --- a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibrarymath.code.tex @@ -9,625 +9,631 @@ -\edef\tikz@math@at@catcode{\the\catcode`\@} +\edef\tikz@math@at@catcode{\the\catcode`\@}% \catcode`\@=11 -\def\tikz@math@gobblespaces#1{\pgfutil@ifnextchar x{#1}{#1}} +\def\tikz@math@gobblespaces#1{\pgfutil@ifnextchar x{#1}{#1}}% -\def\tikz@math@meaning@macro{macro} -\def\tikz@math@meaning@dimen{dimen} -\def\tikz@math@meaning@count{count} -\def\tikz@math@meaning@null{null} +\def\tikz@math@meaning@macro{macro}% +\def\tikz@math@meaning@dimen{dimen}% +\def\tikz@math@meaning@count{count}% +\def\tikz@math@meaning@null{null}% -\def\tikz@math@getmeaning#1{\expandafter\tikz@math@@getmeaning\meaning#1\tikz@math@getmeaning@stop} +\def\tikz@math@getmeaning#1{\expandafter\tikz@math@@getmeaning\meaning#1\tikz@math@getmeaning@stop}% \def\tikz@math@@getmeaning#1#2#3#4#5\tikz@math@getmeaning@stop{% - \if#1u% undefined - \let\tikz@math@meaning=\tikz@math@meaning@macro% - \else% - \if#1m% - \let\tikz@math@meaning=\tikz@math@meaning@macro% - \else% - \if#2d% - \let\tikz@math@meaning=\tikz@math@meaning@dimen% - \else% - \if#2c% - \let\tikz@math@meaning=\tikz@math@meaning@count% - \else% - \if#3k% A skip. Treat like a dimen. - \let\tikz@math@meaning=\tikz@math@meaning@dimen% - \else% - \let\tikz@math@meaning=\tikz@math@meaning@null% - \fi% - \fi% - \fi% - \fi% - \fi% -} - -\def\tikz@math@firstoftwo#1#2{#1} -\def\tikz@math@secondoftwo#1#2{#2} + \if#1u% undefined + \let\tikz@math@meaning=\tikz@math@meaning@macro% + \else% + \if#1m% + \let\tikz@math@meaning=\tikz@math@meaning@macro% + \else% + \if#2d% + \let\tikz@math@meaning=\tikz@math@meaning@dimen% + \else% + \if#2c% + \let\tikz@math@meaning=\tikz@math@meaning@count% + \else% + \if#3k% A skip. Treat like a dimen. + \let\tikz@math@meaning=\tikz@math@meaning@dimen% + \else% + \let\tikz@math@meaning=\tikz@math@meaning@null% + \fi% + \fi% + \fi% + \fi% + \fi% +}% + +\def\tikz@math@firstoftwo#1#2{#1}% +\def\tikz@math@secondoftwo#1#2{#2}% \def\tikz@math@getvarstring#1{% - \begingroup% - \escapechar=-1\relax% - \expandafter\tikz@math@@getvarstring\string#1\tikz@math} + \begingroup% + \escapechar=-1\relax% + \expandafter\tikz@math@@getvarstring\string#1\tikz@math}% \def\tikz@math@@getvarstring#1\tikz@math#2{% - \endgroup% - \def#2{#1}% -} + \endgroup% + \def#2{#1}% +}% \long\def\tikz@math@collecttosemicolon@other#1#2;{% - \def\tikz@math@collected{#2}#1} + \def\tikz@math@collected{#2}#1}% \def\tikz@math@semicolon@other{;}% {\catcode`\;=13 \long\gdef\tikz@math@collecttosemicolon@active#1#2;{% - \def\tikz@math@collected{#2}#1} + \def\tikz@math@collected{#2}#1}% \gdef\tikz@math@semicolon@active{;}% -} +}% \def\tikz@math@setvartype#1#2{% - \expandafter\let\csname tikz@math@var@vartype@\string#1\endcsname=#2% -} + \expandafter\let\csname tikz@math@var@vartype@\string#1\endcsname=#2% +}% \def\tikz@math@getvartype#1#2{% - \def\tikz@math@marshal{\let#1=}% - \expandafter\tikz@math@marshal\csname - tikz@math@var@vartype@\string#2\endcsname% -} + \def\tikz@math@marshal{\let#1=}% + \expandafter\tikz@math@marshal\csname + tikz@math@var@vartype@\string#2\endcsname% +}% \def\tikz@math@ifvarcoordinate#1{% - \expandafter\ifx\csname - tikz@math@var@vartype@\string#1\endcsname\tikz@math@keyword@coordinate% - \let\tikz@math@next=\tikz@math@firstoftwo% - \else% - \let\tikz@math@next=\tikz@math@secondoftwo% - \fi% - \tikz@math@next% -} + \expandafter\ifx\csname + tikz@math@var@vartype@\string#1\endcsname\tikz@math@keyword@coordinate% + \let\tikz@math@next=\tikz@math@firstoftwo% + \else% + \let\tikz@math@next=\tikz@math@secondoftwo% + \fi% + \tikz@math@next% +}% \def\tikz@math@ifvarinteger#1{% - \expandafter\ifx\csname - tikz@math@var@vartype@\string#1\endcsname\tikz@math@keyword@integer% - \let\tikz@math@next=\tikz@math@firstoftwo% - \else% - \let\tikz@math@next=\tikz@math@secondoftwo% - \fi% - \tikz@math@next% -} + \expandafter\ifx\csname + tikz@math@var@vartype@\string#1\endcsname\tikz@math@keyword@integer% + \let\tikz@math@next=\tikz@math@firstoftwo% + \else% + \let\tikz@math@next=\tikz@math@secondoftwo% + \fi% + \tikz@math@next% +}% \def\tikz@math@setvarindexed#1{% - \expandafter\let\csname - tikz@math@var@subtype@\string#1\endcsname=\tikz@math@subtype@indexed% -} + \expandafter\let\csname + tikz@math@var@subtype@\string#1\endcsname=\tikz@math@subtype@indexed% +}% \def\tikz@math@clearvarindexed#1{% - \expandafter\let\csname tikz@math@var@subtype@\string#1\endcsname=\relax% -} + \expandafter\let\csname tikz@math@var@subtype@\string#1\endcsname=\relax% +}% \def\tikz@math@ifvarindexed#1{% - \expandafter\ifx\csname tikz@math@var@subtype@\string#1\endcsname\relax% - \let\tikz@math@next=\tikz@math@secondoftwo% - \else% - \let\tikz@math@next=\tikz@math@firstoftwo% - \fi% - \tikz@math@next% -} + \expandafter\ifx\csname tikz@math@var@subtype@\string#1\endcsname\relax% + \let\tikz@math@next=\tikz@math@secondoftwo% + \else% + \let\tikz@math@next=\tikz@math@firstoftwo% + \fi% + \tikz@math@next% +}% -\def\tikz@math@stop{@} +\def\tikz@math@stop{@}% \let\tikz@math@parse@hook@before=\pgfutil@empty \let\tikz@math@parse@hook@after=\pgfutil@empty \def\tikz@math{% - \ifnum\catcode`\;=13\relax% - \let\tikz@math@semicolon=\tikz@math@semicolon@active% - \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@active% - \else% - \let\tikz@math@semicolon=\tikz@math@semicolon@other% - \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@other% - \fi% - \tikz@math@parse@hook@before% - \tikz@@math} + \ifnum\catcode`\;=13\relax% + \let\tikz@math@semicolon=\tikz@math@semicolon@active% + \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@active% + \else% + \let\tikz@math@semicolon=\tikz@math@semicolon@other% + \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@other% + \fi% + \tikz@math@parse@hook@before% + \tikz@@math}% \long\def\tikz@@math#1{% - \def\tikz@math@marshal{\tikz@math@parse#1}% - \expandafter\expandafter\expandafter\tikz@math@marshal\expandafter\tikz@math@stop\tikz@math@semicolon} - -\def\tikz@math@parse{\pgfutil@ifnextchar\bgroup\tikz@math@@parse@bgroup\tikz@math@@parse@nobgroup} + \def\tikz@math@marshal{\tikz@math@parse#1}% + \expandafter\expandafter\expandafter\tikz@math@marshal\expandafter\tikz@math@stop\tikz@math@semicolon}% + +\def\tikz@math@parse{\pgfutil@ifnextchar\bgroup\tikz@math@@parse@bgroup\tikz@math@@parse@nobgroup}% \def\tikz@math@@parse@bgroup{% - \tikz@math@collecttosemicolon{% - % MW: Don't know how reliable this test is. - \ifx\pgf@selectfontorig\tikz@math@undefined% - \begingroup\tikz@math@collected\endgroup% - \else% - \begingroup\csname nullfont\endcsname\tikz@math@collected\endgroup% - \fi\tikz@math@parse}} - + \tikz@math@collecttosemicolon{% + % MW: Don't know how reliable this test is. + \ifx\pgf@selectfontorig\tikz@math@undefined% + \begingroup\tikz@math@collected\endgroup% + \else% + \begingroup\csname nullfont\endcsname\tikz@math@collected\endgroup% + \fi\tikz@math@parse}}% + -\def\tikz@math@@parse@nobgroup{\tikz@math@collecttosemicolon{\tikz@math@@parse@@nobgroup}} +\def\tikz@math@@parse@nobgroup{\tikz@math@collecttosemicolon{\tikz@math@@parse@@nobgroup}}% \def\tikz@math@@parse@@nobgroup{% - \let\tikz@math@tmp=\tikz@math@collected% - \ifx\tikz@math@tmp\tikz@math@stop% - \def\tikz@math@next{\expandafter\tikz@math@parse@finish\tikz@math@semicolon}% - \else% - \def\tikz@math@next{\expandafter\expandafter\expandafter\tikz@math@parse@keyword@check\expandafter\tikz@math@tmp\tikz@math@semicolon}% - \fi% - \tikz@math@next% -} + \let\tikz@math@tmp=\tikz@math@collected% + \ifx\tikz@math@tmp\tikz@math@stop% + \def\tikz@math@next{\expandafter\tikz@math@parse@finish\tikz@math@semicolon}% + \else% + \def\tikz@math@next{\expandafter\expandafter\expandafter\tikz@math@parse@keyword@check\expandafter\tikz@math@tmp\tikz@math@semicolon}% + \fi% + \tikz@math@next% +}% \def\tikz@math@parse@finish{% - \tikz@math@collecttosemicolon{\tikz@math@parse@hook@after}% -} + \tikz@math@collecttosemicolon{\tikz@math@parse@hook@after}% +}% \newif\iftikz@math@let \def\tikz@math@parse@keyword@check#1{% - \tikz@math@letfalse% - \tikz@math@getmeaning{#1}% - \ifx\tikz@math@meaning\tikz@math@meaning@null% - \let\tikz@math@next=\tikz@math@parse@keyword% - \else% - \let\tikz@math@next=\tikz@math@parse@nokeyword% - \fi% - \tikz@math@next#1} + \tikz@math@letfalse% + \tikz@math@getmeaning{#1}% + \ifx\tikz@math@meaning\tikz@math@meaning@null% + \let\tikz@math@next=\tikz@math@parse@keyword% + \else% + \let\tikz@math@next=\tikz@math@parse@nokeyword% + \fi% + \tikz@math@next#1}% \def\tikz@math@parse@keyword{% - \let\tikz@math@parsed@keyword=\pgfutil@empty% - \futurelet\tikz@math@parse@token\tikz@math@@parse@keyword} + \let\tikz@math@parsed@keyword=\pgfutil@empty% + \futurelet\tikz@math@parse@token\tikz@math@@parse@keyword}% \def\tikz@math@@parse@keyword{% - \ifx\tikz@math@parse@token\pgfutil@sptoken% - \let\tikz@math@next=\tikz@math@@@parse@keyword% - \else% - \ifx\tikz@math@parse@token(% - \let\tikz@math@next=\tikz@math@@@parse@keyword% - \else% - \ifx\tikz@math@parse@token\bgroup% - \let\tikz@math@next=\tikz@math@@@parse@keyword% - \else% - \let\tikz@math@next=\tikz@math@@@@parse@keyword% - \fi% - \fi% - \fi% - \tikz@math@next} - -\def\tikz@math@error#1{\pgfutil@packageerror{tikz}{tikz math library: #1}{}} + \ifx\tikz@math@parse@token\pgfutil@sptoken% + \let\tikz@math@next=\tikz@math@@@parse@keyword% + \else% + \ifx\tikz@math@parse@token(% + \let\tikz@math@next=\tikz@math@@@parse@keyword% + \else% + \ifx\tikz@math@parse@token\bgroup% + \let\tikz@math@next=\tikz@math@@@parse@keyword% + \else% + \let\tikz@math@next=\tikz@math@@@@parse@keyword% + \fi% + \fi% + \fi% + \tikz@math@next}% + +\def\tikz@math@error#1{\pgfutil@packageerror{tikz}{tikz math library: #1}{}}% \def\tikz@math@@@parse@keyword{% - \expandafter\ifx\csname tikz@math@process@keyword@\tikz@math@parsed@keyword\endcsname\relax% - \expandafter\ifx\csname pgfmath\tikz@math@parsed@keyword\endcsname\relax% - \tikz@math@error{Unknown function or keyword '\tikz@math@parsed@keyword'}% - \else% - \def\tikz@math@next{\tikz@math@collecttosemicolon{\tikz@math@function@noassign}}% - \fi% - \else% - \expandafter\def\expandafter\tikz@math@next\expandafter{\csname tikz@math@process@keyword@\tikz@math@parsed@keyword\endcsname}% - \fi% - \tikz@math@next} - + \expandafter\ifx\csname tikz@math@process@keyword@\tikz@math@parsed@keyword\endcsname\relax% + \expandafter\ifx\csname pgfmath\tikz@math@parsed@keyword\endcsname\relax% + \tikz@math@error{Unknown function or keyword '\tikz@math@parsed@keyword'}% + \else% + \def\tikz@math@next{\tikz@math@collecttosemicolon{\tikz@math@function@noassign}}% + \fi% + \else% + \expandafter\def\expandafter\tikz@math@next\expandafter{\csname tikz@math@process@keyword@\tikz@math@parsed@keyword\endcsname}% + \fi% + \tikz@math@next}% + \def\tikz@math@@@@parse@keyword#1{% - \edef\tikz@math@parsed@keyword{\tikz@math@parsed@keyword#1}% - \futurelet\tikz@math@parse@token\tikz@math@@parse@keyword% -} + \edef\tikz@math@parsed@keyword{\tikz@math@parsed@keyword#1}% + \futurelet\tikz@math@parse@token\tikz@math@@parse@keyword% +}% \def\tikz@math@function@noassign{% - \pgfmathparse{\tikz@math@parsed@keyword\tikz@math@collected}% - \tikz@math@parse% -} - - - - -\def\tikz@math@process@keyword@count{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@count}} + \pgfmathparse{\tikz@math@parsed@keyword\tikz@math@collected}% + \tikz@math@parse% +}% + + + + +\def\tikz@math@process@keyword@count{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@count}}% \def\tikz@math@process@keyword@@count{% \def\tikz@math@assign@register{\csname newcount\endcsname}% -\expandafter\tikz@math@gobblespaces\expandafter\tikz@math@process@registers\tikz@math@collected,@,} +\expandafter\tikz@math@gobblespaces\expandafter\tikz@math@process@registers\tikz@math@collected,@,}% -\def\tikz@math@process@keyword@length{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@length}} +\def\tikz@math@process@keyword@length{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@length}}% \def\tikz@math@process@keyword@@length{% \def\tikz@math@assign@register{\csname newdimen\endcsname}% \show\tikz@math@collected -\expandafter\tikz@math@gobblespaces\expandafter\tikz@math@process@registers\tikz@math@collected,@,} +\expandafter\tikz@math@gobblespaces\expandafter\tikz@math@process@registers\tikz@math@collected,@,}% \def\tikz@math@process@registers#1#2,{% - \def\tikz@math@var{#1}% - \ifx\tikz@math@var\tikz@math@stop% - \let\tikz@math@next=\tikz@math@parse% - \else% - \tikz@math@assign@register#1\relax% - \let\tikz@math@next=\tikz@math@process@registers% - \fi% - \tikz@math@gobblespaces\tikz@math@next% -} + \def\tikz@math@var{#1}% + \ifx\tikz@math@var\tikz@math@stop% + \let\tikz@math@next=\tikz@math@parse% + \else% + \tikz@math@assign@register#1\relax% + \let\tikz@math@next=\tikz@math@process@registers% + \fi% + \tikz@math@gobblespaces\tikz@math@next% +}% \def\tikz@math@process@keyword@if#1then{% - \def\tikz@math@if@condition{#1}% - \tikz@math@gobblespaces\tikz@math@parse@if@iftrue% -} + \def\tikz@math@if@condition{#1}% + \tikz@math@gobblespaces\tikz@math@parse@if@iftrue% +}% \def\tikz@math@parse@if@iftrue#1{% - \def\tikz@math@if@trueaction{#1}% - \pgfutil@ifnextchar e{\tikz@math@parse@else}{\tikz@math@if@doif}} + \def\tikz@math@if@trueaction{#1}% + \pgfutil@ifnextchar e{\tikz@math@parse@else}{\tikz@math@if@doif}}% -\def\tikz@math@parse@else else{\tikz@math@gobblespaces\tikz@math@if@doifelse} +\def\tikz@math@parse@else else{\tikz@math@gobblespaces\tikz@math@if@doifelse}% -\def\tikz@math@if@doif{\tikz@math@collecttosemicolon{\tikz@math@if@@doif}} +\def\tikz@math@if@doif{\tikz@math@collecttosemicolon{\tikz@math@if@@doif}}% \def\tikz@math@if@@doif{% - \pgfmathparse{\tikz@math@if@condition}% - \ifdim\pgfmathresult pt=0pt\relax% - \else% - \expandafter\tikz@math\expandafter{\tikz@math@if@trueaction}% - \fi% - \tikz@math@parse% -} -\def\tikz@math@if@doifelse{\tikz@math@collecttosemicolon{\tikz@math@if@@doifelse}} + \pgfmathparse{\tikz@math@if@condition}% + \ifpgfmathfloatparseactive% + \pgfmathfloattofixed{\pgfmathresult}% + \fi% + \ifdim\pgfmathresult pt=0pt\relax% + \else% + \expandafter\tikz@math\expandafter{\tikz@math@if@trueaction}% + \fi% + \tikz@math@parse% +}% +\def\tikz@math@if@doifelse{\tikz@math@collecttosemicolon{\tikz@math@if@@doifelse}}% \def\tikz@math@if@@doifelse{% - \pgfmathparse{\tikz@math@if@condition}% - \let\tikz@math@if@falseaction=\tikz@math@collected% - \ifdim\pgfmathresult pt=0pt\relax% - \expandafter\tikz@math\expandafter{\tikz@math@if@falseaction}% - \else% - \expandafter\tikz@math\expandafter{\tikz@math@if@trueaction}% - \fi% - \tikz@math@parse% -} + \pgfmathparse{\tikz@math@if@condition}% + \ifpgfmathfloatparseactive% + \pgfmathfloattofixed{\pgfmathresult}% + \fi% + \let\tikz@math@if@falseaction=\tikz@math@collected% + \ifdim\pgfmathresult pt=0pt\relax% + \expandafter\tikz@math\expandafter{\tikz@math@if@falseaction}% + \else% + \expandafter\tikz@math\expandafter{\tikz@math@if@trueaction}% + \fi% + \tikz@math@parse% +}% \def\tikz@math@process@keyword@let{% - \tikz@math@lettrue% - \tikz@math@gobblespaces\tikz@math@parse@nokeyword% -} + \tikz@math@lettrue% + \tikz@math@gobblespaces\tikz@math@parse@nokeyword% +}% \def\tikz@math@parse@nokeyword#1{% - \def\tikz@math@var{#1}% - \tikz@math@getvarstring{#1}\tikz@math@varstring% - \let\tikz@math@vartype=\pgfutil@empty% - \ifx\tikz@math@var\tikz@math@stop% - \let\tikz@math@next=\tikz@math@parse@finish% - \else% + \def\tikz@math@var{#1}% + \tikz@math@getvarstring{#1}\tikz@math@varstring% + \let\tikz@math@vartype=\pgfutil@empty% + \ifx\tikz@math@var\tikz@math@stop% + \let\tikz@math@next=\tikz@math@parse@finish% + \else% \ifx\tikz@math@semicolon\tikz@math@var% - \let\tikz@math@next=\tikz@math@parse% - \else% - \let\tikz@math@next=\tikz@math@parse@index@check% - \fi% - \fi% - \tikz@math@next} + \let\tikz@math@next=\tikz@math@parse% + \else% + \let\tikz@math@next=\tikz@math@parse@index@check% + \fi% + \fi% + \tikz@math@next}% \def\tikz@math@parse@index@check{% - \pgfutil@ifnextchar={\tikz@math@parse@noindex}{\tikz@math@parse@index}} - + \pgfutil@ifnextchar={\tikz@math@parse@noindex}{\tikz@math@parse@index}}% + \def\tikz@math@parse@noindex{% - \expandafter\tikz@math@clearvarindexed\tikz@math@var% - \let\tikz@math@current@index=\pgfutil@empty% - \tikz@math@parse@afterindex% -} + \expandafter\tikz@math@clearvarindexed\tikz@math@var% + \let\tikz@math@current@index=\pgfutil@empty% + \tikz@math@parse@afterindex% +}% \def\tikz@math@parse@index#1{% - \def\tikz@math@tmp{#1}% - \expandafter\tikz@math@setvarindexed\tikz@math@var% {} - \edef\tikz@math@current@index{#1}% - \tikz@math@parse@afterindex% -} + \def\tikz@math@tmp{#1}% + \expandafter\tikz@math@setvarindexed\tikz@math@var% {} + \edef\tikz@math@current@index{#1}% + \tikz@math@parse@afterindex% +}% \def\tikz@math@parse@afterindex#1={\tikz@math@gobblespaces\tikz@math@parse@assignment}% -\def\tikz@math@parse@assignment{\tikz@math@collecttosemicolon{\tikz@math@parse@@assignment}} +\def\tikz@math@parse@assignment{\tikz@math@collecttosemicolon{\tikz@math@parse@@assignment}}% \def\tikz@math@parse@@assignment{% - \expandafter\expandafter\expandafter\tikz@math@doassignment\expandafter\expandafter\expandafter% - {\expandafter\tikz@math@var\expandafter}\expandafter{\tikz@math@collected}% - \tikz@math@parse% -} + \expandafter\expandafter\expandafter\tikz@math@doassignment\expandafter\expandafter\expandafter% + {\expandafter\tikz@math@var\expandafter}\expandafter{\tikz@math@collected}% + \tikz@math@parse% +}% -\def\tikz@math@dollar@char{$} +\def\tikz@math@dollar@char{$}% \def\tikz@math@dollar@char{$}% For annoying syntax highlighters \def\tikz@math@doassignment#1#2{% - \tikz@math@ifvarcoordinate{#1}{% - \def\tikz@math@var{#1}% Unfortunately, we must do this again. - \tikz@math@getvarstring{#1}\tikz@math@varstring% And this - \expandafter\pgfutil@in@\tikz@math@dollar@char{#2}% - \edef\tikz@math@expression{#2}% - \ifpgfutil@in@% - \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\tikz@math@expression% - \else% - \expandafter\ifx\csname tikz@library@calc@loaded\endcsname\relax% - \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\tikz@math@expression% - \else% - \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\expandafter% - (\expandafter$\tikz@math@expression$)% - \fi% - \fi% - }{% - \iftikz@math@let% Not really a let - \ifx\tikz@math@current@index\pgfutil@empty% - \edef#1{#2}% - \else% - \edef\tikz@math@tmp{#2}% - \expandafter\expandafter\expandafter\tikz@math@assign@index\expandafter\expandafter\expandafter% - {\expandafter\tikz@math@varstring\expandafter}\expandafter{\tikz@math@tmp}% - \fi% - \tikz@math@letfalse% - \else% - \ifx\tikz@math@current@index\pgfutil@empty% - \tikz@math@getmeaning{#1}% - \ifx\tikz@math@meaning\tikz@math@meaning@dimen% - \pgfmathsetlength{#1}{#2}% - \let\tikz@math@last@assigned@value=\pgfmathresult% - \else% - \ifx\tikz@math@meaning\tikz@math@meaning@count% - \pgfmathsetcount{#1}{#2}% - \let\tikz@math@last@assigned@value=\pgfmathresult% - \else% - \tikz@math@ifvarinteger{#1}{\pgfmathparse{int(#2)}}{\pgfmathparse{#2}}% - \let\tikz@math@last@assigned@value=\pgfmathresult% - \let#1=\pgfmathresult% - \fi% - \fi% - \else% - \tikz@math@ifvarinteger{#1}{\pgfmathparse{int(#2)}}{\pgfmathparse{#2}}% - \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring}\pgfmathresult% - \let\tikz@math@last@assigned@value=\pgfmathresult% - \fi% - \fi% - }% -} + \tikz@math@ifvarcoordinate{#1}{% + \def\tikz@math@var{#1}% Unfortunately, we must do this again. + \tikz@math@getvarstring{#1}\tikz@math@varstring% And this + \expandafter\pgfutil@in@\tikz@math@dollar@char{#2}% + \edef\tikz@math@expression{#2}% + \ifpgfutil@in@% + \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\tikz@math@expression% + \else% + \expandafter\ifx\csname tikz@library@calc@loaded\endcsname\relax% + \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\tikz@math@expression% + \else% + \expandafter\tikz@scan@one@point\expandafter\tikz@math@assign@coordinate\expandafter% + (\expandafter$\tikz@math@expression$)% + \fi% + \fi% + }{% + \iftikz@math@let% Not really a let + \ifx\tikz@math@current@index\pgfutil@empty% + \edef#1{#2}% + \else% + \edef\tikz@math@tmp{#2}% + \expandafter\expandafter\expandafter\tikz@math@assign@index\expandafter\expandafter\expandafter% + {\expandafter\tikz@math@varstring\expandafter}\expandafter{\tikz@math@tmp}% + \fi% + \tikz@math@letfalse% + \else% + \ifx\tikz@math@current@index\pgfutil@empty% + \tikz@math@getmeaning{#1}% + \ifx\tikz@math@meaning\tikz@math@meaning@dimen% + \pgfmathsetlength{#1}{#2}% + \let\tikz@math@last@assigned@value=\pgfmathresult% + \else% + \ifx\tikz@math@meaning\tikz@math@meaning@count% + \pgfmathsetcount{#1}{#2}% + \let\tikz@math@last@assigned@value=\pgfmathresult% + \else% + \tikz@math@ifvarinteger{#1}{\pgfmathparse{int(#2)}}{\pgfmathparse{#2}}% + \let\tikz@math@last@assigned@value=\pgfmathresult% + \let#1=\pgfmathresult% + \fi% + \fi% + \else% + \tikz@math@ifvarinteger{#1}{\pgfmathparse{int(#2)}}{\pgfmathparse{#2}}% + \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring}\pgfmathresult% + \let\tikz@math@last@assigned@value=\pgfmathresult% + \fi% + \fi% + }% +}% \def\tikz@math@assign@index#1#2{% - \expandafter\def\csname#1\endcsname##1{\csname - tikz@math@var@indexed@#1@##1\endcsname}% - \expandafter\edef\csname - tikz@math@var@indexed@#1@\tikz@math@current@index\endcsname{#2}\relax% -} + \expandafter\def\csname#1\endcsname##1{\csname + tikz@math@var@indexed@#1@##1\endcsname}% + \expandafter\edef\csname + tikz@math@var@indexed@#1@\tikz@math@current@index\endcsname{#2}\relax% +}% \def\tikz@math@assign@coordinate#1{% - \pgf@process{#1}% - \ifx\tikz@math@current@index\pgfutil@empty% - \expandafter\edef\csname\tikz@math@varstring\endcsname{\the\pgf@x,\the\pgf@y}% - \expandafter\edef\csname\tikz@math@varstring x\endcsname{\the\pgf@x}% - \expandafter\edef\csname\tikz@math@varstring y\endcsname{\the\pgf@y}% - \else% - \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring}{\the\pgf@x,\the\pgf@y}% - \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring x}{\the\pgf@x}% - \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring y}{\the\pgf@y}% - \fi% -} + \pgf@process{#1}% + \ifx\tikz@math@current@index\pgfutil@empty% + \expandafter\edef\csname\tikz@math@varstring\endcsname{\the\pgf@x,\the\pgf@y}% + \expandafter\edef\csname\tikz@math@varstring x\endcsname{\the\pgf@x}% + \expandafter\edef\csname\tikz@math@varstring y\endcsname{\the\pgf@y}% + \else% + \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring}{\the\pgf@x,\the\pgf@y}% + \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring x}{\the\pgf@x}% + \expandafter\tikz@math@assign@index\expandafter{\tikz@math@varstring y}{\the\pgf@y}% + \fi% +}% -\def\tikz@math@keyword@coordinate{coordinate} +\def\tikz@math@keyword@coordinate{coordinate}% \def\tikz@math@process@keyword@coordinate{% - \let\tikz@math@vartype=\tikz@math@keyword@coordinate% - \tikz@math@gobblespaces\tikz@math@process@vartypes% -} + \let\tikz@math@vartype=\tikz@math@keyword@coordinate% + \tikz@math@gobblespaces\tikz@math@process@vartypes% +}% -\def\tikz@math@keyword@integer{integer} +\def\tikz@math@keyword@integer{integer}% \def\tikz@math@process@keyword@integer{% - \let\tikz@math@vartype=\tikz@math@keyword@integer% - \tikz@math@gobblespaces\tikz@math@process@vartypes% -} + \let\tikz@math@vartype=\tikz@math@keyword@integer% + \tikz@math@gobblespaces\tikz@math@process@vartypes% +}% \def\tikz@math@process@keyword@int{% - \tikz@math@process@keyword@integer% -} + \tikz@math@process@keyword@integer% +}% -\def\tikz@math@keyword@real{real} +\def\tikz@math@keyword@real{real}% \def\tikz@math@process@keyword@real{% - \let\tikz@math@vartype=\tikz@math@keyword@real% - \tikz@math@gobblespaces\tikz@math@process@vartypes% -} + \let\tikz@math@vartype=\tikz@math@keyword@real% + \tikz@math@gobblespaces\tikz@math@process@vartypes% +}% -\def\tikz@math@process@keyword@point{\tikz@math@process@keyword@coordinate} +\def\tikz@math@process@keyword@point{\tikz@math@process@keyword@coordinate}% -\def\tikz@math@process@vartypes{\tikz@math@collecttosemicolon{\tikz@math@process@@vartypes}} +\def\tikz@math@process@vartypes{\tikz@math@collecttosemicolon{\tikz@math@process@@vartypes}}% \def\tikz@math@process@@vartypes{% - \expandafter\tikz@math@@process@vartypes\tikz@math@collected,@,\tikz@math% -} + \expandafter\tikz@math@@process@vartypes\tikz@math@collected,@,\tikz@math% +}% \def\tikz@math@@process@vartypes#1#2,{% - \def\tikz@math@var{#1}% - \tikz@math@getvarstring{#1}\tikz@math@varstring% - \ifx\tikz@math@var\tikz@math@stop% - \let\tikz@math@next=\tikz@math@@@process@vartypes% - \else% - \expandafter\tikz@math@setvartype\tikz@math@var\tikz@math@vartype% - \def\tikz@math@next{\tikz@math@gobblespaces\tikz@math@@process@vartypes}% - \fi% - \tikz@math@next% -} - -\def\tikz@math@process@keyword@print{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@print}} + \def\tikz@math@var{#1}% + \tikz@math@getvarstring{#1}\tikz@math@varstring% + \ifx\tikz@math@var\tikz@math@stop% + \let\tikz@math@next=\tikz@math@@@process@vartypes% + \else% + \expandafter\tikz@math@setvartype\tikz@math@var\tikz@math@vartype% + \def\tikz@math@next{\tikz@math@gobblespaces\tikz@math@@process@vartypes}% + \fi% + \tikz@math@next% +}% + +\def\tikz@math@process@keyword@print{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@print}}% \def\tikz@math@process@keyword@@print{% - \begingroup\tikz@math@collected\endgroup\tikz@math@parse% -} + \begingroup\tikz@math@collected\endgroup\tikz@math@parse% +}% \def\tikz@math@@@process@vartypes#1\tikz@math{% - \tikz@math@parse% -} + \tikz@math@parse% +}% \newcount\tikz@math@for@depth -\def\tikz@math@for@namedef#1{\expandafter\def\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname} -\def\tikz@math@for@nameedef#1{\expandafter\edef\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname} -\def\tikz@math@for@namelet#1{\expandafter\let\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname} +\def\tikz@math@for@namedef#1{\expandafter\def\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}% +\def\tikz@math@for@nameedef#1{\expandafter\edef\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}% +\def\tikz@math@for@namelet#1{\expandafter\let\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}% \def\tikz@math@for@namegetvalue#1#2{% - \def\tikz@math@marshal{\let#2=}% - \expandafter\tikz@math@marshal\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname} + \def\tikz@math@marshal{\let#2=}% + \expandafter\tikz@math@marshal\csname tikz@math@for@def@#1@\the\tikz@math@for@depth\endcsname}% \def\tikz@math@process@keyword@for{% - \tikz@math@for% -} + \tikz@math@for% +}% \def\tikz@math@for@external{% - \ifnum\catcode`\;=13\relax% - \let\tikz@math@semicolon=\tikz@math@semicolon@active% - \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@active% - \else% - \let\tikz@math@semicolon=\tikz@math@semicolon@other% - \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@other% - \fi - \advance\tikz@math@for@depth by1\relax% - \tikz@math@for@namedef{execute}{\tikz@math@for@external@execute}% - \tikz@math@for@namedef{finished}{\relax}% - \tikz@math@gobblespaces\tikz@math@for@parsevar} - -\def\tikz@math@for@external@execute#1{#1} + \ifnum\catcode`\;=13\relax% + \let\tikz@math@semicolon=\tikz@math@semicolon@active% + \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@active% + \else% + \let\tikz@math@semicolon=\tikz@math@semicolon@other% + \let\tikz@math@collecttosemicolon=\tikz@math@collecttosemicolon@other% + \fi + \advance\tikz@math@for@depth by1\relax% + \tikz@math@for@namedef{execute}{\tikz@math@for@external@execute}% + \tikz@math@for@namedef{finished}{\relax}% + \tikz@math@gobblespaces\tikz@math@for@parsevar}% + +\def\tikz@math@for@external@execute#1{#1}% \def\tikz@math@for{% - \advance\tikz@math@for@depth by1\relax% - \tikz@math@for@namedef{execute}{\tikz@math}% - \tikz@math@for@namedef{finished}{\tikz@math@parse}% - \tikz@math@gobblespaces\tikz@math@for@parsevar} + \advance\tikz@math@for@depth by1\relax% + \tikz@math@for@namedef{execute}{\tikz@math}% + \tikz@math@for@namedef{finished}{\tikz@math@parse}% + \tikz@math@gobblespaces\tikz@math@for@parsevar}% \def\tikz@math@for@parsevar#1{% - \tikz@math@for@namedef{var}{#1}% - \tikz@math@for@parsein} + \tikz@math@for@namedef{var}{#1}% + \tikz@math@for@parsein}% \def\tikz@math@getindex#1{% - \tikz@math@@getindex#1\tikz@math@getindex\tikz@math@@getindex% -} + \tikz@math@@getindex#1\tikz@math@getindex\tikz@math@@getindex% +}% -\def\tikz@math@@getindex#1#2\tikz@math@@getindex{#1} +\def\tikz@math@@getindex#1#2\tikz@math@@getindex{#1}% \def\tikz@math@for@parsein#1in{% - \def\tikz@math@tmp{#1}% - \ifx\tikz@math@tmp\pgfutil@empty% - \tikz@math@for@namedef{index}{}% - \else% - \tikz@math@for@nameedef{index}{\tikz@math@getindex{#1}}% - \fi% - \tikz@math@gobblespaces\tikz@math@for@parselist% -} + \def\tikz@math@tmp{#1}% + \ifx\tikz@math@tmp\pgfutil@empty% + \tikz@math@for@namedef{index}{}% + \else% + \tikz@math@for@nameedef{index}{\tikz@math@getindex{#1}}% + \fi% + \tikz@math@gobblespaces\tikz@math@for@parselist% +}% \long\def\tikz@math@for@parselist#1{% - \edef\tikz@math@for@list{#1}% - \tikz@math@collecttosemicolon{\tikz@math@for@parseaction}} + \edef\tikz@math@for@list{#1}% + \tikz@math@collecttosemicolon{\tikz@math@for@parseaction}}% \def\tikz@math@for@parseaction{% - \tikz@math@for@namedef{prevvalue}{}% - \tikz@math@for@namedef{prevprevvalue}{}% - \tikz@math@for@namelet{action}=\tikz@math@collected% - \expandafter\tikz@math@for@scan\tikz@math@for@list,\tikz@math,\tikz@@math% -} + \tikz@math@for@namedef{prevvalue}{}% + \tikz@math@for@namedef{prevprevvalue}{}% + \tikz@math@for@namelet{action}=\tikz@math@collected% + \expandafter\tikz@math@for@scan\tikz@math@for@list,\tikz@math,\tikz@@math% +}% -\def\tikz@math@token{\tikz@math} +\def\tikz@math@token{\tikz@math}% \def\tikz@math@for@scan#1,{% - \def\tikz@math@for@value{#1}% - \ifx\tikz@math@for@value\tikz@math@token% - \let\tikz@math@next=\tikz@math@for@scan@end% - \else% - \ifx\tikz@math@for@value\pgfutil@empty% - \let\tikz@math@next=\tikz@math@for@scan@end% - \else% - \pgfutil@in@{...}{#1}% - \ifpgfutil@in@% - \let\tikz@math@next=\tikz@math@for@scan@dots% - \else% - \tikz@math@for@namegetvalue{var}{\tikz@math@var}% - \tikz@math@for@namegetvalue{index}{\tikz@math@current@index}% - \tikz@math@for@namegetvalue{action}{\tikz@math@action}% - \expandafter\tikz@math@getvarstring\expandafter{\tikz@math@var}\tikz@math@varstring% - \expandafter\tikz@math@doassignment\expandafter{\tikz@math@var}{#1}% - \tikz@math@for@namelet{value}=\tikz@math@last@assigned@value% - \tikz@math@for@namegetvalue{execute}{\tikz@math@execute}% - \expandafter\tikz@math@execute\expandafter{\tikz@math@action}% - \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% - \tikz@math@for@namelet{prevprevvalue}=\tikz@math@prevvalue% - \tikz@math@for@namegetvalue{value}{\tikz@math@value}% - \tikz@math@for@namelet{prevvalue}=\tikz@math@value% - \let\tikz@math@next=\tikz@math@for@scan% - \fi% - \fi% - \fi% - \tikz@math@next% -} + \def\tikz@math@for@value{#1}% + \ifx\tikz@math@for@value\tikz@math@token% + \let\tikz@math@next=\tikz@math@for@scan@end% + \else% + \ifx\tikz@math@for@value\pgfutil@empty% + \let\tikz@math@next=\tikz@math@for@scan@end% + \else% + \pgfutil@in@{...}{#1}% + \ifpgfutil@in@% + \let\tikz@math@next=\tikz@math@for@scan@dots% + \else% + \tikz@math@for@namegetvalue{var}{\tikz@math@var}% + \tikz@math@for@namegetvalue{index}{\tikz@math@current@index}% + \tikz@math@for@namegetvalue{action}{\tikz@math@action}% + \expandafter\tikz@math@getvarstring\expandafter{\tikz@math@var}\tikz@math@varstring% + \expandafter\tikz@math@doassignment\expandafter{\tikz@math@var}{#1}% + \tikz@math@for@namelet{value}=\tikz@math@last@assigned@value% + \tikz@math@for@namegetvalue{execute}{\tikz@math@execute}% + \expandafter\tikz@math@execute\expandafter{\tikz@math@action}% + \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% + \tikz@math@for@namelet{prevprevvalue}=\tikz@math@prevvalue% + \tikz@math@for@namegetvalue{value}{\tikz@math@value}% + \tikz@math@for@namelet{prevvalue}=\tikz@math@value% + \let\tikz@math@next=\tikz@math@for@scan% + \fi% + \fi% + \fi% + \tikz@math@next% +}% \newdimen\tikz@math@dimen \def\tikz@math@for@scan@dots#1,{% - \pgfmathparse{#1}\let\tikz@math@value=\pgfmathresult% - \tikz@math@for@nameedef{endvalue}{\tikz@math@value}% - \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% - \tikz@math@for@namegetvalue{prevprevvalue}{\tikz@math@prevprevvalue}% - \tikz@math@dimen=\tikz@math@prevvalue pt\relax% - \ifx\tikz@math@prevprevvalue\pgfutil@empty% - \ifdim\tikz@math@prevvalue pt<\tikz@math@value pt\relax%% - \def\tikz@math@step{1pt}% - \else% - \def\tikz@math@step{-1pt}% - \fi% - \else% - \tikz@math@dimen=\tikz@math@prevvalue pt\relax% - \advance\tikz@math@dimen by-\tikz@math@prevprevvalue pt\relax% - \edef\tikz@math@step{\the\tikz@math@dimen}% - \fi% - \ifdim\tikz@math@step<0pt\relax% - \tikz@math@for@namedef{comparitor}{<}% - \else% - \tikz@math@for@namedef{comparitor}{>}% - \fi% - \tikz@math@for@nameedef{step}{\tikz@math@step}% - \tikz@math@for@doloop% -} + \pgfmathparse{#1}\let\tikz@math@value=\pgfmathresult% + \tikz@math@for@nameedef{endvalue}{\tikz@math@value}% + \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% + \tikz@math@for@namegetvalue{prevprevvalue}{\tikz@math@prevprevvalue}% + \tikz@math@dimen=\tikz@math@prevvalue pt\relax% + \ifx\tikz@math@prevprevvalue\pgfutil@empty% + \ifdim\tikz@math@prevvalue pt<\tikz@math@value pt\relax%% + \def\tikz@math@step{1pt}% + \else% + \def\tikz@math@step{-1pt}% + \fi% + \else% + \tikz@math@dimen=\tikz@math@prevvalue pt\relax% + \advance\tikz@math@dimen by-\tikz@math@prevprevvalue pt\relax% + \edef\tikz@math@step{\the\tikz@math@dimen}% + \fi% + \ifdim\tikz@math@step<0pt\relax% + \tikz@math@for@namedef{comparitor}{<}% + \else% + \tikz@math@for@namedef{comparitor}{>}% + \fi% + \tikz@math@for@nameedef{step}{\tikz@math@step}% + \tikz@math@for@doloop% +}% \def\tikz@math@for@doloop{% - \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% - \tikz@math@for@namegetvalue{step}{\tikz@math@step}% - \tikz@math@for@namegetvalue{comparitor}{\tikz@math@comparitor}% - \tikz@math@for@namegetvalue{endvalue}{\tikz@math@endvalue}% - \tikz@math@dimen=\tikz@math@prevvalue pt\relax% - \advance\tikz@math@dimen by\tikz@math@step\relax% - \ifdim\tikz@math@dimen\tikz@math@comparitor\tikz@math@endvalue pt\relax% - \let\tikz@math@next=\tikz@math@for@endloop% - \else% - \tikz@math@for@nameedef{value}{\pgfmath@tonumber{\tikz@math@dimen}}% - \tikz@math@for@namegetvalue{var}{\tikz@math@var}% - \expandafter\tikz@math@getvarstring\expandafter{\tikz@math@var}\tikz@math@varstring% - \tikz@math@for@namegetvalue{index}{\tikz@math@current@index}% - \tikz@math@for@namegetvalue{action}{\tikz@math@action}% - \tikz@math@for@namegetvalue{value}{\tikz@math@value}% - \expandafter\expandafter\expandafter\tikz@math@doassignment\expandafter\expandafter\expandafter% - {\expandafter\tikz@math@var\expandafter}\expandafter{\tikz@math@value}% - \tikz@math@for@namegetvalue{execute}{\tikz@math@execute}% - \expandafter\tikz@math@execute\expandafter{\tikz@math@action}% - \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% - \tikz@math@for@namelet{prevprevvalue}=\tikz@math@prevvalue% - \tikz@math@for@namegetvalue{value}{\tikz@math@value}% - \tikz@math@for@namelet{prevvalue}=\tikz@math@value% - \let\tikz@math@next=\tikz@math@for@doloop% - \fi% - \tikz@math@next% -} + \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% + \tikz@math@for@namegetvalue{step}{\tikz@math@step}% + \tikz@math@for@namegetvalue{comparitor}{\tikz@math@comparitor}% + \tikz@math@for@namegetvalue{endvalue}{\tikz@math@endvalue}% + \tikz@math@dimen=\tikz@math@prevvalue pt\relax% + \advance\tikz@math@dimen by\tikz@math@step\relax% + \ifdim\tikz@math@dimen\tikz@math@comparitor\tikz@math@endvalue pt\relax% + \let\tikz@math@next=\tikz@math@for@endloop% + \else% + \tikz@math@for@nameedef{value}{\pgfmath@tonumber{\tikz@math@dimen}}% + \tikz@math@for@namegetvalue{var}{\tikz@math@var}% + \expandafter\tikz@math@getvarstring\expandafter{\tikz@math@var}\tikz@math@varstring% + \tikz@math@for@namegetvalue{index}{\tikz@math@current@index}% + \tikz@math@for@namegetvalue{action}{\tikz@math@action}% + \tikz@math@for@namegetvalue{value}{\tikz@math@value}% + \expandafter\expandafter\expandafter\tikz@math@doassignment\expandafter\expandafter\expandafter% + {\expandafter\tikz@math@var\expandafter}\expandafter{\tikz@math@value}% + \tikz@math@for@namegetvalue{execute}{\tikz@math@execute}% + \expandafter\tikz@math@execute\expandafter{\tikz@math@action}% + \tikz@math@for@namegetvalue{prevvalue}{\tikz@math@prevvalue}% + \tikz@math@for@namelet{prevprevvalue}=\tikz@math@prevvalue% + \tikz@math@for@namegetvalue{value}{\tikz@math@value}% + \tikz@math@for@namelet{prevvalue}=\tikz@math@value% + \let\tikz@math@next=\tikz@math@for@doloop% + \fi% + \tikz@math@next% +}% \def\tikz@math@for@endloop{% -\tikz@math@for@scan} +\tikz@math@for@scan}% @@ -635,90 +641,90 @@ \def\tikz@math@for@scan@end#1\tikz@@math{% \tikz@math@for@namegetvalue{finished}{\tikz@math@next}% \advance\tikz@math@for@depth by-1\relax% -\tikz@math@next} +\tikz@math@next}% \def\tikz@math@process@keyword@return{% - \tikz@math@collecttosemicolon{\pgfmathparse{\tikz@math@collected}\tikz@math@parse}} + \tikz@math@collecttosemicolon{\pgfmathparse{\tikz@math@collected}\tikz@math@parse}}% -\def\tikz@math@process@keyword@function{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@function}} +\def\tikz@math@process@keyword@function{\tikz@math@collecttosemicolon{\tikz@math@process@keyword@@function}}% \def\tikz@math@process@keyword@@function{% - \let\tikz@math@function@name=\pgfutil@empty% - \let\tikz@math@function@arguments=\pgfutil@empty% - \let\tikz@math@function@body=\pgfutil@empty% - \expandafter\expandafter\expandafter\tikz@math@@declarefunction\expandafter\tikz@math@collected\tikz@math@semicolon% -} + \let\tikz@math@function@name=\pgfutil@empty% + \let\tikz@math@function@arguments=\pgfutil@empty% + \let\tikz@math@function@body=\pgfutil@empty% + \expandafter\expandafter\expandafter\tikz@math@@declarefunction\expandafter\tikz@math@collected\tikz@math@semicolon% +}% \def\tikz@math@@declarefunction{% - \pgfutil@ifnextchar\bgroup\tikz@math@@@collectbody\tikz@math@@@declarefunction} + \pgfutil@ifnextchar\bgroup\tikz@math@@@collectbody\tikz@math@@@declarefunction}% \def\tikz@math@@@declarefunction#1{% - \if#1(%) - \let\tikz@math@next=\tikz@math@@@collectarguments% - \else% - \expandafter\def\expandafter\tikz@math@function@name\expandafter{\tikz@math@function@name#1}% - \let\tikz@math@next=\tikz@math@@declarefunction% - \fi% - \tikz@math@next% -} + \if#1(%) + \let\tikz@math@next=\tikz@math@@@collectarguments% + \else% + \expandafter\def\expandafter\tikz@math@function@name\expandafter{\tikz@math@function@name#1}% + \let\tikz@math@next=\tikz@math@@declarefunction% + \fi% + \tikz@math@next% +}% \def\tikz@math@@@collectarguments#1){% - \def\tikz@math@function@arguments{#1}% - \tikz@math@@declarefunction% -} + \def\tikz@math@function@arguments{#1}% + \tikz@math@@declarefunction% +}% \newtoks\tikz@math@toks -\tikz@math@toks={#} -\edef\tikz@math@char@hash{\the\tikz@math@toks} -\tikz@math@toks={} +\tikz@math@toks={#}% +\edef\tikz@math@char@hash{\the\tikz@math@toks}% +\tikz@math@toks={}% -\def\tikz@math@@@collectbody{\tikz@math@collecttosemicolon{\tikz@math@@@@collectbody}} +\def\tikz@math@@@collectbody{\tikz@math@collecttosemicolon{\tikz@math@@@@collectbody}}% \def\tikz@math@@@@collectbody{% - \tikz@math@toks={}% - \c@pgf@counta=0\relax% - \ifx\tikz@math@function@arguments\pgfutil@empty% - \else% - \expandafter\tikz@math@createargumentlist\tikz@math@function@arguments,,% - \expandafter\tikz@math@addto@toks\expandafter{\tikz@math@collected}% - \fi% - \edef\tikz@math@local@temp{% - \noexpand\pgfmathdeclarefunction{\tikz@math@function@name}{\the\c@pgf@counta}% - {\noexpand\def\noexpand\return{0}\noexpand\tikz@math{\the\tikz@math@toks}}% - }% - \tikz@math@local@temp - \tikz@math@parse% -} + \tikz@math@toks={}% + \c@pgf@counta=0\relax% + \ifx\tikz@math@function@arguments\pgfutil@empty% + \else% + \expandafter\tikz@math@createargumentlist\tikz@math@function@arguments,,% + \expandafter\tikz@math@addto@toks\expandafter{\tikz@math@collected}% + \fi% + \edef\tikz@math@local@temp{% + \noexpand\pgfmathdeclarefunction{\tikz@math@function@name}{\the\c@pgf@counta}% + {\noexpand\def\noexpand\return{0}\noexpand\tikz@math{\the\tikz@math@toks}}% + }% + \tikz@math@local@temp + \tikz@math@parse% +}% \def\tikz@math@addto@toks#1{% - \expandafter\tikz@math@toks\expandafter{\the\tikz@math@toks#1}} + \expandafter\tikz@math@toks\expandafter{\the\tikz@math@toks#1}}% \def\tikz@math@createargumentlist{% - \pgfutil@ifnextchar - x\tikz@math@@createargumentlist\tikz@math@@createargumentlist} + \pgfutil@ifnextchar + x\tikz@math@@createargumentlist\tikz@math@@createargumentlist}% -\def\tikz@math@comma{,} +\def\tikz@math@comma{,}% \def\tikz@math@@createargumentlist#1,{% - \def\tikz@math@tmp{#1}% - \ifx\tikz@math@tmp\pgfutil@empty% - \let\tikz@math@next=\relax% - \else% - \advance\c@pgf@counta by1\relax% - \tikz@math@addto@toks{#1=}% - \expandafter\expandafter\expandafter\tikz@math@addto@toks\expandafter\expandafter\expandafter% - {\expandafter\tikz@math@char@hash\the\c@pgf@counta;}% - \let\tikz@math@next=\tikz@math@createargumentlist% - \fi% - \tikz@math@next% -} + \def\tikz@math@tmp{#1}% + \ifx\tikz@math@tmp\pgfutil@empty% + \let\tikz@math@next=\relax% + \else% + \advance\c@pgf@counta by1\relax% + \tikz@math@addto@toks{#1=}% + \expandafter\expandafter\expandafter\tikz@math@addto@toks\expandafter\expandafter\expandafter% + {\expandafter\tikz@math@char@hash\the\c@pgf@counta;}% + \let\tikz@math@next=\tikz@math@createargumentlist% + \fi% + \tikz@math@next% +}% \let\tikzmath=\tikz@math -\tikzset{evaluate/.code={\tikz@math{#1}}} +\tikzset{evaluate/.code={\tikz@math{#1}}}% \let\tikzmathfor=\tikz@math@for@external |