diff options
author | Karl Berry <karl@freefriends.org> | 2014-02-27 00:01:50 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2014-02-27 00:01:50 +0000 |
commit | 90ae413a94da014dbf7a6a8ab584f7c668483a5a (patch) | |
tree | 4e0528a2b2fb2004988e7fc804ea2f1354f1f5d5 /Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex | |
parent | 800cc56380d1edfe567a6a66bef13e8950eb2b0c (diff) |
pgf 3.0.0
git-svn-id: svn://tug.org/texlive/trunk@33057 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex | 102 |
1 files changed, 55 insertions, 47 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex b/Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex index d31ddedfe26..e984ca06315 100644 --- a/Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex @@ -7,17 +7,23 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/utilities/pgffor.code.tex,v 1.18 2010/03/23 14:47:45 vibrovski Exp $ +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/utilities/pgffor.code.tex,v 1.25 2013/12/13 11:40:27 tantau Exp $ +% pgfmath is needed +\input pgfmath.code.tex \newdimen\pgffor@iter \newdimen\pgffor@skip \newif\ifpgffor@continue -\let\pgffor@beginhook=\pgfutil@empty -\let\pgffor@endhook=\pgfutil@empty -\let\pgffor@afterhook=\pgfutil@empty +\def\pgffor@reset@hooks{% + \let\pgffor@beginhook=\relax% + \let\pgffor@endhook=\relax% + \let\pgffor@afterhook=\relax% +} +\pgffor@reset@hooks + % Stack emulation % @@ -133,20 +139,20 @@ } \def\pgffor@iterate{% - % Must do all of these in case the internal stack is used. - \let\pgffor@last=\pgfutil@empty% + % Must do all of these in case the internal stack is used. + \let\pgffor@last=\pgfutil@empty% \let\pgffor@prevlast=\pgfutil@empty% \let\pgffor@dotsend=\pgfutil@empty% - \let\pgffor@dots@pre=\pgfutil@empty% - \let\pgffor@dots@post=\pgfutil@empty% - % - \expandafter\pgffor@scan\pgffor@values} + \let\pgffor@dots@pre=\pgfutil@empty% + \let\pgffor@dots@post=\pgfutil@empty% + % + \expandafter\pgffor@scan\pgffor@values} \def\pgffor@stop{\pgffor@stop}% \def\pgffor@dots{...}% \def\pgffor@scan{\pgfutil@ifnextchar({\pgffor@scanround}{\pgffor@scanone}} -\def\pgffor@scanround(#1)#2,{\def\pgffor@value{(#1)}\pgffor@scanned} +\def\pgffor@scanround(#1)#2,{\def\pgffor@value{(#1)#2}\pgffor@scanned} \def\pgffor@scanone#1,{\def\pgffor@value{#1}\pgffor@scanned} @@ -215,7 +221,7 @@ \pgffor@assign@before@code% \fi% % - \expandafter\pgffor@beginhook\pgffor@body\pgffor@endhook% + \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook% % Execute assign after code. \ifx\pgffor@assign@after@code\pgfutil@empty% \else% @@ -373,7 +379,7 @@ \pgffor@assign@before@code% \fi% % - \expandafter\pgffor@beginhook\pgffor@body\pgffor@endhook% + \expandafter\expandafter\expandafter\pgffor@reset@hooks\expandafter\pgffor@beginhook\expandafter\pgffor@body\pgffor@endhook% % % Perform assignments after loop body. \ifx\pgffor@assign@after@code\pgfutil@empty% @@ -448,23 +454,21 @@ % Convert the number in the macro passed as #1 to a-z or A-Z. \pgfutil@tempcnta=#1\relax% \ifnum\pgfutil@tempcnta>95\relax% - \advance\pgfutil@tempcnta by-96% - \expandafter\def\expandafter#1\expandafter% - {\pgffor@alpha\pgfutil@tempcnta}% + \advance\pgfutil@tempcnta by-96\relax% + \edef#1{\pgffor@alpha\pgfutil@tempcnta}% \else% - \advance\pgfutil@tempcnta by-64% - \expandafter\def\expandafter#1\expandafter% - {\pgffor@Alpha\pgfutil@tempcnta}% + \advance\pgfutil@tempcnta by-64 % + \edef#1{\pgffor@Alpha\pgfutil@tempcnta}% \fi% } \def\pgffor@Alpha#1{% - \ifcase#1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M% + \ifcase#1\relax\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or K\or L\or M% \or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or Y\or Z\else?\fi% } \def\pgffor@alpha#1{% - \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m% + \ifcase#1\relax\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or k\or l\or m% \or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or y\or z\else?\fi% } @@ -482,12 +486,12 @@ \begingroup% \escapechar=-1\relax% \expandafter\pgffor@@addiftotoks\string#1\pgffor@stop} -\def\pgffor@@addiftotoks#1#2#3#4#5\pgffor@stop{% +\def\pgffor@@addiftotoks#1#2#3#4\pgffor@stop{% \endgroup - \csname if#4#5\endcsname% - \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#4#5true\endcsname}% + \csname if#3#4\endcsname% + \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4true\endcsname}% \else% - \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#4#5false\endcsname}% + \expandafter\def\expandafter\pgffor@tokstemp\expandafter{\csname#3#4false\endcsname}% \fi% \pgffor@@addcstotoks% } @@ -520,28 +524,32 @@ \let\pgffor@remember@expanded=\pgfutil@empty \def\pgffor@default@endgroup{% - \ifx\pgffor@assign@once@code\pgfutil@empty% - \else% - \global\edef\pgffor@remember@once@expanded{\pgffor@remember@once@code}% - \fi% - \ifx\pgffor@remember@code\pgfutil@empty% - \else% - \global\edef\pgffor@remember@expanded{\pgffor@remember@code}% - \fi% - \endgroup% - % - \ifx\pgffor@remember@once@expanded\pgfutil@empty% - \else% - \pgffor@remember@once@expanded% - \let\pgffor@assign@once@code=\pgfutil@empty% - \global\let\pgffor@remember@once@expanded=\pgfutil@empty% - \fi% - % - \ifx\pgffor@remember@expanded\pgfutil@empty% - \else% - \pgffor@remember@expanded% - \global\let\pgffor@remember@expanded=\pgfutil@empty% - \fi% + \ifx\pgffor@remember@once@code\pgfutil@empty + \else + \xdef\pgffor@remember@once@expanded{\pgffor@remember@once@code}% + \fi + \ifx\pgffor@remember@code\pgfutil@empty + \else + \xdef\pgffor@remember@expanded{\pgffor@remember@code}% + \fi + \endgroup + % + \ifx\pgffor@remember@once@expanded\pgfutil@empty + \else + \pgffor@remember@once@expanded% + % \let\pgffor@assign@once@code=\pgfutil@empty % Not needed anymore? (CJ) + \global\let\pgffor@remember@once@expanded=\pgfutil@empty + \fi + \ifx\pgffor@assign@once@code\pgfutil@empty + \else + \global\let\pgffor@assign@once@code=\pgfutil@empty + \fi + % + \ifx\pgffor@remember@expanded\pgfutil@empty + \else + \pgffor@remember@expanded% + \global\let\pgffor@remember@expanded=\pgfutil@empty + \fi } \let\pgffor@begingroup=\pgffor@default@begingroup |