summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex56
1 files changed, 49 insertions, 7 deletions
diff --git a/Master/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex b/Master/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex
index 91caf2a033f..aa21ad13dc4 100644
--- a/Master/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex
+++ b/Master/texmf-dist/tex/generic/pgfplots/liststructure/pgfplotsliststructure.code.tex
@@ -290,13 +290,55 @@
\newif\ifpgfplotslistforeachungroupedrunning
% The same but without groups around #3.
+%
+% The list can be nested.
\long\def\pgfplotslistforeachungrouped#1\as#2#3{%
- \ifpgfplotslistforeachungroupedrunning
- \pgfplots@error{Sorry, you can't nest pgfplotslistforeachungrouped.}%
+ \t@pgfplots@tokb={{#2}{#3}}%
+ \t@pgfplots@tokc=\expandafter{#1}%
+ \edef\pgfplotslist@loc@TMPa{%
+ \noexpand\pgfplotslistforeachungrouped@
+ \the\t@pgfplots@tokb%
+ \the\t@pgfplots@tokc
+ \noexpand\pgfpl@@\noexpand\pgfplotslistforeachungrouped@EOI
+ }%
+ \pgfplotslist@loc@TMPa
+}%
+
+% Technical helper method which performs the loop.
+% ASSUMPTION:
+% \pgfplotslistforeachungrouped@
+% {<macro name>}
+% {<code to execute>}
+% \pgfpl@@{<list elem>}\pgfpl@@{<list elem>}\pgfpl@@{<list elem>}\pgfpl@@\pgfplotslistforeachungrouped@EOI
+%
+% -> iterate through argument until \pgfplotslistforeachungrouped@EOI
+% comes.
+\long\def\pgfplotslistforeachungrouped@#1#2\pgfpl@@#3{%
+ \def\pgfplots@loc@TMPa{#3}%
+ \ifx\pgfplots@loc@TMPa\pgfplotslistforeachungrouped@EOI
+ % ok, terminate loop.
+ \let\pgfplotslistforeachungrouped@next=\relax
\else
- \pgfplotslistforeachungroupedrunningtrue
- \long\def\pgfpl@@##1{\def#2{##1}#3}%
- #1\relax
- \pgfplotslistforeachungroupedrunningfalse
+ % perform loop iteration ...
+ \def#1{#3}%
+ #2\relax
+ % and continue iterating.
+ \def\pgfplotslistforeachungrouped@next{\pgfplotslistforeachungrouped@{#1}{#2}}%
\fi
-}
+ \pgfplotslistforeachungrouped@next
+}%
+\def\pgfplotslistforeachungrouped@EOI{\pgfplotslistforeachungrouped@EOI}% equals only itself in \ifx
+
+%--------------------------------------------------
+% \long\def\pgfplotslistforeachungrouped#1\as#2#3{%
+% \ifpgfplotslistforeachungroupedrunning
+% \pgfplots@error{Sorry, you can't nest pgfplotslistforeachungrouped.}%
+% \else
+% \pgfplotslistforeachungroupedrunningtrue
+% \long\def\pgfpl@@##1{\def#2{##1}#3}%
+% #1\relax
+% \pgfplotslistforeachungroupedrunningfalse
+% \fi
+% }
+%--------------------------------------------------
+