summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/utilities/pgffor.code.tex
diff options
context:
space:
mode:
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.tex102
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