summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz/tikz.code.tex
diff options
context:
space:
mode:
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.tex127
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
}%