texlive[54041] Master/texmf-dist: pgfplots (2mar20)

commits+karl at tug.org commits+karl at tug.org
Tue Mar 3 23:58:30 CET 2020


Revision: 54041
          http://tug.org/svn/texlive?view=revision&revision=54041
Author:   karl
Date:     2020-03-03 23:58:29 +0100 (Tue, 03 Mar 2020)
Log Message:
-----------
pgfplots (2mar20)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/context/third/pgfplots/pgfplotsexample-context.pdf
    trunk/Master/texmf-dist/doc/generic/pgfplots/README
    trunk/Master/texmf-dist/doc/latex/pgfplots/TeX-programming-notes.pdf
    trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplots.doc.src.tar.bz2
    trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplots.pdf
    trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplotstable.pdf
    trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.pdf
    trunk/Master/texmf-dist/source/context/third/pgfplots/pgfplotstests.context.tar.bz2
    trunk/Master/texmf-dist/source/latex/pgfplots/pgfplotstests.tar.bz2
    trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.patchplots.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryluamath.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex
    trunk/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/doc/context/third/pgfplots/pgfplotsexample-context.tuc

Modified: trunk/Master/texmf-dist/doc/context/third/pgfplots/pgfplotsexample-context.pdf
===================================================================
(Binary files differ)

