From 1d53bc2f5dacbab72e8d152bb066911affff6b91 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Fri, 13 Jan 2006 00:02:28 +0000 Subject: pgf git-svn-id: svn://tug.org/texlive/trunk@1191 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty | 29 + .../tex/latex/pgf/basiclayer/pgfbaseimage.sty | 10 + .../tex/latex/pgf/basiclayer/pgfbaselayers.sty | 10 + .../tex/latex/pgf/basiclayer/pgfbaseplot.sty | 10 + .../tex/latex/pgf/basiclayer/pgfbaseshapes.sty | 10 + .../tex/latex/pgf/basiclayer/pgfbasesnakes.sty | 10 + .../tex/latex/pgf/basiclayer/pgfcore.sty | 13 + .../tex/latex/pgf/compatibility/pgfarrows.sty | 15 + .../tex/latex/pgf/compatibility/pgfautomata.sty | 312 ++++++ .../pgfcompatibility-version-0-65.sty | 700 +++++++++++++ .../tex/latex/pgf/compatibility/pgfheaps.sty | 103 ++ .../tex/latex/pgf/compatibility/pgfnodes.sty | 15 + .../tex/latex/pgf/compatibility/pgfshade.sty | 15 + .../tex/latex/pgf/frontendlayer/pgfpict2e.sty | 109 ++ .../tex/latex/pgf/frontendlayer/tikz.sty | 10 + .../tex/latex/pgf/libraries/pgflibraryarrows.sty | 10 + .../tex/latex/pgf/libraries/pgflibraryautomata.sty | 10 + .../latex/pgf/libraries/pgflibraryplothandlers.sty | 10 + .../latex/pgf/libraries/pgflibraryplotmarks.sty | 10 + .../tex/latex/pgf/libraries/pgflibraryshapes.sty | 10 + .../tex/latex/pgf/libraries/pgflibrarysnakes.sty | 10 + .../pgf/libraries/pgflibrarytikzbackgrounds.sty | 10 + .../latex/pgf/libraries/pgflibrarytikztrees.sty | 10 + .../tex/latex/pgf/systemlayer/pgfsys.sty | 13 + .../texmf-dist/tex/latex/pgf/utilities/pgffor.sty | 10 + .../tex/latex/pgf/utilities/pgfpages.sty | 1043 ++++++++++++++++++++ .../texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty | 8 + .../texmf-dist/tex/latex/pgf/utilities/xxcolor.sty | 105 ++ 28 files changed, 2630 insertions(+) create mode 100644 Master/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseimage.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaselayers.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseplot.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseshapes.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbasesnakes.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/compatibility/pgfarrows.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/compatibility/pgfautomata.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/compatibility/pgfcompatibility-version-0-65.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/compatibility/pgfheaps.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/compatibility/pgfnodes.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/compatibility/pgfshade.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/frontendlayer/pgfpict2e.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryarrows.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryautomata.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplothandlers.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplotmarks.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryshapes.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarysnakes.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikzbackgrounds.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikztrees.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/utilities/pgffor.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/utilities/pgfpages.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty create mode 100644 Master/texmf-dist/tex/latex/pgf/utilities/xxcolor.sty diff --git a/Master/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty new file mode 100644 index 00000000000..7f2608fad07 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty @@ -0,0 +1,29 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfrcs} + +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/latex/pgf/basiclayer/pgf.sty,v 1.4 2005/09/05 13:23:04 tantau Exp $ + +\def\pgf@draft{} +\DeclareOption{draft}{\def\pgf@draft{\pgf@draftmodetrue}} + +\def\pgf@obsolete{\RequirePackage{pgfcompatibility-version-0-65}} +\DeclareOption{version=0.65}{} +\DeclareOption{version=0.96}{\def\pgf@obsolete{}} + +\ProcessOptions + +\RequirePackage{pgfcore} +\RequirePackage{pgfbaseshapes} +\RequirePackage{pgfbaseplot} +\RequirePackage{pgfbaseimage} +\RequirePackage{pgfbaselayers} +\RequirePackage{pgfbasesnakes} + +\pgf@obsolete +\pgf@draft + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseimage.sty b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseimage.sty new file mode 100644 index 00000000000..66e26fff22b --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseimage.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgfbaseimage.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaselayers.sty b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaselayers.sty new file mode 100644 index 00000000000..ecfd18b90eb --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaselayers.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgfbaselayers.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseplot.sty b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseplot.sty new file mode 100644 index 00000000000..23ea1e203b5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseplot.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgfbaseplot.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseshapes.sty b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseshapes.sty new file mode 100644 index 00000000000..9aec11b7f8a --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbaseshapes.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgfbaseshapes.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbasesnakes.sty b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbasesnakes.sty new file mode 100644 index 00000000000..ac13678e36f --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfbasesnakes.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgfbasesnakes.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty new file mode 100644 index 00000000000..2655521f773 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty @@ -0,0 +1,13 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{graphicx} +\RequirePackage{pgfsys} +\RequirePackage{keyval} +\RequirePackage{xcolor} + +\input{pgfcore.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/compatibility/pgfarrows.sty b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfarrows.sty new file mode 100644 index 00000000000..f834a7defb5 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfarrows.sty @@ -0,0 +1,15 @@ +\RequirePackage{pgfrcs} + +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/latex/pgf/compatibility/pgfarrows.sty,v 1.2 2005/07/06 15:58:58 tantau Exp $ + +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgf} + +\PackageWarning{pgfarrows}{This package is obsolete. pgf.sty will load + arrow management automatically} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/compatibility/pgfautomata.sty b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfautomata.sty new file mode 100644 index 00000000000..3f192076fcb --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfautomata.sty @@ -0,0 +1,312 @@ +\RequirePackage{pgfrcs} + +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/latex/pgf/compatibility/pgfautomata.sty,v 1.2 2005/07/06 15:58:58 tantau Exp $ + +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + + + +\RequirePackage{pgf} + +\PackageWarning{pgfautomata}{This package is obsolete.} + +\ProcessOptions + +% +% Package for drawing finite automata. +% + + +\newdimen\pgf@stateradius +\newdimen\pgf@mooreradius +\newdimen\pgf@doublethickness +\newdimen\pgf@statebackoff + + + + +% Automaton environment - setup of certain drawing parameters like arrows. +% +% Example: +% +% \begin{pgfpicture}{-2cm}{-2cm}{2cm}{2cm}% +% \begin{pgfautomaton} +% \pgfstaterejecting{q1}{\pgforigin}{$q_1$} +% \pgfstateaccepting{q2}{\pgfstaterelative[east]{q1}{1cm}}{$q_2$} +% \pgfstateaccepting{q3}{\pgfstaterelative[east]{q2}{1cm}}{$q_3$} +% +% \pgfstateconnect{q1}{q2}[.5]{$0$} +% \pgfstateconnect{q2}{q3}[.5]{$1$} +% \pgfstateloop{q1}{90}{$1$} +% \pgfstateloop{q2}{90}{$1$} +% \end{pgfautomaton} +% \end{pgfpicture} + +\def\pgfautomaton{\begin{pgfscope}% + \pgfsetendarrow{\pgfarrowto}% + \pgfnodesetsepend{4pt}\ignorespaces} +\def\endpgfautomaton{\end{pgfscope}} + + + +% Set the outer state radius to #1. +% +% #1 = new state radius. +% +% Example: +% +% \pgfsetstateradius{10pt} + +\def\pgfsetstateradius#1{\setlength\pgf@stateradius{#1}\ignorespaces} + +\pgfsetstateradius{1em} + + + +% Set the state radius for Moore states to #1. +% +% #1 = new state radius. +% +% Example: +% +% \pgfsetstatemooreradius{10pt} + +\def\pgfsetstatemooreradius#1{\setlength\pgf@mooreradius{#1}\ignorespaces} + +\pgfsetstatemooreradius{2em} + + + +% Set the distance between the outer and the inner circle in an +% accepting state. +% +% #1 = new distance radius. +% +% Example: +% +% \pgfsetstatecircledistance{1.2pt} + +\def\pgfsetstatecircledistance#1{\setlength\pgf@doublethickness{#1}\ignorespaces} + +\pgfsetstatecircledistance{1.6pt} + + + +% Set the distance between a connecting line and a label to #1. +% +% #1 = new distance +% +% Example: +% +% \pgfsetstatelabeldistance{4pt} + +\def\pgfsetstatelabeldistance#1{\setlength\pgf@statebackoff{#1}\ignorespaces} + +\pgfsetstatelabeldistance{4pt} + + +% Draws an accepting state #1 with name #3 at position #2. +% +% #1 = a name +% #2 = a point +% #3 = a text +% +% Example: +% +% \pgfstateaccepting{q1}{\pgfxy(1,1)}{$q_1$} + +\def\pgfstateaccepting#1#2#3{% + \pgfnodecircle{#1}[stroke]{#2}{\pgf@stateradius}% + \pgfputat{#2}{\pgfbox[center,center]{#3}}% + {% + \pgf@xa=\pgf@stateradius% + \advance\pgf@xa by-\pgf@doublethickness% + \pgfcircle[stroke]{#2}{\pgf@xa}}\ignorespaces} + + +% Draws a rejecting state #1 with name #3 at position #2. +% +% #1 = a name +% #2 = a point +% #3 = a text +% +% Example: +% +% \pgfstaterejecting{q2}{\pgfstatedirection[n]{q1}}{$q_2$} + +\def\pgfstaterejecting#1#2#3{% + \pgfnodecircle{#1}[stroke]{#2}{\pgf@stateradius}% + \pgfputat{#2}{\pgfbox[center,center]{#3}}\ignorespaces} + + +% Draws a Moore state #1 with name #3 and output #4 at position #2. +% +% #1 = a name +% #2 = a point +% #3 = a text +% #4 = an output text +% +% Example: +% +% \pgfstatemoore{q}{\pgfxy(1,1)}{$q_1$}{$0,1$} + +\def\pgfstatemoore#1#2#3#4{% + \pgfnodecircle{#1}[stroke]{#2}{\pgf@mooreradius}% + \begin{pgftranslate}{#2}% + \begin{pgfscope}% + \pgfsetdash{{2pt}{1pt}}{0pt}% + \pgfmoveto{\pgfpoint{-\pgf@mooreradius}{0cm}}% + \pgflineto{\pgfpoint{\pgf@mooreradius}{0cm}}% + \pgfqstroke% + \end{pgfscope}% + \pgfputat{\pgfpoint{0cm}{0.4\pgf@mooreradius}}{\pgfbox[center,base]{#3}}% + \pgfputat{\pgfpoint{0cm}{-0.2\pgf@mooreradius}}{\pgfbox[center,top]{#4}}% + \end{pgftranslate}\ignorespaces} + + + + +% Connect states #1 and #2 and draw #4 above label, #3-th part of the +% way from #1 to #2. +% +% #1 = a start state +% #2 = an end state +% #3 = a fraction of the distance between the two +% #4 = a label +% +% Example: +% +% \pgfstateconnect{q1}{q2}[.5]{$0$} + +\def\pgfstateconnect#1#2[#3]#4{% + \pgfnodeconnline{#1}{#2}% + \pgfnodelabel{#1}{#2}[#3][\pgf@statebackoff]% + {\pgfbox[center,bottom]{#4}}\ignorespaces} + + + +% Connect states #1 and #2 and draw #4 above label, #3-th part of the +% way from #1 to #2. +% +% #1 = a start state +% #2 = an end state +% #3 = a fraction of the distance between the two +% #4 = a label +% +% Example: +% +% \pgfstateconnectrotated{q1}{q2}[.5]{$0$} + +\def\pgfstateconnectrotated#1#2[#3]#4{% + \pgfnodeconnline{#1}{#2}% + \pgfnodelabelrotated{#1}{#2}[#3][\pgf@statebackoff]% + {\pgfbox[center,bottom]{#4}}\ignorespaces} + + + +% Connect state #1 with itself with label #3 and a loop going in +% direction #2. +% +% #1 = a state +% #2 = an angle +% #3 = a label +% +% Example: +% +% \pgfstateloop{q1}{90}{$0$} + +\def\pgfstateloop#1#2#3{% + \c@pgf@counta=#2\relax% + \c@pgf@countb=#2\relax% + \advance\c@pgf@counta by15\relax% + \advance\c@pgf@countb by-15\relax% + \pgfnodeconncurve{#1}{#1}{\the\c@pgf@counta}{\the\c@pgf@countb}{2\pgf@stateradius}{2\pgf@stateradius}% + \pgfputat{\pgfnodeborder{#1}{#2}{2.25\pgf@stateradius}}{\pgfbox[center,center]{#3}}\ignorespaces} + + + +% Connect states #1 and #2 and draw #4 above label, #3-th part of the +% way from #1 to #2. +% +% #1 = a start state +% #2 = an end state +% #3 = a start angle +% #4 = an end angle +% +% Example: +% +% \pgfstatecurve{q1}{q2}{10}{-10} + +\def\pgfstatecurve#1#2#3#4{% + \pgfnodeconncurve{#1}{#2}{#3}{#4}{2\pgf@stateradius}{2\pgf@stateradius}\ignorespaces} + + + +% Give a position relative to some state. +% +% #1 = a direction +% #2 = a state +% #3 = a distance +% +% Example: +% +% \pgfstaterelative[east]{q2}{1cm} + +\def\pgfstaterelative{\pgfnoderelative} + + + +% Draw an initial state by drawing an inleading line. +% +% #1 = a state +% #2 = a direction leading into the state (n,s,e,w) +% #3 = a label (for example ``start'') +% +% Example: +% +% \pgfstateinitial{q1}[w]{start} + +\def\pgfstateinitial#1[#2]#3{{% + \pgfmoveto{\pgfrelative{\pgfnodeborder{#1}{\pgfdirection{#2}}{-2pt}}% + {\pgfpolar{\pgfdirection{#2}}{1.5\pgf@stateradius}}}% + \pgflineto{\pgfnodeborder{#1}{\pgfdirection{#2}}{\pgf@nodesepend}}% + \pgfstroke% + \edef\temp{[\csname pgf@statepos\pgfdirection{#2}\endcsname]}% + \pgfputat{\pgfrelative{\pgfnodeborder{#1}{\pgfdirection{#2}}{0pt}}% + {\pgfpolar{\pgfdirection{#2}}{1.5\pgf@stateradius}}}% + {\expandafter\pgfbox\temp{#3}}}\ignorespaces} + +\expandafter\def\csname pgf@statepos0\endcsname{left,center} +\expandafter\def\csname pgf@statepos90\endcsname{center,bottom} +\expandafter\def\csname pgf@statepos180\endcsname{right,center} +\expandafter\def\csname pgf@statepos270\endcsname{center,top} + + + +% Draw an final state by drawing an outleading line. +% +% #1 = a state +% #2 = a direction leading out of the state (valid directions are +% n,s,e,w) +% #3 = a label (for example ``exit'') +% +% Example: +% +% \pgfstatefinal{q1}[right]{accept} + +\def\pgfstatefinal#1[#2]#3{{% + \pgfmoveto{\pgfnodeborder{#1}{\pgfdirection{#2}}{\pgf@nodesepstart}}% + \pgflineto{\pgfrelative{\pgfnodeborder{#1}{\pgfdirection{#2}}{-\pgf@nodesepend}}% + {\pgfpolar{\pgfdirection{#2}}{1.5\pgf@stateradius}}}% + \pgfstroke% + \edef\tempb{[\csname pgf@statepos\pgfdirection{#2}\endcsname]}% + \pgfputat{\pgfrelative{\pgfnodeborder{#1}{\pgfdirection{#2}}{0pt}}% + {\pgfpolar{\pgfdirection{#2}}{1.5\pgf@stateradius}}}% + {\expandafter\pgfbox\tempb{#3}}}\ignorespaces} + + + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/compatibility/pgfcompatibility-version-0-65.sty b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfcompatibility-version-0-65.sty new file mode 100644 index 00000000000..f084c7ec3e8 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfcompatibility-version-0-65.sty @@ -0,0 +1,700 @@ +\RequirePackage{pgfrcs} + +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/latex/pgf/compatibility/pgfcompatibility-version-0-65.sty,v 1.4 2005/07/18 14:37:48 tantau Exp $ + +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\def\pgfdirection#1{\csname pgf@direction#1\endcsname} + +\def\pgf@directionn{90} +\def\pgf@directionnorth{90} +\def\pgf@directionabove{90} +\def\pgf@directions{270} +\def\pgf@directionsouth{270} +\def\pgf@directionbelow{270} +\def\pgf@directionw{180} +\def\pgf@directionwest{180} +\def\pgf@directionleft{180} +\def\pgf@directione{0} +\def\pgf@directioneast{0} +\def\pgf@directionright{0} +\def\pgf@directionne{45} +\def\pgf@directionse{315} +\def\pgf@directionnw{135} +\def\pgf@directionsw{-135} + + +\def\pgfpictureboxed#1#2#3#4{% + \pgfpicture{#1}{#2}{#3}{#4}% + \pgfmoveto{\pgfpoint{#1}{#2}}% + \pgflineto{\pgfpoint{#1}{#4}}% + \pgflineto{\pgfpoint{#3}{#4}}% + \pgflineto{\pgfpoint{#3}{#2}}% + \pgfclosestroke\ignorespaces} +\def\endpgfpictureboxed{\endpgfpicture} + +\def\pgfxyline(#1,#2)(#3,#4){% + \pgfmoveto{\pgfxy(#1,#2)}% + \pgflineto{\pgfxy(#3,#4)}% + \pgfstroke} + +\def\pgfxycurve(#1,#2)(#3,#4)(#5,#6)(#7,#8){% + \pgfmoveto{\pgfxy(#1,#2)}% + \pgfbezier{\pgfxy(#3,#4)}{\pgfxy(#5,#6)}{\pgfxy(#7,#8)}% + \pgfstroke} + +\def\pgfline#1#2{% + \pgfmoveto{#1}% + \pgflineto{#2}% + \pgfstroke} + +\let\pgflineto=\pgfpathlineto +\let\pgfmoveto=\pgfpathmoveto +\let\pgfcurveto=\pgfpathcurveto +\let\pgfbezier=\pgfpathcurveto +\let\pgfarc=\pgfpatharc + +\def\pgfzerocircle#1{\pgfcircle{\pgforigin}{#1}} +\def\pgfzeroellipse#1#2{\pgfellipse{\pgforigin}{#1}{#2}} +\def\pgfeofill{{\pgfseteorule\pgfsys@flushpath\pgfsys@fill}\pgf@resetpathsizes\ignorespaces} +\def\pgfeofillstroke{{\pgfseteorule\pgfsys@flushpath\pgfsys@fillstroke}\pgf@resetpathsizes\ignorespaces} +\def\pgf@perform@eofill{\pgfeofill} +\def\pgf@perform@eofillstroke{\pgfeofillstroke} +\let\pgfdiff=\pgfpointdiff +\let\pgfrelative=\pgfpointadd +\let\pgfpartway=\pgfpointlineattime +\let\pgfbackoff=\pgfpointlineatdistance +\def\pgflabel#1#2#3#4{% + % First, calculate base point + \pgfpointlineattime{#1}{#2}{#3}% + \pgf@xb=\pgf@x% + \pgf@yb=\pgf@y% + \pgf@process{#2}% + \pgf@xa=\pgf@x% xb/yb = start point + \pgf@ya=\pgf@y% + \pgf@process{#3}% + \advance\pgf@x by-\pgf@xa% + \advance\pgf@y by-\pgf@ya% + \pgf@process{\pgfpointnormalised{}}% x/y = normalised vector + \setlength\pgf@ya{#4}% + \pgf@xa=-\pgf@ya\relax% + \pgf@xa=\pgf@sys@tonumber{\pgf@y}\pgf@xa% + \pgf@ya=\pgf@sys@tonumber{\pgf@x}\pgf@ya% + \pgf@x=\pgf@xb\relax% + \pgf@y=\pgf@yb\relax% + \advance\pgf@x by\pgf@xa\relax% + \advance\pgf@y by\pgf@ya\relax% + \ignorespaces} +\let\pgfnormalise=\pgfpointnormalised +\let\pgfpolar=\pgfpointpolar +\let\pgforigin=\pgfpointorigin +\let\pgfclosepath=\pgfpathclose + +\def\pgfxy(#1,#2){\pgfpointxy{#1}{#2}} +\def\pgfxyz(#1,#2,#3){\pgfpointxyz{#1}{#2}{#3}} +\newcommand\pgfgrid[3][]{\pgfpathgrid[#1]{#2}{#3}\pgfqstroke} +\newcommand\pgfellipse[4][]{% + \pgfpathellipse{#2}{#3}{#4}% + \csname pgf@perform@#1\endcsname\ignorespaces +} +\newcommand\pgfcircle[3][]{\pgfellipse[#1]{#2}{\pgfpoint{#3}{0pt}}{\pgfpoint{0pt}{#3}}} +\newcommand\pgfrect[3][]{% + \pgfpathrectangle{#2}{#3}% + \csname pgf@perform@#1\endcsname% +} +\def\pgf@perform@stroke{\pgfqstroke} +\def\pgf@perform@fill{\pgffill} +\def\pgf@perform@fillstroke{\pgffillstroke} +\def\pgf@perform@clip{\pgfclip} + +\let\pgfdegree=\pgfsincos + +\newenvironment{pgfmagnify}[2]{\pgflowlevelscope{\pgftransformcm{#1}{0}{0}{#2}{\pgfpointorigin}}}{\endpgflowlevelscope} +\newenvironment{pgftranslate}[1]{\pgflowlevelscope{\pgftransformshift{#1}}}{\endpgflowlevelscope} +\newcommand{\pgftranslateto}[1]{\pgflowlevel{\pgftransformshift{#1}}} +\newenvironment{pgfrotateby}[1]{% + \pgf@process{#1}% + \pgf@xa=-\pgf@x% + \edef\pgf@temp{\noexpand\pgflowlevelscope{\noexpand\pgftransformcm{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@xa}}{\pgf@sys@tonumber{\pgf@y}}{\noexpand\pgfpointorigin}}}% + \pgf@temp} +{\endpgflowlevelscope} + +\long\def\pgfputat#1#2{\begin{pgftranslate}{#1}#2\end{pgftranslate}} +\def\pgfputlabelrotated#1#2#3#4#5{% + \pgflabel{#1}{#2}{#3}{#4}% + \pgfputat{}{% + \pgf@process{#2}% + \pgf@xa=\pgf@x% xb/yb = start point + \pgf@ya=\pgf@y% + \pgf@process{#3}% + \advance\pgf@x by-\pgf@xa% + \advance\pgf@y by-\pgf@ya% + \pgfnormalise{}% x/y = normalised vector + \pgf@ya=-\pgf@y% + \pgfsys@transformcm{\pgf@sys@tonumber{\pgf@x}}{\pgf@sys@tonumber{\pgf@y}}{\pgf@sys@tonumber{\pgf@ya}}{\pgf@sys@tonumber{\pgf@x}}{0pt}{0pt}% + #5}% + \ignorespaces} +\def\pgfqcurveto#1#2#3#4#5#6{\pgfpathqcurveto{#1bp}{#2bp}{#3bp}{#4bp}{#5bp}{#6bp}} +\let\pgfqbezier=\pgfqcurveto +\def\pgfqlineto#1#2{\pgfpathqlineto{#1bp}{#2bp}} +\def\pgfqmoveto#1#2{\pgfpathqmoveto{#1bp}{#2bp}} +\let\pgfqstroke=\pgfusepathqstroke + +\def\pgfstroke{\pgfusepath{stroke}} +\def\pgfclip{\pgfusepath{clip}} +\def\pgffill{\pgfusepath{fill}} +\def\pgfclosestroke{\pgfpathclose\pgfusepath{stroke}} +\def\pgffillstroke{\pgfusepath{fill,stroke}} +\def\pgfstrokeclip{\pgfusepath{clip,stroke}} +\def\pgffillclip{\pgfusepath{clip,stroke}} +\def\pgfclosestrokeclip{\pgfpathclose\pgfusepath{stroke,clip}} +\def\pgffillstrokeclip{\pgfusepath{stroke,fill,clip}} +\def\pgfclearendarrow{\pgfsetendarrow{}} +\def\pgfclearstartarrow{\pgfsetstartarrow{}} + +\def\pgfputarrow#1#2#3{\pgflowlevelobj{\pgftransformarrow{#1}{#2}}{\pgfsys@setdash{}{0pt}#3}} + +\def\pgfsetstartarrow#1{\def\pgf@startarrow{#1}\def\pgf@shorten@start{\pgf@x=0.0pt}} +\def\pgfsetendarrow#1{\def\pgf@endarrow{#1}\def\pgf@shorten@end{\pgf@x=0.0pt}} + +\def\pgfdefarrow#1#2#3#4{% + \pgfdefobject{pgf@#1}{#2}{#3}{\pgfsys@setlinewidth{1bp}#4}% + \expandafter\gdef\csname#1\endcsname{% + \pgf@x=\pgflinewidth% + \pgf@y=\pgflinewidth% + \pgfuseobjectmagnify{pgf@#1}\ignorespaces}} +\def\pgfdefarrowabs#1#2#3#4{% + \pgfdefobject{pgf@#1}{#2}{#3}{\pgfarrowlinewidthscale{1}#4}% + \expandafter\gdef\csname#1\endcsname{% + \pgfuseobject{pgf@#1}\ignorespaces} + } +\def\pgfarrowlinewidthscale#1{\pgfsys@setlinewidth{#1bp}\ignorespaces} +\pgfdefarrow{pgfarrowsingle}{\pgfpoint{-7pt}{-5pt}}{\pgfpoint{3pt}{5pt}}{% + \pgfqmoveto{2}{0} + \pgfqlineto{-6}{4} + \pgfqlineto{-3}{0} + \pgfqlineto{-6}{-4} + \pgfusepathqfill} +\def\pgfarrowswap#1{\pgflowlevelobj{\pgftransformxscale{-1}}{#1}} +\def\pgfarrowcombine#1#2{% + #1% + \pgflowlevelobj{\pgftransformshift{\pgfpoint{-7\pgflinewidth}{0pt}}}{#2}} +\def\pgfarrowcombineloose#1#2{#1\pgflowlevelobj{\pgftransformshift{\pgfpoint{-14\pgflinewidth}{0pt}}}{#2}} +\def\pgfarrowdouble#1{\pgfarrowcombine{#1}{#1}} +\def\pgfarrowtriple#1{% + #1% + \pgflowlevelobj{\pgftransformshift{\pgfpoint{-7\pgflinewidth}{0pt}}}{#1}% + \pgflowlevelobj{\pgftransformshift{\pgfpoint{-14\pgflinewidth}{0pt}}}{#1}} +\pgfdefarrow{pgfarrowto}{\pgfpoint{-4pt}{-5pt}}{\pgfpoint{2pt}{5pt}}{% + \pgfarrowlinewidthscale{0.8} + \pgfsetdash{}{0pt} + \pgfsetroundcap + \pgfsetroundjoin + \pgfqmoveto{-3}{4} + \pgfqcurveto{-2.75}{2.5}{0}{0.25}{0.75}{0} + \pgfqcurveto{0}{-0.25}{-2.75}{-2.5}{-3}{-4} + \pgfusepathqstroke} +\pgfdefarrow{pgfarrowbar}{\pgfpoint{-1pt}{-6pt}}{\pgfpoint{1pt}{6pt}}{% + \pgfsetdash{}{0pt} + \pgfqmoveto{0}{-5} + \pgfqlineto{0}{5} + \pgfusepathqstroke} +\pgfdefarrow{pgfarrowsquare}{\pgfpoint{-4pt}{-6pt}}{\pgfpoint{1pt}{6pt}}{% + \pgfsetdash{}{0pt} + \pgfqmoveto{-3}{-5} + \pgfqlineto{0}{-5} + \pgfqlineto{0}{5} + \pgfqlineto{-3}{5} + \pgfusepathqstroke} +\pgfdefarrow{pgfarrowround}{\pgfpoint{-3pt}{-6pt}}{\pgfpoint{2pt}{6pt}}{% + \pgfsetdash{}{0pt} + \pgfqmoveto{-2}{-5} + \pgfqcurveto{1}{-3}{1}{3}{-2}{5} + \pgfusepathqstroke} +\pgfdefarrow{pgfarrowpointed}{\pgfpoint{-6pt}{-6pt}}{\pgfpoint{2pt}{6pt}}{% + \pgfsetdash{}{0pt} + \pgfqmoveto{-4.5}{-5} + \pgfqlineto{0.5}{0} + \pgfqlineto{-4.5}{5} + \pgfusepathqstroke} +\pgfdefarrow{pgfarrowdot}{\pgfpoint{-7pt}{-4pt}}{\pgfpoint{2pt}{4pt}}{% + \pgfsys@transformshift{-2.5bp}{0bp}% + \pgfsetdash{}{0pt} + \pgfpathqcircle{3bp} + \pgfusepathqfillstroke} +\pgfdefarrow{pgfarrowdiamond}{\pgfpoint{-12pt}{-4pt}}{\pgfpoint{2pt}{4pt}}{% + \pgfsetdash{}{0pt} + \pgfqmoveto{1}{0} + \pgfqlineto{-5}{3} + \pgfqlineto{-11}{0} + \pgfqlineto{-5}{-3} + \pgfpathclose + \pgfusepathqfillstroke} +\def\pgfarrowcircle#1{% + \pgfsetdash{}{0pt} + \setlength\pgf@xa{#1}% + \pgf@xb=\pgf@xa% + \advance\pgf@xa by-0.5\pgflinewidth + \begin{pgflowlevelscope}{\pgftransformshift{\pgfpoint{-\pgf@xa}{0pt}}}% + \pgfpathqcircle{\pgf@sys@tonumber{\pgf@xb}bp} + \pgfusepathqfillstroke + \end{pgflowlevelscope}} +\def\pgfarrowtriangle#1{% + \pgfsetdash{}{0pt} + \begin{pgfscope}% + \setlength\pgf@xa{#1}% + \pgf@ya=0.577\pgf@xa% + \advance\pgf@xb by-\pgflinewidth% + \pgfpathmoveto{\pgfpoint{-\pgf@xa}{-\pgf@ya}}% + \pgfpathlineto{\pgfpoint{\pgflinewidth}{0pt}}% + \pgfpathlineto{\pgfpoint{-\pgf@xa}{\pgf@ya}}% + \pgfpathclose% + \pgfusepathqfillstroke% + \end{pgfscope}} +\def\pgfarrowlargepointed#1{% + \pgfsetdash{}{0pt} + \begin{pgfscope}% + \setlength\pgf@xa{#1}% + \pgfpathmoveto{\pgfpoint{-\pgf@xa}{-\pgf@xa}} + \pgfpathlineto{\pgfpointorigin} + \pgfpathlineto{\pgfpoint{-\pgf@xa}{\pgf@xa}} + \pgfusepathqstroke + \end{pgfscope}} + +\newcommand\pgfcorner[3][sw]{% + \pgf@process{#2}% + \pgf@xa=\pgf@x% + \pgf@ya=\pgf@y% + \pgf@process{#3}% + \ifdim\pgf@xa<\pgf@x% + \pgf@xb=\pgf@x% + \pgf@x=\pgf@xa% + \pgf@xa=\pgf@xb% + \fi% + \ifdim\pgf@ya<\pgf@y% + \pgf@yb=\pgf@y% + \pgf@y=\pgf@ya% + \pgf@ya=\pgf@yb% + \fi% + \csname pgf@corner@#1\endcsname\relax% +} +\def\pgf@corner@se{\pgf@x=\pgf@xa} +\def\pgf@corner@ne{\pgf@x=\pgf@xa\pgf@y=\pgf@ya} +\def\pgf@corner@nw{\pgf@y=\pgf@ya} +\def\pgf@corner@sw{} +\def\pgf@corner@s{\pgf@x=.5\pgf@x\advance\pgf@x by.5\pgf@xa} +\def\pgf@corner@n{\pgf@x=.5\pgf@x\advance\pgf@x by.5\pgf@xa\pgf@y=\pgf@ya} +\def\pgf@corner@w{\pgf@y=.5\pgf@y\advance\pgf@y by.5\pgf@ya} +\def\pgf@corner@e{\pgf@y=.5\pgf@y\advance\pgf@y by.5\pgf@ya\pgf@x=\pgf@xa} + +% Defines a circle node of name #1 at position #3 of radius #4. +% +% #1 = a name +% #2 = ``stroke'' or ``fill'' or ``fillstroke'' or ``virtual'' (= draw +% nothing) +% #3 = a point +% #4 = a radius +% +% Example: +% +% \pgfnodecircle{mynode}[stroke]{\pgfxy(1,1)}{2cm} + +\def\pgfnodecircle#1[#2]#3#4{% + \pgf@process{#3}% + \expandafter\def\csname pgfno@#1\endcsname{\pgf@backoffcircle{#4}}% + \expandafter\def\csname pgfnob@#1\endcsname{\pgf@anglecircle{#4}}% + \expandafter\edef\csname pgfnom@#1\endcsname{\noexpand\pgf@x=\pgf@sys@tonumber{\pgf@x}pt\noexpand\pgf@y=\pgf@sys@tonumber{\pgf@y}pt}% + \expandafter\ifx\csname pgf@@#2\endcsname\pgf@@virtual% + \else% + \pgfcircle[#2]{\csname pgfnom@#1\endcsname}{#4}% + \fi\ignorespaces} + +\def\pgf@@virtual{} + + +% Defines a rectangular node of name #1 with center at position #3 and +% width/height vector #4 +% +% #1 = a name +% #2 = ``stroke'' or ``fill'' or ``fillstroke'' or ``virtual'' (= draw +% nothing) +% #3 = a center +% #4 = width/height vector +% +% Example: +% +% \pgfnoderect{mynode}[stroke]{\pgfxy(1,1)}{\pgfxy(2,2)} + +\def\pgfnoderect#1[#2]#3#4{% + \pgf@process{#3}% + \pgf@xa=\pgf@x% + \pgf@ya=\pgf@y% + \pgf@process{#4}% + \pgf@x=.5\pgf@x% + \pgf@y=.5\pgf@y% + \expandafter\edef\csname pgfno@#1\endcsname{\noexpand\pgf@backoffrect% + {\pgf@sys@tonumber{\pgf@x}pt}{\pgf@sys@tonumber{\pgf@y}pt}}% + \expandafter\edef\csname pgfnob@#1\endcsname{\noexpand\pgf@anglerect% + {\pgf@sys@tonumber{\pgf@x}pt}{\pgf@sys@tonumber{\pgf@y}pt}}% + \expandafter\edef\csname + pgfnom@#1\endcsname{\noexpand\pgf@x=\pgf@sys@tonumber{\pgf@xa}pt\noexpand\pgf@y=\pgf@sys@tonumber{\pgf@ya}pt}% + \expandafter\ifx\csname pgf@@#2\endcsname\pgf@@virtual% + \else% + \advance\pgf@xa by-\pgf@x% + \advance\pgf@ya by-\pgf@y% + \edef\pgf@temp{\noexpand\pgf@x=\pgf@sys@tonumber{\pgf@xa}pt\noexpand\pgf@y=\pgf@sys@tonumber{\pgf@ya}pt}% + \pgfrect[#2]{\pgf@temp}{#4}% + \fi\ignorespaces} + + +% Defines a rectangular node of name #1 with center at position #3 +% contaning a box #4 +% +% #1 = a name +% #2 = ``stroke'' or ``fill'' or ``fillstroke'' or ``virtual'' (= draw +% nothing) +% #3 = a center +% #4 = TeX text that will be boxed +% #5 = a horizontal border offset +% #6 = a vertical border offset +% +% Example: +% +% \pgfnodebox{mynode}[stroke]{\pgfxy(1,1)}{start}{2pt}{2pt} + +\def\pgfnodebox#1[#2]#3#4#5#6{% + \pgf@makehbox{#4}% + \pgf@x=\wd\pgf@hbox% + \pgf@y=\ht\pgf@hbox% + \advance\pgf@y by \dp\pgf@hbox% + \addtolength\pgf@x{#5}% + \addtolength\pgf@x{#5}% + \addtolength\pgf@y{#6}% + \addtolength\pgf@y{#6}% + \edef\pgf@boxsize{\noexpand\pgf@x=\the\pgf@x\noexpand\pgf@y=\the\pgf@y}% + \csname pgf@haligncenter\endcsname% + \csname pgf@valigncenter\endcsname% + \wd\pgf@hbox=0pt% + \pgfputat{#3}{% + \pgfsys@hbox\pgf@hbox}% + \pgfnoderect{#1}[#2]{#3}{\pgf@boxsize}\ignorespaces} + + + + +% Retrieves the center of #1. +% +% #1 = a node name +% +% Example: +% +% \pgfpathmoveto{\pgfnodecenter{mynode}} + +\def\pgfnodecenter#1{% + \expandafter\ifx\csname pgfnom@#1\endcsname\relax% + \GenericError{\space\space\space\@spaces\@spaces\@spaces}% + {PGF Error: Node "#1" undefined.}{}{\@ehc}% + \pgfpoint{0pt}{0pt}% + \else\csname pgfnom@#1\endcsname\fi\ignorespaces} + + + +% Returns a position relative to the center of #1. +% +% #1 = a node name +% #2 = a direction (see \pgfdirection) +% #3 = a distance +% +% Example: +% +% \pgfpathmoveto{\pgfnoderelative{mynode}[north]{1cm}} + +\def\pgfnoderelative#1[#2]#3{% + \pgfrelative{\pgfnodecenter{#1}}{\pgfpolar{\pgfdirection{#2}}{#3}}\ignorespaces} + + + +% Retrieves a border point of #1 at angle #2 and distance #3 from +% border. +% +% #1 = a node name +% #2 = an angle +% #3 = a distance from the border +% +% Example: +% +% \pgfpathmoveto{\pgfnodeborder{first}{30}{0pt}} +% \pgfpathlineto{\pgfnodeborder{second}{180}{2pt}} +% \pgfstroke + +\def\pgfnodeborder#1#2#3{% + \csname pgfnob@#1\endcsname{#3}{#2}{\pgfnodecenter{#1}}\ignorespaces} + + + +% Gives the beginning of a connection of #2 and #3, taking a +% separation distance of #1 into account. +% +% #1 = a separation distance +% #2 = a node name +% #3 = a second node name +% +% Example: +% +% \pgfpathmoveto{\pgfnodeconnstart{first}{second}} +% \pgfpathlineto{\pgfnodeconnstart{second}{first}} + +\def\pgfnodeconnstart[#1]#2#3{% + \csname pgfno@#2\endcsname[#1]{\pgfnodecenter{#2}}{\pgfnodecenter{#3}}% + \ignorespaces} + + + +\newdimen\pgf@nodesepstart +\newdimen\pgf@nodesepend + +% Sets the node separation for starts of lines. +% +% #1 = a distance +% +% Example: +% +% \pgfnodesetsepstart{2pt} + +\def\pgfnodesetsepstart#1{\setlength\pgf@nodesepstart{#1}\ignorespaces} + +\pgfnodesetsepstart{0pt} + + +% Sets the node separation for end of lines. +% +% #1 = a distance +% +% Example: +% +% \pgfnodesetsepend{2pt} + +\def\pgfnodesetsepend#1{\setlength\pgf@nodesepend{#1}\ignorespaces} + +\pgfnodesetsepend{0pt} + + + + +% Draws a line from #1 to #2. +% +% #1 = a node name +% #2 = a second node name +% +% Example: +% +% \pgfnodeconnline{first}{second} + +\def\pgfnodeconnline#1#2{% + \pgfpathmoveto{\pgfnodeconnstart[\pgf@nodesepstart]{#1}{#2}}% + \pgfpathlineto{\pgfnodeconnstart[\pgf@nodesepend]{#2}{#1}}% + \pgfstroke% + \ignorespaces} + + + +% Draws a curve from #1 to #2. The starting angle at #1 is #3 and the +% length to the first support point is #5. The starting angle at #2 +% is #4 and the length to the second support point is #6. +% +% #1 = a node name +% #2 = a second node name +% #3 = angle at first node +% #4 = angle at second node +% #5 = distance to support point at first node +% #6 = distance to support point at second node +% +% Example: +% +% \pgfnodeconncurve{first}{second}{10}{-10}{1cm}{1cm} + +\def\pgfnodeconncurve#1#2#3#4#5#6{% + \pgfpathmoveto{\pgfnodeborder{#1}{#3}{\pgf@nodesepstart}}% + \pgfpathcurveto{\pgfnodeborder{#1}{#3}{#5}}{\pgfnodeborder{#2}{#4}{#6}}% + {\pgfnodeborder{#2}{#4}{\pgf@nodesepend}}% + \pgfstroke\ignorespaces} + + + + +% Put a label on a line from #1 to #2. +% +% #1 = a node name +% #2 = a second node name +% #3 = fraction of way from #1 to #2 +% #4 = vertical offset +% #5 = label +% +% Example: +% +% \pgfnodelabel{first}{second}[.5][2pt]{\pgfbox[center,base]{owns}} + +\def\pgfnodelabel#1#2[#3][#4]#5{% + \pgfputat{\pgflabel% + {#3}% + {\pgfnodeconnstart[\pgf@nodesepstart]{#1}{#2}}% + {\pgfnodeconnstart[\pgf@nodesepend]{#2}{#1}}% + {#4}}% + {#5}\ignorespaces} + + +% Put a rotated label on a line from #1 to #2. +% +% #1 = a node name +% #2 = a second node name +% #3 = fraction of way from #1 to #2 +% #4 = vertical offset +% #5 = label +% +% Example: +% +% \pgfnodelabelrotated{first}{second}[.5][2pt]{\pgfbox[center,base]{owns}} + +\def\pgfnodelabelrotated#1#2[#3][#4]#5{% + \pgfputlabelrotated% + {#3}% + {\pgfnodeconnstart[\pgf@nodesepstart]{#1}{#2}}% + {\pgfnodeconnstart[\pgf@nodesepend]{#2}{#1}}% + {#4}% + {#5}\ignorespaces} + + + +% Internals + +\def\pgf@backoffcircle#1[#2]#3#4{% + % Calculate backoff for a circle of radius + % #1 and offset separation #2. #3 is the center of the circle, #4 + % is the target point. + \setlength\pgf@x{#1}% + \addtolength\pgf@x{#2}% + \edef\pgf@temp{{\pgf@sys@tonumber{\pgf@x}pt}}% + \expandafter\pgfbackoff\pgf@temp{#3}{#4}\ignorespaces} + +\def\pgf@mult#1#2#3{#1=#2#3} + +\def\pgf@anglecircle#1#2#3#4{% + % Calculate border point. #1 is radius, #2 is additional backoff, #3 + % is an angle, #4 is the center of the circle. + \pgfsincos{#3}% + \setlength\pgf@xa{#1}% + \addtolength\pgf@xa{#2}% + \pgf@ya=\pgf@xa\relax% + \pgf@mult{\pgf@xa}{\pgf@sys@tonumber{\pgf@x}}{\pgf@xa}% + \pgf@mult{\pgf@ya}{\pgf@sys@tonumber{\pgf@y}}{\pgf@ya}% + \pgf@process{#4}% + \advance\pgf@y by\pgf@xa\relax% + \advance\pgf@x by\pgf@ya\ignorespaces} + +\def\pgf@backoffrect#1#2[#3]#4#5{% + % Calculate backoff for a rect with half width #1, + % half height #2, offset separation #3. #4 is the center of the rect, #5 + % is the target point. + \pgfdiff{#4}{#5}% + \pgf@xa=\pgf@x% + \pgf@ya=\pgf@y% + \setlength\pgf@xb{#1}% + \setlength\pgf@yb{#2}% + \addtolength\pgf@xb{#3}% + \addtolength\pgf@yb{#3}% + \ifnum\pgf@xa<0\relax% move into first quadrant + \pgf@x=-\pgf@x% + \fi% + \ifnum\pgf@ya<0\relax% + \pgf@y=-\pgf@y% + \fi% + \c@pgf@counta=\pgf@x% + \c@pgf@countb=\pgf@y% + \divide\c@pgf@counta by 256\relax% + \divide\c@pgf@countb by 256\relax% + \ifnum\c@pgf@countb<\c@pgf@counta% + \ifnum\c@pgf@counta<1\relax% + \pgf@y=\pgf@yb\relax% + \pgf@x=0pt\relax% + \else% + \pgf@y=16\pgf@y% + \divide\pgf@y by \c@pgf@counta% + \pgf@y=16\pgf@y% + \pgf@mult{\pgf@y}{\pgf@sys@tonumber{\pgf@xb}}{\pgf@y}% + \ifnum\pgf@y<\pgf@yb% + \pgf@x=\pgf@xb% + \else% rats, calculate intersection on upper side + \ifnum\c@pgf@countb<1\relax% + \pgf@x=\pgf@xb\relax% + \pgf@y=0pt\relax% + \else% + \pgf@x=16\pgf@x% + \divide\pgf@x by \c@pgf@countb% + \pgf@x=16\pgf@x% + \pgf@mult{\pgf@x}{\pgf@sys@tonumber{\pgf@yb}}{\pgf@x}% + \pgf@y=\pgf@yb% + \fi% + \fi% + \fi% + \else% + \ifnum\c@pgf@countb<1\relax% + \pgf@x=\pgf@xb\relax% + \pgf@y=0pt\relax% + \else% + \pgf@x=16\pgf@x% + \divide\pgf@x by \c@pgf@countb% + \pgf@x=16\pgf@x% + \pgf@mult{\pgf@x}{\pgf@sys@tonumber{\pgf@yb}}{\pgf@x}% + \ifnum\pgf@x<\pgf@xb% + \pgf@y=\pgf@yb% + \else% + \ifnum\c@pgf@counta<1\relax% + \pgf@y=\pgf@yb\relax% + \pgf@x=0pt\relax% + \else% + \pgf@y=16\pgf@y% + \divide\pgf@y by \c@pgf@counta% + \pgf@y=16\pgf@y% + \pgf@mult{\pgf@y}{\pgf@sys@tonumber{\pgf@xb}}{\pgf@y}% + \pgf@x=\pgf@xb% + \fi% + \fi% + \fi% + \fi% + \ifnum\pgf@xa<0\relax\pgf@x=-\pgf@x\fi% + \ifnum\pgf@ya<0\relax\pgf@y=-\pgf@y\fi% + \pgf@xa=\pgf@x% + \pgf@ya=\pgf@y% + \pgf@process{#4}% + \advance\pgf@x by\pgf@xa% + \advance\pgf@y by\pgf@ya\ignorespaces} + +\def\pgf@anglerect#1#2#3#4#5{% + % Calculate border point. #1/#2 is half width/height, #3 is additional backoff, #4 + % is an angle, #5 is the center of the rect. + \pgfsincos{#4}% + \pgf@xa=100\pgf@x% + \pgf@ya=100\pgf@y% + \pgf@process{#5}% + \advance\pgf@x by\pgf@ya% + \advance\pgf@y by\pgf@xa% + \edef\pgf@temp{{\noexpand\pgf@x=\the\pgf@x\noexpand\pgf@y=\the\pgf@y}}% + \expandafter\pgf@caller\pgf@temp{#1}{#2}{#3}{#5}\ignorespaces} + +\def\pgf@caller#1#2#3#4#5{\pgf@backoffrect{#2}{#3}[#4]{#5}{#1}} + +\long\def\pgfbox[#1,#2]#3{% + \pgf@makehbox{#3}% + \csname pgf@halign#1\endcsname% + \csname pgf@valign#2\endcsname% + \wd\pgf@hbox=0pt% + \ht\pgf@hbox=0pt% + \dp\pgf@hbox=0pt% + \pgfqbox{\pgf@hbox}% + \ignorespaces} + + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/compatibility/pgfheaps.sty b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfheaps.sty new file mode 100644 index 00000000000..bdf061ad417 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfheaps.sty @@ -0,0 +1,103 @@ +\RequirePackage{pgfrcs} + +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/latex/pgf/compatibility/pgfheaps.sty,v 1.2 2005/07/06 15:58:58 tantau Exp $ + +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgf} + +\PackageWarning{pgfheaps}{This package is obsolete.} + +\ProcessOptions + +% +% Package for drawing heap diagrams. +% + +\newdimen\pgf@heapx +\newdimen\pgf@heapy + + + + +% Construct the path of a heap. +% +% #1 = Position of heap label. +% #2 = Position of left base +% #3 = Position of right base +% +% Example: +% +% \pgfheappath{\pgfxy(1,0)}{\pgfxy(-1,0)}{\pgfxy(1,0)} +% \pgffill + +\def\pgfheappath#1#2#3{% + \pgfdiff{#2}{#3}% + \pgf@heapx=-.25\pgf@x% + \pgf@heapy=-.25\pgf@y% + \pgfmoveto{#2}% + \pgfbezier% + {\pgfpartway{0.5}{#2}{\pgfrelative{#1}{\pgfpoint{\pgf@heapx}{\pgf@heapy}}}}% + {\pgfrelative{#1}{\pgfpoint{\pgf@heapx}{\pgf@heapy}}}% + {#1}% + \pgf@heapx=-\pgf@heapx% + \pgf@heapy=-\pgf@heapy% + \pgfbezier% + {\pgfrelative{#1}{\pgfpoint{\pgf@heapx}{\pgf@heapy}}}% + {\pgfpartway{0.5}{#3}{\pgfrelative{#1}{\pgfpoint{\pgf@heapx}{\pgf@heapy}}}}% + {#3}% + \ignorespaces} + + +% Draw a heap label. +% +% #1 = Position of heap label. +% #2 = Label text. +% +% Example: +% +% \pgfheaplabel{\pgfxy(1,0)}{Class P} + +\def\pgfheaplabel#1#2{% + \setbox\pgf@hbox=\hbox{\pgfinterruptpicture#2\endpgfinterruptpicture}% + \pgf@heapy=\ht\pgf@hbox% + \pgfputat{\pgfrelative{#1}{\pgfpoint{0pt}{-2\pgf@heapy}}}{\pgfbox[center,base]{#2}}% + \ignorespaces} + + +% Draw a labeled heap. +% +% #1 = Position of heap label. +% #2 = Position of left base +% #3 = Position of right base +% #4 = Label text. +% +% Example: +% +% \pgfheaplabeled{\pgfxy(1,0)}{\pgfxy(-1,0)}{\pgfxy(1,0)}{Class P} + +\def\pgfheaplabeled#1#2#3#4{% + \pgfheaplabel{#1}{#4}% + \pgfheappath{#1}{#2}{#3}% + \pgfstroke% + \ignorespaces} + + + +% Draw a labeled heap. +% +% #1 = Height of the label +% #2 = Left and right extension of the base. +% #3 = Label text. +% +% Example: +% +% \pgfheaplabeledcentered{1cm}{1cm}{Class P} + +\def\pgfheaplabeledcentered#1#2#3{% + \pgfheaplabeled{\pgfpoint{0pt}{#1}}{\pgfpoint{-#2}{0pt}}{\pgfpoint{#2}{0pt}}{#3}\ignorespaces} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/compatibility/pgfnodes.sty b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfnodes.sty new file mode 100644 index 00000000000..e626f07626e --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfnodes.sty @@ -0,0 +1,15 @@ +\RequirePackage{pgfrcs} + +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/latex/pgf/compatibility/pgfnodes.sty,v 1.2 2005/07/06 15:58:58 tantau Exp $ + +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgf} + +\PackageWarning{pgfnodes}{This package is obsolete. pgf.sty will load + node management automatically} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/compatibility/pgfshade.sty b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfshade.sty new file mode 100644 index 00000000000..5e68a141cb2 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/compatibility/pgfshade.sty @@ -0,0 +1,15 @@ +\RequirePackage{pgfrcs} + +\ProvidesPackageRCS[v\pgfversion] $Header: /cvsroot/pgf/pgf/latex/pgf/compatibility/pgfshade.sty,v 1.2 2005/07/06 15:58:58 tantau Exp $ + +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgf} + +\PackageWarning{pgfshade}{This package is obsolete. pgf.sty will load + shade management automatically} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/frontendlayer/pgfpict2e.sty b/Master/texmf-dist/tex/latex/pgf/frontendlayer/pgfpict2e.sty new file mode 100644 index 00000000000..87980ce72ef --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/frontendlayer/pgfpict2e.sty @@ -0,0 +1,109 @@ +\ProvidesPackage{pgfpict2e}[2004/11/28 ver 0.01] + +% Copyright 2003 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\RequirePackage{pgfcore} + +\def\pgf@pict@line(#1,#2)#3{% + \pgfsys@beginpurepicture% + \pgfsetlinewidth{\@wholewidth}% + \pgfsetroundcap% + \pgfpathqmoveto{0}{0}% + \ifnum#1=0\relax% + \pgf@xa=0pt\relax% + \pgf@ya=#3\unitlength\relax% + \else% + \pgf@y=#2\unitlength% + \divide\pgf@y by#1\relax% + \pgf@xa=#3\unitlength\relax% + \pgf@ya=#3\pgf@y\relax% + \fi% + \pgfpathlineto{\pgfpoint{\pgf@xa}{\pgf@ya}}% + \pgfusepath{stroke}% + \pgfsys@endpurepicture% +}% + +\def\line(#1,#2)#3{{\pgfsetarrows{-}\pgf@pict@line(#1,#2){#3}}}% +\def\vector(#1,#2)#3{{\pgfsetarrows{-latex}\pgf@pict@line(#1,#2){#3}}}% + +\def\@circle#1{{% + \pgfsys@beginpurepicture% + \pgfsetlinewidth{\@wholewidth}% + \pgf@x=#1\unitlength% + \pgfpathqcircle{.5\pgf@x}% + \pgfusepathqstroke% + \pgfsys@endpurepicture}} + +\def\@dot#1{{% + \pgfsys@beginpurepicture% + \pgfsetlinewidth{\@wholewidth}% + \pgf@x=#1\unitlength% + \pgfpathqcircle{.5\pgf@x}% + \pgfusepathqfill% + \pgfsys@endpurepicture}} + + +\def\oval{\@ifnextchar[{\pgfpictIIe@oval}{\pgfpictIIe@oval[20pt]}} +\def\pgfpictIIe@oval[#1](#2,#3){\@ifnextchar[{\pgfpictIIe@@oval[#1](#2,#3)}{\pgfpictIIe@@oval[#1](#2,#3)[]}} +\def\pgfpictIIe@@oval[#1](#2,#3)[#4]{{% + \pgfsys@beginpurepicture% + \@tfor\reserved@a:=#4\do{\csname pgfpictIIe@clip\reserved@a\endcsname}% + \pgf@x=#2\unitlength% + \pgf@y=#3\unitlength% + \pgf@x=-.5\pgf@x% + \pgf@y=-.5\pgf@y% + \pgfsys@transformshift{\the\pgf@x}{\the\pgf@y}% + \pgfsetlinewidth{\@wholewidth}% + \pgf@ya=#3\unitlength% + \advance\pgf@ya by-#1\relax% + \pgfpathmoveto{\pgfpoint{0pt}{\pgf@ya}}% + \pgfpatharc{180}{90}{#1}% + \pgf@xa=#2\unitlength% + \advance\pgf@xa by-#1\relax% + \pgfpathlineto{\pgfpoint{\pgf@xa}{#3\unitlength}}% + \pgfpatharc{90}{0}{#1}% + \pgfpathlineto{\pgfpoint{#2\unitlength}{#1}}% + \pgfpatharc{0}{-90}{#1}% + \pgfpathlineto{\pgfpoint{#1}{0pt}}% + \pgfpatharc{-90}{-180}{#1}% + \pgfpathclose% + \pgfusepathqstroke% + \pgfsys@endpurepicture% +}} +\def\pgfpictIIe@clipr{\pgfpathrectangle{\pgfpoint{0pt}{-1000pt}}{\pgfpoint{1000pt}{2000pt}}\pgfusepath{clip}} +\def\pgfpictIIe@clipl{\pgfpathrectangle{\pgfpoint{-1000pt}{-1000pt}}{\pgfpoint{1000pt}{2000pt}}\pgfusepath{clip}} +\def\pgfpictIIe@clipt{\pgfpathrectangle{\pgfpoint{-1000pt}{0pt}}{\pgfpoint{2000pt}{1000pt}}\pgfusepath{clip}} +\def\pgfpictIIe@clipb{\pgfpathrectangle{\pgfpoint{-1000pt}{-1000pt}}{\pgfpoint{2000pt}{1000pt}}\pgfusepath{clip}} + + +\renewcommand\bezier[1]{\pgfpictIIe@qbezier} +\renewcommand\qbezier[1][]{\pgfpictIIe@qbezier} +\def\pgfpictIIe@qbezier(#1,#2)(#3,#4)(#5,#6){{% + \pgfsys@beginpurepicture% + \pgfsetlinewidth{\@wholewidth}% + \pgfpathmoveto{\pgfpoint{#1\unitlength}{#2\unitlength}}% + \pgfpathcurveto% + {\pgfpointmid{0.66666666}{\pgfpoint{#1\unitlength}{#2\unitlength}}{\pgfpoint{#3\unitlength}{#4\unitlength}}}% + {\pgfpointmid{0.66666666}{\pgfpoint{#5\unitlength}{#6\unitlength}}{\pgfpoint{#3\unitlength}{#4\unitlength}}}% + {\pgfpoint{#5\unitlength}{#6\unitlength}}%% + \pgfusepathqstroke% + \pgfsys@endpurepicture% +}} +\newcommand\cbezier[1][]{\pgfpictIIe@cbezier} +\def\pgfpictIIe@cbezier(#1,#2)(#3,#4)(#5,#6)(#7,#8){{% + \pgfsys@beginpurepicture% + \pgfsetlinewidth{\@wholewidth}% + \pgfpathmoveto{\pgfpoint{#1\unitlength}{#2\unitlength}}% + \pgfpathcurveto% + {\pgfpoint{#3\unitlength}{#4\unitlength}}% + {\pgfpoint{#5\unitlength}{#6\unitlength}}% + {\pgfpoint{#7\unitlength}{#8\unitlength}}%% + \pgfusepathqstroke% + \pgfsys@endpurepicture% +}} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty b/Master/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty new file mode 100644 index 00000000000..259be238a9d --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/frontendlayer/tikz.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgf,calc,pgffor,pgflibraryplothandlers,xkeyval} + +\input{tikz.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryarrows.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryarrows.sty new file mode 100644 index 00000000000..68a6df06407 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryarrows.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgflibraryarrows.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryautomata.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryautomata.sty new file mode 100644 index 00000000000..347fd715d9c --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryautomata.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgflibraryautomata.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplothandlers.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplothandlers.sty new file mode 100644 index 00000000000..4887d5c2f43 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplothandlers.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgflibraryplothandlers.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplotmarks.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplotmarks.sty new file mode 100644 index 00000000000..ab8ff940d4f --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryplotmarks.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgflibraryplotmarks.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryshapes.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryshapes.sty new file mode 100644 index 00000000000..9fbc32de3ea --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibraryshapes.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgflibraryshapes.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarysnakes.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarysnakes.sty new file mode 100644 index 00000000000..bc323556680 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarysnakes.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore} + +\input{pgflibrarysnakes.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikzbackgrounds.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikzbackgrounds.sty new file mode 100644 index 00000000000..c3743bf9569 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikzbackgrounds.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{tikz} + +\input{pgflibrarytikzbackgrounds.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikztrees.sty b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikztrees.sty new file mode 100644 index 00000000000..3a71ba5ad8c --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/libraries/pgflibrarytikztrees.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{tikz} + +\input{pgflibrarytikztrees.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty b/Master/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty new file mode 100644 index 00000000000..e7c3b0142fd --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty @@ -0,0 +1,13 @@ + +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfrcs} + +\input{pgfsys.code.tex} +\input{pgfsyssoftpath.code.tex} +\input{pgfsysprotocol.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/utilities/pgffor.sty b/Master/texmf-dist/tex/latex/pgf/utilities/pgffor.sty new file mode 100644 index 00000000000..b2f27b78ae7 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/utilities/pgffor.sty @@ -0,0 +1,10 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfrcs} + +\input{pgffor.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/utilities/pgfpages.sty b/Master/texmf-dist/tex/latex/pgf/utilities/pgfpages.sty new file mode 100644 index 00000000000..19023c2efd0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/utilities/pgfpages.sty @@ -0,0 +1,1043 @@ +\ProvidesPackage{pgfpages}[2004/11/05 ver 0.01] + +% Copyright 2003 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\RequirePackage{pgfcore,calc} + +\newcount\pgf@logicalpages +\newcount\pgf@firstshipout +\newcount\pgf@lastshipout +\newcount\pgf@currentshipout +\newcount\pgf@cpn +\newcount\pgf@shipoutnextto +\newdimen\pgfphysicalheight +\newdimen\pgfphysicalwidth + +\pgf@shipoutnextto=0\relax +\pgf@logicalpages=0\relax +\pgf@firstshipout=1\relax +\pgf@lastshipout=1\relax +\pgf@currentshipout=1\relax +\pgfphysicalheight=\paperheight +\pgfphysicalwidth=\paperwidth + +\newif\ifpgfphysicalpageempty +\newif\ifpgf@holdingphysicalpage + +\pgfphysicalpageemptytrue +\pgf@holdingphysicalpagefalse + + +% Define a layout +% +% #1 = layout name +% #2 = code before options have been set +% #2 = code after options have been set +% +% Example: +% +% \pgfpagesdeclarelayout{resize to}{ +% \pgfpagesphysicalpageoptions{logical pages=1,physical height=\pgfpageoptionheight,physical width=\pgfpageoptionwidth} +% \pgfpageslogicalpageoptions{1}{resized width=\pgfphysicalwidth,% +% resized height=\pgfphysicalheight,center=\pgfpoint{.5\pgfphysicalwidth}{.5\pgfphysicalheight}}} + +\newcommand\pgfpagesdeclarelayout[3]{ + \expandafter\newcommand\csname pgfpages@layoutbefore@#1\endcsname{#2} + \expandafter\newcommand\csname pgfpages@layout@#1\endcsname{#3}} + + +% Use a layout +% +% #1 = layout name +% #2 = options +% +% Example: +% +% \pgfpagesuselayout{resize to}[a4paper] + +\def\pgfpagesuselayout#1{\@ifnextchar[{\pgf@pagelayout{#1}}{\pgf@pagelayout{#1}[]}} +\def\pgf@pagelayout#1[#2]{ + \csname pgfpages@layoutbefore@#1\endcsname + \setkeys{pgfpagesuselayoutoption}{#2} + \@ifundefined{pgfpages@layout@#1}{ + \PackageError{pgfpages}{Page layout `#1' undefined.}{} + } + { + \csname pgfpages@layout@#1\endcsname + } +} + + +% Predefined options + +\define@key{pgfpagesuselayoutoption}{physical paper width}% +{\def\pgfpageoptionwidth{#1}} + +\define@key{pgfpagesuselayoutoption}{physical paper height}% +{\def\pgfpageoptionheight{#1}} + +\define@key{pgfpagesuselayoutoption}{a0paper}[]% +{\def\pgfpageoptionheight{1189mm} \def\pgfpageoptionwidth{841mm}} + +\define@key{pgfpagesuselayoutoption}{a1paper}[]% +{\def\pgfpageoptionheight{841mm} \def\pgfpageoptionwidth{594mm}} + +\define@key{pgfpagesuselayoutoption}{a2paper}[]% +{\def\pgfpageoptionheight{594mm} \def\pgfpageoptionwidth{420mm}} + +\define@key{pgfpagesuselayoutoption}{a3paper}[]% +{\def\pgfpageoptionheight{420mm} \def\pgfpageoptionwidth{297mm}} + +\define@key{pgfpagesuselayoutoption}{a4paper}[]% +{\def\pgfpageoptionheight{297mm} \def\pgfpageoptionwidth{210mm}} + +\define@key{pgfpagesuselayoutoption}{a5paper}[]% +{\def\pgfpageoptionheight{210mm} \def\pgfpageoptionwidth{148mm}} + +\define@key{pgfpagesuselayoutoption}{a6paper}[]% +{\def\pgfpageoptionheight{148mm} \def\pgfpageoptionwidth{105mm}} + +\define@key{pgfpagesuselayoutoption}{letterpaper}[]% +{\def\pgfpageoptionheight{11in} \def\pgfpageoptionwidth{8.5in}} + +\define@key{pgfpagesuselayoutoption}{legalpaper}[]% +{\def\pgfpageoptionheight{14in} \def\pgfpageoptionwidth{8.5in}} + +\define@key{pgfpagesuselayoutoption}{executivepaper}[]% +{\def\pgfpageoptionheight{10.5in}\def\pgfpageoptionwidth{7.25in}} + +\define@key{pgfpagesuselayoutoption}{landscape}[]% +{ + \let\pgf@temp=\pgfpageoptionwidth + \let\pgfpageoptionwidth=\pgfpageoptionheight + \let\pgfpageoptionheight=\pgf@temp +} + +\define@key{pgfpagesuselayoutoption}{border shrink}% +{\def\pgfpageoptionborder{#1}} + +\define@key{pgfpagesuselayoutoption}{corner width}% +{\def\pgfpageoptioncornerwidth{#1}} + +\define@key{pgfpagesuselayoutoption}{odd numbered pages right}[]% +{\def\pgfpageoptionfirstshipout{2}} + +\define@key{pgfpagesuselayoutoption}{second right}[]% +{% + \def\pgfpageoptionfirstcenter{\pgfpoint{.5\paperwidth}{.5\paperheight}}% + \def\pgfpageoptionsecondcenter{\pgfpoint{1.5\paperwidth}{.5\paperheight}}% + \def\pgfpageoptiontwoheight{\paperheight}% + \def\pgfpageoptiontwowidth{2\paperwidth}% +} + +\define@key{pgfpagesuselayoutoption}{second left}[]% +{% + \def\pgfpageoptionfirstcenter{\pgfpoint{1.5\paperwidth}{.5\paperheight}}% + \def\pgfpageoptionsecondcenter{\pgfpoint{.5\paperwidth}{.5\paperheight}}% + \def\pgfpageoptiontwoheight{\paperheight}% + \def\pgfpageoptiontwowidth{2\paperwidth}% +} + +\define@key{pgfpagesuselayoutoption}{second top}[]% +{% + \def\pgfpageoptionfirstcenter{\pgfpoint{.5\paperwidth}{.5\paperheight}}% + \def\pgfpageoptionsecondcenter{\pgfpoint{.5\paperwidth}{1.5\paperheight}}% + \def\pgfpageoptiontwoheight{2\paperheight}% + \def\pgfpageoptiontwowidth{\paperwidth}% +} + +\define@key{pgfpagesuselayoutoption}{second bottom}[]% +{% + \def\pgfpageoptionfirstcenter{\pgfpoint{.5\paperwidth}{1.5\paperheight}}% + \def\pgfpageoptionsecondcenter{\pgfpoint{.5\paperwidth}{.5\paperheight}}% + \def\pgfpageoptiontwoheight{2\paperheight}% + \def\pgfpageoptiontwowidth{\paperwidth}% +} + + + +% Predefined layouts + +\pgfpagesdeclarelayout{rounded corners} +{ + \def\pgfpageoptioncornerwidth{10pt} +} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=1 + } + \pgfpageslogicalpageoptions{1} + {% + center=\pgfpoint{.5\pgfphysicalwidth}{.5\pgfphysicalheight},% + corner width=\pgfpageoptioncornerwidth% + }% +} + +\pgfpagesdeclarelayout{resize to} +{ + \def\pgfpageoptionborder{0pt} +} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=1,% + physical height=\pgfpageoptionheight,% + physical width=\pgfpageoptionwidth% + } + \pgfpageslogicalpageoptions{1} + {% + resized width=\pgfphysicalwidth,% + resized height=\pgfphysicalheight,% + border shrink=\pgfpageoptionborder,% + center=\pgfpoint{.5\pgfphysicalwidth}{.5\pgfphysicalheight}% + }% +} + +\pgfpagesdeclarelayout{two screens with lagging second} +{} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=2,% + physical height=\pgfpageoptiontwoheight,% + physical width=\pgfpageoptiontwowidth,% + last logical shipout=1,% + } + \pgfpageslogicalpageoptions{1} + {% + center=\pgfpageoptionfirstcenter,% + }% + \pgfpageslogicalpageoptions{2} + {% + center=\pgfpageoptionsecondcenter,% + copy from=1% + }% +} + +\pgfpagesdeclarelayout{two screens with optional second} +{} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=2,% + physical height=\pgfpageoptiontwoheight,% + physical width=\pgfpageoptiontwowidth,% + last logical shipout=1% + } + \pgfpageslogicalpageoptions{1} + {% + center=\pgfpageoptionfirstcenter,% + }% + \pgfpageslogicalpageoptions{2} + {% + center=\pgfpageoptionsecondcenter,% + copy from=2% + }% +} + +\pgfpagesdeclarelayout{2 on 1} +{ + \edef\pgfpageoptionheight{\the\paperwidth} % landscaped by default + \edef\pgfpageoptionwidth{\the\paperheight} + \def\pgfpageoptionborder{0pt} + \def\pgfpageoptionfirstshipout{1} +} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=2,% + physical height=\pgfpageoptionheight,% + physical width=\pgfpageoptionwidth,% + current logical shipout=\pgfpageoptionfirstshipout% + } + \ifdim\paperheight>\paperwidth\relax + % put side-by-side + \pgfpageslogicalpageoptions{1} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=\pgfphysicalheight,% + center=\pgfpoint{.25\pgfphysicalwidth}{.5\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{2} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=\pgfphysicalheight,% + center=\pgfpoint{.75\pgfphysicalwidth}{.5\pgfphysicalheight}% + }% + \else + % stack on top of one another + \pgfpageslogicalpageoptions{1} + {% + border shrink=\pgfpageoptionborder,% + resized width=\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.5\pgfphysicalwidth}{.75\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{2} + {% + border shrink=\pgfpageoptionborder,% + resized width=\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.5\pgfphysicalwidth}{.25\pgfphysicalheight}% + }% + \fi +} + + +\pgfpagesdeclarelayout{4 on 1} +{ + \edef\pgfpageoptionheight{\the\paperheight} + \edef\pgfpageoptionwidth{\the\paperwidth} + \edef\pgfpageoptionborder{0pt} +} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=4,% + physical height=\pgfpageoptionheight,% + physical width=\pgfpageoptionwidth% + } + \pgfpageslogicalpageoptions{1} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.25\pgfphysicalwidth}{.75\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{2} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.75\pgfphysicalwidth}{.75\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{3} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.25\pgfphysicalwidth}{.25\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{4} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.75\pgfphysicalwidth}{.25\pgfphysicalheight}% + }% +} + + +\pgfpagesdeclarelayout{8 on 1} +{ + \edef\pgfpageoptionheight{\the\paperwidth} % landscaped by default + \edef\pgfpageoptionwidth{\the\paperheight} + \def\pgfpageoptionborder{0pt} +} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=8,% + physical height=\pgfpageoptionheight,% + physical width=\pgfpageoptionwidth% + } + \ifdim\paperheight>\paperwidth\relax + % put side-by-side + \pgfpageslogicalpageoptions{1} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.125\pgfphysicalwidth}{.75\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{2} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.375\pgfphysicalwidth}{.75\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{3} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.625\pgfphysicalwidth}{.75\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{4} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.875\pgfphysicalwidth}{.75\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{5} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.125\pgfphysicalwidth}{.25\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{6} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.375\pgfphysicalwidth}{.25\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{7} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.625\pgfphysicalwidth}{.25\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{8} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.5\pgfphysicalheight,% + center=\pgfpoint{.875\pgfphysicalwidth}{.25\pgfphysicalheight}% + }% + \else + % stack on top of one another + \pgfpageslogicalpageoptions{1} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.25\pgfphysicalwidth}{.875\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{2} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.75\pgfphysicalwidth}{.875\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{3} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.25\pgfphysicalwidth}{.625\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{4} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.75\pgfphysicalwidth}{.625\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{5} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.25\pgfphysicalwidth}{.375\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{6} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.75\pgfphysicalwidth}{.375\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{7} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.25\pgfphysicalwidth}{.125\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{8} + {% + border shrink=\pgfpageoptionborder,% + resized width=.5\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.75\pgfphysicalwidth}{.125\pgfphysicalheight}% + }% + \fi +} + + +\pgfpagesdeclarelayout{16 on 1} +{ + \edef\pgfpageoptionheight{\the\paperheight} + \edef\pgfpageoptionwidth{\the\paperwidth} + \edef\pgfpageoptionborder{0pt} +} +{ + \pgfpagesphysicalpageoptions + {% + logical pages=16,% + physical height=\pgfpageoptionheight,% + physical width=\pgfpageoptionwidth% + } + \pgfpageslogicalpageoptions{1} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.125\pgfphysicalwidth}{.875\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{2} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.375\pgfphysicalwidth}{.875\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{3} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.625\pgfphysicalwidth}{.875\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{4} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.875\pgfphysicalwidth}{.875\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{5} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.125\pgfphysicalwidth}{.625\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{6} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.375\pgfphysicalwidth}{.625\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{7} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.625\pgfphysicalwidth}{.625\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{8} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.875\pgfphysicalwidth}{.625\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{9} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.125\pgfphysicalwidth}{.375\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{10} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.375\pgfphysicalwidth}{.375\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{11} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.625\pgfphysicalwidth}{.375\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{12} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.875\pgfphysicalwidth}{.375\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{13} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.125\pgfphysicalwidth}{.125\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{14} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.375\pgfphysicalwidth}{.125\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{15} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.625\pgfphysicalwidth}{.125\pgfphysicalheight}% + }% + \pgfpageslogicalpageoptions{16} + {% + border shrink=\pgfpageoptionborder,% + resized width=.25\pgfphysicalwidth,% + resized height=.25\pgfphysicalheight,% + center=\pgfpoint{.875\pgfphysicalwidth}{.125\pgfphysicalheight}% + }% +} + + +% Change/set main option +% +% #1 = options +% +% Options: +% +% logical pages = number of logical pages per physical page +% logical shipouts = number of shipouts needed to fill a physical page +% (may be less than the number of logical pages, +% if some logical pages are calculated +% automatically) +% current logical shipout = number of logical shipout that will come +% next. +% +% Example: +% +% \pgfpagesphysicalpageoptions{logical pages=2,logical shipouts=1} + +\newcommand\pgfpagesphysicalpageoptions[1]{% + \pgf@lastshipout=0\relax% + \pgf@currentshipout=0\relax% + \setkeys{pgfpages@main}{#1}% + \ifnum\pgf@lastshipout=0\relax%not set + \pgf@lastshipout=\pgf@logicalpages% + \fi% + \ifnum\pgf@currentshipout=0\relax%not set + \pgf@currentshipout=\pgf@firstshipout% + \fi% +} + + +\define@key{pgfpages@main}{logical pages}{\pgf@logicalpages=#1\relax} +\define@key{pgfpages@main}{first logical shipout}{\pgf@firstshipout=#1\relax} +\define@key{pgfpages@main}{last logical shipout}{\pgf@lastshipout=#1\relax} +\define@key{pgfpages@main}{current logical shipout}{\pgf@currentshipout=#1\relax} +\define@key{pgfpages@main}{physical height}{\pgfphysicalheight=#1\relax} +\define@key{pgfpages@main}{physical width}{\pgfphysicalwidth=#1\relax} + + + +% Setup/change parameters of a logical page. You must call this +% macro for each logical page. +% +% #1 = logical page number +% #2 = options +% +% Options: +% +% original height = height of the logical page (\paperheight at point of +% first invocation by default) +% original width = width of the logical page (\paperwidth by default) +% resized height = height of the logical page after resizing +% resized width = width of the logical page after resizing +% border shrink = length that is subtracted from resized height and +% resized width +% border code = pgf commands to be used for drawing a border (a +% path with the border set will already have been +% set) +% rounded corners = clip the frame against a rectangle of the size of +% the frame with corners of the given radius +% scale = factor by which the page is enlarged/shrunk +% center = center of the logical page in the physical page +% rotation = degree by which the page is rotated around its center +% xscale = scale only x-axis (use -1 to flip along y-axis) +% yscale = scale only y-axis (use -1 to flip along x-axis) +% copy from = copy the contents from this logical page of the +% previous physical page, if no contents is specified +% +% If more than one of the three options ``resized height'', ``resized +% width'' and ``scale'' are given, the smallest resulting scaling +% wins. +% +% Example: +% +% \pgfpageslogicalpageoptions{1}{scale=0.5,center=\pgfpoint{0cm}{2cm}} + +\newcommand\pgfpageslogicalpageoptions[2]{% + \pgf@cpn=#1\relax% + \expandafter\ifx\csname pgfpages@box@#1\endcsname\relax% + \expandafter\newbox\csname pgfpages@box@#1\endcsname% + \edef\pgf@temp{% + \noexpand\pgf@psetcurrent{height}{\the\paperheight}% + \noexpand\pgf@psetcurrent{width}{\the\paperwidth}% + }% + \pgf@temp% + \fi% + \setkeys{pgfpages@page}{#2}% + \pgf@calculateresizes{height}% + \pgf@calculateresizes{width}% + \pgfsetupphysicalpagesizes% +} + +\def\pgf@epset#1#2#3{\expandafter\edef\csname pgfpages@p@#1@#2\endcsname{#3}} +\def\pgf@epsetcurrent#1#2{\pgf@pset{\the\pgf@cpn}{#1}{#2}} +\def\pgf@pset#1#2#3{\expandafter\def\csname pgfpages@p@#1@#2\endcsname{#3}} +\def\pgf@pget#1#2{\csname pgfpages@p@#1@#2\endcsname} +\def\pgf@psetcurrent#1#2{\pgf@pset{\the\pgf@cpn}{#1}{#2}} +\def\pgf@pgetcurrent#1{\pgf@pget{\the\pgf@cpn}} + +\define@key{pgfpages@page}{scale}{\pgf@epsetcurrent{scale}{#1}} +\define@key{pgfpages@page}{xscale}{\pgf@epsetcurrent{xscale}{#1}} +\define@key{pgfpages@page}{yscale}{\pgf@epsetcurrent{yscale}{#1}} +\define@key{pgfpages@page}{original height}{\pgf@epsetcurrent{height}{#1}} +\define@key{pgfpages@page}{original width}{\pgf@epsetcurrent{width}{#1}} +\define@key{pgfpages@page}{resized height}{\pgf@epsetcurrent{reheight}{#1}} +\define@key{pgfpages@page}{resized width}{\pgf@epsetcurrent{rewidth}{#1}} +\define@key{pgfpages@page}{center}{\pgf@psetcurrent{center}{#1}} +\define@key{pgfpages@page}{rotation}{\pgf@epsetcurrent{rotation}{#1}} +\define@key{pgfpages@page}{copy from}{\pgf@epsetcurrent{copy}{#1}} +\define@key{pgfpages@page}{border shrink}{\pgf@epsetcurrent{border}{#1}} +\define@key{pgfpages@page}{border code}{\pgf@psetcurrent{bordercode}{#1}} +\define@key{pgfpages@page}{corner width}{\pgf@psetcurrent{cornerwidth}{#1}} + +\def\pgf@calculateresizes#1{% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @re#1\endcsname\relax% + \else% + \expandafter\@tempdima\csname pgfpages@p@\the\pgf@cpn @re#1\endcsname\relax% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @border\endcsname\relax% + \else% + \expandafter\@tempdimb\csname pgfpages@p@\the\pgf@cpn @border\endcsname\relax% + \advance\@tempdima by-2\@tempdimb\relax% + \fi% + \expandafter\@tempdimb\csname pgfpages@p@\the\pgf@cpn @#1\endcsname\relax% + \@tempcnta=\@tempdimb% + \divide\@tempcnta by 65536\relax% + \ifnum\@tempcnta=0\relax% + \@tempcnta=1\relax% + \fi% + \divide\@tempdima by\@tempcnta\relax% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @scale\endcsname\relax% + \@tempdimb=10000pt% + \else% + \expandafter\@tempdimb\expandafter=\csname pgfpages@p@\the\pgf@cpn @scale\endcsname pt\relax% + \fi% + \ifdim\@tempdima<\@tempdimb% + \edef\pgf@temp{{scale}{\expandafter\Pgf@geT\the\@tempdima}}% + \expandafter\pgf@psetcurrent\pgf@temp% + \fi% + \fi% +} + + + +% Shipout a physical page immediately +% +% Example: +% +% \pgfshipoutphysicalpage + +\newcommand\pgfshipoutphysicalpage{% + \ifnum\pgf@logicalpages>0\relax% + \pgfpages@buildshipoutbox% + \pgfpages@shipoutshipoutbox% + \pgfpages@performcopying% + \global\pgfphysicalpageemptytrue% + \global\pgf@holdingphysicalpagefalse% + \fi% +} + +\newbox\pgfpages@shipoutbox + +\def\pgfpages@buildshipoutbox{% + \setbox\pgfpages@shipoutbox=\vbox{{% + \set@typeset@protect% + \offinterlineskip% + \pgfsys@beginpicture% + \pgf@cpn=1\relax% + \loop% + \setbox0=\hbox to \csname pgfpages@p@\the\pgf@cpn @width\endcsname{% + \hskip1in% + \vbox to \csname pgfpages@p@\the\pgf@cpn @height\endcsname% + {\vskip1in\offinterlineskip\expandafter\copy\csname + pgfpages@box@\the\pgf@cpn\endcsname\vss}\hss}% + \pgfsys@beginscope% + % Translate lower left corner + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @center\endcsname\relax% + \else% + \pgflowlevel{\pgftransformshift{\csname pgfpages@p@\the\pgf@cpn @center\endcsname}}% + \fi% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @scale\endcsname\relax% + \else% + \pgflowlevel{\pgftransformscale{\csname pgfpages@p@\the\pgf@cpn @scale\endcsname}}% + \fi% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @xscale\endcsname\relax% + \else% + \pgflowlevel{\pgftransformxscale{\csname pgfpages@p@\the\pgf@cpn @xscale\endcsname}{1}}% + \fi% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @yscale\endcsname\relax% + \else% + \pgflowlevel{\pgftransformyscale{\csname pgfpages@p@\the\pgf@cpn @yscale\endcsname}}% + \fi% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname\relax% + \pgfscope% + \else% + \pgflowlevel{\pgftransformrotate{\csname pgfpages@p@\the\pgf@cpn @rotation\endcsname}}% + \fi% + \@tempdima=\csname pgfpages@p@\the\pgf@cpn @width\endcsname\relax% + \@tempdimb=\csname pgfpages@p@\the\pgf@cpn @height\endcsname\relax% + \pgflowlevel{\pgftransformshift{\pgfpoint{-.5\@tempdima}{-.5\@tempdimb}}}% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @bordercode\endcsname\relax% + \else% + \pgfpathmoveto{\pgfpathorigin}% + \pgfpathlineto{\pgfpoint{\wd0}{0pt}}% + \pgfpathlineto{\pgfpoint{\wd0}{\ht0}}% + \pgfpathlineto{\pgfpoint{0pt}{\ht0}}% + \pgfpathclose% + {\csname pgfpages@p@\the\pgf@cpn @bordercode\endcsname}% + \fi% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @cornerwidth\endcsname\relax% + \else% + { + \expandafter\@tempdima\csname pgfpages@p@\the\pgf@cpn @cornerwidth\endcsname\relax% + \color{black} + \pgfpathrectangle{\pgfpathorigin}{\pgfpoint{\@tempdima}{\@tempdima}}% + \pgfpathrectangle{\pgfpoint{0pt}{\ht0-\@tempdima}}{\pgfpoint{\@tempdima}{\@tempdima}}% + \pgfpathrectangle{\pgfpoint{\wd0-\@tempdima}{0pt}}{\pgfpoint{\@tempdima}{\@tempdima}}% + \pgfpathrectangle{\pgfpoint{\wd0-\@tempdima}{\ht0-\@tempdima}}{\pgfpoint{\@tempdima}{\@tempdima}}% + \pgfusepath{fill}% + \pgfpathmoveto{\pgfpoint{0pt}{\@tempdima}} + \pgfpathcurveto{\pgfpoint{0pt}{0.555\@tempdima}}{\pgfpoint{.555\@tempdima}{0pt}}{\pgfpoint{\@tempdima}{0pt}} + \pgfpathlineto{\pgfpoint{\wd0-\@tempdima}{0pt}} + \pgfpathcurveto{\pgfpoint{\wd0-.555\@tempdima}{0pt}}{\pgfpoint{\wd0}{.555\@tempdima}}{\pgfpoint{\wd0}{\@tempdima}} + \pgfpathlineto{\pgfpoint{\wd0}{\ht0-\@tempdima}} + \pgfpathcurveto{\pgfpoint{\wd0}{\ht0-.555\@tempdima}}{\pgfpoint{\wd0-.555\@tempdima}{\ht0}}{\pgfpoint{\wd0-\@tempdima}{\ht0}} + \pgfpathlineto{\pgfpoint{\@tempdima}{\ht0}} + \pgfpathcurveto{\pgfpoint{.555\@tempdima}{\ht0}}{\pgfpoint{0pt}{\ht0-.555\@tempdima}}{\pgfpoint{0pt}{\ht0-\@tempdima}} + \pgfpathclose + \pgfusepath{clip} + \color{white} + \pgfpathrectangle{\pgfpathorigin}{\pgfpoint{\wd0}{\ht0}} + \pgfusepath{fill} + } + \fi% + \ht0=0pt% + \wd0=0pt% + \dp0=0pt% + \pgfsys@hbox0% + \endpgfscope% + \pgfsys@endscope% + \ifnum\pgf@cpn<\pgf@logicalpages% + \advance \pgf@cpn by 1\relax% + \repeat% + \pgfsys@endpicture% + }}% +} + + +\def\pgfpages@shipoutshipoutbox{% + \begingroup + \let \protect \noexpand + \@resetactivechars + \global\let\@@if@newlist\if@newlist + \global\@newlistfalse + \@parboxrestore + \pgfpages@originalshipout% + \hbox{% + \hskip-1in% + \vbox to \pgfphysicalheight{% + \vss\box\pgfpages@shipoutbox% + \vskip1in% + }}% + \endgroup% +} + +\def\pgfpages@performcopying{ + \pgf@cpn=1\relax% copy first + \loop% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @copy\endcsname\relax + \else% + \edef\pgf@temp{\noexpand\global\noexpand\setbox\csname pgfpages@box@% + \the\pgf@cpn\endcsname=\noexpand\copy\csname pgfpages@box@\csname + pgfpages@p@\the\pgf@cpn @copy\endcsname\endcsname}% + \pgf@temp% + \fi% + \ifnum\pgf@cpn<\pgf@logicalpages% + \advance \pgf@cpn by 1\relax% + \repeat% + \pgf@cpn=1\relax% then void + \loop% + \expandafter\ifx\csname pgfpages@p@\the\pgf@cpn @copy\endcsname\relax + \expandafter\global\expandafter\setbox\csname pgfpages@box@\the\pgf@cpn\endcsname=\box\voidb@x% + \else% + \fi% + \ifnum\pgf@cpn<\pgf@logicalpages% + \advance \pgf@cpn by 1\relax% + \repeat% +} + + + +% Save original shipout commands +% +% Example: +% +% \pgfhookintoshipout + +\newcommand\pgfhookintoshipout{ + \let\pgfpages@originalshipout=\shipout + \let\shipout=\pgfpages@interceptshipout +} + +\def\pgfpages@interceptshipout{% + \ifnum\pgf@shipoutnextto>0\relax + \def\pgf@next{% + \expandafter\global\expandafter\setbox\csname pgfpages@box@\the\pgf@shipoutnextto\endcsname=\box\voidb@x% + \afterassignment\pgfpages@shipouttestnext% + \pgfpagesshipoutlogicalpage{\the\pgf@shipoutnextto}% + }% + \else% + \ifpgf@holdingphysicalpage% shipout physical page now + {\pgfshipoutphysicalpage}% + \fi% + \ifnum\pgf@logicalpages=0\relax + \def\pgf@next{\pgfpages@originalshipout}% + \else% + \def\pgf@next{% + \expandafter\global\expandafter\setbox\csname pgfpages@box@\the\pgf@currentshipout\endcsname=\box\voidb@x% + \afterassignment\pgfpages@shipouttest% + \pgfpagesshipoutlogicalpage{\the\pgf@currentshipout}% + }% + \fi% + \fi% + \pgf@next% +} + +\def\pgfpages@shipouttest{% + \ifvoid\csname pgfpages@box@\the\pgf@currentshipout\endcsname\relax% + \aftergroup\pgfpages@preparenextshipout% + \else% + \pgfpages@preparenextshipout% + \fi% +} + +\def\pgfpages@shipouttestnext{% + \ifvoid\csname pgfpages@box@\the\pgf@shipoutnextto\endcsname\relax% + \aftergroup\pgfpages@preparenextshipout% + \else% + \pgfpages@preparenextshipout% + \fi% +} + +\def\pgfpages@preparenextshipout{% + \ifnum\pgf@shipoutnextto=0\relax% + \global\advance\pgf@currentshipout by 1\relax% + \else% + \global\pgf@shipoutnextto=0\relax% + \fi% + \ifnum\pgf@currentshipout>\pgf@lastshipout\relax% + \global\pgf@currentshipout=\pgf@firstshipout\relax% + \global\pgf@holdingphysicalpagetrue% + \fi% +} + + + +% Shipout a logical page +% +% #1 = logical page number +% +% The command should be followed by a box. This box will become the +% contents of the logical page. +% +% Example: +% +% \pgfpagesshipoutlogicalpage{0}\vbox{Hi!} + +\newcommand\pgfpagesshipoutlogicalpage[1]{% + \global\pgfphysicalpageemptyfalse% + \expandafter\global\expandafter\setbox\csname pgfpages@box@#1\endcsname=} + + + +% Finish current page and shipout next page to a specific logical page. +% +% #1 = logical page number +% +% When the current page has been typset, it will be become the given +% logical page. This command ``interrupts'' the normal order of +% logical pages. +% +% Example: +% +% \pgfpagesuselayout{two screens with optional second} +% +% Text for main page.\clearpage +% +% \pgfpagescurrentpagewillbelogicalpage{2} +% +% Text that goes to second page +% +% \clearpage +% +% Text for main page. + +\newcommand\pgfpagescurrentpagewillbelogicalpage[1]{% + \global\pgf@shipoutnextto=#1\relax% +} + + +% Setup the physical page sizes +% +% Example: +% +% \pgfsetupphysicalpagesizes + +\newcommand\pgfsetupphysicalpagesizes{% + % The following code was send to me by Rolf Niepraschk + \ifx\Gin@driver\@empty\else% + \filename@parse{\Gin@driver}\@tempswafalse% + \def\reserved@a{dvips}% + \ifx\filename@base\reserved@a\@tempswatrue\fi% + \def\reserved@a{dvipdfm}% + \ifx\filename@base\reserved@a\@tempswatrue\fi% + \if@tempswa% + \AtBeginDvi{% + \special{papersize=\the\pgfphysicalwidth,\the\pgfphysicalheight}}% + \fi% + \def\reserved@a{pdftex}% + \ifx\filename@base\reserved@a + \pdfpagewidth\pgfphysicalwidth\pdfpageheight\pgfphysicalheight% + \fi% + \def\reserved@a{vtex}% + \ifx\filename@base\reserved@a + \mediawidth\pgfphysicalwidth\mediaheight\pgfphysicalheight% + \fi% + \fi +} + + +% +% Start/End setup +% +\AtBeginDocument +{ + \pgfhookintoshipout + \pgfsetupphysicalpagesizes +} +\AtEndDocument +{ + \clearpage + \ifpgfphysicalpageempty + \else + \pgfshipoutphysicalpage + \fi +} + diff --git a/Master/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty b/Master/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty new file mode 100644 index 00000000000..509ebded392 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty @@ -0,0 +1,8 @@ +% Copyright 2005 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the GNU Public License, version 2. + +\input{pgfrcs.code.tex} + +\endinput diff --git a/Master/texmf-dist/tex/latex/pgf/utilities/xxcolor.sty b/Master/texmf-dist/tex/latex/pgf/utilities/xxcolor.sty new file mode 100644 index 00000000000..9f4ec8c970d --- /dev/null +++ b/Master/texmf-dist/tex/latex/pgf/utilities/xxcolor.sty @@ -0,0 +1,105 @@ +\ProvidesPackage{xxcolor}[2003/10/24 ver 0.1] +\NeedsTeXFormat{LaTeX2e}[1995/12/01] + +% Copyright 2003 by Till Tantau . +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt. + +\RequirePackage{xcolor} + + + +% Command \newcolormixin{\somecommand} +% +% Description: +% +% After this command has been called, you can assign a partial color +% specification to \somecommand. Every time a color is set, the +% partial color specification in \somecommand will be applied to the +% current color. +% +% Examples: +% +% \newcolormixin\mymixin +% \def\mymixin{!50!white} +% +% \newcolormixin\anothermixin +% \def\anothermixin{!50!red} + +\def\newcolormixin#1{% + \expandafter\def\csname XC@mixin@\the\XC@nummixins\endcsname{#1}% + \advance\XC@nummixins\@ne% + \ifx#1\@undefined\def#1{}\fi} + +\newcount\XC@nummixins +\newcount\XC@countmixins + + +% Command \applycolormixins{colorname} +% +% Description: +% +% Applies all color mixins that have been defined using \newcolormixin +% to the color named colorname. +% +% Examples: +% +% \applycolormixins{mycolor} + +\def\applycolormixins#1{% + \XC@countmixins=0\relax% + \loop% + \ifnum\XC@countmixins<\XC@nummixins% + \colorlet{#1}{#1\csname XC@mixin@\the\XC@countmixins\endcsname}% + \advance\XC@countmixins\@ne\relax% + \repeat% +} + + +% Internal: + +\ifx\XC@mcolor\relax + \let\XC@mcolor\@empty +\fi + +\g@addto@macro\XC@mcolor{% + \ifnum\XC@nummixins>0% + \@namelet{\string\color@XC@mixtmp}{\string\color@.}% + \applycolormixins{XC@mixtmp}% + \@namelet{current@color}{\string\color@XC@mixtmp}% + \fi% +} + + + +% Environment colormixin +% +% #1 = full xcolor specification after the first ! ("white" may not be +% omitted) +% +% Description: +% +% Inside the environment, all colors get the specified mixin. May be +% nested. +% +% Examples: +% +% \color{red}This is red. +% \begin{colormixin}{25!black} +% This is dark red. +% \color{blue} +% This is dark blue. +% \end{colormixin} +% This is normal red once more. + +\newcolormixin\colorcurrentmixin + +\newenvironment{colormixin}[1]% +{\edef\colorcurrentmixin{!#1\colorcurrentmixin}\color{.}}{} + +\def\pgfalternateextension{\colorcurrentmixin} + +\endinput + -- cgit v1.2.3