diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/pstricks/pstricks.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/pstricks/pstricks.tex | 3065 |
1 files changed, 3065 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pstricks/pstricks.tex b/Master/texmf-dist/tex/generic/pstricks/pstricks.tex new file mode 100644 index 00000000000..dc3ea08413c --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pstricks.tex @@ -0,0 +1,3065 @@ +%% pstricks.tex +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% COPYRIGHT 2000-2003 by Denis Girou. +%% Copyright 2004-2005 Herbert Voss +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2003/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% This Current Maintainer of this work is Herbert Voss +% +% This work consists of the file pstricks.tex, PostScript macros +% for Generic TeX. +% See the PSTricks User's Guide for description. +% This uses the header file `pstricks.pro'. +% +\def\fileversion{1.12} +\def\filedate{2005/10/25} +% +\csname PSTricksLoaded\endcsname +\let\PSTricksLoaded\endinput +\edef\PstAtCode{\the\catcode`\@} +\catcode`\@=11\relax +\expandafter\ifx\csname @latexerr\endcsname\relax +\long\def\@ifundefined#1#2#3{\expandafter\ifx\csname + #1\endcsname\relax#2\else#3\fi} +\def\@namedef#1{\expandafter\def\csname #1\endcsname} +\def\@nameuse#1{\csname #1\endcsname} +\def\@eha{% + Your command was ignored.^^J + Type \space I <command> <return> \space to replace + it with another command,^^J + or \space <return> \space to continue without it.} +\def\@spaces{\space\space\space\space} +\def\typeout#1{\immediate\write\@unused{#1}} +\alloc@7\write\chardef\sixt@@n\@unused +\def\@empty{} +\def\@gobble#1{} +\def\@nnil{\@nil} +\def\@ifnextchar#1#2#3{% +\let\@tempe#1\def\@tempa{#2}\def\@tempb{#3}\futurelet\@tempc\@ifnch} +\def\@ifnch{% + \ifx\@tempc\@sptoken + \let\@tempd\@xifnch + \else + \ifx\@tempc\@tempe \let\@tempd\@tempa \else \let\@tempd\@tempb \fi + \fi + \@tempd} +\begingroup +\def\:{\global\let\@sptoken= } \: +\def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@tempc\@ifnch} +\endgroup +\fi +\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)} +\def\@pstrickserr#1#2{% + \begingroup + \newlinechar`\^^J + \edef\pst@tempc{#2}% + \expandafter\errhelp\expandafter{\pst@tempc}% + \typeout{% + PSTricks error. \space See User's Guide for further information.^^J + \@spaces\@spaces\@spaces\@spaces + Type \space H <return> \space for immediate help.}% + \errmessage{#1}% + \endgroup} +\def\@ehpa{% + Your command was ignored. Default value substituted.^^J + Type \space <return> \space to procede.} +\def\@ehpb{% + Your command was ignored. Will recover best I can.^^J + Type \space <return> \space to procede.} +\def\@ehpc{% + You better fix this before proceding.^^J + See the PSTricks User's Guide or ask your system administrator for help.^^J + Type \space X <return> \space to quit.} +\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb} +\newdimen\pst@dima +\newdimen\pst@dimb +\newdimen\pst@dimc +\newdimen\pst@dimd +\newdimen\pst@dimg +\newdimen\pst@dimh +\newbox\pst@hbox +\newbox\pst@boxg +\newcount\pst@cnta +\newcount\pst@cntb +\newcount\pst@cntc +\newcount\pst@cntd +\newcount\pst@cntg +\newcount\pst@cnth +\newif\if@pst +\newtoks\pst@toks +\newif\if@star +\def\pst@ifstar#1{% + \@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}} +\def\pst@expandafter#1#2{% + \def\next{#1}% + \edef\@tempa{#2}% + \ifx\@tempa\@empty + \@pstrickserr{Unexpected empty argument!}\@ehpb + \def\@tempa{\@empty}% + \fi + \expandafter\next\@tempa} +\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}} +\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1} +{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}} +% +\def\pst@pyth#1#2#3{% from pst-3d + \begingroup + \pst@dima=#1\relax + \ifnum\pst@dima<\z@\pst@dima=-\pst@dima\fi % dima=abs(x) + \pst@dimb=#2\relax + \ifnum\pst@dimb<\z@\pst@dimb=-\pst@dimb\fi % dimb=abs(y) + \advance\pst@dimb\pst@dima % dimb=s=abs(x)+abs(y) + \ifnum\pst@dimb=\z@ + \global\pst@dimg=\z@ % dimg=z=sqrt(x^2+y^2) + \else + \multiply\pst@dima 8\relax % dima= 8abs(x) + \pst@@divide\pst@dima\pst@dimb % dimg =8t=8abs(x)/s + \advance\pst@dimg -4pt % dimg = 4tau = (8t-4) + \multiply\pst@dimg 2 + \pst@dimtonum\pst@dimg\pst@tempa + \pst@dima=\pst@tempa\pst@dimg % dima=(8tau)^2 + \advance\pst@dima 64pt % dima=u=[64+(8tau)^2]/2 + \divide\pst@dima 2\relax % =(8f)^2 + \pst@dimd=7pt % initial guess at sqrt(u) + \pst@@pyth\pst@@pyth\pst@@pyth % dimd=sqrt(u) + \pst@dimtonum\pst@dimd\pst@tempa + \pst@dimg=\pst@tempa\pst@dimb + \global\divide\pst@dimg 8 % dimg=z=(8f)*s/8 + \fi + \endgroup + #3=\pst@dimg} +\def\pst@@pyth{% dimd = g <-- (g + u/g)/2 + \pst@@divide\pst@dima\pst@dimd + \advance\pst@dimd\pst@dimg + \divide\pst@dimd 2\relax} +% +% ----- the old pst@pyth begin ----- +\iffalse +\def\pst@pyth#1#2#3{\ifdim#1>#2\pst@@pyth#1#2#3\else\pst@@pyth#2#1#3\fi} +\def\pst@@pyth#1#2#3{% + \ifdim4#1>9#2% + #3=#1\advance#3 .2122#2% + \else + #3=.8384#1\advance#3 .5758#2% + \fi% +} +\fi +% ----- the old pst@pyth end ----- +% +\def\pst@divide#1#2#3{% + \pst@@divide{#1}{#2}% + \pst@dimtonum\pst@dimg{#3}% +} +\def\pst@@divide#1#2{% + \pst@dimg=#1\relax + \pst@dimh=#2\relax + \pst@cntg=\pst@dimh + \pst@cnth=67108863 + \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide + \divide\pst@dimg\pst@cntg% +} +\def\pst@@@divide{% + \ifnum + \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cnth + \multiply\pst@dimg\sixt@@n + \else + \divide\pst@cntg\sixt@@n + \fi% +} +\def\pst@configerr#1{% + \@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc} +% +\def\pstVerb#1{\pst@configerr\pstVerb} +\def\pstverb#1{\pst@configerr\pstverb} +\def\pstverbscale{\pst@configerr\pstverbscale} +\def\pstrotate{\pst@configerr\pstrotate} +\def\pstheader#1{\pst@configerr\pstheader} +\def\pstdriver{\pst@configerr\pstdriver} +\@ifundefined{pstcustomize}% +{\def\pstcustomize{\endinput\let\pstcustomize\relax}}{} +\input pstricks.con +\newif\ifPSTricks +\PSTrickstrue +\def\PSTricksOff{% + \def\pstheader##1{}% + \def\pstverb##1{}% + \def\pstVerb##1{}% + \PSTricksfalse% +} +\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{} +\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{} +\pstheader{pstricks.pro} +\def\pst@dict{tx@Dict begin } +\def\pst@theheaders{pstricks.pro} +\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}} +\def\tx@Atan{Atan } +\def\tx@Div{Div } +\def\tx@NET{NET } +\def\tx@Pyth{Pyth } +\def\tx@PtoC{PtoC } +\def\tx@PathLength@{PathLength@ } +\def\tx@PathLength{PathLength } +\pst@dimg=\pstunit\relax +\ifdim\pst@dimg=1bp +\def\pst@stp{.996264 dup scale} +\else +\edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale} +\fi +\def\tx@STP{STP } +\def\tx@STV{STV } +\def\pst@number#1{\pst@@dimtonum#1\space} +\def\pst@checknum#1#2{% + \edef\next{#1}% + \ifx\next\@empty + \let\pst@num\z@ + \else + \expandafter\pst@@checknum\next..\@nil + \fi + \ifnum\pst@num=\z@ + \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa + \def#2{0 }% + \else + \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.% + \expandafter\@gobble\the\pst@cnth\space}% + \fi} +\def\pst@@checknum{% + \@ifnextchar-% + {\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}% + {\let\pst@num\@ne\pst@@@checknum}% +} +\def\pst@@@checknum#1.#2.#3\@nil{% +\afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil +\afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil} +\def\pst@@@@checknum#1\relax\@nil{% +\ifx\@nil#1\@nil\else\let\pst@num\z@\fi} +\def\pst@getnumii#1 #2 #3\@nil{% +\pst@checknum{#1}\pst@tempg +\pst@checknum{#2}\pst@temph} +\def\pst@getnumiii#1 #2 #3 #4\@nil{% +\pst@checknum{#1}\pst@tempg +\pst@checknum{#2}\pst@temph +\pst@checknum{#3}\pst@tempi} +\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{% +\pst@checknum{#1}\pst@tempg +\pst@checknum{#2}\pst@temph +\pst@checknum{#3}\pst@tempi +\pst@checknum{#4}\pst@tempj} +\def\pst@getdimnum#1 #2 #3\@nil{% + \pssetlength\pst@dimg{#1}% + \pst@checknum{#2}\pst@tempg% +} +% DG/SR modification begin - Jan. 7, 1998 - Patch 9 +% Missing from pstricks.bug 0.93 +%\def\pst@getscale#1#2{% +%\pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil +%\@psttrue +%\ifdim\pst@tempg\p@=\z@ +%\@pstrickserr{Bad scaling argument `#1'}\@ehpa +%\def\pst@tempg{1 }% +%\@pstfalse +%\fi +%\ifdim\pst@temph\p@=\z@ +%\if@pst\@pstrickserr{Bad scaling argument `#1'}\@ehpa\fi +%\def\pst@temph{1 }% +%\fi +%\edef#2{\pst@tempg\space \pst@temph\space scale }% +%\ifdim\pst@tempg\p@=\p@ \ifdim\pst@temph\p@=\p@ +%\def#2{}% +%\fi\fi} +\def\pst@getscale#1#2{% + \edef\pst@tempg{#1}% + \ifx\pst@tempg\@none + \def#2{}% + \else + \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil + \ifdim\pst@tempg\p@=\z@ + \@pstrickserr{Bad scaling argument `#1'}\@ehpa + \def#2{}% + \else + \ifdim\pst@temph\p@=\z@ + \@pstrickserr{Bad scaling argument `#1'}\@ehpa + \def#2{}% + \else + \edef#2{\pst@tempg\space \pst@temph\space scale }% + \fi + \fi + \fi% +} +% DG/SR modification end +\def\pst@getint#1#2{% + \pst@cntg=#1\relax + \edef#2{\the\pst@cntg\space}% +} +\begingroup +\catcode`\{=12 +\catcode`\}=12 +\catcode`\[=1 +\catcode`\]=2 +\gdef\pslbrace[{ ] +\gdef\psrbrace[} ] +\endgroup +\def\@newcolor#1#2{% +\expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}% +\expandafter\edef\csname color@#1\endcsname{#2}% +\ignorespaces} +\def\pst@color#1{% +\def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor} +\def\pst@endcolor{\pstVerb{\pst@currentcolor}} +\def\pst@currentcolor{0 setgray} +\def\altcolormode{% +\def\pst@color##1{% +\pstVerb{gsave ##1}\aftergroup\pst@endcolor}% +\def\pst@endcolor{\pstVerb{\pst@grestore}}} +\def\pst@grestore{% + currentpoint + matrix currentmatrix + currentfont + grestore + setfont + setmatrix + moveto +} +\def\pst@usecolor#1{\csname color@#1\endcsname\space} +\def\newgray#1#2{% + \pst@checknum{#2}\pst@tempg + \@newcolor{#1}{\pst@tempg setgray}% +} +\def\newrgbcolor#1#2{% + \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil + \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}% +} +\def\newhsbcolor#1#2{% + \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil + \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}% +} +\def\newcmykcolor#1#2{% + \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil + \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}% +} +\newgray{black}{0} +\newgray{darkgray}{.25} +\newgray{gray}{.5} +\newgray{lightgray}{.75} +\newgray{white}{1} +\newrgbcolor{red}{1 0 0} +\newrgbcolor{green}{0 1 0} +\newrgbcolor{blue}{0 0 1} +\newrgbcolor{yellow}{1 1 0} +\newrgbcolor{cyan}{0 1 1} +\newrgbcolor{magenta}{1 0 1} +\def\psset#1{\@psset#1,\@nil\ignorespaces} +\def\@psset#1,{% + \@@psset#1==\@nil% + \@ifnextchar\@nil{\@gobble}{\@psset}% +} +\def\@@psset#1=#2=#3\@nil{% + \@ifundefined{psset@#1}% + {\@pstrickserr{Graphics parameter `#1' not defined.}\@ehpa}% + {\@nameuse{psset@#1}{#2}}% +}% +\def\psset@style#1{% + \@ifundefined{pscs@#1}% + {\@pstrickserr{Custom style `#1' undefined}\@ehpa}% + {\@nameuse{pscs@#1}}% +} +%\def\newpsstyle#1#2{\@namedef{pscs@#1}{\psset{#2}}} +%------------ hv 1.10 beg ------------------- +\def\newpsstyle#1#2{\@namedef{pscs@#1}{% + \def\pst@tempa{#2}% + \ifx\pst@tempa\@empty\else\psset{#2}\fi}} +%------------ hv 1.10 end ------------------- +\def\@none{none} +\def\pst@getcolor#1#2{% + \@ifundefined{color@#1}% + {\@pstrickserr{Color `#1' not defined}\@eha}% + {\edef#2{#1}}% +} +\newdimen\psunit \psunit 1cm +\newdimen\psxunit \psxunit 1cm +\newdimen\psyunit \psyunit 1cm +\let\psrunit\psunit +\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces} +\def\pssetlength#1#2{% + \let\@psunit\psunit + \afterassignment\pstunit@off + #1 #2\@psunit% +} +\def\psaddtolength#1#2{% + \let\@psunit\psunit + \afterassignment\pstunit@off + \advance#1 #2\@psunit% +} +\def\pssetxlength#1#2{% + \let\@psunit\psxunit + \afterassignment\pstunit@off + #1 #2\@psunit% +} +\def\pssetylength#1#2{% + \let\@psunit\psyunit + \afterassignment\pstunit@off + #1 #2\@psunit% +} +\def\psset@unit#1{% + \pssetlength\psunit{#1}% + \psxunit=\psunit + \psyunit=\psunit% +} +\def\psset@runit#1{\pssetlength\psrunit{#1}} +\def\psset@xunit#1{\pssetxlength\psxunit{#1}} +\def\psset@yunit#1{\pssetylength\psyunit{#1}} +% v 1.05 begin +\def\psset@PstDebug#1{\pst@getint{#1}{\Pst@Debug}}% hv 2004-06-22 +\psset{PstDebug=0} +% end +\def\pst@getlength#1#2{% + \pssetlength\pst@dimg{#1}% + \edef#2{\pst@number\pst@dimg}% +} +\def\pst@@getlength#1#2{% + \pssetlength\pst@dimg{#1}% + \edef#2{\number\pst@dimg sp}% +} +\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor} +\def\pst@coor{0 0 } +\def\pst@getcoors#1#2{% + \def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}% + \def\pst@coors{}% + \pst@@getcoors% +} +\def\pst@@getcoors(#1){% + \pst@@getcoor{#1}% + \edef\pst@coors{\pst@coor\pst@coors}% + \@ifnextchar({\pst@@getcoors}{\pst@aftercoors}% +} +\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle} +\def\pst@angle{0 } +\def\cartesian@coor#1,#2,#3\@nil{% + \pssetxlength\pst@dimg{#1}% + \pssetylength\pst@dimh{#2}% + \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}% +} +\def\NormalCoor{% + \def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}% + \def\pst@@getangle##1{% + \pst@checknum{##1}\pst@angle + \edef\pst@angle{\pst@angle \pst@angleunit}% + }% + \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}% +} +\NormalCoor +\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}} +\def\@degrees[#1]{% +\pst@checknum{#1}\pst@tempg +\edef\pst@angleunit{360 \pst@tempg div mul }% +\ignorespaces} +\def\radians{\def\pst@angleunit{57.2956 mul }} +\def\pst@angleunit{} +\def\SpecialCoor{% + \def\pst@@getcoor##1{% + \begingroup + \pst@activecoor + \xdef\pst@tempg{##1}% + \endgroup + \expandafter\special@coor\pst@tempg||\@nil% + }% + \def\pst@@getangle##1{% + \begingroup + \pst@activecoor + \xdef\pst@tempg{##1}% + \endgroup + \expandafter\special@angle\pst@tempg\@empty)\@nil% + }% + \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}% +} +\begingroup +\catcode`\|=13 +\catcode`\;=13 +\catcode`\!=13 +\gdef\pst@activecoor{% + \def|{\string|}% + \def;{\string;}% + \def!{\string!}% +} +\endgroup +\def\special@coor#1|#2|#3\@nil{% + \ifx#3|\relax + \mixed@coor{#1}{#2}% + \else + \special@@coor#1;;\@nil + \fi% +} +\def\special@@coor#1{% + \ifcat#1a\relax + \def\next{\node@coor#1}% + \else + \ifx#1[\relax + \def\next{\Node@coor[}% + \else + \ifx#1!\relax + \def\next{\raw@coor}% + \else + \def\next{\special@@@coor#1}% + \fi + \fi + \fi + \next% +} +\def\special@@@coor#1;#2;#3\@nil{% + \ifx#3;\relax + \polar@coor{#1}{#2}% + \else + \cartesian@coor#1,\relax,\@nil + \fi% +} +\def\mixed@coor#1#2{% + \begingroup +% DG/SR modification begin - Oct. 27, 1997 - Patch 6 +%\specialcoor@ii#1;;\@nil +%\let\pst@tempa\pst@coor +%\specialcoor@ii#2;;\@nil + \special@@coor#1;;\@nil + \let\pst@tempa\pst@coor + \special@@coor#2;;\@nil +% DG/SR modification end + \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }% + \endgroup + \let\pst@coor\pst@tempg% +} +\def\polar@coor#1#2{% + \pssetlength\pst@dimg{#1}% + \pst@@getangle{#2}% + \edef\pst@coor{\pst@number\pst@dimg \pst@angle \tx@PtoC}% +} +\def\raw@coor#1;#2\@nil{% + \edef\pst@coor{% + #1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }% +} +\def\node@coor#1\@nil{% + \@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps + \def\pst@coor{0 0 }% +} +\def\Node@coor{\node@coor} +\def\special@angle#1#2)#3\@nil{% +\ifx!#1\relax +\edef\pst@angle{#2 \pst@angleunit}% +\else +\ifx(#1\relax +\pst@@getcoor{#2}% +\edef\pst@angle{\pst@coor exch \tx@Atan}% +\else +\pst@checknum{#1#2}\pst@angle +\edef\pst@angle{\pst@angle \pst@angleunit}% +\fi +\fi} +\def\Cartesian{% + \def\cartesian@coor##1,##2,##3\@nil{% + \pssetxlength\pst@dimg{##1}% + \pssetylength\pst@dimh{##2}% + \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}% + }% + \@ifnextchar({\Cartesian@}{}% +} +\def\Cartesian@(#1,#2){% + \pssetxlength\psxunit{#1}% + \pssetylength\psyunit{#2}% + \ignorespaces% +} +\def\Polar{% + \def\psput@cartesian{\psput@special}% + \def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}% +}% +\def\psset@origin#1{% + \pst@@getcoor{#1}% +% ----------- 1.10 beg hv ------------------- +% \edef\psk@origin{\pst@coor \tx@NET }} + \edef\psk@origin{\pst@coor T }} +% ----------- 1.10 end hv ------------------- +\def\psk@origin{} +% +\newif\ifswapaxes +\def\psset@swapaxes#1{% + \@nameuse{@pst#1}% + \if@pst\def\psk@swapaxes{-90 rotate -1 1 scale }% + \else\def\psk@swapaxes{}% + \fi% +} +\psset@swapaxes{false} +\newif\ifshowpoints +\def\psset@showpoints#1{\@nameuse{showpoints#1}} +\psset@showpoints{false} +\let\pst@setrepeatarrowsflag\relax +\def\psset@border#1{% +\pst@getlength{#1}\psk@border +\pst@setrepeatarrowsflag} +\psset@border{0pt} +\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor} +\psset@bordercolor{white} +\newif\ifpsdoubleline +\def\psset@doubleline#1{% + \@nameuse{psdoubleline#1}% + \pst@setrepeatarrowsflag} +\psset@doubleline{false} +\def\psset@doublesep#1{\def\psdoublesep{#1}} +\psset@doublesep{1.25\pslinewidth} +\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor} +\psset@doublecolor{white} +\newif\ifpsshadow +\def\psset@shadow#1{% + \@nameuse{psshadow#1}% + \pst@setrepeatarrowsflag} +\psset@shadow{false} +\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize} +\psset@shadowsize{3pt} +\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle} +\psset@shadowangle{-45} +\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor} +\psset@shadowcolor{darkgray} +\def\pst@repeatarrowsflag{\z@} +\def\pst@setrepeatarrowsflag{% + \edef\pst@repeatarrowsflag{% + \ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else + \ifpsshadow 1\else \z@\fi\fi\fi}} +\def\psls@none{} +\newdimen\pslinewidth +\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}} +\psset@linewidth{.8pt} +\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor} +\psset@linecolor{black} +\def\psls@solid{0 setlinecap stroke } +\def\pst@missing{% + \z@ + \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa} +% +%%------------------- begin patch 15 HV 2004-05-15 ------------- +%\def\psset@dash#1{% +% \pst@expandafter\psset@@dash{#1} {\pst@missing} {\pst@missing} {}\@nil +% \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh}% +%} +%\def\psset@@dash#1 #2 #3\@nil{% +%\pssetlength\pst@dimg{#1}% +%\pssetlength\pst@dimh{#2}} +%\psset@dash{5pt 3pt} +\def\pst@empty{\z@} +\def\psset@dash#1{% black white [ black white ] + \pst@expandafter\psset@@dash{#1} {\pst@empty} {\pst@empty} % + {\pst@missing} {\pst@missing} {}\@nil + \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh + \pst@number\pst@dimc \pst@number\pst@dimd}% +} +\def\psset@@dash#1 #2 #3 #4 #5\@nil{% + \pssetlength\pst@dimg{#1}% + \pssetlength\pst@dimh{#2}% + \pssetlength\pst@dimc{#3}% + \pssetlength\pst@dimd{#4}% +} +\psset@dash{5pt 3pt 0pt 0pt}% black white black white +%%------------------- end patch 15 HV 2004-05-15 ------------- +\newif\ifpsdashadjust +\def\psset@dashadjust#1{\@nameuse{psdashadjust#1}} +\psset@dashadjust{true} +\def\tx@DashLine{DashLine } +\def\psls@dashed{% + \ifpsdashadjust +% \psk@dash \pst@linetype\space \tx@DashLine + \psk@dash \@ifundefined\pst@linetype{2}{\pst@linetype}\space \tx@DashLine + \else + [ \psk@dash ] 0 setdash stroke + \fi} +\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep} +\psset@dotsep{3pt} +\def\tx@DotLine{DotLine } +\def\psls@dotted{% + \ifpsdashadjust + \psk@dotsep \pst@linetype\space \tx@DotLine + \else + [ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke + \fi% +} +\def\psset@linestyle#1{% + \@ifundefined{psls@#1}% + {\@pstrickserr{Line style `#1' not defined}\@eha}% + {\edef\pslinestyle{#1}}% +} +\psset@linestyle{solid} +\def\psfs@none{} +\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor} +\psset@fillcolor{white} +\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor fill}} +%-------------- hv begin patch 15 (2004-05-10)---------------%% +\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor eofill}} +%-------------- hv end patch 15 (2004-05-10)---------------%% +\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth} +\psset@hatchwidth{.8pt} +\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep} +\psset@hatchsep{4pt} +\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor} +\psset@hatchcolor{black} +\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle} +\psset@hatchangle{45} +% ------------ hv 1.11 ------------ +\def\psset@hatchsepinc#1{\pst@getlength{#1}\psk@hatchsepinc} +\def\psset@hatchwidthinc#1{\pst@getlength{#1}\psk@hatchwidthinc} +\psset@hatchwidthinc{0pt} +\psset@hatchsepinc{0pt} +% +\def\pst@linefill{% + \psk@hatchangle rotate + \psk@hatchwidth SLW + \pst@usecolor\pshatchcolor + \psk@hatchsep + \psk@hatchsepinc + \psk@hatchwidthinc + \tx@LineFill } +% ------------ hv 1.11 ------------ +% +\def\psfs@vlines{\pst@fill\pst@linefill} +\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines} +\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill}} +\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines} +\def\psfs@crosshatch{\psfs@vlines \psfs@hlines} +\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines} +\def\tx@LineFill{LineFill } +\def\psset@fillstyle#1{% + \edef\pst@tempg{#1}\def\pst@temph{none}% + \ifx\pst@tempg\pst@temph + \let\psk@fillstyle\relax + \else + \@ifundefined{psfs@#1}% + {\@pstrickserr{Undefined fill style: `#1'}\@eha}% + {\edef\psk@fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}% + \fi% +} +\def\psset@addfillstyle#1{% + \@ifundefined{psfs@#1}% + {\@pstrickserr{Undefined fill style: `#1'}\@eha}% + {\edef\psk@fillstyle{% + \expandafter\noexpand\psk@fillstyle + \expandafter\noexpand\csname psfs@#1\endcsname}% + }% +} +\psset@fillstyle{none} +\def\psset@arrows#1{% + \begingroup + \pst@activearrows + \xdef\pst@tempg{#1}% + \endgroup + \expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil + \if@pst\else + \@pstrickserr{Bad arrows specification: #1}\@ehpa + \fi% +} +\def\psset@@arrows#1-#2\@empty#3\@nil{% + \@psttrue + \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}% + \expandafter\next\pst@arrowtable,#1-#1,\@nil + \@ifundefined{psas@\pst@tempg}% + {\@pstfalse\def\psk@arrowA{}}% + {\let\psk@arrowA\pst@tempg}% + \@ifundefined{psas@#2}% + {\@pstfalse\def\psk@arrowB{}}% + {\def\psk@arrowB{#2}}% +} +\def\psk@arrowA{} +\def\psk@arrowB{} +%\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-]} +\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|} % hv --1.12 +\begingroup + \catcode`\<=13 + \catcode`\>=13 + \catcode`\|=13 + \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}} +\endgroup +\def\tx@BeginArrow{BeginArrow } +\def\tx@EndArrow{EndArrow } +% Redefininition of \psset@arrowscale to store value of X scale factor hv --1.12 +%\def\psset@arrowscale#1{\pst@getscale{#1}\psk@arrowscale} +\def\psset@arrowscale#1{% hv --1.12 + \pst@@arrowscale@i#1 \@nil% hv -- 1.12 + \pst@getscale{\pst@arrowscale}\psk@arrowscale}% hv --1.12 +\def\pst@@arrowscale@i#1 #2\@nil{\edef\pst@arrowscale{#1}}% hv --1.12 +\psset@arrowscale{1} +% +\def\psset@arrowsize#1{% + \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil + \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}% +} +\psset@arrowsize{1.5pt 2} +\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength} +\psset@arrowlength{1.4} +\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}% +\psset@arrowinset{.4} +\def\tx@Arrow{Arrow } +% new definitions of the missing arrows ---- hv 1.1.2 +\@namedef{psas@<|}{% + \psk@tbarsize\space \tx@Tbar + 0 CLW 2 div T + newpath + true \psk@arrowinset\space \psk@arrowlength\space \psk@arrowsize\space \tx@Arrow% +} +% ]-[ arrow +\def\tx@BracketOut{BracketOut } +\@namedef{psas@[}{% + /BracketOut {% + CLW mul add dup CLW sub 2 div +%/x ED mul CLW add + /x ED mul neg + /y ED + /z CLW 2 div def + x neg y moveto + x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def + \psk@bracketlength\space \psk@tbarsize\space \tx@BracketOut +} +% )-( arrow +\def\tx@RoundBracketOut{RoundBracketOut } +\@namedef{psas@(}{% + /RoundBracketOut {% + CLW mul add dup 2 div +%/x ED mul + /x ED mul neg + /y ED + /mtrx CM def + 0 CLW + 2 div T x y mul 0 ne { x y scale } if + 1 1 moveto + .85 .5 .35 0 0 0 curveto + -.35 0 -.85 .5 -1 1 curveto + mtrx setmatrix stroke 0 CLW moveto } def + \psk@rbracketlength\space \psk@tbarsize\space \tx@RoundBracketOut +} +% end of new definitions of the missing arrows ---- hv 1.1.2 +\@namedef{psas@>}{% + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow +} +\@namedef{psas@>>}{% + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + 0 h T + gsave + newpath + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + CP + grestore + CP newpath moveto + 2 copy + L + stroke + moveto +} +\@namedef{psas@<}{true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow} +\@namedef{psas@<<}{% + true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow + CP newpath moveto 0 a neg L stroke 0 h neg T + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow +} +\def\psset@tbarsize#1{% + \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil + \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}% +} +\psset@tbarsize{2pt 5} +\def\tx@Tbar{Tbar } +\@namedef{psas@|}{\psk@tbarsize \tx@Tbar} +\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar} +\@namedef{psas@>|}{% + \psk@tbarsize \tx@Tbar + 0 CLW 2 div T + newpath + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow +} +\@namedef{psas@>|*}{% + 0 CLW -2 div T + \psk@tbarsize \tx@Tbar + 0 CLW 2 div T + newpath + false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow +} +\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|} +\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength} +\psset@bracketlength{.15} +\def\tx@Bracket{Bracket } +\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket} +\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength} +\psset@rbracketlength{.15} +\def\tx@RoundBracket{RoundBracket } +\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket} +\def\psas@c{1 \psas@@c} +\def\psas@cc{0 CLW 2 div T 1 \psas@@c} +\def\psas@C{2 \psas@@c} +\def\psas@@c{% + setlinecap + 0 0 moveto +%%-------------------- v.1.04 begin HV 2004-05-18 ---------------- +% 0 CLW 2 div L + 0 0.1 L % changed value from 0.5 to 0.1 +%%-------------------- v. 1.04 end HV 2004-05-18 ---------------- + stroke + 0 0 moveto +} +\def\psas@{} +\psset@arrows{-} +\def\tx@SD{SD } +\def\tx@EndDot{EndDot } +\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot} +\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot} +\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot} +\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot} +\def\pst@par{} +\def\addto@par#1{% +\ifx\pst@par\@empty +\def\pst@par{#1}% +\else +\expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}% +\fi} +\def\addbefore@par#1{% +\ifx\pst@par\@empty +\def\pst@par{#1}% +\else +\toks@{#1}% +\pst@toks\expandafter{\pst@par}% +\edef\pst@par{\the\toks@,\the\pst@toks}% +\fi} +\def\use@par{% + \ifx\pst@par\@empty\else + \expandafter\@psset\pst@par,\@nil + \def\pst@par{}% + \fi% +} +\def\pst@object#1{% + \pst@ifstar{% + \@ifnextchar[{\pst@@object{#1}}{\def\pst@par{}\@nameuse{#1@i}}}% +} +\def\pst@@object#1[#2]{% + \def\pst@par{#2}% + \@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}} +\def\newpsobject#1#2#3{% +\@ifundefined{#2@i}% +{\@pstrickserr{Graphics object `#2' not defined}\@eha}{% +\@namedef{#1}{\pst@object{#1}}% +\@namedef{#1@i}{\addbefore@par{#3}\@nameuse{#2@i}}}% +\ignorespaces} +\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}} +% ------------------------- hv 1.10 beg ------------------------ +%\def\pst@@getarrows#1#2{\addto@par{arrows=#2}#1} +\def\pst@@getarrows#1#2{% + \def\pst@tempa{#2}% prevent empty arrow arguments, to allow \psline{}(...)(...) + \ifx\pst@tempa\@empty\addto@par{arrows=-}\else\addto@par{arrows=#2}\fi#1} +% ------------------------- hv 1.10 end ------------------------ +% +\def\begin@ClosedObj{% + \leavevmode + \pst@killglue + \begingroup + \use@par + \solid@star + \ifpsdoubleline \pst@setdoublesep \fi + \init@pscode% +} +\def\end@ClosedObj{% + \ifpsshadow \pst@closedshadow \fi + \ifdim\psk@border\p@>\z@ \pst@addborder \fi + \psk@fillstyle + \pst@stroke + \ifpsdoubleline \pst@doublestroke \fi + \ifshowpoints +% DG modification begin - Mar. 4, 1995 +%\addto@pscode{Points aload length 2 div cvi /N ED \psdots@iii}% + \pst@OpenShowPoints +% DG modification end + \fi + \use@pscode + \endgroup + \ignorespaces% +} +\def\begin@OpenObj{% + \begin@ClosedObj + \let\pst@linetype\pst@arrowtype + \pst@addarrowdef% +} +\def\begin@AltOpenObj{% + \begin@ClosedObj + \def\pst@repeatarrowsflag{\z@}% + \def\pst@linetype{0}} +\def\end@OpenObj{% + \ifpsshadow \pst@openshadow \fi + \ifdim\psk@border\p@>\z@ \pst@addborder \fi + \psk@fillstyle + \pst@stroke + \ifpsdoubleline \pst@doublestroke \fi + \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi + \ifshowpoints \pst@OpenShowPoints \fi + \use@pscode + \endgroup + \ignorespaces} +\def\begin@SpecialObj{% +\leavevmode +\pst@killglue +\begingroup +\use@par +\init@pscode} +\def\end@SpecialObj{% +\use@pscode +\endgroup +\ignorespaces} +\def\pst@code{}% +\def\init@pscode{% + \addto@pscode{% + \pst@number\pslinewidth SLW + \pst@usecolor\pslinecolor}% +} +\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}} +\def\use@pscode{% + \pstverb{% + \pst@dict + \tx@STP + \pst@newpath + \psk@origin + \psk@swapaxes + \pst@code + end + }% + \gdef\pst@code{}% +} +\def\pst@newpath{newpath } +\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi} +\def\KillGlue{\let\pst@killglue\pst@@killglue} +\def\DontKillGlue{\let\pst@killglue\relax} +\DontKillGlue +\def\solid@star{% + \if@star + \pslinewidth=\z@ + \psdoublelinefalse + \def\pslinestyle{none}% + \def\psk@fillstyle{\psfs@solid}% + \let\psfillcolor\pslinecolor + \fi} +\def\pst@setdoublesep{% +\pst@getlength\psdoublesep\psdoublesep +\pslinewidth=2\pslinewidth +\advance\pslinewidth\psdoublesep\p@ +\let\pst@setdoublesep\relax} +\def\tx@Shadow{Shadow } +\def\pst@closedshadow{% + \addto@pscode{% + gsave + \psk@shadowsize \psk@shadowangle \tx@PtoC + \tx@Shadow + \pst@usecolor\psshadowcolor + gsave fill grestore + stroke + grestore + gsave + \pst@usecolor\psfillcolor + gsave fill grestore + stroke + grestore}} +\def\pst@openshadow{% + \addto@pscode{% + gsave + \psk@shadowsize \psk@shadowangle \tx@PtoC + \tx@Shadow + \pst@usecolor\psshadowcolor + \ifx\psk@fillstyle\relax\else + gsave fill grestore + \fi + stroke}% + \pst@repeatarrows% + \addto@pscode{grestore}% + \ifx\psk@fillstyle\relax\else + \addto@pscode{% + gsave + \pst@usecolor\psfillcolor + gsave fill grestore + stroke + grestore}% + \fi} +\def\pst@addborder{% + \addto@pscode{% + gsave + \psk@border 2 mul + CLW add SLW + \pst@usecolor\psbordercolor + stroke + grestore}} +\def\pst@stroke{% + \ifx\pslinestyle\@none\else + \addto@pscode{% + gsave + \pst@number\pslinewidth SLW + \pst@usecolor\pslinecolor + \@nameuse{psls@\pslinestyle} + grestore}% + \fi} +\def\pst@fill#1{\addto@pscode{gsave #1 grestore}}% +\def\pst@doublestroke{% + \addto@pscode{% + gsave + \psdoublesep SLW + \pst@usecolor\psdoublecolor + stroke + grestore + }} +\def\pst@arrowtype{% +\ifx\psk@arrowB\@empty 0 \else -2 \fi +\ifx\psk@arrowA\@empty 0 \else -1 \fi +add} +\def\pst@addarrowdef{% +\addto@pscode{% +/ArrowA { +\ifx\psk@arrowA\@empty + \pst@oplineto +\else + \pst@arrowdef{A} +moveto +\fi +} def +/ArrowB { +\ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi +} def}} +\def\pst@arrowdef#1{% +\ifnum\pst@repeatarrowsflag>\z@ +/Arrow#1c [ 6 2 roll ] cvx def Arrow#1c +\fi +\tx@BeginArrow +\psk@arrowscale +\@nameuse{psas@\@nameuse{psk@arrow#1}} +\tx@EndArrow} +\def\pst@repeatarrows{% +\addto@pscode{% +gsave +\ifx\psk@arrowA\@empty\else +ArrowAc ArrowA pop pop +\fi +\ifx\psk@arrowB\@empty\else +ArrowBc ArrowB pop pop pop pop +\fi +grestore}} +\def\pst@OpenShowPoints{% + \addto@pscode{% + gsave + \psk@dotsize + \@nameuse{psds@\psk@dotstyle} + newpath + Points aload length 2 div 2 sub cvi /N ED + N 0 ge + { \ifx\psk@arrowA\@empty Dot \else pop pop \fi + N { Dot } repeat + \ifx\psk@arrowB\@empty Dot \else pop pop \fi } + { N 2 mul { pop } repeat } ifelse + grestore +}} +\def\pscustom{\pst@object{pscustom}} +\long\def\pscustom@i#1{% + \begin@SpecialObj + \solid@star + \let\pst@ifcustom\iftrue + \let\begin@ClosedObj\begin@CustomObj + \let\end@ClosedObj\endgroup + \def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}% + \let\end@OpenObj\endgroup + \let\begin@AltOpenObj\begin@CustomObj + \def\begin@SpecialObj{% + \begingroup + \pst@misplaced{special graphics object}% + \def\addto@pscode####1{} + \let\end@SpecialObj\endgroup}% + \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}% + \def\psclip##1{\pst@misplaced\psclip}% + \def\pst@repeatarrowsflag{\z@}% + \let\pst@setrepeatarrowsflag\relax + \showpointsfalse + \let\showpointstrue\relax + \def\pst@linetype{\pslinetype}% + \let\psset@liftpen\psset@@liftpen + \psset@liftpen{\z@}% + \def\pst@cp{/currentpoint load stopped pop }% + \def\pst@oplineto{/lineto load stopped { moveto } if }% + \def\pst@optcp##1##2{% + \ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}% + \let\caddto@pscode\addto@pscode + \def\cuse@par##1{{\use@par##1}}% + \the\pst@customdefs + \setbox\pst@hbox=\hbox{#1}% + \psk@fillstyle + \pst@stroke + \end@SpecialObj} +\def\begin@CustomObj{% + \begingroup + \use@par + \addto@pscode{% + \pst@number\pslinewidth SLW + \pst@usecolor\pslinecolor + }% +} +\def\pst@oplineto{moveto } +\def\pst@cp{} +\def\pst@optcp#1#2{} +\def\psset@liftpen#1{} +\def\psset@@liftpen#1{% + \ifcase#1\relax + \def\psk@liftpen{\z@}% + \def\pst@cp{/currentpoint load stopped pop }% + \def\pst@oplineto{/lineto load stopped { moveto } if }% + \or + \def\psk@liftpen{1}% + \def\pst@cp{}% + \def\pst@oplineto{/lineto load stopped { moveto } if }% + \or + \def\psk@liftpen{2}% + \def\pst@cp{}% + \def\pst@oplineto{moveto }% + \fi% +} +\psset@liftpen{0} +\def\psk@liftpen{-1} +% +\def\psset@linetype#1{% + \pst@getint{#1}\pslinetype + \ifnum\pst@dimg<-3 + \@pstrickserr{linetype must be greater than -3}\@ehpa +%----------------- hv begin 2004-05-07 ------------- patch 15 +% \def\pslinetype{0}% + \def\pslinetype{2}% + \fi% +} +%\psset@linetype{0} +\psset@linetype{2}% otherwise there is a problem when using e.g. +% \psaxes[axesstyle=frame,linestyle=dashed]{->}(3,-2) +%----------------- hv end 2004-05-07 ------------- patch 15 +% +\def\caddto@pscode#1{% + \@pstrickserr{Command can only be used in \string\pscustom}\@ehpa% +} +\let\cuse@par\caddto@pscode +% +\def\tx@MSave{% + /msavematrx + [ tx@Dict /msavematrx known % does msavematrix exists? + { msavematrx aload pop } if + CM % matrix currentmatrix + ] + def +%----------------- hv begin 2004-05-07 ------------- patch 15 + msavematrx +%----------------- hv end 2004-05-07 ------------- patch 15 +} +\def\tx@MRestore{% a typo in pstricks with msavematrx + tx@Dict /msavematrx known { length 0 gt } { false } ifelse + { msavematrx aload pop setmatrix } if +} +% +\newtoks\pst@customdefs +\pst@customdefs{% + \def\newpath{\addto@pscode{newpath}}% + \def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}% + \def\closepath{\addto@pscode{closepath}}% + \def\gsave{\begingroup\addto@pscode{gsave}}% + \def\grestore{\endgroup\addto@pscode{grestore}}% +% DG/SR modification begin - May 12, 1997 - Patch 2 +% \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}% + \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor translate}}% +% DG/SR modification end + \def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}% + \def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}% + \def\msave{\addto@pscode{\tx@MSave}}% + \def\mrestore{\addto@pscode{\tx@MRestore}}% + \def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}% + \def\stroke{\pst@object{stroke}}% + \def\fill{\pst@object{fill}}% + \def\openshadow{\pst@object{openshadow}}% + \def\closedshadow{\pst@object{closedshadow}}% +% DG/SR modification begin - Jan. 7, 1998 - Patch 8 +% \def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor tx@Shadow}}% + \def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor \tx@Shadow}}% +% DG/SR modification end + \def\lineto{\pst@onecoor{lineto}}% + \def\rlineto{\pst@onecoor{rlineto}}% + \def\curveto{\pst@threecoor{curveto}}% + \def\rcurveto{\pst@threecoor{rcurveto}}% + \def\code#1{\addto@pscode{#1}}% + \def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}% + \def\rcoor{\pst@getcoors{}{}}% + \def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}% + \def\setcolor#1{% +% ----------------hv begin 2004-05-07-------------------- patch 15 +% \@ifundefined{color@#1}{}{\addto@pscode{\use@color{#1}}}}% + \@ifundefined{color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}% +% ----------------hv end 2004-05-07-------------------- + \def\arrows#1{{\psset@arrows{#1}\pst@addarrowdef}}% + \let\file\pst@rawfile +} % END \pst@customdefs +\def\closedshadow@i{\cuse@par\pst@closedshadow} +\def\openshadow@i{\cuse@par\pst@openshadow} +\def\stroke@i{\cuse@par\pst@stroke}% +\def\fill@i{\cuse@par\psk@fillstyle}% +\def\pst@onecoor#1(#2){% +\pst@@getcoor{#2}% +\addto@pscode{\pst@coor #1}} +\def\pst@threecoor#1(#2)#3(#4)#5(#6){% +\begingroup +\pst@getcoor{#2}\pst@tempa +\pst@getcoor{#4}\pst@tempb +% DG/SR modification begin - Aug. 4, 1999 - Patch 11 +%\pst@getcoor{#6}\pst@tembc +\pst@getcoor{#6}\pst@tempc +% DG/SR modification end +\addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}% +\endgroup} +\def\pst@rawfile#1{% +\begingroup +\def\do##1{\catcode`##1=12\relax}" +\dospecials +\catcode`\%=14 +\pst@@rawfile{#1}% +\endgroup} +\def\pst@@rawfile#1{% +\immediate\openin1 #1 +\ifeof1 +\@pstrickserr{File `#1' not found}\@ehpa +\else +\immediate\read1 to \pst@tempg +\loop +\ifeof1 \@pstfalse\else\@psttrue\fi +\if@pst +\addto@pscode\pst@tempg +\immediate\read1 to \pst@tempg +\repeat +\fi +\immediate\closein1\relax} +\def\tx@NArray{NArray } +\def\tx@NArray{NArray } +\def\tx@Line{Line } +\def\tx@Arcto{Arcto } +\def\tx@CheckClosed{CheckClosed } +\def\tx@Polygon{Polygon } +\def\psset@gangle#1{\pst@getangle{#1}\psk@gangle} +\psset@gangle{0} +\def\tx@Diamond{Diamond } +\def\psdiamond{\pst@object{psdiamond}} +\def\psdiamond@i(#1){% +\@ifnextchar({\psdiamond@ii(#1)}{\psdiamond@ii(0,0)(#1)}} +\def\psdiamond@ii(#1)(#2){% + \begin@ClosedObj + \pst@getcoor{#1}\pst@tempa + \pst@getcoor{#2}\pst@tempb + \addto@pscode{% + \psline@iii + pop + \psk@dimen + \pst@tempb + \psk@gangle + \pst@tempa + \tx@Diamond + }% + \def\pst@linetype{4}% + \end@ClosedObj} +% +\def\tx@Triangle{Triangle } +\def\pstriangle{\pst@object{pstriangle}} +\def\pstriangle@i(#1){% + \@ifnextchar({\pstriangle@ii(#1)}{\pstriangle@ii(0,0)(#1)}} +\def\pstriangle@ii(#1)(#2){% + \begin@ClosedObj + \pst@getcoor{#1}\pst@tempa% the center of the baseline + \pst@getcoor{#2}\pst@tempb% the height of the triangle + \addto@pscode{% + \psline@iii + pop % no showpoints option + \psk@dimen % outer/inner/middle + \pst@tempb + \psk@gangle % rotating angle + \pst@tempa + \tx@Triangle + }% + \def\pst@linetype{2}% + \end@ClosedObj} +% +\def\tx@CCA{CCA } +\def\tx@CCA{CCA } +\def\tx@CC{CC } +\def\tx@IC{IC } +\def\tx@BOC{BOC } +\def\tx@NC{NC } +\def\tx@EOC{EOC } +\def\tx@BAC{BAC } +\def\tx@NAC{NAC } +\def\tx@EAC{EAC } +\def\tx@OpenCurve{OpenCurve } +\def\tx@AltCurve{AltCurve } +\def\tx@ClosedCurve{ClosedCurve } +\def\psset@curvature#1{% +\edef\pst@tempg{#1 }% +\expandafter\psset@@curvature\pst@tempg * * * \@nil} +\def\psset@@curvature#1 #2 #3 #4\@nil{% +\pst@checknum{#1}\pst@tempg +\pst@checknum{#2}\pst@temph +\pst@checknum{#3}\pst@tempi +\edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}} +\psset@curvature{1 .1 0} +\def\pscurve{\pst@object{pscurve}} +\def\pscurve@i{% + \pst@getarrows{% + \begin@OpenObj + \pst@getcoors[\pscurve@ii% + }% +} +\def\pscurve@ii{% + \addto@pscode{% + \pst@cp + \psk@curvature\space /c ED /b ED /a ED + \ifshowpoints true \else false \fi + \tx@OpenCurve% + }% + \end@OpenObj% +} +\def\psecurve{\pst@object{psecurve}} +\def\psecurve@i{% +\pst@getarrows{% +\begin@OpenObj +\pst@getcoors[\psecurve@ii}} +\def\psecurve@ii{% +\addto@pscode{% +\psk@curvature\space /c ED /b ED /a ED +\ifshowpoints true \else false \fi +\tx@AltCurve}% +\end@OpenObj} +\def\psccurve{\pst@object{psccurve}} +\def\psccurve@i{% +\begin@ClosedObj +\pst@getcoors[\psccurve@ii} +\def\psccurve@ii{% +\addto@pscode{% +\psk@curvature\space /c ED /b ED /a ED +\ifshowpoints true \else false \fi +\tx@ClosedCurve}% +\def\pst@linetype{1}% +\end@ClosedObj} +\def\psset@dotsize#1{% +\pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil +\edef\psk@@dotsize{\pst@number\pst@dimg}% +\let\psk@@@dotsize\pst@tempg +\edef\psk@dotsize{% +/DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }} +\psset@dotsize{2pt 2} +\def\psset@dotscale#1{% +\pst@getscale{#1}\psk@dotscale +\ifx\psk@dotscale\@empty +\def\psk@xdotscale{1 }% +\def\psk@ydotscale{1 }% +\else +\let\psk@xdotscale\pst@tempg +\let\psk@ydotscale\pst@temph +\fi} +% DG/SR modification begin - Oct. 17, 1997 - Patch 5 +%\psset@dotscale{1} +% DG/SR modification end +\def\pst@Getangle#1#2{% +\pst@getangle{#1}\pst@tempg +\def\pst@temph{0. }% +\ifx\pst@tempg\pst@temph +\def#2{}% +\else +\edef#2{\pst@tempg\space rotate }% +\fi} +\def\psset@dotangle#1{% +\pst@getangle{#1}\psk@@dotangle +\ifdim\psk@@dotangle\p@=\z@ +\let\psk@dotangle\@empty +\else +% DG/SR modification begin - Aug. 8, 1997 - Patch 4 +%\edef\psk@dotangle{\psk@@dotangle rotate } +\edef\psk@dotangle{\psk@@dotangle rotate }% +% DG/SR modification end +\fi} +\psset@dotangle{0} +\def\pst@getdotsize{% +\pst@dimg=\psk@@@dotsize\pslinewidth +\advance\pst@dimg\psk@@dotsize\p@ +\pst@dimh=\psk@ydotscale\pst@dimg +\pst@dimg=\psk@xdotscale\pst@dimg +\divide\pst@dimh 2 +\divide\pst@dimg 2\relax} +% DG/SR modification begin - Oct. 17, 1997 - Patch 5 +\psset@dotscale{1} +% DG/SR modification end +\def\psdot{\pst@object{psdot}} +\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}} +\def\psdot@ii(#1){% + \begin@SpecialObj + \pst@@getcoor{#1}% + \addto@pscode{% + \psk@dotsize + \@nameuse{psds@\psk@dotstyle}% + \pst@coor Dot}% + \end@SpecialObj} +\def\psdots{\pst@object{psdots}} +\def\psdots@i{% +\begin@SpecialObj +\pst@getcoors[\psdots@ii} +\def\psdots@ii{% +\addto@pscode{false \tx@NArray \psdots@iii}% +\end@SpecialObj} +\def\psdots@iii{% +\psk@dotsize +\@nameuse{psds@\psk@dotstyle} +newpath +n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat} +% DG: dead code (to suppress until \psset@dotstyle) ? - Aug. 4, 1997 +\def\tx@SQ{SQ } +\def\tx@ST{ST } +\def\tx@SP{SP } +\def\pst@gdot#1{/Dot { gsave T \psk@dotangle \psk@dotscale #1 grestore } def } +\@namedef{psds@*}{\pst@gdot{0 0 DS \tx@SD}} +\@namedef{psds@o}{% +/r2 DS CLW sub def +\pst@gdot{0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD}} +\@namedef{psds@square*}{% +/r1 DS .886 mul def +\pst@gdot{r1 \tx@SQ}} +\@namedef{psds@square}{% +/r1 DS .886 mul def /r2 r1 CLW sub def +\pst@gdot{r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ}} +\@namedef{psds@triangle*}{% +/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def +\pst@gdot{x1 y1 \tx@ST}} +\@namedef{psds@triangle}{% +/y1 DS .778 mul neg def /x1 y1 1.732 mul neg def +/y2 y1 CLW add def /x2 y2 1.732 mul neg def +\pst@gdot{x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST}} +\@namedef{psds@pentagon*}{% +/r1 DS 1.149 mul def +\pst@gdot{r1 \tx@SP}} +\@namedef{psds@pentagon}{% +DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED +\pst@gdot{r1 \tx@SP \pst@usecolor\psfillcolor r2 \tx@SP}} +\@namedef{psds@+}{% +/DS DS 1.253 mul def +\pst@gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}} +\@namedef{psds@|}{% +\psk@tbarsize CLW mul add 2 div /DS ED +\pst@gdot{0 DS moveto 0 DS neg L stroke}} +% DG: end dead code? +\def\psset@dotstyle#1{% +\@ifundefined{psds@#1}% +{\@pstrickserr{Dot style `#1' not defined}\@eha}% +{\edef\psk@dotstyle{#1}}} +\psset@dotstyle{*} +\def\tx@FontDot{FontDot } +\def\newpsfontdot#1[#2]#3#4{% + \@namedef{psds@#1}{% + /#3 \psk@@dotangle [#2] \tx@FontDot +% DG/SR modification begin - Dec. 12, 1999 - Patch 14 +%/Dot { moveto #4 show } bind def }} + /Dot { moveto gsave \psk@dotscale #4 show grestore } bind def + }% +} +% DG/SR modification end +\def\newpsfontdotH#1[#2]#3#4#5{% + \@namedef{psds@#1}{% + /#3 \psk@@dotangle [#2] \tx@FontDot + /Dot { + moveto + \iftrue +% DG/SR modification begin - Dec. 23, 1999 - Patch 14 +%gsave \pst@usecolor\psfillcolor #5 show grestore +%\fi +%#4 show + gsave \psk@dotscale \pst@usecolor\psfillcolor #5 show grestore + \fi + gsave \psk@dotscale #4 show grestore +% DG/SR modification end + } bind def + }% +} +\pstheader{pst-dots.pro} +\newpsfontdot{*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)} +\newpsfontdotH{o}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)} +\newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)} +\newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)} +\newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)} +\newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)} +\newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)} +\newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)} +\newpsfontdot{square*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)} +\newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)} +\newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)} +\newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)} +% DG/SR modification begin - Mar. 18, 1997 and Dec. 16, 1999 - Patch 14 +%\newpsfontdot{diamond*}% +%[1.9 0.0 0.0 1.9 -0.4598 -0.70775]{Symbol}{<E0>} +%\newpsfontdot{diamond}% +%[2.3 0.0 0.0 2.3 -0.8533 -0.5336]{Symbol}{<A8>} +% D.G. modification begin - Jan. 17, 2000 +\newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)} +\newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)} +\newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)} +% DG/SR modification end +\newpsfontdot{oplus}[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{Symbol}{<C5>} +\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{Symbol}{<C4>} +\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{Symbol}{<B4>} +\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{Times-Roman}{<2B>} +\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{Times-Roman}{<2A>} +\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{Times-Bold}{<2B>} +\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{Times-Bold}{<2A>} +\newpsfontdot{|}% +% DG/SR modification begin - Oct. 27, 1997 - Patch 7 +%[1.98413 0.0 0.0 1.98413 -0.258929 -0.712302]{Helvetica}{(|)} +[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{Helvetica}{(|)} +% DG/SR modification end +\newpsfontdot{B|}% +% DG/SR modification begin - Oct. 27, 1997 - Patch 7 +%[1.98413 0.0 0.0 1.98413 -0.277778 -0.78302]{Helvetica-Bold}{(|)} +[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{Helvetica-Bold}{(|)} +% DG/SR modification end +\iffalse +\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{Symbol}{<B7>} +\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{Symbol}{<B0>} +\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{Times-Bold}{<CA>} +\fi +\newdimen\pslinearc +\def\psset@linearc#1{\pssetlength\pslinearc{#1}} +\psset@linearc{0pt} +\def\psline{\pst@object{psline}} +\def\psline@i{% + \pst@getarrows{% + \begin@OpenObj + \pst@getcoors[\psline@ii% + }% +} +\def\psline@ii{% + \addto@pscode{\pst@cp \psline@iii \tx@Line}% + \end@OpenObj% +} +\def\psline@iii{% + \ifdim\pslinearc>\z@ + /r \pst@number\pslinearc def + /Lineto { \tx@Arcto } def + \else + /Lineto /lineto load def + \fi + \ifshowpoints true \else false \fi +} +\def\qline(#1)(#2){% + \def\pst@par{}% + \begin@SpecialObj + \def\pst@linetype{0}% + \pst@getcoor{#1}\pst@tempa + \pst@@getcoor{#2}% + \addto@pscode{% + \pst@tempa moveto \pst@coor L + \@nameuse{psls@\pslinestyle}% + }% + \end@SpecialObj} +\def\pspolygon{\pst@object{pspolygon}} +\def\pspolygon@i{% + \begin@ClosedObj% + \def\pst@cp{}% + \pst@getcoors[\pspolygon@ii% +} +\def\pspolygon@ii{% + \addto@pscode{\psline@iii \tx@Polygon}% + \def\pst@linetype{1}% + \end@ClosedObj% +} +\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc} +\psset@framearc{0} +\def\psset@cornersize#1{% +\pst@expandafter\psset@@cornersize{#1}\@nil} +\def\psset@@cornersize#1#2\@nil{% +\if #1a\relax +\def\psk@cornersize{\pst@number\pslinearc false }% +\else +\def\psk@cornersize{\psk@framearc true }% +\fi} +\psset@cornersize{relative} +\def\tx@Rect{Rect } +\def\tx@OvalFrame{OvalFrame } +\def\tx@Frame{Frame } +% +\def\psset@dimen#1{\pst@expandafter\psset@@dimen{#1}\@nil} +\def\psset@@dimen#1#2\@nil{% + \if #1o\relax% outer + \def\psk@dimen{.5 }% + \else + \if #1m\relax% middle + \def\psk@dimen{0 }% + \else + \if #1i\relax% inner + \def\psk@dimen{-.5 }% + \fi\fi\fi} +\psset@dimen{outer} +% +\def\psframe{\pst@object{psframe}} +\def\psframe@i(#1){% + \@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}} +\def\psframe@ii(#1)(#2){% + \begin@ClosedObj + \pst@getcoor{#1}\pst@tempa + \pst@@getcoor{#2}% + \addto@pscode{\psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame}% + \def\pst@linetype{2}% + \showpointsfalse + \end@ClosedObj% +} +\def\tx@BezierNArray{BezierNArray } +\def\tx@OpenBezier{OpenBezier } +\def\tx@ClosedBezier{ClosedBezier } +\def\tx@BezierShowPoints{BezierShowPoints } +\def\psbezier{\pst@object{psbezier}} +\def\psbezier@i{% + \pst@getarrows{% + \begin@OpenObj + \pst@getcoors[\psbezier@ii% + }% +} +\def\psbezier@ii{% + \addto@pscode{% +% DG/SR modification begin - Apr. 28, 1997 - Patch 1 +% \psbezier doesn't work inside \pscustom +%\pst@cp +% DG/SR modification end + \ifshowpoints true \else false \fi + \tx@OpenBezier + \ifshowpoints \tx@BezierShowPoints \fi}% + \end@OpenObj} +\def\pscbezier{\pst@object{pscbezier}} +\def\pscbezier@i{% + \begin@ClosedObj + \pst@getcoors[\pscbezier@ii} +\def\pscbezier@ii{% + \addto@pscode{% + \ifshowpoints true \else false \fi + \tx@ClosedBezier + \ifshowpoints \tx@BezierShowPoints \fi}% + \chardef\pst@linetype=1 + \end@ClosedObj} +\def\tx@Parab{Parab } +\def\parabola{\pst@object{parabola}} +\def\parabola@i{\pst@getarrows\parabola@ii} +\def\parabola@ii#1(#2)#3(#4){% +\begin@OpenObj +\pst@getcoor{#2}\pst@tempa +\pst@@getcoor{#4}% +\addto@pscode{\pst@tempa \pst@coor \tx@Parab}% +\end@OpenObj} +% +\def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth} +\psset@gridwidth{.8pt} +\def\psset@griddots#1{% + \pst@cntg=#1\relax + \edef\psk@griddots{\the\pst@cntg}} +\psset@griddots{0} +\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor} +\psset@gridcolor{black} +\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth} +\psset@subgridwidth{.4pt} +\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor} +\psset@subgridcolor{gray} +\def\psset@subgriddots#1{% + \pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}} +\psset@subgriddots{0} +\def\psset@subgriddiv#1{% + \pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}} +\psset@subgriddiv{5} +\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels} +\psset@gridlabels{10pt} +\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor} +\psset@gridlabelcolor{black} +\def\tx@Grid{Grid } +\def\psgrid{\pst@object{psgrid}} +\def\psgrid@i{\@ifnextchar(% + {\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}} +\def\psgrid@ii(#1){\@ifnextchar(% + {\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}} +\def\psgrid@iii(#1)(#2){\@ifnextchar(% + {\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}} +\def\psgrid@iv(#1)(#2)(#3){% + \begin@SpecialObj + \pst@getcoor{#1}\pst@tempA% hv 1.11 + \pst@getcoor{#2}\pst@tempB % hv 1.11 + \pst@@getcoor{#3}% + \ifnum\psk@subgriddiv>1 + \addto@pscode{ + gsave + \psk@subgridwidth SLW \pst@usecolor\pssubgridcolor + \pst@tempB \pst@coor \pst@tempA % hv 1.11 +% \pst@number\psxunit \pst@number\psyunit % hv 1.11 + \pst@number\psxunit abs \pst@number\psyunit abs % hv 1.11 + \psk@subgriddiv\space \psk@subgriddots\space + {} 0 \tx@Grid + grestore + }% + \fi + \addto@pscode{% + gsave + \psk@gridwidth SLW \pst@usecolor\psgridcolor + \pst@tempB \pst@coor \pst@tempA % hv 1.11 + \pst@number\psxunit abs \pst@number\psyunit abs % hv 1.11 +% \pst@number\psxunit \pst@number\psyunit % hv 1.11 + 1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor } + \psk@gridlabels \tx@Grid + grestore + }% + \end@SpecialObj% +} +% +\newif\ifpsmathbox +\psmathboxtrue +\def\pst@mathflag{\z@} +\newtoks\everypsbox +\let\pst@thisbox\relax +\long\def\pst@makenotverbbox#1#2{% + \edef\pst@mathflag{% + \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}% + \setbox\pst@hbox=\hbox{% + \ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi + {\pst@thisbox\the\everypsbox#2}% + \ifnum\pst@mathflag>\z@$\fi% $ + }% + #1% +} +\def\pst@makeverbbox#1{% + \def\pst@afterbox{#1}% + \edef\pst@mathflag{% + \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi% + }% + \afterassignment\pst@beginbox + \setbox\pst@hbox\hbox% +} +\def\pst@beginbox{% + \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi + \bgroup\aftergroup\pst@endbox + \pst@thisbox + \the\everypsbox% +} +\def\pst@endbox{% + \ifnum\pst@mathflag>\z@$\fi + \egroup + \pst@afterbox% +} +\def\pst@makebox{\pst@@makebox} +\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}} +\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}} +\psverbboxfalse +\def\pst@longbox{% + \def\pst@makebox{% + \gdef\pst@makebox{\pst@@makebox}% + \pst@makelongbox% + }% +} +\def\pst@makelongbox#1{% + \def\pst@afterbox{#1}% + \edef\pst@mathflag{% + \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi% + }% + \setbox\pst@hbox\hbox\bgroup + \aftergroup\pst@afterbox + \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi + \begingroup + \pst@thisbox + \the\everypsbox% +} +\def\pst@endlongbox{% + \endgroup + \ifnum\pst@mathflag>\z@$\fi + \egroup% +} +\def\pslongbox#1#2{% +%--------------- hv begin 2004-05-07 ---------- patch 15 + \@namedef{#1}{\pst@longbox#2\ignorespaces}% +% \@namedef{#1}{\pst@longbox#2}% +%--------------- hv end 2004-05-07 ---------- patch 15 + \@namedef{end#1}{\pst@endlongbox}% +} +\newdimen\psframesep +\def\psset@framesep#1{\pssetlength\psframesep{#1}} +\psset@framesep{3pt} +\newif\ifpsboxsep +\def\psset@boxsep#1{\@nameuse{psboxsep#1}} +\psset@boxsep{true} +\def\pst@useboxpar{% + \use@par + \if@star + \let\pslinecolor\psfillcolor + \solid@star + \let\solid@star\relax + \fi + \ifpsdoubleline \pst@setdoublesep \fi% +} +\def\psframebox{\pst@object{psframebox}} +\def\psframebox@i{\pst@makebox\psframebox@ii} +\def\psframebox@ii{% + \begingroup + \pst@useboxpar + \pst@dima=\pslinewidth + \advance\pst@dima by \psframesep + \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima + \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima + \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima + \setbox\pst@hbox=\hbox{% + \ifpsboxsep\kern\pst@dima\fi + \begin@ClosedObj + \addto@pscode{% + \psk@cornersize + \pst@number\pst@dima neg + \pst@number\pst@dimb neg + \pst@number\pst@dimc + \pst@number\pst@dimd + .5 + \tx@Frame% + }% + \def\pst@linetype{2}% + \showpointsfalse + \end@ClosedObj + \box\pst@hbox + \ifpsboxsep\kern\pst@dima\fi% + }% + \ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi + \leavevmode\box\pst@hbox + \endgroup% +} +\def\psdblframebox{\pst@object{psdblframebox}} +\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i} +\def\psclip#1{% + \leavevmode + \begingroup + \begin@psclip + \begingroup + \def\use@pscode{% + \pstVerb{% + \pst@dict + /mtrxc CM def + CP CP T + \tx@STV + \psk@origin + \psk@swapaxes + newpath + \pst@code + clip + newpath + mtrxc setmatrix + moveto + 0 setgray + end + }% + \gdef\pst@code{}}% + \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}% + \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}% + \hbox to\z@{#1}% + \endgroup + \def\endpsclip{% + \end@psclip + \endgroup}% + \ignorespaces} +\def\endpsclip{\pst@misplaced\endpsclip} +\let\begin@psclip\relax +\def\end@psclip{\pstVerb{currentpoint initclip moveto}} +\def\AltClipMode{% +\def\end@psclip{\pstVerb{\pst@grestore}}% +\def\begin@psclip{\pstVerb{gsave}}} +\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}} +% DG modification begin - Apr. 3, 1997 +% From paulus@immd5.informatik.uni-erlangen.de (Dietrich Paulus) +%\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}} +\def\clipbox@[#1]{\pst@makebox{\clipbox@@{#1}}} +% DG modification end +\def\clipbox@@#1{% + \pssetlength\pst@dimg{#1}% + \leavevmode\hbox{% + \begin@psclip + \pst@Verb{% + CM \tx@STV CP T newpath + /a \pst@number\pst@dimg def + /w \pst@number{\wd\pst@hbox}a add def + /d \pst@number{\dp\pst@hbox}a add neg def + /h \pst@number{\ht\pst@hbox}a add def + a neg d moveto + a neg h L + w h L + w d L + closepath + clip + newpath + 0 0 moveto + setmatrix}% +\unhbox\pst@hbox +\end@psclip}} +\def\psshadowbox{\pst@object{psshadowbox}} +\def\psshadowbox@i{\pst@makebox\psshadowbox@ii} +\def\psshadowbox@ii{% +\begingroup +\pst@useboxpar +\psshadowtrue +\psboxseptrue +\def\psk@shadowangle{-45 }% +\setbox\pst@hbox=\hbox{\psframebox@ii}% +\pst@dimh=\psk@shadowsize\p@ +\pst@dimh=.7071\pst@dimh +\pst@dimg=\dp\pst@hbox +\advance\pst@dimg\pst@dimh +\dp\pst@hbox=\pst@dimg +\pst@dimg=\wd\pst@hbox +\advance\pst@dimg\pst@dimh +\wd\pst@hbox=\pst@dimg +\leavevmode +\box\pst@hbox +\endgroup} +\def\pscirclebox{\pst@object{pscirclebox}} +\def\pscirclebox@i{\pst@makebox\pscirclebox@ii} +\def\pscirclebox@ii{% +\begingroup +\pst@useboxpar +\setbox\pst@hbox=\hbox{% +\pst@nodehook +\pscirclebox@iii +\box\pst@hbox}% +\ifpsboxsep \pscirclebox@sep \fi +\leavevmode +\box\pst@hbox +\endgroup} +\def\pscirclebox@iii{% +\if@star +\pslinewidth\z@ +\pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor +newpath \pscirclebox@iv \tx@SD end}% +\else +\begin@ClosedObj +\def\pst@linetype{4}\showpointsfalse +\addto@pscode{% +\pscirclebox@iv CLW 2 div add 0 360 arc closepath}% +\end@ClosedObj +\fi} +\def\pscirclebox@iv{% +\pst@number{\wd\pst@hbox}2 div +\pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}add 2 div +2 copy \pst@number{\dp\pst@hbox}sub 4 2 roll +\tx@Pyth \pst@number\psframesep add } +\def\pscirclebox@sep{% +\pst@dimb=\ht\pst@hbox +\advance\pst@dimb\dp\pst@hbox +\divide\pst@dimb 2 +\pst@dima=.5\wd\pst@hbox +\pst@pyth\pst@dima\pst@dimb\pst@dimc +\advance\pst@dimc\pslinewidth +\advance\pst@dimc\psframesep +\advance\pst@dimb-\pst@dimc +\setbox\pst@hbox=\hbox to2\pst@dimc{% +\hss +\vbox{\kern-\pst@dimb\box\pst@hbox}% +\hss}% +\advance\pst@dimb-\dp\pst@hbox +\dp\pst@hbox=-\pst@dimb} +\let\pst@nodehook\relax +\def\psCirclebox{\pst@object{psCirclebox}} +\def\psCirclebox@i{\pst@makebox\psCirclebox@ii} +\def\psCirclebox@ii{% +\begingroup +\pst@useboxpar +\pst@dima=\ht\pst@hbox +\advance\pst@dima\dp\pst@hbox +\divide\pst@dima\tw@ +\pssetlength\pst@dimb\psk@radius +\setbox\pst@hbox=\hbox{% +\pst@nodehook +\pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}% +\box\pst@hbox}% +\ifpsboxsep \psCirclebox@sep \fi +\leavevmode +\box\pst@hbox +\endgroup} +\def\psCirclebox@sep{% +\pst@dimc=\pst@dimb +\advance\pst@dimb-\pst@dima +\advance\pst@dima\pst@dimc +\setbox\pst@hbox=\hbox to\tw@\pst@dimc{% +\hss +\vrule width \z@ depth \pst@dimb height \pst@dima +\box\pst@hbox +\hss}}% +\def\psovalbox{\pst@object{psovalbox}} +\def\psovalbox@i{\pst@makebox{\psovalbox@ii}} +\def\psovalbox@ii{% +\begingroup +\pst@useboxpar +\psovalbox@iii +\ifpsboxsep\psovalbox@sep\fi +\leavevmode +\box\pst@hbox +\endgroup} +\def\psovalbox@iii{% +\psovalbox@iv +\setbox\pst@hbox=\hbox{% +\begin@ClosedObj +\addto@pscode{% +0 360 +\pst@number\pst@dimc CLW 2 div sub +\pst@number\pst@dimd CLW 2 div sub +\pst@number\pst@dima +\pst@number\pst@dimb +\tx@Ellipse +closepath}% +\def\pst@linetype{2}% +\end@ClosedObj +\unhbox\pst@hbox}} +\def\psovalbox@iv{% +\pst@dimc=\pslinewidth\advance\pst@dimc\psframesep +\pst@dimd=\ht\pst@hbox\advance\pst@dimd\dp\pst@hbox +\pst@dima=.5\wd\pst@hbox +\pst@dimb=.5\pst@dimd\advance\pst@dimb-\dp\pst@hbox +\pst@dimd=.707\pst@dimd +\advance\pst@dimd\pst@dimc +\advance\pst@dimc.707\wd\pst@hbox} +\def\psovalbox@sep{% +\setbox\pst@hbox\hbox to 2\pst@dimc{\hss\unhbox\pst@hbox\hss}% +\pst@dimg=\pst@dimd +\advance\pst@dimg-\pst@dimb +\dp\pst@hbox=\pst@dimg +\advance\pst@dimd\pst@dimb +\ht\pst@hbox=\pst@dimd} +\def\psdiabox{\pst@object{psdiabox}} +\def\psdiabox@i{\pst@makebox{\psdiabox@ii}} +\def\psdiabox@ii{% +\begingroup +\pst@useboxpar +\psdiabox@iii +\ifpsboxsep\psdiabox@sep\fi +\leavevmode +\box\pst@hbox +\endgroup} +\def\psdiabox@iv{% +\pst@dimg=.707\pslinewidth +\advance\pst@dimg.707\psframesep +\pst@dima=\wd\pst@hbox +\divide\pst@dima 2 +\pst@dimc=\pst@dima +\advance\pst@dimc\pst@dimg +\pst@dimd=\ht\pst@hbox +\advance\pst@dimd\dp\pst@hbox +\divide\pst@dimd 2 +\pst@dimb=\pst@dimd +\advance\pst@dimb-\dp\pst@hbox +\advance\pst@dimd\pst@dimg} +\def\psdiabox@iii{% +\psdiabox@iv +\setbox\pst@hbox=\hbox{% +\begin@ClosedObj +\addto@pscode{% +\psline@iii +pop +.5 +\pst@number\pst@dimc 2 mul \pst@number\pst@dimd 2 mul +0 +\pst@number\pst@dima \pst@number\pst@dimb +\tx@Diamond}% +\def\pst@linetype{4}% +\end@ClosedObj +\box\pst@hbox}} +\def\psdiabox@sep{% +\setbox\pst@hbox\hbox to 4\pst@dimc{\hss\unhbox\pst@hbox\hss}% +\multiply\pst@dimd 2 +\advance\pst@dimd\pst@dimb +\ht\pst@hbox\pst@dimd +\advance\pst@dimd-2\pst@dimb +\dp\pst@hbox\pst@dimd} +\def\psset@trimode#1{\pst@expandafter\psset@@trimode{#1}\@empty\@empty\@nil} +\def\psset@@trimode#1#2#3\@nil{% +\let\pst@tempg#1\relax +\ifx\pst@tempg*% +\let\psk@@trimode\@empty +\let\pst@tempg#2\relax +\else +\let\psk@@trimode\relax +\fi +\edef\psk@trimode{% +\ifx R\pst@tempg 1 \else\ifx D\pst@tempg 2 +\else\ifx L\pst@tempg 3 \else 0 \fi\fi\fi}} +\psset@trimode{U} +\def\pstribox{\pst@object{pstribox}} +\def\pstribox@i{\pst@makebox{\pstribox@ii}} +\def\pstribox@ii{% +\begingroup +\pst@useboxpar +\pstribox@iii +\ifpsboxsep\pstribox@sep\fi +\leavevmode +\box\pst@hbox +\endgroup} +\def\pstribox@iii{% +\pstribox@iv +\setbox\pst@hbox=\hbox{% +\begin@ClosedObj +\addto@pscode{% +\psline@iii +pop +.5 +\pst@number\pst@dimc \pst@number\pst@dimd +\ifodd\psk@trimode exch \fi +\psk@trimode -90 mul +\pst@number\pst@dima \pst@number\pst@dimb +\tx@Triangle}% +\def\pst@linetype{2}% +\end@ClosedObj +\box\pst@hbox}} +\def\pstribox@iv{% +\pst@dimh=\pslinewidth +\advance\pst@dimh\psframesep +\pst@dimg=\ht\pst@hbox +\advance\pst@dimg-\dp\pst@hbox +\divide\pst@dimg 2 +\edef\pst@tempa{\number\pst@dimg sp}% For use by nodes. +\ifodd\psk@trimode +\pst@dimb\pst@dimg +\else +\pst@dima=\wd\pst@hbox +\divide\pst@dima 2 +\fi +\ifcase\psk@trimode +\pst@dimb=-\dp\pst@hbox +\advance\pst@dimb-\pst@dimh +\or +\pst@dima=-\pst@dimh +\or +\pst@dimb=\ht\pst@hbox +\advance\pst@dimb\pst@dimh +\or +\pst@dima=\wd\pst@hbox +\advance\pst@dima\pst@dimh +\fi +\pst@dimd=\dp\pst@hbox +\advance\pst@dimd\ht\pst@hbox +\ifx\psk@@trimode\relax +\pst@dimc=\wd\pst@hbox +\advance\pst@dimc\ifodd\psk@trimode 1.447\else 1.789\fi\pst@dimh +\multiply\pst@dimc 2 +\advance\pst@dimd\ifodd\psk@trimode 1.789\else 1.447\fi\pst@dimh +\multiply\pst@dimd 2 +\else +\ifodd\psk@trimode +\advance\pst@dimd 1.1547\wd\pst@hbox +\advance\pst@dimd 3.4641\pst@dimh +\pst@dimc=.866\pst@dimd +\else +\advance\pst@dimd .866\wd\pst@hbox %.866=(sqrt(3)/2) +\advance\pst@dimd 3\pst@dimh +\pst@dimc=1.1547\pst@dimd % 1.1547=(2/sqrt(3)) +\fi +\fi} +\def\pstribox@sep{% +\ifodd\psk@trimode +\advance\pst@dimb.5\pst@dimd +\ht\pst@hbox=\pst@dimb +\advance\pst@dimd-\pst@dimb +\dp\pst@hbox=\pst@dimd +\else +\setbox\pst@hbox\hbox to \pst@dimc{\hss\unhbox\pst@hbox\hss}% +\global\pst@dimg=.5\pst@dimc +\fi +\ifcase\psk@trimode +\dp\pst@hbox-\pst@dimb +\advance\pst@dimd\pst@dimb +\ht\pst@hbox\pst@dimd +\or +\pst@dimg=.5\wd\pst@hbox +\global\advance\pst@dimg-\pst@dima +\setbox\pst@hbox\hbox to \pst@dimc{\kern-\pst@dima\box\pst@hbox\hss}% +\or +\ht\pst@hbox\pst@dimb +\advance\pst@dimd-\pst@dimb +\dp\pst@hbox\pst@dimd +\or +\pst@dimg=\pst@dimc +\advance\pst@dimg-\pst@dima +\global\advance\pst@dimg.5\wd\pst@hbox +\setbox\pst@hbox\hbox to \pst@dimc{% +\hss\box\pst@hbox\kern\psframesep\kern\pslinewidth}% +\fi} +\def\psset@arcsepA#1{\pst@getlength{#1}\psk@arcsepA} +\def\psset@arcsepB#1{\pst@getlength{#1}\psk@arcsepB} +\def\psset@arcsep#1{% +\psset@arcsepA{#1}\let\psk@arcsepB\psk@arcsepA} +\psset@arcsep{0} +\def\tx@ArcArrow{ArcArrow } +\def\psarc{\pst@object{psarc}} +\def\psarc@i{\@ifnextchar({\psarc@iii}{\psarc@ii}} +\def\psarc@ii#1{\addto@par{arrows=#1}% + \@ifnextchar({\psarc@iii}{\psarc@iii(0,0)}% +} +\def\psarc@iii(#1)#2#3#4{% + \begin@OpenObj + \pst@getangle{#3}\pst@tempa + \pst@getangle{#4}\pst@tempb + \pst@@getcoor{#1}% + \pssetlength\pst@dima{#2}% + \addto@pscode{\psarc@iv \psarc@v}% + \gdef\psarc@type{0}% + \showpointsfalse + \end@OpenObj% +} +\def\psarc@iv{% + \pst@coor /y ED /x ED + /r \pst@number\pst@dima def + /c 57.2957 r \tx@Div def + /angleA + \pst@tempa + \psk@arcsepA c mul 2 div + \ifcase \psarc@type add \or sub \fi + def + /angleB + \pst@tempb + \psk@arcsepB c mul 2 div + \ifcase \psarc@type sub \or add \fi + def + \ifshowpoints\psarc@showpoints\fi + \ifx\psk@arrowA\@empty + \ifnum\psk@liftpen=2 + r angleA \tx@PtoC + y add exch x add exch moveto + \fi + \fi} +% hv ---- 1.10 2005-05-05 ----------------------> hv begin +\def\psarc@v{% + x y r + angleA + \ifx\psk@arrowA\@empty\else + { ArrowA CP } + r 0 gt \pslbrace + { \ifcase\psarc@type add \or sub \fi } \psrbrace\pslbrace + { \ifcase\psarc@type sub \or add \fi } \psrbrace ifelse +% { \ifcase\psarc@type add \or sub \fi } + \tx@ArcArrow + \fi + angleB + \ifx\psk@arrowB\@empty\else + { ArrowB } + r 0 gt \pslbrace + { \ifcase\psarc@type sub \or add \fi } \psrbrace\pslbrace + { \ifcase\psarc@type add \or sub \fi } \psrbrace ifelse +% { \ifcase\psarc@type sub \or add \fi } + \tx@ArcArrow + \fi +\ifcase\psarc@type arc \or arcn \fi} +% hv ----- 1.10 2005-05-05 ------------------------> end +% +\def\psarc@type{0} +\def\psarc@showpoints{% + gsave + newpath + x y moveto + x y r \pst@tempa \pst@tempb + \ifcase\psarc@type arc \or arcn \fi + closepath + CLW 2 div SLW + [ \psk@dash\space ] 0 setdash stroke + grestore } +\def\psarcn{\pst@object{psarcn}} +\def\psarcn@i{\def\psarc@type{1}\psarc@i} +% +%------------------ tvz/DG/hv (2004-05-10) begin -------------------%% +% from Denis Giroux: http://www.tug.org/pipermail/pstricks/2001/000507.html +% +% I - Definition of \psellipticwedge, a generalization of \pswedge for wedges +% of ellipses (from the code of \pswedge and \psellipse) +% +\def\psellipticwedge{\def\pst@par{}\pst@object{psellipticwedge}} +\def\psellipticwedge@i(#1){% + \@ifnextchar({\psellipticwedge@ii(#1)}{\psellipticwedge@ii(0,0)(#1)}} +\def\psellipticwedge@ii(#1)(#2)#3#4{% + \begin@ClosedObj + \pst@getangle{#3}\pst@tempa + \pst@getangle{#4}\pst@tempb + \pst@getcoor{#1}\pst@tempc + \pst@@getcoor{#2}% + \def\pst@linetype{1}% + \addto@pscode{% + \pst@tempa \pst@tempb + \pst@coor + \pst@tempc moveto + \ifdim\psk@dimen\p@=\z@\else + \psk@dimen CLW mul dup 3 1 roll + sub 3 1 roll sub exch + \fi + \pst@tempc + \tx@Ellipse + closepath% + }% + \showpointsfalse + \end@ClosedObj% +} +% +% Code mainly from "pstricks.tex'' 0.94 beta (TvZ) +% +\def\psellipticarcn{\def\pst@par{}\pst@object{psellipticarcn}} +\def\psellipticarcn@i{\let\if@psarcn\iftrue\psellipticarc@ii} +% +\def\psellipticarc{\def\pst@par{}\pst@object{psellipticarc}} +\def\psellipticarc@i{\let\if@psarcn\iffalse\psellipticarc@ii} +% +\let\if@psarcn\iffalse +\def\psellipticarc@ii{\pst@getarrows\psellipticarc@iii} +\def\psellipticarc@iii(#1){% + \@ifnextchar({\psellipticarc@iv(#1)}{\psellipticarc@iv(0,0)(#1)}} +\def\psellipticarc@iv(#1)(#2)#3#4{% + \begin@OpenObj + \pst@getcoor{#1}\pst@tempa + \pst@getcoor{#2}\pst@tempb + \pst@getangle{#3}\pst@tempc + \pst@getangle{#4}\pst@tempd + \addto@pscode{\psellipticarc@definearg \psellipticarc@draw}% + \showpointsfalse + \end@OpenObj% +} +\def\psellipticarc@definearg{% + \pst@tempa /y ED /x ED % Origin + \pst@tempb % radii. Now adjust: + \ifdim\psk@dimen\p@=\z@\else + \psk@dimen CLW mul dup 3 1 roll + sub 3 1 roll sub exch + \fi + /ry ED /rx ED + /angleA + /d { \if@psarcn sub \else add \fi } def + \pst@tempc \psk@arcsepA 2 div + ArcAdjust + def + /angleB + /d { \if@psarcn add \else sub \fi } def + \pst@tempd \psk@arcsepB 2 div + ArcAdjust + def + \ifshowpoints\psellipticarc@showpoints\fi + \ifx\psk@arrowA\@empty + \ifnum\psk@liftpen=2 + angleA cos rx mul x add + angleA sin ry mul y add + moveto + \fi + \fi% +} +\def\psellipticarc@draw{% + 0 0 1 + angleA + \ifx\psk@arrowA\@empty\else + { ArrowA CP } + { \if@psarcn sub \else add \fi } + EllipticArcArrow + \fi + angleB + \ifx\psk@arrowB\@empty\else + { ArrowB } + { \if@psarcn add \else sub \fi } + EllipticArcArrow + \fi + /mtrx CM def + x y T + rx ry scale + \if@psarcn arcn \else arc \fi + mtrx setmatrix% +} +\def\psellipticarc@showpoints{% + gsave + /mtrx CM def + x y T + rx ry scale + 0 0 moveto + 0 0 1 \pst@tempc \pst@tempd + \ifcase\psarc@type arc \or arcn \fi + closepath + mtrx setmatrix + CLW 2 div SLW + [ \psk@dash\space ] 0 setdash stroke + grestore % +} +\def\pscircle{\pst@object{pscircle}} +\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}} +\def\pscircle@do(#1)#2{% +\if@star +{\use@par\qdisk(#1){#2}}% +\else +\begin@ClosedObj +\pst@@getcoor{#1}% +\pssetlength\pst@dimc{#2}% +\def\pst@linetype{4}% +\addto@pscode{% +\pst@coor +\pst@number\pst@dimc +\psk@dimen CLW mul sub +0 360 arc +closepath}% +\showpointsfalse +\end@ClosedObj +\fi +\ignorespaces} +\def\qdisk(#1)#2{% +\def\pst@par{}% +\begin@SpecialObj +\pst@@getcoor{#1}% +\pssetlength\pst@dimg{#2}% +\addto@pscode{\pst@coor \pst@number\pst@dimg \tx@SD}% +\end@SpecialObj} +\def\psset@radius#1{\pst@@getlength{#1}\psk@radius} +\psset@radius{.25cm} +\def\psCircle{\pst@object{psCircle}} +\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}} +\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}} +\def\pswedge{\pst@object{pswedge}} +\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}} +\def\pswedge@ii(#1)#2#3#4{% + \begin@ClosedObj + \pssetlength\pst@dimc{#2} + \pst@getangle{#3}\pst@tempa + \pst@getangle{#4}\pst@tempb + \pst@@getcoor{#1}% + \def\pst@linetype{1}% + \addto@pscode{% + \pst@coor + 2 copy + moveto + \pst@number\pst@dimc \psk@dimen CLW mul sub % Adjusted radius + \pst@tempa \pst@tempb + arc + closepath}% + \showpointsfalse + \end@ClosedObj% +} +\def\tx@Ellipse{Ellipse } +\def\psellipse{\pst@object{psellipse}} +\def\psellipse@i(#1){\@ifnextchar({\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}} +\def\psellipse@ii(#1)(#2){% + \begin@ClosedObj + \pst@getcoor{#1}\pst@tempa + \pst@@getcoor{#2}% + \addto@pscode{% + 0 360 + \pst@coor + \ifdim\psk@dimen\p@=\z@\else + \psk@dimen CLW mul + dup 4 -1 roll sub neg 3 1 roll sub + \fi + \pst@tempa + \tx@Ellipse + closepath% + }% + \def\pst@linetype{2}% + \end@ClosedObj% +} +\def\multips{\@ifnextchar({\def\pst@par{}\multips@ii}{\multips@i}} +\def\multips@i#1{\def\pst@par{rot=#1}\multips@ii} +\def\multips@ii(#1){\@ifnextchar({\multips@iii(#1)}{\multips@iii(\z@,\z@)(#1)}} +\long\def\multips@iii(#1)(#2)#3#4{% + \begingroup +%----------------- hv 1.10 ------------------ + \pst@killglue +%----------------- hv 1.10 ------------------ + \use@par + \pst@getcoor{#1}\pst@tempa + \pst@@getcoor{#2}% + \pst@cnta=#3\relax + \init@pscode + \addto@pscode{% + \pst@tempa T \the\pst@cnta\space \pslbrace + gsave \ifx\psk@rot\@empty\else\psk@rot rotate \fi}% + \hbox to\z@{% + \def\init@pscode{% + \addto@pscode{% + gsave + \pst@number\pslinewidth SLW + \pst@usecolor\pslinecolor}}% + \def\use@pscode{\addto@pscode{grestore}}% + \def\psclip##1{\pst@misplaced\psclip}% + \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}% + #4% + }% + \addto@pscode{grestore \pst@coor T \psrbrace repeat}% + \leavevmode + \use@pscode + \endgroup + \ignorespaces} +\def\psscalebox#1{\pst@makebox{\ps@scalebox{#1}}} +\def\ps@scalebox#1{% + \begingroup + \pst@getscale{#1}\pst@tempa + \let\pst@tempc\pst@tempg + \let\pst@tempd\pst@temph + \ps@@scalebox + \endgroup} +\def\ps@@scalebox{% + \leavevmode + \hbox{% + \ifdim\pst@tempd\p@<\z@ + \pst@dimg=\pst@tempd\ht\pst@hbox + \pst@dimh=\pst@tempd\dp\pst@hbox + \dp\pst@hbox=-\pst@dimg + \ht\pst@hbox=-\pst@dimh + \else + \ht\pst@hbox=\pst@tempd\ht\pst@hbox + \dp\pst@hbox=\pst@tempd\dp\pst@hbox + \fi + \pst@dima=\pst@tempc\wd\pst@hbox + \ifdim\pst@dima<\z@\kern-\pst@dima\fi + \pst@Verb{CP CP translate \pst@tempa \tx@NET}% + \hbox to \z@{\box\pst@hbox\hss}% + \pst@Verb{% + CP CP translate + 1 \pst@tempc div 1 \pst@tempd div scale + \tx@NET}% + \ifdim\pst@dima>\z@\kern\pst@dima\fi% + }% +} +\pslongbox{Scalebox}{\psscalebox} +% +\def\psscaleboxto(#1,#2){\pst@makebox{\ps@scaleboxto(#1,#2)}} +\def\ps@scaleboxto(#1,#2){% + \begingroup + \pssetlength\pst@dima{#1}% + \pssetlength\pst@dimb{#2}% + \ifdim\pst@dima=\z@\else + \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempc + \edef\pst@tempc{\pst@tempc\space}% + \fi + \ifdim\pst@dimb=\z@ + \ifdim\pst@dima=\z@ + \@pstrickserr{% + \string\psscaleboxto\space dimensions cannot both be zero}\@ehpa + \def\pst@tempa{}% + \def\pst@tempc{1 }% + \def\pst@tempd{1 }% + \else + \let\pst@tempd\pst@tempc + \fi + \else + \pst@dimc=\ht\pst@hbox + \advance\pst@dimc\dp\pst@hbox + \pst@divide{\pst@dimb}{\pst@dimc}\pst@tempd + \edef\pst@tempd{\pst@tempd\space}% + \ifdim\pst@dima=\z@ \let\pst@tempc\pst@tempd \fi + \fi + \edef\pst@tempa{\pst@tempc \pst@tempd scale }% + \ps@@scalebox + \endgroup} +\pslongbox{Scaleboxto}{\psscaleboxto} +% +\def\tx@Rot{Rot } +\def\psrotateleft{\pst@makebox{\ps@rotateleft\pst@hbox}} +\def\ps@rotateleft#1{% +\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1% +\pst@Verb{90 \tx@Rot} +\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}% +\pst@Verb{-90 \tx@Rot}}}} +\def\psrotateright{\pst@makebox{\ps@rotateright\pst@hbox}} +\def\ps@rotateright#1{% +% ----------- hv begin 2004-05-07 ----------- patch 15 +% \hbox{% + \leavevmode\hbox{% +% ----------- hv end 2004-05-07 ----------- patch 15 + \hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1% + \pst@Verb{-90 \tx@Rot} + \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}% + \pst@Verb{90 \tx@Rot}}}} +\def\psrotatedown{\pst@makebox{\ps@rotatedown\pst@hbox}} +\def\ps@rotatedown#1{% +\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1% +\pst@Verb{180 \tx@Rot}% +\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}% +\pst@Verb{-180 \tx@Rot}}}} +\pslongbox{Rotateleft}{\psrotateleft} +\pslongbox{Rotateright}{\psrotateright} +\pslongbox{Rotatedown}{\psrotatedown} +% ----------- hv begin 2004-09-23 ----------- 1.11 +% compatibility stuff +\let\rotateleft\psrotateleft +\let\rotateright\psrotateright +\let\rotatedown\psrotatedown +% ----------- hv end 2005-09-23 ----------- 1.11 +\def\pst@starbox{% +\setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}} +\def\pst@@makesmall#1{% +\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}} +\def\pst@@@makesmall#1{% +\pst@dimh=\psk@xref\wd#1% +\ifx\psk@yref\relax +\pst@dimg=\dp#1% +\else +\pst@dimg=\psk@yref\ht#1% +\advance\pst@dimg\psk@yref\dp#1% +\fi +\setbox#1=\hbox to\z@{% +\kern-\pst@dimh\vbox to\z@{\vss\box#1\kern-\pst@dimg}\hss}} +\def\psset@ref#1{\pst@expandafter\psset@@ref{#1}\@empty,,\@nil} +\def\psset@@ref#1#2,#3,#4\@nil{% +\def\psk@xref{.5}% +\def\psk@yref{.5}% +\let\pst@makesmall\pst@@@makesmall +\ifx\@empty#3\@empty +\@nameuse{getref@#1}% +\@nameuse{getref@#2}% +\else +\pst@checknum{#1#2}\psk@xref +\pst@checknum{#3}\psk@yref +\fi} +\def\getref@c{\let\pst@makesmall\pst@@makesmall} +\def\getref@t{\def\psk@yref{1}} +\def\getref@b{\def\psk@yref{0}} +\def\getref@B{\let\psk@yref\relax} +\def\getref@l{\def\psk@xref{0}} +\def\getref@r{\def\psk@xref{1}} +\psset@ref{c} +\def\psset@rot#1{% +\pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil} +\def\psset@@rot#1\@nil{% +\def\next##1@#1=##2@##3\@nil{% +\ifx\relax##2% +\pst@getangle{#1}\psk@rot +\else +\def\psk@rot{##2}% +\fi}% +\expandafter\next\pst@rottable @#1=\relax @\@nil} +\def\psset@@@rot#1#2\@nil{% +\psset@@rot#2\@nil +\edef\psk@rot{\pst@rotlist \ifx\psk@rot\@empty\else\psk@rot add \fi}} +\def\pst@rotlist{mark RAngle /a ED cleartomark a neg } +\def\pst@rottable{% +@0=% +@U=% +@L=90 % +@D=180 % +@R=-90 % +@N=\pst@rotlist +@W=\pst@rotlist 90 add % +@S=\pst@rotlist 180 add % +@E=\pst@rotlist 90 sub } +\psset@rot{0} +\def\tx@RotBegin{RotBegin } +\def\tx@RotEnd{RotEnd } +\def\pst@rotate#1#2{% + \ifx#1\@empty\else + \setbox#2=\hbox{\pst@Verb{#1 \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}% + \fi% +} +\def\psput@cartesian#1{% + \hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}% +} +\def\psput@special#1{% + \hbox{% + \pst@Verb{{ \pst@coor } \tx@PutCoor \tx@PutBegin}% + \box#1% + \pst@Verb{\tx@PutEnd}% + }% +} +\def\tx@PutCoor{PutCoor } +\def\tx@PutBegin{PutBegin } +\def\tx@PutEnd{PutEnd } +\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}} +\def\rput@i[#1]{\addto@par{ref={#1}}\rput@ii} +\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}} +\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}} +\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}} +\def\rput@v#1{% + \begingroup + \use@par + \if@star\pst@starbox\fi + \pst@makesmall\pst@hbox + \pst@rotate\psk@rot\pst@hbox + \psput@{#1}\pst@hbox + \endgroup + \ignorespaces% +} +\def\multirput{% + \def\pst@par{}% + \pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}% +} +\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii} +\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}} +\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv} +\def\multirput@iv(#1){% + \@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}% +} +\def\multirput@v(#1,#2)(#3,#4)#5{% + \pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}% +} +\def\multirput@vi(#1,#2)(#3,#4)#5{% + \pst@killglue + \begingroup + \use@par + \if@star\pst@starbox\fi + \pst@makesmall\pst@hbox + \pst@rotate\psk@rot\pst@hbox + \pssetxlength\pst@dima{#1}% + \pssetylength\pst@dimb{#2}% + \pssetxlength\pst@dimc{#3}% + \pssetylength\pst@dimd{#4}% + \pst@cntg=#5\relax + \pst@cnth=\@ne + \leavevmode + \loop + \vbox to \z@{% + \vss + \hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}% + \vskip\pst@dimb% + }% + \ifnum\pst@cntg>\pst@cnth + \advance\pst@dima\pst@dimc + \advance\pst@dimb\pst@dimd + \advance\pst@cnth\@ne + \repeat + \endgroup + \ignorespaces% +} +\newif\if@fixedradius +\def\cput{\pst@object{cput}} +\def\cput@i{\@fixedradiusfalse\cput@ii} +\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}} +\def\cput@iii#1{% + \addto@par{rot={#1}}% + \@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}% +} +\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}} + \def\cput@v#1{% + \begingroup + \use@par + \setbox\pst@hbox=\hbox{% + \psboxsepfalse + \if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi% + }% + \pst@@makesmall\pst@hbox + \pst@rotate\psk@rot\pst@hbox + \psput@{#1}\pst@hbox + \endgroup + \ignorespaces% +} +\def\Cput{\pst@object{Cput}} +\def\Cput@i{\@fixedradiustrue\cput@ii} +\newdimen\pslabelsep +\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}} +\psset@labelsep{5pt} +\def\psset@refangle#1{\pst@expandafter\psset@@refangle{#1}\@nil} +\def\psset@@refangle#1\@nil{% +\def\next##1@#1=##2"##3@##4\@nil{% +\ifx\relax##2% +\pst@getangle{#1}\psk@refangle +\def\psk@uputref{}% +\else +\def\psk@refangle{##2 }% +\def\psk@uputref{##3}% +\fi}% +\expandafter\next\pst@refangletable @#1=\relax"@\@nil} +\def\pst@refangletable{% +@r=0"20% +@u=90"02% +@l=180"10% +@d=-90"01% +@ur=45"22% +@ul=135"12% +@dr=-135"21% +@dl=-45"11} +\psset@refangle{0} +% DG/SR modification begin - Mar. 24, 1999 - Patch 10 +%\def\uput{\def\pst@par{}\@ifnextchar[{\uput@ii}{\uput@i}} +\def\uput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\uput@ii}{\uput@i}}} +% DG/SR modification end +\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii} +\def\uput@ii[#1]{% +\addto@par{refangle={#1}}% +\@ifnextchar({\uput@iv}{\uput@iii}} +\def\uput@iii#1{% +\addto@par{rot={#1}}% +\@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}} +\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}} +\def\uput@v#1{% +\begingroup +\use@par +\if@star\pst@starbox\fi +\uput@vi +\psput@{#1}\pst@hbox +\endgroup +\ignorespaces} +\def\uput@vi{% +\ifx\psk@uputref\@empty +\uput@vii\tx@UUput{}% +\else +\ifx\psk@rot\@empty +\expandafter\uput@viii\psk@uputref +\else +\uput@vii\tx@UUput{}% +\fi +\fi} +\def\uput@vii#1#2{% + \edef\pst@coor{% + \pst@number\pslabelsep + #2% + \pst@number{\wd\pst@hbox}% + \pst@number{\ht\pst@hbox}% + \pst@number{\dp\pst@hbox}% + \psk@refangle\space \ifx\psk@rot\@empty\else\psk@rot\space sub \fi + \tx@Uput #1}% + \setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}% + \setbox\pst@hbox=\psput@special\pst@hbox + \ifx\psk@rot\@empty\else\pst@rotate\psk@rot\pst@hbox\fi} +\def\uput@viii#1#2{% + \ifnum#1>\z@\ifnum#2>\z@\pslabelsep=.707\pslabelsep\fi\fi + \setbox\pst@hbox=\vbox to\z@{% + \ifnum#2=1 \vskip\pslabelsep\else\vss\fi + \hbox to\z@{% + \ifnum#1=2 \hskip\pslabelsep\else\hss\fi + \box\pst@hbox + \ifnum#1=1 \hskip\pslabelsep\else\hss\fi}% + \ifnum#2=2 \vskip\pslabelsep\else\vss\fi}} +\def\tx@Uput{Uput } +\def\tx@UUput{UUput } +\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}} +\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii} +\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}} +\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}} +\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}} +\def\Rput@v#1{% +\begingroup +\use@par +\if@star\pst@starbox\fi +\Rput@vi +\pst@makesmall\pst@hbox +\pst@rotate\psk@rot\pst@hbox +\psput@{#1}\pst@hbox +\endgroup +\ignorespaces} +\def\Rput@vi{% +\pst@dimg=\dp\pst@hbox +\advance\pst@dimg\pslabelsep +\dp\pst@hbox=\pst@dimg +\pst@dimg=\ht\pst@hbox +\advance\pst@dimg\pslabelsep +\ht\pst@hbox=\pst@dimg +\setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}% +\def\oldpsput{% +\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}} +\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii} +\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}} +\def\oldpsput@iii<#1>{\rput@iii{#1}} +\def\OldPsput{\let\psput\oldpsput} +\def\NewPsput{\let\psput\rput} +% +% ----------- 1.10/12 beg hv ------------------- +\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt} +\newif\ifshowgrid +\def\psset@showgrid#1{\@nameuse{showgrid#1}} +\psset@showgrid{false} +\newdimen\psk@shift +\def\psset@shift#1{\pssetlength\pst@dimg{#1}% + \psk@shift\pst@dimg} +% \global\psk@shift\pst@dimg} +\psset@shift{0} +% ----------- 1.10/12 end hv ------------------- +% +\def\pspicture{\begingroup\pst@ifstar\pst@picture} +\def\pst@picture{% +\@ifnextchar[{\pst@@picture}{\pst@@picture[]}} +\def\pst@@picture[#1]#2(#3,#4){% +\@ifnextchar({\pst@@@picture[#1](#3,#4)}% +{\pst@@@picture[#1](0,0)(#3,#4)}} +% +\def\pst@@@picture[#1](#2,#3)(#4,#5){% + \pssetxlength\pst@dima{#2}% + \pssetylength\pst@dimb{#3}% + \pssetxlength\pst@dimc{#4}% + \pssetylength\pst@dimd{#5}% + \ifdim\pst@dima>\pst@dimc% + \pst@dimg=\pst@dima% + \pst@dima=\pst@dimc% + \pst@dimc=\pst@dimg% + \fi% + \ifdim\pst@dimb>\pst@dimd% + \pst@dimg=\pst@dimb% + \pst@dimb=\pst@dimd% + \pst@dimd=\pst@dimg% + \fi% + \setbox\pst@hbox=\hbox\bgroup% + \begingroup\KillGlue% + \@ifundefined{@latexerr}{}{\let\unitlength\psunit}% + \edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}% +% ----------- 1.10/12 beg hv ------------------- + \psset{showgrid=false}% % for nested pspicture environemnets + \def\pst@tempA{#1}% + \ifx\pst@tempA\@empty\else\psset{#1}\fi% sets the shift and grid option + \ifshowgrid\psgrid[style=gridstyle]\fi% +% ----------- 1.10/12 end hv ------------------- +% \ignorespaces% +} +\def\pic@coor{(0,0)(0,0)(10,10)} +\newdimen\pst@shift +\def\endpspicture{% + \pst@killglue + \global\pst@shift=\psk@shift% in fact of the following endgroup + \endgroup + \egroup + \ifdim\wd\pst@hbox=\z@\else + %\@pstrickserr{Extraneous space in the pspicture environment}% + %{Type \space <return> \space to procede.}% + \fi + \ht\pst@hbox=\pst@dimd + \dp\pst@hbox=-\pst@dimb + \setbox\pst@hbox=\hbox{% + \kern-\pst@dima +% ----------- 1.10/12 beg hv ------------------- +% \advance\pst@dimd-\pst@dimb% +% \pst@dimd=\pst@shift\pst@dimd% +% \advance\pst@dimd\pst@dimb + \pst@dimd-\pst@shift +% ----------- 1.10/12 end hv ------------------- + \advance\pst@dimd\pst@dimb + \lower\pst@dimd% + \box\pst@hbox% + \kern\pst@dimc}% + \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi + \leavevmode\box\pst@hbox + \endgroup% + \global\psk@shift\z@% restore value +} +\@namedef{pspicture*}{\pspicture*} +\@namedef{endpspicture*}{\endpspicture} +% +\def\tx@BeginOL{BeginOL } +\def\tx@InitOL{InitOL } +\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}} +\def\AltOverlayMode{% + \def\pst@initoverlay##1{% + \pst@Verb{% + \tx@InitOL + /Visible { initclip } def + /Invisible { + CP newpath OLUnit itransform moveto clip newpath moveto + } def + /TheOL (##1) def}}} +\def\pst@overlay#1{% + \edef\curr@overlay{#1}% + \pst@Verb{(#1) BOL}% + \aftergroup\pst@endoverlay} +\def\pst@endoverlay{% + \pst@Verb{(\curr@overlay) BOL}} +\def\curr@overlay{all} +\newbox\theoverlaybox +\def\overlaybox{% + \global\setbox\theoverlaybox=\hbox\bgroup + \begingroup + \let\psoverlay\pst@overlay + \def\overlaybox{% + \@pstrickserr{Overlays cannot be nested}\@eha}% + \def\putoverlaybox{% + \@pstrickserr{You must end the overlay box + before using \string\putoverlaybox}}% + \psoverlay{main}% + \ignorespaces} +\def\endoverlaybox{\endgroup\egroup} +\def\putoverlaybox#1{% +\hbox{\pst@initoverlay{#1}\copy\theoverlaybox}} +\def\psoverlay{\@pstrickserr{\string\psoverlay\space +can only be used after \string\overlaybox}} +\ifx\pstcustomize\relax \input pstricks.con \fi +\catcode`\@=\PstAtCode\relax +% +\endinput +%% +%% END: pstricks.tex |