Deleted: trunk/Master/texmf-dist/doc/context/third/pgfplots/pgfplotsexample-context.tuc
===================================================================
--- trunk/Master/texmf-dist/doc/context/third/pgfplots/pgfplotsexample-context.tuc	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/doc/context/third/pgfplots/pgfplotsexample-context.tuc	2020-03-03 22:58:29 UTC (rev 54041)
@@ -1,217 +0,0 @@
-local utilitydata = { }
-
-utilitydata.comment={
- ["escape"]="[===[ ... ]===]",
- ["file"]="pgfplotsexample-context",
- ["format"]="cont-en",
- ["stamp"]="2017.06.04 16:55",
- ["version"]=1.3,
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.variables then utilitydata.job.variables = { } end
-
-utilitydata.job.variables.checksums={
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.variables then utilitydata.job.variables = { } end
-
-utilitydata.job.variables.collected={
- ["macros"]={},
- ["randomseed"]=0.39339454117855,
- ["sectionblockorder"]={},
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.structure then utilitydata.job.structure = { } end
-
-utilitydata.job.structure.collected={
- ["branches"]={},
- ["name"]="pgfplotsexample-context",
- ["type"]="text",
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.positions then utilitydata.job.positions = { } end
-
-utilitydata.job.positions.collected={
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.passes then utilitydata.job.passes = { } end
-
-utilitydata.job.passes.collected={
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.datasets then utilitydata.job.datasets = { } end
-
-utilitydata.job.datasets.collected={
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.pagestates then utilitydata.job.pagestates = { } end
-
-utilitydata.job.pagestates.collected={
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.specials then utilitydata.structures.specials = { } end
-
-utilitydata.structures.specials.collected={
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.counters then utilitydata.structures.counters = { } end
-
-utilitydata.structures.counters.collected={
- ["chemical"]={
-  { 0 },
- },
- ["combination"]={
-  { 0 },
- },
- ["endnote"]={
-  { 0 },
- },
- ["figure"]={
-  { 0 },
- },
- ["footnote"]={
-  { 0 },
- },
- ["formula"]={
-  { 0 },
- },
- ["graphic"]={
-  { 0 },
- },
- ["intermezzo"]={
-  { 0 },
- },
- ["itemgroup:itemize"]={
-  { 0 },
- },
- ["linenote"]={
-  { 0 },
- },
- ["paragraph"]={
-  { 0 },
- },
- ["realpage"]={
-  { 1 },
- },
- ["subpage"]={
-  { 1 },
- },
- ["table"]={
-  { 0 },
- },
- ["userpage"]={
-  { 1 },
- },
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.lists then utilitydata.structures.lists = { } end
-
-utilitydata.structures.lists.collected={
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.pages then utilitydata.structures.pages = { } end
-
-utilitydata.structures.pages.collected={
- {
-  ["block"]="bodypart",
-  ["number"]=1,
-  ["numberdata"]=1,
-  ["prefixdata"]=2,
-  ["state"]="start",
- },
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.references then utilitydata.structures.references = { } end
-
-utilitydata.structures.references.collected={
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.references then utilitydata.structures.references = { } end
-
-utilitydata.structures.references.referred={
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.objects then utilitydata.job.objects = { } end
-
-utilitydata.job.objects.collected={
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.synonyms then utilitydata.structures.synonyms = { } end
-
-utilitydata.structures.synonyms.collected={
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.registers then utilitydata.structures.registers = { } end
-
-utilitydata.structures.registers.collected={
-}
-
-if not utilitydata.structures then utilitydata.structures = { } end
-if not utilitydata.structures.blocks then utilitydata.structures.blocks = { } end
-
-utilitydata.structures.blocks.collected={
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.files then utilitydata.job.files = { } end
-
-utilitydata.job.files.collected={
-}
-
-if not utilitydata.publications then utilitydata.publications = { } end
-
-utilitydata.publications.collected={
-}
-
-if not utilitydata.job then utilitydata.job = { } end
-if not utilitydata.job.fileobjreferences then utilitydata.job.fileobjreferences = { } end
-
-utilitydata.job.fileobjreferences.collected={
-}
-
-utilitydata.job.packed={
- ["index"]={
-  {
-   ["conversionset"]="pagenumber",
-  },
-  {
-   ["connector"]="–",
-   ["prefix"]="no",
-   ["set"]="part",
-  },
- },
- ["keys"]={
-  ["directives"]=true,
-  ["metadata"]=true,
-  ["numberdata"]=true,
-  ["numbers"]=true,
-  ["pagedata"]=true,
-  ["prefixdata"]=true,
-  ["processors"]=true,
-  ["sectiondata"]=true,
-  ["specification"]=true,
- },
- ["skip"]={
-  ["datasets"]=true,
-  ["userdata"]=true,
- },
- ["version"]=1.02,
-}
-
-return utilitydata
\ No newline at end of file

Modified: trunk/Master/texmf-dist/doc/generic/pgfplots/README
===================================================================
--- trunk/Master/texmf-dist/doc/generic/pgfplots/README	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/doc/generic/pgfplots/README	2020-03-03 22:58:29 UTC (rev 54041)
@@ -23,7 +23,7 @@
 and
   doc/latex/pgfplots/pgfplotstable.pdf.
 
-Copyright 2007-2017 by Christian Feuersaenger.
+Copyright 2007-2020 by Christian Feuersaenger.
 
 This program is free software: you can redistribute it and/or modify
 it under the terms of the GNU General Public License as published by
@@ -40,6 +40,13 @@
 
 
 HISTORY:
+1.17
+- fixed bug: restore compatibility with pgf/tikz circle syntax inside of pgfplots
+- new feature #62: 'coordinate style' which allows to associate options with individual coordinates.
+- new feature pgfplotstable: added 'text indicator'
+- new feature pgfplotstable: added 'percent is letter' to allow comment chars
+  within string-based tables
+
 1.16:
 - fixed bug #111 [fillbetween] strange behavior when `soft clip` is used and one of the paths touches the axis border
 - fixed bug #183: Nan in the first line of a numeric table was interpreted as column name

Modified: trunk/Master/texmf-dist/doc/latex/pgfplots/TeX-programming-notes.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplots.doc.src.tar.bz2
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplots.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplotstable.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/latex/pgfplots/pgfplotstodo.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/context/third/pgfplots/pgfplotstests.context.tar.bz2
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/source/latex/pgfplots/pgfplotstests.tar.bz2
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.patchplots.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.patchplots.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.patchplots.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -374,6 +374,76 @@
 	}%
 }%
 
+% This is JUST a curveto operation! Nothing special.
+\pgfplotsdeclarepatchclass{bezier spline}{%
+	get dimension=\def\pgfplotsretval{1},
+	supports global path=\def\pgfplotsretval{1},
+	new=\def\pgfplotspatchclass at cspline@no{A},
+	set next vertex={%
+		% EXPECTED ORDERING: first 2 corners, then 2 control points
+		% (NOT interpolatory).
+		% defines \pgfplotspatchclass at cspline@A ... \pgfplotspatchclass at cspline@D (4 points)
+		\expandafter\edef\csname pgfplotspatchclass at cspline@\pgfplotspatchclass at cspline@no\endcsname{#1}%
+		\if D\pgfplotspatchclass at cspline@no
+			\def\pgfplotspatchclass at cspline@no{A}%
+			\pgfplotspatchready
+		\else
+			\expandafter\let\expandafter\pgfplotspatchclass at cspline@no\csname pgfpptchindexnext@\pgfplotspatchclass at cspline@no\endcsname
+		\fi
+	},
+	if current point can be first last={%
+		\pgfplots at loc@tmpfalse
+		\if B\pgfplotspatchclass at cspline@no
+			% Ah - the current point is the 'A' point (we have
+			% advanced the '@no' counter)
+			\pgfplots at loc@tmptrue
+		\fi
+		\if C\pgfplotspatchclass at cspline@no
+			% Ah - the current point is the 'B' point (we have
+			% advanced the '@no' counter)
+			\pgfplots at loc@tmptrue
+		\fi
+		\ifpgfplots at loc@tmp
+			#1\relax%
+		\else
+			#2\relax
+		\fi
+	},
+	first vertex=\expandafter\pgfplotspatchvertex\pgfplotspatchclass at cspline@A\endvertex,
+	foreach vertex={%
+		\expandafter\pgfplotspatchvertex\pgfplotspatchclass at cspline@A\endvertex #1%
+		\expandafter\pgfplotspatchvertex\pgfplotspatchclass at cspline@B\endvertex #1%
+		\expandafter\pgfplotspatchvertex\pgfplotspatchclass at cspline@C\endvertex #1%
+		\expandafter\pgfplotspatchvertex\pgfplotspatchclass at cspline@D\endvertex #1%
+	},
+	fill path={%
+		% Draw the patch boundary using a bezier curve.
+		\pgfplotsplothandlermesh at pathmoveto{\expandafter\pgfplotspointpatchvertex\pgfplotspatchclass at cspline@A\endvertex}%
+		\pgfpathcurveto	{
+			\expandafter\pgfplotspointpatchvertex\pgfplotspatchclass at cspline@C\endvertex
+		}{
+			\expandafter\pgfplotspointpatchvertex\pgfplotspatchclass at cspline@D\endvertex
+		}{%
+			\expandafter\pgfplotspointpatchvertex\pgfplotspatchclass at cspline@B\endvertex
+		}%
+		\pgfplotsplothandlermesh at setlastpoint{\expandafter\pgfplotspointpatchvertex\pgfplotspatchclass at cspline@B\endvertex}%
+	},
+	triangulate class=\def\pgfplotsretval{line},
+	triangulate={%
+		\let\pgfplotsplothandlermesh at patchclass@=\pgfplotsplothandlermesh at patchclass
+		\def\pgfplotsplothandlermesh at patchclass{line}%
+		\pgfplotspatchclass{\pgfplotsplothandlermesh at patchclass}{new}%
+		% XXX : very poor quality ...
+		\expandafter\pgfplotsplothandlermesh at setnextvertex\expandafter{\pgfplotspatchclass at cspline@A}%
+		\expandafter\pgfplotsplothandlermesh at setnextvertex\expandafter{\pgfplotspatchclass at cspline@B}%
+		\let\pgfplotsplothandlermesh at patchclass=\pgfplotsplothandlermesh at patchclass@
+	},%
+	get pdf shading type=0,
+	get num vertices=\def\pgfplotsretval{4},
+}%
+
+
+
 % make a linearized sequence around the edge of the quad.triangle.
 % note the ordering: first 3 corners, then 3 mid nodes:
 \def\pgfplots at qtri@next at A{D}%

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -598,6 +598,9 @@
 }
 \let\pgfplotspoint at initialisation@units at orig=\pgfplotspoint at initialisation@units
 \def\pgfplotspoint at initialisation@units at smithchart{%
+	\ifpgfplots at smithchart@mirrored
+		\pgfplots at warning{The key 'smithchart mirrored' is based on a mistake of the author. It does NOT resemble Admittance Smith charts!}%
+	\fi
 	\pgfplotspoint at initialisation@units at orig
 	\def\pgfplotspointunity{%
 		\pgfplotspointouternormalvectorofaxisgetv{0v0}% x=0 (outer circle) and v varies (the yticks)

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -407,7 +407,7 @@
 		}%
 	},%
 	/pgfplots/table/verb string type/.style={%
-		/pgfplots/table/text special chars={\#,\|},% FIXME: too limited ...
+		/pgfplots/table/text special chars={\#,\|,\_},% FIXME: too limited ...
 		/pgfplots/table/assign cell content/.code={%
 			\def\pgfplotstable at loc@TMPa{##1}%
 			% hm... this here might be more robust instead of the line

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -62,6 +62,7 @@
 \newif\ifpgfplots at tableread@to at listener
 \newif\ifpgfplots at tableread@use at begingroup
 \newif\ifpgfplotstable at trimcells
+\newif\ifpgfplotstable at percent@is at letter
 \newif\ifpgfplotstable at search@path at implicit@CWD
 
 \pgfkeys{%
@@ -146,6 +147,7 @@
 	/pgfplots/table/ignore chars/.initial=,
 	/pgfplots/table/white space chars/.initial=,
 	/pgfplots/table/text special chars/.initial=,
+	/pgfplots/table/percent is letter/.is if=pgfplotstable at percent@is at letter,
 	/pgfplots/table/comment chars/.initial=,
 	/pgfplots/table/skip first n/.initial=0,
 	/pgfplots/table/trim cells/.is if=pgfplotstable at trimcells,
@@ -156,6 +158,7 @@
 	/pgfplots/table/read completely/auto/.code=\pgfplots at addplotimpl@readcompletelyfalse\def\pgfplots at addplotimpl@readcompletely at auto{1},
 	/pgfplots/table/read completely/.default=true,
 	/pgfplots/table/read completely=auto,
+	/pgfplots/table/text indicator/.initial=,
 	/pgfplots/table/col sep/.is choice,
 	/pgfplots/table/col sep/space/.code		= {\def\pgfplotstableread at COLSEP@CASE{0}},
 	/pgfplots/table/col sep/comma/.code		= {\def\pgfplotstableread at COLSEP@CASE{1}},
@@ -651,6 +654,7 @@
 			\noexpand\catcode`\noexpand\ =\the\catcode`\ \noexpand\space
 			\noexpand\catcode`\noexpand\;=\the\catcode`\;\noexpand\space
 			\noexpand\catcode`\noexpand\:=\the\catcode`\:\noexpand\space
+			\noexpand\catcode`\noexpand\%=\the\catcode`\%\noexpand\space
 			\noexpand\catcode`\noexpand\^^I=\the\catcode`\^^I\noexpand\space
 			\noexpand\let\noexpand\pgfplotstablereadrestorecatcodes=\noexpand\relax
 		}%
@@ -664,6 +668,10 @@
 	\fi
 }
 \let\pgfplotstablereadrestorecatcodes=\relax
+
+% ATTENTION: the following catcodes are ONLY useful for <inline tables>!
+% tables read from file need catcode adaptions as well; this is done
+% elsewhere!
 \def\pgfplotstablereadpreparecatcodes@{%
 	\if0\pgfplotstableread at ROWSEP@CASE\relax
 		% row sep = newline
@@ -1052,6 +1060,10 @@
 		\else
 			\pgfplotstableinstallignorechars@\pgfplotstable at loc@TMPa{12}%
 		\fi
+		\ifpgfplotstable at percent@is at letter
+			\def\pgfplotstable at loc@TMPa{\%}%
+			\pgfplotstableinstallignorechars@\pgfplotstable at loc@TMPa{12}%
+		\fi
 		\ifx\pgfplotstableuninstallignorechars\pgfutil at empty
 		\else
 			\expandafter\def\expandafter\pgfplotstableuninstallignorechars\expandafter{%
@@ -1115,6 +1127,8 @@
 	\pgfplotstableread at countreset\pgfplotstableread at curcol
 	%
 	\pgfplotstableread at impl@prepare at DO
+	\pgfplotstableread at impl@prepare at DO@textindicator
+	%
 	\def\pgfplotstableread at isgnuplotformat{0}%
 	\global\pgfplotslistnewempty\pgfplotstable at colnames@glob
 	\pgfplotsscanlinelengthinitzero
@@ -1218,6 +1232,7 @@
 %\pgfplots at message{EOF}%
 	\else
 		\read\r at pgfplots@reada to\pgfplotstable at LINE
+%\message{read with \the\catcode`\%: \meaning\pgfplotstable at LINE^^J}%
 		\ifeof\r at pgfplots@reada
 		\else
 			\pgfplotstableread at loop@processnextline
@@ -1310,7 +1325,10 @@
 		\fi
 		\ifnum\pgfplotstableread at curcol=\pgfplotstableread at numcols\relax
 		\else
-			\pgfplotsthrow{table columns unbalanced}{input table '\pgfplotstableread at filename' has an unbalanced number  of columns in row '\thepgfplotstableread at lineno' (expected '\thepgfplotstableread at numcols' cols; got '\thepgfplotstableread at curcol'). Maybe the input table is corrupted? If you need unbalanced data, consider using 'nan' in empty cells (perhaps combined with 'unbounded coords=jump')}\pgfeov%
+			\begingroup
+			\t at pgfplots@tokc=\expandafter{\pgfplotstable at LINE}%
+			\pgfplotsthrow{table columns unbalanced}{input table '\pgfplotstableread at filename' has an unbalanced number  of columns in row '\thepgfplotstableread at lineno' (expected '\thepgfplotstableread at numcols' cols; got '\thepgfplotstableread at curcol'). Maybe the input table is corrupted? If you need unbalanced data, consider using 'nan' in empty cells (perhaps combined with 'unbounded coords=jump'). The offending line is \the\t at pgfplots@tokc}\pgfeov%
+			\endgroup
 		\fi
 		\ifpgfplots at tableread@to at listener
 			\ifpgfplotstableread at curline@contains at colnames
@@ -1437,8 +1455,10 @@
 	\else
 		\let\pgfplotstableread at impl@ITERATE at NEXT@=#1\relax
 	\fi
+	%
 	\expandafter\pgfplotstableread at impl@DO@\expandafter{#2}%
 }
+
 {%
 	\catcode`\ =10
 	\catcode`\;=12
@@ -1480,6 +1500,62 @@
 		\fi
 	}%
 }%
+\def\pgfplotstableread at impl@prepare at DO@textindicator{%
+	%
+	\pgfkeysgetvalue{/pgfplots/table/text indicator}\pgfplots at loc@TMPa
+	\ifx\pgfplots at loc@TMPa\pgfutil at empty
+		% ok, nothing special.
+	\else
+		% protect the text indicator such that it won't be expanded:
+		\t at pgfplots@tokc=\expandafter{\pgfplots at loc@TMPa}%
+		%
+		% compile macros which handle 'text indicator':
+		\let\pgfplotstableread at impl@ITERATE at NEXT@aftertextindicator=\pgfplotstableread at impl@ITERATE at NEXT
+		\edef\pgfplotstableread at impl@ITERATE at NEXT{%
+			% check if the cell starts with a text indicator:
+			\noexpand\pgfplotstableread at impl@ITERATE at NEXT@checkindicator{\the\t at pgfplots@tokc}%
+		}%
+		\edef\pgfplots at loc@TMPb{%
+			% compile this macro which reads everything up to the next
+			% text indicator char:
+			\noexpand\def\noexpand\pgfplotstableread at impl@ITERATE at NEXT@collect at text####1\the\t at pgfplots@tokc{%
+				% append. we assume that 'tokc' has been reset before
+				% starting to collect the cell content.
+				\t at pgfplots@tokc=\noexpand\expandafter{\noexpand\the\t at pgfplots@tokc####1}%
+				\noexpand\pgfutil at ifnextchar{\the\t at pgfplots@tokc}{%
+					% ah - a doubled text indicator. gobble this one
+					% and collect the following one!
+					\noexpand\pgfplotstableread at impl@ITERATE at NEXT@collect at text@collect at one
+				}{%
+					% ok, we found the entire cell content.
+					\noexpand\pgfplotstableread at impl@ITERATE at NEXT@collect at text@finish
+				}%
+			}%
+		}%
+		\pgfplots at loc@TMPb
+		%
+		\ifcase\pgfplotstableread at COLSEP@CASE\relax
+			\let\pgfplotstableread at impl@ITERATE at NEXT@collect at text@finish=\pgfplotstableread at impl@ITERATE at NEXT@collect at text@finish at APPENDSPACE
+		\fi
+	\fi
+}
+
+\def\pgfplotstableread at impl@ITERATE at NEXT@collect at text@collect at one#1{%
+	\t at pgfplots@tokc=\expandafter{\the\t at pgfplots@tokc#1}%
+	\pgfplotstableread at impl@ITERATE at NEXT@collect at text
+}%
+\def\pgfplotstableread at impl@ITERATE at NEXT@collect at text@finish{%
+	% enclose the collected items into curly braces. This suppresses
+	% interpretation of extra chars:
+	\expandafter\pgfplotstableread at impl@ITERATE at NEXT@aftertextindicator\expandafter{\expandafter{\the\t at pgfplots@tokc}}%
+}%
+\def\pgfplotstableread at impl@ITERATE at NEXT@collect at text@finish at APPENDSPACE{%
+	% enclose the collected items into curly braces. This suppresses
+	% interpretation of extra chars:
+	\expandafter\pgfplotstableread at impl@ITERATE at NEXT@aftertextindicator\expandafter{\expandafter{\the\t at pgfplots@tokc}} %
+}%
+
+
 \long\def\pgfplotstableread at impl@ITERATE{%
 	\pgfutil at ifnextchar\pgfplotstable at EOI{%
 		\pgfplotstableread at impl@gobble
@@ -1487,6 +1563,24 @@
 		\pgfplotstableread at impl@ITERATE at NEXT
 	}%
 }%
+
+\def\pgfplotstableread at impl@ITERATE at NEXT@checkindicator#1{%
+	\pgfutil at ifnextchar{#1}{%
+		% Ah! Our cell starts with a text indicator! Assume it is
+		% enclosed by text indicators.
+		\pgfplotstableread at impl@ITERATE at NEXT@checkindicator at gobble@one%
+	}{%
+		% ok, Cell does not start with a text indicator. collect
+		% as-is, assuming that a text indicator does not simply occur
+		% within a cell which is not enclosed by text indicators:
+		\pgfplotstableread at impl@ITERATE at NEXT@aftertextindicator
+	}%
+}%
+\def\pgfplotstableread at impl@ITERATE at NEXT@checkindicator at gobble@one#1{%
+	\t at pgfplots@tokc={}%
+	\pgfplotstableread at impl@ITERATE at NEXT@collect at text%
+}%
+
 \long\def\pgfplotstableread at impl@ITERATE at NEXT#1 {%
 	\pgfplotstableread at impl@ITERATE at NEXT@{#1}%
 	\pgfplotstableread at impl@ITERATE

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -113,8 +113,23 @@
 	}%
 \fi
 
+\pgfutil at IfUndefined{pgfmathifexpression}{%
+	\def\pgfmathifexpression#1#2#3{%
+		\pgfmathparse{#1}%
+		\pgfmath at iftrue{#2}{#3}%
+	}
+	\def\pgfmath at iftrue{%
+		\ifdim\pgfmathresult pt=1.0pt %
+			\let\pgfmath at next=\pgfutil at firstoftwo
+		\else
+			\let\pgfmath at next=\pgfutil at secondoftwo
+		\fi
+		\pgfmath at next
+	}%
+	\gdef\pgfplots at glob@TMPa{1}%
+}{}%
 
-\pgfutil at ifundefined{pgfmathfloat at stack@push at operand@single at str}{
+\pgfutil at ifundefined{pgfmathfloat at iftrue@}{
 	\gdef\pgfplots at glob@TMPa{1}%
 }
 {}%
@@ -358,4 +373,8 @@
 	\input pgfplotsoldpgfsupp_leq.code.tex
 }{}%
 
+\pgfutil at IfUndefined{pgfutilifstartswith}{%
+	\let\pgfutilifstartswith=\pgfplotsutilifstartswith
+}{}
+
 \endinput

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -87,26 +87,6 @@
 	\let\pgfutil at insertatbegincurrentpagefrombox=\pgfutil at insertatbegincurrentpagefrombox@FIXED
 \fi
 
-% check if \endtikzpicture deals with layerlist:
-\expandafter\pgfutil at in@\expandafter\pgf at remember@layerlist at globally\expandafter{\endtikzpicture}%
-\ifpgfutil at in@
-\else
-	\def\endtikzpicture{%
-		\tikz at atend@picture%
-		\global\let\pgf at shift@baseline at smuggle=\pgf at baseline%
-		\global\let\pgf at trimleft@final at smuggle=\pgf at trimleft%
-		\global\let\pgf at trimright@final at smuggle=\pgf at trimright%
-		\global\let\pgf at remember@smuggle=\ifpgfrememberpicturepositiononpage%
-		\pgf at remember@layerlist at globally
-		\endscope%
-		\let\pgf at baseline=\pgf at shift@baseline at smuggle%
-		\let\pgf at trimleft=\pgf at trimleft@final at smuggle%
-		\let\pgf at trimright=\pgf at trimright@final at smuggle%
-		\let\ifpgfrememberpicturepositiononpage=\pgf at remember@smuggle%
-		\pgf at restore@layerlist at from@global
-	  \endpgfpicture}
-\fi
-
 % ======================================================
 % compatibility with PGF 2.0
 % ======================================================

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -19,7 +19,7 @@
 % with the deployment of this patch or partial content of PGF. Note that the author and/or maintainer of pgfplots has no obligation to fix anything:
 % This file comes without any warranty as the rest of pgfplots; there is no obligation for help.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Date of this copy: Fr 10. Nov 17:18:26 CET 2017 %%%
+%%% Date of this copy: Mo 30. Apr 17:24:35 CEST 2018 %%%
 
 
 
@@ -95,9 +95,18 @@
 	% process. If 'scale results' is active, 'fixed' is assumed
 	% automatically.
 	fpu/output format/.is choice,
-	fpu/output format/float/.code=	{\let\pgfmathfloatparse at output=\relax},
-	fpu/output format/sci/.code=	{\def\pgfmathfloatparse at output{\pgfmathfloattosci@{\pgfmathresult}}},
-	fpu/output format/fixed/.code=	{\def\pgfmathfloatparse at output{\pgfmathfloattofixed@{\pgfmathresult}}},
+	fpu/output format/float/.code=	{%
+		\def\pgfmathfloatparse at output@choice{Y}%
+		\let\pgfmathfloatparse at output=\relax
+	},
+	fpu/output format/sci/.code=	{%
+		\def\pgfmathfloatparse at output@choice{S}%
+		\def\pgfmathfloatparse at output{\pgfmathfloattosci@{\pgfmathresult}}%
+	},
+	fpu/output format/fixed/.code=	{%
+		\def\pgfmathfloatparse at output@choice{F}%
+		\def\pgfmathfloatparse at output{\pgfmathfloattofixed@{\pgfmathresult}}%
+	},
 	fpu/output format/float,
 	fpu/rel thresh/.code={%
 		\pgfmathfloatparsenumber{#1}%
@@ -108,6 +117,8 @@
 
 \pgfmathfloatcreate{1}{1.0}{0}\let\pgfmathfloatscale=\pgfmathresult
 
+\let\pgfmathfloatone=\pgfmathresult
+
 % This is the replacement parser invocation.
 % It does two things which are different to \pgfmathparse:
 % 1. it disables any dimension dependand scalings,
@@ -285,6 +296,7 @@
 	\pgfmathfloat at install\pgfmathcosh@=\pgfmathfloatcosh@
 	\pgfmathfloat at install\pgfmathsinh@=\pgfmathfloatsinh@
 	\pgfmathfloat at install\pgfmathtanh@=\pgfmathfloattanh@
+	\pgfmathfloat at install\pgfmath at iftrue=\pgfmathfloat at iftrue
 	\expandafter\pgfmathfloat at install\csname pgfmathatan2@\endcsname=\pgfmathfloatatantwo@
 	\pgfmathfloat at install@unimplemented{isprime}%
 	\pgfmathfloat at install@unimplemented{iseven}%
@@ -302,6 +314,38 @@
 	\pgfmathfloat at install\pgfmathscientific=\pgfmathfloatscientific%
 }
 
+\def\pgfmathfloat at iftrue{%
+	\if Y\pgfmathfloatparse at output@choice
+		\let\pgfmathfloat@@iftrue at v=\pgfmathfloatone
+		\let\pgfmathfloat@@iftrue at next=\pgfmathfloat at iftrue@
+	\else
+		\if S\pgfmathfloatparse at output@choice
+			\def\pgfmathfloat@@iftrue at v{1.0e0}%
+			\let\pgfmathfloat@@iftrue at next=\pgfmathfloat at iftrue@
+		\else
+			\def\pgfmath at next{\pgfutilifstartswith{1.0}}%
+			\expandafter\pgfmath at next\expandafter{\pgfmathresult}{%
+				\ifdim\pgfmathresult pt=1.0pt %
+					\let\pgfmathfloat@@iftrue at next=\pgfutil at firstoftwo
+				\else
+					\let\pgfmathfloat@@iftrue at next=\pgfutil at secondoftwo
+				\fi
+			}{%
+				\let\pgfmathfloat@@iftrue at next=\pgfutil at secondoftwo
+			}%
+		\fi
+	\fi
+	\pgfmathfloat@@iftrue at next
+}%
+\def\pgfmathfloat at iftrue@{%
+	\ifx\pgfmathresult\pgfmathfloat@@iftrue at v
+		\let\pgfmath at next=\pgfutil at firstoftwo
+	\else
+		\let\pgfmath at next=\pgfutil at secondoftwo
+	\fi
+	\pgfmath at next
+}%
+
 \def\pgfmathfloat at parser@install{%
 	\pgfmathfloat at plots@checkuninstallcmd
 	\pgfmathfloat at plots@install%

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryluamath.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryluamath.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryluamath.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -19,7 +19,7 @@
 % with the deployment of this patch or partial content of PGF. Note that the author and/or maintainer of pgfplots has no obligation to fix anything:
 % This file comes without any warranty as the rest of pgfplots; there is no obligation for help.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Date of this copy: Mi 8. Feb 20:49:06 CET 2017 %%%
+%%% Date of this copy: Mo 30. Apr 17:24:35 CEST 2018 %%%
 
 
 
@@ -33,7 +33,7 @@
 %
 % See the file doc/generic/pgf/licenses/LICENSE for more details.
 %
-% $Id: pgflibraryluamath.code.tex,v 1.20 2015/06/05 06:23:21 cfeuersaenger Exp $
+% $Id$
 %
 %
 % This is a library for a LUA math parser and LUA math operations.
@@ -223,12 +223,16 @@
   \else
     \let\pgfluamath at pgfmathparse\pgfmathparse
     \let\pgfmathparse\pgfluamathparse
+    \let\pgfmath at iftrue=\pgfmathluamath at iftrue
     \pgfluamathparseractivetrue
   \fi}
 
+\let\pgfmath at iftrue@basic=\pgfmath at iftrue
+
 \def\pgfluamath at makeparserinactive{%
   \ifpgfluamathparseractive
     \let\pgfmathparse\pgfluamath at pgfmathparse
+    \let\pgfmath at iftrue=\pgfmath at iftrue@basic
     \pgfluamathparseractivefalse
   \fi}
 
@@ -320,6 +324,7 @@
   \pgfluamath at install@function\pgfmathsubtract@=\pgfluamathsubtract@%
   \pgfluamath at install@function\pgfmathneg@=\pgfluamathneg@%
   \pgfluamath at install@function\pgfmathmultiply@=\pgfluamathmultiply@%
+  \pgfmathfloat at install\pgfmath at iftrue=\pgfmathluamath at iftrue
   \pgfluamath at install@function\pgfmathdivide@=\pgfluamathdivide@%
   % \pgfluamath at install@function\pgfmathdiv@=\pgfluamathdiv@%
   \pgfluamath at install@function\pgfmathfactorial@=\pgfluamathfactorial@%
@@ -400,6 +405,25 @@
 \def\pgfluamathgetresult#1{%
   \edef\pgfmathresult{\pgfutil at directlua{tex.print(-1,#1)}}}
 
+\def\pgfmathluamath at iftrue{%
+	\if 0\pgfluamath at outputformat@choice
+		\let\pgfmathluamath@@iftrue at v=\pgfluamathone
+	\else
+		\let\pgfmathluamath@@iftrue at v=\pgfluamathfloatone
+	\fi
+	\pgfmathluamath at iftrue@
+}%
+\def\pgfluamathone{1.0}%
+\def\pgfluamathfloatone{1Y1.0e+00]}%
+\def\pgfmathluamath at iftrue@#1#2{%
+	\ifx\pgfmathresult\pgfmathluamath@@iftrue at v
+		\def\pgfmath at next{#1}%
+	\else
+		\def\pgfmath at next{#2}%
+	\fi
+	\pgfmath at next
+}%
+
 \def\pgfluamathpi@{%
   \pgfluamathgetresult{pgfluamathfunctions.pi()}}
 \def\pgfluamathe@{%
@@ -543,15 +567,15 @@
 \def\pgfluamathparse#1{%
   \pgfluamathusedTeXfallbackfalse
   \pgfutil at directlua{pgfluamathparser.texCallParser(
-	"\pgfutil at luaescapestring{#1}",
-	\pgfluamath at outputformat@choice,
-	\ifpgfluamathshowerrormessage true\else false\fi)%
+    "\pgfutil at luaescapestring{#1}",
+    \pgfluamath at outputformat@choice,
+    \ifpgfluamathshowerrormessage true\else false\fi)%
   }%
   \ifx\pgfmathresult\pgfutil at empty
-	  \ifpgfluamathenableTeXfallback
-	     \pgfluamathusedTeXfallbacktrue
-	     \pgfluamath at pgfmathparse{#1}%
-	  \fi
+    \ifpgfluamathenableTeXfallback
+       \pgfluamathusedTeXfallbacktrue
+       \pgfluamath at pgfmathparse{#1}%
+    \fi
   \fi
 }
 

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -19,7 +19,7 @@
 % with the deployment of this patch or partial content of PGF. Note that the author and/or maintainer of pgfplots has no obligation to fix anything:
 % This file comes without any warranty as the rest of pgfplots; there is no obligation for help.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%% Date of this copy: Fr 10. Nov 17:18:26 CET 2017 %%%
+%%% Date of this copy: Mo 30. Apr 17:24:35 CEST 2018 %%%
 
 
 
@@ -95,7 +95,7 @@
 %   [FLAGS] MANTISSE EXPONENT
 % meaning
 %   [+-]X.XXXXXXX*10^C
-% where
+% where 
 %   X.XXXXXX is a mantissa with first number != 0, C is an integer and
 % FLAGS contains the sign and some other special cases.
 %
@@ -103,7 +103,7 @@
 % computation is COMPLETELY STRING BASED.
 % This allows numbers such at 10000000 or 5.23e-10 to be represented
 % properly, although TeX-registers would produce overflow/underflow
-% errors in these cases.
+% errors in these cases. 
 %
 % It is to be used to compute logs, because log(X*10^Y) = log(X) + log(10)*Y
 %
@@ -124,7 +124,7 @@
 % where
 % FLAGS is a number in [0-5] where
 % 		0 == '0' (the number is +- 0.0),
-% 		1 == '+',
+% 		1 == '+', 
 % 		2 == '-',
 % 		3 == 'not a number'
 % 		4 == '+ infinity'
@@ -419,7 +419,7 @@
 
 % Converts a float to an integer (in integer format).
 %
-% @see \pgfmathfloatint
+% @see \pgfmathfloatint 
 \def\pgfmathfloattoint#1{%
 	\pgfmathfloattofixed{#1}%
 	\expandafter\pgfmathfloattoint@@\pgfmathresult\relax
@@ -521,7 +521,7 @@
 }
 
 
-% Overloaded method.
+% Overloaded method. 
 %
 % This variant always uses a FIXED number behind the period and fills
 % in zeros if necessary.
@@ -707,7 +707,7 @@
 		% \else
 		% 	\pgfmath at error{INTERNAL ERROR in fixed style - The input sequence did not terminate as expected; which indicates a wrong exponent argument provided to \string\pgfmathprintnumber at fixed@style}{}%
 		% \fi
-		%--------------------------------------------------
+		%-------------------------------------------------- 
 		\let\pgfmathprintnumber at fixed@styleDEFAULT at impl@noperiod at NEXT=\relax
 	\fi
 	\pgfmathprintnumber at fixed@styleDEFAULT at impl@noperiod at NEXT
@@ -782,7 +782,7 @@
 % Arguments:
 % #1#2#3e#4\relax
 
-% Input:
+% Input: 
 % #1  the fixed point number to be displayed (maybe a macro).
 % #2#3e#4:  the (possibly unformatted) floating point representation
 %     which belongs to #1. This format is returned (only!) by
@@ -791,7 +791,7 @@
 \let\pgfmathprintnumber at fixed@style=\pgfmathprintnumber at fixed@styleDEFAULT
 
 
-% Rounds a normalized floating point number to \pgfmathfloat at round@precision
+% Rounds a normalized floating point number to \pgfmathfloat at round@precision 
 % digits precision and writes the result to \pgfmathresult.
 %
 % This method uses \pgfmathroundto for the mantissa.
@@ -836,7 +836,7 @@
 % #2: mantissa
 % #3: exponent
 % #4: CODE to display if the mantissa is drawn.
-% 	This code will be shown just before the exponent.
+% 	This code will be shown just before the exponent. 
 % 	Example: #4=\cdot
 % #5: CODE to display if the mantissa is NOT draw. (unused currently)
 % 	Might be used to display '10^1' instead of '1*10^1'.
@@ -1160,7 +1160,7 @@
 		\if0\pgfmathprintnumber at RELATIVE@choice at roundtofixed
 			% relative round mode=mantissa
 			\def\b at round@fixed{0}%
-		\else
+		\else 
 			\if1\pgfmathprintnumber at RELATIVE@choice at roundtofixed
 				% relative round mode=fixed
 				\def\b at round@fixed{1}%
@@ -1196,7 +1196,7 @@
 		\fi
 		\edef\pgfmathresultX{%
 			\the\pgfmathfloat at a@S
-			\the\pgfmathfloat at a@Mtok
+			\the\pgfmathfloat at a@Mtok 
 			\ifpgfmathfloatroundhasperiod\else.0\fi
 			e\the\pgfmathfloat at a@E}%
 		% call another formatter for the result (but avoid rounding inside of it):
@@ -1235,7 +1235,7 @@
 	\fi
 	\edef\pgfmathresultX{%
 		\the\pgfmathfloat at a@S
-		\the\pgfmathfloat at a@Mtok
+		\the\pgfmathfloat at a@Mtok 
 		\ifpgfmathfloatroundhasperiod\else.0\fi
 		e\the\pgfmathfloat at a@E}%
 	\let\pgfmathfloat at round@precision at orig=\pgfmathfloat at round@precision
@@ -1705,7 +1705,7 @@
 \pgfkeys{/pgf/number format/std}
 
 %%%%%%%%%%%%%%%%%%%%%%%%%%
-%
+% 
 % IMPL
 %
 %%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -1747,7 +1747,7 @@
 
 % \pgfmathroundto implementation in WORDS:
 %
-% coarse idea:
+% coarse idea: 
 %    1. collect all digits/sign BEFORE the first period in REVERSE order
 %    2. then, collect UP TO \prec digits after the period in REVERSE order
 % Steps 1. and 2. lead to the digit [sign] sequence
@@ -1781,7 +1781,7 @@
 %   		fi
 %   		++q
 %   		if q=0
-%   			discard the period
+%   			discard the period 
 %   		fi
 %   	end while
 %   	if q = r+1
@@ -1991,7 +1991,7 @@
 	\fi
 }
 
-% PRECONDITION:
+% PRECONDITION: 
 %    \c at pgfmathroundto@lastzeros > 0
 \def\pgfmathroundto at impl@discard at suffix@zeros at ITERATE#1{%
 	\advance\c at pgfmathroundto@lastzeros by-1
@@ -2183,7 +2183,7 @@
 		% 	\pgfmathfloattofixed at impl@collectmantissa#2\count\pgfmathfloat at a@E
 		% 	\edef\pgfmathresult{\the\pgfmathfloat at a@Mtok}%
 		% \fi
-		%--------------------------------------------------
+		%-------------------------------------------------- 
 		\pgfmathfloat at a@Mtok{#1}%
 		\pgfmathfloattofixed at impl@pos#2000000000\pgfmathfloat at EOI
 		\edef\pgfmathresult{\the\pgfmathfloat at a@Mtok}%

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -3187,59 +3187,14 @@
 			/pgfplots/scatter/true*,%
 			/pgfplots/set point meta if empty=f(x),%
 			scatter/@post marker code/.append code={%
-				% determine default alignment:
-				\pgfkeysgetvalue{/pgfplots/nodes near coords align}{\pgfplots at nodes@near at coords@align}%
-				\edef\pgfplots at nodes@near at coords@align{\pgfplots at nodes@near at coords@align}%
-				\def\pgfplots at loc@TMPa{auto}%
-				\ifx\pgfplots at nodes@near at coords@align\pgfplots at loc@TMPa
-					\def\pgfplots at loc@TMPa{x}%
-					\ifx\pgfplotspointmetainputhandler\pgfplots at loc@TMPa%
-						% point meta=x:
-						\def\pgfplots at nodes@near at coords@align{horizontal}%
-					\else
-						\def\pgfplots at nodes@near at coords@align{vertical}%
-					\fi
-				\fi
-				% check for sign-dependand alignment options:
-				\def\pgfplots at loc@TMPa{horizontal}%
-				\ifx\pgfplots at nodes@near at coords@align\pgfplots at loc@TMPa
-					\if1\csname pgfpmeta@\pgfplotspointmetainputhandler @issymbolic\endcsname%
-						\def\pgfplots at nodes@near at coords@align{above}%
-					\else
-						\pgfplotscoordmath{meta}{if is}{\pgfplotspointmeta}{-}{%
-							% \pgfplotspointmeta < 0
-							\def\pgfplots at nodes@near at coords@align{left}%
-						}{%
-							% \pgfplotspointmeta >= 0
-							\def\pgfplots at nodes@near at coords@align{right}%
-						}%
-					\fi
-				\else
-					\def\pgfplots at loc@TMPa{vertical}%
-					\ifx\pgfplots at nodes@near at coords@align\pgfplots at loc@TMPa
-						\if1\csname pgfpmeta@\pgfplotspointmetainputhandler @issymbolic\endcsname%
-							\def\pgfplots at nodes@near at coords@align{above}%
-						\else
-							\pgfplotscoordmath{meta}{if is}{\pgfplotspointmeta}{-}{%
-								% \pgfplotspointmeta < 0
-								\def\pgfplots at nodes@near at coords@align{below}%
-							}{%
-								% \pgfplotspointmeta >= 0
-								\def\pgfplots at nodes@near at coords@align{above}%
-							}%
-						\fi
-					\else
-						\pgfutil at ifundefined{pgfplots at nodesnearcoordsalign@isanchor@\pgfplots at nodes@near at coords@align}
-						{}%
-						{%
-							\t at pgfplots@toka=\expandafter{\pgfplots at nodes@near at coords@align}%
-							\edef\pgfplots at nodes@near at coords@align{anchor=\the\t at pgfplots@toka}%
-						}%
-					\fi
-				\fi
 				% ok, place the node.
-				\expandafter\node\expandafter[\pgfplots at nodes@near at coords@align,%
-					/pgfplots/every node near coord]
+				\t at pgfplots@tokb=\expandafter{\pgfplots at current@point at coordinatestyle}% see 'coordinate style'%
+				\edef\pgfplots at loc@TMPa{%
+					/pgfplots/nodes near coords/@@eval alignment,%
+					\the\t at pgfplots@tokb,%
+					/pgfplots/every node near coord%
+				}%
+				\expandafter\node\expandafter[\pgfplots at loc@TMPa]%
 				{%
 					\if1\csname pgfpmeta@\pgfplotspointmetainputhandler @issymbolic\endcsname%
 						% point meta=explicit symbolic
@@ -3359,7 +3314,7 @@
 		/pgfplots/scatter/@pre marker code/.append code={%
 			\edef\pgfplots at loc@TMPa{\noexpand\pgfutil at definecolor{mapped color}{#1}{\pgfplotspointmeta}}%
 			\pgfplots at loc@TMPa
-			\scope[#2]%
+			\pgfplots at scope@with at coord@styles[#2]%
 		},%
 		/pgfplots/scatter/@post marker code/.prefix code={%
 			\endscope
@@ -3381,6 +3336,31 @@
 	/pgfplots/scatter cmyk*/.style={/pgfplots/scatter explicit color*={cmyk}{#1}},
 	/pgfplots/scatter cmyk*/.default={draw=mapped color!80!black,fill=mapped color},
 	%
+	%
+	% allows to specify something like
+	%    coordinate style/.condition={x==4}{color=red},
+	%    coordinate style/.condition={x > 5}{color=black, mark=*},
+	% it is only evaluated in specific plot handlers.
+	% Each conditionession is added to the available list.
+	/pgfplots/coordinate style/.condition/.code 2 args={%
+		\pgfplotsapplistXpushback{E}{#1}{#2},\to\pgfplots at coordinate@style at list
+		\def\b at has@pgfplots at colordinate@style{1}%
+	},
+	% example:
+	% coordinate style/.from={\thisrow{row with styles}},
+	/pgfplots/coordinate style/.from/.code={%
+		\pgfplotsapplistXpushback{V}{#1}{},\to\pgfplots at coordinate@style at list
+		\def\b at has@pgfplots at colordinate@style{1}%
+	},
+	% clears all such styles.
+	/pgfplots/coordinate style/.clear/.code={%
+		\pgfplotsapplistXnewempty{\pgfplots at coordinate@style at list}%
+		\def\b at has@pgfplots at colordinate@style{0}%
+	},
+	/pgfplots/coordinate style/.clear,%
+	%
+	%
+	%
 	/pgfplots/visualization depends on/list/.initial=,%
 	/pgfplots/visualization depends on/.style={%
 		/pgfplots/visualization depends on/list/.add={}{,{#1}}%
@@ -4110,7 +4090,7 @@
 	/pgfplots/const color of colormap/.code={%
 		\pgfplots at color@of at colormap{const color of colormap={#1}}%
 	},%
-	/tikz/color of colormap/.style={/pgfplots/color of colormap={#1}},
+	/tikz/const color of colormap/.style={/pgfplots/const color of colormap={#1}},
 	% index of colormap={4}
 	% index of colormap={4 of viridis}
 	/pgfplots/index of colormap/.code={%
@@ -4174,7 +4154,7 @@
 	/pgfplots/scatter/use mapped color*/.style={
 		/pgfplots/scatter/@pre marker code/.append code={
 			\pgfplotscolormapdefinemappedcolor\pgfplotspointmetatransformed
-			\scope[#1]%
+			\pgfplots at scope@with at coord@styles[#1]%
 		},
 		/pgfplots/scatter/@post marker code/.prefix code={\endscope}
 	},
@@ -4337,6 +4317,7 @@
 	/pgfplots/compat/anchors/1.14/.style= 	{/pgfplots/compat/anchors/1.13},%
 	/pgfplots/compat/anchors/1.15/.style= 	{/pgfplots/compat/anchors/1.13},%
 	/pgfplots/compat/anchors/1.16/.style= 	{/pgfplots/compat/anchors/1.13},%
+	/pgfplots/compat/anchors/1.17/.style= 	{/pgfplots/compat/anchors/1.13},%
 	/pgfplots/compat/anchors/default/.style={/pgfplots/compat/anchors/1.3},%
 	%
 	/pgfplots/compat/empty line/.is choice,
@@ -4356,6 +4337,7 @@
 	/pgfplots/compat/empty line/1.14/.style= 	{/pgfplots/compat/empty line/1.4},%
 	/pgfplots/compat/empty line/1.15/.style= 	{/pgfplots/compat/empty line/1.4},%
 	/pgfplots/compat/empty line/1.16/.style= 	{/pgfplots/compat/empty line/1.4},%
+	/pgfplots/compat/empty line/1.17/.style= 	{/pgfplots/compat/empty line/1.4},%
 	/pgfplots/compat/empty line/default/.style=	{/pgfplots/compat/empty line/1.4},%
 	%
 	/pgfplots/compat/path replacement/.is choice,
@@ -4375,6 +4357,7 @@
 	/pgfplots/compat/path replacement/1.14/.style=   	{/pgfplots/compat/path replacement/1.5.1},
 	/pgfplots/compat/path replacement/1.15/.style=   	{/pgfplots/compat/path replacement/1.5.1},
 	/pgfplots/compat/path replacement/1.16/.style=   	{/pgfplots/compat/path replacement/1.5.1},
+	/pgfplots/compat/path replacement/1.17/.style=   	{/pgfplots/compat/path replacement/1.5.1},
 	/pgfplots/compat/path replacement/default/.style=	{/pgfplots/compat/path replacement/pre 1.3},%
 	%
 	/pgfplots/compat/pgfpoint substitution/.is choice,
@@ -4394,6 +4377,7 @@
 	/pgfplots/compat/pgfpoint substitution/1.14/.style=   	{/pgfplots/compat/pgfpoint substitution/1.11},
 	/pgfplots/compat/pgfpoint substitution/1.15/.style=   	{/pgfplots/compat/pgfpoint substitution/1.11},
 	/pgfplots/compat/pgfpoint substitution/1.16/.style=   	{/pgfplots/compat/pgfpoint substitution/1.11},
+	/pgfplots/compat/pgfpoint substitution/1.17/.style=   	{/pgfplots/compat/pgfpoint substitution/1.11},
 	/pgfplots/compat/pgfpoint substitution/default/.style=	{/pgfplots/compat/pgfpoint substitution/pre 1.3},%
 	%ellipse/.is if=pgfplots at path@replace at ellipse,
 	%
@@ -4423,6 +4407,7 @@
 	/pgfplots/compat/labels/1.14/.style=		{/pgfplots/compat/labels/1.8},%
 	/pgfplots/compat/labels/1.15/.style=		{/pgfplots/compat/labels/1.8},%
 	/pgfplots/compat/labels/1.16/.style=		{/pgfplots/compat/labels/1.8},%
+	/pgfplots/compat/labels/1.17/.style=		{/pgfplots/compat/labels/1.8},%
 	/pgfplots/compat/labels/default/.style=	{/pgfplots/compat/labels/pre 1.3},% maintain backwards compatibility
 	%
 	/pgfplots/compat/bar nodes/.is choice,
@@ -4477,6 +4462,7 @@
 	/pgfplots/compat/bar nodes/1.14/.style=		{/pgfplots/compat/bar nodes/1.13},%
 	/pgfplots/compat/bar nodes/1.15/.style=		{/pgfplots/compat/bar nodes/1.13},%
 	/pgfplots/compat/bar nodes/1.16/.style=		{/pgfplots/compat/bar nodes/1.13},%
+	/pgfplots/compat/bar nodes/1.17/.style=		{/pgfplots/compat/bar nodes/1.13},%
 	/pgfplots/compat/bar nodes/default/.style=	{/pgfplots/compat/bar nodes/pre 1.3},% maintain backwards compatibility
 	/pgfplots/compat/bar nodes/default,
 	%
@@ -4511,6 +4497,7 @@
 	/pgfplots/compat/scaling/1.14/.style={/pgfplots/compat/scaling/1.6},
 	/pgfplots/compat/scaling/1.15/.style={/pgfplots/compat/scaling/1.6},
 	/pgfplots/compat/scaling/1.16/.style={/pgfplots/compat/scaling/1.6},
+	/pgfplots/compat/scaling/1.17/.style={/pgfplots/compat/scaling/1.6},
 	/pgfplots/compat/scaling/default/.style={/pgfplots/compat/scaling/1.4},
 	%
 	/pgfplots/compat/scale mode/.is choice,
@@ -4530,6 +4517,7 @@
 	/pgfplots/compat/scale mode/1.14/.style={/pgfplots/compat/scale mode/1.6},
 	/pgfplots/compat/scale mode/1.15/.style={/pgfplots/compat/scale mode/1.6},
 	/pgfplots/compat/scale mode/1.16/.style={/pgfplots/compat/scale mode/1.6},
+	/pgfplots/compat/scale mode/1.17/.style={/pgfplots/compat/scale mode/1.6},
 	/pgfplots/compat/scale mode/default/.style={/pgfplots/compat/scale mode/1.5},
 	%
 	%
@@ -4550,6 +4538,7 @@
 	/pgfplots/compat/plot3graphics/1.14/.style=	{/pgfplots/compat/plot3graphics/1.6},%
 	/pgfplots/compat/plot3graphics/1.15/.style=	{/pgfplots/compat/plot3graphics/1.6},%
 	/pgfplots/compat/plot3graphics/1.16/.style=	{/pgfplots/compat/plot3graphics/1.6},%
+	/pgfplots/compat/plot3graphics/1.17/.style=	{/pgfplots/compat/plot3graphics/1.6},%
 	/pgfplots/compat/plot3graphics/default/.style=	{/pgfplots/compat/plot3graphics/1.5},%
 	%
 	% ATTENTION: there is a compatibility issue which slipped through
@@ -4596,6 +4585,7 @@
 	/pgfplots/compat/bar width by units/1.14/.style=		{/pgfplots/compat/bar width by units/1.7},
 	/pgfplots/compat/bar width by units/1.15/.style=		{/pgfplots/compat/bar width by units/1.7},
 	/pgfplots/compat/bar width by units/1.16/.style=		{/pgfplots/compat/bar width by units/1.7},
+	/pgfplots/compat/bar width by units/1.17/.style=		{/pgfplots/compat/bar width by units/1.7},
 	/pgfplots/compat/bar width by units/default/.style={/pgfplots/compat/bar width by units/pre 1.3},
 	%
 	/pgfplots/compat/BB/.is choice,
@@ -4615,6 +4605,7 @@
 	/pgfplots/compat/BB/1.14/.style=	{/pgfplots/compat/BB/1.8},%
 	/pgfplots/compat/BB/1.15/.style=	{/pgfplots/compat/BB/1.8},%
 	/pgfplots/compat/BB/1.16/.style=	{/pgfplots/compat/BB/1.8},%
+	/pgfplots/compat/BB/1.17/.style=	{/pgfplots/compat/BB/1.8},%
 	/pgfplots/compat/BB/default/.style={/pgfplots/compat/BB/pre 1.3},
 	%
 	/pgfplots/compat/general/.is choice,
@@ -4630,6 +4621,7 @@
 		/pgfplots/colorbar=false,
 		/pgfplots/3d log sampling=false,
 		/pgfplots/clip limits compat=true,
+		/pgfplots/table/percent is letter=false,
 	},%
 	/pgfplots/compat/general/1.3/.style=	{/pgfplots/compat/general/pre 1.3},
 	/pgfplots/compat/general/1.4/.style=	{/pgfplots/compat/general/pre 1.3},%
@@ -4674,6 +4666,10 @@
 		/pgfplots/clip limits compat=false,
 	},%
 	/pgfplots/compat/general/1.16/.style=	{/pgfplots/compat/general/1.15},%
+	/pgfplots/compat/general/1.17/.style=	{
+		/pgfplots/compat/general/1.15,
+		%/pgfplots/table/percent is letter=true,
+	},%
 	/pgfplots/compat/general/default/.style={/pgfplots/compat/general/1.11},
 	%
 	/pgfplots/enable tick line clipping/.is if=pgfplots at enable@tick at line@clipping,
@@ -4691,7 +4687,7 @@
 	/pgfplots/compat/show suggested version/.is if=pgfplots at show@suggested at version,
 	/pgfplots/compat/show suggested version=true,
 	/pgfplots/compat/current/.initial=,
-	/pgfplots/compat/mostrecent/.initial=1.16,
+	/pgfplots/compat/mostrecent/.initial=1.17,
 	/utils/exec={%
 		\pgfplotsutilforeachcommasep{%
 			/pgfplots/compat/current,%
@@ -4838,6 +4834,60 @@
 \def\pgfplots at tickwidth{\pgfkeysvalueof{/pgfplots/major tick length}}%
 \def\pgfplots at subtickwidth{\pgfkeysvalueof{/pgfplots/minor tick length}}%
 
+\pgfkeysdef{/pgfplots/nodes near coords/@@eval alignment}{%
+	% determine default alignment:
+	\pgfkeysgetvalue{/pgfplots/nodes near coords align}{\pgfplots at nodes@near at coords@align}%
+	\edef\pgfplots at nodes@near at coords@align{\pgfplots at nodes@near at coords@align}%
+	\def\pgfplots at loc@TMPa{auto}%
+	\ifx\pgfplots at nodes@near at coords@align\pgfplots at loc@TMPa
+		\def\pgfplots at loc@TMPa{x}%
+		\ifx\pgfplotspointmetainputhandler\pgfplots at loc@TMPa%
+			% point meta=x:
+			\def\pgfplots at nodes@near at coords@align{horizontal}%
+		\else
+			\def\pgfplots at nodes@near at coords@align{vertical}%
+		\fi
+	\fi
+	% check for sign-dependand alignment options:
+	\def\pgfplots at loc@TMPa{horizontal}%
+	\ifx\pgfplots at nodes@near at coords@align\pgfplots at loc@TMPa
+		\if1\csname pgfpmeta@\pgfplotspointmetainputhandler @issymbolic\endcsname%
+			\def\pgfplots at nodes@near at coords@align{above}%
+		\else
+			\pgfplotscoordmath{meta}{if is}{\pgfplotspointmeta}{-}{%
+				% \pgfplotspointmeta < 0
+				\def\pgfplots at nodes@near at coords@align{left}%
+			}{%
+				% \pgfplotspointmeta >= 0
+				\def\pgfplots at nodes@near at coords@align{right}%
+			}%
+		\fi
+	\else
+		\def\pgfplots at loc@TMPa{vertical}%
+		\ifx\pgfplots at nodes@near at coords@align\pgfplots at loc@TMPa
+			\if1\csname pgfpmeta@\pgfplotspointmetainputhandler @issymbolic\endcsname%
+				\def\pgfplots at nodes@near at coords@align{above}%
+			\else
+				\pgfplotscoordmath{meta}{if is}{\pgfplotspointmeta}{-}{%
+					% \pgfplotspointmeta < 0
+					\def\pgfplots at nodes@near at coords@align{below}%
+				}{%
+					% \pgfplotspointmeta >= 0
+					\def\pgfplots at nodes@near at coords@align{above}%
+				}%
+			\fi
+		\else
+			\pgfutil at ifundefined{pgfplots at nodesnearcoordsalign@isanchor@\pgfplots at nodes@near at coords@align}
+			{}%
+			{%
+				\t at pgfplots@toka=\expandafter{\pgfplots at nodes@near at coords@align}%
+				\edef\pgfplots at nodes@near at coords@align{anchor=\the\t at pgfplots@toka}%
+			}%
+		\fi
+	\fi
+	\expandafter\pgfkeysalso\expandafter{\pgfplots at nodes@near at coords@align}%
+}%
+
 \begingroup
 \pgfkeys{/pgfplots/colorbar pgfshading}
 \pgfkeysgetvalue{/pgfplots/colorbar/draw/. at cmd}\pgfplots at loc@TMPa
@@ -4887,6 +4937,18 @@
 \pgfplots at cmdkey@alias ztick style=z tick style;
 
 
+\def\pgfplots at scope@with at coord@styles[#1]{%
+	\if1\b at has@pgfplots at colordinate@style
+		\def\pgfplots at loc@TMPa{\scope[#1}%
+		\t at pgfplots@toka=\expandafter{\pgfplots at loc@TMPa}%
+		\t at pgfplots@tokb=\expandafter{\pgfplots at current@point at coordinatestyle}%
+		\edef\pgfplots at loc@TMPa{\the\t at pgfplots@toka,\the\t at pgfplots@tokb]}%
+	\else
+		\def\pgfplots at loc@TMPa{\scope[#1]}%
+	\fi
+	\pgfplots at loc@TMPa
+}%
+
 % A backwards compatibility method which works as follows:
 % if any user specified arguments exist for the 'domain' or 'samples
 % at' or 'samples' keys, nothing is done.

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.markers.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -323,7 +323,7 @@
 	}{%
 		\expandafter\let\expandafter\pgfplots at loc@TMPa\csname pgfp at scatter@class@\pgfplotspointmeta\endcsname
 	}%
-	\expandafter\scope\expandafter[\pgfplots at loc@TMPa]%
+	\expandafter\pgfplots at scope@with at coord@styles\expandafter[\pgfplots at loc@TMPa]%
 }%
 
 % validates 'mark layer' such that it can be queried afterwards.

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.paths.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -30,17 +30,20 @@
 \def\pgfplots at install@path at replacements{%
 	\ifpgfplots at path@replace at ellipse
 		\let\tikz at do@circle=\pgfplots at path@@tikz at do@circle
+		\let\tikz at do@ellipse=\pgfplots at path@@tikz at do@ellipse
 		\expandafter\def\expandafter\pgfinterruptpicture\expandafter{\pgfinterruptpicture
 			\let\tikz at do@circle=\pgfplots at path@@tikz at do@circle at orig
+			\let\tikz at do@ellipse=\pgfplots at path@@tikz at do@ellipse at orig
 		}%
 	\fi
 }%
 
 \let\pgfplots at path@@tikz at do@circle at orig=\tikz at do@circle
+\let\pgfplots at path@@tikz at do@ellipse at orig=\tikz at do@ellipse
 
 % This is a replacement for \tikz at do@circle which replaces the "xy"
 % coordinate system by one which is compatible with pgfplots.
-\def\pgfplots at path@@tikz at do@circle#1#2{%
+\def\pgfplots at path@@tikz at do@circle#1{%
   \begingroup
   \ifpgfplots at usefpu
 	\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
@@ -47,6 +50,25 @@
   \fi
   \pgfmathparse{#1}%
   \let\tikz at ellipse@x=\pgfmathresult%
+  \ifpgfmathunitsdeclared
+    \pgfpathellipse{\pgfpointorigin}%
+      {\pgfqpoint{\tikz at ellipse@x pt}{0pt}}%
+      {\pgfpoint{0pt}{\tikz at ellipse@x pt}}%
+  \else
+    \pgfpathellipse{\pgfpointorigin}%
+      {\pgfplotspointaxisdirectionxy{\tikz at ellipse@x}{0}}%
+      {\pgfplotspointaxisdirectionxy{0}{\tikz at ellipse@x}}%
+  \fi
+  \endgroup
+}
+
+\def\pgfplots at path@@tikz at do@ellipse#1#2{%
+  \begingroup
+  \ifpgfplots at usefpu
+	\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}%
+  \fi
+  \pgfmathparse{#1}%
+  \let\tikz at ellipse@x=\pgfmathresult%
   \ifpgfmathunitsdeclared%
     \pgfmathparse{#2}%
     \let\tikz at ellipse@y=\pgfmathresult%
@@ -69,3 +91,12 @@
   \fi%
   \endgroup
 }
+
+% Older versions of TikZ did not define \tikz at do@ellipse but only
+% \tikz at do@circle which took the place of \tikz at do@ellipse, i.e. the same code
+% was used for both paths.  In that case, we override the new circle code with
+% the ellipse code to retain the behaviour of using the same code on both
+% paths.
+\ifdefined\tikz at do@ellipse\else
+	\let\pgfplots at path@@tikz at do@circle=\pgfplots at path@@tikz at do@ellipse
+\fi

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -5,10 +5,10 @@
 \catcode`\:=12
 \catcode`\+=12
 \catcode`\-=12
-\gdef\pgfplotsrevision{1.16}
-\gdef\pgfplotsversion{1.16}
-\gdef\pgfplotsversiondatetime{2018-03-28 20:42:04 +0200}
-\gdef\pgfplotsrevisiondatetime{2018-03-28 20:42:04 +0200}
+\gdef\pgfplotsrevision{1.17}
+\gdef\pgfplotsversion{1.17}
+\gdef\pgfplotsversiondatetime{2020-02-29 09:43:25 +0100}
+\gdef\pgfplotsrevisiondatetime{2020-02-29 09:43:25 +0100}
 \gdef\pgfplots at glob@TMPa#1-#2-#3 #4\relax{#1/#2/#3}
 \xdef\pgfplotsversiondate{\expandafter\pgfplots at glob@TMPa\pgfplotsversiondatetime\relax}
 \xdef\pgfplotsrevisiondate{\expandafter\pgfplots at glob@TMPa\pgfplotsrevisiondatetime\relax}

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -2844,6 +2844,7 @@
 	\let\pgfplots at current@point at y=\pgfutil at empty
 	\let\pgfplots at current@point at z=\pgfutil at empty
 	\let\pgfplots at current@point at meta=\pgfutil at empty
+	\let\pgfplots at current@point at coordinatestyle=\pgfutil at empty
 	\let\pgfplots at current@point at error@x at plus=\pgfutil at empty
 	\let\pgfplots at current@point at error@x at minus=\pgfutil at empty
 	\let\pgfplots at current@point at error@y at plus=\pgfutil at empty
@@ -3286,6 +3287,10 @@
 				\E\pgfplots at errorbars@survey at point
 			\fi
 			%
+			\if1\b at has@pgfplots at colordinate@style
+				\E\pgfplots at get@matching at coordinate@styles at surveyphase
+			\fi
+			%
 			\ifpgfplots at collect@firstplot at astick
 				\ifnum\pgfplots at numplots=0
 					\E\ifx\E\pgfplots at firstplot@coords at x\E\pgfutil at empty
@@ -3818,6 +3823,11 @@
 			\fi
 		\fi
 		%
+		\if1\b at has@pgfplots at colordinate@style
+			\pgfplots at LUA@survey at log@deactivation{coordinate style currently unsupported}%
+			\pgfplots at LUA@backend at supportedfalse
+		\fi
+		%
 		\ifpgfplots at LUA@backend at supported
 			\edef\pgfplots at LUA@backend at plotnum{\pgfutil at directlua{tex.sprint(\pgfplotsHASH pgfplots.gca.plothandlers)}}%
 			\begingroup
@@ -4179,7 +4189,12 @@
 	\let\protect=\pgfplots at oldprotect
 	\t at pgfplots@toka=\expandafter{\pgfplotsaxisserializedatapoint at val}%
 	\t at pgfplots@tokb=\expandafter{\pgfplotsretval}%
-	\edef\pgfplotsretval{{\the\t at pgfplots@tokb;\the\t at pgfplots@toka}}%
+	\if1\b at has@pgfplots at colordinate@style
+		\t at pgfplots@tokc\expandafter{\expandafter{\pgfplots at current@point at coordinatestyle}}%
+	\else
+		\t at pgfplots@tokc={}%
+	\fi
+	\edef\pgfplotsretval{{\the\t at pgfplots@tokb;\the\t at pgfplots@tokc\the\t at pgfplots@toka}}%
 }%
 
 \def\pgfplotsaxisserializedatapoint{%
@@ -4200,8 +4215,16 @@
 % parts which can be read with
 % \pgfplotsaxisdeserializedatapointfrom at private)
 \def\pgfplotsaxisdeserializedatapointfrom#1{%
-	\expandafter\pgfplotsaxisdeserializedatapointfrom@#1\pgfplots at EOI
+	\if1\b at has@pgfplots at colordinate@style
+		\expandafter\pgfplotsaxisdeserializedatapointfrom@@#1\pgfplots at EOI
+	\else
+		\expandafter\pgfplotsaxisdeserializedatapointfrom@#1\pgfplots at EOI
+	\fi	
 }%
+\def\pgfplotsaxisdeserializedatapointfrom@@#1;#2#3\pgfplots at EOI{%
+	\pgfplotsaxisdeserializedatapointfrom@{#1};{#3}\pgfplots at EOI
+	\def\pgfplots at current@point at coordinatestyle{#2}%
+}%
 \def\pgfplotsaxisdeserializedatapointfrom@#1;#2\pgfplots at EOI{%
 	\def\pgfplotsaxisdeserializedatapointfrom at private@lastvalue{#1}%
 	\pgfplotsaxisdeserializedatapointfrom at private{#1}%
@@ -9719,3 +9742,42 @@
     \pgfplots at shellescape{sh #1.sh > #1.out}
   \fi%
 }
+
+% Defines \pgfplots at current@point at coordinatestyle to be the list of options resulting from the evaluation of all matching 'coordinate style' expressions.
+\def\pgfplots at get@matching at coordinate@styles at surveyphase{%
+	\let\pgfplots at current@point at coordinatestyle=\pgfutil at empty
+	% ##1: operation mode
+	% ##2: key
+	% ##3: value
+	\def\pgfplots at coordinate@style at process##1##2##3{%
+		\if E##1% Ah : an expression.
+			\pgfmathifexpression{##2}{%
+				\expandafter\def\expandafter\pgfplots at current@point at coordinatestyle\expandafter{\pgfplots at current@point at coordinatestyle,%
+					##3%
+				}%
+			}{}%
+		\else
+			\if V##1% Ah : an .from
+				\edef\pgfplots at loc@TMPc{##2}%
+				\t at pgfplots@toka=\expandafter{\pgfplots at current@point at coordinatestyle}%
+				\t at pgfplots@tokb=\expandafter{\pgfplots at loc@TMPc}%
+				\edef\pgfplots at current@point at coordinatestyle{%
+					\the\t at pgfplots@toka,%
+					\the\t at pgfplots@tokb
+				}%
+			\else
+				\pgfplots at get@matching at coordinate@styles at surveyphase@err{##1}%
+			\fi
+		\fi
+	}%
+	\pgfplotsapplistXlet\pgfplots at loc@TMPb=\pgfplots at coordinate@style at list
+	\expandafter\pgfplotsutilforeachcommasep\pgfplots at loc@TMPb\as\pgfplots at loc@TMPa{%
+		\ifx\pgfplots at loc@TMPa\pgfutil at empty
+		\else
+			\expandafter\pgfplots at coordinate@style at process\pgfplots at loc@TMPa
+		\fi
+	}%
+}%
+\def\pgfplots at get@matching at coordinate@styles at surveyphase@err#1#2#3{%
+	\pgfplots at error{Encountered unexpected internal value of 'coordinate style: #1}%
+}

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -427,8 +427,21 @@
 	%
 	\pgfplotsplothandlers at init@map at to@patched at versions
 	%
+	%
+%	\pgfkeys{%
+%		/pgf/at begin bar/.add={}{%
+%			\if1\b at has@pgfplots at colordinate@style
+%				\expandafter\pgfplots at bar@extra
+%			\fi
+%		},%
+%	}%
+	%
 }%
 
+\def\pgfplots at bar@extra#1\pgfkeysvalueof#2{%
+	\expandafter\tikz\expandafter[\pgfplots at current@point at coordinatestyle] \pgfextra{#1};%
+}%
+
 \def\pgfplots at xbar@width{pgfplotsxbarwidth}
 \def\pgfplots at ybar@width{pgfplotsybarwidth}
 \def\pgfplots at xbar@shift{pgfplotsxbarshift}

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -2532,7 +2532,10 @@
 % '#3' is some macro. Its input is '\pgfmathresult', its expected output is '\pgfmathresult'
 \long\def\pgfplots at transform@csv at list#1\to#2\with#3{%
 	\let#2=\pgfutil at empty
-	\foreach \pgfplots at loc@TMPb in {#1} {%
+	\begingroup
+	\pgfkeys{/pgf/fpu,/pgf/fpu/output format=float}%
+	% \pgfplotsforeachungrouped is more powerful than \foreach
+	\pgfplotsforeachungrouped \pgfplots at loc@TMPb in {#1} {%
 		\let\pgfmathresult=\pgfplots at loc@TMPb
 		#3%
 		\ifx#2\pgfutil at empty
@@ -2541,6 +2544,7 @@
 			\xdef#2{#2,\pgfmathresult}%
 		\fi
 	}%
+	\endgroup
 	%
 }%
 

Modified: trunk/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex	2020-03-03 22:58:00 UTC (rev 54040)
+++ trunk/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex	2020-03-03 22:58:29 UTC (rev 54041)
@@ -673,7 +673,7 @@
 			\pgfmathparse{(##4-##2)/\pgfplots at h + 1}%
 			\pgfmathfloattofixed\pgfmathresult
 			\afterassignment\pgfplotsforeachtodomain@@
-			\c at pgf@counta=\pgfmathresult
+			\c at pgf@counta=\pgfmathresult\relax
 		}%
 		\edef\pgfplots at loc@TMPa{\noexpand\pgfplotsforeachungrouped \noexpand\x\space in{#1}{}}%
 		\pgfplots at loc@TMPa
@@ -699,6 +699,9 @@
 	\fi
 }%
 
+\newif\ifpgfplotsforeachungroupedassumenumeric
+\pgfplotsforeachungroupedassumenumerictrue
+
 \long\def\pgfplotsforeachungrouped@@#1#2#3#4{%
 	\pgfplots at for@reset at 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 at isuniform@dist at one{#3}%
+					\ifpgfplots at loc@tmp
+						% special handling:
+						% \foreach #1 in {a,...,n} can be improved. Let us
+						% hope it is numeric ...
+						\pgfmathifexpression{\pgfplotsretval < \pgfplotsretvalb}{%
+							\edef\pgfplots at foreach@loc at TMPa{\pgfplotsretval,\pgfplotsretval+1,...,\pgfplotsretvalb}%
+						}{%
+							\edef\pgfplots at foreach@loc at TMPa{\pgfplotsretval,\pgfplotsretval-1,...,\pgfplotsretvalb}%
+						}%
+						\def\pgfplots at foreach@loc at TMPb{\pgfplotsforeachungroupeduniform@{#1}}%
+						\expandafter\pgfplots at foreach@loc at TMPb\pgfplots at foreach@loc at 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 at 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 at isuniform@dist at one#1{%
+	\edef\pgfplots at foreach@loc at TMPa{#1}%
+	\expandafter\pgfplotsforeachungrouped at isuniform@dist at one@\pgfplots at foreach@loc at TMPa,,,\relax
+}%
+\def\pgfplotsforeachungrouped at isuniform@dist at one@#1,#2,#3,#4\relax{%
+	\def\pgfplots at foreach@loc at TMPa{#4}%
+	\def\pgfplots at foreach@loc at TMPb{,,}%
+	\pgfplots at loc@tmpfalse
+	\ifx\pgfplots at foreach@loc at TMPa\pgfplots at foreach@loc at TMPb
+		\def\pgfplots at foreach@loc at TMPa{#2}%
+		\def\pgfplots at foreach@loc at TMPb{...}%
+		\ifx\pgfplots at foreach@loc at TMPa\pgfplots at foreach@loc at TMPb
+			\pgfutil at in@,{#3}%
+			\ifpgfutil at in@
+			\else
+				\pgfplots at 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.
 %



More information about the tex-live-commits mailing list.