diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic')
39 files changed, 1666 insertions, 353 deletions
diff --git a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.external.code.tex b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.external.code.tex index f9e27d52321..41fc81ba6f1 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.external.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.external.code.tex @@ -1,6 +1,6 @@ %-------------------------------------------- % -% Package pgfplots, library for high-level coordinates. +% Package pgfplots, library for image externalization % % Copyright 2007/2008/2009 by Christian Feuersänger. % @@ -43,22 +43,60 @@ \def\pgfplots@glob@TMPa{0}% }% -% this is non-sense - we would need to load the external lib first... -%\pgfutil@ifundefined{tikzexternal@getnextfilename@resetglobals}{% -% \def\pgfplots@glob@TMPa{0}% -%}{}% - -\if1\pgfplots@glob@TMPa - \usetikzlibrary{external}% -\else +\def\pgfplots@backw@compat@external@load{% \immediate\write16{Package pgfplots external lib: loading complementary code for your PGF version...} % Backwards compatibility: \let\pgfplots@backw@compat@AtBeginDocument=\AtBeginDocument - \def\AtBeginDocument#1{}% + \def\AtBeginDocument##1{}% \input pgfplotsoldpgfsupp_pgfcoreexternal.code.tex - \let\AtBeginDocument=\pgfplots@backw@compat@AtBeginDocument - % \input pgfplotsoldpgfsupp_tikzlibraryexternal.code.tex + \let\AtBeginDocument=\pgfplots@backw@compat@AtBeginDocument +}% + + +\if1\pgfplots@glob@TMPa + \usetikzlibrary{external}% + \pgfutil@ifundefined{tikzexternal@driver@pgfsys-pdftex.def}{% + \pgfplots@backw@compat@external@load + }{}% +\else + \pgfplots@backw@compat@external@load +\fi + +% This here is a section for patches. +% +% A patch contains software pieces which add individual functionality. +% +% The content is copyright Christian Feuersaenger. I added it to both +% PGF and TikZ such that it can be distributed easily +\expandafter\ifx\csname pgfsys@prepare@papersize\endcsname\relax + \immediate\write16{Package pgfplots external lib: patching system driver code for your PGF version...} + % Patch drivers.... this is needed since recent revisions. + \def\pgfsys@prepare@papersize#1#2{\pgfsys@papersize{#1}{#2}} + \begingroup + \expandafter\def\csname pgfplots@backw@ext@pgfsys-dvips.def\endcsname{% + \gdef\pgfsys@prepare@papersize##1##2{% + \expandafter\gdef\expandafter\pgfsys@atbegindocument\expandafter{\pgfsys@atbegindocument\special{papersize=##1,##2}}% + } + }% + \expandafter\def\csname pgfplots@backw@ext@pgfsys-dvipdfmx.def\endcsname{% + \gdef\pgfsys@prepare@papersize##1##2{% + \expandafter\gdef\expandafter\pgfsys@atbegindocument% + \expandafter{\pgfsys@atbegindocument + \special{papersize=##1,##2}% + } + } + }% + \expandafter\def\csname pgfplots@backw@ext@pgfsys-dvipdfm.def\endcsname{% + \gdef\pgfsys@prepare@papersize##1##2{% + \expandafter\gdef\expandafter\pgfsys@atbegindocument% + \expandafter{\pgfsys@atbegindocument + \special{papersize=##1,##2}% + } + } + }% + \csname pgfplots@backw@ext@\pgfsysdriver\endcsname + \endgroup \fi \endinput diff --git a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fillbetween.code.tex b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fillbetween.code.tex index 36c5b4ddf61..3c3243abab1 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fillbetween.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.fillbetween.code.tex @@ -53,13 +53,21 @@ \pgfkeys{ /pgfplots/every fill between plot/.style={/pgfplots/area legend,/tikz/fill}, /tikz/soft clip assign/domain/.code args={#1:#2}{% - \edef\pgfplots@loc@TMPa{(axis cs:#1,\pgfkeysvalueof{/pgfplots/ymin}) rectangle (axis cs:#2,\pgfkeysvalueof{/pgfplots/ymax})}% - \pgfkeysalso{/tikz/soft clip assign/path/.expand once=\pgfplots@loc@TMPa}% + \pgfplotsifisvisualizationphase{% + \edef\pgfplots@loc@TMPa{% + (axis cs:#1,\pgfkeysvalueof{/pgfplots/ymin}) + rectangle (axis cs:#2,\pgfkeysvalueof{/pgfplots/ymax})}% + \pgfkeysalso{/tikz/soft clip assign/path/.expand once=\pgfplots@loc@TMPa}% + }{}% },% /tikz/soft clip assign/y domain y/.style={/tikz/soft clip assign/domain y={#1}}, /tikz/soft clip assign/domain y/.code args={#1:#2}{% - \edef\pgfplots@loc@TMPa{(axis cs:\pgfkeysvalueof{/pgfplots/xmin},#1) rectangle (axis cs:\pgfkeysvalueof{/pgfplots/xmax},#2)}% - \pgfkeysalso{/tikz/soft clip assign/path/.expand once=\pgfplots@loc@TMPa}% + \pgfplotsifisvisualizationphase{% + \edef\pgfplots@loc@TMPa{% + (axis cs:\pgfkeysvalueof{/pgfplots/xmin},#1) + rectangle (axis cs:\pgfkeysvalueof{/pgfplots/xmax},#2)}% + \pgfkeysalso{/tikz/soft clip assign/path/.expand once=\pgfplots@loc@TMPa}% + }{}% },% % /pgfplots/execute at begin axis@@/.add={}{% @@ -68,6 +76,7 @@ }, } +% #1: the value of /tikz/fill between/on layer \def\pgfplotsfillbetween@ensure@clipping@on@layer{% \ifpgfplots@clip \pgfkeysgetvalue{/tikz/fill between/on layer}\pgfplots@loc@TMPa @@ -80,7 +89,7 @@ \ifpgfutil@in@ % ah - already prepared. Good, nothing left to do. \else - \pgfplots@log3{fill between: found 'clip=true'. installing clip path for layer '\pgfplots@loc@TMPa'...}% + \pgfplots@log3{fill between: found 'clip=true'. Preparing pgfplotsextra instruction with clip path for layer '\pgfplots@loc@TMPa'...}% \xdef\pgfplotsfillbetween@list@of@layers@with@clippath{\pgfplots@loc@TMPa,\pgfplotsfillbetween@list@of@layers@with@clippath}% % \edef\pgfplots@loc@TMPb{% @@ -120,6 +129,7 @@ \tikzfillbetween[#2]{% /pgfplots/.search also=/tikz,% /pgfplots/.cd,% + /tikz/fill between/every last segment/.append style={/tikz/fill between/path after segment={#3}},% #1% }% }{% @@ -127,6 +137,16 @@ }% } +% ONLY TO BE USED AS LATER OPTION! +\pgfkeysdef{/pgfplots/fill between/@ensure layers}{% + \ifpgfplots@layered@graphics + \else + \pgfplots@log3{fill between: activating layered graphics}% + \pgfplotsset{set layers}% + \pgfplots@set@options@of@layered@graphics + \fi +}% + % SIDE-EFFECT: modifies \b@pgfplotsfillbetween@list@has@set@layers and % \pgfplotsfillbetween@list@of@layers@with@clippath \def\pgfplotslibraryfillbetweenpreparecurrentlayer{% @@ -134,11 +154,11 @@ \ifx\pgfplots@loc@TMPa\pgfutil@empty \else \if0\b@pgfplotsfillbetween@list@has@set@layers - \pgfplots@log3{fill between: activating layered graphics}% - \pgfplotssetlateoptions{set layers}% + % + \pgfplotssetlateoptions{fill between/@ensure layers}% \gdef\b@pgfplotsfillbetween@list@has@set@layers{1}% \fi - \pgfplotsfillbetween@ensure@clipping@on@layer + \pgfplotsfillbetween@ensure@clipping@on@layer% \fi } diff --git a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.polar.code.tex b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.polar.code.tex index 2e6f13df3e0..2cf8ef5235d 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.polar.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.polar.code.tex @@ -37,6 +37,25 @@ ytick pos=right, every axis title shift=1.2\baselineskip, legend style={anchor=center}, + /pgfplots/polar labels, + }, + /pgfplots/polar labels/.code={ + % this is equivalent to 'use units=false'. But that key is only available if the units lib is loaded. + \pgfplots@units@usefalse + \pgfkeysalso{% + % is this a good choice? No, it is not. + % In fact, I believe that neither xlabel nor ylabel is a good idea for a polar plot. + % BUT: if we simply leave the defaults, they will be placed outside of the circle - and + % this will confuse the units library which (for some reason) always generates labels. + every axis x label/.style={ + at={(rel axis cs:0,0.5)}, + anchor=north, + }, + every axis y label/.style={ + at={(0.2,0.85)}, + anchor=center, + }, + }% }, /pgfplots/xticklabel in circle/.style={ xtick align=inside, diff --git a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex index 003196bab83..611b12bbba0 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/libs/tikzlibrarypgfplots.smithchart.code.tex @@ -1480,7 +1480,11 @@ % % compute the angle relative to (1,0): \ifdim\pgfplots@Dim pt<0pt - \pgfmathsubtract@{360}{\pgfplots@tmpangle}% + \pgfmathiftrigonometricusesdeg{% + \pgfmathsubtract@{360}{\pgfplots@tmpangle}% + }{% + \pgfmathsubtract@{6.28318530717959}{\pgfplots@tmpangle}% + }% \fi }% diff --git a/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex b/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex index 84971e5045f..4d44a17c005 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstable.code.tex @@ -1130,6 +1130,19 @@ \pgfutil@ifnextchar[{\pgfplotstablenew@impl}{\pgfplotstablenew@impl[]}} \def\pgfplotstablenew@impl[#1]#2#3{% + \ifx#3\pgfutil@undefined + \else + \ifx#3\relax + \else + % oh - there *is* already such a table. The 'getcolumnbyname' method suffers from a flaw in 'ifexists' that I do not want to fix right now. + % To work around that flaw, I merely clear the old table here: + % let's hope that '#3' really *was* a table and not some other junk... + \pgfplotslistforeachungrouped#3\as\pgfplotstable@loc@TMPa{% + \expandafter\let\csname\string#3@\pgfplotstable@loc@TMPa\endcsname=\relax% + }% + \fi + \fi + % \pgfplotsscanlinelengthinitzero % create a temporary column with the desired number of rows: \pgfutil@in@\pgfplotstablegetrowsof{#2}% diff --git a/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex b/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex index f8cf773826b..cfd13a74a58 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/numtable/pgfplotstableshared.code.tex @@ -360,6 +360,10 @@ % #2: table struct % #3: true code % #4: false code + % FIXME : THIS IS BUGGY: the macro may exist, but is it + % (still) part of the table!? Currently, there is a workaround + % such that \pgfplotstablenew cleans up and avoids that case.. + % and we have no "drop column" currently. ifexists =\pgfutil@ifundefined{\string##2@##1}{##4}{##3}, % % Low level method to return (the actual content) of column #1 of diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex index b3dcd2d6003..8b5a3eaa055 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_loader.code.tex @@ -80,5 +80,13 @@ \input pgfplotsoldpgfsupp_pgfutil-common-lists.tex }{}% +\pgfutil@IfUndefined{pgfmathiftrigonometricusesdeg}{% + \pgfutil@ifundefined{pgfmathdeclarefunction}{% + % PGF 2.00 !? Well, trig format won't work here. + }{% + \input pgfplotsoldpgfsupp_trig_format.code.tex + }% +}{}% + \endinput diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex index 0c47024409a..36aafda149d 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_misc.code.tex @@ -2,6 +2,23 @@ % compatibility with PGF 2.10 % ====================================================== % +%%% This file is a copy of some part of PGF/Tikz. +%%% It has been copied here to provide : +%%% - compatibility with older PGF versions +%%% - availability of PGF contributions by Christian Feuersaenger +%%% which are necessary or helpful for pgfplots. +%%% +%%% It contains a couple of patches such that selected changes which +%%% are also part of PGF/TikZ (and can be found in the development +%%% version of PGF/TikZ) are available within pgfplots. +%%% +%%% Typically, these modifications have been done by the pgfplots team +%%% as contribution to PGf/TIKZ +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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. \def\pgfdeclarelayer#1{% \pgfutil@ifundefined{pgf@layerbox@#1}{% \expandafter\expandafter\csname pgf@newbox\endcsname\csname pgf@layerbox@#1\endcsname% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_patches.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_patches.code.tex new file mode 100644 index 00000000000..698769ec1e5 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_patches.code.tex @@ -0,0 +1,18 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% This file contains patches on top of PGF/Tikz. +%%% +%%% It has been copied here to provide : +%%% - compatibility with older PGF versions +%%% - availability of PGF contributions by Christian Feuersaenger +%%% which are necessary or helpful for pgfplots. +%%% +%%% For reasons of simplicity, I have copied the whole file, including own contributions AND +%%% PGF parts. The copyrights are as they appear in PGF. +%%% +%%% Note that pgfplots has compatible licenses. +%%% +%%% This copy has been modified in the following ways: +%%% - nested \input commands have been updated +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreexternal.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreexternal.code.tex index 1929b2faccf..733cb47a4db 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreexternal.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreexternal.code.tex @@ -13,8 +13,13 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% +%%% Date of this copy: Mi 9. Jul 15:41:39 CEST 2014 %%% @@ -27,7 +32,7 @@ % % See the file doc/generic/pgf/licenses/LICENSE for more details. -\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcoreexternal.code.tex,v 1.19 2012/06/18 20:39:58 ludewich Exp $ +\ProvidesFileRCS $Header: /cvsroot/pgf/pgf/generic/pgf/basiclayer/pgfcoreexternal.code.tex,v 1.20 2013/07/15 12:05:31 tantau Exp $ @@ -200,7 +205,7 @@ % This will be overwritten by the tikz external lib if it is loaded. \def\pgfexternal@error@no@shipout{% - \PackageError{pgf}{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname'. Perhaps there was a typo somewhere? Please check that your document contains '\string\beginpgfgraphicnamed{\pgfactualjobname} ... \string\endpgfgraphicnamed'}% + \pgferror{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname'. Perhaps there was a typo somewhere? Please check that your document contains '\string\beginpgfgraphicnamed{\pgfactualjobname} ... \string\endpgfgraphicnamed'}% }% @@ -512,7 +517,7 @@ \immediate\closeout\pgf@plotwrite \fi \fi - \pgfsys@papersize{\the\wd\pgfpic}{\the\dimen0}% + \pgfsys@prepare@papersize{\the\wd\pgfpic}{\the\dimen0}% % \setbox0=\vbox{% % I admit that I don't know why there is this kerning: diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreimage.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreimage.code.tex index 5283de70b9d..f352550430d 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreimage.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcoreimage.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Mon Mar 22 16:42:03 CET 2010 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorelayers.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorelayers.code.tex index 613a1993cc0..7665a76afb6 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorelayers.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorelayers.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorescopes.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorescopes.code.tex index 08d1e5e6d92..69ef0d9318b 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorescopes.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfcorescopes.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeys.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeys.code.tex index e505a111825..c2edfccaea4 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeys.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeys.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeysfiltered.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeysfiltered.code.tex index 9db17f509b6..b40528c43af 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeysfiltered.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfkeysfiltered.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex index 352e13e9e46..c45a35f60c8 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryfpu.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryintersections.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryintersections.code.tex index 1356aaec9ab..0e07fdc8a87 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryintersections.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryintersections.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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 14. Feb 21:37:39 CET 2014 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryplothandlers.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryplothandlers.code.tex index c4a141cc566..aa3c0e8f364 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryplothandlers.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgflibraryplothandlers.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.code.tex index 9f620fb6f82..8a3f3228d4a 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Sa 7. Dez 20:58:23 CET 2013 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.pdflinks.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.pdflinks.code.tex index 6286e9cebb0..a572afc552f 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.pdflinks.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.pdflinks.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Sa 7. Dez 20:58:23 CET 2013 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.prettyprinter.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.prettyprinter.code.tex index da95f766fee..21ba1b5b2a0 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.prettyprinter.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmanual.prettyprinter.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Sa 7. Dez 20:58:23 CET 2013 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex index f7889097516..58eb9de28f1 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfmathfloat.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfutil-common-lists.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfutil-common-lists.tex index a47bd4eb96a..4f2f3d68c61 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfutil-common-lists.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_pgfutil-common-lists.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Sa 7. Dez 20:58:23 CET 2013 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzexternalshared.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzexternalshared.code.tex index 23f088e84e4..b1e21bc5222 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzexternalshared.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzexternalshared.code.tex @@ -13,8 +13,13 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% +%%% Date of this copy: Mi 9. Jul 15:41:39 CEST 2014 %%% @@ -158,8 +163,6 @@ \pgfkeysalso{/tikz/external/figure list=true,/pgf/images/aux in dpth=true}% }, mode=convert with system call, - system call/.initial={pdflatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}, -% system call/.initial={pdflatex -interaction=batchmode -jobname '\image' '\texsource'; pdftops -eps \image.pdf}, force remake/.is if=tikzexternal@force@remake, force remake/.default=true, failed ref warnings for/.initial={\ref,\cite,\pageref}, @@ -277,17 +280,51 @@ up to date check/.is choice, up to date check/simple/.code={\def\tikzexternal@uptodate@mode{0}}, % md5 relies on \pdfmdfivesum of pdftex. It uses 'diff' as fallback if we do not have that command. - up to date check/md5/.code={% - \pgfutil@ifundefined{pdfmdfivesum}{% - \pgfkeys{/tikz/external/up to date check=diff}% - }{% - \def\tikzexternal@uptodate@mode{1}% - }% - }, + up to date check/md5/.code={\def\tikzexternal@uptodate@mode{1}}, up to date check/diff/.code={\def\tikzexternal@uptodate@mode{2}}, up to date check=md5, } +\expandafter\def\csname tikzexternal@driver@pgfsys-pdftex.def\endcsname{% + \pgfutil@IfUndefined{directlua}{% + \pgfkeyssetvalue{/tikz/external/system call}{% + pdflatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"% + }% + }{% + \pgfkeyssetvalue{/tikz/external/system call}{% + lualatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"% + }% + }% +}% +%-------------------------------------------------- +% \expandafter\def\csname tikzexternal@driver@pgfsys-dvipdfm.def\endcsname{% +% \pgfkeyssetvalue{/tikz/external/system call}{% +% latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"% +% && dvipdfm "\image".dvi % +% }% +% }% +%-------------------------------------------------- +\expandafter\def\csname tikzexternal@driver@pgfsys-xetex.def\endcsname{% + \pgfkeyssetvalue{/tikz/external/system call}{% + xelatex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"% + }% +}% +\expandafter\def\csname tikzexternal@driver@pgfsys-dvips.def\endcsname{% + \pgfkeyssetvalue{/tikz/external/system call}{% + latex \tikzexternalcheckshellescape -halt-on-error -interaction=batchmode -jobname "\image" "\texsource" % + && dvips -o "\image".ps "\image".dvi % + }% +}% + +% Auto-select a suitable default value fo 'system call': +\pgfutil@ifundefined{tikzexternal@driver@\pgfsysdriver}{% + % fallback. We do not know the driver here. + \csname tikzexternal@driver@pgfsys-pdftex.def\endcsname +}{% + \csname tikzexternal@driver@\pgfsysdriver\endcsname +}% + + \def\tikzsetfigurename#1{\pgfkeyssetvalue{/tikz/external/figure name}{#1}}% \def\tikzappendtofigurename#1{\pgfkeys{/tikz/external/figure name/.add={}{#1}}} @@ -472,6 +509,9 @@ % '\ref,\pageref,\cite'. % % For use in the aux lock handling only. +% +% ATTENTION: this is used if and only if *all* references are broken +% (because the .aux file is NOT read at all)! \def\tikzexternalauxlock@handleref{% \let\pgf@external@grab@refundefinedtrue=\pgf@external@grab@refundefinedtrue@orig % @@ -498,11 +538,18 @@ \fi \fi }% -\def\tikzexternalauxlock@handleref@repl#1{\pgfutil@ifnextchar[{\tikzexternalauxlock@handleref@repl@{#1}}{\tikzexternalauxlock@handleref@repl@{#1}[]}}% -\def\tikzexternalauxlock@handleref@repl@#1[#2]#3{% +\def\tikzexternalauxlock@handleref@repl#1{% + \pgfutil@ifnextchar[{\tikzexternalauxlock@handleref@gobble@opt{#1}}{\tikzexternalauxlock@handleref@repl@{#1}}% +}% +% silently discard the options. We merely need to generate a warning. +\def\tikzexternalauxlock@handleref@gobble@opt#1[#2]{% + % there may be more than one set of options (biblatex's \cite): + \pgfutil@ifnextchar[{\tikzexternalauxlock@handleref@gobble@opt{#1}}{\tikzexternalauxlock@handleref@repl@{#1}}% +}% +\def\tikzexternalauxlock@handleref@repl@#1#2{% \tikzifexternalizingcurrent{% % note that '#1' is NO control sequence! it is a protected string - \csname tikzexternalauxlock@handleref@orig@#1\endcsname{#3}% + \csname tikzexternalauxlock@handleref@orig@#1\endcsname{#2}% \begingroup \def\n{\pgfexternal@hat\pgfexternal@hat J}% \tikzexternal@assemble@systemcall{\pgfactualjobname}{\pgf@tempa}% @@ -510,7 +557,7 @@ \pgfexternalstorecommand{% \noexpand\begingroup \noexpand\toks0={\pgf@tempa}% - \noexpand\immediate\noexpand\write16{\tikzexternalauxlock@handleref@warning{#3}{\noexpand\the\noexpand\toks0}}% + \noexpand\immediate\noexpand\write16{\tikzexternalauxlock@handleref@warning{#2}{\noexpand\the\noexpand\toks0}}% \noexpand\G@refundefinedtrue \noexpand\endgroup }% @@ -927,14 +974,16 @@ % Will write something to the make file. If the makefile is not yet % opened, #1 will be written as soon as it *is* opened. \def\tikzexternalwritetomakefile#1{% - \pgfutil@ifundefined{tikzexternal@outmakefile}{% - \expandafter\gdef\expandafter\tikzexternal@outmakefile@pendingcommands\expandafter{% - \tikzexternal@outmakefile@pendingcommands + \if\tikzexternal@opmode5% mode='list and make' + \pgfutil@ifundefined{tikzexternal@outmakefile}{% + \expandafter\gdef\expandafter\tikzexternal@outmakefile@pendingcommands\expandafter{% + \tikzexternal@outmakefile@pendingcommands + \immediate\write\tikzexternal@outmakefile{#1}% + }% + }{% \immediate\write\tikzexternal@outmakefile{#1}% }% - }{% - \immediate\write\tikzexternal@outmakefile{#1}% - }% + \fi }% \def\tikzexternal@dep@file@name{} @@ -955,33 +1004,67 @@ % could be auto-generated: empty file name means "picture % won't be externalized". Skip it. \else - \edef\tikzpicturedependsonfile@name{#1.\tikzexternaldepext}% - \ifx\tikzexternal@dep@file@name\tikzpicturedependsonfile@name - % file is open and ready. - \else - % create new output file. - \pgfutil@ifundefined{tikzexternal@dep@file}{% - \begingroup - % this makes \tikzexternal@dep@file global: - \globaldefs=1 - % this gets round '\outer\newwrite' in plain TeX: - \csname newwrite\endcsname\tikzexternal@dep@file - \endgroup - }{}% - \ifx\tikzexternal@dep@file@name\pgfutil@empty - \else - % it is already open. Close it. - \immediate\closeout\tikzexternal@dep@file - \fi - \global\let\tikzexternal@dep@file@name=\tikzpicturedependsonfile@name - \immediate\openout\tikzexternal@dep@file=\tikzexternal@dep@file@name\relax - \fi - \immediate\write\tikzexternal@dep@file{#1\tikzexternalimgextension: #2}% + % if we encounter any dependencies while we externalize a + % picture, we have to write these things into the image's .dep + % file. + \tikzifexternalizingcurrent + {\tikzexternalfiledependsonfile@append@to@dep@file{#1}{#2}}% + {\tikzexternalfiledependsonfile@append@to@makefile{#1}{#2}}% \fi \endgroup }% \def\tikzexternalfiledependsonfile#1#2{}% NO-OP until \tikzexternalize has been called. +% sub-routine of \tikzexternalfiledependsonfile which appends stuff to +% the pictures .dep file. +% +% The file #1.dep is generated during the externalization of #1. If +% you change and/or overwrite it in any other context, its information +% might get lost (because #1 won't be regenerated). +% +% Consequently, this here has to be called if and only if #1 is about +% to be externalized. +\def\tikzexternalfiledependsonfile@append@to@dep@file#1#2{% + % write every dependency which is defined *INSIDE* of the current + % picture into the .dep file of the current picture: + \tikzexternalgetcurrentfilename\tikzpicturedependsonfile@name + \edef\tikzpicturedependsonfile@name{\tikzpicturedependsonfile@name.\tikzexternaldepext}% + %\edef\tikzpicturedependsonfile@name{#1.\tikzexternaldepext}% + \ifx\tikzexternal@dep@file@name\tikzpicturedependsonfile@name + % file is open and ready. + \else + % create new output file. + \pgfutil@ifundefined{tikzexternal@dep@file}{% + \begingroup + % this makes \tikzexternal@dep@file global: + \globaldefs=1 + % this gets round '\outer\newwrite' in plain TeX: + \csname newwrite\endcsname\tikzexternal@dep@file + \endgroup + }{}% + \ifx\tikzexternal@dep@file@name\pgfutil@empty + \else + % it is already open. Close it. + \immediate\closeout\tikzexternal@dep@file + \fi + \global\let\tikzexternal@dep@file@name=\tikzpicturedependsonfile@name + \immediate\openout\tikzexternal@dep@file=\tikzexternal@dep@file@name\relax + \fi + \immediate\write\tikzexternal@dep@file{#1\tikzexternalimgextension: #2}% +} + +% sub-routine of \tikzexternalfiledependsonfile which appends stuff to +% the makefile of the current \jobname . +% +% This is used for dependencies which are recomputed by every run of +% tex; we must not write them into #1.dep (for reasons explained in +% the documentation of +% \tikzexternalfiledependsonfile@append@to@dep@file) +\def\tikzexternalfiledependsonfile@append@to@makefile#1#2{% + \edef\tikzexternal@temp{#1\tikzexternalimgextension: #2}% + \expandafter\tikzexternalwritetomakefile\expandafter{\tikzexternal@temp}% +} + % Adds a dependency for the NEXT picture which is about to be % externalized. If we are currently inside of a picture, the % dependency is added for this current picture. @@ -1163,6 +1246,7 @@ \immediate\write16{A tikzpicture has been optimized away. Use '/tikz/external/optimize=false' to disable this.}% \fi \tikzexternal@closeenvironments + \pgfkeysvalueof{/tikz/external/optimize away text/.@cmd}tikzpicture\pgfeov% } % Processes tikzpicture normally; without any externalization. @@ -1203,10 +1287,25 @@ } \long\def\tikzexternal@forcegraphics@@#1{\tikzexternal@forcegraphics@@@}% \def\tikzexternal@forcegraphics@@@{% + \if5\tikzexternal@opmode + \let\tikz@refundefinedtrue@@=\G@refundefinedtrue + \gdef\G@refundefinedtrue{% + \tikz@refundefinedtrue@@ + \tikzexternal@forceremake@undefined@reference@handler + }% + \fi \expandafter\pgfincludeexternalgraphics\expandafter{\tikzexternal@curfilename}% + \if5\tikzexternal@opmode + \global\let\G@refundefinedtrue=\tikz@refundefinedtrue@@ + \fi \tikzexternal@closeenvironments } +\def\tikzexternal@forceremake@undefined@reference@handler{% + \immediate\write16{===== 'mode=list and make': encountered undefined reference in current picture. Adding dependency to FORCEREMAKE. Rerun make to update the picture.' ========^^J}% + \tikzpicturedependsonfile{FORCEREMAKE}% +}% + % Simply replaces the complete picture by some placeholder text. % It is used by 'mode=list only' to reduce runtime. \def\tikzexternal@listmodepicture{% @@ -1260,6 +1359,9 @@ \def\endtikzpicture{% \tikzexternal@origendpicture \pgf@externalend + % + \tikzexternal@ensure@nonempty@floats + % \let\tikzpicture=\tikzexternal@tikzpicture@replacement \let\endtikzpicture=\tikzexternal@origendpicture \iftikzexternal@optimize @@ -1271,6 +1373,21 @@ \tikzpicture }% +% If a sequence of floats containing JUST tikzpictures is +% externalized, this results in EMPTY floats. Empty floats, in turn, +% can confuse latex; it thinks it did something wrong. +% +% Solution: Avoid empty floats by writing junk into it. +% +% Note that this method is only invoked if \ifpgf@external@grabshipout +% is true and if the text is OUTSIDE of the original shipout routine. +% In other words: this text is being thrown away. +% +% see +% http://tex.stackexchange.com/questions/54625/why-is-fixltx2e-incompatible-with-tikzexternalize +\def\tikzexternal@ensure@nonempty@floats{% + tikzexternal: picture has been externalized. This text is required to avoid empty floats. +}% % 1. Discards the current picture in this document. % 2. Checks whether an image exists already. If that is the case: acquire it. @@ -1404,11 +1521,18 @@ \fi } +\pgfutil@IfUndefined{pdfmdfivesum}{% +}{% + % predefine to this value. This does only make sense for pdftex. + % note that the latex library for 'external' loads \usepackage{pdftexcmds} which \let's this to \pdf@mdfivesum: + \let\tikzexternal@mdfivesum=\pdfmdfivesum +}% + \long\def\tikzexternal@computemdfivesum#1{% \t@tikzexternal@tmpb={#1}% \edef\tikzexternal@temp{\the\t@tikzexternal@tmpb}% % \meaning results in a string of catcode 12 - which is expandable. - \edef\pgfretval{\pdfmdfivesum{\meaning\tikzexternal@temp}}% + \edef\pgfretval{\tikzexternal@mdfivesum{\meaning\tikzexternal@temp}}% } \long\def\tikzexternal@computemdfivesum@diff@fallback#1{% \t@tikzexternal@tmpb={#1}% @@ -1442,8 +1566,25 @@ \def\tikzexternal@check@uptodate@ext{.md5} +\def\tikzexternal@check@uptodate@mode@warn@fallback{% + \message{! Package tikz Warning: The key 'up to date check=md5' is impossible, there is no macro to compute MD5. Falling back to 'up to date check=diff'.}% + % + % warn only once: + \global\let\tikzexternal@check@uptodate@mode@warn@fallback=\relax +}% + % assigns the boolean \iftikzexternal@file@isuptodate \long\def\tikzexternal@check@uptodate@mode#1{% + \if1\tikzexternal@uptodate@mode + % up to date check=md5: + % check if we CAN compute MD5 sums: + \pgfutil@IfUndefined{tikzexternal@mdfivesum}{% + % we cannot compute md5 sums - fallback to diff. + \tikzexternal@check@uptodate@mode@warn@fallback + \def\tikzexternal@uptodate@mode{2}% + }{}% + \fi + % \ifcase\tikzexternal@uptodate@mode % up to date check=simple % nothing to do -- file existance is checked anyway. @@ -1530,7 +1671,7 @@ \xdef\pgf@tempa{\noexpand\pgf@findfile\pgfsys@imagesuffixlist:+{\tikzexternal@curfilename}}% \pgf@tempa \ifx\pgf@filename\pgfutil@empty% - \PackageError{tikz}{Sorry, the system call '#1' did NOT result in a usable output file '\tikzexternal@curfilename' (expected one of \pgfsys@imagesuffixlist). Please verify that you have enabled system calls. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18' or something like that. Or maybe the command simply failed? Error messages can be found in '\tikzexternal@curfilename.log'. If you continue now, I'll try to typeset the picture}% + \tikzerror{Sorry, the system call '#1' did NOT result in a usable output file '\tikzexternal@curfilename' (expected one of \pgfsys@imagesuffixlist). Please verify that you have enabled system calls. For pdflatex, this is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18' or something like that. Or maybe the command simply failed? Error messages can be found in '\tikzexternal@curfilename.log'. If you continue now, I'll try to typeset the picture}{}% \fi }% @@ -1540,18 +1681,18 @@ \begingroup \tikzexternal@assemble@systemcall{\pgfactualjobname}{\pgf@tempa}% \toks0=\expandafter{\pgf@tempa}% - \PackageError{tikz}{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname', but it seems there is no such image in the document!? + \tikzerror{Sorry, image externalization failed: the resulting image was EMPTY. I tried to externalize '\pgfactualjobname', but it seems there is no such image in the document!? \if\tikzexternal@opmode4 ^^J \space\space You are currently using 'mode=convert with system call'. This problem can happen if the image (or one of the images preceeding it) was declared inside of a \string\label{} (i.e. in the .aux file): 'convert with system call' has no access to the main aux file.^^J \space\space Possible solutions in this case:^^J -\space\space a) Try using 'mode=list and make',^^J -\space\space b) Issue the externalization command '\the\toks0' *manually* (also check the preceeding externalized images, perhaps the file name sequence is not correct).^^J +\space\space (a) Try using 'mode=list and make',^^J +\space\space (b) Issue the externalization command '\the\toks0' *manually* (also check the preceeding externalized images, perhaps the file name sequence is not correct).^^J \space\space Repeat: the resulting image was EMPTY, your attention is required \else \if\tikzexternal@opmode5 ^^J \space\space You are currently using 'mode=list and make'. Possible solutions:^^J -\space\space a) Try to delete `\tikzexternal@realjob.makefile'. Perhaps it is not up-to-date.^^J -\space\space b) Perhaps pictures are declared inside of \string\label{} and the .aux file is not up-to-date. Re-run latex, perhaps re-generate the graphics as well.^^J +\space\space (a) Try to delete `\tikzexternal@realjob.makefile'. Perhaps it is not up-to-date.^^J +\space\space (b) Perhaps pictures are declared inside of \string\label{} and the .aux file is not up-to-date. Re-run latex, perhaps re-generate the graphics as well.^^J \space\space Repeat: the resulting image was EMPTY, your attention is required \fi \fi}% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzlibraryexternal.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzlibraryexternal.code.tex index bcef9c1eda1..7e41bce2e56 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzlibraryexternal.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_tikzlibraryexternal.code.tex @@ -13,6 +13,11 @@ %%% This copy has been modified in the following ways: %%% - nested \input commands have been updated %%% +% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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: Di 25. Dez 18:14:20 CET 2012 %%% diff --git a/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_trig_format.code.tex b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_trig_format.code.tex new file mode 100644 index 00000000000..4937d000e0a --- /dev/null +++ b/Master/texmf-dist/tex/generic/pgfplots/oldpgfcompatib/pgfplotsoldpgfsupp_trig_format.code.tex @@ -0,0 +1,343 @@ +% This file contains patches to support 'trig format' +% +%%% This file is a copy of some part of PGF/Tikz. +%%% It has been copied here to provide : +%%% - compatibility with older PGF versions +%%% - availability of PGF contributions by Christian Feuersaenger +%%% which are necessary or helpful for pgfplots. +%%% +%%% This file contains just the functionality for trig format (written by Christian Feuersaenger). +%%% +% Support for the contents of this file will NOT be done by the PGF/TikZ team. +% Please contact the author and/or maintainer of pgfplots (Christian Feuersaenger) if you need assistance in conjunction +% 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. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\pgfkeys{ + /pgf/trig format/.is choice, + /pgf/trig format/deg/.code={\def\pgfmath@trig@format@choice{0}}, + /pgf/trig format/rad/.code={\def\pgfmath@trig@format@choice{1}}, + /pgf/trig format/deg, +} + +% Executes #1 if 'trig format=deg' and #2 otherwise. +\def\pgfmathiftrigonometricusesdeg#1#2{% + \if0\pgfmath@trig@format@choice + #1% + \else + #2% + \fi +}% + +\def\pgfmath@scale@rad@to@deg#1{% + #1=57.29577#1\relax% 57.29577 = 360/(2*pi) +}% +\def\pgfmath@scale@deg@to@rad#1{% + #1=3.14159#1% + \divide#1180\relax% +}% + +\def\pgfmathsin@#1{% + % Let #1 = a.b + % Then sin(#1) \approx (1-b)*sin(a) + b*sin(a+1) + % + \begingroup% + \expandafter\pgfmath@x#1pt\relax% + \if1\pgfmath@trig@format@choice + % trig format=rad + \pgfmath@scale@rad@to@deg\pgfmath@x + \fi + \advance\pgfmath@x-90pt\relax% + \afterassignment\pgfmath@gobbletilpgfmath@ + \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@ + \divide\c@pgfmath@counta360\relax% + \multiply\c@pgfmath@counta-360\relax% + \advance\pgfmath@x\c@pgfmath@counta pt\relax% + \ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi% + \ifdim\pgfmath@x<180pt\relax% + \else + \pgfmath@x-\pgfmath@x% + \advance\pgfmath@x360pt\relax% + \fi% + % Now 0 <= x < 179. So split x into integer and decimal... + % + \afterassignment\pgfmath@xa% + \expandafter\c@pgfmath@counta\the\pgfmath@x\relax% + % + % ...if #1 is an integer, don't do anything fancy. + \ifdim\pgfmath@xa=0pt% + \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt\relax% + \else% + \pgfmath@x-\pgfmath@xa% + \advance\pgfmath@x1pt\relax% + \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x% + \advance\c@pgfmath@counta1\relax% + \ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi% + \expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa% + \fi% + \pgfmath@returnone\pgfmath@x% + \endgroup +} + +% \pgfmathcos +% +% Calculate the cosine of #1 (in degrees). +% +\def\pgfmathcos@#1{% + % Let x = a.b + % Then cos(x) \approx (1-b)*cos(a) + b*cos(a+1) + % + \begingroup% + \expandafter\pgfmath@x#1pt\relax% + \if1\pgfmath@trig@format@choice + % trig format=rad + \pgfmath@scale@rad@to@deg\pgfmath@x + \fi + \afterassignment\pgfmath@gobbletilpgfmath@% + \expandafter\c@pgfmath@counta\the\pgfmath@x\relax\pgfmath@% + \divide\c@pgfmath@counta360\relax% + \multiply\c@pgfmath@counta-360\relax% + \advance\pgfmath@x\c@pgfmath@counta pt\relax% + \ifdim\pgfmath@x<0pt\relax\pgfmath@x-\pgfmath@x\fi% + \ifdim\pgfmath@x<180pt\relax% + \else% + \pgfmath@x-\pgfmath@x% + \advance\pgfmath@x360pt\relax% + \fi% + % Now 0 <= x < 179. So split x into integer and decimal... + % + \afterassignment\pgfmath@xa% + \expandafter\c@pgfmath@counta\the\pgfmath@x\relax% + % + % ...if #1 is an integer, don't do anything fancy. + \ifdim\pgfmath@xa=0pt% + \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname pt% + \else% + \pgfmath@x-\pgfmath@xa% + \advance\pgfmath@x1pt\relax% + \expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@x% + \advance\c@pgfmath@counta1\relax% + \ifnum\c@pgfmath@counta=181\relax\c@pgfmath@counta179\relax\fi% + \expandafter\advance\expandafter\pgfmath@x\csname pgfmath@cos@\the\c@pgfmath@counta\endcsname\pgfmath@xa% + \fi% + \pgfmath@returnone\pgfmath@x% + \endgroup% +} + +\def\pgfmathasin@#1{% + \begingroup% + \pgfmath@x=#1pt % + \pgfmath@xa\pgfmath@x% + \edef\pgf@temp{\pgf@sys@tonumber\pgfmath@x}% + % compute lossless '*1000' operation: + \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax + \pgfmath@x=\pgfmathresult pt % + \ifdim\pgfmath@x<0pt\relax% + \pgfmath@x-\pgfmath@x% + \fi% + \pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}% + \pgfmath@x=-\pgfmath@x + \advance\pgfmath@x90pt\relax% + \ifdim\pgfmath@xa<0pt\relax% + \pgfmath@x-\pgfmath@x% + \fi% + \if1\pgfmath@trig@format@choice + % trig format=rad + \pgfmath@scale@deg@to@rad\pgfmath@x + \fi + \pgfmath@returnone\pgfmath@x% + \endgroup% +} +\def\pgfmathacos@#1{% + \begingroup% + \pgfmath@x#1pt\relax% + \pgfmath@xa\pgfmath@x% + \edef\pgf@temp{\pgf@sys@tonumber\pgfmath@x}% + % compute lossless '*1000' operation: + \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax + \pgfmath@x=\pgfmathresult pt % + \ifdim\pgfmath@x<0pt\relax% + \pgfmath@x-\pgfmath@x% + \fi% + \pgfmath@table@lookup{\pgfmath@x}{pgfmath@acos@}{1001}% + \ifdim\pgfmath@xa<0pt\relax% + \pgfmath@x-\pgfmath@x% + \advance\pgfmath@x by180pt\relax% + \fi% + \if1\pgfmath@trig@format@choice + % trig format=rad + \pgfmath@scale@deg@to@rad\pgfmath@x + \fi + \pgfmath@returnone\pgfmath@x% + \endgroup% +} + +\def\pgfmathatan@#1{% + \begingroup% + \expandafter\pgfmath@x#1pt\relax% + \pgfmath@xa\pgfmath@x% + \ifdim\pgfmath@x<0pt\relax% + \pgfmath@x-\pgfmath@x% + \fi% + \pgfmath@xb\pgfmath@x% + \ifdim\pgfmath@x>1pt\relax% + \edef\pgfmath@temp{\pgfmath@tonumber{\pgfmath@x}}% + \pgfmathreciprocal@{\pgfmath@temp}% + \pgfmath@x\pgfmathresult pt\relax% + \fi% + % compute lossless '*1000' operation: + \edef\pgf@temp{\pgf@sys@tonumber\pgfmath@x}% + \expandafter\pgfmath@multiply@thousand\pgf@temp 000\relax + \pgfmath@x=\pgfmathresult pt % + \pgfmath@table@lookup{\pgfmath@x}{pgfmath@atan@}{1001}%xxx + \ifdim\pgfmath@xb>1pt\relax% + \pgfmath@x=-\pgfmath@x% + \advance\pgfmath@x90pt% + \fi% + \ifdim\pgfmath@xa<0pt\relax% + \pgfmath@x-\pgfmath@x% + \fi% + \if1\pgfmath@trig@format@choice + % trig format=rad + \pgfmath@scale@deg@to@rad\pgfmath@x + \fi + \pgfmath@returnone\pgfmath@x% + \endgroup% +} + +\expandafter\def\csname pgfmathatan2@\endcsname#1#2{% + % Note: first parameter is y (!), second is x (!) + \begingroup% + \pgfmath@y=#1pt\relax% + \ifdim\pgfmath@y<0pt\relax% + \pgfmath@y=-\pgfmath@y% + \fi% + \ifdim\pgfmath@y<0.001pt\relax% + \ifdim#2pt<0pt\relax% + \pgfmath@x=-180pt\relax% + \else% + \ifdim#2pt>0pt\relax% + \pgfmath@x=0pt\relax% + \else% + \ifdim#1pt<0pt% + \pgfmath@x=-90pt\relax% + \else% + \pgfmath@x=90pt\relax% + \fi% + \fi% + \fi% + \else% + \pgfmathabs@{#1}\let\pgfmath@tempa\pgfmathresult% + \pgfmathabs@{#2}\let\pgfmath@tempb\pgfmathresult% + \ifdim\pgfmath@tempa pt>\pgfmath@tempb pt% + \pgfmathdivide@{#2}{\pgfmath@tempa}% + \expandafter\pgfmathatan@\expandafter{\pgfmathresult}% + \pgfmath@x=90pt% + \advance\pgfmath@x by-\pgfmathresult pt\relax% + \else% + \pgfmathdivide@{\pgfmath@tempa}{#2}% + \expandafter\pgfmathatan@\expandafter{\pgfmathresult}% + \pgfmath@x=\pgfmathresult pt\relax% + \ifdim#2pt<0pt% + \advance\pgfmath@x by180pt\relax% + \fi% + \fi% + \ifdim#1pt<0pt\relax% + \pgfmath@x=-\pgfmath@x% + \fi% + \fi% + \if1\pgfmath@trig@format@choice + % trig format=rad + \pgfmath@scale@deg@to@rad\pgfmath@x + \fi + \pgfmath@returnone\pgfmath@x% + \endgroup% +} + +% FPU: + + +\let\pgfmath@basic@sin@=\pgfmathsin@ +\let\pgfmath@basic@cos@=\pgfmathcos@ +\let\pgfmath@basic@tan@=\pgfmathtan@ +\let\pgfmath@basic@atan@=\pgfmathatan@ +\let\pgfmath@basic@asin@=\pgfmathasin@ +\let\pgfmath@basic@acos@=\pgfmathacos@ +\let\pgfmath@basic@cot@=\pgfmathcot@ +\let\pgfmath@basic@sec@=\pgfmathsec@ +\let\pgfmath@basic@cosec@=\pgfmathcosec@ + +% Computes #1(#2) where #1 is a trigonometric function, i.e. +% #1(#2) = #1( #2 + r*360 ) +% +% #1 is a one-argument macro which assigns \pgfmathresult. +\def\pgfmathfloatTRIG@#1#2{% + \if0\pgfmath@trig@format@choice + % trig format=deg + \expandafter\ifx\csname pgfmathfloatTRIG@NUM\endcsname\relax% + % Lazy evaluation: + \pgfmathfloatcreate{1}{3.6}{2}% + \global\let\pgfmathfloatTRIG@NUM=\pgfmathresult + \pgfmathfloatcreate{1}{2.77777777777778}{-3}% + \global\let\pgfmathfloatTRIG@NUM@INV=\pgfmathresult + \fi + \pgfmathfloatmodknowsinverse@{#2}{\pgfmathfloatTRIG@NUM}{\pgfmathfloatTRIG@NUM@INV}% + \else + % trig format=rad + \expandafter\ifx\csname pgfmathfloatTRIG@rad@NUM\endcsname\relax% + % Lazy evaluation: + \pgfmathfloatcreate{1}{6.28318530717959}{0}% + \global\let\pgfmathfloatTRIG@rad@NUM=\pgfmathresult + \pgfmathfloatcreate{1}{1.59154943091895}{-1}% + \global\let\pgfmathfloatTRIG@rad@NUM@INV=\pgfmathresult + \fi + \pgfmathfloatmodknowsinverse@{#2}{\pgfmathfloatTRIG@rad@NUM}{\pgfmathfloatTRIG@rad@NUM@INV}% + \fi + \pgfmathfloattofixed@{\pgfmathresult}% + \expandafter#1\expandafter{\pgfmathresult}% + \pgfmathfloatparsenumber{\pgfmathresult}% +}% + +\def\pgfmathfloatsin@#1{\pgfmathfloatTRIG@\pgfmath@basic@sin@{#1}} +\let\pgfmathfloatsin=\pgfmathfloatsin@ +\def\pgfmathfloatcos@#1{\pgfmathfloatTRIG@\pgfmath@basic@cos@{#1}} +\let\pgfmathfloatcos=\pgfmathfloatcos@ +\def\pgfmathfloatsec@#1{\pgfmathfloatTRIG@\pgfmath@basic@cos@{#1}\pgfmathfloatreciprocal@{\pgfmathresult}} +\let\pgfmathfloatsec=\pgfmathfloatsec@ +\def\pgfmathfloatcosec@#1{\pgfmathfloatTRIG@\pgfmath@basic@sin@{#1}\pgfmathfloatreciprocal@{\pgfmathresult}} +\let\pgfmathfloatcosec=\pgfmathfloatcosec@ + +\def\pgfmathfloatatan@#1{% + \begingroup + \expandafter\ifx\csname pgfmathfloatatan@TMP\endcsname\relax% + \pgfmathfloatcreate{1}{1.6}{4}% + \global\let\pgfmathfloatatan@TMP=\pgfmathresult + \pgfmathfloatcreate{2}{1.6}{4}% + \global\let\pgfmathfloatatan@TMPB=\pgfmathresult + \fi + \pgfmathfloatgreaterthan@{#1}{\pgfmathfloatatan@TMP}% + \ifpgfmathfloatcomparison + \pgfmathiftrigonometricusesdeg{% + \pgfmathfloatcreate{1}{9.0}{1}% + }{% + \pgfmathfloatcreate{1}{1.570796326794}{0}% + }% + \else + \pgfmathfloatlessthan{#1}{\pgfmathfloatatan@TMPB}% + \ifpgfmathfloatcomparison + \pgfmathiftrigonometricusesdeg{% + \pgfmathfloatcreate{2}{9.0}{1}% + }{% + \pgfmathfloatcreate{2}{1.570796326794}{0}% + }% + \else + \pgfmathfloattofixed@{#1}% + \expandafter\pgfmath@basic@atan@\expandafter{\pgfmathresult}% + \pgfmathfloatparsenumber{\pgfmathresult}% + \fi + \fi + \pgfmath@smuggleone\pgfmathresult + \endgroup +}% +\endinput diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbetween.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbetween.code.tex index bf2ebd6b64d..2b1eebdcb58 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbetween.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/pgflibraryfillbetween.code.tex @@ -48,7 +48,8 @@ % ... % end % - % 'begin' has no arguments. + % 'begin' has one arguments: the number of following single + % streams. /pgf/fill between/result stream/begin/.code=,% % % 'next ready' has macro arguments, but the macro \pgfretval @@ -108,15 +109,15 @@ \ifx#3\pgfutil@empty \pgfpathfillbetween@warning{second}% \else - \pgfpathfillbetween@invoke{result stream/begin}% % \ifpgfpathfillbetween@split \pgfpathfillbetween@compute@splitted{#2}{#3}% \else + \pgfkeys{/pgf/fill between/result stream/begin=1}% \pgfpathfillbetween@compute{#2}{#3}% \pgfpathfillbetween@invoke{result stream/next ready}% + \pgfpathfillbetween@invoke{result stream/end}% \fi - \pgfpathfillbetween@invoke{result stream/end}% \fi \fi % @@ -132,19 +133,84 @@ % 'lineto'. This excludes the first moveto. % % The motivation is that fillbetween should ignore inner movetos. +% +% UPDATE: it turned out that replacing inner movetos is necessary, but +% not sufficient. Now, this macro does more: +% - it replaces isolated inner movetos by lineto +% - if two successive inner movetos occur, it throws away the first +% one replaces the second by lineto +% - if one or more trailing movetos occur in a path, these will be +% thrown away. \def\pgfpathfillbetween@connect@inner@movetos#1{% \expandafter\pgfpathfillbetween@connect@inner@movetos@#1\pgf@stop% \let#1=\pgfretval } \def\pgfpathfillbetween@connect@inner@movetos@#1#2\pgf@stop{% \ifx#1\pgfsyssoftpath@movetotoken - \pgfutilstrreplace{\pgfsyssoftpath@movetotoken}{\pgfsyssoftpath@linetotoken}{#2}% + \pgfpathfillbetween@connect@inner@movetos@@{#2}% \expandafter\def\expandafter\pgfretval\expandafter{\expandafter\pgfsyssoftpath@movetotoken\pgfretval}% \else - \pgfutilstrreplace{\pgfsyssoftpath@movetotoken}{\pgfsyssoftpath@linetotoken}{#1#2}% + \pgfpathfillbetween@connect@inner@movetos@@{#1#2}% \fi }% +% Substitute all movetotokens by linetotokens. +% +% In addition, it should *deduplicate* movetos, i.e. +% "moveto{<x>}{<y}moveto{<x2>}{<y2>}" +% -> "moveto{<x2>}{<y2>}" +% +% and: trailing movetos should be discarded. +\def\pgfpathfillbetween@connect@inner@movetos@@#1{% + % this implementation is derived from \pgfutilstrreplace - it does + % almost the same as + % s/\pgfsyssoftpath@movetotoken/pgfsyssoftpath@linetotoken/g + % -> but with the extra additions of deduplication and trailing + % moveto removal. + \def\pgfretval{}% + \pgfpathfillbetween@search@and@replace@loop{#1}% +} +\def\pgfpathfillbetween@connect@inner@moveto@foundit@#1\pgfsyssoftpath@movetotoken#2#3#4{% + \ifx#4\pgf@EOI + % ah - a trailing moveto. + % In this case, we remember all until the moveto, but we omit + % the trailing moveto and its arguments. + \expandafter\def\expandafter\pgfretval\expandafter{\pgfretval #1}% + % + % ... and stop searching. + \let\pgf@loc@TMPa\relax + \else + \ifx#4\pgfsyssoftpath@movetotoken + % DEDUPLICATE: we have at least two successive movetos. + % silently skip the first moveto and its arguments and go on + % with the second moveto. + \def\pgf@loc@TMPa{\pgfpathfillbetween@connect@inner@moveto@foundit@#1\pgfsyssoftpath@movetotoken}% + \else + % substitute it by a lineto. + \expandafter\def\expandafter\pgfretval\expandafter{\pgfretval #1\pgfsyssoftpath@linetotoken{#2}{#3}}% + % + % ... continue the standard loop which skips over paths + % until the next moveto. Remember to re-insert '#4': + \def\pgf@loc@TMPa{\pgfpathfillbetween@connect@inner@moveto@foundit@@ #4}% + \fi + \fi + \pgf@loc@TMPa +}% +\def\pgfpathfillbetween@connect@inner@moveto@foundit@@#1\pgf@EOI{% + \pgfpathfillbetween@search@and@replace@loop{#1}% +}% + +\def\pgfpathfillbetween@search@and@replace@loop#1{% + \pgfutil@in@{\pgfsyssoftpath@movetotoken}{#1}% + \ifpgfutil@in@ + \def\pgf@loc@TMPa{\pgfpathfillbetween@connect@inner@moveto@foundit@ #1\pgf@EOI}% + \else + \expandafter\def\expandafter\pgfretval\expandafter{\pgfretval #1}% + \let\pgf@loc@TMPa=\relax + \fi + \pgf@loc@TMPa +}% + \def\pgfpathfillbetween@invoke#1{\pgfkeysvalueof{/pgf/fill between/#1/.@cmd}\pgfeov} \def\pgfpathfillbetween@replace@first@moveto#1#2\pgf@stop{% @@ -216,6 +282,7 @@ \pgferror{Illegal internal state encountered: the number segments induced by the intersection points of the two paths DIFFER between the first and the second path: first path has \pgfpathfilled@a@segments\space whereas the second has \pgfpathfilled@b@segments.}% \fi % + \pgfkeys{/pgf/fill between/result stream/begin=\pgfpathfilled@a@segments}% % Recombine the pairs of segments (a_i, b_i), i = 0,..., N-1 in a % filled way: \def\c@pgfpathfilled@counter{0}% @@ -230,6 +297,7 @@ % \pgfutil@advancestringcounter\c@pgfpathfilled@counter \repeatpgfmathloop + \pgfpathfillbetween@invoke{result stream/end}% } \def\pgfpathfillbetween@compute#1#2{% @@ -307,8 +375,11 @@ % % #1 a macro containing a softpath (i.e. something returned by % \pgfgetpath) +% +% SIDE--EFFECT: defines \pgfpointlastofsetpath to be the last point of path #1 \def\pgfsetpathandBB#1{% - \expandafter\pgfsetpath@protocolsizes@loop#1\pgf@stop + \let\pgfpointlastofsetpath=\pgfutil@empty + \expandafter\pgfsetpath@loop#1\pgf@stop % \pgfsetpath{#1}% }% @@ -318,8 +389,10 @@ % % #1 a macro containing a softpath (i.e. something returned by % \pgfgetpath) +% SIDE--EFFECT: defines \pgfpointlastofsetpath to be the last point of path #1 \def\pgfaddpathandBB#1{% - \expandafter\pgfsetpath@protocolsizes@loop#1\pgf@stop + \let\pgfpointlastofsetpath=\pgfutil@empty + \expandafter\pgfsetpath@loop#1\pgf@stop \pgfaddpath#1% } @@ -410,12 +483,14 @@ }% } -\def\pgfsetpath@protocolsizes@loop#1{% +% Accumulates the path's bounding box, the last moveto, and the last +% coord. +\def\pgfsetpath@loop#1{% \ifx#1\pgf@stop% \let\pgfsetpathBB@protocolsizesnext=\relax% \else% \ifx#1\pgfsyssoftpath@movetotoken% - \let\pgfsetpathBB@protocolsizesnext=\pgfsetpathBB@protocolsizestoken@simple% + \let\pgfsetpathBB@protocolsizesnext=\pgfsetpathBB@protocolsizestoken@moveto% \else% \ifx#1\pgfsyssoftpath@linetotoken% \let\pgfsetpathBB@protocolsizesnext=\pgfsetpathBB@protocolsizestoken@simple% @@ -436,16 +511,27 @@ \fi% \pgfsetpathBB@protocolsizesnext} +\def\pgfsetpathBB@protocol@lastmoveto#1#2{% + \gdef\pgfsyssoftpath@lastmoveto{{#1}{#2}}% +} + +\def\pgfsetpathBB@protocolsizestoken@moveto#1#2{% + % required for --cycle, among others: + \pgfsetpathBB@protocol@lastmoveto{#1}{#2}% + \pgfsetpathBB@protocolsizestoken@simple{#1}{#2}% +} \def\pgfsetpathBB@protocolsizestoken@simple#1#2{% + \def\pgfpointlastofsetpath{\pgfqpoint{#1}{#2}}% \pgf@protocolsizes{#1}{#2}% - \pgfsetpath@protocolsizes@loop% + \pgfsetpath@loop% } \def\pgfsetpathBB@protocolsizestoken@curveto#1#2\pgfsyssoftpath@curvetosupportbtoken#3#4\pgfsyssoftpath@curvetotoken#5#6{% + \def\pgfpointlastofsetpath{\pgfqpoint{#5}{#6}}% \pgf@protocolsizes{#1}{#2}% \pgf@protocolsizes{#3}{#4}% \pgf@protocolsizes{#5}{#6}% - \pgfsetpath@protocolsizes@loop + \pgfsetpath@loop } \def\pgfsetpathBB@protocolsizestoken@rect#1#2\pgfsyssoftpath@rectsizetoken#3#4{% @@ -455,7 +541,7 @@ \pgf@ya=#2\relax% \advance\pgf@ya by#4\relax% \pgf@protocolsizes{\pgf@xa}{\pgf@ya}% - \pgfsetpath@protocolsizes@loop + \pgfsetpath@loop }% % Defines \pgfretval to be the reversed path of #1. @@ -606,7 +692,7 @@ % the current scope), this command computes the intersection segments % for one of the input arguments. % -% On output, \pgfretval contains the number of computed segments. The +% On output, both \pgfretval and \pgfintersectionsegments contain the number of computed segments. The % segments as such can be accessed via \pgfgetintersectionsegmentpath. % % #1 : should be '1' if the FIRST argument of @@ -689,6 +775,7 @@ \pgfutil@advancestringcounter\c@pgf@path@result% \let\pgfretval=\c@pgf@path@result% \fi + \let\pgfintersectionsegments=\pgfretval }% % Defines \pgfretval to contain the desired path segment as softpath. @@ -701,12 +788,15 @@ % \pgfintersectionofpaths are requested or '2' if results for the % SECOND path are requested (compare \pgfcomputeintersectionsegments). % #2: the segment index (a number 0<= #2 < numbersegments). -% The number of segments is returned by -% \pgfcomputeintersectionsegments. +% The number of segments is \pgfintersectionsegments \def\pgfgetintersectionsegmentpath#1#2{% \pgfcomputeintersectionsegments@set@src{#1}% + \pgfmathparse{#2}% \afterassignment\pgfcomputeintersectionsegments@set@src@gobble - \c@pgf@countc=#2\relax% + \c@pgf@countc=\pgfmathresult\relax% + \ifnum\c@pgf@countc<0 + \advance\c@pgf@countc by \pgfintersectionsegments\relax + \fi \expandafter\let\expandafter\pgfretval\csname pgf@intersect@path@split@\pgf@insert@intersections@src @\the\c@pgf@countc\endcsname \ifx\pgfretval\relax \pgferror{There is no intersection segment '#2' in path '#1'}% diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecorations.softclip.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecorations.softclip.code.tex index 98fca71c047..7544d66d313 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecorations.softclip.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibrarydecorations.softclip.code.tex @@ -54,7 +54,13 @@ % or % soft clip={A} % where 'A' is defined using 'name path=A' somewhere - /pgf/decoration/soft clip path/.initial=, + /pgf/decoration/soft clip path/.code={% + % FIXME : I would rather NOT evaluate path arguments in this + % context! Who knows how people set keys!? But alas, we cannot + % evaluate late because the CM is reset while working on + % decorations ... (see below) + \tikzlibsoftclip@setkey{\tikzlibsoftclip@setkey@assign}#1\pgf@stop + }, /pgf/decoration/every soft clipped path/.style={},% } @@ -69,9 +75,14 @@ \state{replace}[width=\pgfdecoratedpathlength, persistent precomputation={% - \pgfkeysgetvalue{/pgf/decoration/soft clip path}\pgf@temp - \def\tikz@marshal{\tikzlibsoftclip@setkey{\tikzlibsoftclip@setkey@assign}}% - \expandafter\tikz@marshal\pgf@temp\pgf@stop + % This here is an earlier draft... but alas, the + % transformation matrix has been reset in this context, + % and we cannot define the clip path dynamically here. + % I left it to document that. + % + %\pgfkeysgetvalue{/pgf/decoration/soft clip path}\pgf@temp + %\def\tikz@marshal{\tikzlibsoftclip@setkey{\tikzlibsoftclip@setkey@assign}}% + %\expandafter\tikz@marshal\pgf@temp\pgf@stop } ]{% \ifx\pgf@decoration@soft@clip\pgfutil@empty @@ -142,6 +153,7 @@ \pgfsetpath#2% }% % +%\message{... num intersections = \pgfintersectionsolutions^^J}% % \ifnum\pgfintersectionsolutions=0 % \if1\b@pgffill@is@outside@clip @@ -312,7 +324,10 @@ \pgf@getpathsizes\pgf@interrupt@pathsizes % we only need the path size here: \pgf@relevantforpicturesizefalse - \expandafter\pgfsetpath@protocolsizes@loop#1\pgf@stop + % + % FIXME : CODE CLEANUP NEEDED + \def\pgfsetpathBB@protocol@lastmoveto##1##2{}% + \expandafter\pgfsetpath@loop#1\pgf@stop \pgfpointdiff {\pgfqpoint\pgf@pathminx\pgf@pathminy}% {\pgfqpoint\pgf@pathmaxx\pgf@pathmaxy}% diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillbetween.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillbetween.code.tex index 6446027318f..8f60ef1e6b9 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillbetween.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfcontrib/tikzlibraryfillbetween.code.tex @@ -86,8 +86,10 @@ \immediate\write16{Package pgfplots: loading complementary 'name path' implementation for your pgf version...} \let\tikz@key@name@path=\tikz@key@name@path@new \fi + % ------------------------------------------------------------ +\newif\iftikzfillbetween@optimize@name@intersections \pgfkeys{% /tikz/fill between/of/.code=\tikzlibraryfillbetween@parse#1\pgf@stop, @@ -96,6 +98,12 @@ /tikz/fill between/every segment/.style={}, /tikz/fill between/every odd segment/.style={}, /tikz/fill between/every even segment/.style={}, + /tikz/fill between/every last segment/.style={}, + % + % Allows to add path instructions *after* the segment. + % If you want to add some *before* the segment, you can rely on + % 'every segment no 0/.style={ ... suitable tikz options ... }' + /tikz/fill between/path after segment/.initial={}, % % soft clip={(axis cs:0,0) rectangle (axis cs:1,1)} /tikz/fill between/soft clip/.style={ @@ -109,6 +117,10 @@ /tikz/fill between/@draw style/.style={ /pgf/fill between/result stream/begin/.code={% \gdef\tikzsegmentindex{0}% + \xdef\tikzsegmentindices{##1}% + \c@pgf@countc=##1 % + \advance\c@pgf@countc by-1 % + \xdef\tikzsegmentlastindex{\the\c@pgf@countc}% },% /pgf/fill between/result stream/next ready/.code={% \let\pgflibraryfill@path=\pgfretval @@ -127,13 +139,30 @@ }% \fi % + \ifnum\tikzsegmentindex=\tikzsegmentlastindex\relax + \expandafter\def\expandafter\pgfplots@loc@TMPa\expandafter{\pgfplots@loc@TMPa + /tikz/fill between/every last segment, + }% + \fi + % \expandafter\fill\expandafter[\pgfplots@loc@TMPa] - \pgfextra \pgfsetpathandBB{\pgflibraryfill@path}\endpgfextra;% + \pgfextra + \pgfsetpathandBB{\pgflibraryfill@path}% + \pgfkeysgetvalue{/tikz/fill between/path after segment}\tikz@fillbetween@post@segment + \expandafter + \endpgfextra + \tikz@fillbetween@post@segment + ;% \pgfplotsutil@advancestringcounter@global\tikzsegmentindex },% /pgf/fill between/result stream/end/.code=,% }, /tikz/fill between/.search also={/pgf/fill between,/pgfplots}, + /tikz/fill between/optimize name intersections/.is if=tikzfillbetween@optimize@name@intersections, + % + % FIXME : this optimization needs much more work... I believe it + % would be stable enough, but it covers too few cases. + %/tikz/fill between/optimize name intersections=true, % % % @@ -252,6 +281,12 @@ \expandafter\let\expandafter\tikz@fillbetween@b@path \csname tikz@intersect@path@name@\tikz@fillbetween@b\endcsname % + \iftikzfillbetween@optimize@name@intersections + \ifpgfpathfillbetween@split + \tikzfillbetween@optimize@name@intersections\tikz@fillbetween@a\tikz@fillbetween@b + \fi + \fi + % \pgfpathfillbetween{\tikz@fillbetween@a@path}{\tikz@fillbetween@b@path}% }% @@ -330,18 +365,27 @@ % compute intersections using the PGF intersection lib... \pgfintersectionofpaths{\pgfsetpath\tikz@path@segments@A}{\pgfsetpath\tikz@path@segments@B}% % - % ... and compute the intersection *segments* for both input - % paths... - \pgfcomputeintersectionsegments1% - \pgfcomputeintersectionsegments2% + \ifnum\pgfintersectionsolutions=0 % + \pgferror{The argument of 'sequence' requests an intersection segment -- but the two input paths do not intersect. Please use A* or B* to select the whole path}% + \def\b@tikz@select@all{1}% + \else + % + % ... and compute the intersection *segments* for both input + % paths... + \pgfcomputeintersectionsegments1% + \pgfcomputeintersectionsegments2% + \fi \let\tikz@ensurehascomputedintersection=\relax }% % \pgfkeysgetvalue{/tikz/segments/sequence}\tikz@sequence % \def\b@tikz@isect@nextismoveto{1}% + \let\pgfpointlastofsetpath=\pgfutil@empty \expandafter\tikzpathintersectionsegments@parse@loop\tikz@sequence\pgf@stop + \pgfmath@smuggleone\pgfpointlastofsetpath \endgroup + \tikz@make@last@position{\pgfpointlastofsetpath}% }% \def\tikzpathintersectionsegments@parse@loop{% @@ -354,10 +398,18 @@ \pgfutil@ifnextchar B{% \tikz@isect@p@next }{% - \pgfutil@ifnextchar\pgf@stop{% - \tikz@isect@finish + \pgfutil@ifnextchar L{% + \tikz@isect@p@next }{% - \tikz@isect@p@error + \pgfutil@ifnextchar R{% + \tikz@isect@p@next + }{% + \pgfutil@ifnextchar\pgf@stop{% + \tikz@isect@finish + }{% + \tikz@isect@p@error + }% + }% }% }% }% @@ -376,12 +428,25 @@ } \def\tikz@isect@p@next#1#2{% + \def\tikz@temp{#2}% + \def\tikz@@temp{-}% + \ifx\tikz@@temp\tikz@temp + % also accept minus signs without curly braces, i.e. + % L-2 instead of L{-2} + \def\tikz@next{\tikz@isect@p@next@{#1}{#2}}% + \else + \def\tikz@next{\tikz@isect@p@next@{#1}{#2}{}}% + \fi + \tikz@next +}% +\def\tikz@isect@p@next@#1#2#3{% \pgfutil@ifnextchar[{% - \tikz@isect@p@next@opt{#1}{#2}% + \tikz@isect@p@next@opt{#1}{#2#3}% }{% - \tikz@isect@p@next@opt{#1}{#2}[]% + \tikz@isect@p@next@opt{#1}{#2#3}[]% }% }% + \def\tikz@isect@p@next@opt#1#2[#3]{% \begingroup % @@ -392,8 +457,38 @@ \pgfqkeys{/tikz/segments}{#3}% \fi % + \def\tikz@indexshift{}% + \if A#1% + % FIRST function (0-based index) + \def\tikz@path{1}% + \def\tikz@path@ab{A}% + \else + \if B#1% + % SECOND function (0-based index) + \def\tikz@path{2}% + \def\tikz@path@ab{B}% + \else + \if L#1% + % FIRST function (1-based index) + \def\tikz@path{1}% + \def\tikz@indexshift{-1}% + \def\tikz@path@ab{A}% + \else + \if R#1% + % SECOND function (1-based index) + \def\tikz@path{2}% + \def\tikz@indexshift{-1}% + \def\tikz@path@ab{B}% + \else + \def\tikz@path{}% + \pgferror{The argument of 'sequence' has an unexpected format near '#1#2': expected L#2 or R#2}% + \fi + \fi + \fi + \fi + % % parse arguments: - \edef\pgfmathresult{#2}% + \def\pgfmathresult{#2}% \def\tikz@temp{*}% \ifx\pgfmathresult\tikz@temp \def\b@tikz@select@all{1}% @@ -402,27 +497,29 @@ \tikz@ensurehascomputedintersection \pgfmathparse{round(#2)}% \let\tikz@index=\pgfmathresult - \fi - % - \if A#1% - \def\tikz@path{1}% - \else - \if B#1% - \def\tikz@path{2}% + \ifx\tikz@indexshift\pgfutil@empty \else - \def\tikz@path{}% - \pgferror{The argument of 'sequence' has an unexpected format near '#1#2': expected A#2 or B#2}% + \afterassignment\pgfutil@gobble@until@relax + \c@pgf@countc=\tikz@index\relax + \ifnum\c@pgf@countc<0 \else + % the index shift is ONLY for positive numbers: we + % want to start indexing at 1, not at 0 -- and the + % negative ones start at -1 anyway. + \advance\c@pgf@countc by\tikz@indexshift\relax + \edef\tikz@index{\the\c@pgf@countc}% + \fi \fi \fi % % % PROCESS IT: \ifx\tikz@path\pgfutil@empty + \let\pgfpointlastofsetpath=\pgfutil@empty \else \if1\b@tikz@select@all% % ok... select the *entire* path. % #1 = A|B : - \expandafter\let\expandafter\pgfretval\csname tikz@path@segments@#1\endcsname + \expandafter\let\expandafter\pgfretval\csname tikz@path@segments@\tikz@path@ab\endcsname \else \pgfgetintersectionsegmentpath{\tikz@path}{\tikz@index}% \fi @@ -434,9 +531,47 @@ \fi \pgfaddpathandBB\pgfretval \fi + \pgfmath@smuggleone\pgfpointlastofsetpath \endgroup \def\b@tikz@isect@nextismoveto{1}% \tikzpathintersectionsegments@parse@loop }% +\def\tikzfillbetween@optimize@name@intersections#1#2{% + \edef\tikzfillbetween@precached@intersectionofpaths@A{#1}% + \edef\tikzfillbetween@precached@intersectionofpaths@B{#2}% + \pgfkeys{% + /tikz/name intersections/.add code={% + \let\pgfintersectionofpaths=\tikzfillbetween@precached@intersectionofpaths + }{% + \let\pgfintersectionofpaths=\pgfintersectionofpaths@orig + } + }% +}% + +\let\pgfintersectionofpaths@orig=\pgfintersectionofpaths + +\def\tikzfillbetween@precached@intersectionofpaths@log{% + \immediate\write-1{fill between: outcome of 'name intersections={of=\tikz@intersect@path@a\space and \tikz@intersect@path@b}' has been computed from available information of fill between}% +} +\def\tikzfillbetween@precached@intersectionofpaths#1#2{% + \def\pgf@loc@TMPa{0}% + \ifx\tikz@intersect@path@a\tikzfillbetween@precached@intersectionofpaths@A + \ifx\tikz@intersect@path@b\tikzfillbetween@precached@intersectionofpaths@B + \def\pgf@loc@TMPa{1}% + \fi + \fi + \ifx\tikz@intersect@path@b\tikzfillbetween@precached@intersectionofpaths@A + \ifx\tikz@intersect@path@a\tikzfillbetween@precached@intersectionofpaths@B + \def\pgf@loc@TMPa{1}% + \fi + \fi + % + \if1\pgf@loc@TMPa + \tikzfillbetween@precached@intersectionofpaths@log + \relax + \else + \pgfintersectionofpaths@orig{#1}{#2}% + \fi +}% \endinput diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex index 38c2f5c3578..bbf7d10db86 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplots.code.tex @@ -58,6 +58,10 @@ \newif\ifpgfplots@scanline@verbose \newif\ifpgfplots@plot@graphics@autoadjustaxis \newif\ifpgfplots@scaleuniformly@warning +\newif\ifpgfplots@hide@obscured@xtick +\newif\ifpgfplots@hide@obscured@ytick +\newif\ifpgfplots@hide@obscured@ztick +\newif\ifpgfplots@enable@tick@line@clipping \newcount\pgfplots@numplots \newdimen\pgfplots@xmin@reg \newdimen\pgfplots@xmax@reg @@ -127,6 +131,7 @@ \newif\ifpgfplotsplothandlermesh@internaldepth \newif\ifpgfplotsplothandlermesh@hide@refined@edges \newif\ifpgfplots@has@cell@picture +\newif\ifpgfplots@substitute@pgfpoint \newif\ifpgfplots@collect@firstplot@astick \newif\ifpgfplots@units@use @@ -611,6 +616,11 @@ /pgfplots/every axis plot/.belongs to family=/pgfplots/style commands, /pgfplots/every axis plot post/.style={}, /pgfplots/every axis plot post/.append code={\pgfplotsdeprecatedstylecheck{/tikz/every axis plot}}, + /pgfplots/trig format plots/.is choice, + /pgfplots/trig format plots/deg/.code={\def\pgfplots@set@trig@format@plots{\pgfkeys{/pgf/trig format=deg}}},% + /pgfplots/trig format plots/rad/.code={\def\pgfplots@set@trig@format@plots{\pgfkeys{/pgf/trig format=rad}}},% + /pgfplots/trig format plots/default/.code={\let\pgfplots@set@trig@format@plots=\relax},% + /pgfplots/trig format plots/default, /pgfplots/no marks/.style={/pgfplots/no markers}, /pgfplots/no markers/.style={/pgfplots/every axis plot post/.append style={mark=none}}, /pgfplots/every axis label/.style={}, @@ -774,6 +784,7 @@ /pgfplots/every x tick label/.belongs to family=/pgfplots/style commands, /pgfplots/every extra x tick/.style={ /pgfplots/log identify minor tick positions=true, + /pgfplots/hide obscured x ticks=false, }, /pgfplots/every extra x tick/.append code={\pgfplotsdeprecatedstylecheck{/tikz/every extra x tick}}, /pgfplots/every extra x tick/.belongs to family=/pgfplots/style commands, @@ -795,6 +806,7 @@ /pgfplots/every y tick label/.belongs to family=/pgfplots/style commands, /pgfplots/every extra y tick/.style={ /pgfplots/log identify minor tick positions=true, + /pgfplots/hide obscured y ticks=false, }, /pgfplots/every extra y tick/.append code={\pgfplotsdeprecatedstylecheck{/tikz/every extra y tick}}, /pgfplots/every extra y tick/.belongs to family=/pgfplots/style commands, @@ -810,6 +822,7 @@ /pgfplots/every z tick label/.belongs to family=/pgfplots/style commands, /pgfplots/every extra z tick/.style={ /pgfplots/log identify minor tick positions=true, + /pgfplots/hide obscured z ticks=false, }, /pgfplots/every extra z tick/.append code={\pgfplotsdeprecatedstylecheck{/tikz/every extra z tick}}, /pgfplots/every extra z tick/.belongs to family=/pgfplots/style commands, @@ -1765,6 +1778,16 @@ /pgfplots/stack dir=plus, /pgfplots/stacked ignores zero/.is if=pgfplots@stacked@ignores@zero, /pgfplots/stacked ignores zero/.default=true, + % + % The purpose of the following key is to control the case 'stacked ignores zero=true' + % (it has no effect if 'stacked ignores zero=false'). + % The feature "stacked ignores zero" is active *if and only if* + % 1. stacked ignores zero=true and + % 2. stacked ignores zero/<phasename>=true + % Valid <phasename>s are 'default', 'markers', 'errorbars'. + /pgfplots/stacked ignores zero/\pgfplotsaxis@visphase@name@default/.initial=true, + /pgfplots/stacked ignores zero/\pgfplotsaxis@visphase@name@markers/.initial=true, + /pgfplots/stacked ignores zero/\pgfplotsaxis@visphase@name@errorbars/.initial=false, /pgfplots/filter discard warning/.is if=pgfplots@warn@for@filter@discards, /pgfplots/filter discard warning=true, /pgfplots/pre filter/.code={}, @@ -2169,8 +2192,8 @@ /pgfplots/major y grid style/.code={% \pgfkeysalso{/pgfplots/every major y grid/.append style={#1}}% }, - /pgfplots/y grid style/.belongs to family=/pgfplots/style commands, - /pgfplots/y grid style/.code={% + /pgfplots/z grid style/.belongs to family=/pgfplots/style commands, + /pgfplots/z grid style/.code={% \pgfkeysalso{/pgfplots/every axis z grid/.append style={#1}}% }, /pgfplots/minor z grid style/.belongs to family=/pgfplots/style commands, @@ -2536,6 +2559,14 @@ },% /pgfplots/axis z line/none/.style ={axis z line*/none,hide z axis}, }, + % + /pgfplots/hide obscured x ticks/.is if=pgfplots@hide@obscured@xtick, + /pgfplots/hide obscured y ticks/.is if=pgfplots@hide@obscured@ytick, + /pgfplots/hide obscured z ticks/.is if=pgfplots@hide@obscured@ztick, + /pgfplots/hide obscured x ticks=true, + /pgfplots/hide obscured y ticks=true, + /pgfplots/hide obscured z ticks=true, + % /pgfplots/3d box/.is choice, /pgfplots/3d box/background/.code ={\def\pgfplots@threedimbox@choice{0}},% /pgfplots/3d box/complete/.code ={\def\pgfplots@threedimbox@choice{1}},% @@ -3329,22 +3360,38 @@ /pgfplots/z coord trafo/.code={}, /pgfplots/z coord inv trafo/.code={}, % + /pgfplots/symbolic coords/magic prefix/.initial={[normalized]}, % #1 : the coordinate in question. Can be x,y,z, or even hist/data % or similar constructs. % #2 : {<symbol1>,<symbol2>,....<symboln>} /pgfplots/symbolic coords/.code 2 args={% \expandafter\pgfplotsarraynew\csname pgfplots@symbolic@coords@#1@inverse\endcsname{#2}% \expandafter\pgfplotsarrayforeachungrouped\csname pgfplots@symbolic@coords@#1@inverse\endcsname\as\pgfplots@loc@TMPa{% + \pgfplots@command@to@string\pgfplots@loc@TMPa\pgfplots@loc@TMPa +% \message{Defining symb coords \pgfplots@loc@TMPa^^J}% \expandafter\edef\csname pgfp@symb@coords@#1@\pgfplots@loc@TMPa\endcsname{\pgfplotsarrayforeachindex}% }% + \pgfkeysgetvalue{/pgfplots/symbolic coords/magic prefix}\pgfplots@symb@magic@prefix \pgfkeysdef{/pgfplots/#1 coord trafo}{% - \pgfutil@ifundefined{pgfp@symb@coords@#1@##1}{% - \pgfplots@error{Sorry, the input coordinate `##1' has not been defined with 'symbolic #1 coords={#2}... Maybe it has been misspelled?}% - \def\pgfmathresult{0}% + \expandafter\pgfplotsutilifstartswith\expandafter{\pgfplots@symb@magic@prefix}{##1}{% + % Ah - something like [normalized]1.5 + % we need to assign the suffix 1.5: + \edef\pgfmathresult{\pgfplotsretval}% }{% - \edef\pgfmathresult{\csname pgfp@symb@coords@#1@##1\endcsname}% + % ensure that special (unexpandable) characters are + % preserved: + \def\pgfplots@loc@TMPa{##1}% + \pgfplots@command@to@string\pgfplots@loc@TMPa\pgfplots@loc@TMPa + \pgfutil@ifundefined{pgfp@symb@coords@#1@\pgfplots@loc@TMPa}{% + \t@pgfplots@toka={##1}% + \t@pgfplots@tokb={#2}% + \pgfplots@error{Sorry, the input coordinate `\the\t@pgfplots@toka' has not been defined with 'symbolic #1 coords={\the\t@pgfplots@tokb}... Maybe it has been misspelled? Or did you mean something like \pgfplots@symb@magic@prefix\the\t@pgfplots@toka?}% + \def\pgfmathresult{0}% + }{% + \edef\pgfmathresult{\csname pgfp@symb@coords@#1@\pgfplots@loc@TMPa\endcsname}% + }% }% -%\message{#1 coord trafo{##1} --> \pgfmathresult^^J}% +%\message{#1 coord trafo{\pgfplots@loc@TMPa} --> \pgfmathresult^^J}% }% \pgfkeysdef{/pgfplots/#1 coord inv trafo}{% \begingroup @@ -3364,13 +3411,13 @@ \fi \fi \expandafter\pgfplotsarrayselect\expandafter\count\expandafter0\expandafter\of\csname pgfplots@symbolic@coords@#1@inverse\endcsname\to\pgfmathresult -%\message{#1 coord inv trafo{##1} -->\the\count0 --> \pgfmathresult^^J}% +%\message{#1 coord inv trafo{##1} -->\the\count0 --> \meaning\pgfmathresult^^J}% \pgfmath@smuggleone\pgfmathresult \endgroup }% \pgfkeysifdefined{/pgfplots/#1ticklabel/.@cmd}{% \pgfkeysalso{% - /pgfplots/#1ticklabel={\tick},% + /pgfplots/#1ticklabel={\pgfplots@ticklabel@typeset@arg\tick},% /pgfplots/scaled #1 ticks=false,% /pgfplots/plot coordinates/math parser=false,% }% @@ -3629,6 +3676,7 @@ /pgfplots/cube/size x=\pgfplotmarksize, /pgfplots/cube/size y=\pgfplotmarksize, /pgfplots/cube/size z=\pgfplotmarksize, + /pgfplots/trig format/.style={/pgf/trig format={#1}}, /pgfplots/xtick placement tolerance/.initial=0.05pt, /pgfplots/ytick placement tolerance/.initial=0.05pt, /pgfplots/ztick placement tolerance/.initial=0.05pt, @@ -3644,6 +3692,7 @@ /pgfplots/compat/anchors/1.8/.style= {/pgfplots/compat/anchors/1.3},% /pgfplots/compat/anchors/1.9/.style= {/pgfplots/compat/anchors/1.3},% /pgfplots/compat/anchors/1.10/.style= {/pgfplots/compat/anchors/1.3},% + /pgfplots/compat/anchors/1.11/.style= {/pgfplots/compat/anchors/1.3},% /pgfplots/compat/anchors/newest/.style= {/pgfplots/compat/anchors/1.3},% /pgfplots/compat/anchors/default/.style={/pgfplots/compat/anchors/1.3},% % @@ -3658,6 +3707,7 @@ /pgfplots/compat/empty line/1.8/.style= {/pgfplots/compat/empty line/1.4},% /pgfplots/compat/empty line/1.9/.style= {/pgfplots/compat/empty line/1.4},% /pgfplots/compat/empty line/1.10/.style= {/pgfplots/compat/empty line/1.4},% + /pgfplots/compat/empty line/1.11/.style= {/pgfplots/compat/empty line/1.4},% /pgfplots/compat/empty line/newest/.style= {/pgfplots/compat/empty line/1.4},% /pgfplots/compat/empty line/default/.style= {/pgfplots/compat/empty line/1.4},% % @@ -3672,8 +3722,24 @@ /pgfplots/compat/path replacement/1.8/.style= {/pgfplots/compat/path replacement/1.5.1}, /pgfplots/compat/path replacement/1.9/.style= {/pgfplots/compat/path replacement/1.5.1}, /pgfplots/compat/path replacement/1.10/.style= {/pgfplots/compat/path replacement/1.5.1}, + /pgfplots/compat/path replacement/1.11/.style= {/pgfplots/compat/path replacement/1.5.1}, /pgfplots/compat/path replacement/newest/.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, + /pgfplots/compat/pgfpoint substitution/pre 1.3/.code= {\pgfplots@substitute@pgfpointfalse}, + /pgfplots/compat/pgfpoint substitution/1.3/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3},% + /pgfplots/compat/pgfpoint substitution/1.4/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3}, + /pgfplots/compat/pgfpoint substitution/1.5/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3},% + /pgfplots/compat/pgfpoint substitution/1.5.1/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3},% + /pgfplots/compat/pgfpoint substitution/1.6/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3}, + /pgfplots/compat/pgfpoint substitution/1.7/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3}, + /pgfplots/compat/pgfpoint substitution/1.8/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3}, + /pgfplots/compat/pgfpoint substitution/1.9/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3}, + /pgfplots/compat/pgfpoint substitution/1.10/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3}, + /pgfplots/compat/pgfpoint substitution/1.11/.code= {\pgfplots@substitute@pgfpointtrue}, + /pgfplots/compat/pgfpoint substitution/newest/.style= {/pgfplots/compat/pgfpoint substitution/1.11},% + /pgfplots/compat/pgfpoint substitution/default/.style= {/pgfplots/compat/pgfpoint substitution/pre 1.3},% %ellipse/.is if=pgfplots@path@replace@ellipse, % /pgfplots/compat/labels/.is choice, @@ -3696,6 +3762,7 @@ },% /pgfplots/compat/labels/1.9/.style= {/pgfplots/compat/labels/1.8},% /pgfplots/compat/labels/1.10/.style= {/pgfplots/compat/labels/1.8},% + /pgfplots/compat/labels/1.11/.style= {/pgfplots/compat/labels/1.8},% /pgfplots/compat/labels/newest/.style= {/pgfplots/compat/labels/1.8},% /pgfplots/compat/labels/default/.style= {/pgfplots/compat/labels/pre 1.3},% maintain backwards compatibility % @@ -3734,6 +3801,7 @@ }, },% /pgfplots/compat/bar nodes/1.10/.style= {/pgfplots/compat/bar nodes/1.9},% + /pgfplots/compat/bar nodes/1.11/.style= {/pgfplots/compat/bar nodes/1.9},% /pgfplots/compat/bar nodes/newest/.style= {/pgfplots/compat/bar nodes/1.9},% /pgfplots/compat/bar nodes/default/.style= {/pgfplots/compat/bar nodes/pre 1.3},% maintain backwards compatibility /pgfplots/compat/bar nodes/default, @@ -3763,6 +3831,7 @@ /pgfplots/compat/scaling/1.8/.style={/pgfplots/compat/scaling/1.6}, /pgfplots/compat/scaling/1.9/.style={/pgfplots/compat/scaling/1.6}, /pgfplots/compat/scaling/1.10/.style={/pgfplots/compat/scaling/1.6}, + /pgfplots/compat/scaling/1.11/.style={/pgfplots/compat/scaling/1.6}, /pgfplots/compat/scaling/newest/.style={/pgfplots/compat/scaling/1.6}, /pgfplots/compat/scaling/default/.style={/pgfplots/compat/scaling/1.4}, % @@ -3777,6 +3846,7 @@ /pgfplots/compat/scale mode/1.8/.style={/pgfplots/compat/scale mode/1.6}, /pgfplots/compat/scale mode/1.9/.style={/pgfplots/compat/scale mode/1.6}, /pgfplots/compat/scale mode/1.10/.style={/pgfplots/compat/scale mode/1.6}, + /pgfplots/compat/scale mode/1.11/.style={/pgfplots/compat/scale mode/1.6}, /pgfplots/compat/scale mode/newest/.style={/pgfplots/compat/scale mode/1.6}, /pgfplots/compat/scale mode/default/.style={/pgfplots/compat/scale mode/1.5}, % @@ -3792,6 +3862,7 @@ /pgfplots/compat/plot3graphics/1.8/.style= {/pgfplots/compat/plot3graphics/1.6},% /pgfplots/compat/plot3graphics/1.9/.style= {/pgfplots/compat/plot3graphics/1.6},% /pgfplots/compat/plot3graphics/1.10/.style= {/pgfplots/compat/plot3graphics/1.6},% + /pgfplots/compat/plot3graphics/1.11/.style= {/pgfplots/compat/plot3graphics/1.6},% /pgfplots/compat/plot3graphics/newest/.style= {/pgfplots/compat/plot3graphics/1.6},% /pgfplots/compat/plot3graphics/default/.style= {/pgfplots/compat/plot3graphics/1.5},% % @@ -3833,6 +3904,7 @@ /pgfplots/compat/bar width by units/1.8/.style= {/pgfplots/compat/bar width by units/1.7}, /pgfplots/compat/bar width by units/1.9/.style= {/pgfplots/compat/bar width by units/1.7}, /pgfplots/compat/bar width by units/1.10/.style= {/pgfplots/compat/bar width by units/1.7}, + /pgfplots/compat/bar width by units/1.11/.style= {/pgfplots/compat/bar width by units/1.7}, /pgfplots/compat/bar width by units/newest/.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}, % @@ -3847,27 +3919,41 @@ /pgfplots/compat/BB/1.8/.style= {/pgfplots/clip bounding box=upper bound},% /pgfplots/compat/BB/1.9/.style= {/pgfplots/compat/BB/1.8},% /pgfplots/compat/BB/1.10/.style= {/pgfplots/compat/BB/1.8},% + /pgfplots/compat/BB/1.11/.style= {/pgfplots/compat/BB/1.8},% /pgfplots/compat/BB/newest/.style= {/pgfplots/compat/BB/1.8}, /pgfplots/compat/BB/default/.style={/pgfplots/compat/BB/pre 1.3}, % /pgfplots/compat/general/.is choice, - /pgfplots/compat/general/pre 1.3/.style={/pgfplots/log origin=infty},% + /pgfplots/compat/general/pre 1.3/.style={/pgfplots/log origin=infty,/pgfplots/enable tick line clipping=true},% /pgfplots/compat/general/1.3/.style= {/pgfplots/compat/general/pre 1.3}, /pgfplots/compat/general/1.4/.style= {/pgfplots/compat/general/pre 1.3},% - /pgfplots/compat/general/1.5/.style= {/pgfplots/log origin=0},% + /pgfplots/compat/general/1.5/.style= {/pgfplots/log origin=0,/pgfplots/enable tick line clipping=true},% /pgfplots/compat/general/1.5.1/.style= {/pgfplots/compat/general/1.5},% /pgfplots/compat/general/1.6/.style= {/pgfplots/compat/general/1.5},% /pgfplots/compat/general/1.7/.style= {/pgfplots/compat/general/1.5},% /pgfplots/compat/general/1.8/.style= {/pgfplots/compat/general/1.5},% /pgfplots/compat/general/1.9/.style= {/pgfplots/compat/general/1.5},% /pgfplots/compat/general/1.10/.style= {/pgfplots/compat/general/1.5},% - /pgfplots/compat/general/newest/.style= {/pgfplots/compat/general/1.8}, - /pgfplots/compat/general/default/.style={/pgfplots/compat/general/1.5}, + /pgfplots/compat/general/1.11/.style= {/pgfplots/compat/general/1.5,/pgfplots/enable tick line clipping=false},% + /pgfplots/compat/general/newest/.style= {/pgfplots/compat/general/1.11}, + /pgfplots/compat/general/default/.style={/pgfplots/compat/general/1.11}, + % + /pgfplots/enable tick line clipping/.is if=pgfplots@enable@tick@line@clipping, + /pgfplots/enable tick line clipping/.default=true, + % + /pgfplots/default typeset ticklabel/.style={ + /pgfplots/typeset ticklabel/.code={##1}, + }, + /pgfplots/default typeset ticklabel, + /pgfplots/typeset ticklabels with strut/.style={ + /pgfplots/typeset ticklabel/.code={\strut ##1}, + }, + % % /pgfplots/compat/show suggested version/.is if=pgfplots@show@suggested@version, /pgfplots/compat/show suggested version=true, /pgfplots/compat/current/.initial=, - /pgfplots/compat/mostrecent/.initial=1.10, % this is OK since 1.10 did not change anything. + /pgfplots/compat/mostrecent/.initial=1.11, /pgfplots/compat/.style={% % ATTENTION: *every* /pgfplots/compat/ setting needs to accept % the same choices due to this construction: @@ -3883,6 +3969,7 @@ /pgfplots/compat/plot3graphics=#1,% /pgfplots/compat/bar width by units=#1,% /pgfplots/compat/bar nodes=#1,% + /pgfplots/compat/pgfpoint substitution=#1,% },% /pgfplots/compat/.default=pre 1.3,% this is used if you type '\pgfplotsset{compat}' without value /pgfplots/compat=default,% this is the initial config. @@ -3953,6 +4040,8 @@ },% } +\def\pgfplots@ticklabel@typeset@arg#1{\pgfkeysvalueof{/pgfplots/typeset ticklabel/.@cmd}{#1}\pgfeov}% + % backwards compatibility: \def\pgfplots@tickwidth{\pgfkeysvalueof{/pgfplots/major tick length}}% \def\pgfplots@subtickwidth{\pgfkeysvalueof{/pgfplots/minor tick length}}% @@ -8495,6 +8584,34 @@ \tikzdeclarecoordinatesystem{axis}{\edef\pgfplots@loc@TMPa{#1}\expandafter\pgfplots@evalute@tikz@coord@system@interface\pgfplots@loc@TMPa,\pgfplots@coord@end} \def\pgfplotspointaxisxy#1#2{\pgfplots@evalute@tikz@coord@system@interface{#1},{#2},\pgfplots@coord@end}% \def\pgfplotspointaxisxyz#1#2#3{\pgfplots@evalute@tikz@coord@system@interface{#1},{#2},{#3},\pgfplots@coord@end}% +\def\pgfplotsqpointaxisxy#1#2{% + \edef\pgfplotspointaxis@restore{% + \ifpgfplots@plot@coords@mathparser + \noexpand\pgfplots@plot@coords@mathparsertrue + \else + \noexpand\pgfplots@plot@coords@mathparserfalse + \fi + }% + \pgfplots@plot@coords@mathparserfalse + % + \pgfplotspointaxisxy{#1}{#2}% + % + \pgfplotspointaxis@restore +} +\def\pgfplotsqpointaxisxyz#1#2#3{% + \edef\pgfplotspointaxis@restore{% + \ifpgfplots@plot@coords@mathparser + \noexpand\pgfplots@plot@coords@mathparsertrue + \else + \noexpand\pgfplots@plot@coords@mathparserfalse + \fi + }% + \pgfplots@plot@coords@mathparserfalse + % + \pgfplotspointaxisxyz{#1}{#2}{#3}% + % + \pgfplotspointaxis@restore +} % definition of 'normalized axis cs': \tikzdeclarecoordinatesystem{normalized axis}{\edef\pgfplots@loc@TMPa{#1}\expandafter\pgfplots@evalute@tikz@coord@system@interface@normalized\pgfplots@loc@TMPa,\pgfplots@coord@end} @@ -8548,10 +8665,10 @@ % trafo (typically an empty string) \long\def\pgfplots@evalute@tikz@coord@system@interface@for[#1]#2#3{% \pgfkeysgetvalue{/pgfplots/#2 coord trafo/.@cmd}\pgfplots@loc@TMPc - \edef\pgfmathresult{#3}% \ifx\pgfplots@loc@TMPc\pgfplots@empty@command@key + \edef\pgfmathresult{#3}% do not expand it - might contain unexpandable input for coord trafo. \else - \expandafter\pgfplots@loc@TMPc\expandafter{\pgfmathresult}\pgfeov + \pgfplots@loc@TMPc{#3}\pgfeov \fi \ifpgfplots@plot@coords@mathparser \pgfplotscoordmath{default}{parse}{\pgfmathresult}% @@ -8629,14 +8746,17 @@ % Defines \pgfplots@evaluate@tikz@coord@[xyz] \def\pgfplots@evalute@tikz@coord@system@interface@tocoords[#1]{% - \pgfplots@evalute@tikz@coord@system@interface@for[#1]{x}{\pgfplots@evaluate@tikz@coord@x}% + \def\pgfplots@evalute@tikz@coord@@##1##2{% + \pgfplots@evalute@tikz@coord@system@interface@for[#1]{##2}{##1}% + }% + \expandafter\pgfplots@evalute@tikz@coord@@\expandafter{\pgfplots@evaluate@tikz@coord@x}{x}% \let\pgfplots@evaluate@tikz@coord@x=\pgfmathresult - \pgfplots@evalute@tikz@coord@system@interface@for[#1]{y}{\pgfplots@evaluate@tikz@coord@y}% + \expandafter\pgfplots@evalute@tikz@coord@@\expandafter{\pgfplots@evaluate@tikz@coord@y}{y}% \let\pgfplots@evaluate@tikz@coord@y=\pgfmathresult % \ifx\pgfplots@evaluate@tikz@coord@z\pgfutil@empty \else - \pgfplots@evalute@tikz@coord@system@interface@for[#1]{z}{\pgfplots@evaluate@tikz@coord@z}% + \expandafter\pgfplots@evalute@tikz@coord@@\expandafter{\pgfplots@evaluate@tikz@coord@z}{z}% \let\pgfplots@evaluate@tikz@coord@z=\pgfmathresult \fi }% @@ -8744,8 +8864,15 @@ \else % Apply external coordinate trafo to all input values: \expandafter\edef\csname pgfplots@prepare@#1coord\endcsname##1{% - \noexpand\edef\noexpand\pgfmathresult{##1}% + % do not expand it here - might contain unexpandable + % material which is processed by the #1 coord trafo: + % FIXME : this might produce an endless loop if ##1 = \pgfmathresult! + \noexpand\def\noexpand\pgfmathresult{##1}% + % this becomes \expandafter\noexpand\csname pgfplots@highlevel@trafo@#1\endcsname{##1}\noexpand\pgfeov + % + % ensure that it is expanded. + \noexpand\edef\noexpand\pgfmathresult{\noexpand\pgfmathresult}% }% % % The transformation is now \pgfplots@loc@TMPc @@ -9517,6 +9644,10 @@ \pgfkeyssetfamily{/pgf/bar width}{/pgfplots}% \pgfkeyssetfamily{/pgf/bar shift}{/pgfplots}% % + \pgfkeyssetfamily{/pgf/trig format}{/pgfplots}% + \pgfkeyssetfamily{/pgf/trig format/deg}{/pgfplots}% + \pgfkeyssetfamily{/pgf/trig format/rad}{/pgfplots}% + % \pgfkeysinstallkeyfilterhandler{/pgf/key filter handlers/append filtered to}{\pgfplots@rmopts}% % \let\tikz@alias=\pgfutil@empty @@ -9572,19 +9703,7 @@ \pgfkeysdeactivatefamily{/pgfplots/naming commands}% \pgfkeysdeactivatefamily{/pgfplots/shared with tikz}% % - \ifpgfplots@axis@on@top - \ifpgfplots@layered@graphics - \pgfplots@log3{the combination of 'axis on top' and 'activate layers' implies 'set layers=axis on top'. Deactivate 'axis on top' if you want other layers.}% - \pgfplotsset{set layers=axis on top}% - \fi - \fi - % retrieve layer configurations (the one set with 'set layers*'). - \pgfkeysgetvalue{/pgfplots/@set layers arg}\pgfplots@loc@TMPa - \ifx\pgfplots@loc@TMPa\pgfutil@empty - \else - % ah, yes: then set its style: - \pgfqkeys{/pgfplots/layers}{\pgfplots@loc@TMPa}% note that this here should not need key filtering; it adjusts only styles (hopefully ;) ) - \fi + \pgfplots@set@options@of@layered@graphics % % Now, any 'name' and 'alias' options have been processed. % @@ -9740,6 +9859,22 @@ \pgfplots@notify@options@are@set } +\def\pgfplots@set@options@of@layered@graphics{% + \ifpgfplots@axis@on@top + \ifpgfplots@layered@graphics + \pgfplots@log3{the combination of 'axis on top' and 'activate layers' implies 'set layers=axis on top'. Deactivate 'axis on top' if you want other layers.}% + \pgfplotsset{set layers=axis on top}% + \fi + \fi + % retrieve layer configurations (the one set with 'set layers*'). + \pgfkeysgetvalue{/pgfplots/@set layers arg}\pgfplots@loc@TMPa + \ifx\pgfplots@loc@TMPa\pgfutil@empty + \else + % ah, yes: then set its style: + \pgfqkeys{/pgfplots/layers}{\pgfplots@loc@TMPa}% note that this here should not need key filtering; it adjusts only styles (hopefully ;) ) + \fi +}% + \def\pgfplots@set@patched@options{% \pgfkeysdef{/pgfplots/@@@tmp}{% \let\tikz@intersect@def=\gdef @@ -9818,10 +9953,12 @@ \or2.197224 \fi }% - \def\axisdefaultticklabel{\pgfmathprintnumber{\tick}}% + \def\axisdefaultticklabel{\pgfplots@ticklabel@typeset@arg{\pgfmathprintnumber{\tick}}}% \def\axisdefaultticklabellog{% - \pgfkeysgetvalue{/pgfplots/log number format code/.@cmd}\pgfplots@log@label@style - \expandafter\pgfplots@log@label@style\tick\pgfeov + \pgfplots@ticklabel@typeset@arg{% + \pgfkeysgetvalue{/pgfplots/log number format code/.@cmd}\pgfplots@log@label@style + \expandafter\pgfplots@log@label@style\tick\pgfeov + }% }% % \let\legend=\pgfplots@command@legend @@ -10326,10 +10463,8 @@ position}% }{}% \def\pgfplots@is@in@axis{1}% - \let\pgfpointxy@orig=\pgfpointxy - \let\pgfqpointxy@orig=\pgfqpointxy - \let\pgfpointxyz@orig=\pgfpointxyz - \let\pgfqpointxyz@orig=\pgfqpointxyz + \pgfplots@environment@opt@@setup@pgfpoint@restores + % \global\let\pgfplots@late@options=\pgfutil@empty \pgfplots@checkandpreparefor@active@semicolon % @@ -10351,10 +10486,6 @@ % \pgfplots@set@options{#1}% % - \pgfplots@prepare@layered@graphics - % - \pgfplots@prepare@cell@picture - % % % % -------------------- @@ -10523,6 +10654,10 @@ % \expandafter\pgfplotsset\expandafter{\pgfplots@late@options}% % + \pgfplots@prepare@layered@graphics + % + \pgfplots@prepare@cell@picture + % %\end{axis}: % % -------------------- @@ -10544,6 +10679,10 @@ % NEW \pgfplots@stored@plotlist! \pgfplots@stacked@finalize@stored@plots \fi + % + % ensure that (1,2) is automatically converted to (axis cs:1,2) : + \pgfplots@change@pgfpoints@to@axiscs + % % make it ungrouped: we must not destroy group nesting of tikz % path instructions at this point. \pgfplotslistforeachungrouped\pgfplots@stored@plotlist\as\pgfplots@loc@TMPa{% @@ -10565,11 +10704,15 @@ % % this code here means we REALLY have a plotting % command! + % This is the heart component of the visualization + % phase. \pgfplots@stored@plotlist@visualize@selected@phases{\pgfplots@visphase@names}% \fi \pgfplots@stored@current@postcmd }% % + \pgfplots@restorepgfpoint + % \pgfplots@END@init@and@draw@axis % \pgfplots@create@axis@descriptions @@ -10655,6 +10798,54 @@ \aftergroup\pgfplots@cell@picture@remembered } +\def\pgfplots@environment@opt@@setup@pgfpoint@restores{% + % There are places in pgfplots where the default coordinate system + % (i.e. the one used whenever one writes (1,2)) needs to be + % replaced: + % - during axis descriptions (see \pgfplots@change@pgfpoints@to@descriptioncs) + % - during the visualization phase (where it is substituted by + % (axis cs:1,2), compare XXXX) + % + % However, as soon as someone writes \pgfsetxvec (or its y/z + % variants), we want to *restore* the original PGF functionality. + % + % Prepare that here: + \let\pgfpointxy@orig=\pgfpointxy + \let\pgfqpointxy@orig=\pgfqpointxy + \let\pgfpointxyz@orig=\pgfpointxyz + \let\pgfqpointxyz@orig=\pgfqpointxyz + \let\pgfsetxvec@orig=\pgfsetxvec + \let\pgfsetyvec@orig=\pgfsetyvec + \let\pgfsetzvec@orig=\pgfsetzvec + \let\tikz@checkunit@orig=\tikz@checkunit + % + \let\pgfsetxvec=\pgfplots@setxvec@restorepgfpoint + \let\pgfsetyvec=\pgfplots@setyvec@restorepgfpoint + \let\pgfsetzvec=\pgfplots@setzvec@restorepgfpoint +}% + +\def\pgfplots@restorepgfpoint{% + \let\pgfpointxy=\pgfpointxy@orig + \let\pgfqpointxy=\pgfqpointxy@orig + \let\pgfpointxyz=\pgfpointxyz@orig + \let\pgfqpointxyz=\pgfqpointxyz@orig + \let\tikz@checkunit=\tikz@checkunit@orig +}% + +\def\pgfplots@setxvec@restorepgfpoint#1{% + \pgfsetxvec@orig{#1}% + \pgfplots@restorepgfpoint +}% +\def\pgfplots@setyvec@restorepgfpoint#1{% + \pgfsetyvec@orig{#1}% + \pgfplots@restorepgfpoint +}% +\def\pgfplots@setzvec@restorepgfpoint#1{% + \pgfsetzvec@orig{#1}% + \pgfplots@restorepgfpoint +}% + + \def\pgfplots@replace@path@commands{% \let\pgfplots@orig@scope=\scope \let\pgfplots@orig@endscope=\endscope @@ -10731,6 +10922,10 @@ % #1: the list of phases to execute. This excludes marker phases. \def\pgfplots@stored@plotlist@visualize@clippedpart#1{% \scope[current plot style] % this does set BOTH pgfplots and tikz options. + % + % do this here after options are set. + \pgfplots@initzerolevelhandler + % % FIXME : what, precisely, was the motivation to use a % scope here? It causes a lot of problems and % work-arounds. Is it worth the effort!? @@ -10771,12 +10966,50 @@ \def\pgfplots@visphase@markers{% \begingroup + \pgfplots@change@pgfpoints@to@axiscs \pgfplots@markers@install@plotmark@handler \let\pgfplots@visphase@name=\pgfplotsaxis@visphase@name@markers \expandafter\pgfplots@coord@stream@finalize@storedcoords@START\pgfplots@stored@current@data\pgfplots@EOI \endgroup }% +% Inside of an axis, the default coordinate system for any draw +% command should be (axis cs:1,2) instead of (1,2). Install that here: +% +% see \pgfplots@restorepgfpoint +\def\pgfplots@change@pgfpoints@to@axiscs{% + % + \ifpgfplots@substitute@pgfpoint + \let\pgfpointxy=\pgfplotspointaxisxy + \let\pgfpointxyz=\pgfplotspointaxisxyz + \let\pgfqpointxy=\pgfplotsqpointaxisxy + \let\pgfqpointxyz=\pgfplotsqpointaxisxyz + % + % tikz checks for units before it calls \pgfpointxy . This must + % not suffer from TeX's math restrictions, so we have to use the + % FPU for this task. Patch the command as well: + \let\tikz@checkunit=\pgfplots@checkunit@fpu + \fi +}% + +\def\pgfplots@checkunit@fpu#1{% + \ifpgfplots@usefpu + \edef\pgfplots@checkunit@fpu@restore{% + \pgflibraryfpuifactive{% + % ok, leave it active + }{% + \noexpand\pgfkeys{/pgf/fpu=false}% + }% + }% + \pgfkeys{/pgf/fpu}% + \tikz@checkunit@orig{#1}% + \pgfmathfloattofixed{\pgfmathresult}% + \pgfplots@checkunit@fpu@restore + \else + \tikz@checkunit@orig{#1}% + \fi +}% + \def\pgfplots@execute@at@end@plot@visualization@internal{% }% diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex index 62d56ad1915..42d6c9f4b65 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplots.errorbars.code.tex @@ -582,6 +582,7 @@ \def\pgfplots@errorbar@draw#1#2{% \begingroup + \pgfplots@restorepgfpoint \pgfkeysvalueof{/pgfplots/error bars/draw error bar/.@cmd}{#1}{#2}\pgfeov% \endgroup }% diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex index 15c577d4957..126367104a3 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplots.revision.tex @@ -5,10 +5,10 @@ \catcode`\:=12 \catcode`\+=12 \catcode`\-=12 -\gdef\pgfplotsrevision{1.10-2-gb39fe75} -\gdef\pgfplotsversion{1.10} -\gdef\pgfplotsversiondatetime{2014-02-28 13:30:07 +0100} -\gdef\pgfplotsrevisiondatetime{2014-03-03 21:18:27 +0100} +\gdef\pgfplotsrevision{1.11-3-g4c99d7a} +\gdef\pgfplotsversion{1.11} +\gdef\pgfplotsversiondatetime{2014-08-04 12:47:48 +0200} +\gdef\pgfplotsrevisiondatetime{2014-08-06 16:56:04 +0200} \gdef\pgfplots@glob@TMPa#1-#2-#3 #4\relax{#1/#2/#3} \xdef\pgfplotsversiondate{\expandafter\pgfplots@glob@TMPa\pgfplotsversiondatetime\relax} \xdef\pgfplotsrevisiondate{\expandafter\pgfplots@glob@TMPa\pgfplotsrevisiondatetime\relax} diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex index 02ff3e96b1b..6b64807a05c 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplotscoordprocessing.code.tex @@ -58,12 +58,13 @@ \else \pgfplotspointbbdiagonal \fi - \pgf@xx=\pgf@x - \pgf@xy=0pt - \pgf@yx=0pt - \pgf@yy=\pgf@y - \pgf@zx=0pt - \pgf@zy=0pt + \pgf@xa=\pgf@x + \pgf@ya=\pgf@y + % do not use \pgfqpoint here - it may have been replaced + % (compare \pgfplots@change@pgfpoints@to@descriptioncs) + \pgfsetxvec{\global\pgf@x=\pgf@xa \global\pgf@y=0pt }% + \pgfsetyvec{\global\pgf@x=0pt \global\pgf@y=\pgf@ya}% + \pgfsetzvec{\global\pgf@x=0pt \global\pgf@y=0pt }% }% % % The \pgfplotsqpointxyz method (or its 2d counterpart) are THE @@ -3462,7 +3463,6 @@ \noexpand\pgfkeyssetvalue{/pgfplots/x coord sorting}{\pgfkeysvalueof{/pgfplots/x coord sorting}}% \noexpand\pgfkeyssetvalue{/pgfplots/y coord sorting}{\pgfkeysvalueof{/pgfplots/y coord sorting}}% % - \noexpand\pgfplots@initzerolevelhandler % remember 'current plot style': \noexpand\pgfplots@define@currentplotstyle@as{% \the\t@pgfplots@toka @@ -3573,6 +3573,7 @@ \def\pgfplotsaxis@visphase@name@default{default} \def\pgfplotsaxis@visphase@name@markers{markers} +% This defines \pgfplots@visphase@default: \expandafter\def\csname pgfplots@visphase@\pgfplotsaxis@visphase@name@default\endcsname{% \expandafter\pgfplots@coord@stream@finalize@storedcoords@START\pgfplots@stored@current@data\pgfplots@EOI }% @@ -4197,37 +4198,55 @@ \pgfplots@coord@stream@end }% +\begingroup +\def\\{\global\let\pgfplots@let@space@token= } \\ % now, \pgfplots@let@space@token is a space token +\endgroup + + % A looping command to loop through plot coordinates. -% For every point, #1{X}{Y} will be invoked. +% For every point, \pgfplots@coord@stream@coord will be invoked. % % No scoping is used during this operation, so you can access outer % variables. \def\pgfplots@foreach@plot@coord@ITERATE{% - \pgfutil@ifnextchar\pgfplots@EOI{% - \pgfplots@foreach@plot@coord@FINISH% - }{% - \pgfutil@ifnextchar\par{% - \pgfplotsscanlinecomplete - \pgfplots@foreach@plot@coord@ITERATE@gobbleone - }{% - \pgfutil@ifnextchar({% - \pgfplotsscanlinelengthincrease - \pgfplots@foreach@plot@coord@NEXT% - }{% - \pgfplots@foreach@plot@coord@error - }% - }% - }% + \futurelet\pgfplots@foreach@plot@coord@ITERATE@tok\pgfplots@foreach@plot@coord@ITERATE@ +}% +\long\def\pgfplots@foreach@plot@coord@ITERATE@#1{% + \ifx\pgfplots@foreach@plot@coord@ITERATE@tok(% + \pgfplotsscanlinelengthincrease + \let\pgfplots@loop@next=\pgfplots@foreach@plot@coord@NEXT% + \else + \ifx\pgfplots@foreach@plot@coord@ITERATE@tok\pgfplots@let@space@token + \def\pgfplots@loop@next{\pgfplots@foreach@plot@coord@ITERATE#1}% + \else + \ifx\pgfplots@foreach@plot@coord@ITERATE@tok\pgfplots@EOI + % ok, do nothing more + \let\pgfplots@loop@next=\relax + \else + \ifx\pgfplots@foreach@plot@coord@ITERATE@tok\par + \pgfplotsscanlinecomplete + \let\pgfplots@loop@next=\pgfplots@foreach@plot@coord@ITERATE + \else + \if\noexpand\pgfplots@foreach@plot@coord@ITERATE@tok\noexpand\anymacro + % Ah. #1 has the same character (!) code as \anymacro, + % that means it is a macro! Expand it: + \def\pgfplots@loop@next{\expandafter\pgfplots@foreach@plot@coord@ITERATE#1}% + \else + \def\pgfplots@loop@next{\pgfplots@foreach@plot@coord@error#1}% + \fi + \fi + \fi + \fi + \fi + \pgfplots@loop@next } + \long\def\pgfplots@foreach@plot@coord@error#1\pgfplots@EOI{% - \pgfplots@error{Sorry, I could not read the plot coordinates near '#1'. Please check for format mistakes.}% + \def\pgfplots@loc@TMPa{#1}% + \pgfplots@command@to@string\pgfplots@loc@TMPa\pgfplots@loc@TMPa + \pgfplots@error{Sorry, I could not read the plot coordinates near '\pgfplots@loc@TMPa'. Please check for format mistakes}% }% -\long\def\pgfplots@foreach@plot@coord@ITERATE@gobbleone#1{\pgfplots@foreach@plot@coord@ITERATE}% -\def\pgfplots@foreach@plot@coord@NEXT(#1){% - \edef\pgfmathresult{#1}% - \expandafter\pgfplots@foreach@plot@coord@NEXT@\expandafter(\pgfmathresult)% -} -\def\pgfplots@foreach@plot@coord@NEXT@(#1,#2){% +\def\pgfplots@foreach@plot@coord@NEXT#1,#2){% \ifpgfplots@plot@coords@mathparser \pgfmathparse{#1}\let\pgfplots@current@point@x=\pgfmathresult \pgfmathparse{#2}\let\pgfplots@current@point@y=\pgfmathresult @@ -4315,7 +4334,6 @@ % \pgfplots@foreach@plot@coord@NEXT@cont } -\def\pgfplots@foreach@plot@coord@FINISH\pgfplots@EOI{} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%5 @@ -4328,28 +4346,38 @@ \pgfplots@coord@stream@end }% \def\pgfplots@foreach@plot@coord@threedim@ITERATE{% - \pgfutil@ifnextchar\pgfplots@EOI{% - \pgfplots@foreach@plot@coord@FINISH% - }{% - \pgfutil@ifnextchar\par{% - \pgfplotsscanlinecomplete - \pgfplots@foreach@plot@coord@threedim@ITERATE@gobbleone - }{% - \pgfutil@ifnextchar({% - \pgfplotsscanlinelengthincrease - \pgfplots@foreach@plot@coord@threedim@NEXT% - }{% - \pgfplots@foreach@plot@coord@error - }% - }% - }% -} -\long\def\pgfplots@foreach@plot@coord@threedim@ITERATE@gobbleone#1{\pgfplots@foreach@plot@coord@threedim@ITERATE}% -\def\pgfplots@foreach@plot@coord@threedim@NEXT(#1){% - \edef\pgfmathresult{#1}% - \expandafter\pgfplots@foreach@plot@coord@threedim@NEXT@\expandafter(\pgfmathresult)% + \futurelet\pgfplots@foreach@plot@coord@threedim@ITERATE@tok\pgfplots@foreach@plot@coord@threedim@ITERATE@ +}% +\long\def\pgfplots@foreach@plot@coord@threedim@ITERATE@#1{% + \ifx\pgfplots@foreach@plot@coord@threedim@ITERATE@tok(% + \pgfplotsscanlinelengthincrease + \let\pgfplots@loop@next=\pgfplots@foreach@plot@coord@threedim@NEXT% + \else + \ifx\pgfplots@foreach@plot@coord@threedim@ITERATE@tok\pgfplots@let@space@token + \def\pgfplots@loop@next{\pgfplots@foreach@plot@coord@threedim@ITERATE#1}% + \else + \ifx\pgfplots@foreach@plot@coord@threedim@ITERATE@tok\pgfplots@EOI + % ok, do nothing more + \let\pgfplots@loop@next=\relax + \else + \ifx\pgfplots@foreach@plot@coord@threedim@ITERATE@tok\par + \pgfplotsscanlinecomplete + \let\pgfplots@loop@next=\pgfplots@foreach@plot@coord@threedim@ITERATE + \else + \if\noexpand\pgfplots@foreach@plot@coord@threedim@ITERATE@tok\noexpand\anymacro + % Ah. #1 has the same character (!) code as \anymacro, + % that means it is a macro! Expand it: + \def\pgfplots@loop@next{\expandafter\pgfplots@foreach@plot@coord@threedim@ITERATE#1}% + \else + \def\pgfplots@loop@next{\pgfplots@foreach@plot@coord@error#1}% + \fi + \fi + \fi + \fi + \fi + \pgfplots@loop@next } -\def\pgfplots@foreach@plot@coord@threedim@NEXT@(#1,#2,#3){% +\def\pgfplots@foreach@plot@coord@threedim@NEXT#1,#2,#3){ \ifpgfplots@plot@coords@mathparser \pgfmathparse{#1}\let\pgfplots@current@point@x=\pgfmathresult \pgfmathparse{#2}\let\pgfplots@current@point@y=\pgfmathresult @@ -4564,6 +4592,15 @@ \pgfplots@validate@plot@domain@arguments } +\def\pgfplots@disable@non@survey@keys{% + % + % this here would try to compute something. DON'T DO THIS DURING + % SURVEY! + \pgfkeysdef{/tikz/name intersections}{}% + \pgfkeysdef{/tikz/intersection segments}{}% + % +}% + \def\pgfplots@start@plot@with@behavioroptions@setkeys#1{% % these styles may contain behavior options (error bars, % samples,... ) activate them! @@ -4595,6 +4632,7 @@ % % it is possible that '#1' contains 'forget plot'. So, we need to % set the options before checking \ifpgfplots@curplot@isirrelevant: + \pgfplots@disable@non@survey@keys \pgfplotsset{/pgfplots/every axis plot,#1}% % \ifpgfplots@curplot@isirrelevant @@ -4608,6 +4646,7 @@ \t@pgfplots@tokc=\expandafter{\pgfplots@addplot@survey@@optionlist,#1}% this allows '#' inside of '#1' \edef\pgfplots@addplot@survey@@optionlist{\the\t@pgfplots@tokc}% % + \pgfplots@set@trig@format@plots } \long\def\pgfplotssurveyphaseaddoptionsbeforesurveybegins#1{% @@ -4833,11 +4872,11 @@ % \tikz@plot@var is '\x' be default: \pgfplots@gettikzinternal@keyval{variable}{tikz@plot@var}{\x}% % - {% + \begingroup \escapechar=-1 \xdef\pgfplots@glob@TMPa{\expandafter\string\tikz@plot@var}% \xdef\pgfplots@glob@TMPb{\expandafter\string\pgfplots@plot@var@y}% - }% + \endgroup % \pgfplots@plot@var@nonmacro is the value '\tikz@plot@var' % without the '\', i.e. 'x' by default: \let\pgfplots@plot@var@nonmacro=\pgfplots@glob@TMPa @@ -4845,10 +4884,13 @@ % % make sure the 'plot vars' have a backslash (as it was in tikz % plot expression): - \ifx\pgfplots@plot@var@nonmacro\tikz@plot@var + \edef\pgfplots@loc@TMPa{\expandafter\string\tikz@plot@var}% + \ifx\pgfplots@plot@var@nonmacro\pgfplots@loc@TMPa \edef\tikz@plot@var{\expandafter\noexpand\csname \tikz@plot@var\endcsname}% \fi - \ifx\pgfplots@plot@var@y@nonmacro\pgfplots@plot@var@y + % + \edef\pgfplots@loc@TMPa{\expandafter\string\pgfplots@plot@var@y}% + \ifx\pgfplots@plot@var@y@nonmacro\pgfplots@loc@TMPa \edef\pgfplots@plot@var@y{\expandafter\noexpand\csname \pgfplots@plot@var@y\endcsname}% \fi % @@ -4925,20 +4967,29 @@ \long\def\pgfplots@addplotimpl@expression#1#2(#3,#4)#5;{\pgfplots@addplotimpl@expression@{#1}{#2}{#3}{#4}{#5}}% % \addplot[#1] [#2] (#3,#4) #5; \long\def\pgfplots@addplotimpl@expression@#1#2#3#4#5{% + \pgfplots@addplotimpl@expression@set@options{#1}{#2}% + \pgfplots@addplotimpl@expression@@{#3}{#4}{#5}% +} + +\long\def\pgfplots@addplotimpl@expression@set@options#1#2{% \def\pgfplotssurveyphaseinputclass{expression}% \pgfplots@start@plot@with@behavioroptions{#1,/pgfplots/.cd,#2,/pgfplots/mesh input=lattice,/pgfplots/mesh/ordering/x varies}% \pgfplots@plot@expression@preparekeys +}% + +% \addplot (#1,#2) #3; +\long\def\pgfplots@addplotimpl@expression@@#1#2#3{% % - \pgfplots@PREPARE@COORD@STREAM{#5}% + \pgfplots@PREPARE@COORD@STREAM{#3}% % % Determine whether the x range is parameterized or uniform and % prepare a macro which assigns \pgfplots@current@point@x: \def\pgfplots@addplotimpl@expression@prepare@x{% - \pgfmathparse{#3}% + \pgfmathparse{#1}% \let\pgfplots@current@point@x=\pgfmathresult }% \def\pgfplots@addplotimpl@expression@hasuniform@x{0}% - \def\pgfplots@loc@TMPa{#3}% + \def\pgfplots@loc@TMPa{#1}% % do we have '\x' as x coordinate? \expandafter\def\expandafter\pgfplots@loc@TMPb\expandafter{\tikz@plot@var}% \ifx\pgfplots@loc@TMPa\pgfplots@loc@TMPb @@ -4951,7 +5002,7 @@ \fi \fi \if\pgfplots@addplotimpl@expression@hasuniform@x1% - % if '#3' is '\x' or 'x', we don't need the math parser - + % if '#1' is '\x' or 'x', we don't need the math parser - % we can simply take \tikz@plot@var. \def\pgfplots@addplotimpl@expression@prepare@x{% \edef\pgfplots@current@point@x{\tikz@plot@var}% @@ -4973,7 +5024,7 @@ \def\pgfplots@addplotimpl@expression@yEXPR{##1}% \def\pgfplots@addplotimpl@expression@zEXPR{##2}% }% - \pgfplots@addplotimpl@expression@split@yz#4\pgfplots@EOI% + \pgfplots@addplotimpl@expression@split@yz#2\pgfplots@EOI% % % we don't have 'samples at' for 3D plots -> use domain! \expandafter\pgfplots@domain@to@foreach\pgfplots@plot@domain\relax{\pgfplots@plot@samples}% @@ -5025,7 +5076,7 @@ % % if( % x is logarithmic && - % #3 == '\x' && + % #1 == '\x' && % the 'samples at' key has not been used ) % -> sample logarithmically! \def\pgfplots@samples@logarithmically{0}% @@ -5088,7 +5139,7 @@ }% \fi \expandafter\def\pgfplots@plot@var@y{0}% - \def\pgfplots@addplotimpl@expression@yEXPR{#4}% + \def\pgfplots@addplotimpl@expression@yEXPR{#2}% \def\pgfplots@current@point@z{}% \fi % @@ -5147,18 +5198,43 @@ \let\pgfmathx@=\pgfplots@addplotimpl@expression@pseudoconst@old@x \let\pgfmathy@=\pgfplots@addplotimpl@expression@pseudoconst@old@y % + %\pgfplots@expression@normalize@floats + % % process coords as usual: \pgfplots@coord@stream@coord }% \pgfplots@coord@stream@end }% + +% Typically, the FPU will generate stuff like '1Y1.0e5'. Since such +% internal representations will be available to API users (especially +% 'x filter' and its variants, we want to simplify its output - by +% normalizing it. +% +% This routine will convert any floats to scientific format, i.e. +% 1.0e5 instead of 1Y1.0e5 (1Y means 'positive float', compare +% pgfmathfloat.code.tex). +\def\pgfplots@expression@normalize@floats{% + \pgflibraryfpuifactive{% + \ifx\pgfplots@current@point@x\pgfutil@empty\else + \pgfmathfloattosci{\pgfplots@current@point@x}\let\pgfplots@current@point@x=\pgfmathresult + \fi% + \ifx\pgfplots@current@point@y\pgfutil@empty\else + \pgfmathfloattosci{\pgfplots@current@point@y}\let\pgfplots@current@point@y=\pgfmathresult + \fi% + \ifx\pgfplots@current@point@z\pgfutil@empty\else + \pgfmathfloattosci{\pgfplots@current@point@z}\let\pgfplots@current@point@z=\pgfmathresult + \fi% + }{% + }% +}% + % \addplot[#1] [#2] {#3} #4; \long\def\pgfplots@addplotimpl@expression@curly#1#2#3#4;{\pgfplots@addplotimpl@expression@curly@{#1}{#2}{#3}{#4}}% \long\def\pgfplots@addplotimpl@expression@curly@#1#2#3#4{% - \pgfplots@gettikzinternal@keyval{variable}{tikz@plot@var}{\x}% + \pgfplots@addplotimpl@expression@set@options{#1}{#2}% \ifpgfplots@curplot@threedim \t@pgfplots@toka={,#3}% - \def\pgfplots@loc@TMPa{\pgfplots@addplotimpl@expression@{#1}{#2}}% % the \pgfplots@plot@var@y will expand to the current value of % '/pgfplots/variable y'. % Keep it this way, \pgfplots@addplotimpl@expression@ checks @@ -5167,11 +5243,9 @@ {\expandafter\noexpand\tikz@plot@var}% {\noexpand\pgfplots@plot@var@y\the\t@pgfplots@toka}% }% - \expandafter\pgfplots@loc@TMPa\pgfplots@loc@TMPb{#4}% + \expandafter\pgfplots@addplotimpl@expression@@\pgfplots@loc@TMPb{#4}% \else - \t@pgfplots@tokc={\pgfplots@addplotimpl@expression@{#1}{#2}}% - \def\pgfplots@loc@TMPa{\the\t@pgfplots@tokc}% this construction allows '#' in either '#1' or '#2' - \expandafter\pgfplots@loc@TMPa\expandafter{\tikz@plot@var}{#3}{#4}% + \expandafter\pgfplots@addplotimpl@expression@@\expandafter{\tikz@plot@var}{#3}{#4}% \fi }% % \addplot[#1] [#2] expression[#3] {#4} #5; @@ -5383,7 +5457,7 @@ \def\pgfplots@plot@data{\pgfplotgnuplot[\pgfplots@plot@filename]{% \pgfplots@gnuplot@format; set samples \pgfkeysvalueof{/pgfplots/samples}\if0\b@pgfplots@should@sample@LINE, \pgfkeysvalueof{/pgfplots/samples y}\fi; - set dummy \pgfplots@gnuplot@x,\pgfplots@gnuplot@y; + set dummy \pgfplots@gnuplot@x\if0\b@pgfplots@should@sample@LINE,\pgfplots@gnuplot@y\fi; \ifx\pgfplots@gnuplot@logdirs\pgfutil@empty \else set logscale \pgfplots@gnuplot@logdirs\space 2.71828182845905; diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex index 112e33330de..ac17d5ffb5e 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplotscore.code.tex @@ -217,7 +217,7 @@ \pgfplotsthrow@warning{Sorry, the colorbar is uninitialised - your axis has no color data. Consider using 'point meta=f(x)' or something like that. I am using a color range of [0,1] for the colorbar.}% }, /pgfplots/warning/colorbar CMYK unsupported/.code={% - \pgfplotsthrow@warning{colorbar: The colormap '#1' has a CMYK colorspace which is not (yet) supported by PGF. I switched colorbar styles automatically to 'colorbar sampled={surf,shader=interp}' to generate a proper CMYK colorbar. Use \string\pgfplotscolorbarCMYKworkaroundfalse\space to disable this improvement. [This message won't be replicated for '#1']}% + \pgfplotsthrow@warning{colorbar remark: The colormap '#1' has a CMYK colorspace which is not (yet) supported by PGF. I switched colorbar styles automatically to the visually equivalent 'colorbar sampled={surf,shader=interp}' to generate a proper CMYK colorbar. This has less support in some previewers. Use \string\pgfplotscolorbarCMYKworkaroundfalse\space to disable this improvement. [This message won't be replicated for '#1']}% }, /pgfplots/warning/ticklabel anchor undetermined/.code args={#1#2#3#4}{% \pgfplotsthrow@warning{the ticklabel anchor cannot be determined, the normal vector -(#2) and the unit #1 vector (#3) are almost parallel (abs(cos(angle)) = #4)!}% diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex index e1430c929cb..9d1ee9221e2 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsmeshplothandler.code.tex @@ -2227,6 +2227,7 @@ \global\pgf@x=\pgfplotspatchvertexx\space \global\pgf@y=\pgfplotspatchvertexy\space % compute the bounding box using the vertices: + \pgfpointtransformed{}% \pgf@protocolsizes{\pgf@x}{\pgf@y}% }% \fi @@ -2498,7 +2499,6 @@ % use colordata of ONE corner point. That's easy, not % much to do. \def\pgfplotsplothandlermesh@get@flat@color{% - \message{pgfplotsplothandlermesh@get@flat@color^^J}% \pgfplotspatchclass{\pgfplotsplothandlermesh@patchclass@output}{first vertex}% \let\pgfplots@current@point@meta=\pgfplotspatchvertexmeta \pgfplotsaxisvisphasetransformpointmeta @@ -2658,11 +2658,14 @@ /pgfplots/mesh/rows=3, /pgfplots/mesh/cols=3, /pgfplots/mesh/num points=, + /pgfplots/mesh input=lattice, + /pgfplots/patch type=rectangle, /tikz/x={(0.44237cm,-0.07439cm)}, /tikz/y={(0.30942cm,0.23932cm)}, /tikz/z={(0.0cm,1.5cm)}, scale=0.4, yshift=-0.7cm, + /pgfplots/point meta=explicit, ] \let\pgfplots@metamax=\pgfutil@empty \pgfplots@curplot@threedimtrue @@ -2676,22 +2679,15 @@ \pgfmathparse{1000/(\rangeb-\rangea)} \let\factor=\pgfmathresult - \pgfutil@IfUndefined{pgfqpointxyz@orig}{% - \let\pgfqpointxyz@orig=\pgfqpointxyz - }{}% - % \def\simplecoordinate(##1,##2,##3){% \pgfmathparse{\factor*(##3 - \rangea)}% \pgfmathfloatparsenumber\pgfmathresult \let\pgfplots@current@point@meta=\pgfmathresult - % pgfplots changes \pgfqpointxyz to - % \pgfplotspointdescriptionxy inside of legends, so use the - % '@orig' point command: - \pgfplotstreampoint{\pgfqpointxyz@orig{##1}{##2}{##3}}% + \pgfplotstreampoint{\pgfqpointxyz{##1}{##2}{##3}}% }% % for the case 'shader=interp': - \def\pgfplotspointbbupperright{\pgfqpointxyz@orig{2}{2}{0.9}} - \def\pgfplotspointbblowerleft {\pgfqpointxyz@orig{0}{0}{0.1}} + %\def\pgfplotspointbbupperright{\pgfqpointxyz{2}{2}{0.9}} + %\def\pgfplotspointbblowerleft {\pgfqpointxyz{0}{0}{0.1}} \simplecoordinate(0,2,0.7) \simplecoordinate(1,2,0.5) @@ -2745,7 +2741,7 @@ \def\pgfplotsplothandlermesh@PIPE@DECODE@to@shader#1{% \pgfplotsaxisvisphasetransformpointmeta \ifpgf@relevantforpicturesize - \pgf@process{#1}% + \pgfpointtransformed{#1}% \pgf@protocolsizes{\pgf@x}{\pgf@y}% \fi \pgfplotslibrarysurfstreamcoord diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex index 36e891d4fd4..450fa25878b 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsplothandlers.code.tex @@ -462,10 +462,10 @@ \csname pgfplotstransformdirection\pgfplots@bar@direction@choice@\endcsname{\pgfplots@loc@TMPa}% \let\pgfplots@loc@TMPa=\pgfmathresult \if\pgfplots@bar@direction@choice@ x% - \pgfqpointxy{\pgfplots@loc@TMPa}{0}% + \pgfqpointxy@orig{\pgfplots@loc@TMPa}{0}% \edef\pgfmathresult{\pgf@sys@tonumber\pgf@x}% \else - \pgfqpointxy{0}{\pgfplots@loc@TMPa}% + \pgfqpointxy@orig{0}{\pgfplots@loc@TMPa}% \edef\pgfmathresult{\pgf@sys@tonumber\pgf@y}% \fi %\edef\pgfplots@loc@TMPa{{\pgf@sys@tonumber\pgf@x}{\pgf@sys@tonumber\pgf@y}}% @@ -1091,16 +1091,16 @@ % \E\pgfplots@invoke@prefilter % - \E\pgfplots@prepare@xcoord{\E\pgfplots@current@point@x}% + \E\expandafter\E\pgfplots@prepare@xcoord\E\expandafter{\E\pgfplots@current@point@x}% \E\expandafter\E\pgfplots@invoke@filter\E\expandafter{\E\pgfmathresult}{x}% \E\let\E\pgfplots@current@point@x=\E\pgfmathresult % - \E\pgfplots@prepare@ycoord{\E\pgfplots@current@point@y}% + \E\expandafter\E\pgfplots@prepare@ycoord\E\expandafter{\E\pgfplots@current@point@y}% \E\expandafter\E\pgfplots@invoke@filter\E\expandafter{\E\pgfmathresult}{y}% \E\let\E\pgfplots@current@point@y=\E\pgfmathresult % \ifpgfplots@curplot@threedim - \E\pgfplots@prepare@zcoord{\E\pgfplots@current@point@z}% + \E\expandafter\E\pgfplots@prepare@zcoord\E\expandafter{\E\pgfplots@current@point@z}% \E\expandafter\E\pgfplots@invoke@filter\E\expandafter{\E\pgfmathresult}{z}% \E\let\E\pgfplots@current@point@z=\E\pgfmathresult \fi @@ -1769,7 +1769,10 @@ \let\pgfp@hist@totalcount@times@h@inv=\pgfmathresult % FIXME : this here is a patch suggestion for % https://sourceforge.net/tracker/?func=detail&atid=1060656&aid=3609245&group_id=224188 -\let\pgfp@hist@totalcount@times@h@inv=\pgfp@hist@totalcount@inv +% +% FIXME : this line would actually compute relative frequencies... +% might not be too bad at all, but is no density +%\let\pgfp@hist@totalcount@times@h@inv=\pgfp@hist@totalcount@inv \pgfplotsarrayforeachungrouped{pgfp@hist}\as\pgfplots@hist@count{% \pgfmathfloatparsenumber{\pgfplots@hist@count}% \pgfmathfloatmultiply@{\pgfmathresult}{\pgfp@hist@totalcount@times@h@inv}% diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex index 8118ad2ef16..65562458c82 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsstackedplots.code.tex @@ -418,14 +418,20 @@ % /pgfplots/stacked ignores zero \def\pgfplots@stacked@visphase@stream@coord@{% \ifpgfplots@stacked@ignores@zero - \ifx\pgfplots@current@point@x\pgfutil@empty% this implements `unbounded coords=jump', for example - \else - \pgfplotscoordmath{\pgfplots@stacked@dir}{if is}{\pgfplots@stacked@diff}{0}{% - \let\pgfplots@current@point@x=\pgfutil@empty - \let\pgfplots@current@point@y=\pgfutil@empty - \let\pgfplots@current@point@z=\pgfutil@empty - }{% - }% + \edef\pgfplots@loc@TMPa{\pgfkeysvalueof{/pgfplots/stacked ignores zero/\pgfplots@visphase@name}}% + \def\pgfplots@loc@TMPb{true}% + % apply this feature only if it is active for the current + % visualization phase: + \ifx\pgfplots@loc@TMPb\pgfplots@loc@TMPa + \ifx\pgfplots@current@point@x\pgfutil@empty% this implements `unbounded coords=jump', for example + \else + \pgfplotscoordmath{\pgfplots@stacked@dir}{if is}{\pgfplots@stacked@diff}{0}{% + \let\pgfplots@current@point@x=\pgfutil@empty + \let\pgfplots@current@point@y=\pgfutil@empty + \let\pgfplots@current@point@z=\pgfutil@empty + }{% + }% + \fi \fi \fi }% diff --git a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex index 88e1bea367b..facc28cbe67 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/pgfplotsticks.code.tex @@ -598,27 +598,27 @@ \def\pgfplots@user@ticklabel@list@x{% \pgfplotslistselectorempty\ticknum\of\pgfplots@xticklabels\to\tick - \tick + \pgfplots@ticklabel@typeset@arg\tick } \def\pgfplots@user@ticklabel@list@y{% \pgfplotslistselectorempty\ticknum\of\pgfplots@yticklabels\to\tick - \tick + \pgfplots@ticklabel@typeset@arg\tick } \def\pgfplots@user@ticklabel@list@z{% \pgfplotslistselectorempty\ticknum\of\pgfplots@zticklabels\to\tick - \tick + \pgfplots@ticklabel@typeset@arg\tick } \def\pgfplots@user@extra@ticklabel@list@x{% \pgfplotslistselectorempty\ticknum\of\pgfplots@extra@xticklabels\to\tick - \tick + \pgfplots@ticklabel@typeset@arg\tick } \def\pgfplots@user@extra@ticklabel@list@y{% \pgfplotslistselectorempty\ticknum\of\pgfplots@extra@yticklabels\to\tick - \tick + \pgfplots@ticklabel@typeset@arg\tick } \def\pgfplots@user@extra@ticklabel@list@z{% \pgfplotslistselectorempty\ticknum\of\pgfplots@extra@zticklabels\to\tick - \tick + \pgfplots@ticklabel@typeset@arg\tick } \def\pgfplots@limit@max@reg#1{% @@ -639,55 +639,59 @@ % Check if a label does not cross the x-axis \def\pgfplots@ytick@check@tickshow{% \pgfplots@tickshowtrue - \if\pgfplots@yaxislinesnum2% center - \ifcase\pgfplots@xaxislinesnum\relax - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@min@reg{y}} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@max@reg{y}} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \or - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@min@reg{y}} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{% - }% - \or - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@logical@ZERO@y pt} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \or + \ifpgfplots@hide@obscured@ytick + \if\pgfplots@yaxislinesnum2% center + \ifcase\pgfplots@xaxislinesnum\relax + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@min@reg{y}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@max@reg{y}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \or + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@min@reg{y}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{% + }% + \or + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@logical@ZERO@y pt} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \or + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@max@reg{y}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \fi + \fi + \fi +} +\def\pgfplots@ztick@check@tickshow{% + \pgfplots@tickshowtrue + \ifpgfplots@hide@obscured@ztick + \if\pgfplots@zaxislinesnum2% center \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@max@reg{y}} + {\pgfplots@tmpa}{\pgfplots@logical@ZERO@z pt} {\pgfplots@loc@tick@placement@tolerance} {% \pgfplots@tickshowfalse }{}% \fi \fi -} -\def\pgfplots@ztick@check@tickshow{% - \pgfplots@tickshowtrue - \if\pgfplots@zaxislinesnum2% center - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@logical@ZERO@z pt} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \fi }% % Fills the macros @@ -823,41 +827,43 @@ % This is just a special case for centered axis lines. \def\pgfplots@xtick@check@tickshow{% \pgfplots@tickshowtrue - \if\pgfplots@xaxislinesnum2% center - \ifcase\pgfplots@yaxislinesnum\relax - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@min@reg{x}} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@max@reg{x}} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \or - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@min@reg{x}} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \or - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@logical@ZERO@x pt} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% - \or - \pgfplotsmath@ifapproxequal@dim - {\pgfplots@tmpa}{\pgfplots@limit@max@reg{x}} - {\pgfplots@loc@tick@placement@tolerance} - {% - \pgfplots@tickshowfalse - }{}% + \ifpgfplots@hide@obscured@xtick + \if\pgfplots@xaxislinesnum2% center + \ifcase\pgfplots@yaxislinesnum\relax + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@min@reg{x}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@max@reg{x}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \or + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@min@reg{x}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \or + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@logical@ZERO@x pt} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \or + \pgfplotsmath@ifapproxequal@dim + {\pgfplots@tmpa}{\pgfplots@limit@max@reg{x}} + {\pgfplots@loc@tick@placement@tolerance} + {% + \pgfplots@tickshowfalse + }{}% + \fi \fi \fi } @@ -1259,6 +1265,14 @@ % region. Tick lines (and grid lines) won't extend to the left or % right of axis #1. \def\pgfplots@drawtickgridlines@INSTALLCLIP@onorientedsurf#1{% + \ifpgfplots@enable@tick@line@clipping + % this is LEGACY SUPPORT only. I did not want to change + % existing bounding boxes. + % Starting with 'compat=1.11', this is OFF. + \pgfplots@drawtickgridlines@INSTALLCLIP@onorientedsurf@{#1}% + \fi +} +\def\pgfplots@drawtickgridlines@INSTALLCLIP@onorientedsurf@#1{% \pgfinterruptboundingbox% \begingroup % the case ||e_b|| == 0 should never happen here! Should be @@ -1280,16 +1294,35 @@ \relax }{% \begingroup - \pgfplots@ifaxisline@B@onorientedsurf@should@be@drawn{0}{% + % FIXME : the case of centered axis lines is missing here. + % 0 = lower limit, + % 1 = upper limit + % 2 = centered... + % Currently, "0" is also used for centered axis lines. + \if 2\csname pgfplots@\pgfplotspointonorientedsurfaceA axislinesnum\endcsname + % centered axis lines need no complicated visibility + % checks. They need tick lines in *any* case. + % So, enabled them here! \def\pgfplots@drawticklines@for@placecomputedtick@LOWEROK{1}% - }{% - \def\pgfplots@drawticklines@for@placecomputedtick@LOWEROK{0}% - }% - \pgfplots@ifaxisline@B@onorientedsurf@should@be@drawn{1}{% - \def\pgfplots@drawticklines@for@placecomputedtick@UPPEROK{1}% - }{% + % + % UPPEROK is unnecessary in this context - for centered + % axis lines, it will be disabled anyway because the + % styles like 'axis x line*' set \pgfplots@xticknum to + % center - and that means that no tick lines will be drawn + % (see below). \def\pgfplots@drawticklines@for@placecomputedtick@UPPEROK{0}% - }% + \else + \pgfplots@ifaxisline@B@onorientedsurf@should@be@drawn{0}{% + \def\pgfplots@drawticklines@for@placecomputedtick@LOWEROK{1}% + }{% + \def\pgfplots@drawticklines@for@placecomputedtick@LOWEROK{0}% + }% + \pgfplots@ifaxisline@B@onorientedsurf@should@be@drawn{1}{% + \def\pgfplots@drawticklines@for@placecomputedtick@UPPEROK{1}% + }{% + \def\pgfplots@drawticklines@for@placecomputedtick@UPPEROK{0}% + }% + \fi \if\pgfkeysvalueof{/pgfplots/\pgfplotspointonorientedsurfaceB\space dir/value}r% % local special handling for reversed axes: exchange % meaning of 'left' and 'right' here. 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 58ae93cbc1a..655c96f2c86 100644 --- a/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex +++ b/Master/texmf-dist/tex/generic/pgfplots/util/pgfplotsutil.code.tex @@ -458,7 +458,8 @@ % for two-dimensional plots and shall be optimized. \def\pgfplotsqpointxy@orthogonal#1#2{% \global\pgf@x=#1\pgf@xx% - \global\pgf@y=#2\pgf@yy} + \global\pgf@y=#2\pgf@yy +} % Takes a domain as input and generates a foreach argument which @@ -1278,6 +1279,32 @@ }% }% +% Tests if string '#2' starts with pattern '#1'. +% +% If so, it executes #3 and defines \pgfplotsretval to contain the +% suffix which is not equal to #1. Otherwise it executes #4. +\def\pgfplotsutilifstartswith#1#2#3#4{% + \def\pgfplotsutilifstartswith@ ##1#1##2\pgfplots@EOI{% + \def\pgfplotsutil@tmp{##1}% + \ifx\pgfplotsutil@tmp\pgfutil@empty + % Ah - a hit! + % + % define \pgfplotsretval to be the suffix... + \def\pgfplotsutil@tmp#1####1\pgfplots@EOI{% + \def\pgfplotsretval{####1}% + }% + \pgfplotsutil@tmp#2\pgfplots@EOI + % + % ... and execute the <true> code: + #3\relax + \else + % hm. No such prefix. + #4\relax + \fi + }% + \pgfplotsutilifstartswith@#2--#1\pgfplots@EOI +}% + % Usage: % \pgfplotsutilstrreplace{<token>}{<replacement>}{<string>} % |