summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz.code.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz.code.tex')
-rw-r--r--Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz.code.tex3618
1 files changed, 0 insertions, 3618 deletions
diff --git a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz.code.tex b/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz.code.tex
deleted file mode 100644
index 805f27bcad6..00000000000
--- a/Master/texmf-dist/tex/generic/pgf/frontendlayer/tikz.code.tex
+++ /dev/null
@@ -1,3618 +0,0 @@
-% Copyright 2006 by Till Tantau
-%
-% This file may be distributed and/or modified
-%
-% 1. under the LaTeX Project Public License and/or
-% 2. under the GNU Public License.
-%
-% See the file doc/generic/pgf/licenses/LICENSE for more details.
-
-\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/generic/pgf/frontendlayer/tikz.code.tex,v 1.87 2007/06/07 07:41:10 tantau Exp $
-
-
-% Always-present libraries:
-
-\usepgflibrary{plothandlers}
-
-
-\let\tikz@orig@setkeys=\setkeys % guard against changes, later
-\let\tikz@orig@define@key=\define@key
-
-\newdimen\tikz@lastx
-\newdimen\tikz@lasty
-\newdimen\tikz@lastxsaved
-\newdimen\tikz@lastysaved
-
-\newdimen\tikzleveldistance
-\newdimen\tikzsiblingdistance
-
-\newbox\tikz@figbox
-\newbox\tikz@tempbox
-
-\newcount\tikztreelevel
-\newcount\tikznumberofchildren
-\newcount\tikznumberofcurrentchild
-
-\newcount\tikz@fig@count
-
-\newif\iftikz@node@is@a@label
-\newif\iftikz@snaked
-
-\let\tikz@options=\pgfutil@empty
-\def\tikz@addoption#1{\expandafter\def\expandafter\tikz@options\expandafter{\tikz@options#1}}
-\def\tikz@addmode#1{\expandafter\def\expandafter\tikz@mode\expandafter{\tikz@mode#1}}
-\def\tikz@addtransform#1{%
- \ifx\tikz@transform\relax%
- #1%
- \else%
- \expandafter\def\expandafter\tikz@transform\expandafter{\tikz@transform#1}%
- \fi%
-}
-
-
-
-% TikZ options:
-
-\def\tikzoption{\tikz@orig@define@key{tikz}}
-
-
-
-% Baseline options
-\tikzoption{baseline}[0pt]{\pgfutil@ifnextchar({\tikz@baseline@coordinate}{\tikz@baseline@simple}#1\@nil}%)
-\def\tikz@baseline@simple#1\@nil{\pgfsetbaseline{#1}}
-\def\tikz@baseline@coordinate#1\@nil{\pgfsetbaselinepointlater{\tikz@scan@one@point\@firstofone#1}}
-
-% Draw options
-\tikzoption{line width}{\tikz@semiaddlinewidth{#1}}%
-
-\def\tikz@semiaddlinewidth#1{\tikz@addoption{\pgfsetlinewidth{#1}}\pgfmathsetlength\pgflinewidth{#1}}
-
-\tikzoption{cap}{\tikz@addoption{\csname pgfset#1cap\endcsname}}
-\tikzoption{join}{\tikz@addoption{\csname pgfset#1join\endcsname}}
-\tikzoption{miter limit}{\tikz@addoption{\pgfsetmiterlimit{#1}}}
-
-\tikzoption{dash pattern}{% syntax: on 2pt off 3pt on 4pt ...
- \def\tikz@temp{#1}%
- \ifx\tikz@temp\pgfutil@empty%
- \def\tikz@dashpattern{}%
- \tikz@addoption{\pgfsetdash{}{0pt}}%
- \else%
- \def\tikz@dashpattern{}%
- \expandafter\tikz@scandashon\pgfutil@gobble#1o\@nil%
- \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
- \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
- \fi}
-\tikzoption{dash phase}{%
- \def\tikz@dashphase{#1}%
- \edef\tikz@temp{{\tikz@dashpattern}{\noexpand\tikz@dashphase}}%
- \expandafter\tikz@addoption\expandafter{\expandafter\pgfsetdash\tikz@temp}%
-}%
-\def\tikz@dashphase{0pt}
-
-\def\tikz@scandashon n#1o{%
- \expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
- \pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashoff}}
-\def\tikz@scandashoff ff#1o{%
- \expandafter\def\expandafter\tikz@dashpattern\expandafter{\tikz@dashpattern{#1}}%
- \pgfutil@ifnextchar\@nil{\pgfutil@gobble}{\tikz@scandashon}}
-
-\tikzoption{draw opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}}}
-
-% Double draw options
-\tikzoption{double}[]{%
- \def\tikz@temp{#1}%
- \ifx\tikz@temp\tikz@nonetext%
- \tikz@addmode{\tikz@mode@doublefalse}%
- \else%
- \ifx\tikz@temp\pgfutil@empty%
- \else%
- \def\tikz@double@color{#1}%
- \fi%
- \tikz@addmode{\tikz@mode@doubletrue}%
- \fi}
-\tikzoption{double distance}{%
- \pgfmathsetlength{\pgf@x}{#1}%
- \edef\tikz@double@width@distance{\the\pgf@x}%
- \tikz@addmode{\tikz@mode@doubletrue}}
-
-\def\tikz@double@width@distance{0.6pt}
-\def\tikz@double@color{white}
-
-% Fill options
-
-\tikzoption{even odd rule}[]{\tikz@addoption{\pgfseteorule}}
-\tikzoption{nonzero rule}[]{\tikz@addoption{\pgfsetnonzerorule}}
-
-\tikzoption{fill opacity}{\tikz@addoption{\pgfsetfillopacity{#1}}}
-
-
-% Joined fill/draw options
-
-\tikzoption{opacity}{\tikz@addoption{\pgfsetstrokeopacity{#1}\pgfsetfillopacity{#1}}}
-
-
-% Main color options
-\tikzoption{color}{%
- \tikz@addoption{%
- \ifx\tikz@fillcolor\pgfutil@empty%
- \ifx\tikz@strokecolor\pgfutil@empty%
- \else%
- \pgfsys@color@reset@inorderfalse%
- \let\tikz@strokecolor\pgfutil@empty%
- \let\tikz@fillcolor\pgfutil@empty%
- \fi%
- \else%
- \pgfsys@color@reset@inorderfalse%
- \let\tikz@strokecolor\pgfutil@empty%
- \let\tikz@fillcolor\pgfutil@empty%
- \fi%
- \pgfutil@colorlet{tikz@color}{#1}%
- \pgfutil@colorlet{.}{tikz@color}%
- \pgfsetcolor{.}%
- \pgfsys@color@reset@inordertrue%
- }%
- \def\tikz@textcolor{#1}}
-
-
-
-% Rounding options
-\tikzoption{rounded corners}[4pt]{\pgfsetcornersarced{\pgfpoint{#1}{#1}}}
-\tikzoption{sharp corners}[]{\pgfsetcornersarced{\pgfpointorigin}}
-
-
-
-% Coordinate options
-\tikzoption{x}{\tikz@handle@vec{\pgfsetxvec}{\tikz@handle@x}#1\relax}
-\tikzoption{y}{\tikz@handle@vec{\pgfsetyvec}{\tikz@handle@y}#1\relax}
-\tikzoption{z}{\tikz@handle@vec{\pgfsetzvec}{\tikz@handle@z}#1\relax}
-
-\def\tikz@handle@vec#1#2{\pgfutil@ifnextchar({\tikz@handle@coordinate#1}{\tikz@handle@single#2}}
-\def\tikz@handle@coordinate#1{\tikz@scan@one@point#1}
-\def\tikz@handle@single#1#2\relax{#1{#2}}
-\def\tikz@handle@x#1{\pgfsetxvec{\pgfpoint{#1}{0pt}}}
-\def\tikz@handle@y#1{\pgfsetyvec{\pgfpoint{0pt}{#1}}}
-\def\tikz@handle@z#1{\pgfsetzvec{\pgfpoint{#1}{#1}}}
-
-
-% Transformation options
-\tikzoption{scale}{\tikz@addtransform{\pgftransformscale{#1}}}
-\tikzoption{xscale}{\tikz@addtransform{\pgftransformxscale{#1}}}
-\tikzoption{xslant}{\tikz@addtransform{\pgftransformxslant{#1}}}
-\tikzoption{yscale}{\tikz@addtransform{\pgftransformyscale{#1}}}
-\tikzoption{yslant}{\tikz@addtransform{\pgftransformyslant{#1}}}
-\tikzoption{rotate}{\tikz@addtransform{\pgftransformrotate{#1}}}
-\tikzoption{rotate around}{\tikz@addtransform{\tikz@rotatearound{#1}}}
-\def\tikz@rotatearound#1{%
- \edef\tikz@temp{#1}% get rid of active stuff
- \expandafter\tikz@rotateparseA\tikz@temp%
-}%
-\def\tikz@rotateparseA#1:{%
- \def\tikz@temp@rot{#1}%
- \tikz@scan@one@point\tikz@rotateparseB%
-}
-\def\tikz@rotateparseB#1{%
- \pgf@process{#1}%
- \pgf@xc=\pgf@x%
- \pgf@yc=\pgf@y%
- \pgftransformshift{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
- \pgftransformrotate{\tikz@temp@rot}%
- \pgftransformshift{\pgfqpoint{-\pgf@xc}{-\pgf@yc}}%
-}
-
-\tikzoption{shift}{\tikz@addtransform{\tikz@scan@one@point\pgftransformshift#1\relax}}
-\tikzoption{xshift}{\tikz@addtransform{\pgftransformxshift{#1}}}
-\tikzoption{yshift}{\tikz@addtransform{\pgftransformyshift{#1}}}
-\tikzoption{cm}{\tikz@addtransform{\tikz@parse@cm#1\relax}}
-\tikzoption{reset cm}[]{\tikz@addtransform{\pgftransformreset}}
-\tikzoption{shift only}[]{\tikz@addtransform{\pgftransformresetnontranslations}}
-
-\def\tikz@parse@cm#1,#2,#3,#4,{%
- \def\tikz@p@cm{{#1}{#2}{#3}{#4}}%
- \tikz@scan@one@point\tikz@parse@cmA}
-\def\tikz@parse@cmA#1{%
- \expandafter\pgftransformcm\tikz@p@cm{#1}%
-}
-
-
-
-% Grid options
-\tikzoption{xstep}{\def\tikz@grid@x{#1}}
-\tikzoption{ystep}{\def\tikz@grid@y{#1}}
-\tikzoption{step}{\tikz@handle@vec{\tikz@step@point}{\tikz@step@single}#1\relax}
-\def\tikz@step@single#1{\def\tikz@grid@x{#1}\def\tikz@grid@y{#1}}
-\def\tikz@step@point#1{\pgf@process{#1}\edef\tikz@grid@x{\the\pgf@x}\edef\tikz@grid@y{\the\pgf@y}}
-
-\def\tikz@grid@x{1cm}
-\def\tikz@grid@y{1cm}
-
-
-% Path usage options
-\newif\iftikz@mode@double
-\newif\iftikz@mode@fill
-\newif\iftikz@mode@draw
-\newif\iftikz@mode@clip
-\newif\iftikz@mode@boundary
-\newif\iftikz@mode@shade
-\let\tikz@mode=\pgfutil@empty
-
-\def\tikz@nonetext{none}
-
-\tikzoption{path only}[]{\let\tikz@mode=\pgfutil@empty}
-\tikzoption{shade}[]{\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{fill}[]{%
- \def\tikz@temp{#1}%
- \ifx\tikz@temp\tikz@nonetext%
- \tikz@addmode{\tikz@mode@fillfalse}%
- \else%
- \ifx\tikz@temp\pgfutil@empty%
- \else%
- \tikz@addoption{\pgfsetfillcolor{#1}}%
- \def\tikz@fillcolor{#1}%
- \fi%
- \tikz@addmode{\tikz@mode@filltrue}%
- \fi%
-}
-\tikzoption{draw}[]{%
- \def\tikz@temp{#1}%
- \ifx\tikz@temp\tikz@nonetext%
- \tikz@addmode{\tikz@mode@drawfalse}%
- \else%
- \ifx\tikz@temp\pgfutil@empty%
- \else%
- \tikz@addoption{\pgfsetstrokecolor{#1}}%
- \def\tikz@strokecolor{#1}%
- \fi%
- \tikz@addmode{\tikz@mode@drawtrue}%
- \fi%
-}
-\tikzoption{clip}[]{\tikz@addmode{\tikz@mode@cliptrue}}
-\tikzoption{use as bounding box}[]{\tikz@addmode{\tikz@mode@boundarytrue}}
-
-\tikzoption{save path}{\tikz@addmode{\pgfsyssoftpath@getcurrentpath#1\global\let#1=#1}}
-
-\let\tikz@fillcolor=\pgfutil@empty
-\let\tikz@strokecolor=\pgfutil@empty
-
-
-% Pattern options
-\tikzoption{pattern color}{\def\tikz@pattern@color{#1}}
-\tikzoption{pattern}[]{%
- \def\tikz@temp{#1}%
- \ifx\tikz@temp\tikz@nonetext%
- \tikz@addmode{\tikz@mode@fillfalse}%
- \else%
- \ifx\tikz@temp\pgfutil@empty%
- \else%
- \tikz@addoption{\pgfsetfillpattern{#1}{\tikz@pattern@color}}%
- \def\tikz@pattern{#1}%
- \fi%
- \tikz@addmode{\tikz@mode@filltrue}%
- \fi%
-}
-\def\tikz@pattern@color{black}
-\def\tikz@pattern{dots}
-
-
-% Shading options
-\tikzoption{shading}{\def\tikz@shading{#1}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{shading angle}{\def\tikz@shade@angle{#1}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{top color}{%
- \pgfutil@colorlet{tikz@axis@top}{#1}%
- \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
- \def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{bottom color}{%
- \pgfutil@colorlet{tikz@axis@bottom}{#1}%
- \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
- \def\tikz@shading{axis}\def\tikz@shade@angle{0}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{middle color}{%
- \pgfutil@colorlet{tikz@axis@middle}{#1}%
- \def\tikz@shading{axis}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{left color}{%
- \pgfutil@colorlet{tikz@axis@top}{#1}%
- \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
- \def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{right color}{%
- \pgfutil@colorlet{tikz@axis@bottom}{#1}%
- \pgfutil@colorlet{tikz@axis@middle}{tikz@axis@top!50!tikz@axis@bottom}%
- \def\tikz@shading{axis}\def\tikz@shade@angle{90}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{ball color}{\pgfutil@colorlet{tikz@ball}{#1}\def\tikz@shading{ball}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{inner color}{\pgfutil@colorlet{tikz@radial@inner}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}
-\tikzoption{outer color}{\pgfutil@colorlet{tikz@radial@outer}{#1}\def\tikz@shading{radial}\tikz@addmode{\tikz@mode@shadetrue}}
-
-\def\tikz@shading{axis}
-\def\tikz@shade@angle{0}
-
-\pgfdeclareverticalshading[tikz@axis@top,tikz@axis@middle,tikz@axis@bottom]{axis}{100bp}{%
- color(0bp)=(tikz@axis@bottom);
- color(25bp)=(tikz@axis@bottom);
- color(50bp)=(tikz@axis@middle);
- color(75bp)=(tikz@axis@top);
- color(100bp)=(tikz@axis@top)}
-
-\pgfutil@colorlet{tikz@axis@top}{gray}
-\pgfutil@colorlet{tikz@axis@middle}{gray!50!white}
-\pgfutil@colorlet{tikz@axis@bottom}{white}
-
-\pgfdeclareradialshading[tikz@ball]{ball}{\pgfqpoint{-10bp}{10bp}}{%
- color(0bp)=(tikz@ball!15!white);
- color(9bp)=(tikz@ball!75!white);
- color(18bp)=(tikz@ball!70!black);
- color(25bp)=(tikz@ball!50!black);
- color(50bp)=(black)}
-
-\pgfutil@colorlet{tikz@ball}{blue}
-
-\pgfdeclareradialshading[tikz@radial@inner,tikz@radial@outer]{radial}{\pgfpointorigin}{%
- color(0bp)=(tikz@radial@inner);
- color(25bp)=(tikz@radial@outer);
- color(50bp)=(tikz@radial@outer)}
-
-\pgfutil@colorlet{tikz@radial@inner}{gray}
-\pgfutil@colorlet{tikz@radial@outer}{white}
-
-
-% Pin options
-\tikzoption{pin}{\pgfutil@ifnextchar[{\tikz@parse@pin}{\tikz@parse@pin[]}#1\pgf@nil}
-\tikzoption{pin distance}{\def\tikz@pin@distance{#1}}
-\tikzoption{pin edge}{\def\tikz@pin@edge@style{#1}}
-
-\tikzoption{tikz@pin@post}[]{%
- \tikz@compute@direction{\tikz@label@angle}{\tikz@pin@distance}%
- \global\let\tikz@pin@edge@style@smuggle=\tikz@pin@edge@style%
-}
-\tikzoption{tikz@pre@pin@edge}[]{\def\pgf@marshal{\tikzstyle{tikz@pin@options}=}
- \expandafter\pgf@marshal\expandafter[\tikz@pin@edge@style@smuggle]%
-}
-
-\def\tikz@pin@distance{3ex}
-\def\tikz@pin@edge@style{}
-
-\def\tikz@parse@pin[#1]#2:#3\pgf@nil{%
- \tikz@add@after@node@path{\bgroup
- \pgfextra{\let\tikz@save@last@node=\tikzlastnode}%
- node
- [every pin,tikz@label@angle=#2,#1,at=(\tikzlastnode.\tikz@label@angle),%
- after node path={(\tikz@save@last@node) edge[every pin edge,tikz@pre@pin@edge,tikz@pin@options] (\tikzlastnode)},
- tikz@pin@post]
- {#3} \egroup}
-}
-
-
-% Label and pin options
-
-\tikzoption{label}{\pgfutil@ifnextchar[{\tikz@parse@label}{\tikz@parse@label[]}#1\pgf@nil}
-\tikzoption{label distance}{\def\tikz@label@distance{#1}}
-
-\tikzoption{tikz@label@angle}{\def\tikz@label@angle{#1}\csname tikz@label@angle@is@#1\endcsname}
-
-\tikzoption{tikz@label@post}[]{\tikz@compute@direction{\tikz@label@angle}{\tikz@label@distance}}
-
-\def\tikz@label@distance{0pt}
-
-\def\tikz@parse@label[#1]#2:#3\pgf@nil{%
- \tikz@add@after@node@path{
- \bgroup
- \pgfextra{\let\tikz@save@last@fig@name=\tikz@last@fig@name}%
- node
- [every label,%
- tikz@label@angle=#2,%
- #1,%
- at=(\tikzlastnode.\tikz@label@angle),tikz@label@post]%
- {#3}%
- \pgfextra{\global\let\tikz@last@fig@name=\tikz@save@last@fig@name}%
- \egroup%
- }
-}
-
-\expandafter\def\csname tikz@label@angle@is@right\endcsname{\def\tikz@label@angle{0}}
-\expandafter\def\csname tikz@label@angle@is@above right\endcsname{\def\tikz@label@angle{45}}
-\expandafter\def\csname tikz@label@angle@is@above\endcsname{\def\tikz@label@angle{90}}
-\expandafter\def\csname tikz@label@angle@is@above left\endcsname{\def\tikz@label@angle{135}}
-\expandafter\def\csname tikz@label@angle@is@left\endcsname{\def\tikz@label@angle{180}}
-\expandafter\def\csname tikz@label@angle@is@below left\endcsname{\def\tikz@label@angle{225}}
-\expandafter\def\csname tikz@label@angle@is@below\endcsname{\def\tikz@label@angle{270}}
-\expandafter\def\csname tikz@label@angle@is@below right\endcsname{\def\tikz@label@angle{315}}
-
-\def\tikz@compute@direction#1#2{%
- \let\tikz@do@auto@anchor=\relax
- \c@pgf@counta=#1\relax%
- \ifnum\c@pgf@counta<0\relax
- \advance\c@pgf@counta by 360\relax%
- \fi%
- \ifnum\c@pgf@counta>359\relax
- \advance\c@pgf@counta by-360\relax%
- \fi%
- \ifnum\c@pgf@counta<4\relax%
- \def\tikz@anchor{west}%
- \else\ifnum\c@pgf@counta<87\relax%
- \def\tikz@anchor{south west}%
- \else\ifnum\c@pgf@counta<94\relax%
- \def\tikz@anchor{south}%
- \else\ifnum\c@pgf@counta<177\relax%
- \def\tikz@anchor{south east}%
- \else\ifnum\c@pgf@counta<184\relax%
- \def\tikz@anchor{east}%
- \else\ifnum\c@pgf@counta<267\relax%
- \def\tikz@anchor{north east}%
- \else\ifnum\c@pgf@counta<274\relax%
- \def\tikz@anchor{north}%
- \else\ifnum\c@pgf@counta<357\relax%
- \def\tikz@anchor{north west}%
- \else%
- \def\tikz@anchor{west}%
- \fi\fi\fi\fi\fi\fi\fi\fi%
- \tikz@addtransform{\pgftransformshift{\pgfpointpolar{#1}{#2}}}%
-}
-
-
-
-% General shape options
-\tikzoption{name}{\edef\tikz@fig@name{#1}}
-
-\tikzoption{at}{\tikz@scan@one@point\tikz@set@at#1}
-\def\tikz@set@at#1{\def\tikz@node@at{#1}}%
-
-\tikzoption{shape}{\edef\tikz@shape{#1}}
-
-\tikzoption{nodes}{\tikzstyle{every node}+=[#1]}
-
-\tikzoption{inner sep}{\def\pgfshapeinnerxsep{#1}\def\pgfshapeinnerysep{#1}}
-\tikzoption{inner xsep}{\def\pgfshapeinnerxsep{#1}}
-\tikzoption{inner ysep}{\def\pgfshapeinnerysep{#1}}
-
-\tikzoption{outer sep}{\def\pgfshapeouterxsep{#1}\def\pgfshapeouterysep{#1}}
-\tikzoption{outer xsep}{\def\pgfshapeouterxsep{#1}}
-\tikzoption{outer ysep}{\def\pgfshapeouterysep{#1}}
-
-\tikzoption{minimum width}{\def\pgfshapeminwidth{#1}}
-\tikzoption{minimum height}{\def\pgfshapeminheight{#1}}
-\tikzoption{minimum size}{\def\pgfshapeminwidth{#1}\def\pgfshapeminheight{#1}}
-
-\tikzoption{aspect}{\pgfsetshapeaspect{#1}}
-
-\tikzoption{after node path}{\tikz@add@after@node@path{#1}}%
-\def\tikz@add@after@node@path#1{\expandafter\def\expandafter\tikz@after@node\expandafter{\tikz@after@node#1}}
-
-\def\tikzaddafternodepathoption#1{%
- #1%
- \expandafter\def\expandafter\tikz@afternodepathoptions\expandafter{\tikz@afternodepathoptions#1}}
-
-\let\tikz@afternodepathoptions=\pgfutil@empty
-
-\tikzoption{anchor}{\def\tikz@anchor{#1}\let\tikz@do@auto@anchor=\relax}
-
-\tikzoption{left}[]{\def\tikz@anchor{east}\tikz@possibly@transform{x}{-}{#1}}
-\tikzoption{right}[]{\def\tikz@anchor{west}\tikz@possibly@transform{x}{}{#1}}
-\tikzoption{above}[]{\def\tikz@anchor{south}\tikz@possibly@transform{y}{}{#1}}
-\tikzoption{below}[]{\def\tikz@anchor{north}\tikz@possibly@transform{y}{-}{#1}}
-\tikzoption{above left}[]%
- {\def\tikz@anchor{south east}%
- \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{}{#1}}
-\tikzoption{above right}[]%
- {\def\tikz@anchor{south west}%
- \tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{}{#1}}
-\tikzoption{below left}[]%
- {\def\tikz@anchor{north east}%
- \tikz@possibly@transform{x}{-}{#1}\tikz@possibly@transform{y}{-}{#1}}
-\tikzoption{below right}[]%
- {\def\tikz@anchor{north west}%
- \tikz@possibly@transform{x}{}{#1}\tikz@possibly@transform{y}{-}{#1}}
-
-\tikzoption{node distance}{\def\tikz@node@distance{#1}}
-\def\tikz@node@distance{1cm}
-
-\tikzoption{above of}{\tikz@of{#1}{90}}%
-\tikzoption{below of}{\tikz@of{#1}{-90}}%
-\tikzoption{left of}{\tikz@of{#1}{180}}%
-\tikzoption{right of}{\tikz@of{#1}{0}}%
-\tikzoption{above left of}{\tikz@of{#1}{135}}%
-\tikzoption{below left of}{\tikz@of{#1}{-135}}%
-\tikzoption{above right of}{\tikz@of{#1}{45}}%
-\tikzoption{below right of}{\tikz@of{#1}{-45}}%
-
-\def\tikz@of#1#2{%
- \def\tikz@anchor{center}%
- \let\tikz@do@auto@anchor=\relax%
- \tikz@addtransform{\pgftransformshift{\pgfpointpolar{#2}{\tikz@node@distance}}}%
- \def\tikz@node@at{\pgfpointanchor{#1}{center}}}
-
-\tikzoption{transform shape}[true]{%
- \csname tikz@fullytransformed#1\endcsname%
- \iftikz@fullytransformed%
- \pgfresetnontranslationattimefalse%
- \else%
- \pgfresetnontranslationattimetrue%
- \fi%
-}
-
-\newif\iftikz@fullytransformed
-\pgfresetnontranslationattimetrue%
-
-\def\tikz@anchor{center}%
-\def\tikz@shape{rectangle}%
-
-\def\tikz@possibly@transform#1#2#3{%
- \let\tikz@do@auto@anchor=\relax%
- \def\tikz@test{#3}%
- \ifx\tikz@test\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{#3}%
- \pgf@x=#2\pgf@x\relax%
- \edef\tikz@marshal{\noexpand\tikz@addtransform{%
- \expandafter\noexpand\csname pgftransform#1shift\endcsname{\the\pgf@x}}}%
- \tikz@marshal%
- \fi%
-}
-
-
-% Inter-picture options
-\tikzoption{remember picture}[true]{\csname pgfrememberpicturepositiononpage#1\endcsname}
-\tikzoption{overlay}[]{\pgf@relevantforpicturesizefalse}
-
-
-
-% Line/curve label placement options
-\tikzoption{sloped}[true]{\csname pgfslopedattime#1\endcsname}
-\tikzoption{allow upside down}[true]{\csname pgfallowupsidedownattime#1\endcsname}
-
-\tikzoption{pos}{\edef\tikz@time{#1}}
-
-\tikzoption{auto}[]{\csname tikz@install@auto@anchor@#1\endcsname}
-\tikzoption{swap}[]{%
- \def\tikz@temp{left}%
- \ifx\tikz@auto@anchor@direction\tikz@temp%
- \def\tikz@auto@anchor@direction{right}%
- \else%
- \def\tikz@auto@anchor@direction{left}%
- \fi%
-}
-
-\def\tikz@time{.5}
-
-\def\tikz@install@auto@anchor@{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on}
-\def\tikz@install@auto@anchor@false{\let\tikz@do@auto@anchor=\relax}
-\def\tikz@install@auto@anchor@left{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{left}}
-\def\tikz@install@auto@anchor@right{\let\tikz@do@auto@anchor=\tikz@auto@anchor@on\def\tikz@auto@anchor@direction{right}}
-
-\let\tikz@do@auto@anchor=\relax%
-
-\def\tikz@auto@anchor@on{\csname tikz@auto@anchor@\tikz@auto@anchor@direction\endcsname}
-
-\def\tikz@auto@anchor@left{\tikz@auto@pre\tikz@auto@anchor\tikz@auto@post}
-\def\tikz@auto@anchor@right{\tikz@auto@pre\tikz@auto@anchor@prime\tikz@auto@post}
-
-\def\tikz@auto@anchor@direction{left}
-
-% Text options
-\tikzoption{text}{\def\tikz@textcolor{#1}}
-\tikzoption{font}{\def\tikz@textfont{#1}}
-\tikzoption{text opacity}{\def\tikz@textopacity{#1}}
-\tikzoption{text width}{\def\tikz@text@width{#1}}
-\tikzoption{text height}{\def\tikz@text@height{#1}}
-\tikzoption{text depth}{\def\tikz@text@depth{#1}}
-\tikzoption{text ragged}[]%
-{\def\tikz@text@action{\raggedright\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}}
-\tikzoption{text badly ragged}[]{\def\tikz@text@action{\raggedright\relax}}
-\tikzoption{text ragged left}[]%
-{\def\tikz@text@action{\raggedleft\leftskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}}
-\tikzoption{text badly ragged left}[]{\def\tikz@text@action{\raggedleft\relax}}
-\tikzoption{text justified}[]{\def\tikz@text@action{\leftskip\z@\rightskip\z@\relax}}
-\tikzoption{text centered}[]{\def\tikz@text@action{%
- \leftskip\z@ plus2em%
- \rightskip\z@ plus2em%
- \spaceskip.3333em \xspaceskip.5em%
- \parfillskip=0pt%
- \let\\=\@centercr% for latex
- \relax}}
-\tikzoption{text badly centered}[]%
-{\def\tikz@text@action{%
- \let\\=\@centercr% for latex
- \parfillskip=0pt%
- \rightskip\@flushglue%
- \leftskip\@flushglue\relax}}
-
-\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
-
-\def\tikz@text@action{\raggedright\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
-
-
-
-
-
-% Arrow options
-\tikzoption{arrows}{\tikz@processarrows{#1}}
-
-\tikzoption{>}{%
- \tikz@set@pointed{\csname pgf@arrows@invert#1\endcsname}{#1}%
- \expandafter\tikz@processarrows\expandafter{\tikz@current@arrows}%
-}
-
-\tikzoption{shorten <}{\pgfsetshortenstart{#1}}
-\tikzoption{shorten >}{\pgfsetshortenend{#1}}
-
-\def\tikz@set@pointed#1#2{%
- \pgfutil@ifundefined{pgf@arrow@code@tikze@>@#2}
- {%
- \pgfarrowsdeclarealias{tikzs@<@#2}{tikze@>@#2}{#1}{#2}%
- \pgfarrowsdeclarereversed{tikzs@>@#2}{tikze@<@#2}{#1}{#2}%
- \pgfarrowsdeclarecombine*{tikz@|<@#2}{tikz@>|@#2}{#1}{#2}{|}{|}%
- \pgfarrowsdeclaredouble[\pgflinewidth]{tikzs@<<@#2}{tikze@>>@#2}{#1}{#2}%
- \pgfarrowsdeclarereversed{tikzs@>>@#2}{tikze@<<@#2}{tikzs@<<@#2}{tikze@>>@#2}%
- }{}%
- \pgfutil@namedef{tikz@special@arrow@start<}{tikzs@<@#2}%
- \pgfutil@namedef{tikz@special@arrow@end>}{tikze@>@#2}%
- \pgfutil@namedef{tikz@special@arrow@start>}{tikzs@>@#2}%
- \pgfutil@namedef{tikz@special@arrow@end<}{tikze@<@#2}%
- \pgfutil@namedef{tikz@special@arrow@start|<}{tikz@|<@#2}%
- \pgfutil@namedef{tikz@special@arrow@end>|}{tikz@>|@#2}%
- \pgfutil@namedef{tikz@special@arrow@start<<}{tikzs@<<@#2}%
- \pgfutil@namedef{tikz@special@arrow@end>>}{tikze@>>@#2}%
- \pgfutil@namedef{tikz@special@arrow@start>>}{tikzs@<<@#2}%
- \pgfutil@namedef{tikz@special@arrow@end<<}{tikze@>>@#2}%
-}
-
-\def\tikz@processarrows#1{%
- \def\tikz@current@arrows{#1}%
- \def\tikz@temp{#1}%
- \ifx\tikz@temp\pgfutil@empty%
- \else%
- \tikz@@processarrows#1\@nil
- \fi%
-}
-\def\tikz@@processarrows#1-#2\@nil{%
- \expandafter\ifx\csname tikz@special@arrow@start#1\endcsname\relax%
- \pgfsetarrowsstart{#1}
- \else%
- \pgfsetarrowsstart{\csname tikz@special@arrow@start#1\endcsname}%
- \fi%
- \expandafter\ifx\csname tikz@special@arrow@end#2\endcsname\relax%
- \pgfsetarrowsend{#2}
- \else%
- \pgfsetarrowsend{\csname tikz@special@arrow@end#2\endcsname}%
- \fi%
-}
-
-\tikz@set@pointed{\pgf@arrows@invertto}{to}
-\def\tikz@current@arrows{-}
-
-% Parabola options
-\tikzoption{bend}{\tikz@scan@one@point\tikz@set@parabola@bend#1\relax}%
-\tikzoption{bend pos}{\def\tikz@parabola@bend@factor{#1}}
-\tikzoption{parabola height}{%
- \def\tikz@parabola@bend@factor{.5}%
- \def\tikz@parabola@bend{\pgfpointadd{\pgfpoint{0pt}{#1}}{\tikz@last@position@saved}}}
-
-\def\tikz@parabola@bend{\tikz@last@position@saved}
-\def\tikz@parabola@bend@factor{0}
-
-\def\tikz@set@parabola@bend#1{\def\tikz@parabola@bend{#1}}
-
-% Axis options
-\tikzoption{domain}{\def\tikz@plot@domain{#1}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}
-\tikzoption{range}{\def\tikz@plot@range{#1}}
-
-% Plot options
-\tikzoption{smooth}[]{\let\tikz@plot@handler=\pgfplothandlercurveto}
-\tikzoption{smooth cycle}[]{\let\tikz@plot@handler=\pgfplothandlerclosedcurve}
-\tikzoption{sharp plot}[]{\let\tikz@plot@handler\pgfplothandlerlineto}
-
-\tikzoption{tension}{\pgfsetplottension{#1}}
-
-\tikzoption{xcomb}[]{\let\tikz@plot@handler=\pgfplothandlerxcomb}
-\tikzoption{ycomb}[]{\let\tikz@plot@handler=\pgfplothandlerycomb}
-\tikzoption{polar comb}[]{\let\tikz@plot@handler=\pgfplothandlerpolarcomb}
-
-\tikzoption{raw gnuplot}[true]{\csname tikz@plot@raw@gnuplot#1\endcsname}
-\tikzoption{prefix}{\def\tikz@plot@prefix{#1}}
-\tikzoption{id}{\def\tikz@plot@id{#1}}
-
-\tikzoption{samples}{\def\tikz@plot@samples{#1}\expandafter\tikz@plot@samples@recalc\tikz@plot@domain\relax}
-\tikzoption{samples at}{\def\tikz@plot@samplesat{#1}}
-\tikzoption{parametric}[true]{\csname tikz@plot@parametric#1\endcsname}
-
-\tikzoption{variable}{\def\tikz@plot@var{#1}}
-
-\tikzoption{only marks}[]{\let\tikz@plot@handler\pgfplothandlerdiscard}
-
-\tikzoption{mark}{\def\tikz@plot@mark{#1}}
-\tikzoption{mark options}{\def\tikz@plot@mark@options{#1}}
-\tikzoption{mark size}{\pgfsetplotmarksize{#1}}
-
-\tikzoption{mark indices}{\def\tikz@mark@list{#1}}
-\tikzoption{mark phase}{\pgfsetplotmarkphase{#1}}
-\tikzoption{mark repeat}{\pgfsetplotmarkrepeat{#1}}
-
-\let\tikz@mark@list=\pgfutil@empty
-
-\let\tikz@plot@mark@options=\pgfutil@empty
-
-\let\tikz@plot@handler=\pgfplothandlerlineto
-\let\tikz@plot@mark=\pgfutil@empty
-
-\def\tikz@plot@samples{25}
-\def\tikz@plot@domain{-5:5}
-\def\tikz@plot@var{\x}
-\def\tikz@plot@samplesat{-5,-4.6,...,5}
-\def\tikz@plot@samples@recalc#1:#2\relax{%
- \pgfmathparse{#1}%
- \let\tikz@temp@start=\pgfmathresult%
- \pgfmathparse{#2}%
- \let\tikz@temp@end=\pgfmathresult%
- \pgfmathparse{\tikz@temp@start+(\tikz@temp@end-\tikz@temp@start)/\tikz@plot@samples}%
- \edef\tikz@plot@samplesat{\tikz@temp@start,\pgfmathresult,...,\tikz@temp@end}%
-}
-
-
-\def\tikz@plot@prefix{\jobname.}
-\def\tikz@plot@id{pgf-plot}
-
-\newif\iftikz@plot@parametric
-\newif\iftikz@plot@raw@gnuplot
-
-
-% To options
-\tikzoption{to path}{\def\tikz@to@path{#1}}
-
-\def\tikz@to@path{-- (\tikztotarget) \tikztonodes}
-
-
-
-% Tree options
-\tikzoption{edge from parent path}{\def\tikz@edge@to@parent@path{#1}}
-
-\tikzoption{parent anchor}{\def\tikzparentanchor{.#1}\ifx\tikzparentanchor\tikz@border@text\let\tikzparentanchor\pgfutil@empty\fi}
-\tikzoption{child anchor}{\def\tikzchildanchor{.#1}\ifx\tikzchildanchor\tikz@border@text\let\tikzchildanchor\pgfutil@empty\fi}
-
-\tikzoption{level distance}{\pgfmathsetlength\tikzleveldistance{#1}}
-\tikzoption{sibling distance}{\pgfmathsetlength\tikzsiblingdistance{#1}}
-
-\tikzoption{growth function}{\let\tikz@grow=#1}
-\tikzoption{growth parent anchor}{\def\tikz@growth@anchor{#1}}
-\tikzoption{grow}{\tikz@set@growth{#1}\edef\tikz@special@level{\the\tikztreelevel}}%
-\tikzoption{grow'}{\tikz@set@growth{#1}\tikz@swap@growth\edef\tikz@special@level{\the\tikztreelevel}}%
-
-\def\tikz@growth@anchor{center}
-
-\def\tikz@special@level{-1}% never
-
-\def\tikz@swap@growth{%
- % Swap left and right
- \let\tikz@temp=\tikz@angle@grow@right%
- \let\tikz@angle@grow@right=\tikz@angle@grow@left%
- \let\tikz@angle@grow@left=\tikz@temp%
-}%
-
-\def\tikz@set@growth#1{%
- \let\tikz@grow=\tikz@grow@direction%
- \expandafter\ifx\csname tikz@grow@direction@#1\endcsname\relax%
- \c@pgf@counta=#1\relax%
- \else%
- \c@pgf@counta=\csname tikz@grow@direction@#1\endcsname%
- \fi%
- \edef\tikz@angle@grow{\the\c@pgf@counta}%
- \advance\c@pgf@counta by-90\relax%
- \edef\tikz@angle@grow@left{\the\c@pgf@counta}%
- \advance\c@pgf@counta by180\relax%
- \edef\tikz@angle@grow@right{\the\c@pgf@counta}%
-}
-
-\def\tikz@border@text{.border}
-\let\tikzparentanchor=\pgfutil@empty
-\let\tikzchildanchor=\pgfutil@empty
-\def\tikz@edge@to@parent@path{(\tikzparentnode\tikzparentanchor) -- (\tikzchildnode\tikzchildanchor)}
-
-\tikzleveldistance=15mm
-\tikzsiblingdistance=15mm
-
-\def\tikz@grow@direction@down{-90}
-\def\tikz@grow@direction@up{90}
-\def\tikz@grow@direction@left{180}
-\def\tikz@grow@direction@right{0}
-
-\def\tikz@grow@direction@south{-90}
-\def\tikz@grow@direction@north{90}
-\def\tikz@grow@direction@west{180}
-\def\tikz@grow@direction@east{0}
-
-\expandafter\def\csname tikz@grow@direction@north east\endcsname{45}
-\expandafter\def\csname tikz@grow@direction@north west\endcsname{135}
-\expandafter\def\csname tikz@grow@direction@south east\endcsname{-45}
-\expandafter\def\csname tikz@grow@direction@south west\endcsname{-135}
-
-\def\tikz@grow@direction{%
- \pgftransformshift{\pgfpointpolar{\tikz@angle@grow}{\tikzleveldistance}}%
- \ifnum\tikztreelevel=\tikz@special@level%
- \else%
- \pgf@xc=.5\tikzsiblingdistance%
- \c@pgf@counta=\tikznumberofchildren%
- \advance\c@pgf@counta by1\relax%
- \pgfutil@tempdima=\c@pgf@counta\pgf@xc%
- \pgftransformshift{\pgfpointpolar{\tikz@angle@grow@left}{\pgfutil@tempdima}}%
- \pgftransformshift{\pgfpointpolar{\tikz@angle@grow@right}{\tikznumberofcurrentchild\tikzsiblingdistance}}%
- \fi%
-}
-
-\tikz@orig@setkeys{tikz}{grow=down}
-
-
-
-
-% Snake options
-\tikzoption{snake}[]{%
- \def\tikz@@snake{#1}%
- \ifx\tikz@@snake\pgfutil@empty%
- \tikz@snakedtrue%
- \else%
- \ifx\tikz@@snake\tikz@nonetext%
- \tikz@snakedfalse%
- \else%
- \tikz@snakedtrue%
- \let\tikz@snake=\tikz@@snake%
- \fi%
- \fi}
-
-\tikzoption{segment amplitude}{\pgfmathsetlength{\pgfsnakesegmentamplitude}{#1}}
-\tikzoption{segment length}{\pgfmathsetlength{\pgfsnakesegmentlength}{#1}}
-\tikzoption{segment angle}{\pgfmathparse{#1}\let\pgfsnakesegmentangle=\pgfmathresult}
-\tikzoption{segment aspect}{\pgfmathparse{#1}\let\pgfsnakesegmentaspect=\pgfmathresult}
-
-\tikzoption{segment object length}{\pgfmathparse{#1}\edef\pgfsnakesegmentobjectlength{\pgfmathresult pt}}
-
-\tikzoption{raise snake}{\def\pgf@snake@raise{\pgftransformyshift{#1}}}
-\tikzoption{mirror snake}[true]{%
- \csname if#1\endcsname
- \def\pgf@snake@mirror{\pgftransformyscale{-1}}%
- \else%
- \let\pgf@snake@mirror=\pgfutil@empty%
- \fi
-}
-
-\tikzoption{gap before snake}{\def\tikz@presnake{{moveto}{#1}}}
-\tikzoption{line before snake}{\def\tikz@presnake{{lineto}{#1}}}
-
-\tikzoption{gap after snake}{\def\tikz@postsnake{{moveto}{#1}}\def\tikz@mainsnakelength{\pgfsnakeremainingdistance+-#1}}
-\tikzoption{line after snake}{\def\tikz@postsnake{{lineto}{#1}}\def\tikz@mainsnakelength{\pgfsnakeremainingdistance+-#1}}
-
-\tikzoption{gap around snake}{%
- \def\tikz@presnake{{moveto}{#1}}%
- \def\tikz@postsnake{{moveto}{#1}}%
- \def\tikz@mainsnakelength{\pgfsnakeremainingdistance+-#1}%
-}
-\tikzoption{line around snake}{%
- \def\tikz@presnake{{lineto}{#1}}%
- \def\tikz@postsnake{{lineto}{#1}}%
- \def\tikz@mainsnakelength{\pgfsnakeremainingdistance+-#1}%
-}
-\let\pgf@snake@mirror=\pgfutil@empty
-\let\pgf@snake@raise=\pgfutil@empty
-
-\pgfsetsnakesegmenttransformation{\pgf@snake@mirror\pgf@snake@raise}
-
-\def\tikz@snake{zigzag}
-
-\let\tikz@presnake=\pgfutil@empty
-\let\tikz@postsnake=\pgfutil@empty
-\def\tikz@mainsnakelength{\pgfsnakeremainingdistance}
-
-
-% Matrix options
-\tikzoption{matrix}[true]{\csname tikz@is@matrix#1\endcsname}
-
-\tikzoption{matrix anchor}{\def\tikz@matrix@anchor{#1}}
-
-\tikzoption{column sep}{\def\pgfmatrixcolumnsep{#1}}
-\tikzoption{row sep}{\def\pgfmatrixrowsep{#1}}
-
-\tikzoption{cells}{\tikzstyle{every cell}+=[#1]}
-
-\tikzoption{ampersand replacement}{\def\tikz@ampersand@replacement{#1}}
-
-\newif\iftikz@is@matrix
-\let\tikz@matrix@anchor=\pgfutil@empty
-\let\tikz@ampersand@replacement=\pgfutil@empty
-
-% Execute option
-
-\tikzoption{execute at begin picture}{\expandafter\def\expandafter\tikz@atbegin@picture\expandafter{\tikz@atbegin@picture#1}}
-\tikzoption{execute at end picture}{\expandafter\def\expandafter\tikz@atend@picture\expandafter{\tikz@atend@picture#1}}
-\tikzoption{execute at begin scope}{\expandafter\def\expandafter\tikz@atbegin@scope\expandafter{\tikz@atbegin@scope#1}}
-\tikzoption{execute at end scope}{\expandafter\def\expandafter\tikz@atend@scope\expandafter{\tikz@atend@scope#1}}
-\tikzoption{execute at begin to}{\expandafter\def\expandafter\tikz@atbegin@to\expandafter{\tikz@atbegin@to#1}}
-\tikzoption{execute at end to}{\expandafter\def\expandafter\tikz@atend@to\expandafter{\tikz@atend@to#1}}
-\tikzoption{execute at begin node}{\expandafter\def\expandafter\tikz@atbegin@node\expandafter{\tikz@atbegin@node#1}}
-\tikzoption{execute at end node}{\expandafter\def\expandafter\tikz@atend@node\expandafter{\tikz@atend@node#1}}
-\tikzoption{execute at begin cell}{\expandafter\def\expandafter\tikz@atbegin@cell\expandafter{\tikz@atbegin@cell#1}}
-\tikzoption{execute at end cell}{\expandafter\def\expandafter\tikz@atend@cell\expandafter{\tikz@atend@cell#1}}
-\tikzoption{execute at empty cell}{\expandafter\def\expandafter\tikz@at@emptycell\expandafter{\tikz@at@emptycell#1}}
-
-\let\tikz@atbegin@picture=\pgfutil@empty
-\let\tikz@atend@picture=\pgfutil@empty
-\let\tikz@atbegin@scope=\pgfutil@empty
-\let\tikz@atend@scope=\pgfutil@empty
-\let\tikz@atbegin@to=\pgfutil@empty
-\let\tikz@atend@to=\pgfutil@empty
-\let\tikz@atbegin@node=\pgfutil@empty
-\let\tikz@atend@node=\pgfutil@empty
-\let\tikz@atbegin@cell=\pgfutil@empty
-\let\tikz@atend@cell=\pgfutil@empty
-\let\tikz@at@emptycell=\pgfutil@empty
-
-
-
-
-% Styles
-\tikzoption{set style}{\tikzstyle#1}
-
-% Handled in a special way.
-\def\tikzstyle{\pgfutil@ifnextchar\bgroup\tikz@style@parseA\tikz@style@parseB}
-\def\tikz@style@parseB#1={\tikz@style@parseA{#1}=}
-\def\tikz@style@parseA#1#2=#3[#4]{% #2 and #3 are dummy
- \pgfutil@in@+{#2}%
- \ifpgfutil@in@%
- \tikz@style{#1}{#4}%
- \else%
- \expandafter\def\csname tikz@st@#1\endcsname{#4}%
- \fi}
-\def\tikz@style#1#2{%
- \iftikzstyleempty{#1}
- {\expandafter\def\csname tikz@st@#1\endcsname{#2}}%
- {%
- \edef\tikz@marshal{\def\expandafter\noexpand\csname tikz@st@#1\endcsname}%
- \expandafter\expandafter\expandafter\tikz@marshal\expandafter\expandafter\expandafter{\csname
- tikz@st@#1\endcsname,#2}%
- }%
-}
-
-\def\iftikzstyleempty#1#2#3{%
- \expandafter\ifx\csname tikz@st@#1\endcsname\pgfutil@empty%
- \let\pgf@next=\pgfutil@firstoftwo%
- \else%
- \expandafter\ifx\csname tikz@st@#1\endcsname\relax%
- \let\pgf@next=\pgfutil@firstoftwo%
- \else
- \let\pgf@next=\pgfutil@secondoftwo%
- \fi%
- \fi%
- \pgf@next{#2}{#3}}
-
-
-%
-%
-% Predefined styles
-%
-%
-
-\tikzstyle{help lines}= [color=gray,line width=0.2pt]
-
-\tikzstyle{every picture}= []
-\tikzstyle{every path}= []
-\tikzstyle{every scope}= []
-\tikzstyle{every plot}= []
-\tikzstyle{every node}= []
-\tikzstyle{every child}= []
-\tikzstyle{every child node}= []
-\tikzstyle{every to}= []
-\tikzstyle{every cell}= []
-\tikzstyle{every matrix}= []
-\tikzstyle{every edge}= [draw]
-\tikzstyle{every label}= [draw=none,fill=none]
-\tikzstyle{every pin}= [draw=none,fill=none]
-\tikzstyle{every pin edge}= [help lines]
-
-\tikzstyle{ultra thin}= [line width=0.1pt]
-\tikzstyle{very thin}= [line width=0.2pt]
-\tikzstyle{thin}= [line width=0.4pt]
-\tikzstyle{semithick}= [line width=0.6pt]
-\tikzstyle{thick}= [line width=0.8pt]
-\tikzstyle{very thick}= [line width=1.2pt]
-\tikzstyle{ultra thick}= [line width=1.6pt]
-
-\tikzstyle{solid}= [dash pattern=]
-\tikzstyle{dotted}= [dash pattern=on \pgflinewidth off 2pt]
-\tikzstyle{densely dotted}= [dash pattern=on \pgflinewidth off 1pt]
-\tikzstyle{loosely dotted}= [dash pattern=on \pgflinewidth off 4pt]
-\tikzstyle{dashed}= [dash pattern=on 3pt off 3pt]
-\tikzstyle{densely dashed}= [dash pattern=on 3pt off 2pt]
-\tikzstyle{loosely dashed}= [dash pattern=on 3pt off 6pt]
-
-\tikzstyle{transparent}= [opacity=0]
-\tikzstyle{ultra nearly transparent}=[opacity=0.05]
-\tikzstyle{very nearly transparent}= [opacity=0.1]
-\tikzstyle{nearly transparent}= [opacity=0.25]
-\tikzstyle{semitransparent}= [opacity=0.5]
-\tikzstyle{nearly opaque}= [opacity=0.75]
-\tikzstyle{very nearly opaque}= [opacity=0.9]
-\tikzstyle{ultra nearly opaque}= [opacity=0.95]
-\tikzstyle{opaque}= [opacity=1]
-
-\tikzstyle{at start}= [pos=0]
-\tikzstyle{very near start}= [pos=0.125]
-\tikzstyle{near start}= [pos=0.25]
-\tikzstyle{midway}= [pos=0.5]
-\tikzstyle{near end}= [pos=0.75]
-\tikzstyle{very near end}= [pos=0.875]
-\tikzstyle{at end}= [pos=1]
-
-\tikzstyle{bend at start}= [bend pos=0,bend={+(0,0)}]
-\tikzstyle{bend at end}= [bend pos=1,bend={+(0,0)}]
-
-\tikzstyle{edge from parent}= [draw]
-
-\tikzstyle{snake triangles 45}= [snake=triangles,segment object length=2.41421356\pgfsnakesegmentamplitude]
-\tikzstyle{snake triangles 60}= [snake=triangles,segment object length=1.73205081\pgfsnakesegmentamplitude]
-\tikzstyle{snake triangles 90}= [snake=triangles,segment object length=\pgfsnakesegmentamplitude]
-
-
-%
-% Setting keys
-%
-
-\let\tikz@late@keys=\pgfutil@empty%
-
-\def\tikz@set@one@key#1{%
- \tikz@orig@setkeys*{tikz}{#1}%
- \ifx\XKV@rm\pgfutil@empty%
- % fine
- \else%
- \expandafter\pgfutil@in@\expandafter!\expandafter{\XKV@rm}%
- \ifpgfutil@in@%
- % this is a color!
- \expandafter\tikz@addoption\expandafter{\expandafter\pgfutil@color\expandafter{\XKV@rm}}%
- \edef\tikz@textcolor{\XKV@rm}%
- \else%
- \pgfutil@doifcolorelse{\XKV@rm}
- { %
- \expandafter\tikz@addoption\expandafter{\expandafter\pgfutil@color\expandafter{\XKV@rm}}%
- \edef\tikz@textcolor{\XKV@rm}%
- }%
- {%
- % Ok, second chance: This might be an arrow specification:
- \expandafter\pgfutil@in@\expandafter-\expandafter{\XKV@rm}
- \ifpgfutil@in@%
- % Ah, an arrow spec!
- \expandafter\tikz@processarrows\expandafter{\XKV@rm}%
- \else%
- % Ok, third chance: A shape!
- \expandafter\ifx\csname pgf@sh@s@\XKV@rm\endcsname\relax%
- \PackageError{tikz}{I do not know what to do with the option ``\XKV@rm''}{}
- \else%
- \edef\tikz@shape{\XKV@rm}%
- \fi%
- \fi%
- }%
- \fi%
- \fi%
-}
-
-\def\tikz@setkeys#1{\tikz@@setkeys#1,\pgf@stop}
-
-\def\tikz@@setkeys#1,#2\pgf@stop{%
- \def\tikz@key@test{#1}%
- \def\tikz@key@rest{#2}%
- \ifx\tikz@key@test\pgfutil@empty%
- \else%
- \pgfutil@ifnextchar s{\tikz@parse@key}{\tikz@parse@key}#1==\pgf@stop%
- \fi%
- \ifx\tikz@key@rest\pgfutil@empty%
- \else%
- \expandafter\expandafter\expandafter\tikz@@setkeys\expandafter\tikz@key@rest\expandafter\pgf@stop%
- \fi%
-}
-
-\def\tikz@style@text{style}
-
-\def\tikz@parse@key#1=#2=#3\pgf@stop{
- \def\tikz@key@test{#1}%
- \ifx\tikz@key@test\tikz@style@text%
- % Ok, style!
- \pgfutil@ifundefined{tikz@st@#2}%
- {\PackageError{tikz}{Unknown style ``#2}''{}}
- {%
- \expandafter\let\expandafter\tikz@temp\expandafter=\csname tikz@st@#2\endcsname%
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\tikz@key@rest
- \expandafter\expandafter\expandafter{\expandafter\tikz@temp\expandafter,\tikz@key@rest}%
- }%
- \else%
- \expandafter\ifx\csname tikz@st@#1\endcsname\relax%
- % Ok, normal!
- \def\tikz@test{#3}%
- \ifx\tikz@test\pgfutil@empty%
- \tikz@set@one@key{#1}%
- \else%
- \tikz@set@one@key{#1={#2}}%
- \fi%
- \else%
- % Ok, style!
- \expandafter\let\expandafter\tikz@temp\expandafter=\csname tikz@st@#1\endcsname%
- \expandafter\expandafter\expandafter\def
- \expandafter\expandafter\expandafter\tikz@key@rest
- \expandafter\expandafter\expandafter{\expandafter\tikz@temp\expandafter,\tikz@key@rest}%
- \fi%
- \fi%
-}
-
-\def\tikz@every@style#1{%
- \expandafter\ifx\csname tikz@st@#1\endcsname\relax%
- \else%
- \expandafter\expandafter\expandafter\tikz@setkeys
- \expandafter\expandafter\expandafter{\csname tikz@st@#1\endcsname}%
- \fi%
-}
-
-
-
-
-
-%
-% Main TikZ Environment
-%
-
-\def\tikzpicture{\pgfutil@ifnextchar[\tikz@picture{\tikz@picture[]}}%}
-\def\tikz@picture[#1]{%
- \pgfpicture%
- \let\tikz@atbegin@picture=\pgfutil@empty%
- \let\tikz@atend@picture=\pgfutil@empty%
- \let\tikz@transform=\relax%
- \tikz@installcommands\scope[style=every picture,#1]%
- \tikz@atbegin@picture%
-}
-\def\endtikzpicture{%
- \tikz@atend@picture%
- \global\let\pgf@shift@baseline=\pgf@baseline%
- \global\let\pgf@remember@smuggle=\ifpgfrememberpicturepositiononpage%
- \endscope%
- \let\pgf@baseline=\pgf@shift@baseline%
- \let\ifpgfrememberpicturepositiononpage=\pgf@remember@smuggle%
- \endpgfpicture}
-
-
-
-% Inlined picture
-%
-% #1 - some code to be put in a tikzpicture environment.
-%
-% If the command is not followed by braces, everything up to the next
-% semicolon is used as argument.
-%
-% Example:
-%
-% The rectangle \tikz{\draw (0,0) rectangle (1em,1ex)} has width 1em and
-% height 1ex.
-
-\def\tikz{\pgfutil@ifnextchar[{\tikz@opt}{\tikz@opt[]}}
-\def\tikz@opt[#1]{\pgfutil@ifnextchar\bgroup{\tikz@[#1]}{\tikz@@[#1]}}
-\def\tikz@[#1]#2{\tikzpicture[#1]#2\endtikzpicture}
-\def\tikz@@{%
- \let\tikz@next=\tikz@collectnormalsemicolon%
- \ifnum\the\catcode`\;=\active\relax%
- \let\tikz@next=\tikz@collectactivesemicolon%
- \fi%
- \tikz@next}
-\def\tikz@collectnormalsemicolon[#1]#2;{\tikzpicture[#1]#2;\endtikzpicture}
-{
- \catcode`\;=\active
- \gdef\tikz@collectactivesemicolon[#1]#2;{\tikzpicture[#1]#2;\endtikzpicture}
-}
-
-
-
-%
-% Environment for scoping graphic state settings
-%
-\def\tikz@scope@env{\pgfutil@ifnextchar[\tikz@@scope@env{\tikz@@scope@env[]}}
-\def\tikz@@scope@env[#1]{%
- \pgfscope%
- \begingroup%
- \let\tikz@atbegin@scope=\pgfutil@empty%
- \let\tikz@atend@scope=\pgfutil@empty%
- \let\tikz@options=\pgfutil@empty%
- \let\tikz@mode=\pgfutil@empty%
- \tikz@every@style{every scope}%
- \tikz@setkeys{#1}%
- \tikz@options%
- \tikz@atbegin@scope%
-}
-\def\endtikz@scope@env{%
- \tikz@atend@scope%
- \endgroup%
- \endpgfscope%
-}
-
-
-%
-% Install the abbreviated commands
-%
-\def\tikz@installcommands{%
- \ifnum\the\catcode`\;=\active\relax\expandafter\let\expandafter\tikz@origsemi\expandafter=\tikz@activesemicolon\fi%
- \ifnum\the\catcode`\:=\active\relax\expandafter\let\expandafter\tikz@origcolon\expandafter=\tikz@activecolon\fi%
- \ifnum\the\catcode`\|=\active\relax\expandafter\let\expandafter\tikz@origbar\expandafter=\tikz@activebar\fi%
- \let\tikz@origscope=\scope%
- \let\tikz@origendscope=\endscope%
- \let\tikz@origstartscope=\startscope%
- \let\tikz@origstopscope=\stopscope%
- \let\tikz@origpath=\path%
- \let\tikz@origagainpath=\againpath%
- \let\tikz@origdraw=\draw%
- \let\tikz@origpattern=\pattern%
- \let\tikz@origfill=\fill%
- \let\tikz@origfilldraw=\filldraw%
- \let\tikz@origshade=\shade%
- \let\tikz@origshadedraw=\shadedraw%
- \let\tikz@origclip=\clip%
- \let\tikz@origuseasboundingbox=\useasboundingbox%
- \let\tikz@orignode=\node%
- \let\tikz@origcoordinate=\coordinate%
- \let\tikz@origmatrix=\matrix%
- \let\tikz@origcalendar=\calendar%
- %
- \tikz@deactivatthings%
- %
- \let\scope=\tikz@scope@env%
- \let\endscope=\endtikz@scope@env%
- \let\startscope=\scope%
- \let\stopscope=\endscope%
- \let\path=\tikz@command@path%
- \let\againpath=\tikz@command@againpath%
- %
- \def\draw{\path[draw]}
- \def\pattern{\path[pattern]}
- \def\fill{\path[fill]}
- \def\filldraw{\path[fill,draw]}
- \def\shade{\path[shade]}
- \def\shadedraw{\path[shade,draw]}
- \def\clip{\path[clip]}
- \def\useasboundingbox{\path[use as bounding box]}
- \def\node{\path node}
- \def\coordinate{\path coordinate}
- \def\matrix{\path node[matrix]}
- \def\calendar{\tikz@lib@cal@calendar}%
-}
-\ifx\tikz@lib@cal@calendar\@undefined
-\def\tikz@lib@cal@calendar{\PackageError{tikz}{You need to load the calendar library}{}}
-\fi
-
-\def\tikz@uninstallcommands{%
- \ifnum\the\catcode`\;=\active\relax\expandafter\let\tikz@activesemicolon=\tikz@origsemi\fi%
- \ifnum\the\catcode`\:=\active\relax\expandafter\let\tikz@activecolon=\tikz@origcolon\fi%
- \ifnum\the\catcode`\|=\active\relax\expandafter\let\tikz@activebar=\tikz@origbar\fi%
- \let\scope=\tikz@origscope%
- \let\endscope=\tikz@origendscope%
- \let\startscope=\tikz@origstartscope%
- \let\stopscope=\tikz@origstopscope%
- \let\path=\tikz@origpath%
- \let\againpath=\tikz@origagainpath%
- \let\draw=\tikz@origdraw%
- \let\pattern=\tikz@origpattern%
- \let\fill=\tikz@origfill%
- \let\filldraw=\tikz@origfilldraw%
- \let\shade=\tikz@origshade%
- \let\shadedraw=\tikz@origshadedraw%
- \let\clip=\tikz@origclip%
- \let\useasboundingbox=\tikz@origuseasboundingbox%
- \let\node=\tikz@orignode%
- \let\coordinate=\tikz@origcoordinate%
- \let\matrix=\tikz@origmatrix%
- \let\calendar=\tikz@origcalendar%
-}
-
-
-{
- \catcode`\;=12
- \gdef\tikz@nonactivesemicolon{;}
- \catcode`\:=12
- \gdef\tikz@nonactivecolon{:}
- \catcode`\|=12
- \gdef\tikz@nonactivebar{|}
- \catcode`\;=\active
- \catcode`\:=\active
- \catcode`\|=\active
- \catcode`\"=\active
- \gdef\tikz@activesemicolon{;}%
- \gdef\tikz@activecolon{:}%
- \gdef\tikz@activebar{|}%
- \gdef\tikz@activequotes{"}%
- \gdef\tikz@deactivatthings{%
- \def;{\tikz@nonactivesemicolon}
- \def:{\tikz@nonactivecolon}
- \def|{\tikz@nonactivebar}
- }
-}
-
-
-
-
-
-% Constructs a path and draws/fills them according to the current
-% settings.
-
-\def\tikz@command@path{%
- \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}}}
-\def\tikz@signal@path{\tikz@signal@path}%
-\def\tikz@check@earg[#1]{%
- \pgfutil@ifnextchar<{\tikz@swap@args[#1]}{\tikz@@command@path[#1]}}
-\def\tikz@swap@args[#1]<#2>{\tikz@command@path<#2>[#1]}
-
-\def\tikz@doopt{%
- \let\tikz@next=\tikz@eargnormalsemicolon%
- \ifnum\the\catcode`\;=\active\relax%
- \let\tikz@next=\tikz@eargactivesemicolon%
- \fi%
- \tikz@next}
-\long\def\tikz@eargnormalsemicolon<#1>#2;{\only<#1>{\tikz@@command@path#2;}}
-{
- \catcode`\;=\active
- \long\global\def\tikz@eargactivesemicolon<#1>#2;{\only<#1>{\tikz@@command@path#2;}}
-}
-
-\def\tikz@@command@path{%
- \edef\tikzscope@linewidth{\the\pgflinewidth}%
- \begingroup%
- \let\tikz@options=\pgfutil@empty%
- \let\tikz@mode=\pgfutil@empty%
- \let\tikz@moveto@waiting=\relax%
- \let\tikz@timer=\relax%
- \let\tikz@collected@onpath=\pgfutil@empty%
- \tikz@snakedfalse%
- \tikz@node@is@a@labelfalse%
- \tikz@expandcount=1000\relax%
- \tikz@lastx=0pt%
- \tikz@lasty=0pt%
- \tikz@lastxsaved=0pt%
- \tikz@lastysaved=0pt%
- \tikz@every@style{every path}%
- \tikz@scan@next@command%
-}
-\def\tikz@scan@next@command{%
- \ifx\tikz@collected@onpath\pgfutil@empty%
- \else%
- \tikz@invoke@collected@onpath%
- \fi%
- \afterassignment\tikz@handle\let\@let@token=%
-}
-\newcount\tikz@expandcount
-
-% Central dispatcher for commands
-\def\tikz@handle{%
- \let\@next=\tikz@expand%
- \ifx\@let@token(%)
- \let\@next=\tikz@movetoabs%
- \else%
- \ifx\@let@token+%
- \let\@next=\tikz@movetorel%
- \else%
- \ifx\@let@token-%
- \let\@next=\tikz@lineto%
- \else%
- \ifx\@let@token.%
- \let\@next=\tikz@dot%
- \else%
- \ifx\@let@token r%
- \let\@next=\tikz@rect%
- \else%
- \ifx\@let@token a%
- \let\@next=\tikz@arcA%
- \else%
- \ifx\@let@token[%]
- \let\@next=\tikz@parse@options%
- \else%
- \ifx\@let@token n%
- \let\@next=\tikz@fig%
- \else%
- \ifx\@let@token\bgroup%
- \let\@next=\tikz@beginscope%
- \else%
- \ifx\@let@token\egroup%
- \let\@next=\tikz@endscope%
- \else%
- \ifx\@let@token;%
- \let\@next=\tikz@finish%
- \else%
- \ifx\@let@token c%
- \let\@next=\tikz@cchar%
- \else%
- \ifx\@let@token e%
- \let\@next=\tikz@e@char%
- \else%
- \ifx\@let@token g%
- \let\@next=\tikz@grid%
- \else%
- \ifx\@let@token s%
- \let\@next=\tikz@sine%
- \else%
- \ifx\@let@token |%
- \let\@next=\tikz@vh@lineto%
- \else%
- \ifx\@let@token p%
- \let\@next=\tikz@pchar%
- \pgfsetmovetofirstplotpoint%
- \else%
- \ifx\@let@token t%
- \let\@next=\tikz@to%
- \else%
- \ifx\@let@token\pgfextra%
- \let\@next=\tikz@extra%
- \else%
- \ifx\@let@token\foreach%
- \let\@next=\tikz@foreach%
- \else%
- \ifx\@let@token\pgf@stop%
- \let\@next=\relax%
- \else%
- \ifx\@let@token\par%
- \let\@next=\tikz@scan@next@command%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \@next%
-}
-
-\def\tikz@pchar{\pgfutil@ifnextchar l{\tikz@plot}{\tikz@parabola}}
-\def\tikz@cchar{%
- \pgfutil@ifnextchar i{\tikz@circle}%
- {\pgfutil@ifnextchar h{\tikz@children}{\tikz@cochar}}}%
-\def\tikz@cochar o{%
- \pgfutil@ifnextchar o{\tikz@coordinate}{\tikz@cosine}}
-\def\tikz@e@char{%
- \pgfutil@ifnextchar l{\tikz@ellipse}{\tikz@@e@char}}%
-\def\tikz@@e@char dge{%
- \pgfutil@ifnextchar f{\tikz@edgetoparent}{\tikz@edge@plain}}%
-
-
-\def\tikz@finish{%
- \tikz@mode@fillfalse%
- \tikz@mode@drawfalse%
- \tikz@mode@doublefalse%
- \tikz@mode@clipfalse%
- \tikz@mode@boundaryfalse%
- \edef\tikz@pathextend{%
- {\noexpand\pgfqpoint{\the\pgf@pathminx}{\the\pgf@pathminy}}%
- {\noexpand\pgfqpoint{\the\pgf@pathmaxx}{\the\pgf@pathmaxy}}%
- }%
- \tikz@mode% installs the mode settings
- % Rendering pipeline:
- %
- % Step 1: Setup options
- %
- \ifx\tikz@options\pgfutil@empty%
- \else%
- \pgfsys@beginscope%
- \begingroup%
- \tikz@options%
- \fi%
- %
- % Step 2: Do a fill if shade follows.
- %
- \iftikz@mode@fill%
- \iftikz@mode@shade%
- \pgfprocessround{\pgfsyssoftpath@currentpath}{\pgfsyssoftpath@currentpath}% change the current path
- \pgfsyssoftpath@invokecurrentpath%
- \pgfsys@fill%
- \tikz@mode@fillfalse% no more filling...
- \fi%
- \fi%
- %
- % Step 3: Do a shade if necessary.
- %
- \iftikz@mode@shade%
- \pgfprocessround{\pgfsyssoftpath@currentpath}{\pgfsyssoftpath@currentpath}% change the current path
- \pgfshadepath{\tikz@shading}{\tikz@shade@angle}%
- \tikz@mode@shadefalse% no more shading...
- \fi%
- %
- % Step 4: Double stroke, if necessary
- %
- \iftikz@mode@draw%
- \iftikz@mode@double%
- % Change line width
- \begingroup%
- \pgfsys@beginscope%
- \pgf@x=2\pgflinewidth%
- \advance\pgf@x by\tikz@double@width@distance%
- \pgflinewidth=\pgf@x%
- \pgfsetlinewidth{\the\pgflinewidth}%
- \fi%
- \fi%
- %
- % Step 5: Do stroke/fill/clip as needed
- %
- \edef\tikz@temp{\noexpand\pgfusepath{%
- \iftikz@mode@fill fill,\fi%
- \iftikz@mode@draw draw,\fi%
- \iftikz@mode@clip clip,\fi%
- }}%
- \tikz@temp%
- \tikz@mode@fillfalse% no more filling
- %
- % Step 6: Double stroke, if necessary
- %
- \iftikz@mode@draw%
- \iftikz@mode@double%
- \pgfsyssoftpath@setcurrentpath\pgf@last@used@path% reinstall
- \pgf@x=\tikz@double@width@distance%
- \pgfsetlinewidth{\the\pgf@x}%
- \pgfsetstrokecolor{\tikz@double@color}%
- \pgfsyssoftpath@flushcurrentpath%
- \pgfsys@stroke%
- \pgfsys@endscope%
- \pgf@add@arrows@as@needed
- \endgroup%
- \fi%
- \fi%
- \tikz@mode@drawfalse% no more stroking
- %
- % Step 7: Add labels and nodes
- %
- \copy\tikz@figbox%
- \setbox\tikz@figbox=\box\voidb@x%
- %
- % Step 8: Close option brace
- %
- \ifx\tikz@options\pgfutil@empty%
- \else%
- \endgroup%
- \pgfsys@endscope%
- \iftikz@mode@clip%
- \PackageError{tikz}{Extra options not allowed for clipping path command.}{}%
- \fi%
- \fi%
- \iftikz@mode@clip%
- \aftergroup\pgf@relevantforpicturesizefalse%
- \fi%
- \iftikz@mode@boundary%
- \aftergroup\pgf@relevantforpicturesizefalse%
- \fi%
- \endgroup%
- \global\pgflinewidth=\tikzscope@linewidth%
-}
-
-
-
-
-\def\tikz@skip#1{\tikz@scan@next@command#1}
-\def\tikz@expand{%
- \advance\tikz@expandcount by -1%
- \ifnum\tikz@expandcount<0\relax%
- \PackageError{tikz}{Giving up on this path. Did you forget a semicolon?}{}%
- \let\@next=\tikz@finish%
- \else%
- \let\@next=\tikz@@expand
- \fi%
- \@next}
-
-\def\tikz@@expand{%
- \expandafter\tikz@scan@next@command\@let@token}
-
-
-
-% Syntax for scopes:
-% {scoped path commands}
-
-\def\tikz@beginscope{\begingroup\tikz@scan@next@command}
-\def\tikz@endscope{%
- \global\setbox\tikz@tempbox=\copy\tikz@figbox%
- \endgroup%
- \setbox\tikz@figbox=\box\tikz@tempbox%
- \tikz@scan@next@command}
-
-
-% Syntax for pgfextra:
-% \pgfextra {normal tex text}
-% \pgfextra normal tex text \endpgfextra
-
-\def\tikz@extra{\pgfutil@ifnextchar\bgroup\tikz@@extra\relax}
-\long\def\tikz@@extra#1{#1\tikz@scan@next@command}
-\let\endpgfextra=\tikz@scan@next@command
-
-\def\pgfextra{pgfextra}
-
-
-% Syntax for \foreach:
-% \foreach \var in {list} {path text}
-%
-% Example:
-%
-% \draw (0,0) \foreach \x in {1,2,3} {-- (\x,0) circle (1cm)} -- (5,5);
-
-\def\tikz@foreach{%
- \def\pgffor@beginhook{\setbox\tikz@figbox=\box\tikz@tempbox\expandafter\tikz@scan@next@command\@firstofone}%
- \def\pgffor@endhook{\pgfextra{%
- \xdef\tikz@foreach@save@lastx{\the\tikz@lastx}%
- \xdef\tikz@foreach@save@lasty{\the\tikz@lasty}%
- \xdef\tikz@foreach@save@lastxsaved{\the\tikz@lastxsaved}%
- \xdef\tikz@foreach@save@lastysaved{\the\tikz@lastysaved}%
- \global\setbox\tikz@tempbox=\copy\tikz@figbox\pgfutil@gobble}}%
- \def\pgffor@afterhook{%
- \tikz@lastx=\tikz@foreach@save@lastx%
- \tikz@lasty=\tikz@foreach@save@lasty%
- \tikz@lastxsaved=\tikz@foreach@save@lastxsaved%
- \tikz@lastysaved=\tikz@foreach@save@lastysaved%
- \setbox\tikz@figbox=\box\tikz@tempbox\tikz@scan@next@command}%
- \global\setbox\tikz@tempbox=\copy\tikz@figbox%
- \foreach}
-
-
-% Syntax for againpath:
-% \againpath \somepathname
-
-\def\tikz@command@againpath#1{%
- \pgfextra{%
- \pgfsyssoftpath@getcurrentpath\tikz@temp%
- \expandafter\pgfutil@g@addto@macro\expandafter\tikz@temp\expandafter{#1}%
- \pgfsyssoftpath@setcurrentpath\tikz@temp%
- }
-}
-
-
-
-
-%
-% When this if is set, a just-scanned point is a shape and its border
-% position still needs to be determined, depending on subsequent
-% commands.
-%
-
-\newif\iftikz@shapeborder
-
-
-% Syntax for moveto:
-% <point>
-\def\tikz@movetoabs{\tikz@moveto(}
-\def\tikz@movetorel{\tikz@moveto+}
-\def\tikz@moveto{%
- \tikz@scan@one@point{\tikz@@moveto}}
-\def\tikz@@moveto#1{%
- \tikz@make@last@position{#1}%
- \iftikz@shapeborder%
- % ok, the moveto will have to wait. flag that we have a moveto in
- % wainting:
- \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
- \else%
- \pgfpathmoveto{\tikz@last@position}%
- \let\tikz@moveto@waiting=\relax%
- \fi%
- \tikz@scan@next@command%
-}
-
-\let\tikz@moveto@waiting=\relax % normally, nothing is waiting...
-
-\def\tikz@flush@moveto{%
- \ifx\tikz@moveto@waiting\relax%
- \else%
- \pgfpathmoveto{\tikz@last@position}%
- \fi%
- \let\tikz@moveto@waiting=\relax%
-}
-
-
-\def\tikz@flush@moveto@toward#1#2#3{%
- % #1 = a point towards which the last moveto should be corrected
- % #2 = a dimension to which the corrected x-coordinate should be stored
- % #3 = a dimension for the corrected y-coordinate
- \ifx\tikz@moveto@waiting\relax%
- % do nothing
- \else%
- \pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{#1}}%
- #2=\pgf@x%
- #3=\pgf@y%
- \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
- \pgfpathmoveto{\pgfqpoint{\pgf@x}{\pgf@y}}%
- \fi%
- \let\tikz@moveto@waiting=\relax%
-}
-
-
-%
-% Collecting labels on the path
-%
-
-\def\tikz@collect@coordinate@onpath#1coordinate{%
- \pgfutil@ifnextchar[{\tikz@@collect@coordinate@opt#1}{\tikz@@collect@coordinate@opt#1[]}}%}
-\def\tikz@@collect@coordinate@opt#1[#2]{%
- \pgfutil@ifnextchar({\tikz@@collect@coordinate#1[#2]}{%
- \tikz@collect@label@onpath#1node[shape=coordinate,#2]{}}}%}
-\def\tikz@@collect@coordinate#1[#2](#3){%
- \tikz@collect@label@onpath#1node[shape=coordinate,#2](#3){}}
-
-\def\tikz@collect@label@onpath#1node{%
- \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath node}%
- \tikz@collect@label@scan#1}
-
-\def\tikz@collect@label@scan#1{%
- \pgfutil@ifnextchar({\tikz@collect@paran#1}%
- {\pgfutil@ifnextchar[{\tikz@collect@options#1}%
- {\pgfutil@ifnextchar\bgroup{\tikz@collect@arg#1}%
- {#1}}}%
-}%}}
-
-\def\tikz@collect@paran#1(#2){%
- \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath(#2)}%
- \tikz@collect@label@scan#1%
-}
-\def\tikz@collect@options#1[#2]{%
- \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath[#2]}%
- \tikz@collect@label@scan#1%
-}
-\def\tikz@collect@arg#1#2{%
- \expandafter\def\expandafter\tikz@collected@onpath\expandafter{\tikz@collected@onpath{#2}}%
- #1%
-}
-
-
-\def\tikz@invoke@collected@onpath{%
- \tikz@node@is@a@labeltrue%
- \let\tikz@temp=\tikz@collected@onpath%
- \let\tikz@collected@onpath=\pgfutil@empty%
- \expandafter\tikz@scan@next@command\tikz@temp\pgf@stop%
- \tikz@node@is@a@labelfalse%
-}
-
-
-
-
-% Syntax for lineto:
-% -- <point>
-
-\def\tikz@lineto{%
- \pgfutil@ifnextchar |%
- {\expandafter\tikz@hv@lineto\pgfutil@gobble}%
- {\expandafter\pgfutil@ifnextchar\tikz@activebar{\expandafter\tikz@hv@lineto\pgfutil@gobble}%
- {\expandafter\tikz@lineto@mid\pgfutil@gobble}}}
-\def\tikz@lineto@mid{%
- \pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@lineto@mid}%
- {%
- \pgfutil@ifnextchar c{\tikz@close}{%
- \pgfutil@ifnextchar p{\pgfsetlinetofirstplotpoint\expandafter\tikz@plot\pgfutil@gobble}%
- {\tikz@scan@one@point{\tikz@@lineto}}}}}
-\def\tikz@@lineto#1{%
- % Record the starting point for later labels on the path:
- \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}
- \iftikz@shapeborder%
- % ok, target is a shape. recalculate end
- \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@last@position}}%
- \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
- \tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
- \tikz@path@lineto{\tikz@last@position}%
- \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \tikz@make@last@position{#1}%
- \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
- \else%
- % target is a reasonable point...
- % Record the starting point for later labels on the path:
- \tikz@make@last@position{#1}%
- \tikz@flush@moveto@toward{\tikz@last@position}\pgf@x\pgf@y%
- \tikz@path@lineto{\tikz@last@position}%
- \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \fi%
- \let\tikz@timer=\tikz@timer@line%
- \tikz@scan@next@command%
-}
-
-% snake or lineto?
-\def\tikz@path@lineto#1{%
- \iftikz@snaked%
- {
- \pgfsyssoftpathmovetorelevantfalse%
- \pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength},\tikz@postsnake}{#1}%
- }
- \else%
- \pgfpathlineto{#1}%
- \fi%
-}
-
-% snake or lineto?
-\def\tikz@path@close#1{%
- \iftikz@snaked%
- {%
- \pgftransformreset%
- \pgfpathsnakesto{\tikz@presnake,{\tikz@snake}{\tikz@mainsnakelength},\tikz@postsnake}{#1}%
- }%
- \pgfpathclose%
- \else%
- \pgfpathclose%
- \fi%
-}
-
-
-% Syntax for lineto horizontal/vertical:
-% -| <point>
-
-\def\tikz@hv@lineto{%
- \pgfutil@ifnextchar n
- {\tikz@collect@label@onpath\tikz@hv@lineto}
- {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@hv@lineto}%
- {\tikz@scan@one@point{\tikz@@hv@lineto}}}}
-\def\tikz@@hv@lineto#1{%
- \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \pgf@yc=\tikz@lasty%
- \tikz@make@last@position{#1}%
- \tikz@flush@moveto@toward{\pgfqpoint{\tikz@lastx}{\pgf@yc}}\pgf@x\pgf@yc%
- \iftikz@shapeborder%
- % ok, target is a shape. have to work now:
- {%
- \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\tikz@lastx}{\pgf@yc}}}%
- \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
- \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
- \tikz@path@lineto{\tikz@last@position}%
- \xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}% move out of group
- }%
- \let\tikz@timer@end=\tikz@timer@end@temp%
- \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
- \else%
- \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@yc}}%
- \tikz@path@lineto{\tikz@last@position}%
- \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}% move out of group
- \fi%
- \let\tikz@timer=\tikz@timer@hvline%
- \tikz@scan@next@command%
-}
-
-% Syntax for lineto vertical/horizontal:
-% |- <point>
-
-\def\tikz@vh@lineto-{\tikz@vh@lineto@next}
-\def\tikz@vh@lineto@next{%
- \pgfutil@ifnextchar n
- {\tikz@collect@label@onpath\tikz@vh@lineto@next}
- {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@vh@lineto@next}%
- {\tikz@scan@one@point\tikz@@vh@lineto}}}
-\def\tikz@@vh@lineto#1{%
- \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \pgf@xc=\tikz@lastx%
- \tikz@make@last@position{#1}%
- \tikz@flush@moveto@toward{\pgfqpoint{\pgf@xc}{\tikz@lasty}}\pgf@xc\pgf@y%
- \iftikz@shapeborder%
- % ok, target is a shape. have to work now:
- {%
- \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\pgfqpoint{\pgf@xc}{\tikz@lasty}}}%
- \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
- \tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
- \tikz@path@lineto{\tikz@last@position}%
- \xdef\tikz@timer@end@temp{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}% move out of group
- }%
- \let\tikz@timer@end=\tikz@timer@end@temp%
- \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
- \else%
- \tikz@path@lineto{\pgfqpoint{\pgf@xc}{\tikz@lasty}}%
- \tikz@path@lineto{\tikz@last@position}%
- \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \fi%
- \let\tikz@timer=\tikz@timer@vhline%
- \tikz@scan@next@command%
-}
-
-% Syntax for cycle:
-% -- cycle
-\def\tikz@close c{%
- \pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@lineto@mid c}% oops, a coordinate
- {\tikz@@close c}}%
-\def\tikz@@close cycle{%
- \tikz@flush@moveto%
- \tikz@path@close{\expandafter\pgfpoint\pgfsyssoftpath@lastmoveto}%
- \def\pgfstrokehook{}%
- \let\tikz@timer=\@undefined%
- \tikz@scan@next@command%
-}
-
-
-% Syntax for options:
-% [options]
-\def\tikz@parse@options#1]{%
- \tikz@setkeys{#1}%
- \tikz@scan@next@command%
-}
-
-% Syntax for edges:
-% edge [options] (coordinate)
-% edge [options] node {node text} (coordinate)
-\def\tikz@edge@plain{%
- \begingroup%
- \tikz@to@use@whom%
- \let\tikz@to@or@edge@function=\tikz@do@edge%
- \tikz@to@or@edge}
-
-% Syntax for to paths:
-% to [options] (coordinate)
-% to [options] node {node text} (coordinate)
-\def\tikz@to o{%
- \tikz@to@use@last@coordinate%
- \let\tikz@to@or@edge@function=\tikz@do@to%
- \tikz@to@or@edge}
-
-\def\tikz@to@or@edge{\pgfutil@ifnextchar[\tikz@@to@or@edge{\tikz@@to@or@edge[]}}%}
-\def\tikz@@to@or@edge[#1]{%
- \def\tikz@@to@local@options{[#1]}%
- \let\tikz@collected@onpath=\pgfutil@empty%
- \tikz@@to@collect%
-}
-\def\tikz@@to@collect{%
- \pgfutil@ifnextchar(\tikz@@to@or@edge@coordinate
- {\pgfutil@ifnextchar n{\tikz@collect@label@onpath\tikz@@to@collect}%
- {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@to@collect}
- {\PackageError{tikz}{( expected}{}%}
- \tikz@@to@or@edge@coordinate()}}}%
-}
-
-\def\tikz@@to@or@edge@coordinate(#1){%
- \def\tikztotarget{#1}%
- \tikz@to@or@edge@function%
-}
-
-\def\tikz@do@edge{%
- \setbox\tikz@figbox=\hbox\bgroup%
- \unhbox\tikz@figbox%
- \hbox\bgroup
- \bgroup%
- \pgfinterruptpath%
- \pgfscope%
- \let\tikz@transform=\pgfutil@empty%
- \let\tikz@options=\pgfutil@empty%
- \let\tikz@tonodes=\tikz@collected@onpath%
- \def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
- \let\tikz@collected@onpath=\pgfutil@empty%
- \tikz@options%
- \tikz@transform%
- % Typeset node:
- \tikz@atbegin@to%
- \path[style=every edge]\tikz@@to@local@options(\tikztostart)\tikz@to@path;%
- \tikz@atend@to%
- \endpgfscope%
- \endpgfinterruptpath%
- \egroup
- \egroup%
- \egroup%
- \global\setbox\tikz@tempbox=\copy\tikz@figbox%
- \endgroup%
- \setbox\tikz@figbox=\box\tikz@tempbox%
- \tikz@scan@next@command%
-}
-
-\def\tikz@do@to{%
- \let\tikz@tonodes=\tikz@collected@onpath%
- \def\tikztonodes{{\pgfextra{\tikz@node@is@a@labeltrue}\tikz@tonodes}}%
- \let\tikz@collected@onpath=\pgfutil@empty%
- \tikz@scan@next@command%
- \pgfextra{\tikz@atbegin@to}%
- [style=every to]\tikz@@to@local@options\tikz@to@path%
- \pgfextra{\tikz@atend@to}%
-}
-
-
-\def\tikz@to@use@last@coordinate{%
- \iftikz@shapeborder%
- \edef\tikztostart{\tikz@shapeborder@name}%
- \else%
- \edef\tikztostart{\the\tikz@lastx,\the\tikz@lasty}%
- \fi%
-}
-\def\tikz@to@use@last@fig@name{%
- \edef\tikztostart{\tikz@to@last@fig@name}%
-}
-
-
-
-% Syntax for edge from parent:
-% edge from parent [options]
-\def\tikz@edgetoparent from parent{\pgfutil@ifnextchar[\tikz@@edgetoparent{\tikz@@edgetoparent[]}}%}
-\def\tikz@@edgetoparent[#1]{%
- \let\tikz@edge@to@parent@needed=\pgfutil@empty%
- \tikz@node@is@a@labeltrue%
- \tikz@scan@next@command [style=edge from parent,#1] \tikz@edge@to@parent@path%
-}
-
-
-% Syntax for bezier curves
-% .. controls(point) and (point) .. (target)
-% .. controls(point) .. (target)
-% .. (target) % currently not supported
-
-\def\tikz@dot.{\tikz@@dot}%
-\def\tikz@@dot{%
- \pgfutil@ifnextchar n%
- {\tikz@collect@label@onpath\tikz@@dot}%
- {\pgfutil@ifnextchar c{\tikz@curveto@double}{\tikz@curveto@auto}}}
-
-\def\tikz@curveto@double co{%
- \pgfutil@ifnextchar o{\tikz@collect@coordinate@onpath\tikz@@dot co}
- {\tikz@cureveto@@double}}
-\def\tikz@cureveto@@double ntrols#1{%
- \tikz@scan@one@point\tikz@curveA#1%
-}
-\def\tikz@curveA#1{%
- \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- {%
- \tikz@make@last@position{#1}%
- \xdef\tikz@curve@first{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- }%
- \pgfutil@ifnextchar a
- {\tikz@curveBand}%
- {\let\tikz@curve@second\tikz@curve@first\tikz@curveCdots}%
-}
-\def\tikz@curveBand and{%
- \tikz@scan@one@point\tikz@curveB%
-}
-\def\tikz@curveB#1{%
- \def\tikz@curve@second{#1}%
- \tikz@curveCdots}
-\def\tikz@curveCdots{%
- \afterassignment\tikz@curveCdot\let\@next=}
-\def\tikz@curveCdot.{%
- \ifx\@next.%
- \else%
- \PackageError{tikz}{Dot expected}{}%
- \fi%
- \tikz@updatecurrenttrue%
- \tikz@curveCcheck%
-}
-\def\tikz@curveCcheck{%
- \pgfutil@ifnextchar n%
- {\tikz@collect@label@onpath\tikz@curveCcheck}
- {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@curveCcheck}
- {\tikz@scan@one@point\tikz@curveC}}%
-}
-\def\tikz@curveC#1{%
- \tikz@make@last@position{#1}%
- \edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- {%
- \tikz@lastxsaved=\tikz@lastx%
- \tikz@lastysaved=\tikz@lasty%
- \tikz@make@last@position{\tikz@curve@second}%
- \xdef\tikz@curve@second{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- }%
- %
- % Start recalculating things in case start and end are shapes.
- %
- % First, the start:
- \ifx\tikz@moveto@waiting\relax%
- \else%
- \pgf@process{\pgfpointshapeborder{\tikz@moveto@waiting}{\tikz@curve@first}}%
- \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}%
- \pgfpathmoveto{\pgfqpoint{\pgf@x}{\pgf@y}}%
- \fi%
- \let\tikz@timer@cont@one=\tikz@curve@first%
- \let\tikz@timer@cont@two=\tikz@curve@second%
- % Second, the end:
- \iftikz@shapeborder%
- % ok, target is a shape. recalculate third
- {%
- \pgf@process{\pgfpointshapeborder{\tikz@shapeborder@name}{\tikz@curve@second}}%
- \tikz@make@last@position{\pgfqpoint{\pgf@x}{\pgf@y}}%
- \edef\tikz@curve@third{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
- \global\let\tikz@timer@end@temp=\tikz@curve@third% move out of group
- }%
- \let\tikz@timer@end=\tikz@timer@end@temp%
- \edef\tikz@moveto@waiting{\tikz@shapeborder@name}%
- \else%
- \pgfpathcurveto{\tikz@curve@first}{\tikz@curve@second}{\tikz@curve@third}%
- \let\tikz@timer@end=\tikz@curve@third
- \let\tikz@moveto@waiting=\relax%
- \fi%
- \let\tikz@timer=\tikz@timer@curve%
- \tikz@scan@next@command%
-}
-
-
-% Syntax for rectangles:
-% rectangle <corner point>
-\def\tikz@rect ectangle{%
- \tikz@flush@moveto%
- \edef\tikz@timer@start{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \tikz@@rect}%
-\def\tikz@@rect{%
- \pgfutil@ifnextchar n
- {\tikz@collect@label@onpath\tikz@@rect}
- {\pgfutil@ifnextchar c{\tikz@collect@coordinate@onpath\tikz@@rect}%
- {
- \pgf@xa=\tikz@lastx\relax%
- \pgf@ya=\tikz@lasty\relax%
- \tikz@scan@one@point\tikz@rectB}}}
-\def\tikz@rectB#1{%
- \tikz@make@last@position{#1}%
- \edef\tikz@timer@end{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \let\tikz@timer=\tikz@timer@line%
- \pgfpathmoveto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
- \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\tikz@lasty}}%
- \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
- \tikz@path@lineto{\pgfqpoint{\tikz@lastx}{\pgf@ya}}%
- \iftikz@snaked%
- \tikz@path@lineto{\pgfqpoint{\pgf@xa}{\pgf@ya}}%
- \fi%
- \pgfpathclose%
- \pgfpathmoveto{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
- \def\pgfstrokehook{}%
- \tikz@scan@next@command%
-}
-
-
-
-% Syntax for grids:
-% grid <corner point>
-\def\tikz@grid rid{%
- \tikz@flush@moveto%
- \pgf@xa=\tikz@lastx\relax%
- \pgf@ya=\tikz@lasty\relax%
- \pgfutil@ifnextchar[{\tikz@gridA}{\tikz@gridA[]}}%}
-\def\tikz@gridA[#1]{%
- \def\tikz@grid@options{#1}%
- \tikz@scan@one@point\tikz@gridB}%
-\def\tikz@gridB#1{%
- \tikz@make@last@position{#1}%
- {%
- \expandafter\tikz@setkeys\expandafter{\tikz@grid@options}
- \tikz@checkunit{\tikz@grid@x}%
- \iftikz@isdimension%
- \pgf@process{\pgfpoint{\tikz@grid@x}{0pt}}%
- \else%
- \pgf@process{\pgfpointxy{\tikz@grid@x}{0}}%
- \fi%
- \pgf@xb=\pgf@x%
- \pgf@yb=\pgf@y%
- \tikz@checkunit{\tikz@grid@y}%
- \iftikz@isdimension%
- \pgf@process{\pgfpoint{0pt}{\tikz@grid@y}}%
- \else%
- \pgf@process{\pgfpointxy{0}{\tikz@grid@y}}%
- \fi%
- \advance\pgf@xb by\pgf@x%
- \advance\pgf@yb by\pgf@y%
- \pgfpathgrid[stepx=\pgf@xb,stepy=\pgf@yb]%
- {\pgfqpoint{\pgf@xa}{\pgf@ya}}{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}%
- }
- \tikz@scan@next@command%
-}
-
-
-
-% Syntax for plot:
-% plot [local options] ... % starts with a moveto
-% -- plot [local options] ... % starts with a lineto
-\def\tikz@plot lot{%
- \tikz@flush@moveto%
- \pgfutil@ifnextchar[{\tikz@@plot}{\tikz@@plot[]}}%}
-\def\tikz@@plot[#1]{%
- \begingroup%
- \let\tikz@options=\pgfutil@empty%
- \tikz@every@style{every plot}%
- \tikz@setkeys{#1}%
- \pgfutil@ifnextchar f{\tikz@plot@f}%
- {\pgfutil@ifnextchar c{\tikz@plot@scan@points}%
- {\pgfutil@ifnextchar ({\tikz@plot@expression}{%
- \PackageError{tikz}{Cannot parse this plotting data}{}%
- \endgroup}}}}
-\def\tikz@plot@f f{\pgfutil@ifnextchar i{\tikz@plot@file}{\tikz@plot@function}}
-
-\def\tikz@plot@file ile#1{\def\tikz@plot@data{\pgfplotxyfile{#1}}\tikz@@@plot}%
-\def\tikz@plot@scan@points coordinates#1{%
- \pgfplothandlerrecord\tikz@plot@data%
- \pgfplotstreamstart%
- \pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}
- {\tikz@scan@one@point\tikz@plot@next@point}%
- #1\pgf@stop%
-}
-\def\tikz@plot@next@point#1{%
- \pgfplotstreampoint{#1}%
- \pgfutil@ifnextchar\pgf@stop{\pgfplotstreamend\expandafter\tikz@@@plot\pgfutil@gobble}%
- {\tikz@scan@one@point\tikz@plot@next@point}%
-}
-\def\tikz@plot@function unction#1{%
- \def\tikz@plot@filename{\tikz@plot@prefix\tikz@plot@id}%
- \iftikz@plot@raw@gnuplot%
- \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{#1}}%
- \else%
- \iftikz@plot@parametric%
- \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
- set samples \tikz@plot@samples;
- set parametric;
- plot [t=\tikz@plot@domain] #1}}%
- \else%
- \def\tikz@plot@data{\pgfplotgnuplot[\tikz@plot@filename]{%
- set samples \tikz@plot@samples;
- plot [x=\tikz@plot@domain] #1}}%
- \fi%
- \fi%
- \tikz@@@plot%
-}
-
-\def\tikz@plot@no@resample{%
- \pgfutil@IfFileExists{\tikz@plot@filename.table}%
- {\def\tikz@plot@data{\pgfplotxyfile{\tikz@plot@filename.table}}}%
- {}%
-}
-
-\def\tikz@plot@expression(#1){%
- \edef\tikz@plot@data{\noexpand\pgfplotfunction{\expandafter\noexpand\tikz@plot@var}{\tikz@plot@samplesat}}%
- \expandafter\def\expandafter\tikz@plot@data\expandafter{\tikz@plot@data{\tikz@scan@one@point\pgfutil@firstofone(#1)}}%
- \tikz@@@plot%
-}
-
-\def\tikz@@@plot{%
- \def\pgfplotlastpoint{\pgfpointorigin}%
- \tikz@plot@handler%
- \tikz@plot@data%
- \global\let\tikz@@@temp=\pgfplotlastpoint%
- \ifx\tikz@plot@mark\pgfutil@empty%
- \else%
- % Marks are drawn after the path.
- \setbox\tikz@figbox=\hbox{%
- \unhbox\tikz@figbox%
- \hbox{{%
- \pgfinterruptpath%
- \pgfscope%
- \let\tikz@options=\pgfutil@empty%
- \let\tikz@transform=\pgfutil@empty%
- \expandafter\tikz@setkeys\expandafter{\tikz@plot@mark@options}%
- \tikz@options%
- \ifx\tikz@mark@list\pgfutil@empty%
- \pgfplothandlermark{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}%
- \else
- \pgfplothandlermarklisted{\tikz@transform\pgfuseplotmark{\tikz@plot@mark}}{\tikz@mark@list}%
- \fi
- \tikz@plot@data%
- \endpgfscope
- \endpgfinterruptpath%
- }}%
- }%
- \fi%
- \global\setbox\tikz@tempbox=\copy\tikz@figbox%
- \endgroup%
- \setbox\tikz@figbox=\box\tikz@tempbox%
- \tikz@make@last@position{\tikz@@@temp}%
- \tikz@scan@next@command%
-}
-
-
-\pgfdeclareplotmark{ball}
-{%
- \def\tikz@shading{ball}%
- \shade (0,0) circle (\pgfplotmarksize);%
-}
-
-
-
-
-% Syntax for cosine curves:
-% cos <end of quarter-period>
-\def\tikz@cosine s{\tikz@scan@one@point\tikz@@cosine}
-\def\tikz@@cosine#1{%
- \tikz@flush@moveto%
- \pgf@process{#1}%
- \pgf@xc=\pgf@x%
- \pgf@yc=\pgf@y%
- \advance\pgf@xc by-\tikz@lastx%
- \advance\pgf@yc by-\tikz@lasty%
- \advance\tikz@lastx by\pgf@xc%
- \advance\tikz@lasty by\pgf@yc%
- \tikz@lastxsaved=\tikz@lastx%
- \tikz@lastysaved=\tikz@lasty%
- \tikz@updatecurrenttrue%
- \pgfpathcosine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
- \tikz@scan@next@command%
-}
-
-% Syntax for sine curves:
-% sin <end of quarter-period>
-\def\tikz@sine in{\tikz@scan@one@point\tikz@@sine}
-\def\tikz@@sine#1{%
- \tikz@flush@moveto%
- \pgf@process{#1}%
- \pgf@xc=\pgf@x%
- \pgf@yc=\pgf@y%
- \advance\pgf@xc by-\tikz@lastx%
- \advance\pgf@yc by-\tikz@lasty%
- \advance\tikz@lastx by\pgf@xc%
- \advance\tikz@lasty by\pgf@yc%
- \tikz@lastxsaved=\tikz@lastx%
- \tikz@lastysaved=\tikz@lasty%
- \tikz@updatecurrenttrue%
- \pgfpathsine{\pgfqpoint{\pgf@xc}{\pgf@yc}}%
- \tikz@scan@next@command%
-}
-
-% Syntax for parabolas:
-% parabola[options] bend <coordinate> <coordinate>
-\def\tikz@parabola arabola{%
- \pgfutil@ifnextchar[{\tikz@parabola@options}{\tikz@parabola@options[]}}%}
-
-\def\tikz@parabola@options[#1]{%
- \def\tikz@parabola@option{#1}%
- \pgfutil@ifnextchar b{\tikz@parabola@scan@bend}{\tikz@scan@one@point\tikz@parabola@semifinal}}
-\def\tikz@parabola@scan@bend bend{\tikz@scan@one@point\tikz@parabola@scan@bendB}
-\def\tikz@parabola@scan@bendB#1{%
- \def\tikz@parabola@bend{#1}%
- \tikz@scan@one@point\tikz@parabola@semifinal%
-}
-\def\tikz@parabola@semifinal#1{%
- \tikz@flush@moveto%
- % Save original start:
- \pgf@xb=\tikz@lastx%
- \pgf@yb=\tikz@lasty%
- \tikz@make@last@position{#1}%
- \pgf@xc=\tikz@lastx%
- \pgf@yc=\tikz@lasty%
- \begingroup% now calculate bend:
- \expandafter\tikz@setkeys\expandafter{\tikz@parabola@option}%
- \tikz@lastxsaved=\tikz@parabola@bend@factor\tikz@lastx%
- \tikz@lastysaved=\tikz@parabola@bend@factor\tikz@lasty%
- \advance\tikz@lastxsaved by\pgf@xb%
- \advance\tikz@lastysaved by\pgf@yb%
- \advance\tikz@lastxsaved by-\tikz@parabola@bend@factor\pgf@xb%
- \advance\tikz@lastysaved by-\tikz@parabola@bend@factor\pgf@yb%
- \expandafter\tikz@make@last@position\expandafter{\tikz@parabola@bend}%
- % Calculate delta from bend
- \advance\pgf@xc by-\tikz@lastx%
- \advance\pgf@yc by-\tikz@lasty%
- % Ok, now calculate delta to bend
- \advance\tikz@lastx by-\pgf@xb%
- \advance\tikz@lasty by-\pgf@yb%
- \xdef\tikz@parabola@b{{\noexpand\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}{\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}}%
- \endgroup%
- \expandafter\pgfpathparabola\tikz@parabola@b%
- \tikz@scan@next@command%
-}
-
-
-% Syntax for circles:
-% circle (radius)
-%
-% Syntax for ellipses:
-% ellipse (x-radius and y-radius)
-%
-% radii can be dimensionless, then they are in the xy-system
-\def\tikz@circle ircle{\tikz@flush@moveto\tikz@@circle}
-\def\tikz@ellipse llipse{\tikz@flush@moveto\tikz@@circle}
-\def\tikz@@circle{%
- \pgfutil@ifnextchar(\tikz@@@circle{%)
- \advance\tikz@expandcount by -1%
- \ifnum\tikz@expandcount<0\relax%
- \let\@next=\tikz@@circle@scangiveup%
- \else%
- \let\@next=\tikz@@circle@scanexpand%
- \fi%
- \@next%
- }%
-}
-\def\tikz@@circle@scanexpand{\expandafter\tikz@@circle}
-\def\tikz@@circle@scangiveup#1{\PackageError{tikz}{Cannot parse this radius}{}#1{\tikz@scan@next@command}}
-\def\tikz@@@circle(#1){%
- \pgfutil@in@{ and }{#1}%
- \ifpgfutil@in@%
- \tikz@@ellipseB(#1)%
- \else%
- \tikz@@ellipseB(#1 and #1)%
- \fi%
- \tikz@scan@next@command%
-}
-\def\tikz@@ellipseB(#1 and #2){%
- \tikz@checkunit{#1}%
- \iftikz@isdimension%
- \pgfpathellipse{\tikz@last@position}{\pgfpoint{#1}{0pt}}{\pgfpoint{0pt}{#2}}%
- \else%
- \pgfpathellipse{\tikz@last@position}{\pgfpointxy{#1}{0}}{\pgfpointxy{0}{#2}}%
- \fi%
-}
-
-% Syntax 1 for arcs:
-% arc (start angle:end angle:radius)
-%
-% Syntax 2 for arcs:
-% arc (start angle:end angle:x-radius and y-radius)
-%
-% radius can be dimensionless, then the arc is in the xy-coordinate system
-\def\tikz@arcA rc{%
- \tikz@flush@moveto%
- \pgfutil@ifnextchar({\tikz@@arcto}{\expandafter\tikz@arcA\expandafter r\expandafter c}}
-
-\def\tikz@@arcto(#1){%
- \edef\tikz@temp{(#1)}%
- \expandafter\tikz@@@arcto@check@slashand\tikz@temp%
-}
-
-\def\tikz@@@arcto@check@slashand(#1:#2:#3){%
- \pgfutil@in@{ and }{#3}%
- \ifpgfutil@in@%
- \tikz@parse@arc@and(#1:#2:#3)%
- \else%
- \tikz@parse@arc@and(#1:#2:#3 and #3)%
- \fi%
-}
-
-\def\tikz@parse@arc@and(#1:#2:#3 and #4){%
- \tikz@checkunit{#3}%
- \iftikz@isdimension%
- \tikz@@@arcfinal{\pgfpatharc{#1}{#2}{#3 and #4}}
- {\pgfpointpolar{#1}{#3 and #4}}
- {\pgfpointpolar{#2}{#3 and #4}}%
- \else%
- \tikz@@@arcfinal{\pgfpatharcaxes{#1}{#2}{\pgfpointxy{#3}{0}}{\pgfpointxy{0}{#4}}}
- {\pgfpointpolarxy{#1}{#3 and #4}}{\pgfpointpolarxy{#2}{#3 and #4}}%
- \fi%
-}
-
-\def\tikz@@@arcfinal#1#2#3{%
- #1%
- \pgf@process{#2}%
- \advance\tikz@lastx by-\pgf@x%
- \advance\tikz@lasty by-\pgf@y%
- \pgf@process{#3}%
- \advance\tikz@lastx by\pgf@x%
- \advance\tikz@lasty by\pgf@y%
- \tikz@lastxsaved=\tikz@lastx%
- \tikz@lastysaved=\tikz@lasty%
- \tikz@scan@next@command%
-}
-
-
-% Syntax for coordinates:
-% coordinate[options] (coordinate name) at (point)
-% where ``at (point)'' is optional
-\def\tikz@coordinate ordinate{%
- \pgfutil@ifnextchar[{\tikz@@coordinate@opt}{\tikz@@coordinate@opt[]}}
-\def\tikz@@coordinate@opt[#1]{%
- \pgfutil@ifnextchar({\tikz@@coordinate[#1]}
- {\tikz@fig ode[shape=coordinate,#1]{}}}%}
-\def\tikz@@coordinate[#1](#2){%
- \pgfutil@ifnextchar a{\tikz@@coordinate@at[#1](#2)}
- {\tikz@fig ode[shape=coordinate,#1](#2){}}}
-\def\tikz@@coordinate@at[#1](#2)at#3(#4){%
- \tikz@fig ode[shape=coordinate,#1](#2)at(#4){}}
-
-
-
-% Syntax for nodes:
-% node[options] (node name) {label text}
-%
-% all of [options], (node name) and {label text} are optional. There
-% can be multiple options before the label text as in
-% node[draw] (a) [rotate=10] {text}
-%
-% A label text always ``ends'' the node.
-\def\tikz@fig ode{%
- \edef\tikz@save@line@width{\the\pgflinewidth}%
- \begingroup%
- \let\tikz@fig@name=\pgfutil@empty%
- \begingroup%
- \tikz@is@matrixfalse%
- \let\nodepart=\tikz@nodepart%
- \let\tikz@options=\pgfutil@empty%
- \let\tikz@after@node=\pgfutil@empty%
- \let\tikz@afternodepathoptions=\pgfutil@empty%
- \let\tikz@transform=\pgfutil@empty%
- \let\tikz@mode=\pgfutil@empty%
- \def\tikz@node@at{\pgfqpoint{\the\tikz@lastx}{\the\tikz@lasty}}%
- \iftikz@node@is@a@label%
- \else%
- \let\tikz@time=\pgfutil@empty%
- \fi%
- \tikz@every@style{every node}%
- \tikz@@scan@fig}%
-\def\tikz@@scan@fig{%
- \pgfutil@ifnextchar a{\tikz@fig@scan@at}
- {\pgfutil@ifnextchar({\tikz@fig@scan@name}
- {\pgfutil@ifnextchar[{\tikz@fig@scan@options}%
- {\pgfutil@ifnextchar\bgroup{\tikz@fig@main}%
- {\PackageError{tikz}{A node must have a (possibly empty) label text}{}%
- \tikz@fig@main{}}}}}}%}}
-\def\tikz@fig@scan@at at{%
- \tikz@scan@one@point\tikz@@fig@scan@at}
-\def\tikz@@fig@scan@at#1{%
- \def\tikz@node@at{#1}\tikz@@scan@fig}%
-\def\tikz@fig@scan@name(#1){\edef\tikz@fig@name{#1}\tikz@@scan@fig}%
-\def\tikz@fig@scan@options[#1]{\tikz@setkeys{#1}\def\test{#1}\tikz@@scan@fig}%
-\def\tikz@fig@main{\afterassignment\tikz@@fig@main\let\next=}
-\def\tikz@@fig@main{%
- \pgfutil@ifundefined{pgf@sh@s@\tikz@shape}%
- {\PackageError{tikz}%
- {Unknown shape ``\tikz@shape.'' Using ``rectangle'' instead}{}%
- \def\tikz@shape{rectangle}}%
- {}%
- \tikz@every@style{every \tikz@shape\space node}%
- \iftikz@is@matrix%
- \let\tikz@next=\tikz@do@matrix%
- \else%
- \let\tikz@next=\tikz@do@fig%
- \fi%
- \tikz@next%
-}
-\def\tikz@do@fig{%
- \setbox\pgfnodeparttextbox=\hbox%
- \bgroup%
- \tikz@every@style{every text node part}%
- \ifx\tikz@textopacity\pgfutil@empty%
- \else%
- \pgfsetfillopacity{\tikz@textopacity}%
- \pgfsetstrokeopacity{\tikz@textopacity}%
- \fi%
- \pgfinterruptpicture%
- \tikz@textfont%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \begingroup%
- \pgfutil@minipage[t]{\tikz@text@width}%
- \tikz@text@action%
- \fi%
- \tikz@atbegin@node%
- \bgroup%
- \aftergroup\unskip%
- \ifx\tikz@textcolor\pgfutil@empty%
- \else%
- \pgfutil@colorlet{.}{\tikz@textcolor}%
- \fi%
- \pgfsetcolor{.}%
- \setbox\tikz@figbox=\box\voidb@x%
- \tikz@uninstallcommands%
- \aftergroup\tikz@fig@collectresetcolor%
- \ignorespaces%
-}
-\def\tikz@fig@collectresetcolor{%
- \pgfutil@ifnextchar\reset@color%
- {\reset@color\afterassignment\tikz@fig@collectresetcolor\let\tikz@temp=}%
- {\tikz@fig@boxdone}%
-}
-\def\tikz@fig@boxdone{%
- \tikz@atend@node%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \pgfutil@endminipage%
- \endgroup%
- \fi%
- \endpgfinterruptpicture%
- \egroup%
- \pgfutil@ifnextchar c{\tikz@fig@mustbenamed\tikz@fig@continue}%
- {\pgfutil@ifnextchar[{\tikz@fig@mustbenamed\tikz@fig@continue}%
- {\pgfutil@ifnextchar t{\tikz@fig@mustbenamed\tikz@fig@continue}
- {\pgfutil@ifnextchar e{\tikz@fig@mustbenamed\tikz@fig@continue}
- {\ifx\tikz@after@node\pgfutil@empty\expandafter\tikz@fig@continue\else\expandafter\tikz@fig@mustbenamed\expandafter\tikz@fig@continue\fi}}}}}%}
-
-\def\tikz@do@matrix{%
- \tikz@every@style{every matrix}%
- \tikz@node@transformations%
- \tikz@fig@mustbenamed%
- \setbox\tikz@figbox=\hbox\bgroup%
- \setbox\pgfutil@tempboxa=\copy\tikz@figbox%
- \unhbox\pgfutil@tempboxa%
- \hbox\bgroup\bgroup%
- \pgfinterruptpath%
- \pgfscope%
- \tikz@options%
- \setbox\tikz@figbox=\box\voidb@x%
- \let\tikzmatrixname=\tikz@fig@name%
- \edef\tikz@m@anchor{\ifx\tikz@matrix@anchor\pgfutil@empty\tikz@anchor\else\tikz@matrix@anchor\fi}%
- \expandafter\pgfutil@in@\expandafter{\expandafter.\expandafter}\expandafter{\tikz@m@anchor}%
- \ifpgfutil@in@%
- \expandafter\tikz@matrix@split\tikz@m@anchor\relax%
- \else%
- \def\tikz@matrix@shift{\pgfpointorigin}%
- \fi%
- \let\tikz@transform=\relax%
- \pgfmatrix%
- {\tikz@shape}%
- {\tikz@m@anchor}%
- {\tikz@fig@name}%
- {%
- \pgfutil@tempdima=\pgflinewidth%
- {\begingroup\tikz@finish}%
- \global\pgflinewidth=\pgfutil@tempdima%
- }%
- {\tikz@matrix@shift}%
- {%
- \tikz@matrix@make@active@ampersand%
- \def\pgfmatrixbegincode{%
- \pgfsys@beginscope%
- \tikz@common@matrix@code%
- \tikz@atbegin@cell%
- }%
- \def\tikz@common@matrix@code{%
- \let\tikz@options=\pgfutil@empty%
- \let\tikz@mode=\pgfutil@empty%
- \tikz@every@style{every cell}%
- \tikz@every@style{column \the\pgfmatrixcurrentcolumn}%
- \ifodd\pgfmatrixcurrentcolumn%
- \tikz@every@style{every odd column}%
- \else%
- \tikz@every@style{every even column}%
- \fi%
- \tikz@every@style{row \the\pgfmatrixcurrentrow}%
- \ifodd\pgfmatrixcurrentrow%
- \tikz@every@style{every odd row}%
- \else%
- \tikz@every@style{every even row}%
- \fi%
- \tikz@every@style{row \the\pgfmatrixcurrentrow\space column \the\pgfmatrixcurrentcolumn}%
- \tikz@options%
- }%
- \def\pgfmatrixendcode{%
- \tikz@atend@cell%
- \pgfsys@endscope%
- }%
- \def\pgfmatrixemptycode{%
- \pgfsys@beginscope%
- \tikz@common@matrix@code%
- \tikz@at@emptycell%
- \pgfsys@endscope%
- }%
- \aftergroup\tikz@do@matrix@cont}%
- \bgroup%
-}
-\def\tikz@do@matrix@cont{%
- \endpgfscope
- \endpgfinterruptpath%
- \egroup\egroup%
- \egroup%
- %
- \tikz@node@finish%
-}
-
-{%
- \catcode`\&=13
- \gdef\tikz@matrix@make@active@ampersand{%
- \ifx\tikz@ampersand@replacement\pgfutil@empty%
- \catcode`\&=13%
- \let&=\pgfmatrixnextcell%
- \else%
- \expandafter\let\tikz@ampersand@replacement=\pgfmatrixnextcell%
- \fi%
- }%
-}%
-
-
-\def\tikz@matrix@split#1.#2\relax{%
- \def\tikz@m@anchor{text}%
- \def\tikz@matrix@shift{\pgfpointanchor{#1}{#2}}%
-}
-
-\def\tikz@fig@continue{%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@width}%
- \wd\pgfnodeparttextbox=\pgf@x%
- \fi%
- \ifx\tikz@text@height\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@height}%
- \ht\pgfnodeparttextbox=\pgf@x%
- \fi%
- \ifx\tikz@text@depth\pgfutil@empty%
- \else%
- \pgfmathsetlength{\pgf@x}{\tikz@text@depth}%
- \dp\pgfnodeparttextbox=\pgf@x%
- \fi%
- %
- % Node transformation
- %
- \tikz@node@transformations
- %
- \setbox\tikz@figbox=\hbox{%
- \setbox\pgfutil@tempboxa=\copy\tikz@figbox%
- \unhbox\pgfutil@tempboxa%
- \hbox{{%
- \pgfinterruptpath%
- \pgfscope%
- \tikz@options%
- \setbox\tikz@figbox=\box\voidb@x%
- \pgfmultipartnode{\tikz@shape}{\tikz@anchor}{\tikz@fig@name}{%
- \pgfutil@tempdima=\pgflinewidth%
- {\begingroup\tikz@finish}%
- \global\pgflinewidth=\pgfutil@tempdima%
- }%
- \endpgfscope
- \endpgfinterruptpath%
- }}%
- }%
- %
- \tikz@node@finish%
-}
-
-
-\def\tikz@fig@mustbenamed{%
- \ifx\tikz@fig@name\pgfutil@empty%
- % Assign a dummy name
- \global\advance\tikz@fig@count by1\relax
- \edef\tikz@fig@name{tikz@f@\the\tikz@fig@count}%
- \fi%
-}
-
-\def\tikz@node@transformations{
- %
- % Possibly, we are ``online''
- %
- \ifx\tikz@time\pgfutil@empty%
- \pgftransformshift{\tikz@node@at}%
- \iftikz@fullytransformed%
- \else%
- \pgftransformresetnontranslations%
- \fi%
- \else%
- \tikz@do@auto@anchor%
- \tikz@timer%
- \fi%
- % Invoke local transformations
- \tikz@transform%
-}
-
-\def\tikz@node@finish{%
- \global\let\tikz@last@fig@name=\tikz@fig@name%
- \global\let\tikz@after@node@smuggle=\tikz@after@node%
- \global\let\tikz@afternodepathoptions@smuggle=\tikz@afternodepathoptions%
- % shift box outside group
- \global\setbox\tikz@tempbox=\copy\tikz@figbox%
- \endgroup\endgroup%
- \setbox\tikz@figbox=\box\tikz@tempbox%
- \pgflinewidth=\tikz@save@line@width%
- \let\tikz@to@last@fig@name=\tikz@last@fig@name%
- \let\tikz@to@use@whom=\tikz@to@use@last@fig@name%
- \let\tikzlastnode=\tikz@last@fig@name%
- \ifx\tikz@after@node@smuggle\pgfutil@empty%
- \else%
- \tikz@scan@next@command{\pgfextra{\tikz@afternodepathoptions@smuggle}\tikz@after@node@smuggle}\pgf@stop%
- \fi%
- \tikz@scan@next@command%
-}
-\let\tikz@fig@continue@orig=\tikz@fig@continue
-
-
-
-% Syntax for parts of nodes:
-% node ... {... \nodepart{name} ... \nodepart{name} ...}
-
-\def\tikz@nodepart#1{%
- \tikz@atend@node%
- \unskip%
- \gdef\tikz@nodepart@name{#1}%
- \global\let\tikz@fig@continue=\tikz@nodepart@continue%
- \pgfutil@ifnextchar x{\egroup\relax}{\egroup\relax}% gobble spaces
-}
-\def\tikz@nodepart@continue{%
- \global\let\tikz@fig@continue=\tikz@fig@continue@orig%
- % Now start new box:
- \expandafter\setbox\csname pgfnodepart\tikz@nodepart@name box\endcsname=\hbox%
- \bgroup%
- \tikz@every@style{every \tikz@nodepart@name\space node part}%
- \pgfinterruptpicture%
- \tikz@textfont%
- \ifx\tikz@text@width\pgfutil@empty%
- \else%
- \begingroup%
- \pgfutil@minipage[t]{\tikz@text@width}%
- \tikz@text@action%
- \fi%
- \bgroup%
- \aftergroup\unskip%
- \ifx\tikz@textcolor\pgfutil@empty%
- \else%
- \pgfutil@colorlet{.}{\tikz@textcolor}%
- \fi%
- \pgfsetcolor{.}%
- \setbox\tikz@figbox=\box\voidb@x%
- \tikz@uninstallcommands%
- \tikz@atbegin@node%
- \aftergroup\tikz@fig@collectresetcolor%
- \ignorespaces%
-}
-
-
-% Auto placement
-
-\def\tikz@auto@pre{%
- \begingroup
- \pgfresetnontranslationattimefalse
- \pgfslopedattimetrue%
- \pgfallowupsidedownattimetrue%
- \tikz@timer%
- \pgf@x=\pgf@pt@aa pt%
- \pgf@y=\pgf@pt@ab pt%
- \pgfpointnormalised{}%
-}
-
-\def\tikz@auto@post{%
- \global\let\tikz@anchor@smuggle=\tikz@anchor%
- \endgroup%
- \let\tikz@anchor=\tikz@anchor@smuggle%
-}
-
-\def\tikz@auto@anchor{%
- \ifdim\pgf@x>0.05pt%
- \ifdim\pgf@y>0.05pt%
- \def\tikz@anchor{south east}%
- \else\ifdim\pgf@y<-0.05pt%
- \def\tikz@anchor{south west}%
- \else
- \def\tikz@anchor{south}%
- \fi\fi%
- \else\ifdim\pgf@x<-0.05pt%
- \ifdim\pgf@y>0.05pt%
- \def\tikz@anchor{north east}%
- \else\ifdim\pgf@y<-0.05pt%
- \def\tikz@anchor{north west}%
- \else
- \def\tikz@anchor{north}%
- \fi\fi%
- \else%
- \ifdim\pgf@y>0pt%
- \def\tikz@anchor{east}%
- \else%
- \def\tikz@anchor{west}%
- \fi%
- \fi\fi%
-}
-
-\def\tikz@auto@anchor@prime{%
- \ifdim\pgf@x>0.05pt%
- \ifdim\pgf@y>0.05pt%
- \def\tikz@anchor{north west}%
- \else\ifdim\pgf@y<-0.05pt%
- \def\tikz@anchor{north east}%
- \else
- \def\tikz@anchor{north}%
- \fi\fi%
- \else\ifdim\pgf@x<-0.05pt%
- \ifdim\pgf@y>0.05pt%
- \def\tikz@anchor{south west}%
- \else\ifdim\pgf@y<-0.05pt%
- \def\tikz@anchor{south east}%
- \else
- \def\tikz@anchor{south}%
- \fi\fi%
- \else%
- \ifdim\pgf@y>0pt%
- \def\tikz@anchor{west}%
- \else%
- \def\tikz@anchor{east}%
- \fi%
- \fi\fi%
-}
-
-
-
-
-% Syntax for trees:
-% node {...} child [options] {...} child [options] {...} ...
-% node {...} child [options] foreach \var in {list} [options] {...} ...
-
-\def\tikz@children{%
- % Start collecting the children:
- \let\tikz@children@list=\pgfutil@empty%
- \tikznumberofchildren=0\relax%
- \tikz@collect@children c}
-
-\def\tikz@collect@children{\pgfutil@ifnextchar c{\tikz@collect@children@cchar}{\tikz@children@collected}}
-\def\tikz@collect@children@cchar c{\pgfutil@ifnextchar h{\tikz@collect@child}{\tikz@children@collected c}}
-\def\tikz@collect@child hild{\pgfutil@ifnextchar[{\tikz@collect@childA}{\tikz@collect@childA[]}}%}
-\def\tikz@collect@childA[#1]{\pgfutil@ifnextchar f{\tikz@collect@children@foreach[#1]}{\tikz@collect@childB[#1]}}
-\def\tikz@collect@childB[#1]{%
- \advance\tikznumberofchildren by1\relax
- \expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list \tikz@childnode[#1]}%
- \pgfutil@ifnextchar\bgroup{\tikz@collect@child@code}{\tikz@collect@child@code{}}}
-\def\tikz@collect@child@code#1{%
- \expandafter\def\expandafter\tikz@children@list\expandafter{\tikz@children@list{#1}}%
- \tikz@collect@children%
-}
-\def\tikz@collect@children@foreach[#1]foreach#2in#3{%
- \pgfutil@ifnextchar\bgroup{\tikz@collect@children@foreachA{#1}{#2}{#3}}{\tikz@collect@children@foreachA{#1}{#2}{#3}{}}}
-\def\tikz@collect@children@foreachA#1#2#3#4{%
- \expandafter\def\expandafter\tikz@children@list\expandafter
- {\tikz@children@list\tikz@childrennodes[#1]{#2}{#3}{#4}}%
- \c@pgf@counta=\tikznumberofchildren%
- \foreach#2in{#3}%
- {%
- \global\advance\c@pgf@counta by1\relax%
- }%
- \tikznumberofchildren=\c@pgf@counta%
- \tikz@collect@children%
-}
-\long\def\tikz@children@collected{%
- \begingroup%
- \advance\tikztreelevel by 1\relax%
- \let\tikz@options=\pgfutil@empty%
- \let\tikz@transform=\pgfutil@empty%
- \tikz@every@style{level \the\tikztreelevel}%
- \tikz@transform%
- \let\tikzparentnode=\tikz@last@fig@name%
- % Transform to center of node
- \pgftransformshift{\pgfpointanchor{\tikzparentnode}{\tikz@growth@anchor}}%
- \tikznumberofcurrentchild=0\relax%
- \tikz@children@list%
- \global\setbox\tikz@tempbox=\copy\tikz@figbox%
- \endgroup%
- \setbox\tikz@figbox=\box\tikz@tempbox%
- \tikz@scan@next@command%
-}
-
-
-% Syntax for children:
-%
-% child [all children options] foreach \var in {values} [child options] {...}
-\def\tikz@childrennodes[#1]#2#3#4{%
- \c@pgf@counta=\tikznumberofcurrentchild\relax%
- \setbox\tikz@tempbox=\box\tikz@figbox%
- \foreach#2in{#3}{%
- \tikznumberofcurrentchild=\c@pgf@counta\relax%
- \setbox\tikz@figbox=\box\tikz@tempbox%
- \tikz@childnode[#1]{#4}%
- % we must now make the current child number and the figbox survive
- % the group
- \global\c@pgf@counta=\tikznumberofcurrentchild\relax%
- \global\setbox\tikz@tempbox=\box\tikz@figbox%
- }%
- \tikznumberofcurrentchild=\c@pgf@counta\relax%
- \setbox\tikz@figbox=\box\tikz@tempbox%
-}
-
-
-% Syntax for child:
-%
-% child
-%
-% child[options]
-%
-% child[options] {node (name) {child node text} ...
-% edge from parent[options] node {label text} node {label text}}
-
-\def\tikz@childnode[#1]#2{%
- \advance\tikznumberofcurrentchild by1\relax%
- \setbox\tikz@figbox=\hbox\bgroup%
- \unhbox\tikz@figbox%
- \hbox\bgroup\bgroup%
- \pgfinterruptpath%
- \pgfscope%
- \let\tikz@transform=\pgfutil@empty%
- \tikz@every@style{every child}%
- \tikz@setkeys{#1}%
- \tikz@options%
- \tikz@transform%
- \tikz@grow%
- % Typeset node:
- \edef\tikz@parent@node@name{[name=\tikzparentnode-\the\tikznumberofcurrentchild,style=every child node]}%
- \def\tikz@child@node@text{[shape=coordinate]{}}
- \tikz@parse@child@node#2\pgf@stop%
- \expandafter\expandafter\expandafter\node
- \expandafter\tikz@parent@node@name
- \tikz@child@node@text
- \pgfextra{\global\let\tikz@childnode@name=\tikz@last@fig@name};%
- \let\tikzchildnode=\tikz@childnode@name%
- {%
- \def\tikz@edge@to@parent@needed{edge from parent}
- \ifx\tikz@child@node@rest\pgfutil@empty%
- \path edge from parent;%
- \else%
- \path (0,0) \tikz@child@node@rest \tikz@edge@to@parent@needed;%
- \fi%
- }%
- \endpgfscope%
- \endpgfinterruptpath%
- \egroup\egroup%
- \egroup%
-}
-
-\def\tikz@parse@child@node{%
- \pgfutil@ifnextchar n{\tikz@parse@child@node@n}%
- {\pgfutil@ifnextchar c{\tikz@parse@child@node@c}%
- {\tikz@parse@child@node@rest}}}
-\def\tikz@parse@child@node@rest#1\pgf@stop{\def\tikz@child@node@rest{#1}}
-\def\tikz@parse@child@node@c c{\pgfutil@ifnextchar o{\tikz@parse@child@node@co}{\tikz@parse@child@node@rest c}}
-\def\tikz@parse@child@node@co o{\pgfutil@ifnextchar o{\tikz@parse@child@node@coordinate}{\tikz@parse@child@node@rest co}}
-\def\tikz@parse@child@node@coordinate ordinate{%
- \pgfutil@ifnextchar ({\tikz@@parse@child@node@coordinate}{%
- \def\tikz@child@node@text{[shape=coordinate]{}}%
- \tikz@parse@child@node@rest}}%}
-\def\tikz@@parse@child@node@coordinate(#1){%
- \pgfutil@ifnextchar a{\tikz@p@c@n@c@at(#1)}{%
- \def\tikz@child@node@text{[shape=coordinate,name=#1]{}}%
- \tikz@parse@child@node@rest}}
-\def\tikz@p@c@n@c@at(#1)at#2(#3){%
- \def\tikz@child@node@text{[shape=coordinate,name=#1]at(#3){}}%
- \tikz@parse@child@node@rest}%
-\def\tikz@parse@child@node@n node{%
- \let\tikz@child@node@text=\pgfutil@empty%
- \tikz@p@c@s}%
-\def\tikz@p@c@s{%
- \pgfutil@ifnextchar a{\tikz@p@c@s@at}
- {\pgfutil@ifnextchar ({\tikz@p@c@s@paran}
- {\pgfutil@ifnextchar [{\tikz@p@c@s@bra}
- {\pgfutil@ifnextchar \bgroup{\tikz@p@c@s@group}
- {\PackageError{tikz}{Cannot parse this node}{}}}}}}%}}
-\def\tikz@p@c@s@at at#1(#2){%
- \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text at(#2)}
- \tikz@p@c@s}
-\def\tikz@p@c@s@paran(#1){%
- \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text(#1)}
- \tikz@p@c@s}
-\def\tikz@p@c@s@bra[#1]{%
- \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text[#1]}
- \tikz@p@c@s}
-\def\tikz@p@c@s@group#1{%
- \expandafter\def\expandafter\tikz@child@node@text\expandafter{\tikz@child@node@text{#1}}
- \tikz@parse@child@node@rest}
-
-
-%
-% Timers
-%
-
-\def\tikz@timer@line{%
- \pgftransformlineattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@end}%
-}
-
-\def\tikz@timer@vhline{%
- \ifdim\tikz@time pt<0.5pt% first half
- \pgf@process{\tikz@timer@start}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{\tikz@timer@end}%
- \pgf@xb=\tikz@time pt%
- \pgf@xb=2\pgf@xb%
- \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
- \noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}}%
- \tikz@marshal%
- \else% second half
- \pgf@process{\tikz@timer@start}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{\tikz@timer@end}%
- \pgf@xb=\tikz@time pt%
- \pgf@xb=2\pgf@xb%
- \advance\pgf@xb by-1pt%
- \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
- {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@y}}{\noexpand\tikz@timer@end}}%
- \tikz@marshal%
- \fi%
-}
-
-\def\tikz@timer@hvline{%
- \ifdim\tikz@time pt<0.5pt% first half
- \pgf@process{\tikz@timer@start}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{\tikz@timer@end}%
- \pgf@xb=\tikz@time pt%
- \pgf@xb=2\pgf@xb%
- \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}{\noexpand\tikz@timer@start}{%
- \noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}}%
- \tikz@marshal%
- \else% second half
- \pgf@process{\tikz@timer@start}%
- \pgf@xa=\pgf@x%
- \pgf@ya=\pgf@y%
- \pgf@process{\tikz@timer@end}%
- \pgf@xb=\tikz@time pt%
- \pgf@xb=2\pgf@xb%
- \advance\pgf@xb by-1pt%
- \edef\tikz@marshal{\noexpand\pgftransformlineattime{\pgf@sys@tonumber{\pgf@xb}}%
- {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@ya}}{\noexpand\tikz@timer@end}}%
- \tikz@marshal%
- \fi%
-}
-
-\def\tikz@timer@curve{%
- \pgftransformcurveattime{\tikz@time}{\tikz@timer@start}{\tikz@timer@cont@one}{\tikz@timer@cont@two}{\tikz@timer@end}%
-}
-
-
-
-%
-% Coordinate systems
-%
-
-\def\tikzdeclarecoordinatesystem#1#2{%
- \expandafter\def\csname tikz@parse@cs@#1\endcsname(##1){%
- \pgf@process{%
- #2%
- % Smuggle outside:
- \iftikz@shapeborder%
- \global\let\tikz@smuggle@a=\tikz@shapebordertrue%
- \else%
- \global\let\tikz@smuggle@a=\tikz@shapeborderfalse%
- \fi%
- \global\let\tikz@smubble@b=\tikz@shapeborder@name%
- }%
- \tikz@smuggle@a%
- \let\tikz@shapeborder@name=\tikz@smubble@b%
- \edef\tikz@return@coordinate{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
-}
-\def\tikzaliascoordinatesystem#1#2{%
- \edef\pgf@marshal{\noexpand\let\expandafter\noexpand\csname
- tikz@parse@cs@#1\endcsname=\expandafter\noexpand\csname
- tikz@parse@cs@#2\endcsname}%
- \pgf@marshal%
-}
-
-
-% Default coodinate systems:
-
-\tikzdeclarecoordinatesystem{canvas}
-{%
- \tikz@orig@setkeys{tikzcskeys}{x=0pt,y=0pt,#1}%
- \pgfpoint{\tikz@cs@x}{\tikz@cs@y}%
-}
-
-\tikzdeclarecoordinatesystem{canvas polar}
-{%
- \tikz@orig@setkeys{tikzcskeys}{angle=0,radius=0cm,#1}%
- \pgfpointpolar{\tikz@cs@angle}{\tikz@cs@xradius/\tikz@cs@yradius}%
-}
-
-\tikzdeclarecoordinatesystem{xyz}
-{%
- \tikz@orig@setkeys{tikzcskeys}{x=0,y=0,z=0,#1}%
- \pgfpointxyz{\tikz@cs@x}{\tikz@cs@y}{\tikz@cs@z}%
-}
-
-\tikzdeclarecoordinatesystem{xyz polar}
-{%
- \tikz@orig@setkeys{tikzcskeys}{angle=0,radius=0,#1}%
- \pgfpointpolarxy{\tikz@cs@angle}{\tikz@cs@xradius and \tikz@cs@yradius}%
-}
-\tikzaliascoordinatesystem{xy polar}{xyz polar}
-
-
-\tikzdeclarecoordinatesystem{node}
-{%
- \tikz@orig@setkeys{tikzcskeys}{name=,anchor=none,angle=none,#1}%
- \ifx\tikz@cs@anchor\tikz@nonetext%
- \ifx\tikz@cs@angle\tikz@nonetext%
- \expandafter\ifx\csname pgf@sh@ns@\tikz@cs@node\endcsname\tikz@coordinate@text%
- \else
- \tikz@shapebordertrue%
- \edef\tikz@shapeborder@name{\tikz@cs@node}%
- \fi%
- \pgfpointanchor{\tikz@cs@node}{center}%
- \else%
- \pgfpointanchor{\tikz@cs@node}{\tikz@cs@angle}%
- \fi%
- \else%
- \pgfpointanchor{\tikz@cs@node}{\tikz@cs@anchor}%
- \fi%
-}
-
-\tikzdeclarecoordinatesystem{intersection}
-{%
- \tikz@orig@setkeys{tikzcskeys}{#1}%
- \expandafter\tikz@@@scan@@absolute\expandafter\tikz@parse@intersection@a\tikz@cs@line@a@begin%
- \expandafter\tikz@@@scan@@absolute\expandafter\tikz@parse@intersection@b\tikz@cs@line@a@end%
- \expandafter\tikz@@@scan@@absolute\expandafter\tikz@parse@intersection@c\tikz@cs@line@b@begin%
- \expandafter\tikz@@@scan@@absolute\expandafter\tikz@parse@intersection@d\tikz@cs@line@b@end%
- \edef\pgf@marshal{%
- {\noexpand\pgfpointintersectionoflines%
- {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
- {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
- {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
- {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}%
- \pgf@marshal%
-}
-
-\tikzdeclarecoordinatesystem{perpendicular}
-{%
- \tikz@orig@setkeys{tikzcskeys}{#1}%
- \expandafter\tikz@@@scan@@absolute\expandafter\tikz@parse@intersection@a\tikz@cs@hori@line%
- \expandafter\tikz@@@scan@@absolute\expandafter\tikz@parse@intersection@b\tikz@cs@vert@line%
- \pgfqpoint{\the\pgf@xb}{\the\pgf@ya}
-}
-
-\tikzdeclarecoordinatesystem{barycentric}
-{%
- {%
- \pgf@xa=0pt% point
- \pgf@ya=0pt%
- \pgf@xb=0pt% sum
- \tikz@bary@dolist#1,=,%
- \pgfmathparse{1/\the\pgf@xb}%
- \global\pgf@x=\pgfmathresult\pgf@xa%
- \global\pgf@y=\pgfmathresult\pgf@ya%
- }%
-}
-
-\def\tikz@bary@dolist#1=#2,{%
- \def\tikz@temp{#1}%
- \ifx\tikz@temp\pgfutil@empty%
- \else
- \pgf@process{\pgfpointanchor{#1}{center}}%
- \pgfmathparse{#2}%
- \advance\pgf@xa by\pgfmathresult\pgf@x%
- \advance\pgf@ya by\pgfmathresult\pgf@y%
- \advance\pgf@xb by\pgfmathresult pt%
- \expandafter\tikz@bary@dolist%
- \fi%
-}
-
-
-\tikz@orig@define@key{tikzcskeys}{x}{\def\tikz@cs@x{#1}}
-\tikz@orig@define@key{tikzcskeys}{y}{\def\tikz@cs@y{#1}}
-\tikz@orig@define@key{tikzcskeys}{z}{\def\tikz@cs@z{#1}}
-\tikz@orig@define@key{tikzcskeys}{angle}{\def\tikz@cs@angle{#1}}
-\tikz@orig@define@key{tikzcskeys}{radius}{\def\tikz@cs@xradius{#1}\def\tikz@cs@yradius{#1}}
-\tikz@orig@define@key{tikzcskeys}{x radius}{\def\tikz@cs@xradius{#1}}
-\tikz@orig@define@key{tikzcskeys}{y radius}{\def\tikz@cs@yradius{#1}}
-\tikz@orig@define@key{tikzcskeys}{name}{\def\tikz@cs@node{#1}}
-\tikz@orig@define@key{tikzcskeys}{anchor}{\def\tikz@cs@anchor{#1}}
-
-\tikz@orig@define@key{tikzcskeys}{first line}{\tikz@parse@cs@line{tikz@cs@line@a}#1}
-\tikz@orig@define@key{tikzcskeys}{second line}{\tikz@parse@cs@line{tikz@cs@line@b}#1}
-
-\def\tikz@parse@cs@line#1(#2)--(#3){%
- \expandafter\def\csname #1@begin\endcsname{(#2)}%
- \expandafter\def\csname #1@end\endcsname{(#3)}%
-}
-
-\tikz@orig@define@key{tikzcskeys}{horizontal line through}{\def\tikz@cs@hori@line{#1}}
-\tikz@orig@define@key{tikzcskeys}{vertical line through}{\def\tikz@cs@vert@line{#1}}
-
-
-
-
-%
-% Coordinate management
-%
-
-
-% Last position visited
-\def\tikz@last@position{\pgfqpoint{\tikz@lastx}{\tikz@lasty}}
-\def\tikz@last@position@saved{\pgfqpoint{\tikz@lastxsaved}{\tikz@lastysaved}}
-
-% Make given point the last position visited
-\def\tikz@make@last@position#1{%
- \pgf@process{#1}%
- \tikz@lastx=\pgf@x\relax%
- \tikz@lasty=\pgf@y\relax%
- \iftikz@updatecurrent%
- \tikz@lastxsaved=\pgf@x\relax%
- \tikz@lastysaved=\pgf@y\relax%
- \fi%
- \tikz@updatecurrenttrue%
-}
-
-\newif\iftikz@updatecurrent
-\tikz@updatecurrenttrue
-
-
-
-% Scanner: Scans a point or a relative point.
-% It then calls the first parameter with the argument set to an
-% appropriate pgf command representing that point.
-
-\def\tikz@scan@one@point#1{%
- \let\tikz@to@use@whom=\tikz@to@use@last@coordinate%
- \tikz@shapeborderfalse%
- \pgfutil@ifnextchar+{\tikz@scan@relative#1}{\tikz@scan@absolute#1}}
-\def\tikz@scan@absolute#1{%
- \pgfutil@ifnextchar({\tikz@scan@@absolute#1}%)
- {%
- \advance\tikz@expandcount by -1%
- \ifnum\tikz@expandcount<0\relax%
- \let\@next=\tikz@@scangiveup%
- \else%
- \let\@next=\tikz@@scanexpand%
- \fi%
- \@next{#1}%
- }%
-}
-\def\tikz@@scanexpand#1{\expandafter\tikz@scan@one@point\expandafter#1}
-\def\tikz@@scangiveup#1{\PackageError{tikz}{Cannot parse this coordinate}{}#1{\pgfpointorigin}}
-\def\tikz@scan@@absolute#1(#2){%
- \edef\tikz@temp{(#2)}%
- \expandafter\tikz@@scan@@absolute\expandafter#1\tikz@temp%
-}
-\def\tikz@@scan@@absolute#1({%
- \pgfutil@ifnextchar[% uhoh... options!
- {\def\tikz@scan@point@recall{#1}\tikz@scan@options}%
- {\tikz@@@scan@@absolute#1(}%
-}
-
-\def\tikz@scan@options[#1]#2{%
- \def\tikz@scan@point@options{#1}%
- \tikz@@@scan@@absolute\tikz@scan@handle@options(#2%
-}
-
-\def\tikz@scan@handle@options#1{%
- {%
- % Ok, compute point with options set and zero transformation
- % matrix:
- \pgftransformreset%
- \let\tikz@transform=\pgfutil@empty%
- \expandafter\tikz@setkeys\expandafter{\tikz@scan@point@options}%
- \tikz@transform%
- \pgf@process{\pgfpointtransformed{#1}}%
- \xdef\tikz@marshal{\expandafter\noexpand\tikz@scan@point@recall{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
- }%
- \tikz@marshal%
-}
-
-\def\tikz@@@scan@@absolute#1(#2){%
- \pgfutil@in@{intersection of}{#2}%
- \ifpgfutil@in@%
- \let\@next\tikz@parse@intersection%
- \else%
- \pgfutil@in@|{#2}%
- \ifpgfutil@in@
- \pgfutil@in@{-|}{#2}%
- \ifpgfutil@in@
- \let\@next\tikz@parse@hv%
- \else%
- \let\@next\tikz@parse@vh%
- \fi%
- \else%
- \pgfutil@in@{cs:}{#2}%
- \ifpgfutil@in@%
- \let\@next\tikz@parse@coordinatesystem%
- \else%
- \pgfutil@in@:{#2}%
- \ifpgfutil@in@
- \let\@next\tikz@parse@polar%
- \else%
- \pgfutil@in@,{#2}%
- \ifpgfutil@in@%
- \let\@next\tikz@parse@regular%
- \else%
- \let\@next\tikz@parse@node%
- \fi%
- \fi%
- \fi%
- \fi%
- \fi%
- \@next#1(#2)%
-}
-
-\def\tikz@parse@coordinatesystem#1(#2 cs:#3){%
- \let\tikz@return@coordinate=\pgfpointorigin%
- \pgfutil@ifundefined{tikz@parse@cs@#2}
- {\PackageError{tikz}{Unknown coordinate system '#2'}{}}
- {\csname tikz@parse@cs@#2\endcsname(#3)}%
- \expandafter#1\expandafter{\tikz@return@coordinate}%
-}
-
-
-\newif\iftikz@isdimension
-\def\tikz@checkunit#1{%
- \pgfmathparse{#1}%
- \let\iftikz@isdimension=\ifpgfmathunitsdeclared%
-}
-\def\tikz@@checkunit{\pgfutil@ifnextchar\tikz@unique{\tikz@checkunit@number}{\tikz@checkunit@dimension}}
-\def\tikz@checkunit@number\tikz@unique{\tikz@isdimensionfalse}
-\def\tikz@checkunit@dimension#1\tikz@unique{\tikz@isdimensiontrue}
-
-\def\tikz@parse@polar#1(#2:#3){%
- \pgfutil@ifundefined{tikz@polar@dir@#2}
- {\tikz@@parse@polar#1(#2:#3)}
- {\tikz@@parse@polar#1(\csname tikz@polar@dir@#2\endcsname:#3)}%
-}
-\def\tikz@@parse@polar#1(#2:#3){%
- \pgfutil@in@{ and }{#3}%
- \ifpgfutil@in@%
- \edef\tikz@args{(#2:#3)}%
- \else%
- \edef\tikz@args{(#2:#3 and #3)}%
- \fi%
- \expandafter\tikz@@@parse@polar\expandafter#1\tikz@args%
-}
-\def\tikz@@@parse@polar#1(#2:#3 and #4){%
- \tikz@checkunit{#3}%
- \iftikz@isdimension%
- \def\tikz@next{#1{\pgfpointpolar{#2}{#3 and #4}}}%
- \else%
- \def\tikz@next{#1{\pgfpointpolarxy{#2}{#3 and #4}}}%
- \fi%
- \tikz@next%
-}
-\def\tikz@polar@dir@up{90}
-\def\tikz@polar@dir@down{-90}
-\def\tikz@polar@dir@left{180}
-\def\tikz@polar@dir@right{0}
-\def\tikz@polar@dir@north{90}
-\def\tikz@polar@dir@south{-90}
-\def\tikz@polar@dir@east{0}
-\def\tikz@polar@dir@west{180}
-\expandafter\def\csname tikz@polar@dir@north east\endcsname{45}
-\expandafter\def\csname tikz@polar@dir@north west\endcsname{135}
-\expandafter\def\csname tikz@polar@dir@south east\endcsname{-45}
-\expandafter\def\csname tikz@polar@dir@south west\endcsname{-135}
-
-\def\tikz@parse@regular#1(#2,#3){%
- \pgfutil@in@,{#3}%
- \ifpgfutil@in@%
- \tikz@parse@splitxyz{#1}{#2}#3,%
- \else%
- \tikz@checkunit{#2}%
- \iftikz@isdimension%
- \def\@next{#1{\pgfpoint{#2}{#3}}}%
- \else%
- \def\@next{#1{\pgfpointxy{#2}{#3}}}%
- \fi%
- \fi%
- \@next%
-}
-
-\def\tikz@parse@splitxyz#1#2#3,#4,{%
- \def\@next{#1{\pgfpointxyz{#2}{#3}{#4}}}%
-}
-
-\def\tikz@coordinate@text{coordinate}
-
-\def\tikz@parse@node#1(#2){%
- \pgfutil@in@.{#2}% Ok, flag this
- \ifpgfutil@in@
- \tikz@calc@anchor#2\tikz@stop%
- \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@#2\endcsname\tikz@coordinate@text%
- \else
- \tikz@shapebordertrue%
- \def\tikz@shapeborder@name{#2}%
- \fi%
- \fi%
- \edef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}%
- \tikz@marshal%
-}
-
-\def\tikz@calc@anchor#1.#2\tikz@stop{%
- \pgfpointanchor{#1}{#2}%
-}
-
-
-\def\tikz@parse@hv#1(#2){%
- \pgfutil@in@{ -| }{#2}%
- \ifpgfutil@in@%
- \let\tikz@next=\tikz@parse@hvboth%
- \else%
- \pgfutil@in@{ -|}{#2}%
- \ifpgfutil@in@%
- \let\tikz@next=\tikz@parse@hvleft%
- \else%
- \pgfutil@in@{-| }{#2}%
- \ifpgfutil@in@%
- \let\tikz@next=\tikz@parse@hvright%
- \else%
- \let\tikz@next=\tikz@parse@hvdone%
- \fi%
- \fi%
- \fi%
- \tikz@next#1(#2)}
-\def\tikz@parse@hvboth#1(#2 -| #3){\tikz@parse@vhdone#1(#3|-#2)}
-\def\tikz@parse@hvleft#1(#2 -|#3){\tikz@parse@vhdone#1(#3|-#2)}
-\def\tikz@parse@hvright#1(#2-| #3){\tikz@parse@vhdone#1(#3|-#2)}
-\def\tikz@parse@hvdone#1(#2-|#3){\tikz@parse@vhdone#1(#3|-#2)}
-
-\def\tikz@parse@vh#1(#2){%
- \pgfutil@in@{ |- }{#2}%
- \ifpgfutil@in@%
- \let\tikz@next=\tikz@parse@vhboth%
- \else%
- \pgfutil@in@{ |-}{#2}%
- \ifpgfutil@in@%
- \let\tikz@next=\tikz@parse@vhleft%
- \else%
- \pgfutil@in@{|- }{#2}%
- \ifpgfutil@in@%
- \let\tikz@next=\tikz@parse@vhright%
- \else%
- \let\tikz@next=\tikz@parse@vhdone%
- \fi%
- \fi%
- \fi%
- \tikz@next#1(#2)}
-\def\tikz@parse@vhboth#1(#2 |- #3){\tikz@parse@vhdone#1(#2|-#3)}
-\def\tikz@parse@vhleft#1(#2 |-#3){\tikz@parse@vhdone#1(#2|-#3)}
-\def\tikz@parse@vhright#1(#2|- #3){\tikz@parse@vhdone#1(#2|-#3)}
-\def\tikz@parse@vhdone#1(#2|-#3){%
- {%
- \tikz@@@scan@@absolute\tikz@parse@vh@mid(#2)%
- \tikz@@@scan@@absolute\tikz@parse@vh@end(#3)%
- \xdef\tikz@marshal{\noexpand#1{\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}}%
- }%
- \tikz@shapeborderfalse%
- \tikz@marshal%
-}
-\def\tikz@parse@vh@mid#1{\pgf@process{#1}\pgf@xa=\pgf@x}
-\def\tikz@parse@vh@end#1{\pgf@process{#1}\pgf@ya=\pgf@y}
-
-\def\tikz@parse@intersection#1(intersection of #2--#3 and #4--#5){%
- {%
- \tikz@@@scan@@absolute\tikz@parse@intersection@a(#2)%
- \tikz@@@scan@@absolute\tikz@parse@intersection@b(#3)%
- \tikz@@@scan@@absolute\tikz@parse@intersection@c(#4)%
- \tikz@@@scan@@absolute\tikz@parse@intersection@d(#5)%
- \xdef\tikz@marshal{\noexpand#1{\noexpand\pgfpointintersectionoflines%
- {\noexpand\pgfqpoint{\the\pgf@xa}{\the\pgf@ya}}%
- {\noexpand\pgfqpoint{\the\pgf@xb}{\the\pgf@yb}}%
- {\noexpand\pgfqpoint{\the\pgf@xc}{\the\pgf@yc}}%
- {\noexpand\pgfqpoint{\the\pgf@x}{\the\pgf@y}}}}%
- }%
- \tikz@shapeborderfalse%
- \tikz@marshal%
-}
-
-\def\tikz@parse@intersection@a#1{\pgf@process{#1}\pgf@xa=\pgf@x\pgf@ya=\pgf@y}
-\def\tikz@parse@intersection@b#1{\pgf@process{#1}\pgf@xb=\pgf@x\pgf@yb=\pgf@y}
-\def\tikz@parse@intersection@c#1{\pgf@process{#1}\pgf@xc=\pgf@x\pgf@yc=\pgf@y}
-\def\tikz@parse@intersection@d#1{\pgf@process{#1}}
-
-\def\tikz@scan@relative#1+{%
- \pgfutil@ifnextchar+{\tikz@scan@plusplus#1}{\tikz@scan@oneplus#1}}
-
-\def\tikz@scan@plusplus#1+{%
- \def\tikz@doafter{#1}%
- \tikz@scan@absolute\tikz@add%
-}
-\def\tikz@add#1{%
- \tikz@doafter{\pgfpointadd{#1}{\tikz@last@position@saved}}%
-}
-\def\tikz@scan@oneplus#1{%
- \def\tikz@doafter{#1}%
- \tikz@updatecurrentfalse%
- \tikz@scan@absolute\tikz@add%
-}
-
-
-
-% Loading further libraries
-
-% Include a library file.
-%
-% #1 = List of names of library file.
-%
-% Description:
-%
-% This command includes a list of TikZ library files. For each file X in the
-% list, the file pgflibrarytikzX.code.tex is included, provided this has
-% not been done earlier.
-%
-% For the convenience of Context users, both round and square brackets
-% are possible for the argument.
-%
-% Example:
-%
-% \usetikzlibrary{arrows}
-% \usetikzlibrary[patterns,topaths]
-
-\def\usetikzlibrary{\pgfutil@ifnextchar[{\use@tikzlibrary}{\use@@tikzlibrary}}%}
-\def\use@tikzlibrary[#1]{\use@@tikzlibrary{#1}}
-\def\use@@tikzlibrary#1{%
- \edef\pgf@list{#1}%
- \pgfutil@for\pgf@temp:=\pgf@list\do{%
- \expandafter\ifx\csname tikz@library@\pgf@temp @loaded\endcsname\relax%
- \expandafter\global\expandafter\let\csname tikz@library@\pgf@temp @loaded\endcsname=\pgfutil@empty%
- \expandafter\edef\csname tikz@library@#1@atcode\endcsname{\the\catcode`\@}
- \expandafter\edef\csname tikz@library@#1@barcode\endcsname{\the\catcode`\|}
- \catcode`\@=11
- \catcode`\|=12
- \input pgflibrarytikz\pgf@temp.code.tex
- \catcode`\@=\csname tikz@library@#1@atcode\endcsname
- \catcode`\|=\csname tikz@library@#1@barcode\endcsname
- \fi%
- }%
-}
-
-
-% Always-present libraries:
-
-\usetikzlibrary{topaths}
-
-
-
-
-\endinput