diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex | 127 |
1 files changed, 87 insertions, 40 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex index 5f67167ad37..2d428f666f6 100644 --- a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex +++ b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex @@ -283,7 +283,18 @@ % Radii and arc options \tikzset{x radius/.initial=0pt}% \tikzset{y radius/.initial=0pt}% -\tikzset{radius/.style={/tikz/x radius=#1,/tikz/y radius=#1}}% +\tikzset{% + radius/.code={% + \pgfmathparse{#1}% + \ifpgfmathunitsdeclared + \pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult pt}% + \pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult pt}% + \else + \pgfkeyssetevalue{/tikz/x radius}{\pgfmathresult}% + \pgfkeyssetevalue{/tikz/y radius}{\pgfmathresult}% + \fi + }% +}% \tikzset{start angle/.initial=}% \tikzset{end angle/.initial=}% \tikzset{delta angle/.initial=}% @@ -696,9 +707,9 @@ \bgroup [current point is local = true] \pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}% - node [every pin, - tikz@label@angle = #2, + node [tikz@label@angle = #2, anchor=@auto, + every pin, #1, append after command = {% (\tikz@save@last@node) @@ -726,9 +737,9 @@ \bgroup [current point is local = true] \pgfextra{\let\tikz@save@last@node=\tikzlastnode\tikz@node@is@a@labelfalse}% - node [every pin, - tikz@label@angle = #2, + node [tikz@label@angle = #2, anchor=@auto, + every pin, #1, append after command = {% (\tikz@save@last@node) @@ -857,9 +868,9 @@ \bgroup [current point is local=true] \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse} - node [every label, - tikz@label@angle = #2, + node [tikz@label@angle = #2, anchor=@auto, + every label, #1, tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}} \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name} @@ -887,9 +898,9 @@ \bgroup [current point is local=true] \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name\tikz@node@is@a@labelfalse} - node [every label, - tikz@label@angle = #2, + node [tikz@label@angle = #2, anchor=@auto, + every label, #1, tikz@label@post = \tikz@label@distance] {\iftikz@handle@active@nodes\expandafter\scantokens\else\expandafter\pgfutil@firstofone\fi{#3\noexpand}} \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name} @@ -1030,7 +1041,7 @@ \tikz@addtransform{% \expandafter\tikz@extract@node@dist\tikz@node@distance and\pgf@stop% \pgftransformshift{\pgfpointpolar{#2}{\tikz@extracted@node@distance}}}% - \def\tikz@node@at{\pgfpointanchor{#1}{center}}}% + \def\tikz@node@at{\pgfpointanchor{\tikz@pp@name{#1}}{center}}}% \def\tikz@extract@node@dist#1and#2\pgf@stop{% \def\tikz@extracted@node@distance{#1}}% @@ -1147,15 +1158,17 @@ \tikzset{badness warnings for centered text/.is if=tikz@warn@for@narrow@centered}% \newif\iftikz@warn@for@narrow@centered -\let\tikz@text@width=\pgfutil@empty -\let\tikz@text@height=\pgfutil@empty -\let\tikz@text@depth=\pgfutil@empty -\let\tikz@textcolor=\pgfutil@empty -\let\tikz@textfont=\pgfutil@empty -\let\tikz@textopacity=\pgfutil@empty -\let\tikz@node@textfont=\pgfutil@empty - -\def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}% +\def\tikz@text@reset{% + \let\tikz@text@width=\pgfutil@empty + \let\tikz@text@height=\pgfutil@empty + \let\tikz@text@depth=\pgfutil@empty + \let\tikz@textcolor=\pgfutil@empty + \let\tikz@textfont=\pgfutil@empty + \let\tikz@textopacity=\pgfutil@empty + \let\tikz@node@textfont=\pgfutil@empty + \def\tikz@text@action{\pgfutil@raggedright\rightskip0pt plus2em \spaceskip.3333em \xspaceskip.5em\relax}% +} +\tikz@text@reset % Alignment @@ -2058,7 +2071,6 @@ % settings. \def\tikz@command@path{% - \global\let\tikz@intersect@namedpaths=\pgfutil@empty% clear intersections \let\tikz@signal@path=\tikz@signal@path% for detection at begin of matrix cell \pgfutil@ifnextchar[{\tikz@check@earg}%] {\pgfutil@ifnextchar<{\tikz@doopt}{\tikz@@command@path}}}% @@ -3615,7 +3627,7 @@ \tikzset{every circle/.try,#1}% \pgftransformshift{\tikz@node@at}% \tikz@transform% - \tikz@do@circle{\pgfkeysvalueof{/tikz/x radius}}{\pgfkeysvalueof{/tikz/y radius}} + \tikz@do@ellipse{\pgfkeysvalueof{/tikz/x radius}}{\pgfkeysvalueof{/tikz/y radius}} }% \tikz@scan@next@command% }% @@ -3627,15 +3639,28 @@ \ifpgfutil@in@% \tikz@@ellipseB(#1)% \else% - \tikz@do@circle{#1}{#1}% + \tikz@do@circle{#1}% \fi% }% \tikz@scan@next@command% }% \def\tikz@@ellipseB(#1 and #2){% - \tikz@do@circle{#1}{#2} + \tikz@do@ellipse{#1}{#2}% }% -\def\tikz@do@circle#1#2{ +\def\tikz@do@circle#1{% + \pgfmathparse{#1}% + \let\tikz@ellipse@x=\pgfmathresult + \ifpgfmathunitsdeclared + \pgfpathellipse{\pgfpointorigin}% + {\pgfqpoint{\tikz@ellipse@x pt}{0pt}}% + {\pgfpoint{0pt}{\tikz@ellipse@x pt}}% + \else + \pgfpathellipse{\pgfpointorigin}% + {\pgfpointxy{\tikz@ellipse@x}{0}}% + {\pgfpointxy{0}{\tikz@ellipse@x}}% + \fi +} +\def\tikz@do@ellipse#1#2{ \pgfmathparse{#1}% \let\tikz@ellipse@x=\pgfmathresult% \ifpgfmathunitsdeclared% @@ -3801,9 +3826,11 @@ \tikz@scan@one@point\tikz@@coordinate@at@math(% }% \def\tikz@@coordinate@at@math#1{% - \pgf@process{#1}% - \edef\tikz@temp{(\the\pgf@x,\the\pgf@y)}% - \expandafter\tikz@coordinate@caller\tikz@temp{}% + \pgfutil@ifundefined{tikz@scan@point@coordinate}% + {\pgf@process{#1}% + \edef\tikz@temp{(\the\pgf@x,\the\pgf@y)}% + \expandafter\tikz@coordinate@caller\tikz@temp{}} + {\expandafter\tikz@coordinate@caller\tikz@scan@point@coordinate{}}% }% @@ -3935,10 +3962,8 @@ \ifx\tikz@textcolor\pgfutil@empty% \else% \pgfutil@colorlet{.}{\tikz@textcolor}% + \pgfutil@color{\tikz@textcolor}% \fi% - % FIXME : this here is the proposed solution for <https://sourceforge.net/p/pgf/bugs/362/> - % but it caused <https://sourceforge.net/p/pgf/bugs/503/>. - % \pgfutil@color{.}% \setbox\tikz@figbox=\box\pgfutil@voidb@x% \setbox\tikz@figbox@bg=\box\pgfutil@voidb@x% \tikz@uninstallcommands% @@ -3950,6 +3975,8 @@ \ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi% \ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi% \aftergroup\tikz@fig@collectresetcolor% + \tikz@signal@halign@check% + \tikz@text@reset% \tikz@halign@check% \ignorespaces% }% @@ -4004,6 +4031,7 @@ \def\tikz@matrix@shift{\pgfpointorigin}% \fi% \let\tikz@transform=\relax% + \pgfmatrixbeforeassemblenode{\tikzset{every outer matrix/.try}}% \pgfmatrix% {\tikz@shape}% {\tikz@m@anchor}% @@ -4214,7 +4242,7 @@ \newif\iftikz@do@align % Alignment handling -\def\tikz@halign@check{% +\def\tikz@signal@halign@check{% \tikz@do@alignfalse \ifx\tikz@text@width\pgfutil@empty% \pgfkeysgetvalue{/tikz/node halign header}\tikz@align@header% @@ -4223,6 +4251,8 @@ \tikz@do@aligntrue% \fi% \fi% +} +\def\tikz@halign@check{% \iftikz@do@align% % Bingo \setbox\tikz@align@aligned@box=\box\pgfutil@voidb@x% void @@ -4341,6 +4371,8 @@ \ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi% \tikz@atbegin@node% \aftergroup\tikz@fig@collectresetcolor% + \tikz@signal@halign@check% + \tikz@text@reset% \tikz@halign@check% \ignorespaces% }% @@ -4379,9 +4411,17 @@ {\pgfutil@ifnextchar\bgroup{\tikz@nodes@main}% {\tikzerror{Nodes must have a (possibly empty) label text}% \tikz@fig@main{}}}}}}%}}% -\def\tikz@nodes@at at#1){% + +% Look ahead whether the next character is a (. If that is the case, we scan +% until ), otherwise we grab a single token and append. +\def\tikz@nodes@at at{\pgfutil@ifnextchar({\tikz@nodes@at@}{\tikz@nodes@at@@}}% +\def\tikz@nodes@at@#1){% \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1)}% \tikz@nodes@scan}% +\def\tikz@nodes@at@@#1{% + \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect at#1}% + \tikz@nodes@scan}% + \def\tikz@nodes@name#1){% \expandafter\def\expandafter\tikz@nodes@collect\expandafter{\tikz@nodes@collect#1)}% \tikz@nodes@scan}% @@ -4786,7 +4826,7 @@ \let\tikz@picmode\tikz@mode% \tikzset{name prefix ../.style/.expanded={/tikz/name prefix=\pgfkeysvalueof{/tikz/name prefix}}}% \ifx\tikz@fig@name\pgfutil@empty\else% - \tikzset{name prefix/.prefix/.expanded=\tikz@fig@name}% + \tikzset{name prefix/.expanded=\tikz@fig@name}% \fi% \pgfkeysvalueof{/tikz/pics/setup code}% \pgfkeysgetvalue{/tikz/pics/code}{\tikz@pic@code} @@ -5387,19 +5427,26 @@ \else% \tikz@calc@anchor#2.center\tikz@stop% to be on the save side, in % case iftikz@shapeborder is ignored... - \expandafter\ifx\csname pgf@sh@ns@\tikz@pp@name{#2}\endcsname\tikz@coordinate@text% - \else - \tikz@shapebordertrue% - \def\tikz@shapeborder@name{\tikz@pp@name{#2}}% - \fi% + \ifcsname pgf@sh@ns@\tikz@pp@name{#2}\endcsname + \expandafter\ifx\csname pgf@sh@ns@\tikz@pp@name{#2}\endcsname\tikz@coordinate@text% + \else + \tikz@shapebordertrue% + \def\tikz@shapeborder@name{\tikz@pp@name{#2}}% + \fi% + \fi \fi% - \expandafter\let\expandafter\tikz@declared@coordinate\csname tikz@dcl@coord@\tikz@pp@name{#2}\endcsname \edef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}% \tikz@marshal% }% \def\tikz@calc@anchor#1.#2\tikz@stop{% - \pgfpointanchor{\tikz@pp@name{#1}}{#2}% + % Check if a shape with name prefix exists, otherwise try the global name + % without prefix. + \ifcsname pgf@sh@ns@\tikz@pp@name{#1}\endcsname% + \pgfpointanchor{\tikz@pp@name{#1}}{#2}% + \else + \pgfpointanchor{#1}{#2}% + \fi }% |