summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex56
1 files changed, 53 insertions, 3 deletions
diff --git a/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex b/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex
index 743f4545eea..353a04ea945 100644
--- a/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex
+++ b/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex
@@ -673,7 +673,7 @@
\pgfmathparse{(##4-##2)/\pgfplots@h + 1}%
\pgfmathfloattofixed\pgfmathresult
\afterassignment\pgfplotsforeachtodomain@@
- \c@pgf@counta=\pgfmathresult
+ \c@pgf@counta=\pgfmathresult\relax
}%
\edef\pgfplots@loc@TMPa{\noexpand\pgfplotsforeachungrouped \noexpand\x\space in{#1}{}}%
\pgfplots@loc@TMPa
@@ -699,6 +699,9 @@
\fi
}%
+\newif\ifpgfplotsforeachungroupedassumenumeric
+\pgfplotsforeachungroupedassumenumerictrue
+
\long\def\pgfplotsforeachungrouped@@#1#2#3#4{%
\pgfplots@for@reset@break{%
%
@@ -710,8 +713,27 @@
% \foreach #1 in {a,b,...,c} can be improved:
\pgfplotsforeachungroupeduniform@{#1}#3\relax{#4}%
\else
- % invoke \foreach #1 in {#3} and transport results:
- \pgfplotsforeachungroupednonuniform@#1{#3}{#4}%
+ \ifpgfplotsforeachungroupedassumenumeric
+ \pgfplotsforeachungrouped@isuniform@dist@one{#3}%
+ \ifpgfplots@loc@tmp
+ % special handling:
+ % \foreach #1 in {a,...,n} can be improved. Let us
+ % hope it is numeric ...
+ \pgfmathifexpression{\pgfplotsretval < \pgfplotsretvalb}{%
+ \edef\pgfplots@foreach@loc@TMPa{\pgfplotsretval,\pgfplotsretval+1,...,\pgfplotsretvalb}%
+ }{%
+ \edef\pgfplots@foreach@loc@TMPa{\pgfplotsretval,\pgfplotsretval-1,...,\pgfplotsretvalb}%
+ }%
+ \def\pgfplots@foreach@loc@TMPb{\pgfplotsforeachungroupeduniform@{#1}}%
+ \expandafter\pgfplots@foreach@loc@TMPb\pgfplots@foreach@loc@TMPa\relax{#4}%
+ \else
+ % invoke \foreach #1 in {#3} and transport results:
+ \pgfplotsforeachungroupednonuniform@#1{#3}{#4}%
+ \fi
+ \else
+ % invoke \foreach #1 in {#3} and transport results:
+ \pgfplotsforeachungroupednonuniform@#1{#3}{#4}%
+ \fi
\fi
\else
% invoke \foreach #1/#2 in {#3} and transport results:
@@ -889,6 +911,34 @@
\fi
}%
+% Sets \ifpgfplots@loc@tmp to true if and only if '#1' is of the form
+% #1 = <number1>,...,<number2>
+%
+% In that case, \pgfplotsretval = <number1> and \pgfplotsretvalb = <number2>
+\def\pgfplotsforeachungrouped@isuniform@dist@one#1{%
+ \edef\pgfplots@foreach@loc@TMPa{#1}%
+ \expandafter\pgfplotsforeachungrouped@isuniform@dist@one@\pgfplots@foreach@loc@TMPa,,,\relax
+}%
+\def\pgfplotsforeachungrouped@isuniform@dist@one@#1,#2,#3,#4\relax{%
+ \def\pgfplots@foreach@loc@TMPa{#4}%
+ \def\pgfplots@foreach@loc@TMPb{,,}%
+ \pgfplots@loc@tmpfalse
+ \ifx\pgfplots@foreach@loc@TMPa\pgfplots@foreach@loc@TMPb
+ \def\pgfplots@foreach@loc@TMPa{#2}%
+ \def\pgfplots@foreach@loc@TMPb{...}%
+ \ifx\pgfplots@foreach@loc@TMPa\pgfplots@foreach@loc@TMPb
+ \pgfutil@in@,{#3}%
+ \ifpgfutil@in@
+ \else
+ \pgfplots@loc@tmptrue
+ \def\pgfplotsretval{#1}%
+ \def\pgfplotsretvalb{#3}%
+ \fi
+ \fi
+ \fi
+}%
+
+
% A variant of \pgfplotsforeachungrouped ( or \foreach ) which
% *invokes* with #1 set to the current iterate.
%