summaryrefslogtreecommitdiff
path: root/graphics/pstricks/base
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/pstricks/base
Initial commit
Diffstat (limited to 'graphics/pstricks/base')
-rw-r--r--graphics/pstricks/base/Changes483
-rw-r--r--graphics/pstricks/base/README125
-rw-r--r--graphics/pstricks/base/config/README.cfg45
-rw-r--r--graphics/pstricks/base/config/distiller.cfg64
-rw-r--r--graphics/pstricks/base/config/dvips.cfg361
-rw-r--r--graphics/pstricks/base/config/dvipsone.cfg140
-rw-r--r--graphics/pstricks/base/config/gastex.cfg119
-rw-r--r--graphics/pstricks/base/config/textures.cfg129
-rw-r--r--graphics/pstricks/base/config/vtex.cfg172
-rw-r--r--graphics/pstricks/base/config/xdvipdfmx.cfg244
-rw-r--r--graphics/pstricks/base/doc/PSTricks.bib109
-rw-r--r--graphics/pstricks/base/doc/ctandir.sty30
-rw-r--r--graphics/pstricks/base/doc/images/flowers.eps269
-rw-r--r--graphics/pstricks/base/doc/images/tiger.eps2746
-rw-r--r--graphics/pstricks/base/doc/images/tiger.pdfbin0 -> 33406 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-doc.bst1373
-rw-r--r--graphics/pstricks/base/doc/pst-doc.cls518
-rw-r--r--graphics/pstricks/base/doc/pst-doc.ist36
-rw-r--r--graphics/pstricks/base/doc/pst-doc.pdfbin0 -> 6433 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news.sty103
-rw-r--r--graphics/pstricks/base/doc/pst-news.tex274
-rw-r--r--graphics/pstricks/base/doc/pst-news05.pdfbin0 -> 133777 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news05.tex403
-rw-r--r--graphics/pstricks/base/doc/pst-news06.pdfbin0 -> 85767 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news06.tex198
-rw-r--r--graphics/pstricks/base/doc/pst-news08.pdfbin0 -> 195188 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news08.tex862
-rw-r--r--graphics/pstricks/base/doc/pst-news09.pdfbin0 -> 89659 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news09.tex298
-rw-r--r--graphics/pstricks/base/doc/pst-news10.pdfbin0 -> 572968 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news10.tex926
-rw-r--r--graphics/pstricks/base/doc/pst-news11.pdfbin0 -> 89829 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news11.tex184
-rw-r--r--graphics/pstricks/base/doc/pst-news12.pdfbin0 -> 99091 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news12.tex243
-rw-r--r--graphics/pstricks/base/doc/pst-news13.pdfbin0 -> 103548 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news13.tex252
-rw-r--r--graphics/pstricks/base/doc/pst-news14.pdfbin0 -> 77050 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news14.tex202
-rw-r--r--graphics/pstricks/base/doc/pst-news15.pdfbin0 -> 284322 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news15.tex105
-rw-r--r--graphics/pstricks/base/doc/pst-news16.pdfbin0 -> 47967 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news16.tex105
-rw-r--r--graphics/pstricks/base/doc/pst-news17.pdfbin0 -> 81896 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news17.tex226
-rw-r--r--graphics/pstricks/base/doc/pst-news18.pdfbin0 -> 74212 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news18.tex216
-rw-r--r--graphics/pstricks/base/doc/pst-news19.pdfbin0 -> 63160 bytes
-rw-r--r--graphics/pstricks/base/doc/pst-news19.tex184
-rw-r--r--graphics/pstricks/base/doc/pst-user.pdfbin0 -> 898183 bytes
-rw-r--r--graphics/pstricks/base/doc/pstricks-bug.tex547
-rw-r--r--graphics/pstricks/base/doc/pstricks-doc.pdfbin0 -> 5367012 bytes
-rw-r--r--graphics/pstricks/base/doc/test-pst.pdfbin0 -> 189902 bytes
-rw-r--r--graphics/pstricks/base/doc/test-pst.tex257
-rw-r--r--graphics/pstricks/base/dvips/pst-algparser.pro773
-rw-r--r--graphics/pstricks/base/dvips/pst-dots.pro173
-rw-r--r--graphics/pstricks/base/dvips/pst-dots97.pro132
-rw-r--r--graphics/pstricks/base/dvips/pstricks-fonts-lm.pro69
-rw-r--r--graphics/pstricks/base/dvips/pstricks-fonts-ps.pro32
-rw-r--r--graphics/pstricks/base/dvips/pstricks-fonts-urw.pro61
-rw-r--r--graphics/pstricks/base/dvips/pstricks.pro1232
-rw-r--r--graphics/pstricks/base/dvips/pstricks97.pro225
-rw-r--r--graphics/pstricks/base/generic/pst-fp.tex717
-rw-r--r--graphics/pstricks/base/generic/pst-key.tex101
-rw-r--r--graphics/pstricks/base/generic/pstricks-tex.def85
-rw-r--r--graphics/pstricks/base/generic/pstricks-xetex.def34
-rw-r--r--graphics/pstricks/base/generic/pstricks.con360
-rw-r--r--graphics/pstricks/base/generic/pstricks.tex4595
-rw-r--r--graphics/pstricks/base/generic/pstricks97.tex2626
-rw-r--r--graphics/pstricks/base/latex/pst-all.sty33
-rw-r--r--graphics/pstricks/base/latex/pst-key.sty7
-rw-r--r--graphics/pstricks/base/latex/pst-platform.sty142
-rw-r--r--graphics/pstricks/base/latex/pstcol.sty26
-rw-r--r--graphics/pstricks/base/latex/pstricks-pdf.sty179
-rw-r--r--graphics/pstricks/base/latex/pstricks.sty252
75 files changed, 24402 insertions, 0 deletions
diff --git a/graphics/pstricks/base/Changes b/graphics/pstricks/base/Changes
new file mode 100644
index 0000000000..77863478a3
--- /dev/null
+++ b/graphics/pstricks/base/Changes
@@ -0,0 +1,483 @@
+% $Id: Changes 934 2019-02-23 14:07:34Z herbert $
+
+
+Changelog for
+pstricks.tex ---------
+pst-fp.tex -----------
+xdvipdfmx.con --------
+vtex.con -------------
+pstricks-doc ---------
+pstricks.pro ---------
+pst-dots.pro ---------
+pst-algparser.pro ----
+pstricks97.pro -------
+pstricks-pdf.sty -----
+pstricks.sty ---------
+pst-all.sty ---------
+%pstricks-pdf.sty -----
+%pst-platform.sty ----
+
+
+--------------------------------------------------------------------------
+
+
+pstricks.tex --------
+versions like 2.47a have only changes in other files, but not
+in this main package.
+
+2.97 2019-05-11 - fix for trailing space with \pscustom
+2.96 2019-02-23 - use \ifx\pgfkeysloaded\relax for the test
+2.95 2019-01-22 - preset dimen=inner for a circle
+2.94 2019-01-07 - added \psLine which can have only one or two pair of
+ coordinates which are tested for a distance zero
+2.93 2019-01-07 - fix for changes in pgffor.code.tex
+2.92 2018-12-24 - revert chnages for \psarc (don't work for nodes as angle)
+2.91 2018-12-24 - bugfix for identical angles and \psellipticatc(n)
+2.90a 2018-12-22 - added optional argument xetex for pstricks.sty
+2.90 2018-12-17 - undocumented feature for x|y-offset of gridlabels
+2.89 2018-12-16 - allow keysetting for \rput only for valid options
+2.88 2018-12-13 - fix an introduced trailing space
+2.87 2018-12-11 - allow key/value setting for \rput[key=vale,...](...)
+2.86a 2018-11-14 - fix for latext Ghostscript, added PS function Power
+ which can be used instead of exp
+2.86 2018-08-23 - fix for trailing space in showgrid (#1f)
+2.85 2018-08-22 - fix for trailing space in \radians
+2.84 2018-05-01 - use \long\def\@fornoop from recent LaTeX
+2.83a 2018-02-08 - changes in pstricks.sty
+2.82 2018-01-06 - allow ! notation in \psRing for the two radii
+2.81 2018-01-01 - disable engine check (defined in pstricks.sty)
+2.80a 2017-12-30 - added some PS functions for conversion of angles
+2.80 2017-12-08 - fix for \radians
+2.79 2017-11-27 - fix rounding error in \pscircle for a big linewidth
+2.78 2017-11-26 - fix for a trailing space in oefill
+2.77 2017-10-04 - fix bug with wrong position for catcode change of @
+ (debian bug 877682)
+ - created new file pstricks-tex.def for the additional
+ latex macros when running tex
+ - define \ifpst@psfonts for the TeX part
+2.76a 2017-09-23 - revert the changes for PtoC: PtoC360->PtoC (old meaning)
+ PtoC->PtoCrel (relativ)
+2.76 2017-09-17 - use an optional argument to switch between
+ original PostScript or URW fonts (Nimbus)
+ default is URW
+2.75a 2017-09-12 - modifications in pstricks.pro
+2.75 2017-08-24 - use always URW fonts instead of PostScript,
+ eg Helvetica->NimbusSanL
+2.74a 2017-07-16 - modified pstricks.sty
+2.74 2017-06-15 - added a randomcolor for gray, rgb, cmyk and hsb
+2.73a 2017-05-22 - revert unneeded changes in pst-fp
+2.73 2017-05-18 - "understandable" error message when using pdflatex
+ without loading auto-pst-pdf
+2.72b 2017-04-19 - uploaded wrong version
+2.72a 2017-04-18 - fix bug with unicode-math in pst-doc.cls
+2.72 2017-04-06 - load pgf related macros only when
+ not done by tikz itself
+2.71 2016-12-23 - added optional argument to \newpsstyle
+2.70 2016-09-23 - use strokeopacity for doubleline, too
+2.69 2016-09-16 - use option draft instead of overfullrule
+2.68 2016-06-09 - test for \overfullrule depending to latex
+2.67 2016-05-28 - fix bug for \psCirclebox@ii. depth must be negative
+2.66 2016-05-19 - do the allocation stuff only for
+ the original TeX and not eTeX
+2.65a 2016-04-22 - fix in pstricks.pro
+2.65 2016-02-07 - fix bug with pst@refangle
+2.64b 2015-11-14 - fix bug in pstricks.sty
+2.64a 2015-11-11 - new package pstricks-pdf.sty
+2.64 2015-10-09 - fix for xetex and \psput@special
+2.63 2015-09-11 - fix for xetex and \psput@special
+2.62a 2015-07-27 - upload the correct pstricks.sty
+2.62 2015-07-24 - added optional argument bgcolor
+2.61 2015-06-28 - added optional arguments precode and postcode
+2.60 2014-10-25 - make it compatible for using it with ConTeXt
+2.57 2014-08-27 - take option correctAngle into account for \psellipticwedge
+2.56 2014-07-31 - added gridstyleA and fixed bug with Ellipse and move
+ to start point
+2.55 2014-07-28 - added \psellipseAB: draw an ellipse between two given points
+2.54a 2014-05-19 - fixed introduced bug in pst-algparser.pro
+2.54 2014-05-19 - allow circle and ellipse in \pscustom with moving
+ the currentpoint to the start point and not the center.
+2.53a 2014-03-30 - changes in pst-algparser.pro
+2.53 2014-03-12 - added cubic splines
+2.52 2014-03-01 - allow rot=.. for all elliptic macros
+ - enable \SpecialCoor as default
+2.51 2014-02-03 - make strokeopacity available for dots
+2.50 2014-01-16 - added experimental fillstyle oefill, the inverse of eofill
+ - allow PostScript notation for \pst@checknum
+2.49c 2013-12-27 - moved overlay functions into an own package
+2.49b 2013-12-21 - moved overlay functions into an own dictionary
+2.49a 2013-12-09 - changes in pstricks.sty
+2.49 2013-12-09 - added \reversepath
+2.48 2013-11-29 - fixed trailing space for !!
+2.47a 2013-11-28 - changes in pst-ovl
+2.47 2013-11-26 - added special coor type !! for Postfix notation
+ in user coordinates
+2.46 2013-08-13 - fixed bug with \pstcustomize (delete a line)
+2.45 2013-07-08 - moved the overlay part into pst-ovl
+ - added \@tfor macros if used without \LaTeX
+2.44 2013-06-24 - add macros \pssetMonochrome and \pssetGrayscale
+ - added coor option ** for (f(y) y)
+2.43 2013-05-12 - allow option ! to the labelsep of \uput
+2.42 2013-04-26 - add option + for coordinates to allow
+ (+{x} {f(x)}) both in algebraic notation where
+ x must be expanded to a value.
+2.41 2013-04-17 - add option for using the pgf PS functions.
+ in some cases they are missing. They are
+ defined in pst-tools.pro which is loaded
+ by default.
+2.40 2013-04-05 - fix for showgrid=top. Uses now the
+ same units as showgrid=bottom
+ - added \psRing
+2.39 2013-04-04 - fix for introduced bug for showgrid
+2.38 2013-04-03 - fix for showgrid=true
+2.37 2013-03-12 - fix for \uput@vii#1#2
+2.36 2013-02-09 - fix for introduced bug for pst@dotFill
+2.35 2012-12-21 - fix for introduced bug with missing
+ definition for \@width
+2.34 2012-11-18 - make package pgffor available
+2.33 2012-09-23 - fix a trailing space in \pst@Pyth
+2.32 2012-09-20 - added more blendmodes for distiller
+2.31 2012-08-24 - fixed bug with the star version of \psellipticarc
+ and the additional setting of showpoints
+2.30 2012-08-13 - fixed bug with the star version of \psellipticarc
+ - added fillstyle options eovlines, eohlines,
+ eovlines*, and eohlines*
+2.29 2012-06-04 - fixed itroduced trailing space with boolkey
+2.28 2012-05-24 - added \add@psCode, which uses \pstVerb
+ instead of \pstverb
+2.27 2012-03-11 - activate \tx@strokeopacity for \psgrid
+2.26 2012-02-19 - showgrid=top is now possible
+2.25 2012-02-12 - modifications to the code of curveticks
+2.24 2012-02-09 - add option for curveticks with option symbol
+2.23 2011-09-04 - change also \psx|ylabelsep for pst-plot
+2.22 2011-07-09 - added fillstyle dots
+2.21 2011-06-07 - fix bug with a trailing space in \psForeach
+2.20 2011-04-23 - load pst-tools.pro
+2.19 2011-03-25 - fixed a bug with missing coordinates for pspicture
+2.18 2011-02-15 - fixed a bug with correctAngle and showpoints of
+ \psellipticarc
+ - fixed introduced bug with arrowscale=...
+2.17 2011-01-30 - added \psLoop for loops without a defined counter
+2.16 2010-12-18 - added optional argument dashcolor and new linestyle
+ coloreddashed
+2.15 2010-11-25 - bugfix for using \pstCheckCoorType
+2.14 2010-11-14 - bugfix for using \pst@pyth. Now \pst@Pyth, which uses
+ no dimen registers
+2.13 2010-11-01 - new macro and counter for the type of read coordinates
+ \pstCheckCoorType{#1} sets the macro \pst@C@@rType
+% \pst@C@@rType = 0 cartesian (x,y)
+% = 1 polar (r;phi)
+% = 2 PS (! x y)
+% = 3 mixed ((x,y)|(x,y))
+% = 4 algebraic (*x f(x))
+% = 5 node (A)
+% = 6 special node ([...]A)
+% = 7 node (>A)
+
+2.12 2010-09-16 - new optional argument for setflat
+ - fix bug with doubled linecap definition
+ - fix bug with missing linejoin in \psls@solid
+2.11 2010-09-09 - new optional arguments for setting a variable
+ linewidth and variable color
+2.10 2010-08-27 - new optional argument noCurrentPoint, which is
+ preset to false.
+2.09 2010-07-28 - fix bug with rotation values like *0 (ms)
+2.08 2010-06-06 - fix bug with uput@vii
+2.07 2010-05-24 - fix bug with uput and node setting (ms)
+2.06 2010-04-27 - fix bug with trailing space in \pst@isnum
+2.05 2010-04-26 - fix bug with missing \psk@rot for Ellipse
+2.04 2010-04-24 - take \psk@rot into account for \psellipse (hv)
+ - new version of \pst@divide (ms)
+2.03 2010-04-12 - add keyword correctAngle=true to get an
+ elliptic arc with correct bow length
+2.02 2010-02-23 - fix a spurious blank in \NormalCoor
+2.01 2010-02-15 - fix problem with nonlinear angles for
+ \psellipticarc
+ - fix problem with tex: pst-xkey must be loaded
+ after we are sure having all latex macros
+ defined
+2.00 2010-02-11 - use pst-xkey to get rid of dependencies with
+ other packages
+1.33 2009-12-22 - add linestyle symbol
+1.32 2009-12-14 - fixed bug with \hskip and fnode in psmatrix
+ with a new \pshspace#1
+ - moved the algebraic option from pstricks-add
+ to the main pstricks.tex
+1.31 2009-11-27 - fixed introduced problem with \pst@def
+1.30 2009-10-25 - revert the changes for the \pst@object, it now
+ use \def\pst@par{}
+1.29 2009-05-19 - new option pType for a parabola with two points
+1.28 2009-03-17 - fix spurious blank for \SpecialCoor
+1.27 2009-01-25 - updated \pssetlength to check for special coor
+ - renamed internal \next to \ps@next to prevent problems
+ with other packages
+ - added \psPline(p1)(p2)(p3) for the shortest distance
+ of P1 to the line p2p3
+ - added \psarcAB and \psarcnAB for arcs with a given
+ center and two points
+1.26 2008-07-31 - fixed bug with double arrow and arrowscale
+ - fix bug with arrows longer than the arc/line ...
+ - fix bug with pst@theheaders
+ - fix bug with trailing spaces
+1.25 2008-06-17 added fill style penrose
+1.24 2008-06-17 added \psDEBUG[#1]#2 for better dubugging
+1.23 2008-05-23 - add octogon symbol (hv)
+ - fix bug with D>-<D (hv)
+1.22 2008-04-14 - added shift=* option to get vertically centered
+ pspicture box. It is the old \pspciture[0.5] option
+ - add \pscircleOA(center)(point on the circle)
+1.21 2008-01-24 - changed code for transparency making distiller work
+1.20 2008-01-01 - added opacity for normal stroke operation (lines)
+ - added the arrowtype <D-D> and <D<D-D>D>, which draws the
+ sides as betier curves (ArrowD type in pstricks.pro)
+ - add special coor type (*x f(x)), which invokes the
+ algebraic parser for f(x) before using the default
+ (!x y) coor type
+ - add option linejoin=0,1,or 2 for connecting lines
+ - add option linecap=0,1,or 2 for line ends
+ - small tweaks to psellipticarc x y -> xOrig yOrig
+ - fix introduced bug with \newpsstyle: \pst@tempa->\pst@tempA
+ - add PS subroutines /UserCoor and /ScreenCoor for easy
+ transforming into user or screen coordinates
+ - changed wrong name of \psk@shift to \pst@shift
+ - fix bug with pst-node and \\[name=...]. It now uses
+ \ps@ifnextchar for scanning the next token
+ - fix bug with pst@tempg in \polar@coor. It was already used in
+ \pst@getangle.
+ - new option gridfont for the label font of \psgrid
+ can now be any of the PS-fonts Helvetica (Default),
+ Times-Roman, Palatino-Roman, ...
+1.15a 2007-01-05 - \parabola->\psparabola (old name still valid) (hv)
+1.15 2006-12-19 - add support for more dot styles (from Etienne Riga)
+1.14c 2006-04-29 - add option linecap for dashed lines
+1.14b 2006-04-20 - fix a bug in \psset@linetype
+1.14a 2006-02-06 - revert the changes for pslongbox (introduced bug)
+1.14 2005-12-17 - make the color part compatible to color/xcolor
+1.13 2005-12-15 - fix bug of \psdot*
+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)
+
+
+
+
+pst-fp.tex ----------- (hv)
+ v 0.06 2010-05-14 delete catcode change of @
+ v 0.05 2010-01-17 add \pst@Int
+ add \pst@int
+ v 0.04 2009-11-24 add \pstFPadd
+ v 0.03 2009-11-14 add \pstFPmul
+ v 0.02 2009-04-02 initial version
+
+
+
+
+xdvipdfmx.con ------
+0.05 2015-09-11 - move the fix into pstricks.tex
+0.04 2015-09-11 - fix bug with wrong scaling for \psput@cartesian
+0.03 2011-11-23 - fix bug with wrong scaling for nodes
+0.02 2010-08-02 - uncomment redefinition of \pst@starbox
+0.01 2007-03-11 - first CTAN version, must be renamed to pstricks.con
+ when used with XeTeX
+
+
+
+vtex.con ------
+0.02 2008-01-01 - disable transparent color setting
+
+
+
+pstricks-doc -----------
+2015-11-11 - updated news2015
+2015-07-25 - updated news2015
+2015-06-29 - new news2015
+2014-08-28 - updated news2014
+2014-07-28 - updated news2014
+2013-12-09 - updated news2009 and news2013
+2013-11-26 - updated news2013
+2013-04-17 - updated news2013
+2011-04-30 - extensions to pst-doc.cls v 0.19
+2011-04-20 - extensions to pst-doc.cls v 0.18
+2010-11-03 - extensions to pst-doc.cls v 0.16
+2010-05-15 - extensions to pst-doc.cls v 0.15
+2010-01-04 - extensions to pst-doc.cls v 0.14
+2009-12-08 - extensions to pst-doc.cls
+ v 0.11 (package paralist)
+2009-09-27 - extensions to pst-doc.cls
+2009-08-17 - extensions to pst-doc.cls
+2009-03-17 - update pst-doc.cls
+2009-01-31 - update pst-doc.cls
+2009-01-30 - update pst-doc.cls
+ - new file pst-doc.ist
+ - new file pst-news09.tex|pdf
+2008-11-14 new file pst-doc.cls
+2008-05-23 new files pst-news2008.tex|pdf
+ pst-news.sty for the doc
+2005-12-22 new files pstnews1-14.tex|pdf
+2006-12-19 new files pstnews1-15.tex|pdf
+
+
+
+---- pstricks.pro
+1.30 2018-12-17 - added offset parameter for Grid
+1.29 2018-11-14 - added /Power function
+1.28 2017-12-30 - /AnytoDeg, /DegtoAny, /AnytoRad and /RadtoAny
+ - (see documentation)
+1.27 2017-12-08 - P2CRel
+1.26 2017-09-17 - do not load any font, leave it to the packages
+ - change the order for /Rect from right to left
+1.25 2017-09-12 - take \ps@angleunit into account for PtoC
+ - PtoC360 for the original version
+1.24 2016-04-22 - fixed an empty line
+1.23 2014-07-31 - fixed bug with Ellipse and move to start point
+1.22 2014-03-12 - added cubic spline stuff (Christoph Bersch)
+1.21 2013-11-28 - deleted the overlay stuff
+1.20 2013-11-26 - fix for Rand
+1.19 2013-11-08 - do not put /Uput in a local dictionary
+1.18 2013-11-05 - put /UUput and /Uput in local dictionaries
+1.17 2013-07-08 - move the overlay part into pst-ovl.pro
+1.16 2013-05-22 - save color functions
+1.15 2012-10-16 - modified Div operator
+ - take eofill into account
+ - moved some helper stuff into pst-tools.pro
+1.14 2012-08-13 - add eoclip for linefill and dotfill
+1.13 2012-07-01 - add PenroseFillA
+1.12 2012-02-12 - add option tickAngle and symbolLinewidth
+1.11 2012-02-09 - fix bug
+1.10 2012-02-09 - add option for curveticks with option symbol
+1.09 2011-10-31 - take values Ox and Oy into account for
+ plot styles LineToXAxis and LineToYAxis
+1.08 2011-07-09 - added sibroutine DotFill
+1.07 2010-04-30 - take \psk@rot into account for \psellipse
+ - new helper function concatstring
+1.06 2009-01-30 - cosmetic changes to the code
+1.05 2008-08-02 - commented out empty lines
+1.04 2008-05-11 - added Rand for a real random 0<=Rand<=1
+1.03 2008-04-15 - only some cosmetics to the code
+1.02 2008-01-01 - added the arrowtype D>, sides as curves (ArrowD)
+ - added the whole algebraic parser stuff
+ - added function tan := sin cos div
+ - added function Tan := sin cos Div
+ - added Pyth2 for 2 points given by xA yA xB yB
+ - change variable names from x,y to xOrig, yOrig for
+ EllipticArcArrow
+ - move font setting for \psgrid into pstricks.tex
+1.01 2006-01-11 (vg) fix a bug with ArcAdjust when both angles ares negative
+ add Sqrt sunction
+1.00 2005-09-19 move the code for arcs of an ellipse from
+ the main pstricks.tex into this pro
+97, patch 7 2005-09-11 added new fillstyles
+97, patch 6 2005-05-17 added some helper stuff
+ RadtoDeg, DegtoRad, Pi, TwoPi, ATAN
+97, patch 5 2005-03-08 bugfix for DashLine
+
+
+---- pst-dots.pro
+2.02 2008-04-19 add octogon symbol (hv)
+2.01 2008-04-18 add some comments to the code (hv)
+2.00 2006-12-19 add more dot symbols from Etienne Riga (hv)
+
+
+---- pst-tools.pro
+ -- file moved into package pst-tools --
+
+
+
+---- pst-algparser.pro
+0.06 2014-05-19 - fixed bug in TrigoFunc
+0.05 2014-03-30 - added floor function
+0.04 2011-10-31 - add !/fact/Fact for the factorial function
+0.03 2010-10-10 - cosmetics
+0.02 2008-08-02 - commented out empty lines
+ - add EXP func ( same as exp )
+0.01 2008-01-01 initial version (hv)
+
+
+
+---- pstricks97.pro
+Version 97 patch 3, 98/06/01
+
+
+
+pstricks.sty --------
+0.69 2018-12-22 - added optional argument xetex
+0.68 2018-02-08 - make grayscale and monochrome option
+ use the global dictionary
+0.67 2018-01-06 - small changes
+0.66 2018-01-01 - new switch for engine
+0.65 2017-09-17 - new switch for PS versus URW fonts
+0.64 2017-07-16 - modified Blendmode for option distiller
+0.63 2017-03-17 - remove auto-pst-pdf support, which is now possible
+ with package pstricks-pdf
+0.62 2015-11-14 - set distiller option adter loadung pstricks
+0.61 2015-11-11 - move auto-pst-pdf to a new package
+0.60 2013-12-12 - test, if babel was loaded for \shorthandoff
+0.59 2013-10-21 - fix for introduced bug with ifpdf
+0.58 2013-10-20 - fix for \usepackage[pdf]{pstricks} when using
+ documentclass beamer
+0.57 2013-05-22 - add option grayscale
+0.56 2013-05-21 - add option monochrome
+0.55 2013-04-05 - pass option pdfcrop=--hres to auto-pst-pdf
+0.54 2013-04-05 - revert setting of the fillcolor, see 0.33
+0.53 2012-08-24 - update version number for pro files
+0.52 2011-10-31 - update version number for pro files
+0.51 2011-08-01 - revert test for pdflatex / lualatex
+0.50 2011-04-23 - message for pst-tools.pro
+0.49 2011-03-26 - test for pdflatex/lualatex
+0.48 2010-11-26 - cgode changes
+0.47 2010-09-18 - fix bug with option 97, load pstricks97.pro and
+ pst-dots97.pro
+0.46 2010-08-28 - fix bug with auto-pst-pdf
+0.45 2010-06-17 - add option pdf for using auto-pst-pdf together
+ with pdflatex (needs an option -shell-escape
+ for TeXLive or -enable-write18 for MiKTeX)
+0.44 2010-04-24 - change version number of pstricks.pro
+0.43 2010-03-20 - rename \pst@tempa to \pst@sty@tempa to prevent
+ problems with pst-fill
+0.42 2010-03-16 - load pst-fp only once by pstricks-tex
+ write only a message for a LaTeX run
+0.41 2010-02-11 - message for loading pst-fp
+0.40 2009-01-30 - typeout an error message if the user named his
+ TeX source file pstricks.tex (rn)
+ - updated versions for the pro files
+0.39 2008-10-31 - define \psDEBUG, if the old version is loaded
+0.38 2008-10-19 - add new option for loading the old version from '97
+0.37 2008-01-24 - add option distiller for transparent colors
+0.36 2008-01-22 - Better error message, when the document
+ has the same name than a PSTricks file. (RN)
+0.35 2008-01-01 - add message for loading pstalpparser.pro
+ - add option vtex to disable opacity values
+0.34 2007-09-13 - add message for loading pstricks.pro
+ - and pst-dots.pro (hv)
+0.33 2007-02-18 set initial color (hv)
+0.32 2006-08-10 message for loading the pro file (hv)
+0.31 2005-12-19 one more step to a better color support (hv)
+0.30 2005-11-15 drop test for pstcol
+ fix bug with xcolor (hv)
+0.24 2005-08-30 drop support for \sclabox 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)
+
+pst-all.sty --------
+ 2008-01-01 load pstricks-add
+ 2007-09-13 change order of the packages
+ 2006-12-19 do not load pst-char, it is now part of pst-text
+
diff --git a/graphics/pstricks/base/README b/graphics/pstricks/base/README
new file mode 100644
index 0000000000..d665fee041
--- /dev/null
+++ b/graphics/pstricks/base/README
@@ -0,0 +1,125 @@
+PSTricks 2019
+
+This package may be distributed under the terms of the LaTeX Project
+Public License, as described in lppl.txt in the base LaTeX distribution.
+Either version 1.3 or, at your option, any later version.
+
+-----------------------------------------------------------------------
+PSTricks is the original work of Timothy van Zandt
+
+PSTricks 97 is edited by Denis Girou and Sebastian Rahtz
+
+PSTricks 2004 is edited by Herbert Voss <hvoss@tug.org>
+and Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
+
+PSTricks 2005- is edited by Herbert Voss <hvoss@tug.org>
+
+-----------------------------------------------------------------------
+For more informations go to http://tug.org/PSTricks _and_ read the
+news articles in the doc directory!
+
+
+1 - Copyright
+ ---------
+
+COPYRIGHT 1993, 1994, 2000 by Timothy Van Zandt, <tvz@econ.insead.fr>.
+COPYRIGHT 2004, 2005 by Herbert Voss <voss@PSTricks.de> and
+ Rolf Niepraschk <Rolf.Niepraschk@ptb.de>.
+COPYRIGHT 2006-- by Herbert Voss <hvoss@tug.org>
+
+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.
+
+2 - Introduction
+ ------------
+
+This package is a re-release of PSTricks, incorporating all of the
+beta releases and bug fixes made up to March 1997. It is *not*
+intended as a full new release of PSTricks, but as a consolidation and
+cleaned distribution. Because Timothy van Zandt does not currently have
+enough time to work on PSTricks, he gave permission for Denis Girou,
+Sebastian Rahtz and Herbert Voss to produce this interim solution.
+
+Some new features have been added in the 2004 version, except the release
+of the small pst-fill package for filling (tiling) arbitrary regions and the
+various evolving contributions, but we have merged in all the bug fixes
+and beta addons which Timothy produced.
+
+We have renamed some of the files that make up PSTricks, for consistency.
+The multido package is now in /macros/generic/multido
+
+3 - Installation
+ ------------
+
+3.1 - (La)TeX files
+
+ a - You have to move all the files from the "generic" subdirectory
+to a directory part of your TEXINPUTS environment variable, or to add it
+in your TEXINPUTS list of paths.
+
+ b - If you are a LaTeX user (and not only a plain TeX one), you have
+to do the same thing for the "latex" subdirectory, which define LaTeX
+wrappers for all the PSTricks files.
+
+3.2 - PostScript header files
+The file pstricks.con is the current platform specific config file.
+For other platforms read the README from the config directory
+
+3.3 - Known pitfalls
+
+ a - To use the standard `color' or `xcolor' package with PSTricks, you
+must load the `pstricks.sty' package, which interface the two packages,
+loading them in the right order, and overriding some small parts of
+PSTricks to allow it to use the `color' or `xcolor' package system for
+specifying color. We STRONGLY recommend that you use this way today.
+pstricks.sty loads by default the xcolor package, but there is an option
+"noxcolor". If you are a LaTeX user then load _always_ first the
+pstricks.sty package.
+
+ b - LaTeX users must also take care that the `pstricks.sty' package is
+required in place of the `pstricks.tex' one if the `graphics' or `graphicx'
+package is also loaded.
+
+ c - Don't try to load the `color' or `xcolor' package if you use
+`pstricks.sty' or `pst-all' (it is already loaded in the correct order).
+
+4 - Contents
+ --------
+
+4.1 - Subdirectories
+
+The distribution contain the following subdirectories:
+
+contrib : various contributions
+base : main PSTricks files
+ doc : documentations (up to date ones - the obsolete/doc subdirectory
+ contain the reference documentation for the version 0.93a and
+ the additional old Beta material, which is still necessary to use...)
+ dvips : PostScript header files
+ generic : TeX generic sources
+ latex : LaTeX wrappers
+
+
+5 - Running pdflatex or lualatex
+ Load package auto-pst-pdf or auto-pst-pdf-lua and run your example with
+the optional argument --shell-escape (MikTeX allows also -enable-write18)
+
+lualatex --shell-escape <file>
+pdflatex --shell-escape <file>
+
+auto-pst-pdf(-lua) creates in the background all pspicture environment as single
+pdf graphic files.
+See documentation for more informations.
+
+
+
+6 - Documentation
+ -------------
+There is a mailing list devoted to discussions on PSTricks usage.
+The informations to subscribe to this list and to consult the archives can
+be found on the Web page.
+
+
+--
+Denis Girou, Sebastian Rahtz and Herbert Voss (updated December 2018)
diff --git a/graphics/pstricks/base/config/README.cfg b/graphics/pstricks/base/config/README.cfg
new file mode 100644
index 0000000000..3814ed7302
--- /dev/null
+++ b/graphics/pstricks/base/config/README.cfg
@@ -0,0 +1,45 @@
+This directory contains the special PSTricks config files for
+the different platforms. By default the dvips config file is
+already in your current TeX distribution as pstricks.con.
+If you use another platform then you have to replace the current
+pstricks.con by one of the following cfg files:
+
+- PostScript header files
+
+-- If you use the Y&Y's "dvipsone" DVI to PostScript converter,
+you have to rename config.cfg to generic/pstricks.con and to move
+all the files of the "dvips" subdirectory to the TeX input folder.
+
+-- If you use the MicroPress "VTeX" DVI to PostScript converter,
+you have to rename config/vtex.cfg to generic/pstricks.con and to move
+all the files of the "dvips" subdirectory to the TeX input folder.
+
+-- If you use XeTeX, you have to rename config/xdvipdfmx.cfg to
+ generic/pstricks.con
+
+-- If you use the "textures" (version 1.7/1.8 or 2.0) DVI to PostScript
+ converter (for Macintosh), you should proceed as follows:
+ * create a new folder PSTricks (for instance) as a subfolder in
+ Textures' TeX inputs folder,
+ * copy the "generic", "dvips", "latex" and "contrib" subfolders
+ from the "pstricks" folder to the newly created "PSTricks" folder,
+ * open the "generic" folder and remove the file pstricks.con,
+ then rename the file textures.cfg to pstricks.con,
+ * open the "dvips" folder and change the following line in the file
+ pstricks.pro (courtesy Michael J. Sharpe <msharpe@euclid.ucsd.edu>):
+ /STV { SDict begin normalscale end STP } def
+ by
+ /STV { Mag 72.27 72 div mul dup neg scale STP } def
+ It was also reported that the `pst-text' package (to put text
+ along paths) doesn't work with the "textures" driver.
+ Textures's users must also look at the page kindly maintained
+ by Michael Sharpe: http://math.ucsd.edu/~msharpe/pst-textures.html
+
+-- If you use another driver than these four ones, you have to adapt
+a pstricks.con file for it, if the one for "dvips" doesn't work for it.
+You can also look at the instructions of the old obsolete/src/pstricks.con
+file. And if nothing work, ask for help on the PSTricks mailing list,
+hopping that somebody on the list has the same configuration than you ...
+
+--
+2010-01-22 hv \ No newline at end of file
diff --git a/graphics/pstricks/base/config/distiller.cfg b/graphics/pstricks/base/config/distiller.cfg
new file mode 100644
index 0000000000..db654b14d7
--- /dev/null
+++ b/graphics/pstricks/base/config/distiller.cfg
@@ -0,0 +1,64 @@
+% $Id: distiller.cfg 446 2017-04-19 11:40:55Z herbert $
+%% BEGIN: distiller.con (for distiller driver)
+%%
+%% Configuration file for PSTricks
+%%
+%% Version 0.01 (2008/01/24)
+%%
+%% For use with Adobes Distiller (tested with v7.0.7)
+%%
+%% COPYRIGHT 2008 by Herbert Voss, hvoss@tug.org.
+%%
+%% 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.
+%
+\def\pstdriver{distiller}
+{\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}
+\def\pstnodescale{}% not needed for pdftex
+\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
+%% 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}
+%
+\pst@def{setTransparency}<
+ [ /BM/Normal
+ /ca \psk@opacityalpha
+ /CA \psk@opacityalpha /SetTransparency pdfmark >
+\pst@def{setStrokeTransparency}<
+ [ /BM/Normal
+ /ca \psk@strokeopacityalpha
+ /CA \psk@strokeopacityalpha /SetTransparency pdfmark >
+\pst@def{setBlendmode}<
+ [ /BM\ifcase\psk@blendmode%
+ /Normal \or
+ /Compatible %\or
+ \else /Normal
+ /Screen \or
+ /Multiply %\or
+% /Hardlight
+ \fi/ca \psk@shapealpha /CA \psk@opacityalpha /SetTransparency pdfmark >
+%%
+%% ****************** END distiller.con *****************************
+
+%%%%%%%%%%%%%%%%%%% !! 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: distiller.con
diff --git a/graphics/pstricks/base/config/dvips.cfg b/graphics/pstricks/base/config/dvips.cfg
new file mode 100644
index 0000000000..d9648c1d0a
--- /dev/null
+++ b/graphics/pstricks/base/config/dvips.cfg
@@ -0,0 +1,361 @@
+% $Id: dvips.cfg 797 2018-08-23 18:33:16Z herbert $
+%% BEGIN: pstricks.con (for dvips driver)
+%%
+%% Configuration file for PSTricks
+%%
+%% Version 1.00 (2010/01/16)
+%%
+%% 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}}% hv write it without a preceding space
+\def\pstverbscale{SDict begin normalscale end}%
+\def\pstnodescale{}% not needed for pdftex
+% 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
+
+%%
+%%%%%%%%%%%%%%%%%%% !! GENERAL INSTRUCTIONS !! %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Because there are no standards for dvi-to-PS driver \special's,
+some driver-dependent commands must be defined in this file.
+
+Possibly correct definitions for some dvi drivers are given below.
+Copy the section for the driver you want to use to the indicated place
+near the beginning of the file, replacing any other definitions you
+might find there.
+
+When changing drivers, you may need to remake the header file.
+
+See the PSTricks read-me file for further installation instructions.
+
+Please report good and bad experiences with dvi-to-PS drivers,
+along with the definitions of these commands that worked
+for you, to tvz@Princeton.EDU. Thanks.
+
+
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+
+
+%%%%%%%%%% !! CONFIGURATIONS FOR SOME DRIVERS !! %%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%% **********************************************************************
+%% ***** Rokicki's dvips ***** Rokicki's dvips ***** Rokicki's dvips ****
+%% **********************************************************************
+%% Life is bliss with Rokicki's dvips (tested with v5.396, v5.47, 5.491):
+%%
+\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}
+\def\pstheader#1{\special{header=#1}}
+%%
+%% 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}
+%%
+%% If using a version before 5.47, clipping may not work. You can
+%% try the following definition of \pstverb:
+%\def\pstverb#1{\special{ps: @beginspecial #1 @endspecial}}
+%% or change "{initclip}ifelse" to "if" in the definition of @setspecial
+%% in dvips' special.pro.
+%%
+%% ****************** END Rokicki's dvips *****************************
+
+
+%% **********************************************************************
+%% **** Arbortext's dvips *** Arbortext's dvips *** Arbortext's dvips ***
+%% **********************************************************************
+%% Thanks to Wolfgang Sienel:
+%%
+\def\pstdriver{Arbortext's dvips}
+\def\pstverb#1{%
+ \special{ps::[asis] 0 SPB /ChartCheckPoint save def
+ Xpos Ypos translate #1 ChartCheckPoint restore 0 SPE}}
+\def\pstunit{1bp}
+\def\pstVerb#1{\special{ps:: #1}}
+\def\pstverbscale{}
+\def\pstrotate{CP CP translate 3 -1 roll rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{**********************************************************}%
+ \typeout{** Don't forget to include #1 when printing:}%
+ \typeout{** \space\space dvips -PRO #1 myfile}%
+ \typeout{**********************************************************}}
+%%
+%% Comments by Wolfgang on header files:
+%% Normally the standard prolog file is downloaded once to the printer
+%% with psload.ps (the initializing file for your TeX-printer) before
+%% printing TeX-documents. If you don't make any changes to psload.ps
+%% you have to type dvips -PRO PATH/pstricks.pro myfile (-PRO just
+%% works for UNIX systems. I don't have any idea about other systems).
+%% If psload.ps was not downloaded to the printer you have to append
+%% pstricks.pro to the standard prolog file dvips.pro. In this case
+%% invoke dvips as always. Note that after hitting the enter key you
+%% have to specify the option download all prolog in both cases. If you
+%% are frequently using pstricks you might want to change psload.ps. In
+%% this case contact your local TeX-guru and ask him politely to do this
+%% for you. Attention: If psload.ps is getting too big you may run into
+%% trouble with printer memory!
+%%
+%% ****************** END Arbortext's dvips *****************************
+
+
+%% **********************************************************************
+%% **** Textures *** Textures *** Textures *** Textures *** Textures ****
+%% **********************************************************************
+%% These have been tested with v1.3. It is nice to have a PostScript
+%% screen previewer, such as TScript (USA: 1-617-734-9700). (The
+%% Textures preview window will not show the PSTricks graphics.)
+%%
+\def\pstdriver{Textures}
+\def\pstunit{1bp}
+\def\pstverb#1{\special{postscript /TX@Save save def #1 TX@save restore}}
+\def\pstVerb#1{\special{postscript grestore #1 gsave}}
+\def\pstverbscale{Mag 1000 div 72.27 72 div mul dup neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+%% \pstVerb does not define the currentpoint properly. As a workaround,
+%% insert the following lines in the customization section above.
+%%
+%% \def\pst@Verb#1{%
+%% \special{postscript \pst@dict /sps { moveto /Mag ed } def
+%% userdict begin}%
+%% \special{postscript #1 end gsave}}
+%%
+%% Textures does not support header files.
+%% However, it may still be worth using a header file for increased speed.
+%% Also, some macros can overload Textures 1.3 when not used with a header
+%% file. You can include the header file pstricks.pro by saving the
+%% PostScript output to a file and inserting the pstricks.pro with an
+%% editor. Probably a better solution is to append pstricks.pro to a
+%% copy of the laserprep, and, by changing file names of the modified
+%% laserprep and the original laserprep, use the laserprep with pstricks.pro
+%% whenever you are printing pstricks documents.
+\def\pstheader#1{%
+ \typeout{******************************************}%
+ \typeout{*** Include header file #1!! ***}%
+ \typeout{******************************************}}
+%%
+%% ****************** END Textures **************************************
+
+
+%% **********************************************************************
+%% ***** dvi2ps ***** dvi2ps ***** dvi2ps ***** dvi2ps ***** dvi2ps *****
+%% **********************************************************************
+%% I.e., dvi2ps, v2.xx. There are lot's of such things around.
+%% This probably doesn't work. Considering upgrading to Rokicki's dvips.
+%%
+\def\pstdriver{dvi2ps v2.xx}
+\def\pstunit{1pt}
+\def\pstverb#1{ pstext="save currentpoint translate
+ Resolution 72.27 div neg scale #1 restore" \space}
+\def\pstVerb#1{ pstext="#1" \space}
+\def\pstverbscale{Resolution 72.27 div neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}
+%%
+%% ***************************** END dvi2ps *****************************
+
+
+%% **********************************************************************
+%% ***** dvi3ps ***** dvi3ps ***** dvi3ps ***** dvi3ps ***** dvi3ps *****
+%% **********************************************************************
+%% I.e., dvi2ps, version 3.xx, by Kevin Coombes.
+%% This has not been tested. Consider upgrading to Rokicki's dvips.
+%%
+\def\pstdriver{dvi2ps v3.xx}
+\def\pstunit{1bp}
+\def\pstverb#1{pstext="#1"}
+% \def\pstVerb#1{%
+% \special{pstext="@endspecial #1 @beginspecial @setspecial"}} % v3.0
+\def\pstVerb#1{\special{psraw="#1"}} % v3.3
+\def\pstverbscale{Resolution 72.27 div neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}
+%%
+%% ******************* END dvi3ps ***************************************
+
+
+%% **********************************************************************
+%% **** OzTeX **** OzTeX **** OzTeX **** OzTeX **** OzTeX **** OzTeX ****
+%% **********************************************************************
+%% Only the pure graphics objects are supported for OzTeX.
+%% No color, rotation, clipping, nodes and node connections, overlays, etc.
+%% Also, \rput cannot be used with \SpecialCoor.
+%%
+%% The reason is given in the documentation for Version 1.3, September 1990:
+%%
+%% OzTeX generates highly efficient PostScript code but it does so at
+%% the expense of some \special functionality. Many DVI-to-PostScript
+%% translators allow you to do things like use one \verb|\special| to start
+%% rotating TeX text and another to stop the rotation. The way OzTeX
+%% interprets a DVI page makes this impossible.
+%%
+%% If using the header file, you should copy pstricks.pro to global.ps, in
+%% the same directory as your dvi file.
+%%
+\def\pstdriver{OzTeX}
+\def\pstverb#1{\special{null.ps #1}}
+\def\pstunit{1bp}
+\def\pstVerb#1{%
+ \typeout{PSTRICKS WARNING:}%
+ \typeout{\space\space You are using features not supported by OzTeX.}%
+ \typeout{\space\space These will be ignored.}%
+ \gdef\pstVerb##1{}}
+\def\pstverbscale{}
+\def\pstrotate{}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}}
+%%
+%% ************************* END OzTeX **********************************
+
+
+%% **********************************************************************
+%% ***** DirectTeX ***** DirectTeX ***** DirectTeX ***** DirectTeX ******
+%% **********************************************************************
+%% DirectTeX is for the Macintosh. These has been tested unsuccessfully,
+%% apparently due to a problem with DirectTeX.
+%%
+\def\pstdriver{DirectTeX}
+%%
+%% Check catcode of "
+{\catcode`\"=12\gdef\pstverb#1{\special{" #1 /Foo{}def }}}
+\def\pstunit{1bp}
+\def\pstVerb#1{\special{ps: #1 }}
+\def\pstverbscale{TeXDict begin normalscale end}
+%%
+%% In the following, CP is short for currentpoint. The neg is necessary
+%% because dvips scales the coordinates by 1 -1:
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+\def\pstheader#1{%
+ \typeout{**********************************************************}%
+ \typeout{** Don't forget to include #1 when printing:}%
+ \typeout{** \space\space DVIReader -header #1 myfile}%
+ \typeout{**********************************************************}}
+%%
+%% ****************** END DirectTeX *****************************
+
+
+%%
+%% END: pstricks.con
diff --git a/graphics/pstricks/base/config/dvipsone.cfg b/graphics/pstricks/base/config/dvipsone.cfg
new file mode 100644
index 0000000000..965e635fd5
--- /dev/null
+++ b/graphics/pstricks/base/config/dvipsone.cfg
@@ -0,0 +1,140 @@
+% $Id: dvipsone.cfg 446 2017-04-19 11:40:55Z herbert $
+%% BEGIN pstricks.con (for DVIPSONE driver)
+%%
+%% Configuration file for PSTricks 97: must be renamed `pstricks.con'
+%%
+%% Version 0.01 (2015/09/11)
+%%
+%% 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\pstnodescale{}
+\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
+
+\endinput
+%------------- end pst-show.pro ------------------------------------
+%%
+%%%%%%%%%%%%%%%%%%% !! GENERAL INSTRUCTIONS !! %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Because there are no standards for dvi-to-PS driver \special's,
+some driver-dependent commands must be defined in this file.
+
+Possibly correct definitions for some dvi drivers are given below.
+Copy the section for the driver you want to use to the indicated place
+near the beginning of the file, replacing any other definitions you
+might find there.
+
+When changing drivers, you may need to remake the header file.
+
+See the PSTricks read-me file for further installation instructions.
+
+Please report good and bad experiences with dvi-to-PS drivers,
+along with the definitions of these commands that worked
+for you, to tvz@Princeton.EDU. Thanks.
+
+
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+
+
+%%
+%% END: pstricks.con
+
+%%
+%% END: dvipsone.con
diff --git a/graphics/pstricks/base/config/gastex.cfg b/graphics/pstricks/base/config/gastex.cfg
new file mode 100644
index 0000000000..b3549c8c56
--- /dev/null
+++ b/graphics/pstricks/base/config/gastex.cfg
@@ -0,0 +1,119 @@
+% $Id: gastex.cfg 446 2017-04-19 11:40:55Z herbert $
+%% BEGIN: pstricks.con (for xdvipdfmx driver)
+%%
+%% Configuration file for PSTricks
+%%
+%% Version 0.03 (2011/11/23)
+%%
+%% For use with xdvipdfmx
+%% Created by SMiyata based on standard pstricks.con from TeXLive distribution.
+%% This file may be distributed, used and modified freely.
+%
+\def\pstdriver{xdvipdfmx}%
+\def\pstnodescale{}
+\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\pstnodescale{}% not needed for pdftex
+
+%%%%%%%%%%%%%%%%%%% !! 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.
+\def\c@lor@to@ps#1 #2\@@{\csname c@lor@ps@#1\endcsname#2 \@@}%
+\def\c@lor@ps@#1 #2\@@{TeXDict begin #1 end}%
+\def\c@lor@ps@rgb#1\@@{#1 setrgbcolor}%
+\def\c@lor@ps@hsb#1\@@{#1 sethsbcolor}%
+\def\c@lor@ps@cmyk#1\@@{#1 setcmykcolor}%
+\def\c@lor@ps@gray#1\@@{#1 setgray}%
+
+\typeout{Using PS configuration for XeTeX+xdvipdfmx}%
+
+\endinput
+%
+%
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+
+
+%%
+%% END: pstricks.con
diff --git a/graphics/pstricks/base/config/textures.cfg b/graphics/pstricks/base/config/textures.cfg
new file mode 100644
index 0000000000..48667d3950
--- /dev/null
+++ b/graphics/pstricks/base/config/textures.cfg
@@ -0,0 +1,129 @@
+% $Id: textures.cfg 446 2017-04-19 11:40:55Z herbert $
+%% 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\pstnodescale{}% not needed for pdftex
+\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
+
+%%
+%%%%%%%%%%%%%%%%%%% !! GENERAL INSTRUCTIONS !! %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Because there are no standards for dvi-to-PS driver \special's,
+some driver-dependent commands must be defined in this file.
+
+Possibly correct definitions for some dvi drivers are given below.
+Copy the section for the driver you want to use to the indicated place
+near the beginning of the file, replacing any other definitions you
+might find there.
+
+When changing drivers, you may need to remake the header file.
+
+See the PSTricks read-me file for further installation instructions.
+
+Please report good and bad experiences with dvi-to-PS drivers,
+along with the definitions of these commands that worked
+for you, to tvz@Princeton.EDU. Thanks.
+
+
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+
+
+%%
+%% END: pstricks.con
diff --git a/graphics/pstricks/base/config/vtex.cfg b/graphics/pstricks/base/config/vtex.cfg
new file mode 100644
index 0000000000..e4b7184404
--- /dev/null
+++ b/graphics/pstricks/base/config/vtex.cfg
@@ -0,0 +1,172 @@
+% $Id: vtex.cfg 446 2017-04-19 11:40:55Z herbert $
+%% BEGIN: pstricks.con (for VTeX)
+%%
+%% Configuration file for PSTricks 97
+%%
+%% Version 97 patch 5 2003-04-29
+%%
+%% For use with VTeX PostScript driver v 6.61+
+%% [MV, MK, special thanks to Denis Girou for help]
+%%
+%% Requires vtex.def 7.46 or newer, 10-14-01
+%%
+%% For support and possible updates, check
+%% http://www.micropress-inc.com
+%%
+
+\def\pstdriver{VTeX}
+{\catcode`\"=12\gdef
+\pstverb#1{\special{pS*GS @beginspecial @setspecial #1 @endspecial GR }}
+}%
+\def\pstunit{1bp}%
+\def\pstVerb#1{\special{pS: #1}}%
+\def\pstverbscale{SDict begin normalscale end}
+\def\pstnodescale{}% not needed for pdftex
+\ifx\textsuperscript\@undefined
+ \def\pstheader#1{\special{header=#1}}
+\else
+% D.G. modification begin - Apr. 29, 2003 - From Michael Vulis
+% \ifx\Gin@PS@file@header\@undefined
+% \def\pstheader#1{\AtBeginDvi{\special{header=#1}}}
+% \else
+% \let\pstheader\Gin@PS@file@header
+% \fi
+ \def\pstheader#1{\AtBeginDvi{\immediate\special{header=#1}}}
+% D.G. modification end
+\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{\special{G(}\@colorstackfalse\vtex@pspicture}%
+\let\vtex@endpspicture=\endpspicture
+\def\endpspicture{\vtex@endpspicture\@colorstacktrue\special{G)}%
+}
+% D.G. modification end
+\fi
+\fi
+
+\pstcustomize
+\def\tx@RotBegin{neg RotBegin }
+\def\pst@rotlist{mark RAngle /a ED cleartomark a }
+% D.G. modification begin - Oct. 6, 1999
+\def\tx@Rot{neg Rot }
+% D.G. modification end
+\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor fill }}
+\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor eofill}}
+
+\endinput
+
+\iffalse
+%%
+%%%%%%%%%%%%%%%%%%% !! GENERAL INSTRUCTIONS !! %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Because there are no standards for dvi-to-PS driver \special's,
+some driver-dependent commands must be defined in this file.
+
+Possibly correct definitions for some dvi drivers are given below.
+Copy the section for the driver you want to use to the indicated place
+near the beginning of the file, replacing any other definitions you
+might find there.
+
+When changing drivers, you may need to remake the header file.
+
+See the PSTricks read-me file for further installation instructions.
+
+Please report good and bad experiences with dvi-to-PS drivers,
+along with the definitions of these commands that worked
+for you, to tvz@Princeton.EDU. Thanks.
+
+
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+\fi
+
+%%
+%% END: pstricks.con
diff --git a/graphics/pstricks/base/config/xdvipdfmx.cfg b/graphics/pstricks/base/config/xdvipdfmx.cfg
new file mode 100644
index 0000000000..181f18603e
--- /dev/null
+++ b/graphics/pstricks/base/config/xdvipdfmx.cfg
@@ -0,0 +1,244 @@
+% $Id: xdvipdfmx.cfg 446 2017-04-19 11:40:55Z herbert $
+%
+%% BEGIN: pstricks.con (for xdvipdfmx driver)
+%%
+%% Configuration file for PSTricks
+%%
+%% Version 0.05 (2015/09/11)
+%%
+%% For use with xdvipdfmx
+%% Created by SMiyata based on standard pstricks.con from TeXLive distribution.
+%% This file may be distributed, used and modified freely.
+%% Modified by Denis Girou, Herbert Voss
+%%
+\def\pstdriver{xdvipdfmx}%
+\def\pstverb#1{\special{pst: #1}}% Check catcode of "
+\def\pstunit{1bp}%
+\def\pstVerb#1{\immediate\special{PST: #1}}%
+\def\pstverbscale{72.27 72 div dup scale }%
+\def\pstnodescale{72 72.27 div dup scale }%
+% 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 xdvipdfmx *****************************
+
+
+%%%%%%%%%%%%%%%%%%% !! 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.
+\def\c@lor@to@ps#1 #2\@@{\csname c@lor@ps@#1\endcsname#2 \@@}%
+\def\c@lor@ps@#1 #2\@@{TeXDict begin #1 end}%
+\def\c@lor@ps@rgb#1\@@{#1 setrgbcolor}%
+\def\c@lor@ps@hsb#1\@@{#1 sethsbcolor}%
+\def\c@lor@ps@cmyk#1\@@{#1 setcmykcolor}%
+\def\c@lor@ps@gray#1\@@{#1 setgray}%
+\pstcustomize
+\typeout{Using PSTricks configuration for XeTeX+xdvipdfmx}%
+\def\@@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
+\special{x: bscale \pst@tempc \pst@tempd}%
+\hbox to \z@{\box\pst@hbox\hss}%
+\special{x: escale}%
+\ifdim\pst@dima>\z@\kern\pst@dima\fi}}%
+%
+\let\ps@@scalebox\@@scalebox
+\def\ps@rotateleft#1{%
+\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
+\pst@Verb{90 \tx@RotBegin}%
+\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}%
+\pst@Verb{\tx@RotEnd}}}}%
+%
+\def\ps@rotateright#1{%
+ \leavevmode\hbox{%
+ \hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
+ \pst@Verb{-90 \tx@RotBegin}%
+ \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}%
+ \pst@Verb{\tx@RotEnd}}}}%
+%
+\def\ps@rotatedown#1{%
+\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1%
+\pst@Verb{180 \tx@RotBegin}%
+\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}%
+\pst@Verb{\tx@RotEnd}}}}%
+%
+\def\begin@psclip{\special{x: gsave}}%
+\def\end@psclip{\special{x: grestore}}%
+\def\@newcolor#1#2#3{%
+\expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}%
+\expandafter\edef\csname\string\color@#1\endcsname{#2}% hv 1.14 2005-12-17
+\expandafter\edef\csname\string\color@xetex@#1\endcsname{#3}%
+\ignorespaces}%
+%
+\def\newgray#1#2{%
+ \pst@checknum{#2}\pst@tempg
+ \@newcolor{#1}{\pst@tempg setgray}{gray \pst@tempg}%
+}
+\def\newrgbcolor#1#2{%
+ \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
+ \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}{rgb \pst@tempg \pst@temph \pst@tempi}%
+}%
+\def\newhsbcolor#1#2{%
+ \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
+ \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}{hsb \pst@tempg \pst@temph \pst@tempi}%
+}%
+\def\newcmykcolor#1#2{%
+ \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
+ \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}%
+ {cmyk \pst@tempg \pst@temph \pst@tempi \pst@tempj}%
+}%
+\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}%
+
+\@ifundefined{LaTeXe}%
+ {\def\current@@@@color{\csname\string\color@xetex@\psfillcolor\endcsname}}{%
+ \AtBeginDocument{\@ifpackageloaded{xcolor}{\def\current@@@@color{\psfillcolor}}%
+ {\def\current@@@@color{\csname\string\color@\psfillcolor\endcsname}}}}%
+%
+\iffalse
+\def\pst@starbox{%
+\setbox\pst@hbox\hbox{{%
+ \def\current@color{\current@@@@color}%
+\dimen@\wd\pst@hbox\advance\dimen@2\psframesep\wd\pst@hbox\dimen@%
+\dimen@\ht\pst@hbox\advance\dimen@\psframesep\ht\pst@hbox\dimen@%
+\dimen@\dp\pst@hbox\advance\dimen@\psframesep\dp\pst@hbox\dimen@%
+\@ifundefined{LaTeXe}{\special{color push \current@color}%
+ \rlap{\vrule width\wd\pst@hbox height\ht\pst@hbox depth\dp\pst@hbox}%
+ \special{color pop}}%
+ {\color@block{\wd\pst@hbox}{\ht\pst@hbox}{\dp\pst@hbox}}}%
+\rlap{\hskip\psframesep\unhbox\pst@hbox}}}
+\fi
+%
+\def\AltClipMode{}%
+%
+\def\putoverlaybox#1{%
+\hbox{\special{x: gsave}\special{x: initoverlay #1}\copy\theoverlaybox\special{x: grestore}}}%
+%
+\def\pst@overlay#1{\edef\curr@overlay{#1}\special{x: clipoverlay #1}\aftergroup\pst@endoverlay}%
+\def\pst@endoverlay{\special{x: clipoverlay \curr@overlay}}%
+\def\AltOverlayMode{}%
+%The next line is not necessary, if pstricks.sty of [2007/02/18 v0.33] or newer is used.
+\@ifundefined{LaTeXe}{}{\AtBeginDocument{\psset{fillcolor=white}}}%
+%
+\endinput
+%
+%
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+
+
+%%
+%% END: pstricks.con
diff --git a/graphics/pstricks/base/doc/PSTricks.bib b/graphics/pstricks/base/doc/PSTricks.bib
new file mode 100644
index 0000000000..daaa78d445
--- /dev/null
+++ b/graphics/pstricks/base/doc/PSTricks.bib
@@ -0,0 +1,109 @@
+@STRING{dtk = {{D}ie {\TeX}nische {K}om{\"o}die} }
+
+@Book{PostScript,
+ Author = {Kollock, Nikolai G.},
+ Title = {PostScript richtig eingesetzt: vom Konzept zum
+ praktischen Einsatz},
+ Publisher = {IWT},
+ Address = {Vaterstetten},
+ year = 1989,
+}
+
+@online{pdftricks,
+ Title = {PSTricks Support for pdf},
+ Author = {Herbert Voß},
+ url = {http://PSTricks.tug.org/main.cgi?file=pdf/pdfoutput},
+ year = 2002,
+}
+
+@online{miwi,
+ Title = {References for \TeX{} and Friends},
+ Author = {Michael Wiedmann and Peter Karp},
+ url = {http://www.miwie.org/tex-refs/},
+ year = 2003,
+}
+
+@Article{dtk02.2:jackson.voss:plot-funktionen,
+ author = {Laura E. Jackson and Herbert Voß},
+ title = {Die {P}lot-{F}unktionen von {\texttt{pst-plot}}},
+ journal = dtk,
+ year = 2002,
+ volume = {2/02},
+ altvolume = 2,
+ altnumber = 14,
+ month = jun,
+ pages = {27--34},
+ annote = bretter,
+ abstract = { Im letzten Heft wurden die mathematischen Funktionen von
+ \PS~im Zusammenhang mit dem {\LaTeX}-Paket
+ \texttt{pst-plot} zum Zeichnen von Funktionen beschrieben
+ und durch Beispiele erl{\"a}utert. In diesem Teil werden
+ die bislang nur erw{\"a}hnten Plot-Funktionen f{\"u}r
+ externe Daten behandelt. }
+}
+
+@Article{dtk02.1:voss:mathematischen,
+ author = {Herbert Voß},
+ title = {Die mathematischen {F}unktionen von {P}ostscript},
+ journal = dtk,
+ year = 2002,
+ volume = {1/02},
+ altvolume = 1,
+ altnumber = 14,
+ month = mar,
+ pages = {40-47},
+ annote = bretter,
+ abstract = { \PS, faktisch genauso alt wie {\TeX}, ist im
+ Verh{\"a}ltnis dazu allgemein noch weniger bekannt, wenn es
+ darum geht zu beurteilen, was es denn nun im eigentlichen
+ Sinne ist. Außerdem wird h{\"a}ufig vergessen, dass
+ sich mit den \PS-Funktionen viele Dinge erledigen lassen,
+ bei denen sonst auf externe Programme zur{\"u}ckgegriffen
+ wird. Dies wird im Folgenden f{\"u}r die mathematischen
+ Funktionen im Zusammenhang mit dem Paket \texttt{pst-plot}
+ gezeigt. }
+}
+
+@Book{companion,
+ author = {Michel Goosens and Frank Mittelbach and Sebastian Rahtz and Denis Roegel and Herbert Voß},
+ title = {The {\LaTeX} {G}raphics {C}ompanion},
+ publisher = {{Addison-Wesley Publishing Company}},
+ edition = 2,
+ year = {2007},
+ address = {Reading, Mass.}
+}
+
+@Book{PSTricks2,
+ author = {Herbert Voß},
+ title = {\texttt{PSTricks} -- {G}rafik f\"ur \TeX{} und \LaTeX},
+ edition = 7,
+ publisher = {DANTE -- Lehmanns Media},
+ year = {2016},
+ location = {Heidelberg and Berlin}
+}
+
+@Book{PSTricksE,
+ author = {Herbert Voß},
+ title = {\texttt{PSTricks} -- {G}raphics for \LaTeX},
+ edition = {1},
+ publisher = {UIT},
+ year = {2011},
+ address = {Cambridge/UK}
+}
+
+@Book{LaTeXRef,
+ author = {Herbert Voß},
+ title = {\LaTeX\ Referenz},
+ edition = {3},
+ publisher = {DANTE -- lehmanns media},
+ year = {2014},
+ address = {Heidelberg and Berlin}
+}
+@Book{LaTeXRefE,
+ author = {Herbert Voß},
+ title = {\LaTeX\ Quick Reference},
+ edition = {1},
+ publisher = {UIT},
+ year = {2011},
+ address = {Cambridge/UK}
+}
diff --git a/graphics/pstricks/base/doc/ctandir.sty b/graphics/pstricks/base/doc/ctandir.sty
new file mode 100644
index 0000000000..37928e9582
--- /dev/null
+++ b/graphics/pstricks/base/doc/ctandir.sty
@@ -0,0 +1,30 @@
+%% LaTeX2e file `ctandir.sty'
+%% generated by the `filecontents' environment
+%% from source `pst-fill-doc' on 2004/08/18.
+%%
+%% LaTeX2e file `ctandir.sty'
+%% generated by the `filecontents' environment
+%% from source `ltubguid' on 1997/06/12.
+%%
+%
+% Experimental CTAN location information macros for use with Donald
+% Arseneau's |url.sty|
+%
+% we need url.sty; we can rely on it to demand anything it needs of
+% LaTeX
+\IfFileExists{url.sty}%
+ {\RequirePackage{url}}%
+ {\PackageWarning{ctandir}{You should acquire a copy of url.sty}%
+ \newcommand\urldef[3]{\def#1{\texttt{#3}}}%
+ \let\url\texttt
+ }
+%
+\newcommand\CTANdirectory[1]{\expandafter\urldef
+ \csname CTAN@#1\endcsname\path}
+\newcommand\CTANfile[1]{\expandafter\urldef
+ \csname CTAN@#1\endcsname\path}
+%
+% Use the standard label-referencing mechanism to get the warning for
+% an undefined label
+\newcommand\CTANref[1]{\expandafter\@setref\csname CTAN@#1\endcsname
+ \relax{#1}}
diff --git a/graphics/pstricks/base/doc/images/flowers.eps b/graphics/pstricks/base/doc/images/flowers.eps
new file mode 100644
index 0000000000..3f279322a6
--- /dev/null
+++ b/graphics/pstricks/base/doc/images/flowers.eps
@@ -0,0 +1,269 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: background2.eps
+%%Creator: xwpick Version 2.20 Rev: 20/09/94 - by Evgeni Chernyaev
+%%CreationDate: Wed Nov 26 21:12:29 1997
+%%BoundingBox: 0 0 80 60
+%%EndComments
+%***********************************************************************
+%* *
+%* Function: Display a Lempel-Ziv Welch (LZW) encoded color image. *
+%* This is an Encapsulated PostScript file suitable for any *
+% kind of PostScript printer: Level I/II, color/grayscale...*
+%* To optimize output on GrayScale printers you may uncomment*
+%* line '/GRAYneeded true def'. *
+%* *
+%* Author: Evgeni CHERNYAEV (chernaev@vxcern.cern.ch) *
+%* *
+%***********************************************************************
+gsave
+userdict begin
+/EPSneeded true def
+%/GRAYneeded true def
+end
+%***********************************************************************
+%* Image Description *
+%***********************************************************************
+/colomns 80 def
+/rows 60 def
+/mm {2.835 mul} def
+userdict /EPSneeded known {
+ /EPSneeded userdict /EPSneeded get def
+}{
+ /EPSneeded false def
+} ifelse
+userdict /GRAYneeded known {
+ /GRAYneeded userdict /GRAYneeded get def
+}{
+ /GRAYneeded false def
+} ifelse
+EPSneeded {
+ /IfRotate false def
+ /MarginX 0 def /MarginY 0 def
+ /Ymax rows def /Xmax colomns def /Ymin 0 def /Xmin 0 def
+}{
+ /IfRotate colomns rows gt {true} {false} ifelse def
+ /MarginX 8 mm def /MarginY 18 mm def
+ 0 0 moveto clippath pathbbox
+ /Ymax exch def /Xmax exch def /Ymin exch def /Xmin exch def
+} ifelse
+/IfColor systemdict /colorimage known {true} {false} ifelse def
+GRAYneeded {/IfColor false def} if
+/IfLevel2 systemdict /filter known systemdict /setcolorspace known and
+ {true} {false} ifelse def
+%***********************************************************************
+% Procedures *
+%***********************************************************************
+/Table 4096 array def
+/StrArray 10 array def
+/InLine 70 string def
+/BinCodes 112 string def
+/CurBit 0 def /FreeCode 258 def /CurCodeSize 9 def /CurMask 511 def
+/incr IfColor {3} {1} ifelse def
+IfLevel2 not {/setcolorspace null def /filter null def} if
+%***********************************************************************
+/ReadLine { % Read Next Data Line (ASCII85 decode) *
+%***********************************************************************
+ BinCodes 0 BinCodes 56 56 getinterval putinterval
+ currentfile InLine readline pop pop
+ 1 1 14 {
+ /i exch 1 sub def
+ /k i 5 mul def
+ /c1 InLine k get 33 sub 255 and def
+ /rest c1 1868977 mul
+ InLine k 1 add get 33 sub 255 and 614125 mul add
+ InLine k 2 add get 33 sub 255 and 7225 mul add
+ InLine k 3 add get 33 sub 255 and 85 mul add
+ InLine k 4 add get 33 sub 255 and add def
+ /k i 4 mul 56 add def
+ BinCodes k c1 3 mul rest 16777216 idiv add 255 and put
+ /rest rest 16777216 mod def
+ BinCodes k 1 add rest 65536 idiv put
+ BinCodes k 2 add rest 256 idiv 255 and put
+ BinCodes k 3 add rest 255 and put
+ } for
+} bind def
+%***********************************************************************
+/ReadCode { % Read next code *
+%***********************************************************************
+ /CurByte CurBit 8 idiv def
+ /CurCode
+ BinCodes CurByte get 8 bitshift
+ BinCodes CurByte 1 add get add 8 bitshift
+ BinCodes CurByte 2 add get add
+ CurCodeSize CurBit 7 and add 24 sub bitshift CurMask and def
+ /CurBit CurBit CurCodeSize add dup 448 ge {ReadLine 448 sub} if def
+} bind def
+%***********************************************************************
+/DecodeCode { % Decode CurCode *
+%***********************************************************************
+ ReadCode CurCode 256 eq {
+ /FreeCode 258 def /CurCodeSize 9 def /CurMask 511 def
+ /StrInd -1 def /Lrest 0 def ReadCode
+ }{
+ L Lrest gt {
+ /StrInd StrInd 1 add def /Lrest 65535 def
+ StrArray StrInd get null eq {StrArray StrInd 65535 string put} if
+ /CurStr StrArray StrInd get def
+ } if
+ Table FreeCode CurStr 65535 Lrest sub L getinterval
+ dup 0 Table OldCode get putinterval
+ dup L incr sub Table
+ CurCode FreeCode lt {CurCode} {OldCode} ifelse get
+ 0 incr getinterval putinterval put
+ /Lrest Lrest L sub def /FreeCode FreeCode 1 add def
+ FreeCode CurMask ge CurCodeSize 12 lt and {
+ /CurCodeSize CurCodeSize 1 add def
+ /CurMask CurMask 1 bitshift 1 add def
+ } if
+ } ifelse
+ /OldCode CurCode def
+ Table CurCode get dup length incr add /L exch def
+} bind def
+%***********************************************************************
+/DisplayImage { % Display a LZW-encoded color image *
+%***********************************************************************
+ /DelX Xmax Xmin sub MarginX 2 mul sub def
+ /DelY Ymax Ymin sub MarginY 2 mul sub def
+ /SizeX IfRotate {rows} {colomns} ifelse def
+ /SizeY IfRotate {colomns} {rows} ifelse def
+ /FactorX DelX SizeX div def /FactorY DelY SizeY div def
+ /Factor FactorX FactorY le {FactorX} {FactorY} ifelse def
+ /ScaleX SizeX Factor mul def /ScaleY SizeY Factor mul def
+ DelX ScaleX sub 2 div MarginX add
+ DelY ScaleY sub 2 div MarginY add translate
+ IfRotate {ScaleY ScaleX} {ScaleX ScaleY} ifelse scale
+ /Palette currentfile 768 string readhexstring pop def
+ currentfile InLine readline pop pop
+ IfColor not {
+ 0 1 255 {
+ Palette exch dup /i exch 3 mul def
+ Palette i 0 add get 0.299 mul
+ Palette i 1 add get 0.587 mul add
+ Palette i 2 add get 0.114 mul add cvi put
+ } for
+ /Palette Palette 0 256 getinterval def
+ } if
+ /Matr IfRotate
+ {[0 colomns rows 0 0 0]} {[colomns 0 0 rows neg 0 rows]} ifelse def
+ IfLevel2 {
+ [/Indexed IfColor {/DeviceRGB} {/DeviceGray} ifelse 255 Palette]
+ setcolorspace
+ /infile currentfile /ASCII85Decode filter /LZWDecode filter def
+ 8 dict
+ dup /ImageType 1 put
+ dup /Width colomns put
+ dup /Height rows put
+ dup /BitsPerComponent 8 put
+ dup /ImageMatrix Matr put
+ dup /Interpolate false put
+ dup /Decode [0 255] put
+ dup /DataSource infile put image
+ }{
+ 0 1 255 {
+ Table exch dup incr mul Palette exch incr getinterval put
+ } for
+ ReadLine ReadLine
+ colomns rows 8 Matr {DecodeCode}
+ IfColor {false 3 colorimage} {image} ifelse
+ } ifelse
+} bind def
+%***********************************************************************
+%* Image decoding *
+%***********************************************************************
+DisplayImage
+000000 ffffff ffffe0 228b22 c0c0c0 00ff00 ff0000 ffff00 ffa500 b3b3b3
+7f7f7f cd5c5c b4b4b4 101010 e0e0e0 f0f050 60f060 d0d0d0 404040 c02020
+404080 fff68f a0a0c0 c07070 202020 ff4040 008000 a0a000 0000ff ff00ff
+008080 606060 808080 8080c0 c08080 80c080 c080c0 c0c080 80c0c0 d08050
+5080d0 91c591 104210 1d761d e6e6fa adadad 7b7b7b 737373 a37474 6b6b6b
+636363 966a6a 634848 dadada cf8a8a 9e9e9e 7b4a4a 848484 5a5a5a 8b5f5f
+845454 bdbdbd 362828 b5b5b5 ffc0cb 191315 846342 342114 806b61 110f0e
+8d7360 594123 3f343b 372915 988067 6c4e35 725c58 a58c72 231a1d 2d262a
+4a3118 594544 615259 030203 868686 ababab 656565 add8e6 d50000 d5d500
+aa0055 5500aa 94dec5 7ce4a4 63e983 4aef62 31f441 18fa20 d2b48c ffebcd
+8b7765 6a5acd ffe4e1 ee82ee a6a6a6 afeeee cccccc 8c8c8c e5e5e5 666666
+bfbfbf 775588 8f66a3 473351 d9d9d9 999999 b2c0dc c6d5e2 8b99b5 b22222
+00008b 595959 424242 dedede 949494 00ffff 009999 8f8f8f d7d7d7 333333
+00dfff 006400 bebebe fefefe 828282 f2f2f2 a020f0 e4c0c0 663b3b a35f5f
+b03060 cd0000 8b0000 8b3a3a 191970 78706b 5a5357 717fca 2a218b 929ed3
+311fb3 6f76a0 9f8762 25244a 29256f 51518c 4b51b1 a3b1d7 cde1f9 b5c0d1
+9796a0 797169 595155 717dcb 28208a 301cb2 6d75a2 9e8661 242449 28246d
+51518e 4951b2 a2b2d7 cfe3fb b6c3d3 9696a2 65493c 825145 9a7165 45342c
+693430 201c1c 1c1414 fa1340 5151fb e7e7e7 3bfa34 655d55 d7c7a6 dfcfae
+6f6f6f 1d155b a2a2a2 5b0000 9c9c9c 565656 0000b0 3f0f7b 646464 2f4f4f
+2e8b57 999986 778899 db7093 008b00 b87850 d0a888 583838 302828 d09068
+905040 9a9a9a b0b0b0 2a2a2a 878787 434343 ff1493 898989 bdb76b ff69b4
+8b8b8b 8aadb8 5f777e fa8072 0000cd 98fb98 6920ac b7ffb7 5b975b 8b008b
+93b8c4 ff4500 525252 b53100 ffe752 ce634a 31317b de8473 e78c9c de7b5a
+63528c 737329 738442 291839 d67339 c65218 c6adad c65229 bd4208 180800
+ffde21 b54a18 f7c66b b53910 ffde39 f7d6ef
+J3.)@GU(^knp%f=DYJ/kJ;GL5=Y,`/-/pch]Nmg"X/XVJIl`bq;EQ8LIr;+$.9*CN>5g7W
+'[nor[TJf+!aT_7]=mFm7*cpW[Tg<aLB+rWY=I@'lMZBuhX%b!]pA13&=tO&P(f'sIRf!n
+kj3`m2.VpX,scL`%[WL)K!.G>W`Gu.b0m81Jc5rPSibbMkTdLjp)jE+p`rM_lTBU4?#JhG
+,]"i@6=D?il&ImkYik'sE]HH!Ih8=B'/ZXJq"/kQ9)"0G?>"Z#^#+&tdO!I&b/=]`f4uu3
+qo:nAmnB>TQR.<IMM4DeIQns:ou\1]EEiQE<c,#H=/.WTPuB0_<u+^_i$$oTGCLXcfb0,s
+&W"e'?4r\7Sus7?HC:XLNiaHUb!;"08('a.T>ubJ(DVN].Xhe%&o)_*Y;o9MScrh3]p-EZ
+i8_?X3UV8D^q2"=%#Qe'a.7*7S=QS&dFKP5Vhn0IUoqR##.j$na;5BV]ImNEWM*!rV1Atc
+AL%N=*+]i-lqi/7k@sA+T$?gEHFX/MgjZNK>'>8'LS1<'M!ZZa"NYU'*?cFk4K>[q@&dCA
+*Y2K%;\JJKloGdM_;I9pYt<P:T4#0F)Zo2r&jqcGH17]&o0Lg@K'0p%+\jmGie5/2oG^f\
+J?0Z8+-KLf)h9,`9P">LTf.-5,H0h\NT@W&FIb$Mq@eJOq<Zp$b!G<?;ePIBHl^V&f#O2d
+.GIG"LQ(V$<L$GR"<NO'%\';fW&@_K",J@:=B$R^2hu%ad)[Z0ZC8rK-i*dh*B&8)`up./
+hB<To9Yu".a(S5">PA7>EEm/(pm\qWW5a6,Ks6RE*Z58B9o\iTIcOmo);9MnB5%u$&EiG:
+FIrt_*-^PL$\4u*Wa'-=@Tiq;"DEdHDGI$^@1S9%R/u4p!eQ\\XGC#YR\p;\Ksl16@KGMW
+T;T\J7-n']eqPTh5(%JoLMRk2_7CfUNa-lWM@3oC@8'%[Kl$g7#m6!Z71)^-@B/#IIWBS%
+VJP#fPW>"eBP^hsC7_qkg,Y%(H6lRa>b(?^3Ye)K6Bq_0jT$_M3L=!!fVfaO:%h7!S!sT4
+-GsLT)8Y`bEp%a5iPF+Mli\Ea+nU3H#Gs'_V2o=D6k/i92WOJ@OmmIaQaaGo\MGMPFo-D<
+lg?Y9BRh3pA4o&Oo=3]iIK9H*lf5h3O/!@j6[r3U^q%K>@P'G^=((aW8o#Q&(%SFraCC)e
+@fRj4"tI'7r5YRU/oYC`&'-jR"+Y??L%'PPeKd<-O;Aq;89ZDTSB[Ue\Rs0Qar'(IV92'k
+1e^_g0dc#eh$EOm/JNXpFA.OB#]Do'(j@X+TXNc.O'2YA8g"@LA"N#mB.j.M"98Kba(YB4
+#n`"&([=+Qcl7d:d4uXE?p=eJ=Tfn`%@K+\4bmuD#[n]c!I+kRc/DAVM^9*,1hL6`JFt>U
+@P=*^`gtoKoE0,/+Z^8Y#E+13-&O7"K44aBL\Q^e6f_P`Yni7`8;gE!2/AftFNm=%c[c<%
+IZO22(_!)\!<dP%6mEZ`a3a>YE_(MZ5V+57.j7bu^fQq,C_B1@6P1OK70<NB1<426+G6b?
+X`=VQa%Dn="4Vg\jnqK!3CQ-k-2K`)ipjh>=F5cba.^<*?AllJ(#lq=NoB^RVpZn%$;+5k
+P]dMVM7\;Um!LZkBd.*rl[<4^b*c-K,"VU%I]X0EO*/N+<Ig?:-1.LlH'l"V88p0^r*]s*
+,!1@-PWNDH-G*eb(o<HC+iP@V;++b$TW?%VmEBlM.>k2-BKS/.FB1>fjul$Jn1TC+$V\X1
+Dus_KO$]ADNt^_?6A4)dj?01mnIe_u0Sq?boc^tkKc45**b:tXUkNej?BcS!#]KPO(Vu=T
+_6>U#!=U6oTS=-d6)@!PUa248METEG59Z^#ap=.s=D)^MIk;CU$Li=(_$I+LiJ]:N@r)E_
+;HZ-oKHuTjnigk<q&)(&$!:#Y4\*T`7H;(Je+NT@9V]K_j7q8%jsE-eWNZR,^c2Wt3\(<2
+rWRtr;\&n&&B)1UYJEaggA83p7S-dE<YU^MP=fBn/*jK8U33_S`<VtYX!B3YifCl_%hRrk
+'nENM#?#.\`D@6MJ]2%Md,SjnYa;urN$AK,6<$Z>pG.qtSf'ib'F.>JK@"k'Q5&[UROsjJ
+OG8o*@K*9^TV`B=J2jhrX`^i`/cqDF!"YAX3JY[d69uSNNtFTf.j;h\`_[UETS,DJ@S.kU
+GjM8-M2)h%'c$$;nLcq%-A9qP=(KVX@iSWe`NZcW+MR/q9?`n-Up_;[*&9:uME?PpVkU-&
+)_2o$BEVT`Gm&'nMpaR%i<Z;^:-(6?@IgRrNe/!L$Pfs%1KK46]+juj@149BV8?qN?ddXU
+V;i!1([^Ln;)EJ&Y[EO/L)eO-r!+bq-p%F%90uf!Ftu.[J;7_9\tcKWKWpUNL(Nbi6eG/g
+64t\JnWkqa4CH?l7Z58iP,9HL(aflX7g(e]gE9HMO7:2LXa'1R#tnS2O=2T3hQTT*/5:t_
+KFl!S664PA3X7q84B$N1c5FFU&$[*8iDo+!Af`;d'daBD3c@)in:0iA&"`q@A'il\:OtiE
+.`-0#'19Z=mVu2UdWOC^_*Nc'F@7M/nHa@6<S"\$<cM]Db9"iGi%73[0Wgn$gRRXpMU3kt
+ZoCh-f["O#Eb]n7)">`M,ZfamC5@FMV]JET[[8b%3^sF+7nQB97uJi+TgIECigbChE=P29
+5(6EHGZT`p69N<6]X@^RI#2j556^7.WM5b[$*7qpL)0Gh^pCl[E/n!)=Qp]51e"2/LC'9I
+//`Z/F%^&fQcp:C&,h_9KHS8f6o],i@Jk@ZYr!dtR5;Inclp'`<]q(Y+7J1f>*&2W$NLHf
+%0OOFn&YEP8*FJ3,OAunEf@bl7[k5NCr)(#0BYY5q4E1j*X*]D*.:=sj!3V4?i+k[-5`!_
+6E#-Br59!Hk]E%=A&8g.FCc1(:`)PV+Thc#4^!*Zi0IH-5W%!"$bco*ng/hEC-^e%!Ajcf
+'ZR:,'-U<s+m(pt<ptSp#qTm!+Em"PS.&1!"cmj*i+rX,p'<pLeE*,@j+&2LRLeD:lNFs+
+j)i;7nd%J\($l9/D-dlNke"Yf4TRG^@%?8M.-(eKY\loBD2)Ia!n1]<15H\_+Ee'"(2KS'
+7DN`W.6nt`Jf#VbJSDhXlX'WY<(]fheaKfOi1'cWkT40p(;VgJNG@8Lik*!\(<qA'+l!6P
+%[881#is:h$*55A?jHamAcWB?l*MMr<9ku>0B)V:9=uo(i`AoP'.u'A9>(TBF<-@c%Llb4
+%)W"GL)lu=+i*@E,^^0k?39%mJ:Z,Q_%'@0ODfbr*oWP),oS^2)A2K\+0/^L%q9'W..lEt
+$,E)"b?bi8:D;-:)*p#`c6`ku@+[,k"cCM>MU!WN!c`o87DT`[U#'^=dLkYY*F\Md6Cq'Z
+A.cZK2XIpTJMQm,CCUh1)"4WN/63E,!,=en#%<Z*i.`(@=O_k'9HiaW$@Ff>b_9OTU5?aK
+!J72b(EH"fE`%3:")Pqm\fPiRdI8:Nm9^]#!")'f&+WEJMIIUHIZs=2Ad$<mKrQ0/:?Eg.
+;lKadVfZO*B.%-9+"ELI5iQ(NZ5#Zo*?d8qU#oY)YlO5c.BBHc;5Vc\=G`ja!p%4*Tahg1
+Xp8q8c=C6'YP^=WEe1N>;?7h\k![bY9UK8K)"Nh2EKnWT":cQ9C&k%:6/3"89cA'C#1<u:
+U[0)\Op^YkZ@lPYB7M#a3]Rgu0rJ2tUQ,uWPT><3j:^#bJ6NH0i"Imp*J!0+k5k^Jl3C^5
+hG&V7;Z&`'PR%8l!?c"-/EX6h(7PS9;A+(RJK6JC>S06]%KTTNJQ<NG?ro'C*\iW`OZ+nU
+mM:B/J1Hp>jn&c8C`\-KKn*>J+a0)#+u4c^>)6EX#IPpmBP(iV+)sFR!bM^'DA@5B(iUW-
+PMc^^AL,(j;K5k]nYT2l`"?M%7D\sC_*SQ\JB^?0]d=GIU'htiBP+0E/;@]NCpMjff[g[T
+mS;sQ%)<r7=W:cb#iU@I+CGL``"_1!)5^X\i/S0'=s)`D0`urld0Lk,ChtoG+D7cf5`Se%
+m+)d.ea6d8nLFEPCrWh9[G[\iiU.R.J0*X/#@ZBo@h'Q1@$C[%+Y;(QCO3(aM\cNC=pM-2
+Kq;D+r,nd)+/)@7^l^Bl4%Jh$!g$tW7,G?;#pgb^"[Hl9@?MHMRNBkRA`<V0+T<++rWS).
+k&US9+HDM&HD0LMHbo1U`af;']H&.R%NpK4!/D$M"Z(_^*agDs</jXH/dUG`aG.,@U;"m'
+OpS+&WO2mk::rP2[L*%e=pDif@2rG7@T-7H1(UJA^aULn38D>E!m=i0DC,X.=Y$KL#/H6'
+'i5oZ:KhaG'nQu#_30iM\7%\_(c>t^.:bl4F<.8_Z2s;]V^2rJe6UFM*aptTn1;%!%6d(2
+544rH+nh/Zg^$/?']d,seG^.)r^''N4(QPV+a=hIdM\t$Au9<Lk%JqsJf^V;&]\9]UZ=E(
+ImXN3/Raed0*2WWroq8Ml`;EEnSAeFD%O`1"i7bk+Hhri&t,C**Pmq,eg<(aAhh>0&]ZP5
+8J$$@TMq!&&_.P$"QCAobRUmRA7>HTD)Y80rC""f!&gnu_*/;6p'BnH15Y_`76Wm^_N<fF
+Q6b*c,]<YBP!p-=l!TYfjPj7clXWm#dr\_]JJ)t2TICCl&tlD8UtuTWbb_"d+]"DTANMV<
+^0>(Q*eE0@PS8$A`@&%RY^la`i%,H_kS'p_DW1Th+V'_;h_<-aXPa.HTVs]_TE$7](%$`M
+jYmRp80DNi>3'Y(8\U\g,sG*'#p>lETT0U-3YSain7``m-2[`m-$.uG*ZtM,+9
+~>
+showpage grestore
diff --git a/graphics/pstricks/base/doc/images/tiger.eps b/graphics/pstricks/base/doc/images/tiger.eps
new file mode 100644
index 0000000000..5588d5236b
--- /dev/null
+++ b/graphics/pstricks/base/doc/images/tiger.eps
@@ -0,0 +1,2746 @@
+%!PS-Adobe-2.0 EPSF-1.2
+%%BoundingBox: 1 150 611 792
+/InitDictCount countdictstack def
+gsave
+save
+mark
+newpath
+/showpage {} def
+%!PS-Adobe-2.0 EPSF-1.2
+%%Creator: Adobe Illustrator(TM) 1.2d4
+%%For: OpenWindows Version 2
+%%Title: tiger.eps
+%%CreationDate: 4/12/90 3:20 AM
+%%DocumentProcSets: Adobe_Illustrator_1.2d1 0 0
+%%DocumentSuppliedProcSets: Adobe_Illustrator_1.2d1 0 0
+%%BoundingBox: 22 171 567 738
+%%EndComments
+
+%%BeginProcSet:Adobe_Illustrator_1.2d1 0 0
+
+/Adobe_Illustrator_1.2d1 dup 100 dict def load begin
+% definition operators
+/bdef {bind def} bind def
+/ldef {load def} bdef
+/xdef {exch def} bdef
+% graphic state operators
+/_K { 3 index add neg dup 0 lt {pop 0} if 3 1 roll } bdef
+/_k /setcmybcolor where {
+ /setcmybcolor get
+} {
+ { 1 sub 4 1 roll _K _K _K setrgbcolor pop } bind
+} ifelse def
+/g {/_b xdef /p {_b setgray} def} bdef
+/G {/_B xdef /P {_B setgray} def} bdef
+/k {/_b xdef /_y xdef /_m xdef /_c xdef /p {_c _m _y _b _k} def} bdef
+/K {/_B xdef /_Y xdef /_M xdef /_C xdef /P {_C _M _Y _B _k} def} bdef
+/d /setdash ldef
+/_i currentflat def
+/i {dup 0 eq {pop _i} if setflat} bdef
+/j /setlinejoin ldef
+/J /setlinecap ldef
+/M /setmiterlimit ldef
+/w /setlinewidth ldef
+% path construction operators
+/_R {.25 sub round .25 add} bdef
+/_r {transform _R exch _R exch itransform} bdef
+/c {_r curveto} bdef
+/C /c ldef
+/v {currentpoint 6 2 roll _r curveto} bdef
+/V /v ldef
+/y {_r 2 copy curveto} bdef
+/Y /y ldef
+/l {_r lineto} bdef
+/L /l ldef
+/m {_r moveto} bdef
+% path painting operators
+/n /newpath ldef
+/N /n ldef
+/F {p fill} bdef
+/f {closepath F} bdef
+/S {P stroke} bdef
+/s {closepath S} bdef
+/B {gsave F grestore S} bdef
+/b {closepath B} bdef
+end
+%%EndProcSet
+%%EndProlog
+
+%%Page: 1 1
+
+Adobe_Illustrator_1.2d1 begin
+
+.8 setgray
+%clippath fill
+-110 -300 translate
+1.1 dup scale
+
+0 g
+0 G
+0 i
+0 J
+0 j
+0.172 w
+10 M
+[]0 d
+0 0 0 0 k
+
+177.696 715.715 m
+177.797 713.821 176.973 713.84 v
+176.149 713.859 159.695 761.934 139.167 759.691 C
+156.95 767.044 177.696 715.715 V
+b
+181.226 718.738 m
+180.677 716.922 179.908 717.221 v
+179.14 717.519 180.023 768.325 159.957 773.199 C
+179.18 774.063 181.226 718.738 V
+b
+208.716 676.41 m
+210.352 675.45 209.882 674.773 v
+209.411 674.096 160.237 686.898 150.782 668.541 C
+154.461 687.428 208.716 676.41 V
+b
+205.907 666.199 m
+207.763 665.803 207.529 665.012 v
+207.296 664.221 156.593 660.879 153.403 640.478 C
+150.945 659.563 205.907 666.199 V
+b
+201.696 671.724 m
+203.474 671.061 203.128 670.313 v
+202.782 669.565 152.134 673.654 146.002 653.936 C
+146.354 673.175 201.696 671.724 V
+b
+190.991 689.928 m
+192.299 688.554 191.66 688.033 v
+191.021 687.512 147.278 713.366 133.131 698.324 C
+141.872 715.467 190.991 689.928 V
+b
+183.446 685.737 m
+184.902 684.52 184.326 683.929 v
+183.75 683.339 137.362 704.078 125.008 687.531 C
+131.753 705.553 183.446 685.737 V
+b
+180.846 681.665 m
+182.454 680.657 181.964 679.994 v
+181.474 679.331 132.692 693.554 122.709 675.478 C
+126.934 694.251 180.846 681.665 V
+b
+191.58 681.051 m
+192.702 679.52 192.001 679.085 v
+191.3 678.65 151.231 709.898 135.273 696.793 C
+146.138 712.674 191.58 681.051 V
+b
+171.8 710 m
+172.4 708.2 171.6 708 v
+170.8 707.8 142.2 749.8 122.999 742.2 C
+138.2 754 171.8 710 V
+b
+172.495 703.021 m
+173.47 701.392 172.731 701.025 v
+171.993 700.657 135.008 735.501 117.899 723.939 C
+130.196 738.739 172.495 703.021 V
+b
+172.38 698.651 m
+173.502 697.12 172.801 696.685 v
+172.1 696.251 132.031 727.498 116.073 714.393 C
+126.938 730.274 172.38 698.651 V
+b
+0 J 1 w
+170.17 696.935 m
+170.673 690.887 171.661 684.318 173.4 681.199 C
+169.8 668.799 178.6 655.599 V
+178.2 648.399 179.8 645.199 V
+183.8 636.799 188.6 635.999 v
+192.484 635.352 201.207 632.283 211.068 630.879 c
+228.2 616.799 225 603.999 V
+224.6 587.599 221 585.999 V
+232.6 597.199 223 580.399 V
+218.6 561.599 l
+244.2 583.199 228.6 564.799 V
+218.6 538.799 l
+238.2 557.199 231 548.799 V
+227.8 539.999 l
+271 567.199 240.2 537.599 V
+248.2 541.199 252.6 538.399 V
+259.4 539.599 258.6 537.999 V
+237.8 527.599 234.2 509.199 V
+242.6 519.199 239.4 508.399 V
+239.8 496.799 l
+243.8 518.399 243.4 480.799 V
+262.6 498.799 251 477.999 V
+251 461.199 l
+266.2 477.599 259.8 464.799 V
+269.8 473.599 265.8 458.399 V
+265 447.999 269.4 459.199 V
+285.4 489.799 279.4 463.599 V
+278.6 444.399 283.4 459.199 V
+283.8 448.799 293 441.599 V
+291.8 492.399 304.6 456.399 V
+308.6 439.999 l
+311.4 449.199 311 454.399 V
+325.8 470.799 319 446.399 V
+334.2 469.199 331 455.999 V
+323.4 439.999 325 435.199 V
+341.8 469.999 343 471.599 V
+341 429.198 351.8 465.199 V
+357.4 453.199 354.6 448.799 V
+362.6 456.799 361.8 459.999 V
+366.4 468.199 369.2 454.599 V
+371 445.199 372.6 448.399 V
+376.6 424.398 377.8 447.199 V
+379.4 460.799 372.2 472.399 V
+373 475.599 370.2 479.599 v
+383.8 457.999 376.6 486.799 V
+387.801 478.799 389.001 478.799 V
+375.4 501.999 384.2 497.199 V
+379 507.599 397.001 495.599 V
+381 511.599 398.601 501.999 V
+406.601 495.599 399.001 505.599 V
+384.6 521.599 406.601 503.599 V
+418.201 487.199 419.001 484.399 V
+409.001 513.599 404.601 516.399 V
+413.001 552.799 454.201 537.199 V
+461.001 519.999 465.401 538.399 V
+478.201 544.799 489.401 517.199 V
+493.401 530.799 492.601 533.599 V
+499.401 532.399 498.601 533.599 V
+511.801 529.199 513.001 529.999 V
+519.801 523.199 520.201 526.799 V
+529.401 523.999 527.401 527.599 V
+536.201 511.999 536.601 508.399 V
+539.001 522.399 l
+541.001 519.599 l
+542.601 527.199 541.801 528.399 v
+541.001 529.599 561.801 521.599 566.601 500.799 C
+568.601 492.399 l
+574.601 507.199 573.001 511.199 V
+578.201 510.399 578.601 505.999 V
+582.601 529.199 577.801 535.199 V
+582.201 535.999 583.401 532.399 V
+583.401 539.599 l
+590.601 538.799 590.601 541.199 V
+595.001 545.199 597.001 540.399 V
+584.601 575.599 603.001 556.399 V
+610.201 545.599 606.601 564.399 v
+603.001 583.199 599.001 584.799 603.801 585.199 C
+604.601 588.799 602.601 590.399 v
+600.601 591.999 603.801 590.399 y
+608.601 586.399 603.401 608.399 V
+609.801 606.799 597.801 635.999 V
+600.601 638.399 596.601 646.799 V
+604.601 642.399 607.401 643.999 V
+607.001 645.599 603.801 649.599 V
+582.201 704.4 602.601 682.399 V
+614.451 668.849 608.051 691.649 V
+598.94 715.659 599.717 719.955 V
+170.17 696.935 l
+b
+0.2 0.55 0.85 0 k
+599.717 719.755 m
+600.345 719.574 602.551 718.45 603.801 716.8 C
+610.601 706 605.401 724.4 V
+596.201 753.2 605.001 742 V
+611.001 734.8 607.801 748.4 v
+603.936 764.827 601.401 771.2 y
+613.001 766.4 586.201 806 V
+595.001 802.4 l
+575.401 842 553.801 847.2 V
+545.801 853.2 l
+584.201 891.2 571.401 928 V
+564.601 933.2 555.001 924 V
+548.601 919.2 542.601 920.8 V
+511.801 919.6 509.801 919.6 v
+507.801 919.6 473.001 956.8 407.401 939.2 C
+402.201 937.2 397.801 938.4 V
+379.4 954.4 330.6 931.6 v
+320.6 929.6 319 929.6 v
+317.4 929.6 314.6 929.6 306.6 923.2 c
+298.6 916.8 298.2 916 296.2 914.4 C
+279.8 903.2 275 902.4 V
+263.4 896 259 886 V
+255.4 884.8 l
+253.8 877.6 253.4 876.4 V
+248.6 872.8 247.8 867.2 V
+239 861.2 239.4 856.8 V
+237.8 851.6 237 846.8 V
+229.8 842 230.6 839.2 V
+223 825.2 224.2 818.4 V
+217.8 818.8 215 816.4 V
+214.2 811.6 212.6 811.2 V
+209.8 810 212.2 806 V
+210.6 803.2 210.2 801.6 V
+211 798.8 206.6 793.2 V
+200.2 774.4 202.2 769.2 V
+202.6 764.4 199.8 762.8 V
+196.2 763.2 204.6 751.2 V
+205.4 750 202.2 747.6 V
+185 744 182.6 727.6 V
+169 712.8 169 707.6 v
+169 705.295 169.271 702.148 169.97 697.535 C
+169.4 689.199 197 688.399 v
+224.6 687.599 599.717 719.755 Y
+b
+184.4 697.4 m
+159.4 736.8 173.8 680.399 Y
+182.6 645.999 312.2 683.599 y
+481.001 714 492.201 718 v
+503.401 722 598.601 715.6 y
+593.001 732.4 L
+528.201 778.8 509.001 755.6 495.401 759.6 c
+481.801 763.6 484.201 754 481.001 753.2 c
+477.801 752.4 438.601 777.2 432.201 776.4 c
+425.801 775.6 400.459 799.351 415.401 767.6 c
+431.401 733.6 357 728.4 340.2 739.6 c
+323.4 750.8 347.4 721.2 Y
+365.8 701.2 331.4 718 y
+297 730.8 273 705.2 269.8 704.4 c
+266.6 703.6 261.8 700.4 261 706.8 c
+260.2 713.2 252.69 729.901 221 703.6 c
+201 686.999 187.2 709 Y
+184.4 697.4 L
+f
+0.09 0.5 0.772 0 k
+433.51 774.654 m
+427.11 773.854 401.743 797.593 416.71 765.854 c
+433.31 730.654 358.31 726.654 341.51 737.854 c
+324.709 749.054 348.71 719.454 Y
+367.11 699.454 332.709 716.254 y
+298.309 729.054 274.309 703.454 271.109 702.654 c
+267.909 701.854 263.109 698.654 262.309 705.054 c
+261.509 711.454 254.13 727.988 222.309 701.854 c
+201.073 684.508 187.582 705.963 Y
+184.382 695.854 L
+159.382 735.654 174.454 677.345 Y
+183.255 642.944 313.509 681.854 y
+482.31 712.254 493.51 716.254 v
+504.71 720.254 599.038 713.927 y
+593.51 731.236 L
+528.71 777.636 510.31 753.854 496.71 757.854 c
+483.11 761.854 485.51 752.254 482.31 751.454 c
+479.11 750.654 439.91 775.454 433.51 774.654 c
+f
+0.081 0.45 0.695 0 k
+434.819 772.909 m
+428.419 772.109 403.685 796.138 418.019 764.109 c
+434.219 727.908 359.619 724.908 342.819 736.108 c
+326.019 747.308 350.019 717.708 Y
+368.419 697.708 334.019 714.508 y
+299.619 727.308 275.618 701.708 272.418 700.908 c
+269.218 700.108 264.418 696.908 263.618 703.308 c
+262.818 709.708 255.57 726.075 223.618 700.108 c
+201.145 682.017 187.964 702.926 Y
+184.364 694.308 L
+160.564 733.308 175.109 674.29 Y
+183.909 639.89 314.819 680.108 y
+483.619 710.508 494.819 714.508 v
+506.019 718.508 599.474 712.254 y
+594.02 730.072 L
+529.219 776.472 511.619 752.109 498.019 756.109 c
+484.419 760.109 486.819 750.509 483.619 749.708 c
+480.419 748.908 441.219 773.709 434.819 772.909 c
+f
+0.072 0.4 0.618 0 k
+436.128 771.163 m
+429.728 770.363 404.999 794.395 419.328 762.363 c
+436.128 724.807 360.394 723.518 344.128 734.363 c
+327.328 745.563 351.328 715.963 Y
+369.728 695.963 335.328 712.763 y
+300.928 725.563 276.928 699.963 273.728 699.163 c
+270.528 698.363 265.728 695.163 264.928 701.563 c
+264.128 707.963 257.011 724.161 224.927 698.363 c
+201.218 679.526 188.345 699.89 Y
+184.345 692.763 L
+162.545 729.563 175.764 671.235 Y
+184.564 636.835 316.128 678.363 y
+484.928 708.763 496.129 712.763 v
+507.329 716.763 599.911 710.581 y
+594.529 728.908 L
+529.729 775.309 512.929 750.363 499.329 754.363 c
+485.728 758.363 488.128 748.763 484.928 747.963 c
+481.728 747.163 442.528 771.963 436.128 771.163 c
+f
+0.063 0.35 0.54 0 k
+437.438 769.417 m
+431.037 768.617 406.814 792.871 420.637 760.617 c
+437.438 721.417 362.237 721.417 345.437 732.617 c
+328.637 743.817 352.637 714.217 Y
+371.037 694.217 336.637 711.017 y
+302.237 723.817 278.237 698.217 275.037 697.417 c
+271.837 696.617 267.037 693.417 266.237 699.817 c
+265.437 706.217 258.452 722.248 226.237 696.617 c
+201.291 677.035 188.727 696.854 Y
+184.327 691.217 L
+164.527 726.018 176.418 668.181 Y
+185.218 633.78 317.437 676.617 y
+486.238 707.017 497.438 711.017 v
+508.638 715.017 600.347 708.908 y
+595.038 727.745 L
+530.238 774.145 514.238 748.617 500.638 752.617 c
+487.038 756.617 489.438 747.017 486.238 746.217 c
+483.038 745.417 443.838 770.217 437.438 769.417 c
+f
+0.054 0.3 0.463 0 k
+438.747 767.672 m
+432.347 766.872 406.383 790.323 421.947 758.872 c
+441.147 720.072 363.546 719.672 346.746 730.872 c
+329.946 742.072 353.946 712.472 Y
+372.346 692.472 337.946 709.272 y
+303.546 722.072 279.546 696.472 276.346 695.672 c
+273.146 694.872 268.346 691.672 267.546 698.072 c
+266.746 704.472 259.892 720.335 227.546 694.872 c
+201.364 674.544 189.109 693.817 Y
+184.309 689.672 L
+166.309 722.872 177.073 665.126 Y
+185.873 630.726 318.746 674.872 y
+487.547 705.272 498.747 709.272 v
+509.947 713.272 600.783 707.236 y
+595.547 726.581 L
+530.747 772.981 515.547 746.872 501.947 750.872 c
+488.347 754.872 490.747 745.272 487.547 744.472 c
+484.347 743.672 445.147 768.472 438.747 767.672 c
+f
+0.045 0.25 0.386 0 k
+440.056 765.927 m
+433.655 765.127 407.313 788.387 423.255 757.127 c
+443.656 717.126 364.855 717.926 348.055 729.126 c
+331.255 740.326 355.255 710.726 Y
+373.655 690.726 339.255 707.526 y
+304.855 720.326 280.855 694.726 277.655 693.926 c
+274.455 693.126 269.655 689.926 268.855 696.326 c
+268.055 702.726 261.332 718.422 228.855 693.126 c
+201.436 672.053 189.491 690.781 Y
+184.291 688.126 L
+168.291 718.326 177.727 662.071 Y
+186.527 627.671 320.055 673.126 y
+488.856 703.526 500.056 707.526 v
+511.256 711.526 601.22 705.563 y
+596.056 725.417 L
+531.256 771.817 516.856 745.126 503.256 749.126 c
+489.656 753.127 492.056 743.526 488.856 742.726 c
+485.656 741.926 446.456 766.727 440.056 765.927 c
+f
+0.036 0.2 0.309 0 k
+441.365 764.181 m
+434.965 763.381 407.523 786.056 424.565 755.381 c
+446.565 715.781 366.164 716.181 349.364 727.381 c
+332.564 738.581 356.564 708.981 Y
+374.964 688.981 340.564 705.781 y
+306.164 718.581 282.164 692.981 278.964 692.181 c
+275.764 691.381 270.964 688.181 270.164 694.581 c
+269.364 700.981 262.773 716.508 230.164 691.381 c
+201.509 669.562 189.873 687.744 Y
+184.273 686.581 L
+169.872 714.981 178.382 659.017 Y
+187.182 624.616 321.364 671.381 y
+490.165 701.781 501.365 705.781 v
+512.565 709.781 601.656 703.89 y
+596.565 724.254 L
+531.765 770.654 518.165 743.381 504.565 747.381 c
+490.965 751.381 493.365 741.781 490.165 740.981 c
+486.965 740.181 447.765 764.981 441.365 764.181 c
+f
+0.027 0.15 0.231 0 k
+442.674 762.435 m
+436.274 761.635 408.832 784.311 425.874 753.635 c
+447.874 714.035 367.474 714.435 350.674 725.635 c
+333.874 736.835 357.874 707.235 Y
+376.274 687.235 341.874 704.035 y
+307.473 716.835 283.473 691.235 280.273 690.435 c
+277.073 689.635 272.273 686.435 271.473 692.835 c
+270.673 699.235 264.214 714.595 231.473 689.635 c
+201.582 667.071 190.255 684.707 Y
+184.255 685.035 L
+170.654 711.436 179.037 655.962 Y
+187.837 621.562 322.673 669.635 y
+491.474 700.035 502.674 704.035 v
+513.874 708.035 602.093 702.217 y
+597.075 723.09 L
+532.274 769.49 519.474 741.635 505.874 745.635 c
+492.274 749.635 494.674 740.035 491.474 739.235 c
+488.274 738.435 449.074 763.235 442.674 762.435 c
+f
+0.018 0.1 0.154 0 k
+443.983 760.69 m
+437.583 759.89 410.529 782.777 427.183 751.89 c
+449.183 711.09 368.783 712.69 351.983 723.89 c
+335.183 735.09 359.183 705.49 Y
+377.583 685.49 343.183 702.29 y
+308.783 715.09 284.783 689.49 281.583 688.69 c
+278.382 687.89 273.582 684.69 272.782 691.09 c
+271.982 697.49 265.654 712.682 232.782 687.89 c
+201.655 664.58 190.637 681.671 Y
+184.236 683.49 L
+171.236 707.49 179.691 652.907 Y
+188.491 618.507 323.983 667.89 y
+492.783 698.29 503.983 702.29 v
+515.183 706.29 602.529 700.544 y
+597.583 721.926 L
+532.783 768.327 520.783 739.89 507.183 743.89 c
+493.583 747.89 495.983 738.29 492.783 737.49 c
+489.583 736.69 450.383 761.49 443.983 760.69 c
+f
+0.009 0.05 0.077 0 k
+445.292 758.945 m
+438.892 758.145 412.917 781.589 428.492 750.145 c
+449.692 707.344 370.092 710.944 353.292 722.144 c
+336.492 733.344 360.492 703.744 Y
+378.892 683.744 344.492 700.544 y
+310.092 713.344 286.092 687.744 282.892 686.944 c
+279.692 686.144 274.892 682.944 274.092 689.344 c
+273.292 695.744 267.095 710.768 234.092 686.144 c
+201.727 662.089 191.018 678.635 Y
+184.218 681.944 L
+171.418 705.144 180.346 649.853 Y
+189.146 615.453 325.292 666.144 y
+494.093 696.544 505.293 700.544 v
+516.493 704.544 602.965 698.872 y
+598.093 720.763 L
+533.292 767.163 522.093 738.144 508.493 742.144 c
+494.893 746.145 497.293 736.544 494.093 735.744 c
+490.892 734.944 451.692 759.745 445.292 758.945 c
+f
+1 g
+184.2 680.399 m
+171.4 702.4 181 646.799 Y
+189.8 612.399 326.6 664.399 y
+495.401 694.8 506.601 698.8 v
+517.801 702.8 603.401 697.2 y
+598.601 719.6 L
+533.801 766 523.401 736.4 509.801 740.4 c
+496.201 744.4 498.601 734.8 495.401 734 c
+492.201 733.2 453.001 758 446.601 757.2 c
+440.201 756.4 414.981 780.207 429.801 748.4 c
+452.028 700.693 369.041 710.773 354.6 720.4 c
+337.8 731.6 361.8 702 Y
+380.2 681.999 345.8 698.8 y
+311.4 711.6 287.4 685.999 284.2 685.199 c
+281 684.399 276.2 681.199 275.4 687.599 c
+274.6 694 268.535 708.856 235.4 684.399 c
+201.8 659.599 191.4 675.599 Y
+184.2 680.399 L
+f
+0 g
+225.8 650.399 m
+218.6 638.799 239.4 625.599 V
+240.8 624.199 222.8 628.399 V
+216.6 630.399 215 640.799 V
+210.2 645.199 205.4 650.799 v
+200.6 656.399 225.8 650.399 y
+f
+0.8 g
+365.8 698 m
+383.498 671.179 382.9 666.399 v
+381.6 655.999 381.4 646.399 384.6 642.399 c
+387.801 638.399 396.601 605.199 y
+396.201 603.999 408.601 641.999 V
+420.201 657.999 400.201 676.399 V
+365 705.2 365.8 698 v
+f
+0 g
+1 J 0.1 w
+245.8 623.599 m
+257 616.399 242.6 585.199 V
+249 587.599 l
+248.2 576.399 245 573.999 V
+252.2 577.199 l
+257 569.199 253 564.399 V
+269.8 556.399 269 549.999 V
+275.4 557.999 271.4 564.399 v
+267.4 570.799 260.2 566.799 261 585.199 C
+252.2 581.999 l
+257.8 590.799 257.8 597.199 V
+249.8 594.799 l
+265.269 621.377 254.6 622.799 v
+248.6 623.599 245.8 623.599 Y
+f
+0.8 g
+278.2 606.799 m
+281 611.199 278.2 610.399 v
+275.4 609.599 244.2 594.799 238.2 585.199 C
+272.6 609.599 278.2 606.799 V
+f
+288.6 598.799 m
+291.4 603.199 288.6 602.399 v
+285.8 601.599 254.6 586.799 248.6 577.199 C
+283 601.599 288.6 598.799 V
+f
+301.8 613.999 m
+304.6 618.399 301.8 617.599 v
+299 616.799 267.8 601.999 261.8 592.399 C
+296.2 616.799 301.8 613.999 V
+f
+278.6 570.399 m
+278.6 576.399 275.8 575.599 v
+273 574.799 237 557.199 231 547.599 C
+273 573.199 278.6 570.399 V
+f
+279.8 581.199 m
+281 585.999 278.2 585.199 V
+276.2 585.199 249.8 573.599 243.8 563.999 C
+273.4 585.599 279.8 581.199 V
+f
+265.4 533.599 m
+255.4 525.999 l
+265.8 533.599 269.4 532.399 V
+262.6 521.199 261.8 515.999 V
+272.2 528.799 277.8 528.399 V
+285.4 527.999 285.4 517.199 V
+291 527.599 294.2 527.199 V
+295.4 520.799 294.2 513.999 V
+298.2 521.599 302.2 519.999 V
+308.6 521.999 307.8 510.399 V
+307.8 499.999 307 497.199 V
+312.6 523.599 315 523.999 V
+323 525.199 327.8 516.399 V
+323.8 523.999 328.6 521.999 V
+339.4 520.399 342.6 513.599 V
+335.8 525.599 341.4 522.399 V
+348.2 522.399 349.4 515.999 V
+357.8 494.799 359.8 493.199 V
+352.2 514.799 353.8 514.799 V
+351.8 526.799 357 511.999 V
+353.8 525.999 359.4 525.199 v
+365 524.399 369.4 514.399 377.8 516.799 C
+387.401 511.199 389.401 580.399 V
+265.4 533.599 L
+f
+0 g
+0 J 1 w
+270.2 626.399 m
+285 632.399 325 626.399 V
+332.2 625.999 339 634.799 v
+345.8 643.599 372.6 650.799 379 648.799 C
+388.601 642.399 l
+389.401 641.199 l
+401.801 630.799 402.201 623.199 v
+402.601 615.599 387.801 567.599 378.2 551.599 c
+368.6 535.599 359 523.199 339.8 525.599 C
+319 529.599 293.4 525.599 v
+264.2 527.199 261.4 535.199 v
+258.6 543.199 272.6 558.399 y
+277 566.799 275.8 581.199 v
+274.6 595.599 275 623.599 270.2 626.399 c
+f
+0.1 0.6 0.45 0 k
+292.2 624.399 m
+300.6 605.999 271 540.799 y
+269 539.199 283.66 533.154 293.8 535.599 c
+304.746 538.237 345 533.999 Y
+368.6 549.599 381.4 593.999 y
+391.801 617.999 374.2 621.199 v
+356.6 624.399 292.2 624.399 y
+f
+0.1 0.6 0.45 0.2 k
+290.169 593.503 m
+293.495 606.293 295.079 618.094 292.2 624.399 c
+354.6 617.999 365.8 638.799 v
+370.041 646.674 384.801 615.999 384.4 606.399 c
+321.4 591.999 306.6 603.199 V
+290.169 593.503 L
+f
+0.1 0.6 0.45 0.25 k
+294.6 577.199 m
+296.6 569.999 294.2 565.999 V
+292.6 565.199 291.4 564.799 V
+292.6 561.199 298.6 559.599 V
+300.6 555.199 303 554.799 v
+305.4 554.399 310.2 548.799 314.2 549.999 c
+318.2 551.199 329.4 555.199 y
+335 558.399 343.8 554.799 V
+346.175 555.601 346.6 559.599 v
+347.1 564.299 350.2 567.999 352.2 569.999 c
+354.2 571.999 363.8 584.799 362.6 585.199 c
+361.4 585.599 294.6 577.199 Y
+f
+0 0.55 0.5 0 k
+290.2 625.599 m
+287.4 603.199 290.6 594.799 v
+293.8 586.399 293 584.399 292.2 580.399 c
+291.4 576.399 295.8 566.399 301.4 560.399 C
+313.4 558.799 l
+328.6 562.399 337.8 559.599 V
+346.794 558.256 350.2 573.199 V
+355 579.599 362.2 582.399 v
+369.4 585.199 376.6 626.799 372.6 634.799 c
+368.6 642.799 354.2 647.199 338.2 631.599 c
+322.2 615.999 320.2 632.799 290.2 625.599 C
+b
+0 0 0.2 0 k
+0.5 w
+291.8 550.799 m
+291 552.799 286.6 553.199 V
+264.2 556.799 255.8 569.199 V
+249 574.799 253.4 563.199 V
+263.8 542.799 270.6 539.999 V
+287 535.999 291.8 550.799 V
+b
+0 0.55 0.5 0.2 k
+1 w
+371.742 614.771 m
+372.401 622.677 374.354 631.291 372.6 634.799 c
+366.154 647.693 349.181 642.305 338.2 631.599 c
+322.2 615.999 320.2 632.799 290.2 625.599 C
+288.455 611.636 289.295 601.624 v
+326.6 613.199 327.4 607.599 V
+329 610.799 338.2 610.799 v
+347.4 610.799 370.142 611.971 371.742 614.771 C
+f
+0 g
+0 0.55 0.5 0.35 K
+2 w
+328.6 624.799 m
+333.4 619.999 329.8 610.399 V
+315.4 594.399 317.4 580.399 v
+S
+0 0 0.2 0 k
+0 G
+0.5 w
+280.6 539.999 m
+276.2 552.799 285 545.999 V
+289.8 543.999 288.6 542.399 v
+287.4 540.799 281.8 536.799 280.6 539.999 C
+b
+285.64 538.799 m
+282.12 549.039 289.16 543.599 V
+293.581 541.151 292.04 540.719 v
+287.48 539.439 292.04 536.879 285.64 538.799 C
+b
+290.44 538.799 m
+286.92 549.039 293.96 543.599 V
+298.335 541.289 296.84 540.719 v
+293.48 539.439 296.84 536.879 290.44 538.799 C
+b
+297.04 538.599 m
+293.52 548.839 300.56 543.399 V
+304.943 541.067 303.441 540.519 v
+300.48 539.439 303.441 536.679 297.04 538.599 C
+b
+303.52 538.679 m
+300 548.919 307.041 543.479 V
+310.881 541.879 309.921 540.599 v
+308.961 539.319 309.921 536.759 303.52 538.679 C
+b
+310.2 537.999 m
+305.4 550.399 314.6 543.999 V
+319.4 541.999 318.2 540.399 v
+317 538.799 318.2 535.599 310.2 537.999 C
+b
+0 g
+0.1 0.6 0.45 0.25 K
+2 w
+281.8 555.199 m
+295 557.999 301 554.799 V
+307 553.599 308.2 553.999 v
+309.4 554.399 312.6 554.799 y
+S
+315.8 546.399 m
+327.8 559.999 339.8 555.599 v
+346.816 553.026 345.8 556.399 346.6 559.199 c
+347.4 561.999 347.6 566.199 352.6 569.199 c
+S
+0 0 0.2 0 k
+0 G
+0.5 w
+333 562.399 m
+329 573.199 326.2 560.399 v
+323.4 547.599 320.2 543.999 318.6 541.199 C
+318.6 535.999 327 536.399 V
+337.8 536.799 338.2 539.599 v
+338.6 542.399 337 553.999 333 562.399 C
+b
+0 g
+0.1 0.6 0.45 0.25 K
+2 w
+347 555.199 m
+350.6 557.599 353 556.399 v
+S
+353.5 571.599 m
+356.4 576.499 361.2 577.299 v
+S
+0.7 g
+0 G
+1 w
+274.2 534.799 m
+292.2 531.599 296.6 533.199 V
+305.4 533.199 297 531.199 V
+284.2 531.199 276.2 532.399 V
+264.6 537.999 274.2 534.799 V
+f
+0 0 0.2 0 k
+0.5 w
+288.2 627.999 m
+305.8 627.999 307.8 627.199 V
+315 596.399 311.4 588.799 V
+310.2 585.999 307.4 591.599 V
+289 624.399 285.8 626.399 v
+282.6 628.399 287 627.999 288.2 627.999 C
+b
+211.1 630.699 m
+220 628.999 232.6 626.399 V
+237.4 603.999 240.6 599.199 v
+243.8 594.399 240.2 594.399 236.6 597.199 c
+233 599.999 218.2 613.999 216.2 618.399 c
+214.2 622.799 211.1 630.699 y
+b
+232.961 626.182 m
+238.761 624.634 239.77 622.419 v
+240.778 620.205 238.568 616.908 y
+237.568 613.603 236.366 615.765 v
+235.164 617.928 232.292 625.588 232.961 626.182 c
+b
+0 g
+233 626.399 m
+236.6 621.199 240.2 621.199 v
+243.8 621.199 244.182 621.612 247 620.999 c
+251.6 619.999 251.2 621.999 257.8 620.799 c
+260.44 620.319 263 621.199 265.8 619.999 c
+268.6 618.799 271.8 619.599 273 621.599 c
+274.2 623.599 279 627.799 Y
+266.2 625.999 263.4 625.199 V
+241 623.999 233 626.399 V
+f
+0 0 0.2 0 k
+277.6 626.199 m
+271.15 622.699 270.75 620.299 v
+270.35 617.899 276 614.199 y
+278.75 609.599 279.35 611.999 v
+279.95 614.399 278.4 625.799 277.6 626.199 c
+b
+240.115 620.735 m
+247.122 609.547 247.339 620.758 V
+247.896 622.016 246.136 622.038 v
+240.061 622.114 241.582 626.216 240.115 620.735 C
+b
+247.293 620.486 m
+255.214 609.299 254.578 620.579 V
+254.585 620.911 252.832 621.064 v
+248.085 621.478 248.43 625.996 247.293 620.486 C
+b
+254.506 620.478 m
+262.466 609.85 261.797 619.516 V
+261.916 620.749 260.262 621.05 v
+256.37 621.756 256.159 625.005 254.506 620.478 C
+b
+261.382 620.398 m
+269.282 608.837 269.63 618.618 V
+271.274 619.996 269.528 620.218 v
+263.71 620.958 264.508 625.412 261.382 620.398 C
+b
+0 0 0.2 0.1 k
+225.208 616.868 m
+217.55 618.399 l
+214.95 623.399 212.85 629.549 y
+219.2 628.549 231.7 625.749 V
+232.576 622.431 234.048 616.636 v
+225.208 616.868 l
+f
+290.276 621.53 m
+288.61 624.036 287.293 625.794 286.643 626.2 c
+283.63 628.083 287.773 627.706 288.902 627.706 C
+305.473 627.706 307.356 626.953 V
+307.88 624.711 308.564 621.32 V
+298.476 623.33 290.276 621.53 V
+f
+0.2 0.55 0.85 0 k
+1 w
+343.88 759.679 m
+371.601 755.719 397.121 791.359 398.881 801.04 c
+400.641 810.72 390.521 822.6 Y
+391.841 825.68 387.001 839.76 381.721 849 c
+376.441 858.24 360.54 857.266 343 858.24 c
+327.16 859.12 308.68 835.8 307.36 834.04 c
+306.04 832.28 312.2 793.999 313.52 788.279 c
+314.84 782.559 312.2 756.159 y
+346.44 765.259 316.16 763.639 343.88 759.679 c
+f
+0.08 0.44 0.68 0 k
+308.088 833.392 m
+306.792 831.664 312.84 794.079 314.136 788.463 c
+315.432 782.847 312.84 756.927 y
+345.512 765.807 316.728 764.271 343.944 760.383 c
+371.161 756.495 396.217 791.487 397.945 800.992 c
+399.673 810.496 389.737 822.16 Y
+391.033 825.184 386.281 839.008 381.097 848.08 c
+375.913 857.152 360.302 856.195 343.08 857.152 c
+327.528 858.016 309.384 835.12 308.088 833.392 c
+f
+0.06 0.33 0.51 0 k
+308.816 832.744 m
+307.544 831.048 313.48 794.159 314.752 788.647 c
+316.024 783.135 313.48 757.695 y
+344.884 766.855 317.296 764.903 344.008 761.087 c
+370.721 757.271 395.313 791.615 397.009 800.944 c
+398.705 810.272 388.953 821.72 Y
+390.225 824.688 385.561 838.256 380.473 847.16 c
+375.385 856.064 360.063 855.125 343.16 856.064 c
+327.896 856.912 310.088 834.44 308.816 832.744 c
+f
+0.04 0.22 0.34 0 k
+309.544 832.096 m
+308.296 830.432 314.12 794.239 315.368 788.831 c
+316.616 783.423 314.12 758.463 y
+343.556 767.503 317.864 765.535 344.072 761.791 c
+370.281 758.047 394.409 791.743 396.073 800.895 c
+397.737 810.048 388.169 821.28 Y
+389.417 824.192 384.841 837.504 379.849 846.24 c
+374.857 854.976 359.824 854.055 343.24 854.976 c
+328.264 855.808 310.792 833.76 309.544 832.096 c
+f
+0.02 0.11 0.17 0 k
+310.272 831.448 m
+309.048 829.816 314.76 794.319 315.984 789.015 c
+317.208 783.711 314.76 759.231 y
+342.628 768.151 318.432 766.167 344.136 762.495 c
+369.841 758.823 393.505 791.871 395.137 800.848 c
+396.769 809.824 387.385 820.84 Y
+388.609 823.696 384.121 836.752 379.225 845.32 c
+374.329 853.888 359.585 852.985 343.32 853.888 c
+328.632 854.704 311.496 833.08 310.272 831.448 c
+f
+1 g
+344.2 763.2 m
+369.4 759.6 392.601 792 394.201 800.8 c
+395.801 809.6 386.601 820.4 Y
+387.801 823.2 383.4 836 378.6 844.4 c
+373.8 852.8 359.346 851.914 343.4 852.8 c
+329 853.6 312.2 832.4 311 830.8 c
+309.8 829.2 315.4 794.4 316.6 789.2 c
+317.8 784 315.4 760 y
+340.9 768.6 319 766.8 344.2 763.2 c
+f
+0.8 g
+390.601 797.2 m
+362.8 789.6 351.2 791.2 V
+335.4 797.8 326.6 776 V
+323 768.8 321 766.8 v
+319 764.8 390.601 797.2 Y
+f
+0 g
+394.401 799.4 m
+365.4 787.2 355.4 787.6 v
+339 792.2 330.6 777.6 V
+322.2 768.4 319 766.8 V
+318.6 765.2 325 769.2 V
+335.4 764 l
+350.2 754.4 359.8 770.4 V
+363.8 781.6 363.8 783.6 v
+363.8 785.6 385 791.2 386.601 791.6 c
+388.201 792 394.801 796.2 394.401 799.4 C
+f
+0.4 0.2 0.8 0 k
+347 763.486 m
+340.128 763.486 331.755 767.351 331.755 773.6 c
+331.755 779.848 340.128 786.113 347 786.113 c
+353.874 786.113 359.446 781.048 359.446 774.8 c
+359.446 768.551 353.874 763.486 347 763.486 c
+f
+0.4 0.2 0.8 0.2 k
+343.377 780.17 m
+338.531 779.448 333.442 777.945 333.514 778.161 c
+335.054 782.78 341.415 786.113 347 786.113 c
+351.296 786.113 355.084 784.135 357.32 781.125 c
+352.004 781.455 343.377 780.17 v
+f
+1 g
+355.4 780.4 m
+351 783.6 351 781.4 V
+354.6 777 355.4 780.4 V
+f
+0 g
+345.4 772.274 m
+342.901 772.274 340.875 774.3 340.875 776.8 c
+340.875 779.299 342.901 781.325 345.4 781.325 c
+347.9 781.325 349.926 779.299 349.926 776.8 c
+349.926 774.3 347.9 772.274 345.4 772.274 c
+f
+0.2 0.55 0.85 0 k
+241.4 785.6 m
+238.2 806.8 240.6 811.2 V
+251.4 821.2 251 824.8 V
+250.6 842.8 249.4 843.6 v
+248.2 844.4 240.6 850.4 234.6 844 C
+224.2 826 225 819.6 V
+225 817.6 l
+217.4 818 215.8 816 V
+214.6 810.8 213.4 810.4 V
+210.6 808 212.6 805.2 V
+210.6 802.8 211 798.8 V
+218.6 794.8 L
+220.6 780.4 231.4 775.2 v
+236.236 772.871 239.4 779.6 241.4 785.6 c
+f
+1 g
+240.4 787.44 m
+237.52 806.52 239.68 810.48 V
+249.4 819.48 249.04 822.72 V
+248.68 838.92 247.6 839.64 v
+246.52 840.36 239.68 845.76 234.28 840 C
+224.92 823.8 225.64 818.04 V
+225.64 816.24 l
+218.8 816.6 217.36 814.8 V
+216.28 810.12 215.2 809.76 V
+212.68 807.6 214.48 805.08 V
+212.68 802.92 213.04 799.32 V
+219.88 795.72 L
+221.68 782.76 231.4 778.08 v
+235.752 775.985 238.6 782.04 240.4 787.44 c
+f
+0.075 0.412 0.637 0 k
+248.95 842.61 m
+247.86 843.47 240.37 849.24 234.52 843 C
+224.38 825.45 225.16 819.21 V
+225.16 817.26 l
+217.75 817.65 216.19 815.7 V
+215.02 810.63 213.85 810.24 V
+211.12 807.9 213.07 805.17 V
+211.12 802.83 211.51 798.93 V
+218.92 795.03 L
+220.87 780.99 231.4 775.92 v
+236.114 773.65 239.2 780.21 241.15 786.06 c
+238.03 806.73 240.37 811.02 V
+250.9 820.77 250.51 824.28 V
+250.12 841.83 248.95 842.61 V
+f
+0.05 0.275 0.425 0 k
+248.5 841.62 m
+247.52 842.54 240.14 848.08 234.44 842 C
+224.56 824.9 225.32 818.82 V
+225.32 816.92 l
+218.1 817.3 216.58 815.4 V
+215.44 810.46 214.3 810.08 V
+211.64 807.8 213.54 805.14 V
+211.64 802.86 212.02 799.06 V
+219.24 795.26 L
+221.14 781.58 231.4 776.64 v
+235.994 774.428 239 780.82 240.9 786.52 c
+237.86 806.66 240.14 810.84 V
+250.4 820.34 250.02 823.76 V
+249.64 840.86 248.5 841.62 V
+f
+0.025 0.137 0.212 0 k
+248.05 840.63 m
+247.18 841.61 239.91 846.92 234.36 841 C
+224.74 824.35 225.48 818.43 V
+225.48 816.58 l
+218.45 816.95 216.97 815.1 V
+215.86 810.29 214.75 809.92 V
+212.16 807.7 214.01 805.11 V
+212.16 802.89 212.53 799.19 V
+219.56 795.49 L
+221.41 782.17 231.4 777.36 v
+235.873 775.206 238.8 781.43 240.65 786.98 c
+237.69 806.59 239.91 810.66 V
+249.9 819.91 249.53 823.24 V
+249.16 839.89 248.05 840.63 V
+f
+1 g
+240.4 787.54 m
+237.52 806.52 239.68 810.48 V
+249.4 819.48 249.04 822.72 V
+248.68 838.92 247.6 839.64 V
+246.84 840.68 239.68 845.76 234.28 840 C
+224.92 823.8 225.64 818.04 V
+225.64 816.24 l
+218.8 816.6 217.36 814.8 V
+216.28 810.12 215.2 809.76 V
+212.68 807.6 214.48 805.08 V
+212.68 802.92 213.04 799.32 V
+219.88 795.72 L
+221.68 782.76 231.4 778.08 v
+235.752 775.985 238.6 782.14 240.4 787.54 c
+f
+0.8 g
+237.3 793.8 m
+215.7 804 214.8 804.8 V
+223.9 796.6 224.7 796.6 v
+225.5 796.6 237.3 793.8 Y
+f
+0 g
+220.2 800 m
+238.6 796.4 238.6 792 v
+238.6 789.088 238.357 775.669 233 777.2 c
+224.6 779.6 228.2 794 220.2 800 c
+f
+0.4 0.2 0.8 0 k
+228.6 796.2 m
+237.578 794.726 238.6 792 v
+239.2 790.4 239.863 782.092 234.4 781 c
+229.848 780.089 227.618 790.31 228.6 796.2 c
+f
+0 g
+314.595 753.651 m
+314.098 755.393 315.409 755.262 317.2 755.8 c
+319.2 756.4 331.4 760.2 332.2 762.8 c
+333 765.4 346.2 761 Y
+348 760.2 352.4 757.6 Y
+357.2 756.4 363.8 756 Y
+366.2 755 369.6 752.2 Y
+384.2 742 396.601 749.2 Y
+416.601 755.8 410.601 773 Y
+407.601 782 410.801 785.4 Y
+411.001 789.2 418.201 782.8 Y
+420.801 778.6 421.601 773.6 Y
+429.601 762.4 426.201 780.2 Y
+426.401 781.2 423.601 784.8 423.601 786 c
+423.601 787.2 421.801 790.6 Y
+418.801 794 421.201 801 Y
+423.001 814.8 420.801 813 Y
+419.601 814.8 410.401 804.8 Y
+408.201 801.4 402.201 799.8 Y
+399.401 798 396.001 799.4 Y
+393.401 799.8 387.801 792.8 Y
+390.601 793 393.001 788.6 395.401 788.4 c
+397.801 788.2 399.601 790.8 401.201 791.4 c
+402.801 792 405.601 786.2 Y
+406.001 783.6 400.401 778.8 Y
+400.001 774.2 398.401 775.8 Y
+395.401 776.4 394.201 772.6 393.201 768 c
+392.201 763.4 388.001 763 y
+386.401 755.6 385.2 758.6 Y
+385 764.2 379 758.4 Y
+377.8 756.4 373.2 758.6 Y
+366.4 760.6 368.8 762.6 Y
+370.6 764.8 381.8 762.6 Y
+384 764.2 376 768.2 Y
+375.4 770 376.4 774.4 Y
+377.6 777.6 384.4 783.2 Y
+393.801 784.4 391.001 786 Y
+384.801 791.2 379 783.6 Y
+376.8 777.4 359.4 762.4 Y
+354.6 759 357.2 765.8 353.2 762.4 c
+349.2 759 328.6 768 y
+317.038 769.193 314.306 753.451 310.777 756.571 c
+316.195 748.051 314.595 753.651 v
+f
+509.401 920 m
+483.801 912 481.001 893.2 V
+478.601 870.4 499.001 852.8 V
+499.401 846.4 501.401 843.2 v
+499.801 838.4 518.601 846 V
+545.801 854.4 l
+552.201 856.8 557.401 865.6 v
+562.601 874.4 577.801 893.2 574.201 918.4 C
+575.401 929.6 569.401 930 V
+561.001 931.6 553.801 924 V
+547.001 920.8 544.601 921.2 V
+509.401 920 L
+f
+564.022 920.99 m
+566.122 929.92 561.282 925.08 V
+554.242 919.36 546.761 919.36 V
+532.241 917.16 527.841 903.96 V
+523.881 877.12 531.801 871.4 V
+536.641 863.92 543.681 870.52 v
+550.722 877.12 566.222 907.35 564.022 920.99 C
+f
+0.2 g
+563.648 920.632 m
+565.738 929.376 560.986 924.624 V
+554.074 919.008 546.729 919.008 V
+532.473 916.848 528.153 903.888 V
+524.265 877.536 532.041 871.92 V
+536.793 864.576 543.705 871.056 v
+550.618 877.536 565.808 907.24 563.648 920.632 C
+f
+0.4 g
+563.274 920.274 m
+565.354 928.832 560.69 924.168 V
+553.906 918.656 546.697 918.656 V
+532.705 916.536 528.465 903.816 V
+524.649 877.952 532.281 872.44 V
+536.945 865.232 543.729 871.592 v
+550.514 877.952 565.394 907.13 563.274 920.274 C
+f
+0.6 g
+562.9 919.916 m
+564.97 928.288 560.394 923.712 V
+553.738 918.304 546.665 918.304 V
+532.937 916.224 528.777 903.744 V
+525.033 878.368 532.521 872.96 V
+537.097 865.888 543.753 872.128 v
+550.41 878.368 564.98 907.02 562.9 919.916 C
+f
+0.8 g
+562.526 919.558 m
+564.586 927.744 560.098 923.256 V
+553.569 917.952 546.633 917.952 V
+533.169 915.912 529.089 903.672 V
+525.417 878.784 532.761 873.48 V
+537.249 866.544 543.777 872.664 v
+550.305 878.784 564.566 906.91 562.526 919.558 C
+f
+1 g
+562.151 919.2 m
+564.201 927.2 559.801 922.8 V
+553.401 917.6 546.601 917.6 V
+533.401 915.6 529.401 903.6 V
+525.801 879.2 533.001 874 V
+537.401 867.2 543.801 873.2 v
+550.201 879.2 564.151 906.8 562.151 919.2 C
+f
+0.1 0.55 0.85 0.3 k
+350.6 716 m
+330.2 735.2 322.2 736 V
+287.8 740 273 722 V
+290.6 742.4 318.2 736.8 V
+296.6 741.2 284.2 738 V
+267.4 738 257.8 724 V
+255 719.2 l
+259 734 277.4 740 V
+300.2 744.8 311 740 V
+289.4 746.8 279.4 744.8 V
+249 747.2 236.2 720.8 V
+240.2 735.2 255 742.4 V
+268.6 751.2 289 748.4 V
+303.4 745.2 308.6 742.8 v
+313.8 740.4 312.6 743.2 304.2 748 C
+298.6 758 284.6 757.6 V
+241.8 754 231.4 742 V
+245 753.2 255.4 756 V
+277.8 764 286.2 763.2 V
+311 762.2 318.6 766.2 V
+307.4 761.2 310.6 758 v
+313.8 754.8 320.6 747.2 320.6 746 c
+320.6 744.8 344.8 722.7 348.4 718.3 C
+350.6 716 l
+f
+0.8 g
+1 J 0.1 w
+489 522 m
+473.5 558.5 461 568 V
+487 552 490.5 534 V
+490.5 524 489 522 V
+f
+536 514.5 m
+509.5 569.5 491 593.5 V
+534.5 556 539.5 529.5 V
+540 524 l
+537 526.5 l
+536.5 517.5 536 514.5 V
+f
+592.5 563 m
+530 622.5 528.5 625 V
+589 559 592 551.5 V
+590 560.5 592.5 563 V
+f
+404 519.5 m
+423.5 571.5 442.5 549 V
+457.5 539 457 536 V
+453 542.5 435 542 V
+416 545 404 519.5 V
+f
+594.5 647 m
+549.5 675.5 542 677 v
+530.193 679.361 591.5 648 596.5 637.5 C
+598.5 640 594.5 647 V
+f
+0 g
+0 J 1 w
+443.801 540.399 m
+464.201 542.399 471.001 549.199 V
+475.401 545.599 l
+493.001 583.999 l
+496.601 578.799 l
+511.001 593.599 510.201 601.599 v
+509.401 609.599 523.001 595.599 y
+522.201 607.199 529.401 600.399 V
+527.001 615.999 535.401 607.999 V
+524.864 638.156 547.401 612.399 v
+553.001 605.999 548.601 612.799 y
+522.601 660.799 544.201 646.399 v
+546.201 669.199 545.001 673.599 v
+543.801 677.999 541.801 700.4 537.001 705.6 c
+532.201 710.8 537.401 712.4 543.001 707.2 C
+531.801 731.2 545.001 719.2 V
+541.401 734.4 537.001 737.2 V
+531.401 754.4 546.601 743.6 V
+542.201 756 539.001 759.2 V
+527.401 786.8 534.601 782 V
+539.001 778.4 l
+532.201 792.4 538.601 788 v
+545.001 783.6 545.001 784 y
+523.801 817.2 544.201 799.6 V
+536.042 813.518 532.601 820.4 V
+513.801 840.8 528.201 834.4 V
+533.001 832.8 l
+524.201 842.8 516.201 844.4 v
+508.201 846 518.601 852.4 525.001 850.4 c
+531.401 848.4 547.001 840.8 y
+559.801 822 563.801 821.6 V
+543.801 829.2 549.801 821.2 V
+564.201 807.2 557.001 807.6 V
+551.001 800.4 555.801 791.6 V
+537.342 809.991 552.201 784.4 v
+559.001 768 l
+534.601 792.8 545.801 770.8 V
+563.001 747.2 565.001 746.8 v
+567.001 746.4 571.401 737.6 y
+567.001 739.6 l
+572.201 730.8 l
+561.001 742.8 567.001 729.6 V
+572.601 715.2 l
+552.201 737.2 565.801 707.6 V
+549.401 712.8 558.201 695.6 V
+556.601 679.599 557.001 674.399 v
+557.401 669.199 558.601 640.799 554.201 632.799 c
+549.801 624.799 560.201 605.599 562.201 601.599 c
+564.201 597.599 567.801 586.799 559.001 595.999 c
+550.201 605.199 554.601 599.599 556.601 590.799 c
+558.601 581.999 564.601 566.399 563.801 560.799 C
+562.601 559.599 559.401 563.199 V
+544.601 585.999 546.201 571.599 V
+545.001 563.599 541.801 554.799 V
+538.601 543.999 538.601 552.799 V
+535.401 569.599 532.601 561.999 v
+529.801 554.399 526.201 548.399 523.401 545.999 c
+520.601 543.599 515.401 566.399 514.201 555.999 C
+502.201 568.399 497.401 551.999 V
+485.801 535.599 l
+485.401 547.999 484.201 541.999 V
+454.201 535.999 443.801 540.399 V
+f
+409.401 897.2 m
+397.801 905.2 393.801 904.8 v
+389.801 904.4 421.401 913.6 462.601 886 C
+467.401 883.2 471.001 883.6 V
+474.201 881.2 471.401 877.6 V
+462.601 868 473.801 856.8 V
+492.201 850 486.601 858.8 V
+497.401 854.8 499.801 850.8 v
+502.201 846.8 501.001 850.8 y
+494.601 858 488.601 863.2 V
+483.401 865.2 480.601 873.6 v
+477.801 882 475.401 892 479.801 895.2 C
+475.801 890.8 476.601 894.8 v
+477.401 898.8 481.001 902.4 482.601 902.8 c
+484.201 903.2 500.601 919 507.401 919.4 C
+498.201 918 495.201 919 v
+492.201 920 465.601 931.4 459.601 932.6 C
+442.801 939.2 454.801 937.2 V
+490.601 933.4 508.801 920.2 V
+501.601 928.6 483.201 935.6 V
+461.001 948.2 425.801 943.2 V
+408.001 940 400.201 938.2 V
+397.601 938.8 397.001 939.2 v
+396.401 939.6 384.6 948.6 357 941.6 C
+340 937 331.4 932.2 V
+316.2 931 312.6 927.8 V
+294 913.2 292 912.4 v
+290 911.6 278.6 904 277.8 903.6 C
+302.4 910.2 304.8 912.6 v
+307.2 915 324.6 917.6 327 916.2 c
+329.4 914.8 337.8 915.4 328.2 914.8 C
+403.801 900 404.601 898 v
+405.401 896 409.401 897.2 y
+f
+0.2 0.55 0.85 0 k
+480.801 906.4 m
+470.601 913.8 468.601 913.8 v
+466.601 913.8 454.201 924 450.001 923.6 c
+445.801 923.2 433.601 933.2 406.201 925 C
+405.601 927 409.201 927.8 V
+415.601 930 416.001 930.6 V
+436.201 934.8 443.401 931.2 V
+452.601 928.6 458.801 922.4 V
+470.001 919.2 473.201 920.2 V
+482.001 918 482.401 916.2 V
+488.201 913.2 486.401 910.6 V
+486.801 909 480.801 906.4 V
+f
+468.33 908.509 m
+469.137 907.877 470.156 907.779 470.761 906.97 c
+470.995 906.656 470.706 906.33 470.391 906.233 c
+469.348 905.916 468.292 906.486 467.15 905.898 c
+466.748 905.691 466.106 905.873 465.553 906.022 c
+463.921 906.463 462.092 906.488 460.401 905.8 C
+458.416 906.929 456.056 906.345 453.975 907.346 c
+453.917 907.373 453.695 907.027 453.621 907.054 c
+450.575 908.199 446.832 907.916 444.401 910.2 C
+441.973 910.612 439.616 911.074 437.188 911.754 c
+435.37 912.263 433.961 913.252 432.341 914.084 c
+430.964 914.792 429.507 915.314 427.973 915.686 c
+426.11 916.138 424.279 916.026 422.386 916.546 c
+422.293 916.571 422.101 916.227 422.019 916.254 c
+421.695 916.362 421.405 916.945 421.234 916.892 c
+419.553 916.37 418.065 917.342 416.401 917 C
+415.223 918.224 413.495 917.979 411.949 918.421 c
+408.985 919.269 405.831 917.999 402.801 919 C
+406.914 920.842 411.601 919.61 415.663 921.679 c
+417.991 922.865 420.653 921.763 423.223 922.523 c
+423.71 922.667 424.401 922.869 424.801 922.2 C
+424.935 922.335 425.117 922.574 425.175 922.546 c
+427.625 921.389 429.94 920.115 432.422 919.049 c
+432.763 918.903 433.295 919.135 433.547 918.933 c
+435.067 917.717 437.01 917.82 438.401 916.6 C
+440.099 917.102 441.892 916.722 443.621 917.346 c
+443.698 917.373 443.932 917.032 443.965 917.054 c
+445.095 917.802 446.25 917.531 447.142 917.227 c
+447.48 917.112 448.143 916.865 448.448 916.791 c
+449.574 916.515 450.43 916.035 451.609 915.852 c
+451.723 915.834 451.908 916.174 451.98 916.146 c
+453.103 915.708 454.145 915.764 454.801 914.6 C
+454.936 914.735 455.101 914.973 455.183 914.946 c
+456.21 914.608 456.859 913.853 457.96 913.612 c
+458.445 913.506 459.057 912.88 459.633 912.704 c
+462.025 911.973 463.868 910.444 466.062 909.549 c
+466.821 909.239 467.697 909.005 468.33 908.509 c
+f
+391.696 922.739 m
+389.178 924.464 386.81 925.57 384.368 927.356 c
+384.187 927.489 383.827 927.319 383.625 927.441 c
+382.618 928.05 381.73 928.631 380.748 929.327 c
+380.209 929.709 379.388 929.698 378.88 929.956 c
+376.336 931.248 373.707 931.806 371.2 933 C
+371.882 933.638 373.004 933.394 373.6 934.2 C
+373.795 933.92 374.033 933.636 374.386 933.827 c
+376.064 934.731 377.914 934.884 379.59 934.794 c
+381.294 934.702 383.014 934.397 384.789 934.125 c
+385.096 934.078 385.295 933.555 385.618 933.458 c
+387.846 932.795 390.235 933.32 392.354 932.482 c
+393.945 931.853 395.515 931.03 396.754 929.755 c
+397.006 929.495 396.681 929.194 396.401 929 C
+396.789 929.109 397.062 928.903 397.173 928.59 c
+397.257 928.351 397.257 928.049 397.173 927.81 c
+397.061 927.498 396.782 927.397 396.408 927.346 c
+395.001 927.156 396.773 928.536 396.073 928.088 c
+394.8 927.274 395.546 925.868 394.801 924.6 C
+394.521 924.794 394.291 925.012 394.401 925.4 C
+394.635 924.878 394.033 924.588 393.865 924.272 c
+393.48 923.547 392.581 922.132 391.696 922.739 c
+f
+359.198 915.391 m
+356.044 916.185 352.994 916.07 349.978 917.346 c
+349.911 917.374 349.688 917.027 349.624 917.054 c
+348.258 917.648 347.34 918.614 346.264 919.66 c
+345.351 920.548 343.693 920.161 342.419 920.648 c
+342.095 920.772 341.892 921.284 341.591 921.323 c
+340.372 921.48 339.445 922.429 338.4 923 C
+340.736 923.795 343.147 923.764 345.609 924.148 c
+345.722 924.166 345.867 923.845 346 923.845 c
+346.136 923.845 346.266 924.066 346.4 924.2 C
+346.595 923.92 346.897 923.594 347.154 923.848 c
+347.702 924.388 348.258 924.198 348.798 924.158 c
+348.942 924.148 349.067 923.845 349.2 923.845 c
+349.336 923.845 349.467 924.156 349.6 924.156 c
+349.736 924.155 349.867 923.845 350 923.845 c
+350.136 923.845 350.266 924.066 350.4 924.2 C
+351.092 923.418 351.977 923.972 352.799 923.793 c
+353.837 923.566 354.104 922.418 355.178 922.12 c
+359.893 920.816 364.03 918.671 368.393 916.584 c
+368.7 916.437 368.91 916.189 368.8 915.8 C
+369.067 915.8 369.38 915.888 369.57 915.756 c
+370.628 915.024 371.669 914.476 372.366 913.378 c
+372.582 913.039 372.253 912.632 372.02 912.684 c
+367.591 913.679 363.585 914.287 359.198 915.391 c
+f
+345.338 871.179 m
+343.746 872.398 343.162 874.429 342.034 876.221 c
+341.82 876.561 342.094 876.875 342.411 876.964 c
+342.971 877.123 343.514 876.645 343.923 876.443 c
+345.668 875.581 347.203 874.339 349.2 874.2 C
+351.19 871.966 355.45 871.581 355.457 868.2 c
+355.458 867.341 354.03 868.259 353.6 867.4 C
+351.149 868.403 348.76 868.3 346.38 869.767 c
+345.763 870.148 346.093 870.601 345.338 871.179 c
+f
+317.8 923.756 m
+317.935 923.755 324.966 923.522 324.949 923.408 c
+324.904 923.099 317.174 922.05 316.81 922.22 c
+316.646 922.296 309.134 919.866 309 920 C
+309.268 920.135 317.534 923.756 317.8 923.756 c
+f
+0 g
+333.2 914 m
+318.4 912.2 314 911 v
+309.6 909.8 291 902.2 288 900.2 C
+274.6 894.8 257.6 874.8 V
+265.2 878.2 267.4 881 V
+281 893.6 280.8 891 V
+293 899.6 292.4 897.4 V
+316.8 908.6 314.8 905.4 V
+336.4 910 335.4 908 V
+354.2 903.6 351.4 903.4 V
+345.6 902.2 352 898.6 V
+348.6 894.2 343.2 898.2 v
+337.8 902.2 340.8 900 335.8 899 C
+333.2 898.2 328.6 902.2 V
+323 906.8 314.2 903.2 V
+283.6 890.6 281.6 890 V
+278 887.2 275.6 883.6 V
+269.8 879.2 266.8 877.8 V
+254 866.2 252.8 864.8 V
+249.4 859.6 248.6 859.2 V
+255 863 257 865 V
+271 875 276.4 875.8 V
+280.8 878.8 281.6 880.2 V
+296 889.4 300.2 889.4 V
+309.4 884.2 311.8 891.2 V
+317.6 893 323.2 891.8 V
+326.4 894.4 325.6 896.6 V
+327.2 898.4 328.2 894.6 V
+331.6 891 336.4 893 V
+340.4 893.2 338.4 890.8 V
+334 887 322.2 886.8 V
+309.8 886.2 293.4 878.6 V
+263.6 868.2 254.4 857.8 V
+248 849 242.6 847.8 V
+236.8 847 230.8 839.6 V
+240.6 845.4 249.6 845.4 V
+253.6 847.8 249.8 844.2 V
+246.2 836.6 247.8 831.2 V
+247.2 826 246.4 824.4 V
+238.6 811.6 238.6 809.2 v
+238.6 806.8 239.8 797 240.2 796.4 c
+240.6 795.8 239.2 798 243 795.6 c
+246.8 793.2 249.6 791.6 250.4 788.8 c
+251.2 786 248.4 794.2 248.2 796 c
+248 797.8 243.8 805 244.6 807.4 C
+245.6 806.4 246.4 805 V
+245.8 805.6 246.4 809.2 V
+247.2 814.4 248.6 817.6 v
+250 820.8 252 824.6 252.4 825.4 c
+252.8 826.2 252.8 832 254.2 829.4 C
+257.6 826.8 l
+254.8 829.4 257 831.6 V
+256 837.2 257.8 839.8 V
+264.8 848.2 266.4 849.2 v
+268 850.2 266.6 849.8 y
+272.6 854 266.8 852.4 V
+262.8 850.8 259.8 850.8 V
+252.2 848.8 256.2 853 v
+260.2 857.2 270.2 862.6 274 862.4 C
+274.8 860.8 l
+286 863.2 l
+284.8 862.4 l
+284.6 862.6 288.8 863 v
+293 863.4 298.8 862 300.2 863.8 c
+301.6 865.6 305 866.6 304.6 865.2 c
+304.2 863.8 304 861.8 y
+309 867.6 308.4 865.4 v
+307.8 863.2 299.6 858 298.2 851.8 C
+308.6 860 l
+312.2 863 l
+315.8 860.8 316 862.4 v
+316.2 864 320.8 869.8 322 869.6 c
+323.2 869.4 325.2 872.2 325 869.6 c
+324.8 867 332.4 861.6 y
+335.6 863.4 337 862 v
+338.4 860.6 342.6 881.8 y
+367.6 892.4 l
+411.201 895.8 l
+394.201 902.6 l
+333.2 914 l
+f
+0.2 0.55 0.85 0.5 K
+1 J 2 w
+351.4 715 m
+336.4 731.8 328 734.4 V
+314.6 741.2 290 733.4 v
+S
+324.8 735.8 m
+299.6 743.8 284.2 739.6 V
+265.8 737.6 257.4 723.8 v
+S
+321.2 737 m
+304.2 744.2 289.4 746.4 V
+272.8 749 256.2 741.8 V
+244 735.8 238.6 725.6 v
+S
+322.2 736.6 m
+306.8 747.6 305.8 749 V
+298.8 760 285.8 760.4 V
+264.4 759.6 247.2 751.6 v
+S
+0 G
+0 J 1 w
+320.895 745.593 m
+322.437 744.13 349.4 715.2 Y
+384.6 678.599 356.6 712.8 Y
+349 717.6 339.8 736.4 Y
+338.6 739.2 353.8 729.2 Y
+357.8 728.4 371.4 709.2 Y
+364.6 711.6 369.4 704.4 Y
+372.2 702.4 392.601 686.799 Y
+396.201 682.799 400.201 681.199 Y
+414.201 686.399 407.801 673.199 Y
+410.201 666.399 415.801 677.999 Y
+427.001 694.8 410.601 692.399 Y
+380.6 689.599 373.8 705.6 Y
+371.4 708 380.2 705.6 Y
+388.601 703.6 373 718 Y
+375.4 718 384.6 711.2 Y
+395.001 702 397.001 704 Y
+415.001 712.8 425.401 705.2 Y
+427.401 703.6 421.801 696.8 423.401 691.599 c
+425.001 686.399 429.801 673.999 Y
+427.401 672.399 427.801 661.599 Y
+444.601 638.399 435.001 640.399 Y
+419.401 640.799 434.201 633.199 Y
+437.401 631.199 446.201 623.999 Y
+443.401 625.199 441.801 619.999 Y
+446.601 615.999 443.801 611.199 Y
+437.801 609.999 436.601 605.999 Y
+443.401 597.999 433.401 597.599 Y
+437.001 593.199 432.201 581.199 Y
+427.401 581.199 421.001 575.599 Y
+423.401 570.799 413.001 565.199 Y
+404.601 563.599 407.401 556.799 Y
+399.401 550.799 397.001 534.799 Y
+396.201 524.399 393.801 521.199 399.001 523.199 c
+404.201 525.199 403.401 537.599 Y
+398.601 553.199 441.401 569.199 Y
+445.401 570.799 446.201 575.999 Y
+448.201 575.599 457.001 567.999 Y
+464.601 556.799 465.001 565.999 Y
+466.201 569.599 464.601 575.599 Y
+470.601 597.199 456.601 603.599 Y
+446.601 637.199 460.601 628.799 Y
+463.401 623.199 474.201 617.999 y
+477.801 620.399 L
+476.201 625.199 484.601 631.199 Y
+487.401 624.799 493.401 632.799 Y
+497.001 657.199 509.401 642.799 Y
+513.401 641.599 514.601 648.399 Y
+518.201 658.799 514.601 672.399 Y
+518.201 672.799 527.801 666.799 Y
+530.601 670.399 521.401 687.199 525.401 684.799 c
+529.401 682.399 533.801 680.799 Y
+534.601 682.799 524.601 695.199 Y
+520.201 698 515.001 718.4 Y
+522.201 714.8 512.201 730 Y
+512.201 733.2 518.201 744.4 Y
+517.401 751.2 518.201 750.8 Y
+521.001 749.6 529.001 748 522.201 754.4 c
+515.401 760.8 523.001 765.6 Y
+527.401 768.4 513.801 768 Y
+508.601 772.4 509.001 776.4 Y
+517.001 774.4 502.601 788.8 500.201 792.4 c
+497.801 796 507.401 801.2 Y
+520.601 804.8 509.001 808 Y
+489.401 807.6 500.201 818.4 Y
+506.201 818 504.601 820.4 Y
+499.401 821.6 489.801 828 Y
+485.801 831.6 489.401 830.8 Y
+506.201 829.6 477.401 840.8 Y
+485.401 840.8 467.401 851.2 Y
+465.401 852.8 462.201 860.4 Y
+456.201 865.6 451.401 872.4 Y
+451.001 876.8 446.201 881.6 Y
+434.601 895.2 429.001 894.8 Y
+414.201 898.4 409.001 897.6 Y
+356.2 893.2 l
+329.8 880.4 337.6 859.4 Y
+344 851 353.2 854.8 Y
+357.8 861 369.4 858.8 Y
+389.801 855.6 387.201 859.2 Y
+384.801 863.8 368.6 870 368.4 870.6 c
+368.2 871.2 359.4 874.6 Y
+356.4 875.8 352 885 Y
+348.8 888.4 364.6 882.6 Y
+363.4 881.6 370.8 877.6 Y
+388.201 878.6 398.801 867.8 Y
+409.601 851.2 409.801 859.4 Y
+412.601 868.8 400.801 890 Y
+401.201 892 409.401 885.4 Y
+410.801 887.4 411.601 881.6 Y
+411.801 879.2 415.601 871.2 Y
+418.401 858.2 422.001 865.6 Y
+426.601 856.2 L
+428.001 853.6 422.001 846 Y
+421.801 843.2 422.601 843.4 417.001 835.8 c
+411.401 828.2 414.801 823.8 Y
+413.401 817.2 422.201 817.6 Y
+424.801 815.4 428.201 815.4 Y
+430.001 813.4 432.401 814 Y
+434.001 817.8 440.201 815.8 Y
+441.601 818.2 449.801 818.6 Y
+450.801 821.2 451.201 822.8 454.601 823.4 c
+458.001 824 433.401 867 Y
+439.801 867.8 431.601 880.2 Y
+429.401 886.8 440.801 872.2 443.001 870.8 c
+445.201 869.4 446.201 867.2 444.601 867.4 c
+443.001 867.6 441.201 865.4 442.601 865.2 c
+444.001 865 457.001 850 460.401 839.8 c
+463.801 829.6 469.801 825.6 476.001 819.6 c
+482.201 813.6 481.401 789.4 Y
+481.001 780.6 487.001 770 Y
+489.001 766.2 484.801 748 Y
+482.801 745.8 484.201 745 Y
+485.201 743.8 492.001 730.6 Y
+490.201 730.8 493.801 727.2 Y
+499.001 721.2 492.601 724.2 Y
+486.601 725.8 493.601 716 Y
+494.801 714.2 485.801 718.8 Y
+476.601 719.4 488.201 712.2 Y
+496.801 705 485.401 709.4 Y
+480.801 711.2 484.001 704.4 Y
+487.201 702.8 504.401 695.8 Y
+504.801 691.999 501.801 686.999 Y
+502.201 682.999 500.001 679.599 Y
+498.801 671.399 498.201 670.599 Y
+494.001 670.399 486.601 656.599 Y
+484.801 653.999 474.601 641.999 Y
+472.601 634.999 454.601 642.199 Y
+448.001 638.799 450.001 642.199 Y
+449.601 644.399 454.401 650.399 Y
+461.401 652.999 458.801 663.799 Y
+462.801 665.199 451.601 667.999 451.801 669.199 c
+452.001 670.399 457.801 671.799 Y
+465.801 673.799 461.401 676.199 Y
+460.801 680.199 463.801 685.799 Y
+475.401 686.599 463.801 702.8 Y
+453.001 710.4 452.001 716.2 Y
+464.601 724.4 456.401 736.8 456.601 740.4 c
+456.801 744 458.001 765.6 Y
+456.001 771.8 453.001 785.4 Y
+455.201 790.6 462.601 803.2 Y
+465.401 807.4 474.201 812.2 472.001 815.2 c
+469.801 818.2 462.001 816.4 Y
+454.201 817.8 454.801 812.6 Y
+453.201 811.6 452.401 806.6 Y
+451.68 798.667 442.801 792.4 Y
+431.601 786.2 440.801 782.2 Y
+446.801 775.6 437.001 775.4 Y
+426.001 777.2 434.201 767 Y
+445.001 754.2 442.001 751.4 Y
+431.801 750.4 444.401 741.2 y
+443.601 743.2 443.801 741.4 v
+444.001 739.6 447.001 735.4 447.801 733.4 c
+448.601 731.4 444.601 731.2 Y
+445.201 721.6 429.801 725.8 y
+429.801 725.8 428.201 725.6 v
+426.601 725.4 415.401 726.2 409.601 728.4 c
+403.801 730.6 397.001 730.6 y
+393.001 728.8 385.4 729 v
+377.8 729.2 369.8 726.4 Y
+365.4 726.8 374 731.2 374.2 731 c
+374.4 730.8 380 736.4 372 735.8 c
+350.203 734.165 339.4 744.4 Y
+337.4 745.8 334.8 748.6 Y
+324.8 750.6 336.2 736.2 Y
+337.4 734.8 336 733.8 Y
+335.2 735.4 327.4 740.8 Y
+324.589 741.773 323.226 743.107 320.895 745.593 C
+f
+0.2 0.55 0.85 0.5 k
+1 J 2 w
+297 757.2 m
+308.6 751.6 311.2 748.8 v
+313.8 746 327.8 734.6 y
+322.4 736.6 319.8 738.4 v
+317.2 740.2 306.4 748.4 y
+302.6 754.4 297 757.2 v
+f
+0.4 0.2 0.8 0 k
+0 J 1 w
+238.991 788.397 m
+239.328 788.545 238.804 791.257 238.6 791.8 c
+237.578 794.526 228.6 796 y
+228.373 794.635 228.318 793.039 228.424 791.401 c
+233.292 785.882 238.991 788.397 v
+f
+0.4 0.2 0.8 0.2 k
+238.991 788.597 m
+238.542 788.439 238.976 791.331 238.8 791.8 c
+237.778 794.526 228.6 796.1 y
+228.373 794.735 228.318 793.139 228.424 791.501 c
+232.692 786.382 238.991 788.597 v
+f
+0 g
+234.6 788.454 m
+233.975 788.454 233.469 789.594 233.469 791 c
+233.469 792.405 233.975 793.545 234.6 793.545 c
+235.225 793.545 235.732 792.405 235.732 791 c
+235.732 789.594 235.225 788.454 234.6 788.454 c
+f
+234.6 791 m
+F
+189 690.399 m
+183.4 680.399 208.2 686.399 V
+222.2 687.599 224.6 689.999 V
+225.8 689.199 234.166 686.266 237 685.599 c
+243.8 683.999 252.2 694 y
+256.8 704.5 259.6 704.5 v
+262.4 704.5 259.2 702.9 y
+252.6 692.799 253 691.199 V
+247.8 671.199 231.8 670.399 V
+215.65 669.449 217 663.599 V
+225.8 665.999 228.2 663.599 V
+239 663.999 231 657.599 V
+224.2 645.999 l
+224.34 642.081 214.2 645.599 v
+204.4 648.999 194.1 661.899 y
+178.15 676.449 189 690.399 V
+f
+0.1 0.4 0.4 0 k
+187.8 686.399 m
+185.8 676.799 222.6 687.199 V
+227 687.199 229.4 686.399 v
+231.8 685.599 243.8 682.799 245.8 683.999 C
+238.6 670.399 227 671.999 V
+213.8 670.399 214.2 665.599 V
+218.2 658.399 223 655.999 V
+225.8 653.599 225.4 650.399 v
+225 647.199 222.2 645.599 220.2 644.799 c
+218.2 643.999 215 647.199 213.4 647.199 c
+211.8 647.199 203.4 653.599 199 658.399 c
+194.6 663.199 186.2 675.199 186.6 677.999 c
+187 680.799 187.8 686.399 Y
+f
+0.1 0.4 0.4 0.2 k
+191 668.949 m
+193.6 664.999 196.8 660.799 199 658.399 c
+203.4 653.599 211.8 647.199 213.4 647.199 c
+215 647.199 218.2 643.999 220.2 644.799 c
+222.2 645.599 225 647.199 225.4 650.399 c
+225.8 653.599 223 655.999 Y
+219.934 657.532 217.194 661.024 215.615 663.347 C
+215.8 660.799 210.6 661.599 v
+205.4 662.399 200.2 665.199 198.6 668.399 c
+197 671.599 194.6 673.999 196.2 670.399 c
+197.8 666.799 200.2 663.199 201.8 662.799 c
+203.4 662.399 203 661.199 200.6 661.599 c
+198.2 661.999 195.4 662.399 191 667.599 c
+F
+0.1 0.55 0.85 0.3 k
+188.4 689.999 m
+190.2 703.6 191.4 707.6 V
+190.6 714.4 193 718.6 v
+195.4 722.8 197.4 729 200.4 734.4 c
+203.4 739.8 203.6 743.8 207.6 745.4 c
+211.6 747 217.6 755.6 220.4 756.6 c
+223.2 757.6 223 756.8 y
+229.8 771.6 243.4 767.6 V
+227.2 770.4 243 779.8 V
+238.2 778.7 241.5 785.7 v
+243.701 790.368 243.2 783.6 232.2 771.8 C
+227.2 763.2 222 760.2 v
+216.8 757.2 204.8 750.2 203.6 746.4 c
+202.4 742.6 199.2 736.8 197.2 735.2 c
+195.2 733.6 192.4 729.4 192 726 C
+190.8 722 189.4 720.8 v
+188 719.6 187.8 716.4 187.8 714.4 c
+187.8 712.4 185.8 709.6 186 707.2 C
+186.8 688.199 186.4 686.199 V
+188.4 689.999 L
+f
+1 g
+179.8 685.399 m
+177.8 686.799 173.4 680.799 V
+180.7 647.799 180.7 646.399 V
+181.8 648.499 180.5 655.699 v
+179.2 662.899 178.3 675.599 y
+179.8 685.399 l
+f
+0.1 0.55 0.85 0.3 k
+201.4 746 m
+183.8 742.8 184.2 713.6 V
+183.4 688.799 l
+182.2 714.4 181 716 v
+179.8 717.6 183.8 728.8 180.6 722.8 C
+166.6 708.8 174.6 687.599 V
+176.1 684.299 173.1 688.899 V
+168.5 701.5 169.6 707.9 V
+169.8 710.1 171.7 712.9 V
+180.3 724.6 183 726.9 V
+184.8 741.3 200.2 746.5 V
+205.9 748.8 201.4 746 V
+f
+0 g
+340.8 812.2 m
+341.46 812.554 341.451 813.524 342.031 813.697 c
+343.18 814.041 343.344 815.108 343.862 815.892 c
+344.735 817.211 344.928 818.744 345.51 820.235 c
+345.782 820.935 345.809 821.89 345.496 822.55 c
+344.322 825.031 343.62 827.48 342.178 829.906 c
+341.91 830.356 341.648 831.15 341.447 831.748 c
+340.984 833.132 339.727 834.123 338.867 835.443 c
+338.579 835.884 339.104 836.809 338.388 836.893 c
+337.491 836.998 336.042 837.578 335.809 836.552 c
+335.221 833.965 336.232 831.442 337.2 829 C
+336.418 828.308 336.752 827.387 336.904 826.62 c
+337.614 823.014 336.416 819.662 335.655 816.188 c
+335.632 816.084 335.974 815.886 335.946 815.824 c
+334.724 813.138 333.272 810.693 331.453 808.312 c
+330.695 807.32 329.823 806.404 329.326 805.341 c
+328.958 804.554 328.55 803.588 328.8 802.6 C
+325.365 799.82 323.115 795.975 320.504 792.129 c
+320.042 791.449 320.333 790.24 320.884 789.971 c
+321.697 789.573 322.653 790.597 323.123 791.443 c
+323.512 792.141 323.865 792.791 324.356 793.434 c
+324.489 793.609 324.31 794.028 324.445 794.149 c
+327.078 796.496 328.747 799.432 331.2 801.8 C
+333.15 802.129 334.687 803.127 336.435 804.14 c
+336.743 804.319 337.267 804.07 337.557 804.265 c
+339.31 805.442 339.308 807.478 339.414 809.388 c
+339.464 810.272 339.66 811.589 340.8 812.2 c
+f
+331.959 816.666 m
+332.083 816.743 331.928 817.166 332.037 817.382 c
+332.199 817.706 332.602 817.894 332.764 818.218 c
+332.873 818.434 332.71 818.814 332.846 818.956 c
+335.179 821.403 335.436 824.427 334.4 827.4 C
+335.424 828.02 335.485 829.282 335.06 830.129 c
+334.207 831.829 334.014 833.755 333.039 835.298 c
+332.237 836.567 330.659 837.811 329.288 836.508 c
+328.867 836.108 328.546 835.321 328.824 834.609 c
+328.888 834.446 329.173 834.3 329.146 834.218 c
+329.039 833.894 328.493 833.67 328.487 833.398 c
+328.457 831.902 327.503 830.391 328.133 829.062 c
+328.905 827.433 329.724 825.576 330.4 823.8 C
+329.166 821.684 330.199 819.235 328.446 817.358 c
+328.31 817.212 328.319 816.826 328.441 816.624 c
+328.733 816.138 329.139 815.732 329.625 815.44 c
+329.827 815.319 330.175 815.317 330.375 815.441 c
+330.953 815.803 331.351 816.29 331.959 816.666 c
+f
+394.771 826.977 m
+396.16 825.185 396.45 822.39 394.401 821 C
+394.951 817.691 398.302 819.67 400.401 820.2 C
+400.292 820.588 400.519 820.932 400.802 820.937 c
+401.859 820.952 402.539 821.984 403.601 821.8 C
+404.035 823.357 405.673 824.059 406.317 825.439 c
+408.043 829.134 407.452 833.407 404.868 836.653 c
+404.666 836.907 404.883 837.424 404.759 837.786 c
+404.003 839.997 401.935 840.312 400.001 841 C
+398.824 844.875 398.163 848.906 396.401 852.6 C
+394.787 852.85 394.089 854.589 392.752 855.309 c
+391.419 856.028 390.851 854.449 390.892 853.403 c
+390.899 853.198 391.351 852.974 391.181 852.609 c
+391.105 852.445 390.845 852.334 390.845 852.2 c
+390.846 852.065 391.067 851.934 391.201 851.8 C
+390.283 850.98 388.86 850.503 388.565 849.358 c
+387.611 845.648 390.184 842.523 391.852 839.322 c
+392.443 838.187 391.707 836.916 390.947 835.708 c
+390.509 835.013 390.617 833.886 390.893 833.03 c
+391.645 830.699 393.236 828.96 394.771 826.977 c
+f
+357.611 808.591 m
+356.124 806.74 352.712 804.171 355.629 802.243 c
+355.823 802.114 356.193 802.11 356.366 802.244 c
+358.387 803.809 360.39 804.712 362.826 805.294 c
+362.95 805.323 363.224 804.856 363.593 805.017 c
+365.206 805.72 367.216 805.662 368.4 807 C
+372.167 806.776 375.732 807.892 379.123 809.2 c
+380.284 809.648 381.554 810.207 382.755 810.709 c
+384.131 811.285 385.335 812.213 386.447 813.354 c
+386.58 813.49 386.934 813.4 387.201 813.4 C
+387.161 814.263 388.123 814.39 388.37 815.012 c
+388.462 815.244 388.312 815.64 388.445 815.742 c
+390.583 817.372 391.503 819.39 390.334 821.767 c
+390.049 822.345 389.8 822.963 389.234 823.439 c
+388.149 824.35 387.047 823.496 386 823.8 C
+385.841 823.172 385.112 823.344 384.726 823.146 c
+383.867 822.707 382.534 823.292 381.675 822.854 c
+380.313 822.159 379.072 821.99 377.65 821.613 c
+377.338 821.531 376.56 821.627 376.4 821 C
+376.266 821.134 376.118 821.368 376.012 821.346 c
+374.104 820.95 372.844 820.736 371.543 819.044 c
+371.44 818.911 370.998 819.09 370.839 818.955 c
+369.882 818.147 369.477 816.913 368.376 816.241 c
+368.175 816.118 367.823 816.286 367.629 816.157 c
+366.983 815.726 366.616 815.085 365.974 814.638 c
+365.645 814.409 365.245 814.734 365.277 814.99 c
+365.522 816.937 366.175 818.724 365.6 820.6 C
+367.677 823.12 370.194 825.069 372 827.8 C
+372.015 829.966 372.707 832.112 372.594 834.189 c
+372.584 834.382 372.296 835.115 372.17 835.462 c
+371.858 836.316 372.764 837.382 371.92 838.106 c
+370.516 839.309 369.224 838.433 368.4 837 C
+366.562 836.61 364.496 835.917 362.918 837.151 c
+361.911 837.938 361.333 838.844 360.534 839.9 c
+359.549 841.202 359.884 842.638 359.954 844.202 c
+359.96 844.33 359.645 844.466 359.645 844.6 c
+359.646 844.735 359.866 844.866 360 845 C
+359.294 845.626 359.019 846.684 358 847 C
+358.305 848.092 357.629 848.976 356.758 849.278 c
+354.763 849.969 353.086 848.057 351.194 847.984 c
+350.68 847.965 350.213 849.003 349.564 849.328 c
+349.132 849.544 348.428 849.577 348.066 849.311 c
+347.378 848.807 346.789 848.693 346.031 848.488 c
+344.414 848.052 343.136 846.958 341.656 846.103 c
+340.171 845.246 339.216 843.809 338.136 842.489 c
+337.195 841.337 337.059 838.923 338.479 838.423 c
+340.322 837.773 341.626 840.476 343.592 840.15 c
+343.904 840.099 344.11 839.788 344 839.4 C
+344.389 839.291 344.607 839.52 344.8 839.8 C
+345.658 838.781 346.822 838.444 347.76 837.571 c
+348.73 836.667 350.476 837.085 351.491 836.088 c
+353.02 834.586 352.461 831.905 354.4 830.6 C
+353.814 829.287 353.207 828.01 352.872 826.583 c
+352.59 825.377 353.584 824.18 354.795 824.271 c
+356.053 824.365 356.315 825.124 356.8 826.2 C
+357.067 825.933 357.536 825.636 357.495 825.42 c
+357.038 823.033 356.011 821.04 355.553 818.609 c
+355.494 818.292 355.189 818.09 354.8 818.2 C
+354.332 814.051 350.28 811.657 347.735 808.492 c
+347.332 807.99 347.328 806.741 347.737 806.338 c
+349.14 804.951 351.1 806.497 352.8 807 C
+353.013 808.206 353.872 809.148 355.204 809.092 c
+355.46 809.082 355.695 809.624 356.019 809.754 c
+356.367 809.892 356.869 809.668 357.155 809.866 c
+358.884 811.061 360.292 812.167 362.03 813.356 c
+362.222 813.487 362.566 813.328 362.782 813.436 c
+363.107 813.598 363.294 813.985 363.617 814.17 c
+363.965 814.37 364.207 814.08 364.4 813.8 C
+363.754 813.451 363.75 812.494 363.168 812.292 c
+362.393 812.024 361.832 811.511 361.158 811.064 c
+360.866 810.871 360.207 811.119 360.103 810.94 c
+359.505 809.912 358.321 809.474 357.611 808.591 c
+f
+302.2 858 m
+292.962 860.872 281.8 835.2 V
+279.4 830 277 828 v
+274.6 826 263.4 822.4 261.4 818.4 C
+251 802.4 L
+265.8 818.4 269 820.8 V
+277 829.2 273.8 822.4 V
+259.8 811.6 261 802.4 V
+255.4 788 254.6 786 V
+270.6 818 273 819.2 v
+275.4 820.4 276.6 820.4 275.4 816.8 c
+274.2 813.2 273.8 796.8 271 794.8 C
+279 815.2 278.2 818.4 V
+281.4 822 283.8 816.8 V
+282.6 800.8 l
+287 788.8 l
+284.6 800 286.2 815.6 V
+284.2 826 288.2 820.4 v
+292.2 814.8 301.8 808.8 301.8 804 C
+296.6 821.6 287.4 826.4 V
+283.4 820.4 l
+282.2 822.4 l
+278.6 823.2 283 830 v
+287.4 836.8 287 837.6 y
+293.4 830.4 295 830.4 V
+308.2 838 309.4 813.6 V
+316.2 828 307 834.8 V
+292.2 836.8 293.4 842 V
+300.6 854.4 L
+304.2 859.6 302.6 856.8 y
+F
+282.2 841.6 m
+269.4 841.6 266.2 836.4 V
+259 826.8 l
+276.2 836.8 280.2 838 v
+284.2 839.2 282.2 841.6 Y
+f
+242.2 835.2 m
+240.2 834 239.8 831.2 v
+239.4 828.4 237 828 237.8 825.2 c
+238.6 822.4 240.6 820 240.6 824 c
+240.6 828 242.2 830 243 831.2 c
+243.8 832.4 245.4 836.8 242.2 835.2 c
+f
+233.4 774 m
+225 778 221.8 781.6 v
+218.6 785.2 219.052 780.034 214.2 780.4 c
+208.353 780.841 209.4 796.8 y
+205.4 789.2 l
+204.2 774.8 212.2 777.2 v
+216.107 778.372 217.4 776.8 215.8 776 c
+214.2 775.2 221.4 774.8 218.6 773.2 c
+215.8 771.6 230.2 776.8 227.8 766.4 C
+233.4 774 L
+f
+220.8 759.6 m
+205.4 755.2 201.8 764.8 V
+197 762.4 199.2 759.4 v
+201.4 756.4 202.6 756 y
+208 754.8 207.4 754 v
+206.8 753.2 204.4 749.8 y
+214.6 755.8 220.8 759.6 v
+f
+1 g
+449.201 681.399 m
+448.774 679.265 447.103 678.464 445.201 677.799 C
+443.284 678.757 440.686 681.863 438.801 679.799 C
+438.327 680.279 437.548 680.339 437.204 681.001 c
+436.739 681.899 437.011 682.945 436.669 683.743 c
+436.124 685.015 435.415 686.381 435.601 687.799 C
+437.407 688.511 438.002 690.417 437.528 692.18 c
+437.459 692.437 437.03 692.634 437.23 692.983 c
+437.416 693.306 437.734 693.533 438.001 693.8 C
+437.866 693.665 437.721 693.432 437.61 693.452 c
+437 693.558 437.124 694.195 437.254 694.582 c
+437.839 696.328 439.853 696.592 441.201 695.4 C
+441.457 695.965 441.966 695.771 442.401 695.8 C
+442.351 696.379 442.759 696.906 442.957 697.326 c
+443.475 698.424 445.104 697.318 445.901 697.93 c
+446.977 698.755 448.04 699.454 449.118 698.851 c
+450.927 697.838 452.636 696.626 453.835 694.885 c
+454.41 694.051 454.65 692.77 454.592 691.812 c
+454.554 691.165 453.173 691.517 452.83 690.588 c
+452.185 688.84 454.016 688.321 454.772 686.983 c
+454.97 686.634 454.706 686.33 454.391 686.232 c
+453.98 686.104 453.196 686.293 453.334 685.84 c
+454.306 682.647 451.55 681.969 449.201 681.399 C
+f
+439.6 661.799 m
+439.593 663.537 437.992 665.293 439.201 666.999 C
+439.336 666.865 439.467 666.644 439.601 666.644 c
+439.736 666.644 439.867 666.865 440.001 666.999 C
+441.496 664.783 445.148 663.855 445.006 661.009 c
+444.984 660.562 443.897 659.644 444.801 658.999 C
+442.988 657.651 442.933 655.281 442.001 653.399 C
+440.763 653.685 439.551 654.048 438.401 654.599 C
+438.753 656.085 438.636 657.769 439.456 659.089 c
+439.89 659.787 439.603 660.866 439.6 661.799 c
+f
+0.8 g
+273.4 670.799 m
+256.542 660.663 270.6 675.999 v
+279.4 685.599 289.4 691.199 y
+299.8 695.6 303.4 696.8 v
+307 698 322.2 703.2 325.4 703.6 c
+328.6 704 338.2 708 345 704 c
+351.8 700 359.8 695.6 y
+343.4 704 339.8 701.6 v
+336.2 699.2 329 699.6 323 696.4 C
+308.2 691.999 305 689.999 v
+301.8 687.999 291.4 676.399 289.8 677.199 c
+288.2 677.999 290.2 678.399 291.4 681.199 c
+292.6 683.999 290.6 685.599 282.6 679.199 c
+274.6 672.799 273.4 670.799 Y
+f
+0 g
+280.805 676.766 m
+282.215 689.806 290.693 688.141 V
+298.919 692.311 301.641 694.279 V
+309.78 695.981 311.09 696.598 v
+329.569 705.298 344.288 700.779 344.835 701.899 c
+345.381 703.018 365.006 695.901 368.615 691.815 c
+369.006 691.372 358.384 697.412 348.686 699.303 c
+340.413 700.917 318.811 699.056 307.905 693.52 c
+304.932 692.011 295.987 686.227 293.456 686.338 c
+290.925 686.45 280.805 676.766 Y
+f
+0.8 g
+277 651.199 m
+261.8 653.599 278.6 655.199 V
+296.6 657.199 300.6 662.399 V
+314.2 671.599 317 671.999 v
+319.8 672.399 349.8 679.599 350.2 681.999 c
+350.6 684.399 356.2 684.399 357.8 683.599 c
+359.4 682.799 358.6 681.599 355.8 680.799 c
+353 679.999 321.8 663.599 315.4 662.399 c
+309 661.199 297.4 653.599 292.6 652.399 c
+287.8 651.199 277 651.199 Y
+f
+0 g
+296.52 658.597 m
+287.938 659.426 296.539 660.245 V
+305.355 663.669 307.403 666.332 V
+314.367 671.043 315.8 671.247 v
+317.234 671.452 331.194 675.139 331.399 676.367 c
+331.604 677.596 365.67 690.177 370.09 686.987 c
+373.001 684.886 363.1 686.563 353.466 682.153 c
+352.111 681.533 318.258 666.946 314.981 666.332 c
+311.704 665.717 305.765 661.826 303.307 661.212 c
+300.85 660.597 296.52 658.597 Y
+f
+288.6 656.399 m
+293.8 656.799 292.6 655.199 v
+291.4 653.599 289 654.399 y
+288.6 656.399 l
+f
+281.4 654.799 m
+286.6 655.199 285.4 653.599 v
+284.2 651.999 281.8 652.799 y
+281.4 654.799 l
+f
+271 653.199 m
+276.2 653.599 275 651.999 v
+273.8 650.399 271.4 651.199 y
+271 653.199 l
+f
+263.4 652.399 m
+268.6 652.799 267.4 651.199 v
+266.2 649.599 263.8 650.399 y
+263.4 652.399 l
+f
+301.8 691.999 m
+306.2 691.999 305 690.399 v
+303.8 688.799 300.6 689.199 y
+301.8 691.999 l
+f
+291.8 686.399 m
+298.306 688.54 295.8 685.199 v
+294.6 683.599 292.2 684.399 y
+291.8 686.399 l
+f
+280.6 681.599 m
+285.8 681.999 284.6 680.399 v
+283.4 678.799 281 679.599 y
+280.6 681.599 l
+f
+273 675.599 m
+278.2 675.999 277 674.399 v
+275.8 672.799 273.4 673.599 y
+273 675.599 l
+f
+266.2 670.799 m
+271.4 671.199 270.2 669.599 v
+269 667.999 266.6 668.799 y
+266.2 670.799 l
+f
+305.282 664.402 m
+312.203 664.934 310.606 662.805 v
+309.009 660.675 305.814 661.74 y
+305.282 664.402 l
+f
+315.682 669.202 m
+322.603 669.734 321.006 667.605 v
+319.409 665.475 316.214 666.54 y
+315.682 669.202 l
+f
+326.482 673.602 m
+333.403 674.134 331.806 672.005 v
+330.209 669.875 327.014 670.94 y
+326.482 673.602 l
+f
+336.882 678.402 m
+343.803 678.934 342.206 676.805 v
+340.609 674.675 337.414 675.74 y
+336.882 678.402 l
+f
+309.282 696.402 m
+316.203 696.934 314.606 694.805 v
+313.009 692.675 309.014 692.94 y
+309.282 696.402 l
+f
+319.282 699.602 m
+326.203 700.134 324.606 698.005 v
+323.009 695.875 318.614 696.14 y
+319.282 699.602 l
+f
+296.6 659.599 m
+301.8 659.999 300.6 658.399 v
+299.4 656.799 297 657.599 y
+296.6 659.599 l
+f
+0.1 0.55 0.85 0.3 k
+223.4 758.8 m
+219 750 218.6 746.8 V
+219.4 755.6 220.6 757.6 v
+221.8 759.6 223.4 758.8 y
+f
+205 744.8 m
+201.8 730.4 202.2 727.6 V
+201 739.2 201.4 740.4 v
+201.8 741.6 205 744.8 y
+f
+0.8 g
+225.8 819.4 m
+225.6 816.2 l
+223.4 816 l
+237.6 803.4 238.2 795.8 V
+239 804 225.8 819.4 V
+f
+0 g
+229.784 818.135 m
+229.353 818.551 229.572 819.296 229.164 819.556 c
+228.355 820.072 230.462 820.129 230.234 820.845 c
+229.851 822.051 230.038 822.072 229.916 823.348 c
+229.859 823.946 230.447 825.486 230.832 825.926 c
+232.278 827.578 230.954 830.51 232.594 832.061 c
+232.898 832.35 233.274 832.902 233.559 833.32 c
+234.218 834.283 235.402 834.771 236.352 835.599 c
+236.67 835.875 236.469 836.702 237.038 836.61 c
+237.752 836.495 238.993 836.625 238.948 835.784 c
+238.835 833.664 237.506 831.944 236.226 830.276 C
+236.677 829.572 236.219 828.937 235.935 828.38 c
+234.6 825.76 234.789 822.919 234.615 820.079 c
+234.61 819.994 234.303 819.916 234.311 819.863 c
+234.664 817.528 235.248 815.329 236.127 813.1 c
+236.493 812.17 236.964 811.275 237.114 810.348 c
+237.225 809.662 237.328 808.829 236.92 808.124 C
+238.955 805.234 237.646 802.583 238.815 799.052 c
+239.022 798.427 240.714 796.513 240.251 796.674 c
+237.738 797.545 237.626 797.943 237.449 798.696 c
+237.303 799.319 236.973 800.696 236.736 801.298 c
+236.672 801.462 236.501 803.346 236.423 803.468 c
+234.91 805.85 236.268 805.674 234.898 808.032 C
+233.47 808.712 232.504 809.816 231.381 810.978 c
+231.183 811.182 232.326 811.906 232.145 812.119 c
+231.053 813.408 229.9 814.175 230.236 815.668 c
+230.391 816.358 230.528 817.415 229.784 818.135 c
+f
+226.2 816.4 m
+226.6 809.6 229 808 v
+231.4 806.4 230.2 807.2 227 808.4 c
+223.8 809.6 225 810.4 y
+222.2 810 224.6 808 v
+227 806 230.6 803.6 229 803.6 c
+227.4 803.6 219.8 807.6 219.8 810.4 c
+219.8 813.2 218.8 817.3 y
+219.9 818.1 224.7 818 V
+226.1 817.3 226.2 816.4 V
+f
+1 g
+1 J 0.1 w
+225.4 797.8 m
+216.88 800.591 198.4 797.2 V
+207.431 799.278 226.2 797 v
+236.5 795.75 225.4 797.8 Y
+b
+227.498 797.871 m
+219.252 801.389 200.547 799.608 V
+209.725 800.897 228.226 797.005 v
+238.38 794.869 227.498 797.871 Y
+b
+229.286 797.778 m
+221.324 801.899 202.539 801.514 V
+211.787 802.118 229.948 796.86 v
+239.914 793.975 229.286 797.778 Y
+b
+230.556 797.555 m
+223.732 801.862 206.858 802.96 V
+215.197 802.79 231.078 796.681 v
+239.794 793.328 230.556 797.555 Y
+b
+345.84 787.039 m
+344.91 786.395 345.124 787.576 v
+345.339 788.757 373.547 801.927 377.161 801.677 C
+346.913 788.471 345.84 787.039 V
+b
+342.446 786.4 m
+341.57 785.685 341.691 786.879 v
+341.812 788.073 368.899 803.418 372.521 803.452 C
+343.404 787.911 342.446 786.4 V
+b
+339.16 785.025 m
+338.332 784.253 338.374 785.453 v
+338.416 786.652 358.233 802.149 368.045 804.023 C
+350.015 795.896 339.16 785.025 V
+b
+336.284 783.162 m
+335.539 782.468 335.577 783.547 v
+335.615 784.627 353.449 798.574 362.28 800.26 C
+346.054 792.946 336.284 783.162 V
+b
+0.8 g
+0 J 1 w
+304.6 635.199 m
+289.4 637.599 306.2 639.199 V
+324.2 641.199 328.2 646.399 V
+341.8 655.599 344.6 655.999 v
+347.4 656.399 363.8 659.999 364.2 662.399 c
+364.6 664.799 370.6 667.199 372.2 666.399 c
+373.8 665.599 373.8 656.399 371 655.599 c
+368.2 654.799 349.4 647.599 343 646.399 c
+336.6 645.199 325 637.599 320.2 636.399 c
+315.4 635.199 304.6 635.199 Y
+f
+0 g
+377.6 672.599 m
+374.6 670.999 373.4 668.399 V
+367 657.799 352.8 654.599 V
+329.8 645.599 322 643.599 V
+308.6 638.599 301.2 639.399 V
+294.2 639.199 300.4 637.599 V
+320.6 639.599 324 641.399 V
+339.6 646.599 342.6 649.199 v
+345.6 651.799 363.8 656.799 366 658.799 c
+368.2 660.799 378 669.199 377.6 672.599 C
+f
+318.882 641.089 m
+324.111 641.315 322.958 639.766 v
+321.805 638.216 319.357 639.09 y
+318.882 641.089 l
+f
+311.68 639.737 m
+316.908 639.963 315.756 638.414 v
+314.603 636.864 312.155 637.737 y
+311.68 639.737 l
+f
+301.251 638.489 m
+306.48 638.716 305.327 637.166 v
+304.174 635.617 301.726 636.49 y
+301.251 638.489 l
+f
+293.617 637.945 m
+298.846 638.171 297.693 636.622 v
+296.54 635.072 294.092 635.946 y
+293.617 637.945 l
+f
+335.415 648.487 m
+342.375 648.788 340.84 646.726 v
+339.306 644.664 336.047 645.826 y
+335.415 648.487 l
+f
+345.73 652.912 m
+351.689 656.213 351.155 651.151 v
+350.885 648.595 346.362 650.251 y
+345.73 652.912 l
+f
+354.862 655.726 m
+362.021 659.427 360.287 653.965 v
+359.509 651.515 355.493 653.065 y
+354.862 655.726 l
+f
+364.376 660.551 m
+368.735 665.452 369.801 658.79 v
+370.207 656.252 365.008 657.89 y
+364.376 660.551 l
+f
+326.834 644.003 m
+332.062 644.23 330.91 642.68 v
+329.757 641.131 327.308 642.004 y
+326.834 644.003 l
+f
+1 g
+1 J 0.1 w
+362.434 765.397 m
+361.708 764.732 361.707 765.803 v
+361.707 766.873 379.191 780.137 388.034 781.521 C
+371.935 774.792 362.434 765.397 V
+b
+0 g
+0 J 1 w
+365.4 701.6 m
+387.401 679.199 396.601 675.599 V
+405.801 664.399 401.801 638.399 V
+398.601 630.799 395.401 651.599 V
+398.601 676.799 387.401 660.799 V
+379 670.699 385.4 670.399 V
+388.601 668.399 389.001 669.999 v
+389.401 671.599 381.4 685.199 364.2 699.6 c
+347 714 365.4 701.6 Y
+f
+1 g
+1 J 0.1 w
+307 662.799 m
+306.8 664.599 308.6 663.799 v
+310.4 662.999 404.601 656.799 436.201 632.799 C
+391.001 655.999 307 662.799 V
+b
+317.4 667.199 m
+317.2 668.999 319 668.199 v
+320.8 667.399 457.401 668.399 481.001 635.999 C
+459.001 661.199 317.4 667.199 V
+b
+329 671.199 m
+328.8 672.999 330.6 672.199 v
+332.4 671.399 505.801 684.399 529.401 651.999 C
+519.801 677.599 329 671.199 V
+b
+339 675.999 m
+338.8 677.799 340.6 676.999 v
+342.4 676.199 464.601 714.8 488.201 682.399 C
+474.801 707 339 675.999 V
+b
+281 653.199 m
+280.8 654.999 282.6 654.199 v
+284.4 653.399 302.2 651.199 304.2 612.399 C
+297 654.399 281 653.199 V
+b
+272.2 651.599 m
+272 653.399 273.8 652.599 v
+275.6 651.799 289.8 656.399 287 617.599 C
+288.2 652.799 272.2 651.599 V
+b
+264.2 651.199 m
+264 652.999 265.8 652.199 v
+267.6 651.399 283 650.799 270.6 628.399 C
+280.2 652.399 264.2 651.199 V
+b
+311.526 695.535 m
+311.082 693.536 312.631 694.753 v
+328.699 707.378 361.141 766.28 416.826 771.914 C
+378.518 784.024 311.526 695.535 V
+b
+322.726 697.335 m
+321.363 698.528 323.231 699.153 v
+325.099 699.778 437.541 772.28 476.826 764.314 C
+449.719 771.824 322.726 697.335 V
+b
+301.885 691.233 m
+301.376 689.634 303.087 690.61 v
+312.062 695.73 315.677 752.941 359.254 754.196 C
+326.843 768.91 301.885 691.233 V
+b
+281.962 680.207 m
+280.885 678.921 282.838 679.175 v
+293.084 680.507 314.489 721.778 358.928 716.699 C
+326.962 731.045 281.962 680.207 V
+b
+293.2 686.333 m
+292.389 684.864 294.258 685.489 v
+304.057 688.763 317.141 733.375 361.729 736.922 C
+327.603 744.865 293.2 686.333 V
+b
+274.922 675.088 m
+274.049 674.046 275.631 674.252 v
+283.93 675.331 301.268 708.76 337.264 704.646 C
+311.371 716.266 274.922 675.088 V
+b
+267.323 669.179 m
+266.318 668.134 267.909 668.252 v
+272.077 668.561 302.715 701.64 321.183 686.138 C
+309.168 704.861 267.323 669.179 V
+b
+336.855 701.102 m
+335.654 702.457 337.586 702.842 v
+339.518 703.226 460.221 760.939 498.184 748.073 C
+472.243 758.947 336.855 701.102 V
+b
+303.4 636.799 m
+303.2 638.599 305 637.799 v
+306.8 636.999 322.2 636.399 309.8 613.999 C
+319.4 637.999 303.4 636.799 V
+b
+313.8 638.399 m
+313.6 640.199 315.4 639.399 v
+317.2 638.599 335 636.399 337 597.599 C
+329.8 639.599 313.8 638.399 V
+b
+320.6 639.999 m
+320.4 641.799 322.2 640.999 v
+324 640.199 348.6 636.799 372.2 604.399 C
+336.6 641.199 320.6 639.999 V
+b
+328.225 642.028 m
+327.788 643.786 329.678 643.232 v
+331.568 642.678 352.002 644.577 390.099 610.401 C
+343.924 645.344 328.225 642.028 V
+b
+338.625 646.428 m
+338.188 648.186 340.078 647.632 v
+341.968 647.078 376.802 642.577 428.499 607.601 C
+354.324 649.744 338.625 646.428 V
+b
+298.2 657.999 m
+298 659.799 299.8 658.999 v
+301.6 658.199 355 655.599 385.4 628.799 C
+350.499 653.574 298.2 657.999 V
+b
+288.2 653.999 m
+288 655.799 289.8 654.999 v
+291.6 654.199 316.2 650.799 339.8 618.399 C
+304.2 655.199 288.2 653.999 V
+b
+349.503 651.038 m
+348.938 652.759 350.864 652.345 v
+352.79 651.932 387.86 649.996 441.981 618.902 C
+364.317 653.296 349.503 651.038 V
+b
+357.903 653.438 m
+357.338 655.159 359.264 654.745 v
+361.19 654.332 396.26 652.396 450.381 621.302 C
+373.317 656.096 357.903 653.438 V
+b
+367.503 658.438 m
+366.938 660.159 368.864 659.745 v
+370.79 659.332 413.86 654.996 503.582 620.702 C
+382.917 661.096 367.503 658.438 V
+b
+0 g
+0 J 1 w
+256.2 651.599 m
+261.4 651.999 260.2 650.399 v
+259 648.799 256.6 649.599 y
+256.2 651.599 l
+f
+287 637.599 m
+292.2 637.999 291 636.399 v
+289.8 634.799 287.4 635.599 y
+287 637.599 l
+f
+278.2 637.999 m
+283.4 638.399 282.2 636.799 v
+281 635.199 278.6 635.999 y
+278.2 637.999 l
+f
+182.831 649.818 m
+187.876 648.495 186.218 647.376 v
+184.561 646.256 182.554 647.798 y
+182.831 649.818 l
+f
+184.831 659.418 m
+189.876 658.095 188.218 656.976 v
+186.561 655.856 184.554 657.398 y
+184.831 659.418 l
+f
+177.631 663.818 m
+182.676 662.495 181.018 661.376 v
+179.361 660.256 177.354 661.798 y
+177.631 663.818 l
+f
+0.8 g
+1 J 0.1 w
+257.4 588.799 m
+255.8 588.799 251.8 586.799 V
+249.8 586.799 238.6 583.199 233 573.199 C
+245.4 582.799 257.4 588.799 V
+f
+345.116 496.153 m
+345.257 495.895 345.312 495.475 345.604 495.458 c
+346.262 495.418 347.495 495.117 347.37 495.753 c
+346.522 500.059 345.648 504.996 341.515 506.803 c
+340.876 507.082 339.434 506.669 339.36 505.785 c
+339.233 504.261 339.116 502.912 339.425 501.446 c
+339.725 500.025 341.883 500.015 342.8 501.399 C
+343.736 499.727 344.168 497.884 345.116 496.153 c
+f
+334.038 491.419 m
+334.786 490.006 334.659 488.147 336.074 487.584 c
+336.814 487.29 338.664 488.265 338.246 489.339 c
+337.444 491.4 337.056 493.639 335.667 495.45 c
+335.467 495.712 335.707 496.245 335.547 496.573 c
+334.953 497.793 333.808 498.528 332.4 498.199 C
+331.285 495.996 332.433 493.867 333.955 492.158 c
+334.091 492.006 333.925 491.63 334.038 491.419 c
+f
+294.436 496.609 m
+294.328 496.986 294.29 497.449 294.455 497.77 c
+294.986 498.803 295.779 499.925 295.442 500.947 c
+295.094 502.003 293.978 501.821 293.328 501.252 c
+292.193 500.258 292.144 498.432 291.453 497.073 c
+291.257 496.687 291.308 496.114 290.867 495.723 c
+290.393 495.302 289.953 493.778 290.049 493.207 c
+290.102 492.894 289.919 482.986 290.141 483.249 c
+290.76 483.982 293.81 493.716 293.879 494.608 c
+293.936 495.339 294.668 495.804 294.436 496.609 c
+f
+268.798 503.401 m
+271.432 505.9 274.222 508.861 273.78 512.573 c
+273.664 513.549 271.889 513.022 271.702 512.176 c
+270.9 508.551 268.861 505.89 266.293 503.498 c
+264.097 501.451 262.235 495.107 262 494.599 C
+265.697 499.855 267.954 502.601 268.798 503.401 c
+f
+255.224 509.365 m
+255.747 509.735 255.445 510.226 255.662 510.558 c
+256.615 512.016 257.916 513.262 257.934 515 c
+257.937 515.277 257.559 515.586 257.224 515.362 c
+256.947 515.178 256.605 515.048 256.497 514.918 c
+254.467 512.469 253.067 509.798 251.624 506.986 c
+251.441 506.629 250.297 502.138 250.61 502.027 c
+250.849 501.942 252.569 506.123 252.779 506.237 c
+254.042 506.923 254.054 508.538 255.224 509.365 c
+f
+271.957 489.821 m
+272.401 490.69 273.977 491.892 273.864 492.781 c
+273.746 493.709 274.214 495.152 273.302 494.464 c
+272.045 493.516 268.596 492.167 268.326 486.359 c
+268.3 485.788 271.274 488.481 271.957 489.821 c
+f
+286.4 506.999 m
+286.8 507.667 287.508 507.194 287.967 507.457 c
+288.615 507.829 289.226 508.387 289.518 509.036 c
+290.488 511.185 292.257 513.005 292.4 515.399 C
+290.909 516.804 290.23 514.764 289.6 513.799 C
+288.277 515.446 287.278 513.572 285.978 513.053 c
+285.908 513.025 285.695 513.372 285.62 513.345 c
+284.443 512.905 283.763 511.824 282.765 511.043 c
+282.594 510.909 282.189 511.089 282.042 510.953 c
+281.39 510.35 280.417 510.025 280.137 509.343 c
+279.027 506.636 275.887 504.541 274 496.999 C
+274.381 496.09 278.512 503.641 278.999 504.339 c
+279.835 505.535 279.953 502.678 281.229 503.344 c
+281.28 503.371 281.466 503.133 281.6 502.999 C
+281.794 503.279 282.012 503.508 282.4 503.399 C
+282.4 503.799 282.266 504.355 282.467 504.514 c
+283.704 505.491 283.62 506.559 284.4 507.799 C
+284.858 507.01 285.919 507.729 286.4 506.999 C
+f
+346.2 452.599 m
+353.6 472.999 349.2 484.199 V
+360.6 462.599 356 451.399 V
+355.6 461.799 351.6 466.799 V
+347.6 453.999 346.2 452.599 V
+f
+331.4 455.199 m
+336.8 463.999 328.8 482.399 V
+328 461.999 321.2 450.999 V
+335.4 471.199 331.4 455.199 V
+f
+321.4 457.199 m
+321.2 477.199 321.6 480.199 V
+317.8 463.599 307.6 453.999 V
+322 465.999 321.4 457.199 V
+f
+311.8 489.199 m
+317.8 475.599 307.8 457.199 V
+314.2 469.399 309.4 476.399 V
+312 479.799 311.8 489.199 V
+f
+292.6 457.599 m
+291.6 473.199 293.4 475.399 V
+293.6 481.799 293.2 482.799 V
+297.2 488.999 297.4 481.599 V
+298.8 473.799 301.6 469.199 V
+305.2 463.799 305 457.399 V
+295 487.599 292.6 457.599 V
+f
+289 485.199 m
+282.4 474.399 280.6 455.399 V
+279.2 461.599 283 475.999 V
+287.2 491.399 289 485.199 V
+f
+267.2 465.399 m
+272.2 470.799 273.6 475.799 V
+277.2 491.599 270.8 482.999 V
+271 474.999 262.8 467.599 V
+267.6 469.999 267.2 465.399 V
+f
+261.4 470.399 m
+264.8 487.799 265.6 488.599 V
+267.4 491.999 264.6 488.799 V
+255.8 469.599 251.8 462.999 V
+259.8 472.199 261.4 470.399 V
+f
+255.6 486.999 m
+267.2 509.399 245.4 483.599 V
+256.4 493.399 255.6 486.999 V
+f
+240.2 501.599 m
+245 520.399 247.6 520.199 V
+255.8 529.199 249.2 518.599 V
+243.2 508.999 243.8 499.199 V
+243.2 508.799 240.2 501.599 V
+f
+570.5 513 m
+558.5 523 556 526.5 V
+569.5 508 569.5 501 V
+572 508.5 570.5 513 V
+f
+576 535 m
+555 550 551.5 557.5 V
+578 528 578 523.5 V
+578.5 532.5 576 535 V
+f
+593 689 m
+581 697 579.5 695 V
+590 688.5 592.5 680 V
+591 689 593 689 V
+f
+601.5 608.5 m
+584 620.5 l
+603 603.5 603.5 599.5 V
+601.5 608.5 L
+f
+0 g
+1 w
+210.75 631 m
+232.75 626.25 l
+S
+261 469 m
+260.5 472.5 251.5 462 v
+S
+266.5 464 m
+268.5 470.5 262 466 v
+S
+320.5 455.5 m
+322 466.5 310.5 453.5 v
+S
+
+showpage
+
+% Modification Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr> - 18 Dec. 1997
+%% %%Trailer
+countdictstack InitDictCount sub { end } repeat
+cleartomark
+restore
+grestore
diff --git a/graphics/pstricks/base/doc/images/tiger.pdf b/graphics/pstricks/base/doc/images/tiger.pdf
new file mode 100644
index 0000000000..cc016e95de
--- /dev/null
+++ b/graphics/pstricks/base/doc/images/tiger.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-doc.bst b/graphics/pstricks/base/doc/pst-doc.bst
new file mode 100644
index 0000000000..52759e253c
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-doc.bst
@@ -0,0 +1,1373 @@
+%%
+%% This is file `dtk.bst'
+%%
+%% version 1.3, 2013-01-26
+%% copyright 2013 by DANTE e.V.
+%%
+ %-------------------------------------------------------------------
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ % This bibliography style file is intended for texts in
+ % GERMAN
+ % This is a numerical citation style, and as such is standard LaTeX.
+ % It requires no extra package to interface to the main text.
+ % The form of the \bibitem entries is
+ % \bibitem{key}...
+ % Usage of \cite is as follows:
+ % \cite{key} ==>> [#]
+ % \cite[chap. 2]{key} ==>> [#, chap. 2]
+ % where # is a number determined by the ordering in the reference list.
+ % This is alphabetical by authors.
+ %---------------------------------------------------------------------
+
+ENTRY
+ { abstracts
+ address
+ author
+ booktitle
+ chapter
+ ctanurl
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ url
+ urldate
+ volume
+ year
+ }
+ {}
+ { label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { "; " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {add.colon}
+{ empty$
+ 'skip$
+ { before.all 'output.state := ":" output add.blank }
+ if$
+}
+
+FUNCTION {date.block}
+{
+ skip$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {non.stop}
+{ duplicate$
+ "}" * add.period$
+ #-1 #1 substring$ "." =
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ %-------------------------------------------------------------------
+ % The original source file contains the following version information:
+ % \ProvidesFile{german.mbs}[1995/10/25 1.4 (PWD)]
+ % Copyright (C) 1994, 1995 Patrick W. Daly
+ %-------------------------------------------------------------------
+
+ % The language selected here is GERMAN
+FUNCTION {bbl.and}
+{ "und"}
+
+FUNCTION {bbl.editors}
+{ "Hg." }
+
+FUNCTION {bbl.editor}
+{ "Hg." }
+
+FUNCTION {bbl.edby}
+{ "herausgegeben von" }
+
+FUNCTION {bbl.edition}
+{ "Aufl." }
+
+FUNCTION {bbl.volume}
+{ "Bd." }
+
+FUNCTION {bbl.of}
+{ "von" }
+
+FUNCTION {bbl.number}
+{ "Nr." }
+
+FUNCTION {bbl.nr}
+{ "Nr." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "S." }
+
+FUNCTION {bbl.page}
+{ "S." }
+
+FUNCTION {bbl.chapter}
+{ "Kap." }
+
+FUNCTION {bbl.techrep}
+{ "{Techn.\ Ber.}" }
+
+FUNCTION {bbl.mthesis}
+{ "Diplomarbeit" }
+
+FUNCTION {bbl.phdthesis}
+{ "Dissertation" }
+
+FUNCTION {bbl.first}
+{ "1." }
+
+FUNCTION {bbl.second}
+{ "2." }
+
+FUNCTION {bbl.third}
+{ "3." }
+
+FUNCTION {bbl.fourth}
+{ "4." }
+
+FUNCTION {bbl.fifth}
+{ "5." }
+
+FUNCTION {bbl.th}
+{ "." }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Febr."}
+
+MACRO {mar} {"M\^^b{a}rz"}
+
+MACRO {apr} {"Apr."}
+
+MACRO {may} {"Mai"}
+
+MACRO {jun} {"Juni"}
+
+MACRO {jul} {"Juli"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Okt."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dez."}
+
+ % End of language definition file
+
+
+MACRO{DTK}{"Die \TeX nische Ko\-mö\-die"}
+MACRO{TUGboat}{"TUGboat"}
+MACRO{TTN}{"\TeX{} and TUG News"}
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+ nameptr #1 >
+ {
+ nameptr #3 =
+ numnames #3 > and
+ { "others" 't :=
+ #1 'namesleft := }
+ 'skip$
+ if$
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " et~al." * }
+ { bbl.and space.word * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.names.ed}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff~}{vv~}{ll}{, jj}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ t "others" =
+ { " et~al." * }
+ { bbl.and space.word * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ {
+ author format.names
+ }
+ if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ {
+ editor format.names
+ editor num.names$ #1 >
+ { " (" * bbl.editors * ")" * }
+ { " (" * bbl.editor * ")" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.editors}
+{ editor empty$
+ { "" }
+ { editor format.names.ed
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title
+ emphasize
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem{" write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {word.in}
+{ bbl.in
+ " " * }
+
+FUNCTION {format.date}
+{ year empty$
+ { month empty$
+ { "" }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ }
+ if$
+ }
+ { month empty$
+ 'year
+% { month ", " * year * }
+ { month "~" * year * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.url}
+{ url empty$
+ {""}
+ {"\url{" url * "}" * }
+ if$
+}
+
+FUNCTION {format.ctanurl}
+{ ctanurl empty$
+ {""}
+ {"\ctanurl{" ctanurl * "}" * }
+ if$
+}
+
+
+FUNCTION {format.urldate}
+{ urldate empty$
+ {""}
+% {'skip$}
+ {"zuletzt besucht: " urldate *}
+ if$
+}
+
+FUNCTION {format.btitle}
+{ title emphasize
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.connect
+ series empty$
+ 'skip$
+ { bbl.of space.word * series emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { bbl.in space.word * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ edition extract.num "l" change.case$ 's :=
+ s "first" = s "1" = or
+ { bbl.first 't := }
+ { s "second" = s "2" = or
+ { bbl.second 't := }
+ { s "third" = s "3" = or
+ { bbl.third 't := }
+ { s "fourth" = s "4" = or
+ { bbl.fourth 't := }
+ { s "fifth" = s "5" = or
+ { bbl.fifth 't := }
+ { s #1 #1 substring$ is.num
+ { s bbl.th * 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+ { "" }
+ { output.state mid.sentence =
+ { convert.edition "l" change.case$ "~" * bbl.edition * }
+ { convert.edition "t" change.case$ "~" * bbl.edition * }
+ if$
+ }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { bbl.pages pages n.dashify tie.or.space.connect }
+ { bbl.page pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ number empty$
+ 'skip$
+ {
+ "(" number * ")" * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ pages empty$
+ 'skip$
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { word.in booktitle emphasize * }
+ { word.in booktitle emphasize *
+ " (" *
+ editor num.names$ #1 >
+ { bbl.editors }
+ { bbl.editor }
+ if$
+ capitalize
+ * " " *
+ format.in.editors *
+ ")" *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+ month empty$ year empty$ note empty$
+ and and and and and
+ key empty$ not and
+ { "all relevant fields are empty in " cite$ * warning$ }
+ 'skip$
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+ { pop$
+ type "t" change.case$
+ }
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { bbl.techrep }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{
+ key empty$
+ { journal empty$
+ { "need key or journal for " cite$ * " to crossref " * crossref *
+ warning$
+ ""
+ }
+ { word.in journal emphasize * }
+ if$
+ }
+ { word.in key * " " *}
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al." * }
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al." * }
+ { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ word.in
+ }
+ { bbl.volume volume tie.or.space.connect
+ bbl.of space.word *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { series emphasize * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { booktitle empty$
+ { "need editor, key, or booktitle for " cite$ * " to crossref " *
+ crossref * warning$
+ ""
+ }
+ { word.in booktitle emphasize * }
+ if$
+ }
+ { word.in key * " " *}
+ if$
+ }
+ { word.in format.crossref.editor * " " *}
+ if$
+ " \cite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author add.colon
+ format.title "title" output.check
+ crossref missing$
+ { journal emphasize "journal" output.check
+ format.vol.num.pages output
+ format.date "year" output.check
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor add.colon
+ }
+ { format.authors output.nonnull
+ author add.colon
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.number.series output
+ publisher "publisher" output.check
+ address output
+ }
+ {
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author add.colon
+ format.title "title" output.check
+ howpublished output
+ address output
+ format.date output
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors "author and editor" output.check
+ editor add.colon
+ }
+ { format.authors output.nonnull
+ author add.colon
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ format.chapter.pages "chapter and pages" output.check
+ format.number.series output
+ publisher "publisher" output.check
+ address output
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author add.colon
+ format.title "title" output.check
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.chapter.pages output
+ publisher "publisher" output.check
+ address output
+ format.edition output
+ format.date "year" output.check
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author add.colon
+ format.title "title" output.check
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ format.pages output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ organization output
+ publisher output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { organization empty$
+ 'skip$
+ { organization output.nonnull
+ address output
+ }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ author add.colon
+ format.btitle "title" output.check
+ author empty$
+ { organization empty$
+ {
+ address output
+ }
+ 'skip$
+ if$
+ }
+ {
+ organization output
+ address output
+ }
+ if$
+ format.edition output
+ format.date output
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author add.colon
+ format.btitle "title" output.check
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author add.colon
+ format.title output
+ howpublished output
+ format.date output
+ note output
+ fin.entry
+}
+
+FUNCTION {online}
+{ output.bibitem
+ format.authors output
+ author add.colon
+ format.title output
+ format.date output
+ address output
+ format.url output
+ format.urldate output
+ note output
+ fin.entry
+}
+
+FUNCTION {ctan}
+{ output.bibitem
+ format.authors output
+ author add.colon
+ format.title output
+ format.date output
+ format.ctanurl output
+ format.urldate output
+ note output
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author add.colon
+ format.btitle "title" output.check
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ editor add.colon
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ address empty$
+ { editor empty$
+ { publisher new.sentence.checka }
+ { organization publisher new.sentence.checkb
+ organization output
+ }
+ if$
+ publisher output
+ format.date "year" output.check
+ }
+ { address output.nonnull
+ format.date "year" output.check
+ editor empty$
+ 'skip$
+ { organization output }
+ if$
+ publisher output
+ }
+ if$
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author add.colon
+ format.title "title" output.check
+ format.tr.number output.nonnull
+ institution "institution" output.check
+ address output
+ format.date "year" output.check
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author add.colon
+ format.title "title" output.check
+ note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}{ ff{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ nameptr #3 =
+ numnames #3 > and
+ { "others" 't :=
+ #1 'namesleft := }
+ 'skip$
+ if$
+ " " *
+ namesleft #1 = t "others" = and
+ { "aaaaa" * }
+ { t sortify * }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { "The " #4 organization chop.word sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label }
+
+INTEGERS { number.label longest.label.width }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #1 'number.label :=
+ #0 'longest.label.width :=
+}
+
+FUNCTION {longest.label.pass}
+{ number.label int.to.str$ 'label :=
+ number.label #1 + 'number.label :=
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {longest.label.pass}
+
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" longest.label * "}" *
+ write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+%% End of customized bst file
diff --git a/graphics/pstricks/base/doc/pst-doc.cls b/graphics/pstricks/base/doc/pst-doc.cls
new file mode 100644
index 0000000000..d03ad411d9
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-doc.cls
@@ -0,0 +1,518 @@
+% $Id: pst-doc.cls 857 2018-12-13 11:20:40Z herbert $
+%
+%%
+%% The PSTricks Project
+%%
+%% ``pst-doc'' class for use with the PSTricks documentation.
+%%
+%% Copyright (C) 2009-2017 Herbert Voss
+%%
+%% It 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.
+%%
+%% See http://www.latex-project.org/lppl.txt for details.
+%%
+%
+\listfiles
+\ProvidesClass{pst-doc}[2017/04/18 v 0.20 PSTricks documentation class (hv)]
+\DeclareOption*{\PassOptionsToClass{\CurrentOption,usegeometry}{scrartcl}}
+\ProcessOptions\relax
+%
+\LoadClass{scrartcl}
+%
+\RequirePackage[dvipsnames,x11names,svgnames,table]{xcolor}
+\RequirePackage{ifxetex}
+\RequirePackage{amsmath, amssymb}
+\ifxetex
+ \usepackage{unicode-math}
+ \usepackage{libertinus-otf}
+ \setmonofont[Scale=MatchLowercase,FakeStretch=0.92]{DejaVu Sans Mono}
+ \setmathfont{XITS Math}
+\else
+ \RequirePackage[T1]{fontenc}
+ \RequirePackage{textcomp}
+ %\RequirePackage[euler-digits]{eulervm}
+ \RequirePackage{bera}
+ %\RequirePackage[scaled=0.85]{luximono}
+\fi
+\usepackage[includeheadfoot,lmargin=2cm,tmargin=1cm,bmargin=1.5cm,rmargin=1.5cm]{geometry}
+\RequirePackage{ifpdf}
+% Define commands that don't eat spaces.
+\RequirePackage{xspace}
+\makeatletter
+\providecommand{\IfPackageLoaded}[2]{\@ifpackageloaded{#1}{#2}{}}
+\providecommand{\IfPackageNotLoaded}[2]{\@ifpackageloaded{#1}{}{#2}}
+\providecommand{\IfElsePackageLoaded}[3]{\@ifpackageloaded{#1}{#2}{#3}}
+\providecommand{\IfChapterDefined}[1]{\ifthenelse{\boolean{chapteravailable}}{#1}{}}%
+\providecommand{\IfElseChapterDefined}[2]{\ifthenelse{\boolean{chapteravailable}}{#1}{#2}}%
+\providecommand{\IfDefined}[2]{\ifcsname #1\endcsname #2 \fi}
+\providecommand{\IfElseDefined}[3]{\ifcsname #1\endcsname #2 \else #3 \fi}
+\providecommand{\IfElseUnDefined}[3]{\ifcsname #1\endcsname #3 \else #2\fi}
+% Definde frontmatter, mainmatter and backmatter if not defined
+\@ifundefined{frontmatter}{%
+ \newcommand{\frontmatter}{%
+ %In Roemischen Buchstaben nummerieren (i, ii, iii)
+ \pagenumbering{roman}}
+}{}
+\@ifundefined{mainmatter}{%
+ % scrpage benoetigt den folgenden switch
+ % wenn \mainmatter definiert ist.
+ \newif\if@mainmatter\@mainmattertrue
+ \newcommand{\mainmatter}{%
+ % -- Seitennummerierung auf Arabische Zahlen zuruecksetzen (1,2,3)
+ \pagenumbering{arabic}%
+ \setcounter{page}{1}}
+}{}
+\@ifundefined{backmatter}{%
+ \newcommand{\backmatter}{
+ %In Roemischen Buchstaben nummerieren (i, ii, iii)
+ \pagenumbering{roman}}
+}{}
+
+% Pakete speichern die spaeter geladen werden sollen
+\newcommand{\LoadPackagesNow}{}
+\newcommand{\LoadPackageLater}[1]{%
+ \g@addto@macro{\LoadPackagesNow}{%
+ \RequirePackage{#1}%
+ }%
+}
+%
+\RequirePackage{makeidx}
+\makeindex
+\RequirePackage{calc}
+\RequirePackage{babel}
+\RequirePackage{xkeyval}
+\RequirePackage{pst-xkey}
+\RequirePackage{pstricks}
+\RequirePackage{xkvview}
+%\let\pstricksFV\fileversion
+%\let\pstricksFD\filedate
+\RequirePackage{multido}
+\RequirePackage{lscape}
+\RequirePackage{graphicx}
+\RequirePackage{eso-pic}
+\definecolor{DOrange}{rgb}{1,.4,.2}
+\RequirePackage{tabularx,ragged2e}
+\RequirePackage{booktabs}
+\RequirePackage[bottom,stable,ragged]{footmisc}
+%\RequirePackage{chngcntr}
+\RequirePackage{nameref}
+\RequirePackage{varioref}
+\RequirePackage{subfig}
+\RequirePackage{setspace}
+\RequirePackage{paralist}
+\RequirePackage{biblatex}
+%
+\RequirePackage{fancyvrb}
+\newenvironment{Xverbatim}[2][]%
+ {\VerbatimEnvironment
+\handle@index{#2}
+\begin{Verbatim}[#1]}
+{\end{Verbatim}}
+\newcommand\use@index@vals{\index@vals\global\let\index@vals\relax}
+\def\handle@index#1{%
+ \gdef\index@vals{#1}%
+ \def\FancyVerbFormatLine##1{\FV@ObeyTabs{##1}\use@index@vals}}
+
+\RequirePackage{filecontents}
+%\singlespace
+\RequirePackage{showexpl}
+\renewcommand*\SX@Info{}%
+\definecolor{hellgelb}{rgb}{1,1,0.85}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{1,0,0}
+\definecolor{colString}{rgb}{0,0.5,0}
+\providecommand\ON{%
+ \gdef\lst@alloverstyle##1{%
+ \fboxrule=0pt
+ \fboxsep=0pt
+ \fcolorbox{Black!15}{Black!15}{\bfseries\strut##1}%
+}}
+\providecommand\OFF{\xdef\lst@alloverstyle##1{##1}}
+\lstset{%
+ language=PSTricks,%
+ float=hbp,%
+ basicstyle=\ttfamily\small, %
+ identifierstyle=\color{colIdentifier}, %
+ keywordstyle=\color{colKeys}, %
+ stringstyle=\color{colString}, %
+ commentstyle=\color{colComments}, %
+ columns=flexible, %
+ tabsize=4, %
+ frame=single, %
+ extendedchars=true, %
+ showspaces=false, %
+ showstringspaces=false, %
+% numbers=left,
+% numbersep=0.8em,
+% numberstyle=\tiny, %
+ breaklines=true, %
+ breakautoindent=true,
+ captionpos=b,
+ xleftmargin=1em
+}
+\lstset{explpreset={pos=t,wide=false,rframe={},preset=\centering}}
+\lstdefinestyle{syntax}{backgroundcolor=\color{blue!15},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
+ frame=single}
+\lstdefinestyle{code}{backgroundcolor=\color{red!15},%numbers=left,
+xleftmargin=0pt,xrightmargin=0pt,
+ frame=single}
+%
+\usepackage{manfnt}
+\newcommand\XInfofont{\color{blue}\fontsize{8pt}{10pt}\normalfont\itshape}
+\newcommand\XInfo[2][1]{\marginpar
+ [\XInfocorr{#1}\raggedleft\XInfofont#2]%
+ {\XInfocorr{#1}\raggedright\XInfofont#2}}
+\newcommand\XInfocorr[1]{\mbox{}\par
+ \ifcase#1\relax
+ \vspace{-10pt}\or
+ \vspace{2pt}\or
+ \vspace{14pt}\else
+ \ifnum #1=-1 \vspace{-22pt}\else\ERROR\fi
+ \fi}
+\newcommand\XInfoDanger[2][1]{\marginpar
+ [\XInfocorr{#1}\raggedleft\XInfofont
+ \let\\\@normalcr
+ \hangafter-2\hangindent=-.9pc\parindent=-\@flushglue
+ \noindent\rlap{\makebox[\marginparwidth]{\hfill\lower1.2pt\hbox{\dbend}\hspace*{-8pt}}}\hfill#2]%
+ {\XInfocorr{#1}\raggedright\XInfofont
+ \let\\\@normalcr
+ \hangafter-2\hangindent=.9pc\noindent\llap{\lower1.2pt\hbox{\lhdbend}\,}#2}}
+%
+\RequirePackage{xkvview}
+\raggedbottom
+\definecolor{sectioncolor}{RGB}{0, 0, 255} % Schwarz
+\definecolor{textcolor}{RGB}{0, 0, 0} % Schwarz
+\definecolor{shadecolor}{gray}{0.90}
+\colorlet{pdflinkcolor}{DOrange}
+\colorlet{pdfurlcolor}{DOrange}
+\colorlet{pdffilecolor}{DOrange}
+\colorlet{stringcolor}{green!40!black!100}
+\colorlet{commencolor}{blue!0!black!100}
+\RequirePackage[automark]{scrlayer-scrpage}
+
+\pagestyle{scrheadings}
+\clearscrheadings
+\clearscrplain
+\ohead{\pagemark}
+\ihead{\headmark}
+\ofoot[\pagemark]{}
+\automark[subsection]{section}
+\setheadsepline{.4pt}[\color{DOrange}]
+\setheadwidth[0pt]{text}
+\setfootwidth[0pt]{text}
+%% Fussnoten =============================================================
+% Keine hochgestellten Ziffern in der Fussnote (KOMA-Script-spezifisch):
+\deffootnote{1.5em}{1em}{\makebox[1.5em][l]{\thefootnotemark}}
+\addtolength{\skip\footins}{\baselineskip} % Abstand Text <-> Fussnote
+%% Schriften (Sections )==================================================
+\newcommand\SectionFontStyle{\sffamily}
+\setkomafont{sectioning}{\bfseries\SectionFontStyle} % % Titelzeilen % \bfseries
+\setkomafont{pagenumber}{\bfseries\SectionFontStyle} % Seitenzahl
+\setkomafont{pagehead}{\small\sffamily} % Kopfzeile
+%\setkomafont{pagefoot}{\small\sffamily} % Kopfzeile
+\setkomafont{descriptionlabel}{\itshape} % Kopfzeile
+\addtokomafont{sectioning}{\color{sectioncolor}} % Farbe der Ueberschriften
+\renewcommand*{\raggedsection}{\raggedright} % Titelzeile linksbuendig, haengend
+\RequirePackage{caption}
+\captionsetup{
+ margin = 10pt,
+ font = {small,rm},
+ labelfont = {small,bf},
+ format = plain, % oder 'hang'
+ indention = 0em, % Einruecken der Beschriftung
+ labelsep = colon, %period, space, quad, newline
+ justification = RaggedRight, % justified, centering
+ singlelinecheck = true, % false (true=bei einer Zeile immer zentrieren)
+ position = bottom %top
+}
+%%% Bugfix Workaround
+\DeclareCaptionOption{parskip}[]{}
+\DeclareCaptionOption{parindent}[]{}
+
+% Aussehen der Captions fuer subfigures (subfig-Paket)
+\IfPackageLoaded{subfig}{
+ \captionsetup[subfloat]{%
+ margin = 10pt,
+ font = {small,rm},
+ labelfont = {small,bf},
+ format = plain, % oder 'hang'
+ indention = 0em, % Einruecken der Beschriftung
+ labelsep = space, %period, space, quad, newline
+ justification = RaggedRight, % justified, centering
+ singlelinecheck = true, % false (true=bei einer Zeile immer zentrieren)
+ position = bottom, %top
+ labelformat = parens % simple, empty % Wie die Bezeichnung gesetzt wird
+ }
+}
+\setcounter{secnumdepth}{2} % Abbildungsnummerierung mit groesserer Tiefe
+\setcounter{tocdepth}{2} % Inhaltsverzeichnis mit groesserer Tiefe
+%
+% Inhalte von List of Figures
+\IfPackageLoaded{subfig}{\setcounter{lofdepth}{1} %1 = nur figures, 2 = figures + subfigures
+}
+\RequirePackage[colorlinks,
+ urlcolor=pdfurlcolor,
+ filecolor=pdffilecolor,
+ linkcolor=pdflinkcolor,
+ breaklinks,
+ linktocpage=true]{hyperref}
+\ifxetex
+\else
+ \RequirePackage{breakurl}
+\fi
+\newsavebox\TBox
+\newenvironment{Bsp}[1]{%
+ \par\bigskip%
+ \begin{lrbox}{\TBox}
+ \begin{minipage}{\linewidth-2\fboxrule}%
+ \setlength\fboxsep{1mm}%
+ \colorbox{DOrange}{\parbox{\linewidth-2\fboxsep}{%
+ \color{White}\sffamily#1}}\par
+ \fontsize{10}{12pt}\fontshape{it}\selectfont%
+ \begin{quote}
+}{%
+\par\bigskip\end{quote}\end{minipage}\end{lrbox}\fboxsep=0pt%
+ \fcolorbox{DOrange}{White}{\usebox\TBox}\par\bigskip}
+
+\newcommand{\RDO}{\color{DOrange!25}\rule[-1mm]{10mm}{5mm}}
+
+\DeclareRobustCommand\PST{\texttt{PSTricks\xspace}}
+\DeclareRobustCommand\PS{\texttt{PostScript\xspace}}
+\def\dt{\ensuremath{\,\mathrm{d}t}}
+\def\Index#1{\index{#1}#1}
+%
+\def\LPack#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Package!#1@\texttt{#1}}}
+\def\nxLPack#1{\texttt{#1}}
+\def\Lprog#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Program!#1@\texttt{#1}}}
+\let\nxLprog\nxLPack
+\def\LFile#1{\texttt{#1}\index{#1@\texttt{#1}}\index{File!#1@\texttt{#1}}}
+\def\nxLFile#1{\texttt{#1}}
+\def\Lext#1{\texttt{.#1}\index{#1@\texttt{.#1}}\index{Extension!#1@\texttt{.#1}}}
+\def\nxLext#1{\texttt{.#1}}
+\def\xLcs#1{\index{#1@\nxLcs{#1}}\index{Macro!#1@\nxLcs{#1}}}
+\def\Lcs#1{\nxLcs{#1}\xLcs{#1}}
+\def\LcsStar#1{\index{#1*@\nxLcs{#1*}}\index{Macro!#1@\nxLcs{#1*}}\nxLcs{#1}\OptArg*{*}}
+\def\nxLcs#1{\texttt{\textbackslash#1}}
+\def\xLenv#1{\index{#1@\texttt{#1}}\index{Environment!#1@\texttt{#1}}}
+\def\Lenv#1{\texttt{#1}\xLenv{#1}}
+\def\Ldim#1{\texttt{\textbackslash#1}\index{#1@\texttt{\textbackslash#1}}\index{Dimension!#1@\texttt{\textbackslash#1}}}
+\def\Lskip#1{\texttt{\textbackslash#1}\index{#1@\texttt{\textbackslash#1}}\index{Skip!#1@\texttt{\textbackslash#1}}}
+\def\Lkeyword#1{\texttt{#1}\xLkeyword{#1}}
+\def\xLkeyword#1{\index{#1@\texttt{#1}}\index{Keyword!#1@\texttt{#1}}}
+\def\nxLkeyword#1{\texttt{#1}}
+
+\def\LKeyword#1{\LKeyword@i#1!!}
+\def\LKeyword@i#1=#2!!{\Lkeyword{#1}\nxLkeyword{=#2}}
+\let\nxLKeyword\nxLenv % same formatting
+
+\let\nxLkeyval\nxLkeyword
+\let\nxLenv\nxLkeyword
+\let\nxLps\nxLkeyword
+\def\LColor#1{\texttt{#1}\xLColor{#1}}
+\def\xLColor#1{\index{#1@\texttt{#1}}\index{Color!#1@\texttt{#1}}}
+\def\Lkeyval#1{\texttt{#1}\xLkeyval{#1}}
+\def\xLkeyval#1{\index{#1@\texttt{#1}}\index{Keyvalue!#1@\texttt{#1}}}
+\def\xLoption#1{\index{#1@\texttt{#1}}\index{Package option!#1@\texttt{#1}}}
+\def\Loption#1{\texttt{#1}\xLoption{#1}}
+\def\LPS#1{\texttt{#1}\index{#1@\texttt{#1}}\index{PostScript!#1@\texttt{#1}}}
+\def\xLps#1{\index{#1@\texttt{#1}}\index{PostScript!#1@\texttt{#1}}}
+\def\nxLps#1{\texttt{#1}}
+\def\Lps#1{\nxLps{#1}\xLps{#1}}
+\def\LClass#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Class!#1@\texttt{#1}}}
+\let\nxLClass\nxLPack
+\let\nxLdim\nxLcs
+\let\nxLskip\nxLcs
+\def\Lctr#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Counter!#1@\texttt{#1}}}
+\def\LCtr#1{\texttt{#1}\index{#1@\texttt{#1}}\index{TeX Counter@\TeX\ Counter!#1@\texttt{#1}}}
+\def\nxLctr#1{\texttt{#1}}
+%
+\newcommand\Lnotation [1]{\nxLnotation{#1}\xLnotation{#1}}
+\newcommand\Lmnotation[1]{\nxLnotation{#1}\xLmnotation{#1}}
+\newcommand\xLnotation[1]{\index{Syntax!#1@\nxLnotation{#1}}\index{#1@\nxLnotation{#1}}}
+\def\nxLnotation#1{\texttt{#1}}
+\def\xLkeyset#1{\expandafter\xLkeyset@i#1\@nil}
+\def\xLkeyset@i#1=#2\@nil{\index{#1@\texttt{#1}}\index{Keyword!#1@\texttt{#1}}
+ \index{#2@\texttt{#2}}\index{Value!#2@\texttt{#2}}}
+\def\Lkeyset#1{\expandafter\Lkeyset@i#1\@nil}
+\def\Lkeyset@i#1=#2\@nil{\texttt{#1=#2}%
+ \index{#1@\texttt{#1}}\index{Keyword!#1@\texttt{#1}}
+ \index{#2@\texttt{#2}}\index{Value!#2@\texttt{#2}}}
+%
+\def\xLKeyset#1{\expandafter\xLKeyset@i#1\@nil}% without using the right value of =
+\def\xLKeyset@i#1=#2\@nil{\index{#1@\texttt{#1}}\index{Keyword!#1@\texttt{#1}}}
+\def\LKeyset#1{\expandafter\LKeyset@i#1\@nil}
+\def\LKeyset@i#1=#2\@nil{\texttt{#1=#2}%
+ \index{#1@\texttt{#1}}\index{Keyword!#1@\texttt{#1}}}
+\let\LKeyword\LKeyset
+%
+\newcommand\Larg [1]{{\normalfont\itshape#1\/}}
+\newcommand\Larga[1]{$\langle$\Larg{#1}$\rangle$}% angles
+\newcommand\Largb[1]{\lcb\Larg{#1}\rcb} % curly brace
+\newcommand\Largs[1]{\lsb\Larg{#1}\rsb} % square brackets
+\newcommand\Largr[1]{\lrb\Larg{#1}\rrb} % round brackets
+\newcommand\LBEG[1]{{\normalfont\ttfamily\bs{}begin\lcb#1\rcb}\xLenv{#1}}
+\newcommand\LmBEG[1]{{\normalfont\ttfamily\bs{}begin\lcb#1\rcb}\xLmenv{#1}}
+\newcommand\LEND[1]{{\normalfont\ttfamily\bs{}end\lcb#1\rcb}\xLenv{#1}}
+\newcommand\LmEND[1]{{\normalfont\ttfamily\bs{}end\lcb#1\rcb}\xLmenv{#1}}
+%
+\DeclareRobustCommand\bs{{\normalfont\ttfamily\textbackslash}} % \let\bslash=\bs
+\DeclareRobustCommand\lcb{{\normalfont\ttfamily\textbraceleft}}
+\DeclareRobustCommand\rcb{{\normalfont\ttfamily\textbraceright}}
+\DeclareRobustCommand\lsb{{\normalfont\ttfamily[}}
+\DeclareRobustCommand\rsb{{\normalfont\ttfamily]}}
+\DeclareRobustCommand\lrb{{\normalfont\ttfamily(}}
+\DeclareRobustCommand\rrb{{\normalfont\ttfamily)}}
+\DeclareRobustCommand\false{{\ttfamily false}}
+\DeclareRobustCommand\true{{\ttfamily true}}
+
+%
+% without brackets
+\def\Coordx#1{$x_{#1}$}
+\def\Coordy#1{$y_{#1}$}
+\def\Coordz#1{$z_{#1}$}
+\def\Coord#1{\Coordx{#1},\kern 1pt\Coordy{#1}}
+\def\Coordn{\Coordx{n},\kern 1pt\Coordy{n}}
+\def\CoordIII#1{\Coordx{#1},\kern 1pt\Coordy{#1},\kern 1pt\Coordz{#1}}% HjG
+\def\CAny{\Coordx{},\kern 1pt\Coordy{}}
+\def\CIIIAny{\Coordx{},\kern 1pt\Coordy{},\kern 1pt\Coordz{}}% hv
+% with brackets
+\def\coord#1{(\Coordx{#1},\kern 1pt\Coordy{#1})}
+\def\coordn{(\Coordx{n},\kern 1pt\Coordy{n})}
+\def\coordiii#1{(\Coordx{#1},\kern 1pt\Coordy{#1},\kern 1pt\Coordz{#1})}% hv
+\def\coordx#1{($x_{#1}$)}
+\def\coordy#1{($y_{#1}$)}
+\def\coordz#1{($z_{#1}$)}
+\def\cAny{(\Coordx{},\kern 1pt\Coordy{})}
+\def\ciiiAny{(\Coordx{},\kern 1pt\Coordy{},\kern 1pt\Coordz{})}% hv
+%
+\newskip\BDefaboveskip
+\newskip\BDefbelowskip
+\newskip\BDefinlineskip
+\setlength\BDefaboveskip{0pt plus 2pt}% first-level list topsep
+\setlength\BDefbelowskip{10pt}
+\setlength\BDefinlineskip{6pt}
+%
+\newsavebox\boxdef
+\newenvironment{BDef}
+ {\begin{lrbox}{\boxdef}
+ \def\arraystretch{1.0}
+ \begin{tabular}{@{}l@{}l@{}l@{}}}
+ {\end{tabular}\end{lrbox}
+%
+% braces around next block are needed to stop the list env checking for blank lines
+% and the \aftergroups then for making sure no indentation happens ... as i said
+% urg
+%
+ {\BCmd\fbox{\usebox\boxdef}\endBCmd}
+ \aftergroup\@afterindentfalse\aftergroup\@afterheading
+ }
+\newenvironment{BDef*}
+ {\begin{lrbox}\boxdef
+ \def\arraystretch{1.0}
+ \begin{tabular}{@{}l@{}l@{}l@{}}
+ }
+ {\end{tabular}\end{lrbox}
+ {\begin{BCmd*}\fbox{\usebox\boxdef}\end{BCmd*}}
+ \aftergroup\@afterindentfalse\aftergroup\@afterheading
+ }
+\newenvironment{BCmd}{
+ \@beginparpenalty-\@lowpenalty
+ \topsep\BDefaboveskip
+ \fboxsep3pt
+ \flushleft}
+ {\@endparpenalty\@M
+ \@topsepadd\BDefbelowskip
+ \endflushleft}
+
+\newenvironment{BCmd*}{
+ \@beginparpenalty\@M
+ \topsep\BDefinlineskip
+ \fboxsep3pt
+ \flushleft}
+ {\@endparpenalty5000
+ \endflushleft}
+
+
+\def\OptArgs{\colorbox{black!20}{\texttt{[Options]}}\kern1pt}
+\def\OptArg{\@ifnextchar*\OptArg@i{\OptArg@ii*}}% star version without braces
+\def\OptArg@i*#1{\colorbox{black!20}{\texttt{#1}}\kern1pt}
+\def\OptArg@ii*#1{\colorbox{black!20}{\texttt{[#1]}}\kern1pt}
+\def\DBS{{\ttfamily\textbackslash\textbackslash}}
+
+\def\docauthor#1{\gdef\@docauthor{#1}}
+\docauthor{}
+%\def\author#1{\gdef\@author{#1}\gdef\@docauthor{#1}}
+
+\providecommand\bgImage{}
+\providecommand\bgTitle{}
+\providecommand\LenToUnit[1]{#1\@gobble}
+
+\iffalse
+\renewcommand\maketitle{%
+\thispagestyle{empty}%
+\begin{titlepage}
+\ifpdf
+ \AddToShipoutPicture*{\includegraphics{pst-doc.pdf}}
+ \vspace*{0.3\textheight}
+ \parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}\\[5pt]
+ \parbox{15cm}{\sffamily\Large\@subtitle}
+
+ \vspace{5cm}
+ \parbox{10cm}{\sffamily\@date}
+
+ \vfill
+ ~\\
+ \makebox[.5\textwidth]{\put(0,0){\bgImage}}\\
+ ~
+
+ \vfill
+ \parbox[b]{19cm}{\sffamily\RaggedRight
+ \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\
+ \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{%
+ \bfseries\tabular[t]{@{}l@{}}\@author\endtabular}}
+\else
+ \psset{unit=1cm}
+ \begin{pspicture}(1.6in,0)(23cm,21.7cm)
+ \psframe[fillstyle=solid,linecolor=lightgray,fillcolor=lightgray,linestyle=solid](0,-5.75)(23,10)
+ \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,10)(23,10.5)
+ \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,21.1)(23,21.2)
+ \rput[lb](3,22){\Huge\sffamily\color{Orange!65!Red}\psscalebox{2}{\textbf{PSTricks}}}
+ \rput[lb](3,14.1){\parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}}
+ \rput[lb](3,12.6){\parbox{15cm}{\sffamily\Large\@subtitle}}
+ \rput[lb](3,7.6){\parbox{15cm}{\sffamily\@date}}
+ \rput[lb](3,-2.6){\parbox[b]{19cm}{\sffamily\RaggedRight
+ \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\
+ \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{%
+ \bfseries\shortstack[l]{\@author}
+ %\begin{tabular}[t]{@{}l@{}} \@author\end{tabular}%
+}}}
+ \rput[C](11,4){\bgImage}%
+ \end{pspicture}%
+\fi
+\end{titlepage}
+\setcounter{footnote}{0}%
+\global\let\thanks\relax%
+\global\let\maketitle\relax%
+\global\let\@thanks\@empty%
+\global\let\@author\@empty%
+\global\let\@docauthor\@empty%
+\global\let\@date\@empty%
+\global\let\@title\@empty%
+\global\let\@subtitle\@empty%
+\global\let\title\relax%
+\global\let\author\relax%
+\global\let\date\relax%
+\global\let\and\relax%
+}
+\fi
+
+\newdimen\fullWidth
+\fullWidth=\linewidth
+\advance\fullWidth by \marginparsep
+\advance\fullWidth by \marginparwidth
+\makeatother
+%%
+%% End of file `pst-doc.cls'.
diff --git a/graphics/pstricks/base/doc/pst-doc.ist b/graphics/pstricks/base/doc/pst-doc.ist
new file mode 100644
index 0000000000..3b76b84ca5
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-doc.ist
@@ -0,0 +1,36 @@
+%%
+%% This is file `pst-doc.ist',
+%%
+%% The idea is from Ingo Kloeckl, Latex2e:
+%% Herbert Voss 000726
+%%
+%% This is a MAKEINDEX style file which should be used to
+%% generate the formatted change history for use with the doc
+%% package. The TeX commands used below are defined in
+%% doc.sty. The commands for MAKEINDEX like `level'
+%% `item_x1' are described in `` Makeindex, A General
+%% Purpose, Formatter-Independent Index Processor'' by
+%% Pehong Chen.
+%%
+headings_flag 1 % headings yes
+heading_prefix "\\textbf{" % boldfont
+heading_suffix "}\n" % newline
+quote '"'
+level '>'
+preamble
+ "\\begin{theindex}\n"
+item_1
+ "\\par\\leavevmode\\hangindent10pt\\makebox[10pt][l]{--}"
+item_01
+ "\\par\\leavevmode\\hangindent10pt\\makebox[10pt][l]{--}"
+item_x1
+ "\\par\\leavevmode\\hangindent10pt\\makebox[10pt][l]{--}"
+item_2
+ "\\par\\leavevmode\\hangindent20pt\\makebox[20pt][l]{-- -- }"
+item_12
+ "\\par\\leavevmode\\hangindent20pt\\makebox[20pt][l]{-- -- }"
+item_x2
+ "\\par\\leavevmode\\hangindent20pt\\makebox[20pt][l]{-- -- }"
+%%
+%%
+%% End of file `pst-doc.ist'.
diff --git a/graphics/pstricks/base/doc/pst-doc.pdf b/graphics/pstricks/base/doc/pst-doc.pdf
new file mode 100644
index 0000000000..0718eddae9
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news.sty b/graphics/pstricks/base/doc/pst-news.sty
new file mode 100644
index 0000000000..8ce484574a
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news.sty
@@ -0,0 +1,103 @@
+%% $Id: pst-news.sty 9 2008-01-03 20:22:50Z herbert $
+\ProvidesPackage{pst-news}[2008/02/01 definitions for
+ PSTricks news (hv)]
+%
+%\usepackage{pamathx}% use this if you have the palatino math font
+\usepackage{arev}% use this if you do not have the palatino math font
+%\usepackage[scaled=0.9]{luximono}% use this if you do not have the palatino math font
+%
+\RequirePackage{pstricks}
+\let\PSTfiledate\filedate
+\let\PSTfileversion\fileversion
+\RequirePackage{pst-node}
+\let\NODEfiledate\filedate
+\let\NODEfileversion\fileversion
+\RequirePackage{pst-plot}
+\let\PLOTfiledate\filedate
+\let\PLOTfileversion\fileversion
+\RequirePackage{pst-tree}
+\let\TREEfiledate\filedate
+\let\TREEfileversion\fileversion
+%
+\RequirePackage{showexpl}
+\RequirePackage{makeidx}
+\makeindex
+\RequirePackage{tabularx,array,longtable}
+\SpecialCoor
+\RequirePackage{ragged2e}
+\definecolor{hellgelb}{rgb}{1,1,0.8}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{1,0,0}
+\definecolor{colString}{rgb}{0,0.5,0}
+%
+\usepackage{amsmath}
+\usepackage{tabularx}
+\usepackage{longtable}
+\usepackage{xkvview}
+\usepackage{pst-math}
+\RequirePackage{listings}
+\lstset{%
+ language=PSTricks,%
+ float=hbp,%
+ basicstyle=\ttfamily\small, %
+ identifierstyle=\color{colIdentifier}, %
+ keywordstyle=\color{colKeys}, %
+ stringstyle=\color{colString}, %
+ commentstyle=\color{colComments}, %
+ columns=flexible, %
+ tabsize=4, %
+ frame=single, %
+ extendedchars=true, %
+ showspaces=false, %
+ showstringspaces=false, %
+ numbers=left, %
+ numberstyle=\tiny, %
+ breaklines=true, %
+% backgroundcolor=\color{hellgelb}, %
+ breakautoindent=true, %
+ captionpos=b,%
+ xleftmargin=0pt%
+}
+\lstdefinestyle{syntax}{backgroundcolor=\color{blue!20},numbers=none,xleftmargin=0pt,xrightmargin=0pt,
+ frame=single}
+%
+\RequirePackage[colorlinks,linktocpage]{hyperref}
+\RequirePackage{breakurl}
+\def\UrlFont{\small\ttfamily}
+\makeatletter
+\def\verbatim@font{\small\normalfont\ttfamily}
+\let\Oldpart\part
+\renewcommand\part[1]{\clearpage\Oldpart{#1}}
+\makeatother
+
+%\parindent=0pt
+%
+%\psset{subgriddiv=0,griddots=5,gridlabels=7pt}
+%
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\let\PSTbibliography\bibliography
+\renewcommand\bibliography[1]{\begingroup\RaggedRight\PSTbibliography{#1}\endgroup}
+\def\textat{\char064}
+%
+\usepackage{xspace}
+\def\PS{PostScript\xspace}
+\def\dt{\ensuremath{\,\mathrm{d}t}}
+
+%
+\def\LPack#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Package!#1@\texttt{#1}}}
+\def\nxLPack#1{\texttt{#1}}
+\def\LFile#1{\texttt{#1}\index{#1@\texttt{#1}}\index{File!#1@\texttt{#1}}}
+\def\nxLFile#1{\texttt{#1}}
+\def\Lcs#1{\texttt{\textbackslash#1}\index{#1@\texttt{\textbackslash#1}}\index{Macro!#1@\texttt{\textbackslash#1}}}
+\def\nxLcs#1{\texttt{\textbackslash#1}}
+\def\Lenv#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Environment!#1@\texttt{#1}}}
+\def\Ldim#1{\texttt{\textbackslash#1}\index{#1@\texttt{\textbackslash#1}}\index{Dimension!#1@\texttt{\textbackslash#1}}}
+\def\Lkeyword#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Keyword!#1@\texttt{#1}}}
+\def\Lkeyval#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Value!#1@\texttt{#1}}}
+\def\Loption#1{\texttt{#1}\index{#1@\texttt{#1}}\index{Package option!#1@\texttt{#1}}}
+\def\LPS#1{\texttt{#1}\index{#1@\texttt{#1}}\index{PostScript!#1@\texttt{#1}}}
+\def\Lps#1{\texttt{#1}\index{#1@\texttt{#1}}\index{PostScript!#1@\texttt{#1}}}
+\def\Index#1{#1\index{#1}}
+%
+\endinput
diff --git a/graphics/pstricks/base/doc/pst-news.tex b/graphics/pstricks/base/doc/pst-news.tex
new file mode 100644
index 0000000000..f9e40428f8
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news.tex
@@ -0,0 +1,274 @@
+%% $Id: pst-news.tex 444 2017-04-19 10:55:35Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pstricks,pst-plot,xkvview}
+\let\pstplotFV\fileversion
+\let\pstplotFD\filedate
+\usepackage{pst-eucl,pst-func}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2011}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\subtitle{Summary of the yearly posted news}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+\section{General}
+There exists a new document class \LClass{pst-doc} for writing PSTricks documentations,
+like this news document. It depends on the KOMA-Script document class \LClass{scrartcl}.
+\LClass{pst-doc} defines a lot of special macros to create a good index. Take one of
+the already existing package documentation and look into the source file. Then it will be
+easy to understand, how all these macros have to be used.
+
+When running \Lprog{pdflatex} the title page is created with boxes and inserted
+with the macro \Lcs{AddToShipoutPicture} from the package \LPack{eso-pic}. It
+inserts the background title page image \Lfile{pst-doc-pdf} to use directly
+\Lprog{pdflatex}.
+When running \Lprog{latex} the title page
+ is created with \PST\ macros.This allows to use the Perl script \Lprog{pst2pdf} or
+the package \LPack{pst-pdf} or \LPack{auto-pst-pdf} or any other program/package which
+supports \PS\ code in the document.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+\subsection{New optional argument}
+
+\begin{description}
+\item[\texttt{noxcolor}] load package \LPack{color} instead of \LPack{xcolor};
+\item[\texttt{plain}] do nothing else as a \Lcs{input}\Largb{\nxLPack{pstricks}};
+\item[\texttt{DIA}] a bug fix for the \verb+PSTricks+-export of the grafic program DIA.
+\end{description}
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+
+\subsection{New and modified option for {pspicture}}\label{sec:option}
+
+Table~\ref{tab:pspicture} shows the two new options for the \verb+pspicture+ environment.
+
+\begin{table}[htb]
+\caption{Optionen der \texttt{pspicture}-Umgebung}\label{tab:pspicture}
+\centering
+\begin{tabular}{@{}lll@{}}
+\textrm{\emph{name}} & \emph{meaning} & \emph{default}\\\hline
+\Lkeyword{shift} & vertical shift & 0 \\
+\Lkeyword{showgrid} & show grid & \verb+false+\\
+\end{tabular}
+\end{table}
+
+
+% ---------------------------------------------------------------------------------------
+\subsubsection{\nxLkeyword{shift}}\label{subsubsec:shift}
+% ---------------------------------------------------------------------------------------
+This option is the known one from older \texttt{PSTricks} versions, but now with the
+common syntax for options. The shift is relative to the height of the defined \Lenv{pspicture}
+environment, its lower left corner is by deafult on the base line. For older versions
+the shift depends with its value to the baseline, a negative value raised up the \Lenv{pspicture}
+box. Now the \verb+shift+ option works similiar to the known \Lcs{raisebox} makro, except that
+\Lkeyword{shift} is relative to the box height. A positive \Lkeyword{shift} value raises up the box
+and vice versa for a negative value.
+
+\begin{figure}[htb]
+\centering
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){-0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}(-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0}
+\end{pspicture}\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=-0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\caption{Meaning of the \texttt{shift} option}\label{fig:baseline}
+\end{figure}
+
+%\begin{lstlisting}[caption={Vertikale Verschiebung der Baseline}]
+\begin{lstlisting}
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){-0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}(-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0}
+\end{pspicture}\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=-0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\end{lstlisting}
+
+With \Lkeyword{shift}=\Lkeyval{*}, instead of a value or a length
+it is possible to center the \Lenv{pspicture} box vertically to the baseline
+of the current line.
+
+\begin{LTXexample}[width=4cm]
+\usepackage{pstricks}
+\rule{5mm}{0.5pt}%
+\psframebox{%
+\begin{pspicture}[showgrid=true,
+ shift=*](-0.3,-0.4)(3.2,3.3)
+ \psarc[showpoints=true](1,1){2}{-45}{120}
+\end{pspicture}}\rule{5mm}{0.5pt}
+\end{LTXexample}
+
+
+% ---------------------------------------------------------------------------------------
+\subsubsection{\texttt{showgrid}}\label{subsubsec:showgrid}
+% ---------------------------------------------------------------------------------------
+This version of \texttt{PSTricks} defines internally a special grid style
+
+\begin{lstlisting}
+\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
+\end{lstlisting}
+
+which can be overwritten by the user. This style is only used for the \Lkeyword{showgrid}
+option of the \Lenvpspicture} environment. The macro \Lcs{psgrid} doesn't use this predefined
+style and works in the usual way. However, the user can use it like all
+other self defined styles: \Lcs{psgrid}\Largs{\Lkeyset{style=gridstyle}}.
+
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}[showgrid=true](-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\newpsstyle{gridstyle}{%
+ subgriddiv=2,subgridcolor=lightgray}
+\begin{pspicture}[showgrid=true](-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\newpsstyle{gridstyle}{}
+\begin{pspicture}[showgrid=true](-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}(-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}(-1,0)(2,1)
+ \psgrid
+\end{pspicture}
+\end{LTXexample}
+
+Depending to the internal structure of the \Lenv{pspicture} environment it is not possible
+to set the \Lkeyword{shift} option global by \Lcs{psset}, it must always be locally defined
+with optional part of the parameter, as seen in the above examples.
+
+\subsection{Option \nxLkeyword{gridfont}}
+By default the \Index{grid label}s were printed always in \Index{Helvetica}. With the new keyword \Lkeyword{gridfont}
+one can define another \Index{PostScript Font}. Available are at least
+
+\medskip
+{\ttfamily\noindent
+\Lkeyval{Helvetica} (default) -- \Lkeyval{Helvetica-Narrow} -- \Lkeyval{Times-Roman} -- \Lkeyval{Courier} -- \Lkeyval{AvantGard} --\Lkeyval{NewCenturySchlbk} --
+\Lkeyval{Palatino-Roman} -- \Lkeyval{Bookman-Demi} -- \linebreak \Lkeyval{ZapfDingbats} -- \Lkeyval{Symbol}}
+
+\begin{LTXexample}[width=4cm]
+\usepackage{pstricks}
+\begin{pspicture}[showgrid=true](3,2)
+\end{pspicture}\\[20pt]
+\begin{pspicture}(3,2)
+ \psgrid[style=gridstyle,gridfont=AvantGard-Demi]
+\end{pspicture}\\[20pt]
+\begin{pspicture}(3,2)
+ \psgrid[style=gridstyle,gridfont=ZapfDingbats]
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\subsection{Macro \nxLcs{psLoop}}
+\PST\marginpar[2.17]{2.17} already knows \Lcs{psforeach} and \Lcs{psForeach} for loops. The new
+macro \Lcs{psLoop} allows a loop without defining a variable:
+
+\begin{BDef}
+\Lcs{psLoop}\Largb{n}\Largb{argument}
+\end{BDef}
+
+However, the internal \TeX\ counter \Lctr{psLoopIndex} can be used for own purposes.
+
+\begin{LTXexample}[width=7cm]
+ \psLoop{4}{PSTricks }
+\end{LTXexample}
+
+\begin{LTXexample}[width=7cm]
+\tabular{|c|c|c|c|}
+ \psLoop{3}{PSTricks &}\\\hline
+ A & B & C & D\\\hline
+\endtabular
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}[showgrid](3,3)
+\psLoop{4}{%
+ \psdots(\the\psLoopIndex,\the\psLoopIndex)}
+\end{pspicture}
+\end{LTXexample}
+
+
+%--------------------------------------------------------------------------------------
+\section{The PostScript header files}
+\subsection{\nxLFile{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+
+%--------------------------------------------------------------------------------------
+\subsection{\nxLFile{pst-algparser.pro}}
+%--------------------------------------------------------------------------------------
+
+\section{\nxLcs{psforeach} and \nxLcs{psForeach}}
+%--------------------------------------------------------------------------------------
+
+\section{List of all optional arguments for \texttt{pstricks}}
+
+\xkvview{family=pstricks,columns={key,type,default}}
+
+
+
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news05.pdf b/graphics/pstricks/base/doc/pst-news05.pdf
new file mode 100644
index 0000000000..c6459f23e1
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news05.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news05.tex b/graphics/pstricks/base/doc/pst-news05.tex
new file mode 100644
index 0000000000..a1ddcc64a6
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news05.tex
@@ -0,0 +1,403 @@
+\documentclass[12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+%\usepackage{geometry}
+\usepackage{pst-all}
+\usepackage{showexpl}
+\usepackage{tabularx,array,longtable}
+\SpecialCoor
+\usepackage[colorlinks,linktocpage]{hyperref}
+\def\UrlFont{\small\ttfamily}
+\makeatletter
+\def\verbatim@font{\small\normalfont\ttfamily}
+\makeatother
+%\usepackage{color}
+\definecolor{hellgelb}{rgb}{1,1,0.8}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{1,0,0}
+\definecolor{colString}{rgb}{0,0.5,0}
+%
+\usepackage{listings}
+\lstset{%
+ language=PSTricks,%
+ float=hbp,%
+ basicstyle=\ttfamily\small, %
+ identifierstyle=\color{colIdentifier}, %
+ keywordstyle=\color{colKeys}, %
+ stringstyle=\color{colString}, %
+ commentstyle=\color{colComments}, %
+ columns=flexible, %
+ tabsize=4, %
+ frame=single, %
+ extendedchars=true, %
+ showspaces=false, %
+ showstringspaces=false, %
+ numbers=left, %
+ numberstyle=\tiny, %
+ breaklines=true, %
+% backgroundcolor=\color{hellgelb}, %
+ breakautoindent=true, %
+ captionpos=b,%
+ xleftmargin=0pt%
+}
+
+%\parindent=0pt
+\newcommand\verbI[1]{{\small\texttt{#1}}}
+\newcommand\CMD[1]{{\texttt{\textbackslash#1}}}
+\let\Lcs\CMD
+%
+%\psset{subgriddiv=0,griddots=5,gridlabels=7pt}
+%
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\def\PS{PostScript}
+%
+\begin{document}
+\title{\texttt{PSTricks -- 2005}\\ new macros and bugfixes for the
+basic packages \Lcs{pstricks}, \Lcs{pst-tree}, and \Lcs{pst-node}}
+\author{Herbert Voß\thanks{%
+\url{Herbert.Voss@pstricks.de}}}
+\date{\today}
+
+\maketitle
+
+\begin{abstract}
+This new version of \texttt{pstricks.tex} depends on the also new prologue file
+\texttt{pstricks.pro} (v 1.01) and pst-dots.pro (v. 2.00), which should go into
+the local \TeX-directory \url{$TEXMFLOCAL/dvips/}.
+\end{abstract}
+
+
+\tableofcontents
+
+\clearpage
+
+\part{General informations}
+%--------------------------------------------------------------------------------------
+\section{Color handling}
+%--------------------------------------------------------------------------------------
+The new color package \verb+xcolor+ has a lot of interesting features, but it needs
+some modification to the code of \verb+pstricks.sty+ and \verb+pstricks.tex+. The
+package \verb+pstricks.sty+ superseded the old package \verb+pstcol.sty+, which is
+now obsolet. The version on CTAN now does nothing else as loading \verb+pstricks.sty+.
+
+There are some important facts for using colors inside PSTricks with \LaTeX:
+
+\begin{itemize}
+\item load always \verb+pstricks+ as first package;
+\item use always the \LaTeX\ syntax for defining colors and \textbf{not} the PSTricks own one.\\
+ \verb+\definecolor ...+ is the correct setting!
+\item do not use the PSTricks style for using color, use always \verb+\color{<name>}+.
+\end{itemize}
+
+
+\part{\texttt{pstricks} -- package}
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+New otions:
+
+\begin{description}
+\item[\texttt{noxcolor}] load package \verb+color+ instead of \verb+xcolor+;
+\item[\texttt{plain}] do nothing else as a \CMD{input\{pstricks\}};
+\item[\texttt{DIA}] a bug fix for the \verb+PSTricks+-export of the garfic program DIA.
+\end{description}
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+this file now contains the PostScript code for arcs of an ellipse.
+
+
+\section{\texttt{pstricks.tex}}
+The new version 1.10 has some minor but important changes; it is not compatible
+to older versions when using the vertical shift option for the \verb+pspicture+
+environment.
+
+\subsection{New and modified option for {pspicture}}\label{sec:option}
+
+Table~\ref{tab:pspicture} shows the two new options for the \verb+pspicture+ environment.
+
+\begin{table}[htb]
+\caption{Optionen der \texttt{pspicture}-Umgebung}\label{tab:pspicture}
+\centering
+\begin{tabular}{@{}lll@{}}
+\textrm{\emph{name}} & \emph{meaning} & \emph{default}\\\hline
+\verb+shift+ & vertical shift & $0$ \\
+\verb+showgrid+ & show grid & \verb+false+\\
+\end{tabular}
+\end{table}
+
+
+% ---------------------------------------------------------------------------------------
+\subsubsection{\texttt{shift}}\label{subsubsec:shift}
+% ---------------------------------------------------------------------------------------
+This option is the known one from older \texttt{PSTricks} version, but now with the
+usual syntax for options. The shift is relative to the height of the defined \verb+pspicture+
+environment, its lower left corner is by deafult on the base line. For older versions
+the shift depends with its value to the baseline, a negative value raised up the \verb+pspicture+
+box. Now the \verb+shift+ option works similiar to the known \CMD{raisebox} makro, except that
+\verb+shift+ is relative to the box height. A positive \verb+shift+ value raises up the box
+and vice versa for a negative value.
+
+\begin{figure}[htb]
+\centering
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){-0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}(-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0}
+\end{pspicture}\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=-0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\caption{Meaning of the \texttt{shift} option}\label{fig:baseline}
+\end{figure}
+
+%\begin{lstlisting}[caption={Vertikale Verschiebung der Baseline}]
+\begin{lstlisting}
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){-0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}(-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0}
+\end{pspicture}\textcolor{red}{\rule{5mm}{1pt}}
+\hspace{1cm}%
+\textcolor{red}{\rule{5mm}{1pt}}%
+\begin{pspicture}[shift=-0.5](-0.5,-0.5)(0.5,0.5)
+ \psframe[linecolor=blue](-0.5,-0.5)(0.5,0.5)\rput(0,0){0.5}
+\end{pspicture}%
+\textcolor{red}{\rule{5mm}{1pt}}
+\end{lstlisting}
+
+
+% ---------------------------------------------------------------------------------------
+\subsubsection{\texttt{showgrid}}\label{subsubsec:showgrid}
+% ---------------------------------------------------------------------------------------
+This new version of \texttt{PSTricks} defines internally a special grid style
+
+\begin{lstlisting}
+\newpsstyle{gridstyle}{%
+ subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
+\end{lstlisting}
+
+which can be overwritten by the user. This style is only used for the \verb+showgrid+
+option of the \verb+pspicture+ environment. The macro \verb+\psgrid+ doesn't use this predefined
+style and works in the usual way. However, the user can use it like all
+other self defined styles: \verb+\psgrid[style=gridstyle]+.
+
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}[showgrid=true](-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\newpsstyle{gridstyle}{%
+ subgriddiv=2,subgridcolor=lightgray}
+\begin{pspicture}[showgrid=true](-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\newpsstyle{gridstyle}{}
+\begin{pspicture}[showgrid=true](-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}(-1,0)(2,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}(-1,0)(2,1)
+ \psgrid
+\end{pspicture}
+\end{LTXexample}
+
+Depending to the internal structure of the \verb+pspicture+ environment it is not possible
+to set the \verb+shift+ option global by \CMD{psset}, it must always be locally defined
+with optional part of the parameter, as seen in the above examples.
+
+
+%--------------------------------------------------------------------------------------
+\subsection{New arrows}
+%--------------------------------------------------------------------------------------
+
+\verb+pstricks now contains the missing arrow ends \verb+]-[+ and \verb+)-(+.
+
+\begin{LTXexample}[width=4cm]
+\begin{pspicture}(4,3)
+ \psset{arrowscale=2,linewidth=1pt}
+ \psline{]-[}(4,0)
+ \psline{)-(}(0,1)(4,1)
+ \psline{)->}(0,2)(4,2)
+ \psline{]->>}(0,3)(4,3)
+\end{pspicture}
+\end{LTXexample}
+
+
+%--------------------------------------------------------------------------------------
+\subsection{\Lcs{psdot} and \Lcs{psdots}}
+%--------------------------------------------------------------------------------------
+\verb+\psdot*+ and \verb+\psdots*+ are now supported by PSTricks. Both were missing
+in the old versions.
+
+
+%--------------------------------------------------------------------------------------
+\subsection{Other changes}
+%--------------------------------------------------------------------------------------
+\texttt{pstricks.tex} defined the PostScript subroutines for arcs of an ellipse.
+This code now moved into the appropriate \texttt{pstricks.pro}, which holds the
+pure PostScript code of \texttt{PSTricks}. This in not important for user until
+the newest \texttt{pstricks.pro} \textbf{and} \texttt{pstricks.tex} are installed.
+
+
+\subsection{Bugfixes}
+\subsubsection{\texttt{origin}}
+
+There were several mailings in the past to the \verb+origin+ option, which worked the other
+way round than expected. Now the coordinates work realtive to the current origin.
+
+
+\begin{LTXexample}[width=3cm]
+\begin{pspicture}(-1,-1)(2,1.25)
+ \psaxes{->}(0,0)(-1,-1)(2,1.25)
+ \psset{linewidth=1.5pt}
+ \parabola[linestyle=dashed](-1,1)(0,0)
+ \parabola[origin={0.5,-0.5}](-1,1)(0,0)
+ \qdisk(0.5,-0.5){2pt}
+\end{pspicture}
+\end{LTXexample}
+
+\subsubsection{Empty parameter}
+\sloppy
+To prevent some problems with empty arrow definitions in macros like \verb+\psline[...]{}(..)(...)+,
+which makes no sense, but should be possible, there is now a check before setting the values.
+
+
+\subsection{\CMD{psscalebox} and \CMD{psscaleboxto}}
+To prevent clashes with the \verb+graphicx+ package, which also defines a \CMD{scalebox} macro
+with different syntax,
+\verb+PSTricks+ now defines \CMD{psscalebox} and \CMD{psscaleboxto}. For some compatibility reasons the old
+names are still supported. With the new names it doesn'r matter if \verb+pstricks+ is loaded before or after
+\verb+graphicx+. There are also some other changes:
+
+
+\begin{verbatim}
+ \scalebox -> \psscalebox
+ \scaleboxto -> \psscaleboxto
+ \rotateleft -> \psrotateleft
+ \rotateright -> \psrotateright
+ \rotatedown -> \psrotatedown
+\end{verbatim}
+
+%--------------------------------------------------------------------------------------
+\section{New fill options}
+%--------------------------------------------------------------------------------------
+For the fillstyles \verb+hlines+, \verb+vlines+ and \verb+crosshatch+ there are two new
+options to get increasing line widths and/or increasing whitespace. Both options are
+lengths and can be set as usual for PSTricks, with or without a unit.
+
+\bigskip\noindent
+\begin{tabularx}{\linewidth}{lXc}
+\emph{name} & \emph{meaning} & \emph{default}\\\hline
+\verb|hatchsepinc| & additional increasing space between two hatch lines & 0\tabularnewline
+\verb|hatchwidthinc| & value for the increasing line width of two hatch lines & 0
+\end{tabularx}
+
+
+
+\bigskip
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,3)
+ \psframe[fillstyle=vlines,hatchangle=0,hatchsep=.5pt,%
+ hatchwidth=1pt,hatchwidthinc=0.25pt](\linewidth,3)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,3)
+ \psframe[fillstyle=hlines,hatchangle=0,%
+ hatchwidth=1pt,hatchsep=0.5pt,hatchsepinc=0.1pt](\linewidth,3)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,3)
+ \psframe[fillstyle=vlines,hatchangle=0,hatchsep=0.6pt,%
+ hatchwidth=1pt,hatchwidthinc=0.3pt,hatchangle=60,
+ hatchcolor=red](\linewidth,3)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,3)
+ \psframe[fillstyle=hlines,hatchangle=0,hatchangle=-60,%
+ hatchwidth=1pt,hatchsep=0.5pt,hatchsepinc=0.1pt,
+ hatchcolor=blue](\linewidth,3)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,4)
+ \pscircle[fillstyle=vlines,hatchangle=0,hatchsep=0.6pt,%
+ hatchwidth=1pt,hatchwidthinc=0.3pt,hatchangle=90,
+ hatchcolor=red](2,2){2}
+ \pscircle[fillstyle=vlines,hatchangle=0,hatchsep=0.6pt,%
+ hatchwidth=1pt,hatchwidthinc=0.3pt,hatchangle=-45,
+ hatchcolor=green](7,2){2}
+ \pscircle[fillstyle=hlines,hatchangle=0,hatchsep=0.6pt,%
+ hatchwidth=1pt,hatchwidthinc=0.3pt,hatchangle=45,
+ hatchcolor=blue](12,2){2}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,3)
+ \psframe[fillstyle=crosshatch,hatchangle=0,hatchangle=-90,%
+ hatchwidth=1pt,hatchsep=0.5pt,hatchsepinc=0.1pt,
+ hatchcolor=blue](\linewidth,3)
+\end{pspicture}
+\end{LTXexample}
+
+\part{\texttt{pst-node} -- package}
+
+\section{\texttt{pst-node.tex}}
+\subsection{\CMD{nccircle}}
+With some modification to \CMD{psarc\@iv} it is now possible to get the loops in any direction
+and above or below the node.
+
+\begin{LTXexample}[width=.35\linewidth]
+\psscalebox{1.5}{%
+ \circlenode{A}{A}
+ \nccircle{->}{A}{1.5em} \nbput{foo}
+ \nccircle{<-}{A}{-1.5em}\naput{bar}}
+%
+\hspace{1cm}
+\psscalebox{1.5}{%
+ \circlenode{A}{A}
+ \nccircle{<-}{A}{1.5em} \nbput{foo}
+ \nccircle{->}{A}{-1.5em}\naput{bar}}
+\end{LTXexample}
+
+\part{\texttt{pst-tree} -- package}
+\section{\texttt{pst-tree.tex}}
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news06.pdf b/graphics/pstricks/base/doc/pst-news06.pdf
new file mode 100644
index 0000000000..ce9dff713c
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news06.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news06.tex b/graphics/pstricks/base/doc/pst-news06.tex
new file mode 100644
index 0000000000..719c6174ca
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news06.tex
@@ -0,0 +1,198 @@
+\documentclass[12pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[latin1]{inputenc}
+%\usepackage{geometry}
+\usepackage{pst-all,pst-news}
+\let\CMD\cs
+\usepackage{showexpl}
+\usepackage{tabularx,array,longtable}
+\SpecialCoor
+\usepackage[colorlinks,linktocpage]{hyperref}
+\def\UrlFont{\small\ttfamily}
+\makeatletter
+\def\verbatim@font{\small\normalfont\ttfamily}
+\makeatother
+\definecolor{hellgelb}{rgb}{1,1,0.8}
+\definecolor{colKeys}{rgb}{0,0,1}
+\definecolor{colIdentifier}{rgb}{0,0,0}
+\definecolor{colComments}{rgb}{1,0,0}
+\definecolor{colString}{rgb}{0,0.5,0}
+%
+\usepackage{listings}
+\lstset{%
+ language=PSTricks,%
+ float=hbp,%
+ basicstyle=\ttfamily\small, %
+ identifierstyle=\color{colIdentifier}, %
+ keywordstyle=\color{colKeys}, %
+ stringstyle=\color{colString}, %
+ commentstyle=\color{colComments}, %
+ columns=flexible, %
+ tabsize=4, %
+ frame=single, %
+ extendedchars=true, %
+ showspaces=false, %
+ showstringspaces=false, %
+ numbers=left, %
+ numberstyle=\tiny, %
+ breaklines=true, %
+% backgroundcolor=\color{hellgelb}, %
+ breakautoindent=true, %
+ captionpos=b,%
+ xleftmargin=0pt%
+}
+
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\def\PS{PostScript}
+%
+\begin{document}
+\title{\texttt{PSTricks -- 2006}\\ new macros and bugfixes for the
+basic packages \Lcs{pstricks}, \Lcs{pst-tree}, and \Lcs{pst-node}}
+\author{Herbert Voß\thanks{%
+\url{Herbert.Voss@pstricks.de}}}
+\date{\today}
+
+\maketitle
+
+\begin{abstract}
+This new version of \LFile{pstricks.tex} depends on the also new prologue file
+\LFile{pstricks.pro} (v 1.01) and \LFile{pst-dots.pro} (v. 2.00), which should go into
+the local \TeX-directory \url{$TEXMFLOCAL/dvips/}.
+\end{abstract}
+
+
+\tableofcontents
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\section{linecap}
+%--------------------------------------------------------------------------------------
+This was already introduced with version 1.14, but I forgot to mentioned it.
+For the line ends one can use the ,,arrows``{} \texttt{c-c}, but only for the ends. For dashed
+lines the option \verb+linecap+ can be set to the value 1 to get the dashes with
+rounded ends, too.
+
+\begin{pspicture}(5,3)
+\psline[linestyle=dashed,linewidth=8pt,dash=5mm 5mm,linecap=2](0,2.5)(5,2.5)
+\psline[linestyle=dashed,linewidth=8pt,dash=5mm 5mm,linecap=1](0,1.5)(5,1.5)
+\psline[linestyle=dashed,linewidth=8pt,dash=5mm 5mm](0,0.5)(5,0.5)
+\end{pspicture}
+
+\begin{lstlisting}
+\begin{pspicture}(5,3)
+\psline[linestyle=dashed,linewidth=8pt,dash=5mm 5mm,linecap=2](0,2.5)(5,2.5)
+\psline[linestyle=dashed,linewidth=8pt,dash=5mm 5mm,linecap=1](0,1.5)(5,1.5)
+\psline[linestyle=dashed,linewidth=8pt,dash=5mm 5mm](0,0.5)(5,0.5)
+\end{pspicture}
+\end{lstlisting}
+
+It is obvious that only the value 1 makes sense for the dashed lines.
+
+\section{Dots}
+Long time ago, Etienne Riga sent the code for some new dotstyles
+which are now part of pstricks.
+
+\psset{dotscale=1.5}
+\let\Loption\texttt
+\def\multiDot#1{\multido{\nA=0+1}{3}{\psdot[dotstyle=#1]\kern1em}}
+\def\cmultiDot#1{\multido{\nA=0+1}{3}{\psdot*[dotstyle=#1]\kern1em}}%}
+\begin{longtable}{@{}l@{\kern2em}>{\ttfamily}c>{\ttfamily}c|
+ l@{\kern2em}>{\ttfamily}c>{\ttfamily}c@{}}
+\emph{Name} & \Lcs{psdot} & \Lcs{psdot*} &
+\emph{Name} & \Lcs{psdot} & \Lcs{psdot*} \\\hline
+\endhead
+\Loption{*} & \multiDot{*} & \cmultiDot{*} &%\\
+\Loption{o} & \multiDot{o} & \cmultiDot{o}\\
+\Loption{Bo} & \multiDot{Bo} & \cmultiDot{Bo}&%\\
+\Loption{x} & \multiDot{x} & \cmultiDot{x}\\
+\Loption{+} & \multiDot{+} & \cmultiDot{+}&%\\
+\Loption{B+} & \multiDot{B+} & \cmultiDot{B+}\\
+\Loption{Add} & \multiDot{Add} & \cmultiDot{Add}&%\\
+\Loption{BoldAdd} & \multiDot{BoldAdd} & \cmultiDot{BoldAdd}\\
+\Loption{Oplus} & \multiDot{Oplus} & \cmultiDot{Oplus}&%\\
+\Loption{BoldOplus} & \multiDot{BoldOplus} & \cmultiDot{BoldOplus}\\
+\Loption{SolidOplus} & \multiDot{SolidOplus} & \cmultiDot{SolidOplus} &
+\Loption{Hexagon} & \multiDot{Hexagon} & \cmultiDot{Hexagon}\\
+\Loption{BoldHexagon} & \multiDot{BoldHexagon} & \cmultiDot{BoldHexagon}&
+\Loption{SolidHexagon} & \multiDot{SolidHexagon} & \cmultiDot{SolidHexagon}\\
+\Loption{asterisk} & \multiDot{asterisk} & \cmultiDot{asterisk}&%\\
+\Loption{Basterisk} & \multiDot{Basterisk} & \cmultiDot{Basterisk}\\
+\Loption{Asterisk} & \multiDot{Asterisk} & \cmultiDot{Asterisk}&%\\
+\Loption{BoldAsterisk} & \multiDot{BoldAsterisk} & \cmultiDot{BoldAsterisk}\\
+\Loption{SolidAsterisk} & \multiDot{SolidAsterisk} & \cmultiDot{SolidAsterisk}&
+\Loption{oplus} & \multiDot{oplus} & \cmultiDot{oplus}\\
+\Loption{otimes} & \multiDot{otimes} & \cmultiDot{otimes}&
+\Loption{Otimes} & \multiDot{Otimes} & \cmultiDot{Otimes}\\
+\Loption{BoldOtimes} & \multiDot{BoldOtimes} & \cmultiDot{BoldOtimes}&
+\Loption{SolidOtimes} & \multiDot{SolidOtimes} & \cmultiDot{SolidOtimes}\\
+\Loption{Mul} & \multiDot{Mul} & \cmultiDot{Mul}&%\\
+\Loption{BoldMul} & \multiDot{BoldMul} & \cmultiDot{BoldMul}\\
+\Loption{|} & \multiDot{|} & \cmultiDot{|}&%\\
+\Loption{B|}\iffalse\index{B*@\texttt{B}|}\fi & \multiDot{B|} & \cmultiDot{B|}\\
+\Loption{Bar} & \multiDot{Bar} & \cmultiDot{Bar}&%\\
+\Loption{BoldBar} & \multiDot{BoldBar} & \cmultiDot{BoldBar}\\
+\Loption{Bullet} & \multiDot{Bullet} & \cmultiDot{Bullet}&%\\
+\Loption{Circle} & \multiDot{Circle} & \cmultiDot{Circle}\\
+\Loption{BoldCircle} & \multiDot{BoldCircle} & \cmultiDot{BoldCircle}&%\\
+\Loption{square} & \multiDot{square} & \cmultiDot{square}\\
+\Loption{Bsquare} & \multiDot{Bsquare} & \cmultiDot{Bsquare} &
+\Loption{square*} & \multiDot{square*} & \cmultiDot{square*}\\
+\Loption{Square} & \multiDot{Square} & \cmultiDot{Square}&%\\
+\Loption{BoldSquare} & \multiDot{BoldSquare} & \cmultiDot{BoldSquare}\\
+\Loption{SolidSquare} & \multiDot{SolidSquare} & \cmultiDot{SolidSquare}&
+\Loption{diamond} & \multiDot{diamond} & \cmultiDot{diamond}\\
+\Loption{Bdiamond} & \multiDot{Bdiamond} & \cmultiDot{Bdiamond}&%\\
+\Loption{diamond*} & \multiDot{diamond*} & \cmultiDot{diamond}\\
+\Loption{Diamond} & \multiDot{Diamond} & \cmultiDot{Diamond}&%\\
+\Loption{BoldDiamond} & \multiDot{BoldDiamond} & \cmultiDot{BoldDiamond}\\
+\Loption{SolidDiamond} & \multiDot{SolidDiamond} & \cmultiDot{SolidDiamond}&
+\Loption{triangle} & \multiDot{triangle} & \cmultiDot{triangle}\\
+\Loption{Btriangle} & \multiDot{Btriangle} & \cmultiDot{Btriangle}&
+\Loption{triangle*} & \multiDot{triangle*} & \cmultiDot{triangle*}\\
+\Loption{Triangle} & \multiDot{Triangle} & \cmultiDot{Triangle}&%\\
+\Loption{BoldTriangle} & \multiDot{BoldTriangle} & \cmultiDot{BoldTriangle}\\
+\Loption{SolidTriangle} & \multiDot{SolidTriangle} & \cmultiDot{SolidTriangle}&
+\Loption{pentagon} & \multiDot{pentagon} & \cmultiDot{pentagon}\\
+\Loption{Bpentagon} & \multiDot{Bpentagon} & \cmultiDot{Bpentagon}&%\\
+\Loption{pentagon*} & \multiDot{pentagon*}& \cmultiDot{pentagon*}\\
+\Loption{Pentagon} & \multiDot{Pentagon} & \cmultiDot{Pentagon}&%\\
+\Loption{BoldPentagon} & \multiDot{BoldPentagon} & \cmultiDot{BoldPentagon}\\
+\Loption{SolidPentagon} & \multiDot{SolidPentagon} & \cmultiDot{SolidPentagon}&
+\Loption{Hexagon} & \multiDot{Hexagon} & \cmultiDot{Hexagon}\\
+\Loption{BoldHexagon} & \multiDot{BoldHexagon} & \cmultiDot{BoldHexagon}&
+\Loption{SolidHexagon} & \multiDot{SolidHexagon} & \cmultiDot{SolidHexagon}
+\end{longtable}
+
+
+\section{\texttt{pstricks.pro}}
+The PostScript header file defines the following functions and constants, which
+can be used
+in arguments for \CMD{psplot} or any other macro, which reads PostScript code.
+
+\begin{lstlisting}[basicstyle=\ttfamily\footnotesize]
+/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def% return 0 for negative arguments
+/Atan { /atan load stopped { pop pop 0 } if } def% return 0 if atan not known
+/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter)
+/Div { dup 0 eq { pop } { div } ifelse } def % control the division
+/NET { neg exch neg exch T } def % change coordinate system to the negative one
+/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, epects 2 parameter
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian
+%----------------- hv added 20050516 ---------------
+/Pi 3.14159265359 def
+/TwoPi 6.28318530718 def
+/Euler 2.71828182846 def
+/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees
+/DegtoRad { Pi mul 180 div } bind def % viceversa
+\end{lstlisting}
+
+\section{Packages}
+The package \texttt{pst-char} is now part of \texttt{pst-text} and the
+package \texttt{pst-ghsb} is now part of \texttt{pst-grad}. The macros
+and enviroments will work in the same way.
+
+The documented source code of \texttt{pstricks} and \texttt{pst-node} is
+now available as a pdf file with a source which can be run by pdf\LaTeX.
+Rolf Niepraschk modified the old sources from Timothy Van Zandt for
+running with \LaTeX\ and/or pdf\LaTeX.
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news08.pdf b/graphics/pstricks/base/doc/pst-news08.pdf
new file mode 100644
index 0000000000..428653ebf2
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news08.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news08.tex b/graphics/pstricks/base/doc/pst-news08.tex
new file mode 100644
index 0000000000..e4dd6dfce2
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news08.tex
@@ -0,0 +1,862 @@
+\documentclass[11pt]{article}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenc}
+\usepackage{pst-news}
+%
+\begin{document}
+\title{\texttt{PSTricks -- 2008}\\ new macros and bugfixes for the
+basic packages \nxLFile{pstricks}, \nxLFile{pst-plot}, \nxLFile{pst-tree},\\ and \nxLFile{pst-node}}
+\author{Herbert Voß\thanks{%
+\url{Herbert.Voss@pstricks.de}; \newline thanks to Patrick Drechsler.}}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+
+\subsection{Error messages}
+\begin{itemize}
+\item Loading the package \LPack{pstricks} by \LaTeX\ will now write a message
+into the file list of file version and date for the file \LFile{pstricks.pro}.
+\item A frequently done error is choosing a file name for the document, which is
+already a name of one PSTricks package, e.\,g. \LFile{pstricks.tex}. The \Index{error message}
+in the log file was not really helpful. There is now an extended message
+(example for a dcoument file called \LFile{pstricks.tex}):
+{\small\begin{verbatim}
+! LaTeX Error: `pstricks.tex' is a forbidden name for your document,
+ it is already a name of a package.
+
+See the LaTeX manual or LaTeX Companion for explanation.
+Type H <return> for immediate help.
+ ...
+
+l.13 \documentclass
+ {article}
+? H
+Choose another name for your document
+\end{verbatim}
+}
+\end{itemize}
+
+\subsection{Optional arguments}
+\LPack{pstricks} supports \Index{transparent colors} with Ghostscript's \LPS{.setopacityalpha},
+\LPS{.setblendmode}, and \LPS{.setshapealpha}. These functions are not known to
+\Index{V\TeX} or Adobes \Index{Distiller}. The optional argument \Loption{vtex} disables transparencies
+and \Loption{distiller} overrides the \Index{Ghostscript} functions with the ones from the \Index{Distiller}.
+
+
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\PSTfileversion -- \PSTfiledate)}
+%--------------------------------------------------------------------------------------
+
+\subsection{Makro \cs{psDEBUG}}
+\texttt{pstricks.tex} defines the option \texttt{PstDebug=0|1}, which can be used for
+debugging. The new macro \cs{psDEBUG} makes it easier to write some debugging
+information into the package files. The macro is only valid, if \texttt{PstDebug=1}
+is set, otherwise the macro does nothing.
+
+\begin{verbatim}
+\psDEBUG[optional arg]{text}
+\end{verbatim}
+
+\cs{psDEBUG} writes the argument \texttt{text} into the log file.
+Without an optional argument the word \texttt{pstricks} is used. The following output
+of the log file
+
+\begin{lstlisting}
+...
+<key:xticksize>: setting ticksize to max
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line 26.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line 26.
+<pst@@hlabels>: xticksizeC=0.0pt
+...
+\end{lstlisting}
+
+was possible with \verb+\psset{PstDebug=1}+\footnote{Can also be used locally for a macro when used as optional argument
+in the usual way.}
+and inside of \texttt{pstricks-add} with
+(only the first for example):
+\begin{lstlisting}
+...
+ \psDEBUG[key:ticksize]{setting ticksize}
+...
+\end{lstlisting}
+
+
+
+\subsection{Option \texttt{shift}}
+The optional argument \Lkeyword{shift} can be used for a vertical alignment of the
+\Lenv{pspicture} box. With \Lkeyword{shift}=\Lkeyval{*}, instead of a value or a length
+it is possible to center the \Lenv{pspicture} box vertically to the baseline
+of the current line.
+
+\begin{LTXexample}[width=4cm]
+\usepackage{pstricks}
+\rule{5mm}{0.5pt}%
+\psframebox{%
+\begin{pspicture}[showgrid=true,
+ shift=*](-0.3,-0.4)(3.2,3.3)
+ \psarc[showpoints=true](1,1){2}{-45}{120}
+\end{pspicture}}\rule{5mm}{0.5pt}
+\end{LTXexample}
+
+\subsection{Option \texttt{gridfont}}
+By default the \Index{grid label}s were printed always in \Index{Helvetica}. With the new keyword \Lkeyword{gridfont}
+one can define another \Index{PostScript Font}. Available are at least
+
+\medskip
+{\ttfamily\noindent
+\Lkeyval{Helvetica} (default) -- \Lkeyval{Helvetica-Narrow} -- \Lkeyval{Times-Roman} -- \Lkeyval{Courier} -- \Lkeyval{AvantGard} --\Lkeyval{NewCenturySchlbk} --
+\Lkeyval{Palatino-Roman} -- \Lkeyval{Bookman-Demi} -- \linebreak \Lkeyval{ZapfDingbats} -- \Lkeyval{Symbol}}
+
+\begin{LTXexample}[width=4cm]
+\usepackage{pstricks}
+\begin{pspicture}[showgrid=true](3,2)
+\end{pspicture}\\[20pt]
+\begin{pspicture}(3,2)
+ \psgrid[style=gridstyle,gridfont=AvantGard-Demi]
+\end{pspicture}\\[20pt]
+\begin{pspicture}(3,2)
+ \psgrid[style=gridstyle,gridfont=ZapfDingbats]
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\subsection{\texttt{linejoin}}
+Connecting lines can be done in several ways and is controlled on PS level
+by the \LPS{setlinejoin} command. With this version of PSTricks it is
+possible to controll this by an optional argument, called \Lkeyword{linejoin}.
+It is preset to 0 and can take values of 0,1,2. Other values will have
+no effect.
+
+\begin{LTXexample}[width=4cm]
+\psset{linewidth=3mm,unit=0.8}
+\begin{pspicture}[showgrid=true](3,2)
+ \psline(0,0)(1,2)(2,0)(3,2)
+\end{pspicture}\\[10pt]
+\begin{pspicture}[showgrid=true](4,2)
+ \psline[linejoin=1](0,0)(1,2)(2,0)(3,2)(4,0)%
+\end{pspicture}\\[10pt]
+\begin{pspicture}[showgrid=true](3,2)
+ \psline[linejoin=2](0,0)(1,2)(2,0)(3,2)%
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+\subsection{\texttt{linecap}}
+The value of \Lkeyword{linecap} determines how the line ends are drawn:
+
+\begin{description}
+\item[0] lines are cut (default)
+\item[1] lines are ended by a filled semicircle of radius 0.5$\cdot$\Ldim{pslinewidth}
+\item[2] lines are ended by a filled half square of radius 0.5$\cdot$\Ldim{pslinewidth}
+\end{description}
+
+The following example shows that using \Lkeyword{linecap} for lines is the same
+than using the \Index{arrow} option.
+
+\begin{LTXexample}[width=4cm]
+\begin{pspicture}[showgrid=true](4,4)%
+ \psset{linewidth=5mm}
+ \psline[arrows=C-C](0,3.75)(4,3.75)
+ \psline[linecap=2](0,3)(4,3)
+ \psline[arrows=c-c](0,2.25)(4,2.25)
+ \psline[linecap=1](0,1.5)(4,1.5)
+ \psline[arrows=-](0,0.75)(4,0.75)
+ \psline(4,0)
+\end{pspicture}
+\end{LTXexample}
+
+Using this optional argument makes only sense in some special cases, because
+it is the same as the \Index{arrow type} \Lkeyval{c-c}. But the arrows are not part
+of the \Index{current path} and \Index{filling} an \Index{open curve} with the \Lkeyword{linecap} option
+is different to a curve using the \Lkeyval{c-c} arrow.
+
+\begin{LTXexample}[width=3cm,wide]
+\psset{unit=5cm,linewidth=5mm}
+\begin{pspicture}(-0.2,-0.6)(0.2,0.5)%
+\def\curve{\pscurve(-.1,.1)(-.15,.15)(0,.2)(.15,.15)(.1,.1)}
+\rput(0,.2){\psset{arrows=c-c}\curve}
+\rput(0,-.2){%
+ \psset{fillstyle=solid,fillcolor=red,arrows=c-c}
+ \curve}
+\rput(0,-.6){%
+ \psset{fillstyle=solid,fillcolor=red,linecap=1}
+ \curve}
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\subsection{New arrowtype \texttt{D>} and \texttt{D>D>}}
+All arrows are drawn as polygons. The new arrow type \Lkeyval{D>} or \Lkeyval{<D} for the other way round,
+draws its lines as bezier curves, which looks nicer for big arrows.
+
+\begin{LTXexample}[width=4cm,wide]
+\psset{arrowscale=5}
+\begin{pspicture}(4,2)
+\psline{<D<D-D>D>}(0,2)(4,2)
+\psline[arrows=<-D>,arrowlength=2](0,1)(4,1)
+\psline[arrowinset=0]{<D-D>}(0,0.25)(4,0.25)
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\subsection{Fill style \texttt{penrose}}
+
+The valid optional arguments are \texttt{penrose}, \texttt{penrose*}, and \texttt{hatchcolor}.
+The star version is only seen, if there is a fillcolor or a background different to white.
+
+\begin{LTXexample}[pos=t,wide]
+\begin{pspicture}(3,3)
+\psframe[fillstyle=penrose](3,3)
+\end{pspicture} \qquad
+\begin{pspicture}(3,3)
+\psframe[fillstyle=penrose,psscale=0.5](3,3)
+\end{pspicture} \qquad
+\begin{pspicture}(3,3)
+\psccurve[fillstyle=penrose*,fillcolor=red!30,hatchcolor=blue](0,1.5)(1.5,3)(3,1.5)(1.5,0)
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\subsection{Transparent colors}
+The package \LPack{pstricks-add} already defined a fillstyle for
+transparency colors by using the \Index{Ghostscript}'s \Index{blendmode}.
+It now moves into the main \LPack{pstricks} package, together with
+another possibility for creating transparent colors.
+Transparency is only seen with the \Index{PDF} output (version 1.4 or greater),
+as nearly all PostScript viewer cannot show transparencies.
+
+Loading the \LPack{pstricks} package with the option \Loption{vtex}, disables
+the transparency effekts and everything works as before.
+
+\subsubsection{Options \texttt{strokeopacity} and \texttt{opacity}}
+For the existing fill style \Lkeyval{solid} the new option \Lkeyword{opacity}
+can be used to get also transparent colors. It is predefined by 1 ($0\ldots1$), which
+is the old behaviour, no \Index{transpareny}. The option is valid only for PostScripts
+fill commands. Lines and curves can be transparent with setting the option\index{transparent lines}
+\Lkeyword{strokeopacity}, which can have a different value than the \Lkeyword{opacity} option.
+
+\begin{LTXexample}[width=4cm,wide]
+\begin{pspicture}[linewidth=1cm](4,4)
+ \psline[linecolor=red](0,0)(4,4)
+ \psline[linecolor=blue,strokeopacity=0.5](0,4)(4,0)
+ \psline[linecolor=green,strokeopacity=0.5](0,3.5)(4,3.5)
+ \psline[linecolor=yellow,strokeopacity=0.5](0,0.5)(4,0.5)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=4cm,wide]
+\begin{pspicture}[linewidth=1cm](4,4)
+\psline[linecolor=red](0,0)(4,4)
+\pscircle*[opacity=0.5](2,2){2}
+\psline[linecolor=blue,strokeopacity=0.6](0,4)(4,0)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=4cm,wide]
+\begin{pspicture}[linewidth=3mm](4,5.5)
+ \multido{\rA=0.0+0.5}{9}{%
+ \psline[linecolor=red!40](\rA,0)(\rA,5)}
+ \multido{\rA=0.0+0.5,\rB=0.0+0.1}{11}{%
+ \psline[arrows=<D-D>,linecolor=blue,
+ linewidth=5pt,arrowscale=1.5,
+ strokeopacity=\rB](0,\rA)(4,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=5cm,wide]
+\begin{pspicture}(5,5)
+ \psset{fillstyle=solid}
+ \psframe[fillcolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,opacity=0.7](2,2)(5,5)
+ \psframe[fillcolor=green,opacity=0.7](1,0)(4,3)
+ \pscircle[fillcolor=cyan,
+ opacity=0.5](1.5,3.5){1.25}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=5cm,wide]
+\begin{pspicture}(5,5)
+ \psset{fillstyle=solid}
+ \psframe[fillcolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,opacity=0.3](2,2)(5,5)
+ \psframe[fillcolor=green,opacity=0.3](1,0)(4,3)
+ \pscircle[fillcolor=cyan,
+ opacity=0.5](1.5,3.5){1.25}
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\subsubsection{Fill style \texttt{shape}}
+There is now one more \Index{fill style} for \Index{transparent colors}: \Lkeyword{shape}
+with using the \Lkeyword{shapealpha} value and one of the possible blendmodes:
+\begin{verbatim}
+ /Normal ->0
+ /Compatible ->1
+ /Screen ->2
+ /Multiply ->3
+\end{verbatim}
+
+
+The fill style \Lkeyval{solid} uses
+\Index{Ghostscript}'s \LPS{.setopacityalpha} function
+and the new style \Lkeyval{shape} and the \Lkeyword{blendmode} together with \LPS{.setshapealpha}.
+\Lkeyword{shapealpha} is predefined
+with 0.6 and both alpha values can be chosen from the range $0\le\alpha\le1$.
+
+\begin{pspicture}(5,5)% default blendmode
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{0}}
+\end{pspicture}
+\hfill
+\begin{pspicture}(5,5)
+ \psset{blendmode=1}% type /Compatible
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{1}}
+\end{pspicture}
+
+\begin{pspicture}(5,5)
+ \psset{blendmode=2}% type /Screen
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{2}}
+\end{pspicture}
+\hfill
+\begin{pspicture}(5,5)
+ \psset{blendmode=3}% type /Multiply
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{3}}
+\end{pspicture}
+
+\begin{lstlisting}
+\begin{pspicture}(5,5)% default blendmode
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{0}}
+\end{pspicture}
+\hfill
+\begin{pspicture}(5,5)
+ \psset{blendmode=1}% type /Compatible
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{1}}
+\end{pspicture}
+
+\begin{pspicture}(5,5)
+ \psset{blendmode=2}% type /Screen
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{2}}
+\end{pspicture}
+\hfill
+\begin{pspicture}(5,5)
+ \psset{blendmode=3}% type /Multiply
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+ \rput(1.5,3.5){\huge\textbf{3}}
+\end{pspicture}
+\end{lstlisting}
+
+
+\iffalse
+\begin{LTXexample}[width=5cm,wide]
+\begin{pspicture}(5,5)
+ \psset{blendmode=4}% type /Hardlight
+ \psframe*[linecolor=red](0,1)(3,4)
+ \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5)
+ \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3)
+ \pscircle[fillcolor=cyan,fillstyle=shape,
+ shapealpha=0.3](1.5,3.5){1.25}
+\end{pspicture}
+\end{LTXexample}
+
+\fi
+
+\clearpage
+
+\subsection{\nxLcs{addtopsstyle}}
+\begin{verbatim}
+\addtopsstyle{style-name}{settings}
+\end{verbatim}
+
+This macro allows to add some more settings to an existing \Index{style}.
+If the style is not defined, then \Lcs{addtopsstyle} behaves like the
+already defined \Lcs{newpsstyle} macro.
+
+\begin{LTXexample}[width=5cm,wide]
+\newpsstyle{Fiber}{linewidth=2pt}
+\begin{pspicture}(5,5)
+ \psline[style=Fiber](0,0)(5,1)
+ \addtopsstyle{Fiber}{linecolor=green}
+ \psline[style=Fiber](0,1)(5,2)
+ \addtopsstyle{Fiber}{linestyle=dotted}
+ \psline[style=Fiber](0,2)(5,3)
+ \addtopsstyle{Fiber}{}
+ \psline[style=Fiber](0,3)(5,4)
+ \addtopsstyle{Fibber}{linecolor=red}
+ \psline[style=Fibber](0,4)(5,5)
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+
+\subsection{\nxLcs{pscircleOA}}
+\begin{verbatim}
+\pscircleOA[settings](xO,yO)(xA,yA)
+\end{verbatim}
+
+$(x_0, y_0)$ is the center and $(x_A, y_A)$ a given point of the
+circle. The radius is calculated by \TeX.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid=true](-2,0)(8,8)
+\pscircleOA(6,4)(4,4)
+\pscircleOA[linecolor=blue](4,6)(4,4)
+\pscircleOA[linewidth=2pt,linecolor=yellow](3,5)(4,4)
+\pscircleOA*[opacity=0.3,linecolor=red](2,2)(4,4)
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{\nxLcs{psTextFrame}}
+\begin{verbatim}
+\psTextFrame[settings](x1,y1)(x2,y2){Text}
+\end{verbatim}
+
+The \emph{Text} cannot have a linebreak. In case it is needed, put the \emph{Text}
+into a \Lenv{minipage} or \Lcs{parbox}, as seen in the following example. The
+\Lkeyword{ref}-option allows different placing and the \Lkeyword{rot}-option allows
+the \Index{rotating} of the \emph{Text}. The macro itself first uses the
+\Lcs{psframe} and the \Lcs{rput} macro with \Index{calculated coordinates}.
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid=true](0,-0.5)(10,10)
+ \psTextFrame[linecolor=lightgray,ref=l](0,0.5)(4,1.5){Hallo}
+ \psTextFrame[linecolor=blue](2,4)(4,7){\color{blue}Hallo}
+ \psTextFrame[linestyle=dashed](9,9)(10,10){\huge H}
+ \psTextFrame*[linecolor=red,linestyle=dashed](7,7)(9,9){\Huge H}
+ \psTextFrame*[linecolor=red!40,ref=lB](7,4)(9,6){\Huge H}
+ \psTextFrame*[linecolor=blue!40,ref=rt](7,1)(9,3){\Huge H}
+ \psTextFrame[linestyle=dashed](4.5,0)(6.5,10){%
+ \parbox{2cm}{\centering Here comes some more text over several
+ lines, which is also horizontally and vertically centered and
+ written in a parbox.}}
+ \psTextFrame*[linecolor=cyan!20,rot=90](.5,2)(1.5,10){%
+ \parbox{8cm}{\centering Here comes some more text over several
+ lines and rotated by 90 degrees.}}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Special coordinates}
+
+Additionally to the existing \Index{!-operator} for \Index{PostScript} coordinates,
+there is new a \Index{*-operator}, which invokes the \Index{algebraic parser} before
+the coordinates are passed to the default !-operator. The syntax
+is pretty easy: \verb=(<value> {f(x)})=. In the following example the
+predefined value of Pi\index{$\pi$} from \LFile{pstricks.pro} is used. The x value
+and the function must be enclosed
+in braces when they contain spaces, round braces or sybolic names, like \verb+Pi+ for the
+x value.
+
+\begin{LTXexample}[width=5cm,wide]
+\SpecialCoor
+\begin{pspicture}(0,-1)(5,1)
+ \psaxes{->}(0,0)(0,-1)(5,1)
+ \psline(0,0)(*{Pi} {sqrt(abs(cos(x)))})
+ \psline{<->}(*{Pi} {cos(x)})(*5 {sin(x)*cos(x)})
+\end{pspicture}
+\end{LTXexample}
+
+For a macro definition of the algebraic function the \verb+\string+ command
+has to be used, otherwise \TeX{} expects the math mode in the following
+example.
+
+\begin{LTXexample}[width=4cm,wide]
+\def\F{\string x^2 }
+\begin{pspicture}[showgrid=true](2,4)
+ \psline[linecolor=red](*1 {\F} )(*2 {\F} )
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\subsection{Octogon-Symbol}
+
+An octogon symbol was added.
+\begin{verbatim}
+\newpsfontdotH{Octogon}[1 0 0 1 0 0]{PSTricksDotFont}{(f)}{(g)}
+\newpsfontdotH{BoldOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(F)}{(g)}
+\newpsfontdot{SolidOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(g)}
+\end{verbatim}
+
+\begin{LTXexample}[width=4cm,wide]
+\psset{dotscale=4}
+\begin{pspicture}[showgrid=true](4,4)
+\psdot[dotstyle=Octogon](1,1)
+\psdot[dotstyle=BoldOctogon](2,2)
+\psdot[dotstyle=SolidOctogon](3,3)
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{Code changes}
+
+\begin{verbatim}
+% hv 2007-10-16 to fix the bug in pst-node with \\[name=...]
+\def\ps@ifnextchar#1#2#3{%
+ \let\reserved@d= #1%
+ \def\reserved@a{#2}\def\reserved@b{#3}%
+ \futurelet\@let@token\ps@ifnch}
+\def\ps@ifnch{%
+ \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi
+ \reserved@b
+}
+\end{verbatim}
+
+
+
+
+%--------------------------------------------------------------------------------------
+\section{The PostScript header files}
+\subsection{\texttt{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+\begin{verbatim}
+/Pyth2 { % Pythagoras, xA yA xB yB
+ 3 -1 roll % xA xB yB yA
+ sub % xA xB yB-yA
+ 3 1 roll % yB-yA xA xB
+ sub % yB-yA xA-xB
+ Pyth } def
+\end{verbatim}
+
+This new PostScript function allows to calculate the distance
+between two points, given by their coordinates whereas the
+existing \LPS{/Pyth} does this for two values.
+
+\subsection{\texttt{pst-dots.pro}}
+\verb+pst-dots.pro+ ist the file which defines the so called softfont PSTRocksFontDot, which
+collects all PSTricks symbols, which are not part of one of the standard PostScript fonts.
+The octogon symbol is defined as:
+\begin{verbatim}
+ /OctogonPath {
+ 228 550 moveto 7 { -456 0 rlineto 45 rotate } repeat closepath
+ } def
+ /SolidOctogon { OctogonPath fill } def
+ /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def
+ /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def
+%
+\end{verbatim}
+
+
+\part{\texttt{pst-node} -- package}
+
+\section{\texttt{pst-node.tex} (\NODEfileversion -- \NODEfiledate)}
+
+\subsection{Bugfix for \texttt{psmatrix}}
+A long standing bug with \Lenv{psmatrix} and using the \Lkeyword{name} option is now fixed.
+The following works as expected:
+
+\begin{LTXexample}[width=2cm]
+\begin{psmatrix}[rowsep=5mm]
+[name=a]a\\
+[name=b]b\\[1cm]
+[name=c]c\\
+\end{psmatrix}
+\ncline{a}{b}
+\ncarc{a}{c}
+\end{LTXexample}
+
+An optional argument after \Lcs{\textbackslash} is now scanned in the correct way.
+
+
+\subsection{New option \texttt{pcRef}}
+There is a new option \Lkeyword{pcRef} for the \Lcs{ncangles} connection\index{node connection}. By default,
+the reference point for the \Lkeyword{armA} option is the border of the node. This makes
+it difficult to get horizontically aligned lines for different node images.
+With \texttt{pcRef=true} the node center is the reference point and the connection is
+still drawn from the border of the node.
+
+The first three images show the default behaviour:
+
+\makebox[\linewidth]{%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.2}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=0.5cm}
+ \ncangles{A}{B1}
+ \ncangles{A}{B2}
+ \ncangles{A}{B3}
+ \ncangles{A}{B4}
+\end{pspicture}
+%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.4}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=0.5cm}
+ \ncangles{A}{B1}
+ \ncangles{A}{B2}
+ \ncangles{A}{B3}
+ \ncangles{A}{B4}
+\end{pspicture}
+%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.8}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=0.5cm}
+ \ncangles{A}{B1}
+ \ncangles{A}{B2}
+ \ncangles{A}{B3}
+ \ncangles{A}{B4}
+\end{pspicture}
+}
+
+The next three images display the influence of \texttt{pcRef=true}; the horizontal line
+for the three examples is on the same height:
+
+\makebox[\linewidth]{%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.2}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=1cm}
+ \ncangles[pcRef=true]{A}{B1}
+ \ncangles[pcRef=true]{A}{B2}
+ \ncangles[pcRef=true]{A}{B3}
+ \ncangles[pcRef=true]{A}{B4}
+\end{pspicture}
+%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.4}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=1cm}
+ \ncangles[pcRef=true]{A}{B1}
+ \ncangles[pcRef=true]{A}{B2}
+ \ncangles[pcRef=true]{A}{B3}
+ \ncangles[pcRef=true]{A}{B4}
+\end{pspicture}
+%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.8}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=1cm}
+ \ncangles[pcRef=true]{A}{B1}
+ \ncangles[pcRef=true]{A}{B2}
+ \ncangles[pcRef=true]{A}{B3}
+ \ncangles[pcRef=true]{A}{B4}
+\end{pspicture}
+}
+
+\begin{lstlisting}
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.2}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=1cm}
+ \ncangles[pcRef=true]{A}{B1}
+ \ncangles[pcRef=true]{A}{B2}
+ \ncangles[pcRef=true]{A}{B3}
+ \ncangles[pcRef=true]{A}{B4}
+\end{pspicture}
+%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.4}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=1cm}
+ \ncangles[pcRef=true]{A}{B1}
+ \ncangles[pcRef=true]{A}{B2}
+ \ncangles[pcRef=true]{A}{B3}
+ \ncangles[pcRef=true]{A}{B4}
+\end{pspicture}
+%
+\begin{pspicture}(5,4)
+ \cnode(2.5,3.5){0.8}{A}
+ \cnode(0.5,1){0.2}{B1}
+ \cnode(1.5,1){0.4}{B2}
+ \cnode(2.6,1){0.6}{B3}
+ \cnode(4,1){0.8}{B4}
+ \psset{angleB=90,angleA=-90,armA=1cm}
+ \ncangles[pcRef=true]{A}{B1}
+ \ncangles[pcRef=true]{A}{B2}
+ \ncangles[pcRef=true]{A}{B3}
+ \ncangles[pcRef=true]{A}{B4}
+\end{pspicture}
+\end{lstlisting}
+
+\part{\texttt{pst-plot} -- package}
+
+\section{\texttt{pst-plot.tex} (\PLOTfileversion -- \PLOTfiledate)}
+
+\iffalse
+
+\subsection{Axes}
+The behaviour of the optional argument \Lkeyword{Dx} changed. Using
+negative values will now decrease the labels with the correct
+value of \Lkeyword{Dx}:
+
+\psset{xunit=1cm}
+\begin{LTXexample}[wide,width=6cm]
+\begin{pspicture}(-0.5,-1)(6,4)
+ \psaxes[Dy=-2, dy=1,
+ Ox=4000, Dx=-1000, dx=1.5]{->}(10,4)
+\end{pspicture}
+\end{LTXexample}
+
+\vspace{1cm}
+\begin{pspicture}(-0.5,-1)(10,3)
+ \psaxes[Dy=2, dy=1, Ox=4000, Dx=1000, dx=1.5]{->}(10,3)(0,0)
+ \rput(5,2){Positive values for Dx und Dy}
+\end{pspicture}
+
+\begin{pspicture}(-0.5,-1)(10,3)
+ \psaxes[Dy=-2, dy=1, Ox=4000, Dx=-1000, dx=1.5]{->}(10,3)(0,0)
+ \rput(5,2){Negative values for Dx und Dy}
+\end{pspicture}
+
+\begin{lstlisting}
+\begin{pspicture}(-0.5,-1)(10,3)
+ \psaxes[Dy=2, dy=1, Ox=4000, Dx=1000, dx=1.5]{->}(10,3)(0,0)
+ \rput(5,2){Positive values for Dx und Dy}
+\end{pspicture}
+
+\begin{pspicture}(-0.5,-1)(10,3)
+ \psaxes[Dy=-2, dy=1, Ox=4000, Dx=-1000, dx=1.5]{->}(10,3)(0,0)
+ \rput(5,2){Negative values for Dx und Dy}
+\end{pspicture}
+\end{lstlisting}
+%\clearpage
+
+\fi
+\subsection{New options \texttt{LineToXAxis} and \texttt{LineToYAxis}}
+
+
+\psset{xunit=0.0333cm,yunit=2.5cm}
+\begin{pspicture}(0,-1)(400,1)
+ \psline{->}(0,0)(400,0)
+ \psline{->}(0,-1)(0,1)
+ \psplot[plotstyle=LineToXAxis,linestyle=dashed,plotpoints=50,
+ linecolor=red!40,
+ showpoints=true,dotstyle=o,dotsize=0.2]{0}{360}{x sin}
+\end{pspicture}
+
+\begin{lstlisting}
+\psset{xunit=0.0333cm,yunit=2.5cm}
+\begin{pspicture}(0,-1)(400,1)
+ \psline{->}(0,0)(400,0)
+ \psline{->}(0,-1)(0,1)
+ \psplot[plotstyle=LineToXAxis,linestyle=dashed,plotpoints=50,
+ linecolor=red!40,
+ showpoints=true,dotstyle=o,dotsize=0.2]{0}{360}{x sin}
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\psset{xunit=0.0333cm,yunit=2.5cm}
+\begin{pspicture}(0,-1.2)(400,1.4)
+ \psline{->}(0,0)(390,0)
+ \psline{->}(0,-1.1)(0,1.2)
+ \psplot[plotstyle=LineToYAxis,linestyle=dashed,plotpoints=50,
+ linecolor=blue!40,
+ showpoints=true]{0}{360}{x cos}
+\end{pspicture}
+
+\begin{lstlisting}
+\psset{xunit=0.0333cm,yunit=2.5cm}
+\begin{pspicture}(0,-1.2)(400,1.4)
+ \psline{->}(0,0)(390,0)
+ \psline{->}(0,-1.1)(0,1.2)
+ \psplot[plotstyle=LineToYAxis,linestyle=dashed,plotpoints=50,
+ linecolor=blue!40,
+ showpoints=true]{0}{360}{x cos}
+\end{pspicture}
+\end{lstlisting}
+
+
+\part{\texttt{pst-tree} -- package}
+\section{\texttt{pst-tree.tex} (\TREEfileversion -- \TREEfiledate)}
+There was a bug with \texttt{style=...} due to a missing \Lcs{use\textat par} in
+\Lcs{pstree\textat ii}.
+
+
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news09.pdf b/graphics/pstricks/base/doc/pst-news09.pdf
new file mode 100644
index 0000000000..08453d9927
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news09.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news09.tex b/graphics/pstricks/base/doc/pst-news09.tex
new file mode 100644
index 0000000000..4a656a8566
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news09.tex
@@ -0,0 +1,298 @@
+%% $Id: pst-news09.tex 165 2015-07-26 07:27:55Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\usepackage[utf8]{inputenc}
+\usepackage{pst-plot}
+\let\pstplotFV\fileversion
+\let\pstplotFD\filedate
+\usepackage{pst-node}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-tree}
+\let\psttreeFV\fileversion
+\let\psttreeFD\filedate
+\usepackage{pst-eucl}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2009}}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- 2009}\\ \Large new macros and bugfixes for the
+basic packages \nxLFile{pstricks}, \nxLFile{pst-plot}, and \nxLFile{pst-node}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+\section{General}
+There exists a new document class \LClass{pst-doc} for writing PSTricks documentations,
+like this news document. It depends on the KOMA-Script document class \LClass{scrartcl}.
+\LClass{pst-doc} defines a lot of special macros to create a good index. Take one of
+the already existing package documentation and look into the source file. Then it will be
+easy to understand, how all these macros have to be used.
+
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+
+\subsection{New optional argument}
+With the new optional argument \Lkeyval{97} \LPack{pstricks} has the old behaviour of the
+version of 1997. The \Lenv{pspicture} environment then has only a value as
+optional argument, which shifts the box in vertical direction. The new options
+\Lkeyword{shift} and \Lkeyword{showgrid} do not work in this case.
+The support of transparency colors is also disabled.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+\subsection{Makro \nxLcs{next}}
+To prevent problems with other packages which also define a \Lcs{next}
+macro, it is now renamed to \Lcs{ps@next}. This should be not important
+for the user, because it is used only by the base system itself.
+
+\subsection{Makro \nxLcs{psDEBUG}}
+\LPack{pstricks} defines the option \texttt{PstDebug=0|1}, which can be used for
+debugging. The new macro \Lcs{psDEBUG} makes it easier to write some \Index{debugging}
+information into the package files. The macro is only valid, if \Lkeyword{PstDebug}=1
+is set, otherwise the macro does nothing.
+
+\begin{BDef}
+\Lcs{psDEBUG}\OptArgs\Largb{text}
+\end{BDef}
+
+\Lcs{psDEBUG} writes the argument \Larg{text} into the log file.
+Without an optional argument the word \Larg{pstricks} is used. The following output
+of the log file
+
+\begin{lstlisting}
+...
+<key:xticksize>: setting ticksize to max
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <7> on input line 26.
+LaTeX Font Info: External font `cmex10' loaded for size
+(Font) <5> on input line 26.
+<pst@@hlabels>: xticksizeC=0.0pt
+...
+\end{lstlisting}
+
+was possible with \Lcs{psset}\Largb{\Lkeyword{PstDebug}}=1\footnote{Can also be used locally for a
+macro when used as optional argument
+in the usual way.}
+and inside of \LPack{pstricks-add} with
+(only the first for example):
+\begin{lstlisting}
+...
+ \psDEBUG[key:ticksize]{setting ticksize}
+...
+\end{lstlisting}
+
+\subsection{Special Coordinates}
+The macros \Lcs{SpecialCoor} and the corresponding \Lcs{NormalCoor} can now be used for
+the \Index{radius} of \Index{arc}s and \Index{circle}s. With a preceeding \Lnotation{!} character the length can
+be of any PostScript expression and will be taken with the unit pt in user coordinates:
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}[showgrid=true](-3,-3)(3,3)
+\pscircle[linecolor=red](0,0){1cm}
+\SpecialCoor
+\pscircle[linecolor=blue](0,0){!3 sqrt}
+\NormalCoor
+\psarc[linewidth=2pt](0,0){2cm}{90}{270}
+\SpecialCoor
+\psarc[linecolor=green](0,0){! 60 sin dup add }{90}{270}
+\end{pspicture}
+\end{LTXexample}
+
+\SpecialCoor
+
+\subsection{\nxLcs{psarcAB} and \nxLcs{psarcnAB}}
+
+\begin{BDef}
+\Lcs{psarcAB}\OptArgs\OptArg*{\Largb{arrows}}\coord{C}\coord{A}\coord{B}\\
+\Lcs{psarcnAB}\OptArgs\OptArg*{\Largb{arrows}}\coord{C}\coord{A}\coord{B}
+\end{BDef}
+
+$(x_C, y_C)$ is the center and $(x_A, y_A)$ $(x_B, y_B)$ are two given points of the
+\Index{circle}. The angles for the \Index{arc} are calculated by \TeX. The arc is drawn from the first
+to the second point. The radius is the distance from the center to the second point.
+The first point can have another distance, it is only used for calculating the angle.
+The following examples need the package \LPack{pst-eucl}.
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}(-3,-3)(3,3)
+\pstTriangle[PosAngle={180,0,90}](-3,0){A}(3,0){B}(0,3){C}
+\pstCircleOA{I}{A}
+\pstMiddleAB{A}{B}{Iab}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=blue!50]{%
+ \psarcAB(C)(A)(B)
+ \psarcnAB(Iab)(B)(A)}
+\pstMiddleAB{A}{C}{Iac}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=red!50]{%
+ \psarcnAB(I)(A)(C)
+ \psarcAB(Iac)(C)(A)}
+\pstMiddleAB{B}{C}{Ibc}
+\pscustom[linestyle=none,fillstyle=solid,fillcolor=green!50]{%
+ \psarcAB(I)(B)(C)
+ \psarcnAB(Ibc)(C)(B)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{Makro \nxLcs{psPline}}
+\begin{BDef}
+\Lcs{psPline}\OptArgs\coord1\coord2\coord3
+\end{BDef}
+
+The first point P1 is a projection onto the line of $\overline{P_2P_3}$
+and connected with drawing a line similiar to \Lcs{psline}. This macro
+has three mandatory arguments for the three points.
+
+\begin{LTXexample}[pos=t]
+\psset{unit=3}
+\begin{pspicture}[showgrid=true](3,2)
+\pspolygon(0,1)(3,2)(2.5,0)
+\psPline[linestyle=dashed,arrowscale=2]{->}(0,1)(3,2)(2.5,0)
+\psPline[linestyle=dashed,arrowscale=2]{->}(3,2)(2.5,0)(0,1)
+\psPline[linestyle=dashed,arrowscale=2]{->}(2.5,0)(0,1)(3,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+%--------------------------------------------------------------------------------------
+\section{The PostScript header files}
+\subsection{\nxLFile{pstricks.pro}}
+Only cosemetic changes to the code to make it more readable.
+%--------------------------------------------------------------------------------------
+\subsection{\nxLFile{pst-node.pro}}
+Only cosemetic changes to the code to make it more readable.
+
+\part{\nxLPack{pst-node} -- package}
+
+\section{\nxLFile{pst-node.tex} (\pstnodeFV -- \pstnodeFD)}
+
+There was a bug in \Lcs{fnode}. It is now fixed.
+
+foo
+
+ z \quad
+ \pnode{testL1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqL}
+ \pnode(0,2ex){testL2}
+ \quad
+ =
+ \quad%
+ \pnode{testR1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqR}
+ \pnode(0,2ex){testR2}
+ \quad
+ z
+ \ncline[linecolor=red]{testL1}{testR1}
+ \ncline[linecolor=blue]{testL2}{testR2}
+
+bar
+
+\bigskip now with an aligned node
+\psset{nodealign=true}
+
+foo
+
+ z \quad
+ \pnode{testL1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqL}
+ \pnode(0,2ex){testL2}
+ \quad
+ =
+ \quad%
+ \pnode{testR1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqR}
+ \pnode(0,2ex){testR2}
+ \quad
+ z
+ \ncline[linecolor=red]{testL1}{testR1}
+ \ncline[linecolor=blue]{testL2}{testR2}
+
+bar
+
+
+\begin{lstlisting}
+foo
+
+ z \quad
+ \pnode{testL1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqL}
+ \pnode(0,2ex){testL2}
+ \quad
+ =
+ \quad%
+ \pnode{testR1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqR}
+ \pnode(0,2ex){testR2}
+ \quad
+ z
+ \ncline[linecolor=red]{testL1}{testR1}
+ \ncline[linecolor=blue]{testL2}{testR2}
+
+bar
+
+\bigskip now with an aligned node
+\psset{nodealign=true}
+
+foo
+
+ z \quad
+ \pnode{testL1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqL}
+ \pnode(0,2ex){testL2}
+ \quad
+ =
+ \quad%
+ \pnode{testR1}
+ \fnode[linecolor=lightgray,framesize=6pt 50pt](0,.5ex){eqR}
+ \pnode(0,2ex){testR2}
+ \quad
+ z
+ \ncline[linecolor=red]{testL1}{testR1}
+ \ncline[linecolor=blue]{testL2}{testR2}
+
+bar
+\end{lstlisting}
+
+
+\part{\nxLPack{pst-plot} -- package}
+
+\section{\nxLFile{pst-plot.tex} (\pstplotFV -- \pstplotFD)}
+
+To be more consistent to other macro names there are now the names
+\Lcs{psparametricplot}, \Lcs{psfileplot}, \Lcs{pslistplot}, and
+\Lcs{psdataplot}. The old macros without the preceeding \verb+ps+
+still work!
+
+There is now a new \PS boolean variable which can control loops.
+With setting \texttt{/\Lps{ps@Exit} true def} you can leave a loop
+for plotting a function with \Lcs{psplot} and \Lcs{psparametricplot}.
+
+
+\part{\nxLPack{pst-tree} -- package}
+\section{\nxLFile{pst-tree.tex} (\psttreeFV -- \psttreeFD)}
+
+The package \LPack{pst-tree} now uses the advanced key handling from \LPack{xkeyval}. The reason
+why it moved from the base into the contrib sections, where all packages uses \LPack{xkeyval}.
+
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news10.pdf b/graphics/pstricks/base/doc/pst-news10.pdf
new file mode 100644
index 0000000000..98de904ecd
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news10.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news10.tex b/graphics/pstricks/base/doc/pst-news10.tex
new file mode 100644
index 0000000000..d4c018d92e
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news10.tex
@@ -0,0 +1,926 @@
+%% $Id: pst-news10.tex 697 2017-12-30 19:04:03Z herbert $
+\documentclass[11pt,english,BCOR=10mm,DIV12,bibliography=totoc,parskip=false,headings=small,,
+ headinclude=false,footinclude=false,oneside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pstricks}
+\let\pstricksFV\fileversion
+\let\pstricksFD\filedate
+\usepackage{pst-plot}
+\let\pstplotFV\fileversion
+\let\pstplotFD\filedate
+%\usepackage{xkvview}
+\usepackage{pst-eucl,pst-func}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2010}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+
+\addbibresource{PSTricks.bib}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- 2010}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+\section{General}
+There exists a new document class \LClass{pst-doc} for writing PSTricks documentations,
+like this news document. It depends on the KOMA-Script document class \LClass{scrartcl}.
+\LClass{pst-doc} defines a lot of special macros to create a good index. Take one of
+the already existing package documentation and look into the source file. Then it will be
+easy to understand, how all these macros have to be used.
+
+When running \Lprog{pdflatex} the title page is created with boxes and inserted
+with the macro \Lcs{AddToShipoutPicture} from the package \LPack{eso-pic}. It
+inserts the background title page image \Lfile{pst-doc-pdf} to use directly
+\Lprog{pdflatex}.
+When running \Lprog{latex} the title page
+ is created with \PST\ macros.This allows to use the Perl script \Lprog{pst2pdf} or
+the package \LPack{pst-pdf} or \LPack{auto-pst-pdf} or any other program/package which
+supports \PS\ code in the document.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+\subsection{New optional argument}
+
+With the setting of the optional argument \Loption{pdf} the package \LPack{auto-pst-pdf} will be loaded
+by PSTricks. This requires that you run \Lprog{pdflatex} as
+
+\begin{BDef}
+\Lprog{pdflatex} \texttt{-{}-}\Loption{shell-escape} \texttt{<file>} & \% \TeX\,Live users\\
+\Lprog{pdflatex} \texttt{-{}-}\Loption{enable-write18} \texttt{<file>} & \% MiK\TeX\ users
+\end{BDef}
+
+The package exports the \Lenv{pspicture} environments into single images which are collected in
+a created file \texttt{<file>-pics.pdf} and inserted automatically in the last \Lprog{pdflatex}
+run.
+
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+
+\subsection{Coordinates}
+With the setting \Lcs{SpecialCoor} the package allows different kinds of coordinates.
+The macro \Lcs{uput} can now be used in a different way.
+The default behaviour for nodes with a relative point puts its argument \emph{without} rotation
+on the line $\overline{AB}$. When using the prefix > before the node or the $x$-value for
+cartesian coordinates, the behaviour is different. Now the angle between the line $\overline{OB}$
+and the horizontal line
+is taken into account and the placement of the argument of \Lcs{uput} is different to
+the default behaviour.
+
+\begin{LTXexample}[width=7cm]
+\begin{pspicture}[showgrid](-0.25,-0.25)(6,5)
+\pnodes(0,3){A}(3,1){B}
+\psline[showpoints](A)(B)
+\uput[-90](A){A}\uput[-90](B){B}
+\psline[linestyle=dashed](A)(3,4)
+\psline[linestyle=dashed](A)(3,5)
+\psline[linestyle=dashed](A)(3,3)
+\psline[linestyle=dashed](6,2)
+\psline[linestyle=dashed](B)(6,1)
+\psarc{->}(0,3){2.5}{0}{(3,1)}
+\psarc{->}(3,1){2.5}{0}{(3,1)}
+\uput*{1cm}[(B)](A){foo} \uput*{1cm}[(B)](>A){bar}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{New optional arguments}
+The new arguments are only valid for the macros \Lcs{psellipse}, \Lcs{pscircle}, \Lcs{psarc}.
+\Lcs{psellipticarc}, \Lcs{pscurve}, \Lcs{psplot}, and \Lcs{psparametricplot}.
+
+\medskip
+\begin{tabular}{@{} l >{\em}l l l @{}}\toprule
+\emph{name} & type & \emph{default} & \emph{description}\\\midrule
+\Lkeyword{dashcolor} & color & \nxLcs{relax} & for colored dashed lines \\
+\Lkeyword{startLW} & length & \Lcs{pslinewidth} & starting linewidth \\
+\Lkeyword{endLW} & length & \Lcs{pslinewidth} & ending linewidth \\
+\Lkeyword{startWL} & integer& 380 & starting wave length\\
+\Lkeyword{endWL} & integer& 780 & ending wave length \\
+\Lkeyword{variableLW} & boolean & \false & use variable linewidth\\
+\Lkeyword{variableColor} & boolean & \false & use variable color\\\bottomrule
+\end{tabular}
+
+\bigskip
+\begingroup
+\psset{linewidth=2mm,linestyle=dashed}
+\begin{pspicture}(4,-4)
+\psline[linecolor=blue,dashcolor=red,linearc=0.5](0,0)(4,0)(4,-4)
+\psline[linecolor=blue,dashcolor=cyan,linearc=0.5](0,0)(0,-4)(4,-4)
+\end{pspicture}\quad
+\begin{pspicture}(4,4)
+\psframe[linecolor=blue,dashcolor=green,framearc=0.5](0,0)(4,4)
+\end{pspicture}
+\quad \psset{linecap=2,dash=5mm 5mm }
+\begin{pspicture}(4,-4)
+\psline[linecolor=black,dashcolor=black!40,linecap=0](0,0)(4,-4)
+\psline[linecolor=blue,dashcolor=red,linearc=0.5](0,0)(4,0)(4,-4)
+\psline[linecolor=blue,dashcolor=cyan,linearc=0.5](0,0)(0,-4)(4,-4)
+\end{pspicture}
+\endgroup
+
+\begin{lstlisting}
+\psset{linewidth=2mm,linestyle=dashed}
+\begin{pspicture}(4,-4)
+\psline[linecolor=blue,dashcolor=red,linearc=0.5](0,0)(4,0)(4,-4)
+\psline[linecolor=blue,dashcolor=cyan,linearc=0.5](0,0)(0,-4)(4,-4)
+\end{pspicture}\quad
+\begin{pspicture}(4,4)
+\psframe[linecolor=blue,dashcolor=green,framearc=0.5](0,0)(4,4)
+\end{pspicture}
+\quad \psset{linecap=2,dash=5mm 5mm }
+\begin{pspicture}(4,-4)
+\psline[linecolor=black,dashcolor=black!40,linecap=0](0,0)(4,-4)
+\psline[linecolor=blue,dashcolor=red,linearc=0.5](0,0)(4,0)(4,-4)
+\psline[linecolor=blue,dashcolor=cyan,linearc=0.5](0,0)(0,-4)(4,-4)
+\end{pspicture}
+\end{lstlisting}
+
+
+\begin{LTXexample}[width=7cm,wide=true]
+\psset{endLW=15pt}
+\begin{pspicture}(-3.5,-2.5)(3.5,2.5)
+\psellipse[linejoin=2,variableLW,startLW=1pt,
+ linecolor=green!40](0,0)(3,1)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=7cm,wide=true]
+\psset{endLW=15pt}
+\begin{pspicture}(-2.5,-2.5)(2.5,2.5)
+\pscircle[variableLW,startLW=1pt,
+ linecolor=blue!40]{2}
+\end{pspicture}
+\end{LTXexample}
+
+%
+\begin{LTXexample}[width=7cm,wide=true]
+\psset{endLW=15pt}
+\begin{pspicture}(-2.5,-2.5)(2.5,2.5)
+\psarc[variableLW,startLW=1pt,
+ linecolor=red!40](0,0){2}{10}{300}
+\end{pspicture}
+\end{LTXexample}
+
+%
+\begin{LTXexample}[width=7cm,wide=true]
+\psset{endLW=15pt}
+\begin{pspicture}(-3.5,-2.5)(3.5,2.5)
+\psellipticarc[variableLW,startLW=1pt,
+ linecolor=black!40](0,0)(3,1){90}{30}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=7cm,wide=true]
+\begin{pspicture}(-2.5,-2.5)(2.5,2.5)
+\pscurve[variableLW,startLW=1pt,endLW=20pt,
+ variableColor](-1,0.5)(-2,1)(2,2)(-1,-2)(2,-2)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=7cm,wide=true]
+\begin{pspicture}(-2.5,-2.5)(2.5,2.5)
+\pscurve[variableLW,startLW=1pt,endLW=20pt]%
+ (-1,0.5)(-2,1)(2,2)(-1,-2)(2,-2)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-5,-3)(5,3)
+\psplot[variableLW,startLW=1pt,endLW=20pt,
+ linecolor=magenta!60,variableColor,
+ algebraic,plotpoints=3000,startWL=500,
+ endWL=700]{-5}{5}{2*sin(2*x)+cos(x)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\psset{endLW=24pt}
+\begin{pspicture}(-5,-5)(5,5)
+\psparametricplot[variableLW,startLW=1pt,
+ endLW=60pt,linecolor=red,variableColor,
+ algebraic,plotpoints=3000,plotstyle=curve,
+ opacity=0.4,strokeopacity=0.4,
+ endWL=600]{-5}{5}{t*sin(t) | t*cos(t)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+
+
+\subsection{Macro \nxLcs{psellipse}}
+
+To rotate an ellipse the already existing keyword \Lkeyword{rot} can be
+used. This is easier than using the \Lcs{rput} command and its optional
+argument for rotating.
+\xLkeyword{rot}\xLkeyword{vlines}\xLkeyword{linecolor}
+\begin{LTXexample}[width=6cm,wide=true]
+\psset{unit=0.25}
+\begin{pspicture}(-1,5)(20,18)
+\psclip{\psellipse[linecolor=red,
+ rot=-12.606](5.821,10.04)(6.633,5.103)}
+ \psellipse[linecolor=blue,fillstyle=vlines,
+ rot=39.29](13.141,11.721)(6.8,5.4)
+\endpsclip
+\psellipse[linecolor=blue,rot=39.29](13.1,11.7)(6.8,5.4)
+\end{pspicture}
+
+\begin{pspicture}(-1,5)(20,18)
+\psellipse[linecolor=blue,rot=-39.29,
+ fillstyle=vlines](13.1,11.7)(6.8,5.4)
+\psclip{\psellipse[linecolor=red,rot=12.6,
+ fillstyle=vlines](5.8,10)(6.6,5.1)}
+ \psellipse*[linecolor=white,rot=-39.29](13.1,11.7)(6.8,5.4)
+\endpsclip
+\psellipse[linecolor=blue,rot=-39.29](13.1,11.7)(6.8,5.4)
+\psellipse[linecolor=red,rot=12.6](5.8,10)(6.6,5.1)
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Macro \nxLcs{psellipticarc}}\xLcs{psellipticarc}
+In a circle the angle is proportional to the bow: $b=r\alpha$. In an
+elliptic arc this is no more the case, which is the reason why angles are
+internally corrected by PSTricks, to get the same arc lengthts for
+different radii:
+
+\xLcs{psellipticarc}
+\begin{LTXexample}[width=6cm]
+\psset{unit=0.5cm}
+\begin{pspicture}(-5.5,-5.5)(5.5,5.5)%
+\psset{linewidth=0.4pt,linejoin=1}
+\psline(5,0)(0,0)(5,-5)
+\psellipticarc(0,0)(3,3){0}{315}
+\end{pspicture}%
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\psset{unit=0.5cm}
+\begin{pspicture}(-5.5,-5.5)(5.5,5.5)%
+\psset{linewidth=0.4pt,linejoin=1}
+\psline(5,0)(0,0)(5,-5)
+\psellipticarc(0,0)(1,3){0}{315}%
+\psset{linecolor=red}
+\psellipticarc(0,0)(3,1){22}{222}%
+\psline(3;22)\psline(3;222)
+\end{pspicture}%
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\psset{unit=0.5cm}
+\begin{pspicture}(-5.5,-5.5)(5.5,5.5)%
+\psset{linewidth=0.4pt,linejoin=1}
+\psline(5,0)(0,0)(5,-5)
+\psellipticarc*(0,0)(1,3){0}{315}%
+\psset{linecolor=red}
+\psellipticarc*(0,0)(3,1){22}{222}%
+\psline(3;22)\psline(3;222)
+\end{pspicture}%
+\end{LTXexample}
+
+\psset{unit=1cm}
+
+
+If you do not want the angle correction, then use the keyword setting \Lkeyword{correctAngle}=\false:
+
+\begin{LTXexample}[width=6cm]
+\psset{unit=0.5cm}
+\begin{pspicture}(-5.5,-5.5)(5.5,5.5)%
+\psset{linewidth=0.4pt,linejoin=1,
+ correctAngle=false}
+\psline(5,0)(0,0)(5,-5)
+\psellipticarc(0,0)(1,3){0}{315}%
+\psset{linecolor=red}
+\psellipticarc(0,0)(3,1){22}{222}%
+\psline(3;22)\psline(3;222)
+\end{pspicture}%
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\psset{unit=0.5cm}
+\begin{pspicture}(-5.5,-5.5)(5.5,5.5)%
+\psset{linewidth=0.4pt,linejoin=1,
+ correctAngle=false}
+\psline(5,0)(0,0)(5,-5)
+\psellipticarc*(0,0)(1,3){0}{315}%
+\psset{linecolor=red}
+\psellipticarc*(0,0)(3,1){22}{222}%
+\psline(3;22)\psline(3;222)
+\end{pspicture}%
+\end{LTXexample}
+
+
+
+
+\subsection{Option \texttt{algebraic}}
+The option \Lkeyword{algebraic} moved from the other packages into
+the main package \LPack{pstricks} to get rid of the dependencies.
+
+By default the function in \Lcs{psplot} has to be described in
+Reversed Polish Notation. The option \Lkeyword{algebraic} allows you
+to do this in the common algebraic notation. E.g.:
+
+\begin{tabular}{l|l}
+RPN & algebraic\\\hline
+\verb+x ln+ & \verb+ln(x)+\\
+\verb+x cos 2.71 x neg 10 div exp mul+ & \verb+cos(x)*2.71^(-x/10)+\\
+\verb+1 x div cos 4 mul+ & \verb+4*cos(1/x)+\\
+\verb+t cos t sin+ & \verb+cos(t)|sin(t)+
+\end{tabular}
+
+Setting the option \Lkeyword{algebraic}, allow the user
+to describe all expression to be written in the classical
+algebraic notation (infix notation). The four arithmetic
+operations are obviously defined \verb$+-*/$, and also the
+exponential operator \verb$^$. The natural priorities are used :
+$3+4\times 5^5=3+(4\times (5^5))$, and by default the computation
+is done from left to right. The following functions are defined :
+
+\medskip
+\begin{tabular}{ll}
+\verb$sin$, \verb$cos$, \verb$tan$, \verb$acos$, \verb$asin$ & in radians\\
+\verb$log$, \verb$ln$\\
+\verb$ceiling$, \verb$floor$, \verb$truncate$, \verb$round$\\
+\verb$sqrt$ & square root\\
+\verb$abs$ & absolute value\\
+\verb$fact$ & for the factorial\\
+\verb$Sum$ & for building sums\\
+\verb$IfTE$ & for an easy case structure
+\end{tabular}
+
+\medskip
+These options can be used with \textbf{all} plot macros.
+
+{\bfseries Using the option \Lkeyword{algebraic} implies that all
+angles have to be in radians! }
+
+For the \Lcs{parametricplot} the two parts must be divided by the \Lnotation{|} character:
+
+\begin{LTXexample}[width=2cm]
+\begin{pspicture}(-0.5,-0.5)(0.5,0.5)
+\parametricplot[algebraic,linecolor=red]{-3.14}{3.14}{cos(t)|sin(t)}
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begingroup
+\psset{lly=-0.5cm}
+\psgraph[trigLabels,dx=\psPi,dy=0.5,Dy=0.5]{->}(0,0)(-10,-1)(10,1){\linewidth}{6cm}
+ \psset{algebraic,plotpoints=1000}
+ \psplot[linecolor=yellow,linewidth=2pt]{-10}{10}{0.75*sin(x)*cos(x/2)}
+ \psplot[linecolor=red,showpoints=true,plotpoints=101]{-10}{10}{0.75*sin(x)*cos(x/2)}
+\endpsgraph
+\endgroup
+
+\bigskip
+\begin{lstlisting}
+\psset{lly=-0.5cm}
+\psgraph[trigLabels,dx=\psPi,dy=0.5,Dy=0.5]{->}(0,0)(-10,-1)(10,1){\linewidth}{6cm}
+ \psset{algebraic,plotpoints=1000}
+ \psplot[linecolor=yellow,linewidth=2pt]{-10}{10}{0.75*sin(x)*cos(x/2)}
+ \psplot[linecolor=red,showpoints=true,plotpoints=101]{-10}{10}{0.75*sin(x)*cos(x/2)}
+\endpsgraph
+\end{lstlisting}
+
+
+\bigskip
+%\begin{LTXexample}[pos=t]
+\bgroup
+\psset{lly=-0.5cm,unit=1cm}
+\psgraph(0,-5)(18,3){0.9\linewidth}{5cm}
+ \psset{algebraic,plotpoints=501}
+ \psplot[linecolor=yellow, linewidth=4\pslinewidth]{0.01}{18}{ln(x)}
+ \psplot[linecolor=red]{0.01}{18}{ln(x)}
+ \psplot[linecolor=green,linewidth=4\pslinewidth]{0}{18}{3*cos(x)*2.71^(-x/10)}
+ \psplot[linecolor=blue,showpoints=true,plotpoints=51]{0}{18}{3*cos(x)*2.71^(-x/10)}
+\endpsgraph
+\egroup
+%\end{LTXexample}
+
+
+\bigskip
+\begin{lstlisting}
+\psset{lly=-0.5cm}
+\psgraph(0,-5)(18,3){0.9\linewidth}{5cm}
+ \psset{algebraic,plotpoints=501}
+ \psplot[linecolor=yellow, linewidth=4\pslinewidth]{0.01}{18}{ln(x)}
+ \psplot[linecolor=red]{0.01}{18}{ln(x)}
+ \psplot[linecolor=yellow,linewidth=4\pslinewidth]{0}{18}{3*cos(x)*2.71^(-x/10)}
+ \psplot[linecolor=blue,showpoints=true,plotpoints=51]{0}{18}{3*cos(x)*2.71^(-x/10)}
+\endpsgraph
+\end{lstlisting}
+
+\section{New linestyle \nxLkeyval{symbol}}
+
+Instead of drawing a continous line or curve for a series of coordinates, one
+can now out a symbol in a given size, direction, and step. This works only
+for the line style \Lkeyval{symbol}. It takes the symbol defined by the optional
+argument \Lkeyword{symbol}, which can have a single character or a octal number
+of three digits. The font is specified by the key \Lkeyword{symbolFont}, which can take
+as argument one of the valid \PS fonts or the internal \Lkeyval{PSTricksDotFont}.
+If the symbol is given by a single character then the equivilant character in
+the given font is used. The difference between two symbols is set by \Lkeyword{symbolStep}
+and the symbol rotation by \Lkeyword{rotateSymbol}. For the first symbol there
+is an additional keyword \Lkeyword{startAngle}.
+The default values for these new
+optional keywords are:
+
+\begin{Xverbatim}{}
+\psset[pst-base]{symbolStep=20pt}
+\psset[pst-base]{symbolWidth=10pt}
+\psset[pst-base]{symbolFont=Dingbats}
+\psset[pst-base]{rotateSymbol=false}
+\psset[pst-base]{startAngle=0}
+\end{Xverbatim}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(8,6)
+\psline[linestyle=symbol](0,0)(5,0)(8,4)
+\psline[linestyle=symbol,symbol=T](0,1)(5,1)(8,4)
+\psline[linestyle=symbol,symbol=u,symbolFont=PSTricksDotFont](0,2)(5,2)(8,4)
+\psline[linestyle=symbol,symbol=u,symbolStep=25pt,linecolor=red](0,3)(5,3)(8,2)
+\psline[linestyle=symbol,symbol=A,symbolStep=25pt,
+ symbolWidth=20pt,linecolor=blue](0,4)(5,4)(8,1)
+\psline[linestyle=symbol,symbol=342,rotateSymbol=true,symbolStep=12pt](0,5)(5,5)(8,0)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(8,6)
+\pscurve[linestyle=symbol](0,0)(5,0)(8,4)
+\pscurve[linestyle=symbol](0,1)(5,1)(8,4)
+\pscurve[linestyle=symbol,symbol=u,symbolFont=PSTricksDotFont](0,2)(5,2)(8,4)
+\pscurve[linestyle=symbol,symbol=u,symbolStep=25pt,linecolor=red](0,3)(5,3)(8,2)
+\pscurve[linestyle=symbol,symbol=A,symbolStep=25pt,
+ symbolWidth=20pt,linecolor=blue](0,4)(5,4)(8,1)
+\pscurve[linestyle=symbol,symbol=342,rotateSymbol=true,
+ startAngle=190,symbolStep=12pt](0,5)(5,5)(8,0)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(8,6)
+\psccurve[linestyle=symbol](0,0)(5,0)(8,4)
+\psccurve[linestyle=symbol](0,1)(5,1)(8,4)
+\psccurve[linestyle=symbol,symbol=u,symbolFont=PSTricksDotFont](0,2)(5,2)(8,4)
+\psccurve[linestyle=symbol,symbol=u,symbolStep=25pt,linecolor=red](0,3)(5,3)(8,2)
+\psccurve[linestyle=symbol,symbol=A,symbolStep=25pt,
+ symbolWidth=20pt,linecolor=blue](0,4)(5,4)(8,1)
+\psccurve[linestyle=symbol,symbol=342,rotateSymbol=true,
+ startAngle=190,symbolStep=12pt](0,5)(5,5)(8,0)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(5,4)
+\pscurve[rotateSymbol=true,linestyle=symbol,
+ rot=180,startAngle=100,symbol=",
+ symbolWidth=20pt](0,0)(1,4)(3,0)(5,2)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(6,4)
+\psbezier[rotateSymbol=true,linestyle=symbol,symbol=u,
+ symbolFont=PSTricksDotFont,rot=-90,startAngle=0](0,0)(0,4)(6,4)(6,0)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{unit=0.5cm}
+\pspicture(-1,-4)(6,4)
+\pscbezier[rotateSymbol=true,linestyle=symbol,symbol=u,
+ symbolFont=PSTricksDotFont](0,4)(4,4)(4,-4)(0,-4)
+\pscbezier[linestyle=dashed](0,4)(4,4)(4,-4)(0,-4)
+\endpspicture
+\end{LTXexample}
+
+\psset{unit=1cm}
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(6,4)
+\psbezier[rotateSymbol=true,linestyle=symbol,symbol=u,
+ symbolFont=PSTricksDotFont](0,0)(0,4)(6,4)(6,0)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(6,4)
+\pspolygon[rotateSymbol=true,linestyle=symbol,symbol=u,
+ symbolFont=PSTricksDotFont](0,0)(0,4)(6,4)(6,0)(1,3)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-3,-1)(6,6)
+\psccurve[linestyle=symbol,symbol=u, rot=-90,rotateSymbol,
+ symbolFont=PSTricksDotFont, symbolWidth=5pt, symbolStep=10pt
+](-3,-1)(0,0)(0,4)(6,4)(6,0)(0,4)(-1,5)
+\endpspicture
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\pspicture(-1,-1)(6,6)
+\pscurve[linestyle=dashed,linecolor=black!30](0,0)(0,4)(6,4)(6,0)(0,4)
+\pscurve[rotateSymbol=true,linestyle=symbol,symbol=k,
+ symbolFont=PSTricksDotFont, symbolWidth=5pt, symbolStep=10pt,linecolor=blue
+](0,0)(0,4)(6,4)(6,0)(0,4)
+\endpspicture
+\end{LTXexample}
+
+
+%--------------------------------------------------------------------------------------
+\section{Numeric functions}
+%--------------------------------------------------------------------------------------
+
+All macros have a \textat{} in their name, because they are
+only for internal use, but it is no problem to use them like other
+macros. One can define another name without a \textat{}:
+\begin{lstlisting}[style=syntax]
+\makeatletter
+\let\pstdivide\pst@divide
+\makeatother
+\end{lstlisting}
+
+or put the macro inside the \Lcs{makeatletter} -- \Lcs{makeatother} sequence.
+
+
+%--------------------------------------------------------------------------------------
+\section{Numeric functions}
+%--------------------------------------------------------------------------------------
+
+By default \PST\ loads the file \Lfile{pst-fp} which is derived from the
+\LPack{fp} package. It supports the following macros:
+
+%--------------------------------------------------------------------------------------
+\subsection{\nxLcs{pstFPadd}, \nxLcs{pstFPsub}, \nxLcs{pstFPmul}, and \nxLcs{pstFPdiv}}
+%--------------------------------------------------------------------------------------
+Multiplication and division:
+
+\begin{BDef}
+\Lcs{pstFPadd}\Largb{result}\Largb{number}\Largb{number}\\
+\Lcs{pstFPsub}\Largb{result}\Largb{number}\Largb{number}\\
+\Lcs{pstFPmul}\Largb{result}\Largb{number}\Largb{number}\\
+\Lcs{pstFPdiv}\Largb{result}\Largb{number}\Largb{number}
+\end{BDef}
+
+\begin{LTXexample}[width=5cm]
+\pstFPmul\Result{-3.405}{0.02345} \Result\quad
+\pstFPdiv\Result{-3.405}{0.02345} \Result\\
+\pstFPmul\Result{0.02345}{-3.405} \Result\quad
+\pstFPdiv\Result{0.02345}{-3.405} \Result\\
+\pstFPmul\Result{234.123}{33} \Result\quad
+\pstFPdiv\Result{234.123}{33} \Result\\
+\pstFPadd\Result{234.123}{33} \Result\quad
+\pstFPadd\Result{234.123}{-33} \Result\\
+\pstFPsub\Result{234.123}{33} \Result\quad
+\pstFPsub\Result{-234.123}{33} \Result
+\end{LTXexample}
+
+The zeros can be stripped with the macro \Lcs{pstFPstripZeros}. Expect
+always rounding errors, \TeX\ was not made for calculations \ldots
+The value is converted into a length and then reconverted to a
+number by stripping the unit. Which also strips the zeros.
+
+\begin{LTXexample}[width=5cm]
+\pstFPmul\Result{-3.405}{0.02345}
+\pstFPstripZeros{\Result}{\Result}\Result\quad
+\pstFPdiv\Result{-3.405}{0.02345}
+\pstFPstripZeros{\Result}{\Result}\Result\\
+\pstFPmul\Result{0.02345}{-3.405}
+\pstFPstripZeros{\Result}{\Result}\Result\quad
+\pstFPdiv\Result{0.02345}{-3.405}
+\pstFPstripZeros{\Result}{\Result}\Result
+\end{LTXexample}
+
+%--------------------------------------------------------------------------------------
+\subsection{\nxLcs{pstFPMul} and \nxLcs{pstFPDiv}}
+%--------------------------------------------------------------------------------------
+Integer multiplication and division:
+
+\begin{BDef}
+\Lcs{pstFPMul}\Largb{result as a truncated integer}\Largb{number}\Largb{number}\\
+\Lcs{pstFPDiv}\Largb{result as a truncated integer}\Largb{number}\Largb{number}
+\end{BDef}
+
+\begin{LTXexample}[width=5cm]
+\makeatletter
+\pstFPMul\Result{-34.05}{0.02345} \Result\quad
+\pstFPDiv\Result{-3.405}{0.02345} \Result\\
+\pstFPMul\Result{23.45}{-3.405} \Result\quad
+\pstFPDiv\Result{0.2345}{-0.03405} \Result\\
+\pstFPMul\Result{234.123}{33} \Result\quad
+\pstFPDiv\Result{234.123}{33} \Result
+\makeatother
+\end{LTXexample}
+
+%--------------------------------------------------------------------------------------
+\section{The PostScript header files}
+\subsection{\nxLFile{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+It contains now most of the stuff from \LPack{pstricks-add} and the new routines
+for plotting lines/curves with symbols.
+
+%--------------------------------------------------------------------------------------
+\subsection{\nxLFile{pst-algparser.pro}}
+\subsubsection{Using the \texttt{Sum} function}
+%--------------------------------------------------------------------------------------
+
+\begin{BDef}
+\Lcs{Sum}\Largr{<index name>,<start>,<step>,<end>,<function>}
+\end{BDef}
+
+Let's plot the first development of cosine with polynomials:
+$\displaystyle\sum_{n=0}^{+\infty}\frac{(-1)^nx^{2n}}{n!}$.
+
+\begin{center}
+\bgroup
+\psset{algebraic=true, plotpoints=501, yunit=3}
+\def\getColor#1{\ifcase#1 black\or red\or magenta\or yellow\or green\or Orange\or blue\or
+ DarkOrchid\or BrickRed\or Rhodamine\or OliveGreen\fi}
+\begin{pspicture}(-7,-1.5)(7,1.5)
+ \psclip{\psframe(-7,-1.5)(7,1.5)}
+ \psplot{-7}{7}{cos(x)}
+ \multido{\n=1+1}{10}{%
+ \psplot[linewidth=1pt,linecolor=\getColor{\n}]{-7}{7}{%
+ Sum(ijk,0,1,\n,(-1)^ijk*x^(2*ijk)/fact(2*ijk))}}
+ \endpsclip
+ \psaxes(0,0)(-7,-1.5)(7,1.5)
+\end{pspicture}
+\egroup
+\end{center}
+\begin{lstlisting}
+\psset{algebraic=true, plotpoints=501, yunit=3}
+\def\getColor#1{\ifcase#1 black\or red\or magenta\or yellow\or green\or Orange\or blue\or
+ DarkOrchid\or BrickRed\or Rhodamine\or OliveGreen\fi}
+\begin{pspicture}(-7,-1.5)(7,1.5)
+ \psclip{\psframe(-7,-1.5)(7,1.5)}
+ \psplot{-7}{7}{cos(x)}
+ \multido{\n=1+1}{10}{%
+ \psplot[linewidth=1pt,linecolor=\getColor{\n}]{-7}{7}{%
+ Sum(ijk,0,1,\n,(-1)^ijk*x^(2*ijk)/fact(2*ijk))}}
+ \endpsclip
+ \psaxes(0,0)(-7,-1.5)(7,1.5)
+\end{pspicture}
+\end{lstlisting}
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\subsection[\nxLps{IfTE}]{The variable step algorithm together with the PostScript function \nxLps{IfTE}}
+%--------------------------------------------------------------------------------------
+\xLps{IfTE}\xLkeyword{VarStep}\xLkeyword{VarStepEpsilon}
+
+\begin{BDef}
+\Lps{IfTE}\Largr{<condition>,<true part>,<false part>}
+\end{BDef}
+
+Nesting of several \Lps{IfTE} is possible and seen in the
+following examples. A classic example is a piece-wise linear
+function.
+
+\begin{center}
+\psset{unit=0.7cm}
+\begin{pspicture}(-7.5,-2.5)(7.5,6)
+ \psaxes{->}(0,0)(-7,-2)(7.5,6)[x,-90][y,0]
+ \psset{algebraic=true, plotpoints=21,linewidth=2pt}
+ \psplot[linecolor=blue]{-7.5}{7.5}{IfTE(x<-6,8+x,IfTE(x<0,-x/3,IfTE(x<3,2*x,9-x)))}
+ \psplot[linecolor=red, plotpoints=101]{-7.5}{7.5}{%
+ IfTE(2*x<-2^2*sqrt(9),7+x,IfTE(x<0,x^2/18-1,IfTE(x<3,2*x^2/3-1,8-x)))}%
+\end{pspicture}
+\end{center}
+\psset{unit=1cm}
+
+\begin{lstlisting}
+\psset{unit=1.5, algebraic, ?\ON?VarStep?\OFF?, showpoints, ?\ON?VarStepEpsilon?\OFF?=.001}
+\begin{pspicture}[showgrid=true](-7,-2)(2,4)
+ \psplot{-7}{2}{?\ON?IfTE?\OFF?(x<-5,-(x+5)^3/2,?\ON?IfTE?\OFF?(x<0,0,x^2))}
+ \psplot{-7}{2}{5*x/9+26/9}
+ \psplot[linecolor=blue]{-7}{2}{(x+7)^30/9^30*4.5-1/2}
+ \psplot[linecolor=red]{-6.9}{2}
+ {?\ON?IfTE?\OFF?(x<-6,ln(x+7),?\ON?IfTE?\OFF?(x<-3,x+6,?\ON?IfTE?\OFF?(x<0.1415926,sin(x+3)+3,3.1415926-x)))}
+\end{pspicture}
+\end{lstlisting}
+
+When you program a piece-wise defined function you must take care
+that a plotting point must be put at each point where the
+description changes. Use \Lkeyword{showpoints}=true to see what's
+going on when there is a problem. You are on the safe side when
+you choose a big number for \Lkeyword{plotpoints}.
+
+
+\begin{center}
+\psset{unit=0.75}
+\begin{pspicture}(-8,-8)(8,8)
+ \psaxes{->}(0,0)(-8,-8)(8,8)[x,-90][y,0]
+ \psset{plotpoints=1000,linewidth=1pt}
+ \psplot[algebraic=true]{-8}{8}{ceiling(x)}
+ \psplot[algebraic=true, linecolor=yellow]{-8}{8}{rand/(2^31-1)+x}
+ \psplot[algebraic=true, linecolor=red]{-8}{8}{floor(x)}
+ \psplot[algebraic=true, linecolor=blue]{-8}{8}{round(x)}
+ \psplot[algebraic=true, linecolor=green]{-8}{8}{truncate(x)}
+ \psplot[algebraic=true, linecolor=cyan]{-8}{8}{div(mul(4,x),7)}
+ \psplot[algebraic=true, linecolor=gray]{-8}{8}{abs(x)+abs(x-3)-abs(5-5*x/7)}
+ \psplot[algebraic=true, linecolor=gray]{-8}{8}{abs(3*cos(x)+1)}
+ \psplot[algebraic=true, linecolor=magenta]{-8}{8}{floor(8*cos(x))}
+\end{pspicture}
+\end{center}
+
+\begin{lstlisting}
+\psset{unit=0.75}
+\begin{pspicture}(-8,-8)(8,8)
+ \psaxes{->}(0,0)(-8,-8)(8,8)[x,-90][y,0]
+ \psset{plotpoints=1000,linewidth=1pt}
+ \psplot[algebraic=true, linecolor=yellow]{-8}{8}{rand/(2^31-1)+x}
+ \psplot[algebraic=true]{-8}{8}{ceiling(x)}
+ \psplot[algebraic=true, linecolor=red]{-8}{8}{floor(x)}
+ \psplot[algebraic=true, linecolor=blue]{-8}{8}{round(x)}
+ \psplot[algebraic=true, linecolor=green]{-8}{8}{truncate(x)}
+ \psplot[algebraic=true, linecolor=cyan]{-8}{8}{div(mul(4,x),7)}
+ \psplot[algebraic=true, linecolor=gray]{-8}{8}{abs(x)+abs(x-3)-abs(5-5*x/7)}
+ \psplot[algebraic=true, linecolor=gray]{-8}{8}{abs(3*cos(x)+1)}
+ \psplot[algebraic=true, linecolor=magenta]{-8}{8}{floor(8*cos(x))}
+\end{pspicture}
+\end{lstlisting}
+
+
+\subsection[\nxLps{Derive} function]{Successive derivatives of a polynomial with the PostScript function \nxLps{Derive}}
+
+\begin{center}
+\bgroup
+\psset{unit=2, algebraic=true, VarStep=true, showpoints=true, VarStepEpsilon=.001}
+\def\getColor#1{\ifcase#1 Tan\or RedOrange\or magenta\or yellow\or green\or Orange\or blue\or
+ DarkOrchid\or BrickRed\or Rhodamine\or OliveGreen\or Goldenrod\or Mahogany\or
+ OrangeRed\or CarnationPink\or RoyalPurple\or Lavender\fi}
+\begin{pspicture}[showgrid=true](0,-1.2)(7,1.5)
+ \psclip{\psframe[linestyle=none](0,-1.1)(7,1.1)}
+ \multido{\in=0+1}{16}{%
+ \psplot[algebraic=true, linecolor=\getColor{\in}]{0.1}{7}
+ {Derive(\in,Sum(i,0,1,7,(-1)^i*x^(2*i)/Fact(2*i)))}}
+ \endpsclip
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{unit=2, algebraic=true, VarStep=true, showpoints=true, VarStepEpsilon=.001}
+\def\getColor#1{\ifcase#1 Tan\or RedOrange\or magenta\or yellow\or green\or Orange\or blue\or
+ DarkOrchid\or BrickRed\or Rhodamine\or OliveGreen\or Goldenrod\or Mahogany\or
+ OrangeRed\or CarnationPink\or RoyalPurple\or Lavender\fi}
+\begin{pspicture}[showgrid=true](0,-1.2)(7,1.5)
+ \psclip{\psframe[linestyle=none](0,-1.1)(7,1.1)}
+ \multido{\in=0+1}{16}{%
+ \psplot[algebraic=true, linecolor=\getColor{\in}]{0.1}{7}
+ {Derive(\in,Sum(i,0,1,7,(-1)^i*x^(2*i)/Fact(2*i)))}}
+ \endpsclip
+\end{pspicture}
+\end{lstlisting}
+
+
+\subsection{Special arrow option \texttt{arrowLW}}
+
+Only for the arrowtype \Lnotation{o}, \Lnotation{oo}, \Lnotation{*}, and \Lnotation{**} it is possible to
+set the arrowlinewidth with the optional keyword \Lkeyword{arrowLW}.
+When scaling an arrow by the keyword \Lkeyword{arrowscale} the width
+of the borderline is also scaled. With the optional argument
+\Lkeyword{arrowLW} the line width can be set separately and is not
+taken into account by the scaling value.
+
+\begin{LTXexample}[width=4cm]
+\begin{pspicture}(4,6)
+\psline[arrowscale=3,arrows=*-o](0,5)(4,5)
+\psline[arrowscale=3,arrows=*-o,
+ arrowLW=0.5pt](0,3)(4,3)
+\psline[arrowscale=3,arrows=*-o,
+ arrowLW=0.3333\pslinewidth](0,1)(4,1)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=4cm]
+\begin{pspicture}(4,6)
+\psline[arrowscale=3,arrows=**-oo](0,5)(4,5)
+\psline[arrowscale=3,arrows=**-oo,
+ arrowLW=0.5pt](0,3)(4,3)
+\psline[arrowscale=3,arrows=**-oo,
+ arrowLW=0.3333\pslinewidth](0,1)(4,1)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\section{\nxLcs{psforeach} and \nxLcs{psForeach}}
+%--------------------------------------------------------------------------------------
+
+The macro \Lcs{psforeach} allows a loop with an individual increment.
+
+\begin{BDef}
+\Lcs{psforeach}\Largb{variable}\Largb{value list}\Largb{action}\\
+\Lcs{psForeach}\Largb{variable}\Largb{value list}\Largb{action}
+\end{BDef}
+
+With \Lcs{psforeach} the \Larg{action} is done inside a group and for \Lcs{psForeach} not.
+This maybe useful when using the macro to create tabular cells, which are
+alread grouped itself.
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}[showgrid=true](5,5)
+ \psforeach{\nA}{0, 1, 1.5, 3, 5}{%
+ \psdot[dotscale=3](\nA,\nA)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+%\usepackage{pst-func}
+\makeatletter
+\newcommand*\InitToks{\toks@={}}
+\newcommand\AddToks[1]{\toks@=\expandafter{\the\toks@ #1}}
+\newcommand*\PrintToks{\the\toks@}
+\newcommand*{\makeTable}[4][5mm]{%
+ \begingroup
+ \InitToks%
+ \AddToks{\begin{tabular}{|*{#2}{>{\RaggedLeft}p{#1}|}@{}l@{}}\cline{1-#2}}
+ \psForeach{\iA}{#3}{\expandafter\AddToks\expandafter{\iA & }}
+ \AddToks{\\\cline{1-#2}}%
+ \psForeach{\iA}{#3}{\expandafter\AddToks\expandafter{\expandafter%
+ \psPrintValue\expandafter{\iA\space /x ED #4} & }}
+ \AddToks{\\\cline{1-#2}\end{tabular}}%
+ \PrintToks
+ \endgroup
+}
+\makeatother
+
+\sffamily
+\psset{decimals=2,valuewidth=7,xShift=-20}
+$y=2^x$\\
+\makeTable[1cm]{6}{2,4,6,8,10,12}{2 x exp}
+\end{LTXexample}
+
+The value List can also be given by the first two and the last value, e.\,g. \verb=1,4,..,31=,
+then \PST calculates all values with the distance given by the first two values.
+
+\begin{LTXexample}[pos=t]
+\psset{xunit=0.55cm,yunit=2cm}
+\begin{pspicture}[showgrid](0,-5mm)(25,1)
+ \psforeach{\nA}{0, 3.14,..,25}{\psline(\nA,0)(\nA,1)}
+\end{pspicture}
+\end{LTXexample}
+
+The internal counter for the steps is named \LCtr{psLoopIndex} and can be used for own purposes.
+
+\begin{LTXexample}[pos=l,width=6cm]
+\begin{pspicture}[showgrid=true](5,5)
+\psforeach{\nA}{0, 1, 1.5, 2.25, 5}{%
+ \psdot[dotscale=3](\the\psLoopIndex,\nA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\part{\nxLPack{pst-node} -- package}
+
+\section{\nxLFile{pst-node.tex}}
+
+The package \LPack{pst-node} now uses the advanced key handling from \LPack{xkeyval}. The reason
+why it moved from the base into the contrib sections, where all packages uses \LPack{xkeyval}.
+
+\part{\nxLPack{pst-plot} -- package}
+
+\section{\nxLFile{pst-plot.tex}}
+
+The package \LPack{pst-plot} now uses the advanced key handling from \LPack{xkeyval}. The reason
+why it moved from the base into the contrib sections, where all packages uses \LPack{xkeyval}.
+
+
+\clearpage
+\section{List of all optional arguments for \texttt{pstricks}}
+
+\xkvview{family=pst-base,columns={key,type,default}}
+%\xkvview{family=pst-tools,columns={key,type,default}}
+
+
+
+\nocite{*}
+\printbibliography
+
+\printindex
+
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news11.pdf b/graphics/pstricks/base/doc/pst-news11.pdf
new file mode 100644
index 0000000000..d2539fd5e0
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news11.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news11.tex b/graphics/pstricks/base/doc/pst-news11.tex
new file mode 100644
index 0000000000..a4254f226f
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news11.tex
@@ -0,0 +1,184 @@
+%% $Id: pst-news11.tex 165 2015-07-26 07:27:55Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pst-node}
+\usepackage{xkvview}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2011}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- 2011}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+\section{General}
+There exists a new document class \LClass{pst-doc} for writing PSTricks documentations,
+like this news document. It depends on the KOMA-Script document class \LClass{scrartcl}.
+\LClass{pst-doc} defines a lot of special macros to create a good index. Take one of
+the already existing package documentation and look into the source file. Then it will be
+easy to understand, how all these macros have to be used.
+
+When running \Lprog{pdflatex} the title page is created with boxes and inserted
+with the macro \Lcs{AddToShipoutPicture} from the package \LPack{eso-pic}. It
+inserts the background title page image \Lfile{pst-doc-pdf} to use directly
+\Lprog{pdflatex}.
+When running \Lprog{latex} the title page
+ is created with \PST\ macros.This allows to use the Perl script \Lprog{pst2pdf} or
+the package \LPack{pst-pdf} or \LPack{auto-pst-pdf} or any other program/package which
+supports \PS\ code in the document.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+\subsection{New optional argument}
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+
+\subsection{Macro \nxLcs{psLoop}}
+\PST\marginpar[2.17]{2.17} already knows \Lcs{psforeach} and \Lcs{psForeach} for loops. The new
+macro \Lcs{psLoop} allows a loop without defining a variable:
+
+\begin{BDef}
+\Lcs{psLoop}\Largb{n}\Largb{argument}
+\end{BDef}
+
+However, the internal \TeX\ counter \Lctr{psLoopIndex} can be used for own purposes.
+
+\begin{LTXexample}[width=7cm]
+ \psLoop{4}{PSTricks }
+\end{LTXexample}
+
+\begin{LTXexample}[width=7cm]
+\tabular{|c|c|c|c|}
+ \psLoop{3}{PSTricks &}\\\hline
+ A & B & C & D\\\hline
+\endtabular
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}[showgrid](3,3)
+\psLoop{4}{%
+ \psdots(\the\psLoopIndex,\the\psLoopIndex)}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{New fillstyle \texttt{dots}}
+Instead of using the package \LPack{pst-fill} one can now use the fill style \Lkeyval{dots}.
+The valid parameters are \Lkeyword{hatchsep} for the distance of two dots, \Lkeyword{hatchwidth}
+for the radius of the filled dot, and \Lkeyword{hatchcolor} for the dot color.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-2,-2)(10,2)
+\pscircle[hatchcolor=gray,hatchsep=10pt,hatchwidth=3pt,fillstyle=dots]{2}
+\pscircle[hatchcolor=gray,hatchsep=10pt,hatchwidth=3pt,fillstyle=dots*](4,0){2}
+\psframe[hatchcolor=blue!30,linecolor=red,hatchsep=12pt,hatchwidth=4pt,
+ fillstyle=dots*](6,-2)(10,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+%--------------------------------------------------------------------------------------
+\section{The PostScript header files}
+\subsection{\nxLFile{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+There is a new subroutine \Lps{DotFill}:
+\begin{lstlisting}
+
+/DotFill {% on stack: dot radius
+ /dotRadius ED
+ abs CLW add /a ED
+ a 0 dtransform round exch round exch
+ 2 copy idtransform
+ exch Atan rotate
+ idtransform pop /a ED
+ .25 .25 itransform
+ pathbbox % llx lly urx ury of smallest bounding box
+ /y2 ED /x2 ED /y1 ED /x1 ED
+ y2 y1 sub a div 2 add cvi /Ny ED
+ x2 x1 sub a div 2 add cvi /Nx ED
+ clip
+ newpath
+ /yA y1 dotRadius add CLW add def
+ /xA0 x1 dotRadius add CLW add def
+ Ny {
+ /xA xA0 def
+ Nx {
+ newpath
+ xA yA dotRadius 0 360 arc
+ SolidDot { gsave fill grestore } if
+ stroke
+ xA a add /xA ED
+ } repeat
+ yA a add /yA ED
+ } repeat
+ grestore
+} def
+\end{lstlisting}
+
+
+%--------------------------------------------------------------------------------------
+%\subsection{\nxLFile{pst-algparser.pro}}
+%--------------------------------------------------------------------------------------
+
+%\section{\nxLcs{psforeach} and \nxLcs{psForeach}}
+%--------------------------------------------------------------------------------------
+
+\section{List of all optional arguments for \texttt{pstricks}}
+
+\makeatletter
+\xkvview{family=pstricks,columns={key,type,default}}
+\makeatother
+
+
+\clearpage
+\part{Other packages}
+\section{\texttt{pst-node} -- version \pstnodeFV\ | \pstnodeFD}
+The command \Lcs{pnode} now knows an optional argument for an offset, which
+expects two values (x,y) separated by a comma:
+
+\begin{BDef}
+\Lcs{pnode}\OptArg*{\Largs{\Larga{offset}}}\Largr{\CAny}\Largb{\Larga{node name}}
+\end{BDef}
+
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}[showgrid](0,-2)(6,2)
+\pnode{A}\psdot(A)\uput[90](A){A}
+\pnode[0,-2]{B}\psdot(B)\uput[90](B){B}
+\pnode(2,0){C}\psdot(C)\uput[90](C){C}
+\pnode[1,-2](2,0){D}\psdot(D)\uput[90](D){D}
+\pnode[2,2](3.5,0){E}\psdot(E)\uput[90](E){E}
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news12.pdf b/graphics/pstricks/base/doc/pst-news12.pdf
new file mode 100644
index 0000000000..0807d12d53
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news12.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news12.tex b/graphics/pstricks/base/doc/pst-news12.tex
new file mode 100644
index 0000000000..759869d864
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news12.tex
@@ -0,0 +1,243 @@
+%% $Id: pst-news12.tex 847 2018-12-04 08:04:28Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pst-node,pst-plot}
+\usepackage{xkvview}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2012}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- 2012}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+\section{General}
+There exists a new document class \LClass{pst-doc} for writing PSTricks documentations,
+like this news document. It depends on the KOMA-Script document class \LClass{scrartcl}.
+\LClass{pst-doc} defines a lot of special macros to create a good index. Take one of
+the already existing package documentation and look into the source file. Then it will be
+easy to understand, how all these macros have to be used.
+
+When running \Lprog{pdflatex} the title page is created with boxes and inserted
+with the macro \Lcs{AddToShipoutPicture} from the package \LPack{eso-pic}. It
+inserts the background title page image \Lfile{pst-doc-pdf} to use directly
+\Lprog{pdflatex}.
+When running \Lprog{latex} the title page
+ is created with \PST\ macros.This allows to use the Perl script \Lprog{pst2pdf} or
+the package \LPack{pst-pdf} or \LPack{auto-pst-pdf} or any other program/package which
+supports \PS\ code in the document.
+
+
+%--------------------------------------------------------------------------------------
+%\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+%\subsection{New optional argument}
+
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+
+
+\subsection{\nxLcs{psellipticarc}}
+There was a bug with the star version of \Lcs{psellipticarc}, which filled the path in
+the same way as \Lcs{psellipticwedge*} does. It is now fixed:
+
+\begin{LTXexample}[pos=r]
+\begin{pspicture}[showgrid](4,4)
+\psellipticarc*(2,0)(2,4){0}{130}
+\psdot(2,0)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=r]
+\begin{pspicture}[showgrid](4,4)
+\psellipticarc*[correctAngle=false,showpoints](2,0)(2,4){0}{130}
+\psdot(2,0)
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Grid}
+
+The optional argument \Lkeyval{showgrid} can have the values \Lkeyval{bottom},
+\Lkeyval{true},
+\Lkeyval{false}, and
+\Lkeyval{top}, where \Lkeyval{false is the default} and \Lkeyval{true} the same as
+\Lkeyval{bottom}. With the latter it is set first and with \Lkeyval{top} it is set
+at the end of the \Lenv{pspitcure} environment.
+
+
+\subsection{Symbol line}
+The optional argument \Lkeyword{symbol} for a linestyle can now be
+set with a negative \Lkeyword{symbolstep} for a computed width of the steps:
+\begin{LTXexample}[pos=t]
+\psset{unit=0.75cm}
+\begin{pspicture}(8,8)
+\psaxes[labels=none,ticks=none]{->}(0,0)(8,8)[$x$,0][$y$,0]
+\pscurve(1,1)(3,4)(6,6)(8,4)
+\pscurve[linestyle=symbol,symbolStep=-20,symbol=l](1,1)(3,4)(6,6)(8,4)
+\end{pspicture}
+\end{LTXexample}
+
+
+Instead of setting a symbol it is possible to set ticks on the curve with \Lkeyword{curveticks}. They can be set by a fixed width or a computed
+width if the \Lkeyword{symbolStep} is set by a negative number without a unit.
+
+\begin{LTXexample}[pos=t]
+\psset{unit=0.75cm}
+\begin{pspicture}(8,8)
+\psaxes[labels=none,ticks=none]{->}(0,0)(8,8)[$x$,0][$y$,0]
+\pscurve(1,1)(3,4)(6,6)(8,4)
+\pscurve[linestyle=symbol,symbolStep=12.25pt,
+ curveticks,startAngle=60](1,1)(3,4)(6,6)(8,4)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t]
+\psset{unit=0.75cm}
+\begin{pspicture}(8,8)
+\psaxes[labels=none,ticks=none]{->}(0,0)(8,8)[$x$,0][$y$,0]
+\pscurve(1,1)(3,4)(6,6)(8,4)
+\pscurve[linestyle=symbol,symbolStep=-12,
+ curveticks,startAngle=60](1,1)(3,4)(6,6)(8,4)
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{Fill style \texttt{eohlines} and \texttt{eovlines}}
+These fill styles uses the PS function \Lps{eoclip} instead of \Lps{clip}.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid](6,6)
+ \pscustom[fillstyle=eovlines,fillcolor=green]{
+ \pscircle(3,3){3}
+ \psline[liftpen=2](1,2)(5,2)(3,5)(1,2)
+ }
+\end{pspicture}\quad
+\begin{pspicture}[showgrid](6,6)
+ \pscustom[fillstyle=eovlines*,fillcolor=blue!50]{
+ \pscircle(3,3){3}
+ \psline[liftpen=2](1,2)(5,2)(3,5)(1,2)}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\subsection{Fill style \texttt{penroseA}}
+
+The valid optional arguments are \texttt{penroseA},
+\texttt{hatchcolor}, \texttt{dartcolor}, and \texttt{kitecolor}
+
+\begin{LTXexample}[pos=t,wide]
+\begin{pspicture}(3,3)
+\psframe[fillstyle=penroseA](3,3)
+\end{pspicture} \qquad
+\begin{pspicture}(3,3)
+\psframe[fillstyle=penroseA,psscale=0.5,hatchcolor=white](3,3)
+\end{pspicture} \qquad
+\begin{pspicture}(3,3)
+\psccurve[fillstyle=penroseA,kitecolor=yellow,dartcolor=blue!30](0,1.5)(1.5,3)(3,1.5)(1.5,0)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\section{The PostScript header files}
+\subsection{\nxLFile{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+The file \Lfile{pst-tools.pro} contains additional helper functions:
+
+\begin{lstlisting}
+/factorial { % n on stack, returns n!
+/MoverN { % m n on stack, returns the binomial coefficient m over n
+/cxadd { % [a1 b1] [a2 b2] = [a1+a2 b1+b2]
+/cxneg { % [a b]
+/cxsub { cxneg cxadd } def % same as negative addition
+/cxmul { % [a1 b1] [a2 b2]
+/cxsqr { % [a b] square root
+/cxsqrt { % [a b]
+/cxarg { % [a b]
+/cxlog { % [a b]
+/cxnorm2 { % [a b]
+/cxnorm { % [a b]
+/cxconj { % conjugent complex
+/cxre { 0 get } def % real value
+/cxim { 1 get } def % imag value
+/cxrecip { % [a b]
+/cxmake1 { 0 2 array astore } def % make a complex number, real given
+/cxmake2 { 2 array astore } def % dito, both given
+/cxdiv { cxrecip cxmul } def
+/cxrmul { % [a b] r
+/cxrdiv { % [a b] r
+/cxconv { % theta
+/bubblesort { % on stack must be an array [ ... ]
+/concatstringarray{ % [(a) (b) ... (z)] --> (ab...z) 20100422
+/dot2comma {% on stack a string (...)
+\end{lstlisting}
+
+
+%--------------------------------------------------------------------------------------
+%\subsection{\nxLFile{pst-algparser.pro}}
+%--------------------------------------------------------------------------------------
+
+%\section{\nxLcs{psforeach} and \nxLcs{psForeach}}
+%--------------------------------------------------------------------------------------
+
+\section{List of all optional arguments for \texttt{pstricks}}
+
+\makeatletter
+\xkvview{family=pstricks,columns={key,type,default}}
+\makeatother
+
+
+\clearpage
+\part{Other packages}
+\section{\texttt{pst-node} -- version \pstnodeFV\ | \pstnodeFD}
+The command \Lcs{pnode} now knows an optional argument for an offset, which
+expects two values (x,y) separated by a comma:
+
+\begin{BDef}
+\Lcs{pnode}\OptArg*{\Largs{\Larga{offset}}}\Largr{\CAny}\Largb{\Larga{node name}}
+\end{BDef}
+
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}[showgrid](0,-2)(6,2)
+\pnode{A}\psdot(A)\uput[90](A){A}
+\pnode[0,-2]{B}\psdot(B)\uput[90](B){B}
+\pnode(2,0){C}\psdot(C)\uput[90](C){C}
+\pnode[1,-2](2,0){D}\psdot(D)\uput[90](D){D}
+\pnode[2,2](3.5,0){E}\psdot(E)\uput[90](E){E}
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
diff --git a/graphics/pstricks/base/doc/pst-news13.pdf b/graphics/pstricks/base/doc/pst-news13.pdf
new file mode 100644
index 0000000000..4d632be639
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news13.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news13.tex b/graphics/pstricks/base/doc/pst-news13.tex
new file mode 100644
index 0000000000..2995cf042d
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news13.tex
@@ -0,0 +1,252 @@
+%% $Id: pst-news13.tex 165 2015-07-26 07:27:55Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pst-node}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-plot}
+\usepackage{xkvview}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2013}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- 2013}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+
+There are new optional arguments \Lkeyword{monochrome} and \Lkeyword{grayscale} to convert \emph{all} RGB and CMYK colors
+into black and white or grayscale. The equations are:
+
+\subsection{RGB to gray}
+\[ \text{gray} = 0.07 \text{red} + 0.71 \text{green} + 0.21 \text{blue} \]
+
+\subsection{CMYK to gray}
+\begin{align*}
+ c &= c (1 - k) + k\\
+ m &= m (1 - k) + k\\
+ y &= y (1 - k) + k\\
+ r, g, b &= (1 - c), (1 - m), (1 - y)\\
+ \text{gray} &= 0.299 r + 0.587 g + 0.114 b
+\end{align*}
+
+This change will be global and effects also all other color setting!
+See section~\vref{subsec:monochrome} for a local change of the color output.
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+There is a new optional argument \Lkeyword{pgffunctions} for the environment \Lenv{pspicture}.
+With this option one can force the loading of the special pgf PostScript function
+which in some cases are missing, when using the package \LPack{auto-pst-pdf} and another
+package which uses pgf macros.
+
+\lstinline|\begin{pspicture}[pgffunctions,...](...)(...)|
+
+\subsection{labelsep}
+The \Lkeyword{labelsep} is the first -- optional -- argument of \Lcs{uput}.
+It is now possible to use the PostScript notation for this \emph{length}, eg \verb|{! 45 sin 3 mul}|.
+Then the unit which is active when \Lcs{uput} is active is used. With a unit the PS notation
+ist not allowed and leads to an error!
+
+
+\subsection{Customization}
+
+\Lcs{pscustom} now knows the PostScript function \Lcs{reversepath}:
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(5,3)
+ \pnode(5;30){A}
+ \psline(A)(0,0)(5;0)
+ \pscustom[fillstyle=vlines]{%
+ \psarcAB(A)(0,0)(2,0)
+ \reversepath
+ \psarcAB(A)(0,0)(4,0)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{Coordinates}
+\subsubsection{Postscript mode}
+A preceeding \verb|!| in coordinates will interpret the following expressing in Postfix notation.
+The expression is automatically translated from user into screen coordinates. With a double \verb|!!|
+this can be omitted and the Postscript expression will not be translated. This is useful in some
+special cases:
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](2,2)(5,5)
+\pscustom{
+ \psarc(3,3){1}{0}{90}
+ \rmoveto(.5;-90)
+ \psarc[liftpen=2](!!CP){.5}{90}{180}}
+\end{pspicture}
+\end{LTXexample}
+
+\verb|CP| is the internal abbreviation for the Postscript function \texttt{currentpoint}.
+
+
+\subsubsection{Algebraic mode}
+Additionally to the special pair of coordinates \verb|(*x f(x))| where $x$ must be a value in
+PostScript notation and $f(x)$ in algebraic noatation, there is now a \verb|(**{f(y), y})|
+which is vice versa, $f(y)$ in algebraic and $y$ in PostScript notation. And there is also
+a \verb|(+{x}, {f(x)})|, where both expressions must be in algebraic notation and \verb|{x}| must expand to a value
+or an expression which uses known system or user defined PostScript functions.
+
+
+\begin{LTXexample}[width=5cm]
+\def\f(#1){#1^2} \def\y{2}
+\begin{pspicture}[showgrid](5,5)
+\pnode(+{sqrt(Pi),1.5*(sin(x)^2+cos(x)^2)}){A}
+\psdot(A) \psline[arrowscale=1.5]{->}(A)
+\psline{->}(*2 {x^2}) \psline{->}(**{y^2} 2)
+\psline(1,1)(**{\f(y)} 2.2)(2;45)(*2 {\f(x)})
+\psline[linecolor=blue]{->}(+{sqrt(2),\f(x)})
+\psline[linecolor=blue]{->}(+{sqrt(3)},{\f(x)})
+\psline(+1,x+0.5)
+\end{pspicture}
+\end{LTXexample}
+
+
+Important: If the expression contains itself a parenthesis like \verb|)| then the argument must
+be inside braces; otherwise \TeX\ will take the first closing parenthesis as clsong delimiter
+for the complete coordinate argument \verb|(...)| which then gives an error.
+
+
+
+
+
+
+
+
+\subsection{Fillstyle \texttt{dots}}
+A fix for the fill style \Lkeyval{dots} to make it work again:
+
+\begin{LTXexample}[width=5cm]
+\pspicture(4,3)
+\psframe[fillstyle=dots](4,3)
+\endpspicture
+\end{LTXexample}
+
+\subsection{New macro \nxLcs{psRing}}
+
+\begin{BDef}
+\LcsStar{psRing}\OptArgs\Largr{\CAny}\Largb{Inner Radius}\Largb{Outer Radius}
+\end{BDef}
+
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](4,4)
+ \psRing[linecolor=red](2,2){0.3}{0.8}
+ \psRing*[opacity=0.5](2,2){1}{2}
+\psdot(2,2)
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{New macros \nxLcs{pssetMonochrome}, \nxLcs{pssetGrayscale}, and \nxLcs{psresetColor}}\label{subsec:monochrome}
+
+\begin{BDef}
+\Lcs{pssetMonochrome}\\
+\Lcs{pssetGrayscale}\\
+\Lcs{psresetColor}
+\end{BDef}
+
+
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](4,4)
+ \pssetMonochrome%
+ \psRing[linecolor=red](2,2){0.3}{0.8}
+ \psRing*[linecolor=red!30](2,2){1}{2}
+\psresetColor%
+\psdot[linecolor=red,dotscale=3](2,2)
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](4,4)
+ \pssetGrayscale%
+ \psRing[linecolor=red](2,2){0.3}{0.8}
+ \psRing*[linecolor=red!30](2,2){1}{2}
+\psresetColor%
+\psdot[linecolor=red,dotscale=3](2,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\section{The PostScript header files}
+\subsection{\nxLFile{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+\clearpage
+\part{Other packages}
+\section{\texttt{pst-node} -- version \pstnodeFV\ | \pstnodeFD}
+
+\small
+\begin{verbatim}
+1.29 2013-07-13 - fix bug with missing angle in special node coordinates
+ - fix for fnpnodes (argument must be in {})
+ - fix typo in the documentation
+1.28 2013-07-10 - added \pnodes (plural) for multiple node definition
+1.27 2013-04-12 - added macro \Lcs{Cnodeput} which takes radius=...
+ into account
+1.26 2013-04-09 - added macros \Lcs{psncurve} and \Lcs{psnccurve}
+ for a sequence of nodes created by \Lcs{curvepnodes}
+1.25 2012-09-21 - Global node coordinates only with saveNodeCoors
+\end{verbatim}
+
+\normalsize
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[showgrid](0,-0.5)(7,6)
+ \pnode(3,3){A}\psdot(A)\uput[-35](A){A}
+ \pnode(6,5){B}\psdot(B)\uput[135](B){B}
+ \psline[linestyle=dotted](A)\psline[linestyle=dotted](A)(B)
+ \pscircle[linestyle=dotted](A){!5 sqrt}
+ \pnode([nodesep=2]{B}A){P0}\psdot(P0)
+ \pnode([offset=1]{B}A){P1}\psdot(P1)
+ \pnode([nodesep=2,offset=1]{B}A){P}\psdot(P)
+ \psline(A)([nodesep=2]{B}A) \psline[linestyle=dashed](P0)(P)
+ \psline(A)([offset=1]{B}A) \psline[linestyle=dashed](P1)(P)
+ \pnode([nodesep=2,offset=1,angle=135]{B}A){Q}\psdot(Q)
+ \psarc[origin={A},arrowscale=2]{->}(A){!5 sqrt}{(P)}{(Q)}
+%
+ \pnode([nodesep=2,offset=2]{B}A){P}\psdot(P)
+ \pnode([nodesep=2,offset=2,angle=135]{B}A){Q}\psdot(Q)
+ \psarc[origin={A},arrowscale=2]{->}(A){!8 sqrt}{(P)}{(Q)}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\clearpage
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
+
+
diff --git a/graphics/pstricks/base/doc/pst-news14.pdf b/graphics/pstricks/base/doc/pst-news14.pdf
new file mode 100644
index 0000000000..736504dc19
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news14.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news14.tex b/graphics/pstricks/base/doc/pst-news14.tex
new file mode 100644
index 0000000000..75b209b580
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news14.tex
@@ -0,0 +1,202 @@
+%% $Id: pst-news14.tex 165 2015-07-26 07:27:55Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pst-node}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-plot}
+\usepackage{xkvview}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2014}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- 2014}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+%\section{\texttt{pstricks.sty}}
+%--------------------------------------------------------------------------------------
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+\subsection{Opacity}
+The keyword \Lkeyword{strokeopacity} is now also valid for \Lcs{psdot}, \Lcs{psdots},
+and the \Lkeyword{linestyle}/\Lkeyword{plotstyle}=\Lkeyval{dots}.
+
+
+\subsection{PostScript notation for numbers}
+Optional arguments which expects a real number can now have a preceeding ! character for
+a PostScript notation which is directly passed to PostScript. The user has take care that
+such a number isn't use before in another \TeX\ macro. In such a case it gives an error.
+
+\begin{LTXexample}[width=5cm]
+\pstVerb{ 1234321 srand }
+\begin{pspicture}[showgrid](-2,-2)(2,2)
+\psframe*[linecolor=blue,opacity=!Rand](2,2)
+\psframe*[linecolor=red,opacity=!Rand](-1,-1)(1,1)
+\psframe*[linecolor=green,opacity=!Rand](-2,-2)(0,0)
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{Fillstyle \texttt{eofill}}
+
+It is an experimental fillstyle. PostScript knows only the \Lkeyval{eofill} and the other way round
+needs some tricky internal commands and may not work in all cases.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[linewidth=2pt](12,4)
+\pscustom[linestyle=none,fillstyle=eofill,fillcolor=blue!40]{%
+ \psellipse(4,2)(2,2)\psellipse(2,2)(2,2)}
+\psellipse[linecolor=red](4,2)(2,2)\psellipse[linecolor=green](2,2)(2,2)
+%
+\pscustom[linestyle=none,fillstyle=oefill,fillcolor=blue!40]{%
+ \psellipse(10,2)(2,2)\psellipse(8,2)(2,2)}
+\psellipse[linecolor=red](10,2)(2,2)\psellipse[linecolor=green](8,2)(2,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{Option \texttt{correctAngle}}
+It now works also for \Lcs{psellipiticwedge}. The setting of \Lkeyword{origin} is needed
+if the center of the ellipse is not the origin of the underlying coordinate system.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[dimen=m,showgrid=top](6,4)
+\pnodes{P}(3,1)(5,1)(4,2)
+\pcline[nodesep=-1](P0)(P1)
+\pcline[nodesep=-1](P0)(P2)
+\psellipticarc[origin={P0},correctAngle](P0)(2,1){(P2)}{(P1)}
+\psellipticwedge[origin={P0},linecolor=red,correctAngle,
+ fillstyle=vlines](P0)(2,1){(P2)}{(P1)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}[dimen=m,showgrid=top](-3,-1)(3,3)
+\pnodes{P}(0,0)(2,0)(1,1)
+\pcline[nodesep=-1](P0)(P1)
+\pcline[nodesep=-1](P0)(P2)
+\psellipticarc[correctAngle](P0)(2,1){(P2)}{(P1)}
+\psellipticwedge[linecolor=red,correctAngle,
+ fillstyle=vlines](P0)(2,1){(P2)}{(P1)}
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+\subsection{New macro \nxLcs{psellipseAB}}
+
+\begin{BDef}
+\LcsStar{psellipseAB}\OptArgs\Largr{\CAny}\Largb{half radius}
+\end{BDef}
+
+
+\begin{LTXexample}[width=7cm]
+\begin{pspicture}[showgrid=true](7,7)%% showgrid=true
+\pnodes{a}(0.5,0)(2.5,1.8)(5.5,2.5)(6.25,3)(7,5)
+\pnodes{b}(0,1)(2,3)(5,4)(5.5,5)(6,7)
+\pscurve[arrowscale=2,linewidth=1.2pt]{->}(a0)(a1)(a2)(a3)(a4)
+\pscurve[arrowscale=2,linewidth=1.2pt]{->}(b0)(b1)(b2)(b3)(b4)
+\psellipseAB(a0)(b0){0.1}
+\psellipseAB[fillcolor=red!40,fillstyle=solid](a1)(b1){0.15}
+\psellipseAB(a2)(b2){0.2}
+\psellipseAB[fillcolor=blue!40,fillstyle=solid](a3)(b3){0.25}
+\uput[135](b1){$dS_1$}\uput[135](b2){$dS_2$}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\subsection{New macro \nxLcs{psRing}}
+
+\begin{BDef}
+\LcsStar{psRing}\OptArgs\Largr{\CAny}\OptArg{start,end}\Largb{Inner Radius}\Largb{Outer Radius}
+\end{BDef}
+
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](4,4)
+ \psRing(2,2){0.3}{0.8}
+ \psRing*[opacity=0.5](2,2){1}{2}
+\psdot(2,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](4,4)
+ \psRing[linecolor=red](2,2)[30,60]{1}{2}
+ \psRing[opacity=0.5,fillstyle=solid,
+ fillcolor=red](2,2)[60,30]{1}{2}
+\psdot(2,2)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\subsection{New macro \nxLcs{pscspline} (by Christoph Bersch)}
+
+\begin{BDef}
+\LcsStar{pscspline}\OptArgs\Largr{$x_0,y_0$}\Largr{$x_1,y_1$}\ldots\Largr{\CAny}
+\end{BDef}
+
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](5,5)
+ \pscspline[arrows=|->, showpoints](0,0)(1,2)
+ \pscspline[arrows=->, showpoints](0,4)(2,3)(3,4)(5,0)
+ \pscspline(4,4)
+\end{pspicture}\par
+\begin{pspicture}[showgrid](5,5)
+ \pscspline[linestyle=symbol, symbol=U,
+ symbolStep=12pt](0,0)(1,2)
+ \pscspline[linestyle=symbol, symbol=a,
+ symbolStep=12pt](0,4)(2,3)(3,4)(5,0)
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}[showgrid](5,5)
+ \pscustom[fillcolor=red!20, fillstyle=solid]{%
+ \pscspline(0,3)(4,2)(5,0)
+ \lineto(0,0)
+ \closepath}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{\nxLcs{Special Coor}}
+
+The Macro \Lcs{SpecialCoor} for scanning special coodinate expressions is now enabled by
+default. You can disable it with \Lcs{NormalCoor}.
+
+\clearpage
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
+
+
diff --git a/graphics/pstricks/base/doc/pst-news15.pdf b/graphics/pstricks/base/doc/pst-news15.pdf
new file mode 100644
index 0000000000..d7cc3f1057
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news15.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news15.tex b/graphics/pstricks/base/doc/pst-news15.tex
new file mode 100644
index 0000000000..c2369d7018
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news15.tex
@@ -0,0 +1,105 @@
+%% $Id: pst-news15.tex 444 2017-04-19 10:55:35Z herbert $
+\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
+ headexclude,footexclude,oneside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pst-node}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-solides3d}
+\usepackage{xkvview}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}\the\year}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- \the\year}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty} -- \texttt{pstricks-pdf.sty}}
+%--------------------------------------------------------------------------------------
+The code for an automatic loading of package \LPack{auto-pst-pdf} is now moved
+into an own package \LPack{pstricks-pdf}. It allows to run PSTricks code with \Lprog{pdflatex} \texttt{-{}-shell-escape <file>}.
+The option \Loption{pdf} for \LPack{pstricks} itself is now obsolet.
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+
+PSTricks now takes the optional argument \Loption{draft} of the main document class
+into account. It shows only a frame, given by the coordinates of the \Lenv{pspicture}
+environment.
+
+
+
+\subsection{PostScript code}
+Additionally to the macro \Lcs{pstVerb} there are now the keywords
+\Lkeyword{precode} and \Lkeyword{postscode} which can be used by other
+packages to paste PostScript code before and after the macros.
+
+\begin{LTXexample}[pos=t]
+\psset{viewpoint=40 35 10 rtp2xyz,Decran=40,lightsrc=viewpoint,unit=0.5}
+\begin{pspicture}(-6,-6)(6,6)
+\defFunction{cercle1}(t)
+ {4 t cos mul 2 sub rZ cos mul 4 t sin mul rZ sin mul add} %
+ {4 t cos mul 2 sub rZ sin mul neg 4 t sin mul rZ cos mul add}%
+ {4 t sin mul}%
+\psforeach{\iA}{0,20,..,360}{%
+ \psSolid[object=courbe,
+ precode=/rZ \iA\space def,
+ r=0,range=0 360,resolution=360,function=cercle1]}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{Background color}
+There is now the optional argument \Lkeyword{bgcolor} (backgound color),
+which is only valid for the background
+of the environment \Lenv{pspicture} with its defined coordinates.
+Internally it uses the macro \Lcs{psframe*}:
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture*}[bgcolor=black!20](-12,-5)(-2,5)
+\psset{viewpoint=6 -50 0 rtp2xyz,Decran=4,lightsrc=viewpoint}
+\defFunction[algebraic]{torus}(u,v)
+ {2*(1+ 0.5*cos(u))*cos(v)}% x=f(u,v)
+ {2*(1+ 0.5*cos(u))*sin(v)}% y=f(u,v)
+ {2*0.5*sin(u)}% z=f(u)
+\psSolid[object=surfaceparametree,
+ precode=/n1 48 def /n2 90 def /n1n2 n1 n2 mul 2 mul 1 sub def /iS 0 def,
+ base=0 2 pi mul 0 pi 1.5 mul ,
+ fcol=0 2 n1 2 sub {/i exch def
+ i n2 mul 2 i n2 mul n2 add 1 sub {(Black)} for} for
+ 1 2 n1 1 sub {/i exch def i n2 mul 1 add 2 i n2 mul n2 add 1 sub {(Black)} for} for,
+ fillcolor=white,incolor=yellow!50,
+ function=torus,
+ linewidth=0.5\pslinewidth,unit=5,ngrid=n1 n2]
+\end{pspicture*}
+\end{LTXexample}
+
+
+
+\clearpage
+\nocite{*}
+\bibliographystyle{plain}
+\bibliography{PSTricks}
+
+\printindex
+
+
+\end{document}
+
+
diff --git a/graphics/pstricks/base/doc/pst-news16.pdf b/graphics/pstricks/base/doc/pst-news16.pdf
new file mode 100644
index 0000000000..8841715ed5
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news16.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news16.tex b/graphics/pstricks/base/doc/pst-news16.tex
new file mode 100644
index 0000000000..9a544ca5bd
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news16.tex
@@ -0,0 +1,105 @@
+%% $Id: pst-news16.tex 446 2017-04-19 11:40:55Z herbert $
+\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
+ headinclude=false,footinclude=false,twoside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\let\pstricksFV\fileversion
+\let\pstricksFD\filedate
+\usepackage{pst-node}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-plot}
+\usepackage{pst-solides3d}
+\usepackage{pst-node}
+\usepackage{pstricks-add}
+\usepackage{xkvview}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}\the\year}}
+\def\textat{\char064}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+
+\addbibresource{PSTricks.bib}
+
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- 2016}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty} -- \texttt{pstricks-pdf.sty}}
+%--------------------------------------------------------------------------------------
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
+%--------------------------------------------------------------------------------------
+\subsection{refangle}
+
+This version fixes a bug with \verb|pst@refangle| which is used inside PostScript.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,3.5)
+\psparametricplot[algebraic]{0}{9}{t^2/9 | sin(t)+1}%
+\pscurvepoints{0}{9}{(t^2)/9 | sin(t)+1}{P}%
+\pspolylineticks[metricInitValue=1,ticksize=-2pt 2pt,Os=1,Ds=.2]{P}{ ds }{1}{56}%
+\pspolylineticks[metricInitValue=1,Os=1,Ds=2]{P}{ ds }{0}{6}%
+\multido{\iA=1+1,\iB=3+2}{5}{\Put{6pt;(PNormal\iA)}(PTick\iA){\tiny \iB}}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{sloppypar}
+There is a new optional argument \Lkeyword{draft} which has the same meaning as
+the one for \Lcs{includegraphics}. The PSTricks image is not drawn, only the
+area of the \Lenv{pspicture} coordinates is seen by a rectangle (only for \LaTeX).
+\end{sloppypar}
+
+\begin{LTXexample}[pos=t]
+\psset{draft}
+\begin{pspicture}(-1,-1)(10,3.5)
+\psparametricplot[algebraic]{0}{9}{t^2/9 | sin(t)+1}%
+\pscurvepoints{0}{9}{(t^2)/9 | sin(t)+1}{P}%
+\pspolylineticks[metricInitValue=1,ticksize=-2pt 2pt,Os=1,Ds=.2]{P}{ ds }{1}{56}%
+\pspolylineticks[metricInitValue=1,Os=1,Ds=2]{P}{ ds }{0}{6}%
+\multido{\iA=1+1,\iB=3+2}{5}{\Put{6pt;(PNormal\iA)}(PTick\iA){\tiny \iB}}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{\Lcs{newpsstyle}}
+
+The command \Lcs{newpsstyle} has a new syntax:
+
+\begin{BDef}
+\Lcs{newpssytle}\OptArg{package name}\Largb{name}\Largb{definitions}
+\end{BDef}
+
+For example
+
+\begin{verbatim}
+\newpsstyle[pst-shell]{Epiteonium}{D=1,A=9.5,alpha=85.9,beta=9,mu=0,Omega=0,
+ phi=81,a=2.1,b=1.6,L=1.3,P=-60,W1=200,W2=20,N=8.3}
+\end{verbatim}
+
+
+\clearpage
+\nocite{*}
+%\bibliographystyle{plain}
+\printbibliography
+
+\printindex
+
+
+\end{document}
+
+
diff --git a/graphics/pstricks/base/doc/pst-news17.pdf b/graphics/pstricks/base/doc/pst-news17.pdf
new file mode 100644
index 0000000000..e3d09c094d
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news17.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news17.tex b/graphics/pstricks/base/doc/pst-news17.tex
new file mode 100644
index 0000000000..53cf23c2ce
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news17.tex
@@ -0,0 +1,226 @@
+%% $Id: pst-news17.tex 699 2017-12-31 10:27:45Z herbert $
+\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
+ headinclude=false,footinclude=false,twoside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage[utf8]{inputenc}
+\usepackage{pst-node}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-plot}
+\usepackage{pst-solides3d}
+\usepackage{pst-node}
+\usepackage{pstricks-add}
+\usepackage{xkvview}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}\the\year}}
+\def\textat{\char064}
+\usepackage{biblatex}
+\addbibresource{PSTricks.bib}
+
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- \the\year}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty} -- \texttt{pstricks-pdf.sty}}
+%--------------------------------------------------------------------------------------
+
+There is now a new optional argument for the package: \Loption{psfonts}. If it is
+enabled PSTricks will use the original PostScript fonts like Helvetica, Times, \ldots.
+The default is to use the URW fonts (Nimbus Roman, Nimbus Sans, \ldots) which are embedded by default!
+The PostScript fonts are only embedded if present on your system.
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks-tex.tex}}
+%--------------------------------------------------------------------------------------
+This package collects all additional latex macros which must be definied
+when running PSTricks with tex. They all moved from the base \texttt{pstricks.tex} into
+this new file.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (v. 2.76 -- 2017/09/17)}
+%--------------------------------------------------------------------------------------
+
+
+\subsection{PostScript Fonts}
+This version of PSTricks uses the Ghostscript fonts from URW instead of the
+original base 14 fonts of PostScript. For example: instead of Helvetica we use
+NimbusSanL-Regu. The URW fonts are always embedded in the created ps or pdf output.
+This is not the default for the PostScript fonts. You change this setting with the optional
+argument to \LPack{pstricks.sty}.
+
+
+\subsection{Error message}
+
+Using PSTricks with \Lprog{pdflatex} will work only when using package
+\LPack{auto-pst-pdf} and running the \TeX-file with
+
+\begin{verbatim}
+pdflatex -shell-escape <file>
+\end{verbatim}
+
+otherwise you'll get an error message which was misleading in the past:
+
+\begin{verbatim}
+[...]
+! Undefined control sequence.
+<recently read> \c@lor@to@ps
+\end{verbatim}
+
+This changes now to
+
+
+\begin{verbatim}
+[...]
+! Undefined control sequence.
+\c@lor@to@ps ->\PSTricks
+ _Not_Configured_For_This_Format
+\end{verbatim}
+
+\subsection{Random colors}
+There are now four predefined random ''colors``:
+
+\begin{verbatim}
+ \definecolor[ps]{randomgray}{gray}{Rand}%
+ \definecolor[ps]{randomrgb}{rgb}{Rand Rand Rand}%
+ \definecolor[ps]{randomcmyk}{cmyk}{Rand Rand Rand Rand}%
+ \definecolor[ps]{randomhsb}{hsb}{Rand Rand Rand}%
+\end{verbatim}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomgray,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomrgb,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomcmyk,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomhsb,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+The random counter can be initialized with \verb|\pstVerb{rrand srand}|.
+
+\subsection{refangle}
+
+This version fixes a bug with \verb|pst@refangle| which is used inside PostScript.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,3.5)
+\psparametricplot[algebraic]{0}{9}{t^2/9 | sin(t)+1}%
+\pscurvepoints{0}{9}{(t^2)/9 | sin(t)+1}{P}%
+\pspolylineticks[metricInitValue=1,ticksize=-2pt 2pt,Os=1,Ds=.2]{P}{ ds }{1}{56}%
+\pspolylineticks[metricInitValue=1,Os=1,Ds=2]{P}{ ds }{0}{6}%
+\multido{\iA=1+1,\iB=3+2}{5}{\Put{6pt;(PNormal\iA)}(PTick\iA){\tiny \iB}}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{sloppypar}
+There is a new optional argument \Lkeyword{draft} which has the same meaning as
+the one for \Lcs{includegraphics}. The PSTricks image is not drawn, only the
+area of the \Lenv{pspicture} coordinates is seen by a rectangle (only for \LaTeX).
+\end{sloppypar}
+
+\begin{LTXexample}[pos=t]
+\psset{draft}
+\begin{pspicture}(-1,-1)(10,3.5)
+\psparametricplot[algebraic]{0}{9}{t^2/9 | sin(t)+1}%
+\pscurvepoints{0}{9}{(t^2)/9 | sin(t)+1}{P}%
+\pspolylineticks[metricInitValue=1,ticksize=-2pt 2pt,Os=1,Ds=.2]{P}{ ds }{1}{56}%
+\pspolylineticks[metricInitValue=1,Os=1,Ds=2]{P}{ ds }{0}{6}%
+\multido{\iA=1+1,\iB=3+2}{5}{\Put{6pt;(PNormal\iA)}(PTick\iA){\tiny \iB}}
+\end{pspicture}
+\end{LTXexample}
+
+
+\subsection{\nxLcs{newpsstyle}}
+
+The command \Lcs{newpsstyle} has a new syntax:
+
+\begin{BDef}
+\Lcs{newpsstyle}\OptArg{package name}\Largb{name}\Largb{definitions}
+\end{BDef}
+
+For example
+
+\begin{verbatim}
+\newpsstyle[pst-shell]{Epiteonium}{D=1,A=9.5,alpha=85.9,beta=9,mu=0,Omega=0,
+ phi=81,a=2.1,b=1.6,L=1.3,P=-60,W1=200,W2=20,N=8.3}
+\end{verbatim}
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+A full circle has by default an angle of 360 degrees.
+Setting the circle with \Lcs{degrees}\Largs{17} to another value doesn't work for the
+PostScript function \texttt{PtoC} (Polat to Cartesian -- $(r,\phi)\rightarrow (x,y)$).
+Now there is a \texttt{PtoCrel} for the new definition
+which now takes
+the setting of \Lcs{pst@angleunit} into account.
+
+\bigskip
+\begin{LTXexample}[pos=t]
+\degrees[16]
+\begin{pspicture}[showgrid](-2,-2)(2,2)
+\psline[linecolor=blue](!1.8 2 PtoCrel)% 45 degrees
+\end{pspicture}
+\end{LTXexample}
+
+The command \Lcs{framed} was build by clockwise line sequence. Now it is the
+other way round to get the same behaviour as for all other commands
+with closed lines.
+
+
+There are some new PS functions
+
+\begin{verbatim}
+/AnytoDeg { pst@angleunit } def
+/DegtoAny { 1 pst@angleunit div} def
+/AnytoRad { AnytoDeg DegtoRad } def
+/RadtoAny { RadtoDeg DegtoAny } def
+\end{verbatim}
+
+See \LPack{pst-node} documentation for an example.
+
+
+\clearpage
+\nocite{*}
+\printbibliography
+
+\printindex
+
+
+\end{document}
+
diff --git a/graphics/pstricks/base/doc/pst-news18.pdf b/graphics/pstricks/base/doc/pst-news18.pdf
new file mode 100644
index 0000000000..00b1435743
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news18.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news18.tex b/graphics/pstricks/base/doc/pst-news18.tex
new file mode 100644
index 0000000000..dde1638e58
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news18.tex
@@ -0,0 +1,216 @@
+%% $Id: pst-news17.tex 699 2017-12-31 10:27:45Z herbert $
+\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
+ headinclude=false,footinclude=false,twoside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage{pstricks,pst-node}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-plot}
+\usepackage{pst-solides3d}
+\usepackage{pst-node}
+\usepackage{pst-calculate}
+\usepackage{pstricks-add}
+\usepackage{xkvview}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}\the\year}}
+\def\textat{\char064}
+\usepackage{dtk-logos}
+\usepackage{biblatex}
+\addbibresource{PSTricks.bib}
+
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- \the\year}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty} -- \texttt{pstricks-pdf.sty}}
+%--------------------------------------------------------------------------------------
+
+There is now a new optional argument for the package: \Loption{ckeckengine}, which will
+be used in later versions.
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks-tex.tex}}
+%--------------------------------------------------------------------------------------
+This package collects all additional latex macros which must be definied
+when running PSTricks with tex. They all moved from the base \texttt{pstricks.tex} into
+this new file.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (v. 2.89 -- 2018/12/16)}
+%--------------------------------------------------------------------------------------
+
+Use the \Lcs{long} definition for \Lcs{@fornoop} to be compatible to the latest
+changes in \LaTeX.
+
+In old versions the macro \Lcs{rput} can't be used with the key-value setting. The latest version
+of \Lfile{pstricks.tex} defines a modified \Lcs{rput} which ckecks first if a following
+optional argument has the old behaviour, eg \Lcs{rput}\texttt{[lb]\{...\}} or
+a key/value setting like \Lcs{rput}\texttt{[ref=lb,rot=...](...)}. However, there should be no
+change in the output and, of course, it makes no sense to mix the old and new setting in \emph{one}
+\Lcs{rput} macro. The setting refers only to the optional arguments which are valid for \Lcs{rput}:
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}[showgrid](6,5)
+\rput[ref=rt](3,2){%
+ \psframe[linecolor=red](3,3)}
+\rput[lb](0,0){\psframe(3,3)}
+\rput{45}(3,0.5){\psframe(3,3)}
+\end{pspicture}
+\end{LTXexample}
+
+\subsection{PostScript Fonts}
+This version of PSTricks uses the Ghostscript fonts from URW instead of the
+original base 14 fonts of PostScript. For example: instead of Helvetica we use
+NimbusSanL-Regu. The URW fonts are always embedded in the created ps or pdf output.
+This is not the default for the PostScript fonts. You change this setting with the optional
+argument to \LPack{pstricks.sty}.
+
+
+\subsection{Error message}
+
+Using PSTricks with \Lprog{pdflatex} will work only when using package
+\LPack{auto-pst-pdf} and running the \TeX-file with
+
+\begin{verbatim}
+pdflatex -shell-escape <file>
+\end{verbatim}
+
+otherwise you'll get an error message which was misleading in the past:
+
+\begin{verbatim}
+[...]
+! Undefined control sequence.
+<recently read> \c@lor@to@ps
+\end{verbatim}
+
+This changes now to
+
+
+\begin{verbatim}
+[...]
+! Undefined control sequence.
+\c@lor@to@ps ->\PSTricks
+ _Not_Configured_For_This_Format
+\end{verbatim}
+
+\subsection{Random colors}
+There are now four predefined random ''colors``:
+
+\begin{verbatim}
+ \definecolor[ps]{randomgray}{gray}{Rand}%
+ \definecolor[ps]{randomrgb}{rgb}{Rand Rand Rand}%
+ \definecolor[ps]{randomcmyk}{cmyk}{Rand Rand Rand Rand}%
+ \definecolor[ps]{randomhsb}{hsb}{Rand Rand Rand}%
+\end{verbatim}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomgray,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomrgb,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomcmyk,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(10,5)
+\multido{\rA=0.0+0.1}{50}{\psline[linecolor=randomhsb,linewidth=1mm](0,\rA)(10,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+
+The random counter can be initialized with \verb|\pstVerb{rrand srand}|.
+
+
+\subsection{Optional argument \texttt{xetex}}
+The output driver \Lprog{xdvipdfmx} for using \XeTeX\ or \XeLaTeX\ is not fully
+compatible to \Lprog{dvips}. Especially some node operations will not work. If the
+\LaTeX\ package detects a programm run with \XeLaTeX\ it automatically loads the file
+\Lfile{pstricks-xetex.def} which defines some macros with a new name to keep the existing
+ones. By now there is only
+\Lcs{NCput}, which is the same as \Lcs{ncput}, but works with \XeLaTeX.
+
+If someone wants to use these macros though he/she runs not \XeLaTeX\ then these macros are
+available too by using the optional argument \Loption{xetex}:
+
+\begin{verbatim}
+\usepackage[xetex]{pstricks}
+\end{verbatim}
+
+
+
+
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+A full circle has by default an angle of 360 degrees.
+Setting the circle with \Lcs{degrees}\Largs{17} to another value doesn't work for the
+PostScript function \texttt{PtoC} (Polat to Cartesian -- $(r,\phi)\rightarrow (x,y)$).
+Now there is a \texttt{PtoCrel} for the new definition
+which now takes
+the setting of \Lcs{pst@angleunit} into account.
+
+\bigskip
+\begin{LTXexample}[pos=t]
+\degrees[16]
+\begin{pspicture}[showgrid](-2,-2)(2,2)
+\psline[linecolor=blue](!1.8 2 PtoCrel)% 45 degrees
+\end{pspicture}
+\end{LTXexample}
+
+The command \Lcs{framed} was build by clockwise line sequence. Now it is the
+other way round to get the same behaviour as for all other commands
+with closed lines.
+
+
+There are some new PS functions
+
+\begin{verbatim}
+/AnytoDeg { pst@angleunit } def
+/DegtoAny { 1 pst@angleunit div} def
+/AnytoRad { AnytoDeg DegtoRad } def
+/RadtoAny { RadtoDeg DegtoAny } def
+\end{verbatim}
+
+See \LPack{pst-node} documentation for an example.
+
+
+\clearpage
+\nocite{*}
+\printbibliography
+
+\printindex
+
+
+\end{document}
+
diff --git a/graphics/pstricks/base/doc/pst-news19.pdf b/graphics/pstricks/base/doc/pst-news19.pdf
new file mode 100644
index 0000000000..03e52eaaa5
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news19.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pst-news19.tex b/graphics/pstricks/base/doc/pst-news19.tex
new file mode 100644
index 0000000000..5c7a52d60a
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-news19.tex
@@ -0,0 +1,184 @@
+%% $Id: pst-news19.tex 927 2019-01-30 15:11:30Z herbert $
+\PassOptionsToPackage{useCalc}{pstricks}
+\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
+ headinclude=false,footinclude=false,twoside]{pst-doc}
+\listfiles
+\let\Lfile\LFile
+\usepackage{pstricks}
+\let\pstnodeFV\fileversion
+\let\pstnodeFD\filedate
+\usepackage{pst-node}
+\usepackage{pst-plot}
+\usepackage{pst-solides3d}
+\usepackage{pst-node}
+\usepackage{pst-calculate}
+\usepackage{pstricks-add}
+\usepackage{xkvview}
+\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}\the\year}}
+\def\textat{\char064}
+\usepackage{dtk-logos}
+\usepackage{biblatex}
+\addbibresource{PSTricks.bib}
+
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=?}
+\begin{document}
+
+%\psset{PstDebug=1}
+\title{\texttt{News -- \the\year}\\ \Large new macros and bugfixes for the
+basic package \nxLFile{pstricks}}
+\author{Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\clearpage
+\tableofcontents
+
+\clearpage
+\part{\texttt{pstricks} -- package}
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.sty} -- \texttt{pstricks-pdf.sty}}
+%--------------------------------------------------------------------------------------
+
+There is now a new optional argument for the package: \Loption{ckeckengine}, which will
+be used in later versions.
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks-tex.tex}}
+%--------------------------------------------------------------------------------------
+This package collects all additional latex macros which must be definied
+when running PSTricks with tex. They all moved from the base \texttt{pstricks.tex} into
+this new file.
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.tex} (v. 2.94 -- 2019/01/07)}
+%--------------------------------------------------------------------------------------
+
+There is a new macro called \Lcs{psLine} (uppercase L!) which can have
+only one or two pairs of coordinates. Remember that \Lcs{psline} can have more.
+With \Lcs{psLine} and an defined arrow you'll get nothing for something
+like \verb|\psLine{->}{1,1)(1,1)|, whereas \Lcs{psline} will output the arrowtip!
+This behaviour of \Lcs{psLine} maybe helpful for animations where a speedvector
+or a vector
+is shown with its components and one do not really knows the coordinates.
+
+\begin{BDef}
+\Lcs{psLine}\OptArgs\OptArg{\Largr{$x_0,y_0$}}\Largr{$x_1,y_1$}\\
+\Lcs{psLineSegments}\OptArgs\Largr{$x_0,y_0$}\Largr{$x_1,y_1$}\ldots\Largr{$x_{n-1},y_{n-1}$}\Largr{$x_n,y_n$}
+\end{BDef}
+
+If $P_0$ is missing for \Lcs{psLine} then $(0,0)$ as first point is assumed. \Lcs{psLineSegments} expects always
+pairwise coordinates.
+
+
+\begin{LTXexample}[width=7cm]
+\psset{unit=2cm}
+\begin{pspicture}(-1,-1)(1,1)
+\degrees[12]
+ \pscircle{1}
+ \multido{\iA=0+1,\iB=3+1}{12}{%
+ \pnode(1;\iA){R}
+ \psLine[linecolor=gray,linestyle=dashed,
+ linewidth=0.4pt](R)
+ \psset{arrows=->,arrowscale=1.5,linewidth=1.5pt}
+ \rput(R){%
+ \psLine[linecolor=blue]({1;\iB}|0,0)
+ \psLine[linecolor=red](0,0|{1;\iB})
+ \psLine(1;\iB)}%
+}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=4cm]
+\psset{unit=0.5cm}
+\begin{pspicture}(6,6)
+\psLineSegments[linecolor=blue]{->}(0,0)(0,1)(0,2)(0,3)(0,4)(1,4)%
+ (3,4)(4,4)(4,3)(4,1)(4,0)(2,0)
+\end{pspicture}
+\end{LTXexample}
+
+
+There is a new experimental feature, which allows algebraic notation for
+coordinates. It needs
+
+\begin{verbatim}
+\usepackage[useCalc]{pstricks}
+\end{verbatim}
+
+\begin{LTXexample}[width=5.5cm]
+\begin{pspicture}[showgrid](5,5)
+\psline[linecolor=blue]{->}%
+ (0,4/3*0.5)(0.6*sqrt{33}, sqrt{20+0.3})
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\subsection{Error message}
+
+Using PSTricks with \Lprog{pdflatex} will work only when using package
+\LPack{auto-pst-pdf} and running the \TeX-file with
+
+\begin{verbatim}
+pdflatex -shell-escape <file>
+\end{verbatim}
+
+otherwise you'll get an error message which was misleading in the past:
+
+\begin{verbatim}
+[...]
+! Undefined control sequence.
+<recently read> \c@lor@to@ps
+\end{verbatim}
+
+This changes now to
+
+
+\begin{verbatim}
+[...]
+! Undefined control sequence.
+\c@lor@to@ps ->\PSTricks
+ _Not_Configured_For_This_Format
+\end{verbatim}
+
+
+\subsection{Optional argument \texttt{xetex}}
+The output driver \Lprog{xdvipdfmx} for using \XeTeX\ or \XeLaTeX\ is not fully
+compatible to \Lprog{dvips}. Especially some node operations will not work. If the
+\LaTeX\ package detects a programm run with \XeLaTeX\ it automatically loads the file
+\Lfile{pstricks-xetex.def} which defines some macros with a new name to keep the existing
+ones. By now there is only
+\Lcs{NCput}, which is the same as \Lcs{ncput}, but works with \XeLaTeX.
+
+If someone wants to use these macros though he/she runs not \XeLaTeX\ then these macros are
+available too by using the optional argument \Loption{xetex}:
+
+\begin{verbatim}
+\usepackage[xetex]{pstricks}
+\end{verbatim}
+
+
+
+
+
+
+%--------------------------------------------------------------------------------------
+\section{\texttt{pstricks.pro}}
+%--------------------------------------------------------------------------------------
+
+
+
+\clearpage
+\nocite{*}
+\printbibliography
+
+\printindex
+
+
+\end{document}
+
diff --git a/graphics/pstricks/base/doc/pst-user.pdf b/graphics/pstricks/base/doc/pst-user.pdf
new file mode 100644
index 0000000000..bac64d06dd
--- /dev/null
+++ b/graphics/pstricks/base/doc/pst-user.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/pstricks-bug.tex b/graphics/pstricks/base/doc/pstricks-bug.tex
new file mode 100644
index 0000000000..b5f9ba2c32
--- /dev/null
+++ b/graphics/pstricks/base/doc/pstricks-bug.tex
@@ -0,0 +1,547 @@
+%% BEGIN pstricks.bug
+% LAST MODIFIED: October 3, 1994
+% The latest version of this file can be obtained from Princeton.EDU.
+
+% This file list some bugs and latebreaking news for PSTricks,
+% version 0.93a, released March 12, 1993.
+
+% PROBLEMS:
+
+% 1. \scalebox can report missing number errors or worse, depending
+% on what is in its argument.
+% PATCH: Input this file.
+%
+% 2. palette.tex keeps loading pstricks.tex.
+% PATCH: In palette.tex, change
+% \ifx\pstricksloaded ...
+% to
+% \ifx\PSTricksLoaded ...
+%
+% 3. \pscirclebox doesn't leave the right amount of space.
+% PATCH: Input this file.
+%
+% 4. \ncbar doesn't work right.
+% PATCH: Input this file (AFTER inputting pst-node.tex).
+%
+% 5. Nested \multips doesn't work.
+% PATCH: Input this file.
+%
+% 6. \psgrid sometimes gets the size wrong by 1 unit.
+% PATCH: Input this file.
+%
+% 7. \begin{overlaybox} ... \end{overlaybox} cannot be used instead
+% of \overlaybox ... \endoverlaybox.
+% PATCH: Input this file.
+%
+% 8. Overlays don't interact properly with rotation.
+% PATCH: Input this file.
+%
+% 9. Overlays don't work properly with nodes. Specifically, they only work
+% when the nodes and node connections and labels are all on the same
+% overlay.
+% PATCH: Input this file, and include the command \AltOverlayMode
+% before the overlay in which you want to use nodes (before the whole
+% overlay box or slide, or in the beginning of the document).
+% Warning: Normally, overlay material is made invisible by translating
+% it off the page. With \AltOverlayMode, it is done by setting a small
+% clip path somewhere off the page. The material is made visible again
+% by issuing "initclip", which resets the clipping path completely.
+% This makes it incompatible with any other clipping tricks.
+%
+% 10. SpecialCoor and the : version of nrot do not work when ;!|:
+% do not have \catcode 12 (e.g., with french.sty).
+%
+% PATCH: Input this file, and read the following:
+%
+% FAQ: What non-standard category codes and active characters are
+% compatible with PSTricks?
+%
+% Using non-standard category codes can confuse PSTricks in many ways.
+% What follows is not comprehensive.
+%
+% Characters ()[],*=-
+% These must have category code 3, 7, 8, 11 or 12.
+% The category code must be set BEFORE inputting the PSTricks files.
+%
+% Characters <>|;!:
+% Same as above, but category code 13 (``active'') is also OK, in
+% which case the code must be 12 when the PSTricks files are input.
+%
+% Characters \{}@#$%^&_
+% These should have their usual category codes when PSTricks files
+% are input, but then they can be set arbitrarily.
+%
+% Characters +"'.?/~`
+% No restrictions, but generally these should have category code 12
+% when the PSTricks files are input.
+%
+% 11. Gradient fill style doesn't work the gradmidpoint=0 or gradmidpoint=1.
+% WORKAROUND: Until the next release, set gradmidpoint
+% close to, but not too close to or equal to, 0 or 1.
+%
+% 12. If using \pscharpath with protected fonts, the dashed and dotted
+% linestyles, setting shadow=true, and \pstextpath produce an
+% invalidaccess error.
+% WORKAROUND: Until the next release, do not use those features with
+% \pscharpath and protected fonts. In the next release, the dashed
+% and dotted line styles will work, and shadow=true and \pstextpath
+% will neither work nor produce errors with protected fonts.
+%
+% 13. \scalebox and \scaleboxto do not work properly with negative scaling.
+%
+% 14. With \psplot, setting labels=y or ticks=y does not suppress labels
+% or ticks on the x-axis.
+% PATCH: Get version 0.93a-patched of pst-plot.tex, distributed
+% which is part of the 0.93a distribution starting March 30, 1994.
+%
+% 15. When lines are very short, linestyle=dash may cause an error.
+% PATCH: Input this file.
+%
+% 16. \clipbox does not work.
+% PATCH: Input this file.
+%
+% 17. Various nodes are missing \leavevmode, which can cause irregularities
+% if they occur at the beginning of a paragraph.
+% WORKAROUND: Put \leavevmode before the offending node command.
+% E.g., \leavevmode\rnode{foo}
+%
+% 18. The Textures entry in the configuration file has several problems.
+% WORKAROUND: Contact tvz@Princeton.EDU to get a new pstricks.con.
+%
+% 19. There are two problems with using PSTricks without a header file:
+% 1. pst-make.tex gives an error.
+% 2. You get a PostScript error.
+% WORKAROUND:
+% 1. At the end of pst-make.tex, change to line
+% \MakeInputHpst-coil.doc}{pst-coil.tex}
+% to
+% \MakeInput{pst-coil.doc}{pst-coil.tex}
+% (The `H' become `{').
+% 2. In pstricks.doc (before running pst-make.tex) or in
+% pstricks.tex (after running pst-make.tex), add the line
+% /T /translate load def
+% between the lines
+% /CP /currentpoint load def
+% /ED { exch def } bind def
+%
+% 20. Mixed coordinates do not work with \SpecialCorr
+% PATCH: Input this file.
+%
+% 21. Axis labels in \psplot use a hyphen instead of a minus sign.
+% PATCH: Get version 0.93a-patched of pst-plot.tex,
+% which is part of the 0.93a distribution starting March 30, 1994.
+%
+% 22. For certain plotstyle's the \fileplot command does not work.
+% PATCH: Get version 0.93a-patched of pst-plot.tex,
+% which is part of the 0.93a distribution starting March 30, 1994.
+%
+% 23. \scale does not work in \pscustom.
+% PATCH: Input this file.
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+% 1.
+\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@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\scalebox#1{\pst@makebox{\@scalebox{#1}}}
+\def\@scalebox#1{%
+ \begingroup
+ \pst@getscale{#1}\pst@tempa
+ \let\pst@tempc\pst@tempg
+ \let\pst@tempd\pst@temph
+ \@@scalebox
+ \endgroup}
+\def\@@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}}
+\def\scaleboxto(#1,#2){\pst@makebox{\@scaleboxto(#1,#2)}}
+\def\@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\scaleboxto\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 }%
+ \@@scalebox
+ \endgroup}
+
+% 3.
+\def\pscirclebox@ii#1{%
+ \begingroup
+ \pst@useboxpar
+ \setbox\pst@hbox=\hbox{#1\pscirclebox@iii\box\pst@hbox}%
+ \ifpsboxsep
+ \pst@dima=.5\wd\pst@hbox
+ \pst@dimb=\ht\pst@hbox
+ \advance\pst@dimb\dp\pst@hbox
+ \divide\pst@dimb 2
+ \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
+ \fi
+ \leavevmode\box\pst@hbox
+ \endgroup}
+
+% 4.
+\pst@def{NCBar}<%
+ \tx@GetPos
+ \tx@GetArms
+ /mtrx AngleA matrix rotate def
+ x1a y1a mtrx itransform pop
+ x2a y2a mtrx itransform pop sub
+ dup 0 mtrx transform
+ 3 -1 roll 0 gt
+ { /y2a exch y2a add def /x2a exch x2a add def }
+ { /y1a exch neg y1a add def /x1a exch neg x1a add def }
+ ifelse
+ mark
+ x2 y2 x2a y2a x1a y1a x1 y1
+ tx@Dict begin false \tx@Line end
+ /LPutVar [ x2 y2 x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def
+ /LPutPos { LPutVar \tx@AnglesMP } def>
+
+% 5.
+\def\multips{\begingroup\pst@getrputrot\multips@i}
+\def\multips@i(#1){\@ifnextchar({\@multips@ii(#1)}{\@multips@ii(0,0)(#1)}}
+\def\@multips@ii(#1)(#2)#3#4{%
+ \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\pst@rot\@empty\else\pst@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}
+
+% 6.
+\pst@def{Grid}<%
+ newpath
+ /a 4 string def % Empty string
+ /b ED % Label size
+ /c ED % Label color procedure.
+ /n ED % Number of grid dots
+ cvi dup 1 lt { pop 1 } if /s ED % Number subdivisions
+% Stack: x-unit y-unit
+ s div dup 0 eq { pop 1 } if /dy ED % y-distance between lines.
+ s div dup 0 eq { pop 1 } if /dx ED % x-distance between lines.
+% These two are integer multiples of dx and dy:
+ dy div round dy mul /y0 ED % y-origin.
+ dx div round dx mul /x0 ED % x-origin.
+% These four are integers, measuring dx and dy units:
+ dy div round cvi /y2 ED % y2
+ dx div round cvi /x2 ED % x2
+ dy div round cvi /y1 ED % y1
+ dx div round cvi /x1 ED % x1
+ /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def % Sign of y2-y1
+ /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def % Sign of x2-x1
+% Set up the font and a few parameters for making labels:
+ b 0 gt
+ { /z1 b 4 div CLW 2 div add def
+ /Helvetica findfont b scalefont setfont
+ /b b .95 mul CLW 2 div add def }
+ if
+% If Level 2, use automatic stroke adjustment. Otherwise, do by hand:
+ systemdict /setstrokeadjust known % Level 2
+ { true setstrokeadjust /t { } def }
+ { /t {
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ } bind def }
+ ifelse
+% Now make the vertical lines:
+ gsave
+% Make dotted line, if appropriate
+ n 0 gt
+ { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash }
+ { 2 setlinecap }
+ ifelse
+% Initialize index:
+ /i x1 def
+% Find y-values of endpoints. Adjust these if lines are dotted because
+% otherwise rounding errors or stroke adjustment can cause first or
+% last dot to be dropped. (Only GhostScript has exhibited problem of
+% dropping first dot. This is probably a bug.)
+ /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def
+ /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def
+% Number of lines (Max 1000):
+ x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if
+ {
+% Make label:
+ i dx mul dup y0 moveto
+ b 0 gt
+ { gsave
+ c % Color
+ i a cvs dup % Index, as a string
+ stringwidth pop /z2 ED % Stringwidth
+ w 0 gt {z1} {z1 z2 add neg} ifelse
+ h 0 gt {b neg} {z1} ifelse
+ rmoveto
+ show
+ grestore
+ } if
+% Make line ( on stack: i dx mul ):
+ dup t f moveto g t L stroke
+% Advance index:
+ /i i w add def
+ } repeat
+ grestore
+% Now make horizontal lines:
+ gsave
+ n 0 gt
+ { 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+ { 2 setlinecap }
+ ifelse
+ /i y1 def
+ /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def
+ /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def
+ y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if
+ { newpath
+ i dy mul dup x0 exch moveto
+ b 0 gt
+ { gsave
+ c
+ i a cvs dup
+ stringwidth pop /z2 ED
+ w 0 gt {z1 z2 add neg} {z1} ifelse
+ h 0 gt {z1} {b neg} ifelse
+ rmoveto
+ show
+ grestore
+ } if
+ dup f exch t moveto g exch t L stroke
+ /i i h add def
+ } repeat
+ grestore>
+
+% 7.
+\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}
+
+% 8 and 9.
+\pst@def{BeginOL}<%
+ dup (all) eq exch TheOL eq or
+ { IfVisible not { Visible /IfVisible true def } if }
+ { IfVisible { Invisible /IfVisible false def } if }
+ ifelse>
+\pst@def{InitOL}<%
+ /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+ /Visible { CP OLUnit idtransform T moveto } def
+ /Invisible { CP OLUnit neg exch neg exch idtransform T moveto } def
+ /BOL { \tx@BeginOL } def /IfVisible true 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}}}
+
+% 10.
+\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
+\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}
+
+% 13. See 1.
+
+% 15.
+\pst@def{DashLine}<%
+ % "a" is set to the length of first and last black segment, as fraction of
+ % usual black segment.
+ dup 0 gt
+ { /a .5 def \tx@PathLength exch div }
+ { pop /a 1 def \tx@PathLength }
+ ifelse
+ /b ED % Pattern should fit evenly in b
+ /x ED % Length of white segment.
+ /y ED % Length of black segment.
+ /z y x add def % Total length of dash pattern.
+ % If pattern is repeated n times, total length is (nz + 2(a-.5)y).
+ % Set length to b, solve for n, round, and leave on stack:
+ % n = round((b - 2(a-.5)y)/z)
+ b a .5 sub 2 mul y mul sub z \tx@Div round
+ % Adjust x and y by factor k so that
+ % (n(kz) + 2(a-.5)(ky)) = b.
+ % Solve for k and leave two copies on stack:
+ % k = b/(nz + 2(a-.5)y)
+ z mul a .5 sub 2 mul y mul add b exch \tx@Div dup
+ % Scale x and y, set dash, and stroke:
+ y mul /y ED x mul /x ED
+ % Make sure x and y are both positive:
+ x 0 gt y 0 gt and
+ { [ y x ] 1 a sub y mul }
+ { [ 1 0 ] 0 }
+ ifelse
+ setdash
+ stroke>
+
+% 16.
+\def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
+\def\clipbox@[#1]{\pst@makebox\clipbox@@{#1}}
+
+% 20.
+\def\mixed@coor#1#2{%
+ \begingroup
+ \special@@coor#1;;\@nil
+ \let\pst@tempa\pst@coor
+ \special@@coor#2;;\@nil
+ \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }%
+ \endgroup
+ \let\pst@coor\pst@tempg}
+
+% 23.
+\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}
+
+\catcode`\@=\TheAtCode\relax
+\endinput
+%% END pstricks.bug
diff --git a/graphics/pstricks/base/doc/pstricks-doc.pdf b/graphics/pstricks/base/doc/pstricks-doc.pdf
new file mode 100644
index 0000000000..ac881f0ff0
--- /dev/null
+++ b/graphics/pstricks/base/doc/pstricks-doc.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/test-pst.pdf b/graphics/pstricks/base/doc/test-pst.pdf
new file mode 100644
index 0000000000..2ac2bd0199
--- /dev/null
+++ b/graphics/pstricks/base/doc/test-pst.pdf
Binary files differ
diff --git a/graphics/pstricks/base/doc/test-pst.tex b/graphics/pstricks/base/doc/test-pst.tex
new file mode 100644
index 0000000000..2af57b5daa
--- /dev/null
+++ b/graphics/pstricks/base/doc/test-pst.tex
@@ -0,0 +1,257 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% test-pst.tex --- Various PSTricks tests, from the PSTricks chapter
+%% of "The LaTeX Graphics Companion" (by Goossens, Rahtz,
+%% Mittelbach, Addison Wesley, 1997)
+%%
+%% Author : Sebastian RAHTZ (Oxford University - GB)
+%% <sebastian.rahtz@computing-services.oxford.ac.uk>
+%% Created the : Tue Feb 3 20:37:47 1998
+%% Last mod. by : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Last mod. the : Wed May 5 20:09:18 1999
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass{article}
+
+\usepackage[latin1]{inputenc} % From LaTeX distribution
+\usepackage{calc} % From LaTeX distribution
+\usepackage{graphicx} % From LaTeX distribution
+\usepackage{ifthen} % From LaTeX distribution
+\usepackage{subfigure} % From CTAN/macros/latex/contrib/supported/subfigure
+\usepackage{pst-all} % From PSTricks
+\usepackage{pst-poly} % From pstricks/contrib/pst-poly
+\usepackage{multido} % From PSTricks
+\input{random.tex} % From CTAN/macros/generic
+
+% Take care that on some non Unix systems, you may have to replace
+% the / character by, for instance, the : one (\input{lgc:#2.inl}})
+\newcommand{\ExampleSubFigure}[2][0.3333]{%
+\subfigure[Example #2]{%
+ \begin{minipage}[t]{#1\textwidth}
+ \parbox[b]{\textwidth}{%
+ \centering
+ \input{lgc/#2.inl}}
+ \end{minipage}}}
+
+\newpsobject{showgrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=6pt}
+
+% New colors defined
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+
+% Layout changes
+\textheight=23cm
+\topmargin=-2cm
+\textwidth=16cm
+\oddsidemargin=0cm
+\evensidemargin=0cm
+
+\begin{document}
+
+\title{Test file for the PSTricks 97 distribution:\\
+ most of the PSTricks examples of\\
+ \emph{The \LaTeX{} Graphics Companion}}
+\author{Sebastian \textsc{Rahtz} --- March 1997}
+\date{Version 1.3 (September 9, 1998)}
+\maketitle
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-2-1}%
+ \ExampleSubFigure{4-2-2}%
+ \ExampleSubFigure{4-2-3}
+ \ExampleSubFigure{4-2-4}%
+ \ExampleSubFigure{4-2-5}
+ \caption{Section 2}
+\end{figure}
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-3-1}%
+ \ExampleSubFigure{4-3-2}
+ \caption{Section 3}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-4-1}%
+ \ExampleSubFigure{4-4-2}%
+ \ExampleSubFigure{4-4-3}
+ \ExampleSubFigure{4-4-4}%
+ \ExampleSubFigure{4-4-5}%
+ \ExampleSubFigure{4-4-6}
+ \ExampleSubFigure{4-4-7}%
+ \ExampleSubFigure{4-4-8}%
+ \ExampleSubFigure{4-4-9}
+ \ExampleSubFigure{4-4-10}%
+ \ExampleSubFigure{4-4-11}%
+ \ExampleSubFigure{4-4-12}
+ \caption{Section 4}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-5-1}%
+ \ExampleSubFigure[0.5]{4-5-2}
+ \ExampleSubFigure[0.75]{4-5-3}%
+ \ExampleSubFigure[0.25]{4-5-4}
+ \ExampleSubFigure[0.15]{4-5-5}%
+ \ExampleSubFigure[0.25]{4-5-6}%
+ \ExampleSubFigure[0.2]{4-5-7}%
+ \ExampleSubFigure[0.2]{4-5-8}%
+ \ExampleSubFigure[0.2]{4-5-9}
+ \ExampleSubFigure[0.5]{4-5-10}%
+ \ExampleSubFigure[0.5]{4-5-11}
+ \caption{Section 5-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-5-13}
+ \ExampleSubFigure[1]{4-5-14}
+ \ExampleSubFigure[1]{4-5-16}
+ \caption{Section 5-B}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-6-1}%
+ \ExampleSubFigure{4-6-2}%
+ \ExampleSubFigure{4-6-3}
+ \ExampleSubFigure{4-6-4}%
+ \ExampleSubFigure{4-6-5}%
+ \ExampleSubFigure{4-6-6}
+ \ExampleSubFigure{4-6-7}%
+ \ExampleSubFigure{4-6-8}%
+ \ExampleSubFigure{4-6-9}
+ \ExampleSubFigure{4-6-10}%
+ \ExampleSubFigure{4-6-11}%
+ \ExampleSubFigure{4-6-12}
+ \ExampleSubFigure{4-6-13}%
+ \ExampleSubFigure{4-6-14}%
+ \ExampleSubFigure{4-6-15}
+ \ExampleSubFigure{4-6-16}%
+ \ExampleSubFigure{4-6-17}%
+ \ExampleSubFigure{4-6-18}
+ \caption{Section 6-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-6-19}%
+ \ExampleSubFigure{4-6-20}%
+ \ExampleSubFigure{4-6-21}
+ \ExampleSubFigure{4-6-22}%
+ \ExampleSubFigure{4-6-23}%
+ \ExampleSubFigure{4-6-24}
+ \ExampleSubFigure{4-6-25}
+ \caption{Section 6-B}
+\end{figure}
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-6-26}
+ \ExampleSubFigure{4-6-27}%
+ \ExampleSubFigure{4-6-28}%
+ \ExampleSubFigure{4-6-29}
+ \ExampleSubFigure[0.3333]{4-6-30}%
+ \ExampleSubFigure[0.6667]{4-6-31}
+ \ExampleSubFigure[1]{4-6-32}
+ \caption{Section 6-C}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-6-33}
+ \ExampleSubFigure[0.5]{4-6-34}%
+ \ExampleSubFigure[0.5]{4-6-35}
+ \ExampleSubFigure[0.5]{4-6-36}%
+ \ExampleSubFigure[0.5]{4-6-37}
+ \caption{Section 6-D}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-6-38}
+ \ExampleSubFigure[1]{4-6-39}
+ \ExampleSubFigure[0.5]{4-6-40}%
+ \ExampleSubFigure[0.5]{4-6-41}
+ \caption{Section 6-E}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-6-42}%
+ \ExampleSubFigure[0.5]{4-6-43}
+ \ExampleSubFigure{4-6-44}%
+ \ExampleSubFigure{4-6-45}%
+ \ExampleSubFigure{4-6-46}
+ \caption{Section 6-F}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-7-1}
+ \ExampleSubFigure[1]{4-7-2}
+ \ExampleSubFigure[1]{4-7-4}
+ \caption{Section 7}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-8-1}%
+ \ExampleSubFigure[0.25]{4-8-2}%
+ \ExampleSubFigure[0.25]{4-8-3}
+ \ExampleSubFigure[1]{4-8-4}
+ \caption{Section 8-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-8-5}
+ \caption{Section 8-B}
+\end{figure}
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-9-1}%
+ \ExampleSubFigure[0.5]{4-9-2}
+ \caption{Section 9}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.4]{4-10-1}%
+ \ExampleSubFigure[0.2]{4-10-2}%
+ \ExampleSubFigure[0.2]{4-10-3}%
+ \ExampleSubFigure[0.2]{4-10-4}
+ \ExampleSubFigure[0.4]{4-10-5}%
+ \ExampleSubFigure[0.2]{4-10-6}%
+ \ExampleSubFigure[0.4]{4-10-7}
+ \caption{Section 10-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-10-8}
+ \ExampleSubFigure[1]{4-10-9}
+ \ExampleSubFigure[1]{4-10-10}
+ \caption{Section 10-B}
+\end{figure}
+
+\end{document}
diff --git a/graphics/pstricks/base/dvips/pst-algparser.pro b/graphics/pstricks/base/dvips/pst-algparser.pro
new file mode 100644
index 0000000000..2f0e84aae0
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pst-algparser.pro
@@ -0,0 +1,773 @@
+% $Id: pst-algparser.pro 446 2017-04-19 11:40:55Z herbert $
+%%
+%% PostScript prologue for PSTricks algorithm parser
+%% Version 0.07, 2014/08/01
+%%
+%% 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.
+%%
+%%-----------------------------------------------------------------------------%
+%
+%currentdict /Pi known not { /Pi 3.14159265359 def } if
+%
+/AlgParser { tx@AlgToPs begin AlgToPs end } def % Dominique Rodriguez
+/I2P { AlgParser cvx exec } def % Infix to Postfix
+%
+/tx@CoreAnalyzerDict 100 dict def tx@CoreAnalyzerDict begin
+%
+% PS ANALYZER FOR ALGEBRAIC EXPRESSION V1.13
+%
+% 09/2011 DR factorial with ! added
+%
+% E->T|E+T
+% T->FS|T*FS
+% FS -> F | +FS | -FS
+% F->P|F^SF|P!
+% P->(E)|literal
+% literal->number|var|var[E]|func(params)
+% params->E|E,param
+% number->TOBEFINISHED
+%
+%% E expression, T term, SF signed factor, F factor, P power
+%
+%% parser
+%
+%% str
+%
+%% C->E<condition_operators>E
+%% STR index -> STR index+lenExpr
+/AnalyzeCond { AnalyzeExpr ReadCondOp AnalyzeExpr EvalCondOp } def
+%
+%% analyze Expression List (separator , or | )
+%% STR index -> STR index+lenExpr
+%% /AnalyzeListOfE {
+%% { NextNonBlankChar pop AnalyzeExpr%%dup Strlen eq { exit } if NextNonBlankChar
+%% NextNonBlankChar dup 0 eq { pop exit } if
+%% dup 44 ne 1 index 124 ne and { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse } if
+%% pop NextNonBlankChar dup 0 eq { exit } if 124 ne { PROBLEMCONTACTBILLOU } if 1 add NextNonBlankChar 0 eq {toto} if } loop
+%% AnalyzeListOfEPostHook
+%% } def
+/AnalyzeListOfE {
+ /NotFirst false def
+ { NextNonBlankChar pop AnalyzeExpr
+ NotFirst { EvalListOfExpr } { /NotFirst true def } ifelse
+ dup Strlen eq { exit } if NextNonBlankChar
+ dup 44 ne 1 index 124 ne and
+ { dup 41 ne { PROBLEMCONTACTBILLOU } { pop exit } ifelse }
+ if pop 1 add } loop
+ AnalyzeListOfEPostHook
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% E->T|E+T
+%% STR index -> STR index+lenExpr
+/AnalyzeExpr {
+ AnalyzePreHook AnalyzeTerm IsEndingExpr
+ { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse }
+ { { RollOp 1 add NextNonBlankChar pop AnalyzeTerm PreEvalHook EvalAddSub IsEndingExpr { pop exit } if } loop }
+ ifelse
+ AnalyzePostHook
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% T->FS|T*FS
+%% STR index
+/AnalyzeTerm {
+ AnalyzePreHook AnalyzeSignedFactor IsEndingTerm
+ { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse }
+ { { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor PreEvalHook EvalMulDiv IsEndingTerm { pop exit } if} loop }
+ ifelse
+ AnalyzePostHook
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% FS -> F | +FS | -FS
+%% STR index
+/AnalyzeSignedFactor {
+ AnalyzePreHook 2 copy get dup IsUnaryOp
+ { RollOp 1 add NextNonBlankChar pop AnalyzeSignedFactor EvalUnaryOp }
+ { pop AnalyzeFactor }
+ ifelse AnalyzePostHook
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% F->P|F^P|P!
+%% STR index
+/AnalyzeFactor {
+ AnalyzePreHook AnalyzePower IsEndingFactor
+ { dup 0 ne { 32 eq { NextNonBlankChar } if } { pop } ifelse }
+ { { dup 33 eq%% is there a ! DR 09/2011
+ { pop 1 add NextNonBlankChar pop EvalFactorial }
+ { RollOp 1 add NextNonBlankChar pop AnalyzePower PreEvalHook EvalPower }
+ ifelse
+ IsEndingFactor { pop exit } if } loop }
+ ifelse AnalyzePostHook
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% P->(E)|literal
+%% STR index
+/AnalyzePower {
+ %% depending of first char either a number, or a literal
+ 2 copy get dup 40 eq%%an open par
+ { pop 1 add NextNonBlankChar pop AnalyzeExpr 1 add NextNonBlankChar pop }
+ { AnalyzeLiteral }
+ ifelse
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% STR index STR[index] -> STR index
+%/AnalyzeLiteral { IsNumber { EvalNumber } { EvalLiteral } ifelse } def
+/AnalyzeLiteral { dup IsUnaryOp exch IsNumber or { EvalNumber } { EvalLiteral } ifelse } def%%dr 09102006
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% recognize + or -
+%% chr -> T/F
+/IsUnaryOp { dup 43 eq exch 45 eq or } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% a number can contain only : 0123456789.
+%% chr -> T/F
+/IsNumber { dup 48 ge exch dup 57 le 3 -1 roll and exch 46 eq or } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% STR index -> STR index number
+%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)?
+%% STR index -> STR index' number
+/ReadNumber {
+ exch dup 3 -1 roll dup 3 1 roll
+ %%read mantissa
+ { 1 add 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsNumber not { exit } if pop } loop
+ dup 101 eq exch 69 eq or
+ %%% there is a "e" or "E" -> read exponant
+ { 1 add 2 copy get dup IsUnaryOp
+ { pop 1 add 2 copy get } if
+ { IsNumber not { exit } if 1 add 2 copy get } loop }
+ if
+ dup 4 1 roll
+ 3 -1 roll exch 1 index sub getinterval
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% a number can contain only : 0123456789.
+%% chr -> T/F
+/IsCondOp { dup 30 eq exch dup 60 ge exch 62 le and or } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% STR index -> STR index number
+%% a number can be of the form [0-9]*.[0-9]*\([eE][+-]?[0-9]+\)?
+%% STR index -> STR index' number
+/ReadCondOp {
+ NextNonBlankChar 1 index 4 1 roll
+ { IsCondOp not { exit } if 1 add 2 copy get } loop
+ 2 copy 5 -1 roll
+ exch 1 index sub getinterval 3 1 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% a literal can contain only : 0123456789.
+%% chr -> T/F
+/IsLiteral {%
+ dup 48 ge exch dup 57 le 3 -1 roll and exch
+ dup 65 ge exch dup 90 le 3 -1 roll and 3 -1 roll or exch
+ dup 97 ge exch 122 le and or } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% a literal can be of the form [a-zA-Z][a-zA-Z0-9]*\(\((Expression)\)|\(\[Expression\]\)\)?
+%% STR index -> literal STR index' nextchr
+/ReadLiteral {
+ exch dup 3 -1 roll dup 3 1 roll
+ %%read literal core
+ { 2 copy dup Strlen eq { pop pop 0 exit } if get dup IsLiteral not { exit } if pop 1 add } loop
+ 4 1 roll dup 5 1 roll 3 -1 roll exch 1 index sub getinterval 4 1 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% expr is ended by end of str or a clpar
+%% STR index -> STR index STR[index] T/F
+/IsEndingExpr {%
+ 2 copy dup Strlen eq
+ %% if end of str is reached -> end !
+ { pop pop 0 true }
+ %% ending chr -> clpar, comma, |, <, >, =, !,
+ {get dup dup 41 eq
+ exch dup 124 eq
+ exch dup 93 eq
+ exch dup 44 eq
+ exch dup 30 eq
+ exch dup 60 ge exch 62 le and or or or or or}
+ ifelse } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% expr is ended by end of str or a +-
+%% STR index -> STR index STR[index] T/F
+/IsEndingTerm { IsEndingExpr { true } { dup dup 43 eq exch 45 eq or } ifelse } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% expr is ended by end of str or */
+%% STR index -> STR index STR[index] T/F
+/IsEndingFactor { IsEndingTerm { true } { dup dup 42 eq exch 47 eq or } ifelse } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% expr is ended by end of str or ^
+%% STR index -> STR index STR[index] T/F
+/IsEndingPower { IsEndingFactor { true } { dup 94 eq } ifelse } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% STR index -> STR index STR[index]
+/NextNonBlankChar { { dup Strlen eq { 0 exit } if 2 copy get dup neBlkChar { exit } if pop 1 add } loop } bind def
+/neBlkChar { dup 32 ne exch dup 10 ne exch 9 ne and and } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%
+%% DEBUG
+/BRK {false} def
+/BRKtrue {/BRK true def} def
+/BRKStop {BRK {BRKtoto} if } def
+/BRKEvalStop {BRK exch if } def
+/BRKBRK2true {BRK {BRK2true} if } def
+/BRK2 {false} def
+/BRK2true {/BRK2 true def} def
+/BRK2Stop {BRK2 {BRK2toto} if } def/BRK {false} def
+end
+%
+%-------------------------------------------------------------------------------%
+%
+/tx@AlgToPs 12 dict def tx@AlgToPs begin
+%
+%% algExpr -> PSVector
+/AlgToPs { tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE pop pop EndingSequence end } def
+/EndingSequence { ExpressionVector aload length /end cvx exch 1 add array astore } def
+/InitParser { /ExpressionVector [ /tx@AddMathFunc cvx /begin cvx ] def dup length /Strlen exch def 0 } def
+/Strlen 0 def
+/EvalListOfExpr {} def%
+/EvalNumber {%
+ ReadNumber cvr /ExpressionVector ExpressionVector aload length dup 3 add -1 roll cvx
+ exch 1 add array astore def NextNonBlankChar pop } def
+/EvalAddSub {%
+ /ExpressionVector ExpressionVector aload length dup 5 add -1 roll
+ 43 eq { /add } { /sub } ifelse cvx exch 1 add array astore def
+} def
+/EvalMulDiv {%
+ /ExpressionVector ExpressionVector aload length dup 5 add -1 roll
+ 42 eq { /mul } { /div } ifelse cvx exch 1 add array astore def
+} def
+/EvalPower {%
+ /ExpressionVector ExpressionVector aload length dup 5 add -1 roll
+ pop /exp cvx exch 1 add array astore def
+} def
+/EvalFactorial {% DR 09/2011
+ /ExpressionVector ExpressionVector aload length
+ /fact cvx exch 1 add array astore def
+} def
+/EvalLiteral {%
+ ReadLiteral
+ dup 40 eq%%% there is an open par -> function call
+ { pop 2 index
+ dup (Sum) eq { EvalSum }
+ { dup (IfTE) eq { EvalCond }
+ { dup (Derive) eq { pop EvalDerive }
+ { pop 1 add NextNonBlankChar pop AnalyzeListOfE 2 index TrigoFunc
+ /ExpressionVector ExpressionVector aload length dup 5 add -1 roll cvn cvx
+ exch 1 add array astore def 1 add NextNonBlankChar pop } ifelse } ifelse} ifelse }
+ { /ExpressionVector ExpressionVector aload length dup 6 add -1 roll cvn cvx exch 1 add array astore def
+ dup 91 eq%%% there is an open bracket -> vector element
+ { pop 1 add NextNonBlankChar pop AnalyzeExpr
+ /ExpressionVector ExpressionVector aload length /cvi cvx exch /get cvx exch 2 add array astore def 1 add }
+ { pop NextNonBlankChar pop }
+ ifelse}
+ ifelse
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% the derive function : Derive(n,f(x))
+%% firstparindex lastparindex ->
+/EvalDerive {
+ %% manage the function descripiton
+ 1 add ReadNumber 3 1 roll NextNonBlankChar
+ 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
+ 1 add NextNonBlankChar pop
+ 3 -1 roll cvi
+ dup 0 eq
+ { pop AnalyzeExpr 3 -1 roll pop 1 add }
+ { 1 sub 3 1 roll (x) exch tx@Derive begin DeriveIndexed end 4 -1 roll
+ { (x) tx@Derive begin Derive end } repeat
+ ExpressionVector exch /ExpressionVector [] def
+ AlgToPs aload length
+ /ExpressionVector 1 index 3 add -1 roll aload length dup 3 add -1 roll /l2 exch def /l1 exch def
+ l1 l2 add 1 add l2 neg roll l1 l2 add array astore def 3 -1 roll pop 1 add
+ 1 index length /Strlen exch def } ifelse
+} def
+/EvalSum {%
+ pop 1 add NextNonBlankChar pop
+ %% read the variable name
+ ReadLiteral pop NextNonBlankChar
+ 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if
+ %% read the initial value
+ 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll
+ 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
+ %% read the increment value
+ 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll
+ 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
+ %% read the limit value
+ 1 add NextNonBlankChar pop ReadNumber cvi 3 1 roll
+ 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
+ /ExpressionVector ExpressionVector aload length dup 7 add -3 roll 0 4 1 roll
+ 5 -1 roll 4 add array astore def
+ %% keep ExpressionVector for later and create a new one for internal Sum computation
+ ExpressionVector 3 1 roll /ExpressionVector [ 6 -1 roll cvn /exch cvx /def cvx ] def
+ 1 add NextNonBlankChar pop AnalyzeExpr
+ %% add each term
+ /ExpressionVector ExpressionVector aload length 1 add /add cvx exch array astore def
+ /ExpressionVector 4 -1 roll aload length ExpressionVector cvx /for cvx 3 -1 roll 2 add
+ array astore def 3 -1 roll pop 1 add
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Convert to radians if trigo function call
+%% (name) ->
+/TrigoFunc {
+ dup (cos) eq 1 index (sin) eq or exch (tan) eq or
+ { /ExpressionVector ExpressionVector aload length 3.1415926 /div cvx 180 /mul cvx 5 -1 roll 4 add
+ array astore def
+ } if
+} def
+/EvalCond {%
+ pop 1 add AnalyzeCond NextNonBlankChar
+ 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if
+ ExpressionVector 3 1 roll /ExpressionVector [] def
+ 1 add AnalyzeExpr ExpressionVector 3 1 roll /ExpressionVector [] def
+ NextNonBlankChar 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if
+ 1 add AnalyzeExpr
+ NextNonBlankChar 41 ne { ANALYZER_ERROR_missing_ending parenthesis_in_IfTE } if
+ ExpressionVector
+ /ExpressionVector 6 -1 roll aload length dup
+ 6 add -1 roll cvx exch dup 4 add -1 roll cvx /ifelse cvx 3 -1 roll 3 add array astore def
+ 1 add 3 -1 roll pop
+} def
+%% CondOp STR index
+/EvalCondOp {%
+ 3 -1 roll
+ dup (=) eq { /eq } {%
+ dup (<) eq { /lt } {%
+ dup (>) eq { /gt } {%
+ dup (>=) eq { /ge } {%
+ dup (<=) eq { /ge } {%
+ dup (!=) eq { /ne } { ERROR_non_valid_conditional_operator }
+ ifelse } ifelse } ifelse } ifelse } ifelse } ifelse
+ cvx exch pop
+ /ExpressionVector ExpressionVector aload length dup 3 add -1 roll exch 1 add array astore def } def
+/EvalUnaryOp {
+ 3 -1 roll 45 eq { /ExpressionVector ExpressionVector aload length /neg cvx exch 1 add array astore def } if
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% H O O K S
+/AnalyzePreHook {} bind def
+/PreEvalHook {} bind def
+/AnalyzeListOfEPostHook {} bind def
+/AnalyzePostHook {} def
+/RollOp { 3 1 roll } bind def
+end %tx@CoreAnalyzerDict
+%
+%--------------------------------------------------------------------%
+%
+/tx@Derive 41 dict def tx@Derive begin
+%%increase ^^ for each function added
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% algExpr variable -> PSVector
+/Derive {
+ 10240 string 3 1 roll 0 3 1 roll
+ /Variable exch def
+ tx@CoreAnalyzerDict begin InitParser AnalyzeListOfE end
+} def
+/Strlen 0 def
+/InitParser { dup length /Strlen exch def 0 } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% algExpr variable index -> PSVector
+/DeriveIndexed {%
+ 3 1 roll 10240 string 3 1 roll 0 3 1 roll
+ /Variable exch def
+ tx@CoreAnalyzerDict begin InitParser pop 4 -1 roll AnalyzeExpr 4 -2 roll pop pop 4 -2 roll exch pop end
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (u,v)'=-(u',v')
+/EvalListOfExpr {%
+ 4 2 roll 2 copy 9 -1 roll dup length 4 1 roll putinterval add AddPipe
+ 2 copy 7 -1 roll dup length 4 1 roll putinterval add
+ 6 -2 roll pop pop
+ 2 copy pop 0 6 2 roll GetIntervalNewStr 5 1 roll 2 copy 0 exch getinterval 6 1 roll } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (-u)'=-(u')
+/EvalUnaryOp {
+ 4 -2 roll 4 index (0) eq
+ { (0) StrConcat 7 -1 roll pop }
+ { 7 -1 roll 45 eq
+ { AddSub AddOpPar true } { false } ifelse
+ 3 1 roll 5 index StrConcat 3 -1 roll { AddClPar } if } ifelse
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ 7 -2 roll pop pop 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (number)'=0
+/EvalNumber { ReadNumber (0) 6 2 roll } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (u+v)'=u'+v'
+/EvalAddSub {%
+ 7 index dup (0) eq
+ { pop true }%% du=0 nothing added
+ { dup length exch 5 index 5 index 3 -1 roll putinterval 4 -1 roll add 3 1 roll false }
+ ifelse
+ 5 index dup (0) eq
+ { pop { (0) } { 4 -2 roll 2 copy pop 0 6 2 roll GetIntervalNewStr } ifelse }%%dv=0
+ { exch
+ { 5 -2 roll 7 index 45 eq { AddSub } if false } %%nothing yet added
+ { 5 -2 roll 7 index 43 eq%%something yet added
+ { AddAdd false } { AddSub AddOpPar true } ifelse }
+ ifelse 11 1 roll
+ 3 -1 roll StrConcat 10 -1 roll { AddClPar } if
+ 2 copy pop 0 6 2 roll GetIntervalNewStr }
+ ifelse
+ mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (u*v)' or (u/v)'
+/EvalMulDiv { 6 index 42 eq {EvalMul} {EvalDiv} ifelse } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (u*v)'=u'*v+u*v'
+/EvalMul {%
+ 4 -2 roll 7 index dup (0) eq
+ { pop false }%%du=0
+ { (1) eq%%du=1
+ { false }
+ { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse
+ 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if
+ true }%%du!=0
+ ifelse
+ 5 1 roll 5 index (0) eq
+ { 5 -1 roll not { (0) StrConcat } if }%%dv=0
+ { 5 -1 roll { AddAdd } if
+ 4 index (1) eq
+ { 8 index StrConcat }
+ { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar }
+ ifelse
+ }%%dv!=0
+ ifelse
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (u/v)'=(u'*v-u*v')/v^2
+/EvalDiv {%
+ 4 -2 roll
+ 4 index (0) eq%%dv=0 -> u'/v
+ { 7 index (0) eq { (0) StrConcat } { AddOpPar 7 index StrConcat AddClPar AddDiv 5 index StrConcat } ifelse }
+ { 7 index dup (0) eq
+ { pop }%%du=0
+ { (1) eq%%du=1
+ { false }
+ { AddOpPar 7 index StrConcat AddClPar AddMul AddOpPar true } ifelse
+ 3 1 roll 6 index StrConcat 3 -1 roll { AddClPar } if}%%du!=0
+ ifelse
+ AddSub
+ 4 index (1) eq
+ { 8 index StrConcat }
+ { AddOpPar 8 index StrConcat AddClPar AddMul AddOpPar 4 index StrConcat AddClPar }
+ ifelse
+ %}%%dv!=0
+ 2 copy GetIntervalNewStr 3 1 roll pop 0 AddOpPar 3 -1 roll StrConcat AddClPar
+ AddDiv AddOpPar 5 index StrConcat AddClPar 2 copy (^2) putinterval 2 add }
+ ifelse
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% str1 index str2 -> str1 index
+/StrConcat { dup length 4 2 roll 2 copy 6 -1 roll putinterval 3 -1 roll add } bind def
+/GetIntervalNewStr { 0 exch getinterval dup length string copy } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (u^v)'=(u^v)'=u'vu^(v-1)+v'u^(v)ln(u)
+/EvalPower {%
+ 4 -2 roll 7 index (0) eq
+ {%%if du=0 then (u^v)'=v'ln(u)u^v
+ 4 index (0) eq
+ { (0) StrConcat }%%if dv=0 then (u^v)'=0
+ { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if
+ 8 index (e) ne { (ln\() StrConcat 8 index StrConcat (\)*) StrConcat } if
+ AddOpPar 8 index StrConcat (\)^\() StrConcat 5 index StrConcat AddClPar } ifelse
+ }
+ {%%du!=0
+ 4 index (0) eq
+ {%%if dv=0 then (u^v)'=vu'u^(v-1)
+ 5 index dup IsStrNumber
+ { dup (0) eq
+ { StrConcat }
+ { dup dup (1) eq exch (1.0) eq or
+ { StrConcat }
+ { StrConcat
+ 7 index dup (1) ne exch (1.0) ne and%%%dr 09102006 insert du if <> 1
+ { (*\() StrConcat 7 index StrConcat (\)) StrConcat } if%%%dr 09102006
+ (*\() StrConcat 8 index StrConcat (\)) StrConcat
+ 5 index dup dup (2) eq exch (2.0) eq or
+ { pop } { cvr 1 sub 20 string cvs 3 1 roll (^) StrConcat 3 -1 roll StrConcat } ifelse } ifelse } ifelse }
+ { pop AddOpPar 5 index StrConcat (\)*\() StrConcat 8 index StrConcat (\)^\() StrConcat
+ 5 index StrConcat (-1\)) StrConcat } ifelse
+ }
+ {%%if dv!=0 and du!=0 then (u^v)'=u'vu^(v-1)+v'u^(v)ln(u)
+ 7 index (1) ne { AddOpPar 7 index StrConcat (\)*) StrConcat } if
+ AddOpPar 5 index StrConcat (\)*\() StrConcat
+ 8 index StrConcat (\)^\() StrConcat
+ 5 index StrConcat (-1\)+\() StrConcat
+ 4 index (1) ne { 4 index StrConcat (\)*\() StrConcat } if
+ 8 index StrConcat (\)^\() StrConcat
+ 5 index StrConcat (\)*ln\() StrConcat
+ 8 index StrConcat AddClPar
+ } ifelse
+ } ifelse
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% No derivative for factorial ! only cst => null derivative
+/EvalFactorial {% DR 09/2011
+ 4 index (0) eq
+ { (0) mark 8 -2 roll cleartomark 2 index 7 index dup 4 index exch sub getinterval exch 6 2 roll }
+ { DERIVATIVE_ENGINE_ERROR_no_variable_in_factorial } ifelse
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% str -> true/false
+/IsStrNumber {%
+ true exch
+ { dup 48 lt exch dup 57 gt 3 -1 roll or
+ exch dup 46 ne%%.
+ exch dup 43 ne%%+
+ exch 45 ne%%-
+ and and and { pop false } if } forall
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% literal switch -> func call, vector, variables
+/EvalLiteral {%
+ ReadLiteral dup 40 eq%%% there is an open par -> function call
+ { pop (EvalFunc_ ) 9 4 index StrConcat 0 exch getinterval cvn cvx exec }
+ { dup 91 eq%%% there is an open bracket -> vector element
+ { DERIVATIVE_ENGINE_ERROR_vector_not_yet_implemented }
+ { pop EvalVariable }
+ ifelse }
+ ifelse
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% first last parpos Expr[first:parpos-1] ->
+/EvalVariable { 2 index Variable eq { (1) } { (0) } ifelse 4 -1 roll exch 6 2 roll } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% (f(u))'=u'f'(u)
+/EvalFunc {
+ 4 2 roll 4 index (1) ne
+ { AddOpPar 4 index StrConcat (\)*) StrConcat } if
+ (Eval ) 4 8 index StrConcat 0 exch getinterval cvn cvx exec
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Func derivative -> Eval<func>
+/EvalFunc_sin {%
+ PreCommonFunc
+ { (cos\() StrConcat 5 index StrConcat AddClPar } if
+ PostCommonFunc } def
+/EvalFunc_cos {%
+ PreCommonFunc
+ { (\(-sin\() StrConcat 5 index StrConcat (\)\)) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_tan {%
+ PreCommonFunc
+ { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/cos\() StrConcat 5 index StrConcat (\)^2) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_asin {%
+ PreCommonFunc
+ { (1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_acos {%
+ PreCommonFunc
+ { (-1/sqrt\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_atg {%
+ PreCommonFunc
+ { (1/\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_floor {%
+ PreCommonFunc
+ { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if
+ PostCommonFunc } def
+/EvalFunc_ln {%
+ PreCommonFunc
+ { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\() StrConcat 5 index StrConcat AddClPar } if
+ PostCommonFunc } def
+/EvalFunc_exp {%
+ PreCommonFunc
+ { (exp\() StrConcat 5 index StrConcat AddClPar } if
+ PostCommonFunc } def
+/EvalFunc_EXP {%
+ PreCommonFunc
+ { (EXP\() StrConcat 5 index StrConcat AddClPar } if
+ PostCommonFunc } def
+/EvalFunc_sqrt {%
+ PreCommonFunc
+ { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/\(2*sqrt\() StrConcat 5 index StrConcat (\)\)) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_Fact {%
+ PreCommonFunc { DERIVATIVE_ENGINE_ERROR_no_variable_expression_in_Fact } if
+ PostCommonFunc } def
+/EvalFunc_sh {%
+ PreCommonFunc
+ { (ch\() StrConcat 5 index StrConcat AddClPar } if
+ PostCommonFunc } def
+/EvalFunc_ch {%
+ PreCommonFunc
+ { (sh\() StrConcat 5 index StrConcat AddClPar } if
+ PostCommonFunc } def
+/EvalFunc_th {%
+ PreCommonFunc
+ { dup 0 eq { (1) StrConcat } { 1 sub } ifelse (/ch\() StrConcat 5 index StrConcat (\)^2) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_Argsh {%
+ PreCommonFunc
+ { (1/sqrt\(1+\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_Argch {%
+ PreCommonFunc
+ { (1/sqrt\(\() StrConcat 5 index StrConcat (\)^2-1\)\)) StrConcat } if
+ PostCommonFunc } def
+/EvalFunc_Argth {%
+ PreCommonFunc
+ { (1/\(1-\() StrConcat 5 index StrConcat (\)^2\)\)) StrConcat } if
+ PostCommonFunc } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+/PreCommonFunc {
+ 1 add NextNonBlankChar pop 3 -1 roll 5 1 roll AnalyzeExpr 1 add NextNonBlankChar pop
+ 4 2 roll 4 index (0) eq
+ { (0) StrConcat false }
+ { 4 index (1) ne { AddOpPar 4 index StrConcat (\)*) StrConcat } if true } ifelse
+} def
+/PostCommonFunc {
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+/EvalFunc_Derive {%
+ 1 add ReadNumber cvi 1 add dup cvr log 1 add cvi string cvs
+ 4 -1 roll pop 5 1 roll 1 add NextNonBlankChar pop AnalyzeExpr 1 add
+ 4 -2 roll (Derive\() StrConcat 7 -1 roll StrConcat (,) StrConcat 6 -1 roll StrConcat AddClPar
+ 2 copy pop 0 6 2 roll GetIntervalNewStr 6 -1 roll pop 2 index 6 index dup 4 index exch sub getinterval
+ exch 6 2 roll } def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% literal switch -> func call, vector, variables
+/EvalFunc_Sum {%
+ 1 add NextNonBlankChar pop
+ %% read the variable name
+ ReadLiteral pop 3 -1 roll pop NextNonBlankChar
+ 44 ne { ANALYZER_ERROR_missing_first_comma_in_Sum } if
+ %% read the initial value
+ 1 add NextNonBlankChar pop ReadNumber pop
+ 2 copy get 44 ne { ANALYZER_ERROR_missing_second_comma_in_Sum } if
+ %% read the increment value
+ 1 add NextNonBlankChar pop ReadNumber pop
+ 2 copy get 44 ne { ANALYZER_ERROR_missing_third_comma_in_Sum } if
+ %% read the limit value
+ 1 add NextNonBlankChar pop ReadNumber pop
+ 2 copy get 44 ne { ANALYZER_ERROR_missing_fourth_comma_in_Sum } if
+ 1 add NextNonBlankChar pop dup 6 1 roll 3 -1 roll pop AnalyzeExpr 1 add NextNonBlankChar pop
+ 4 -2 roll 3 index 8 index dup 9 index exch sub getinterval StrConcat
+ 4 index StrConcat AddClPar
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ mark 9 -3 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% literal switch -> func call, vector, variables
+/EvalFunc_IfTE {%
+ 3 -1 roll pop 1 add NextNonBlankChar pop SkipCond
+ NextNonBlankChar
+ 44 ne { ANALYZER_ERROR_missing_first_comma_in_IfTE } if
+ 1 add NextNonBlankChar pop dup 5 1 roll
+ AnalyzeExpr NextNonBlankChar
+ 44 ne { ANALYZER_ERROR_missing_second_comma_in_IfTE } if
+ 1 add NextNonBlankChar pop
+ AnalyzeExpr 1 add NextNonBlankChar pop
+ 4 -2 roll 3 index 10 index dup 11 index exch sub getinterval StrConcat
+ 6 index StrConcat (,) StrConcat 4 index StrConcat AddClPar
+ 2 copy pop 0 6 2 roll GetIntervalNewStr
+ mark 11 -5 roll cleartomark 2 index 6 index dup 4 index exch sub getinterval exch 6 2 roll
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% advance in str until a comma is found (no error detection!)
+%% str index -> str index'
+/SkipCond { { 1 add 2 copy get 44 eq {exit } if } loop } bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Convert to radians if trigo function call
+%% (name) ->
+/TrigoFunc {
+ dup (cos) eq 1 index (sin) eq or exch (tan) eq or
+ { /ExpressionVector ExpressionVector aload length Pi /div cvx 180 /mul cvx 5 -1 roll 4 add
+ array astore def
+ } if
+} def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% No derivative for condition....
+/EvalCondOp { 3 -1 roll pop } bind def
+/PutIntervalOneAdd {putinterval 1 add} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add open parenthesis in string at the given index
+%% str index -> str index+1
+/AddOpPar {2 copy (\() PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add close parenthesis in string at the given index
+%% str index -> str index+1
+/AddClPar {2 copy (\)) PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add 0 in string at the given index
+%% str index -> str index+1
+/AddZero {2 copy (0) PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add open parenthesis in string at the given index
+%% str index -> str index+1
+/AddMul {2 copy (*) PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add open parenthesis in string at the given index
+%% str index -> str index+1
+/AddDiv {2 copy (/) PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add a plus sign in string at the given index
+%% str index -> str index+1
+/AddAdd {2 copy (+) PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add a minus sign in string at the given index
+%% str index -> str index+1
+/AddSub {2 copy (-) PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Add a pipe sign in string at the given index
+%% str index -> str index+1
+/AddPipe {2 copy (|) PutIntervalOneAdd} bind def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% H O O K S
+/AnalyzePreHook { dup 5 1 roll } bind def
+/PreEvalHook {} def
+/AnalyzePostHook { 7 -1 roll pop } bind def
+/AnalyzeListOfEPostHook { 6 -1 roll mark 6 1 roll cleartomark } bind def
+/RollOp { 5 1 roll } bind def
+end%%%tx@CoreAnalyzerDict
+/tx@AddMathFunc 12 dict def tx@AddMathFunc begin
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% NEW FUNC
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% function arcsine in radians asin(x)=atan(x/sqrt(1-x^2))
+%% x -> theta
+/asin {%
+ dup abs 1 gt { EQDFasinrangeerror } if
+ dup dup dup mul 1 exch sub sqrt atan exch 0 lt { 360 sub } if DegtoRad
+} def
+%% function arccosine in radians acos(x)=atan(sqrt(1-x^2)/x)
+%% x -> theta
+/acos {%
+ dup abs 1 gt { EQDFacosrangeerror } if
+ dup dup mul 1 exch sub sqrt exch atan DegtoRad
+} def
+%% function arctangent in radians
+%% x -> theta
+/atg { 1 atan dup 90 gt { 360 sub } if DegtoRad } bind def
+%% HYPERBOLIC FUNCTIONS
+/sh { dup Ex exch neg Ex sub 2 div } def
+/ch { dup Ex exch neg Ex add 2 div } def
+/th { dup sh exch ch div } def
+/Argsh { dup dup mul 1 add sqrt add ln } def
+/Argch { dup dup mul 1 sub sqrt add ln } def
+/Argth { dup 1 add exch 1 exch sub div ln 2 div } def
+%% modified exponential funtion for 0
+%% x n -> x^n
+/Exp { dup 0 eq { pop pop 1 } { exp } ifelse } bind def
+%% modified exponential funtion for 0
+%% x -> e^x
+/Ex { Euler exch exp } bind def
+%%
+%% factorial function
+%% n -> n!
+/Fact { 1 exch 2 exch 1 exch { mul } for } bind def
+/fact { Fact } bind def
+/! { Fact } bind def
+end
+%
+% END pst-algparser.pro \ No newline at end of file
diff --git a/graphics/pstricks/base/dvips/pst-dots.pro b/graphics/pstricks/base/dvips/pst-dots.pro
new file mode 100644
index 0000000000..eb71f86867
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pst-dots.pro
@@ -0,0 +1,173 @@
+% $Id: pst-dots.pro 446 2017-04-19 11:40:55Z herbert $
+%
+%% PostScript prologue for pstricks.tex.
+%% Version 2.02, 2009/06/16
+%%
+%% For distribution, see pstricks.tex.
+%%
+%% Timothy Van Zandt <tvz@Princeton.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.
+%%
+%% Modified by Etienne Riga - Dec. 16, 1999
+%% Modified by Etienne Riga - 2005/01/01 (er)
+%% to add /Diamond, /SolidDiamond and /BoldDiamond
+%% Modified by Herbert Voss (hv) - 2008/04/17
+%
+10 dict dup begin % hold local
+ /FontType 3 def
+ /FontMatrix [.001 0 0 .001 0 0] def
+% /FontBBox [-571.5 -742.5 571.5 742.5] def % changed to next line 20060616 hv
+ /FontBBox [-1000 -1000 1000 1000] def % See end of file in /BuildGlyph
+ /Encoding 256 array def
+ 0 1 255 {Encoding exch /.notdef put} for % fill the array with /.notdef
+ Encoding % replace with given dot names
+ dup (b) 0 get /Bullet put % get the numerical position of b in ASCII
+% % and save /Bullet at this place in Encoding
+ dup (c) 0 get /Circle put
+ dup (C) 0 get /BoldCircle put % 67
+ dup (u) 0 get /SolidTriangle put
+ dup (t) 0 get /Triangle put
+ dup (T) 0 get /BoldTriangle put
+ dup (r) 0 get /SolidSquare put
+ dup (s) 0 get /Square put
+ dup (S) 0 get /BoldSquare put
+ dup (q) 0 get /SolidPentagon put
+ dup (p) 0 get /Pentagon put
+ dup (P) 0 get /BoldPentagon put
+%%%
+ dup (k) 0 get /Asterisk put
+ dup (K) 0 get /BoldAsterisk put
+ dup (J) 0 get /SolidAsterisk put
+ dup (h) 0 get /Hexagon put
+ dup (H) 0 get /BoldHexagon put
+ dup (G) 0 get /SolidHexagon put
+ dup (f) 0 get /Octogon put % 2008-04-18 hv
+ dup (F) 0 get /BoldOctogon put % 2008-04-18 hv
+ dup (g) 0 get /SolidOctogon put % 2008-04-18 hv
+ dup (a) 0 get /Add put
+ dup (A) 0 get /BoldAdd put % 65
+ dup (x) 0 get /Mul put
+ dup (X) 0 get /BoldMul put
+ dup (m) 0 get /Oplus put
+ dup (M) 0 get /BOplus put
+ dup (e) 0 get /SolidOplus put
+ dup (n) 0 get /Otimes put
+ dup (N) 0 get /BOtimes put
+ dup (E) 0 get /SolidOtimes put
+ dup (i) 0 get /Bar put
+ dup (I) 0 get /BoldBar put
+ dup (l) 0 get /SolidDiamond put
+ dup (d) 0 get /Diamond put
+ (D) 0 get /BoldDiamond put
+%%%
+/CharProcs 47 dict def
+CharProcs begin
+ /CirclePath {0 0 500 0 360 arc closepath} def
+ /Bullet {CirclePath fill} def
+ /Circle {CirclePath .9 .9 scale CirclePath eofill} def
+ /BoldCircle {CirclePath .8 .8 scale CirclePath eofill} def
+ /TrianglePath {0 660 moveto -571.5 -330 lineto 571.5 -330 lineto closepath} def
+ /SolidTriangle {TrianglePath fill} def
+ /Triangle {TrianglePath .85 .85 scale TrianglePath eofill} def
+ /BoldTriangle {TrianglePath .7 .7 scale TrianglePath eofill} def
+ /SquarePath {-450 450 moveto 450 450 lineto 450 -450 lineto -450 -450 lineto closepath} def
+ /SolidSquare {SquarePath fill} def
+ /Square {SquarePath .89 .89 scale SquarePath eofill} def
+ /BoldSquare {SquarePath .78 .78 scale SquarePath eofill} def
+ /PentagonPath {
+ -337.8 -465 moveto 337.8 -465 lineto 546.6 177.6 lineto
+ 0 574.7 lineto -546.6 177.6 lineto closepath
+ } def
+ /SolidPentagon {PentagonPath fill} def
+ /Pentagon {PentagonPath .89 .89 scale PentagonPath eofill} def
+ /BoldPentagon {PentagonPath .78 .78 scale PentagonPath eofill} def
+%-------------- hv begin 2004/07/25 from: er 2003/03/24
+ /HexagonPath {
+ 0 550 moveto -476 275 lineto -476 -275 lineto
+ 0 -550 lineto 476 -275 lineto 476 275 lineto closepath
+ } def
+ /SolidHexagon {HexagonPath fill} def
+ /Hexagon {HexagonPath .89 .89 scale HexagonPath eofill} def
+ /BoldHexagon {HexagonPath .79 .79 scale HexagonPath eofill} def
+% 2008-04-18 hv
+ /OctogonPath {
+ 550 dup 22.5 tan mul dup neg dup add /xMove exch def
+ exch moveto 7 { xMove 0 rlineto 45 rotate } repeat closepath } def
+ /SolidOctogon { OctogonPath fill } def
+ /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def
+ /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def
+%
+ /AsteriskPath {
+ 20 0 moveto 10 250 180 500 0 500 curveto
+ -180 500 -10 250 -20 0 curveto closepath
+ } def
+ /Asterisk {
+ AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath
+ 60 rotate AsteriskPath 60 rotate AsteriskPath 60 rotate AsteriskPath fill
+ } def
+%
+ /Basterp {50 250 220 500 0 500 curveto -220 500 -50 250 -50 30 cos 100 mul curveto} def
+ /BoldAsteriskPath {
+ 50 30 cos 100 mul moveto Basterp
+ 60 rotate Basterp 60 rotate Basterp
+ 60 rotate Basterp 60 rotate Basterp
+ 60 rotate Basterp closepath
+ } def
+ /BoldAsterisk {BoldAsteriskPath fill} def
+ /SolidAsterisk {CirclePath .9 .9 scale BoldAsteriskPath eofill} def
+ /CrossPath {
+ 40 550 moveto -40 550 lineto -40 40 lineto -550 40 lineto
+ -550 -40 lineto -40 -40 lineto -40 -550 lineto 40 -550 lineto
+ 40 -40 lineto 550 -40 lineto 550 40 lineto 40 40 lineto closepath
+ } def
+ /BoldCrossPath {80 550 moveto -80 550 lineto -80 80 lineto -550 80 lineto
+ -550 -80 lineto -80 -80 lineto -80 -550 lineto 80 -550 lineto
+ 80 -80 lineto 550 -80 lineto 550 80 lineto 80 80 lineto closepath
+ } def
+ /Add {CrossPath fill} def
+ /Mul {45 rotate CrossPath fill} def
+ /BoldAdd {BoldCrossPath fill} def
+ /BoldMul {45 rotate BoldCrossPath fill} def
+ /Oplus {CirclePath .9 .9 scale CirclePath eofill .775 .775 scale CrossPath fill } def
+ /SolidOplus {CirclePath .775 .775 scale BoldCrossPath eofill} def
+ /BOplus {CirclePath .8 .8 scale CirclePath eofill .775 .775 scale BoldCrossPath fill} def
+ /Otimes {CirclePath .9 .9 scale CirclePath eofill 45 rotate .775 .775 scale CrossPath fill} def
+ /BOtimes {CirclePath .8 .8 scale CirclePath eofill 45 rotate .775 .775 scale BoldCrossPath fill } def
+ /SolidOtimes {CirclePath 45 rotate .775 .775 scale BoldCrossPath eofill} def
+ /BarPath {40 660 moveto -40 660 lineto -40 -660 lineto 40 -660 lineto closepath} def
+ /Bar {BarPath fill} def
+ /BoldBarPath {80 660 moveto -80 660 lineto -80 -660 lineto 80 -660 lineto closepath} def
+ /BoldBar {BoldBarPath fill} def
+ /DiamondPath {0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto 428.5 0 lineto closepath} def
+ /SolidDiamond {DiamondPath fill} def
+ /Diamond {DiamondPath .865 .865 scale DiamondPath eofill} def
+ /BoldDiamond {DiamondPath .73 .73 scale DiamondPath eofill} def
+%%%
+ /.notdef { } def
+end
+%
+/BuildGlyph {
+ exch
+ begin
+% Metrics 1 index get exec 0
+ 0 0
+% BBoxes 3 index get exec
+ -1000 -1000 1000 1000
+% -571.5 -742.5 571.5 742.5
+ setcachedevice
+ CharProcs begin load exec end
+ end
+} def
+%
+/BuildChar {
+ 1 index /Encoding get exch get
+ 1 index /BuildGlyph get exec
+} bind def
+%
+end
+/PSTricksDotFont exch definefont pop
+%
+%% end \ No newline at end of file
diff --git a/graphics/pstricks/base/dvips/pst-dots97.pro b/graphics/pstricks/base/dvips/pst-dots97.pro
new file mode 100644
index 0000000000..8c83b96352
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pst-dots97.pro
@@ -0,0 +1,132 @@
+%!PS-Adobe-2.0
+%%Title: Dot Font for PSTricks
+%%Creator: Timothy Van Zandt <tvz@Princeton.EDU>
+%%Creation Date: May 7, 1993
+%% Version 97 patch 1, 99/12/16
+%% Modified by Etienne Riga <etienne.riga@skynet.be> - Dec. 16, 1999
+%% to add /Diamond, /SolidDiamond and /BoldDiamond
+10 dict dup begin
+ /FontType 3 def
+ /FontMatrix [ .001 0 0 .001 0 0 ] def
+ /FontBBox [ 0 0 0 0 ] def
+ /Encoding 256 array def
+ 0 1 255 { Encoding exch /.notdef put } for
+ Encoding
+ dup (b) 0 get /Bullet put
+ dup (c) 0 get /Circle put
+ dup (C) 0 get /BoldCircle put
+ dup (u) 0 get /SolidTriangle put
+ dup (t) 0 get /Triangle put
+ dup (T) 0 get /BoldTriangle put
+ dup (r) 0 get /SolidSquare put
+ dup (s) 0 get /Square put
+ dup (S) 0 get /BoldSquare put
+ dup (q) 0 get /SolidPentagon put
+ dup (p) 0 get /Pentagon put
+ dup (P) 0 get /BoldPentagon put
+% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga
+ dup (l) 0 get /SolidDiamond put
+ dup (d) 0 get /Diamond put
+ (D) 0 get /BoldDiamond put
+% DG/SR modification end
+ /Metrics 13 dict def
+ Metrics begin
+ /Bullet 1000 def
+ /Circle 1000 def
+ /BoldCircle 1000 def
+ /SolidTriangle 1344 def
+ /Triangle 1344 def
+ /BoldTriangle 1344 def
+ /SolidSquare 886 def
+ /Square 886 def
+ /BoldSquare 886 def
+ /SolidPentagon 1093.2 def
+ /Pentagon 1093.2 def
+ /BoldPentagon 1093.2 def
+% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga
+ /SolidDiamond 1008 def
+ /Diamond 1008 def
+ /BoldDiamond 1008 def
+% DG/SR modification end
+ /.notdef 0 def
+ end
+ /BBoxes 13 dict def
+ BBoxes begin
+ /Circle { -550 -550 550 550 } def
+ /BoldCircle /Circle load def
+ /Bullet /Circle load def
+ /Triangle { -571.5 -330 571.5 660 } def
+ /BoldTriangle /Triangle load def
+ /SolidTriangle /Triangle load def
+ /Square { -450 -450 450 450 } def
+ /BoldSquare /Square load def
+ /SolidSquare /Square load def
+ /Pentagon { -546.6 -465 546.6 574.7 } def
+ /BoldPentagon /Pentagon load def
+ /SolidPentagon /Pentagon load def
+% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga
+ /Diamond { -428.5 -742.5 428.5 742.5 } def
+ /BoldDiamond /Diamond load def
+ /SolidDiamond /Diamond load def
+% DG/SR modification end
+ /.notdef { 0 0 0 0 } def
+ end
+ /CharProcs 20 dict def
+ CharProcs begin
+ /Adjust {
+ 2 copy dtransform floor .5 add exch floor .5 add exch idtransform
+ 3 -1 roll div 3 1 roll exch div exch scale
+ } def
+ /CirclePath { 0 0 500 0 360 arc closepath } def
+ /Bullet { 500 500 Adjust CirclePath fill } def
+ /Circle { 500 500 Adjust CirclePath .9 .9 scale CirclePath
+ eofill } def
+ /BoldCircle { 500 500 Adjust CirclePath .8 .8 scale CirclePath
+ eofill } def
+ /BoldCircle { CirclePath .8 .8 scale CirclePath eofill } def
+ /TrianglePath { 0 660 moveto -571.5 -330 lineto 571.5 -330 lineto
+ closepath } def
+ /SolidTriangle { TrianglePath fill } def
+ /Triangle { TrianglePath .85 .85 scale TrianglePath eofill } def
+ /BoldTriangle { TrianglePath .7 .7 scale TrianglePath eofill } def
+ /SquarePath { -450 450 moveto 450 450 lineto 450 -450 lineto
+ -450 -450 lineto closepath } def
+ /SolidSquare { SquarePath fill } def
+ /Square { SquarePath .89 .89 scale SquarePath eofill } def
+ /BoldSquare { SquarePath .78 .78 scale SquarePath eofill } def
+ /PentagonPath {
+ -337.8 -465 moveto
+ 337.8 -465 lineto
+ 546.6 177.6 lineto
+ 0 574.7 lineto
+ -546.6 177.6 lineto
+ closepath
+ } def
+ /SolidPentagon { PentagonPath fill } def
+ /Pentagon { PentagonPath .89 .89 scale PentagonPath eofill } def
+ /BoldPentagon { PentagonPath .78 .78 scale PentagonPath eofill } def
+% DG/SR modification begin - Dec. 16, 1999 - From Etienne Riga
+ /DiamondPath { 0 742.5 moveto -428.5 0 lineto 0 -742.5 lineto
+ 428.5 0 lineto closepath } def
+ /SolidDiamond { DiamondPath fill } def
+ /Diamond { DiamondPath .85 .85 scale DiamondPath eofill } def
+ /BoldDiamond { DiamondPath .7 .7 scale DiamondPath eofill } def
+% DG/SR modification end
+ /.notdef { } def
+ end
+ /BuildGlyph {
+ exch
+ begin
+ Metrics 1 index get exec 0
+ BBoxes 3 index get exec
+ setcachedevice
+ CharProcs begin load exec end
+ end
+ } def
+ /BuildChar {
+ 1 index /Encoding get exch get
+ 1 index /BuildGlyph get exec
+ } bind def
+end
+/PSTricksDotFont exch definefont pop
+%END pst-dots.pro
diff --git a/graphics/pstricks/base/dvips/pstricks-fonts-lm.pro b/graphics/pstricks/base/dvips/pstricks-fonts-lm.pro
new file mode 100644
index 0000000000..5ab5e436df
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pstricks-fonts-lm.pro
@@ -0,0 +1,69 @@
+% $Id: pstricks-fonts.pro 446 2017-04-19 11:40:55Z herbert $
+%
+%% PostScript font prologue for pstricks.tex.
+%% Version 0.01, 2016/04/22
+%%
+%% 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.
+%
+%
+%true setglobal globaldict begin
+
+%dd-lmbx10 LMRoman10-Bold <dotdigits-clm.enc <lmbx10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmbxi10 LMRoman10-BoldItalic <dotdigits-clm.enc <lmbxi10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmbxo10 LMRomanSlant10-Bold <dotdigits-clm.enc <lmbxo10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmcsc10 LMRomanCaps10-Regular <dotdigits-clm.enc <lmcsc10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmcsco10 LMRomanCaps10-Oblique <dotdigits-clm.enc <lmcsco10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmdunh10 LMRomanDunh10-Regular <dotdigits-clm.enc <lmdunh10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmduno10 LMRomanDunh10-Oblique <dotdigits-clm.enc <lmduno10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmr10 LMRoman10-Regular <dotdigits-clm.enc <lmr10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmri10 LMRoman10-Italic <dotdigits-clm.enc <lmri10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmro10 LMRomanSlant10-Regular <dotdigits-clm.enc <lmro10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+
+/Times-Roman /LMRoman10-Regular def
+/Times-Bold /LMRoman10-Bold def
+/Times-Italic /LMRoman10-Italic def
+/Times-BoldItalic /LMRoman10-BoldItalic def
+
+%mss8ttl10 LMSans10-Regular <t1-clm.enc <lmss10.pfb " fontinst-autoenc-t1-clm ReEncodeFont "
+%lmssbo8ttl10 LMSans10-BoldOblique <t1-clm.enc <lmssbo10.pfb " fontinst-autoenc-t1-clm ReEncodeFont "
+%lmssbx8ttl10 LMSans10-Bold <t1-clm.enc <lmssbx10.pfb " fontinst-autoenc-t1-clm ReEncodeFont "
+%lmssdc8ttl10 LMSansDemiCond10-Regular <t1-clm.enc <lmssdc10.pfb " fontinst-autoenc-t1-clm ReEncodeFont "
+%lmssdo8ttl10 LMSansDemiCond10-Oblique <t1-clm.enc <lmssdo10.pfb " fontinst-autoenc-t1-clm ReEncodeFont "
+%lmsso8ttl10 LMSans10-Oblique <t1-clm.enc <lmsso10.pfb " fontinst-autoenc-t1-clm ReEncodeFont "
+%dd-lmss10 LMSans10-Regular <dotdigits-clm.enc <lmss10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmssbo10 LMSans10-BoldOblique <dotdigits-clm.enc <lmssbo10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmssbx10 LMSans10-Bold <dotdigits-clm.enc <lmssbx10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmssdc10 LMSansDemiCond10-Regular <dotdigits-clm.enc <lmssdc10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmssdo10 LMSansDemiCond10-Oblique <dotdigits-clm.enc <lmssdo10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmsso10 LMSans10-Oblique <dotdigits-clm.enc <lmsso10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+
+/Helvetica /LMSans10-Regular def
+/Helvetica-Bold /LMSans10-Bold def
+/Helvetica-Oblique /LMSans10-Oblique def
+/Helvetica-BoldOblique /LMSans10-BoldOblique def
+
+%dd-lmtcsc10 LMMonoCaps10-Regular <dotdigits-clm.enc <lmtcsc10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtcso10 LMMonoCaps10-Oblique <dotdigits-clm.enc <lmtcso10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtk10 LMMonoLt10-Bold <dotdigits-clm.enc <lmtk10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtko10 LMMonoLt10-BoldOblique <dotdigits-clm.enc <lmtko10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtl10 LMMonoLt10-Regular <dotdigits-clm.enc <lmtl10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtlc10 LMMonoLtCond10-Regular <dotdigits-clm.enc <lmtlc10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtlco10 LMMonoLtCond10-Oblique <dotdigits-clm.enc <lmtlco10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtlo10 LMMonoLt10-Oblique <dotdigits-clm.enc <lmtlo10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtt10 LMMono10-Regular <dotdigits-clm.enc <lmtt10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtti10 LMMono10-Italic <dotdigits-clm.enc <lmtti10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+%dd-lmtto10 LMMonoSlant10-Regular <dotdigits-clm.enc <lmtto10.pfb " fontinst-autoenc-dotdigits-clm ReEncodeFont "
+
+/Courier /LMMono10-Regular def
+/Courier-Bold /LMMono10-Bold def
+/Courier-Oblique /LMMono10-Italic def
+/Courier-BoldOblique /LMMono10-BoldOblique def
+
+/Symbol /StandardSymL def
+
+%end false setglobal
+%
+% end of file
+
diff --git a/graphics/pstricks/base/dvips/pstricks-fonts-ps.pro b/graphics/pstricks/base/dvips/pstricks-fonts-ps.pro
new file mode 100644
index 0000000000..da5cdb7a1e
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pstricks-fonts-ps.pro
@@ -0,0 +1,32 @@
+% $Id: pstricks-fonts.pro 446 2017-04-19 11:40:55Z herbert $
+%
+%% PostScript font prologue for pstricks.tex.
+%% Version 0.01, 2016/04/22
+%%
+%% 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.
+%
+%
+%true setglobal globaldict begin
+
+/Times-Roman /Times-Roman def
+/Times-Bold /Times-Bold def
+/Times-Italic /Times-Italic def
+/Times-BoldItalic /Times-BoldItalic def
+
+/Helvetica /Helvetica def
+/Helvetica-Bold /Helvetica-Bold def
+/Helvetica-Oblique /Helvetica-Oblique def
+/Helvetica-BoldOblique /Helvetica-BoldOblique def
+
+/Courier /Courier def
+/Courier-Bold /Courier-Bold def
+/Courier-Oblique /Courier-Oblique def
+/Courier-BoldOblique /Courier-BoldOblique def
+
+/Symbol /Symbol def
+
+%end false setglobal
+%
+% end of file
diff --git a/graphics/pstricks/base/dvips/pstricks-fonts-urw.pro b/graphics/pstricks/base/dvips/pstricks-fonts-urw.pro
new file mode 100644
index 0000000000..a0dd8bdda5
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pstricks-fonts-urw.pro
@@ -0,0 +1,61 @@
+% $Id: pstricks-fonts.pro 446 2017-04-19 11:40:55Z herbert $
+%
+%% PostScript font prologue for pstricks.tex.
+%% Version 0.01, 2016/04/22
+%%
+%% 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.
+%
+%
+%true setglobal globaldict begin
+
+%n021003l.pfa:/FontName /NimbusRomNo9L-Regu def
+%n021004l.pfa:/FontName /NimbusRomNo9L-Medi def
+%n021023l.pfa:/FontName /NimbusRomNo9L-ReguItal def
+%n021024l.pfa:/FontName /NimbusRomNo9L-MediItal def
+
+/Times-Roman /NimbusRomNo9L-Regu def
+/Times-Roman-Bold /NimbusRomNo9L-Medi def
+/Times-Italic /NimbusRomNo9L-ReguItal def
+/Times-BoldItalic /NimbusRomNo9L-MediItal def
+
+%n019003l.pfa:/FontName /NimbusSanL-Regu def
+%n019004l.pfa:/FontName /NimbusSanL-Bold def
+%n019023l.pfa:/FontName /NimbusSanL-ReguItal def
+%n019024l.pfa:/FontName /NimbusSanL-BoldItal def
+%n019043l.pfa:/FontName /NimbusSanL-ReguCond def
+%n019044l.pfa:/FontName /NimbusSanL-BoldCond def
+%n019063l.pfa:/FontName /NimbusSanL-ReguCondItal def
+%n019064l.pfa:/FontName /NimbusSanL-BoldCondItal def
+
+%/Helvetica /dd-lmss10 def
+/Helvetica /LMSans10-Regular def
+%/Helvetica /NimbusSanL-Regu def
+/Helvetica-Bold /NimbusSanL-Bold def
+/Helvetica-Oblique /NimbusSanL-ReguItal def
+/Helvetica-BoldOblique /NimbusSanL-BoldItal def
+
+%n022003l.pfa:/FontName /NimbusMonL-Regu cvn def
+%n022004l.pfa:/FontName /NimbusMonL-Bold cvn def
+%n022023l.pfa:/FontName /NimbusMonL-ReguObli cvn def
+%n022024l.pfa:/FontName /NimbusMonL-BoldObli cvn def
+
+/Courier /NimbusMonL-Regu def
+/Courier-Bold /NimbusMonL-Bold def
+/Courier-Oblique /NimbusMonL-ReguObli def
+/Courier-BoldOblique /NimbusMonL-BoldObli def
+
+%s050000l.pfa:/FontName /StandardSymL def
+
+/Symbol /StandardSymL def
+
+%p052003l.pfa:/FontName /URWPalladioL-Roma def
+%p052004l.pfa:/FontName /URWPalladioL-Bold def
+%p052023l.pfa:/FontName /URWPalladioL-Ital def
+%p052024l.pfa:/FontName /URWPalladioL-BoldItal def
+%z003034l.pfa:/FontName /URWChanceryL-MediItal def
+
+%end false setglobal
+%
+% end of file
diff --git a/graphics/pstricks/base/dvips/pstricks.pro b/graphics/pstricks/base/dvips/pstricks.pro
new file mode 100644
index 0000000000..0911f0eb0b
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pstricks.pro
@@ -0,0 +1,1232 @@
+% $Id: pstricks.pro 872 2018-12-21 20:39:31Z herbert $
+%
+%% PostScript prologue for pstricks.tex.
+%% Version 1.30, 2018/12/17
+%%
+%% 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.
+%
+%
+% Define the follwing gs-functions if not known, eg when using distiller
+%
+systemdict /.setopacityalpha known not {/.setopacityalpha { pop } def } if
+systemdict /.setblendmode known not {/.setblendmode { pop } def } if
+systemdict /.setshapealpha known not {/.setshapealpha { pop } def } if
+%
+/tx@Dict 200 dict def % the main PSTricks dictionary
+tx@Dict begin
+/ADict 25 dict def % The arrow dictionary
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Sqrt { dup 0 lt { pop 0 } { sqrt } ifelse } def % return 0 for negative arguments
+/Atan { /atan load stopped { pop pop 0 } if } def % return 0 if atan not known
+/ATAN1 {neg -1 atan 180 sub } def % atan(x) (only one parameter)
+/Div { dup 0 eq { pop } { div } ifelse } def % control the division
+/Log { dup 1e-20 lt { pop -1e30 }{ log } ifelse } def % control the log
+/tan { dup cos abs 1.e-10 lt
+ { pop 1.e10 } % return 1.e10 as infinit
+ { dup sin exch cos div } ifelse % default sin/cos
+} def
+/Tan { dup sin exch cos Div } def % sin(x)/cos(x) x in degrees
+/Acos {dup dup mul neg 1 add dup 0 lt { % arc cos, returns 0 when negative root
+ pop pop 0 }{ sqrt exch atan} ifelse } def
+/Acos2 { 2 dict begin
+ /x ED /y ED
+ y abs 1.0e-20 lt { 1.0e30 } if
+ x y div
+ dup dup mul neg 1 add dup 0 lt { % arc cos needs two values x,y
+ pop pop 0 }{ sqrt exch atan} ifelse
+ y 0 lt { 180 add } if
+} def
+/Power { % a^b latest ghostscript don't allow -4^-3.1
+ 2 dict begin % hold all local
+ /b ED
+ /a ED
+ a 0 lt % prevent something like (-4)^(-3.1)=> 1/(-4)^3
+ { b 0 lt
+ { a b cvi exp }
+ { a b exp } ifelse
+ }
+ { a 0 eq { 0 }{ a b exp } ifelse
+ } ifelse
+ end
+} def
+%
+/NET { neg exch neg exch T } def % change coordinate system to the negative one
+/Pyth { dup mul exch dup mul add sqrt } def % Pythagoras, expects 2 parameter
+/Pyth2 { % Pythagoras, xA yA xB yB
+ 3 -1 roll % xA xB yB yA
+ sub % xA xB yB-yA
+ 3 1 roll % yB-yA xA xB
+ sub % yB-yA xA-xB
+ Pyth } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def % Polar to Cartesian (origimal)
+/PtoCrel { pst@angleunit PtoC } def % Polar to Cartesian with \degrees[??]
+/PtoCab { dup cos 4 -1 roll mul 3 1 roll sin mul } def % Polar to Cartesian (Ellipse) a b phi-> x y
+/AnytoDeg { pst@angleunit } def
+/DegtoAny { 1 pst@angleunit div} def
+/AnytoRad { AnytoDeg DegtoRad } def
+/RadtoAny { RadtoDeg DegtoAny } def
+%
+%/Rand { rand 4294967295 div } def % a real random number
+/Rand { rand 2147483447 div } def % a real random number between 0 and 1
+%----------------- hv added 20050516 ---------------
+/PiDiv2 1.57079632680 def
+/Pi 3.14159265359 def
+/TwoPi 6.28318530718 def
+/Euler 2.71828182846 def
+%/e Euler bind def
+%
+/RadtoDeg { 180 mul Pi div } bind def % convert from radian to degrees
+/DegtoRad { Pi mul 180 div } bind def % viceversa
+%
+/startGlobal { true setglobal globaldict begin } bind def
+/endGlobal { end false setglobal } bind def
+/pssetRGBcolor /setrgbcolor load def
+/pssetCMYKcolor /setcmykcolor load def
+/pssetGraycolor /setgray load def
+%
+%----------------- hv end---------------------------
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def } def
+%
+/PathLength {
+ flattenpath /z 0 def
+ { /y1 ED /x1 ED /y2 y1 def /x2 x1 def }
+ { /y ED /x ED PathLength@ }
+ {}
+ { /y y2 def /x x2 def PathLength@ }
+ /pathforall load stopped { pop pop pop pop } if
+ z
+} def
+%
+/STP { .996264 dup scale } def % BP/PT scaling
+/STV { SDict begin normalscale end STP } def %
+%
+/DashLine {
+ dup 0 gt
+ { /a .5 def PathLength exch div }
+ { pop /a 1 def PathLength } ifelse
+ /b ED % pattern should fit evenly in b
+ dup /X ED % pattern array
+ 0 get /y ED % length of first black segment
+ /z 0 X {add} forall def % length of the full pattern
+ %% Computation of the scaling factor as described by van Zandt:
+ b a .5 sub 2 mul y mul sub z Div round
+ z mul a .5 sub 2 mul y mul add b exch Div
+ %%%% scaling factor on stack.
+ /z ED %% now, z is the scaling factor
+ false % for the length test below
+ X { z mul } forall X astore %% modification TN 04-08-07
+ %%% Checking whether at least one dash in X has positive length:
+ {0 gt or} forall
+ { X 1 a sub y mul }
+ { [ 1 0 ] 0 }
+ ifelse
+ setdash stroke
+} def
+%
+/DotLine {
+ /b PathLength def
+ /a ED /z ED /y CLW def
+ /z y z add def
+ a 0 gt {
+ /b b a div def
+ }{
+ a 0 eq {
+ /b b y sub def
+ }{ a -3 eq {
+ /b b y add def } if
+ } ifelse
+ } ifelse
+ [ 0 b b z Div round Div dup 0 le { pop 1 } if ]
+ a 0 gt { 0 }{ y 2 div a -2 gt { neg }if } ifelse
+ setdash 1 setlinecap stroke
+} def
+%
+/SymbolLine { % on stack [ x y x y ...
+ counttomark % number of elements
+ 2 div cvi /n ED % n pairs
+ /YA ED /XA ED % the start point
+ n 1 sub {
+ /YB ED /XB ED
+ /XLength XB XA sub def
+ /YLength YB YA sub def
+ /PAngle YLength XLength Atan def
+ /XYLength XLength YLength Pyth def
+ %% for negative SymStep we calculate the distance
+ SymStep 0 lt
+ { %XYLength SymStep div abs cvi
+ /nSym SymStep abs cvi def }
+ { /nSym XYLength SymStep div cvi def }
+ ifelse
+ 0.5 setflat
+ /Shift Symbol stringwidth pop 2 div def
+ /deltaX XLength nSym div def
+ /deltaY YLength nSym div def
+ curveticks
+ { XA YA moveto }
+ { XA Shift sub YA Shift sub moveto }
+ ifelse
+ nSym {
+ gsave
+ curveticks
+ { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED
+ currentpoint translate rotAngle rotate
+ 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto
+ SymbolLinewidth setlinewidth stroke
+ }
+ {
+ rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if
+ Symbol show
+ }
+ ifelse
+ grestore
+ deltaX deltaY rmoveto
+ } repeat
+ /YA YB def /XA XB def
+ } repeat
+ curveticks
+ { XA YA moveto }
+ { XA Shift sub YA Shift sub moveto }
+ ifelse
+ gsave
+ curveticks
+ { PAngle 180 sub CorrAngle sub tickAngle add /rotAngle ED
+ XA YA translate rotAngle rotate
+ 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto
+ SymbolLinewidth setlinewidth stroke
+ }
+ {
+ rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if
+ Symbol show
+ }
+ ifelse
+ grestore
+ pop % delete the mark symbol
+} def
+%
+/LineFill { % hv ------------ patch 7 -------------
+ gsave
+ abs /hatchWidthInc ED
+ abs /hatchSepInc ED
+ abs CLW add /a ED
+ a 0 dtransform round exch round exch
+ 2 copy idtransform
+ exch Atan rotate
+ idtransform pop /a ED
+ .25 .25 itransform pathbbox
+ /y2 ED
+ a Div ceiling cvi /x2 ED /y1 ED
+ a Div cvi /x1 ED /y2 y2 y1 sub def
+ clipType % must be defined in pstricks.tex: clip -- eoclip
+ newpath
+ 2 setlinecap
+ systemdict
+ /setstrokeadjust known { true setstrokeadjust } if
+ x2 x1 sub 1 add {
+ x1 a mul y1 moveto 0 y2 rlineto stroke
+ /x1 x1 1 add
+ hatchWidthInc 0 gt { CLW add } if
+ def
+ hatchSepInc 0 gt hatchWidthInc 0 gt or {
+ /a a hatchSepInc add def
+ CLW hatchWidthInc add SLW
+ } if
+ } repeat
+ grestore
+ pop pop } def
+%
+/DotFill {% on stack: dot radius
+ /dotRadius ED
+ abs CLW add /a ED
+ a 0 dtransform round exch round exch
+ 2 copy idtransform
+ exch Atan rotate
+ idtransform pop /a ED
+ .25 .25 itransform
+ pathbbox % llx lly urx ury of smallest bounding box
+ /y2 ED /x2 ED /y1 ED /x1 ED
+ y2 y1 sub a div 2 add cvi /Ny ED
+ x2 x1 sub a div 2 add cvi /Nx ED
+ clipType % must be defined in pstricks.tex: clip -- eoclip
+ newpath
+ /yA y1 dotRadius add CLW add def
+ /xA0 x1 dotRadius add CLW add def
+ Ny {
+ /xA xA0 def
+ Nx {
+ newpath
+ xA yA dotRadius 0 360 arc
+ SolidDot { gsave fill grestore } if
+ stroke
+ xA a add /xA ED
+ } repeat
+ yA a add /yA ED
+ } repeat
+ grestore
+} def
+%
+/PenroseFill {% on stack: scaling factor
+ /Scale ED
+% 1 exch div round /penroseFactor ED
+% a 0 dtransform round exch round exch
+% 2 copy idtransform
+% exch Atan rotate
+% idtransform pop /a ED
+% .25 .25 itransform pathbbox
+% /y2 ED
+% a Div ceiling cvi /x2 ED /y1 ED
+% a Div cvi /x1 ED /y2 y2 y1 sub def
+ clip
+ newpath
+gsave
+ 220 150 translate
+ Scale dup scale
+ systemdict /setstrokeadjust known { true setstrokeadjust } if
+ /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul}
+ { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall
+ [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto
+ i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25
+ mul j l + S rmoveto}F i L j L stroke }F}F}F}F
+ grestore
+% pop pop
+} def
+%
+/PenroseFillA {% on stack: scaling factor, border color, kite color, dart color
+ /Scale ED
+ Scale dup scale
+ /border_colour ED
+ /kite_colour ED
+ /dart_colour ED
+ clip
+ newpath
+ gsave
+ 100 100 translate
+ 6
+ Scale 1 lt { 1 Scale dup add div mul cvi } if %%%% Number of iterations
+ 10 %%%% Long side length in millimeters
+ /border_width { L 0.06 mul }def %%%% Choose the scalefactor for the borders
+ /L exch 25.4 div 72 mul def %%%% Conversion: mm -> inches -> points
+ /f{-1 5 sqrt add 2 div}bind def %%%% The reciprocal of the golden ratio
+ /l{L f mul}bind def %%%% Short side length l = L*f
+ /Ll{L l add}bind def %%%% Ll = L + l
+ /c{36 cos L mul}bind def %%%% c = L*cos(36)
+ /s{36 sin L mul}bind def %%%% s = L*sin(36)
+ /draw_tile { 0 0 moveto c s lineto 0 lineto gsave closepath gsave fill grestore
+ 0 setlinewidth stroke grestore border_colour stroke } bind def
+ /half_kite { dup dup 0 gt{ 1 sub gsave f f neg scale -36 rotate half_dart
+ Ll 0 translate 144 rotate kite grestore }
+ { kite_colour L draw_tile }ifelse
+ pop } bind def
+ /half_dart { dup dup 0 gt{ 1 sub gsave f f scale half_kite
+ -144 rotate Ll neg 0 translate half_dart grestore }
+ { dart_colour l draw_tile }ifelse
+ pop } bind def
+ /kite{ gsave half_kite 1 -1 scale half_kite grestore }bind def
+ border_width setlinewidth 1 setlinejoin 1 setlinecap
+% 450 0 translate
+ dup f exch neg exp dup scale
+ 5 {kite 72 rotate } repeat stroke
+ grestore
+} def
+%
+%
+/TruchetFill { % on stack: scaling factor
+ 10 dict begin
+ dup dup scale
+ 1 exch div round /penroseFactor ED
+ a 0 dtransform round exch round exch
+ 2 copy idtransform
+ exch Atan rotate
+ idtransform pop /a ED
+ .25 .25 itransform pathbbox
+ /y2 ED
+ a Div ceiling cvi /x2 ED /y1 ED
+ a Div cvi /x1 ED /y2 y2 y1 sub def
+ clip
+ newpath
+ systemdict
+ /setstrokeadjust known { true setstrokeadjust } if
+ /ma a neg def
+ /ha a 2 div def
+ /mha ha neg def
+ /tile {
+ rand dup 2 idiv 2 mul eq { 90 rotate } if
+ mha mha moveto ha mha lineto
+ ha ha lineto mha ha lineto
+% closepath .1 setlinewidth stroke
+ contents
+ } def
+ /contents{
+ 0 ha moveto ha 0 lineto
+ 0 mha moveto mha 0 lineto
+% 1 setlinewidth stroke
+ } def
+ /dotiling {
+ f ma mul a f a mul {
+ /i exch def
+ f ma mul a f a mul {
+ /j exch def
+ gsave i j translate
+ tile stroke grestore
+ } for
+ } for
+ } def
+%
+ /f 3 def
+ 5 srand dotiling
+ end % local user dict
+} def
+%
+/BeginArrow {
+ ADict begin % hold it local, for end see EndArrow
+ /@mtrx CM def
+ gsave
+ 2 copy T
+ 2 index sub neg exch
+ 3 index sub exch Atan
+ rotate newpath
+} def
+%
+/EndArrow { @mtrx setmatrix CP grestore end } def % end the ADict
+%
+/Arrow {
+ CLW mul add dup
+ 2 div /w ED
+ mul dup /h ED
+ mul /a ED
+ { 0 h T 1 -1 scale } if
+ w neg h moveto
+ 0 0 L w h L w neg a neg rlineto
+ gsave fill grestore
+} def
+%
+/ArrowD { % the sides are drawn as curves (hv 20071211)
+ CLW mul add dup
+ 2 div /w ED
+ mul dup /h ED
+ mul /Inset ED
+ { 0 h T 1 -1 scale } if % changes the direction
+% we use y=w/h^2 * x^2 as equation for the control points
+% for the coordinates the arrow is seen from top to bottom
+% the bottom (tip) is (0;0)
+ w neg h moveto % lower left of >
+ w 9 div 4 mul neg h 3 div 2 mul
+ w 9 div neg h 3 div
+ 0 0 curveto % tip of >
+ w 9 div h 3 div
+ w 9 div 4 mul h 3 div 2 mul
+ w h curveto % upper left of >
+ w neg Inset neg rlineto % move to x=0 and inset
+ gsave fill grestore
+} def
+%
+/Tbar {
+ CLW mul add /z ED
+ z -2 div CLW 2 div moveto
+ z 0 rlineto stroke
+ 0 CLW moveto
+} def
+%
+/Bracket {
+ CLW mul add dup CLW sub 2 div
+ /x ED mul CLW add /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
+%
+/RoundBracket {
+ CLW mul add dup 2 div
+ /x ED mul /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
+%
+/SD { 0 360 arc fill } def
+%
+/EndDot { % DS is the dot size
+ { /z DS def } { /z 0 def } ifelse % outer or inner dimen
+ /b ED % the color definition
+ 0 z DS SD
+ b { 0 z DS CLW sub SD } if
+ 0 DS z add CLW 4 div sub
+ moveto
+} def
+%
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+ /closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+ load } if ] cvx newpath 3 1 roll T exec } def
+%
+/NArray { % holds the coordinates and on top of stack the showpoints boolean
+ /showpoints ED
+ counttomark 2 div dup cvi /n ED % n 2 div on stack
+ n eq not { exch pop } if % even numbers of points? delete one
+ ] aload /Points ED
+ showpoints not { Points aload pop } if
+% { ] aload /Points ED }
+% { n 2 mul 1 add -1 roll pop } ifelse % delete the mark symbol
+} def
+%
+/Line {
+ NArray n 0 eq not
+ { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub def
+ n { Lineto } repeat
+ CP 4 2 roll ArrowB L pop pop
+ } if
+} def
+%
+/LineToYAxis {
+ /Ox ED % Save the x origin value
+ NArray % all x-y pairs on stack
+ n { 2 copy moveto % go to current point
+ Ox exch Lineto % line to y-axis
+ pop % delete old x-value
+ } repeat
+} def
+%
+/LineToXAxis{
+ /Oy ED % Save the y origin value
+ NArray % all x-y pairs on stack
+ n 0 eq not
+ { n 1 eq { 0 0 /n 2 def } if
+ ArrowA
+ /n n 2 sub def
+ CP 2 copy moveto pop Oy Lineto
+ n { 2 copy moveto pop Oy Lineto } repeat
+ CP
+ 4 2 roll
+ ArrowB
+ 2 copy moveto pop Oy
+ L
+ pop pop } if
+} def
+%
+/Arcto {
+ /a [ 6 -2 roll ] cvx def
+ a r
+ /arcto load stopped { 5 } { 4 } ifelse { pop } repeat
+ a
+} def
+%
+/CheckClosed {
+ dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+ and { pop pop /n n 1 sub def } if
+} def
+%
+/Polygon {
+ NArray n 2 eq { 0 0 /n 3 def } if
+ n 3 lt
+ { n { pop pop } repeat }
+ { n 3 gt { CheckClosed } if
+ n 2 mul -2 roll
+ /y0 ED /x0 ED /y1 ED /x1 ED
+ x1 y1
+ /x1 x0 x1 add 2 div def
+ /y1 y0 y1 add 2 div def
+ x1 y1 moveto
+ /n n 2 sub def
+ n { Lineto } repeat
+ x1 y1 x0 y0 6 4 roll Lineto
+ Lineto pop pop closepath } ifelse
+} def
+%
+/SymbolPolygon { % on stack [ x y x y ...
+ counttomark % number of elements
+ 2 add /m ED
+ 2 copy m 2 roll % copy last two
+ m 2 div cvi /n ED % n pairs
+ /YA ED /XA ED % the start point
+ n 1 sub {
+ /YB ED /XB ED
+ /XLength XB XA sub def
+ /YLength YB YA sub def
+ /PAngle YLength XLength Atan def
+ /XYLength XLength YLength Pyth def
+ /nSym XYLength SymStep Div cvi def
+ /Shift Symbol stringwidth pop 2 Div def
+ /deltaX XLength nSym Div def
+ /deltaY YLength nSym Div def
+ XA Shift sub YA Shift sub moveto
+ nSym {
+ gsave rotateSymbol { PAngle 180 sub CorrAngle sub rotate } if
+ Symbol show
+ grestore
+ deltaX deltaY rmoveto
+ } repeat
+% XB Shift sub YB Shift sub moveto Symbol show
+ /YA YB def /XA XB def
+ } repeat
+ pop % delete the mark symbol
+} def
+%
+/Diamond {
+ /mtrx CM def
+ T rotate
+ /h ED
+ /w ED
+ dup 0 eq { pop } { CLW mul neg
+ /d ED
+ /a w h Atan def
+ /h d a sin Div h add def
+ /w d a cos Div w add def } ifelse
+ mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div
+ /ArrowA { moveto } def
+ /ArrowB { } def
+ false Line
+ closepath mtrx setmatrix } def
+%
+/Triangle {
+ /mtrx CM def
+ translate
+ rotate /h ED 2 div /w ED
+ dup CLW mul /d ED
+ /h h d w h Atan sin Div sub def
+ /w w d h w Atan 2 div dup cos exch sin Div mul sub def
+ mark
+ 0 d w neg d 0 h w d 0 d
+ /ArrowA { moveto } def
+ /ArrowB { } def
+ false
+ Line
+ closepath
+ mtrx
+% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+ setmatrix pop
+} def
+% DG/SR modification end
+%
+/CCA {
+ /y ED /x ED
+ 2 copy y sub /dy1 ED
+ x sub /dx1 ED
+ /l1 dx1 dy1 Pyth def
+} def
+%
+/CC {
+ /l0 l1 def
+ /x1 x dx sub def
+ /y1 y dy sub def
+ /dx0 dx1 def
+ /dy0 dy1 def
+ CCA
+ /dx dx0 l1 c exp mul dx1 l0 c exp mul add def
+ /dy dy0 l1 c exp mul dy1 l0 c exp mul add def
+ /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos abs b exp a mul dx dy Pyth Div 2 div def
+ /x2 x l0 dx mul m mul sub def
+ /y2 y l0 dy mul m mul sub def
+ /dx l1 dx mul m mul neg def
+ /dy l1 dy mul m mul neg def
+} def
+%
+/IC {
+ /c c 1 add def
+ c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse
+ /a a 2 mul 3 div 45 cos b exp div def
+ CCA
+ /dx 0 def
+ /dy 0 def
+} def
+%
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+%
+/OpenCurve {
+ NArray n 3 lt
+ { n { pop pop } repeat }
+ { BOC /n n 3 sub def n { NC } repeat EOC } ifelse
+} def
+%
+/CurvePath {
+ %% for negative SymStep we calculate the distance
+ SymStep 0 lt { gsave PathLength SymStep div abs /SymStep ED grestore } if
+ 0.5 setflat
+ flattenpath /z 0 def /z0 0 def
+ { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+ x1 Shift sub y1 Shift sub moveto
+ gsave
+ curveticks
+ { x1 y1 translate startAngle rotate
+ 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto
+ SymbolLinewidth setlinewidth stroke
+ }
+ { startAngle rotate Symbol show }
+ ifelse
+ grestore /z0 z def }
+ { /y ED /x ED PathLength@ z z0 sub SymStep ge {
+ x Shift sub y Shift sub moveto
+ gsave
+ curveticks
+ { y yOld sub x xOld sub Atan 180 sub CorrAngle sub /rotAngle ED
+ x y translate rotAngle rotate
+ 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto
+ SymbolLinewidth setlinewidth stroke
+ }
+ {
+ rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if
+ Symbol show
+ }
+ ifelse
+ grestore /z0 z def } if
+ /yOld y def /xOld x def }
+ {} %% the lineto part
+ { /y y2 def /x x2 def PathLength@
+ x Shift sub y Shift sub moveto
+ gsave
+ curveticks
+ { y yOld sub x xOld sub Atan 180 sub /rotAngle ED
+ x y translate rotAngle rotate
+ 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto
+ SymbolLinewidth setlinewidth stroke
+ }
+ {
+ x Shift sub y Shift sub moveto
+ rotateSymbol { y yOld sub x xOld sub Atan 180 sub CorrAngle sub rotate } if
+ Symbol show
+ }
+ ifelse
+ grestore
+ }
+ pathforall
+% curveticks
+% { gsave
+% x y translate rotAngle rotate
+% 0 SymbolWidth 2 div moveto 0 SymbolWidth 2 div neg lineto
+% SymbolLinewidth setlinewidth stroke grestore
+% } if
+ z
+} def
+%
+/OpenSymbolCurve {
+ OpenCurve
+ 0.1 setflat
+ /Shift Symbol stringwidth pop 2 div def
+ CurvePath
+} def
+%
+/AltCurve {
+ { false NArray n 2 mul 2 roll
+ [ n 2 mul 3 sub 1 roll ] aload
+ /Points ED
+ n 2 mul -2 roll }
+ { false NArray } ifelse
+ n 4 lt { n { pop pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse
+} def
+%
+/AltOpenSymbolCurve {
+ AltCurve
+ 0.1 setflat
+ /Shift Symbol stringwidth pop 2 div def
+ CurvePath
+} def
+%
+/ClosedCurve {
+ NArray n 3 lt
+ { n { pop pop } repeat }
+ { n 3 gt { CheckClosed } if
+ 6 copy n 2 mul 6 add 6 roll
+ IC CC x y moveto n { NC } repeat
+ closepath pop pop
+ } ifelse
+} def
+%
+/ClosedSymbolCurve {
+ ClosedCurve
+ 0.1 setflat
+ /Shift Symbol stringwidth pop 2 div def
+ CurvePath
+} def
+%
+/CalcBezierSpline {% Christoph Bersch
+ 10 dict begin
+ /getX { Points exch 2 mul get } def
+ /getY { Points exch 2 mul 1 add get } def
+ /n Points length 1 sub 2 idiv def
+ /GetFirstControlPoints {
+ /x n array def
+ /tmp n array def
+ /b 2 def
+ x 0 rhs 0 get b div put
+ 1 1 n 1 sub {
+ /i exch def
+ tmp i 1 b div dup 4 1 roll put
+ i n 1 sub lt { 4 }{ 3.5 } ifelse exch sub /b exch def
+ x i rhs i get x i 1 sub get sub b div put
+ } for
+ 1 1 n 1 sub {
+ n exch sub
+ dup dup x exch 1 sub 2 copy 6 2 roll
+ get 3 1 roll tmp exch get
+ exch x exch get mul sub
+ put
+ } for
+ x
+ } def
+ %
+ n 1 eq {
+ 0 getX 2 mul 1 getX add 3 div
+ 0 getY 2 mul 1 getY add 3 div
+ exch dup 3 1 roll 2 mul 0 getX sub
+ exch dup 3 1 roll 2 mul 0 getY sub
+ [ 0 getX 0 getY 7 3 roll 1 getX 1 getY ] /outPoints exch def
+ } {
+ /outPoints 6 n mul 2 add array def
+ 0 1 n {
+ dup dup 6 mul dup 1 add
+ outPoints exch 5 -1 roll getY put
+ outPoints exch 3 -1 roll getX put
+ } for
+ /rhs n array def
+ 1 1 n 2 sub {
+ rhs exch dup dup getX 4 mul exch 1 add getX 2 mul add put
+ } for
+ rhs 0 0 getX 1 getX 2 mul add put
+ rhs n 1 sub dup getX 8 mul n getX add 2 div put
+ GetFirstControlPoints
+ 1 1 n 2 sub {
+ rhs exch dup dup getY 4 mul exch 1 add getY 2 mul add put
+ } for
+ rhs 0 0 getY 1 getY 2 mul add put
+ rhs n 1 sub dup getY 8 mul n getY add 2 div put
+ GetFirstControlPoints
+ 0 1 n 1 sub {
+ /i exch def
+ 2 copy
+ i get outPoints 6 i mul 3 add 3 -1 roll put
+ i get outPoints 6 i mul 2 add 3 -1 roll put
+ 2 copy
+ i n 1 sub lt {
+ i 1 add get i 1 add getY 2 mul exch sub outPoints 6 i mul 5 add 3 -1 roll put
+ i 1 add get i 1 add getX 2 mul exch sub outPoints 6 i mul 4 add 3 -1 roll put
+ }{
+ n 1 sub get n getY add 2 div outPoints 6 n 1 sub mul 5 add 3 -1 roll put
+ n 1 sub get n getX add 2 div outPoints 6 n 1 sub mul 4 add 3 -1 roll put
+ } ifelse
+ } for
+ pop pop
+ } ifelse
+ outPoints
+ end
+} def
+/Spline {
+ /showpoints ED
+ counttomark 2 div dup cvi /n ED
+ n eq not { exch pop } if
+ ] /Points ED
+ n 1 gt {
+ CalcBezierSpline
+ mark exch aload pop
+ ArrowA
+ n 2 sub {
+ 6 2 roll 4 2 roll curveto
+ } repeat
+ 6 2 roll 4 2 roll ArrowB curveto
+ } if
+} def
+/OpenSymbolSpline {
+ Spline
+ 0.1 setflat
+ /Shift Symbol stringwidth pop 2 div def
+ CurvePath
+} def
+%
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore } def
+%
+/FontDot {
+ DS 2 mul dup
+ matrix scale matrix concatmatrix exch matrix
+ rotate matrix concatmatrix exch
+ findfont exch makefont setfont
+} def
+%
+/Rect {
+ x1 y1 y2 add 2 div moveto
+% x1 y2 lineto
+% x2 y2 lineto
+% x2 y1 lineto
+% x1 y1 lineto
+ x1 y1 lineto % counter clockwise path
+ x2 y1 lineto
+ x2 y2 lineto
+ x1 y2 lineto
+ closepath
+} def
+%
+/OvalFrame {
+ x1 x2 eq y1 y2 eq or
+ { pop pop x1 y1 moveto x2 y2 L }
+ { y1 y2 sub abs x1 x2 sub abs 2 copy gt
+ { exch pop } { pop } ifelse
+ 2 div exch { dup 3 1 roll mul exch } if
+ 2 copy lt { pop } { exch pop } ifelse
+ /b ED
+ x1 y1 y2 add 2 div moveto
+ x1 y2 x2 y2 b arcto
+ x2 y2 x2 y1 b arcto
+ x2 y1 x1 y1 b arcto
+ x1 y1 x1 y2 b arcto
+ 16 { pop } repeat
+ closepath
+ } ifelse
+} def
+%
+/Frame {
+ CLW mul /a ED
+ 3 -1 roll
+ 2 copy gt { exch } if
+ a sub /y2 ED
+ a add /y1 ED
+ 2 copy gt { exch } if
+ a sub /x2 ED
+ a add /x1 ED
+ 1 index 0 eq { pop pop Rect } { OvalFrame } ifelse
+} def
+%
+/BezierNArray {
+ /f ED
+ counttomark 2 div dup cvi /n ED
+ n eq not { exch pop } if
+ n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat
+ f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse
+} def
+%
+/OpenBezier {
+ BezierNArray
+ n 1 eq
+ { pop pop }
+ { ArrowA n 4 sub 3 idiv
+ { 6 2 roll 4 2 roll curveto } repeat
+ 6 2 roll 4 2 roll ArrowB curveto } ifelse
+} def
+%
+/OpenSymbolBezier {
+ OpenBezier
+ 0.1 setflat
+ /Shift Symbol stringwidth pop 2 div def
+ CurvePath
+} def
+%
+/ClosedBezier {
+ BezierNArray
+ n 1 eq
+ { pop pop }
+ { moveto n 1 sub 3 idiv
+ { 6 2 roll 4 2 roll curveto } repeat
+ closepath } ifelse
+} def
+%
+/ClosedSymbolBezier {
+ /f ED % save showpoints value
+ 2 copy /yEnd ED /xEnd ED
+ counttomark -2 roll 2 copy /yStart ED /xStart ED
+ counttomark 2 roll
+ f
+ ClosedBezier
+ 0.1 setflat
+ /Shift Symbol stringwidth pop 2 div def
+ CurvePath
+ [ xEnd yEnd xStart yStart SymbolLine
+} def
+%
+/BezierShowPoints {
+ gsave
+ Points aload length 2 div cvi /n ED
+ moveto
+ n 1 sub { lineto } repeat
+ CLW 2 div SLW [ 4 4 ] 0 setdash stroke
+ grestore
+} def
+%
+/Parab {
+ /y0 ED /x0 ED /y1 ED /x1 ED
+ /dx x0 x1 sub 3 div def
+ /dy y0 y1 sub 3 div def
+ x0 dx sub y0 dy add x1 y1 ArrowA
+ x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB
+ curveto
+ /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def
+} def
+%
+/Parab1 { % 1 end | 0 SP
+ /ySP ED /xSP ED /y1 ED /x1 ED
+ /dx xSP x1 sub 3 div def
+ /dy ySP y1 sub 3 div def
+ newpath x1 y1 moveto xSP y1 lineto xSP ySP lineto
+ x1 ySP lineto closepath clip
+ currentpoint
+ newpath moveto
+ xSP dx sub ySP dy add x1 y1 ArrowA
+ xSP dx add ySP dy add xSP 2 mul x1 sub y1 ArrowB
+ curveto
+ /Points [ x1 y1 xSP ySP xSP 2 mul x1 sub y1 ] def
+} def
+%
+/Grid {
+ newpath
+ /a 4 string def
+ /b ED % psk@gridlabels in pt
+ /c ED % { \pst@usecolor\psgridlabelcolor }
+ /n ED % psk@griddots
+ cvi dup 1 lt { pop 1 } if
+ /s ED % \psk@subgriddiv
+ s div dup 0 eq { pop 1 } if
+ /dy ED s div dup 0 eq { pop 1 } if % \pst@number\psyunit abs
+ /dx ED dy div round dy mul % \pst@number\psxunit abs
+ /y0 ED dx div round dx mul
+ /x0 ED dy div round cvi
+ /y2 ED dx div round cvi
+ /x2 ED dy div round cvi
+ /y1 ED dx div round cvi
+ /x1 ED
+ /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def
+ /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def
+ b 0 gt {
+ /z1 b 4 div CLW 2 div add def
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Helvetica findfont b scalefont setfont
+% is set in pstricks.tex
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% /NimbusSanL-Regu findfont b scalefont setfont
+ /b b .95 mul CLW 2 div add def } if
+ systemdict /setstrokeadjust known
+ { true setstrokeadjust /t { } def }
+ { /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+ exch itransform } bind def } ifelse
+ gsave n 0 gt { 1 setlinecap [ 0 dy n div ] dy n div 2 div setdash } { 2 setlinecap } ifelse
+ /i x1 def
+ /f y1 dy mul n 0 gt { dy n div 2 div h mul sub } if def
+ /g y2 dy mul n 0 gt { dy n div 2 div h mul add } if def
+ x2 x1 sub w mul 1 add dup 1000 gt { pop 1000 } if
+ { i dx mul dup xGridOffset add y0 moveto
+ b 0 gt
+ { gsave c i a cvs dup stringwidth pop
+ /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse
+ h 0 gt {b neg}{z1} ifelse
+ rmoveto show grestore } if
+ dup t f moveto
+ g t L stroke
+ /i i w add def
+ } repeat
+ grestore
+ gsave
+ n 0 gt
+ % DG/SR modification begin - Nov. 7, 1997 - Patch 1
+ %{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+ { 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+ % DG/SR modification end
+ { 2 setlinecap } ifelse
+ /i y1 def
+ /f x1 dx mul n 0 gt { dx n div 2 div w mul sub } if def
+ /g x2 dx mul n 0 gt { dx n div 2 div w mul add } if def
+ y2 y1 sub h mul 1 add dup 1000 gt { pop 1000 } if
+ { newpath i dy mul dup yGridOffset add x0 exch moveto
+ b 0 gt { gsave c i a cvs dup stringwidth pop
+ /z2 ED
+ w 0 gt {z1 z2 add neg} {z1} ifelse
+ h 0 gt {z1} {b neg} ifelse
+ rmoveto show grestore } if
+ dup f exch t moveto
+ g exch t L stroke
+ /i i h add def
+ } repeat
+ grestore
+} def
+%
+/ArcArrow {
+ /d ED /b ED /a ED
+ gsave
+ newpath 0 -1000 moveto clip
+ newpath
+ 0 1 0 0 b
+ grestore
+ c mul
+ /e ED
+ pop pop pop r a e d PtoC y add exch x add
+ exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+ mul neg d
+} def
+%
+%
+/isbool { type (booleantype) cvn eq } def
+%
+/Ellipse {
+ dup isbool { /MoveToStart ED }{ /MoveToStart false def }ifelse % false or true
+ /rotAngle ED
+ /mtrx CM def
+ T
+ rotAngle rotate
+ scale
+ MoveToStart { 0 0 moveto 1 0 rmoveto } if % move to the start position
+ 0 0 1 5 3 roll arc
+ mtrx setmatrix
+} def
+%
+/ArcAdjust { %%%% Vincent Guirardel
+% given a target length (targetLength) and an initial angle (angle0) [in the stack],
+% let M(angle0)=(rx*cos(angle0),ry*sin(angle0))=(x0,y0).
+% This computes an angle t such that (x0,y0) is at distance
+% targetLength from the point M(t)=(rx*cos(t),ry*sin(t)).
+% NOTE: this an absolute angle, it does not have to be added or substracted to angle0
+% contrary to TvZ's code.
+% To achieve, this, one iterates the following process: start with some angle t,
+% compute the point M' at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)].
+% Now take t' (= new angle) so that (0,0) M(t') and M' are aligned.
+%
+% Another difference with TvZ's code is that we need d (=add/sub) to be defined.
+% the value of d = add/sub is used to know on which side we have to move.
+% It is only used in the initialisation of the angle before the iteration.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Input stack: 1: target length 2: initial angle
+% variables used : rx, ry, d (=add/sub)
+%
+ /targetLength ED /angle0 ED
+ /x0 rx angle0 cos mul def
+ /y0 ry angle0 sin mul def
+% we are looking for an angle t such that (x0,y0) is at distance targetLength
+% from the point M(t)=(rx*cos(t),ry*sin(t)))
+%initialisation of angle (using 1st order approx = TvZ's code)
+ targetLength 57.2958 mul
+ angle0 sin rx mul dup mul
+ angle0 cos ry mul dup mul
+ add sqrt div
+% if initialisation angle is two large (more than 90 degrees) set it to 90 degrees
+% (if the ellipse is very curved at the point where we draw the arrow, %
+% the value can be much more than 360 degrees !)
+% this should avoid going on the wrong side (more than 180 degrees) or go near
+% a bad attractive point (at 180 degrees)
+ dup 90 ge { pop 90 } if
+ angle0 exch d % add or sub
+% maximum number of times to iterate the iterative procedure:
+% iterative procedure: takes an angle t on top of stack, computes a
+% better angle (and put it on top of stack)
+ 30 { dup
+% compute distance D between (x0,y0) and M(t)
+ dup cos rx mul x0 sub dup mul exch sin ry mul y0 sub dup mul add sqrt
+% if D almost equals targetLength, we stop
+ dup targetLength sub abs 1e-5 le { pop exit } if
+% stack now contains D t
+% compute the point M(t') at distance targetLength of (x0,y0) on the semi-line [(x0,y0) M(t)]:
+% M(t')= ( (x(t)-x0)*targetLength/d+x0 , (y(t)-y0)*targetLength/d+y0 )
+ exch dup cos rx mul x0 sub exch sin ry mul y0 sub
+% stack contains: y(t)-y0, x(t)-x0, d
+ 2 index Div targetLength mul y0 add ry Div exch
+ 2 index Div targetLength mul x0 add rx Div
+% stack contains x(t')/rx , y(t')/ry , d
+% now compute t', and remove D from stack
+ atan exch pop
+ } repeat
+% we don't look at what happened... in particular, if targetLength is greater
+% than the diameter of the ellipse...
+% the final angle will be around /angle0 + 180. maybe we should treat this pathological case...
+% after iteration, stack contains an angle t such that M(t) is the tail of the arrow
+% to give back the result as a an angle relative to angle0 we could add the following line:
+% angle0 sub 0 exch d
+%
+% begin bug fix 2006-01-11
+% we want to adjust the new angle t' by a multiple of 360 so that | t'-angle0 | <= 180
+%(we don't want to make the ellipse turn more or less than it should)...
+dup angle0 sub dup abs 180 gt { 180 add 360 div floor 360 mul sub } { pop } ifelse
+% end bug fix
+} def
+%
+/EllipticArcArrow {
+ /d ED % is add or sub
+ /b ED % arrow procedure
+ /a1 ED % angle
+ gsave
+ newpath
+ 0 -1000 moveto
+ clip % Set clippath far from arrow.
+ newpath
+ 0 1 0 0 b % Draw arrow to determine length.
+ grestore
+% Length of arrow is on top of stack. Next 3 numbers are junk.
+%
+ a1 exch ArcAdjust % Angular position of base of arrow.
+ /a2 ED
+ pop pop pop
+ a2 cos rx mul xOrig add % hv 2007-08-29 x->xOrig
+ a2 sin ry mul yOrig add % hv 2007-08-29 y->yOrig
+ a1 cos rx mul xOrig add %
+ a1 sin ry mul yOrig add %
+% Now arrow tip coor and base coor are on stack.
+ b pop pop pop pop % Draw arrow, and discard coordinates.
+ a2 CLW 8 div
+% change value of d (test it by looking if `` 1 1 d '' gives 2 or not )
+ 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse
+ ArcAdjust
+% resets original value of d
+ 1 1 d 2 eq { /d { sub } def } { /d { add } def } ifelse % Adjust angle to give overlap.
+} def
+%%------------------ tvz/DG/hv (2004-05-10) end -------------------%%
+%
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+%
+/RotBegin {
+ tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 } def } if
+ /TMatrix [ TMatrix CM ] cvx def
+ /a ED
+ a Rot /RAngle [ RAngle dup a add ] cvx def
+} def
+%
+/RotEnd {
+ /TMatrix [ TMatrix setmatrix ] cvx def
+ /RAngle [ RAngle pop ] cvx def
+} def
+%
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+%
+/Uput {
+ /a ED
+ add 2 div /h ED 2
+ div /w ED
+ /s a sin def
+ /c a cos def
+ /b s abs c abs 2 copy gt dup
+ /q ED
+ { pop } { exch pop } ifelse def
+ /w1 c b div w mul def
+ /h1 s b div h mul def
+ q { w1 abs w sub dup c mul abs }{ h1 abs h sub dup s mul abs } ifelse
+} def
+%
+/UUput {
+ 5 dict begin
+ /z ED
+ abs /y ED
+ /x ED
+ q { x s div c mul abs y gt }{ x c div s mul abs y gt } ifelse
+ { x x mul y y mul sub z z mul add sqrt z add }
+ { q { x s div } { x c div } ifelse abs
+ } ifelse
+ a PtoC
+ h1 add exch
+ w1 add exch
+ end
+} def
+%
+end
+%-----------------------------------------------------------------------------%
+%
+% END pstricks.pro
diff --git a/graphics/pstricks/base/dvips/pstricks97.pro b/graphics/pstricks/base/dvips/pstricks97.pro
new file mode 100644
index 0000000000..06a1f17766
--- /dev/null
+++ b/graphics/pstricks/base/dvips/pstricks97.pro
@@ -0,0 +1,225 @@
+%!
+% PostScript prologue for pstricks.tex.
+% Version 97 patch 3, 98/06/01
+% For distribution, see pstricks.tex.
+%
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/TMatrix { } def
+/RAngle { 0 } def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+/pathforall load stopped { pop pop pop pop } if z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 gt y 0 gt and { [ y x ] 1 a sub y mul } { [ 1 0 ]
+0 } ifelse setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { gsave abs CLW add /a ED a 0 dtransform round exch round exch
+2 copy idtransform exch Atan rotate idtransform pop /a ED .25 .25
+% DG/SR modification begin - Dec. 12, 1997 - Patch 2
+%itransform translate pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+itransform pathbbox /y2 ED a Div ceiling cvi /x2 ED /y1 ED a
+% DG/SR modification end
+Div cvi /x1 ED /y2 y2 y1 sub def clip newpath 2 setlinecap systemdict
+/setstrokeadjust known { true setstrokeadjust } if x2 x1 sub 1 add { x1
+% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis)
+% a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore }
+% def
+a mul y1 moveto 0 y2 rlineto stroke /x1 x1 1 add def } repeat grestore
+pop pop } def
+% DG/SR modification end
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /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
+/RoundBracket { CLW mul add dup 2 div /x ED mul /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
+/SD { 0 360 arc fill } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } /pathforall load stopped { pop pop pop pop CP /moveto
+load } if ] cvx newpath 3 1 roll T exec } def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/Diamond { /mtrx CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul
+neg /d ED /a w h Atan def /h d a sin Div h add def /w d a cos Div w add
+def } ifelse mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2
+div /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix } def
+% DG modification begin - Jan. 15, 1997
+%/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq {
+%pop } { CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+%div dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0
+%d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+%setmatrix } def
+/Triangle { /mtrx CM def translate rotate /h ED 2 div /w ED dup
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2
+div dup cos exch sin Div mul sub def mark 0 d w neg d 0 h w d 0
+d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+% DG/SR modification begin - Jun. 1, 1998 - Patch 3 (from Michael Vulis)
+% setmatrix } def
+setmatrix pop } def
+% DG/SR modification end
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/FontDot { DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/BezierNArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop
+} if n 1 sub neg 3 mod 3 add 3 mod { 0 0 /n n 1 add def } repeat f { ]
+aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/OpenBezier { BezierNArray n 1 eq { pop pop } { ArrowA n 4 sub 3 idiv { 6
+2 roll 4 2 roll curveto } repeat 6 2 roll 4 2 roll ArrowB curveto }
+ifelse } def
+/ClosedBezier { BezierNArray n 1 eq { pop pop } { moveto n 1 sub 3 idiv {
+6 2 roll 4 2 roll curveto } repeat closepath } ifelse } def
+/BezierShowPoints { gsave Points aload length 2 div cvi /n ED moveto n 1
+sub { lineto } repeat CLW 2 div SLW [ 4 4 ] 0 setdash stroke grestore }
+def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { newpath /a 4 string def /b ED /c ED /n ED cvi dup 1 lt { pop 1 }
+if /s ED s div dup 0 eq { pop 1 } if /dy ED s div dup 0 eq { pop 1 } if
+/dx ED dy div round dy mul /y0 ED dx div round dx mul /x0 ED dy div
+round cvi /y2 ED dx div round cvi /x2 ED dy div round cvi /y1 ED dx div
+round cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def /w x2 x1 sub
+0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2 div add def
+/Helvetica findfont b scalefont setfont /b b .95 mul CLW 2 div add def }
+if systemdict /setstrokeadjust known { true setstrokeadjust /t { } def }
+{ /t { transform 0.25 sub round 0.25 add exch 0.25 sub round 0.25 add
+exch itransform } bind def } ifelse gsave n 0 gt { 1 setlinecap [ 0 dy n
+div ] dy n div 2 div setdash } { 2 setlinecap } ifelse /i x1 def /f y1
+dy mul n 0 gt { dy n div 2 div h mul sub } if def /g y2 dy mul n 0 gt {
+dy n div 2 div h mul add } if def x2 x1 sub w mul 1 add dup 1000 gt {
+pop 1000 } if { i dx mul dup y0 moveto b 0 gt { gsave c i a cvs dup
+stringwidth pop /z2 ED w 0 gt {z1} {z1 z2 add neg} ifelse h 0 gt {b neg}
+{z1} ifelse rmoveto show grestore } if dup t f moveto g t L stroke /i i
+w add def } repeat grestore gsave n 0 gt
+% DG/SR modification begin - Nov. 7, 1997 - Patch 1
+%{ 1 setlinecap [ 0 dx n div ] dy n div 2 div setdash }
+{ 1 setlinecap [ 0 dx n div ] dx n div 2 div setdash }
+% DG/SR modification end
+{ 2 setlinecap } ifelse /i y1 def /f x1 dx mul
+n 0 gt { dx n div 2 div w mul sub } if def /g x2 dx mul n 0 gt { dx n
+div 2 div w mul add } if def y2 y1 sub h mul 1 add dup 1000 gt { pop
+1000 } if { newpath i dy mul dup x0 exch moveto b 0 gt { gsave c i a cvs
+dup stringwidth pop /z2 ED w 0 gt {z1 z2 add neg} {z1} ifelse h 0 gt
+{z1} {b neg} ifelse rmoveto show grestore } if dup f exch t moveto g
+exch t L stroke /i i h add def } repeat grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/RotBegin { tx@Dict /TMatrix known not { /TMatrix { } def /RAngle { 0 }
+def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle [ RAngle
+dup a add ] cvx def } def
+/RotEnd { /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle pop ]
+cvx def } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /TMatrix [ TMatrix CM ] cvx def CP 4 2 roll T moveto } def
+/PutEnd { CP /TMatrix [ TMatrix setmatrix ] cvx def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { Visible
+/IfVisible true def } if } { IfVisible { Invisible /IfVisible false def
+} if } ifelse } def
+/InitOL { /OLUnit [ 3000 3000 matrix defaultmatrix dtransform ] cvx def
+/Visible { CP OLUnit idtransform T moveto } def /Invisible { CP OLUnit
+neg exch neg exch idtransform T moveto } def /BOL { BeginOL } def
+/IfVisible true def } def
+end
+% END pstricks.pro
diff --git a/graphics/pstricks/base/generic/pst-fp.tex b/graphics/pstricks/base/generic/pst-fp.tex
new file mode 100644
index 0000000000..2d4e748193
--- /dev/null
+++ b/graphics/pstricks/base/generic/pst-fp.tex
@@ -0,0 +1,717 @@
+%% $Id: pst-fp.tex 465 2017-05-22 17:50:57Z herbert $
+%%
+%%
+%% This is file `pst-fp.tex',
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Package `pst-fp.tex'
+%%
+%% Herbert Voss <hvoss@tug.org>
+%% stolen from the fp package by Michael Mehlich
+%%
+%% 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.
+%%
+%% DESCRIPTION:
+%% `pst-fp' is a PSTricks related package for a division,
+%% multiplication and addition
+%%
+\csname PSTFPloaded\endcsname
+\let\PSTFPloaded\endinput
+%
+% Requires some packages
+\ifx\PSTricksLoaded\endinput\else\input pstricks \fi
+%
+\def\fileversion{0.05}
+\def\filedate{2010/01/17}
+\message{`pst-fp' v\fileversion, \filedate\space (hv)}
+%
+\edef\PstAtCode{\the\catcode`\@} \catcode`\@=11\relax
+
+%fixed point arithmetic with values between (including)
+% -999999999999999999.999999999999999999
+% and +999999999999999999.999999999999999999
+
+\def\pstFPadd#1#2#3{\pstFP@callc\pstFP@add#1{#2}{#3}+\relax} % #1 := #2+#3
+\def\pstFPsub#1#2#3{\pstFP@callc\pstFP@add#1{#2}{-#3}-\relax}% #1 := #2-#3
+\def\pstFPmul#1#2#3{\pstFP@callc\pstFP@mul#1{#2}{#3}} % #1 := #2*#3
+\def\pstFPdiv#1#2#3{\pstFP@callc\pstFP@div#1{#2}{#3}} % #1 := #2/#3
+
+\def\pst@int#1{\expandafter\pst@@int#1..\@nil}
+\def\pst@@int#1.#2.\@nil{#1}
+\def\pst@Int#1{%
+ \@tempdima=#1\relax%
+ \expandafter\pst@@Int\the\@tempdima\@nil}
+\def\pst@@Int#1.#2\@nil{#1}
+
+%
+\def\pstFPMul#1#2#3{\pstFP@callc\pstFP@mul#1{#2}{#3}% % #1 := int(#2*#3)
+ \edef#1{\pst@int{#1}}}%
+\def\pstFPDiv#1#2#3{\pstFP@callc\pstFP@div#1{#2}{#3}% % #1 := int(#2/#3)
+ \edef#1{\pst@int{#1}}}%
+\def\pstFPstripZeros#1#2{\pst@dimm=#1pt\relax \edef#2{\strip@pt\pst@dimm}}
+%
+\countdef\pstFP@actcounter=10 % register 0 for counter
+\ifnum\pstFP@actcounter<60\relax \pstFP@actcounter=60\fi
+
+\newcount\pstFP@xs %sign of 1st value
+\newcount\pstFP@xia%integer part of 1st value
+\newcount\pstFP@xib%integer part of 1st value
+\newcount\pstFP@xfa%fractional part of 1st value
+\newcount\pstFP@xfb%fractional part of 1st value
+
+\countdef\pstFP@ys=5 %sign of 2nd value
+\countdef\pstFP@yia=6%integer part of 2nd value
+\countdef\pstFP@yib=7%integer part of 2nd value
+\countdef\pstFP@yfa=8%fractional part of 2nd value
+\countdef\pstFP@yfb=9%fractional part of 2nd value
+
+\countdef\pstFP@xk=10 %registers for splitting 1st value
+\countdef\pstFP@xl=11
+\countdef\pstFP@xm=12
+\countdef\pstFP@xn=13
+\countdef\pstFP@xo=14
+\countdef\pstFP@xp=15
+\countdef\pstFP@xq=16
+\countdef\pstFP@xr=17
+\countdef\pstFP@xz=18
+\countdef\pstFP@xt=19
+\countdef\pstFP@xu=20
+\countdef\pstFP@xv=21
+
+\countdef\pstFP@yk=22 %registers for splitting 2nd value
+\countdef\pstFP@yl=23
+\countdef\pstFP@ym=24
+\countdef\pstFP@yn=25
+\countdef\pstFP@yo=26
+\countdef\pstFP@yp=27
+\countdef\pstFP@yq=28
+\countdef\pstFP@yr=29
+\countdef\pstFP@yz=30
+\countdef\pstFP@yt=31
+\countdef\pstFP@yu=32
+\countdef\pstFP@yv=33
+
+\newcount\pstFP@rega %auxiliary registers
+\newcount\pstFP@regb
+\countdef\pstFP@regc=36
+\countdef\pstFP@regd=37
+\countdef\pstFP@rege=38
+
+\countdef\pstFP@rs=39 %result registers
+\countdef\pstFP@ria=40
+\countdef\pstFP@rib=41
+\countdef\pstFP@rfa=42
+\countdef\pstFP@rfb=43
+
+\newcount\pstFP@regs %local auxiliary registers
+\countdef\pstFP@count=45
+\countdef\pstFP@res=46
+\countdef\pstFP@shift=47
+\newcount\pstFP@times
+\countdef\pstFP@prod=49
+
+%auxiliary macros which may be used in all of the following macros
+\newif\ifpstFP@test
+
+\def\pstFP@ignorenext#1{}
+\def\pstFP@first#1#2\relax{#1}
+\def\pstFP@swallow#1\relax{}
+%
+\def\ifpstFP@zero#1{%
+ \ifnum
+ \expandafter\ifnum\csname pstFP@#1ia\endcsname=0 0\else1\fi
+ \expandafter\ifnum\csname pstFP@#1ib\endcsname=0 0\else1\fi
+ \expandafter\ifnum\csname pstFP@#1fa\endcsname=0 0\else1\fi
+ \expandafter\ifnum\csname pstFP@#1fb\endcsname=0 0\else1\fi%
+ =0\relax
+}
+%
+%read value
+%
+\def\pstFP@correctintcounter#1\relax{%
+ {\edef\pstFP@tmp{#1}%
+ \pstFP@count=0\relax%
+ \loop%
+ \edef\pstFP@tmpa{\expandafter\pstFP@first\pstFP@tmp\noexpand\relax}%
+ \expandafter\ifx\pstFP@tmpa0\relax%
+ \advance\pstFP@count1\relax%
+ \edef\pstFP@tmp{\expandafter\pstFP@ignorenext\pstFP@tmp}%
+ \repeat%
+ \ifnum\pstFP@count>18\relax \typeout{>>>> Overflow}\fi%
+ \expandafter\if!\pstFP@tmp!%
+ \advance\pstFP@count-18\relax%
+ \pstFP@count=-\pstFP@count%
+ \loop%
+ \ifnum\pstFP@count>0\relax%
+ \pstFP@regc=\pstFP@rega%
+ \divide\pstFP@rega10\relax\multiply\pstFP@rega10\relax%
+ \advance\pstFP@regc-\pstFP@rega\multiply\pstFP@regc100000000\relax%
+ \divide\pstFP@rega10\relax%
+ \divide\pstFP@regb10\relax\advance\pstFP@regb\pstFP@regc%
+ \advance\pstFP@count-1\relax%
+ \repeat%
+ \global\pstFP@rega=\pstFP@rega%
+ \global\pstFP@regb=\pstFP@regb%
+ \else%
+ \typeout{>>>>Number too big}%
+ \fi%
+ }%
+}
+\def\pstFP@@setintcounter#1#2#3#4#5#6#7#8#9{%
+ \pstFP@regb=#1#2#3#4#5#6#7#8#9\relax%
+ \pstFP@correctintcounter%
+}
+\def\pstFP@setintcounter#1#2#3#4#5#6#7#8#9{%
+ \pstFP@rega=#1#2#3#4#5#6#7#8#9\relax%
+ \pstFP@@setintcounter%
+}
+
+\def\pstFP@@setfractcounter#1#2#3#4#5#6#7#8#9{%
+ \pstFP@regb=#1#2#3#4#5#6#7#8#9\relax%
+ \pstFP@swallow%
+}
+\def\pstFP@setfractcounter#1#2#3#4#5#6#7#8#9{%
+ \pstFP@rega=#1#2#3#4#5#6#7#8#9\relax%
+ \pstFP@@setfractcounter%
+}
+
+\def\pstFP@getsign#1\relax{%
+ {\pstFP@regs=1\relax%
+ \edef\pstFP@tmp{#1}%
+ \loop%
+ \edef\pstFP@tmpa{\expandafter\pstFP@first\pstFP@tmp\noexpand\relax}%
+ \expandafter\ifx\pstFP@tmpa-\relax%
+ \multiply\pstFP@regs-1\relax%
+ \fi%
+ \ifnum\expandafter\ifx\pstFP@tmpa-1\else0\fi\expandafter\ifx\pstFP@tmpa+1\else0\fi>0%
+ \edef\pstFP@tmp{\expandafter\pstFP@ignorenext\pstFP@tmp}%
+ \repeat%
+ \global\let\pstFP@tmp\pstFP@tmp%
+ \global\pstFP@regs=\pstFP@regs%
+ }%
+}
+
+\def\pstFP@removeleadingzeros#1\relax{%
+ {\edef\pstFP@tmp{#1}%
+ \loop%
+ \edef\pstFP@tmpa{\expandafter\pstFP@first\pstFP@tmp\noexpand\relax}%
+ \expandafter\ifx\pstFP@tmpa0\relax%
+ \edef\pstFP@tmp{\expandafter\pstFP@ignorenext\pstFP@tmp}%
+ \repeat%
+ \global\let\pstFP@tmp\pstFP@tmp%
+ }%
+}
+
+\newif\ifpstFP@nonstop
+\def\pstFP@strip#1{%
+ {\edef\pstFP@tmp{#1}%
+ \edef\pstFP@tmpb{}%
+ \ifx\pstFP@tmp\@empty\else%
+ \pstFP@nonstoptrue%
+ \loop%
+ \edef\pstFP@tmpa{\expandafter\pstFP@first\pstFP@tmp\noexpand\relax}%
+ \expandafter\ifx\pstFP@tmpa-\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa+\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa0\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa1\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa2\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa3\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa4\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa5\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa6\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa7\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa8\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \expandafter\ifx\pstFP@tmpa9\relax\edef\pstFP@tmpb{\pstFP@tmpb\pstFP@tmpa}\else%
+ \ifx\pstFP@tmpa\@empty\pstFP@nonstopfalse\else%
+ \ifx\pstFP@tmpa\space\pstFP@nonstopfalse\else%
+ \typeout{>>> Illegal character \pstFP@tmpa\space found in float number}%
+ \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+ \edef\pstFP@tmp{\expandafter\pstFP@ignorenext\pstFP@tmp}%
+ \ifx\pstFP@tmp\@empty\pstFP@nonstopfalse\fi%
+ \ifpstFP@nonstop%
+ \repeat%
+ \fi%
+ \global\let\pstFP@tmp\pstFP@tmpb%
+ }%
+}
+
+\def\pstFP@readvalue#1#2#3{%
+ % #1 macro family to catch the value
+ % #2.#3 value
+ %
+ % regular expression [+|-]*[d]_0^18.[d]*
+ %
+ \pstFP@strip{#2}%
+ %sign
+ \expandafter\pstFP@getsign\pstFP@tmp\relax%
+ \csname pstFP@#1s\endcsname=\pstFP@regs%
+ %
+ %integer part
+ \pstFP@removeleadingzeros\pstFP@tmp\relax%
+ \expandafter\pstFP@setintcounter\pstFP@tmp000000000000000000\relax%
+ \csname pstFP@#1ia\endcsname=\pstFP@rega%
+ \csname pstFP@#1ib\endcsname=\pstFP@regb%
+ %
+ %fractional part
+ \pstFP@strip{#3}%
+ \expandafter\pstFP@setfractcounter\pstFP@tmp000000000000000000\relax%
+ \csname pstFP@#1fa\endcsname=\pstFP@rega%
+ \csname pstFP@#1fb\endcsname=\pstFP@regb%
+ %
+ %correct sign
+ \ifnum\pstFP@rega=0\relax%
+ \ifnum\pstFP@regb=0\relax%
+ \expandafter\ifnum\csname pstFP@#1ib\endcsname=0\relax%
+ \expandafter\ifnum\csname pstFP@#1ia\endcsname=0\relax%
+ \csname pstFP@#1s\endcsname=1\relax%
+ \fi%
+ \fi%
+ \fi%
+ \fi%
+}
+%
+%store value in macro
+%
+\def\pstFP@store#1#2{%
+ % #1 macro
+ % #2 macro family (value) to store
+ %
+ \ifpstFP@zero{#2}%
+ \csname pstFP@#2s\endcsname=1\relax%
+ \fi%
+ \expandafter\ifnum\csname pstFP@#2s\endcsname<0\relax%
+ \edef#1{-}%
+ \else%
+ \edef#1{}%
+ \fi%
+ \expandafter\ifnum\csname pstFP@#2ia\endcsname=0\relax%
+ \expandafter\ifnum\csname pstFP@#2ib\endcsname=0\relax%
+ \edef#1{#10}%
+ \else%
+ \edef#1{#1\expandafter\the\csname pstFP@#2ib\endcsname}%
+ \fi%
+ \else%
+ \expandafter\advance\csname pstFP@#2ib\endcsname1000000000\relax%
+ \edef#1{#1\expandafter\the\csname pstFP@#2ia\endcsname\expandafter\pstFP@ignorenext\the\csname pstFP@#2ib\endcsname}%
+ \fi%
+ \expandafter\advance\csname pstFP@#2fa\endcsname1000000000\relax%
+ \expandafter\advance\csname pstFP@#2fb\endcsname1000000000\relax%
+ \edef#1{#1\noexpand.\expandafter\pstFP@ignorenext\the\csname pstFP@#2fa\endcsname\expandafter\pstFP@ignorenext\the\csname pstFP@#2fb\endcsname}%
+}
+%macros to expand some arguments
+%
+\def\pstFP@callc#1#2#3#4{%
+ % #1 macro to call
+ % #2 macro, which gets the result
+ % #3 1st value
+ % #4 2nd value
+ % expand the values and split them into the integer and the fractional parts
+ \edef\next{\noexpand#1\noexpand#2#3..\noexpand\relax#4..\noexpand\relax}%
+ \next%
+}
+%
+\def\pstFP@divten#1{%
+ \expandafter\pstFP@regc\csname pstFP@#1ia\endcsname%
+ \expandafter\divide\csname pstFP@#1ia\endcsname10\relax%
+ \expandafter\pstFP@regb\csname pstFP@#1ia\endcsname%
+ \multiply\pstFP@regb10\relax%
+ \advance\pstFP@regc-\pstFP@regb%
+ \multiply\pstFP@regc100000000\relax%
+ %
+ \expandafter\pstFP@rega\csname pstFP@#1ib\endcsname%
+ \expandafter\divide\csname pstFP@#1ib\endcsname10\relax%
+ \expandafter\pstFP@regb\csname pstFP@#1ib\endcsname%
+ \multiply\pstFP@regb10\relax%
+ \advance\pstFP@rega-\pstFP@regb%
+ \multiply\pstFP@rega100000000\relax%
+ \expandafter\advance\csname pstFP@#1ib\endcsname\pstFP@regc%
+ %
+ \expandafter\pstFP@regc\csname pstFP@#1fa\endcsname%
+ \expandafter\divide\csname pstFP@#1fa\endcsname10\relax%
+ \expandafter\pstFP@regb\csname pstFP@#1fa\endcsname%
+ \multiply\pstFP@regb10\relax%
+ \advance\pstFP@regc-\pstFP@regb%
+ \multiply\pstFP@regc100000000\relax%
+ \expandafter\advance\csname pstFP@#1fa\endcsname\pstFP@rega%
+ %
+ \expandafter\divide\csname pstFP@#1fb\endcsname10\relax%
+ \expandafter\advance\csname pstFP@#1fb\endcsname\pstFP@regc%
+}
+%
+\def\pstFP@multen#1{%
+ \expandafter\multiply\csname pstFP@#1ia\endcsname10\relax%
+ \expandafter\ifnum\csname pstFP@#1ib\endcsname<100000000\relax%
+ \else%
+ \expandafter\pstFP@regc\csname pstFP@#1ib\endcsname%
+ \divide\pstFP@regc100000000%
+ \expandafter\advance\csname pstFP@#1ia\endcsname\pstFP@regc%
+ \multiply\pstFP@regc100000000%
+ \expandafter\advance\csname pstFP@#1ib\endcsname-\pstFP@regc%
+ \fi%
+ \expandafter\multiply\csname pstFP@#1ib\endcsname10\relax%
+ \expandafter\ifnum\csname pstFP@#1fa\endcsname<100000000\relax%
+ \else%
+ \expandafter\pstFP@regc\csname pstFP@#1fa\endcsname%
+ \divide\pstFP@regc100000000%
+ \expandafter\advance\csname pstFP@#1ib\endcsname\pstFP@regc%
+ \multiply\pstFP@regc100000000%
+ \expandafter\advance\csname pstFP@#1fa\endcsname-\pstFP@regc%
+ \fi%
+ \expandafter\multiply\csname pstFP@#1fa\endcsname10\relax%
+ \expandafter\ifnum\csname pstFP@#1fb\endcsname<100000000\relax%
+ \else%
+ \expandafter\pstFP@regc\csname pstFP@#1fb\endcsname%
+ \divide\pstFP@regc100000000%
+ \expandafter\advance\csname pstFP@#1fa\endcsname\pstFP@regc%
+ \multiply\pstFP@regc100000000%
+ \expandafter\advance\csname pstFP@#1fb\endcsname-\pstFP@regc%
+ \fi%
+ \expandafter\multiply\csname pstFP@#1fb\endcsname10\relax%
+}
+%
+\def\pstFP@counttimes{%
+ {\global\pstFP@times=0\relax%
+ \loop%
+ \ifnum%
+ \ifnum\pstFP@xia>\pstFP@yia1%
+ \else\ifnum\pstFP@xia<\pstFP@yia0%
+ \else%
+ \ifnum\pstFP@xib>\pstFP@yib1%
+ \else\ifnum\pstFP@xib<\pstFP@yib0%
+ \else%
+ \ifnum\pstFP@xfa>\pstFP@yfa1%
+ \else\ifnum\pstFP@xfa<\pstFP@yfa0%
+ \else%
+ \ifnum\pstFP@xfb>\pstFP@yfb1%
+ \else\ifnum\pstFP@xfb<\pstFP@yfb0%
+ \else%
+ 1%
+ \fi\fi%
+ \fi\fi%
+ \fi\fi%
+ \fi\fi%
+ =1\relax%
+ \global\advance\pstFP@times1\relax%
+ \global\advance\pstFP@xfb-\pstFP@yfb%
+ \ifnum\pstFP@xfb<0\relax%
+ \global\advance\pstFP@xfb1000000000\relax%
+ \global\advance\pstFP@xfa-1\relax%
+ \fi%
+ \global\advance\pstFP@xfa-\pstFP@yfa%
+ \ifnum\pstFP@xfa<0\relax%
+ \global\advance\pstFP@xfa1000000000\relax%
+ \global\advance\pstFP@xib-1\relax%
+ \fi%
+ \global\advance\pstFP@xib-\pstFP@yib%
+ \ifnum\pstFP@xib<0\relax%
+ \global\advance\pstFP@xib1000000000\relax%
+ \global\advance\pstFP@xia-1\relax%
+ \fi%
+ \global\advance\pstFP@xia-\pstFP@yia%
+ \repeat%
+ }%
+}
+%
+\def\pstFP@add#1#2.#3.#4\relax#5.#6.#7\relax#8\relax{%
+ % #1 macro, which gets the result
+ % #2 integer part of 1st value
+ % #3 fractional part of 1st value
+ % #4 dummy to swallow everthing after the 2nd '.'
+ % #5 integer part of 2nd value
+ % #6 fractional part of 2nd value
+ % #7 dummy to swallow everthing after the 2nd '.'
+ %
+ {\pstFP@readvalue{x}{#2}{#3}%
+ \pstFP@readvalue{y}{#5}{#6}%
+ %
+ \ifnum\pstFP@xs=\pstFP@ys%
+ \advance\pstFP@xfb\pstFP@yfb%
+ \advance\pstFP@xfa\pstFP@yfa%
+ \ifnum\pstFP@xfb<1000000000\relax\else%
+ \advance\pstFP@xfb-1000000000\relax%
+ \advance\pstFP@xfa1\relax%
+ \fi%
+ \advance\pstFP@xib\pstFP@yib%
+ \ifnum\pstFP@xfa<1000000000\relax\else%
+ \advance\pstFP@xfa-1000000000\relax%
+ \advance\pstFP@xib1\relax%
+ \fi%
+ \advance\pstFP@xia\pstFP@yia%
+ \ifnum\pstFP@xib<1000000000\relax\else%
+ \advance\pstFP@xib-1000000000\relax%
+ \advance\pstFP@xia1\relax%
+ \fi%
+ \ifnum\pstFP@xia<1000000000\relax\else%
+ \pstFP@errmessage{Overflow}%
+ \fi%
+ \pstFP@store\pstFP@tmp{x}%
+ \else%
+ \advance\pstFP@xfb-\pstFP@yfb%
+ \ifnum\pstFP@xfb<0\relax%
+ \advance\pstFP@yfa1\relax%
+ \advance\pstFP@xfb1000000000\relax%
+ \fi%
+ \advance\pstFP@xfa-\pstFP@yfa%
+ \ifnum\pstFP@xfa<0\relax%
+ \advance\pstFP@yib1\relax%
+ \advance\pstFP@xfa1000000000\relax%
+ \fi%
+ \advance\pstFP@xib-\pstFP@yib%
+ \ifnum\pstFP@xib<0\relax%
+ \advance\pstFP@yia1\relax%
+ \advance\pstFP@xib1000000000\relax%
+ \fi%
+ \advance\pstFP@xia-\pstFP@yia%
+ \ifnum\pstFP@xia<0\relax%
+ \pstFP@xs=-\pstFP@xs%
+ \ifnum\pstFP@xfb=0\relax\else%
+ \advance\pstFP@xfb-1000000000\relax\pstFP@xfb=-\pstFP@xfb%
+ \advance\pstFP@xfa1\relax%
+ \fi%
+ \ifnum\pstFP@xfa=0\relax\else%
+ \advance\pstFP@xfa-1000000000\relax\pstFP@xfa=-\pstFP@xfa%
+ \advance\pstFP@xib1\relax%
+ \fi%
+ \ifnum\pstFP@xib=0\relax\else%
+ \advance\pstFP@xib-1000000000\relax\pstFP@xib=-\pstFP@xib%
+ \advance\pstFP@xia1\relax%
+ \fi%
+ \relax\pstFP@xia=-\pstFP@xia%
+ \fi%
+ \pstFP@store\pstFP@tmp{x}%
+ \fi%
+ \global\let\pstFP@tmp\pstFP@tmp%
+ }%
+% \pstFPstripZeros\pstFP@tmp{#1}%
+ \let#1\pstFP@tmp
+}
+
+
+\def\pstFP@div#1#2.#3.#4\relax#5.#6.#7\relax{%
+ % #1 macro, which gets the result
+ % #2 integer part of 1st value
+ % #3 fractional part of 1st value
+ % #4 dummy to swallow everthing after the 2nd '.'
+ % #5 integer part of 2nd value
+ % #6 fractional part of 2nd value
+ % #7 dummy to swallow everthing after the 2nd '.'
+ %
+ % algorithmic idea (for x>0, y>0)
+ % - %determine \pstFP@shift such that y*10^\pstFP@shift <100000000<=y*10^(\pstFP@shift+1)
+ % - %determine \pstFP@shift' such that x*10^\pstFP@shift'<100000000<=x*10^(\pstFP@shift+1)
+ % - x=x*\pstFP@shift'
+ % - y=y*\pstFP@shift
+ % - \pstFP@shift=\pstFP@shift-\pstFP@shift'
+ % - res=0
+ % - while y>0 %fixed-point representation!
+ % - \pstFP@times=0
+ % - while x>y
+ % - \pstFP@times=\pstFP@times+1
+ % - x=x-y
+ % - end
+ % - y=y/10
+ % - res=10*res+\pstFP@times/1000000000
+ % - end
+ % - %shift the result according to \pstFP@shift
+ %
+ {\pstFP@readvalue{x}{#2}{#3}%
+ \pstFP@readvalue{y}{#5}{#6}%
+ %
+ %sign
+ \multiply\pstFP@xs\pstFP@ys%
+ \pstFP@rs=\pstFP@xs%
+ %
+ %compute division
+ \ifpstFP@zero{y}%
+ \typeout{>>>>Division by zero}%
+ \else%
+ \ifpstFP@zero{x}\def\next##1{\edef\pstFP@tmp{0}}\else\def\next##1{##1}\fi%
+ \next%
+ {\pstFP@shift=0\relax%
+ \loop%
+ \ifnum\pstFP@yia<100000000\relax%
+ \pstFP@multen{y}%
+ \advance\pstFP@shift1\relax%
+ \repeat%
+ \loop%
+ \ifnum\pstFP@xia<100000000\relax%
+ \pstFP@multen{x}%
+ \advance\pstFP@shift-1\relax%
+ \repeat%
+ \pstFP@ria=0\pstFP@rib=0\pstFP@rfa=0\pstFP@rfb=0\relax%
+ \loop%
+ \ifpstFP@zero{y}\else%
+ \pstFP@counttimes%divides x by \pstFP@times*y
+ \pstFP@divten{y}%
+ \pstFP@multen{r}%
+ \advance\pstFP@rfb\pstFP@times%
+ \ifnum\pstFP@rfb<1000000000\relax\else%
+ \advance\pstFP@rfa1\advance\pstFP@rfb-1000000000\relax%
+ \ifnum\pstFP@rfa<1000000000\relax\else%
+ \advance\pstFP@rib1\advance\pstFP@rfa-1000000000\relax%
+ \ifnum\pstFP@rib<1000000000\relax\else%
+ \advance\pstFP@ria1\advance\pstFP@rib-1000000000\relax%
+ \fi%
+ \fi%
+ \fi%
+ \repeat%
+ \loop%
+ \ifnum\pstFP@shift>17%
+ \advance\pstFP@shift-1\relax%
+ \ifnum\pstFP@ria<100000000\else\pstFP@ria=-1\fi%
+ \ifnum\pstFP@ria<0\pstFP@ria=-1\fi%
+ \pstFP@multen{r}%
+ \repeat%
+ \ifnum\pstFP@ria<1000000000\else\pstFP@ria=-1\fi%
+ \loop%
+ \ifnum\pstFP@shift<17%
+ \advance\pstFP@shift1\relax%
+ \pstFP@divten{r}%
+ \repeat%
+ \ifnum\pstFP@ria<0\relax%
+ \typeout{>>>>Overflow}%
+ \else%
+ \pstFP@store\pstFP@tmp{r}%
+ \fi%
+ }%
+ \fi%
+ %
+ \global\let\pstFP@tmp=\pstFP@tmp%
+ %
+ }%
+% \pstFPstripZeros\pstFP@tmp{#1}%
+ \let#1\pstFP@tmp
+}
+%multiply two values
+
+\def\pstFP@firstnine#1#2#3#4#5#6#7#8#9{%
+ \pstFP@res=#1#2#3#4#5#6#7#8#9\relax%
+}
+\def\pstFP@@ninesplit#1\relax#2\end#3{%
+ #1%
+ \edef#3{#2}%
+}
+\def\pstFP@ninesplit#1{%
+ \edef#1{\expandafter\pstFP@firstnine\pstFP@rd}%
+ \expandafter\pstFP@@ninesplit#1\end#1\relax%
+}
+
+\def\pstFP@split#1#2#3#4{%
+ % #1 highest three digits
+ % #2 medium three digits
+ % #3 least three digits
+ % #4 counter
+ \pstFP@regc=#4%
+ \divide\pstFP@regc1000000\relax%
+ #1=\pstFP@regc%
+ \multiply\pstFP@regc-1000000\relax\advance\pstFP@regc#4%
+ #3=\pstFP@regc%
+ \divide\pstFP@regc1000\relax%
+ #2=\pstFP@regc%
+ \multiply\pstFP@regc-1000\relax\advance\pstFP@regc#3%
+ #3=\pstFP@regc%
+}
+
+\def\pstFP@@mul#1#2#3{%
+ \pstFP@regc=\csname pstFP@x#1\endcsname%
+ \multiply\pstFP@regc\csname pstFP@y#2\endcsname%
+ \advance\pstFP@prod\pstFP@regc%
+ %
+ \ifx#3\relax%
+ \let\next=\relax%
+ \else%
+ \let\next=\pstFP@@mul%
+ \fi%
+ \next#3%
+}
+
+\def\pstFP@saveshift{%
+ % save rightmost three digits
+ \pstFP@regc=\pstFP@prod%
+ \divide\pstFP@prod1000\relax%
+ \multiply\pstFP@prod1000\relax%
+ \advance\pstFP@regc-\pstFP@prod%
+ \advance\pstFP@regc1000\relax%
+ \edef\pstFP@rd{\expandafter\pstFP@ignorenext\the\pstFP@regc\pstFP@rd}%
+ %
+ \divide\pstFP@prod1000\relax%
+}
+
+\def\pstFP@mul#1#2.#3.#4\relax#5.#6.#7\relax{%
+ % #1 macro, which gets the result
+ % #2 integer part of 1st value
+ % #3 fractional part of 1st value
+ % #4 dummy to swallow everthing after the 2nd '.'
+ % #5 integer part of 2nd value
+ % #6 fractional part of 2nd value
+ % #7 dummy to swallow everthing after the 2nd '.'
+ %
+ % split value in various parts
+ % x y = 123 456 789 123 456 789 . 123 456 789 123 456 789
+ % -> xk xl xm xn xo xp xq xr xs xt xu xv
+ % -> yk yl ym yn yo yp yq yr ys yt yu yv
+ % multiply these parts and save the result wrt the necessary shifts
+ %
+ {\pstFP@readvalue{x}{#2}{#3}%
+ \pstFP@readvalue{y}{#5}{#6}%
+ %
+ %sign
+ \multiply\pstFP@xs\pstFP@ys%
+ \pstFP@rs=\pstFP@xs%
+ %
+ % split parts
+ \pstFP@split\pstFP@xk\pstFP@xl\pstFP@xm\pstFP@xia\pstFP@split\pstFP@xn\pstFP@xo\pstFP@xp\pstFP@xib%
+ \pstFP@split\pstFP@xq\pstFP@xr\pstFP@xz\pstFP@xfa\pstFP@split\pstFP@xt\pstFP@xu\pstFP@xv\pstFP@xfb%
+ \pstFP@split\pstFP@yk\pstFP@yl\pstFP@ym\pstFP@yia\pstFP@split\pstFP@yn\pstFP@yo\pstFP@yp\pstFP@yib%
+ \pstFP@split\pstFP@yq\pstFP@yr\pstFP@yz\pstFP@yfa\pstFP@split\pstFP@yt\pstFP@yu\pstFP@yv\pstFP@yfb%
+ %
+ \pstFP@prod=0\relax%
+ \edef\pstFP@rd{}%
+ %
+ %compute result
+ \pstFP@@mul vv \relax\pstFP@saveshift%
+ \pstFP@@mul vu uv \relax\pstFP@saveshift%
+ \pstFP@@mul uu vt tv \relax\pstFP@saveshift%
+ \pstFP@@mul ut tu vz zv \relax\pstFP@saveshift%
+ \pstFP@@mul tt zu uz rv vr \relax\pstFP@saveshift%
+ \pstFP@@mul zt tz ur ru vq qv \relax\pstFP@saveshift%
+ \pstFP@@mul zz rt tr uq qu vp pv \relax\pstFP@saveshift%
+ \pstFP@@mul zr rz tq qt up pu vo ov \relax\pstFP@saveshift%
+ \pstFP@@mul rr qz zq tp pt uo ou vn nv \relax\pstFP@saveshift%
+ \pstFP@@mul rq qr zp pz to ot un nu vm mv \relax\pstFP@saveshift%
+ \pstFP@@mul qq rp pr zo oz tn nt um mu vl lv \relax\pstFP@saveshift%
+ \pstFP@@mul qp pq ro or zn nz tm mt ul lu kv vk \relax\pstFP@saveshift%
+ \pstFP@@mul pp oq qo rn nr zm mz tl lt ku uk \relax\pstFP@saveshift%
+ \pstFP@@mul op po nq qn rm mr zl lz tk kt \relax\pstFP@saveshift%
+ \pstFP@@mul oo pn np mq qm rl lr kz zk \relax\pstFP@saveshift%
+ \pstFP@@mul no on mp pm lq ql kr rk \relax\pstFP@saveshift%
+ \pstFP@@mul nn mo om pl lp qk kq \relax\pstFP@saveshift%
+ \pstFP@@mul mn nm lo ok pk kp \relax\pstFP@saveshift%
+ \pstFP@@mul mm ln nl ko ok \relax\pstFP@saveshift%
+ \pstFP@@mul lm ml kn nk \relax\pstFP@saveshift%
+ \pstFP@@mul ll km mk \relax\pstFP@saveshift%
+ \pstFP@@mul kl lk \relax\pstFP@saveshift%
+ \pstFP@@mul kk \relax\pstFP@saveshift\pstFP@saveshift%
+ \pstFP@ninesplit\pstFP@rd%
+ \ifnum\pstFP@res=0\relax%
+ \pstFP@ninesplit\pstFP@rd%
+ \ifnum\pstFP@res=0\relax%
+ \pstFP@ninesplit\pstFP@rd\pstFP@ria=\pstFP@res%
+ \pstFP@ninesplit\pstFP@rd\pstFP@rib=\pstFP@res%
+ \pstFP@ninesplit\pstFP@rd\pstFP@rfa=\pstFP@res%
+ \pstFP@ninesplit\pstFP@rd\pstFP@rfb=\pstFP@res%
+ \pstFP@store\pstFP@tmp{r}%
+ \else\typeout{pstFPmul: Overflow}\fi%
+ \else\typeout{pstFPmul: Overflow}\fi%
+ \global\let\pstFP@tmp\pstFP@tmp}%
+% \pstFPstripZeros\pstFP@tmp{#1}%
+ \let#1\pstFP@tmp
+}
+%
+\catcode`\@=\PstAtCode\relax
+%
+%% END: pst-fp.tex
+\endinput
diff --git a/graphics/pstricks/base/generic/pst-key.tex b/graphics/pstricks/base/generic/pst-key.tex
new file mode 100644
index 0000000000..8c1204bc17
--- /dev/null
+++ b/graphics/pstricks/base/generic/pst-key.tex
@@ -0,0 +1,101 @@
+%% $Id: pst-key.tex 446 2017-04-19 11:40:55Z herbert $
+%%
+%% 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/graphics/pstricks/base/generic/pstricks-tex.def b/graphics/pstricks/base/generic/pstricks-tex.def
new file mode 100644
index 0000000000..d5e7311030
--- /dev/null
+++ b/graphics/pstricks/base/generic/pstricks-tex.def
@@ -0,0 +1,85 @@
+%% $Id: pstricks-tex.def 1044 2019-04-11 09:32:09Z herbert $
+%% pstricks-tex.def
+%% Copyright 2017- 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.
+%
+ \newwrite\@unused
+ \def\typeout#1{\immediate\write\@unused{#1}}%
+ \typeout{we are running tex and have to make it etex and latex compatible ...}%
+ \ifx\eTeXversion\@undefined
+ \gdef\ch@ck#1#2#3{\ifnum\count1#1<#2 \else\errmessage{No room for a new #3}\fi}
+ \countdef\allocationnumber=21
+ \chardef\sixt@@n=16
+ \def\alloc@#1#2#3#4#5{\global\advance\count1#1\@ne
+ \ch@ck#1#4#2% make sure there's still room
+ \allocationnumber\count1#1%
+ \global#3#5\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+ \alloc@7\write\chardef\sixt@@n\@unused
+ \else
+ \def\e@alloc#1#2#3#4#5#6{%
+ \global\advance#3\@ne
+ \e@ch@ck{#3}{#4}{#5}#1%
+ \allocationnumber#3\relax
+ \global#2#6\allocationnumber
+ \wlog{\string#6=\string#1\the\allocationnumber}}%
+ \gdef\e@ch@ck#1#2#3#4{%
+ \ifnum#1<#2\else
+ \ifnum#1=#2\relax
+ \global#1\@cclvi
+ \ifx\count#4\global\advance#1 10 \fi
+ \fi
+ \ifnum#1<#3\relax
+ \else
+ \errmessage{No room for a new \string#4}%
+ \fi
+ \fi}%
+ \fi
+%
+ \newif\ifpst@psfonts \pst@psfontsfalse % defined in pstricks.sty
+ \newif\ifpst@useCalc \pst@useCalcfalse % defined in pstricks.sty
+%
+ \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\@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
+ \def\endtabular{\crcr\egroup\egroup $\egroup}
+ \def\@width{width}% needed by pst-node
+ \def\@tfor#1:={\@tf@r#1 }
+ \long\def\@tf@r#1#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\space\else
+ \@tforloop#2\@nil\@nil\@@#1{#3}\fi}%
+ \long\def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
+ \expandafter\@fornoop \else
+ #4\relax\expandafter\@tforloop\fi#2\@@#3{#4}}
+ \long\def\@break@tfor#1\@@#2#3{\csname fi\endcsname\csname fi\endcsname}
+%%
+%% END: pstricks-tex.def
diff --git a/graphics/pstricks/base/generic/pstricks-xetex.def b/graphics/pstricks/base/generic/pstricks-xetex.def
new file mode 100644
index 0000000000..8e9efc2026
--- /dev/null
+++ b/graphics/pstricks/base/generic/pstricks-xetex.def
@@ -0,0 +1,34 @@
+%% $Id: pstricks-xetex.def 872 2018-12-21 20:39:31Z herbert $
+%%
+%% Copyright 2019- 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.
+%
+% The xdvipdfmx driver does not support all node macros. In the following
+% there are alternatives defined:
+%
+%% \ncput -> \NCput
+%
+\def\NCput{\pst@object{NCput}}
+\def\NCput@i#1{%
+ \begingroup
+ \use@par
+ \pst@getcoor{@@A}\pst@tempA% defined by \pcline and \ncline
+ \pst@getcoor{@@B}\pst@tempB
+ \if@star\def\next{\rput*}\else\def\next{\rput}\fi
+ \next(!
+ \pst@tempA /yA ED /xA ED
+ \pst@tempB /yB ED /xB ED
+ xA xB add 2 div
+ yA yB add 2 div \tx@UserCoor){#1}
+ \endgroup
+ \ignorespaces
+}
+%%
+%% END: pstricks-xetex.def
diff --git a/graphics/pstricks/base/generic/pstricks.con b/graphics/pstricks/base/generic/pstricks.con
new file mode 100644
index 0000000000..83bba1f7bb
--- /dev/null
+++ b/graphics/pstricks/base/generic/pstricks.con
@@ -0,0 +1,360 @@
+%% $Id: pstricks.con 617 2017-10-04 16:16:21Z herbert $
+%% BEGIN: pstricks.con (for dvips driver)
+%%
+%% Configuration file for PSTricks
+%%
+%% Version 1.00 (2010/01/16)
+%%
+%% 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}}% hv write it without a preceding space
+\def\pstverbscale{SDict begin normalscale end}
+\def\pstnodescale{}
+% 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
+
+%%
+%%%%%%%%%%%%%%%%%%% !! GENERAL INSTRUCTIONS !! %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Because there are no standards for dvi-to-PS driver \special's,
+some driver-dependent commands must be defined in this file.
+
+Possibly correct definitions for some dvi drivers are given below.
+Copy the section for the driver you want to use to the indicated place
+near the beginning of the file, replacing any other definitions you
+might find there.
+
+When changing drivers, you may need to remake the header file.
+
+See the PSTricks read-me file for further installation instructions.
+
+Please report good and bad experiences with dvi-to-PS drivers,
+along with the definitions of these commands that worked
+for you, to tvz@Princeton.EDU. Thanks.
+
+
+%%%%%%%%%%%%%%%% DESCRIPTION OF CONFIGURATION DEFINITIONS %%%%%%%%%%%%%%%
+
+Here are the commands that must be defined in this file:
+
+ \pstverb{} - The argument is included as verbatim PostScript,
+ grouped by save and restore. The coordinate system
+ should be square, not rotated, and with the origin
+ at TeX's currentpoint.
+
+ \pstVerb{} - The argument is included as verbatim PostScript, not
+ grouped by (g)save and (g)restore. The currentpoint
+ should be TeX's currentpoint.
+
+ \pstunit - The units used by driver for graphics included with
+ \pstverb. Probably 1bp or 1sp.
+
+ \pstverbscale - The PostScript code that scales the coordinate system
+ from that in effect with \pstVerb to that in effect
+ with \pstverb. Should not translate to the currentpoint.
+
+ \pstrotate - The PostScript code that takes a number off the stack
+ and rotates the axes properly. I.e.,
+ \pstVerb{angle \pstrotate} is used to begin rotations.
+
+ \pstheader{} - The argument is a header file (e.g., .pro file).
+ If your driver does not support such a special, then
+ the command might just remind you to include the header
+ when printing. You can use PSTricks without a header,
+ in which case it does not matter how you define
+ \pstheader. See read-me.pst for details.
+ If you cannot change the default directory where your
+ driver looks for header files, and you cannot write to
+ that directory, then you include the path for your
+ PSTricks header files.
+ E.g., \def\pstheader#1{\special{header=~/tex/#1}}.
+
+ \pstdriver - The name of the driver.
+
+
+%%%%%%%%% !! HOW TO MAKE A TEX FORMAT WITH PSTRICKS PRELOADED !! %%%%%%%%
+
+See your local TeX documentation for instructions on creating a TeX format.
+
+Before making the format, be sure that this configuration file is correct.
+It will be read only when creating the format, and not with every job.
+
+If you are not using header files, there are no more special instructions.
+
+Special instructions when using header files:
+
+ - If you want to include supplementary PSTricks files (e.g., pst-node.tex),
+ add \input commands in the customization section above.
+
+ - If your definition of \pstheader is, e.g.
+
+ \def\pstheader#1{\special{\header=#1}}
+
+ then change it to
+
+ \def\pstheader#1{%
+ \expandafter\everyjob\expandafter{\the\everyjob
+ \special{header=#1}}}
+
+ and put your original definition in the customization section, AFTER
+ any \input commands. E.g., the customization section might look like:
+
+ \pstcustomize
+ \input pst-node.tex
+ \input pst-coil.tex
+ \def\pstheader#1{\special{header=#1}}
+
+ - Input pstricks.tex at the appropriate time when creating the format.
+ E.g., when initex stops running:
+ *\input pstricks
+ *\dump
+
+
+%%%%%%%%%% !! CONFIGURATIONS FOR SOME DRIVERS !! %%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%% **********************************************************************
+%% ***** Rokicki's dvips ***** Rokicki's dvips ***** Rokicki's dvips ****
+%% **********************************************************************
+%% Life is bliss with Rokicki's dvips (tested with v5.396, v5.47, 5.491):
+%%
+\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}
+\def\pstheader#1{\special{header=#1}}
+%%
+%% 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}
+%%
+%% If using a version before 5.47, clipping may not work. You can
+%% try the following definition of \pstverb:
+%\def\pstverb#1{\special{ps: @beginspecial #1 @endspecial}}
+%% or change "{initclip}ifelse" to "if" in the definition of @setspecial
+%% in dvips' special.pro.
+%%
+%% ****************** END Rokicki's dvips *****************************
+
+
+%% **********************************************************************
+%% **** Arbortext's dvips *** Arbortext's dvips *** Arbortext's dvips ***
+%% **********************************************************************
+%% Thanks to Wolfgang Sienel:
+%%
+\def\pstdriver{Arbortext's dvips}
+\def\pstverb#1{%
+ \special{ps::[asis] 0 SPB /ChartCheckPoint save def
+ Xpos Ypos translate #1 ChartCheckPoint restore 0 SPE}}
+\def\pstunit{1bp}
+\def\pstVerb#1{\special{ps:: #1}}
+\def\pstverbscale{}
+\def\pstrotate{CP CP translate 3 -1 roll rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{**********************************************************}%
+ \typeout{** Don't forget to include #1 when printing:}%
+ \typeout{** \space\space dvips -PRO #1 myfile}%
+ \typeout{**********************************************************}}
+%%
+%% Comments by Wolfgang on header files:
+%% Normally the standard prolog file is downloaded once to the printer
+%% with psload.ps (the initializing file for your TeX-printer) before
+%% printing TeX-documents. If you don't make any changes to psload.ps
+%% you have to type dvips -PRO PATH/pstricks.pro myfile (-PRO just
+%% works for UNIX systems. I don't have any idea about other systems).
+%% If psload.ps was not downloaded to the printer you have to append
+%% pstricks.pro to the standard prolog file dvips.pro. In this case
+%% invoke dvips as always. Note that after hitting the enter key you
+%% have to specify the option download all prolog in both cases. If you
+%% are frequently using pstricks you might want to change psload.ps. In
+%% this case contact your local TeX-guru and ask him politely to do this
+%% for you. Attention: If psload.ps is getting too big you may run into
+%% trouble with printer memory!
+%%
+%% ****************** END Arbortext's dvips *****************************
+
+
+%% **********************************************************************
+%% **** Textures *** Textures *** Textures *** Textures *** Textures ****
+%% **********************************************************************
+%% These have been tested with v1.3. It is nice to have a PostScript
+%% screen previewer, such as TScript (USA: 1-617-734-9700). (The
+%% Textures preview window will not show the PSTricks graphics.)
+%%
+\def\pstdriver{Textures}
+\def\pstunit{1bp}
+\def\pstverb#1{\special{postscript /TX@Save save def #1 TX@save restore}}
+\def\pstVerb#1{\special{postscript grestore #1 gsave}}
+\def\pstverbscale{Mag 1000 div 72.27 72 div mul dup neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+%% \pstVerb does not define the currentpoint properly. As a workaround,
+%% insert the following lines in the customization section above.
+%%
+%% \def\pst@Verb#1{%
+%% \special{postscript \pst@dict /sps { moveto /Mag ed } def
+%% userdict begin}%
+%% \special{postscript #1 end gsave}}
+%%
+%% Textures does not support header files.
+%% However, it may still be worth using a header file for increased speed.
+%% Also, some macros can overload Textures 1.3 when not used with a header
+%% file. You can include the header file pstricks.pro by saving the
+%% PostScript output to a file and inserting the pstricks.pro with an
+%% editor. Probably a better solution is to append pstricks.pro to a
+%% copy of the laserprep, and, by changing file names of the modified
+%% laserprep and the original laserprep, use the laserprep with pstricks.pro
+%% whenever you are printing pstricks documents.
+\def\pstheader#1{%
+ \typeout{******************************************}%
+ \typeout{*** Include header file #1!! ***}%
+ \typeout{******************************************}}
+%%
+%% ****************** END Textures **************************************
+
+
+%% **********************************************************************
+%% ***** dvi2ps ***** dvi2ps ***** dvi2ps ***** dvi2ps ***** dvi2ps *****
+%% **********************************************************************
+%% I.e., dvi2ps, v2.xx. There are lot's of such things around.
+%% This probably doesn't work. Considering upgrading to Rokicki's dvips.
+%%
+\def\pstdriver{dvi2ps v2.xx}
+\def\pstunit{1pt}
+\def\pstverb#1{ pstext="save currentpoint translate
+ Resolution 72.27 div neg scale #1 restore" \space}
+\def\pstVerb#1{ pstext="#1" \space}
+\def\pstverbscale{Resolution 72.27 div neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}
+%%
+%% ***************************** END dvi2ps *****************************
+
+
+%% **********************************************************************
+%% ***** dvi3ps ***** dvi3ps ***** dvi3ps ***** dvi3ps ***** dvi3ps *****
+%% **********************************************************************
+%% I.e., dvi2ps, version 3.xx, by Kevin Coombes.
+%% This has not been tested. Consider upgrading to Rokicki's dvips.
+%%
+\def\pstdriver{dvi2ps v3.xx}
+\def\pstunit{1bp}
+\def\pstverb#1{pstext="#1"}
+% \def\pstVerb#1{%
+% \special{pstext="@endspecial #1 @beginspecial @setspecial"}} % v3.0
+\def\pstVerb#1{\special{psraw="#1"}} % v3.3
+\def\pstverbscale{Resolution 72.27 div neg scale}
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}
+%%
+%% ******************* END dvi3ps ***************************************
+
+
+%% **********************************************************************
+%% **** OzTeX **** OzTeX **** OzTeX **** OzTeX **** OzTeX **** OzTeX ****
+%% **********************************************************************
+%% Only the pure graphics objects are supported for OzTeX.
+%% No color, rotation, clipping, nodes and node connections, overlays, etc.
+%% Also, \rput cannot be used with \SpecialCoor.
+%%
+%% The reason is given in the documentation for Version 1.3, September 1990:
+%%
+%% OzTeX generates highly efficient PostScript code but it does so at
+%% the expense of some \special functionality. Many DVI-to-PostScript
+%% translators allow you to do things like use one \verb|\special| to start
+%% rotating TeX text and another to stop the rotation. The way OzTeX
+%% interprets a DVI page makes this impossible.
+%%
+%% If using the header file, you should copy pstricks.pro to global.ps, in
+%% the same directory as your dvi file.
+%%
+\def\pstdriver{OzTeX}
+\def\pstverb#1{\special{null.ps #1}}
+\def\pstunit{1bp}
+\def\pstVerb#1{%
+ \typeout{PSTRICKS WARNING:}%
+ \typeout{\space\space You are using features not supported by OzTeX.}%
+ \typeout{\space\space These will be ignored.}%
+ \gdef\pstVerb##1{}}
+\def\pstverbscale{}
+\def\pstrotate{}
+\def\pstheader#1{%
+ \typeout{******************************************************}
+ \typeout{Don't forget to include the header file #1!!}
+ \typeout{******************************************************}}
+%%
+%% ************************* END OzTeX **********************************
+
+
+%% **********************************************************************
+%% ***** DirectTeX ***** DirectTeX ***** DirectTeX ***** DirectTeX ******
+%% **********************************************************************
+%% DirectTeX is for the Macintosh. These has been tested unsuccessfully,
+%% apparently due to a problem with DirectTeX.
+%%
+\def\pstdriver{DirectTeX}
+%%
+%% Check catcode of "
+{\catcode`\"=12\gdef\pstverb#1{\special{" #1 /Foo{}def }}}
+\def\pstunit{1bp}
+\def\pstVerb#1{\special{ps: #1 }}
+\def\pstverbscale{TeXDict begin normalscale end}
+%%
+%% In the following, CP is short for currentpoint. The neg is necessary
+%% because dvips scales the coordinates by 1 -1:
+\def\pstrotate{%
+ CP CP translate 3 -1 roll neg rotate \tx@NET}
+%%
+\def\pstheader#1{%
+ \typeout{**********************************************************}%
+ \typeout{** Don't forget to include #1 when printing:}%
+ \typeout{** \space\space DVIReader -header #1 myfile}%
+ \typeout{**********************************************************}}
+%%
+%% ****************** END DirectTeX *****************************
+
+
+%%
+%% END: pstricks.con
diff --git a/graphics/pstricks/base/generic/pstricks.tex b/graphics/pstricks/base/generic/pstricks.tex
new file mode 100644
index 0000000000..70283822fc
--- /dev/null
+++ b/graphics/pstricks/base/generic/pstricks.tex
@@ -0,0 +1,4595 @@
+%% pstricks.tex
+%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt
+%% COPYRIGHT 2000-2003 by Denis Girou.
+%% Copyright 2004-2019 Herbert Voss <hvoss@tug.org>
+%
+% 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
+%
+\csname PSTricksLoaded\endcsname
+\let\PSTricksLoaded\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% !! loading additional TeX packages see line 38,39 and 72ff
+%% !! loading config file pstricks.con line 439
+%% !! loading pro files line 452ff
+%% !! fileversion and date see line 83
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+\edef\PstAtCode{\the\catcode`\@}
+\catcode`\@=11\relax
+%
+%\if@check@engine
+ \ifx\c@lor@to@ps\@undefined
+ \def\c@lor@to@ps{\PSTricks_Not_Configured_For_This_Format}% message for a pdflatex run
+ \fi
+%\fi
+\expandafter\ifx\csname @latexerr\endcsname\relax % do we have TeX? then @latexerr isn't defined
+ \input pstricks-tex.def
+\fi
+
+\let\ifpstUndefined\@ifundefined
+
+%\catcode`\@=\PstAtCode\relax
+\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex \fi
+\ifx\PSTFPloaded\endinput\else\input pst-fp.tex\fi
+%
+%\catcode`\@=11\relax
+\def\XKV@ch@ckch@ice#1#2#3{% bugfix for xkeyval
+ \def\XKV@tempa{#1}%
+ \ifx\XKV@tempa\@nnil\let\XKV@tempa\@empty\else
+ \def\XKV@tempa{\def#1{#2}}%
+ \fi
+% \in@{,#2,}{,#3,}%
+\begingroup\edef\x{\endgroup\noexpand\in@{,#2,}}\x{,#3,}%
+%\expandafter\in@\expandafter{\expandafter,#2,}{,#3,}% --- hv 2012-04-27
+ \ifin@
+ \ifXKV@pl
+ \XKV@addtomacro@n\XKV@tempa\@firstoftwo
+ \else
+ \XKV@addtomacro@n\XKV@tempa\@firstofone
+ \fi
+ \else
+ \ifXKV@pl
+ \XKV@addtomacro@n\XKV@tempa\@secondoftwo
+ \else
+ \XKV@toks{#2}%
+ \XKV@err{value `\the\XKV@toks' is not allowed}%
+ \XKV@addtomacro@n\XKV@tempa\@gobble
+ \fi
+ \fi
+ \XKV@tempa
+}
+%
+\def\ProvidesPackageRCS#1{\typeout{Loading #1}}%
+%\@ifnextchar[\ProvidesPackageRCS@i{\ProvidesPackageRCS@i[] }}%$
+%\def\ProvidesPackageRCS@i[#1]#2{}
+
+\ifx\pgfkeysloaded\relax\else
+ \input pgfutil-common.tex
+ \input pgfkeys.code.tex
+ \input pgffor.code.tex
+\fi
+\let\pgfforeach\foreach
+%
+\def\fileversion{2.97}
+\def\filedate{2019/05/11}
+\pst@addfams{pstricks}
+%
+%\define@boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
+%\psset{useURWfonts}
+%
+% stolen from latex.ltx to make it TeX compatible
+\newcount\psLoopIndex
+\long\def\@fornoop#1\@@#2#3{}
+\long\def\@for#1:=#2\do#3{%
+ \pst@cntm=0
+ \expandafter\def\expandafter\@fortmp\expandafter{#2}%
+ \ifx\@fortmp\@empty \else
+ \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}
+%
+\long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx#4\@nnil \else
+ #5\def#4{#2}\ifx#4\@nnil \else\global\advance\psLoopIndex by \@ne\relax
+ #5\@iforloop #3\@@#4{#5}\fi\fi}
+%
+\long\def\@iforloop#1,#2\@@#3#4{\global\advance\psLoopIndex by \@ne\relax%
+ \def#3{#1}\ifx #3\@nnil
+ \expandafter\@fornoop \else
+ #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}}
+%
+\long\def\psforeach#1#2#3{%
+ \global\psLoopIndex=0\relax
+ \if$\ifnum9<1#2$\else\fi\psforeach@ii{#1}{#2}{#3}%
+ \else \expandafter\psforeach@i#2,..,,..,\@nil{#1}{#3}\fi}
+\long\def\psforeach@i#1,#2,..,#3,..,#4\@nil#5#6{%
+ \ifx\relax#3\relax\psforeach@ii{#5}{#1,#2}{#6}%
+ \else\psforeach@iii{#5}{#1}{#2}{#3}{#6}\fi}
+\long\def\psforeach@ii#1#2#3{%
+ \begingroup
+ \edef\reserved@a{#2}%
+ \@for#1:=\reserved@a\do{#3}%
+ \endgroup}
+\long\def\psforeach@iii#1#2#3#4#5{%
+ \pstFPsub\pst@tempA{#3}{#2}%
+ \pst@dimm=\pst@tempA pt%
+ \pstFPstripZeros{\pst@tempA}\pst@tempB%
+ \def\pst@tempA{#2}%
+ \def\pst@tempa{#2}%
+ \pst@dimn=#4pt%
+ \loop
+ \pst@dimm=\pst@tempA pt
+ \ifdim\pst@dimm<\pst@dimn
+ \pstFPadd\pst@tempA{\pst@tempA}{\pst@tempB}%
+ \pstFPstripZeros{\pst@tempA}\pst@tempA%
+ \edef\pst@tempa{\pst@tempa,\pst@tempA}%
+ \repeat%
+ \psforeach@ii{#1}{\pst@tempa}{#5}}
+%
+\long\def\psForeach#1#2#3{% without grouping the contents
+ \global\psLoopIndex=0\relax%
+ \if$\ifnum9<1#2$\else\fi\psforeach@ii{#1}{#2}{#3}%
+ \else \expandafter\psForeach@i#2,..,,..,\@nil{#1}{#3}\fi}
+\long\def\psForeach@i#1,#2,..,#3,..,#4\@nil#5#6{%
+ \ifx\relax#3\relax\psForeach@ii{#5}{#1,#2}{#6}%
+ \else\psForeach@iii{#5}{#1}{#2}{#3}{#6}\fi%
+}
+\long\def\psForeach@ii#1#2#3{%
+ \edef\reserved@a{#2}%
+ \@for#1:=\reserved@a\do{#3}}
+\long\def\psForeach@iii#1#2#3#4#5{%
+ \pstFPsub\pst@tempA{#3}{#2}%
+ \pst@dimm=\pst@tempA pt%
+ \pstFPstripZeros{\pst@tempA}\pst@tempB%
+ \def\pst@tempA{#2}%
+ \def\pst@tempa{#2}%
+ \pst@dimn=#4pt%
+ \loop%
+ \pst@dimm=\pst@tempA pt%
+ \ifdim\pst@dimm<\pst@dimn%
+ \pstFPadd\pst@tempA{\pst@tempA}{\pst@tempB}%
+ \pstFPstripZeros{\pst@tempA}\pst@tempA
+ \edef\pst@tempa{\pst@tempa,\pst@tempA}%
+ \repeat%
+ \psForeach@ii{#1}{\pst@tempa}{#5}
+}
+
+\def\psrecur@i#1{\csname ps@rn#1\psrecur@i}
+\long\def\ps@rnm#1{\endcsname{#1}#1\global\advance\psLoopIndex by \@ne}
+\long\def\ps@rn#1{}
+\def\psLoop#1{\global\psLoopIndex=0\relax%
+ \csname ps@rn\expandafter\psrecur@i
+ \romannumeral\number\number#1 000\endcsname\endcsname}
+
+%
+% hv 2007-10-16 to fix the bug in pst-node with \\[name=...]
+% hv fix bug with empty fnodes in psmatrix
+\def\ps@ifnextchar#1#2#3{%
+ \let\reserved@d= #1%
+ \def\reserved@a{#2}\def\reserved@b{#3}%
+ \futurelet\@let@token\ps@ifnch}
+\def\ps@ifnch{%
+ \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi
+ \reserved@b
+}
+\def\pshskip#1{\vrule \@width\z@\nobreak \hskip #1\hskip \z@skip}
+% end bugfix
+\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz,hv)}
+\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\@ehpd{%
+ Not allowed optional argument.^^J
+ Will proceed with the default setting.^^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
+\newdimen\pst@dimm
+\newdimen\pst@dimn
+\newdimen\pst@dimo
+\newdimen\pst@dimp
+\chardef\f@ur=4
+%
+\newbox\pst@hbox
+\newbox\pst@ibox
+\newbox\pst@boxg
+\newcount\pst@cnta
+\newcount\pst@cntb
+\newcount\pst@cntc
+\newcount\pst@cntd
+\newcount\pst@cntg
+\newcount\pst@cnth
+\newcount\pst@cntm
+\newcount\pst@cntn
+\newcount\pst@cnto
+\newcount\pst@cntp
+\newcount\@zero\@zero=0\relax
+%
+\newif\ifPst@SpecialLength
+\Pst@SpecialLengthfalse
+%
+\newif\if@pst
+\newtoks\pst@toks
+\newif\if@star
+\def\pst@ifstar#1{%
+ \@ifnextchar*{\@startrue\def\ps@next*{#1}\ps@next}{\@starfalse#1}}
+%
+\def\pst@expandafter#1#2{%
+ \def\ps@next{#1}%
+ \edef\@tempa{#2}%
+ \ifx\@tempa\@empty
+ \@pstrickserr{Unexpected empty argument!}\@ehpb
+ \def\@tempa{\@empty}%
+ \fi
+ \expandafter\ps@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@getdimdim#1 #2 #3\@nil{%
+ \def\pst@tempA{#2}%
+ \ifx\pst@tempA\@empty
+ \pssetlength\pst@dimn{#1}%
+ \pst@dimm=\z@%
+ \else%
+ \pssetlength\pst@dimm{#1}%
+ \pssetlength\pst@dimn{#2}%
+ \fi%
+}
+\def\pst@getxdimdim#1 #2 #3\@nil{%
+ \def\pst@tempA{#2}%
+ \ifx\pst@tempA\@empty
+ \pssetxlength\pst@dimn{#1}%
+ \pst@dimm=\z@
+ \else%
+ \pssetxlength\pst@dimm{#1}%
+ \pssetxlength\pst@dimn{#2}%
+ \fi%
+}
+\def\pst@getydimdim#1 #2 #3\@nil{%
+ \def\pst@tempA{#2}%
+ \ifx\pst@tempA\@empty
+ \pssetylength\pst@dimn{#1}%
+ \pst@dimm=\z@%
+ \else
+ \pssetylength\pst@dimm{#1}%
+ \pssetylength\pst@dimn{#2}%
+ \fi}
+%
+% A modulo macro for integer values
+% \pst@mod{34}{6}\value ==> \value is 4
+%
+\def\pst@mod#1#2#3{%
+ \begingroup%
+ \pst@cntm=#1\pst@cntn=#2\relax%
+ \pst@cnto=\pst@cntm%
+ \divide\pst@cntm by \pst@cntn%
+ \multiply\pst@cntn by \pst@cntm%
+ \advance\pst@cnto by -\pst@cntn%
+ \edef\value{\endgroup\def\noexpand#3{\number\pst@cnto}}\value%
+}
+\def\pst@max#1#2#3{%
+ \begingroup%
+ \pst@cntm=#1\pst@cntn=#2\relax%
+ \ifnum\pst@cntm<\pst@cntn\pst@cntm=\pst@cntn\fi
+ \global#3=\the\pst@cntm%
+ \endgroup%
+}
+\def\pst@maxdim#1#2#3{%
+ \begingroup%
+ \pst@dimm=#1\pst@dimn=#2\relax%
+ \ifdim\pst@dimm<\pst@dimn\pst@dimm=\pst@dimn\fi
+ \global#3=\the\pst@dimm%
+ \endgroup%
+}
+\def\pst@mindim#1#2#3{%
+ \begingroup%
+ \pst@dimm=#1\pst@dimn=#2\relax%
+ \ifdim\pst@dimm>\pst@dimn\pst@dimm=\pst@dimn\fi
+ \global#3=\the\pst@dimm%
+ \endgroup%
+}
+\def\pst@abs#1#2{%
+ \begingroup%
+ \pst@cntm=#1\relax%
+ \ifnum\pst@cntm<\z@\pst@cntm=-\pst@cntm\fi%
+ \global#2=\the\pst@cntm
+ \endgroup%
+}
+\def\pst@absdim#1#2{%
+ \begingroup%
+ \pst@dimm=#1\relax%
+ \ifdim\pst@dimm<\z@\pst@dimm=-\pst@dimm\fi%
+ \global#2=\the\pst@dimm%
+ \endgroup%
+}
+%
+\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 ----- did not use dimens
+\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\relax
+ #3=#1\advance#3 .2122#2%
+ \else
+ #3=.8384#1\advance#3 .5758#2%
+ \fi%
+}
+% ----- the old pst@pyth end -----
+%
+%------ new version \pst@divide ̣-------- by Michael Sharpe
+\def\pst@divide#1#2#3{%
+ \pst@@divide{#1}{#2}%
+ \advance\pst@dimg \pst@cnta pt%
+ \pst@dimtonum\pst@dimg{#3}%
+}
+\def\pst@@divide#1#2{%
+ \pst@dimg=#1\relax%
+ \pst@dimh=#2\relax%
+ \pst@cnth=\pst@dimh%
+ \pst@cntg=\pst@dimg%
+ \pst@cnta=\pst@cntg%
+ \divide\pst@cnta\pst@cnth%
+ \advance\pst@dimg -\pst@cnta\pst@dimh%
+ \pst@cntm=67108863\relax %2^26 -1
+ \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide%
+ \divide\pst@dimg\pst@cnth%
+}%
+\def\pst@@@divide{%
+ \ifnum%
+ \ifnum\pst@dimg<\z@-\fi\pst@dimg<\pst@cntm%
+ \multiply\pst@dimg\sixt@@n%
+ \else%
+ \divide\pst@cnth\sixt@@n%
+ \fi%
+}%
+%
+%-------------- the old version ----------
+\iffalse
+\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%
+}
+\fi
+%-------------- end old vesrion ---------------
+%
+\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 % local config file
+%
+\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}
+%\pstheader{pstricks-fonts.pro}
+\pstheader{pst-algparser.pro}
+\pstheader{pst-tools.pro}
+%
+\def\pst@dict{tx@Dict begin }
+\def\pst@theheaders{pstricks.pro, pst-algparser.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 }
+%
+%--------------------------------------- PS stuff ---------------------------------
+% on stack x y
+\pst@def{UserCoor}< \pst@number\psyunit div exch \pst@number\psxunit div exch >
+\pst@def{ScreenCoor}< \pst@number\psyunit mul exch \pst@number\psxunit mul exch >
+%--------------------------------------- PS stuff end -----------------------------
+%
+\def\pst@number#1{\pst@@dimtonum#1\space}
+%
+%-----------------------% hv 20100413
+\def\pst@strip@dot#1{\expandafter\pst@strip@dot@i#1..\@nil}
+\def\pst@strip@dot@i#1.#2.#3\@nil{%
+ \ifnum1#2>10\relax #1.#2\else#1\fi}
+%-----------------------% hv 20100413
+\def\pst@checknum#1#2{%
+ \edef\ps@next{#1}%
+ \ifx\ps@next\@empty
+ \let\pst@num\z@
+ \else
+ \expandafter\pst@@checknum\ps@next..\@nil
+ \fi
+ \ifcase\pst@num\relax
+ \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
+ \def#2{0 }%
+ \or% 1
+ \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.%
+ \expandafter\@gobble\the\pst@cnth\space}%
+ \or% 2
+ \edef#2{\ifnum\pst@num=\tw@-\fi\the\pst@cntg.%
+ \expandafter\@gobble\the\pst@cnth\space}%
+ \or% 3
+ \edef#2{\pst@tempA\space}%
+ \fi}
+\def\pst@@checknum{%
+ \@ifnextchar-%
+ {\let\pst@num\tw@\expandafter\pst@@@checknum\@gobble}%
+ {\@ifnextchar !%
+ {\def\pst@num{3}\pst@@@@@checknum}
+ {\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@@@@@checknum#1#2.#3\@nil{\def\pst@tempA{#2}}% PostScript Notation with !<code>
+%
+\def\pst@getnumii#1 #2 #3\@nil{%
+ \pst@checknum{#1}\pst@tempg%
+ \ifx\relax#2\relax\let\pst@temph\pst@tempg\else\pst@checknum{#2}\pst@temph\fi}
+\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%
+}
+\def\pst@getscale#1#2{% read and check a scale input x [y]
+ \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%
+}
+\def\pst@getint#1#2{% read and check an integer
+ \pst@cntg=#1\relax
+ \edef#2{\the\pst@cntg\space}%
+}
+\begingroup
+\catcode`\{=12
+\catcode`\}=12
+\catcode`\[=1
+\catcode`\]=2
+\gdef\pslbrace[{ ]
+\gdef\psrbrace[} ]
+\endgroup
+%
+\pstVerb{
+ /pssetRGBcolor /setrgbcolor load def
+ /pssetCMYKcolor /setcmykcolor load def
+ /pssetGraycolor /setgray load def
+}
+\def\@newcolor#1#2{%
+ \expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}%
+ %\expandafter\edef\csname color@#1\endcsname{#2}%
+ \expandafter\edef\csname\string\color@#1\endcsname{#2}% hv 1.14 2005-12-17
+ \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\pssetMonochrome{%
+ \pstVerb{
+ /setrgbcolor { add add 0 gt {0}{1} ifelse setgray } def
+ /setcmykcolor{ 4 dict begin
+ /k ED /y ED /m ED /c ED
+ 1 1 k sub c mul k add sub 0.29 mul
+ 1 1 k sub m mul k add sub 0.587 mul add
+ 1 1 k sub y mul k add sub 0.114 mul add
+ end 0 gt {0}{1} ifelse setgray } def }}
+\def\pssetGrayscale{%
+ \pstVerb{
+ /setrgbcolor { 0.07 mul exch 0.71 mul add exch 0.21 mul add setgray } def
+ /setcmykcolor{ 4 dict begin
+ /k ED /y ED /m ED /c ED
+ 1 1 k sub c mul k add sub 0.29 mul
+ 1 1 k sub m mul k add sub 0.587 mul add
+ 1 1 k sub y mul k add sub 0.114 mul add
+ end setgray } def }}
+\def\psresetColor{\pstVerb{
+ /setrgbcolor tx@Dict begin /pssetRGBcolor load end def
+ /setcmykcolor tx@Dict begin /pssetCMYKcolor load end def }}
+
+\def\pst@grestore{
+ currentpoint
+ matrix currentmatrix
+ currentfont
+ grestore
+ setfont
+ setmatrix
+ moveto
+}
+%\def\pst@usecolor#1{\csname color@#1\endcsname\space}% hv 1.14 2005--12-17
+\def\pst@usecolor#1{\csname\string\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}
+
+\@ifundefined{xglobal}% do we have xcolor loaded?
+ {\@newcolor{randomgray}{tx@Dict begin Rand setgray end}%
+ \@newcolor{randomrgb}{tx@Dict begin Rand Rand Rand setrgbcolor end}%
+ \@newcolor{randomcmyk}{tx@Dict begin Rand Rand Rand Rand setcmykcolor end}%
+ \@newcolor{randomhsb}{tx@Dict begin Rand Rand Rand sethsbcolor end}%
+ }{%
+ \definecolor[ps]{randomgray}{gray}{tx@Dict begin Rand end}%
+ \definecolor[ps]{randomrgb}{rgb}{tx@Dict begin Rand Rand Rand end}%
+ \definecolor[ps]{randomcmyk}{cmyk}{tx@Dict begin Rand Rand Rand Rand end}%
+ \definecolor[ps]{randomhsb}{hsb}{tx@Dict begin Rand Rand Rand end}%
+ }
+%
+\define@boolkey[psset]{pstricks}[Pst@]{draft}[true]{}
+\define@key[psset]{pstricks}{bgcolor}{\def\pst@bgcolor{#1}}% background for pspicture
+\psset[pstricks]{bgcolor={},draft=false}% \pst@bgcolor is \@empty
+
+\define@key[psset]{pstricks}{style}{%
+ \@ifundefined{pscs@#1}%
+ {\@pstrickserr{Custom style `#1' undefined}\@ehpa}%
+ {\@nameuse{pscs@#1}}%
+}
+\def\newpsstyle{\@ifnextchar[\newpsstyle@ii{\newpsstyle@ii[]}}%% hv 2016-12-23
+%
+%\def\newpsstyle@i#1#2{\@namedef{pscs@#1}{%
+% \def\pst@tempA{#2}%
+% \ifx\pst@tempA\@empty\else\psset{#2}\fi}}
+%
+\def\newpsstyle@ii[#1]#2#3{%
+ \@namedef{pscs@#2}{\if$#1$\psset{#3}\else\psset[#1]{#3}\fi}}%% end
+%
+\def\addto@psstyle#1#2{%
+ \pst@toks=\expandafter{#1#2}%
+ \edef#1{\the\pst@toks}}
+\def\addtopsstyle#1#2{%
+ \def\pst@tempA{#2}%
+ \ifx\pst@tempA\@empty\else
+ \@ifundefined{pscs@#1}%
+ {\newpsstyle{#1}{#2}}%
+ {\expandafter\addto@psstyle\csname pscs@#1\endcsname{\psset{#2}}}%
+ \fi}
+%------------ hv 1.16 end -------------------
+%
+\def\@none{none}
+\def\pst@getcolor#1#2{%
+% \@ifundefined{color@#1}% hv 1.14 2005-12-17
+ \@ifundefined{\string\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
+ \ifpst@useCalc
+ \edef\@@temp{\pscalculate{#2}}%
+ \afterassignment\pstunit@off
+ #1 \@@temp\@psunit
+ \else
+ \afterassignment\pstunit@off
+ #1 #2\@psunit
+ \fi
+}
+\def\pssetylength#1#2{%
+ \let\@psunit\psyunit
+ \ifpst@useCalc
+ \edef\@@temp{\pscalculate{#2}}%
+ \afterassignment\pstunit@off
+ #1 \@@temp\@psunit
+ \else
+ \afterassignment\pstunit@off
+ #1 #2\@psunit
+ \fi
+}
+\define@key[psset]{pstricks}{unit}[1cm]{%
+ \pssetlength\psunit{#1}%
+ \psxunit=\psunit%
+ \psyunit=\psunit%
+}
+\define@key[psset]{pstricks}{runit}[1cm]{\pssetlength\psrunit{#1}}
+\define@key[psset]{pstricks}{xunit}[1cm]{\pssetxlength\psxunit{#1}}
+\define@key[psset]{pstricks}{yunit}[1cm]{\pssetylength\psyunit{#1}}
+%
+\define@key[psset]{pstricks}{PstDebug}[0]{\pst@getint{#1}\Pst@Debug}% hv 2004-06-22
+\psset[pstricks]{PstDebug=0}
+\def\psDEBUG{\@ifnextchar[\psDEBUG@i{\psDEBUG@i[PSTricks]}}%
+\def\psDEBUG@i[#1]#2{\ifnum\Pst@Debug>0 \expandafter\typeout{<#1>: #2}\fi}%
+%
+\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}%
+}
+%
+\newcount\pst@C@@rType% 0: default cartesian coordinates and angles
+%
+\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\pstCheckCoorType##1{\global\pst@C@@rType=0}%
+ \Pst@SpecialLengthfalse
+ \def\pssetlength##1##2{%
+ \let\@psunit\psunit
+ \afterassignment\pstunit@off
+ ##1 ##2\@psunit%
+ }%
+ \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% set to normal read of coors, angles and lengths
+%
+\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}}
+\def\@degrees[#1]{%
+ \pst@checknum{#1}\pst@tempg
+ \edef\pst@angleunit{360 \pst@tempg div mul }%
+ \pstVerb{tx@Dict begin startGlobal /pst@angleunit {\pst@angleunit} def endGlobal end}%
+ \ignorespaces}
+%
+\def\radians{\def\pst@angleunit{57.2956 mul }%
+ \pstVerb{tx@Dict begin startGlobal /pst@angleunit {\pst@angleunit} def endGlobal end}}%
+\def\pst@angleunit{}%
+
+%
+\def\SpecialCoor{%
+ \def\pst@@getcoor##1{%
+ \begingroup%
+ \pst@activecoor
+ \xdef\pst@tempg{##1}%
+ \endgroup
+ \expandafter\special@coor\pst@tempg||\@nil}%
+ \def\pstCheckCoorType##1{%
+ \begingroup
+ \pst@activecoor
+ \xdef\pst@tempg{##1}%
+ \endgroup
+ \psDEBUG[pstCheckCoorType]{:Checking coor \pst@tempg:}%
+ \expandafter\pst@CheckCoorType\pst@tempg||\@nil%
+ \psDEBUG[pstCheckCoorType]{::Coor type=\the\pst@C@@rType::}%
+ }%
+ \def\pssetlength##1##2{%
+ \begingroup%
+ \pst@activecoor%
+ \xdef\pst@tempg{##2}%
+ \endgroup%
+ \expandafter\special@length\pst@tempg\@nil{##1}%
+ \ignorespaces}%
+ \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}%
+}
+\SpecialCoor% set to special read of coors, angles and lengths
+%
+\define@key[psset]{}{precode}{\def\pst@prepscode{#1 }}
+\define@key[psset]{}{postcode}{\def\pst@postpscode{#1 }}
+\psset{precode={},postcode={}}% For use in other packages
+%
+%
+\begingroup
+\catcode`\|=13
+\catcode`\;=13
+\catcode`\!=13
+\catcode`\*=13
+\catcode`\>=13
+\catcode`\+=13
+\gdef\pst@activecoor{%
+ \def|{\string|}%
+ \def;{\string;}%
+ \def!{\string!}%
+ \def*{\string*}% algebraic expression hv 2007-11-17
+ \def>{\string>}%
+ \def+{\string+}% pure algebaric 2013-04-23
+}
+\endgroup
+% \pst@C@@rType = 0 cartesian (x,y)
+% = 1 polar (r;phi)
+% = 2 PS (! x y)
+% = 3 mixed ((x,y)|(x,y))
+% = 4 algebraic (*x f(x)) x in PostScript notation
+% = 5 node (A)
+% = 6 special node ([...]A)
+% = 7 node (>A)
+% = 8 algebraic (+x,f(x)) _both_ algebraic
+\def\pst@CheckCoorType#1|#2|#3\@nil{%
+ \ifx#3|\relax
+ \global\pst@C@@rType=3\relax
+ \else
+ \expandafter\pst@@CheckCoorType#1;;\@nil%
+ \fi}
+%
+\def\pst@@CheckCoorType#1#2;#3;#4\@nil{%
+%\typeout{====1:#1}%
+%\typeout{====2:#2}%
+%\typeout{====3:#3}%
+%\typeout{====4:#4}%
+ \ifx#1>\relax% node with special rotation for \uput
+ \global\pst@C@@rType=7
+ \else
+ \ifcat#1a\relax% node names should start with a letter
+ \global\pst@C@@rType=5
+ \else
+ \ifx#1[\relax% special node coor: [..]A
+ \global\pst@C@@rType=6
+ \else
+ \ifx#1!\relax% PostScript code: x y
+ \global\pst@C@@rType=2
+ \else
+ \ifx#1*\relax% algebraic PostScript code: x f(x)
+ \global\pst@C@@rType=4
+ \else
+ \ifx#1+\relax% algebraic algebraic: x, f(x)
+ \global\pst@C@@rType=8
+ \else
+ \ifx#4;\relax% polar coordinates
+ \global\pst@C@@rType=1
+ \else
+ \global\pst@C@@rType=0
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \fi
+ \psDEBUG[pstCheckCoorType]{::\the\pst@C@@rType::}%
+ }%
+%
+%
+\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% node names should start with a letter
+ \def\ps@next{\node@coor#1}%
+ \else
+ \ifx#1[\relax% special node coor: [..]A
+ \def\ps@next{\Node@coor[}%
+ \else
+ \ifx#1>\relax% PostScript code: x y
+ \def\ps@next{\special@@@@coor}%
+ \else
+ \ifx#1!\relax% PostScript code: x y
+ \def\ps@next{\raw@coor}%
+ \else
+ \ifx#1*\relax% PostScript/algebraic code: x f(x)
+ \def\ps@next{\alg@coor}%
+ \else
+ \ifx#1+\relax% algebraic code: x,f(x)
+ \def\ps@next{\algalg@coor}%
+ \else%
+ \def\ps@next{\special@@@coor#1}%
+ \fi%
+ \fi%
+ \fi%
+ \fi\fi%
+ \fi%
+ \ps@next%
+}
+\def\special@@@coor#1;#2;#3\@nil{%
+ \ifx#3;\relax
+ \polar@coor{#1}{#2}%
+ \else
+ \cartesian@coor#1,\relax,\@nil
+ \fi%
+}
+\def\special@@@@coor#1#2;#3;#4\@nil{%
+ \def\ps@A{A}\def\ps@B{#1}%
+ \ifcat\ps@A\ps@B\relax%
+ \node@coor#1#2;;\@nil%
+ \else%
+ \cartesian@coor#1#2,\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}%
+ \pssetlength\pst@dimb{#1}% hv 2007-10-16 g is already used in get@@angle
+ \pst@@getangle{#2}%
+% \edef\pst@coor{\pst@number\pst@dimg \pst@angle \tx@PtoC}% dito
+ \edef\pst@coor{\pst@number\pst@dimb \pst@angle \tx@PtoC }%
+}
+%
+\def\raw@coor{\@ifnextchar !\raw@@coor\raw@@@coor}
+\def\raw@@coor!#1;#2\@nil{% PostScript code without using \tx@ScreenCoor
+ \edef\pst@coor{#1 }}
+\def\raw@@@coor#1;#2\@nil{% PostScript code
+ \edef\pst@coor{ #1 \tx@ScreenCoor }}
+%
+\def\alg@coor{\@ifnextchar*{\alg@@coor}{\alg@@@@coor}}
+\def\alg@@coor*#1;#2\@nil{\expandafter\alg@@@coor#1\@nil}
+\def\alg@@@coor#1 #2\@nil{% algebraic PostScript code
+%\typeout{Nummer1: #1}%
+%\typeout{Nummer2: #2}%
+ \edef\pst@coor{%
+ /Func (#1) AlgParser cvx def
+ /y #2 def
+ y Func exch \tx@ScreenCoor }}
+%
+\def\alg@@@@coor#1;#2\@nil{\expandafter\alg@@@@@coor#1\@nil}
+\def\alg@@@@@coor#1 #2\@nil{% algebraic PostScript code
+ \edef\pst@coor{%
+ /x #1 def
+ /Func (#2) AlgParser cvx def
+ x Func \tx@ScreenCoor }}
+%
+\define@boolkey[psset]{}[Pst@]{exchange}[true]{}
+\psset{exchange=false}
+%
+\def\algalg@coor#1;#2\@nil{\expandafter\algalg@@@coor#1\@nil}
+\def\algalg@@@coor#1,#2\@nil{% algebraic algebraic code
+ \edef\pst@coor{%
+ /x (#1) AlgParser cvx def
+ /Func (#2) AlgParser cvx def
+ x Func \tx@ScreenCoor }}
+%
+\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\space \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\special@length#1#2\@nil#3{%
+ \ifx !#1\relax
+ \edef\pst@SpecialLength{ #2 \pst@number\psunit mul }%
+ \Pst@SpecialLengthtrue
+ \else
+ \let\@psunit\psunit
+ \afterassignment\pstunit@off
+ #3 #1#2\@psunit
+ \Pst@SpecialLengthfalse
+ \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}}%
+}%
+\define@key[psset]{pstricks}{origin}[]{%
+ \pst@@getcoor{#1}%
+ \edef\psk@origin{\pst@coor T }}
+\def\psk@origin{}
+%
+\define@boolkey[psset]{pstricks}[Pst@]{algebraic}[true]{}
+\psset{algebraic=false}
+%
+\define@boolkey[psset]{pstricks}[]{swapaxes}[true]{% \if@pst
+ \@nameuse{@pst#1}%
+ \if@pst\def\psk@swapaxes{-90 rotate -1 1 scale }%
+ \else\def\psk@swapaxes{}%
+ \fi
+}
+\psset[pstricks]{swapaxes=false}
+%
+\define@boolkey[psset]{pstricks}[]{showpoints}[true]{}
+\psset[pstricks]{showpoints=false}
+%
+\let\pst@setrepeatarrowsflag\relax
+%
+\define@key[psset]{pstricks}{border}[0pt]{\pst@getlength{#1}\psk@border \pst@setrepeatarrowsflag}
+\psset[pstricks]{border=0pt}
+\define@key[psset]{pstricks}{bordercolor}[white]{\pst@getcolor{#1}\psbordercolor}
+\psset[pstricks]{bordercolor=white}
+\define@boolkey[psset]{pstricks}[ps]{doubleline}[true]{\pst@setrepeatarrowsflag}
+\psset[pstricks]{doubleline=false}
+\define@key[psset]{pstricks}{doublesep}[1.25\pslinewidth]{\def\psdoublesep{#1}}
+\psset[pstricks]{doublesep=1.25\pslinewidth}
+\define@key[psset]{pstricks}{doublecolor}[white]{\pst@getcolor{#1}\psdoublecolor}
+\psset[pstricks]{doublecolor=white}
+%
+\define@boolkey[psset]{pstricks}[ps]{shadow}[true]{\pst@setrepeatarrowsflag}
+\psset[pstricks]{shadow=false}
+\define@key[psset]{pstricks}{shadowsize}[3pt]{\pst@getlength{#1}\psk@shadowsize}
+\psset[pstricks]{shadowsize=3pt}
+\define@key[psset]{pstricks}{shadowangle}[-45]{\pst@getangle{#1}\psk@shadowangle}
+\psset[pstricks]{shadowangle=-45}
+\define@key[psset]{pstricks}{shadowcolor}[darkgrey]{\pst@getcolor{#1}\psshadowcolor}
+\psset[pstricks]{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{}
+\def\psls@solid{ \psk@linejoin\space setlinejoin \psk@linecap\space setlinecap stroke }
+\def\psls@coloreddashed{ \psls@solid grestore gsave \pst@usecolor\psdashcolor \tx@setlinejoin \psls@dashed }
+%
+\newdimen\pslinewidth
+\define@key[psset]{pstricks}{linewidth}[0.8pt]{\pssetlength\pslinewidth{#1}}
+\psset[pstricks]{linewidth=.8pt}
+\define@key[psset]{pstricks}{linecolor}[black]{\pst@getcolor{#1}\pslinecolor}
+\psset[pstricks]{linecolor=black}
+\define@key[psset]{pstricks}{kitecolor}[red]{\pst@getcolor{#1}\ps@kitecolor}
+\define@key[psset]{pstricks}{dartcolor}[blue]{\pst@getcolor{#1}\ps@dartcolor}
+\psset[pstricks]{kitecolor,dartcolor}
+%
+\newif\ifPst@coloreddashed
+\define@key[psset]{pstricks}{dashcolor}[white]{%
+ \ifx\relax#1\relax\Pst@coloreddashedfalse%
+ \else\Pst@coloreddashedtrue\pst@getcolor{#1}\psdashcolor
+ \fi}
+\psset{dashcolor=\relax}
+%\define@key[psset]{pstricks}{linecap}[0]{\pst@getint{#1}\psk@linecap}% hv 2007-12-01
+%\psset[pstricks]{linecap=0} >>>>>>>>>>>>> siehe unten
+\define@key[psset]{pstricks}{linejoin}[0]{\pst@getint{#1}\psk@linejoin}% hv 2007-10-13
+\psset[pstricks]{linejoin=0}
+\def\tx@setlinejoin{\psk@linejoin\space setlinejoin }% hv 2007-10-13
+%
+\def\pst@missing{%
+ \z@
+ \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa}
+%
+%%------------------- begin patch 15 HV 2004-05-15 -------------
+\def\pst@empty{\z@}
+
+\define@key[psset]{pstricks}{dash}[5pt 3pt 0pt 0pt]{% defined in pstricks.tex
+ \pst@expandafter\psset@@dash{#1}\@nil}% Error handling for empty argument.
+\define@key[psset]{pstricks}{maxdashes}[11]{\def\psk@maxdashes{#1}}
+\psset[pstricks]{maxdashes=11}
+%
+\def\psset@@dash#1\@nil{%
+ \def\psk@dash{}%
+ \pst@cntm0
+ \def\next##1 ##2\relax{%
+ \expandafter\ifnum\psk@maxdashes>\pst@cntm\relax % 04-08-07
+ \edef\@tempa{##1}%
+ \ifx\@tempa\@empty\else% gobble leading spaces
+ \pssetlength\pst@dimc{##1}%
+ \advance\pst@cntm by 1
+ \edef\psk@dash{\psk@dash\space\pst@number\pst@dimc}%
+ \fi%
+ \edef\@tempa{##2}%
+ \ifx\@tempa\@empty\else% detect end
+ \ifx\@tempa\space\else% gobble trailing spaces
+ \next##2\relax%
+ \fi\fi%
+ \else% 04-08-07
+ \@pstrickserr{Number of dashes > \psk@maxdashes. Increasing
+ 'maxdashes' might work.}\@ehpa% 04-08-07
+ \fi% 04-08-07
+ }%
+ \expandafter\next#1 \relax}
+\psset[pstricks]{dash=5pt 3pt 0pt 0pt}% black white black white
+%%------------------- end patch 15 HV 2004-05-15 -------------
+\define@boolkey[psset]{pstricks}[ps]{dashadjust}[true]{}
+\psset[pstricks]{dashadjust}
+\def\tx@DashLine{DashLine }
+%
+\def\psls@dashed{
+ \ifPst@coloreddashed \psls@solid grestore gsave \pst@usecolor\psdashcolor \tx@setlinejoin \fi
+ \psk@linecap\space setlinecap
+ \ifpsdashadjust
+ [ \psk@dash ] \pst@linetype\space \tx@DashLine
+ \else
+ [ \psk@dash ] 0 setdash stroke
+ \fi}
+%% End patch TN; Date (YY-MM-DD): 04-07-17; 2nd part
+%
+\define@key[psset]{pstricks}{dotsep}[3pt]{\pst@getlength{#1}\psk@dotsep}
+\psset[pstricks]{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
+}
+%
+\define@key[psset]{pstricks}{linestyle}[solid]{%
+ \@ifundefined{psls@#1}%
+ {\@pstrickserr{Line style `#1' not defined}\@eha}%
+ {\def\pslinestyle{#1}}}
+\psset[pstricks]{linestyle=solid}
+%
+\define@key[psset]{pstricks}{linecap}[0]{%
+ \def\psk@linecap{0}%
+ \ifnum#1>-1
+ \ifnum#1<3
+ \pst@getint{#1}\psk@linecap%
+ \fi\fi}
+\psset{linecap=0}
+%------------------------- Transparency modes ----------------------------
+\pst@def{setTransparency}< \psk@opacityalpha .setopacityalpha >
+\pst@def{setStrokeTransparency}< \psk@strokeopacityalpha .setopacityalpha >
+\pst@def{setBlendmode}<
+ \ifcase\psk@blendmode
+ /Normal \or
+ /Compatible \or
+ /Screen \or
+ /Multiply \or
+ /HardLight \or
+ /Darken \or
+ /Lighten \or
+ /Difference\or
+ /ColorDodge\or
+ /ColorBurn\or
+ /SoftLight\or
+ /Hue\or
+ /Saturation\or
+ /Luminosity\or
+ /Overlay\or
+ /Exclusion\or
+ /Color
+ \else
+ /Normal
+ \fi
+ .setblendmode \psk@shapealpha .setshapealpha >
+%
+%--------------------------------- hv 2007-09-09 begin ---------------------
+% transparency needs a run through latex -> dvips -> ps2pdf14(!)
+%
+\def\e@fill@inverse{oefill}
+\define@key[psset]{pstricks}{fillcolor}[white]{%
+ \ifx\psk@fillstylename\e@fill@inverse
+ \pst@getcolor{#1}\psk@oefillcolor
+ \pst@getcolor{white}\psfillcolor
+ \else \pst@getcolor{white}\psk@oefillcolor
+ \pst@getcolor{#1}\psfillcolor
+ \fi}
+
+\psset[pstricks]{fillcolor=white}
+\define@key[psset]{pstricks}{strokeopacity}[1]{\pst@checknum{#1}\psk@strokeopacityalpha }% for lines
+\psset[pstricks]{strokeopacity=1}
+\define@key[psset]{pstricks}{opacity}[1]{\pst@checknum{#1}\psk@opacityalpha }% for filled areas
+\psset[pstricks]{opacity=1}
+\define@key[psset]{pstricks}{shapealpha}[0.6]{\pst@checknum{#1}\psk@shapealpha }
+\psset[pstricks]{shapealpha=0.6}
+\define@key[psset]{pstricks}{blendmode}[0]{\pst@getint{#1}\psk@blendmode }% must be one of
+% /Normal 0
+% /Compatible 1
+% /Screen 2
+% /Multiply 3
+% /HardLight 4
+\psset[pstricks]{blendmode=0}
+\define@key[psset]{pstricks}{fsAngle}[137.50775]{\pst@getangle{#1}\pst@fsAngle }
+\define@key[psset]{pstricks}{fsOrigin}[(0,0)]{%
+ \pst@@getcoor{#1}\edef\pst@fsOrigin{\pst@coor T }}
+\psset[pstricks]{fsOrigin={0,0},fsAngle=137.50775}
+%
+\def\tx@LineFill{LineFill }
+\def\tx@DotFill{DotFill }
+\def\tx@PenroseFill{PenroseFill }
+\def\tx@PenroseFillA{PenroseFillA }
+\def\tx@TruchetFill{TruchetFill }
+%
+\def\psfs@none{}
+\def\psfs@solid{\pst@fill{\pst@usecolor\psfillcolor \tx@setTransparency fill }}
+\def\psfs@eofill{\pst@fill{\pst@usecolor\psfillcolor \tx@setTransparency eofill}}
+\def\psfs@oefill{\pst@fill{\pst@usecolor\psk@oefillcolor \tx@setTransparency fill }\psfs@eofill }
+\def\psfs@shape{\pst@fill{\pst@usecolor\psfillcolor \tx@setBlendmode fill }}
+\def\psfs@spiral{\pst@fill{\pst@fsOrigin \pst@usecolor\psfillcolor clip newpath
+ 0 .1 500 { dup dup sqrt 4 div 0 360 arc fill \pst@fsAngle rotate } for }}
+%
+\define@key[psset]{pstricks}{hatchwidth}[0.8pt]{\pst@getlength{#1}\psk@hatchwidth}
+\psset[pstricks]{hatchwidth=.8pt}
+\define@key[psset]{pstricks}{hatchsep}[4pt]{\pst@getlength{#1}\psk@hatchsep}
+\psset[pstricks]{hatchsep=4pt}
+\define@key[psset]{pstricks}{hatchcolor}[black]{\pst@getcolor{#1}\pshatchcolor}
+\psset[pstricks]{hatchcolor=black}
+\define@key[psset]{pstricks}{hatchangle}[45]{\pst@getangle{#1}\psk@hatchangle}
+\psset[pstricks]{hatchangle=45}
+\define@key[psset]{pstricks}{hatchsepinc}[0pt]{\pst@getlength{#1}\psk@hatchsepinc}
+\define@key[psset]{pstricks}{hatchwidthinc}[0pt]{\pst@getlength{#1}\psk@hatchwidthinc}
+\psset[pstricks]{hatchwidthinc=0pt,hatchsepinc=0pt}
+%
+\def\pst@linefill#1{
+ /clipType { \ifx\relax#1\relax clip \else#1\fi} def
+ \psk@hatchangle rotate
+ \psk@hatchwidth SLW
+ \pst@usecolor\pshatchcolor
+ \psk@hatchsep
+ \psk@hatchsepinc
+ \psk@hatchwidthinc
+ \tx@LineFill }
+%
+\def\psfs@vlines{\pst@fill{\pst@linefill{}}}
+\def\psfs@eovlines{\pst@fill{\pst@linefill{eoclip}}}
+\@namedef{psfs@vlines*}{\psfs@solid \psfs@vlines}
+\@namedef{psfs@eovlines*}{\psfs@eofill \psfs@eovlines}
+\def\psfs@hlines{\pst@fill{90 rotate \pst@linefill{}}}
+\def\psfs@eohlines{\pst@fill{90 rotate \pst@linefill{eoclip}}}
+\@namedef{psfs@hlines*}{\psfs@solid \psfs@hlines}
+\@namedef{psfs@eohlines*}{\psfs@eofill \psfs@eohlines}
+\def\psfs@crosshatch{\psfs@vlines \psfs@hlines}
+\@namedef{psfs@crosshatch*}{\psfs@solid \psfs@vlines \psfs@hlines}
+\@namedef{psfs@eocrosshatch*}{\psfs@eofill \psfs@eovlines \psfs@eohlines}
+%
+\define@key[psset]{pstricks}{psscale}[1]{%
+ \def\psk@@psscale{#1}% for use with \psscalebox
+ \pst@checknum{#1}\psk@psscale}
+\psset[pstricks]{psscale=1}
+%
+\def\pst@dotFill[#1]{%
+ /clipType { \ifx\relax#1\relax clip \else #1 \fi } def
+ gsave
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pshatchcolor
+% /DotLineColor { \pst@usecolor\pslinecolor } def
+ \psk@hatchsep
+ \psk@hatchwidth
+ \tx@DotFill }
+
+\def\psfs@dots{\pst@fill{ /SolidDot false def \pst@dotFill[] }}
+\def\psfs@eodots{\pst@fill{ /SolidDot false def \pst@dotFill[eoclip] }}
+\@namedef{psfs@dots*}{\pst@fill{ /SolidDot true def \pst@dotFill[] }}
+\@namedef{psfs@eodots*}{\pst@fill{ /SolidDot true def \pst@dotFill[eoclip] }}
+%
+\def\pst@penroseFill{%
+% gsave % restore in PenroseFill
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pshatchcolor
+ \psk@psscale
+ \tx@PenroseFill }
+\def\psfs@penrose{\pst@fill\pst@penroseFill}
+\@namedef{psfs@penrose*}{\psfs@solid \psfs@penrose}
+%
+\def\pst@penroseFillA{%
+% gsave % restore in PenroseFillA
+ \pst@number\pslinewidth SLW
+% \pst@usecolor\pshatchcolor
+% on stack: scaling factor, border color, kite color, dart color
+% dup dup scale
+% /border_colour ED %
+% /kite_colour ED %
+% /dart_colour
+ { \pst@usecolor\ps@dartcolor }
+ { \pst@usecolor\ps@kitecolor }
+ { \pst@usecolor\pshatchcolor }
+ \psk@psscale
+ \tx@PenroseFillA }
+\def\psfs@penroseA{\pst@fill\pst@penroseFillA}
+\@namedef{psfs@penroseA*}{\psfs@solid \psfs@penroseA}
+%
+\def\pst@truchetFill{%
+ gsave % restore in PenroseFill
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pshatchcolor
+ \psk@psscale
+ \tx@TruchetFill }
+\def\psfs@truchet{ \pst@fill\pst@truchetFill }
+\@namedef{psfs@truchet*}{\psfs@solid \psfs@truchet}
+%
+\define@key[psset]{pstricks}{fillstyle}[none]{%
+ \def\psk@fillstylename{#1}% needed for inverse eofill
+ \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%
+}
+\define@key[psset]{pstricks}{addfillstyle}[]{%
+ \@ifundefined{psfs@#1}%
+ {\@pstrickserr{Undefined fill style: `#1'}\@eha}%
+ {\edef\psk@fillstyle{%
+ \expandafter\noexpand\psk@fillstyle
+ \expandafter\noexpand\csname psfs@#1\endcsname}%
+ }}
+\psset[pstricks]{fillstyle=none}
+%
+%--------------------------- continous linewidth -------------------
+\newdimen\psk@startLW
+\newdimen\psk@endLW
+\define@key[psset]{pstricks}{startLW}[\pslinewidth]{\pssetlength{\psk@startLW}{#1}}%
+\define@key[psset]{pstricks}{endLW}[\pslinewidth]{\pssetlength{\psk@endLW}{#1}}%
+\define@key[psset]{pstricks}{startWL}[380]{\pst@getint{#1}\psk@startWL}%
+\define@key[psset]{pstricks}{endWL}[780]{\pst@getint{#1}\psk@endWL}%
+\define@boolkey[psset]{pstricks}[Pst@]{variableLW}[true]{}
+\define@boolkey[psset]{pstricks}[Pst@]{variableColor}[true]{}
+\define@key[psset]{pstricks}{setflat}[0.1]{\pst@checknum{#1}\psk@setflat}%
+\psset[pstricks]{startLW=\pslinewidth,endLW=\pslinewidth,variableColor=false,
+ variableLW=false,startWL=380,endWL=780,setflat=0.1}
+%
+\def\pst@flattenpath{
+ /Coors [] def % the array of all points
+ /lambda \psk@startWL\space def
+ %
+ /add2Values { Coors aload length 2 add array astore /Coors exch def } def
+ /add6Values { Coors aload length 6 add array astore /Coors exch def } def
+%
+ \psk@setflat\space setflat % the value for the line snippets
+ flattenpath % flatten the existing path into line segments
+%
+ { add2Values } % what to do with moveto
+ { add2Values } % what to do with lineto
+ { add6Values } % what to do with curveto (not needed here)
+ { } % what to do with closepath
+ pathforall % do it for the existing path
+%
+ \pst@number\psk@startLW setlinewidth
+ \tx@setlinejoin
+ \psk@linecap\space setlinecap
+ Coors aload length 2 sub 2 div cvi /N0 exch def % set number of points
+ /NN 0 def
+ /N N0 def
+ { N 3 gt { N 3 sub /N ED }{ N 1 sub /N ED } ifelse
+ NN 1 add /NN ED
+ N 0 eq { exit } if
+ } loop
+ /dLW \pst@number\psk@endLW \pst@number\psk@startLW sub NN div def % the step for the linewidth
+ \ifPst@variableColor
+ /dColor \psk@endWL\space \psk@startWL\space sub NN div def
+ lambda dColor add dup /lambda ED
+ tx@addDict begin wavelengthToRGB Red Green Blue end setrgbcolor
+ \else
+ \pst@usecolor\pslinecolor
+ \fi
+ moveto % move to the first one
+ /N N0 def
+ {
+ N 3 gt {
+% CP 6 2 roll
+ \psk@curvature\space /c ED /b ED /a ED
+ /ArrowA {} def
+ /ArrowB {} def
+ BOC NC EOC % curveto
+ N 3 sub /N ED }{ lineto N 1 sub /N ED } ifelse
+ currentlinewidth dLW add setlinewidth % increase line width
+ \ifPst@variableColor
+ lambda dColor add dup /lambda ED
+ tx@addDict begin wavelengthToRGB Red Green Blue end setrgbcolor
+ \else
+ \pst@usecolor\pslinecolor
+ \fi
+ CP /Y ED /X ED % put coors of current point on the stack
+% 0.4 .setopacityalpha
+ stroke % draw the line segment
+ N 0 eq { exit }{ X Y moveto } ifelse
+ } loop
+% N { % repeat for the other N coords
+% lineto % line to next point
+% currentlinewidth dLW add setlinewidth % increase line width
+% lambda dColor add dup /lambda ED
+% tx@addDict begin wavelengthToRGB Red Green Blue end setrgbcolor
+% currentpoint % put coors of current point on the stack
+% 0.4 .setopacityalpha
+% stroke % draw the line segment
+% moveto
+% } repeat
+}
+
+%
+%--------------------------- A R R O W S ---------------------------
+%
+\def\psk@arrowA{}
+\def\psk@arrowB{}
+\def\pst@arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,<D-D>,D>-<D,<D<D-D>D>} % hv --1.16
+\edef\pst@arrowtable{\pst@arrowtable,|<*->|*,|<->|}
+\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 }
+%
+\def\tx@Arrow{ \tx@setStrokeTransparency Arrow }% hv 2008-01-13
+\def\tx@ArrowD{ \tx@setStrokeTransparency ArrowD }% hv 2008-01-13
+%
+\@namedef{psas@<|}{
+ \psk@tbarsize\space \tx@Tbar
+ 0 CLW 2 div T
+ newpath
+ true
+ \psk@arrowinset
+ \psk@arrowlength
+ \psk@arrowsize
+ \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{ \tx@setStrokeTransparency RoundBracketOut }% hv 2008-01-13
+\@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.12
+\@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
+ CLW \pst@arrowscale\space div SLW % set the original line width
+ 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
+ gsave
+ CLW \pst@arrowscale\space div SLW % set the original line width
+ L stroke
+ grestore
+ 0 h neg T
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+}
+\@namedef{psas@D>}{ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD }% hv 20071211
+\@namedef{psas@D>D>}{ % hv 20071211
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+ 0 h Inset sub T gsave newpath
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+ CP grestore moveto
+}
+\@namedef{psas@<D}{ % hv 20071211
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+}
+\@namedef{psas@<D<D}{ % hv 20071211
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+ CP newpath moveto 0 a neg L stroke 0 h neg T
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@ArrowD
+}
+\define@key[psset]{pstricks}{tbarsize}[2pt 5]{%
+ \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
+ \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
+\psset[pstricks]{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
+}
+%
+\define@key[psset]{pstricks}{bracketlength}[0.15]{\pst@checknum{#1}\psk@bracketlength}
+\psset[pstricks]{bracketlength=.15}
+\def\tx@Bracket{Bracket }
+\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
+\define@key[psset]{pstricks}{rbracketlength}[0.15]{\pst@checknum{#1}\psk@rbracketlength}
+\psset[pstricks]{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
+ 0 0.1 L % changed value from 0.5 to 0.1
+ stroke
+ 0 0 moveto }
+%
+\def\psas@{}
+%
+\define@key[psset]{pstricks}{arrowLW}{\pst@getlength{#1}\psk@arrowLW}
+\psset[pstricks]{arrowLW=0}
+% arrowLW as LineWidth for the circled line ends
+%
+\def\psas@o{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot }
+\def\psas@oo{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot }
+\@namedef{psas@*}{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {false} false \psk@dotsize \tx@EndDot }
+\@namedef{psas@**}{\psk@arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+ {false} true \psk@dotsize \tx@EndDot }
+%
+\define@key[psset]{pstricks}{arrows}[-]{%
+ \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\ps@next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}%
+ \expandafter\ps@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}}}
+\psset[pstricks]{arrows=-}
+%
+\define@key[psset]{pstricks}{arrowscale}[1]{% hv --1.12
+ \pst@getscale{#1}\psk@arrowscale
+ \pst@@arrowscale@i#1 \@nil}% hv --1.12
+\def\pst@@arrowscale@i#1 #2\@nil{\edef\pst@arrowscale{#1}}% hv --1.12
+\psset[pstricks]{arrowscale=1}
+%
+\define@key[psset]{pstricks}{arrowsize}[1.5pt 2]{%
+ \pst@expandafter\pst@getdimnum{#1} 0 {} {}\@nil
+ \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}%
+}
+\psset[pstricks]{arrowsize=1.5pt 2}
+\define@key[psset]{pstricks}{arrowlength}[1.4]{\pst@checknum{#1}\psk@arrowlength}
+\psset[pstricks]{arrowlength=1.4}
+\define@key[psset]{pstricks}{arrowinset}[0.4]{\pst@checknum{#1}\psk@arrowinset}%
+\psset[pstricks]{arrowinset=0.4}
+%
+\def\tx@SD{ \tx@setTransparency SD }
+\def\tx@EndDot{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\use@keep@par{% same as \use@par, but keeps the values
+ \ifx\pst@par\@empty\else
+ \expandafter\@psset\pst@par,\@nil
+% \def\pst@par{}%
+ \fi}
+%
+\def\pst@object#1{%
+ \def\pst@par{}%
+ \pst@ifstar{%
+ \@ifnextchar[{\pst@@object{#1}}{\@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
+ \pst@addarrowdef% DG addition
+ \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\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
+ \tx@setStrokeTransparency % hv 2008-01-13
+ \@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
+ \tx@setStrokeTransparency % hv 2016-09-23
+ 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
+}}
+%
+\newif\ifPst@custom\Pst@customfalse
+\define@boolkey[psset]{pstricks}[Pst@]{noCurrentPoint}[true]{}
+\psset[pstricks]{noCurrentPoint=false}
+%
+%
+\def\pscustom{\pst@object{pscustom}}
+\long\def\pscustom@i#1{%
+ \begin@SpecialObj%
+ \solid@star%
+ \let\pst@ifcustom\iftrue%
+ \Pst@customtrue%
+ \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%
+ \def\pst@linetype{\pslinetype}%
+ \def\psk@liftpen{\z@}%
+% \psset{liftpen=0}%
+ \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
+ \let\pst@ifcustom\iffalse
+ \ignorespaces
+}
+%
+\let\pst@ifcustom\iffalse
+%
+\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{}
+\define@key[psset]{pstricks}{liftpen}[0]{%
+ \ifPst@custom%
+ \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\fi%
+}
+\psset[pstricks]{liftpen=0}
+\def\psk@liftpen{-1}
+%
+\define@key[psset]{pstricks}{linetype}[2]{%
+ \pst@getint{#1}\pslinetype
+ \ifnum\pst@cntg<-3
+ \@pstrickserr{linetype must be greater than -3}\@ehpa
+ \def\pslinetype{2}%
+ \fi}
+\psset[pstricks]{linetype=2}% otherwise there is a problem when using e.g.
+% \psaxes[axesstyle=frame,linestyle=dashed]{->}(3,-2)
+%
+\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\reversepath{\addto@pscode{ reversepath }}% 20131209 hv
+ \def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
+ \def\rmoveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor rmoveto}}%
+ \def\closepath{\addto@pscode{closepath}}%
+ \def\gsave{\begingroup\addto@pscode{gsave}}%
+ \def\grestore{\endgroup\addto@pscode{grestore}}%
+ \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor translate}}%
+ \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{\def\pst@par{}\pst@object{stroke}}%
+ \def\fill{\def\pst@par{}\pst@object{fill}}%
+ \def\openshadow{\def\pst@par{}\pst@object{openshadow}}%
+ \def\closedshadow{\def\pst@par{}\pst@object{closedshadow}}%
+ \def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor \tx@Shadow}}%
+ \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{%
+ \@ifundefined{\string\color@#1}{}{\addto@pscode{\pst@usecolor{#1}}}}% hv 1.14 2005-12-17
+ \def\arrows#1{{\psset[pstricks]{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@Line{Line }
+\def\tx@Arcto{Arcto }
+\def\tx@CheckClosed{CheckClosed }
+\def\tx@Polygon{Polygon }
+\define@key[psset]{pstricks}{gangle}[0]{\pst@getangle{#1}\psk@gangle}
+\define@boolkey[psset]{pstricks}[Pst@]{trueAngle}[true]{}
+\psset[pstricks]{trueAngle=false,gangle=0}
+%
+\def\tx@Diamond{Diamond }
+\def\psdiamond{\def\pst@par{}\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{\def\pst@par{}\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 }
+%
+\define@key[psset]{pstricks}{curvature}[1 0.1 0]{%
+ \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[pstricks]{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{
+ \ifPst@noCurrentPoint\else\pst@cp\fi % current point
+ \psk@curvature\space /c ED /b ED /a ED
+ \ifshowpoints true \else false \fi
+ \ifx\pslinestyle\psls@@symbol \psls@symbol OpenSymbolCurve \else \tx@OpenCurve \fi
+ \ifPst@variableLW \pst@flattenpath \fi
+ }%
+ \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
+ \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
+ \ifx\pslinestyle\psls@@symbol \psls@symbol AltOpenSymbolCurve \else \tx@AltCurve \fi
+ }%
+ \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
+ \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
+ \ifx\pslinestyle\psls@@symbol \psls@symbol ClosedSymbolCurve \else \tx@ClosedCurve \fi
+ }%
+ \def\pst@linetype{1}%
+ \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
+ \end@ClosedObj}
+%
+\def\pscspline{\pst@object{pscspline}}% Christoph Bersch
+\def\pscspline@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\pscspline@ii
+ }%
+}
+\def\tx@Spline{Spline }
+\def\pscspline@ii{%
+ \addto@pscode{
+ \ifPst@noCurrentPoint\else\pst@cp\fi
+ \tx@setlinejoin
+ \ifshowpoints true \else false \fi
+ \ifx\pslinestyle\psls@@symbol
+ \psls@symbol OpenSymbolSpline
+ \else
+ \tx@Spline
+ \fi
+ }%
+ \end@OpenObj
+}
+%
+\define@key[psset]{pstricks}{dotsize}[2pt 2]{%
+ \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[pstricks]{dotsize=2pt 2}
+%
+\define@key[psset]{pstricks}{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}
+%
+\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}
+%
+\define@key[psset]{pstricks}{dotangle}[0]{%
+ \pst@getangle{#1}\psk@@dotangle
+ \ifdim\psk@@dotangle\p@=\z@
+ \let\psk@dotangle\@empty
+ \else
+ \edef\psk@dotangle{\psk@@dotangle rotate }%
+ \fi}
+\psset[pstricks]{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}
+%
+\psset[pstricks]{dotscale=1}
+%
+\def\psdot{\pst@object{psdot}}
+\def\psdot@i{\@ifnextchar({\psdot@ii}{\psdot@ii(\z@,\z@)}}
+\def\psdot@ii(#1){%
+ \begin@SpecialObj%
+% hv modification 1.13 2005-11-28
+ \solid@star%
+% hv modification end
+ \pst@@getcoor{#1}%
+ \addto@pscode{
+ \psk@dotsize
+ \@nameuse{psds@\psk@dotstyle}
+ \tx@setStrokeTransparency
+ \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}
+ \tx@setStrokeTransparency
+ newpath
+ n { transform floor .5 add exch floor .5 add exch itransform Dot } repeat }
+%
+% DG: dead code (to suppress until \psset[pstricks]{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 SLW 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?
+%
+\define@key[psset]{pstricks}{dotstyle}[*]{%
+ \@ifundefined{psds@#1}%
+ {\@pstrickserr{Dot style `#1' not defined}\@eha}%
+ {\edef\psk@dotstyle{#1}}}
+\psset[pstricks]{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{% for filled objects
+ \@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 % fill first
+% \fi
+ gsave \psk@dotscale #4 show grestore % show the unfilled one
+% 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]{StandardSymL}{<E0>}
+%\newpsfontdot{diamond}[2.3 0.0 0.0 2.3 -0.8533 -0.5336]{StandardSymL}{<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]{StandardSymL}{<C5>}
+\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{StandardSymL}{<C4>}
+\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{StandardSymL}{<B4>}
+\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{NimbusRomNo9L-Regu}{<2B>}
+\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{NimbusRomNo9L-Regu}{<2A>}
+\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{NimbusRomNo9L-Bold}{<2B>}
+\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{NimbusRomNo9L-Bold}{<2A>}
+\newpsfontdot{|}[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{NimbusSanL-Regu}{(|)}
+% DG/SR modification begin - Oct. 27, 1997 - Patch 7
+%[1.98413 0.0 0.0 1.98413 -0.258929 -0.712302]{NimbusSanL-Regu}{(|)}
+% DG/SR modification end
+\newpsfontdot{B|}[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{NimbusSanL-Bold}{(|)}%
+% DG/SR modification begin - Oct. 27, 1997 - Patch 7
+%[1.98413 0.0 0.0 1.98413 -0.277778 -0.78302]{NimbusSanL-Bold}{(|)}
+
+% DG/SR modification end
+\iffalse
+\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{StandardSymL}{<B7>}
+\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{StandardSymL}{<B0>}
+\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{NimbusRomNo9L-Bold}{<CA>}
+\fi
+% Etienne Riga
+\newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(k)}
+\newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(K)}
+\newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)}
+%
+\newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
+\newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
+\newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
+\newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)}
+\newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)}
+\newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(G)}
+\newpsfontdotH{Octogon}[1 0 0 1 0 0]{PSTricksDotFont}{(f)}{(g)}
+\newpsfontdotH{BoldOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(F)}{(g)}
+\newpsfontdot{SolidOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(g)}
+%
+\newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
+\newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
+\newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
+%\newpsfontdot{SolidCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
+\newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
+\newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
+\newpsfontdot{SolidTriangle}[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{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
+\newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
+\newpsfontdot{Add}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(a)}
+\newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(A)}
+\newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(x)}
+\newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(X)}
+\newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)}
+\newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)}
+\newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)}
+\newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)}
+\newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)}
+\newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)}
+\newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(i)}
+\newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(I)}
+\newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
+\newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
+\newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
+%
+\newdimen\pslinearc
+\define@key[psset]{pstricks}{linearc}[0pt]{\pssetlength\pslinearc{#1}}
+\psset[pstricks]{linearc=0pt}
+%
+\def\psline{\pst@object{psline}}
+\def\psline@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\psline@ii
+ }%
+}
+\def\psline@ii{%
+ \ifx\pslinestyle\psls@@symbol\addto@pscode{ \psls@symbol SymbolLine }%
+ \else
+ \addto@pscode{
+ \ifPst@noCurrentPoint\else\pst@cp\fi % current point?
+ \psline@iii % arc and lineto type
+ \tx@Line % .pro function
+ }%
+ \fi
+ \end@OpenObj
+}
+\def\psline@iii{%
+ \ifdim\pslinearc>\z@
+ /r \pst@number\pslinearc def
+ /Lineto { \tx@Arcto } def
+ \else
+ /Lineto /lineto load def
+ \fi
+ \tx@setlinejoin % hv 2007-10-13
+ \ifshowpoints true \else false \fi
+}
+%
+\def\psLine{\pst@object{psLine}}
+\def\psLine@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \psLine@ii}}
+\def\psLine@ii(#1){\@ifnextchar({\psLine@iii(#1)}{\psLine@iii(0,0)(#1)}}%
+\def\psLine@iii(#1)(#2){%
+ \pst@getcoor{#1}\pst@tempA
+ \pst@getcoor{#2}\pst@tempB
+ \addto@pscode{
+ \ifPst@noCurrentPoint\else\pst@cp\fi % current point?
+ [ % start for coordinate array
+ \pst@tempB
+ \pst@tempA % order vice versa
+ 4 copy Pyth2 \psk@arrowlength ge
+ { \psline@iii \tx@Line }
+ { pop pop pop pop pop } ifelse
+ }%
+ \end@OpenObj
+ \ignorespaces
+}
+\def\psLineSegments{\leavevmode\pst@killglue\pst@object{psLineSegments}}
+\def\psLineSegments@i{\pst@getarrows{\psLineSegments@ii}}
+\def\psLineSegments@ii(#1)(#2){%
+ \begingroup
+ \use@keep@par
+ \solid@star
+ \ifpsdoubleline\pst@setdoublesep\fi
+ \init@pscode
+ \let\pst@linetype\pst@arrowtype
+ \pst@addarrowdef
+ \pst@getcoor{#1}\pst@tempA
+ \pst@getcoor{#2}\pst@tempB
+ \addto@pscode{
+ \ifPst@noCurrentPoint\else\pst@cp\fi % current point?
+ [ % start for coordinate array
+ \pst@tempB
+ \pst@tempA % order vice versa
+ 4 copy Pyth2 \psk@arrowlength ge
+ { \psline@iii \tx@Line }
+ { pop pop pop pop pop } ifelse
+ }%
+ \end@OpenObj
+ \ignorespaces
+ \@ifnextchar(\psLineSegments@ii{}%
+}%
+\def\pst@isnum#1{\pst@isnum@i\zap@space#1 \@empty\@nil}%
+\def\pst@isnum@i#1\@nil{%
+ \if!\ifnum9<1#1!\else_\fi%
+ \expandafter\@firstoftwo%
+ \else%
+ \expandafter\@secondoftwo%
+ \fi}
+%
+\def\psset@@symbol#1#2#3#4\@nil{%
+ \ifx\relax#4\relax\def\psk@symbol{(#1)}%
+ \else%
+ \pst@isnum{#1#2#3}{%
+ \pst@cnta='#1#2#3\relax%
+ \ifnum\pst@cnta>'377\relax%
+ \@pstrickserr{Number too large!}\@ehpb%
+ \else%
+ \def\psk@symbol{(\@backslashchar#1#2#3)}%
+ \fi%
+}{\@pstrickserr{Not a number!}\@ehpb}%
+ \fi}
+%
+\define@key[psset]{pstricks}{symbol}[a]{\expandafter\psset@@symbol#1!!\@nil}
+\psset[pstricks]{symbol=a}
+%
+\newdimen\pst@symbolStep
+\define@key[psset]{pstricks}{symbolStep}[20pt]{\pst@expandafter\pst@@symbolStep#1\@nil}
+\def\pst@@symbolStep#1#2\@nil{\if-#1\pssetlength\pst@symbolStep{-#2pt}\else\pssetlength\pst@symbolStep{#1#2}\fi}
+\psset[pstricks]{symbolStep=20pt}
+
+\newdimen\pst@symbolWidth
+\newdimen\pst@symbolLinewidth
+\define@key[psset]{pstricks}{symbolWidth}[10pt]{\pssetlength\pst@symbolWidth{#1}}
+\define@key[psset]{pstricks}{symbolLinewidth}[0.5pt]{\pssetlength\pst@symbolLinewidth{#1}}
+\psset[pstricks]{symbolWidth=10pt,symbolLinewidth=0.5pt}
+
+\define@key[psset]{pstricks}{symbolFont}[Dingbats]{\def\psk@symbolFont{/#1 }}
+\psset[pstricks]{symbolFont=Dingbats}
+\define@boolkey[psset]{pstricks}[Pst@]{rotateSymbol}[true]{}
+\psset[pstricks]{rotateSymbol=false}
+\define@key[psset]{pstricks}{startAngle}[0]{\pst@getangle{#1}\psk@startAngle}
+\define@key[psset]{pstricks}{tickAngle}[0]{\pst@getangle{#1}\psk@tickAngle}
+\psset[pstricks]{startAngle=0,tickAngle=0}
+\define@boolkey[psset]{pstricks}[Pst@]{curveticks}[true]{}
+\psset[pstricks]{curveticks=false}
+
+%
+\def\psls@symbol{
+ /Symbol \psk@symbol def
+ /SymbolWidth \pst@number\pst@symbolWidth def
+ /SymbolLinewidth \pst@number\pst@symbolLinewidth def
+ /SymStep \pst@number\pst@symbolStep def
+ \psk@symbolFont findfont %0. [1.0 0.0 0.0 1.0 0.0 0.0]
+ \pst@number\pst@symbolWidth scalefont %dup
+ setfont
+ /rotateSymbol \ifPst@rotateSymbol true \else false \fi def
+ /tickAngle \psk@tickAngle\space def
+ /startAngle \psk@startAngle\space def
+ /CorrAngle \ifx\psk@rot\@empty 0 \else \psk@rot \fi def
+ /curveticks \ifPst@curveticks true \else false \fi def
+ \pst@number\pslinewidth SLW
+}
+\def\psls@@symbol{symbol}
+%
+\def\psPline{\def\pst@par{}\pst@object{psPline}}% perpendicular to another line B-C
+\def\psPline@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\psPline@ii}% \pst@coors on stack
+}
+\def\psPline@ii{%
+ \addto@pscode{ % [ pC pB pA is on stack
+ /yA ED /xA ED
+ /yB ED /xB ED
+ yB sub exch xB sub div /mBC ED % the slope
+ /mA 1 mBC neg div def % orthogonal
+ /xS yA yB sub mBC xB mul add mA xA mul sub mBC mA sub div def
+ /yS mBC xS xB sub mul yB add def
+ xS yS xA yA
+ \ifPst@noCurrentPoint\else\pst@cp\fi % current point
+ \psline@iii % arc and lineto type
+ \tx@Line % .pro function
+ }%
+ \end@OpenObj%
+ \ignorespaces%
+}
+%
+\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{%
+ \ifx\pslinestyle\psls@@symbol\addto@pscode{ \psls@symbol SymbolPolygon }%
+ \else \addto@pscode{\psline@iii \tx@Polygon}%
+ \fi%
+ \def\pst@linetype{1}%
+ \end@ClosedObj}
+%
+\define@key[psset]{pstricks}{framearc}[0]{\pst@checknum{#1}\psk@framearc}
+\psset[pstricks]{framearc=0}
+%
+\define@key[psset]{pstricks}{cornersize}[relative]{\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[pstricks]{cornersize=relative}
+%
+\def\tx@Rect{Rect }
+\def\tx@OvalFrame{OvalFrame }
+\def\tx@Frame{Frame }
+%
+\define@key[psset]{pstricks}{dimen}[outer]{\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[pstricks]{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
+}
+
+\iffalse
+\def\psSquare{\pst@object{psSquare}}
+\def\psSquare@i(#1)(#2){%
+ \begin@ClosedObj
+ \pst@getcoor{#1}\pst@tempa
+ \pst@getcoor{#2}\pst@tempb
+ \addto@pscode{ \psk@cornersize
+ \pst@tempa /yA ED /xA ED
+ \pst@tempb /yB ED /xB ED
+ xA yA moveto xB yB L
+ xA xB sub yA yB sub atan /Angle ED
+ xA yA xB yB Pyth2 dup xA add exch yA add
+ \psk@dimen
+ \tx@Frame
+% grestore
+ }%
+ \def\pst@linetype{2}%
+ \showpointsfalse
+ \end@ClosedObj
+}
+\fi
+%
+\def\psTextFrame{\pst@object{psTextFrame}}
+\def\psTextFrame@i(#1)(#2)#3{%
+ \addbefore@par{ref=c}% to prevent an empty value
+ \leavevmode%
+ \pst@killglue
+ \begingroup
+ \use@par
+ \ifx\psk@yref\relax \def\psk@yref{0}\fi% no Baseline possible
+ \SpecialCoor
+ \pst@getcoor{#1}\pst@tempA
+ \pst@getcoor{#2}\pst@tempB
+ \if@star\psframe*(#1)(#2)\else\psframe(#1)(#2)\fi
+ \rput(! \pst@tempA \pst@tempB % x1 y1 x2 y2
+ exch 4 -1 roll % y1 y2 x2 x1
+ dup /x1 ED % y1 y2 x2 x1
+ sub /dx ED % y1 y2
+ exch dup /y1 ED % y2 y1
+ sub /dy ED
+ x1 dx \psk@xref\space mul add \pst@number\psxunit div
+ y1 dy \psk@yref\space mul add \pst@number\psyunit div ){#3}
+ \endgroup
+ \ignorespaces}
+%
+\def\tx@BezierNArray{ BezierNArray }
+\def\tx@OpenBezier{ OpenBezier }
+\def\tx@ClosedBezier{ ClosedBezier }
+\def\tx@BezierShowPoints{ BezierShowPoints }
+\def\tx@BezierCurve{ BezierCurve }
+\def\pst@BezierType{2 } % the default
+%
+\def\psbezier{\pst@object{psbezier}}
+\def\psbezier@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\psbezier@ii%
+ }%
+}
+\def\psbezier@ii{%
+ \addto@pscode{
+ \ifPst@noCurrentPoint\else\pst@cp\fi
+ \ifshowpoints true \else false \fi
+ \ifx\pslinestyle\psls@@symbol \psls@symbol OpenSymbolBezier
+ \else
+ \tx@OpenBezier
+ \ifshowpoints \tx@BezierShowPoints \fi
+ \fi
+ }%
+ \def\pst@linetype{1}%
+ \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
+ \end@OpenObj}
+%
+\def\pscbezier{\def\pst@par{}\pst@object{pscbezier}}
+\def\pscbezier@i{%
+ \begin@ClosedObj
+ \pst@getcoors[\pscbezier@ii}
+%
+\def\pscbezier@ii{%
+ \addto@pscode{%
+ \ifshowpoints true \else false \fi
+ \ifx\pslinestyle\psls@@symbol \psls@symbol ClosedSymbolBezier
+ \else
+ \tx@ClosedBezier
+ \ifshowpoints \tx@BezierShowPoints \fi
+ \fi}%
+% \chardef\pst@linetype=1
+ \def\pst@linetype{1}%
+ \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
+ \end@ClosedObj}
+%
+\iffalse
+\define@key[psset]{pstricks}{epsilon}[0.005]{\pst@checknum{#1}\psk@epsilon}
+\psset[pstricks]{epsilon=0.005} % 200 steps for one curve
+%
+\def\psBezier#1{% % allowed order is 1 ... 9
+ \ifnum#1>0 \ifnum#1<10 \def\pst@BezierType{#1 }\fi\fi%
+ \def\pst@par{}\pst@object{psBezier}}
+\def\psBezier@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\psBezier@ii%
+}}
+\def\psBezier@ii{%
+ \addto@pscode{%
+ \psk@epsilon % step for Bezier T=0,0+epsilon,0+i*epsilon,...,1
+ \pst@BezierType % type of the Bezier curve 2,3,4,...
+ \tx@BezierCurve
+ \ifshowpoints \tx@BezierShowPoints \fi
+ }%
+ \end@OpenObj}
+\fi
+%
+\define@key[psset]{pstricks}{pType}[0]{\pst@cntg=#1\relax\edef\psk@pType{\the\pst@cntg}}
+\psset[pstricks]{pType=0}
+\def\tx@Parab{Parab }% given by 1 point and the min/max
+\def\tx@Parabo{Parab1 }% given by 2 points for y-a=(x-b)^2
+%
+\def\psparabola{\pst@object{psparabola}}% 2009-05-19 (hv)
+\def\psparabola@i{\pst@getarrows\psparabola@ii}
+\def\psparabola@ii#1(#2)#3(#4){% #2 P #4 SP
+ \begin@OpenObj
+ \pst@getcoor{#2}\pst@tempa
+ \pst@@getcoor{#4}%
+ \addto@pscode{\pst@tempa \pst@coor
+ \ifcase\psk@pType
+ \tx@Parab \or
+ \tx@Parabo
+ \fi}%
+ \end@OpenObj}
+\let\parabola\psparabola% compatibility (hv)
+%
+%
+\define@key[psset]{pstricks}{gridwidth}[0.8pt]{\pst@getlength{#1}\psk@gridwidth}
+\psset[pstricks]{gridwidth=.8pt}
+\define@key[psset]{pstricks}{griddots}[0]{%
+ \pst@cntg=#1\relax
+ \edef\psk@griddots{\the\pst@cntg}}
+\psset[pstricks]{griddots=0}
+\define@key[psset]{pstricks}{gridcolor}[black]{\pst@getcolor{#1}\psgridcolor}
+\psset[pstricks]{gridcolor=black}
+\define@key[psset]{pstricks}{subgridwidth}[0.4pt]{\pst@getlength{#1}\psk@subgridwidth}
+\psset[pstricks]{subgridwidth=0.4pt}
+\define@key[psset]{pstricks}{subgridcolor}[gray]{\pst@getcolor{#1}\pssubgridcolor}
+\psset[pstricks]{subgridcolor=gray}
+\define@key[psset]{pstricks}{subgriddots}[0]{%
+ \pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
+\psset[pstricks]{subgriddots=0}
+\define@key[psset]{pstricks}{subgriddiv}[5]{%
+ \pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
+\psset[pstricks]{subgriddiv=5}
+%
+\define@key[psset]{pstricks}{gridfont}[NimbusSanL-Regu]{\def\psk@gridfont{/#1 }}% hv 2007-11-13
+\ifpst@psfonts
+ \psset[pstricks]{gridfont=Helvetica}%
+\else
+ \psset[pstricks]{gridfont=NimbusSanL-Regu}%
+\fi
+%
+\define@key[psset]{pstricks}{gridlabels}[10pt]{\pst@getlength{#1}\psk@gridlabels}
+\psset[pstricks]{gridlabels=10pt}
+\define@key[psset]{pstricks}{gridlabelcolor}[black]{\pst@getcolor{#1}\psgridlabelcolor}
+\psset[pstricks]{gridlabelcolor=black}
+\define@key[psset]{pstricks}{xgridoffset}[0]{\pst@getlength{#1}\psk@xgridoffset}
+\define@key[psset]{pstricks}{ygridoffset}[0]{\pst@getlength{#1}\psk@ygridoffset}
+\psset[pstricks]{xgridoffset=0,ygridoffset=0}
+
+\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\relax
+ \addto@pscode{
+ /xGridOffset \psk@xgridoffset\space def
+ /yGridOffset \psk@ygridoffset\space def
+ gsave
+ \tx@setStrokeTransparency
+ \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
+ \psk@gridfont findfont 0 scalefont setfont % hv 1.16
+ \tx@Grid
+ grestore
+ }%
+ \fi%
+ \addto@pscode{
+ gsave
+ /xGridOffset \psk@xgridoffset def
+ /yGridOffset \psk@ygridoffset def
+ \tx@setStrokeTransparency
+ \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
+ \psk@gridfont findfont \psk@gridlabels scalefont setfont % hv 1.16
+ \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\ifinner1\else2\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@\relax$\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{%
+ \@namedef{#1}{\pst@longbox#2}%
+ \@namedef{end#1}{\pst@endlongbox}}
+%
+\newdimen\psframesep
+\define@key[psset]{pstricks}{framesep}[3pt]{\pssetlength\psframesep{#1}}
+\psset[pstricks]{framesep=3pt}
+%
+\define@boolkey[psset]{pstricks}[ps]{boxsep}[true]{}
+\psset[pstricks]{boxsep}
+%
+\def\pst@useboxpar{%
+ \use@par
+ \if@star
+ \let\pslinecolor\psfillcolor
+ \solid@star
+ \let\solid@star\relax
+ \fi
+ \ifpsdoubleline \pst@setdoublesep \fi}
+%
+\def\psframebox{\def\pst@par{}\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 % arcradius boolean
+ \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{\def\pst@par{}\pst@object{psdblframebox}}
+\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
+%
+\define@key[psset]{pstricks}{clipcommand}[clip]{\def\pst@clipcommand{#1 }}
+\psset[pstricks]{clipcommand=clip}% alternative is eoclip
+%
+\def\psclip{\@ifnextchar[\psclip@i{\psclip@i[]}}%
+\def\psclip@i[#1]#2{%
+ \leavevmode%
+ \begingroup%
+ \ifx\relax#1\relax\else\psset{#1}\fi%
+ \begin@psclip%
+ \begingroup%
+ \def\use@pscode{%
+ \pstVerb{
+ \pst@dict
+ /mtrxc CM def
+ CP CP T
+ \tx@STV
+ \psk@origin
+ \psk@swapaxes
+ newpath
+ \pst@code
+ \pst@clipcommand
+ 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@{#2}%
+ \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
+ \pst@clipcommand
+ newpath
+ 0 0 moveto
+ setmatrix}%
+ \unhbox\pst@hbox%
+ \end@psclip}}
+%
+\def\psshadowbox{\def\pst@par{}\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
+ \ignorespaces
+}
+\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\space 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@dimn=\ht\pst@hbox% % the height of the box
+ \advance\pst@dimn by \dp\pst@hbox% % the depth of the box added to \pst@dimn
+ \divide\pst@dimn by 2% % \pst@dimn/2
+ \pst@dimm=0.5\wd\pst@hbox% % the half of the width
+ \pst@Pyth\pst@dimm\pst@dimn\pst@dimo% % the diameter
+ \advance\pst@dimo by \pslinewidth%
+ \advance\pst@dimo by \psframesep%
+ \advance\pst@dimn by -\pst@dimo%
+ \setbox\pst@hbox=\hbox to 2\pst@dimo{\hss\vbox{\kern-\pst@dimn\box\pst@hbox}\hss}%
+ \advance\pst@dimn by -\dp\pst@hbox%
+ \dp\pst@hbox=-\pst@dimn}
+%
+\let\pst@nodehook\relax
+%
+\def\psCirclebox{\def\pst@par{}\pst@object{psCirclebox}}
+\def\psCirclebox@i{\pst@makebox\psCirclebox@ii}
+\def\psCirclebox@ii{%
+ \begingroup
+ \pst@useboxpar
+ \pst@dima=\ht\pst@hbox
+ \advance\pst@dima by -\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{\def\pst@par{}\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{\def\pst@par{}\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}
+%
+\define@key[psset]{pstricks}{trimode}[U]{\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 % Right
+ \else
+ \ifx D\pst@tempg 2 % Down
+ \else
+ \ifx L\pst@tempg 3 % Left
+ \else
+ \ifx l\pst@tempg 4 % |_
+ \else
+ \ifx r\pst@tempg 5 % _|
+ \else 0 \fi % Up
+ \fi
+ \fi
+ \fi
+ \fi}%
+}
+\psset[pstricks]{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
+ 0.5
+ \pst@number\pst@dimc % Width
+ \pst@number\pst@dimd % Height
+ \ifcase\psk@trimode
+ \or %% 0
+ exch \or %% 1
+ \or %% 2
+ exch \or %% 3
+ \or %% 4
+ \or %% 5
+ \fi
+ \psk@trimode -90 mul
+ \pst@number\pst@dima % x coor for text
+ \pst@number\pst@dimb % y coor for text
+ \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 % totalheight
+ \divide\pst@dimg 2 % 0.5 totalheight
+ \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% no star for trimode=
+ \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% trimode=R*,L*,U*,D*
+ \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}
+%
+\define@key[psset]{pstricks}{arcsepA}[0]{\pst@getlength{#1}\psk@arcsepA}
+\define@key[psset]{pstricks}{arcsepB}[0]{\pst@getlength{#1}\psk@arcsepB}
+\define@key[psset]{pstricks}{arcsep}[0]{%
+ \pst@getlength{#1}\psk@arcsepA\let\psk@arcsepB\psk@arcsepA}
+\psset[pstricks]{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{%
+ \pst@getangle{#3}\pst@tempa
+ \pst@getangle{#4}\pst@tempb
+ \ifx\pst@tempa\pst@tempb
+ \else
+ \begin@OpenObj
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dima{#2}%
+ \addto@pscode{\psarc@iv \psarc@v
+ \ifPst@variableLW \pst@flattenpath \fi
+ }%
+ \gdef\psarc@type{0}%
+ \showpointsfalse
+ \end@OpenObj
+ \fi
+}
+%
+\def\psarcOA{\pst@object{psarcOA}}% \psarcOA[..](O)(A){angle1}{angle2}
+\def\psarcOA@i{\@ifnextchar({\psarcOA@iii}{\psarcOA@ii}}
+\def\psarcOA@ii#1{\addto@par{arrows=#1}\@ifnextchar(\psarcOA@iii{\psarcOA@iii(0,0)}}
+\def\psarcOA@iii(#1)(#2)#3#4{%
+ \pst@getangle{#3}\pst@tempa
+ \pst@getangle{#4}\pst@tempb
+ \ifx\pst@tempa\pst@tempb
+ \else
+ \begin@OpenObj
+ \pst@getcoor{#1}\pst@tempA
+ \pst@getcoor{#2}\pst@tempB
+ \addto@pscode{
+ \pst@tempA 2 copy /y ED /x ED \pst@tempB Pyth2 /r ED
+ x y translate
+ /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 moveto
+ \fi
+ \fi
+ /angleAtoB angleB angleA gt { true }{ false } ifelse def
+ 0 0 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
+% dup AngleA gt AngleAtoB exor { neg } fi
+ \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
+ dup angleA gt angleAtoB xor { pop angleA } if
+ \fi
+ \ifcase\psarc@type arc \or arcn \fi
+ \ifPst@variableLW \pst@flattenpath \fi
+ x neg y neg translate
+ }%
+ \gdef\psarc@type{0}%
+ \showpointsfalse
+ \end@OpenObj
+ \fi
+}
+\def\psarc@iv{%
+ \pst@coor /y ED /x ED
+ /r \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dima \fi 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{%
+ /angleAtoB angleB angleA gt { true }{ false } ifelse def
+ 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
+% dup AngleA gt AngleAtoB exor { neg } fi
+ \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
+ dup angleA gt angleAtoB xor { pop angleA } if
+ \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{\def\pst@par{}\pst@object{psarcn}}
+\def\psarcn@i{\def\psarc@type{1}\psarc@i}
+%
+\def\psarcAB{\pst@object{psarcAB}}% hv 2008-11-26
+\def\psarcAB@i{%
+ \addbefore@par{psscale=1}% be sure, that it is defined
+ \pst@getarrows{%
+ \begin@OpenObj%
+ \pst@getcoors{}%
+ \psarcAB@ii
+ }%
+}
+\def\psarcAB@ii{%
+ \addto@pscode{
+ /y ED /x ED /yA ED /xA ED /yB ED /xB ED
+ /r xB yB x y Pyth2 \psk@psscale\space mul def
+ /c 57.2957 r \tx@Div def
+ /angleA
+ yA y sub xA x sub atan
+ \psk@arcsepA c mul 2 div
+ \ifcase\psarc@type add \else sub \fi
+ def
+ /angleB
+ yB y sub xB x sub atan
+ \psk@arcsepB c mul 2 div
+ \ifcase\psarc@type sub \else add \fi
+ def
+ \ifx\psk@arrowA\@empty
+ \ifnum\psk@liftpen=2
+ r angleA \tx@PtoC
+ y add exch x add exch moveto
+ \fi
+ \fi
+ \psarc@v}%
+ \gdef\psarc@type{0}%
+ \showpointsfalse%
+ \end@OpenObj%
+}
+\def\psarcnAB{\def\pst@par{}\pst@object{psarcnAB}}
+\def\psarcnAB@i{\def\psarc@type{1}\psarcAB@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{\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@coor /ry ED /rx ED
+ \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi
+ \pst@tempa
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempa }
+ { rx abs ry abs sub cvi 0 eq { \pst@tempa }{ rx ry
+ \tx@UserCoor exch \pst@tempa tan mul exch atan
+ \pst@tempa 180 div 0.5 add floor
+ 180 mul sub } ifelse } ifelse
+ \fi
+ \pst@tempb
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempb }
+ { rx abs ry abs sub cvi 0 eq { \pst@tempb }{ rx ry
+ \tx@UserCoor exch \pst@tempb tan mul exch atan
+ \pst@tempb 180 div 0.5 add floor
+ 180 mul sub } ifelse } ifelse
+ \fi
+ rx ry
+ \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{\pst@object{psellipticarcn}}
+\def\psellipticarcn@i{\let\if@psarcn\iftrue\psellipticarc@ii}
+%
+\def\psellipticarc{\pst@object{psellipticarc}}
+\def\psellipticarc@i{\let\if@psarcn\iffalse\psellipticarc@ii}
+
+\define@boolkey[psset]{pstricks}[Pst@]{correctAngle}[true]{}
+\psset{correctAngle}
+
+\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{%
+% \addbefore@par{correctAngle=false}
+ \pst@getangle{#3}\pst@tempc % start angle
+ \pst@getangle{#4}\pst@tempd % end angle
+ \ifx\pst@tempc\pst@tempd
+ \else % same angles? then do nothing
+ \begin@OpenObj
+ \pst@getcoor{#1}\pst@tempa % origin
+ \pst@getcoor{#2}\pst@tempb % a b
+ \addto@pscode{
+ \psellipticarc@definearg \psellipticarc@draw
+ \ifPst@variableLW \pst@flattenpath \fi
+ \ifshowpoints{}
+ gsave
+ xOrig yOrig T % set origin to ellipse origin
+ \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi
+ rx ry scale % now we draw a circle :-)
+ 1 \pst@tempc % start angle
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempc }
+ { rx abs ry abs sub cvi 0 eq { \pst@tempc }{ rx ry
+ \tx@UserCoor exch \pst@tempc tan mul exch atan
+ \pst@tempc 180 div 0.5 add floor
+ 180 mul sub } ifelse } ifelse
+ \fi
+ PtoC moveto
+ 0 0 lineto
+ 1 \pst@tempd % end angle
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempd }
+ { rx ry \tx@UserCoor exch \pst@tempd tan mul exch atan
+ \pst@tempd 180 div .5 add floor 180 mul sub } ifelse
+ \fi
+ PtoC lineto 0 0 lineto
+ closepath
+ % \ifcase\psarc@type arc \or arcn \fi
+ CLW 3 div \pst@number\psunit div SLW
+ [ 1 1 \tx@UserCoor 2 mul ] 0 setdash
+ stroke
+ grestore
+ \fi
+ }%
+ \showpointsfalse
+ \end@OpenObj
+ \fi
+}
+\def\psellipticarc@definearg{%
+% \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi
+ \pst@tempa /yOrig ED /xOrig 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 % a b
+ /angleA
+ /d { \if@psarcn sub \else add \fi } def
+% \pst@tempc
+% the angle in the parameter equation is not proportional to the real angle!
+% phi=atan(b*tan(angle)/a)+floor(angle/180+0.5)*180
+ \pst@tempc
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempc }
+ { rx ry \tx@UserCoor exch \pst@tempc tan mul exch atan
+ \pst@tempc 180 div .5 add floor 180 mul sub } ifelse
+ \fi
+ \psk@arcsepA 2 div
+ ArcAdjust
+ def
+ /angleB
+ /d { \if@psarcn add \else sub \fi } def
+% \pst@tempd
+ \pst@tempd
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempd }
+ { rx ry \tx@UserCoor exch \pst@tempd tan mul exch atan
+ \pst@tempd 180 div .5 add floor 180 mul sub } ifelse
+ \fi
+ \psk@arcsepB 2 div ArcAdjust def
+% \ifshowpoints\psellipticarc@showpoints\fi
+ \ifx\psk@arrowA\@empty
+ \ifnum\psk@liftpen=2
+ angleA cos rx mul xOrig add
+ angleA sin ry mul yOrig 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
+ xOrig yOrig T
+ \ifx\psk@rot\@empty \else \psk@rot\space rotate \fi
+ rx ry scale
+ \pst@ifcustom\else
+ 0 0 moveto
+ exch dup dup % end start start start
+ cos exch sin moveto % end start
+ exch % start end
+ \fi
+%% \if@star 0 0 moveto \fi % for filling
+ \if@psarcn arcn \else arc \fi
+%% \if@star 0 0 moveto \fi
+ mtrx setmatrix%
+}
+\def\psellipticarc@showpoints{%
+ gsave
+ /mtrx CM def
+ xOrig yOrig T
+ rx ry scale
+ 0 0 moveto
+ 0 0 1
+ \pst@tempc % start angle
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempc }
+ { rx abs ry abs sub cvi 0 eq { \pst@tempc }{ rx ry
+ \tx@UserCoor exch \pst@tempc tan mul exch atan
+ \pst@tempc 180 div 0.5 add floor
+ 180 mul sub } ifelse } ifelse
+ \fi
+ \pst@tempd % end angle
+ \ifPst@correctAngle
+ cvi 90 mod 0 eq { \pst@tempd }
+ { rx abs ry abs sub cvi 0 eq { \pst@tempd } { rx ry
+ \tx@UserCoor exch \pst@tempd tan mul exch atan
+ \pst@tempd 180 div 0.5 add floor
+ 180 mul sub } ifelse } ifelse
+ \fi
+ \ifcase\psarc@type arc \or arcn \fi
+ closepath
+ mtrx setmatrix
+ CLW 2 div SLW
+ [ \psk@dash\space ] 0 setdash
+ stroke
+ grestore %
+}
+\def\pscircle{\def\pst@par{}\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}}% qdisk does not allow
+ \else% to use opacity option
+ \addbefore@par{dimen=middle}%
+ \begin@ClosedObj
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dimc{#2}%
+ \def\pst@linetype{4}%
+ \addto@pscode{
+ \pst@coor 2 copy moveto
+ \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimc \fi
+ \psk@dimen CLW mul round % prevent rounding errors
+ sub
+ dup 0 rmoveto
+ 0 360 arc
+ \ifPst@variableLW \pst@flattenpath \fi
+ closepath
+ }%
+ \showpointsfalse
+ \end@ClosedObj
+ \fi
+ \ignorespaces}
+%
+\def\pscircleOA{\def\pst@par{}\pst@object{pscircleOA}}% hv 2008-04-14
+\def\pscircleOA@i(#1)(#2){%
+ \addbefore@par{dimen=middle}%
+ \begin@ClosedObj
+ \pst@getcoor{#1}\pst@tempA
+ \pst@@getcoor{#2}%
+ \def\pst@linetype{4}%
+ \addto@pscode{
+ \pst@tempA % x0 y0
+ 2 copy % xO yO xO yO
+ \pst@coor % xO yO xO yO xA yA
+ Pyth2 % xO yO radius
+ \psk@dimen CLW mul sub
+ \if@star \tx@SD \else
+ 0 360 arc
+ closepath
+ \fi }%
+ \showpointsfalse
+ \end@ClosedObj
+ \ignorespaces}
+%
+\def\qdisk(#1)#2{%
+ \def\pst@par{}%
+ \begin@SpecialObj
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dimg{#2}%
+ \addto@pscode{
+ \pst@coor
+ \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimg \fi
+% \pst@number\pst@dimg
+ \tx@SD }%
+ \end@SpecialObj}
+%
+\define@key[psset]{pstricks}{radius}[0.25cm]{\pst@@getlength{#1}\psk@radius}
+\psset[pstricks]{radius=.25cm}
+%
+\def\psCircle{\pst@object{psCircle}}% same as \pscircle, but uses \psk@radius
+\def\psCircle@i{\@ifnextchar({\psCircle@ii}{\psCircle@ii(0,0)}}
+\def\psCircle@ii(#1){\pscircle@do(#1){\psk@radius}}
+%
+\def\psRing{\def\pst@par{}\pst@object{psRing}}%% hv 20130405
+\def\psRing@i{\@ifnextchar({\psRing@ii}{\psRing@ii(0,0)}}
+\def\psRing@ii(#1){%
+ \pst@@getcoor{#1}%
+ \@ifnextchar[{\psRing@iii}{\psRing@iii[0,360]}}
+\def\psRing@iii[#1,#2]#3#4{% origin, inner radius, outer radius
+ \begin@ClosedObj
+ \pssetlength\pst@dimc{#3}%
+ \edef\pst@tempA{\ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimc \fi}%
+ \pssetlength\pst@dimd{#4}%
+ \edef\pst@tempB{\ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimd \fi}%
+ \pst@getangle{#1}\pst@tempa
+ \pst@getangle{#2}\pst@tempb
+ \def\pst@linetype{4}%
+ \addto@pscode{
+ \pst@coor translate
+% \pst@number\pst@dimc \psk@dimen CLW mul sub /InnerRadius ED
+% \pst@number\pst@dimd \psk@dimen CLW mul sub /OuterRadius ED
+ \pst@tempA\space \psk@dimen CLW mul sub /InnerRadius ED
+ \pst@tempB\space \psk@dimen CLW mul sub /OuterRadius ED
+ InnerRadius 0 moveto newpath
+ 0 0 InnerRadius \pst@tempa\space \pst@tempb\space arc
+ OuterRadius \pst@tempb\space PtoC
+ \pst@tempb\space \pst@tempa\space sub abs 360 eq { moveto }{ lineto } ifelse % whole circle or not??
+ 0 0 OuterRadius \pst@tempb\space \pst@tempa\space arcn
+ closepath
+ }%
+ \showpointsfalse
+ \end@ClosedObj
+ \ignorespaces}
+%
+\def\pswedge{\def\pst@par{}\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{
+ \ifx\psk@rot\@empty 0 \else \psk@rot \fi rotate
+ \pst@coor
+ 2 copy
+ moveto
+ \ifPst@SpecialLength \pst@SpecialLength \else \pst@number\pst@dimc \fi
+ \psk@dimen CLW mul sub % Adjusted radius
+ \pst@tempa \pst@tempb
+ arc
+ closepath}%
+ \showpointsfalse
+ \end@ClosedObj
+}
+\def\tx@ellipse#1{ \ifx\psk@rot\@empty 0 \else \psk@rot \fi #1 Ellipse }
+\def\tx@Ellipse{ \ifx\psk@rot\@empty 0 \else \psk@rot \fi Ellipse }
+%
+\def\psellipse{\def\pst@par{}\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{true}
+ \ifPst@variableLW \pst@flattenpath \fi
+ closepath
+ }%
+ \def\pst@linetype{2}%
+ \end@ClosedObj%
+}
+\def\psellipseAB{\def\pst@par{}\pst@object{psellipseAB}}
+\def\psellipseAB@i(#1)(#2)#3{%
+ \begin@ClosedObj
+ \pst@getcoor{#1}\pst@tempa
+ \pst@getcoor{#2}\pst@tempb
+ \addto@pscode{
+ 0 360
+ #3 \pst@number\psxunit mul
+ \pst@tempa /yA ED /xA ED
+ \pst@tempb /yB ED /xB ED
+ xA xB sub dup mul
+ yA yB sub dup mul add sqrt 2 div
+ \ifdim\psk@dimen\p@=\z@\else
+ \psk@dimen CLW mul
+ dup 4 -1 roll sub neg 3 1 roll sub
+ \fi
+ xA xB add 2 div yA yB add 2 div
+ translate 0 0
+ xB xA sub yA yB sub atan
+ Ellipse % on stack is rotate coordinates
+ \ifPst@variableLW \pst@flattenpath \fi
+ 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}}
+%
+\define@key[psset]{pstricks}{ref}[c]{\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[pstricks]{ref=c}
+%
+\def\pst@rotlist{ mark RAngle /ps@a ED cleartomark ps@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 }
+%
+\define@key[psset]{pstricks}{rot}[0]{%
+ \pst@expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil}
+\def\psset@@rot#1\@nil{%
+ \def\next##1@#1=##2@##3\@nil{%
+ \ifx##2\relax\pst@getangle{#1}\psk@rot \else\def\psk@rot{##2}\fi%
+ \pst@Verb{ gsave STV CP T /ps@rot \ifx\psk@rot\@empty 0 \else \psk@rot \fi def grestore }% (MJS)
+ }%
+ \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\space ps@rot add \fi}%
+ \pst@Verb{ gsave STV CP T /ps@rot \ifx\psk@rot\@empty 0 \else \psk@rot \fi def grestore }}% (MJS)
+%
+%\def\psset@@rot#1\@nil{%
+%\def\ps@next##1@#1=##2@##3\@nil{%
+%\ifx\relax##2\pst@getangle{#1}\psk@rot\else\def\psk@rot{##2}\fi}%
+%\expandafter\ps@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}}
+\psset[pstricks]{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 \pstnodescale } \tx@PutCoor \tx@PutBegin }% 20150911 hv
+ \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]{%
+ \test@for@options#1=\@nil
+ \ifnum\the\pst@cntm=\z@
+ \addto@par{ref={#1}}%
+ \else
+ \expandafter\addto@par\expandafter{#1}%
+ \fi
+ \rput@ii
+}
+\def\test@for@options#1=#2\@nil{%
+ \if$#2$% #2 is empty -> old syntax
+ \pst@cntm=\z@
+ \else % something like foo=bar
+ \pst@cntm=\@ne
+ \fi
+}
+
+\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
+ \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS)
+% \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%
+ \global\psLoopIndex=\@ne\relax
+ \begingroup
+ \use@par
+ \if@star\pst@starbox\fi
+ \pst@makesmall\pst@hbox
+ \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS)
+% \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
+ \leavevmode
+ \loop
+ \vbox to \z@{%
+ \vss
+ \hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}%
+ \vskip\pst@dimb%
+ }%
+ \ifnum\pst@cntg>\psLoopIndex
+ \advance\pst@dima\pst@dimc
+ \advance\pst@dimb\pst@dimd
+ \global\advance\psLoopIndex by \@ne
+ \repeat
+ \endgroup
+ \ignorespaces%
+}
+%
+\newif\if@fixedradius
+\def\cput{\def\pst@par{}\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
+ \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS)
+% \pst@rotate\psk@rot\pst@hbox
+ \psput@{#1}\pst@hbox
+ \endgroup
+ \ignorespaces%
+}
+%
+\def\Cput{\def\pst@par{}\pst@object{Cput}}
+\def\Cput@i{\@fixedradiustrue\cput@ii}
+\newdimen\pslabelsep
+\define@key[psset]{pstricks}{labelsep}[5pt]{%
+ \pssetlength\pslabelsep{#1}%
+ \ifx\PSTplotLoaded\endinput% Set labels for pst-plot, if laoded
+ \let\psxlabelsep\pslabelsep%
+ \let\psylabelsep\pslabelsep%
+ \fi}
+\psset[pstricks]{labelsep=5pt}
+%
+\define@key[psset]{pstricks}{refangle}[0]{\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%
+ \pst@Verb{ gsave STV CP T /ps@refangle \psk@refangle\space def grestore }%ADDED (MJS)
+}
+%
+\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[pstricks]{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
+ \pstCheckCoorType{#1}% needed for \uput@vii
+ \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{%
+ \ifPst@SpecialLength\pst@SpecialLength\else\pst@number\pslabelsep\fi
+% \pst@number\pslabelsep % \ifdim\pslabelsep<\z@ neg \fi
+ #2%
+ \pst@number{\wd\pst@hbox}%
+ \pst@number{\ht\pst@hbox}%
+ \pst@number{\dp\pst@hbox}%
+ \ifnum\pst@C@@rType=7
+ ps@refangle % CHANGED (MJS) FROM \psk@refangle\space
+ \ifx\psk@rot\@empty\else ps@rot\space sub \fi
+ \else
+ \psk@refangle\space
+ \ifx\psk@rot\@empty\else \psk@rot\space sub \fi
+ \fi
+ \tx@Uput #1}%
+ %\show\pst@coor
+ \setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}%
+ \setbox\pst@hbox=\psput@special\pst@hbox
+ \ifnum\pst@C@@rType=7
+ \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% CHANGED FROM \psk@rot (MJS)
+ \else
+ \ifx\psk@rot\@empty\else\pst@rotate{\psk@rot}\pst@hbox\fi%
+ \fi}
+%
+%
+\def\uput@viii#1#2{%
+ \ifnum#1>\z@\relax\ifnum#2>\z@\relax\pslabelsep=.707\pslabelsep\fi\fi
+ \setbox\pst@hbox=\vbox to\z@{%
+ \ifnum#2=1\relax\vskip\pslabelsep\else\vss\fi
+ \hbox to\z@{%
+ \ifnum#1=2\relax\hskip\pslabelsep \else\hss\fi
+ \box\pst@hbox%
+ \ifnum#1=1\relax\hskip\pslabelsep\else\hss\fi}%
+ \ifnum#2=2\relax\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
+ \ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS)
+% \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}
+%
+% ----------- hv 20120219 -------------------
+\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
+\newpsstyle{gridstyleA}{subgriddiv=5,gridcolor=red!30,subgridcolor=green!20!black!10,gridlabels=0pt}
+\newif\ifshowgrid
+\newdimen\sh@wgridXunit
+\newdimen\sh@wgridYunit
+
+\define@key[psset]{pstricks}{showgrid}[b]{\expandafter\pst@@showgrid#1!!\@nil}
+\def\pst@@showgrid#1#2#3\@nil{% hv 20130403
+ \def\showgridp@s{0}%
+ \ifx#1b\showgridtrue\else% bottom
+ \ifx#1f\showgridfalse\else
+ \ifx#1t
+ \ifx#2r \showgridtrue\else% true->bottom
+ \showgridtrue\def\showgridp@s{1}\fi% top
+ \fi\fi\fi
+ \ifnum\showgridp@s>0\relax
+ \sh@wgridXunit=\psxunit
+ \sh@wgridYunit=\psyunit
+ \fi
+
+}
+\psset[pstricks]{showgrid=f}
+\define@boolkey[psset]{pstricks}[Pst@]{pgffunctions}[true]{}
+\psset[pstricks]{pgffunctions=false}
+%
+\newdimen\pst@shift
+\newif\ifPst@shift@star
+\define@key[psset]{pstricks}{shift}[0]{%
+ \ifx#1*
+ \global\Pst@shift@startrue
+ \pst@shift=\p@
+ \else
+ \global\Pst@shift@starfalse
+ \pssetlength\pst@dimg{#1}
+ \global\pst@shift\pst@dimg% only the outer pspicture env can have a shift
+ \fi}
+\psset[pstricks]{shift=0}
+%
+%------------------------------- pspicture ------------------------------
+%
+\def\pspicture{\begingroup\pst@ifstar\pst@picture}
+\def\pst@picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
+\def\pst@@picture[#1]{\@ifnextchar({\pst@@picture@i[#1]}{\pst@@picture@i[#1](10,10)}}%
+\def\pst@@picture@i[#1]#2(#3,#4){\@ifnextchar(% ignore anything between [] and ()
+ {\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
+ \ifx\pst@bgcolor\@empty\else\psframe*[linecolor=\pst@bgcolor](#2,#3)(#4,#5)\fi
+ \ifshowgrid\ifnum\showgridp@s=0\psgrid[style=gridstyle]\fi\fi
+% ----------- 1.10/12 end hv -------------------
+ \ignorespaces% % 2008-12-07
+ \ifPst@pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17
+}
+\def\pic@coor{(0,0)(0,0)(10,10)}
+\def\endpspicture{%
+ \ifshowgrid\ifnum\showgridp@s>0
+ \psgrid[xunit=\sh@wgridXunit,yunit=\sh@wgridYunit,style=gridstyle]\fi\fi
+ \pst@killglue
+ \endgroup
+ \egroup
+ \ht\pst@hbox=\pst@dimd
+ \dp\pst@hbox=-\pst@dimb
+ \setbox\pst@hbox=\hbox{%
+ \kern-\pst@dima
+ \ifPst@shift@star%\typeout{==pstricks== old behaviour of the shift option}% shift=*
+ \advance\pst@dimd-\pst@dimb
+ \pst@dimd=0.5\pst@dimd
+ \else\pst@dimd-\pst@shift\fi
+ \advance\pst@dimd\pst@dimb
+ \lower\pst@dimd\box\pst@hbox
+ \kern\pst@dimc}%
+ \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
+ \leavevmode
+ \ifPst@draft
+ \expandafter\ifx\csname @latexerr\endcsname\relax
+ \box\pst@hbox
+ \else% do we have LaTeX?
+ \fboxsep=0pt
+ \fbox{\rule[-\pst@shift]{0pt}{\ht\pst@hbox}\rule{\wd\pst@hbox}{0pt}}%
+ \fi
+ \else
+ \box\pst@hbox
+ \fi
+ \endgroup
+ \psset[pstricks]{shift=0}% reset value
+}
+%
+\@namedef{pspicture*}{\pspicture*}
+\@namedef{endpspicture*}{\endpspicture}
+%
+\ifx\pstcustomize\relax \input pstricks.con \fi
+\catcode`\@=\PstAtCode\relax
+%
+\endinput
+%%
+%% END: pstricks.tex
diff --git a/graphics/pstricks/base/generic/pstricks97.tex b/graphics/pstricks/base/generic/pstricks97.tex
new file mode 100644
index 0000000000..e4b0a5a2c9
--- /dev/null
+++ b/graphics/pstricks/base/generic/pstricks97.tex
@@ -0,0 +1,2626 @@
+%% $Id: pstricks97.tex 446 2017-04-19 11:40:55Z herbert $
+%% BEGIN: pstricks.tex
+%%
+%% PostScript macros for Generic TeX: main input file for PSTricks 97.
+%% See the PSTricks User's Guide for description.
+%% This uses the header file `pstricks.pro'.
+%%
+\def\fileversion{97 patch 14}
+\def\filedate{1999/12/23}
+%%
+%% 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.
+%%
+\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{%
+\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}
+\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}
+% % \begin{macrocode}
+\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{pstricks97.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}}}
+\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}}
+\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}%
+\edef\psk@origin{\pst@coor \tx@NET }}
+\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}
+\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}
+\newif\ifpsdashadjust
+\def\psset@dashadjust#1{\@nameuse{psdashadjust#1}}
+\psset@dashadjust{true}
+\def\psls@dashed{%
+\ifpsdashadjust
+\psk@dash \pst@linetype\space \tx@DashLine
+\else
+[ \psk@dash ] 0 setdash stroke
+\fi}
+\def\tx@DashLine{DashLine }
+\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
+\psset@dotsep{3pt}
+\def\psls@dotted{%
+\ifpsdashadjust
+\psk@dotsep \pst@linetype\space \tx@DotLine
+\else
+[ 0 \psk@dotsep CLW add ] 0 setdash 1 setlinecap stroke
+\fi}
+\def\tx@DotLine{DotLine }
+\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}}
+\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}
+\def\pst@linefill{%
+\psk@hatchangle rotate
+\psk@hatchwidth SLW
+\pst@usecolor\pshatchcolor
+\psk@hatchsep \tx@LineFill}
+\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{,<->,<<->>,>-<,>>-<<,(-),[-]}
+\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 }
+\def\psset@arrowscale#1{\pst@getscale{#1}\psk@arrowscale}
+\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 }
+\@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
+0 CLW 2 div L
+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}}}
+\def\pst@@getarrows#1#2{\addto@par{arrows=#2}#1}
+\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
+\def\pslinetype{0}%
+\fi}
+\psset@linetype{0}
+\def\caddto@pscode#1{%
+\@pstrickserr{Command can only be used in \string\pscustom}\@ehpa}
+\let\cuse@par\caddto@pscode
+\def\tx@MSave{%
+/msavemtrx
+[ tx@Dict /msavemtrx known { msavemtrx aload pop } if CM ]
+def }
+\def\tx@MRestore{%
+tx@Dict /msavemtrx known { length 0 gt } { false } ifelse
+{ /msavematrx [ msavematrx aload pop setmatrix ] def }
+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{%
+\@ifundefined{color@#1}{}{\addto@pscode{\use@color{#1}}}}%
+\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
+\pst@getcoor{#2}\pst@tempb
+\addto@pscode{%
+\psline@iii
+pop
+\psk@dimen
+\pst@tempb
+\psk@gangle
+\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
+\def\psk@dimen{.5 }%
+\else
+\if #1m\relax
+\def\psk@dimen{0 }%
+\else
+\if #1i\relax
+\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
+\pst@getcoor{#2}\pst@tempb
+\pst@@getcoor{#3}%
+\ifnum\psk@subgriddiv>1
+\addto@pscode{gsave
+\psk@subgridwidth SLW \pst@usecolor\pssubgridcolor
+\pst@tempb \pst@coor \pst@tempa
+\pst@number\psxunit \pst@number\psyunit
+\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
+\pst@number\psxunit \pst@number\psyunit
+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{%
+\@namedef{#1}{\pst@longbox#2}%
+\@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}
+\def\psarc@v{%
+x y r
+angleA
+\ifx\psk@arrowA\@empty\else
+{ ArrowA CP }
+{ \ifcase\psarc@type add \or sub \fi }
+\tx@ArcArrow
+\fi
+angleB
+\ifx\psk@arrowB\@empty\else
+{ ArrowB }
+{ \ifcase\psarc@type sub \or add \fi }
+\tx@ArcArrow
+\fi
+\ifcase\psarc@type arc \or arcn \fi}
+\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}
+\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
+\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\scalebox#1{\pst@makebox{\@scalebox{#1}}}
+\def\@scalebox#1{%
+\begingroup
+\pst@getscale{#1}\pst@tempa
+\let\pst@tempc\pst@tempg
+\let\pst@tempd\pst@temph
+\@@scalebox
+\endgroup}
+\def\@@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}{\scalebox}
+\def\scaleboxto(#1,#2){\pst@makebox{\@scaleboxto(#1,#2)}}
+\def\@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\scaleboxto\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 }%
+\@@scalebox
+\endgroup}
+\pslongbox{Scaleboxto}{\scaleboxto}
+\def\tx@Rot{Rot }
+\def\rotateleft{\pst@makebox{\@rotateleft\pst@hbox}}
+\def\@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\rotateright{\pst@makebox{\@rotateright\pst@hbox}}
+\def\@rotateright#1{%
+\hbox{\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\rotatedown{\pst@makebox{\@rotatedown\pst@hbox}}
+\def\@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}{\rotateleft}
+\pslongbox{Rotateright}{\rotateright}
+\pslongbox{Rotatedown}{\rotatedown}
+\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{%
+\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}
+\def\pspicture{\begingroup\pst@ifstar\pst@picture}
+\def\pst@picture{%
+\@ifnextchar[{\pst@@picture}{\pst@@picture[0]}}
+\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
+\def\pst@tempa{#1}%
+\setbox\pst@hbox=\hbox\bgroup
+\begingroup\KillGlue
+\@ifundefined{@latexerr}{}{\let\unitlength\psunit}%
+\edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}\ignorespaces}
+\def\pic@coor{(0,0)(0,0)(10,10)}
+\def\endpspicture{%
+\pst@killglue
+\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
+\ifx\pst@tempa\@empty\else
+\advance\pst@dimd-\pst@dimb
+\pst@dimd=\pst@tempa\pst@dimd
+\advance\pst@dimd\pst@dimb
+\lower\pst@dimd
+\fi
+\box\pst@hbox
+\kern\pst@dimc}%
+\if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
+\leavevmode\box\pst@hbox
+\endgroup}
+\@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/graphics/pstricks/base/latex/pst-all.sty b/graphics/pstricks/base/latex/pst-all.sty
new file mode 100644
index 0000000000..3c9d1a8ddb
--- /dev/null
+++ b/graphics/pstricks/base/latex/pst-all.sty
@@ -0,0 +1,33 @@
+% $Id: pst-all.sty 446 2017-04-19 11:40:55Z herbert $
+%%
+%% This is file `pst-all.sty'
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Copyright (C) 1997 Timothy Van Zandt
+%% Copyright (C) 2004-2008 Herbert Voss <hvoss@tug.org>
+%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
+%% 2008-- Herbert Voss <hvoss@tug.org>
+%%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\ProvidesPackage{pst-all}[2008/01/01 the main pstricks tools]
+\RequirePackage{pstricks} % important
+% this loads the xcolor package and pstricks in the right order
+% and does some modification to the color handling. Look at the
+% doc for the options.
+%
+\RequirePackage{pst-plot}
+\RequirePackage{pst-node}
+\RequirePackage{pst-tree}
+\RequirePackage{pst-grad}
+\RequirePackage{pst-coil}
+\RequirePackage{pst-text}
+\RequirePackage{pst-3d}
+\RequirePackage{pst-eps}
+\RequirePackage[tiling]{pst-fill}
+\RequirePackage{pstricks-add}
+\RequirePackage{multido}
+\endinput
diff --git a/graphics/pstricks/base/latex/pst-key.sty b/graphics/pstricks/base/latex/pst-key.sty
new file mode 100644
index 0000000000..e1550d293e
--- /dev/null
+++ b/graphics/pstricks/base/latex/pst-key.sty
@@ -0,0 +1,7 @@
+% $Id: pst-key.sty 446 2017-04-19 11:40:55Z herbert $
+\RequirePackage{pstricks}
+\ProvidesPackage{pst-key}[2004/07/15 package wrapper for pst-key.tex]
+\input{pst-key.tex}
+\ProvidesFile{pst-key.tex}
+ [1998/07/23 v1.11 key=value parser (DPC)]
+\endinput
diff --git a/graphics/pstricks/base/latex/pst-platform.sty b/graphics/pstricks/base/latex/pst-platform.sty
new file mode 100644
index 0000000000..a1bde247b6
--- /dev/null
+++ b/graphics/pstricks/base/latex/pst-platform.sty
@@ -0,0 +1,142 @@
+% $Id: pst-platform.sty 446 2017-04-19 11:40:55Z herbert $
+%%
+%% This is file `pst-platform.sty',
+%%
+%% Copyright (C) 2017 Herbert Voß <hvoss@tug.org>
+%%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+\ProvidesPackage{pst-platform}
+ [2017/03/17 v0.01 Testing for the operating system, patch for luatex]
+\RequirePackage{shellesc,pdftexcmds,catchfile,ifluatex}
+%%
+% The following code is from ifplatform.sty, it fixes a bug with lualatex
+%%
+\newif\ifshellescape
+\newif\ifwindows
+\newif\ifmacosx
+\newif\iflinux
+\newif\ifcygwin
+\newcommand\windowsname{Windows}
+\newcommand\notwindowsname{*NIX}
+\newcommand\linuxname{Linux}
+\newcommand\macosxname{Mac\,OS\,X}
+\newcommand\cygwinname{Cygwin}
+\newcommand\unknownplatform{[Unknown]}
+\edef\ip@file{\jobname.w18}
+\newif\if@ip@nix@
+\ifnum\pdf@shellescape=1\relax
+ \shellescapetrue
+\else
+ \ifluatex\else
+ \PackageWarningNoLine{ifplatform}{^^J \space\space\space
+ shell escape is disabled,
+ so I can only detect \@backslashchar ifwindows%
+ }
+ \fi
+\fi
+\def\ip@cantdecide{%
+ \PackageWarningNoLine{ifplatform}{^^J \space\space\space
+ I can't tell if this is Windows or *nix;
+ you appear to be both%
+ }%
+}
+\ifluatex
+ \csname\directlua{
+ if os.type == "unix" then
+ tex.sprint("@ip@nix@true")
+ elseif os.type == "windows" then
+ tex.sprint("windowstrue")
+ end
+ }\endcsname
+\else
+ \IfFileExists{nul:}{\@ip@nix@false}{\@ip@nix@true}
+ \IfFileExists{/dev/null}{\windowsfalse}{\windowstrue}
+ \edef\ip@windows@echo@test{echo \string# > "\ip@file"}
+ \def\ip@backupplan{%
+ \IfFileExists{\ip@file}{%
+ \PackageWarningNoLine{ifplatform}{^^J \space\space\space
+ Please delete the file "\ip@file" and try again%
+ }%
+ \ip@cantdecide
+ }{%
+ \ShellEscape{\ip@windows@echo@test}%
+ \IfFileExists{\ip@file}{%
+ \ShellEscape{del "\ip@file"}%
+ \windowstrue
+ }{%
+ \@ip@nix@true
+ }%
+ }%
+ }
+ \ifwindows
+ \if@ip@nix@
+ \PackageWarningNoLine{ifplatform}{^^J \space\space\space
+ I can't tell if this is Windows or *nix;
+ you appear to be neither%
+ }
+ \fi
+ \else
+ \if@ip@nix@\else
+ \ifshellescape
+ \ip@backupplan
+ \else
+ \ip@cantdecide
+ \fi
+ \fi
+ \fi
+ \fi
+ \def\ip@only@six#1#2#3#4#5#6#7\@nil{#1#2#3#4#5#6}
+ \if@ip@nix@
+ \ifshellescape
+ \ifwindows\else
+ \ShellEscape{uname -s > "\ip@file"}
+ \CatchFileDef\@tempa{\ip@file}{}
+ \ShellEscape{rm -- "\ip@file"}
+ \edef\@tempa{\expandafter\zap@space\@tempa\@empty}
+ \def\@tempb{Linux}
+ \ifx\@tempa\@tempb
+ \linuxtrue
+ \else
+ \def\@tempb{Darwin}
+ \ifx\@tempa\@tempb
+ \macosxtrue
+ \else
+ \def\@tempb{CYGWIN}
+ \edef\@tempc{\expandafter\ip@only@six\@tempa------\@nil}
+ \ifx\@tempb\@tempc
+ \cygwintrue
+ \else
+ \edef\unknownplatform{\@tempa}
+ \fi
+ \fi
+ \fi
+ \fi
+\fi\fi
+\edef\platformname{%
+ \ifwindows
+ \noexpand\windowsname
+ \else
+ \ifshellescape
+ \iflinux
+ \noexpand\linuxname
+ \else
+ \ifmacosx
+ \noexpand\macosxname
+ \else
+ \ifcygwin
+ \noexpand\cygwinname
+ \else
+ \noexpand\unknownplatform
+ \fi
+ \fi
+ \fi
+ \else
+ \noexpand\notwindowsname
+ \fi
+ \fi
+}
+%%
+%% End of file `pst-platform.sty'.
diff --git a/graphics/pstricks/base/latex/pstcol.sty b/graphics/pstricks/base/latex/pstcol.sty
new file mode 100644
index 0000000000..7a83dd1fd9
--- /dev/null
+++ b/graphics/pstricks/base/latex/pstcol.sty
@@ -0,0 +1,26 @@
+% $Id: pstcol.sty 446 2017-04-19 11:40:55Z herbert $
+%%
+%% pstcol.sty Copyright (C) 1994--1996 1999 David Carlisle
+%% 2004--2007 Herbert Voss <voss@perce.de>
+%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
+%% 2007-- Herbert Voss <hvoss@tug.org>
+%%
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{pstcol}
+ [2007/04/11 v1.3 LaTeX wrapper for `PSTricks' (RN,HV)]
+
+\DeclareOption*{\PassOptionsToPackage\CurrentOption{color}}
+\ProcessOptions\relax
+
+\PackageWarningNoLine{pstcol}{%
+ ************************************ \MessageBreak
+ The package `pstcol' is obsolet! \MessageBreak
+ You should use `pstricks' directly: \MessageBreak
+ \@spaces\string\usepackage{pstricks}\MessageBreak
+ ************************************}
+
+\PassOptionsToPackage{noxcolor}{pstricks}
+\RequirePackage{pstricks}
+
+\endinput
+%%
diff --git a/graphics/pstricks/base/latex/pstricks-pdf.sty b/graphics/pstricks/base/latex/pstricks-pdf.sty
new file mode 100644
index 0000000000..c363a62f80
--- /dev/null
+++ b/graphics/pstricks/base/latex/pstricks-pdf.sty
@@ -0,0 +1,179 @@
+% $Id: pstricks-pdf.sty 446 2017-04-19 11:40:55Z herbert $
+%%
+%% This is file `pstricks-pdf.sty'.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% pstricks-pdf.sty Copyright (C) 2017 Herbert Voss <hvoss@tug.org>
+%%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesPackage{pstricks-pdf}[2017/03/17 v0.01 creating pdf output (HV)]
+%
+\RequirePackage{ifpdf,xkeyval,pst-platform,ifluatex,ifxetex}
+
+\newif\if@app@off@
+\newif\if@app@crop@
+\newcounter{app@runs}
+\def\app@suffix{autopp}
+\edef\app@jobname{\jobname-\app@suffix}
+\edef\app@pics{\jobname-pics.pdf}
+
+%%%
+% the following code is adapted from auto-pst-pdf
+%%%
+\DeclareOptionX{off}[]{\@app@off@true}
+\define@choicekey{pstricks-pdf.sty}{crop}[\@tempa\@tempb]{on,off}{%
+ \ifcase\@tempb\relax
+ \@app@crop@true
+ \or
+ \@app@crop@false
+ \fi}
+\DeclareOptionX{on}[]{\@app@off@false}
+\DeclareOptionX{ext}{\def\app@ext{#1}}
+\DeclareOptionX{latex}{%
+ \def\app@latex@opts{%
+ \ifwindows
+ -disable-write18
+ \else
+ -no-shell-escape
+ \fi
+ -jobname="\app@jobname"
+ -interaction=batchmode
+ #1}}
+\DeclareOptionX{dvips}{\def\app@dvips@opts{#1}}
+\DeclareOptionX{pspdf}{\def\app@pspdf@opts{#1}}
+\def\app@pdfcrop@opts{--hres}%%% hv 20130405
+\DeclareOptionX{pdfcrop}{\def\app@pdfcrop@opts{#1}}
+
+\DeclareOptionX{cleanup}{%
+ \let\app@rm@files\@empty
+ \@for\@ii:=#1\do{%
+ \edef\app@rm@files{\app@rm@files,\app@jobname.\@ii}}}
+
+\DeclareOptionX{runs}{%
+ \setcounter{app@runs}{#1}% support calc
+ \ifnum\c@app@runs > \z@
+ \else
+ \app@PackageWarning{The number of runs must be at least one.}%
+ \c@app@runs\@ne
+ \fi}
+
+\DeclareOptionX*{%
+ \PassOptionsToPackage{prologue}{xcolor}% to get named colors into the ps file
+ \PassOptionsToPackage\CurrentOption{pstricks}%
+ \PassOptionsToPackage\CurrentOption{pst-pdf}%
+}
+
+\ExecuteOptionsX{%
+ ext=tex,
+ crop=on,
+ latex={},
+ dvips={-Ppdf},
+ pdfcrop={},
+ cleanup={log,aux,dvi,ps,pdf},
+ runs=1
+}
+\ifwindows
+ \ExecuteOptionsX{pspdf={}}
+\else
+ \ExecuteOptionsX{pspdf={-dAutoRotatePages=/None}}
+\fi
+%
+\ProcessOptionsX\relax
+%
+\ifxetex\@app@off@true\fi
+%
+\def\app@nl{^^J\space\space\space\space}
+\newcommand\app@PackageError[2]{\PackageError{pstricks-pdf}{\app@nl #1^^J}{#2}}
+\newcommand\app@PackageWarning[1]{%
+ \PackageWarning{pstricks-pdf}{\app@nl #1^^JThis warning occured}}
+\newcommand\app@PackageInfo[1]{\PackageInfo{pstricks-pdf}{#1}}
+\newcommand\OnlyIfFileExists[2]{\IfFileExists{#1}{#2}{}}
+\newcommand\NotIfFileExists[2]{\IfFileExists{#1}{}{#2}}
+\def\app@convert#1#2#3{%
+ \OnlyIfFileExists{#2}{%
+% \expandafter\typeout\expandafter{\csname app@cmd@#1\endcsname}%
+ \typeout{filenameIN: #2}%
+ \typeout{filenameOUT: #3}%
+ \ShellEscape{\csname app@cmd@#1\endcsname{#2}{#3}}%
+ \NotIfFileExists{#3}{\app@PackageWarning{Creation of #3 failed.}}}}
+\def\app@compile{%
+ \app@cleanup
+ \app@remove@container
+ \loop\ifnum\c@app@runs > \@ne
+ \app@convert{extralatex}{\jobname.\app@ext}{}%
+ \advance\c@app@runs\m@ne
+ \repeat
+ \app@convert{latex}{\jobname.\app@ext}{}%
+ \ifxetex\else
+ \app@convert{dvips}{\app@jobname.dvi}{\app@jobname.ps}%
+ \fi
+ \if@app@crop@
+ \ifxetex\else
+ \app@convert{pstopdf}{\app@jobname.ps}{\app@jobname.pdf}%
+ \fi
+ \app@convert{pdfcrop}{\app@jobname.pdf}{\app@pics}%
+ \else
+ \ifxetex\else
+ \app@convert{pstopdf}{\app@jobname.ps}{\app@pics}%
+ \fi
+ \fi
+ \IfFileExists{\app@pics}
+ {\app@cleanup}
+ {\app@PackageWarning{Could not create \app@pics.
+ Auxiliary files not deleted.}}}
+\edef\app@rm{\ifwindows del \else rm -- \fi}
+\newcommand\app@try@rm[1]{%
+ \@for\@tempa:=#1\do{%
+ \OnlyIfFileExists{\@tempa}{\ShellEscape{\app@rm "\@tempa"}}}}
+\def\app@remove@container{\app@try@rm{\app@pics}}
+\def\app@cleanup{\app@try@rm{\app@rm@files}}
+\ifluatex
+% \def\app@cmd@latex#1#2{lualatex --output-format=dvi \app@latex@opts\space "\unexpanded{\let\APPmakepictures\empty\input} #1"}
+% \def\app@cmd@extralatex#1#2{lualatex --output-format=dvi \app@latex@opts\space "\unexpanded{\let\APPmakepictures\undefined\input} #1"}
+ \def\app@cmd@latex#1#2{xelatex \app@latex@opts\space "\unexpanded{\AtBeginDocument{\pagestyle{empty}}\let\APPmakepictures\empty\input} #1"}
+ \def\app@cmd@extralatex#1#2{xelatex \app@latex@opts\space "\unexpanded{\AtBeginDocument{\pagestyle{empty}}\let\APPmakepictures\undefined\input} #1"}
+\else
+ \def\app@cmd@latex#1#2{latex \app@latex@opts\space "\unexpanded{\let\APPmakepictures\empty\input} #1"}
+ \def\app@cmd@extralatex#1#2{\@app@prog\space \app@latex@opts\space "\unexpanded{\let\APPmakepictures\undefined\input} #1"}
+ \def\app@cmd@dvips#1#2{dvips \app@dvips@opts\space -o "#2" "#1"}
+ \def\app@cmd@pstopdf#1#2{ps2pdf \app@pspdf@opts\space "#1" "#2"}
+\fi
+\def\app@cmd@pdfcrop#1#2{pdfcrop \app@pdfcrop@opts\space "#1" "#2"}
+\ifpdf
+ \if@app@off@\else
+ \ShellEscape{echo " "}
+ \ShellEscape{echo "-------------------------------------------------"}
+ \ShellEscape{echo "pstricks-pdf: Auxiliary LaTeX compilation"}
+ \ShellEscape{echo "-------------------------------------------------"}
+ \app@compile
+ \ShellEscape{echo "-------------------------------------------------"}
+ \ShellEscape{echo "pstricks-pdf: End auxiliary LaTeX compilation"}
+ \ShellEscape{echo "-------------------------------------------------"}
+ \fi
+ \if@app@crop@
+ \PassOptionsToPackage{notightpage}{pst-pdf}
+ \fi
+\else
+ \ifx\APPmakepictures\@undefined
+ \PassOptionsToPackage{inactive}{pst-pdf}
+ \else
+ \if@app@crop@
+ \PassOptionsToPackage{notightpage}{pst-pdf}
+ \fi
+ \fi
+\fi
+\RequirePackage{pst-pdf}
+\RequirePackage{pstricks}
+\@ifclassloaded{beamer}{\setbeamertemplate{navigation symbols}}{}%
+%
+\let\app@ig\includegraphics
+%
+%%
+%% End of file `pstricks-pdf.sty'.
diff --git a/graphics/pstricks/base/latex/pstricks.sty b/graphics/pstricks/base/latex/pstricks.sty
new file mode 100644
index 0000000000..dff12d797f
--- /dev/null
+++ b/graphics/pstricks/base/latex/pstricks.sty
@@ -0,0 +1,252 @@
+% $Id: pstricks.sty 1044 2019-04-11 09:32:09Z herbert $
+%%
+%% This is file `pstricks.sty'.
+%%
+%% IMPORTANT NOTICE:
+%%
+%% pstricks.sty Copyright (C) 1997 Timothy Van Zandt
+%% pstcol.sty Copyright (C) 1994-1996 1999 David Carlisle
+%% pstricks.sty Copyright (C) 2004- Rolf Niepraschk <Rolf.Niepraschk@gmx.de>
+%% Herbert Voss <hvoss@tug.org>
+%% 2019- Herbert Voss <hvoss@tug.org>
+%%
+%% This package may be distributed under the terms of the LaTeX Project
+%% Public License, as described in lppl.txt in the base LaTeX distribution.
+%% Either version 1.0 or, at your option, any later version.
+%%
+
+\NeedsTeXFormat{LaTeX2e}
+
+\ProvidesPackage{pstricks}[2018/12/21 v0.69 LaTeX wrapper for `PSTricks' (RN,HV)]
+%
+\def\documentclass{%
+ \edef\@tempa{\jobname.tex }%
+ \edef\@tempb{\@filef@und}%
+ \@onelevel@sanitize\@tempa
+ \@onelevel@sanitize\@tempb
+ \ifx\@tempa\@tempb
+ \@latex@error
+ {`\jobname.tex' is a forbidden name for your document,\MessageBreak
+ it is already a name of a package}%
+ {Choose another name for your document}\@gobble
+ \else
+ \@twoclasseserror
+ \fi
+}
+%
+\def\pst@ColorPackage{xcolor}
+\DeclareOption{noxcolor}{\def\pst@ColorPackage{color}}
+%
+\newif\ifpst@useCalc \pst@useCalcfalse
+\newif\ifpst@psfonts \pst@psfontsfalse
+\newif\if@check@engine \@check@enginetrue
+\newif\ifpst@xetex \pst@xetexfalse
+
+\DeclareOption{useCalc}{\pst@useCalctrue}
+\DeclareOption{psfonts}{\pst@psfontstrue}
+\DeclareOption{noEngineCheck}{\@check@enginefalse}
+\DeclareOption{xetex}{\global\pst@xetextrue}
+%
+%---------------------------------DISTILLER --------------------------------
+\newif\ifpst@distiller\pst@distillerfalse
+\DeclareOption{distiller}{\pst@distillertrue\pst@psfontstrue}
+%
+%---------------------------------COLOR --------------------------------
+\DeclareOption{monochrome}{%
+ \AtBeginDocument{\special{ps:
+ true setglobal globaldict begin
+ /setrgbcolor { add add 0 gt {1}{0} ifelse setgray } def
+ /setcmykcolor{ 4 dict begin
+ /k ED /y ED /m ED /c ED
+ 1 1 k sub c mul k add sub 0.29 mul
+ 1 1 k sub m mul k add sub 0.587 mul add
+ 1 1 k sub y mul k add sub 0.114 mul add
+ end 0 gt {1}{0} ifelse setgray } def
+ end false setglobal }}}
+
+\DeclareOption{grayscale}{%
+ \AtBeginDocument{\special{ps:
+ true setglobal globaldict begin
+ /setrgbcolor { 0.07 mul exch 0.71 mul add exch 0.21 mul add setgray } def
+ /setcmykcolor{ 4 dict begin
+ /k ED /y ED /m ED /c ED
+ 1 1 k sub c mul k add sub 0.29 mul
+ 1 1 k sub m mul k add sub 0.587 mul add
+ 1 1 k sub y mul k add sub 0.114 mul add
+ end setgray } def
+ end false setglobal }}}
+
+\DeclareOption*{\PassOptionsToPackage\CurrentOption{\pst@ColorPackage}}
+\ProcessOptions\relax
+
+
+\RequirePackage{iftex}
+\RequirePackage{shellesc}
+\ifpst@useCalc
+ \RequirePackage{pst-calculate}
+\fi
+%\ifPDFTeX
+% \ifpdfshellescape\else
+% \@latex@error
+% {You are running `\jobname.tex' with pdflatex and without option `--shell-escape' ,\MessageBreak
+% you need package auto-pst-pdf and that option!}%
+% {Alternatively use xelatex or latex->dvips->ps2pdf}
+% \fi
+%\fi
+\RequirePackage{\pst@ColorPackage}
+%
+\@ifundefined{PSTricksLoaded}
+{%
+ \let\saved@scalebox\scalebox
+ \input{pst-xkey}%
+ \input{pstricks}%
+ \ProvidesFile{pstricks.tex}[\filedate\space v\fileversion\space `PSTricks' (tvz,hv)]
+ \input{pst-fp.tex}%
+ \ProvidesFile{pst-fp.tex}[\filedate\space v\fileversion\space `PST-fp' (hv)]
+ \IfFileExists{pstricks.pro}{%
+ \ProvidesFile{pstricks.pro}
+ [2018/11/14 v. 1.29, PostScript prologue file (hv)]
+ \@addtofilelist{pstricks.pro}}{}%
+ \IfFileExists{pst-algparser.pro}{%
+ \ProvidesFile{pst-algparser.pro}[2011/10/31 v. 0.04, PostScript prologue file (hv)]
+ \@addtofilelist{pst-algparser.pro}}{}%
+ \IfFileExists{pst-tools.pro}{%
+ \ProvidesFile{pst-tools.pro}[2012/01/01 v. 0.02, PostScript prologue file (hv)]
+ \@addtofilelist{pst-tools.pro}}{}%
+ \IfFileExists{pst-dots.pro}{%
+ \ProvidesFile{pst-dots.pro}[2006/12/19 v. 2.00, PostScript prologue file (hv)]
+ \@addtofilelist{pst-dots.pro}}{}%
+}{}
+%
+\ifpst@distiller
+ \pst@def{setTransparency}<
+ [ /ca \psk@opacityalpha
+ /CA \psk@opacityalpha /SetTransparency pdfmark >
+ \pst@def{setStrokeTransparency}<
+ [ /ca \psk@strokeopacityalpha
+ /CA \psk@strokeopacityalpha /SetTransparency pdfmark >
+ \pst@def{setBlendmode}<
+ [ /BM%
+ \ifcase\psk@blendmode
+ /Normal \or
+ /Compatible \or
+ /Screen \or
+ /Multiply \or
+ /HardLight \or
+ /Darken \or
+ /Lighten \or
+ /Difference \or
+ /ColorDodge \or
+ /ColorBurn \or
+ /SoftLight \or
+ /Hue \or
+ /Saturation \or
+ /Luminosity \or
+ /Overlay \or
+ /Exclusion \or
+ /Color
+ \else
+ /Normal
+ \fi
+ /ca \psk@shapealpha /CA \psk@opacityalpha /SetTransparency pdfmark >
+\fi
+%
+\@ifpackageloaded{xcolor}{%
+ \@ifpackagelater{xcolor}{2004/05/02}%
+ {%
+ \let\pst@getcolor\XC@getcolor
+ \let\pst@usecolor\XC@usecolor
+ }
+ {%
+ \PackageError{pstricks}{%
+ *************************************************\MessageBreak
+ * Your Version of `xcolor.sty' is too old!\MessageBreak
+ * You need the version from 2004/05/02 or newer\MessageBreak
+ * or use: \string\usepackage[noxcolor]{pstricks}\MessageBreak
+ *************************************************}{}%
+ }%
+}{%
+ \def\pst@getcolor#1#2{%
+ \@ifundefined{\string\color@#1}%
+ {\@pstrickserr{Color `#1' not defined}\@eha}%
+ {\edef#2{#1}}}%
+ \def\pst@usecolor#1{\expandafter\expandafter\expandafter\c@lor@to@ps%
+ \csname\string\color@#1\endcsname\@@\space}%
+ \definecolor{darkgray}{gray}{.25}
+ \definecolor{gray}{gray}{.5}
+ \definecolor{lightgray}{gray}{.75}
+}%
+%
+\definecolor{gradbegin}{rgb}{0,1,1}
+\definecolor{gradend}{rgb}{0,.1,.95}
+%
+\@ifundefined{xglobal}%
+ {\def\xglobal#1#2#3#4% UK 2005-11-17
+ {#1{#2}{#3}{#4}%
+ \expandafter\global\expandafter\let\csname\string\color@#2%
+ \expandafter\endcsname\csname\string\color@#2\endcsname}}{}%
+%
+\def\newgray#1{%
+ \expandafter\gdef\csname #1\endcsname{\color{#1}}% HV 2004-03-31
+ \xglobal\definecolor{#1}{gray}}%
+%
+\def\newrgbcolor#1#2{%
+ \expandafter\gdef\csname #1\endcsname{\color{#1}}% HV 2004-03-31
+ \edef\@tempa{\noexpand\newrgbcolorx{#1}#2\noexpand\@@}\@tempa}%
+\def\newrgbcolorx#1#2 #3 #4\@@{%
+ \xglobal\definecolor{#1}{rgb}{#2,#3,#4}}
+%
+\def\newcmykcolor#1#2{%
+ \expandafter\gdef\csname #1\endcsname{\color{#1}}% HV 2004-03-31
+ \edef\@tempa{\noexpand\newcmykcolorx{#1}#2\noexpand\@@}\@tempa}
+\def\newcmykcolorx#1#2 #3 #4 #5\@@{%
+ \xglobal\definecolor{#1}{cmyk}{#2,#3,#4,#5}}
+%
+\def\newhsbcolor#1#2{%
+ \expandafter\gdef\csname #1\endcsname{\color{#1}}% HV 2004-03-31
+ \edef\@tempa{\noexpand\newhsbcolorx{#1}#2\noexpand\@@}\@tempa}
+\def\newhsbcolorx#1#2 #3 #4\@@{%
+ \xglobal\definecolor{#1}{hsb}{#2,#3,#4}}
+%
+\definecolor{black}{gray}{0}
+\definecolor{darkgray}{gray}{.25}
+\definecolor{gray}{gray}{.5}
+\definecolor{lightgray}{gray}{.75}
+\definecolor{white}{gray}{1}
+\definecolor{red}{rgb}{1,0,0}
+\definecolor{green}{rgb}{0,1,0}
+\definecolor{blue}{rgb}{0,0,1}
+%\definecolor{yellow}{rgb}{1,1,0}
+%\definecolor{cyan}{rgb}{0,1,1}
+%\definecolor{magenta}{rgb}{1,0,1}
+\definecolor{yellow}{cmyk}{0,0,1,0}
+\definecolor{cyan}{cmyk}{1,0,0,0}
+\definecolor{magenta}{cmyk}{0,1,0,0}
+%
+\renewcommand*\black{\color{black}}
+\renewcommand*\darkgray{\color{darkgray}}
+\renewcommand*\gray{\color{gray}}
+\renewcommand*\lightgray{\color{lightgray}}
+\renewcommand*\white{\color{white}}
+\renewcommand*\blue{\color{blue}}
+\renewcommand*\red{\color{red}}
+\renewcommand*\green{\color{green}}
+\renewcommand*\yellow{\color{yellow}}
+\renewcommand*\magenta{\color{magenta}}
+\renewcommand*\cyan{\color{cyan}}
+%
+\AtBeginDocument{%
+% \psset{fillcolor=white}% hv 0.33
+ \let\pst@endcolor=\relax%
+% \let\pst@color=\relax%
+% LaTeX used `\color@endgroup' instead. RN 2004-05-06
+}
+\pst@cntm=0
+\ifXeTeX\pst@cntm=1\else\ifpst@xetex\pst@cntm=1\fi\fi
+
+\ifnum\pst@cntm>\z@
+ \typeout{>>> Loading XeTeX special macros}%
+ \input{pstricks-xetex.def}%
+\fi
+%
+%% End of file `pstricks.sty'.