diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
commit | 873660d1a83ece926fe7206288dda9c36b349c1b (patch) | |
tree | a48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/pstricks | |
parent | 2939242967231097459df0fc3150fabc2f639111 (diff) |
generic 1
git-svn-id: svn://tug.org/texlive/trunk@613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/pstricks')
16 files changed, 7335 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/pstricks/Changes b/Master/texmf-dist/tex/generic/pstricks/Changes new file mode 100644 index 00000000000..f34f21b2105 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/Changes @@ -0,0 +1,38 @@ +pstricks.sty -------- +0.24 2005-08-30 drop support for \scalebox check, it is now renamed + in pstricks.tex (hv) +0.23 2005-06-02 Option DIA to prevent a clash with \scalebox (hv) +0.22 2005-02-25 changes were done in the wrong version +0.21 2005-02-21 fix problem with \newrgbcolor (RN,hv) + + +pstricks.tex -------- +1.12 2005-10-25 - spurious blank for \multirput + - shift only for an absolute length + - add the missing arrows ]-[)-( +1.11 2005-09-08 - rename \rotateleft | right | down to + \psrotateleft | right | down to be consistant to the + other PSTricks macro names + - new fillstyle options + - move the code for arcs of an ellipse into pstricks.pro +1.10 2005-08-13 - fix bug with \multips (spurious blank) (hv) + - allow empty optional arrow argument \psline[..]{}(2,2) + - redefined \psarc@iv for negative loops of \nccircle + - introduce new options shift and showgrid for the + main pspicture environment + - rename \scalebox and \scaleboxto to + \psscalebox(to) to be consistant to the + other PSTricks macro names +1.08 2005-06-02 fix bug with \multips (spurious blank) (hv) +1.07 2005-05-06 make \nccircle working for counter-clockwise + orientation (hv) +1.06 2005-02-24 fix spurious blank in doublestroke (hv) + + +---- pstricks.pro +1.00 2005-09-19 (hv) move the code for arcs of an ellipse from + the main pstricks.tex into this pro +97, patch 7 2005-09-11 (hv) added new fillstyles +97, patch 6 2005-05-17 (hv) added some helper stuff + RadtoDeg, DegtoRad, Pi, TwoPi, ATAN +97, patch 5 2005-03-08 (hv) bugfix for DashLine diff --git a/Master/texmf-dist/tex/generic/pstricks/dvipsone.con b/Master/texmf-dist/tex/generic/pstricks/dvipsone.con new file mode 100644 index 00000000000..9f8fa4f87e9 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/dvipsone.con @@ -0,0 +1,36 @@ +%% BEGIN pstricks.con (for DVIPSONE driver) +%% +%% Configuration file for PSTricks 97: must be renamed `pstricks.con' +%% +%% Version 97 (1994/03/29) +%% +%% For use with DVIPSONE. (May require the -j flag with dvipsone) + +\def\pstdriver{DVIPSONE} +\def\pstunit{1bp} +{\catcode`\"=12 \gdef\pstverb#1{\special{" #1}} } +\def\pstVerb#1{\special{ps:: #1}} +\def\pstverbscale{1 dviscl div dup neg scale} +\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET} +\def\pstheader#1{\special{header=#1}} + +\pstcustomize + +\endinput + +%% To get PSTricks charpath and textpath to work: +----------- pst-show.pro ------------------------------------------ +%! +% Patch for dvipsone to get PSTricks' charpath and textpath to work. +% Save as pst-show.pro, put it with your other PSTricks .pro files. +% Add "\pstheader{pst-show.pro}" to the beginning of your document. +% +% We unbind show: +dvidict begin +/S {show dup 0 rmoveto} def +/T {show 2 index 0 rmoveto} def +/s {show} def +end +------------- end pst-show.pro ------------------------------------ +%% +%% END: pstricks.con diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-char.tex b/Master/texmf-dist/tex/generic/pstricks/pst-char.tex new file mode 100644 index 00000000000..3ffe88d2ed6 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-char.tex @@ -0,0 +1,91 @@ +%% BEGIN pst-char.tex +%% +%% Stroking and filling characters with line and fill styles with PSTricks 97. +%% See the PSTricks User's Guide for description. +%% See chartest.tex for sample input. +%% +\def\fileversion{97 patch 3} +\def\filedate{1999/03/11} +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\message{ v\fileversion, \filedate} + +\csname PSTcharpathLoaded\endcsname +\let\PSTcharpathLoaded\endinput + +\ifx\PSTricksLoaded\endinput\else + \def\next{\input pstricks.tex} + \expandafter\next +\fi + +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 + +\def\tx@CharPathShow{% + /tx@CharPathSavedShow /show load def + /show { + % These 3 lines check whether charpath yields anything interesting. + dup gsave newpath 0 0 moveto + true charpath pathbbox grestore + 3 -1 roll eq 3 1 roll eq and + % If not, just use show. + { tx@CharPathSavedShow } + % Otherwise, use charpath. + { true charpath } + ifelse } + def } + +\def\pscharpath{\def\pst@par{}\pst@object{pscharpath}} +\def\pscharpath@i{\pst@makebox\pscharpath@ii} +\def\pscharpath@ii{% + \leavevmode\hbox{% + \pstVerb{\tx@CharPathShow}% + \box\pst@hbox + \pstVerb{/show /tx@CharPathSavedShow load def}% +% DG/SR modification begin - Nov. 26, 1998 - Patch 2 +% \if@star is true but \solid@star must not be executed in \begin@ClosedObj ! +% \begin@ClosedObj + \let\solid@starOLD\solid@star + \let\solid@star\relax + \begin@ClosedObj + \let\solid@star\solid@starOLD +% DG/SR modification end + \def\pst@linetype{1}% + \psdashadjustfalse + \showpointsfalse + \let\pst@newpath\@empty + \def\use@pscode{% + \pst@Verb{% + gsave + \tx@STV + \pst@code + grestore +% DG/SR modification begin - Jul. 3, 1998 / Mar. 11, 1999 - Patches 1 and 3 +% \if@star\else CP newpath moveto \fi}}% + \if@star\else CP newpath moveto \fi}% + \gdef\pst@code{}}% +% DG/SR modification end + \end@ClosedObj}} + +\def\pscharclip{\def\pst@par{}\pst@object{pscharclip}} +\def\pscharclip@i{\pst@makebox\pscharclip@ii} +\def\pscharclip@ii{% + \leavevmode + \begingroup + \begin@psclip + {\@startrue\pscharpath@ii}% + \pstVerb{clip \if@star\else currentpoint newpath moveto\fi}% + \def\endpscharclip{\end@psclip\endgroup}% + \ignorespaces} +\def\endpscharclip{\pst@misplaced\endpscharclip} + +\catcode`\@=\TheAtCode\relax + +\endinput +%% +%% END pst-char.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-coil.tex b/Master/texmf-dist/tex/generic/pstricks/pst-coil.tex new file mode 100644 index 00000000000..aeac0179afd --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-coil.tex @@ -0,0 +1,136 @@ +%% BEGIN pst-coil.tex +%% +%% Coils and zigzags with PSTricks 97. +%% See the PSTricks User's Guide for documentation. +%% For use with the PostScript header file `pst-coil.pro'. +%% +\def\fileversion{97 patch 2} +\def\filedate{1998/03/19} +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\message{ v\fileversion, \filedate} +\csname PSTcoilsLoaded\endcsname +\let\PSTcoilsLoaded\endinput +\ifx\PSTricksLoaded\endinput\else +\def\next{\input pstricks.tex}\expandafter\next +\fi +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 +\pstheader{pst-coil.pro} +\edef\pst@theheaders{\pst@theheaders,pst-coil.pro} +\def\pst@coildict{tx@CoilDict begin } +\def\psset@coilwidth#1{\pst@getlength{#1}\psk@coilwidth} +\psset@coilwidth{1cm} +\def\psset@coilheight#1{\pst@checknum{#1}\pscoilheight} +\psset@coilheight{1} +\def\psset@coilarmA#1{\pst@getlength{#1}\psk@coilarmA} +\def\psset@coilarmB#1{\pst@getlength{#1}\psk@coilarmB} +\def\psset@coilarm#1{% +\pst@getlength{#1}\psk@coilarmA +\let\psk@coilarmB\psk@coilarmA} +\psset@coilarm{.5cm} +\def\psset@coilaspect#1{\pst@getangle{#1}\psk@coilaspect} +\psset@coilaspect{45} +\def\psset@coilinc#1{\pst@getangle{#1}\psk@coilinc} +\psset@coilinc{10} +\def\pscoil{\def\pst@par{}\pst@object{pscoil}} +\def\pscoil@i{\pst@getarrows\pscoil@ii} +\def\pscoil@ii(#1){% +\@ifnextchar(% +{\pscoil@iii{1}(#1)}% +{\pscoil@iii{\z@}(0,0)(#1)}} +\def\pscoil@iii#1(#2)(#3){% +\begin@OpenObj +\pst@getcoor{#2}\pst@tempa +\pst@getcoor{#3}\pst@tempb +\pst@optcp{#1}\pst@tempa +\addto@pscode{% +\pst@tempa \pst@tempb +\psk@coilwidth \pscoilheight +\psk@coilarmA \psk@coilarmB +\psk@coilaspect \psk@coilinc +\pst@coildict \tx@Coil end}% +\showpointsfalse +\end@OpenObj} +\def\tx@CoilLoop{CoilLoop } +\def\tx@Coil{Coil } +\def\psCoil{\def\pst@par{}\pst@object{psCoil}} +\def\psCoil@i#1#2{% +\begin@AltOpenObj +\showpointsfalse +\pst@getangle{#1}\pst@tempa +\pst@getangle{#2}\pst@tempb +\addto@pscode{% +\pst@tempa +\pst@tempb +\psk@coilwidth +\pscoilheight +\psk@coilaspect +\psk@coilinc +\pst@coildict \tx@AltCoil end +\@nameuse{psls@\pslinestyle}}% +\end@OpenObj} +\def\tx@AltCoil{AltCoil } +\def\pszigzag{\def\pst@par{}\pst@object{pszigzag}} +\def\pszigzag@i{\pst@getarrows\pszigzag@ii} +\def\pszigzag@ii(#1){% +\@ifnextchar({\pszigzag@iii{1}(#1)}{\pszigzag@iii{\z@}(0,0)(#1)}} +\def\pszigzag@iii#1(#2)(#3){% +\begin@OpenObj +\pst@getcoor{#2}\pst@tempa +\pst@getcoor{#3}\pst@tempb +\pst@optcp{#1}\pst@tempa +\addto@pscode{% +\pst@tempa +\pst@tempb +\pscoilheight +\psk@coilwidth +\psk@coilarmA +\psk@coilarmB +\pst@coildict \tx@ZigZag end +\psline@iii +\tx@Line}% +\end@OpenObj} +\def\tx@ZigZag{ZigZag } +\def\nccoil{\pst@object{nccoil}} +\def\nccoil@i{\check@arrow{\nccoil@ii}} +\def\nccoil@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{% +\tx@NCCoor +tx@Dict begin +% DG/SR modification begin - Mar. 19, 1998 - Patch 2 +4 2 roll +% DG/SR modification end +\psk@coilwidth \pscoilheight +\psk@coilarmA \psk@coilarmB +\psk@coilaspect \psk@coilinc +\pst@coildict \tx@Coil end +end}} +\def\pccoil{\def\pst@par{}\pst@object{pccoil}} +\def\pccoil@i{\pc@object\nccoil@ii} +\def\nczigzag{\pst@object{nczigzag}} +\def\nczigzag@i{\check@arrow{\nczigzag@ii}} +\def\nczigzag@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{% +\tx@NCCoor +tx@Dict begin +% DG/SR modification begin - Mar. 19, 1998 - Patch 2 +4 2 roll +% DG/SR modification end +\pscoilheight +\psk@coilwidth +\psk@coilarmA +\psk@coilarmB +\pst@coildict \tx@ZigZag end +\psline@iii +\tx@Line +end}} +\def\pczigzag{\def\pst@par{}\pst@object{pczigzag}} +\def\pczigzag@i{\pc@object\nczigzag@ii} +\catcode`\@=\TheAtCode\relax +\endinput +%% +%% END pst-coil.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-eps.tex b/Master/texmf-dist/tex/generic/pstricks/pst-eps.tex new file mode 100644 index 00000000000..b38ec5973dd --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-eps.tex @@ -0,0 +1,251 @@ +%% BEGIN pst-eps.tex +%% +%% Writing EPS files with PSTricks 97. +%% See the PSTricks User's Guide for description. +%% +\def\fileversion{97 patch 1} +\def\filedate{1997/05/05} +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\message{ v\fileversion, \filedate} + +\csname PSTfilesLoaded\endcsname +\let\PSTfilesLoaded\endinput + +\ifx\PSTricksLoaded\endinput\else + \def\next{\input pstricks.tex} + \expandafter\next +\fi + +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 + +% Exporting PostScript files + +% DG/SR modification begin - May 5, 1997 - Patch 1 +% With LaTeX 2e, we must force now inclusion of header files +%\def\TeXtoEPS{\begingroup\pst@makebox{}\bgroup\ignorespaces} +\def\TeXtoEPS{% +\ifx\documentclass\@undefined\else\@begindvi\fi +\begingroup\pst@makebox{}\bgroup\ignorespaces} +% DG/SR modification end +\def\endTeXtoEPS{% + \egroup +% Get contents of page, in case it contains special's: + \begingroup + \global\setbox\pst@boxg\box\voidb@x + \output{\global\setbox\pst@boxg\box\@cclv}% + \par\hbox{}\penalty-10000 + \endgroup + \dp\pst@boxg\z@ + \ht\pst@boxg\z@ + \wd\pst@boxg\z@ + \pst@dimg=3pt + \shipout\hbox{% + \box\pst@boxg + \pst@Verb{gsave CM \tx@STV CP newpath moveto + \pst@number\pst@dimg neg 0 rmoveto clip setmatrix}% + \vrule width \wd\pst@hbox height \ht\pst@hbox depth \dp\pst@hbox + \pstVerb{currentpoint grestore moveto}% + \kern -\wd\pst@hbox + \unhbox\pst@hbox}% + \endgroup + \typeout{PSTricks: Converting TeX box to EPS.}% + \typeout{\@spaces\@spaces\space\space With dvips, use -E option.}} + + +% Writing PSTricks graphics to EPS files + +\newwrite\pst@epsout +\newwrite\pst@tempout + +\def\pst@getbp#1#2#3{% + \csname psset#1length\endcsname\pst@dimg{#2}% + \advance\pst@dimg .49bp + \pst@cntg=\pst@dimg + \multiply\pst@cntg 5 + \divide\pst@cntg 328909 + \edef#3{\the\pst@cntg}} + +\def\psset@bbllx#1{\pst@getbp{x}{#1}\psk@bbllx} +\psset@bbllx{-1pt} + +\def\psset@bblly#1{\pst@getbp{y}{#1}\psk@bblly} +\psset@bblly{-1pt} + +\def\psset@bburx#1{\pst@getbp{x}{#1}\psk@bburx} +\psset@bburx{1pt} + +\def\psset@bbury#1{\pst@getbp{y}{#1}\psk@bbury} +\psset@bbury{1pt} + +\def\pst@getboolean#1#2{% + \def\pst@tempg##1##2\@nil{% + \ifx t##1\relax\def#2{1\relax}\else\def#2{\z@}\fi} + \pst@expandafter\pst@tempg{#1}\relax\@nil} + +\def\psset@headers#1{% + \def\pst@tempg##1##2\@nil{% + \ifx u##1\relax + \def\psk@headers{1\relax}% + \else + \ifx a#1\relax + \def\psk@headers{2\relax}% + \else + \def\psk@headers{\z@}% + \fi + \fi}% + \pst@expandafter\pst@tempg{#1}\relax\@nil} +\psset@headers{none} + +\def\psset@checkfile#1{\pst@getboolean{#1}\psk@checkfile} +\psset@checkfile{true} + +\def\psset@makeeps#1{% + \def\pst@tempg{#1}% + \ifx\pst@tempg\@none + \def\psk@makeeps{\z@}% + \else + \def\pst@temph{all}% + \ifx\pst@tempg\pst@temph + \def\psk@makeeps{3\relax}% + \else + \def\pst@temph{all*}% + \ifx\pst@tempg\pst@temph + \def\psk@makeeps{2\relax}% + \else + \def\psk@makeeps{1\relax}% + \fi + \fi + \fi} +\psset@makeeps{new} + +\def\psset@headerfile#1{\def\psk@headerfile{#1}} +\psset@headerfile{} + +\def\pst@checkfile#1{% + \ifcase\psk@makeeps + \@pstfalse + \or + \immediate\openin1=#1 + \ifeof1\relax\@psttrue\else\@pstfalse\fi + \immediate\closein1 + \or + \immediate\openin1=#1 + \ifeof1 + \@psttrue + \else + \typeout{^^J% + PSTricks warning:^^J% + !! File `#1' exists and will be erased if in current directory!^^J% + !! Make `#1'? (y=yes; n=no)} + \read16 to \pst@tempg + \if y\pst@tempg\relax\@psttrue\else\@pstfalse\fi + \fi + \immediate\closein1=#1 + \or + \@psttrue + \fi} + +\def\PSTtoEPS{\def\pst@par{}\pst@object{PSTtoEPS}} +\begingroup +\catcode`\%=12 +\catcode`\"=14 +\long\gdef\PSTtoEPS@i#1#2{" + \begingroup + \use@par + \newlinechar`\^^J" + \pst@checkfile{#1}" + \if@pst + \immediate\openout\pst@epsout=#1 + \def\write@eps##1{\immediate\write\pst@epsout{##1}}" + \def\addto@pscode##1{" + \begingroup + \newlinechar`\ " + \write@eps{##1}" + \endgroup} + \write@eps{" + %!PS-Adobe-3.0 EPSF-3.0^^J" + %%Creator: PSTricks^^J" + %%Title: #1^^J" + %%CreationDate: \the\year/\the\month/\the\day^^J" + %%BoundingBox: + \psk@bbllx\space\psk@bblly\space\psk@bburx\space\psk@bbury^^J" + %%EndComments}" + \ifcase\psk@headers + \def\pst@tempg{}" + \or + \let\pst@tempg\psk@headerfile + \or + \edef\pst@tempg{\pst@theheaders,\psk@headerfile}" + \fi + \ifx\pst@tempg\@empty\else + \expandafter\pst@writeheaders\pst@tempg,\@nil + \fi + \write@eps{%%BeginSetup}" + \addto@pscode\pst@dict + \write@eps{%%EndSetup}" + \ifdim\pstunit=1bp\else + \pst@dimg=\pstunit\relax + \write@eps{\number\pst@dimg\space 65781.8 div dup scale}" + \fi + \addto@pscode{" + \tx@STP + 0 setlinecap + 0 setlinejoin + 10 setmiterlimit + [] 0 setdash + newpath}" + \setbox\pst@hbox=\hbox{" + \def\init@pscode{" + \write@eps{" + gsave + \psk@origin + \psk@swapaxes + \pst@number\pslinewidth SLW + \pst@usecolor\pslinecolor}}" + \def\use@pscode{\write@eps{grestore}}" + \let\pst@rawfile\pst@filetoeps + \def\psclip#1{\pst@misplaced\psclip}" + \let\endpsclip\relax + \def\pstextpath@@@[##1](##2,##3)##4{\pst@misplaced\pstextpath}" + \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}" + \def\PSTtoEPS@i##1##2{\pst@misplaced\PSTtoEPS}" + #2}" + \write@eps{" + %%Trailer^^J" + end^^J" + %%EOF}" + \immediate\closeout\pst@epsout + \fi + \endgroup + \ignorespaces} + +\gdef\pst@writeheaders#1,{" + \def\pst@tempg{#1}" + \ifx\pst@tempg\@empty\else + \write@eps{%%BeginProcSet: #1}" + \pst@filetoeps{#1}" + \write@eps{%%EndProcSet}" + \fi + \@ifnextchar\@nil{\let\pst@tempg}{\pst@writeheaders}} +\endgroup + +\def\pst@filetoeps#1{% + \begingroup + \def\do##1{\catcode`##1=12\relax}% + \dospecials + \def\addto@pscode##1{\write@eps{##1}}% + \pst@@rawfile{#1}% + \endgroup} + +\catcode`\@=\TheAtCode\relax + +\endinput +%% +%% END pst-eps.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-fill.tex b/Master/texmf-dist/tex/generic/pstricks/pst-fill.tex new file mode 100644 index 00000000000..bf980598931 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-fill.tex @@ -0,0 +1,471 @@ +%% BEGIN pst-fill.tex +%% +%% Filling and tiling with PSTricks 97. +%% +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% +%% Note (hv - August 17, 04 ): +%% merge the VTeX and TeX versions (patch 4) +%% Note (hv - June 22, 04 ): +%% * delete the Pst@Debug option and use the +%% the one from pstricks to prevent a clash with pst-gr3d +%% * Patched by MV 09-10-2001 to make it work with VTeX. +%% Note (D.G. - April 8, 97 and November / December 97): +%% * With a \PstTiling macro defined (or "tiling" optional parameter +%% on \usepackage[tiling]{pst-fill}), this file run exactly as +%% the original boxfill.tex file from Timothy, version 0.94, +%% except a correction in \pst@ManualFillCycle to avoid a division by 0. +%% It's the default. +%% * With a \PstTiling macro defined (or "tiling" optional parameter +%% on \usepackage[tiling]{pst-fill}) there are several add-ons +%% and changes to do `tiling' rather than `filling' in "automatic" mode : +%% - we fix the position of the beginning of tiling, +%% - we allow normally the framing of the area as expected, using +%% the line.... parameters +%% - we define move parameters fillmovex, fillmovey and fillmove, +%% - we define fillcyclex as previous fillcycle parameter, and add the +%% fillcycley and fillcycle (both fillcyclex and fillcycley) ones +%% - we can extend the tiling area using fillloopaddx, fillloopaddy and +%% fillloopadd parameters, +%% - we can debug and see the whole tiling area without clipping using +%% PstDebug parameter, +%% - for names consistancy, we can use fillangle in place of boxfillangle +%% and fillsize in place of boxfillsize, +%% - default value for fillsep is 0 and for fillsize is auto. + +% Preliminaries: + +\csname PSTboxfillLoaded\endcsname +\let\PSTboxfillLoaded\endinput + +\ifx\PSTricksLoaded\endinput\else + \def\next{\input pstricks.tex} + \expandafter\next +\fi + +\def\fileversion{97 patch 4} +\def\filedate{2004/08/18} +\message{ v\fileversion, \filedate} + +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 + +% The box: + +\newbox\pst@fillbox +\def\psboxfill{\pst@killglue\pst@makebox\psboxfill@i} +\def\psboxfill@i{\setbox\pst@fillbox\box\pst@hbox\ignorespaces} + +% Parameters: + +\def\psset@boxfillsize#1{% + \def\pst@tempg{#1}\def\pst@temph{auto}% + \ifx\pst@tempg\pst@temph + \let\psk@boxfillsize\relax + \else + \psset@@boxfillsize#1(\z@,\z@)\@empty(\z@,\z@)(\@nil + \fi} +\def\psset@@boxfillsize#1(#2,#3)#4(#5,#6)#7(#8\@nil{% + \begingroup + \ifx\@empty#7\relax + \pst@dima\z@ + \pst@dimb\z@ + \pssetxlength\pst@dimc{#2}% + \pssetylength\pst@dimd{#3}% + \else + \pssetxlength\pst@dima{#2}% + \pssetylength\pst@dimb{#3}% + \pssetxlength\pst@dimc{#5}% + \pssetylength\pst@dimd{#6}% + \fi + \xdef\pst@tempg{% + \pst@dima=\number\pst@dima sp + \pst@dimb=\number\pst@dimb sp + \pst@dimc=\number\pst@dimc sp + \pst@dimd=\number\pst@dimd sp }% + \endgroup + \let\psk@boxfillsize\pst@tempg} + +\psset{boxfillsize={(-15cm,-15cm)(15cm,15cm)}} + +\def\psset@boxfillcolor#1{\pst@getcolor{#1}\psboxfillcolor} +%\def\psboxfillcolor{\black} +\psset@boxfillcolor{black}% hv + +\def\psset@boxfillangle#1{\pst@getangle{#1}\psk@boxfillangle} +\psset@boxfillangle{0} + +\def\psset@fillsepx#1{\pst@getlength{#1}\psk@fillsepx} +\def\psset@fillsepy#1{\pst@getlength{#1}\psk@fillsepy} +\def\psset@fillsep#1{\psset@fillsepx{#1}\let\psk@fillsepy\psk@fillsepx} +\psset@fillsep{2pt} + +% DG addition begin - Apr. 8, 1997 and Nov. 1997 - Patch 2 +\ifx\PstTiling\@undefined + \def\psset@fillcycle#1{\pst@getint{#1}\psk@fillcycle} + \psset@fillcycle{0} +\else +% For consistancy, use "fill" as prefix for angle and size + \def\psset@fillangle#1{\psset@boxfillangle{#1}} + \def\psset@fillsize#1{\psset{boxfillsize={#1}}} +% Change some default values with better ones for tilings + \psset@fillsep{0} + \psset{fillsize=auto} +% Define fillcyclex (previously fillcycle), fillcycley and fillcycle for both + \def\psset@fillcyclex#1{\pst@getint{#1}\psk@fillcyclex} + \def\psset@fillcycley#1{\pst@getint{#1}\psk@fillcycley} + \def\psset@fillcycle#1{% + \psset@fillcyclex{#1}\let\psk@fillcycley\psk@fillcyclex} + \psset@fillcycle{0} +% Define fillmove, fillmovex and fillmovey parameters + \def\psset@fillmovex#1{\pst@getlength{#1}\psk@fillmovex} + \def\psset@fillmovey#1{\pst@getlength{#1}\psk@fillmovey} + \def\psset@fillmove#1{\psset@fillmovex{#1}\psset@fillmovey{#1}} + \psset@fillmove{0pt} +% Define fillloopaddx, fillloopaddy and fillloopadd parameters +% if tiling is not complete + \def\psset@fillloopaddx#1{\pst@getint{#1}\psk@fillloopaddx} + \def\psset@fillloopaddy#1{\pst@getint{#1}\psk@fillloopaddy} + \def\psset@fillloopadd#1{% + \psset@fillloopaddx{#1}\let\psk@fillloopaddy\psk@fillloopaddx} + \psset@fillloopadd{0} +% For debugging (to debug, set PstDebug=1) +% we now use the one from pstricks to prevent a clash with package +% pst-gr3d 2004-06-22 +% \def\psset@PstDebug#1{\pst@getint{#1}\psk@PstDebug} + \psset@PstDebug{0} +\fi +% DG addition end + +% Main macro: + +\def\psfs@boxfill{% + \ifvoid\pst@fillbox + \@pstrickserr{Fill box is empty. Use \string\psboxfill\space first.}\@ehpa + \else + \ifx\psk@boxfillsize\relax + \pst@AutoBoxFill + \else + \pst@ManualBoxFill + \fi + \fi} + +% Manual box fill: + +\def\pst@ManualBoxFill{% + \leavevmode + \begingroup + \pst@FlushCode + \begin@psclip + \pstVerb{clip}% + \expandafter\pst@AddFillBox\psk@boxfillsize + \end@psclip + \endgroup} + +\def\pst@FlushCode{% + \pst@Verb{% + /mtrxc CM def + CP CP T + \tx@STV + \psk@origin + \psk@swapaxes + \pst@newpath + \pst@code + mtrxc setmatrix + moveto + 0 setgray}% + \gdef\pst@code{}} + +\def\pst@AddFillBox#1 #2 #3 #4 {% + \begingroup + \setbox\pst@fillbox=\vbox{% + \hbox{\unhcopy\pst@fillbox\kern\psk@fillsepx\p@}% + \vskip\psk@fillsepy\p@}% + \psk@boxfillsize + \pst@cnta=\pst@dimc + \advance\pst@cnta-\pst@dima + \divide\pst@cnta\wd\pst@fillbox + \pst@cntb=\pst@dimd + \advance\pst@cntb-\pst@dimb + \pst@dimd=\ht\pst@fillbox + \divide\pst@cntb\pst@dimd + \def\pst@tempa{% + \pst@tempg + \copy\pst@fillbox + \advance\pst@cntc\@ne + \ifnum\pst@cntc<\pst@cntd\expandafter\pst@tempa\fi}% + \let\pst@tempg\relax + \pst@cntc-\tw@ + \pst@cntd\pst@cnta + \setbox\pst@fillbox=\hbox to \z@{% + \kern\pst@dima + \kern-\wd\pst@fillbox + \pst@tempa + \hss}% + \pst@cntd\pst@cntb +% DG modification begin - Dec. 11, 1997 - Patch 2 + \ifx\PstTiling\@undefined + \ifnum\psk@fillcycle=\z@\pst@ManualFillCycle\fi + \else + \ifnum\psk@fillcyclex=\z@\pst@ManualFillCycle\fi + \fi +% DG modification end + \global\setbox\pst@boxg=\vbox to\z@{% + \offinterlineskip + \vss + \pst@tempa + \vskip\pst@dimb}% + \endgroup + \setbox\pst@fillbox\box\pst@boxg + \pst@rotate\psk@boxfillangle\pst@fillbox + \box\pst@fillbox} + +\def\pst@ManualFillCycle{% +% DG modification begin - Dec. 11, 1997 - Patch 2 + \ifx\PstTiling\@undefined + \pst@cntg=\psk@fillcycle + \else + \pst@cntg=\psk@fillcyclex + \fi +% DG modification end + \pst@dimg=\wd\pst@fillbox +% DG modification begin - Mar. 20, 1997 - Patch 1 (to avoid division by 0) +% \divide\pst@dimg\pst@cntg + \ifnum\pst@cntg=\z@ + \else + \divide\pst@dimg\pst@cntg + \fi +% DG modification end + \ifnum\pst@cntg<\z@\pst@cntg=-\pst@cntg\fi + \advance\pst@cntg\m@ne + \pst@cnth=\pst@cntg + \def\pst@tempg{% + \ifnum\pst@cnth<\pst@cntg\advance\pst@cnth\@ne\else\pst@cnth\z@\fi + \moveright\pst@cnth\pst@dimg}} + +% Auto box fill: !! Fix dictionary + +% DG addition begin - Apr. 8, 1997 and Dec. 1997 - Patch 2 +\ifx\PstTiling\@undefined +% DG addition end +% Original version +\pst@def{AutoFillCycle}<% + /c ED + /n 0 def + /s { + /x x w c div n mul add def + /n n c abs 1 sub lt { n 1 add } { 0 } ifelse def + } def> + +\pst@def{BoxFill}<% + gsave + gsave \tx@STV CM grestore dtransform CM idtransform + abs /h ED abs /w ED + pathbbox + h div round 2 add cvi /y2 ED + w div round 2 add cvi /x2 ED + h div round 2 sub cvi /y1 ED + w div round 2 sub cvi /x1 ED + /y2 y2 y1 sub def + /x2 x2 x1 sub def + CP + y1 h mul sub neg /y1 ED + x1 w mul sub neg /x1 ED + clip + y2 { + /x x1 def + s + x2 { + save CP x y1 +% patch 4 hv -------------- + \ifx\VTeXversion\undefined + \else +%============ mv: 09-10-01 ??? this is likely to be a right change + neg +%============ + \fi +% end patch 4 + T moveto Box restore + /x x w add def + } repeat + /y1 y1 h add def + } repeat + % Next line not useful... To see that, suppress clipping (DG) + CP x y1 T moveto Box + currentpoint currentfont grestore setfont moveto> +\else +% DG modification begin - Apr. 8, 1997 and Nov. / Dec. 1997 - Patch 2 +\pst@def{AutoFillCycleX}<% + /cX ED + /nX 0 def + /CycleX { + /x x w cX div nX mul add def + /nX nX cX abs 1 sub lt { nX 1 add } { 0 } ifelse def + } def> +\pst@def{AutoFillCycleY}<% + /cY ED + /mY 0 def + /nY 0 def + /CycleY { + /y1 y1 h cY div mY mul sub def + nY cY abs 1 sub lt { /nY nY 1 add def /mY 1 def } + { /nY 0 def /mY cY abs 1 sub neg def } ifelse + } def> + +\pst@def{BoxFill}<% + gsave + gsave \tx@STV CM grestore dtransform CM idtransform + abs /h ED abs /w ED + pathbbox + h div round 2 add cvi /y2 ED + w div round 2 add cvi /x2 ED + h div round 2 sub cvi /y1 ED + w div round 2 sub cvi /x1 ED +% We must enlarge the area if fillangle, fillcycle, fillmove or fillsep are used + /CoefLoopX 0 def + /CoefLoopY 0 def + /CoefMoveX 0 def + /CoefMoveY 0 def + \psk@boxfillangle 0 ne {/CoefLoopX 8 def /CoefLoopY 8 def} if + \psk@fillcyclex 0 ne {/CoefLoopX CoefLoopX 1 add def} if + \psk@fillcycley 0 ne {/CoefLoopY CoefLoopY 1 add def} if + \psk@fillmovex 0 ne + {/CoefLoopX CoefLoopX 2 add def + \psk@fillmovex 0 gt {/CoefMoveX CoefLoopX def} + {/CoefMoveX CoefLoopX neg def} ifelse} if + \psk@fillmovey 0 ne + {/CoefLoopY CoefLoopY 2 add def + \psk@fillmovey 0 gt {/CoefMoveY CoefLoopY def} + {/CoefMoveY CoefLoopY neg def} ifelse} if + \psk@fillsepx 0 ne {/CoefLoopX CoefLoopX 1 add def} if + \psk@fillsepy 0 ne {/CoefLoopY CoefLoopY 1 add def} if + /CoefLoopX CoefLoopX \psk@fillloopaddx add def + /CoefLoopY CoefLoopY \psk@fillloopaddy add def +% + /x2 x2 x1 sub 4 sub CoefLoopX 2 mul add def + /y2 y2 y1 sub 4 sub CoefLoopY 2 mul add def +% We must fix the origin of tiling, as it must not vary according other stuff +% in the page! + w x1 CoefLoopX add CoefMoveX add mul + h y1 y2 add 1 sub CoefLoopY sub CoefMoveY sub mul moveto +% + CP + y1 h mul sub neg /y1 ED + x1 w mul sub neg /x1 ED +% hv 2004-06-22 to prevent clash with pst-gr3d +% \psk@PstDebug 0 eq {clip} if + \Pst@Debug 0 eq {clip} if +% end hv + \psk@fillmovex \psk@fillmovey + gsave \tx@STV CM grestore dtransform CM idtransform + /hmove ED /wmove ED +% + /row 0 def + y2 { + /row row 1 add def + /column 0 def + /x x1 def + CycleX + save + x2 { + /column column 1 add def + CycleY + save CP x y1 +% patch 4 hv -------------- + \ifx\VTeXversion\undefined + \else +%============ mv: 09-10-01 ??? this is likely to be a right change + neg +%============ + \fi +% end patch 4 + T moveto Box restore + /x x w add def + 0 hmove translate + } repeat + restore + /y1 y1 h add def + wmove 0 translate + } repeat + currentpoint currentfont grestore setfont moveto> +\fi +% DG modification end + +\def\pst@AutoBoxFill{% + \leavevmode + \begingroup +% DG addition begin - Dec. 2, 1997 - Patch 2 + \pst@stroke +% DG addition end + \pst@FlushCode + \pst@Verb{\psk@boxfillangle \tx@RotBegin}% + \pstVerb{\pst@dict /Box \pslbrace end}% +% DG addition begin - Apr. 8, 1997 and Nov. 5, 1997 - Patch 2 +% Useful when the starting point is not (0,0) + \ifx\PstTiling\@undefined + \else + \ifx\pst@tempa\@undefined % Undefined for instance for \pscharpath + \else + \def\pst@temph{0}% + \ifx\pst@tempa\pst@temph + \else + \pstVerb{/TR {pop pop currentpoint translate \pst@tempa\space translate } def}% + \fi + \fi + \fi +% DG addition end + \hbox to \z@{\vbox to\z@{\vss\copy\pst@fillbox\vskip-\dp\pst@fillbox}\hss}% +% DG addition begin - Dec. 8, 1997 - Patch 2 + \ifx\PstTiling\@undefined +% DG addition end + \pstVerb{% + tx@Dict begin \psrbrace def + \ifnum\psk@fillcycle=\z@ + /s {} def + \else + \psk@fillcycle \tx@AutoFillCycle + \fi + \pst@number{\wd\pst@fillbox}% + \psk@fillsepx add + \pst@number{\ht\pst@fillbox}% + \pst@number{\dp\pst@fillbox}% + \psk@fillsepy add add + \tx@BoxFill + end}% +% DG modification begin - Dec. 8, 1997 - Patch 2 + \else + \pstVerb{% + tx@Dict begin \psrbrace def + \ifnum\psk@fillcyclex=\z@ + /CycleX {} def + \else + \psk@fillcyclex \tx@AutoFillCycleX + \fi + \ifnum\psk@fillcycley=\z@ + /CycleY {} def + \else + \psk@fillcycley \tx@AutoFillCycleY + \fi + \pst@number{\wd\pst@fillbox}% + \psk@fillsepx add + \pst@number{\ht\pst@fillbox}% + \pst@number{\dp\pst@fillbox}% + \psk@fillsepy add add + \tx@BoxFill + end}% + \fi +% DG modification end + \pst@Verb{\tx@RotEnd}% + \endgroup} + +\catcode`\@=\TheAtCode\relax + +\endinput +%% +%% END pst-fill.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-grad.tex b/Master/texmf-dist/tex/generic/pstricks/pst-grad.tex new file mode 100644 index 00000000000..279b11c26ed --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-grad.tex @@ -0,0 +1,112 @@ +%% BEGIN pst-grad.tex +%% +%% Gradient fillstyle with PSTricks. +%% See the PSTricks User's Guide for description. +%% This uses the header file `pst-grad.pro'. +%% +%% Based on some EPS files by leeweyr!bill@nuchat.sccsi.com (W. R. Lee). +%% +\def\fileversion{1.04} +\def\filedate{2004/06/24} +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +%% version 1.04 prepared by Herbert Voss <voss _at_ pstricks.de> +%% +%% This defines a new fill style, "gradient", for use with PSTricks, +%% which has gradiated color. The following parameters are used: +%% +%% gradbegin=color : Beginning color. +%% gradend=color : Final color. +%% gradlines=int : Number of lines to use. The higher the number, +%% the slower the rendering. +%% gradmidpoint=num : Gradient color goes from gradbegin to gradend, +%% and then back to beginning. Midpoint (point +%% where "gradend" color appears, is gradmidpoint +%% from the top. (0 <= Gmidpoint <= 1). +%% gradangle=angle : Rotate image by angle. +%% GradientCircle=true : Instead of a linear a circled gradient is build. +%% (version 1.04) +%% GradientPos=(x,y) : the center of the circled gradient +%% (version 1.04) +%% GradientScale=float : scaling factor of the circled gradient +%% (version 1.04) +%% +\message{ v\fileversion, \filedate} + +\csname GradientLoaded\endcsname +\let\GradientLoaded\endinput + +\ifx\PSTricksLoaded\endinput\else + \def\next{\input pstricks.tex }\expandafter\next +\fi + +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 + +\pstheader{pst-grad.pro} + +\newrgbcolor{gradbegin}{0 .1 .95} +\def\psset@gradbegin#1{\pst@getcolor{#1}\psgradbegin} +\psset@gradbegin{gradbegin} + +\newrgbcolor{gradend}{0 1 1} +\def\psset@gradend#1{\pst@getcolor{#1}\psgradend} +\psset@gradend{gradend} + +\def\psset@gradlines#1{% + \pst@getint{#1}\psgradlines + \ifnum\psgradlines<2 + \@pstrickserr{gradlines must be at least 2}\@epha + \def\psgradlines{2 }% + \fi} +\psset@gradlines{300} + +\def\psset@gradmidpoint#1{\pst@checknum{#1}\psgradmidpoint} +\psset@gradmidpoint{.9} + +\def\psset@gradangle#1{\pst@getangle{#1}\psk@gradangle} +\psset@gradangle{0} + +% Denis Girou - April 1998 ------- patch 2 (hv) +% To define the gradient as linear or as circle +\newif\ifGradientCircle +\def\psset@GradientCircle#1{\@nameuse{GradientCircle#1}} +\psset@GradientCircle{false} + +% Position of the center of the gradient +\def\psset@GradientPos#1{\psset@@GradientPos#1} +\def\psset@@GradientPos(#1){\edef\ps@GradientPos{#1}} +\psset@GradientPos{(0,0)} + +% Scale factor +\def\psset@GradientScale#1{\edef\ps@GradientScale{#1}} +\psset@GradientScale{1} + +\def\psfs@gradient{% +% D.G. modification begin - Apr. 9, 1998 + %\addto@pscode{gsave + \pst@getcoor{\ps@GradientPos}{\pst@tempa}% <- "%" hv 2004-06-23 + \addto@pscode{gsave + \ifGradientCircle true \else false \fi + \ps@GradientScale\space + \pst@tempa +% D.G. modification end + gsave \pst@usecolor\psgradbegin currentrgbcolor grestore + gsave \pst@usecolor\psgradend currentrgbcolor grestore + \psgradlines + \psgradmidpoint + \psk@gradangle + tx@GradientDict begin GradientFill end grestore + }% +} + +\catcode`\@=\TheAtCode\relax + +\endinput +%% +%% END pst-grad.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-key.tex b/Master/texmf-dist/tex/generic/pstricks/pst-key.tex new file mode 100644 index 00000000000..06fa572ac8d --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-key.tex @@ -0,0 +1,100 @@ +%% +%% This is file `pst-key.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% keyval.dtx (with options: `package,plain,pstricks') +%% +%% This file is based on keyval.dtx from the LaTeX tools distribution. +%% It may be distributed and used with the conditions applying to the +%% PSTricks distribution. See the comments in pstricks.tex for details. +%% +%% File: keyval.dtx Copyright (C) 1993 1994 1995 1997 1998 David Carlisle +\def\next[#1]{\catcode`\@=11 + \expandafter\let\csname ver@keyval.sty\endcsname\empty + \wlog{keyval: #1}}\next + [1998/07/23 v1.11 key=value parser (DPC)] +\def\setkeys{% + \@ifnextchar[% + \KV@list + {\let\KV@undefined\KV@error + \KV@setkeys}} +\def\KV@psset{psset} +\def\KV@setkeys#1#2{% + \def\@tempa{#1}% + \edef\KV@prefix{% + \ifx\@tempa\KV@psset\else + KV@% + \fi + #1@}% + \KV@do#2,\relax,} +\def\psset#1{% + \def\KV@prefix{psset@}% + \KV@do#1,\relax,} +\def\use@par{\expandafter\psset\expandafter{\pst@par}% + \let\pst@par\@empty} +\def\KV@list[#1]{% + \def\KV@undefined{\KV@add#1}% + \ifx#1\@undefined + \let#1\@empty + \fi + \KV@setkeys} +\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@undefined{#2}{#3}% + \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@err{No value specified for \@tempa}% + \else + \@tempb\relax + \fi} +\def\KV@add#1#2#3{% + \toks2\expandafter{#1}% + \KV@@sp@def\@tempb{#2}% + \toks4\expandafter{\@tempb}% + \edef#1{\the\toks2 + \ifx#1\@empty\else,\fi + \@tempa + \ifx\KV@add#3\KV@add\else={\the\toks4}\fi}} +\def\KV@err#1{\errmessage{keyval: #1}} +\def\KV@error#1#2{\KV@err{\@tempa\space undefined}} +\def\@tempa#1{% +\def\KV@@sp@def##1##2{\KV@@sp@b##2\@nil\@nil#1\@nil\relax##1}} +\@tempa{ } +\def\KV@@sp@b#1#2 \@nil{\KV@@sp@c#1#2} +\def\KV@@sp@c#1\@nil#2\relax#3{\def#3{#1}} +\def\define@key#1#2{% + \def\KV@prefix{#1}% + \edef\KV@prefix{% + \ifx\KV@prefix\KV@psset\else + KV@% + \fi + #1@#2}% + \@ifnextchar[\KV@def{\@namedef\KV@prefix####1}} +\def\KV@def[#1]{% + \@namedef{\KV@prefix @default\expandafter}\expandafter + {\csname \KV@prefix\endcsname{#1}}% + \@namedef\KV@prefix##1} +\endinput +%% +%% End of file `pst-key.tex'. diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-node.tex b/Master/texmf-dist/tex/generic/pstricks/pst-node.tex new file mode 100644 index 00000000000..234e94e642e --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-node.tex @@ -0,0 +1,1133 @@ +%% BEGIN pst-node.tex +%% +%% Nodes with PSTricks 97. +%% See the betadoc documentation for usage. +%% This uses the header file `pst-node.pro'. +%% +\def\fileversion{97 patch 11} +\def\filedate{2000/11/09} +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\message{ v\fileversion, \filedate} +\csname PSTnodesLoaded\endcsname +\let\PSTnodesLoaded\endinput +\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi\relax +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 +\pstheader{pst-node.pro} +\def\pst@nodedict{tx@NodeDict begin } +\def\pst@zapspace#1 #2{% +#1% +\ifx#2\@empty\else\expandafter\pst@zapspace\fi +#2} +\def\pst@getnode#1#2{% +\pst@expandafter\pst@@getnode{#1},,\@nil#2} +\def\pst@@getnode#1,#2,#3\@nil#4{% +\ifx\@empty#3\@empty +\edef#4{/N@\pst@zapspace#1 \@empty\space}% +\else +\pst@cntg=#1\relax +\pst@cnth=#2\relax +\edef#4{/N@M-\ifnum\psmatrixcnt=\z@ 1\else\the\psmatrixcnt\fi +-\the\pst@cntg-\the\pst@cnth\space}% +\fi} +\def\tx@NewNode{NewNode } +\def\pst@newnode#1#2#3#4{% +% DG/SR modification begin - Nov. 9, 2000 - Patch 11 +\pst@killglue +% DG/SR modification end +\leavevmode +\pst@getnode{#1}\pst@thenode +\pst@Verb{% +\pst@nodedict +{#3} +\ifx\psk@name\relax false \else \psk@name true \fi +\pst@thenode +#2 +{#4} +\tx@NewNode +end}% +\global\let\psk@name\relax +\pstree@nodehook +\global\let\pstree@nodehook\relax} +\let\pstree@nodehook\relax +\newif\ifnodealign +\def\psset@nodealign#1{\@nameuse{nodealign#1}} +\psset@nodealign{false} +\def\pst@nodealign{% +\pst@dimg=\ht\pst@hbox +\advance\pst@dimg-\dp\pst@hbox +\divide\pst@dimg2 +\lower\pst@dimg} +\def\tx@InitPnode{InitPnode } +\def\pnode{\@ifnextchar({\pnode@}{\pnode@(0,0)}} +\def\pnode@(#1)#2{% +\pst@@getcoor{#1}% +\pst@newnode{#2}{10}{\pst@coor}{\tx@InitPnode}% +\ignorespaces} +\def\tx@InitCnode{InitCnode } +\def\cnode{\pst@object{cnode}} +\def\cnode@i{\@ifnextchar({\cnode@ii}{\cnode@ii(0,0)}} +\def\cnode@ii(#1)#2#3{% +\leavevmode +\hbox{% +\use@par +\pst@@getcoor{#1}% +\pssetlength\pst@dimc{#2}% +\pst@dimg=\psk@dimen\pslinewidth +\advance\pst@dimc-\pst@dimg +\advance\pst@dimc.5\pslinewidth +\ifnodealign +\kern\pst@dimc +\vrule width\z@ height \pst@dimc depth \pst@dimc +\fi +\pscircle@do(#1){#2}% +\pst@newnode{#3}{11}{\pst@coor \pst@number\pst@dimc}{\tx@InitCnode}% +% DG/SR modification begin - Jul. 30, 1997 - Patch 2 +%\ifnodealign \kern\pst@dimc\egroup \fi}% +\ifnodealign\kern\pst@dimc\fi}% +% DG/SR modification end +\ignorespaces} +\def\Cnode{\pst@object{Cnode}} +\def\Cnode@i{\@ifnextchar({\Cnode@ii}{\Cnode@ii(0,0)}} +\def\Cnode@ii(#1)#2{\cnode@ii(#1){\psk@radius}{#2}}% +\def\cnodeput{\pst@object{cnodeput}} +\def\cnodeput@i{\@ifnextchar({\cnodeput@iii}{\cnodeput@ii}} +\def\cnodeput@ii#1{% +\addto@par{rot={#1}}% +\@ifnextchar({\cnodeput@iii}{\cnodeput@iii(\z@,\z@)}} +\def\cnodeput@iii(#1)#2{% +\pst@killglue +\@fixedradiusfalse +\def\pst@nodehook{\cnodeput@iv{#2}}% +\pst@makebox{\cput@v{#1}}} +\def\cnodeput@iv#1{% +\pst@newnode{#1}{11}{\pscirclebox@iv \pst@number\pslinewidth add}% +{\tx@InitCnode}% +\global\let\pst@nodehook\relax} +\def\Cnodeput{\pst@object{Cnodeput}} +\def\Cnodeput@i{\@ifnextchar({\Cnodeput@iii}{\Cnodeput@ii}} +\def\Cnodeput@ii#1{% +\addto@par{rot={#1}}% +\@ifnextchar({\Cnodeput@iii}{\Cnodeput@iii(\z@,\z@)}} +\def\Cnodeput@iii(#1)#2{% +\pst@killglue +\@fixedradiustrue +\def\pst@nodehook{\Cnodeput@iv{#2}}% +\pst@makebox{\cput@iv{#1}}} +\def\Cnodeput@iv#1{% +\pst@newnode{#1}{11}{% +\pst@number{\wd\pst@hbox} 2 div \pst@number\pst@dima % x y +\pst@number\pst@dimb \pst@number\pslinewidth \psk@dimen .5 sub mul sub }% r +{\tx@InitCnode}% +\global\let\pst@nodehook\relax} +\def\circlenode{\pst@object{circlenode}} +\def\circlenode@i#1{\pst@makebox{\circlenode@ii{#1}}} +\def\circlenode@ii#1{% +\begingroup +\pst@useboxpar +\setbox\pst@hbox=\hbox{% +\cnodeput@iv{#1}% +\pscirclebox@iii +\box\pst@hbox}% +\ifnodealign \psboxseptrue \fi +\ifpsboxsep \pscirclebox@sep \fi +\leavevmode +\ifnodealign\pst@nodealign\fi +\box\pst@hbox +\endgroup} +\def\Circlenode{\pst@object{Circlenode}} +\def\Circlenode@i#1{\pst@makebox{\Circlenode@ii{#1}}} +\def\Circlenode@ii#1{% +\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{% +\Cnodeput@iv{#1}% +\pscircle(.5\wd\pst@hbox,\pst@dima){\pst@dimb}% +\box\pst@hbox}% +\ifnodealign \psboxseptrue \fi +\ifpsboxsep \psCirclebox@sep \fi +\leavevmode +\ifnodealign\pst@nodealign\fi +\box\pst@hbox +\endgroup} +\def\tx@GetRnodePos{GetRnodePos } +\def\tx@InitRnode{InitRnode } +\def\rnode{\@ifnextchar[{\rnode@i}{\def\pst@par{}\rnode@ii}} +\def\rnode@i[#1]{\def\pst@par{ref=#1}\rnode@ii} +\def\rnode@ii#1{\pst@makebox{\rnode@iii\rnode@iv{#1}}} +\def\rnode@iii#1#2{% +% DG modification begin - Jan. 1997 +\leavevmode +% DG modification end +\begingroup +% DG/SR modification begin - Apr. 28, 1998 - Patch 6 +\pst@useboxpar +% DG/SR modification end +#1% +\if@star\pst@starbox\fi +\ifnodealign\lower\pst@dimb\fi +\hbox{% +\pst@newnode{#2}{16}{% +\pst@number{\ht\pst@hbox}% +\pst@number{\dp\pst@hbox}% +\pst@number{\wd\pst@hbox}% +\pst@number\pst@dima +\pst@number\pst@dimb}% +{\tx@InitRnode}% +\box\pst@hbox}% +\endgroup} +\def\rnode@iv{% +\pst@dima=\psk@xref\wd\pst@hbox +\ifx\psk@yref\relax +\pst@dimb=\z@ +\else +\pst@dimb=\ht\pst@hbox +\advance\pst@dimb\dp\pst@hbox +\pst@dimb=\psk@yref\pst@dimb +\advance\pst@dimb-\dp\pst@hbox +\fi} +\def\psset@href#1{\pst@checknum{#1}\psk@href} +\psset@href{0} +\def\psset@vref#1{\def\psk@vref{#1}} +\psset@vref{.7ex} +\def\Rnode{\pst@object{Rnode}} +\def\Rnode@i#1{\pst@makebox{\rnode@iii\Rnode@ii{#1}}} +\def\Rnode@ii{% +% DG modification begin - Jan. 1997 +% - \begingroup removed as it seems to doesn't work any more +% - \Rnode doesn't process the optional parameter changes +%\begingroup +\use@par +% DG modification end +\pst@dima=\psk@href\wd\pst@hbox +\advance\pst@dima\wd\pst@hbox +\divide\pst@dima 2 +\pssetlength\pst@dimb{\psk@vref}} +\def\tx@DiaNodePos{DiaNodePos } +\def\dianode{\pst@object{dianode}} +\def\dianode@i#1{\pst@makebox{\dianode@ii{#1}}} +\def\dianode@ii#1{% +\begingroup +\pst@useboxpar +\psdiabox@iii +\setbox\pst@hbox=\hbox{% +\pst@newnode{#1}{14}{}{% +/X \pst@number\pst@dima def +/Y \pst@number\pst@dimb def +/w \pst@number\pst@dimc 2 mul def +/h \pst@number\pst@dimd 2 mul def +/NodePos { \tx@DiaNodePos } def}% +\box\pst@hbox}% +\ifnodealign\psboxseptrue\fi +\ifpsboxsep\psdiabox@sep\fi +% DG/SR modification begin - Sep. 2, 1997 - Patch 3 +\leavevmode +% DG/SR modification end +\ifnodealign\lower\pst@dimb\fi +\box\pst@hbox +\endgroup} +\def\tx@TriNodePos{TriNodePos } +\def\tx@InitTriNode{InitTriNode } +\def\trinode{\pst@object{trinode}} +\def\trinode@i#1{\pst@makebox{\trinode@ii{#1}}} +\def\trinode@ii#1{% +\begingroup +\pst@useboxpar +\pstribox@iii +\setbox\pst@hbox=\hbox{% +\pst@newnode{#1}{14}{}{% +\pst@number\pst@dimc +\pst@number\pst@dimd +\ifodd\psk@trimode +exch +\pst@number\pst@dima +\else +\pst@number\pst@dimb +\fi +\psk@trimode +\pst@number{\wd\pst@hbox}% +\pst@number{\ht\pst@hbox}% +\pst@number{\dp\pst@hbox}% +\tx@InitTriNode}% +\box\pst@hbox}% +\ifnodealign\psboxseptrue\fi +\ifpsboxsep\pstribox@sep\fi +% DG/SR modification begin - Sep. 2, 1997 - Patch 3 +\leavevmode +% DG/SR modification end +\ifnodealign\lower\pst@tempa\fi +\box\pst@hbox +\endgroup} +\def\tx@OvalNodePos{OvalNodePos } +\def\ovalnode{\pst@object{ovalnode}} +\def\ovalnode@i#1{\pst@makebox{\ovalnode@ii{#1}}} +\def\ovalnode@ii#1{% +\begingroup +\pst@useboxpar +\psovalbox@iii +\setbox\pst@hbox=\hbox{% +\pst@newnode{#1}{14}{}{% +/X \pst@number\pst@dima def +/Y \pst@number\pst@dimb def +/w \pst@number\pst@dimc def +/h \pst@number\pst@dimd def +/NodePos { \tx@OvalNodePos } def}% +\unhbox\pst@hbox}% +\ifnodealign\psboxseptrue\fi +\ifpsboxsep\psovalbox@sep\fi +% DG/SR modification begin - Sep. 2, 1997 - Patch 3 +\leavevmode +% DG/SR modification end +\ifnodealign\lower\pst@dimb\fi +\box\pst@hbox +\endgroup} +\def\dotnode{\pst@object{dotnode}} +\def\dotnode@i{\@ifnextchar({\dotnode@ii}{\dotnode@ii(\z@,\z@)}} +\def\dotnode@ii(#1)#2{% +\leavevmode +\hbox{% +\use@par +\pst@@getcoor{#1}% +\pst@getdotsize +\pstree@nodehook +\ifnodealign +\pst@dima=\pst@dimg +\kern\pst@dima +\vrule width\z@ height \pst@dimh depth \pst@dimh +\fi +\pst@newnode{#2}{14}{}{% +\pst@coor +/Y ED /X ED +/w \pst@number\pst@dimg def +/h \pst@number\pst@dimh def +/NodePos { \tx@OvalNodePos } def}% +\psdot@ii(#1)% +\ifnodealign\kern\pst@dima\fi}% +\ignorespaces} +\def\psset@framesize#1{\pst@expandafter\psset@@framesize{#1} \@nil} +\def\psset@@framesize#1 #2\@nil{% +\pssetlength\pst@dimg{#1}% +\divide\pst@dimg2 +\edef\psk@framewidth{\pst@number\pst@dimg}% +\ifx\@empty#2\@empty +\let\psk@frameheight\psk@framewidth +\else +\pssetlength\pst@dimg{#2}% +\divide\pst@dimg2 +\edef\psk@frameheight{\pst@number\pst@dimg}% +\fi} +\psset@framesize{10pt} +\def\fnode{\pst@object{fnode}} +\def\fnode@i{\@ifnextchar({\fnode@ii}{\fnode@ii(\z@,\z@)}} +\def\fnode@ii(#1)#2{% +\leavevmode +\pst@killglue +\hbox{% +\use@par +\begin@ClosedObj +\ifnodealign +\kern\psk@framewidth\p@ +\vrule width\z@ height \psk@frameheight\p@ depth \psk@frameheight\p@ +\edef\pst@coor{0 0 }% +\else +\pst@@getcoor{#1}% +\fi +\pst@newnode{#2}{14}{}{% +\pst@coor +/Y ED /X ED +/d \psk@dimen .5 sub CLW mul neg def +/r \psk@framewidth d add def +/l r neg def +/u \psk@frameheight d add def +/d u neg def +/NodePos { \tx@GetRnodePos } def}% +\addto@pscode{% +/x2 \psk@framewidth CLW \psk@dimen mul sub def +/y2 \psk@frameheight CLW \psk@dimen mul sub def +\pst@coor 2 copy +y2 sub /y1 ED +x2 sub /x1 ED +y2 add /y2 ED +x2 add /x2 ED +\psk@cornersize +1 index 0 eq { pop pop \tx@Rect } { \tx@OvalFrame } ifelse}% +\def\pst@linetype{2}% +\showpointsfalse +\end@ClosedObj +\ifnodealign\kern\psk@framewidth\p@\fi}% +\ignorespaces} +\def\psset@nodesepA#1{% +\pst@getlength{#1}\psk@nodesepA +\def\psk@nodeseptypeA{0 }} +\def\psset@nodesepB#1{% +\pst@getlength{#1}\psk@nodesepB +\def\psk@nodeseptypeB{0 }} +\def\psset@nodesep#1{% +\pst@getlength{#1}\psk@nodesepA +\let\psk@nodesepB\psk@nodesepA +\def\psk@nodeseptypeA{0 }% +\def\psk@nodeseptypeB{0 }} +\psset@nodesep{0pt} +\def\psset@XnodesepA#1{% +\pst@getlength{#1}\psk@nodesepA +\def\psk@nodeseptypeA{1 }} +\def\psset@XnodesepB#1{% +\pst@getlength{#1}\psk@nodesepB +\def\psk@nodeseptypeB{1 }} +\def\psset@Xnodesep#1{% +\pst@getlength{#1}\psk@nodesepA +\let\psk@nodesepB\psk@nodesepA +\def\psk@nodeseptypeA{1 }% +\def\psk@nodeseptypeB{1 }} +\def\psset@YnodesepA#1{% +\pst@getlength{#1}\psk@nodesepA +\def\psk@nodeseptypeA{2 }} +\def\psset@YnodesepB#1{% +\pst@getlength{#1}\psk@nodesepB +\def\psk@nodeseptypeB{2 }} +\def\psset@Ynodesep#1{% +\pst@getlength{#1}\psk@nodesepA +\let\psk@nodesepB\psk@nodesepA +\def\psk@nodeseptypeA{2 }% +\def\psk@nodeseptypeB{2 }} +\def\psset@armA#1{% +\pst@getlength{#1}\psk@armA +\def\psk@armtypeA{0 }} +\def\psset@armB#1{% +\pst@getlength{#1}\psk@armB +\def\psk@armtypeB{0 }} +\def\psset@arm#1{% +\pst@getlength{#1}\psk@armA +\let\psk@armB\psk@armA +\def\psk@armtypeA{0 }% +\def\psk@armtypeB{0 }} +\psset@arm{10pt} +\def\psset@XarmA#1{% +\pst@getlength{#1}\psk@armA +\def\psk@armtypeA{1 }} +\def\psset@XarmB#1{% +\pst@getlength{#1}\psk@armB +\def\psk@armtypeB{1 }} +\def\psset@Xarm#1{% +\pst@getlength{#1}\psk@armA +\let\psk@armB\psk@armA +\def\psk@armtypeA{1 }% +\def\psk@armtypeB{1 }} +\def\psset@YarmA#1{% +\pst@getlength{#1}\psk@armA +\def\psk@armtypeA{2 }} +\def\psset@YarmB#1{% +\pst@getlength{#1}\psk@armB +\def\psk@armtypeB{2 }} +\def\psset@Yarm#1{% +\pst@getlength{#1}\psk@armA +\let\psk@armB\psk@armA +\def\psk@armtypeA{2 }% +\def\psk@armtypeB{2 }} +\def\psset@offsetA#1{\pst@getlength{#1}\psk@offsetA} +\def\psset@offsetB#1{\pst@getlength{#1}\psk@offsetB} +\def\psset@offset#1{\psset@offsetA{#1}\let\psk@offsetB\psk@offsetA} +\psset@offset{0pt} +\def\psset@angleA#1{\pst@getangle{#1}\psk@angleA} +\def\psset@angleB#1{\pst@getangle{#1}\psk@angleB}% +\def\psset@angle#1{% +\pst@getangle{#1}\psk@angleA +\let\psk@angleB\psk@angleA} +\psset@angle{0} +\def\psset@arcangleA#1{\pst@getangle{#1}\psk@arcangleA} +\def\psset@arcangleB#1{\pst@getangle{#1}\psk@arcangleB}% +\def\psset@arcangle#1{% +\pst@getangle{#1}\psk@arcangleA +\let\psk@arcangleB\psk@arcangleA} +\psset@arcangle{8} +\def\psset@ncurvA#1{\pst@checknum{#1}\psk@ncurvA} +\def\psset@ncurvB#1{\pst@checknum{#1}\psk@ncurvB}% +\def\psset@ncurv#1{\psset@ncurvA{#1}\let\psk@ncurvB\psk@ncurvA} +\psset@ncurv{.67} +\def\tx@GetCenter{GetCenter } +\def\tx@XYPos{XYPos } +\def\tx@GetEdge{GetEdge } +\def\tx@AddOffset{AddOffset } +\def\tx@GetEdgeA{GetEdgeA } +\def\tx@GetEdgeB{GetEdgeB } +\def\tx@GetArmA{GetArmA } +\def\tx@GetArmB{GetArmB } +\def\check@arrow#1#2{% +\check@@arrow#2-\@nil +\if@pst +\addto@par{arrows=#2}% +\def\next{#1}% +\else +\def\next{#1{#2}}% +\fi +\next} +\def\check@@arrow#1-#2\@nil{% +\ifx\@nil#2\@nil\@pstfalse\else\@psttrue\fi} +\def\tx@InitNC{InitNC } +\def\nc@object#1#2#3#4#5{% +\csname begin@#1Obj\endcsname +\showpointsfalse +\pst@getnode{#2}\pst@tempa +\pst@getnode{#3}\pst@tempb +\gdef\npos@default{#4 }% +\addto@pscode{% +/NCLW CLW def +\pst@nodedict +\psk@offsetA +\psk@offsetB neg +\psk@nodesepA +\psk@nodesepB +\psk@nodeseptypeA +\psk@nodeseptypeB +\pst@tempa +\pst@tempb +\tx@InitNC { #5 } if +end}% +\def\use@pscode{% +\pst@Verb{gsave \tx@STV newpath \pst@code\space grestore}% +\gdef\pst@code{}}% +\csname end@#1Obj\endcsname +\pst@shortput} +\def\npos@default{.5 } +\def\pc@object#1{% +\@ifnextchar({\pc@@object#1}{\pst@getarrows{\pc@@object#1}}} +\def\pc@@object#1(#2)(#3){% +\pnode(#2){@@A}\pnode(#3){@@B}% +#1{@@A}{@@B}} +\def\tx@LPutLine{LPutLine } +\def\tx@LPutLines{LPutLines } +\def\tx@BezierMidpoint{BezierMidpoint } +\def\tx@HPosBegin{HPosBegin } +\def\tx@HPosEnd{HPosEnd } +\def\tx@HPutLine{HPutLine } +\def\tx@HPutLines{HPutLines } +\def\tx@VPosBegin{VPosBegin } +\def\tx@VPosEnd{VPosEnd } +\def\tx@VPutLine{VPutLine } +\def\tx@VPutLines{VPutLines } +\def\tx@HPutCurve{HPutCurve } +\def\tx@NCCoor{NCCoor } +\def\tx@NCLine{NCLine } +\def\ncline{\pst@object{ncline}} +\def\ncline@i{\check@arrow{\ncline@ii}} +\def\ncline@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{\tx@NCLine}} +\def\pcline{\pst@object{pcline}} +\def\pcline@i{\pc@object\ncline@ii} +\def\ncLine{\pst@object{ncLine}} +\def\ncLine@i{\check@arrow{\ncLine@ii}} +\def\ncLine@ii#1#2{\nc@object{Open}{#1}{#2}{.5}% +% DG/SR modification begin - Apr. 14, 1999 - Patch 9 +%{\tx@NCLine /LPutPos { xB xA yB yA \tx@LPutLine } def}} +{\tx@NCLine /LPutPos { xB yB xA yA \tx@LPutLine } def}} +% DG/SR modification end +\def\tx@NCLines{NCLines } +\def\nclines{\pst@object{nclines}} +\def\nclines@i{\check@arrow\nclines@ii} +\def\nclines@ii#1#2{% +\begingroup +\use@par +\def\pst@aftercoors{\nclines@iii{#1}{#2}}% +\def\pst@coors{}% +\pst@@getcoors} +\def\nclines@iii#1#2{% +\nc@object{Open}{#1}{#2}{.5}{% +tx@Dict begin \psline@iii pop end +mark \pst@coors \tx@NCLines}% +\endgroup +\ignorespaces} +\def\tx@NCCurve{NCCurve } +\def\nccurve{\pst@object{nccurve}} +\def\nccurve@i{\check@arrow{\nccurve@ii}} +\def\nccurve@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{% +/AngleA \psk@angleA\space def /AngleB \psk@angleB\space def +\psk@ncurvB\space \psk@ncurvA\space +\tx@NCCurve}} +\def\pccurve{\pst@object{pccurve}} +\def\pccurve@i{\pc@object\nccurve@ii} +\def\ncarc{\pst@object{ncarc}} +\def\ncarc@i{\check@arrow{\ncarc@ii}} +\def\ncarc@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{% +yB yA sub xB xA sub \tx@Atan dup +\psk@arcangleA\space add /AngleA ED +\psk@arcangleB\space sub 180 add /AngleB ED +\psk@ncurvB\space \psk@ncurvA\space +\tx@NCCurve}} +\def\pcarc{\pst@object{pcarc}} +\def\pcarc@i{\pc@object\ncarc@ii} +\def\tx@NCAngles{NCAngles } +\def\ncangles{\pst@object{ncangles}} +\def\ncangles@i{\check@arrow{\ncangles@ii}} +\def\ncangles@ii#1#2{% +\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngles}} +\def\ncangles@iii{% +tx@Dict begin \psline@iii pop end +/AngleA \psk@angleA def +/AngleB \psk@angleB def +/ArmA \psk@armA def +/ArmB \psk@armB def +/ArmTypeA \psk@armtypeA def +/ArmTypeB \psk@armtypeB def } +\def\pcangles{\pst@object{pcangles}} +\def\pcangles@i{\pc@object\ncangles@ii} +\def\tx@NCAngle{NCAngle } +\def\ncangle{\pst@object{ncangle}} +\def\ncangle@i{\check@arrow{\ncangle@ii}} +\def\ncangle@ii#1#2{% +\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngle}} +\def\pcangle{\pst@object{pcangle}} +\def\pcangle@i{\pc@object\ncangle@ii} +\def\tx@NCBar{NCBar } +\def\ncbar{\pst@object{ncbar}} +\def\ncbar@i{\check@arrow{\ncbar@ii}} +\def\ncbar@ii#1#2{\nc@object{Open}{#1}{#2}{1.5}{% +\ncangles@iii /AngleB \psk@angleA def \tx@NCBar}} +\def\pcbar{\pst@object{pcbar}} +\def\pcbar@i{\pc@object\ncbar@ii} +\def\tx@NCDiag{NCDiag } +\def\ncdiag{\pst@object{ncdiag}} +\def\ncdiag@i{\check@arrow{\ncdiag@ii}} +\def\ncdiag@ii#1#2{% +\nc@object{Open}{#1}{#2}{1.5}{\ncangles@iii \tx@NCDiag}} +\def\pcdiag{\pst@object{pcdiag}} +\def\pcdiag@i{\pc@object\ncdiag@ii} +\def\tx@NCDiagg{NCDiagg } +\def\ncdiagg{\pst@object{ncdiagg}} +\def\ncdiagg@i{\check@arrow{\ncdiagg@ii}} +\def\ncdiagg@ii#1#2{% +\nc@object{Open}{#1}{#2}{.5}{\ncangles@iii \tx@NCDiagg}} +\def\pcdiagg{\pst@object{pcdiagg}} +\def\pcdiagg@i{\pc@object\ncdiagg@ii} +\def\tx@NCLoop{NCLoop } +\def\psset@loopsize#1{\pst@getlength{#1}\psk@loopsize} +\psset@loopsize{1cm} +\def\ncloop{\pst@object{ncloop}} +\def\ncloop@i{\check@arrow{\ncloop@ii}} +\def\ncloop@ii#1#2{% +\nc@object{Open}{#1}{#2}{2.5}% +{\ncangles@iii /loopsize \psk@loopsize def \tx@NCLoop}} +\def\pcloop{\pst@object{pcloop}} +\def\pcloop@i{\pc@object\ncloop@ii} +\def\tx@NCCircle{NCCircle } +\def\nccircle{\pst@object{nccircle}} +\def\nccircle@i{\check@arrow{\nccircle@ii}} +\def\nccircle@ii#1#2{% +\pssetlength\pst@dima{#2}% +\nc@object{Open}{#1}{#1}{.5}{% +/AngleA \psk@angleA def +/r \pst@number\pst@dima def +\tx@NCCircle \psarc@v end}} +\def\tx@NCBox{NCBox } +\def\ncbox{\pst@object{ncbox}} +\def\ncbox@i{\check@arrow{\ncbox@ii}} +\def\ncbox@ii#1#2{% +\def\pst@linetype{2}% +\nc@object{Closed}{#1}{#2}{.5}{% +tx@Dict begin \psline@iii pop end +\psk@boxheight \psk@boxdepth +\tx@NCBox}} +\def\pcbox{\pst@object{pcbox}} +\def\pcbox@i{\pc@object\ncbox@ii} +\def\tx@NCArcBox{NCArcBox } +\def\psset@boxheight#1{\pst@getlength{#1}\psk@boxheight} +\def\psset@boxdepth#1{\pst@getlength{#1}\psk@boxdepth} +\def\psset@boxsize#1{% +\psset@boxheight{#1}% +\let\psk@boxdepth\psk@boxheight} +\psset@boxsize{.4cm} +\def\ncarcbox{\pst@object{ncarcbox}} +\def\ncarcbox@i{\check@arrow{\ncarcbox@ii}} +\def\ncarcbox@ii#1#2{% +\def\pst@linetype{1}% +\nc@object{Closed}{#1}{#2}{.5}{% +\psk@arcangleA \psk@boxheight \psk@boxdepth \pst@number\pslinearc +\tx@NCArcBox}} +\def\pcarcbox{\pst@object{pcarcbox}} +\def\pcarcbox@i{\pc@object\ncarcbox@ii} +\def\tx@Tfan{Tfan } +% Changed according pst-beta.bug December 3, 1993 +% nrot=:<angle> does not work when : is active. +\begingroup +\catcode`\:=13 +\gdef\pst@activerot{\def:{\string:}} +\endgroup +\def\psset@nrot#1{% +\begingroup +\pst@activerot +\pst@expandafter{\@ifnextchar:{\psset@@nrot}{\psset@@rot}}{#1}\@nil +\global\let\pst@tempg\psk@rot +\endgroup +\let\psk@nrot\pst@tempg} +\def\psset@@nrot:#1\@nil{% +\psset@@rot#1\@nil +\edef\psk@rot{NAngle \ifx\psk@rot\@empty\else\psk@rot add \fi}} +\psset@nrot{0} +\def\tx@LPutCoor{LPutCoor } +\def\tx@LPut{LPut } +\def\psset@npos#1{% +\def\pst@tempa{#1}% +\ifx\pst@tempa\@empty +\def\psk@npos{\npos@default}% +\else +\pst@checknum{#1}\psk@npos +\fi} +\psset@npos{} +\def\ncput{\pst@object{ncput}} +\def\ncput@i{\pst@killglue\pst@makebox{\ncput@ii}} +\def\ncput@ii{% +\begingroup +\use@par +\if@star\pst@starbox\fi +\pst@makesmall\pst@hbox +\pst@rotate\psk@nrot\pst@hbox +\ncput@iii +\endgroup +\pst@shortput} +\def\ncput@iii{% +\leavevmode +\hbox{% +\pst@Verb{% +\pst@nodedict +/t \psk@npos def +\tx@LPut +end +\tx@PutBegin}% +\box\pst@hbox +\pst@Verb{\tx@PutEnd}}} +\def\naput{\pst@object{naput}} +\def\naput@i{\pst@killglue\pst@makebox{\naput@ii{NAngle 90 add}}} +\def\naput@ii#1{% +\begingroup +\use@par +\if@star\pst@starbox\fi +\def\psk@refangle{#1 }% +\let\psk@rot\psk@nrot +\uput@vii +{exch pop add a \tx@PtoC h1 add exch w1 add exch }% +{tx@Dict /NCLW known { NCLW add } if }% +\ncput@iii +\endgroup +\pst@shortput} +\def\nbput{\pst@object{nbput}} +\def\nbput@i{\pst@killglue\pst@makebox{\naput@ii{NAngle 90 sub}}} +\def\psset@tpos#1{% +\pst@checknum{#1}\psk@tpos +\ifdim\psk@tpos \p@<\z@ +\def\psk@tpos{.5}% +% DG/SR modification begin - Sep. 23, 1998 - Patch 7 +%\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@epha +\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@ehpa +% DG/SR modification end +\else +\ifdim\psk@tpos \p@>\p@ +\def\psk@tpos{.5}% +% DG/SR modification begin - Sep. 23, 1998 - Patch 7 +%\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@epha +\@pstrickserr{Bad `tpos' value: `#1'. Must be 0<tpos<1}\@ehpa +% DG/SR modification end +\fi +\fi} +\psset@tpos{.5} +\def\tvput{\pst@object{tvput}} +\def\tvput@i{\pst@makebox{\psput@tput{H}{1}}} +\def\tlput{\pst@object{tlput}} +\def\tlput@i{\pst@makebox{\psput@tput{H}{true}}} +\def\trput{\pst@object{trput}} +\def\trput@i{\pst@makebox{\psput@tput{H}{false}}} +\def\thput{\pst@object{thput}} +\def\thput@i{\pst@makebox{\psput@tput{V}{1}}} +\def\taput{\pst@object{taput}} +\def\taput@i{\pst@makebox{\psput@tput{V}{true}}} +\def\tbput{\pst@object{tbput}} +\def\tbput@i{\pst@makebox{\psput@tput{V}{false}}} +\def\tx@HPutAdjust{HPutAdjust } +\def\tx@VPutAdjust{VPutAdjust } +\def\psput@tput#1#2{% +\begingroup +\use@par +\pst@tputmakesmall +\leavevmode +\hbox{% +\pst@Verb{% +\pst@nodedict +/t \psk@tpos \pst@tposflip def +tx@NodeDict /HPutPos known +{ #1PutPos } +{ CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } +ifelse +/Sin NAngle sin def +/Cos NAngle cos def +/s \pst@number\pslabelsep NCLW add def +/l \pst@number\pst@dima def +/r \pst@number\pst@dimb def +/h \pst@number\pst@dimc def +/d \pst@number\pst@dimd def +% DG/SR modification begin - Sep. 26, 1997 - Patch 4 +%\ifnum1=0#2\else +\ifnum1=0#2 \else +% DG/SR modification end +/flag #2 def +\csname tx@#1PutAdjust\endcsname +\fi +\tx@LPutCoor +end +\tx@PutBegin}% +\box\pst@hbox +\pst@Verb{\tx@PutEnd}}% +\endgroup +\pst@shortput} +\def\pst@tposflip{} +\def\pst@tputmakesmall{% +\pst@dima=\wd\pst@hbox +\divide\pst@dima 2 +\pst@dimg=\psk@href\pst@dimg +\pst@dimb\pst@dima +\advance\pst@dima\pst@dimg % leftsize +\advance\pst@dimb-\pst@dimg % rightsize +\pst@dimd=\psk@vref\relax +\pst@dimc=\ht\pst@hbox +\advance\pst@dimc-\pst@dimd % height +\advance\pst@dimd\dp\pst@hbox % depth +\setbox\pst@hbox=\hbox to\z@{% +\kern-\pst@dima\vbox to\z@{\vss\box\pst@hbox\vskip-\pst@dimd}\hss}} +\def\MakeShortNab#1#2{% + \def\pst@shortput@nab{% + \def\pst@tempg{\next}% + \ifx#1\next + \let\pst@tempg\naput + \else + \ifx#2\next + \let\pst@tempg\nbput + \else + \ifx\@sptoken\next + \let\pst@tempg\pst@shortput + \fi + \fi + \fi + \pst@tempg}} +\MakeShortNab{^}{_} +\def\MakeShortTablr#1#2#3#4{% + \def\pst@shortput@tablr{% + \def\pst@tempg{\next}% + \ifx#1\next + \let\pst@tempg\taput + \else + \ifx#2\next + \let\pst@tempg\tbput + \else + \ifx#3\next + \let\pst@tempg\tlput + \else + \ifx#4\next + \let\pst@tempg\trput + \else + \ifx\@sptoken\next + \let\pst@tempg\pst@shortput + \fi + \fi + \fi + \fi + \fi + \pst@tempg}} +\MakeShortTablr{^}{_}{<}{>} +\def\MakeShortTab#1#2{% + \def\pst@shortput@tab{% + \def\pst@tempg{\next}% + \ifx#1\next + \def\pst@tempg{% + \@nameuse{% + t\ifodd\psk@treemode\ifpstreeflip b\else a\fi + \else\ifpstreeflip r\else l\fi\fi put}}% + \else + \ifx#2\next + \def\pst@tempg{% + \@nameuse{% + t\ifodd\psk@treemode\ifpstreeflip a\else b\fi + \else\ifpstreeflip l\else r\fi\fi put}}% + \else + \ifx\@sptoken\next + \let\pst@tempg\pst@shortput + \fi + \fi + \fi + \pst@tempg}} +\MakeShortTab{^}{_} +\def\psset@shortput#1{% +\def\pst@tempg{#1}% +\ifx\pst@tempg\@none +\let\pst@shortput\ignorespaces +\else +\@ifundefined{pst@shortput@#1}% +{\@pstrickserr{Bad short put: `#1'}\@ehpa}% +{\edef\pst@shortput{\noexpand\afterassignment\expandafter\noexpand +\csname pst@shortput@#1\endcsname\noexpand\let\noexpand\next}}% +\fi} +\psset@shortput{none} +\def\lput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\lput@i}{\lput@ii}}} +\def\lput@i[#1]{\addto@par{ref=#1}\lput@ii} +\def\lput@ii{\@ifnextchar({\lput@iv}{\lput@iii}} +\def\lput@iii#1{\addto@par{nrot=#1}\@ifnextchar({\lput@iv}{\ncput@i}} +\def\lput@iv(#1){\addto@par{npos=#1}\ncput@i} +\def\mput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\mput@i}{\ncput@i}}} +\def\mput@i[#1]{\addto@par{ref=#1}\ncput@i} +\def\Lput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Lput@ii}{\Lput@i}}} +\def\Lput@i#1{\addto@par{labelsep=#1}\Lput@ii} +\def\Lput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Lput@iv}{\Lput@iii}} +\def\Lput@iii#1{\addto@par{nrot={#1}}\@ifnextchar({\Lput@iv}{\Lput@v}} +\def\Lput@iv(#1){\addto@par{npos=#1}\Lput@v} +\def\Lput@v{\pst@killglue\pst@makebox{\Lput@vi}} +\def\Lput@vi{% +\begingroup +\use@par +\if@star\pst@starbox\fi +\Rput@vi +\pst@makesmall\pst@hbox +\pst@rotate\psk@nrot\pst@hbox +\ncput@iii +\endgroup +\pst@shortput} +\def\Mput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Mput@ii}{\Mput@i}}} +\def\Mput@i#1{\addto@par{labelsep=#1}\Mput@ii} +\def\Mput@ii[#1]{\addto@par{ref={#1}}\Lput@v} +\def\aput@#1{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\aput@i#1}{\aput@ii#1}}} +\def\aput@i#1[#2]{\addto@par{labelsep=#2}\aput@ii#1} +\def\aput@ii#1{\@ifnextchar({\aput@iv#1}{\aput@iii#1}} +\def\aput@iii#1#2{\addto@par{nrot=#2}\@ifnextchar({\aput@iv#1}{#1}} +\def\aput@iv#1(#2){\addto@par{npos=#2}#1} +\def\aput{\aput@\naput@i} +\def\bput{\aput@\nbput@i} +\def\Aput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Aput@i}{\naput@i}}} +\def\Aput@i[#1]{\addto@par{labelsep=#1}\naput@i} +\def\Bput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Bput@i}{\nbput@i}}} +\def\Bput@i[#1]{\addto@par{labelsep=#1}\nbput@i} +\def\node@coor#1;#2\@nil{% +\pst@getnode{#1}\pst@tempg +\edef\pst@coor{% +\pst@nodedict +tx@NodeDict \pst@tempg known +{ \pst@tempg load \tx@GetCenter } +{ 0 0 } +ifelse +end }} +\def\Node@coor[#1]#2;#3\@nil{% +\begingroup +\psset{#1}% +\@ifnextchar\bgroup{\Node@@@coor}{\Node@@coor}#2\@nil +\endgroup +\let\pst@coor\pst@tempg} +\def\Node@@coor#1\@nil{% +\pst@getnode{#1}\pst@tempg +\xdef\pst@tempg{% +\pst@nodedict +tx@NodeDict \pst@tempg known +{ \psk@nodesepA \psk@angleA +\pst@tempg load \psk@nodeseptypeA \tx@GetEdge +\psk@offsetA \psk@angleA \tx@AddOffset +\pst@tempg load \tx@GetCenter +3 -1 roll add 3 1 roll add exch } +{ CP } +ifelse +end }}% +\def\Node@@@coor#1{% +\pst@@getcoor{#1}% +\def\psk@angleA{% +\pst@tempg load \tx@GetCenter \pst@coor +3 -1 roll sub 3 1 roll sub neg \tx@Atan}% +\Node@@coor} +\def\nput{\pst@object{nput}} +\def\nput@i#1#2{\pst@killglue\pst@makebox{\nput@ii{#1}{#2}}} +\def\nput@ii#1#2{% +\begingroup +\use@par +\psset@refangle{#1}% +\let\psk@angleA\psk@refangle +\edef\psk@nodesepA{\pst@number\pslabelsep}% +\def\psk@nodeseptypeA{0 }% +\pslabelsep\z@ +\uput@vi +\Node@@coor#2\@nil +\let\pst@coor\pst@tempg +\leavevmode +\psput@special\pst@hbox +\endgroup +\ignorespaces} +\newcount\psrow +\newcount\pscol +\newcount\psmatrixcnt +\newskip\psrowsep +\newskip\pscolsep +\def\psset@colsep#1{\pssetlength\pscolsep{#1}} +\def\psset@rowsep#1{\pssetlength\psrowsep{#1}} +\psset@colsep{1.5cm} +\psset@rowsep{1.5cm} +\newif\ifpsmatrix +% DG/SR modification begin - Nov. 27, 1998 - Patch 8 +%\let\mscount\@multicnt +\ifx\mscount\@undefined\let\mscount\@multicnt\fi +% DG/SR modification end +\def\psmatrix{% + \begingroup +{\ifnum0=`}\fi % Don't want to expand any &. +\@ifnextchar[{\psmatrix@i}{\ifnum0=`{\fi}{}\psmatrix@ii}} +\def\psmatrix@i[#1]{% +\ifnum0=`{\fi}{}% +\psset{#1}% +\psmatrix@ii} +\def\psmatrix@ii{% +\KillGlue +\edef\psm@beginmath{% +\ifmmode$\m@th\ifinner\textstyle\else\displaystyle\fi\fi}% +\edef\psm@endmath{\ifmmode$\fi}% +\let\\\psm@cr +\advance\psmatrixcnt 1 +\def\psm@thenode{M-\the\psmatrixcnt-\the\psrow-\the\pscol}% +\tabskip\z@ +\psrow1 +\pscol\z@ +\psset@shortput{tablr}% +\leavevmode +\vbox\bgroup\halign\bgroup&% +\begingroup +\global\advance\pscol 1 +\csname psrowhook\romannumeral\psrow\endcsname +\csname pscolhook\romannumeral\pscol\endcsname +\psm@beginnode##\psm@endnode\endgroup +\cr} +\def\endpsmatrix{% +\crcr\egroup\unskip\egroup +\endgroup} +\def\psm@cr{{\ifnum0=`}\fi\@ifnextchar[{\psm@@cr}{\psm@@@cr{}}} +\def\psm@@cr[#1]{\psm@@@cr{\vskip#1\relax}} +\def\psm@@@cr#1{% +\ifnum0=`{\fi}{}\cr +\noalign{% +\global\advance\psrow 1 +\global\pscol\z@ +\vskip\psrowsep +#1}} +\def\psm@beginnode{% +\@ifnextchar\psm@endnode +{\let\psm@endnode@i\relax\setbox\pst@hbox=\hbox{}}% +{\pst@object{psm@beginnode}}} +\def\psm@beginnode@i{% +\setbox\pst@hbox=\hbox\bgroup +\psm@beginmath +\begingroup +\ignorespaces} +\def\psm@endnode@i{% +\unskip +\endgroup +\psm@endmath +\egroup +\use@par +\@psttrue} +\def\psm@endnode{% +\@pstfalse +\psm@endnode@i +\ifnum\pscol>1 \hskip\pscolsep \fi +\psk@mnodesize +\hfil +\nodealigntrue +\if@pst +\csname mnode@\psk@mnode\endcsname +\else +\csname mnode@\psk@emnode\endcsname +\fi +\psk@mcol +\psk@@mnodesize} +% DG/SR modification begin - Sep. 3, 1999 - Patch 10 - From Michael Sharpe +%\def\psspan#1{\mscount#1\relax\loop\ifnum\mscount>\@ne \sp@n\repeat} +\def\psspan#1{\global\mscount#1\relax\pstloop\ifnum\mscount>\@ne\sp@n\repeat} +\def\pstloop#1\repeat{\gdef\pstiterate{#1\relax\expandafter\pstiterate\fi}% +\pstiterate +\let\pstiterate\relax} +% DG/SR modification end +\def\psset@name#1{\pst@getnode{#1}\psk@name} +\let\psk@name\relax +\def\psset@mcol#1{% +\ifx r#1\relax +\let\psk@mcol\relax +\else +\ifx l#1\relax +\let\psk@mcol\hfill +\else +\let\psk@mcol\hfil +\fi +\fi} +\psset@mcol{c} +\def\psset@mnodesize#1{% +\pssetlength\pst@dimg{#1}% +\ifdim\pst@dimg<\z@ +\let\psk@mnodesize\relax +\let\psk@@mnodesize\relax +\else +\edef\psk@mnodesize{\noexpand\hbox to\number\pst@dimg sp\noexpand\bgroup}% +\let\psk@@mnodesize\egroup +\fi} +\psset@mnodesize{-1pt} +\def\mnode@R{\rnode@iii\Rnode@ii{\psm@thenode}} +\def\mnode@r{\rnode@iii\rnode@iv{\psm@thenode}} +\def\mnode@oval{\ovalnode@ii{\psm@thenode}} +\def\mnode@tri{\trinode@ii{\psm@thenode}} +\def\mnode@dia{\dianode@ii{\psm@thenode}} +\def\mnode@C{{\nodealigntrue\cnode@ii(\z@,\z@){\psk@radius}{\psm@thenode}}} +\def\mnode@f{{\nodealigntrue\fnode@ii(\z@,\z@){\psm@thenode}}} +\def\mnode@circle{\circlenode@ii{\psm@thenode}} +\def\mnode@p{\pnode(\z@,\z@){\psm@thenode}} +% DG/SR modification begin - Jul. 22, 1997 - Patch 1 +\def\mnode@dot{\dotnode@ii(\z@,\z@){\psm@thenode}} +% DG/SR modification end +\def\mnode@none{\box\pst@hbox} +\def\psset@mnode#1{% +\@ifundefined{mnode@#1}% +{\@pstrickserr{\string\psmatrix\space node `#1' not defined.}\@ehpa}% +{\edef\psk@mnode{#1}}} +\def\psset@emnode#1{% +\@ifundefined{mnode@#1}% +{\@pstrickserr{\string\psmatrix\space node `#1' not defined.}\@ehpa}% +{\edef\psk@emnode{#1}}} +\psset@mnode{R} +\psset@emnode{none} +%%%% FROM pst-coil.tex +\def\nccoil{\pst@object{nccoil}} +\def\nccoil@i{\check@arrow{\nccoil@ii}} +\def\nccoil@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{% +\tx@NCCoor +tx@Dict begin +% DG/SR modification begin - Mar. 19, 1998 - Patch 5 +4 2 roll +% DG/SR modification end +\psk@coilwidth \pscoilheight +\psk@coilarmA \psk@coilarmB +\psk@coilaspect \psk@coilinc +\pst@coildict \tx@Coil end +end}} +\def\nczigzag{\pst@object{nczigzag}} +\def\nczigzag@i{\check@arrow{\nczigzag@ii}} +\def\nczigzag@ii#1#2{\nc@object{Open}{#1}{#2}{.5}{% +\tx@NCCoor +tx@Dict begin +% DG/SR modification begin - Mar. 19, 1998 - Patch 5 +4 2 roll +% DG/SR modification end +\pscoilheight +\psk@coilwidth +\psk@coilarmA +\psk@coilarmB +\pst@coildict \tx@ZigZag end +\psline@iii +\tx@Line +end}} +\catcode`\@=\TheAtCode\relax +\endinput +%% +%% END pst-node.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-plot.tex b/Master/texmf-dist/tex/generic/pstricks/pst-plot.tex new file mode 100644 index 00000000000..93284cc9823 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-plot.tex @@ -0,0 +1,647 @@ +%% BEGIN pst-plot.tex +%% +%% Plots and axes with PSTricks 97. +%% See the PSTricks User's Guide for documentation. +%% +\def\fileversion{97 patch 2} +\def\filedate{1999/12/12} +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\message{ v\fileversion, \filedate} + +\csname PSTplotLoaded\endcsname +\let\PSTplotLoaded\endinput + +\ifx\PSTricksLoaded\endinput\else + \def\next{\input pstricks.tex } + \expandafter\next +\fi + +\ifx\MultidoLoaded\endinput\else + \def\next{\input multido.tex } + \expandafter\next +\fi + +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 + +% Using lists of data is optimized for \dataplot and \fileplot +% Here is the tricky part. As each line is read from file, +% we want to ignore trailing delimiters, and convert arbitrary +% strings of non-trailing delimiters to _D_. +% We end up with +% D x1 D y1 D x2 D y2 ... D xn D yn +% +\begingroup +\catcode`\{=13 +\catcode`\}=13 +\catcode`\(=13 +\catcode`\)=13 +\catcode`\,=13 +\catcode`\!=1 +\catcode`\*=2 +\catcode`\ =13 +\catcode`\_=13 +\catcode`\^^M=13 +\gdef\pst@datadelimiters!% Begin def +\catcode`\{=13% +\catcode`\}=13% +\catcode`\(=13% +\catcode`\)=13% +\catcode`\,=13% +\catcode`\ =13% +\catcode`\^^M=13% +\def,##1!% +\ifcat\noexpand,\noexpand##1% +\expandafter##1% +\else\space% +D\space##1% +\fi*% +\let(,\let),\let{,\let},\let ,\let^^M,\let_\@empty*% End def +\endgroup +\begingroup +\catcode`\,=13 +\catcode`\_=13 +\gdef\savedata@#1[#2]{% + \xdef\pst@tempg{#2_}% + \endgroup + \let#1\pst@tempg + \global\let\pst@tempg\relax + \ignorespaces} +\gdef\readdata@{% + \read1 to \pst@tempa + \expandafter\readdata@@\pst@tempa_\@nil + \ifeof1\else\expandafter\readdata@\fi} +\gdef\pst@@readfile#1#2\@nil{\addto@pscode{,#1#2}}% +\gdef\readdata@@#1#2\@nil{\xdef\pst@tempg{\pst@tempg,#1#2}}% +\endgroup + +\def\readdata#1#2{% + \openin1=#2 + \begingroup + \def\pst@tempg{}% + \ifeof1 + \@pstrickserr{Data file `#2' not found.}\@ehpa + \else + \pst@datadelimiters + \catcode`\[=1 + \catcode`\]=2 + \readdata@% + \fi + \endgroup + \let#1\pst@tempg + \global\let\pst@tempg\relax + \ignorespaces} + +\def\pst@readfile#1{{\let\readdata@@\pst@@readfile\readdata\pst@tempg{#1}}} +\def\pst@altreadfile#1{% + \openin1=#1 + \ifeof1 + \@pstrickserr{Data file `#1' not found.}\@ehpa + \else + \catcode`\{=10 + \catcode`\}=10 + \catcode`\(=10 + \catcode`\)=10 + \catcode`\,=10 + \catcode`\^^M=10 + \catcode`\[=1 + \catcode`\]=2 + \pst@@altreadfile + \fi} +\def\pst@@altreadfile{% + \read1 to \pst@tempg + \expandafter\pst@@@altreadfile\pst@tempg\@empty\@nil + \ifeof1\else\expandafter\pst@@@altreadfile\fi} +\def\pst@@@altreadfile#1#2\@nil{\addto@pscode{#1#2}}% + +\def\savedata#1{\begingroup\pst@datadelimiters\savedata@{#1}} + +\def\beginplot@line{\begin@OpenObj} +\def\endplot@line{\psline@ii} +\def\beginplot@polygon{\begin@ClosedObj} +\def\endplot@polygon{\pspolygon@ii} +\def\beginplot@curve{\begin@OpenObj} +\def\endplot@curve{\pscurve@ii} +\def\beginplot@ecurve{\begin@OpenObj} +\def\endplot@ecurve{\psecurve@ii} +\def\beginplot@ccurve{\begin@ClosedObj} +\def\endplot@ccurve{\psccurve@ii} +\def\beginplot@dots{\begin@SpecialObj} +\def\endplot@dots{\psdots@ii} +\def\beginplot@bezier{\begin@OpenObj} +\def\endplot@bezier{\psbezier@ii} +\def\beginplot@cbezier{\begin@ClosedObj} +\def\endplot@cbezier{\pscbezier@ii} + +\def\psset@plotstyle#1{% + \@ifundefined{beginplot@#1}% + {\@pstrickserr{Plot style `#1' not defined}\@eha}% + {\edef\psplotstyle{#1}}} +\psset@plotstyle{line} + +\def\psset@plotpoints#1{% + \pst@cntg=#1\relax + \ifnum\pst@cntg<2 + \@pstrickserr{plotpoints parameter must be at least 2}\@ehpa + \else + \advance\pst@cntg-1 + \edef\psk@plotpoints{\the\pst@cntg\space}% + \fi} +\psset@plotpoints{50} + +% For quick plots, define: +% \beginqp@<foo> : What to do to first point (PS code only). +% \doqp@<foo> : What to do to subsequent points (PS code only). +% \endqp@<foo> : How to end plot. +% \testqp@<foo> : Set \@psttrue if OK to use quick plot. + +\def\beginqp@line{\pst@oplineto} +\def\doqp@line{L } +\def\endqp@line{\end@OpenObj}% +\def\testqp@line{% + \ifdim\pslinearc>\z@\else + \ifshowpoints\else + \ifx\psk@arrowA\@empty + \ifx\psk@arrowB\@empty + \@psttrue + \fi + \fi + \fi + \fi} + +\def\beginqp@polygon{moveto } +\def\doqp@polygon{L } +\def\endqp@polygon{% + \addto@pscode{closepath}% + \end@ClosedObj} +\def\testqp@polygon{% + \ifdim\pslinearc>\z@\else + \ifshowpoints\else + \@psttrue + \fi + \fi} + +\def\beginqp@dots{% + \psk@dotsize + \@nameuse{psds@\psk@dotstyle} +% DG/SR modification begin - Dec. 12, 1999 - Patch 2 +% /TheDot { gsave \psk@dotangle \psk@dotscale Dot grestore } def +% TheDot } + Dot } +%\def\doqp@dots{TheDot } +\def\doqp@dots{Dot } +% DG/SR modification end +\def\endqp@dots{\end@SpecialObj} +\def\testqp@dots{\@psttrue} + +\def\beginqp@bezier{/n 0 def \pst@oplineto} +\def\doqp@bezier{/n n 1 add def n 3 mod 0 eq { curveto } if } +\def\endqp@bezier{% + \addto@pscode{n 3 mod { pop pop } repeat} + \end@OpenObj}% +\def\testqp@bezier{% + \ifshowpoints\else + \ifx\psk@arrowA\@empty + \ifx\psk@arrowB\@empty + \@psttrue + \fi + \fi + \fi} + +\def\beginqp@cbezier{/n 0 def moveto } +\def\doqp@cbezier{\doqp@bezier} +\def\endqp@cbezier{% + \addto@pscode{n 3 mod { pop pop } repeat closepath} + \end@ClosedObj}% +\def\testqp@cbezier{\ifshowpoints\else\@psttrue\fi} + +\def\dataplot{\def\pst@par{}\pst@object{dataplot}} +\def\dataplot@i#1{% + \pst@killglue + \begingroup + \use@par + \@pstfalse + \@nameuse{testqp@\psplotstyle}% + \if@pst + \dataplot@ii{\addto@pscode{#1}}% + \else + \listplot@ii{\addto@pscode{#1}}% + \fi + \endgroup + \ignorespaces} +\def\dataplot@ii#1{% + \@nameuse{beginplot@\psplotstyle}% + \addto@pscode{% + /Dx { \pst@number\psxunit mul /D { Dy } def } def + /Dy { \pst@number\psyunit mul Do /D { Dx } def } def + /D { /D { Dx } def } def + /Do { + \@nameuse{beginqp@\psplotstyle}% + /Do { \@nameuse{doqp@\psplotstyle}} def + } def}% + #1% + \addto@pscode{D}% + \@nameuse{endqp@\psplotstyle}} + +\def\fileplot{\def\pst@par{}\pst@object{fileplot}} +\def\fileplot@i#1{% + \pst@killglue + \begingroup + \use@par + \@pstfalse + \@nameuse{testqp@\psplotstyle}% + \if@pst + \dataplot@ii{\pst@readfile{#1}}% + \else + \listplot@ii{\pst@altreadfile{#1}}% + \fi + \endgroup + \ignorespaces} + +\pst@def{ScalePoints}<% + /y ED /x ED + counttomark dup dup cvi eq not { exch pop } if + /m exch def /n m 2 div cvi def + n { y mul m 1 roll x mul m 1 roll /m m 2 sub def } repeat> + +\def\listplot{\def\pst@par{}\pst@object{listplot}} +\def\listplot@i#1{\listplot@ii{\addto@pscode{#1}}} +\def\listplot@ii#1{% + \@nameuse{beginplot@\psplotstyle}% + \addto@pscode{/D {} def mark}% + #1% + \addto@pscode{\pst@number\psxunit \pst@number\psyunit \tx@ScalePoints}% + \@nameuse{endplot@\psplotstyle}} + +% \psplot + +\def\psplotinit#1{\xdef\psplot@init{#1 }} +\def\psplot@init{} + +\def\psplot{\def\pst@par{}\pst@object{psplot}} +\def\psplot@i#1#2#3{% + \pst@killglue + \begingroup + \use@par + \@nameuse{beginplot@\psplotstyle}% + \addto@pscode{% + \psplot@init + /x #1 def + /x1 #2 def + /dx x1 x sub \psk@plotpoints div def + /xy { + x \pst@number\psxunit mul + #3 \pst@number\psyunit mul + } def}% + \gdef\psplot@init{}% + \@pstfalse + \@nameuse{testqp@\psplotstyle}% + \if@pst + \psplot@ii + \else + \psplot@iii + \fi + \endgroup + \ignorespaces} +\def\psplot@ii{% + \addto@pscode{% + xy \@nameuse{beginqp@\psplotstyle} + \psk@plotpoints 1 sub { + /x x dx add def + xy \@nameuse{doqp@\psplotstyle} + } repeat + /x x1 def + xy \@nameuse{doqp@\psplotstyle}}% + \@nameuse{endqp@\psplotstyle}} +\def\psplot@iii{% + \addto@pscode{% + mark + /n 2 def + \psk@plotpoints { + xy + n 2 roll + /n n 2 add def + /x x dx add def + } repeat + /x x1 def + xy + n 2 roll}% + \@nameuse{endplot@\psplotstyle}} + +\def\parametricplot{\def\pst@par{}\pst@object{parametricplot}} +\def\parametricplot@i#1#2#3{% + \pst@killglue + \begingroup + \use@par + \@nameuse{beginplot@\psplotstyle}% + \addto@pscode{% + \psplot@init + /t #1 def + /t1 #2 def + /dt t1 t sub \psk@plotpoints div def + /xy { + #3 + \pst@number\psyunit mul exch + \pst@number\psxunit mul exch + } def}% + \gdef\psplot@init{}% + \@pstfalse + \@nameuse{testqp@\psplotstyle}% + \if@pst + \parametricplot@ii + \else + \parametricplot@iii + \fi + \endgroup + \ignorespaces} +\def\parametricplot@ii{% + \addto@pscode{% + xy \@nameuse{beginqp@\psplotstyle} + \psk@plotpoints 1 sub { + /t t dt add def + xy \@nameuse{doqp@\psplotstyle} + } repeat + /t t1 def + xy \@nameuse{doqp@\psplotstyle}}% + \@nameuse{endqp@\psplotstyle}} +\def\parametricplot@iii{% + \addto@pscode{% + mark + /n 2 def + \psk@plotpoints { + xy + n 2 roll + /n n 2 add def + /t t dt add def + } repeat + /t t1 def + xy + n 2 roll}% + \@nameuse{endplot@\psplotstyle}} + +% These axes macros are complicated. Be careful. + +% \pst@ticks{angle}{dx}{n}{int} +% int=1 if ticks appear on top of axes, 0 otherwise. +\def\pst@ticks#1#2#3#4{% + \begin@SpecialObj + \addto@pscode{% + #1 rotate + /n #3 def + /dx #2 def + n 0 lt { /dx dx neg def /n n neg def } if + /y2 \psk@ticksize CLW 2 div add def + /y1 y2 neg def + \ifnum\psk@tickstyle=1 + \ifdim#4<\z@ /y2 \else /y1 \fi 0 def + \else + \ifnum\psk@tickstyle=-1 + \ifdim#4<\z@ /y1 \else /y2 \fi 0 def + \fi + \fi + /x dx def + n { x y1 moveto x y2 lineto stroke /x x dx add def } repeat}% + \end@SpecialObj} + + +\def\psset@ticksize#1{\pst@getlength{#1}\psk@ticksize} +\psset@ticksize{3pt} + +\def\psset@tickstyle#1{\pst@expandafter\psset@@tickstyle{#1}\@nil} +\def\psset@@tickstyle#1#2\@nil{% + \ifx#1f\let\psk@tickstyle\z@\else + \ifx#1t\let\psk@tickstyle\@ne\else + \ifx#1b\let\psk@tickstyle\m@ne\else + \@pstrickserr{Bad tick style: `#1#2'}\@ehpa + \fi\fi\fi} +\psset@tickstyle{full} + +\def\psset@ticks#1{\pst@expandafter\psset@@ticks{#1}\@nil\psk@ticks} +\def\psset@@ticks#1#2\@nil#3{% + \ifx#1a\let#3\z@\else + \ifx#1x\let#3\@ne\else + \ifx#1y\let#3\tw@\else + \ifx#1n\let#3\thr@@\else + \@pstrickserr{Bad argument: `#1#2'}\@ehpa + \fi\fi\fi\fi} +\psset@ticks{all} + +\def\psset@labels#1{\pst@expandafter\psset@@ticks{#1}\@nil\psk@labels} +\psset@labels{all} + +\def\psset@Ox#1{\edef\psk@Ox{#1}} +\psset@Ox{0} +\def\psset@Dx#1{\edef\psk@Dx{#1}} +\psset@Dx{1} +\def\psset@dx#1{% + \pssetxlength\pst@dimg{#1}% + \edef\psk@dx{\number\pst@dimg}} +\psset@dx{0} + +\def\psset@Oy#1{\edef\psk@Oy{#1}} +\psset@Oy{0} +\def\psset@Dy#1{\edef\psk@Dy{#1}} +\psset@Dy{1} +\def\psset@dy#1{% + \pssetylength\pst@dimg{#1}% + \edef\psk@dy{\number\pst@dimg}} +\psset@dy{0} + +\newif\ifshoworigin +\def\psset@showorigin#1{\@nameuse{showorigin#1}} +\psset@showorigin{true} + + +\def\psaxes{\def\pst@par{}\pst@object{psaxes}} +\def\psaxes@i{\pst@getarrows\psaxes@ii} +\def\psaxes@ii(#1){\@ifnextchar({\psaxes@iii(#1)}{\psaxes@iv(0,0)(0,0)(#1)}} +\def\psaxes@iii(#1)(#2){% + \@ifnextchar(% + {\psaxes@iv(#1)(#2)}% + {\psaxes@iv(#1)(#1)(#2)}} +\def\psaxes@iv(#1,#2)(#3,#4)(#5,#6){% + \setbox\pst@hbox=\hbox\bgroup + \use@par + \pssetxlength\pst@dimg{#1}% o-x + \pssetylength\pst@dimh{#2}% o-y + \pssetxlength\pst@dima{#3}% bl-x + \pssetylength\pst@dimb{#4}% bl-y + \pssetxlength\pst@dimc{#5}% ur-x + \pssetylength\pst@dimd{#6}% ur-y +% Whole thing will be translated to origin: + \advance\pst@dima-\pst@dimg % Dist. from bl-x to o-x + \advance\pst@dimb-\pst@dimh % Dist. from bl-y to o-y + \advance\pst@dimc-\pst@dimg % Dist. from ur-x to o-x + \advance\pst@dimd-\pst@dimh % Dist. from ur-y to o-y +% Make lines/arrows or frame: + \@nameuse{psxs@\psk@axesstyle}% +% "\pslabelsep" should be from the edge of the axis. + \advance\pslabelsep.5\pslinewidth +% Now the ticks and labels. Start by checking for "\multido". +% !!Need to fix this so that does nothing when there are 0 ticks.!! + \begingroup + \ifdim\pst@dimb=\z@\else\showoriginfalse\fi + \ifnum\psk@dx=\z@ + \pst@dimg=\psk@Dx\psxunit + \edef\psk@dx{\number\pst@dimg}% + \fi + \ifnum\psk@ticks<\tw@ + \ifnum\psk@tickstyle>\z@\else + \advance\pslabelsep\psk@ticksize\p@ + \fi + \fi + \pst@hlabels\pst@dimc\psk@arrowB + \pst@hlabels\pst@dima\psk@arrowA + \endgroup + \begingroup + \ifdim\pst@dima=\z@\else\showoriginfalse\fi + \ifnum\psk@dy=\z@ + \pst@dimg=\psk@Dy\psyunit + \edef\psk@dy{\number\pst@dimg}% + \fi + \ifodd\psk@ticks\else + \ifnum\psk@tickstyle>\z@\else + \advance\pslabelsep\psk@ticksize\p@ + \fi + \fi + \pst@vlabels\pst@dimd\psk@arrowB + \pst@vlabels\pst@dimb\psk@arrowA + \endgroup +% Now close "\pst@hbox" (which is 0-dimensional), and put it at the origin. + \egroup + \pssetxlength\pst@dimg{#1}% + \pssetylength\pst@dimh{#2}% + \leavevmode\psput@cartesian\pst@hbox + \ignorespaces} + +\def\psxs@axes{% + \psxs@@axes\pst@dima\pst@dimc{}% + \psxs@@axes\pst@dimb\pst@dimd{exch}} +\def\psxs@@axes#1#2#3{% + \begin@SpecialObj + \ifdim#1=\z@ + \def\psk@arrowA{C}% + \else + \ifdim#2=\z@ + \def\psk@arrowB{C}% + \fi + \fi + \let\pst@linetype\pst@arrowtype + \pst@addarrowdef + \addto@pscode{% + \pst@number#2 0 #3 + \pst@number#1 0 #3 + ArrowA + CP 4 2 roll + ArrowB + L + pop pop}% + \pst@stroke + \end@SpecialObj} + +\def\psxs@frame{% + \begin@SpecialObj + \addto@pscode{% + 0 0 moveto \pst@number\pst@dimc 0 L + 0 \pst@number\pst@dimd 2 copy rlineto L closepath}% + \pst@stroke + \psk@fillstyle + \end@SpecialObj + \let\psk@arrowA\@empty + \let\psk@arrowB\@empty} + +\def\psset@axesstyle#1{% + \@ifundefined{psxs@#1}% + {\@pstrickserr{Axes style `#1' not defined}\@eha}% + {\edef\psk@axesstyle{#1}}} +\psset@axesstyle{axes} + +\def\psxs@none{\let\psk@arrowA\@empty\let\psk@arrowB\@empty} + +% The origin is never the only label. +\def\pst@hlabels#1#2{% + \ifdim#1=\z@\else + \ifx#2\empty\else + \advance#1\ifdim#1>\z@-\fi7\pslinewidth + \fi + \pst@cnta=#1\relax % Distance (in sp) to end. + \divide\pst@cnta\psk@dx\relax % Number of ticks/labels + \ifnum\pst@cnta=\z@\else + \pst@dimb=\psk@dx sp % Space between ticks. + \ifnum\psk@ticks<\tw@ + \pst@ticks{0}{\pst@number\pst@dimb}{\the\pst@cnta}{\pst@dimd}% + \fi + \ifnum\psk@labels<\tw@ \pst@@hlabels\fi + \showoriginfalse + \fi + \fi} + +% Knows \pst@dimb and \pst@cnta +\def\pst@@hlabels{% + \vbox to\z@{% + \ifdim\pst@dimd>\z@\vskip\pslabelsep\else\vss\fi + \ifnum\pst@cnta<\z@ + \pst@dimb=-\pst@dimb + \fi + \hbox to\z@{% + \ifshoworigin\hbox to \z@{\hss\pshlabel{\psk@Ox}\hss}\fi + \mmultido + {\n=\psk@Ox+\psk@Dx}% + {\pst@cnta}% + {\hskip\pst@dimb\hbox to \z@{\hss\pshlabel{\n}\hss}}% + \hss}% + \ifdim\pst@dimd>\z@\vss\else\vskip\pslabelsep\fi}}% + +\def\pshlabel#1{$#1$} + +\def\pst@vlabels#1#2{% + \ifdim#1=\z@\else + \ifx#2\empty\else + \advance#1\ifdim#1>\z@-\fi7\pslinewidth + \fi + \pst@cnta=#1\relax % Distance (in sp) to end. + \divide\pst@cnta\psk@dy\relax % Number of ticks/labels + \ifnum\pst@cnta=\z@\else + \pst@dima=\psk@dy sp % Space between ticks. + \ifodd\psk@ticks\else + \pst@ticks{90}{\pst@number\pst@dima}{\the\pst@cnta}{-\pst@dimc}% + \fi + \ifodd\psk@labels\else\pst@@vlabels\fi + \showoriginfalse + \fi + \fi} + +% Knows \pst@dima and \pst@cnta +\def\pst@@vlabels{% + \vbox to\z@{% + \ifnum\pst@cnta>\z@ + \pst@dima=-\pst@dima + \fi + \offinterlineskip + \ifshoworigin + \vbox to \z@{\vss\hbox to\z@{% + \ifdim\pst@dimc>\z@\hss\else\hskip\pslabelsep\fi + \psvlabel{\psk@Oy}% + \ifdim\pst@dimc>\z@\hskip\pslabelsep\else\hss\fi}\vss}% + \fi + \mmultido + {\n=\psk@Oy+\psk@Dy}% + {\pst@cnta}% + {\vbox to\pst@dima{\vss}\vbox to \z@{\vss\hbox to\z@{% + \ifdim\pst@dimc>\z@\hss\else\hskip\pslabelsep\fi + \psvlabel{\n}% + \ifdim\pst@dimc>\z@\hskip\pslabelsep\else\hss\fi}\vss}}% + \vss}} + +\def\psvlabel#1{$#1$} + +\catcode`\@=\TheAtCode\relax +\endinput +%% +%% END pst-plot.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-text.tex b/Master/texmf-dist/tex/generic/pstricks/pst-text.tex new file mode 100644 index 00000000000..b0a7b5c5afe --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-text.tex @@ -0,0 +1,98 @@ +%% BEGIN pst-text.tex +%% +%% Placing text on a path with PSTricks 97. +%% See the PSTricks User's Guide for description. +%% See tp-test.tex for sample input and tp-test.ps for sample output. +%% This uses the header file `pst-text.pro'. +%% +\def\fileversion{97} +\def\filedate{1997/03/25} +%% +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% +%% This program can be redistributed and/or modified under the terms +%% of the LaTeX Project Public License Distributed from CTAN +%% archives in directory macros/latex/base/lppl.txt. +%% +\message{ v\fileversion, \filedate} + +\csname PSTextPathLoaded\endcsname +\let\PSTextPathLoaded\endinput + +\ifx\PSTricksLoaded\endinput\else + \def\next{\input pstricks.tex}\expandafter\next +\fi + +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 + +\pstheader{pst-text.pro} + +\def\pstextpath{\@ifnextchar[{\pstextpath@}{\pstextpath@[l]}} +\def\pstextpath@[#1]{% + \@ifnextchar({\pstextpath@@[#1]}{\pstextpath@@[#1](0,\TPoffset)}} +\def\pstextpath@@[#1](#2)#3{\pst@makebox{\pstextpath@@@[#1](#2){#3}}} +\def\pstextpath@@@[#1](#2,#3)#4{% + \pst@killglue + \begingroup + \ifx c#1\relax + \def\pst@tempa{.5}% + \else + \ifx r#1\relax + \def\pst@tempa{1}% + \else + \def\pst@tempa{0}% + \fi + \fi + \def\use@pscode{% + \pst@Verb{% + /mtrxc CM def + \tx@STV + CP translate + newpath + \pst@code\space + mtrxc setmatrix + 0 setgray}% + \gdef\pst@code{}}% + \def\psclip#1{\pst@misplaced\psclip}% + \let\endpsclip\relax + \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}% + \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}% + \def\PSTtoEPS@i##1##2{\pst@misplaced\PSTtoEPS}% + \pssetlength\pst@dima{#2}% + \pssetlength\pst@dimb{#3}% + \setbox\pst@hbox\hbox{% + \hbox to\z@{% + \kern -\wd\pst@hbox + % BoxWidth = CurrX - Hoffset. + \pstVerb{tx@TextPathDict begin + currentpoint pop /Hoffset exch def end}% + \kern\pst@dima + % XOffset = Voffset - Hoffset (extra horizontal skip) + \pstVerb{tx@TextPathDict begin + currentpoint pop /Voffset exch def end}% + \hss + \pstVerb{% + /tx@TextPathSavedShow /show load def + \pst@dict \tx@PathLength end + dup 0 gt + { tx@TextPathDict begin \pst@tempa\space InitTextPath end + /show { tx@TextPathDict begin TextPathShow end } def + } + { pop } + ifelse}}% + \raise\pst@dimb\box\pst@hbox + \pstVerb{% + currentpoint newpath moveto + /show /tx@TextPathSavedShow load def}}% + \wd\pst@hbox=\z@ \dp\pst@hbox=\z@ \ht\pst@hbox=\z@ + \leavevmode + \hbox{{#4}\box\pst@hbox}% + \endgroup\ignorespaces} +\def\TPoffset{-.7ex} + +\catcode`\@=\TheAtCode\relax + +\endinput +%% +%% END pst-text.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-tree.tex b/Master/texmf-dist/tex/generic/pstricks/pst-tree.tex new file mode 100644 index 00000000000..33c1275d9c7 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pst-tree.tex @@ -0,0 +1,1010 @@ +%% pst-tree.tex +%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu. +%% COPYRIGHT 2000-2003 by Denis Girou. +%% Copyright 2004 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. +% +\csname PSTreeLoaded\endcsname +\let\PSTreeLoaded\endinput +\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi\relax +\def\fileversion{97 patch 6} +\def\filedate{2004/07/24} +\message{ v\fileversion, \filedate} +% +\edef\TheAtCode{\the\catcode`\@} +\catcode`\@=11 +% +\newbox\pstree@rootbox +\newbox\pstree@box +\def\pstree@succrow{% +\ifpstreeflip + \def\pssubtree@vertical{\pssubtree@vertical@vflip}% +\else + \def\pssubtree@vertical{\pssubtree@vertical@v}% +\fi +\def\pstree@node{\pstree@node@v}% +\def\pssubtree@horizontal{\pssubtree@horizontal@v}}% +\def\pssubtree@vertical@v{% + \vrule height \pst@dimc depth \pst@dimd width \z@ + \ifnum\psnodecnt=\z@ + \global\let\pstree@theleftprofile\pstree@leftprofile + \global\let\pstree@therightprofile\pstree@rightprofile + \else + \psk@thistreefit\pstree@therightprofile\pstree@leftprofile + \kern\the\pst@cnth sp + \pstree@zip\pstree@therightprofile + \pstree@rightprofile\pstree@therightprofile + \global\advance\pstree@cnt\pst@cnth + \pst@cnth=\pstree@cnt + \pstree@zip\pstree@leftprofile + \pstree@theleftprofile\pstree@theleftprofile + \fi + \box\pstree@box + \global\advance\psnodecnt 1\relax% +}% +\def\pssubtree@vertical@vflip{% + \vrule height \pst@dimc depth \pst@dimd width \z@ + \ifnum\psnodecnt=\z@ + \global\let\pstree@theleftprofile\pstree@leftprofile + \global\let\pstree@therightprofile\pstree@rightprofile + \else + \psk@thistreefit\pstree@theleftprofile\pstree@rightprofile + \kern-\pst@cnth sp + \pstree@zip\pstree@theleftprofile + \pstree@leftprofile\pstree@theleftprofile + \global\advance\pstree@cnt\pst@cnth + \pst@cnth=\pstree@cnt + \pstree@zip\pstree@rightprofile + \pstree@therightprofile\pstree@therightprofile + \fi + \box\pstree@box + \global\advance\psnodecnt 1\relax% +}% +\def\pstree@node@v{% +\edef\pstree@leftprofile{\psk@thistreenodesize\pst@dima,\pstree@stop,}% +\edef\pstree@rightprofile{\psk@thistreenodesize\pst@dimb,\pstree@stop,}% +\pssubtree@vertical}% +\def\pssubtree@horizontal@v{% +\pstree@max\pstree@upprofile\pst@cntg +\pst@dimc=\pst@cntg sp +\pstree@max\pstree@downprofile\pst@cntg +\pst@dimd=\pst@cntg sp +\pstree@treebboxadjust +\edef\pstree@leftprofile{\number\pst@dima,\pstree@stop,}% +\edef\pstree@rightprofile{\number\pst@dimb,\pstree@stop,}% +\pssubtree@vertical}% +\def\pstree@tightfit#1#2{% +\pst@cnth=\z@ +\edef\next{\noexpand\pstree@@tightfit#1\noexpand\@nil#2\noexpand\@nil}% +\next +\advance\pst@cnth\psk@thistreesep\relax +\advance\pst@cnth\pstree@tspace\relax +\gdef\pstree@tspace{\z@}} +\def\pstree@@tightfit#1,#2\@nil#3,#4\@nil{% +\ifnum#1=\pstree@stop +\let\next\relax +\else +\ifnum#3=\pstree@stop +\let\next\relax +\else +\pst@cntg=#1 +\advance\pst@cntg#3 +\ifnum\pst@cntg>\pst@cnth +\pst@cnth=\pst@cntg +\fi +\def\next{\pstree@@tightfit#2\@nil#4\@nil}% +\fi +\fi +\next} +\def\pstree@loosefit#1#2{% +\pstree@max{#1}\pst@cnth +\pstree@max{#2}\pst@cntg +\advance\pst@cnth\pst@cntg +\advance\pst@cnth\psk@thistreesep\relax +\advance\pst@cnth\pstree@tspace\relax +\gdef\pstree@tspace{\z@}} +\def\tspace#1{% +\pst@@killglue +\pssetlength\pst@dimg{#1}% +\xdef\pstree@tspace{\number\pst@dimg}% +\ignorespaces} +\def\psset@treefit#1{% +\@ifundefined{pstree@#1fit}% +{\@pstrickserr{Bad `treefit' parameter value: `#1'}\@ehpa}% +{\expandafter\let\expandafter\psk@treefit\csname pstree@#1fit\endcsname}} +\psset@treefit{tight} +\def\psset@thistreefit#1{% +\@ifundefined{pstree@#1fit}% +{\@pstrickserr{Bad `treefit' parameter value: `#1'}\@ehpa}% +{\expandafter\let\expandafter\psk@thistreefit +\csname pstree@#1fit\endcsname}} +\psset@treefit{tight} +\def\pstree@zip#1#2#3{% +\def\pst@tempg{}% +\edef\next{\noexpand\pstree@@zip#1\noexpand\@nil#2\noexpand\@nil}% +\next +\global\let#3\pst@tempg} +\def\pstree@@zip#1,#2\@nil#3,#4\@nil{% +\ifnum#1=\pstree@stop +\edef\pst@tempg{\pst@tempg#3,#4}% +\let\next\relax +\else +\ifnum#3=\pstree@stop +\pst@cntg=#1 +\advance\pst@cntg-\pst@cnth +\edef\pst@tempg{\pst@tempg\the\pst@cntg,}% +\def\next{\pstree@@zip#2\@nil\pstree@stop,\@nil}% +\else +\edef\pst@tempg{\pst@tempg#3,}% +\def\next{\pstree@@zip#2\@nil#4\@nil}% +\fi +\fi +\next} +\def\pstree@max#1#2{% +\pst@cntg=\z@ +\expandafter\pstree@@max#1% +#2=\pst@cntg}% +\def\pstree@@max#1,{% +\ifnum#1=\pstree@stop\else +\ifnum#1>\pst@cntg \pst@cntg=#1 \fi +\expandafter\pstree@@max +\fi} +\def\pstree@add#1{% +\def\pst@tempg{}% +\expandafter\pstree@@add#1% +\xdef#1{\pst@tempg\pstree@stop,}} +\def\pstree@@add#1,{% +\ifnum#1=\pstree@stop\else +\pst@cnth=#1 +\advance\pst@cnth\pst@cntg +\xdef\pst@tempg{\pst@tempg\the\pst@cnth,}% +\expandafter\pstree@@add +\fi} +\newcount\psnodecnt +\let\c@psnodecnt\psnodecnt +\newcount\pstreelevel +\let\c@pstreelevel\pstreelevel +\newcount\pstreecnt +\let\c@pstreecnt\pstreecnt +\newcount\pstree@cnt +\def\pstree{\def\pst@par{}\pst@object{pstree}} +\def\pstree@i{\def\pstree@makebox{\pst@@makebox}\pstree@ii} +\def\psTree{\def\pst@par{}\pst@object{psTree}} +\def\psTree@i{\def\pstree@makebox{\pst@makelongbox}\pstree@ii} +\def\endpsTree{\pst@endlongbox\ignorespaces} +\def\pstree@ii{% +\ifnum\pstreelevel=\z@ +\let\pstree@savedshortput\pst@shortput +\psset@shortput{tab}% +\else +\pst@@killglue +\fi +\begingroup +\begingroup +\def\pstree@node{% +\xdef\pstree@next{% +\noexpand\@psttrue +\noexpand\def\noexpand\pst@tempa{\number\pst@dima}% +\noexpand\def\noexpand\pst@tempb{\number\pst@dimb}% +\noexpand\def\noexpand\pst@tempc{\number\pst@dimc}% +\noexpand\def\noexpand\pst@tempd{\number\pst@dimd}}% +\box\pstree@box}% +\def\pssubtree@horizontal{\pssubtree@horizontal@o}% +\def\pssubtree@vertical{\pssubtree@vertical@o}% +\global\let\pstree@next\relax +\pst@makebox\pstree@iii} +\def\pstree@iii{% +\global\setbox\pst@boxg=\box\pst@hbox +\endgroup +\setbox\pstree@rootbox=\box\pst@boxg +\@pstfalse +\pstree@next +\if@pst +\ifdim\wd\pstree@rootbox=\z@\else +\@pstrickserr{Extraneous space in root node}\@ehpa +\wd\pstree@rootbox=\z@ +\fi +\else +\@pstrickserr{Missing or bad root node +(level \the\pstreelevel, node \the\psnodecnt)}\@ehpa +\def\pstree@next{% +\def\pst@tempa{0}% +\def\pst@tempb{0}% +\def\pst@tempc{0}% +\def\pst@tempd{0}}% +\wd\pstree@rootbox=\z@ +\fi +\pstree@savevalues +\begingroup +\pstree@initsuccvalues +\pstree@setlevelpar +\pstree@do} +\def\pstree@setlevelpar{% +\advance\pstreelevel1 +\let\psk@thislevelsep\relax +\let\psk@thistreesep\relax +\let\psk@thistreefit\relax +\let\psk@thistreenodesize\relax +\csname pstreehook\romannumeral\pstreelevel\endcsname +\use@par +\ifx\psk@thistreesep\relax +\let\psk@thistreesep\psk@treesep +\fi +\ifx\psk@thistreenodesize\relax +\let\psk@thistreenodesize\psk@treenodesize +\fi +\ifx\psk@thistreefit\relax +\let\psk@thistreefit\psk@treefit +\fi +\ifx\psk@thislevelsep\relax +\let\psk@thislevelsep\psk@levelsep +\let\psk@thislevelsepmode\psk@levelsepmode +\fi +\ifnum\psk@treemode=\pstree@predmode\else +\global\advance\pstreecnt1 +\edef\pstree@thetree{\the\pstreecnt}% +\let\pstree@predmode\psk@treemode +\fi +\ifx\psk@thislevelsepmode\relax +\pst@dimg=\psk@thislevelsep\relax +\pst@cntg=0\@nameuse{% +pstree@levelsepadjust-\pstree@thetree-\the\pstreelevel}% +\advance\pst@dimg\pst@cntg sp +\edef\psk@thislevelsep{\number\pst@dimg sp}% +\fi +\ifnum\psk@treemode>1 +\def\pst@tposflip{1 sub neg }% +\else +\def\pst@tposflip{}% +\fi +\ifx\pstree@bboxadjust\@empty\else +\xdef\pstree@treebboxadjust{% +\pstree@bboxadjust +\ifpsshowbbox\noexpand\pstree@showbbox\fi}% +\gdef\pstree@bboxadjust{}% +\fi +\let\pst@thispsbox\@skiplevelfalse} +\def\pstree@predmode{-1} +\def\pstree@savevalues{% +\edef\pstree@restorevalues{% +\noexpand\gdef\noexpand\pstree@theleftprofile{\pstree@theleftprofile}% +\noexpand\gdef\noexpand\pstree@therightprofile{\pstree@therightprofile}% +\noexpand\gdef\noexpand\pstree@theupprofile{\pstree@theupprofile}% +\noexpand\gdef\noexpand\pstree@thedownprofile{\pstree@thedownprofile}% +\noexpand\gdef\noexpand\pstree@tspace{\pstree@tspace}% +\noexpand\gdef\noexpand\pssucc{\pssucc}% +\global\psnodecnt=\the\psnodecnt\relax +\global\pstree@cnt=\the\pstree@cnt\relax}% +\let\pstree@savebboxadjust\pstree@treebboxadjust} +\def\pstree@initsuccvalues{% +\def\pstree@therightprofile{\pstree@stop,}% +\let\pstree@theleftprofile\pstree@therightprofile +\let\pstree@theupprofile\pstree@therightprofile +\let\pstree@thedownprofile\pstree@therightprofile +\psnodecnt=\z@ +\pstree@cnt\z@ +\gdef\pstree@tspace{\z@}% +\let\pspred\pssucc} +\def\pssucc{T} +\pstree@initsuccvalues +\def\pstree@down{% +\pstree@succrow +\pstree@makebox{\pstree@vertical{\lower}}} +\def\pstree@up{% +\pstree@succrow +\pstree@makebox{\pstree@vertical{\raise}}} +\def\pstree@levelsepadjust#1#2{% +% DG/SR modification begin - May 14, 1997 - Patch 1 +% Problem with levelsep=*... +%\pst@cntg=0\@nameuse{pstree@levelsepadjust-#1}% +\pst@cntg=0\@nameuse{pstree@levelsepadjust-#1} +% DG/SR modification end +\ifnum#2>\pst@cntg +\expandafter\xdef\csname pstree@levelsepadjust-#1\endcsname +{#2}% +\fi} +% DG/SR modification begin - October 28, 1999 - Patch 5 - For plain TeX +\ifx\@undefined\@auxout\newwrite\@auxout\fi +% DG/SR modification end +\def\pstree@initlevelsepadjust{% +\@ifundefined{@latexerr}{% +\immediate\openin1 \jobname.pst +\ifeof1 \else +\input \jobname.pst +\fi +\immediate\closein1 +\csname newwrite\endcsname\pstree@auxout +\immediate\openout\pstree@auxout \jobname.pst }% +{\let\pstree@auxout\@auxout}% +\global\let\pstree@initlevelsepadjust\relax} +\newcount\pstree@stop +\pstree@stop=-987654321 +\def\pstree@vertical#1{% +\pst@cntg=\ifpstreeflip-\fi\wd\pst@hbox +\divide\pst@cntg 2 +\pstree@add\pstree@theleftprofile +\pstree@add\pstree@therightprofile +\pst@dimg=\psk@thislevelsep\relax +\ifx\psk@thislevelsepmode\relax +\pstree@vertlevelsepadjust{#1}% +\fi +\global\setbox\pstree@box=\hbox{% +\vrule height \pst@tempc sp depth \pst@tempd sp width \z@ +\unhbox\pstree@rootbox +#1\pst@dimg\hbox to\z@{\hss\unhbox\pst@hbox\hss}}% +\if@skiplevel +\skiplevel@vertical +\else +\endgroup +\fi +\edef\pstree@leftprofile{\pst@tempa,\pstree@theleftprofile}% +\edef\pstree@rightprofile{\pst@tempb,\pstree@therightprofile}% +\pst@dimc=\ht\pstree@box +\pst@dimd=\dp\pstree@box +\ifpsshowbbox +\pstree@max\pstree@leftprofile\pst@cntg +\pst@dima=\pst@cntg sp +\pstree@max\pstree@rightprofile\pst@cntg +\pst@dimb=\pst@cntg sp +\pstree@showbbox +\fi +\dp\pstree@box=\z@ +\ht\pstree@box=\z@ +\pstree@restorevalues +\pssubtree@vertical +\global\let\pstree@treebboxadjust\pstree@savebboxadjust +\endgroup +\ifnum\pstreelevel>\z@\expandafter\ignorespaces\fi} +\def\pstree@vertlevelsepadjust#1{% +\ifx\if@filesw\iffalse\else +\ifx#1\lower +\pst@dimh=\pst@tempd sp +\advance\pst@dimh\ht\pst@hbox +\else +\pst@dimh=\pst@tempc sp +\advance\pst@dimh\dp\pst@hbox +\fi +\immediate\write\@auxout{% +\string\pstree@levelsepadjust +{\pstree@thetree-\the\pstreelevel}{\number\pst@dimh}}% +\fi} +\def\pstree@succcolumn{% +\def\pssubtree@vertical{\pssubtree@vertical@h}% +\def\pssubtree@horizontal{\pssubtree@horizontal@h}% +\def\pstree@node{\pstree@node@h}}% +\def\pssubtree@horizontal@h{% +\xdef\pstree@theleftprofile{\number\pst@dima,\pstree@theleftprofile}% +\xdef\pstree@therightprofile{\number\pst@dimb,\pstree@therightprofile}% +\ifnum\psnodecnt=\z@ +\global\let\pstree@theupprofile\pstree@upprofile +\global\let\pstree@thedownprofile\pstree@downprofile +\box\pstree@box +\else +\ifpstreeflip +\pssubtree@horizontal@@hflip +\else +\pssubtree@horizontal@@h +\fi +\fi +\global\advance\psnodecnt 1\relax} +\def\pssubtree@horizontal@@h{% +\psk@thistreefit\pstree@thedownprofile\pstree@upprofile +\global\advance\pstree@cnt\pst@cnth +\lower\the\pstree@cnt sp\box\pstree@box +\pstree@zip\pstree@thedownprofile\pstree@downprofile\pstree@thedownprofile +\pst@cnth=\pstree@cnt +\pstree@zip\pstree@upprofile\pstree@theupprofile\pstree@theupprofile} +\def\pssubtree@horizontal@@hflip{% +\psk@thistreefit\pstree@theupprofile\pstree@downprofile +\global\advance\pstree@cnt\pst@cnth +\raise\the\pstree@cnt sp\box\pstree@box +\pstree@zip\pstree@theupprofile\pstree@upprofile\pstree@theupprofile +\pst@cnth=\pstree@cnt +\pstree@zip\pstree@downprofile\pstree@thedownprofile\pstree@thedownprofile} +\def\pstree@node@h{% +\edef\pstree@upprofile{\psk@thistreenodesize\pst@dimc,\pstree@stop,}% +\edef\pstree@downprofile{\psk@thistreenodesize\pst@dimd,\pstree@stop,}% +\pssubtree@horizontal@h}% +\def\pssubtree@vertical@h{% +\pstree@max\pstree@leftprofile\pst@cntg +\pst@dima=\pst@cntg sp +\pstree@max\pstree@rightprofile\pst@cntg +\pst@dimb=\pst@cntg sp +\pstree@treebboxadjust +\edef\pstree@upprofile{\number\pst@dimc,\pstree@stop,}% +\edef\pstree@downprofile{\number\pst@dimd,\pstree@stop,}% +\pssubtree@horizontal@h}% +\newif\if@psrighttree +\def\pstree@right{% +\@psrighttreetrue +\pstree@succcolumn +\pstree@makebox\pstree@horizontal} +\def\pstree@left{% +\@psrighttreefalse +\pstree@succcolumn +\pstree@makebox\pstree@horizontal} +\def\pstree@horizontal{% +\ifdim\wd\pst@hbox=\z@\else +\@pstrickserr{Extraneous space in tree successors}\@ehpa +\fi +\pst@cntg=\ifpstreeflip\ht\else\dp\fi\pst@hbox +\divide\pst@cntg 2 +\pstree@add\pstree@theupprofile +\pstree@add\pstree@thedownprofile +% DG/SR modification begin - Sep. 24, 1997 - Patch 3 +%\ifx\psk@thislevelsepmode\relax +%\pstree@horizlevelsepadjust +%\fi +% DG/SR modification end +\pst@dimg\psk@thislevelsep\relax +\global\setbox\pstree@box=\hbox{% +\unhbox\pstree@rootbox +\kern\if@psrighttree\else-\fi\pst@dimg +\ifpstreeflip\lower\else\raise\fi\pst@cntg sp\box\pst@hbox}% +% DG/SR modification begin - Sep. 24, 1997 - Patch 3 +\ifx\psk@thislevelsepmode\relax +\pstree@horizlevelsepadjust +\fi +% DG/SR modification end +\if@psrighttree +\pst@dimh=\pst@dimg +\pstree@max\pstree@therightprofile\pst@cntg +\global\advance\pst@dimh\pst@cntg sp +\global\pst@dimg=\pst@tempa sp +\else +\pstree@max\pstree@theleftprofile\pst@cntg +\global\advance\pst@dimg\pst@cntg sp +\global\pst@dimh=\pst@tempb sp +\fi +\if@skiplevel +\skiplevel@horizontal +\else +\endgroup +\fi +\pst@dima=\pst@dimg +\pst@dimb=\pst@dimh +\edef\pstree@upprofile{\pst@tempc,\pstree@theupprofile}% +\edef\pstree@downprofile{\pst@tempd,\pstree@thedownprofile}% +\dp\pstree@box=\z@ +\ht\pstree@box=\z@ +\wd\pstree@box=\z@ +\ifpsshowbbox +\pstree@max\pstree@upprofile\pst@cntg +\pst@dimc=\pst@cntg sp +\pstree@max\pstree@downprofile\pst@cntg +\pst@dimd=\pst@cntg sp +\pstree@showbbox +\fi +\pstree@restorevalues +\pssubtree@horizontal +\endgroup +\ifnum\pstreelevel>\z@\expandafter\ignorespaces\fi} +% DG/SR modification begin - Sep. 24, 1997 - Patch 2 +%\def\pstree@horizlevelsepadjust#1{% +\def\pstree@horizlevelsepadjust{% +% DG/SR modification end +\ifx\if@filesw\iffalse\else +\if@psrighttree +\pst@dimh=\pst@tempb sp +\pstree@max\pstree@theleftprofile\pst@cntg +\advance\pst@dimh\pst@cntg sp +\else +\pst@dimh=\pst@tempa sp +\pstree@max\pstree@therightprofile\pst@cntg +\advance\pst@dimh\pst@cntg sp +\fi +\immediate\write\@auxout{% +\string\pstree@levelsepadjust +{\pstree@thetree-\the\pstreelevel}{\number\pst@dimh}}% +\fi} +\def\psset@treemode#1{% +\pst@cntg= +\ifx#1U\@empty2\else\ifx#1R\@empty1\else\ifx#1L\@empty3\else0\fi\fi\fi +\relax +\edef\psk@treemode{\the\pst@cntg}% +\ifcase\pst@cntg +\let\pstree@do\pstree@down +\or +\let\pstree@do\pstree@right +\or +\let\pstree@do\pstree@up +\or +\let\pstree@do\pstree@left +\fi} +\def\psk@treemode{0} +\let\pstree@do\pstree@down +\def\psset@treesep#1{% +\pssetlength\pst@dimg{#1}% +\edef\psk@treesep{\number\pst@dimg}}% +\psset@treesep{.75cm} +\def\psset@thistreesep#1{% +\pssetlength\pst@dimg{#1}% +\edef\psk@thistreesep{\number\pst@dimg}}% +\def\psset@treenodesize#1{% +\pssetlength\pst@dimg{#1}% +\ifdim\pst@dimg<\z@ +\let\psk@treenodesize\number +\else +\edef\psk@treenodesize{\number\pst@dimg\noexpand\@gobble}% +\fi} +\psset@treenodesize{-1pt} +\def\psset@thistreenodesize#1{% +\pssetlength\pst@dimg{#1}% +\ifdim\pst@dimg<\z@ +\let\psk@thistreenodesize\number +\else +\edef\psk@thistreenodesize{\number\pst@dimg\noexpand\@gobble}% +\fi} +\def\psset@levelsep#1{% +\pst@expandafter{\pst@ifstar\psset@@levelsep}{#1}\@nil} +\def\psset@@levelsep#1\@nil{% +\pst@@getlength{#1}\psk@levelsep +\if@star +\pstree@initlevelsepadjust +\let\psk@levelsepmode\relax +\else +\def\psk@levelsepmode{}% +\fi} +\psset@levelsep{2cm} +\def\psset@thislevelsep#1{% +\pst@expandafter{\pst@ifstar\psset@@thislevelsep}{#1}\@nil} +\def\psset@@thislevelsep#1\@nil{% +\pst@@getlength{#1}\psk@thislevelsep +\if@star +\pstree@initlevelsepadjust +\let\psk@thislevelsepmode\relax +\else +\def\psk@thislevelsepmode{}% +\fi} +\newif\ifpstreeflip +\def\psset@treeflip#1{\@nameuse{pstreeflip#1}} +\psset@treeflip{false} +\def\pstree@node@o{% +\leavevmode +\hbox{% +\vrule height \pst@dimc depth \pst@dimd width \z@ +\kern\pst@dima +\box\pstree@box +\kern\pst@dimb}} +\def\pssubtree@vertical@o{% +\pstree@max\pstree@leftprofile\pst@cntg +\pst@dima=\pst@cntg sp +\pstree@max\pstree@rightprofile\pst@cntg +\pst@dimb=\pst@cntg sp +\pstree@treebboxadjust +\pstree@node} +\def\pssubtree@horizontal@o{% +\pstree@max\pstree@upprofile\pst@cntg +\pst@dimc=\pst@cntg sp +\pstree@max\pstree@downprofile\pst@cntg +\pst@dimd=\pst@cntg sp +\pstree@treebboxadjust +\pstree@node} +\def\pstree@outer{% +\def\pstree@node{\pstree@node@o}% +\def\pssubtree@vertical{\pssubtree@vertical@o}% +\def\pssubtree@horizontal{\pssubtree@horizontal@o}% +\pstreelevel=\z@ +\def\pstree@predmode{-1}% +\def\pst@tposflip{}% +\let\pst@thisbox\relax +\let\pst@shortput\pstree@savedshortput} +\let\pstree@savedshortput\ignorespaces +\pstree@outer +\newif\ifpsshowbbox +\def\psset@showbbox#1{\@nameuse{psshowbbox#1}}% +\psset@showbbox{false} +\def\pstree@showbbox{% +\setbox\pstree@box=\hbox{% +\psframe[linewidth=0,linecolor=black,linestyle=solid,fillstyle=none]% +(-\pst@dima,-\pst@dimd)(\pst@dimb,\pst@dimc)% +\box\pstree@box}}% +\def\psset@edge#1{% +\def\psedge{#1}% +\ifx\psedge\@none +\def\psedge##1##2{}% +\fi} +\psset@edge{\ncline} +\def\pspred{T} +\def\pstree@makenodebox{% +\pst@@killglue +\let\pst@thispsbox\pstree@outer +\pst@makebox} +\def\begin@treenode{% +\pst@@killglue +\begingroup +\use@par +\global\let\pstree@edge\psedge +\xdef\pssucc{\pspred-\the\psnodecnt}} +\def\MakeShortTnput#1{% +\def\end@treenode{\@ifnextchar#1{\tnput@}{\end@@treenode}}} +\MakeShortTnput{~} +\def\end@@treenode{% +\pstree@bboxadjust +\gdef\pstree@bboxadjust{}% +\ifpsshowbbox\pstree@showbbox\fi +\pstree@node +\endgroup +\ifnum\pstreelevel>\z@ +\pstree@edge{\pspred}{\pssucc}% +\expandafter\pst@shortput +\else +\expandafter\ignorespaces +\fi} +\def\pstree@bboxadjust{} +\def\pstree@setbboxadjust#1#2{% +\pssetlength\pst@dimg{#1}% +\xdef\pstree@bboxadjust{% +\pstree@bboxadjust +#2\number\pst@dimg sp\relax}} +\def\psset@bbl#1{\pstree@setbboxadjust{#1}{\pst@dima=}} +\def\psset@bbr#1{\pstree@setbboxadjust{#1}{\pst@dimb=}} +\def\psset@bbh#1{\pstree@setbboxadjust{#1}{\pst@dimc=}} +\def\psset@bbd#1{\pstree@setbboxadjust{#1}{\pst@dimd=}} +\def\psset@xbbl#1{\pstree@setbboxadjust{#1}{\advance\pst@dima}} +\def\psset@xbbr#1{\pstree@setbboxadjust{#1}{\advance\pst@dimb}} +\def\psset@xbbh#1{\pstree@setbboxadjust{#1}{\advance\pst@dimc}} +\def\psset@xbbd#1{\pstree@setbboxadjust{#1}{\advance\pst@dimd}} +\let\pstree@treebboxadjust\relax +\def\Tn{\def\pst@par{}\pst@object{Tn}} +\def\Tn@i{% +\pst@@killglue +\global\let\pssucc\pspred +\begingroup +\pst@dima=\z@ +\pst@dimb=\z@ +\pst@dimc=\z@ +\pst@dimd=\z@ +\setbox\pstree@box=\hbox{}%% +\pstree@node +\endgroup +\ignorespaces} +\def\Tp{\def\pst@par{}\pst@object{Tp}} +\def\Tp@i{% +\begin@treenode +\pst@dima=\z@ +\pst@dimb=\z@ +\pst@dimc=\z@ +\pst@dimd=\z@ +\setbox\pstree@box=\hbox{% +\pst@newnode{\pssucc}{10}{0 0 }{\tx@InitPnode}}% +\end@treenode} +\def\Tc{\def\pst@par{}\pst@object{Tc}} +\def\Tc@i#1{% +\begin@treenode +\pssetlength\pst@dima{#1}% +\pst@dimb=\pst@dima +\pst@dimc=\pst@dima +\pst@dimd=\pst@dima +\nodealignfalse +\setbox\pstree@box=\hbox{\cnode@ii(\z@,\z@){#1}{\pssucc}}% +\end@treenode} +\def\TC{\def\pst@par{}\pst@object{TC}} +\def\TC@i{\Tc@i{\psk@radius}} +\def\Toval{\def\pst@par{}\pst@object{Toval}} +\def\Toval@i{\pstree@makenodebox{\Toval@ii\ovalnode@ii}} +\def\Toval@ii#1{% + \begin@treenode + \nodealigntrue + \setbox\pstree@box=\hbox{#1\pssucc}% + \pst@dima=\wd\pstree@box + \divide\pst@dima 2 + \pst@dimb=\pst@dima + \pst@dimc=\ht\pstree@box + \pst@dimd=\dp\pstree@box + \setbox\pstree@box=\hbox to\z@{\hss\unhbox\pstree@box\hss}% + \dp\pstree@box=\z@ + \ht\pstree@box=\z@ + \end@treenode% +} +% +\def\Tcircle{\def\pst@par{}\pst@object{Tcircle}} +\def\Tcircle@i{\pstree@makenodebox{\Toval@ii\circlenode@ii}} +% DG/SR modification begin - Mar. 7, 2003 - Patch 6 +\def\TCircle{\pst@object{TCircle}} +\def\TCircle@i{\pst@@killglue\pst@makebox{\Toval@ii\Circlenode@ii}} +% DG/SR modification end +% +\def\Tf{\def\pst@par{}\pst@object{Tf}} +\def\Tf@i{\Toval@ii{\fnode@ii()}} +\def\Tdia{\def\pst@par{}\pst@object{Tdia}} +\def\Tdia@i{\pstree@makenodebox{\Toval@ii\dianode@ii}} +\def\Ttri{\def\pst@par{}\pst@object{Ttri}} +\def\Ttri@i{\pstree@makenodebox{\Ttri@ii}} +\def\Ttri@ii{% + \begin@treenode + \nodealigntrue + \setbox\pstree@box=\hbox{\trinode@ii\pssucc}% + \pst@dima=\pst@dimg % Set by \pst@triboxsep + \pst@dimb=\wd\pstree@box + \advance\pst@dimb-\pst@dima + \pst@dimc=\ht\pstree@box + \pst@dimd=\dp\pstree@box + \setbox\pstree@box=\hbox to\z@{\hss\unhbox\pstree@box\hss}% + \dp\pstree@box=\z@ + \ht\pstree@box=\z@ + \end@treenode% +} +\def\Tr{\def\pst@par{}\pst@object{Tr}} +% SR modification begin - Oct. 27, 1996 +%\def\Tr@i{\pstree@makenodebox{\Tr@ii{\begingroup\rnode@ii}}} +\def\Tr@i{\pstree@makenodebox{\Tr@ii{\rnode@iii\rnode@iv}}} +% SR modification end +\def\Tr@ii#1{% +\begin@treenode +\def\pstree@nodehook{% +\xdef\pstree@next{\pst@dima=\number\pst@dima sp\relax}}% +\nodealigntrue +\setbox\pstree@box\hbox{#1\pssucc}% +\pstree@next +\pst@dimb=\wd\pstree@box +\advance\pst@dimb-\pst@dima +\pst@dimc=\ht\pstree@box +\pst@dimd=\dp\pstree@box +\setbox\pstree@box\hbox to\z@{\kern-\pst@dima\unhbox\pstree@box\hss}% +\ht\pstree@box=\z@ +\dp\pstree@box=\z@ +\end@treenode} +\def\TR{\def\pst@par{}\pst@object{TR}} +% DG modification begin - Oct. 25, 1996 +%\def\TR@i{\pstree@makenodebox{\Tr@ii{\Rnode@ii}}} +\def\TR@i{\pstree@makenodebox{\Tr@ii{\rnode@iii\Rnode@ii}}} +% DG modification end +\def\Tdot{\def\pst@par{}\pst@object{Tdot}} +\def\Tdot@i{% +\begin@treenode +\def\pstree@nodehook{\xdef\pstree@next{% +\pst@dima=\number\pst@dima sp\relax +\pst@dimc=\number\pst@dimb sp\relax}}% +\nodealignfalse +\setbox\pstree@box=\hbox{\dotnode@ii(\z@,\z@)\pssucc}% +\pstree@next +\pst@dimb=\pst@dima +\pst@dimd=\pst@dimc +\end@treenode} +\def\psset@fansize#1{\pst@@getlength{#1}\psk@fansize} +\psset@fansize{1cm} +\def\Tfan{\def\pst@par{}\pst@object{Tfan}} +\def\Tfan@i{% +\addto@par{edge=none}% +\begin@treenode +\solid@star +\pst@dimb=\psk@fansize +\pst@dimd=\pslinewidth +\advance\pst@dimb-\pst@dimd +\divide\pst@dimb 2 +\divide\pst@dimd 2 +\ifodd\psk@treemode\relax +\pst@dima=\pst@dimd +\pst@dimc=\pst@dimb +\else +\pst@dima=\pst@dimb +\pst@dimc=\pst@dimd +\fi +\setbox\pstree@box=\hbox{% +\pst@newnode{\pssucc}{16}{}{% +/Y 0 def +/X 0 def +/l \pst@number\pst@dima def +/r l def +/u \pst@number\pst@dimc def +/d u def +/NodePos { \tx@GetRnodePos } def}% +\def\pst@linetype{1}% +\nc@object{Closed}{\pspred}{\pssucc}{.5}{% +tx@Dict begin \psline@iii pop end +/w \pst@number\pst@dimb CLW 2 div sub def +/m \ifodd\psk@treemode false \else true \fi def +\tx@Tfan}}% +\pst@dimb=\pst@dima +\pst@dimd=\pst@dimc +\end@treenode} +\def\psset@tnsep#1{% +\def\pst@tempg{#1}% +\ifx\pst@tempg\@empty +\def\psk@tnsep{\number\pslabelsep sp}% +\else +\pst@@getlength{#1}\psk@tnsep +\fi} +\psset@tnsep{} +\def\psset@tnyref#1{\def\psk@tnyref{#1}}% +\psset@tnyref{} +\def\psset@tnheight#1{\edef\psk@tnheight{#1}} +\psset@tnheight{\ht\strutbox} +\def\psset@tndepth#1{\edef\psk@tndepth{#1}} +\psset@tndepth{\dp\strutbox} +\def\psset@tnpos#1{% +\def\pst@tempg{#1}% +\ifx\pst@tempg\@empty +\def\psk@tnpos{% +\ifcase\psk@treemode b\or r\or a\or l\fi}% +\else +\@ifundefined{pstree@tnput@#1}% +{\@pstrickserr{Bad tnpos: `#1'}\@ehpa}% +{\edef\psk@tnpos{#1}}% +\fi} +\psset@tnpos{} +\def\tnput@#1{\def\pst@par{}\pst@object{tnput}} +\def\tnput@i{\pstree@makenodebox{\tnput@ii}} +\def\tnput@ii{% +\begingroup +\use@par +\xdef\next{% +\if@star\noexpand\pst@starbox\fi +\noexpand\def\noexpand\psk@thistndepth{\psk@tndepth}% +\noexpand\def\noexpand\psk@thistnheight{\psk@tnheight}% +\noexpand\def\noexpand\psk@thistnyref{\psk@tnyref}% +\noexpand\def\noexpand\psk@thistnsep{\psk@tnsep}% +\expandafter\noexpand\csname pstree@tnput@\psk@tnpos\endcsname}% +\endgroup +\next +\end@treenode} +\@namedef{pstree@tnput@b}{% +\pstree@tnput@@v\pst@dimd\ht\dp\lower\psk@thistnheight} +\@namedef{pstree@tnput@a}{% +\pstree@tnput@@v\pst@dimc\dp\ht\raise\psk@thistndepth} +\def\pstree@tnput@@v#1#2#3#4#5{% +\pst@dimh=\wd\pst@hbox +\pst@dimg=\psk@href\pst@dimh +\advance\pst@dimg\pst@dimh +\divide\pst@dimg 2 +\advance\pst@dimh-\pst@dimg +\ifdim\pst@dimg>\pst@dima +\pst@dima=\pst@dimg +\fi +\ifdim\pst@dimh>\pst@dimb +\pst@dimb=\pst@dimh +\fi +\pst@dimh=\psk@thistnsep\relax +\ifdim\pst@dimh<\z@ +\pst@dimh=-\pst@dimh +\else +\advance\pst@dimh#1% +\fi +\pssetlength\dimen@{#5}% +\ifdim\dimen@>#2\pst@hbox +\advance\pst@dimh\dimen@\relax +\else +\advance\pst@dimh#2\pst@hbox +\fi +\setbox\pstree@box=\hbox{% +\box\pstree@box +#4\pst@dimh\hbox to\z@{\kern-\pst@dimg\unhbox\pst@hbox\hss}}% +#1=#3\pstree@box +\dp\pstree@box=\z@ +\ht\pstree@box=\z@} +\@namedef{pstree@tnput@l}{% +\pstree@tnput@@h\pst@dima{% +\hss +\lower\pst@dimg\box\pst@hbox +\kern\pst@dimh +\box\pstree@box}} +\@namedef{pstree@tnput@r}{% +\pstree@tnput@@h\pst@dimb{% +\box\pstree@box +\kern\pst@dimh +\lower\pst@dimg\box\pst@hbox +\hss}}% +\def\pstree@tnput@@h#1#2{% +\ifx\psk@thistnyref\@empty +\pssetlength\pst@dimg\psk@vref +\else +\pst@dimg=\ht\pst@hbox +\advance\pst@dimg\dp\pst@hbox +\pst@dimg=\psk@thistnyref\pst@dimg +\advance\pst@dimg-\dp\pst@hbox +\fi +\pst@dimh=\psk@thistnsep\relax +\ifdim\pst@dimh<\z@ +\pst@dimh=-\pst@dimh +\else +\advance\pst@dimh#1% +\fi +#1=\pst@dimh +\advance#1\wd\pst@hbox +\setbox\pstree@box=\hbox to\z@{#2}% +\ifdim\ht\pstree@box>\pst@dimc +\pst@dimc=\ht\pstree@box +\fi +\ifdim\dp\pstree@box>\pst@dimd +\pst@dimd=\dp\pstree@box +\fi +\dp\pstree@box=\z@ +\ht\pstree@box=\z@} +\newif\if@skiplevel +\def\skiplevel{\def\pst@par{}\pst@object{skiplevel}} +\def\skiplevel@i{\def\pstree@makebox{\pst@@makebox}\skiplevel@ii} +\def\skiplevel@ii{% +\pst@@killglue +\begingroup +\let\pssucc\pspred +\def\pst@tempa{0}% +\def\pst@tempb{0}% +\def\pst@tempc{0}% +\def\pst@tempd{0}% +\setbox\pstree@rootbox=\hbox{}% +\pstree@savevalues +\begingroup +\pstree@initsuccvalues +\pstree@setlevelpar +\@skipleveltrue +\pstree@do} +% DG/SR modification begin - Aug. 31, 1999 - Patch 4 +%\def\pstree@gettop#1{\expandafter\pstree@@gettop#1\@nil} +%\def\pstree@@gettop#1,#2\@nil{#1} +% DG/SR modification end +\def\skiplevel@horizontal{% +% DG/SR modification begin - Aug. 31, 1999 - Patch 4 +%\pst@dimc=\pstree@gettop\pstree@theupprofile sp +%\pst@dimd=\pstree@gettop\pstree@thedownprofile sp +\edef\pstree@upprofile{\pst@tempc,\pstree@theupprofile}% +\edef\pstree@downprofile{\pst@tempd,\pstree@thedownprofile}% +\pstree@max\pstree@upprofile\pst@cntg +\pst@dimc=\pst@cntg sp +\pstree@max\pstree@downprofile\pst@cntg +\pst@dimd=\pst@cntg sp +% DG/SR modification end +\pstree@treebboxadjust +\gdef\pstree@treebboxadjust{}% +\xdef\pstree@next{% +\noexpand\def\noexpand\pst@tempc{\number\pst@dimc}% +\noexpand\def\noexpand\pst@tempd{\number\pst@dimd}}% +\endgroup +\pstree@next} +\def\skiplevel@vertical{% +% DG/SR modification begin - Aug. 31, 1999 - Patch 4 +%\pst@dima=\pstree@gettop\pstree@theleftprofile sp +%\pst@dimb=\pstree@gettop\pstree@therightprofile sp +\edef\pstree@leftprofile{\pst@tempa,\pstree@theleftprofile}% +\edef\pstree@rightprofile{\pst@tempb,\pstree@therightprofile}% +\pstree@max\pstree@leftprofile\pst@cntg +\pst@dima=\pst@cntg sp +\pstree@max\pstree@rightprofile\pst@cntg +\pst@dimb=\pst@cntg sp +% DG/SR modification end +\pstree@treebboxadjust +\gdef\pstree@treebboxadjust{}% +\xdef\pstree@next{% +\noexpand\def\noexpand\pst@tempa{\number\pst@dima}% +\noexpand\def\noexpand\pst@tempb{\number\pst@dimb}}% +\endgroup +\pstree@next} +\def\skiplevels{\def\pst@par{}\pst@object{skiplevels}} +\def\skiplevels@i#1{% +\pst@@killglue +\begingroup +\pst@cnta=#1\relax +\edef\skiplevels@num{\the\pst@cnta}% +\def\pstree@makebox{\pst@makelongbox}% +\def\endskiplevels{}% +\loop +\ifnum\pst@cnta>\z@ +\advance\pst@cnta-1 +\expandafter\def\expandafter\endskiplevels\expandafter{% +\endskiplevels\pst@endlongbox} +\skiplevel@ii +\repeat +\expandafter\def\expandafter\endskiplevels\expandafter{% +\endskiplevels\endgroup\ignorespaces} +\ignorespaces} + +\catcode`\@=\TheAtCode\relax + +\endinput +%% +%% END: pst-tree.tex diff --git a/Master/texmf-dist/tex/generic/pstricks/pstricks.con b/Master/texmf-dist/tex/generic/pstricks/pstricks.con new file mode 100644 index 00000000000..a477a0fcbe0 --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/pstricks.con @@ -0,0 +1,44 @@ +%% BEGIN: pstricks.con (for dvips driver) +%% +%% Configuration file for PSTricks 97 +%% +%% Version 97 patch 2 (1997/04/28) +%% +%% For use with Rokicki's dvips (tested with v5.74 and older) + +\def\pstdriver{Rokicki's dvips} +{\catcode`\"=12\gdef\pstverb#1{\special{" #1}}} % Check catcode of " +\def\pstunit{1bp}% +\def\pstVerb#1{\special{ps: #1}} +\def\pstverbscale{SDict begin normalscale end} +% DG/SR modification begin - Apr. 28, 1997 (D. Carlisle + S. Rahtz) +% \def\pstheader#1{\special{header=#1}} +% We used to check for |\AtBeginDvi|, but that was broken in early release +% so we now check for the existence of |\textsuperscript| (added 1995/05/16) +\ifx\textsuperscript\@undefined + \def\pstheader#1{\special{header=#1}} +\else + \ifx\Gin@PS@file@header\@undefined + \def\pstheader#1{\AtBeginDvi{\special{header=#1}}} + \else + \let\pstheader\Gin@PS@file@header + \fi +\fi +% DG/SR modification end +%% +%% In the following, CP is short for currentpoint. +%% The neg is necessary because dvips scales the coordinates by 1 -1. +%% \tx@NET means neg exch neg exch translate. +\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET} +%% +%% ****************** END Rokicki's dvips ***************************** + +%%%%%%%%%%%%%%%%%%% !! CUSTOMIZATION STUFF GOES HERE: !! %%%%%%%%%%%%%%%%%% +%% If you want to include your own customizations to pstricks.tex, then +%% uncomment the \pstcustomize command, and include your modifications +%% after \pstcustomize. These will be read in after pstricks.tex. +%\pstcustomize + +\endinput +%% +%% END: pstricks.con 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 diff --git a/Master/texmf-dist/tex/generic/pstricks/textures.con b/Master/texmf-dist/tex/generic/pstricks/textures.con new file mode 100644 index 00000000000..3a2b622f17c --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/textures.con @@ -0,0 +1,29 @@ +%% BEGIN pstricks.con (for Textures 1.7 and 1.8 driver) +%% +%% Configuration file for PSTricks 97: must be renamed `pstricks.con' +%% +%% Version 97 (1997/03/01) +%% +%% For use with Textures, v1.7 and v1.8. + +\def\pstdriver{Textures-V1.7} +%\def\pstdriver{Textures-V1.8} +\def\pstunit{1bp} +\def\pstverb#1{\special{postscript #1 }} +\def\pstVerb#1{\special{rawpostscript #1}} +\def\pstverbscale{Mag 72.27 72 div mul dup neg scale} +\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET} +\def\pstheader#1{\special{prePostScriptfile #1}}% + +\pstcustomize + +\special{prePostScript + tx@Dict begin /sps {moveto /Mag ED pop tx@Dict begin} def /eps {} def end} +\def\pst@Verb#1{% + \special{rawpostscript tx@Dict begin}% + \special{postscript #1}% + \special{rawpostscript end}} + +\endinput +%% +%% END: pstricks.con diff --git a/Master/texmf-dist/tex/generic/pstricks/vtex.con b/Master/texmf-dist/tex/generic/pstricks/vtex.con new file mode 100644 index 00000000000..430f35a50fd --- /dev/null +++ b/Master/texmf-dist/tex/generic/pstricks/vtex.con @@ -0,0 +1,74 @@ +%% BEGIN: pstricks.con (for VTeX) +%% +%% Configuration file for PSTricks 97 +%% +%% Version 97 patch 4 (11-17-99) +%% +%% For use with VTeX PostScript driver v 6.61+ +%% [MV, MK, special thanks to Denis Girou for help] +%% +%% Requires vtex.def 6.61 or newer +%% +%% For support and possible updates, check +%% http://www.micropress-inc.com +%% + +\def\pstdriver{VTeX} +{\catcode`\"=12\gdef +\pstverb#1{% +\ifnum\OpMode=1 + \special{pS*#1}% //Raw: PDFmode only. +\else + \special{pS: GS }% + \special{pS: #1}% + \special{pS: GR }% +\fi + }} +\def\pstunit{1bp}% +\def\pstVerb#1{\special{pS: #1}} +\def\pstVerb#1{% + \special{pS: #1}% + } +\def\pstverbscale{SDict begin normalscale end} +\ifx\textsuperscript\@undefined + \def\pstheader#1{\special{header=#1}} +\else + \ifx\Gin@PS@file@header\@undefined + \def\pstheader#1{\AtBeginDvi{\special{header=#1}}} + \else + \let\pstheader\Gin@PS@file@header + \fi +\fi +\def\pstrotate{CP CP translate 3 -1 roll neg rotate \tx@NET} +%% +%% ****************** END VTeX ***************************** + +%%%%%%%%%%%%%%%%%%% !! CUSTOMIZATION STUFF GOES HERE: !! %%%%%%%%%%%%%%%%%% +%% If you want to include your own customizations to pstricks.tex, then +%% uncomment the \pstcustomize command, and include your modifications +%% after \pstcustomize. These will be read in after pstricks.tex. +% +% Some customization needed for VTeX since the coordinate system +% is different. +\newif\if@colorstack +\ifnum\OpMode>-1 +\ifnum\OpMode<3 +\@colorstacktrue +% D.G. modification begin - Nov. 17, 1999 +\let\vtex@pspicture=\pspicture +\def\pspicture{\@colorstackfalse\vtex@pspicture} +\let\vtex@endpspicture=\endpspicture +\def\endpspicture{\vtex@endpspicture\@colorstacktrue} +% D.G. modification end +\fi +\fi + +\pstcustomize +\def\tx@RotBegin{neg RotBegin } +% D.G. modification begin - Oct. 6, 1999 +\def\tx@Rot{neg Rot } +% D.G. modification end + +\endinput +%% +%% END: pstricks.con |