% 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. \catcode`\@=11\relax \def\pgf@test@fmtname{LaTeX2e} \expandafter\ifx\csname fmtname\endcsname\pgf@test@fmtname% \PackageError{pgf}{This file should not be loaded with \LaTeX.}{} \else% % Direct copy from latex.ltx: \def\typeout#1{\immediate\write\@unused{#1}} \alloc@7\write\chardef\sixt@@n\@unused \let\@@par=\par \def\@empty{} \def\@gobble #1{} \def\@gobbletwo #1#2{} \long\def\@ifnextchar#1#2#3{% \let\reserved@d=#1% \def\reserved@a{#2}% \def\reserved@b{#3}% \futurelet\@let@token\@ifnch} \def\@ifnch{% \ifx\@let@token\@sptoken \let\reserved@c\@xifnch \else \ifx\@let@token\reserved@d \let\reserved@c\reserved@a \else \let\reserved@c\reserved@b \fi \fi \reserved@c} \def\in@#1#2{% \def\in@@##1#1##2##3\in@@{% \ifx\in@##2\in@false\else\in@true\fi}% \in@@#2#1\in@\in@@} \newif\ifin@ \newdimen\@tempdima \newdimen\@tempdimb \newcount\@tempcnta \newcount\@tempcntb \def\@namedef#1{\expandafter\def\csname #1\endcsname} \long\def\g@addto@macro#1#2{% \begingroup \toks@\expandafter{#1#2}% \xdef#1{\the\toks@}% \endgroup} \long\def\mbox#1{\leavevmode\hbox{#1}} \def\:{\global\let\@sptoken= } \: \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch} \def\@nnil{\@nil} \def\@fornoop#1\@@#2#3{} \long\def\@for#1:=#2\do#3{% \expandafter\def\expandafter\@fortmp\expandafter{#2}% \ifx\@fortmp\@empty \else \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi} \long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi} \long\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil \expandafter\@fornoop \else #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}} \def\@tfor#1:={\@tf@r#1 } \long\def\@tf@r#1#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\space\else \@tforloop#2\@nil\@nil\@@#1{#3}\fi} \long\def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil \expandafter\@fornoop \else #4\relax\expandafter\@tforloop\fi#2\@@#3{#4}} \chardef\@inputcheck0 \def\IfFileExists#1#2#3{% \openin\@inputcheck#1 % \ifeof\@inputcheck #3\relax \else #2\relax \fi \closein\@inputcheck} \newbox\@tempboxa \newif\if@tempswa \long\def\@firstoftwo#1#2{#1} \long\def\@secondoftwo#1#2{#2} % Simplified version of latex.ltx: \def\PackageInfo#1#2{}%\typeout{Package #1: Info: #2.}}% \def\PackageWarning#1#2{\typeout{Package #1: Warning! #2.}}% \def\PackageError#1#2#3{\typeout{Package #1: Error! #2.}}% \long\def\AtBeginDocument#1{#1}% \long\def\AtBeginDvi#1{#1}% \def\InputIfFileExists#1#2#3{\input #1\relax#2}% \def\minipage[#1]#2{% \hbox to#2\bgroup% \hsize=#2\relax% \vbox\bgroup\leavevmode% } \def\endminipage{\egroup\egroup} \def\providecommand#1#2{\def#1{#2}} \def\newcounter#1{\expandafter\alloc@\expandafter0\expandafter\count\expandafter\countdef\expandafter\insc@unt\csname c@#1\endcsname}% \def\setcounter#1#2{\global\csname c@#1\endcsname#2\relax}% \def\addtocounter#1#2{\global\advance\csname c@#1\endcsname #2\relax} \newskip\pgf@length@skip \def\setlength#1#2{\pgf@length@skip#2\relax#1\pgf@length@skip} \def\addtolength#1#2{\advance#1 #2\relax} % Driver detector (not so good): \ifx\pdfoutput\@undefined\alloc@0\count\countdef\insc@unt\pdfoutput\fi \ifx\pdfoutput\relax\alloc@0\count\countdef\insc@unt\pdfoutput\fi \ifcase\pdfoutput% \gdef\Gin@driver{dvips.def}% \else% \gdef\Gin@driver{pdftex.def}% \fi% % aux files \newwrite\@auxout \IfFileExists{\jobname.aux}{\input \jobname.aux\relax}{} \openout\@auxout % Things that are not too clever, yet: \def\selectfont{\rm} \def\applycolormixins#1{} % My ultra-quick xcolor.sty emulation... \newif\ifglobalcolors \def\definecolor#1#2#3{\csname pgf@emu@#2\endcsname{#1}#3\@nil} \def\pgf@emu@rgb#1#2,#3,#4\@nil{\expandafter\def\csname\string\color@#1\endcsname{\xcolor@{}{}{rgb}{#2,#3,#4}}} \def\pgf@emu@gray#1#2\@nil{\expandafter\def\csname\string\color@#1\endcsname{\xcolor@{}{}{rgb}{#2,#2,#2}}} \definecolor{white}{gray}{1} \definecolor{black}{gray}{0} \definecolor{gray}{gray}{0.5} \definecolor{red}{rgb}{1,0,0} \definecolor{green}{rgb}{0,1,0} \definecolor{blue}{rgb}{0,0,1} \definecolor{cyan}{rgb}{0,1,1} \definecolor{magenta}{rgb}{1,0,1} \definecolor{yellow}{rgb}{1,1,0} \definecolor{orange}{rgb}{1,0.5,0} \definecolor{violet}{rgb}{0.5,0,0.5} \definecolor{purple}{rgb}{0.75,0,0.25} \definecolor{brown}{rgb}{0.75,0.5,0.25} \ifx\color\@undefined \def\color#1{% \colorlet{.}{#1}% \pgfsysprotocol@getcurrentprotocol\pgf@emu@temp% {% \pgfsysprotocol@setcurrentprotocol\@empty% \pgfsysprotocol@bufferedtrue% \pgfsetcolor{.}% \expandafter\pgfsys@outerinvoke\expandafter{\pgfsysprotocol@currentprotocol}% }% \pgfsysprotocol@setcurrentprotocol\pgf@emu@temp% \aftergroup\reset@color% } \fi \def\reset@color{% \pgfsysprotocol@getcurrentprotocol\pgf@emu@temp% {% \pgfsysprotocol@setcurrentprotocol\@empty% \pgfsysprotocol@bufferedtrue% \pgfsetcolor{.}% \expandafter\pgfsys@outerinvoke\expandafter{\pgfsysprotocol@currentprotocol}% }% \pgfsysprotocol@setcurrentprotocol\pgf@emu@temp% } \expandafter\def\csname\string\color@.\endcsname{\xcolor@{}{}{rgb}{0,0,0}} \def\colorlet#1#2{% \edef\pgf@marshal{#2}% \expandafter\in@\expandafter!\expandafter{\pgf@marshal}% \ifin@% % compute mixture {% \expandafter\pgf@emu@mix\pgf@marshal!white!\@nil% \xdef\pgf@marshal{\noexpand\def\expandafter\noexpand\csname\string\color@#1\endcsname{% \noexpand\xcolor@{}{}{rgb}{\pgf@sys@tonumber\pgf@xa,\pgf@sys@tonumber\pgf@xb,\pgf@sys@tonumber\pgf@xc}}}% }% \pgf@marshal% \else% \edef\pgf@marshal{\noexpand\let\expandafter\noexpand\csname\string\color@#1\endcsname=% \expandafter\noexpand\csname\string\color@#2\endcsname}% \pgf@marshal% \fi% } \def\pgf@emu@mix#1!#2!#3!#4\@nil{% \expandafter\expandafter\expandafter\pgf@emu@unpack\csname\string\color@#1\endcsname% \pgf@ya=\pgf@xa% \pgf@yb=\pgf@xb% \pgf@yc=\pgf@xc% \expandafter\expandafter\expandafter\pgf@emu@unpack\csname\string\color@#3\endcsname% \c@pgf@counta=#2\relax% \c@pgf@countb=100\relax% \advance\c@pgf@countb by-\c@pgf@counta\relax% \pgf@xa=\c@pgf@countb\pgf@xa% \advance\pgf@xa by\c@pgf@counta\pgf@ya% \divide\pgf@xa by 100\relax% \pgf@xb=\c@pgf@countb\pgf@xb% \advance\pgf@xb by\c@pgf@counta\pgf@yb% \divide\pgf@xb by 100\relax% \pgf@xc=\c@pgf@countb\pgf@xc% \advance\pgf@xc by\c@pgf@counta\pgf@yc% \divide\pgf@xc by 100\relax% } \def\pgf@emu@unpack#1#2#3#4#5{% \pgf@emu@@unpack#5\@nil% } \def\pgf@emu@@unpack#1,#2,#3\@nil{% \pgf@xa=#1pt% \pgf@xb=#2pt% \pgf@xc=#3pt% } \def\extractcolorspec#1#2{% \def#2{{#1}}% } \def\convertcolorspec#1#2#3{% \edef#3{\expandafter\expandafter\expandafter\pgf@emu@select\csname\string\color@#1\endcsname}% } \def\pgf@emu@select#1#2#3#4#5{#5} % Adapted from keyval.sty: \newtoks\KV@toks@ \ifx\setkeys\@undefined \def\setkeys#1#2{% \def\KV@prefix{KV@#1@}% \let\@tempc\relax \KV@do#2,\relax,} \def\KV@do#1,{% \ifx\relax#1\empty\else \KV@split#1==\relax \expandafter\KV@do\fi} \def\KV@split#1=#2=#3\relax{% \KV@@sp@def\@tempa{#1}% \ifx\@tempa\@empty\else \expandafter\let\expandafter\@tempc \csname\KV@prefix\@tempa\endcsname \ifx\@tempc\relax \KV@errx {\@tempa\space undefined}% \else \ifx\@empty#3\@empty \KV@default \else \KV@@sp@def\@tempb{#2}% \expandafter\@tempc\expandafter{\@tempb}\relax \fi \fi \fi} \def\KV@default{% \expandafter\let\expandafter\@tempb \csname\KV@prefix\@tempa @default\endcsname \ifx\@tempb\relax \KV@errx{No value specified for \@tempa}% \else \@tempb\relax \fi} \def\KV@errx#1{\PackageError{keyval}{#1}{}} \def\@tempa#1{% \def\KV@@sp@def##1##2{% \futurelet\KV@tempa\KV@@sp@d##2\@nil\@nil#1\@nil\relax##1}% \def\KV@@sp@d{% \ifx\KV@tempa\@sptoken \expandafter\KV@@sp@b \else \expandafter\KV@@sp@b\expandafter#1% \fi}% \def\KV@@sp@b#1##1 \@nil{\KV@@sp@c##1}% } \@tempa{ } \def\KV@@sp@c#1\@nil#2\relax#3{\KV@toks@{#1}\edef#3{\the\KV@toks@}} \def\define@key#1#2{% \@ifnextchar[{\KV@def{#1}{#2}}{\@namedef{KV@#1@#2}####1}} \def\KV@def#1#2[#3]{% \@namedef{KV@#1@#2@default\expandafter}\expandafter {\csname KV@#1@#2\endcsname{#3}}% \@namedef{KV@#1@#2}##1} \fi% \fi% \endinput