diff options
author | Karl Berry <karl@freefriends.org> | 2020-03-03 22:58:29 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2020-03-03 22:58:29 +0000 |
commit | 2fc276d60abc3ce08fc60890eede3a70aa5ac031 (patch) | |
tree | b1b391f7f5bfabbc160cdb654afc91fa11293e65 /Master/texmf-dist/tex/generic/pgfplots/util | |
parent | bb8e717b4938c9675091ff3f90d111242e2aac17 (diff) |
pgfplots (2mar20)
git-svn-id: svn://tug.org/texlive/trunk@54041 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgfplots/util')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex | 56 |
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. % |