summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2007-04-29 23:34:55 +0000
committerKarl Berry <karl@freefriends.org>2007-04-29 23:34:55 +0000
commit3182aaa429e0e1e24f5824de116d90a154166b32 (patch)
treebed5edb8e336ac817456d5d8df22b35b45c47cde
parent043c21ab6397e48549c233d3952c0eb26462a00d (diff)
pstricks update, I hope (12apr07)
git-svn-id: svn://tug.org/texlive/trunk@4215 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/CHANGES346
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/Changes.doc17
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/README40
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/VERSIONS64
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/Changes4
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/Makefile38
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/README20
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/art11.sty175
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/pst-code.pdfbin279460 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/pst-code.tex138
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/pst-coil.doc221
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/pst-node.doc1066
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/pstricks.doc4739
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/tvz-code.sty271
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/code/tvz-hax.sty172
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/images/flowers.eps269
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/images/tiger.eps.gzbin49705 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pst-quickref.pdfbin0 -> 30070 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pstnews1-14.pdfbin40678 -> 43766 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pstnews97-15.pdfbin119595 -> 114101 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pstnews97-15.tex2
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pstricks-bug.tex547
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pstricks-doc.pdfbin0 -> 5367012 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/pstricks.bug291
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/test-pst.pdfbin189902 -> 0 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks/test-pst.tex257
-rw-r--r--Master/texmf-dist/dvips/pstricks/pst-node.pro2
-rw-r--r--Master/texmf-dist/tex/generic/pstricks/Changes10
-rw-r--r--Master/texmf-dist/tex/generic/pstricks/pst-node.tex50
-rw-r--r--Master/texmf-dist/tex/generic/pstricks/pst-plot.tex9
-rw-r--r--Master/texmf-dist/tex/generic/pstricks/pst-tree.tex397
-rw-r--r--Master/texmf-dist/tex/generic/pstricks/pstricks.tex22
-rw-r--r--Master/texmf-dist/tex/latex/pstricks/Changes9
-rw-r--r--Master/texmf-dist/tex/latex/pstricks/pst-all.sty12
-rw-r--r--Master/texmf-dist/tex/latex/pstricks/pstcol.sty9
-rw-r--r--Master/texmf-dist/tex/latex/pstricks/pstricks.sty5
-rw-r--r--Master/texmf-dist/tpm/pstricks.tpm29
-rw-r--r--Master/texmf/lists/pstricks21
38 files changed, 862 insertions, 8390 deletions
diff --git a/Master/texmf-dist/doc/generic/pstricks/CHANGES b/Master/texmf-dist/doc/generic/pstricks/CHANGES
deleted file mode 100644
index cea71394e87..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/CHANGES
+++ /dev/null
@@ -1,346 +0,0 @@
- PSTricks changes since announcement of April 18, 1997
- (February 21, 2001)
- -----------------------------------------------------
-
-
-pstricks:
---------
-
- * 97/05/21 Add the VERSIONS file
-
- * 97/05/30 Add this CHANGES file
-
-
-pstricks/generic:
-----------------
-
- * 97/04/16 pst-plot.tex (97 patch 1): Problem in the \pst@hlabels macro
-(reported by Akos Valentinyi <akos@indigo.econ.soton.ac.uk>)
-
- * 97/04/25 pstricks.con (97 patch 1): Correction of pstricks.con to work
-with "old" LaTeX - typically distribution of 1994
-(reported by Philippe Esperet <esperet@marie.polytechnique.fr>)
-
- * 97/04/28 pstricks.tex (97 patch 1): The \psbezier macro doesn't work
-correctly inside \pscustom
-(reported by Ralf Hetzel <R.Hetzel@physik.tu-dresden.de>)
-
- * 97/04/28 pst-grad.tex (97 patch 1): Work only in LaTeX and not in
-plain TeX, due to missing @ catcode change
-(reported by Ralf Hetzel <R.Hetzel@physik.tu-dresden.de>)
-
- * 97/05/05 pst-eps.tex (97 patch 1): \TeXtoEPS ... \endTeXtoEPS
-doesn't work. The PostScript header files were not loaded, as LaTeX 2e
-require now a specific mechanism
-(reported by Greg Byrd <gbyrd@Umunhum.Stanford.edu>)
-
- * 97/05/12 pstricks.tex (97 patch 2): The \translate macro doesn't work
-correctly
-(reported by Hilmar Schlegel <100.143869@germany.net>)
-
- * 97/05/14 pst-coil.tex (97 patch 1): The \nczigzag and \nccoil macros
-doesn't work, even if those from pst-node.tex were correct
-(reported by Tomer Kol <tkol@psl-palm.technion.ac.il>)
-
- * 97/05/14 pst-tree.tex (97 patch 1): The levelsep=*dim parameter
-doesn't work correctly
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/07/11 pstricks.tex (97 patch 3): dotscale parameter unefficient
-with \psdot and \psdots macros
-(reported by Ivan Maio <maio@polito.it>)
-
- * 97/07/22 pst-node.tex (97 patch 1): `dot' node is undefined
-in the psmatrix environment, but documented
-(reported by Jean-Francois Mertens <jfm@core.ucl.ac.be>)
-
- * 97/07/30 pst-node.tex (97 patch 2): C node type doesn't work
-in the psmatrix environment
-(reported by Kostas Oikonomou <ko@surya.ho.att.com>)
-
- * 97/08/08 pstricks.tex (97 patch 4): Suppress a spurious blank in
-the definition of \psk@dotangle in the \psset@dotangle macro definition
-(reported by Raymond Toy <toy@rtp.ericsson.se>)
-
- * 97/09/02 pst-node.tex (97 patch 3): Add a \leavevmode command
-for \dianode, \ovalnode and \trinode which were missing
-(reported by Wolfgang May <may@informatik.uni-freiburg.de>)
-
- * 97/09/24 pst-tree.tex (97 patch 2): The \pstree@horizlevelsepadjust
-doesn't require an argument - definition was falsely copied from
-\pstree@vertlevelsepadjust, which require one
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/09/24 pst-tree.tex (97 patch 3): The levelsep=*dim parameter
-give wrong result for treemode=R, because all leaves were positioned on the top
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/09/26 pst-node.tex (97 patch 4): Correct a bug which made
-that \thput and \tvput didn't work (it generate a PostScript error)
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/10/14 pstricks.bug (97 patch 2) : Add description of the problem of
-the change the way the curves are drawn when arrows are required and the
-problem of the \savedata macro that doesn't work inside another macro.
-
- * 97/10/17 pstricks.tex (97 patch 5): dotscale parameter doesn't
-work correctly in some cases. I remove the change of patch 3 and introduce
-another change.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/10/27 pstricks.tex (97 patch 6): The (coor1|coor2) special
-coordinates produce an error, due to a bug in 0.93a version, which correction
-in pstricks.bug was not reported in PST 97.
-(reported by Ivan Maio <maio@polito.it>)
-
- * 97/10/27 pstricks.tex (97 patch 7): The | and B| dots were not
-properly scaled when using the dotsize parameter (and the tbarsize has
-no effect, despite what documentation says).
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/03/20 pst-fill.tex (97 patch 1): There can be a division by 0 in the
-\pst@ManualFillCycle macro.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/12/12 pst-fill.tex (97 patch 2): Extensive modifications to
-improve the "automatic" mode, when the "tiling" one (added by me) is selected.
-(by Denis Girou <Denis.Girou@idris.fr>)
-
- * 98/01/07 pstricks.tex (97 patch 8): The \movepath macro doesn't
-work, due to a typo.
-(reported by Jin-Hwan Cho <chofchof@math.kaist.ac.kr>)
-
- * 98/01/07 pstricks.tex (97 patch 9): The \scale macro doesn't work,
-due to a bug correction from the 0.93 pstricks.bug file not reported in
-PSTricks 97.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 98/03/19 pst-node.tex (97 patch 5): The \nccoil and \nczigzag macros
-are drawn in the wrong direction, from the ending to the starting point.
-So the arrows, when defined, appear exchanged.
-(reported by Wolfgang May <may@informatik.uni-freiburg.de>)
-
- * 98/03/19 pst-coil.tex (97 patch 2): Same problem than above.
-
- * 98/04/28 pst-node.tex (97 patch 6): The refpoint parameter of the \rnode
-macro is not used if it is specified.
-(reported by Pierre Basso <Pierre.Basso@lim.univ-mrs.fr>)
-
- * 98/07/03 pst-char.tex (97 patch 1): In the \pscharpath macro, the
-PostScript code is not reset after it inclusion, which cause problem when
-this macro is used inside another one.
-(reported by Martin Giese <giese@ira.uka.de>)
-
- * 98/09/23 pst-node.tex (97 patch 7): There are two typos in validation
-tests, which avoid to print an error message for wrong values of tpos.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 98/11/26 pst-char.tex (97 patch 2): In the \pscharpath@ii macro, the
-\begin@ClosedObj macro execute the \solid@star macro, but as the star
-convention has another meaning for \pscharpath and \pscharclip, it can execute
-wrong code inside \solid@star.
-(reported by To Thanh Binh <binh@atlantis.ET.Uni-Magdeburg.De>)
-
- * 98/11/27 pst-node.tex (97 patch 8): The \multispan "plain" macro is broken
-by a change made in PSTricks 97 for LaTeX 2e compatibility. And in any case
-the \psspan macro of the "psmatrix" environment doesn't work because an
-undefined \iterate macro is required.
-(reported by Stanislav Brabec <utx@k332.feld.cvut.cz> and
-Denis Girou <Denis.Girou@idris.fr>)
-
- * 99/03/11 pst-char.tex (97 patch 3): A spurious blank was introduced in the
-\pscharpath@ii macro by the patch 1 correction.
-(reported by Stanislav Brabec <utx@k332.feld.cvut.cz>)
-
- * 99/03/24 pstricks.tex (97 patch 10): The * convention doesn't work
-in the \uput* macro, due to a broken definition in the code of pst-beta.tex
-used in PSTricks 97.
-(reported by Bob Howlett <bobh@maths.usyd.edu.au>)
-
- * 99/04/14 pst-node.tex (97 patch 9): The \ncLine doesn't position
-correctly it content, due to an erroneous order of the used coordinates
-in the code of pst-beta.tex used in PSTricks 97.
-(reported by Frank Mueller <meckccef@sp.zrz.tu-berlin.de>)
-
- * 99/08/03 pstricks.tex (97 patch 11): The \curveto and \rcurveto macros
-are broken due to a typo in the \pst@threecoor macro (in fact, it was
-already present in version 0.93...).
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 99/08/31 pst-tree.tex (97 patch 4): The \skiplevel macro and the relative
-"skiplevels" environment doesn't compute correctly the bounding boxes when
-their arguments are some trees with special configuration.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 99/09/03 pst-node.tex (97 patch 10): The \psspan macro doesn't work since
-LaTeX 2e, due to internal changes in LaTeX 2e.
-(sent by Michael Sharpe <msharpe@euclid.ucsd.edu>)
-
- * 99/10/06 pstricks.tex (97 patch 12): The \pssetlength, \pssetxlength,
-\pssetylength and \psaddtolength have not the expected behaviour in a special
-circumstance, which can be cure by adding a \relax macro.
-(reported by Isaiah Shavitt <shavitt@chemistry.ohio-state.edu>)
-
- * 99/10/06 vtex.con (97 patch 3): The \tx@Rot macro is redefined.
-(sent by Michael Vulis <support@micropress-inc.com>)
-
- * 99/10/28 pst-tree.tex (97 patch 5): A *value for the levelsep parameter
-doesn't work in plain TeX, as the auxiliary unit file used to write temporary
-informations is not defined.
-(reported by Michael W. Daniels <daniels@ling.ohio-state.edu>)
-
- * 99/11/17 vtex.con (97 patch 4): There is a coherency problem in the
-management of colors inside the pspicture environment.
-(reported by Michael Vulis <support@micropress-inc.com>)
-
- * 99/12/12 pst-plot.tex (97 patch 2): The dotscale parameter is not
-correctly managed most of the time.
-(reported by Etienne Riga <etienne.riga@skynet.be>)
-
- * 99/12/16 pstricks.tex (97 patch 13): The dot symbols for diamond and
-diamond* are now defined in the PSTricksDotFont font. The symbol Bdiamond
-is also added.
-(suggested and sent by Etienne Riga <etienne.riga@skynet.be>)
-
- * 99/12/23 pstricks.tex (97 patch 14): The dotscale parameter is not
-correctly managed most of the time (the patch 5 was still unefficient).
-(reported by Etienne Riga <etienne.riga@skynet.be>)
-
- * 00/04/26 pst-eps.tex (97 patch 2): There is a typo in the \pst@checkfile
-macro when using the "all*" value for the makeeps parameter.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 00/04/26 pst-tree.tex (97 patch 6): A *value for the levelsep parameter
-doesn't work in plain TeX, as the auxiliary unit file used to write temporary
-informations is not defined (replace the inefficient patch 5 for the same
-problem).
-(reported by Michael W. Daniels <daniels@ling.ohio-state.edu>)
-
- * 00/11/09 pst-node.tex (97 patch 11): The \pst@newnode macro can introduce
-a spurious blank in some special circumstances. I add a \pst@killglue macro
-to solve the problem.
-(reported by Dominique Rodriguez <dominique.rodriguez@waika9.com>)
-
-
-pstricks/latex:
---------------
-
- * 97/05/28 pst-all.sty: remove a comment since there are no dependancies
-between pst-node.tex and pst-coil.tex
-
- * 98/07/02 pst-all.sty: add the "tiling" option for `pst-fill' as default
-
-
-pstricks/dvips:
---------------
-
- * 97/05/09 pst-node.pro (97 patch 1): The \nccircle and \Tcircle
-macros of pst-node.tex doesn't work
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/11/07 pstricks.pro (97 patch 1): There is a typo in Grid macro
-definition which make \psgrid used with griddots to generate a wrong number
-of dots if xunit differ from yunit.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 97/12/12 pstricks.pro (97 patch 2): Hachures change of starting
-point according the position of the area hatched, which is a problem for
-special cases, where we need to align them in several contiguous regions.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 98/06/01 pstricks.pro (97 patch 3): Corrections in the LineFill and
-Triangle macros suggested by Michael Vulis to don't leave unused operands
-on the stack, which is essential for some drivers.
-(reported by Michael Vulis <support@micropress-inc.com>)
-
- * 98/06/02 pst-grad.pro (97 patch 1): Correction in the Coil macro
-suggested by Michael Vulis to don't leave unused operands on the stack,
-which is essential for some drivers.
-(reported by Michael Vulis <support@micropress-inc.com>)
-
- * 99/12/16 pst-dots.pro (97 patch 1): The dot symbols for diamond and
-diamond* are now defined in the PSTricksDotFont font. The symbol Bdiamond
-is also added.
-(suggested and sent by Etienne Riga <etienne.riga@skynet.be>)
-
- * 00/05/02 pst-grad.pro (97 patch 1): There are two blank lines in
-the file which cause a bug when this header file is loaded using the \PSTtoEPS
-macro of the `pst-eps' package.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
- * 00/05/02 pst-text.pro (97 patch 1): There are several blank lines in
-the file which cause a bug when this header file is loaded using the \PSTtoEPS
-macro of the `pst-eps' package.
-(reported by Denis Girou <Denis.Girou@idris.fr>)
-
-
-pstricks/doc:
-------------
-
- * 98/07/10 test-pst.tex: Version 1.1: this file require
-\usepackage[latin1]{inputenc} definition as one example (calligramme of
-4-5-13) use 8 bits characters.
-(reported by Jean-Francois Mertens <jfm@core.ucl.ac.be>)
-
- * 98/07/10 lgc/4-5-13.inl: Change the values for one verse (adding 1mm on
-both left and rigth sides) to allow correct typesetting in T1 encoding
-as well as OT1.
-(reported by Jean-Francois Mertens <jfm@core.ucl.ac.be>)
-
- * 98/07/10 test-pst.tex: Version 1.2: change the sizes used by subfigures
-4-5-5 and 4-5-6 to take into account the real size used by 4-5-5 after
-correction of the bug in pst-key.tex 1.10 (see below).
-
- * 98/09/09 test-pst.tex: Version 1.3: add explicit page breaks to require
-less memory to be compiled (only 180000 bytes now).
-
- * 00/03/15 pstricks.bug: Version 1.5: suppress the entry for the problem
-with the \psspan macro of `pst-node' (as the workaround proposed by Michael
-Sharpe was introduced in pst-node.tex as patch 10) and add the problem
-on two labels for a connection with at least one of them using also node
-connections, as reported by Anthony Doggett.
-
-
-pstricks/obsolete/doc/src:
--------------------------
-
- * 97/07/01 tp-test.tex: The tp-test.tex file didn't work (in fact it was not
-compatible with LaTeX 2e)
-(reported and updated by Steffen Klupsch
-<steffen@vlsi.informatik.th-darmstadt.de>)
-
-
-pstricks/contrib:
-----------------
-
- * 97/05/30 Reorganization using subdirectories
-
- * 97/05/30 Add the pst-ghsb subdirectory and relative files
-
- * 98/02/25 Migrate the palette subdirectory in the obsolete one
-
- * 98/02/25 Add the pst-poly subdirectory and relative files
-
- * 98/02/25 Add the misc subdirectory and relative files
-
- * 98/07/23 Version 1.11 of misc/pst-key.tex to correct a bug in the
-definition of the \use@par macro.
-(reported by Michael Vulis <support@micropress-inc.com>)
-
- * 98/09/15 declare pst-ghsb as superceded by the pst-slpe package
-
- * 98/09/15 Add the pst-blur subdirectory and relative files
-(from Martin Giese)
-
- * 98/09/15 Add the pst-slpe subdirectory and relative files
-(from Martin Giese)
-
- * 98/09/16 Add the pst-gr3d subdirectory and relative files
-
- * 99/11/26 Add the pst-osci subdirectory and relative files
-
- * 01/02/19 Add the pst-lens subdirectory and relative files
-
- * 01/02/19 Version 1.3 of the `pst-gr3d' package
-
- * 01/02/21 Version 1.5 of the `pst-poly' package
diff --git a/Master/texmf-dist/doc/generic/pstricks/Changes.doc b/Master/texmf-dist/doc/generic/pstricks/Changes.doc
index 8e031bdd9bb..a4f2951a434 100644
--- a/Master/texmf-dist/doc/generic/pstricks/Changes.doc
+++ b/Master/texmf-dist/doc/generic/pstricks/Changes.doc
@@ -1,2 +1,17 @@
-2005-12-22 new files pstnews1-14.tex|pdf
+-- pstricks-doc.pdf ------
+2007-04-11 updated documentation, no source available
+
+-- pst-quickref.pdf ------
+2007-04-11 quick reference, no source available
+
+-- pstricks-bug.tex ------
+2007-04-11 all unfixed bugs
+
+
+-- pstnews* --------
2006-12-19 new files pstnews1-15.tex|pdf
+2005-12-22 new files pstnews1-14.tex|pdf
+2005-10-25 new files pstnews1-13.tex|pdf
+2005-09-19 new files pstnews1-11.tex|pdf
+2005-08-20 new files pstnews1-10.tex|pdf
+2005-05-12 new files pstnews97-15.tex|pdf
diff --git a/Master/texmf-dist/doc/generic/pstricks/README b/Master/texmf-dist/doc/generic/pstricks/README
index 3e4bc5bd408..b17c38434f8 100644
--- a/Master/texmf-dist/doc/generic/pstricks/README
+++ b/Master/texmf-dist/doc/generic/pstricks/README
@@ -1,4 +1,4 @@
-PSTricks 1993--2007
+PSTricks 1992 -- 2007
-----------------------------------------------------------------------
@@ -7,7 +7,7 @@ PSTricks 97 is edited by Denis Girou <Denis.Girou@idris.fr>
and Sebastian Rahtz <sebastian.rahtz@computing-services.oxford.ac.uk>
PSTricks 2004 is edited by Herbert Voss <voss@PSTricks.de>
and Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
-PSTricks 2005--07 is edited by Herbert Voss <voss@PSTricks.de>
+PSTricks 2005-07 is edited by Herbert Voss <voss@PSTricks.de>
-----------------------------------------------------------------------
For more informations go to http://tug.org/PSTricks _and_ read the
@@ -20,7 +20,7 @@ news articles in the doc directory!
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--2007 by Herbert Voss <voss@PSTricks.de>
+COPYRIGHT 2006-07 by Herbert Voss <voss@PSTricks.de>
This program can be redistributed and/or modified under the terms
of the LaTeX Project Public License Distributed from CTAN
@@ -36,7 +36,7 @@ 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
+Some new features have been added in the 2007 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.
@@ -99,18 +99,7 @@ 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...
-3.3 - Test of the installation
-
-The file doc/test-pst.tex allow you to test all your installation and the
-various components of PSTricks. It is the concatenation of most of the
-examples of the PSTricks chapter of "The LaTeX Graphics Companion".
-You must take care (mainly if you are "normally" a user of plain TeX only,
-that it require LaTeX and some packages of it distribution (namely `calc',
-`ifthen' and `graphicx'). It also require the `random' and `subfigure'
-packages, which can be found on CTAN or the TeXLive cdrom - see the README
-file of the doc subdirectory).
-
-3.4 - Known pitfalls
+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,
@@ -129,11 +118,6 @@ after PSTricks, and in this case use the `graphics' syntax of \scalebox
(not the one described in the PSTricks documentation). pstricks.sty
redefines this macro so that both can be used (see doc).
- d - We have rename some package files for consistency. But the reference
-documentation in obsolete/pstricks/doc subdirectory still refer to the old names.
-So, take care that `pst2eps' is now `pst-eps', `charpath' is now `pst-text',
-`gradient' is now `pst-grad', `textpath' is now `pst-text' and `pstree' is
-now `pst-tree'.
4 - Contents
@@ -143,10 +127,8 @@ now `pst-tree'.
The distribution contain the following subdirectories:
+base : the core pstricks files
contrib : various contributions
-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...)
4.2 - PSTricks core files
@@ -172,16 +154,16 @@ ones for 0.93a version (pst-usr?.ps files).
Denis Girou maintain a list of known errors in both version 0.93a and
additional old Beta documentations, in obsolete/doc/pst-doc.err
-A large chapter of "The LaTeX Graphics Companion", by Goossens, Rahtz and
-Mittelbach, Addison Wesley 1997, is dedicated to PSTricks, and this
+A large chapter of "The LaTeX Graphics Companion, 2nd ed.", by Goossens, Mittelbach,
+Rahtz, Roegel and Voß, Addison Wesley 2007, is dedicated to PSTricks, and this
currently forms the only systematic description of the integration of
the basic PSTricks and the beta additions of 1993. The source of all examples
from that book is also on CTAN/info/lgc and most of them in the doc/lgc
subdirectory of the PST97 distribution. The second edition of this book
has no more a chapter of PSTricks.
-There is also a supporting set of Web pages, actually maintained
-by Herbert Voss, on http://www.tug.org/PSTricks with various
+There is also a supporting set of Web pages on
+http://www.tug.org/PSTricks with various
pointers and examples classified by categories.
And there is also a mailing list devoted to discussions on PSTricks usage.
@@ -189,4 +171,4 @@ 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 2007-03-11)
+Denis Girou, Sebastian Rahtz and Herbert Voss (updated April 11, 2007)
diff --git a/Master/texmf-dist/doc/generic/pstricks/VERSIONS b/Master/texmf-dist/doc/generic/pstricks/VERSIONS
deleted file mode 100644
index 7453aa3ecb0..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/VERSIONS
+++ /dev/null
@@ -1,64 +0,0 @@
- PSTricks current file versions
- (June 26, 2004)
- ------------------------------
-
-
-latex directory (listed are only the special style files,
-which did more than loading the tex file):
--------------
-
------------------------------------------------
-| File | Version | Date |
------------------------------------------------
-| pstricks.sty | 0.21 | 2004/05/12 |
-| pst-eps.sty | 0.1 | 2005/05/21 |
------------------------------------------------
-
-
-generic directory:
------------------
-
--------------------------------------------
-| File | Version | Date |
--------------------------------------------
-| dvipsone.con | 97 | 1994/03/29 |
-| pst-3d.tex | 97 | 1997/03/25 |
-| pst-char.tex | 97 patch 3 | 1999/03/11 |
-| pst-coil.tex | 97 patch 2 | 1998/03/19 |
-| pst-eps.tex | 97 patch 2 | 2005/05/21 |
-| pst-fill.tex | 97 patch 3 | 2004/06/23 |
-| pst-grad.tex | 1.04 | 2004/06/23 |
-| pst-node.tex | 97 patch 11 | 2000/11/09 |
-| pst-plot.tex | 97 patch 2 | 1999/12/12 |
-| pst-text.tex | 97 | 1997/03/25 |
-| pst-tree.tex | 97 patch 6 | 2000/04/26 |
-| pstricks.con | 97 patch 2 | 1997/04/28 |
-| pstricks.tex | 1.07 | 2005/05/20 |
-| textures.con | 97 | 1997/03/01 |
-| vtex.con | 97 patch 4 | 1999/11/19 |
--------------------------------------------
-
-
-dvips directory:
----------------
-
--------------------------------------------
-| File | Version | Date |
--------------------------------------------
-| pst-coil.pro | 97 patch 1 | 1998/06/02 |
-| pst-dots.pro | 97 patch 1 | 1999/12/16 |
-| pst-grad.pro | 1.04 | 2004/06/23 |
-| pst-node.pro | 97 patch 1 | 1997/05/09 |
-| pst-text.pro | 97 patch 1 | 2000/05/02 |
-| pstricks.pro | 97 patch 7 | 2005/05/20 |
--------------------------------------------
-
-doc directory:
--------------
-
------------------------------------------------
-| File | Version | Date |
------------------------------------------------
-| pstricks.bug | 97 patch 5 | 2000/03/14 |
-| pstnews97-15.tex | 2004 | 2004/05/12 |
------------------------------------------------
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/Changes b/Master/texmf-dist/doc/generic/pstricks/code/Changes
deleted file mode 100644
index 53f76bc9ed3..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/Changes
+++ /dev/null
@@ -1,4 +0,0 @@
-pst-code.tex --------
-
-2006-12-17 make it run with pdflatex (hv)
-
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/Makefile b/Master/texmf-dist/doc/generic/pstricks/code/Makefile
deleted file mode 100644
index 58a4fec923a..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/Makefile
+++ /dev/null
@@ -1,38 +0,0 @@
-input=pst-code
-
-all:
- $(MAKE) dvi
- $(MAKE) ps
- $(MAKE) pdf
-
-index:
- makeindex -s gind.ist $(input).idx
-
-dvi:
- latex $(input).tex
- $(MAKE) index
- latex $(input).tex
- xdvi $(input).dvi
-
-ps:
- latex $(input).tex
- $(MAKE) index
- latex $(input).tex
- dvips $(input)
- gv $(input).ps
-
-pdf:
- pdflatex $(input).tex
- $(MAKE) index
- pdflatex $(input).tex
- xpdf $(input).pdf
-
-
-zip:
- $(RM) $(input).zip
- zip -r $(input).zip *
-
-clean:
- $(RM) *.pdf
- $(RM) *.ps
-
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/README b/Master/texmf-dist/doc/generic/pstricks/code/README
deleted file mode 100644
index 9a4b312a921..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/README
+++ /dev/null
@@ -1,20 +0,0 @@
-latex pst-code
-makeindex -s gind.ist pst-code.idx
-latex pst-code
-
-or
-
-pdflatex pst-code
-makeindex -s gind.ist pst-code.idx
-pdflatex pst-code
-
-or use one of the alternative make commands
-
-make dvi
-make pdf
-make ps
-make clean
-make zip
-
--------------
-2006-12-17 Herbert Voss \ No newline at end of file
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/art11.sty b/Master/texmf-dist/doc/generic/pstricks/code/art11.sty
deleted file mode 100644
index d08dfe2e0fd..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/art11.sty
+++ /dev/null
@@ -1,175 +0,0 @@
-% ARTICLE STANDARD DOCUMENT STYLE -- Released 14 Jan 1992
-% for LaTeX version 2.09
-% Copyright (C) 1992 by Leslie Lamport
-
-\lineskip 1pt
-\normallineskip 1pt
-\def\baselinestretch{1}
-
-\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
-\abovedisplayskip 11\p@ plus3\p@ minus6\p@
-\belowdisplayskip \abovedisplayskip
-\abovedisplayshortskip \z@ plus3\p@
-\belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
-\let\@listi\@listI}
-
-\def\small{\@setsize\small{12pt}\xpt\@xpt
-\abovedisplayskip 10\p@ plus2\p@ minus5\p@
-\belowdisplayskip \abovedisplayskip
-\abovedisplayshortskip \z@ plus3\p@
-\belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
-\def\@listi{\leftmargin\leftmargini
-\topsep 6\p@ plus2\p@ minus2\p@\parsep 3\p@ plus2\p@ minus\p@
-\itemsep \parsep}}
-
-\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
-\abovedisplayskip 8\p@ plus2\p@ minus4\p@
-\belowdisplayskip \abovedisplayskip
-\abovedisplayshortskip \z@ plus\p@
-\belowdisplayshortskip 4\p@ plus2\p@ minus2\p@
-\def\@listi{\leftmargin\leftmargini
-\topsep 4\p@ plus2\p@ minus2\p@\parsep 2\p@ plus\p@ minus\p@
-\itemsep \parsep}}
-
-\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
-\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
-\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
-\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
-\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
-\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
-\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
-
-\normalsize
-
-\if@twoside
- \oddsidemargin 36pt
- \evensidemargin 74pt
- \marginparwidth 100pt
-\else
- \oddsidemargin 54pt
- \evensidemargin 54pt
- \marginparwidth 83pt
-\fi
-\marginparsep 10pt
-
-\topmargin 27pt
-
-\headheight 12pt
-\headsep 25pt
-\topskip = 11pt
-
-\footskip 30pt
-
-\textheight = 38\baselineskip
-\advance\textheight by \topskip
-\textwidth 360pt
-
-\columnsep 10pt
-\columnseprule 0pt
-
-\footnotesep 7.7pt
-
-\skip\footins 10pt plus 4pt minus 2pt
-
-\floatsep 12pt plus 2pt minus 2pt
-
-\textfloatsep 20pt plus 2pt minus 4pt
-
-\intextsep 12pt plus 2pt minus 2pt
-
-\@maxsep 20pt
-
-\dblfloatsep 12pt plus 2pt minus 2pt
-
-\dbltextfloatsep 20pt plus 2pt minus 4pt
-
-\@dblmaxsep 20pt
-
-\@fptop 0pt plus 1fil
-
-\@fpsep 8pt plus 2fil
-\@fpbot 0pt plus 1fil
-
-\@dblfptop 0pt plus 1fil
-
-\@dblfpsep 8pt plus 2fil
-\@dblfpbot 0pt plus 1fil
-
-\marginparpush 5pt
-
-\parskip 0pt plus 1pt
-
-\parindent 17pt
-
-\partopsep 3pt plus 1pt minus 2pt
-
-\@lowpenalty 51
-\@medpenalty 151
-\@highpenalty 301
-
-\@beginparpenalty -\@lowpenalty
-
-\@endparpenalty -\@lowpenalty
-
-\@itempenalty -\@lowpenalty
-
-\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus-1ex minus
- -.2ex}{2.3ex plus.2ex}{\reset@font\Large\bf}}
-\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus-1ex
- minus-.2ex}{1.5ex plus.2ex}{\reset@font\large\bf}}
-\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
- -1ex minus-.2ex}{1.5ex plus.2ex}{\reset@font\normalsize\bf}}
-\def\paragraph{\@startsection
- {paragraph}{4}{\z@}{3.25ex plus1ex minus.2ex}{-1em}{\reset@font
- \normalsize\bf}}
-\def\subparagraph{\@startsection
- {subparagraph}{4}{\parindent}{3.25ex plus1ex minus
- .2ex}{-1em}{\reset@font\normalsize\bf}}
-
-\setcounter{secnumdepth}{3}
-
-\def\appendix{\par
- \setcounter{section}{0}
- \setcounter{subsection}{0}
- \def\thesection{\Alph{section}}}
-
-\leftmargini 2.5em
-\leftmarginii 2.2em
-\leftmarginiii 1.87em
-\leftmarginiv 1.7em
-\leftmarginv 1em
-\leftmarginvi 1em
-
-\leftmargin\leftmargini
-\labelsep .5em
-\labelwidth\leftmargini\advance\labelwidth-\labelsep
-
-\def\@listI{\leftmargin\leftmargini \parsep 4.5\p@ plus2\p@ minus\p@
-\topsep 9\p@ plus3\p@ minus5\p@
-\itemsep 4.5\p@ plus2\p@ minus\p@}
-
-\let\@listi\@listI
-\@listi
-
-\def\@listii{\leftmargin\leftmarginii
- \labelwidth\leftmarginii\advance\labelwidth-\labelsep
- \topsep 4.5\p@ plus2\p@ minus\p@
- \parsep 2\p@ plus\p@ minus\p@
- \itemsep \parsep}
-
-\def\@listiii{\leftmargin\leftmarginiii
- \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
- \topsep 2\p@ plus\p@ minus\p@
- \parsep \z@ \partopsep\p@ plus\z@ minus\p@
- \itemsep \topsep}
-
-\def\@listiv{\leftmargin\leftmarginiv
- \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
-
-\def\@listv{\leftmargin\leftmarginv
- \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
-
-\def\@listvi{\leftmargin\leftmarginvi
- \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
-
-\endinput
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/pst-code.pdf b/Master/texmf-dist/doc/generic/pstricks/code/pst-code.pdf
deleted file mode 100644
index aa1ce5ecc19..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/pst-code.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/pst-code.tex b/Master/texmf-dist/doc/generic/pstricks/code/pst-code.tex
deleted file mode 100644
index c0aae3c50ae..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/pst-code.tex
+++ /dev/null
@@ -1,138 +0,0 @@
-%% BEGIN pst-code.tex
-%%
-%% For printing documented code for PSTricks.
-%%
-%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
-%%
-%% This LaTeX file inputs pstricks.doc and pst-node.doc,
-%% and prints the documented code.
-%%
-%% You must also have Frank Mittelbach's
-%% doc.sty and gind.ist
-%% (available from rusmv1.rus.uni-stuttgart.de), as well as my
-%% tvz-hax.sty, tvz-code.sty and fancybox.sty
-%% (distributed with PSTricks).
-%%
-%% gind.ist is for the index. I.e.,
-%% makeindex -s gind.ist pst-code.idx
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Change these for a4 paper:
-% \def\paperwidth{8.5in}
-% \def\paperheight{11in}
-
-\def\paperwidth{210mm}
-\def\paperheight{297mm}
-
-\documentstyle{tvz-code}
-
-\def\fileversion{0.93a-97}
-\def\filedate{1997/03/25}
-
-% Comment out to suppress generation of .idx file. Speeds things up.
-% \MakeIndex
-
-% Include to suppress checksums for drafts:
-\def\StopEventually#1{\let\Finale\relax}
-
-\makeatletter
-
-%%%%%%%%%%%%%%%%%%% More DoNotIndex for pst-code %%%%%%%%%%%%%%%
-\DoNotIndex{\pst@dima,\pst@dimb,\pst@dimc,\pst@dimd,\pst@dimg,\pst@cnta,%
-\pst@cntb,\pst@cntc,\pst@cntg,\pst@tempa,\pst@tempb,\pst@tempc,\pst@tempd,%
-\pst@tempg,\pst@boxa,\pst@boxg,\if@pst,\@psttrue,\@pstfalse}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\makeatother
-
-\MakeShortVerb\"
-
-\ShortMeta
-
-\def\n#1{{\tt \string#1}}
-
-\newbox\junkbox
-\def\DocInput#1{%
- \MakePercentIgnore
- \setbox\junkbox=\hbox\bgroup
- \input{#1}%
- \MakePercentComment}
-\let\EndDocPreamble\egroup
-
-\begin{document}
-
-\def\thetitle{PSTricks: Documented Code}
-
-\begin{titlepage}
-
-\let\footnotesize\small
-\let\footnoterule\relax
-\setcounter{page}{0}
-
-\null
-\vfil
-\vskip 25pt
-
-\begin{center}
-
- {\LARGE\bf PSTricks}:\\[5pt]
- {\large\bf PostScript macros for Generic TeX}\\[7pt]
- {\LARGE\bf\em Documented Code}\par
-
- \vskip 3em
-
- {\large \lineskip .75em Timothy Van Zandt}%
- \thanks{%
- Author's address:
- Department of Economics, Princeton University,
- Princeton, NJ 08544-1021, USA. Internet: {\tt tvz@Princeton.EDU}}%
- \par
-
- \vskip 1.5em
-
- {\large \thefiledate\\[2pt] Version \fileversion}\par
-
-\end{center}
-
-\par
-
-\makeatletter\@thanks\makeatother
-
-\vfil
-
-PSTricks is a collection of PostScript macros that is compatible with most
-\TeX\ macro packages, including Plain \TeX\ and \LaTeX. Included are macros
-for color, graphics, rotation and overlays.
-
-This is the documented code. There is also a {\em User's Guide} and a read-me
-file.
-
-\vfil
-\null
-
-\end{titlepage}
-
-\setcounter{footnote}{0}
-\pagenumbering{roman}
-\tableofcontents
-\clearpage
-\pagenumbering{arabic}
-
-\StopEventually{}
-\DocInput{pstricks.doc}
-\Finale
-\clearpage
-
-\StopEventually{}
-\DocInput{pst-node.doc}
-\Finale
-\clearpage
-
-\DeleteShortMeta
-
-\PrintIndex
-
-\end{document}
-
-%% END pst-code.tex
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/pst-coil.doc b/Master/texmf-dist/doc/generic/pstricks/code/pst-coil.doc
deleted file mode 100644
index c412ed4595c..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/pst-coil.doc
+++ /dev/null
@@ -1,221 +0,0 @@
-%% BEGIN pst-coil.doc
-\def\fileversion{0.93a}
-\def\filedate{93/03/12}
-%%
-%% For stroking and filling characters with PSTricks' line and fill styles.
-%%
-%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
-%% See pstricks.doc or pstricks.tex for copying restrictions.
-%%
-%% See the PSTricks read-me file and the User's Guide for documentation.
-%
-% **************************************************************************
-% This is `pst-coil.doc'. Use as is, or create a header file and stripped
-% input file with pst-make.tex. See the PSTricks read-me file for details.
-% **************************************************************************
-
-\message{ v\fileversion, \filedate}
-
-\csname PSTcoilsLoaded\endcsname
-\let\PSTcoilsLoaded\endinput
-
-\ifx\PSTricksLoaded\endinput\else
- \def\next{\input pstricks.tex}\expandafter\next
-\fi
-
-\edef\TheAtCode{\the\catcode`\@}
-\catcode`\@=11
-
-\pst@ATH<\% Version \fileversion, \filedate.>
-\pst@ATH<\% For use with \pstdriver.>
-\pst@ATH</tx@CoilDict 40 dict def tx@CoilDict begin>
-
-\ifx\pst@useheader\iftrue
- \pstheader{pst-coil.pro}
- \edef\pst@theheaders{\pst@theheaders,pst-coil.pro}
- \def\pst@coildict{tx@CoilDict begin }
-\else
- \def\pst@coildict{%
- /tx@CoilDict where
- { pop tx@CoilDict begin}
- { userdict begin /tx@CoilDict 40 dict def end
- tx@CoilDict begin }
- ifelse }
-\fi
-
-\def\psset@coilwidth#1{\pst@getlength{#1}\psk@coilwidth}
-\psset@coilwidth{1cm}
-
-\def\psset@coilheight#1{\pst@checknum{#1}\pscoilheight}
-\psset@coilheight{1}
-
-\def\psset@coilarmA#1{\pst@getlength{#1}\psk@coilarmA}
-\def\psset@coilarmB#1{\pst@getlength{#1}\psk@coilarmB}
-\def\psset@coilarm#1{%
- \pst@getlength{#1}\psk@coilarmA
- \let\psk@coilarmB\psk@coilarmA}
-\psset@coilarm{.5cm}
-
-\def\psset@coilaspect#1{\pst@getangle{#1}\psk@coilaspect}
-\psset@coilaspect{45}
-
-\def\psset@coilinc#1{\pst@getangle{#1}\psk@coilinc}
-\psset@coilinc{10}
-
-\def\pscoil{\def\pst@par{}\pst@object{pscoil}}
-\def\pscoil@i{\pst@getarrows\pscoil@ii}
-\def\pscoil@ii(#1){%
- \@ifnextchar(%
- {\pscoil@iii{1}(#1)}%
- {\pscoil@iii{\z@}(0,0)(#1)}}
-\def\pscoil@iii#1(#2)(#3){%
- \begin@OpenObj
- \pst@getcoor{#2}\pst@tempa
- \pst@getcoor{#3}\pst@tempb
- \pst@optcp{#1}\pst@tempa
- \addto@pscode{%
- \pst@tempa \pst@tempb
- \psk@coilwidth \pscoilheight
- \psk@coilarmA \psk@coilarmB
- \psk@coilaspect \psk@coilinc
- \pst@coildict \tx@Coil end}%
- \showpointsfalse
- \end@OpenObj}
-
-\pst@def{CoilLoop}<%
- /t ED
- t sin AspectSin mul t 180 div AspectCos mul add
- t cos
- lineto>
-
-\pst@def{Coil}<%
- /Inc ED
- dup sin /AspectSin ED cos /AspectCos ED
- /ArmB ED /ArmA ED
- /h ED /w ED
- /y1 ED /x1 ED /y0 ED /x0 ED
- x0 y0 translate
- y1 y0 sub x1 x0 sub
- 2 copy \tx@Pyth /TotalLength ED
- \tx@Atan rotate
- /BeginAngle ArmA AspectCos \tx@Div w h mul \tx@Div 360 mul def
- /EndAngle
- TotalLength ArmB sub AspectCos \tx@Div
- w h mul \tx@Div 360 mul
- def
- 1 0 0 0 ArrowA
- ArmA 0 lineto
- /mtrx CM def
- w h mul 2 \tx@Div w 2 \tx@Div scale
- BeginAngle Inc EndAngle { \tx@CoilLoop } for
- EndAngle \tx@CoilLoop
- mtrx setmatrix
- TotalLength ArmB sub 0 lineto
- CP TotalLength 0 ArrowB
- lineto>
-
-\def\psCoil{\def\pst@par{}\pst@object{psCoil}}
-\def\psCoil@i#1#2{%
- \begin@AltOpenObj
- \showpointsfalse
- \pst@getangle{#1}\pst@tempa
- \pst@getangle{#2}\pst@tempb
- \addto@pscode{%
- \pst@tempa
- \pst@tempb
- \psk@coilwidth
- \pscoilheight
- \psk@coilaspect
- \psk@coilinc
- \pst@coildict \tx@AltCoil end
- \@nameuse{psls@\pslinestyle}}%
- \end@OpenObj}
-
-\pst@def{AltCoil}<%
- /Inc ED
- dup sin /AspectSin ED cos /AspectCos ED
- /h ED /w ED
- /EndAngle ED /BeginAngle ED
- /mtrx CM def
- w h mul 2 \tx@Div w 2 \tx@Div scale
- BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add
- BeginAngle cos
- /lineto load stopped { moveto } if
- BeginAngle Inc EndAngle { \tx@CoilLoop } for
- EndAngle \tx@CoilLoop
- mtrx setmatrix>
-
-\def\pszigzag{\def\pst@par{}\pst@object{pszigzag}}
-\def\pszigzag@i{\pst@getarrows\pszigzag@ii}
-\def\pszigzag@ii(#1){%
- \@ifnextchar({\pszigzag@iii{1}(#1)}{\pszigzag@iii{\z@}(0,0)(#1)}}
-\def\pszigzag@iii#1(#2)(#3){%
- \begin@OpenObj
- \pst@getcoor{#2}\pst@tempa
- \pst@getcoor{#3}\pst@tempb
- \pst@optcp{#1}\pst@tempa
- \addto@pscode{%
- \pst@tempa
- \pst@tempb
- \pscoilheight
- \psk@coilwidth
- \psk@coilarmA
- \psk@coilarmB
- \pst@coildict \tx@ZigZag end
- \psline@iii
- \tx@Line}%
- \end@OpenObj}
-
-\pst@def{ZigZag}<%
- /ArmB ED /ArmA ED
- 2 div /w ED w mul /h ED
- /y1 ED /x1 ED /y0 ED /x0 ED
- x1 y1 translate
- y0 y1 sub x0 x1 sub
- 2 copy \tx@Pyth /TotalLength ED
- \tx@Atan rotate
- TotalLength ArmA sub ArmB sub dup h div cvi /n ED
- n h mul sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED
- /x ArmB h 2 div add def
- mark
- 0 0 ArmB 0
- n { x w /w w neg def /x x h add def } repeat
- TotalLength ArmA sub 0 TotalLength 0>
-
-\def\nccoil{\def\pst@par{}\pst@object{nccoil}}
-\def\nccoil@i{\check@arrow{\nccoil@ii}}
-\def\nccoil@ii#1#2{\nc@object{#1}{#2}{.5}{%
- \tx@NCCoor
- tx@Dict begin
- \psk@coilwidth \pscoilheight
- \psk@coilarmA \psk@coilarmB
- \psk@coilaspect \psk@coilinc
- \pst@coildict \tx@Coil end
- end}}
-
-\def\pccoil{\def\pst@par{}\pst@object{pccoil}}
-\def\pccoil@i{\pc@object\nccoil@ii}
-
-\def\nczigzag{\def\pst@par{}\pst@object{nczigzag}}
-\def\nczigzag@i{\check@arrow{\nczigzag@ii}}
-\def\nczigzag@ii#1#2{\nc@object{#1}{#2}{.5}{%
- \tx@NCCoor
- tx@Dict begin
- \pscoilheight
- \psk@coilwidth
- \psk@coilarmA
- \psk@coilarmB
- \pst@coildict \tx@ZigZag end
- \psline@iii
- \tx@Line
- end}}
-
-\def\pczigzag{\def\pst@par{}\pst@object{pczigzag}}
-\def\pczigzag@i{\pc@object\nczigzag@ii}
-
-\pst@ATH<end>
-
-\catcode`\@=\TheAtCode\relax
-
-\endinput
-%% END pst-coil.doc
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/pst-node.doc b/Master/texmf-dist/doc/generic/pstricks/code/pst-node.doc
deleted file mode 100644
index 8f725482dd3..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/pst-node.doc
+++ /dev/null
@@ -1,1066 +0,0 @@
-%% BEGIN: pst-node.doc
-\def\fileversion{0.93a}
-\def\filedate{93/03/12}
-%%
-%% pst-node.tex: Node macros for PSTricks.
-%% See the PSTricks read-me file and the User's Guide for documentation.
-%%
-%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
-%%
-%% Copying of part or all of any file in the pstricks.tex package
-%% is allowed under the following conditions only:
-%% (1) You may freely distribute unchanged copies of the files. Please
-%% include the documentation when you do so.
-%% (2) You may modify a renamed copy of any file, but only for personal
-%% use or use within an organization.
-%% (3) You may copy fragments from the files, for personal use or for use
-%% in a macro package for distribution, as long as credit is given
-%% where credit is due.
-%%
-%% You are NOT ALLOWED to take money for the distribution or use of
-%% these files or modified versions or fragments thereof, except for
-%% a nominal charge for copying etc.
-%%
-% **************************************************************************
-% This file contains the documented code for pst-node.tex and pst-node.pro.
-% See the PSTricks read-me file for information on how to use this file.
-% **************************************************************************
-%
-% \EndDocPreamble
-%
-% \CheckSum{5874}
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-%
-% \part{pst-node.doc}
-%
-% Check whether file has been loaded already.
-% \begin{macrocode}
-\csname PSTnodesLoaded\endcsname
-\let\PSTnodesLoaded\endinput
-% \end{macrocode}
-%
-% Load "pstricks.tex" if necessary:
-% \begin{macrocode}
-\ifx\PSTricksLoaded\endinput\else
- \def\next{\input pstricks.tex}\expandafter\next
-\fi
-% \end{macrocode}
-%
-% Take care of the catcode of "@":
-% \begin{macrocode}
-\edef\TheAtCode{\the\catcode`\@}
-\catcode`\@=11
-% \end{macrocode}
-%
-%
-% \section{Node header}
-%
-% Nodes use the dictionary "tx@NodeDict", which is always put on the stack
-% after "tx@Dict". "tx@NodeDict" should avoid using the same procedure names
-% as are found in "tx@Dict", especially those that do not use scratch
-% variables and hence can be used without problem when "tx@NodeDict" is on top
-% of the stack. When invoking a "tx@Dict" procedure that does use scratch
-% variables, "tx@Dict" should be put on top.
-%
-% \begin{macro}{\pst@nodedict}
-% \begin{macrocode}
-\pst@ATH<\% Version \fileversion, \filedate.>
-\pst@ATH<\% For use with \pstdriver.>
-\pst@ATH</tx@NodeDict 200 dict def tx@NodeDict begin>
-\ifx\pst@useheader\iftrue
- \pstheader{pst-node.pro}
- \def\pst@nodedict{tx@NodeDict begin }
-\else
- \def\pst@nodedict{%
- /tx@NodeDict where
- { pop }
- { userdict begin /tx@NodeDict 200 dict def end }
- ifelse
- tx@NodeDict begin }
-\fi
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Nodes}
-%
-%
-% \begin{macro}{\pst@getnode}
-% \begin{macrocode}
-% A node is a dictionary. To reduce the chance of errors, we check that the
-% name begins with a letter and does not contain any spaces.
-% \begin{macrocode}
-\def\pst@getnode#1#2{%
- \pst@expandafter\pst@@getnode{#1} * \@nil{#1}#2}
-\def\pst@@getnode#1#2 #3\@nil#4#5{%
- \ifcat#1a\relax
- \def#5{/TheNode#1#2 }%
- \else
- \def#5{/BadNode }%
- \@pstrickserr{Bad node name: `#4'}\@ehpa
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% Before a node is defined, the coordinate system is scaled to PSTricks'
-% standard coordinate system, with the origin at \TeX's current point. The
-% following objects should then be added to the node dictionary:
-% \begin{description}
-% \item[NodeMtrx] The current matrix.
-% \item[X] The x-coordinate of the center.
-% \item[Y] The y-coordinate of the center.
-% \item[NodePos] A procedure that, given the values of "Sin", "Cos", and
-% "Nodesep", gives the relative position of the point that is distance
-% "Nodesep"from the edge of the node, in the direction "(Cos,Sin)" from the
-% center. ``Relative'' means relative to "(X,Y)" and for the coordinate system
-% in effect when the node was defined.
-% \end{description}
-%
-% \begin{macro}{\tx@NewNode,\pst@newnode}
-% The node's dictionary size should be large enough for the 7 key's mentioned
-% above, plus any keys the node needs for "NodePos", plus a few more to avoid
-% mistakes.
-%
-% Syntax for "NewNode"
-% \begin{LVerbatim}
-% {<beforenode_proc>} /<node_name> <dict_size> {<node_proc>} NewNode"
-% \end{LVerbatim}
-% "<beforenode_proc>" is stuff to be done with "tx@Dict". It might leave
-% things on the stack for use by "<node_proc>".
-%
-% Syntax for "\pst@newnode":
-% \begin{LVerbatim}
-% \pst@newnode{<node_name>}{<dict_size>}{<beforenode_proc>}{<node_proc>}
-% \end{LVerbatim}
-% \begin{macrocode}
-\pst@def{NewNode}<%
- gsave
- /next ED
- dict
- dup 3 -1 roll ED
- begin
- tx@Dict begin
- \tx@STV
- CP T
- exec
- end
- /NodeMtrx CM def
- next
- end
- grestore>
-\def\pst@newnode#1#2#3#4{%
- \leavevmode
- \pst@getnode{#1}\pst@thenode
- \pst@Verb{%
- \pst@nodedict
- { #3 } \pst@thenode #2 { #4 } \tx@NewNode
- end}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@InitPnode,\pnode}
-% \begin{macrocode}
-\pst@def{InitPnode}<%
- /Y ED /X ED
- /NodePos { Nodesep Cos mul Nodesep Sin mul } def>
-\def\pnode{\@ifnextchar({\pnode@}{\pnode@(0,0)}}
-\def\pnode@(#1)#2{%
- \pst@@getcoor{#1}%
- \pst@newnode{#2}{10}{\pst@coor}{\tx@InitPnode}%
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@InitCnode,\cnode}
-% \begin{macrocode}
-\pst@def{InitCnode}<%
- /r ED /Y ED /X ED
- /NodePos { Nodesep r add dup Cos mul exch Sin mul } def>
-\def\cnode{\def\pst@par{}\pst@object{cnode}}
-\def\cnode@i{\@ifnextchar({\cnode@ii}{\cnode@ii(0,0)}}
-\def\cnode@ii(#1)#2#3{%
- \begingroup
- \use@par
- \pscircle@do(#1){#2}%
- \pst@@getcoor{#1}%
- \pssetlength\pst@dimc{#2}%
- \pst@newnode{#3}{11}{%
- \pst@coor
- \pst@number\pst@dimc
- \pst@number\pslinewidth
- \psk@dimen .5 sub mul sub}%
- {\tx@InitCnode}%
- \endgroup
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\def\cnodeput{\def\pst@par{}\pst@object{cnodeput}}
-\def\cnodeput@i{%
- \begingroup
- \pst@killglue
- \leavevmode
- \pst@getrputrot
- \cnodeput@ii}
-\def\cnodeput@ii(#1)#2{%
- \pst@makebox{\cput@iii{\cnodeput@iii{#2}}(#1)}}
-\def\cnodeput@iii#1{%
- \pst@newnode{#1}{11}{\pscirclebox@iv \pst@number\pslinewidth add}%
- {\tx@InitCnode}}
-% \end{macrocode}
-%
-% \begin{macro}{\circlenode}
-% \begin{macrocode}
-\def\circlenode{\def\pst@par{}\pst@object{circlenode}}
-\def\circlenode@i#1{\pst@makebox{\pscirclebox@ii{\cnodeput@iii{#1}}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\pst@def{GetRnodePos}<%
- Cos 0 gt
- { /dx r Nodesep add def }
- { /dx l Nodesep sub def }
- ifelse
- Sin 0 gt
- { /dy u Nodesep add def }
- { /dy d Nodesep sub def }
- ifelse
- dx Sin mul abs dy Cos mul abs gt
- { dy Cos mul Sin div dy }
- { dx dup Sin mul Cos \tx@Div }
- ifelse>
-% \end{macrocode}
-%
-% \begin{macro}{InitRnode}
-% Syntax:
-% \begin{Ex}
-% <yref ht dp bool xref wd> InitRnode
-% \end{Ex}
-% Additional keys: "r", "l", "d", "u", "dx" and "dy".
-% \begin{macrocode}
-\pst@def{InitRnode}<%
- /r ED r mul neg /l ED /r r l add def
- /X l neg def
- { neg /d ED /u ED /Y 0 def }
- { neg /Y ED
- Y sub /u ED
- u mul neg /d ED
- /u u d add def
- /Y Y d sub def }
- ifelse
- /NodePos { \tx@GetRnodePos } def>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\rnode}
-% The ability to set the refpoint is an undocumented feature that may be
-% omitted.
-% \begin{macrocode}
-\def\rnode{\begingroup\pst@getref\rnode@}
-\def\rnode@#1{\pst@makebox{\rnode@@{#1}}}
-\def\rnode@@#1{%
- \ifx\refpoint@x\relax
- \def\refpoint@y{.5}%
- \def\refpoint@x{.5}%
- \fi
- \pst@newnode{#1}{16}{}{%
- \ifx\refpoint@x\relax .5 \else \refpoint@y\space \fi
- \pst@number{\ht\pst@hbox}%
- \pst@number{\dp\pst@hbox}%
- \ifx\refpoint@y\@empty true \else false \fi
- \refpoint@x\space
- \pst@number{\wd\pst@hbox}%
- \tx@InitRnode}%
- \box\pst@hbox
- \endgroup}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{InitRNode}
-% Syntax:
-% \begin{Ex}
-% <ht dp wd xref yref> "InitRNode"
-% \end{Ex}
-% \begin{macrocode}
-\pst@def{InitRNode}<%
- /Y ED /X ED /r ED /X r 2 div X add def /r r X sub def /l X neg def
- Y add neg /d ED Y sub /u ED
- /NodePos { \tx@GetRnodePos } def>
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\Rnode}
-% \begin{macrocode}
-\def\Rnode{\@ifnextchar({\Rnode@}{\Rnode@(\RnodeRef)}}
-\def\Rnode@(#1)#2{\pst@makebox{\Rnode@@(#1){#2}}}
-\def\Rnode@@(#1)#2{%
- \begingroup
- \pst@@getcoor{#1}%
- \pst@newnode{#2}{16}{%
- \pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}%
- \pst@number{\wd\pst@hbox}\pst@coor}{\tx@InitRNode}%
- \box\pst@hbox
- \endgroup}
-\def\RnodeRef{0,.7ex}
-% \end{macrocode}
-% \end{macro}
-
-% \begin{macro}{GetOnodePos}
-% \begin{macrocode}
-\pst@def{GetOnodePos}<%
- /ww w Nodesep add def /hh h Nodesep add def
- Sin ww mul Cos hh mul \tx@Atan dup
- cos ww mul exch sin hh mul>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\ovalnode}
-% Additional keys: "w", "h", "ww", "hh".
-% \begin{macrocode}
-\def\ovalnode{\def\pst@par{}\pst@object{ovalnode}}
-\def\ovalnode@i#1{\pst@makebox{\psovalbox@ii{\ovalnode@ii{#1}}}}
-\def\ovalnode@ii#1{%
- \pst@newnode{#1}{14}{}{%
- /X \pst@number{\wd\pst@hbox}2 div def
- /Y \pst@number\pst@dimg 2 div \pst@number{\dp\pst@hbox}sub def
- /w \pst@number\pst@dima def
- /h \pst@number\pst@dimb def
- /NodePos { \tx@GetOnodePos } def}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Node connections: Preliminaries}
-%
-% \begin{macro}{\tx@GetCenter,\tx@GetAngle}
-% Syntax:
-% \begin{Ex}
-% - "GetCenter" <x y> \hskip 1em (Center coordinates)\\
-% - "GetAngle" <angle> \hskip 1em (Angle from A to B)
-% \end{Ex}
-% \begin{macrocode}
-\pst@def{GetCenter}<begin X Y NodeMtrx transform CM itransform end>
-\pst@def{GetAngle}<%
- nodeA \tx@GetCenter
- nodeB \tx@GetCenter
- 3 -1 roll sub 3 1 roll sub neg \tx@Atan>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@GetEdge,\tx@GetPos}
-% Syntax:
-% \begin{Ex}
-% <offset angle nodesep node> "GetEdge" <x y>
-% \end{Ex}
-% "GetPos" defines "(x1,y1)" and "(x2,y2)" to be coordinates of position for
-% node A and B, taking into account "AngleA", "AngleB", "OffsetA", "OffsetB",
-% "NodesepA" and "NodesepB".
-% \begin{macrocode}
-\pst@def{GetEdge}<%
- begin
- /Nodesep ED
- dup
- 1 0 NodeMtrx dtransform CM idtransform exch atan sub
- dup sin /Sin ED cos /Cos ED
- NodePos Y add exch X add exch
- NodeMtrx transform CM itransform
- end % offset angle x y
- 4 2 roll
-% Now add the offsets:
- 1 index 0 eq
- { pop pop }
- { 2 copy 5 2 roll % x offset angle y offset angle
- cos mul add
- 4 1 roll
- sin mul sub
- exch }
- ifelse>
-\pst@def{GetPos}<%
- OffsetA AngleA NodesepA nodeA \tx@GetEdge /y1 ED /x1 ED
- OffsetB AngleB NodesepB nodeB \tx@GetEdge /y2 ED /x2 ED>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\def\check@arrow#1#2{%
- \check@@arrow#2-\@nil
- \if@pst
- \addto@par{arrows=#2}%
- \def\next{#1}%
- \else
- \def\next{#1{#2}}%
- \fi
- \next}
-\def\check@@arrow#1-#2\@nil{%
- \ifx\@nil#2\@nil\@pstfalse\else\@psttrue\fi}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{InitNC}<%
- /nodeB ED /nodeA ED
- /NodesepB ED /NodesepA ED
- /OffsetB ED /OffsetA ED
- tx@NodeDict nodeA known tx@NodeDict nodeB known and dup
- { /nodeA nodeA load def /nodeB nodeB load def } if>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\nc@object#1#2#3#4{%
- \begin@OpenObj
- \showpointsfalse
- \pst@getnode{#1}\pst@tempa
- \pst@getnode{#2}\pst@tempb
- \gdef\lputpos@default{#3}%
- \addto@pscode{%
- \pst@nodedict
- \psk@offsetA
- \psk@offsetB neg
- \psk@nodesepA
- \psk@nodesepB
- \pst@tempa
- \pst@tempb
- \tx@InitNC { #4 } if
- end}%
- \def\use@pscode{%
- \pst@Verb{gsave \tx@STV newpath \pst@code\space grestore}%
- \gdef\pst@code{}}%
- \end@OpenObj}
-\def\lputpos@default{.5}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pc@object#1{%
- \@ifnextchar({\pc@@object#1}{\pst@getarrows{\pc@@object#1}}}
-\def\pc@@object#1(#2)(#3){%
- \pnode(#2){@@A}\pnode(#3){@@B}%
- #1{@@A}{@@B}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\psset@nodesepA#1{\pst@getlength{#1}\psk@nodesepA}
-\def\psset@nodesepB#1{\pst@getlength{#1}\psk@nodesepB}
-\def\psset@nodesep#1{%
- \psset@nodesepA{#1}\let\psk@nodesepB\psk@nodesepA}
-\psset@nodesep{0}
-% \end{macrocode}
-%
-% \begin{macro}{\psset@offset,\psk@offsetA,\psk@offsetB}
-% \begin{macrocode}
-\def\psset@offsetA#1{\pst@getlength{#1}\psk@offsetA}
-\def\psset@offsetB#1{\pst@getlength{#1}\psk@offsetA}
-\def\psset@offset#1{%
- \psset@offsetA{#1}\let\psk@offsetB\psk@offsetA}
-\psset@offset{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@arm,\psk@armA,\psk@armB}
-% \begin{macrocode}
-\def\psset@armA#1{\pst@getlength{#1}\psk@armA}
-\def\psset@armB#1{\pst@getlength{#1}\psk@armB}
-\def\psset@arm#1{\psset@armA{#1}\let\psk@armB\psk@armA}
-\psset@arm{10pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@angle,\psk@angleA,\psk@angleB}
-% \begin{macrocode}
-\def\psset@angleA#1{\pst@getangle{#1}\psk@angleA}
-\def\psset@angleB#1{\pst@getangle{#1}\psk@angleB}%
-\def\psset@angle#1{\pst@getangle{#1}\psk@angleA
- \let\psk@angleB\psk@angleA}
-\psset@angle{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@arcangle,\psk@arcangleA,\psk@arcangleB}
-% \begin{macrocode}
-\def\psset@arcangleA#1{\pst@getangle{#1}\psk@arcangleA}
-\def\psset@arcangleB#1{\pst@getangle{#1}\psk@arcangleB}%
-\def\psset@arcangle#1{\pst@getangle{#1}\psk@arcangleA
- \let\psk@arcangleB\psk@arcangleA}
-\psset@arcangle{8}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@ncurv,\psk@ncurvA,\psk@ncurvB}
-% \begin{macrocode}
-\def\psset@ncurvA#1{\pst@checknum{#1}\psk@ncurvA}
-\def\psset@ncurvB#1{\pst@checknum{#1}\psk@ncurvB}%
-\def\psset@ncurv#1{\psset@ncurvA{#1}\let\psk@ncurvB\psk@ncurvA}
-\psset@ncurv{.67}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Node connections: The real thing}
-%
-% \begin{macrocode}
-\pst@def{LineMP}<%
- 4 copy
- 1 t sub mul exch t mul add 3 1 roll
- 1 t sub mul exch t mul add exch 6 2 roll
- sub 3 1 roll sub \tx@Atan>
-% \end{macrocode}
-%
-% \begin{macro}{\tx@NCCoor,\tx@NCLine}
-% Syntax:
-% \begin{Ex}
-% <OffsetB NodesepB OffsetA NodesepA> NCLine
-% \end{Ex}
-% Leaves coordinates on stack rather than actually drawing line.
-% \begin{macrocode}
-\pst@def{NCCoor}<%
- \tx@GetAngle
- /AngleA ED /AngleB AngleA 180 add def
- \tx@GetPos
- /LPutVar [ x2 x1 y2 y1 ] cvx def
- /LPutPos { LPutVar \tx@LineMP } def
- x1 y1 x2 y2>
-\pst@def{NCLine}<%
- \tx@NCCoor
- tx@Dict begin
- ArrowB
- 4 2 roll
- ArrowA
- lineto
- end>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\def\ncline{\def\pst@par{}\pst@object{ncline}}
-\def\ncline@i{\check@arrow{\ncline@ii}}
-\def\ncline@ii#1#2{\nc@object{#1}{#2}{.5}{\tx@NCLine}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pcline{\def\pst@par{}\pst@object{pcline}}
-\def\pcline@i{\pc@object\ncline@ii}
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-\def\ncLine{\def\pst@par{}\pst@object{ncLine}}
-\def\ncLine@i{\check@arrow{\ncLine@ii}}
-\def\ncLine@ii#1#2{\nc@object{#1}{#2}{.5}%
- {\tx@NCLine
- /LPutVar [
- nodeA \tx@GetCenter
- nodeB \tx@GetCenter
- 3 1 roll 4 1 roll
- ] cvx def }}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{BezierMidpoint}<%
- /y3 ED /x3 ED
- /y2 ED /x2 ED
- /y1 ED /x1 ED
- /y0 ED /x0 ED
- /t ED
- /cx x1 x0 sub 3 mul def
- /cy y1 y0 sub 3 mul def
- /bx x2 x1 sub 3 mul cx sub def
- /by y2 y1 sub 3 mul cy sub def
- /ax x3 x0 sub cx sub bx sub def
- /ay y3 y0 sub cy sub by sub def
- ax t 3 exp mul bx t t mul mul add cx t mul add x0 add
- ay t 3 exp mul by t t mul mul add cy t mul add y0 add
- 3 ay t t mul mul mul 2 by t mul mul add cy add
- 3 ax t t mul mul mul 2 bx t mul mul add cx add
- atan>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{GetArms}<%
- /x1a armA AngleA cos mul x1 add def
- /y1a armA AngleA sin mul y1 add def
- /x2a armB AngleB cos mul x2 add def
- /y2a armB AngleB sin mul y2 add def>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{NCCurve}<%
- \tx@GetPos
- x1 x2 sub y1 y2 sub \tx@Pyth
- 2 div dup
- 3 -1 roll mul /armA ED mul /armB ED
- \tx@GetArms
- x1a y1a x1 y1 tx@Dict begin ArrowA end
- x2a y2a x2 y2 tx@Dict begin ArrowB end
- curveto
- /LPutVar [ x1 y1 x1a y1a x2a y2a x2 y2 ] cvx def
- /LPutPos { t LPutVar \tx@BezierMidpoint } def>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\nccurve{\def\pst@par{}\pst@object{nccurve}}
-\def\nccurve@i{\check@arrow{\nccurve@ii}}
-\def\nccurve@ii#1#2{\nc@object{#1}{#2}{.5}{%
- /AngleA \psk@angleA\space def /AngleB \psk@angleB\space def
- \psk@ncurvB\space \psk@ncurvA\space
- \tx@NCCurve}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pccurve{\def\pst@par{}\pst@object{pccurve}}
-\def\pccurve@i{\pc@object\nccurve@ii}
-% \end{macrocode}
-%
-%
-% \begin{macrocode}
-\def\ncarc{\def\pst@par{}\pst@object{ncarc}}
-\def\ncarc@i{\check@arrow{\ncarc@ii}}
-\def\ncarc@ii#1#2{\nc@object{#1}{#2}{.5}{%
- \tx@GetAngle dup
- \psk@arcangleA\space add /AngleA ED
- \psk@arcangleB\space sub 180 add /AngleB ED
- \psk@ncurvB\space \psk@ncurvA\space
- \tx@NCCurve}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pcarc{\def\pst@par{}\pst@object{pcarc}}
-\def\pcarc@i{\pc@object\ncarc@ii}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{AnglesMP}<%
- LPutVar
- t 3 gt
- { /t t 3 sub def }
- { t 2 gt
- { /t t 2 sub def 10 -2 roll }
- { t 1 gt
- { /t t 1 sub def 10 -4 roll }
- { 10 4 roll }
- ifelse }
- ifelse }
- ifelse
- 6 { pop } repeat
- 3 -1 roll exch \tx@LineMP>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{NCAngles}<%
- \tx@GetPos
- \tx@GetArms
- /mtrx AngleA matrix rotate def
- x1a y1a mtrx transform pop
- x2a y2a mtrx transform exch pop
- mtrx itransform
- /y0 ED /x0 ED
- mark
- armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne { x1 y1 } if
- tx@Dict begin false \tx@Line end
- /LPutVar [ x2 y2 x2a y2a x0 y0 x1a y1a x1 y1 ] cvx def
- /LPutPos { \tx@AnglesMP } def>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\ncangles{\def\pst@par{}\pst@object{ncangles}}
-\def\ncangles@i{\check@arrow{\ncangles@ii}}
-\def\ncangles@ii#1#2{%
- \nc@object{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngles}}
-\def\ncangles@iii{%
- tx@Dict begin
- \ifdim\pslinearc>\z@
- /r \pst@number\pslinearc def
- /Lineto { \tx@Arcto } def
- \else
- /Lineto { L } def
- \fi
- end
- /AngleA \psk@angleA\space def /AngleB \psk@angleB\space def
- /armA \psk@armA\space def /armB \psk@armB\space def }
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pcangles{\def\pst@par{}\pst@object{pcangles}}
-\def\pcangles@i{\pc@object\ncangles@ii}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{NCAngle}<%
- \tx@GetPos
- /x2a armB AngleB cos mul x2 add def
- /y2a armB AngleB sin mul y2 add def
- /mtrx AngleA matrix rotate def
- x2a y2a mtrx transform pop
- x1 y1 mtrx transform exch pop
- mtrx itransform
- /y0 ED /x0 ED
- mark
- armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1
- tx@Dict begin false \tx@Line end
- /LPutVar [ x2 y2 x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def
- /LPutPos { \tx@AnglesMP } def>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\ncangle{\def\pst@par{}\pst@object{ncangle}}
-\def\ncangle@i{\check@arrow{\ncangle@ii}}
-\def\ncangle@ii#1#2{%
- \nc@object{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngle}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pcangle{\def\pst@par{}\pst@object{pcangle}}
-\def\pcangle@i{\pc@object\ncangle@ii}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{NCBar}<%
- \tx@GetPos
- \tx@GetArms
- /mtrx AngleA matrix rotate def
- x1a y1a mtrx transform pop
- x2a y2a mtrx transform pop sub
- dup 0 mtrx itransform
- 3 -1 roll 0 gt
- { /y2a exch y2a add def /x2a exch x2a add def }
- { /y1a exch neg y1a add def /x2a exch neg x2a 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>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\ncbar{\def\pst@par{}\pst@object{ncbar}}
-\def\ncbar@i{\check@arrow{\ncbar@ii}}
-\def\ncbar@ii#1#2{\nc@object{#1}{#2}{1.5}{%
- \ncangles@iii /AngleB \psk@angleA def \tx@NCBar}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pcbar{\def\pst@par{}\pst@object{pcbar}}
-\def\pcbar@i{\pc@object\ncbar@ii}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@def{NCDiag}<%
- \tx@GetPos
- \tx@GetArms
- 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 { \tx@AnglesMP } def>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\ncdiag{\def\pst@par{}\pst@object{ncdiag}}
-\def\ncdiag@i{\check@arrow{\ncdiag@ii}}
-\def\ncdiag@ii#1#2{%
- \nc@object{#1}{#2}{1.5}{\ncangles@iii \tx@NCDiag}}
-% \end{macrocode}
-%
-% \begin{macro}{\pcdiag}
-% \begin{macrocode}
-\def\pcdiag{\def\pst@par{}\pst@object{pcdiag}}
-\def\pcdiag@i{\pc@object\ncdiag@ii}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\pst@def{NCDiagg}<%
- OffsetA AngleA NodesepA nodeA \tx@GetEdge
- /y1 ED /x1 ED
- /x1a armA AngleA cos mul x1 add def
- /y1a armA AngleA sin mul y1 add def
- nodeB \tx@GetCenter
- y1a sub exch x1a sub \tx@Atan 180 add /AngleB ED
- OffsetB AngleB NodesepB nodeB \tx@GetEdge
- /y2 ED /x2 ED
- mark
- x2 y2 x1a y1a x1 y1
- tx@Dict begin false \tx@Line end
- /LPutVar [ x2 y2 x2 y2 x2 y2 x1a y1a x1 y1] cvx def
- /LPutPos { \tx@AnglesMP } def>
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\ncdiagg{\def\pst@par{}\pst@object{ncdiagg}}
-\def\ncdiagg@i{\check@arrow{\ncdiagg@ii}}
-\def\ncdiagg@ii#1#2{%
- \nc@object{#1}{#2}{.5}{\ncangles@iii \tx@NCDiagg}}
-% \end{macrocode}
-%
-% \begin{macro}{\pcdiagg}
-% \begin{macrocode}
-\def\pcdiagg{\def\pst@par{}\pst@object{pcdiagg}}
-\def\pcdiagg@i{\pc@object\ncdiagg@ii}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@LoopMP}
-% \begin{macrocode}
-\pst@def{LoopMP}<%
- /t t abs def
- [ LPutVar ] length 2 div 1 sub dup t lt { /t ED } { pop } ifelse
- mark LPutVar
- t cvi { /t t 1 sub def pop pop } repeat
- counttomark 1 add 4 roll cleartomark
- 3 -1 roll exch \tx@LineMP>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\pst@def{NCLoop}<%
- \tx@GetPos
- \tx@GetArms
- /mtrx AngleA matrix rotate def
- x1a y1a mtrx transform loopsize add /y1b ED /x1b ED
- /x2b x2a y2a mtrx transform pop def
- x2b y1b mtrx itransform /y2b ED /x2b ED
- x1b y1b mtrx itransform /y1b ED /x1b ED
- mark
- armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a y1a armA
- 0 ne { x1 y1 } if
- tx@Dict begin false \tx@Line end
- /LPutVar [ x2 y2 x2a y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def
- /LPutPos { \tx@LoopMP } def>
-% \end{macrocode}
-%
-% \begin{macro}{\psset@loopsize}
-% \begin{macrocode}
-\def\psset@loopsize#1{\pst@getlength{#1}\psk@loopsize}
-\psset@loopsize{1cm}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\def\ncloop{\def\pst@par{}\pst@object{ncloop}}
-\def\ncloop@i{\check@arrow{\ncloop@ii}}
-\def\ncloop@ii#1#2{%
- \nc@object{#1}{#2}{2.5}%
- {\ncangles@iii /loopsize \psk@loopsize\space def \tx@NCLoop}}
-% \end{macrocode}
-%
-% \begin{macrocode}
-\def\pcloop{\def\pst@par{}\pst@object{pcloop}}
-\def\pcloop@i{\pc@object\ncloop@ii}
-% \end{macrocode}
-%
-% \begin{macro}{\tx@NCCircle}
-% \begin{macrocode}
-\pst@def{NCCircle}<%
- nodeA \tx@GetCenter
- 0 0 NodesepA nodeA \tx@GetEdge
- % Stack: x-center y-center x-edge y-origin
- pop 3 1 roll
- /Y ED /X ED % center
- X sub 2 div % half distance to edge
- dup 2 exp r r mul sub abs sqrt atan 2 mul /a ED % angle to edge
- r AngleA 90 add \tx@PtoC % displacement to origin
- Y add exch X add exch % origin
- 2 copy /LPutVar [ 4 2 roll r a ] def
- /LPutPos { LPutVar aload pop t 360 mul add dup 5 1 roll
- 90 sub \tx@PtoC 3 -1 roll add 3 1 roll add exch 3 -1 roll } def
- r
- AngleA 90 sub a add % begin arc angle
- AngleA 270 add a sub % end arc angle
- % Stack: x0 y0 r a1 a2
- tx@Dict begin
- /angleB ED
- /angleA ED
- /r ED
- /c 57.2957 r \tx@Div def
- /y ED
- /x ED>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\def\nccircle{\def\pst@par{}\pst@object{nccircle}}
-\def\nccircle@i{\check@arrow{\nccircle@ii}}
-\def\nccircle@ii#1#2{%
- \pssetlength\pst@dima{#2}%
- \nc@object{#1}{#1}{.5}{%
- /AngleA \psk@angleA def
- /r \pst@number\pst@dima def
- \tx@NCCircle \psarc@v end}}
-% \end{macrocode}
-%
-%
-% \section{Node Labels}
-%
-%
-% \begin{macro}{\pst@getlputrot}
-% \begin{macrocode}
-\def\pst@getlputrot#1{%
- \@ifnextchar(%
- {\def\pst@rot{}#1}%
- {\pst@@getlputrot{\@ifnextchar({#1}{#1(\lputpos@default)}}}}
-\def\pst@@getlputrot#1#2{%
- \pst@expandafter{\@ifnextchar:{\pst@@@getlputrot}%
- {\@ifstar{\pst@@@getrot}{\pst@@getrot}}}{#2}\@nil
- \ifx\pst@rotlist\@empty\else
- \edef\pst@rotlist{\pst@rotlist \pst@rot add }%
- \fi
- #1}
-\def\pst@@@getlputrot#1#2\@nil{%
- \pst@@getrot#2\@nil
- \edef\pst@rot{langle \ifx\pst@rot\@empty\else\pst@rot add \fi}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{LPutCoor}
-% \begin{macrocode}
-\pst@def{LPutCoor}<%
- tx@NodeDict /LPutPos known
- { gsave
- LPutPos
- tx@Dict begin
- /langle ED
- CM 3 1 roll
- \tx@STV
- CP 3 -1 roll sub neg 3 1 roll sub exch
- moveto
- setmatrix
- CP
- end
- grestore }
- { 0 0 tx@Dict /langle 0 def end }
- ifelse>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psput@lput}
-% \begin{macrocode}
-\def\psput@lput#1#2{%
- \pst@checknum{#1}\pst@tempa
- \hbox{%
- \pst@Verb{%
- \pst@nodedict
- /t \pst@tempa\space def
- \tx@LPutCoor
- end
- \tx@PutBegin}%
- \box#2%
- \pst@Verb{\tx@PutEnd}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\lput}
-% \begin{macrocode}
-\def\lput{\begin@psput{\pst@getref{\pst@getlputrot{\end@psput\lput@i}}}}
-\def\lput@i(#1){%
- \pst@makesmall\pst@hbox
- \ifx\pst@rot\@empty\else\pst@rotate\pst@hbox\fi
- \psput@lput{#1}\pst@hbox}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\mput}
-% \begin{macrocode}
-\def\mput{%
- \begin@psput{\def\pst@rot{}\pst@getref{\end@psput\lput@i(\lputpos@default)}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\aput,\Aput,\bput,\Bput}
-% \begin{macrocode}
-\def\aput@#1{\begin@psput{%
- \def\pst@refangle{#1 }%
- \@ifnextchar[{\aput@i}{\pst@getlputrot{\end@psput\aput@ii}}}}
-\def\aput@i[#1]{%
- \pssetlength\pslabelsep{#1}\pst@getlputrot{\end@psput\aput@ii}}
-\def\aput@ii(#1){%
- \uput@iv\aput@iii
- \psput@lput{#1}\pst@hbox}
-\def\aput@iii{exch pop add a \tx@PtoC h1 add exch w1 add exch }
-\def\aput{\aput@{langle 90 add}}
-\def\bput{\aput@{langle 90 sub}}
-\def\Aput@#1{\begin@psput{%
- \def\pst@refangle{#1 }%
- \def\pst@rot{}%
- \@ifnextchar[{\Aput@i}{\end@psput\aput@ii(\lputpos@default)}}}
-\def\Aput@i[#1]{%
- \pssetlength\pslabelsep{#1}%
- \end@psput\aput@ii(\lputpos@default)}
-\def\Aput{\Aput@{langle 90 add}}
-\def\Bput{\Aput@{langle 90 sub}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\Lput,\Mput}
-% These are obsolete.
-% \begin{macrocode}
-\def\Lput{%
- \begin@psput{\pst@getlabelsep{\pst@getlputrot{\end@psput{\Rput@i\lput@i}}}}}
-\def\Mput{%
- \begin@psput{%
- \def\pst@rot{}%
- \pst@getlabelsep{\end@psput{\Rput@i\lput@i}(\lputpos@default)}}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Node coordinates}
-%
-% \begin{macro}{\node@coor}
-% \begin{macrocode}
-\def\node@coor#1;#2\@nil{%
- \pst@getnode{#1}\pst@tempg
- \edef\pst@coor{%
- \pst@nodedict
- tx@NodeDict \pst@tempg known
- { \pst@tempg load \tx@GetCenter }
- { 0 0 }
- ifelse
- end }}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\Node@coor}
-% \begin{macrocode}
-\def\Node@coor[#1]#2;#3\@nil{%
- \begingroup
- \psset{#1}%
- \pst@getnode{#2}\pst@tempg
- \xdef\pst@tempg{%
- \pst@nodedict
- tx@NodeDict \pst@tempg known
- { \psk@offsetA \psk@angleA \psk@nodesepA \pst@tempg load \tx@GetEdge }
- { 0 0 }
- ifelse
- end }%
- \endgroup
- \let\pst@coor\pst@tempg}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macrocode}
-\pst@ATH<end>
-\catcode`\@=\TheAtCode\relax
-\endinput
-% \end{macrocode}
-%
-% \Finale
-% \endinput
-%
-%% END: pst-node.doc
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/pstricks.doc b/Master/texmf-dist/doc/generic/pstricks/code/pstricks.doc
deleted file mode 100644
index e7cf2b591c9..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/pstricks.doc
+++ /dev/null
@@ -1,4739 +0,0 @@
-%% BEGIN pstricks.doc
-\def\fileversion{0.93a}
-\def\filedate{93/03/12}
-%
-% File `pstricks.doc': PostScript macros for Generic TeX.
-%%
-%% See the PSTricks read-me file and the User's Guide for documentation.
-%%
-%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
-%%
-%% Copying of part or all of any file in the pstricks.tex package
-%% is allowed under the following conditions only:
-%% (1) You may freely distribute unchanged copies of the files. Please
-%% include the documentation when you do so.
-%% (2) You may modify a renamed copy of any file, but only for personal
-%% use or use within an organization.
-%% (3) You may copy fragments from the files, for personal use or for use
-%% in a macro package for distribution, as long as credit is given
-%% where credit is due.
-%%
-%% You are NOT ALLOWED to take money for the distribution or use of
-%% these files or modified versions or fragments thereof, except for
-%% a nominal charge for copying etc.
-%%
-% **************************************************************************
-% This is `pstricks.doc', which contains the documented code for the PSTricks
-% package. See the PSTricks read-me file for information on how to
-% use this file.
-% **************************************************************************
-%
-% \EndDocPreamble
-%
-% \CheckSum{5048}
-% \CharacterTable
-% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
-% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
-% Digits \0\1\2\3\4\5\6\7\8\9
-% Exclamation \! Double quote \" Hash (number) \#
-% Dollar \$ Percent \% Ampersand \&
-% Acute accent \' Left paren \( Right paren \)
-% Asterisk \* Plus \+ Comma \,
-% Minus \- Point \. Solidus \/
-% Colon \: Semicolon \; Less than \<
-% Equals \= Greater than \> Question mark \?
-% Commercial at \@ Left bracket \[ Backslash \\
-% Right bracket \] Circumflex \^ Underscore \_
-% Grave accent \` Left brace \{ Vertical bar \|
-% Right brace \} Tilde \~}
-%
-%
-% \section{Disclaimers, Guidelines and Other Comments}
-%
-% \paragraph*{Disclaimer}
-% These macros are extensive and were written hurriedly. Only modest attempts
-% have been made to clean up and optimize the code. The internals may change
-% substantially until version 1.0 comes up.
-%
-% \paragraph*{PostScript Guidelines}
-% The following guidelines were followed for macros using PostScript
-% "\special"'s:
-% \begin{enumerate}
-% \item Almost no "gsave" and "grestore" commands are used (reducing the
-% likelihood of conflicts with dvi-to-ps drivers or an unmatched "gsave" or
-% "grestore" ending up on a page).
-% \item Most end-user macros (those without "@") have error-checking so that
-% bad arguments or other misuse will not generate PostScript errors.
-% \end{enumerate}
-%
-% \iffalse
-% \paragraph*{Prefixes}
-% (This list is not complete.) Here are the conventions on prefixes, such as
-% the "pst" is "\pst@Verb":
-% \begin{center}
-% \begin{tabular}{ll}
-% {\em Prefix} & {\em Use}\\
-% "pst" & This and that.\\
-% "psk" & Graphics parameters ("k"={\em key}).\\
-% "psset" & Macros that set graphics parameters.\\
-% "psls" & Line styles.\\
-% "psfs" & Fill styles.\\
-% "psas" & Arrow styles.\\
-% "pscs" & Custom styles.\\
-% \end{tabular}
-% \end{center}
-% \fi
-%
-% \paragraph*{Macros}
-% A ``macro'' means any command sequence that is documented in this with a
-% heading entry. Macros with "@" are internal, and others are part of the user
-% interface. Commands that are not in the heading preceding their definition
-% are internal commands of a macro, and are not meant to be used directly by
-% other macros.
-%
-% \paragraph*{Local and global variables}
-% There are various classes of scratch registers and commands:
-% \begin{description}
-% \item[Global] These can be changed using "\global", etc.
-% \begin{LVerbatim}
-% \pst@tempg
-% \pst@temph
-% \pst@dimg
-% \pst@dimh
-% \pst@cntg
-% \pst@cnth
-% \pst@boxg
-% \end{LVerbatim}
-%
-% \item[Local-I] These cannot be changed with "\global", but otherwise there
-% are no restrictions.
-% \begin{LVerbatim}
-% \next
-% \@tempa
-% \end{LVerbatim}
-%
-% \item[Local-I]
-% Changes to these must be local to the macro in which they occur (be
-% grouping).
-% \begin{LVerbatim}
-% \pst@tempa
-% \pst@tempb
-% \pst@tempc
-% \pst@tempd
-% \end{LVerbatim}
-%
-% \item[Local-II] Changes to these must be local to the macro in which they
-% occur, and it must be possible to use these as arguments of macros.
-% \begin{LVerbatim}
-% \pst@dima
-% \pst@dimb
-% \pst@dimc
-% \pst@dimd
-% \if@pst
-% \end{LVerbatim}
-% There is one exception. When using these in coordinates that are processed
-% directly as Cartesian coordinates rather than with "\pst@getcoor", they must
-% be used in this order:
-% \begin{LVerbatim}
-% (\pst@dima,\pst@dimb)(\pst@dimc,\pst@dimd)
-% \end{LVerbatim}
-%
-% \item[Shared] These are used to share information between macros. Their
-% value may be set by one macro and then used by another. Use with care. Do
-% not set with "\global".
-% \begin{quote}
-% \begin{tabular}{ll}
-% \em command & \em usage\\
-% "\pst@hbox" & Box created and manipulated in HR-box macros.\\
-% "\pst@coor" & PostScript code for a coordinate.\\
-% "\pst@angle" & PostScript code for an angle.\\
-% "\pst@rot" & PostScript code for a rotation angle.\\
-% "\if@star" & This is a flag to keep track of optional "*".
-% \end{tabular}
-% \end{quote}
-%
-% \end{description}
-%
-% \paragraph*{Plain \TeX\ commands}
-% The commands
-% \begin{LVerbatim}
-% \newbox
-% \newcount
-% \newdimen
-% \newif
-% \loop ... \repeat ... \fi
-% \z@
-% \sixt@@n
-%\end{LVerbatim}
-% are defined in "plain.tex" are part of most macro packages. PSTricks assumes
-% that they are defined. Other than these, PSTricks only makes use of \TeX\
-% primitives.
-%
-% \paragraph*{Dividing the file}
-%
-% {\bf\em Breaking up the file}\hskip 1em "pstricks.tex" can be broken up into
-% the following components:
-% \begin{description}
-% \item[Basics] (Including color and simple rotation.) Sections \ref{Prelim},
-% \ref{Config}, \ref{Header}, \ref{Errors}, \ref{Colors}, \ref{Colortab},
-% \ref{Rotation:simple} and \ref{Config:revisited}.
-% \item[Graphics] Sections \ref{Parameters}, \ref{Objects}, \ref{Linestyles},
-% \ref{Arrowheads}, \ref{Lines}, \ref{Grids}, \ref{Fillstyles}, \ref{Frames},
-% \ref{Frameboxes} and \ref{Circles}. Requires also {\bf Basics}.
-% \item[Rotation] (Including picture environment.) Sections \ref{Arithmetic},
-% \ref{Rotation:prelim}, \ref{Rotation:main} and \ref{Pictures}. Requires also
-% {\bf Basics}.
-% \end{description}
-%
-
-% \section{Preliminaries\label{Prelim}}
-%
-% Check whether file has been loaded already.
-% \begin{macrocode}
-\csname PSTricksLoaded\endcsname
-\let\PSTricksLoaded\endinput
-% \end{macrocode}
-%
-% Take care of the catcode of "@":
-% \begin{macrocode}
-\edef\PstAtCode{\the\catcode`\@}
-\catcode`\@=11\relax
-% \end{macrocode}
-%
-% Here are some hacks borrowed from \LaTeX{}, which are defined if \LaTeX{} is
-% not being used.
-%
-% \begin{macrocode}
-\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
-% \end{macrocode}
-%
-% Announce that the file is being loaded:
-% \begin{macrocode}
-\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)}
-% \end{macrocode}
-%
-%
-% \section{Error messages}
-%
-% \begin{macro}{\@pstrickserr}
-% "\@pstrickserr" is analogous to "\@latexerr".
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@ehpa,\@ehpb,\@ehpc}
-% Here are some extra "\errhelp" message:
-% \begin{macrocode}
-\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.}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@misplaced}
-% \begin{macrocode}
-\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
-% \end{macrocode}
-% \end{macro}
-%
-% \section{Scratch registers}
-%
-% \begin{macrocode}
-\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
-% \end{macrocode}
-%
-%
-% \section{Useful hacks}
-%
-% \begin{macro}{\pst@ifstar,\if@star}
-% \begin{macrocode}
-\newif\if@star
-\def\pst@ifstar#1{%
- \@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@expandafter}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Arithmetic}
-%
-% \begin{macro}{\pst@dimtonum,\pst@@dimtonum}
-% This macro strips the value of "#1", a dimension register, of the "pt", and
-% assigns the result to "#2", a command sequence. This is used for arithmetic
-% and for converting \TeX\ dimensions to PostScript.
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@pyth}
-% This is a piecewise-linear approximation to $("#1"^2+"#2"^2)^(1/2)$. The
-% answer is assigned to "#3". All arguments should be dimension registers.
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@divide}
-% This computes "#3"="#1"/"#2" reasonably quickly. "#1" and "#2" should be
-% dimensions, and "#3" should be a command sequence.
-% \begin{macrocode}
-\def\pst@divide#1#2#3{%
- \begingroup
- \pst@dimg=#1\relax\pst@dimh=#2\relax
- \pst@cnta=\pst@dimg
- \pst@cntb=1073741824
- \pst@cntc=65536
- \def\pst@tempa{\fi\ifnum}%
- \loop\ifnum\pst@cnta<\pst@cntb
- \pst@tempa\pst@cntc>\@ne
- \multiply\pst@cnta2\divide\pst@cntc2
- \repeat
- \divide\pst@dimh\pst@cntc
- \divide\pst@cnta\pst@dimh
- \global\pst@dimg\number\pst@cnta sp
- \endgroup
- \pst@dimtonum\pst@dimg#3}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Configuration file\label{Config}}
-%
-% \begin{macro}{\pst@configerr}
-% \begin{macrocode}
-\def\pst@configerr#1{%
- \@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
-% \end{macrocode}
-% \end{macro}
-%
-% % \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
-% \end{macrocode}
-%
-% \begin{macro}{\PSTricksOff}
-% \begin{macrocode}
-\newif\ifPSTricks
-\PSTrickstrue
-\def\PSTricksOff{%
- \def\pstheader##1{}%
- \def\pstverb##1{}%
- \def\pstVerb##1{}%
- \PSTricksfalse}
-% \end{macrocode}
-% \end{macro}
-%
-% \section{PostScript header file\label{Header}}
-%
-% \begin{macro}{\pst@def,\pst@ATH,\pst@useheader}
-% There are three ways to use PSTricks:
-% \begin{enumerate}
-% \item Use "pstricks.doc" directly. No header file is used.
-% \item Use "\pst-make.tex" to generate a stripped input file for use without
-% a header.
-% \item Use "\pst-make.tex" to generate a header and a stripped input file for
-% use with the header.
-% \end{enumerate}
-% PSTricks has been optimized for use with a header file (and the difference
-% is speed and memory is very significant), but the flexible system described
-% above makes it easier to maintain the code and allows one to use PSTricks
-% with a DVI-to-PS driver that does not support header files.
-%
-% The following commands should be used in this ".doc" file for PostScript
-% macros and other goodies related to the header file. Their behavior for each
-% of the three cases list above is given below. These commands should always
-% come {\em at the beginning of the line}, and should not inside conditionals.
-%
-% \begin{itemize}
-%
-% \item "\pst@def{foo}<bar>"
-% \begin{enumerate}
-% \item "\tx@foo" is defined to be "bar".
-% \item Writes
-% \begin{LVerbatim}
-% \def\tx@foo{bar}
-% \end{LVerbatim}
-% to "pstricks.tex".
-% \item Writes
-% \begin{LVerbatim}
-% /foo { bar } def
-% \end{LVerbatim}
-% to "pstricks.pro" and
-% \begin{LVerbatim}
-% \def\tx@foo{foo}
-% \end{LVerbatim}
-% to "pstricks.tex".
-% \end{enumerate}
-%
-% \item "\pst@ATH<foo>"
-% \begin{enumerate}
-% \item Gobbles "foo".
-% \item Ignores line.
-% \item Writes "foo" to "pstricks.pro".
-% \end{enumerate}
-% Note: "\pst@ATH" must come at the beginning of the line.
-%
-% \item "\ifx\pst@useheader\iftrue foo \else bar \fi"
-% \begin{enumerate}
-% \item Ignores "foo" and includes "bar".
-% \item Ignores "foo" and processes "bar".
-% \item Processes "foo" and ignores "bar".
-% \end{enumerate}
-% Note: "\ifx\pst@useheader\iftrue", "\else" and "\fi" must each be on their
-% own line.
-%
-% \end{itemize}
-%
-% "pst@make.tex" can be used to process other files at well, in the right
-% order.
-%
-% \begin{macrocode}
-\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
-\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@dict}
-% The PostScript dictionary "tx@Dict" is set up in the header file, if one is
-% used. Otherwise, it is set up with each procedure that uses the dictionary,
-% if it is not currently defined.
-% \begin{macrocode}
-\pst@ATH<\% Version \fileversion, \filedate.>
-\pst@ATH<\% For use with \pstdriver.>
-\pst@ATH</tx@Dict 200 dict def tx@Dict begin>
-\pst@ATH</ADict 25 dict def>
-\pst@ATH</CM { matrix currentmatrix } bind def>
-\pst@ATH</SLW /setlinewidth load def>
-\pst@ATH</CLW /currentlinewidth load def>
-\pst@ATH</CP /currentpoint load def>
-\pst@ATH</ED { exch def } bind def>
-\pst@ATH</L /lineto load def>
-\pst@ATH</T /translate load def>
-\ifx\pst@useheader\iftrue
- \pstheader{pstricks.pro}
- \def\pst@dict{tx@Dict begin }
- \def\pst@theheaders{pstricks.pro}
-\else
- \def\pst@dict{%
- /tx@Dict where
- { pop tx@Dict begin}
- { userdict begin
- /tx@Dict 200 dict def
- end
- 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 }
- ifelse }
- \def\pst@theheaders{}%
-\fi
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@Verb}
-% \begin{macrocode}
-\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{PostScript hacks}
-%
-%
-% \begin{macro}{\tx@Atan,\tx@Div}
-% These are variants of "atan", and "div", that recover when result is not
-% defined.
-% \begin{macrocode}
-\pst@def{Atan}</atan load stopped { pop pop 0 } if>
-\pst@def{Div}<dup 0 eq { pop } { div } ifelse>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@NET}
-% \begin{macrocode}
-\pst@def{NET}<neg exch neg exch T>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@Pyth}
-% $A$ $B$ "Pyth" $(A^2 + B^2)^{1/2}$
-% \begin{macrocode}
-\pst@def{Pyth}<dup mul exch dup mul add sqrt>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@PtoC}
-% Polar to Cartesian:
-% \begin{LVerbatim}
-% <r> <a> PtoC <x> <y>
-% \end{LVerbatim}
-% \begin{macrocode}
-\pst@def{PtoC}<2 copy cos mul 3 1 roll sin mul>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@PathLength}
-% "PathLength" is taken from the Blue Book. It leaves on the stack the length
-% of the current path.
-% \begin{macrocode}
-\pst@def{PathLength@}<%
- /z z y y1 sub x x1 sub \tx@Pyth add def
- /y1 y def /x1 x def>
-\pst@def{PathLength}<%
- flattenpath /z 0 def
- { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } % moveto
- { /y ED /x ED \tx@PathLength@ } % lineto
- {} % curveto; ignore because of flattenpath.
- { /y y2 def /x x2 def \tx@PathLength@ } % closepath
- pathforall z>
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Converting \TeX\ things to PostScript}
-%
-% \begin{macro}{\pst@number,\tx@STP,\tx@STV}
-% \begin{itemize}
-% \item PSTricks' PostScript unit is 1pt, rather than 1bp, because this is
-% more efficient.
-% \item "\pst@number{<dimen register>}" converts <dimen> to PostScript, in
-% points (pt).
-% \item "\tx@STP" scales the DVI-to-PS driver's "\pstverb" environment to
-% points (pt).
-% \item "\tx@STV" scales the DVI-to-PS drivers's ungrouped PostScript
-% "\special" environment ("\pstVerb") to points (pt).
-% \end{itemize}
-% \begin{macrocode}
-\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
-\pst@def{STP}<\pst@stp>
-\pst@def{STV}<\pstverbscale\space\tx@STP>
-\def\pst@number#1{\pst@@dimtonum#1\space}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@checknum}
-% The first argument of "\pst@checknum" should be a number, and the second
-% argument is a command. There are three possible outcomes:
-% \begin{enumerate}
-% \item The number is suitable for PostScript consumption, the command is set
-% to the number, and "\pst@num" is set to "1" if the number is positive and to
-% "2" if the number is negative.
-% \item "\pst@checknum" detects that the number is not suitable for
-% PostScript; "\pst@num" is set to "0", an error is given, and the command is
-% defined to be {\tt 0 }.
-% \item The number is not suitable for PostScript consumption, but
-% "\pst@checknum" does not detect this. "\pst@num" is set to "1" or "2", and
-% the command is set to some number that {\em is} suitable for PostScript.
-% \end{enumerate}
-%
-% A trailing space is always added.
-%
-% "\pst@checknum" should generate no extraneous errors nor output, even if the
-% first argument is a bad number.
-%
-% This macro is probably pretty close to optimal for what it does, as many
-% variations have been tried.
-%
-% \begin{macrocode}
-\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=2 -\fi\the\pst@cntg.%
- \expandafter\@gobble\the\pst@cnth\space}%
- \fi}
-\def\pst@@checknum{%
- \@ifnextchar-%
- {\def\pst@num{2}\expandafter\pst@@@checknum\@gobble}%
- {\def\pst@num{1}\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getnumii,\pst@getnumiii,\pst@getnumiv}
-% These are for processing comma-separated lists of numbers. They assign the
-% numbers to "\pst@tempg", "\pst@temph", etc. Use like
-% \begin{LVerbatim}
-% \pst@expandafter\pst@getnumiii{foo} {} {} {} {}\@ni
-% \end{LVerbatim}
-% If there are too few numbers, an error results. If there are too many, the
-% extra numbers are ignored.
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getdimnum}
-% Like "\pst@getnumii", but first item is a dimension and second is a number.
-% \begin{macrocode}
-\def\pst@getdimnum#1 #2 #3\@nil{%
- \pssetlength\pst@dimg{#1}%
- \pst@checknum{#2}\pst@tempg}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getscale}
-% "\pst@getscale" can have one or two numbers in its first argument.
-% \begin{macrocode}
-\def\pst@getscale#1#2{%
- \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
- \edef#2{\pst@tempg\space \pst@temph\space scale }%
- \ifdim\pst@tempg\p@=\z@
- \@pstrickserr{Bad scaling argument `#1'}\@ehpa
- \def#2{}%
- \else
- \ifdim\pst@temph\p@=\z@
- \@pstrickserr{Bad scaling argument}\@ehpa
- \def#2{}%
- \else
- \ifdim\pst@tempg\p@=\p@ \ifdim\pst@temph\p@=\p@ \def#2{}\fi\fi
- \fi
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getint}
-% \begin{macrocode}
-\def\pst@getint#1#2{%
- \pst@cntg=#1\relax
- \edef#2{\the\pst@cntg\space}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pslbrace,\psrbrace}
-% When balanced braces are used, they work without problems in "\special"'s.
-% "\pslbrace" and "\psrbrace" let you use unbalanced braces.
-% \begin{macrocode}
-\begingroup
- \catcode`\{=12
- \catcode`\}=12
- \catcode`\[=1
- \catcode`\]=2
- \gdef\pslbrace[{ ]
- \gdef\psrbrace[} ]
-\endgroup
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Colors\label{Colors}}
-%
-% \begin{macro}{\@newcolor}
-% "\@newcolor{<color>}{<spec>}", where <color> is a name and <spec> is the
-% associated PostScript color specification , sets
-% \begin{itemize}
-% \item "\<color>" to "\pst@color{<spec>}", and
-% \item "\color@<color>" to <spec>.
-% \end{itemize}
-% Then "\<color>" can be used by the user to color text, etc., and
-% "\color@<color>" is used by PSTricks graphics objects to find the
-% specification for <color>.
-% \begin{macrocode}
-\def\@newcolor#1#2{%
- \expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}%
- \expandafter\edef\csname color@#1\endcsname{#2}%
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@color,\pst@endcolor}
-% The argument of "\pst@color" should be a PostScript command for setting the
-% color; e.g., "0 setgray". It saves the command in "\pst@currentcolor", and
-% then switches to "\pst@currentcolor" at the end of the current group. The
-% color changes do not extend across pages, although this capability could be
-% written into the output routines (so that "\pst@currentcolor" is set at the
-% beginning of the page, and headers and footers begin with "\black", etc.).
-% Moving boxes cause problems, but there is no way around this until \TeX{}
-% supports color internally.
-% \begin{macrocode}
-\def\pst@color#1{%
- \def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}
-\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
-\def\pst@currentcolor{0 setgray}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\altcolormode,\pst@grestore}
-% The color macros defined above can conflict with other color macros.
-% "\altcolormode" sets up a different scheme that uses "gsave" and "grestore"
-% to reset colors. This may reduce the likelihood of such conflict. It also
-% makes moving boxes less of a problem, as long as the color command is itself
-% grouped within the box. However, if the scope of a color command extends
-% across pages in a \TeX{} input file, unmatched "gsave"'s and "grestore"'s
-% will be left on pages, wreaking havok on the output. "\pst@grestore" is
-% defined to do various things that makes using "grestore" more robust.
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@usecolor}
-% This looks up the color specification.
-% \begin{macrocode}
-\def\pst@usecolor#1{\csname color@#1\endcsname\space}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newgray}
-% "\newgray" uses PostScript's "setgray" operator.
-% \begin{macrocode}
-\def\newgray#1#2{%
- \pst@checknum{#2}\pst@tempg
- \@newcolor{#1}{\pst@tempg setgray}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newrgbcolor}
-% This works like "\newgray", but the color specification should consist of 3
-% numbers rather than just 1, and the "setrgbcolor" operator is used.
-% \begin{macrocode}
-\def\newrgbcolor#1#2{%
- \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
- \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newhsbcolor}
-% This is just like "\newrgbcolor", but the "sethsbcolor" operator is used.
-% \begin{macrocode}
-\def\newhsbcolor#1#2{%
- \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
- \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newcmykcolor}
-% This is like "\newrgbcolor", the color specification consists of 4 numbers
-% and the "setcmykcolor" operator is used.
-% \begin{macrocode}
-\def\newcmykcolor#1#2{%
- \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
- \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\black,\darkgray,\gray,\lightgray,\white}
-% Here are some default gray definitions:
-% \begin{macrocode}
-\newgray{black}{0}
-\newgray{darkgray}{.25}
-\newgray{gray}{.5}
-\newgray{lightgray}{.75}
-\newgray{white}{1}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\red,\green,\blue,\yellow,\cyan,\magenta}
-% And some default rgb color definitions.
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Setting graphics parameters\label{Parameters}}
-%
-% \begin{macro}{\psset}
-% For each <parameter>"="<value> pair in its argument, "\psset" invokes
-% \begin{LVerbatim}
-% \psset@<parameter>{<value>}
-% \end{LVerbatim}
-% The value is processed and typically stored in "\ps<parameters>" if the
-% value is user-accessible and "\psk@<parameter>" if not. "\psset" ignores
-% spaces that follow the comma that separates key-value pairs.
-%
-% When initializing <parameter> in this file, preferable use
-% \begin{LVerbatim}
-% \psset@<parameter>{<value>}
-% \end{LVerbatim}
-% so that default values can be easily extracted for the {\em User's Guide}.
-% \begin{macrocode}
-\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}}}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newpsstyle}
-% \begin{macrocode}
-\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}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\@none}
-% Use to check when a parameter value is "none".
-% \begin{macrocode}
-\def\@none{none}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getcolor}
-% This is used by various graphics parameters that are colors.
-% \begin{macrocode}
-\def\pst@getcolor#1#2{%
- \@ifundefined{color@#1}%
- {\@pstrickserr{Color `#1' not defined}\@eha}%
- {\edef#2{#1}}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Dimensions}
-%
-% \begin{macro}{\psunit,\psxunit,\psyunit}
-% \begin{macrocode}
-\newdimen\psunit \psunit 1cm
-\newdimen\psxunit \psxunit 1cm
-\newdimen\psyunit \psyunit 1cm
-\let\psrunit\psunit
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pssetlength,\psaddtolength,\pssetxlength,\pssetylength}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@unit,\psset@xunit,\psset@yunit}
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getlength,pst@@getlength}
-% "#1" is a \TeX\ dimensions. "\pst@getlength" sets "#2" to the PostScript
-% code for "#1", and "\pst@@getlength" set "#2" to the \TeX\ code for "#1".
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Normal Coordinates and angles}
-%
-% \begin{macro}{\pst@getcoor,\pst@coor}
-% "\pst@@getcoor" should be defined to read a coordinate and convert it to
-% PostScript, assigning the result to "\pst@coor" (including the trailing
-% space).
-%
-% "\pst@getcoor" invokes "\pst@@getcoor" and then sets its second argument to
-% "\pst@coor".
-% \begin{macrocode}
-\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor}
-\def\pst@coor{0 0 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getcoors,\pst@coors}
-% "\pst@getcoors" reads coordinates until there are none left, adding them
-% {\em in reverse order} to "\pst@coors".
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getangle,\pst@angle}
-% \n\pst@@getangle\ should be defined to read an angle and convert it to
-% PostScript, assigning the result to \n\pst@angle\ (including the trailing
-% space).
-%
-% \n\pst@getangle\ invokes \n\pst@@getangle\ and then sets its second argument
-% to \n\pst@angle.
-% \begin{macrocode}
-\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle}
-\def\pst@angle{0 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{getcoor@c,\NormalCoor}
-% By default, coordinates are read as Cartesian coordinates by
-% "\cartesian@coor".
-%
-% Angles are read as numbers, scaled by \n\pst@angleunit.
-%
-% "\NormalCoor" sets these two defaults, and also defines the translation for
-% the put commands to be done by \TeX\ using Cartesian coordinates.
-% \begin{macrocode}
-\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
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@angleunit,\degrees,\radians}
-% "\degrees" sets "\pst@angleunit" to the PostScript code for scaling the
-% angle, including the trailing space.
-% \begin{macrocode}
-\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{}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Special coordinates and angles}
-%
-% This is a tedious but useful.
-%
-% \begin{macro}{\SpecialCoor}
-% \begin{macrocode}
-\def\SpecialCoor{%
- \def\pst@@getcoor##1{\pst@expandafter\special@coor{##1}||\@nil}%
- \def\pst@@getangle##1{\pst@expandafter\special@angle{##1}\@empty)\@nil}%
- \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\specialcoor}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\mixed@coor}
-% This allows mixing of coordinate types with \n\SpecialCoor.
-% \begin{macrocode}
-\def\mixed@coor#1#2{%
- \begingroup
- \specialcoor@ii#1;;\@nil
- \let\pst@tempa\pst@coor
- \specialcoor@ii#2;;\@nil
- \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }%
- \endgroup
- \let\pst@coor\pst@tempg}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\polar@coor}
-% For polar coordinates
-% \begin{macrocode}
-\def\polar@coor#1#2{%
- \pssetlength\pst@dimg{#1}%
- \pst@@getangle{#2}%
- \edef\pst@coor{\pst@number\pst@dimg \pst@angle \tx@PtoC}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\raw@coor}
-% For raw PostScript.
-% \begin{macrocode}
-\def\raw@coor#1;#2\@nil{%
- \edef\pst@coor{%
- #1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\node@coor,\Node@coor}
-% These are defined in "pst-node.tex".
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\special@angle}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\Cartesian,\Polar}
-% These are obsolete.
-% \begin{macrocode}
-\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}}}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Basic graphics parameters}
-%
-%
-% \begin{macro}{\psset@origin,\psk@origin}
-% \begin{macrocode}
-\def\psset@origin#1{%
- \pst@@getcoor{#1}%
- \edef\psk@origin{\pst@coor \tx@NET }}
-\def\psk@origin{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@swapaxes,\ifpsswapaxes}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@showpoints,\ifshowpoints}
-% \begin{macrocode}
-\newif\ifshowpoints
-\def\psset@showpoints#1{\@nameuse{showpoints#1}}
-\psset@showpoints{false}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@border,\psk@border}
-% \begin{macrocode}
-\let\pst@setrepeatarrowsflag\relax
-\def\psset@border#1{%
- \pst@getlength{#1}\psk@border
- \pst@setrepeatarrowsflag}
-\psset@border{0pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@bordercolor,\psbordercolor}
-% \begin{macrocode}
-\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor}
-\psset@bordercolor{white}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@doubleline,\ifpsdoubleline}
-% \begin{macrocode}
-\newif\ifpsdoubleline
-\def\psset@doubleline#1{%
- \@nameuse{psdoubleline#1}%
- \pst@setrepeatarrowsflag}
-\psset@doubleline{false}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@doublesep,\psdoublesep}
-% \begin{macrocode}
-\def\psset@doublesep#1{\def\psdoublesep{#1}}
-\psset@doublesep{1.25\pslinewidth}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@doublecolor,\psdoublecolor}
-% \begin{macrocode}
-\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor}
-\psset@doublecolor{white}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@shadow,\ifpsshadow}
-% \begin{macrocode}
-\newif\ifpsshadow
-\def\psset@shadow#1{%
- \@nameuse{psshadow#1}%
- \pst@setrepeatarrowsflag}
-\psset@shadow{false}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@shadowsize,\psk@shadowsize}
-% \begin{macrocode}
-\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize}
-\psset@shadowsize{3pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@shadowangle,\psk@shadowangle}
-% \begin{macrocode}
-\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle}
-\psset@shadowangle{-45}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@shadowcolor,\psshadowcolor}
-% \begin{macrocode}
-\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor}
-\psset@shadowcolor{darkgray}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@setrepeatarrowsflag}
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \section{Line styles\label{Linestyles}}
-%
-% For each "linestyle" <style>, the command "\psls@<style>" should be the
-% PostScript code that strokes the path. The style can assume that the
-% PostScript environment has linewidth equal to \n\pslinewidth\ and color
-% equal to \n\pslinecolor.
-%
-% \begin{macro}{\pst@linetype}
-% Macros that draw lines should define "\pst@linetype" (not a count register)
-% to be:
-% \begin{description}
-% \item[1,2,$\ldots$] A closed path whose length should be divided by
-% "\pst@linetype" before fitting a pattern.
-% \item[0] A line that has nothing at the tips.
-% \item[-1] A line with an arrow or something at the end.
-% \item[-2] A line with an arrow or something at the beginning.
-% \item[-3] A line with an arrow or something at each end.
-% \end{description}
-% This information is used by the line styles that draw dashed and dotted
-% lines in order to figure out how to adjust the patterns.
-% \end{macro}
-%
-% \begin{macro}{\psls@none}
-% \begin{macrocode}
-\def\psls@none{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@linewidth,\pslinewidth}
-% \begin{macrocode}
-\newdimen\pslinewidth
-\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}}
-\psset@linewidth{.8pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@linecolor,\pslinecolor}
-% \begin{macrocode}
-\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor}
-\psset@linecolor{black}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psls@solid}
-% \begin{macrocode}
-\def\psls@solid{0 setlinecap stroke }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@dash,\psk@dash}
-% "\psk@dash" is set to the PostScript code for the dash pattern (include the
-% trailing space).
-% \begin{macrocode}
-\def\psset@dash#1{%
- \pst@expandafter\psset@@dash{#1} * * *\@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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psls@dashed}
-% \begin{macrocode}
-\def\psls@dashed{\psk@dash \pst@linetype\space \tx@DashLine}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@DashLine}
-% Syntax:
-% \begin{Ex}
-% <dim1 dim2 linetype> "DashLine"
-% \end{Ex}
-% "DashLine" adjusts, and then sets, the dash pattern "[<dim1 dim2>]" so that
-% it fits evenly onto a path.
-% \begin{macrocode}
-\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 both x and y aren't zero:
- x 0 eq y 0 eq and { /x 1 def /y 1 def } if
- [ y x ] 1 a sub y mul setdash stroke>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{dotsep}
-% \begin{macrocode}
-\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
-\psset@dotsep{3pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psls@dotted}
-% \begin{macrocode}
-\def\psls@dotted{\psk@dotsep \pst@linetype\space \tx@DotLine}%
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@DotLine}
-% Syntax:
-% \begin{Ex}
-% <dim linetype> "DotLine"
-% \end{Ex}
-% "DotLine" adjusts, and then sets, the dash pattern to produce a dotted line
-% with distance <dim> between dots so that it fits evenly onto a path. Dots
-% are produced by setting dash pattern with length of white segment equal to
-% distance from center of dot to center of dot, length of black segment equal
-% to 0, and "linecap" equal to 1.
-% \begin{macrocode}
-\pst@def{DotLine}<%
- /b \tx@PathLength def % Path length.
- /a ED % \pst@linetype.
- /z ED % dotsep.
- /y CLW def % linewidth (dot diameter).
- /z y z add def % Total length of dash pattern.
- % Set b to adjusted path length that pattern should be multiple of:
- a 0 gt
- % If closed, as many dots as spaces.
- { /b b a div def }
- { a 0 eq
- % If open with no arrows, one more dot than space.
- { /b b y sub def }
- % If open one arrow, as many dots as spaces (do nothing)
- % If open two arrows, one more space than dot.
- { a -3 eq { /b b y add def } if }
- ifelse }
- ifelse
- % Let n be number of times pattern is repeated:
- % n = round(b/z)
- % Adjust length of pattern so that it fits evenly in b:
- % z = b/n = b/(round(b/z))
- % z is length of white segment. Length of black segment is 0.
- [ 0 b b z \tx@Div round \tx@Div dup 0 le { pop 1 } if ]
- a 0 gt % setting dash pattern.
- % Set offset to 0 if path is closed]
- { 0 }
- % Set offset to -(y/2) if open curve begins with arrow, (y/2) otherwise:
- { y 2 div a -2 gt { neg } if }
- ifelse
- % Setting linecap to 1 produces the dots.
- setdash 1 setlinecap stroke>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@linestyle}
-% \begin{macrocode}
-\def\psset@linestyle#1{%
- \@ifundefined{psls@#1}%
- {\@pstrickserr{Line style `#1' not defined}\@eha}%
- {\edef\pslinestyle{#1}}}
-\psset@linestyle{solid}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Fill styles\label{Fillstyles}}
-%
-% For each "fillstyle" <style>, the command "\psfs@<style>" should be the
-% PostScript code that fills the region. The style should not assume anything
-% about the PostScript environment's "linewidth" or color.
-%
-% \begin{macro}{\psfs@none}
-% \begin{macrocode}
-\def\psfs@none{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@fillcolor,\psfillcolor}
-% \begin{macrocode}
-\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor}
-\psset@fillcolor{white}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psfs@solid}
-% \begin{macrocode}
-\def\psfs@solid{\pst@usecolor\psfillcolor fill }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{hatchwidth}
-% \begin{macrocode}
-\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth}
-\psset@hatchwidth{.8pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{hatchsep}
-% \begin{macrocode}
-\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep}
-\psset@hatchsep{4pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{hatchcolor}
-% \begin{macrocode}
-\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor}
-\psset@hatchcolor{black}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{hatchangle}
-% \begin{macrocode}
-\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle}
-\psset@hatchangle{45}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psfs@hlines}
-% \begin{macrocode}
-\def\psfs@hlines{%
- \psk@hatchangle rotate
- \psk@hatchwidth SLW
- \pst@usecolor\pshatchcolor
- \psk@hatchsep \tx@LineFill}
-\@namedef{psfs@hlines*}{gsave \psfs@solid grestore \psfs@hlines}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@LineFill}
-% \begin{macrocode}
-\pst@def{LineFill}<%
- abs CLW add /a ED % hatchsep
- gsave
- clip
- pathbbox %leave llx,lly,urx,ury on stack
- a \tx@Div ceiling /y2 ED % Number of top line to be drawn.
- /x2 ED
- a \tx@Div floor /y1 ED % Number of bottom line to be drawn
- /x1 ED
- /n y2 y1 sub 1 add cvi def % Number of lines.
- /y1 a y1 mul def % y-coordinate of bottom line.
- newpath 2 setlinecap
- n
- { currentstrokeadjust ==
- x1 y1 moveto
- x2 y1 L
- stroke
- /y1 y1 a add def }
- repeat
- grestore>
-\pst@def{LineFill}<%
- abs CLW add /a ED % hatchsep
- gsave
- clip
- pathbbox %leave llx,lly,urx,ury on stack
- a \tx@Div ceiling /y2 ED % Number of top line to be drawn.
- /x2 ED
- a \tx@Div floor /y1 ED % Number of bottom line to be drawn
- /x1 ED
- /n y2 y1 sub 1 add cvi def % Number of lines.
- /y1 a y1 mul def % y-coordinate of bottom line.
- newpath 2 setlinecap
- systemdict /currentstrokeadjust known % Level 2
- { currentstrokeadjust }
- { false }
- ifelse
- { /t { } def }
- { /t {
- transform
- 0.25 sub round 0.25 add exch
- 0.25 sub round 0.25 add exch
- itransform
- } bind def }
- ifelse
- n {
- x1 y1 t moveto
- x2 y1 t L
- stroke
- /y1 y1 a add def
- } repeat
- grestore>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psfs@vlines}
-% \begin{macrocode}
-\def\psfs@vlines{%
- 90 rotate
- \psfs@hlines}
-\@namedef{psfs@vlines*}{gsave \psfs@solid grestore \psfs@vlines}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psfs@crosshatch}
-% \begin{macrocode}
-\def\psfs@crosshatch{gsave \psfs@hlines grestore \psfs@vlines}
-\@namedef{psfs@crosshatch*}{%
- gsave \psfs@solid grestore
- gsave \psfs@hlines grestore
- \psfs@vlines}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{fillstyle}
-% \begin{macrocode}
-\def\psset@fillstyle#1{%
- \@ifundefined{psfs@#1}%
- {\@pstrickserr{Undefined fill style: `#1'}\@eha}%
- {\edef\psfillstyle{#1}}}
-\psset@fillstyle{none}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Arrowheads and t-bars\label{Arrowheads}}
-%
-% It would be nice to use a font, with hinting.
-%
-% \begin{macro}{\psset@arrows,\psk@arrowA,\psk@arrowB}
-% "\if@pst" is used as a flag for errors.
-% \begin{macrocode}
-\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{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@arrowtable}
-% This is a translator for "arrowA". Add to it with "\edef", as in
-% \begin{LVerbatim}
-% \edef\pst@arrowtable{\pst@arrowtable,*o-o*}
-% \end{LVerbatim}
-% \begin{macrocode}
-\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-]}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@activearrows}
-% This redefines certain characters in case they are active, before expanding
-% the "arrows" argument. Add to it with "\expandafter", as in
-% \begin{LVerbatim}
-% \begingroup
-% \catcode`\:=13
-% \expandafter\gdef\expandafter\pst@activearrows
-% \expandafter{\def:{\string:}}
-% \endgroup
-% \end{LVerbatim}
-% \begin{macrocode}
-\begingroup
- \catcode`\<=13
- \catcode`\>=13
- \catcode`\|=13
- \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
-\endgroup
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{BeginArrow,EndArrow}
-% For each arrow <arrow>, "\psas@<arrow>" should be PostScript code so that
-% \begin{LVerbatim}
-% <y2 x2 y1 x1> BeginArrow \psk@arrowscale \psas@<arrow> EndArrow
-% \end{LVerbatim}
-% \begin{itemize}
-% \item Draws an arrow with the tip at <x1 y1>, and
-% \item Leaves on the stack <y2 x2 x1' y1'>, where <x1' y1'> is the position
-% that a connecting line should start from.
-% \end{itemize}
-%
-% "BeginArrow" sets up an environment so that "\psas@<arrow>" only has to draw
-% an arrow pointing down and with the tip at "0 0" and , and leave the current
-% point where a connecting line should start from. "EndArrow" then restores
-% the original environment and translates the current point into the original
-% coordinate system.
-%
-% A special dictionary "ADict" is used with arrows so that scratch variables
-% will not conflict. The matrix is saved as "@mtrx" to indicate that the arrow
-% procedures should not change this. The same is true for "@x1", "@y1", "@x2",
-% "@y2" and "@angle", which are used by a patch of "BeginArrow" and "EndArrow"
-% that is required for some versions of Sun's NewsPrint (see "read-me.pst").
-% \begin{macrocode}
-\pst@def{BeginArrow}<%
- ADict begin
- /@mtrx CM def
- gsave
- 2 copy T
- 2 index sub neg exch 3 index sub exch \tx@Atan
- rotate
- newpath>
-\pst@def{EndArrow}<@mtrx setmatrix CP grestore end>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{arrowscale}
-% \begin{macrocode}
-\def\psset@arrowscale#1{\pst@getscale{#1}\psk@arrowscale}
-\psset@arrowscale{1}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@arrowsize,\psk@arrowsize}
-% \begin{macrocode}
-\def\psset@arrowsize#1{%
- \pst@expandafter\pst@getdimnum{#1} {} {} {}\@nil
- \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}}
-\psset@arrowsize{2pt 3}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@arrowlength,\psk@arrowlength}
-% \begin{macrocode}
-\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength}
-\psset@arrowlength{1.4}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@arrowinset,\psk@arrowinset}
-% \begin{macrocode}
-\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}%
-\psset@arrowinset{.4}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@Arrow}
-% Syntax:
-% \begin{LVerbatim}
-% <boolean> \psk@arrowinset \psk@arrowlength \psk@arrowsize Arrow
-% \end{LVerbatim}
-% <boolean> is "true" for reverse arrows and "false" for normal arrows.
-% \begin{macrocode}
-\pst@def{Arrow}<%
- CLW mul add dup % width
- 2 div /w ED % Half width
- mul dup /h ED % Height
- mul /a ED % Inset
- { 0 h T 1 -1 scale } if % For reverse arrows
- w neg h moveto
- 0 0 L
- w h L
- w neg a neg rlineto
- gsave fill grestore>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@>}
-% \begin{macrocode}
-\@namedef{psas@>}{%
- false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@>>}
-% \begin{macrocode}
-\@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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begingroup
-% \catcode`\<=12
-% \begin{macro}{\psas@<}
-% \begin{macrocode}
-\@namedef{psas@<}{%
- true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@<<}
-% \begin{macrocode}
-\@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}
-% \end{macrocode}
-% \end{macro}
-% \endgroup
-%
-% \begin{macro}{\psset@tbarsize,\psk@tbarsize}
-% \begin{macrocode}
-\def\psset@tbarsize#1{%
- \pst@expandafter\pst@getdimnum{#1} {} {} {}\@nil
- \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
-\psset@tbarsize{2pt 5}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{Tbar}
-% Syntax
-% \begin{LVerbatim}
-% \psk@tbarsize Tbar
-% \end{LVerbatim}
-% \begin{macrocode}
-\pst@def{Tbar}<%
- CLW mul add /z ED % width
- z -2 div CLW 2 div moveto
- z 0 rlineto
- stroke
- 0 CLW moveto>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@|}
-% \begin{macrocode}
-\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@|*}
-% \begin{macrocode}
-\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@bracketlength,\psk@bracketlength}
-% \begin{macrocode}
-\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength}
-\psset@bracketlength{.15}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@Bracket,\tx@@Bracket}
-% Syntax
-% \begin{LVerbatim}
-% \psk@bracketlength \psk@tbarsize Bracket
-% \end{LVerbatim}
-% \begin{macrocode}
-\pst@def{Bracket}<%
- CLW mul add dup
- CLW sub 2 div /x ED % adjusted half width
- mul CLW add /y ED % y-position of height
- /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>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@]}
-% \begin{macrocode}
-\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@rbracketlength,\psk@rbracketlength}
-% \begin{macrocode}
-\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength}
-\psset@rbracketlength{.15}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{RoundBracket}
-% Syntax
-% \begin{LVerbatim}
-% \psk@bracketlength \psk@tbarsize RoundBracket
-% \end{LVerbatim}
-% \begin{macrocode}
-\pst@def{RoundBracket}<%
- CLW mul add dup
- 2 div /x ED % half width
- mul /y ED % height
- /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>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@(}
-% \begin{macrocode}
-\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@c,\psas@cc,\psas@C}
-% This is not going to be used frequently, and so we don't bother defining a
-% PostScript procedure in the header.
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@}
-% \begin{macrocode}
-\def\psas@{}
-\psset@arrows{-}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Graphics objects: processing arguments}
-%
-% \begin{macro}{\pst@par,\addto@par,\use@par}
-% Graphics objects accumulate <parameter>=<value> pairs in the command
-% sequence "\pst@par". They use "\addto@par" to add to "\pst@par", and
-% "\use@par" to make the parameter changes effective.
-% \begin{macrocode}
-\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\use@par{%
- \ifx\pst@par\@empty\else
- \expandafter\@psset\pst@par,\@nil
- \def\pst@par{}%
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@object}
-% Any macro, such as "\psline", that uses graphics parameters should begin as
-% follows:
-% \begin{LVerbatim}
-% \def\psline{\def\pst@par{}\pst@object{psline}}
-% \def\psline@i{ ... }
-% \end{LVerbatim}
-% "\pst@object" checkes for the optional "[<par>=<value>,...]" argument, adds
-% key-value pairs to "\pst@par" if found, skips spaces, and then invokes
-% "\psline@i".
-% \begin{macrocode}
-\def\pst@object#1{%
- \pst@ifstar{\@ifnextchar[{\pst@@object{#1}}{\@nameuse{#1@i}}}}
-\def\pst@@object#1[#2]{%
- \addto@par{#2}\@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\newpsobject}
-% For example,
-% \begin{LVerbatim}
-% \newpsobject{dottedline}{psline}{linestyle=dotted}
-% \end{LVerbatim}
-% has the following effect:
-% \begin{LVerbatim}
-% \def\dottedline{%
-% \def\pst@par{linestyle=dotted}\pst@object{psline}}
-% \end{LVerbatim}
-% and thus "\dottedline" is just like "\psline", except that the default falue
-% of "linestyle" is changed to "dotted".
-% \begin{macrocode}
-\def\newpsobject#1#2#3{%
- \@ifundefined{#2@i}%
- {\@pstrickserr{Graphics object `#2' not defined}\@eha}%
- {\@namedef{#1}{\def\pst@par{#3}\pst@object{#2}}}\ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getarrows}
-% "\pst@getarrows{foo}" checks for an optional argument containing arrows, and
-% then invokes "foo". The arrows argument must be followed by "(".
-% \begin{macrocode}
-\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
-\def\pst@@getarrows#1#2{\addto@par{arrows=#2}#1}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Graphics objects: Basics \TeX\ macros\label{Objects}}
-%
-% Each graphics object should use one of the following:
-% \begin{center}
-% \begin{tabular}{ll}
-% "\begin@OpenObj ... \end@OpenObj" & Open curves with arrows.\\
-% "\begin@AltOpenObj ... \end@AltOpenObj" & Open curves w/o arrows.\\
-% "\begin@ClosedObj ... \end@ClosedObj" & Closed curves.\\
-% "\begin@SpecialObj ... \end@SpecialObj" & Other.
-% \end{tabular}
-% \end{center}
-% This makes it possible for "\pscustom" to work by redefining these.
-%
-% \begin{macro}{\begin@ClosedObj,\end@ClosedObj}
-% \begin{macrocode}
-\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
- \pst@fill
- \pst@stroke
- \ifpsdoubleline \pst@doublestroke \fi
- \ifshowpoints
- \addto@pscode{Points aload length 2 div cvi /N ED \psdots@iii}%
- \fi
- \use@pscode
- \endgroup
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\begin@OpenObj,\begin@AltOpenObj,\end@OpenObj}
-% \begin{macrocode}
-\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
- \pst@fill
- \pst@stroke
- \ifpsdoubleline \pst@doublestroke \fi
- \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi
- \ifshowpoints \pst@OpenShowPoints \fi
- \use@pscode
- \endgroup
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\begin@SpecialObj,\end@SpecialObj}
-% \begin{macrocode}
-\def\begin@SpecialObj{%
- \leavevmode
- \pst@killglue
- \begingroup
- \use@par
- \init@pscode}
-\def\end@SpecialObj{%
- \use@pscode
- \endgroup
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\init@pscode,\addto@pscode,\use@pscode}
-% Graphics objects are built up by adding PostScript code to "\pst@code" with
-% "\addto@pscode". "\use@pscode" then adds leading and trailing PostScript
-% code, and (normally) inserts it in a "\special" (it also most empty
-% "\pst@code"). Hacks like "\psclip", "\multips" and "\pstextpath" work by
-% redefining "\use@pscode". These hacks use "\use@pscode" themselves when
-% appropriate, making limited nesting of these hacks is possible. "\PSTtoEPS"
-% works be redefining "\addto@pscode" so that it writes to a file. All this
-% was carefully designed so that these hacks would work. Watch out!
-% \begin{macrocode}
-\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
- newpath
- \psk@origin
- \psk@swapaxes
- \pst@code
- end}%
- \gdef\pst@code{}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@killglue}
-% \begin{macrocode}
-\def\KillGlue{%
- \def\pst@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@killglue\fi}}
-\def\DontKillGlue{\let\pst@killglue\relax}
-\DontKillGlue
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\solid@star}
-% The optional "*" is typically used to make a solid option. This means that
-% "linestyle" is set to "none", "linewidth" is set to "0", and "fillcolor" is
-% set to "linecolor".
-% \begin{macrocode}
-\def\solid@star{%
- \if@star
- \pslinewidth=\z@
- \psdoublelinefalse
- \def\pslinestyle{none}%
- \def\psfillstyle{solid}%
- \let\psfillcolor\pslinecolor
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@setdoublesep}
-% \begin{macrocode}
-\def\pst@setdoublesep{%
- \pst@getlength\psdoublesep\psdoublesep
- \pslinewidth=2\pslinewidth
- \advance\pslinewidth\psdoublesep\p@
- \let\pst@setdoublesep\relax}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@Shadow}
-% Syntax:
-% \begin{Ex}
-% <x y> Shadow
-% \end{Ex}
-% translates current path by <x y>.
-% \begin{macrocode}
-\pst@def{Shadow}<%
- [
- { /moveto load }
- { /lineto load }
- { /curveto load }
- { /closepath load }
- pathforall
- ]
- cvx
- newpath
- 3 1 roll
- T
- exec>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@closedshadow}
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@openshadow}
-% \begin{macrocode}
-\def\pst@openshadow{%
- \addto@pscode{%
- gsave
- \psk@shadowsize \psk@shadowangle \tx@PtoC
- \tx@Shadow
- \pst@usecolor\psshadowcolor
- \ifx\psfillstyle\@none\else
- gsave fill grestore
- \fi
- stroke}%
- \pst@repeatarrows
- \addto@pscode{grestore}
- \ifx\psfillstyle\@none\else
- \addto@pscode{%
- gsave
- \pst@usecolor\psfillcolor
- gsave fill grestore
- stroke
- grestore}
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@addborder}
-% \begin{macrocode}
-\def\pst@addborder{%
- \addto@pscode{%
- gsave
- \psk@border 2 mul
- CLW add SLW
- \pst@usecolor\psbordercolor
- stroke
- grestore}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@stroke}
-% \begin{macrocode}
-\def\pst@stroke{%
- \ifx\pslinestyle\@none\else
- \addto@pscode{%
- gsave
- \pst@number\pslinewidth SLW
- \pst@usecolor\pslinecolor
- \@nameuse{psls@\pslinestyle}
- grestore}%
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@fill}
-% \begin{macrocode}
-\def\pst@fill{%
- \ifx\psfillstyle\@none\else
- \addto@pscode{gsave \@nameuse{psfs@\psfillstyle} grestore}%
- \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@doublestroke}
-% \begin{macrocode}
-\def\pst@doublestroke{%
- \addto@pscode{%
- gsave
- \psdoublesep SLW
- \pst@usecolor\psdoublecolor
- stroke
- grestore}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@arrowtype}
-% \begin{macrocode}
-\def\pst@arrowtype{%
- \ifx\psk@arrowB\@empty 0 \else -2 \fi
- \ifx\psk@arrowA\@empty 0 \else -1 \fi
- add}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@addarrowdef,\pst@arrowdef,\pst@arrowtype}
-% "ArrowA" takes two coordinates from the stack, draws the arrow with the tip
-% at the top coordinate, leaves the second coordinate on the stack and leaves
-% the current point where a line should join.
-%
-% "ArrowB" takes two coordinates from the stack, draws the arrow with the tip
-% at the top coordinate, and leaves both coordinates on the stack, without
-% changing the graphics state.
-%
-% This particular definition of "ArrowA" is important for "\pscustom".
-%
-% "ArrowA" and "ArrowB" might also save the arrow coordinates, because
-% sometimes it is necessary to redraw the arrows (see
-% "\pst@setrepeatarrowsflag").
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@repeatarrows}
-% \begin{macrocode}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@OpenShowPoints}
-% \begin{macrocode}
-\def\pst@OpenShowPoints{%
- \addto@pscode{%
- gsave
- \psk@dotsize
- \@nameuse{psds@\psk@dotstyle}
- /TheDot {
- gsave T \psk@dotangle \psk@dotscale Dot grestore
- } def
- newpath
- Points aload length 2 div 2 sub cvi /N ED
- N 0 ge
- { \ifx\psk@arrowA\@empty
- TheDot
- \else
- pop pop
- \fi
- N { TheDot } repeat
- \ifx\psk@arrowB\@empty
- TheDot
- \else
- pop pop
- \fi }
- { N 2 mul { pop } repeat }
- ifelse
- grestore}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Custom graphics}
-%
-% Graphics objects using "\begin@SpecialObj" cannot be used with "\pscustom".
-% It is up to the other graphics objects to be compatible with "\pscustom".
-% This means:
-% \begin{itemize}
-% \item To use the current point as an additional coordinate, when it exists,
-% the graphics object should insert "\pst@cp".
-% \item For graphics objects that use "\begin@OpenObj", the "ArrowA" is
-% defined by "\pscustom" to connect the top coordinate with the current point
-% by a line, if there is a current point. Other graphics objects should use
-% "\pst@oplineto" as a substitute for "moveto" if they wish to connect a
-% coordinate to the current point if it exists.
-% \end{itemize}
-%
-% Closed graphics objects are not under an obligation to anything particularly
-% sensible the current point exists.
-%
-% \begin{macro}{\pscustom}
-% The main graphics object modifies "\begin@OpenObj" and "\end@OpenObj" so
-% that the open curves extend the current path.
-% \begin{macrocode}
-\def\pscustom{\def\pst@par{}\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}%
- \pst@fill
- \pst@stroke
- \end@SpecialObj}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\begin@CustomObj,\end@CustomObj}
-% \begin{macrocode}
-\def\begin@CustomObj{%
- \begingroup
- \use@par
- \addto@pscode{%
- \pst@number\pslinewidth SLW
- \pst@usecolor\pslinecolor}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@liftpen,\pst@cp,\pst@oplineto,\pst@optcp}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@linetype,\pslinetype}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\caddto@pscode}
-% Commands that should only occur in "\pscustom" should use this. Obsolete?
-% \begin{macrocode}
-\def\caddto@pscode#1{%
- \@pstrickserr{Command can only be used in \string\pscustom}\@ehpa}
-\let\cuse@par\caddto@pscode
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@MSave,\tx@MRestore}
-% It doesn't seem worth adding these to the header file.
-% \begin{macrocode}
-\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 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psmove,\psclosepath,\psgroup}
-% \begin{macrocode}
-\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}}%
- \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
- \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{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\pst@fill}%
-\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
- \pst@getcoor{#6}\pst@tembc
- \addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}%
- \endgroup}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\psrawfile,\pst@rawfile}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-%
-% \section{Graphics objects: Basic PostScript macros}
-%
-% \begin{macro}{SD}
-% \begin{macrocode}
-\pst@def{SD}<%
- 0 360 arc fill>
-\pst@def{SQ}<%
- /r ED
- r r moveto
- r r neg L
- r neg r neg L
- r neg r L
- fill>
-\pst@def{ST}<%
- /y ED /x ED
- x y moveto
- x neg y L
- 0 x L
- fill>
-\pst@def{SP}<%
- /r ED
- gsave
- 0 r moveto
- 4 { 72 rotate 0 r L } repeat
- fill
- grestore>
-\@namedef{psds@*}{/Dot { 0 0 DS \tx@SD } def}
-\@namedef{psds@o}{%
- /r2 DS CLW sub def
- /Dot { 0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD } def}
-\@namedef{psds@square*}{%
- /r1 DS .886 mul def
- /Dot { r1 \tx@SQ } def}
-\@namedef{psds@square}{%
- /r1 DS .886 mul def /r2 r1 CLW sub def
- /Dot { r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ } def}
-\@namedef{psds@triangle*}{%
- /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
- /Dot { x1 y1 \tx@ST } def}
-\@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
- /Dot { x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST } def}
-\@namedef{psds@pentagon*}{%
- /r1 DS 1.149 mul def
- /Dot { r1 \tx@SP } def}
-\@namedef{psds@pentagon}{%
- DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
- /Dot { r1 \tx@SP \pst@usecolor\psfillcolor
- r2 \tx@SP } def}
-\@namedef{psds@+}{%
- /DS DS 1.253 mul def
- /Dot { DS 0 moveto DS neg 0 L stroke
- 0 DS moveto 0 DS neg L stroke } def}
-\@namedef{psds@|}{%
- \psk@tbarsize CLW mul add 2 div /DS ED
- /Dot { 0 DS moveto 0 DS neg L stroke } def}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{dotstyle}
-% \begin{macrocode}
-\def\psset@dotstyle#1{%
- \@ifundefined{psds@#1}%
- {\@pstrickserr{Dot style `#1' not defined}\@eha}%
- {\edef\psk@dotstyle{#1}}}
-\psset@dotstyle{*}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{NArray}
-% Syntax:
-% \begin{Ex}
-% <array of points> NArray <points>
-% \end{Ex}
-% Sets "n" to the number of pairs in the array, and makes sure there is an
-% even number of elements.
-% \begin{macrocode}
-\pst@def{NArray}<%
- aload length 2 div dup
- dup cvi eq not { exch pop } if
- /n exch cvi def>
-\pst@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>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{Line}
-% Syntax:
-% \begin{Ex}
-% <array of points> Line -
-% \end{Ex}
-% "ArrowA" and "ArrowB" should be defined to draw arrows, and "Lineto" should
-% be the procedure used to draw the path; either "lineto" or "Arcto".
-% \begin{macrocode}
-\pst@def{Line}<%
- \tx@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>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{Arcto}
-% Syntax:
-% \begin{Ex}
-% <x2 y2 x1 y1> Arcto <x2 y2>
-% \end{Ex}
-% "r" should be set to the arc radius. Adds to the path with "arcto", with the
-% corner at <x1 y1> and going towards <x2 y2>. Works even when the points are
-% equal. For use with "Line" and "Polygon".
-% \begin{macrocode}
-\pst@def{Arcto}<%
- /a [ 6 -2 roll ] cvx def
- a r /arcto load stopped { 5 } { 4 } ifelse { pop } repeat a>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{Polygon}
-% Syntax:
-% \begin{Ex}
-% <array of points> Line -
-% \end{Ex}
-% "Lineto" should be the procedure used to draw the path; either "lineto" or
-% "Arcto".
-% \begin{macrocode}
-\pst@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>
-\pst@def{Polygon}<%
- \tx@NArray
- n 2 eq { 0 0 /n 3 def } if
- n 3 lt
- { n { pop pop } repeat }
- { n 3 gt { \tx@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>
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Interpolated curves}
-%
-% This documentation is largely junk.
-%
-% There one was an alternate algorithm that had the nice property that when
-% the coordinates were scaled, the interpolated curve would scale in the same
-% way. It was also simpler. However, this one gives nicer looking results in
-% most cases.
-%
-% Two parameters should be defined:
-% \begin{description}
-% \item[a] Lower values make the curve tighter. (Default: 1)
-% \item[b] Higher values make the curve tighter where the angle ABC is less
-% than 45 degrees, and loosen the curve elsewhere. (Default: .1)
-% \end{description}
-% "ArrowA" and "ArrowB" should be defined as well.
-%
-% Each two points are connected by a single Bezier curve, using curveto. For
-% each point P, let P- and P+ be the control points before and after the
-% point. I.e., If A, B and C are consecutive points, then A and B are
-% connected by the Bezier curve with control points A, A+, B- and B, and B and
-% C are connected with control points B, B+, C- and C.
-%
-% The interpolation is local, meaning that control points B- and B+ depend
-% only on points A, B and C.
-%
-% \begin{macro}{\tx@CCA,\tx@CC}
-% The first three lines before "CCA" set "x1"$=Ax+$, "y1"$=Ay+$,
-% "l0"$=d(A,B)$, "dx0"$=Bx-Ax$, and "dy0"$=By-Ay$. After "CCA", "x"$=Bx$,
-% "y"$=By$, "dx1"$=Cx-Bx$, "dy2"$=Cy-By$, and "l1"$=d(B,C)$.
-% \begin{macrocode}
-\pst@def{CCA}<%
- /y ED /x ED 2 copy
- y sub /dy1 ED x sub /dx1 ED
- /l1 dx1 dy1 \tx@Pyth def>
-\pst@def{CCA}<%
- /y ED /x ED 2 copy
- y sub /dy1 ED x sub /dx1 ED
- /l1 dx1 dy1 \tx@Pyth def>
-\pst@def{CC}<%
- /l0 l1 def
- /x1 x dx sub def /y1 y dy sub def
- /dx0 dx1 def /dy0 dy1 def
- \tx@CCA
-% \end{macrocode}
-% The task is now to calculate $B-$ and $B+$. We first calculate the slope
-% "dx" and "dy" at $B$. This tangent at $B$ should be perpendicular to the
-% bisection of the angle $ABC$. Recalling that "dx0" and "dy0" ``point'' from
-% $A$ to $B$, this tangency thus passes through $B+(dx,dy)$, where $(dx,dy)$
-% is the average of $dx0,dy0$ and $dx1,dy1$, once these have been normalized
-% to have the same length. If we normalize by dividing each by their length,
-% and then multiplying both by both lengths, we get
-% \begin{center}\tt\begin{tabular}{rcl}
-% dx & $=$ & l1 $\times$ dx0 $+$ l0 $\times$ dx1 \\[3pt]
-% dy & $=$ & l1 $\times$ dy0 $+$ l0 $\times$ dy1
-% \end{tabular}\end{center}
-% \begin{macrocode}
- /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
-% \end{macrocode}
-% "dx" and "dy" give us the direction of the control points $B-$ and $B+$ from
-% $B$. Now we adjust the distance of these control points. The first component
-% is sine of the angle ABC, so that smaller angles give closer control points.
-% This is raised to the "b", so that "b" controls the extent of this
-% dependency (and can even reverse the relation).
-% Then this amount is multiplied times "a", which those adjusts the overall
-% tightness, independently of the angle. Let's call this amount $M$. This
-% amount is then divided by the length of the vector $(dx,dy)$, thereby
-% normalizing this vector to unit length, and then, multiplied times the
-% distance between $A$ and $B$ (for calculating $B-$). Thus, $B-$ is distance
-% $M d(A,B)$ from $B$. $(x2,y2)$ are set to $B-$, thus calculated, and $B+$ is
-% temporily stored in $(dx,dy)$.
-% \begin{macrocode}
- /m dx0 dy0 \tx@Atan dx1 dy1 \tx@Atan sub
- 2 div cos abs b exp a mul
- dx dy \tx@Pyth \tx@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>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@IC,\tx@BOC,\tx@NC,\tx@EOC,\tx@BAC,\tx@NAC,\tx@EAC}
-% These are the compenents of the loops that go through the lists of points
-% that are to be interpolated. These are abbreviations, as follows:
-% \begin{center}
-% \begin{tabular}{ll}
-% "IC" & Initialize Curve\\
-% "BOC" & Begin Open Curve\\
-% "NC" & Next Curve\\
-% "EOC" & End Open Curve\\
-% "BAC" & Begin Alternative Curve\\
-% "NAC" & Next Alternative Curve\\
-% "EAC" & End Alternative Curve
-% \end{tabular}
-% \end{center}
-% \begin{macrocode}
-\pst@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
- \tx@CCA /dx 0 def /dy 0 def>
-\pst@def{BOC}<%
- \tx@IC \tx@CC x2 y2 x1 y1 ArrowA
- CP 4 2 roll x y curveto>
-\pst@def{NC}<\tx@CC x1 y1 x2 y2 x y curveto>
-\pst@def{EOC}<%
- x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto>
-\pst@def{BAC}<%
- \tx@IC \tx@CC x y moveto \tx@CC
- x1 y1 CP ArrowA>
-\pst@def{NAC}<x2 y2 x y curveto \tx@CC x1 y1>
-\pst@def{EAC}<x2 y2 x y ArrowB curveto pop pop>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{OpenCurve}
-% Syntax:
-% \begin{Ex}
-% <array of points> OpenCurve
-% \end{Ex}
-% \begin{macrocode}
-\pst@def{OpenCurve}<%
- \tx@NArray
- n 3 lt
- { n { pop pop } repeat }
- { \tx@BOC
- /n n 3 sub def
- n { \tx@NC } repeat
- \tx@EOC }
- ifelse>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{AltCurve}
-% Syntax:
-% \begin{Ex}
-% <array of points> AltCurve
-% \end{Ex}
-% \begin{macrocode}
-\pst@def{AltCurve}<%
- { false \tx@NArray
- n 2 mul 2 roll
- [ n 2 mul 3 sub 1 roll ]
- aload /Points ED
- n 2 mul -2 roll }
- { false \tx@NArray }
- ifelse
- n 4 lt
- { n { pop pop } repeat }
- { \tx@BAC
- /n n 4 sub def
- n { \tx@NAC } repeat
- \tx@EAC }
- ifelse>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{ClosedCurve}
-% Syntax:
-% \begin{Ex}
-% <array of points> ClosedCurve
-% \end{Ex}
-% \begin{macrocode}
-\pst@def{ClosedCurve}<%
- \tx@NArray
- n 3 lt
- { n { pop pop } repeat }
- { n 3 gt { \tx@CheckClosed } if
- 6 copy n 2 mul 6 add 6 roll
- \tx@IC \tx@CC x y moveto
- n { \tx@NC } repeat
- closepath pop pop }
- ifelse>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{curvature}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pscurve}
-% \begin{macrocode}
-\def\pscurve{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psecurve}
-% \begin{macrocode}
-\def\psecurve{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psccurve}
-% \begin{macrocode}
-\def\psccurve{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Dots}
-%
-% It would be nice to use a font, with hinting.
-%
-% \begin{macro}{dotsize}
-% \begin{macrocode}
-\def\psset@dotsize#1{%
- \edef\pst@tempg{#1 }%
- \expandafter\psset@@dotsize\pst@tempg -1 -1 -1\@nil}
-\def\psset@@dotsize#1 #2 #3\@nil{%
- \pst@checknum{#2}\pst@tempg
- \pssetlength\pst@dimg{#1}%
- \edef\psk@dotsize{%
- /DS \pst@number\pst@dimg \pst@tempg CLW mul add 2 div def }}
-\psset@dotsize{.5pt 2.5}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psset@dotscale}
-% \begin{macrocode}
-\def\psset@dotscale#1{\pst@getscale{#1}\psk@dotscale}
-\psset@dotscale{1}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@Getangle}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{dotangle}
-% \begin{macrocode}
-\def\psset@dotangle#1{\pst@Getangle{#1}\psk@dotangle}
-\psset@dotangle{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psdots}
-% \begin{macrocode}
-\def\psdots{\def\pst@par{}\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 { gsave T \psk@dotangle \psk@dotscale Dot grestore } repeat}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{EndDot}
-% Syntax
-% \begin{LVerbatim}
-% {<fill>} {<displace>} EndDot
-% \end{LVerbatim}
-% "DS" should be defined to be the dot size.
-% \begin{macrocode}
-\pst@def{EndDot}<%
- { /z DS def } { /z 0 def } ifelse
- /b ED
- 0 z DS \tx@SD
- b { 0 z DS CLW sub \tx@SD } if
- 0 DS z add CLW 4 div sub moveto>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@oo}
-% \begin{macrocode}
-\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@o}
-% \begin{macrocode}
-\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@**}
-% \begin{macrocode}
-\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psas@*}
-% \begin{macrocode}
-\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Lines and polygons\label{Lines}}
-%
-% \begin{macro}{linearc}
-% \begin{macrocode}
-\newdimen\pslinearc
-\def\psset@linearc#1{\pssetlength\pslinearc{#1}}
-\psset@linearc{0pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psline}
-% \begin{macrocode}
-\def\psline{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\qline}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pspolygon}
-% \begin{macrocode}
-\def\pspolygon{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{framearc}
-% \begin{macrocode}
-\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc}
-\psset@framearc{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{cornersize}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{Frame}
-% Syntax
-% \begin{Ex}
-% <framearc/linearc bool x1 y1 x2 y2 dimen> "Frame"
-% \end{Ex}
-% \begin{macrocode}
-\pst@def{Rect}<%
- x1 y1 y2 add 2 div moveto
- x1 y2 lineto
- x2 y2 lineto
- x2 y1 lineto
- x1 y1 lineto
- closepath>
-\pst@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 % STACK: cornersize halfwidth boolean
- { 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>
-\pst@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 \tx@Rect } { \tx@OvalFrame } ifelse>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{dimen}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psframe}
-% \begin{macrocode}
-\def\psframe{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Curves}
-%
-% \begin{macro}{\psbezier}
-% \begin{macrocode}
-\def\psbezier{\def\pst@par{}\pst@object{psbezier}}
-\def\psbezier@i{\pst@getarrows\psbezier@ii}
-\def\psbezier@ii#1(#2)#3(#4)#5(#6){%
- \@ifnextchar({\psbezier@iii{1}(#2)(#4)(#6)}%
- {\psbezier@iii{\z@}(0,0)(#2)(#4)(#6)}}
-\def\psbezier@iii#1(#2)(#3)(#4)(#5){%
- \begin@OpenObj
- \pst@getcoor{#2}\pst@tempa
- \pst@getcoor{#3}\pst@tempb
- \pst@getcoor{#4}\pst@tempc
- \pst@getcoor{#5}\pst@tempd
- \pst@optcp{#1}\pst@tempa
- \ifshowpoints\psbezier@iv\fi
- \addto@pscode{
- \pst@tempb \pst@tempa ArrowA
- \pst@tempc \pst@tempd ArrowB
- curveto}%
- \end@OpenObj}
-\def\psbezier@iv{%
- \addto@pscode{%
- gsave
- \pst@tempa \pst@tempb \pst@tempc \pst@tempd
- newpath moveto L L L
- CLW 2 div SLW
- [ \psk@dash\space ] 0 setdash stroke
- grestore
- /Points [\pst@tempa\pst@tempb\pst@tempc\pst@tempd] def}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\parabola}
-% \begin{macrocode}
-\pst@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\parabola{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Grids\label{Grids}}
-%
-% \begin{macro}{gridwidth}
-% \begin{macrocode}
-\def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
-\psset@gridwidth{.8pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{griddots}
-% \begin{macrocode}
-\def\psset@griddots#1{%
- \pst@cntg=#1\relax
- \edef\psk@griddots{\the\pst@cntg}}
-\psset@griddots{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{gridcolor}
-% \begin{macrocode}
-\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor}
-\psset@gridcolor{black}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{subgridwidth}
-% \begin{macrocode}
-\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth}
-\psset@subgridwidth{.4pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{subgridcolor}
-% \begin{macrocode}
-\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor}
-\psset@subgridcolor{gray}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{subgriddots}
-% \begin{macrocode}
-\def\psset@subgriddots#1{%
- \pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
-\psset@subgriddots{0}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{subgriddiv}
-% \begin{macrocode}
-\def\psset@subgriddiv#1{%
- \pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
-\psset@subgriddiv{5}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{gridlabels}
-% \begin{macrocode}
-\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels}
-\psset@gridlabels{10pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{gridlabelcolor}
-% \begin{macrocode}
-\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor}
-\psset@gridlabelcolor{black}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{Grid}
-% Syntax:
-% \begin{Ex}
-% <x1 y1 x2 y2 x-origin y-origin x-divsize y-divsize>\\
-% <numsubdiv griddots labelcolor labelsize> "Grid"
-% \end{Ex}
-% Coordinates should all be integers. Font needs to be defined before invoking
-% this procedure. This could probably be simplified.
-% \begin{macrocode}
-\pst@def{Grid}<%
- /a 4 string def % Empty string
- /b ED % Label size
- /d ED % Label color procedure.
- /n ED % Number of grid dots
- cvi dup 1 lt { pop 1 } if /c ED % Number subdivisions
- c div dup 0 eq { pop 1 } if /cy ED
- c div dup 0 eq { pop 1 } if /cx ED % division spacing
- cy div cvi /y ED % origin y
- cx div cvi /x ED % origin x
- cy div cvi /y2 ED % y2
- cx div cvi /x2 ED % x2
- cy div cvi /y1 ED % y1
- cx div 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
- 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
- gsave
- n 0 gt
- { 1 setlinecap [ 0 cy n div ] 0 setdash }
- { 2 setlinecap }
- ifelse
- /c x1 def /i 500 w mul x1 add def % Index
- /e y cy mul def /f y1 cy mul def /g y2 cy mul def
- x1 cx mul 0 T
- { newpath
- 0 e moveto
- b 0 gt
- { gsave d c 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
- 0 f moveto 0 g L stroke
- cx w mul 0 T
- c x2 eq c i eq or {exit} if
- /c c w add def
- } loop
- grestore
- gsave
- n 0 gt
- { 1 setlinecap [ 0 cx n div ] 0 setdash }
- { 2 setlinecap }
- ifelse
- /c y1 def /i 500 h mul y1 add def
- /e x cx mul def /f x1 cx mul def /g x2 cx mul def
- 0 y1 cy mul T
- { newpath
- e 0 moveto
- b 0 gt { gsave d
- c 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
- f 0 moveto g 0 L stroke
- 0 cy h mul T
- c y2 eq c i eq or {exit} if
- /c c h add def
- } loop
- grestore>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psgrid}
-% \begin{macrocode}
-\def\psgrid{\def\pst@par{}\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \section{LR-box commands}
-%
-% \begin{macro}{\ifpsmathbox,\everypsbox}
-% \begin{macrocode}
-\newif\ifpsmathbox
-\psmathboxtrue
-\def\pst@mathflag{\z@}
-\newtoks\everypsbox
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@makenotverbbox}
-% \begin{macrocode}
-\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
- {\the\everypsbox#2}%
- \ifnum\pst@mathflag>\z@$\fi}%
- #1}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@makeverbbox}
-% There is no way to do this such that with
-% \begin{LVerbatim}
-% \psframebox{\aftergroup\foo}
-% \end{LVerbatim}
-% "\foo" does not end up outside the box. That is why this is not the default
-% mode.
-% \begin{macrocode}
-\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
- \the\everypsbox}
-\def\pst@endbox{%
- \ifnum\pst@mathflag>\z@$\fi
- \egroup
- \pst@afterbox}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psverbboxtrue,\psverbboxfalse}
-% \begin{macrocode}
-\def\pst@makebox{\pst@@makebox}
-\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}}
-\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}}
-\psverbboxfalse
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@longbox,\pst@makelongbox}
-% There is no way to do this such that with
-% \begin{LVerbatim}
-% \psframebox{\aftergroup\foo}
-% \end{LVerbatim}
-% "\foo" does not end up outside the box. That is why this is not the default
-% mode.
-% \begin{macrocode}
-\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
- \the\everypsbox}
-\def\pst@endlongbox{%
- \endgroup
- \ifnum\pst@mathflag>\z@$\fi
- \egroup}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pslongbox}
-% \begin{macrocode}
-\def\pslongbox#1#2{%
- \@namedef{#1}{\pst@longbox#2}%
- \@namedef{end#1}{\pst@endlongbox}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Frame boxes\label{Frameboxes}}
-%
-% \begin{macro}{framesep}
-% \begin{macrocode}
-\newdimen\psframesep
-\def\psset@framesep#1{\pssetlength\psframesep{#1}}
-\psset@framesep{3pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{boxsep}
-% \begin{macrocode}
-\newif\ifpsboxsep
-\def\psset@boxsep#1{\@nameuse{psboxsep#1}}
-\psset@boxsep{true}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@useboxpar}
-% \begin{macrocode}
-\def\pst@useboxpar{%
- \use@par
- \if@star
- \let\pslinecolor\psfillcolor
- \solid@star
- \let\solid@star\relax
- \fi
- \ifpsdoubleline \pst@setdoublesep \fi}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psframebox}
-% "\psframebox" puts its argument in an "\hbox" and draws a frame around it
-% with thickness "\pst@linewidth", and with distance "\pst@framesep" between
-% each side of the frame (between the line making up each side) and each side
-% of the box. The result is a box with no depth and with width and height
-% equal to the width and height of the original box, plus
-% 2("\pslinewidth"+"\psframesep").
-%
-% "\pst@dima" is set to the distance between each side of the original box and
-% the outer side of the frame (i.e., the side of the resulting box).
-% "\pst@dimb" is set to the depth of the resulting box, "\pst@dimc" is set to
-% the height plus depth of this box, and "\pst@dimd" is set to the width.
-% "\psframe" does the drawing of the frame.
-% \begin{macrocode}
-\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
- \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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psdblframebox}
-% \begin{macrocode}
-\def\psdblframebox{\def\pst@par{}\pst@object{psdblframebox}}
-\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psclip,\endclip}
-% Clipping involves drawing graphics objects, not grouped by "gsave" and
-% "grestore", which may affect the graphics environment. Furthermore, to reset
-% the clipping path, we must either use "grestore" or "initclip", neither of
-% which is robust.
-% \begin{macrocode}
-\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}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psclipbox}
-% \begin{macrocode}
-\def\clipbox{\@ifnextchar[{\psclipbox@}{psclipbox@[\z@]}}
-\def\clipbox@[#1]{\pst@makebox\psclipbox@@{#1}}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psshadowbox}
-% \begin{macrocode}
-\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}
-%
-%
-% \begin{macro}{\pscirclebox}
-% "\pscirclebox@ii"'s argument is a hook that is used by node commands.
-% \begin{macrocode}
-\def\pscirclebox{\def\pst@par{}\pst@object{pscirclebox}}
-\def\pscirclebox@i{\pst@makebox{\pscirclebox@ii{}}}
-\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@pyth\pst@dima\pst@dimb\pst@dimc
- \advance\pst@dimc\pslinewidth
- \advance\pst@dimc\psframesep
- \setbox\pst@hbox=\hbox to2\pst@dimc{%
- \hss
- \vbox{\vskip\pst@dimc\vskip-\pst@dimb\box\pst@hbox}%
- \hss}%
- \advance\pst@dimc-\pst@dimb
- \dp\pst@hbox=\pst@dimc
- \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 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psovalbox}
-% The argument of "\psovalbox@ii" is a hook used by node commands.
-% \begin{macrocode}
-\def\psovalbox{\def\pst@par{}\pst@object{psovalbox}}
-\def\psovalbox@i{\pst@makebox{\psovalbox@ii{}}}
-\def\psovalbox@ii#1{%
- \begingroup
- \pst@useboxpar
- \pst@dimd=.707\pslinewidth\advance\pst@dimd by 1.414\psframesep
- \pst@dimg=\ht\pst@hbox\advance\pst@dimg\dp\pst@hbox
- \pst@dimb=.707\pst@dimg\advance\pst@dimb\pst@dimd
- \pst@dima=.707\wd\pst@hbox\advance\pst@dima\pst@dimd
- \setbox\pst@hbox=\hbox{#1\psovalbox@iii\box\pst@hbox}%
- \ifpsboxsep
- \setbox\pst@hbox\hbox to 2\pst@dima{\hss\unhbox\pst@hbox\hss}%
- \advance\pst@dimb-.5\pst@dimg
- \pst@dimg\ht\pst@hbox
- \advance\pst@dimg\pst@dimb
- \ht\pst@hbox=\pst@dimb
- \pst@dimg=\dp\pst@hbox
- \advance\pst@dimg\pst@dimb
- \dp\pst@hbox=\pst@dimb
- \fi
- \leavevmode\box\pst@hbox
- \endgroup}
-\def\psovalbox@iii{%
- \begin@ClosedObj
- \addto@pscode{%
- 0 360
- \pst@number\pst@dima \pst@number\pst@dimb
- \pst@number{\wd\pst@hbox}2 div
- \pst@number\pst@dimg 2 div \pst@number{\dp\pst@hbox}sub
- \tx@Ellipse
- closepath}%
- \def\pst@linetype{2}%
- \end@ClosedObj}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Circles, discs and ellipses\label{Circles}}
-%
-%
-% \begin{macro}{\psset@arcsep,\psk@arcsepA,\psk@arcsepB}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@Arc}
-% Syntax:
-% \begin{LVerbatim}
-% <angle> {<arrow>} {<add/sub>} ArcArrow <angle>
-% \end{LVerbatim}
-% "r"=radius and "c"=57.2957/"r" should also be defined.
-% \begin{macrocode}
-\pst@def{ArcArrow}<%
- /d ED % add/sub
- /b ED % arrow procedure
- /a 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
- c mul
- /e ED % /e equals angle to adjust for arrow length.
- pop pop pop
- r a e d \tx@PtoC % `a e d' is end angle for arrow.
- y add exch x add exch
- r a \tx@PtoC % Now arrow end coor and begin coor are on stack.
- y add exch x add exch
- b pop pop pop pop % Draw arrow, and discard coordinates.
- a e d % End angle of arrow.
- CLW 8 div c mul neg d> % Adjust angle to give a little overlap.
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psarc}
-% \begin{macrocode}
-\def\psarc{\def\pst@par{}\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 }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psarcn}
-% \begin{macrocode}
-\def\psarcn{\def\pst@par{}\pst@object{psarcn}}
-\def\psarcn@i{\def\psarc@type{1}\psarc@i}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pscircle}
-% \begin{macrocode}
-\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}}%
- \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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\qdisk}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pswedge}
-% \begin{macrocode}
-\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{%
- \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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{Ellipse}
-% Syntax:
-% \begin{Ex}
-% <angle1 angle2 x-radius y-radius x-origin y-origin> "Ellipse"
-% \end{Ex}
-% \begin{macrocode}
-\pst@def{Ellipse}<%
- /mtrx CM def
- T
- scale
- 0 0 1 5 3 roll arc
- mtrx setmatrix>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\psellipse}
-% \begin{macrocode}
-\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 3 1 roll
- sub 3 1 roll sub exch
- \fi
- \pst@tempa
- \tx@Ellipse
- closepath}%
- \def\pst@linetype{2}%
- \end@ClosedObj}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Repetition}
-%
-% \begin{macro}{\multirput}
-% \begin{macrocode}
-\def\multirput{%
- \begingroup\pst@getref{\pst@getrputrot\multirput@i}}
-\def\multirput@i(#1){\@ifnextchar(%
- {\multirput@ii(#1)}{\multirput@ii(0,0)(#1)}}
-\def\multirput@ii(#1,#2)(#3,#4)#5{%
- \pst@makebox{\multirput@iii(#1,#2)(#3,#4){#5}}}
-\def\multirput@iii(#1,#2)(#3,#4)#5{%
- \pst@makesmall\pst@hbox
- \ifx\pst@rot\@empty\else\pst@rotate\pst@hbox\fi
- \pssetxlength\pst@dima{#1}\pssetylength\pst@dimb{#2}
- \pssetxlength\pst@dimc{#3}\pssetylength\pst@dimd{#4}
- \pst@cntg=#5\relax\pst@cnth=0\relax
- \leavevmode
- \loop\ifnum\pst@cntg>\pst@cnth
- \vbox to \z@{\vss\hbox to \z@{%
- \kern\pst@dima\copy\pst@hbox\hss}\vskip\pst@dimb}%
- \advance\pst@dima by\pst@dimc
- \advance\pst@dimb by\pst@dimd
- \advance\pst@cnth by 1
- \repeat
- \endgroup\ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\multips}
-% \begin{macrocode}
-\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
- \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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Scaling\label{Scaling}}
-%
-% \begin{macro}{\scalebox}
-% \begin{macrocode}
-\def\scalebox#1{%
- \begingroup
- \pst@getscale{#1}\pst@tempa
- \pst@makebox{\@scalebox}}
-\def\@scalebox{%
- \leavevmode
- \ifx\pst@tempa\@empty
- \box\pst@hbox
- \else
- \hbox{%
- \ht\pst@hbox=\pst@temph\ht\pst@hbox%
- \dp\pst@hbox=\pst@temph\dp\pst@hbox%
- \pst@dima=\pst@tempg\wd\pst@hbox%
- \ifdim\pst@dima<\z@\kern-\pst@dima\fi
- \pst@Verb{CP CP T \pst@tempa \tx@NET}%
- \hbox to \z@{\box\pst@hbox\hss}%
- \pst@Verb{%
- CP CP T
- 1 \pst@tempg\space div 1 \pst@temph\space div scale
- \tx@NET}%
- \ifdim\pst@dima>\z@\kern\pst@dima\fi}%
- \fi
- \endgroup}
-\pslongbox{Scalebox}{\scalebox}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\scaleboxto}
-% \begin{macrocode}
-\def\scaleboxto(#1,#2){%
- \begingroup
- \pssetlength\pst@dima{#1}%
- \pssetlength\pst@dimb{#2}%
- \pst@makebox{\@scaleboxto\@scalebox}}
-\def\@scaleboxto{%
- \ifdim\pst@dima=\z@\else
- \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempg
- \fi
- \ifdim\pst@dimb=\z@
- \let\pst@temph\pst@tempg
- \else
- \pst@dimc=\ht\pst@hbox\advance\pst@dimc\dp\pst@hbox
- \pst@divide{\pst@dimb}{\pst@dimc}\pst@temph
- \ifdim\pst@dima=\z@\let\pst@tempg\pst@temph\fi
- \fi
- \edef\pst@tempa{\pst@tempg\space\pst@temph\space scale }%
- \ifdim\pst@dima=\z@
- \ifdim\pst@dimb=\z@
- \@pstrickserr{%
- \string\scaleboxto\space dimensions cannot both be zero}\@ehpa
- \def\pst@tempa{}%
- \fi\fi}
-\pslongbox{Scaleboxto}{\scaleboxto}
-% \end{macrocode}
-% \end{macro}
-%
-% \section{Rotation: The simple version\label{Rotation:simple}}
-%
-% \begin{macro}{\tx@Rot}
-% \begin{macrocode}
-\pst@def{Rot}<\pstrotate>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\rotateleft,\rotateright,\rotatedown}
-% These are pretty standard, except that they do not use "gsave" and
-% "grestore".
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{{\tt\Backslash rput} and company}
-%
-% \n\rput\ and similar commands are divided into fours steps:
-% \begin{enumerate}
-% \item The four arguments are collected:
-% \begin{enumerate}
-% \item The reference point argument is stored in \n\refpoint@x\ and
-% \n\refpoint@y.
-% \item The rotation angle is store in \n\pst@rot.
-% \item The translation coordinate is passed to the command that is returned
-% to after the box is made.
-% \item The RH-box is assigned to the register \n\pst@hbox.
-% \end{enumerate}
-% \item The box is made zero-dimension and positioned at the reference point
-% by \n\pst@makesmall.
-% \item The box is rotated by \n\pst@rotate.
-% \item The box is translated by \n\psput@.
-% \end{enumerate}
-%
-% \subsection{Reference point}
-%
-% \begin{macro}{\pst@getref}
-% \begin{macrocode}
-\def\pst@getref#1{%
- \@ifnextchar[%
- {\def\refpoint@x{.5}\def\refpoint@y{.5}\pst@@getref{#1}}%
- {\let\refpoint@x\relax#1}}
-\def\pst@@getref#1[#2]{%
- \pst@expandafter\pst@@@getref{#2}\@empty,,\@nil#1}
-\def\pst@@@getref#1#2,#3,#4\@nil{%
- \ifx\@empty#3\@empty
- \@nameuse{getref@#1}\@nameuse{getref@#2}%
- \else
- \pst@checknum{#1#2}\refpoint@x
- \pst@checknum{#3}\refpoint@y
- \fi}
-\def\getref@t{\def\refpoint@y{1}}
-\def\getref@b{\def\refpoint@y{0}}
-\def\getref@B{\let\refpoint@y\relax}
-\def\getref@l{\def\refpoint@x{0}}
-\def\getref@r{\def\refpoint@x{1}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@makesmall}
-% \begin{macrocode}
-\def\pst@makesmall#1{%
- \ifx\refpoint@x\relax
- \setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}%
- \else
- \pst@@makesmall{#1}%
- \fi}
-\def\pst@@makesmall#1{%
- \pst@dimh=\refpoint@x\wd#1%
- \ifx\refpoint@y\relax
- \pst@dimg=\dp#1%
- \else
- \pst@dimg=\refpoint@y\ht#1%
- \advance\pst@dimg\refpoint@y\dp#1%
- \fi
- \setbox#1=\hbox to\z@{%
- \hskip-\pst@dimh\vbox to\z@{\vss\box#1\vskip-\pst@dimg}\hss}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Rotation}
-%
-% \begin{macro}{\pst@getrputrot}
-% \begin{macrocode}
-\def\pst@getrputrot#1{%
- \@ifnextchar(%
- {\def\pst@rot{}#1}%
- {\pst@getrot{\@ifnextchar({#1}{#1(0,0)}}}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getrot}
-% \begin{macrocode}
-\def\pst@getrot#1#2{%
- \pst@expandafter{\@ifnextchar*{\pst@@@getrot}{\pst@@getrot}}{#2}\@nil
- \ifx\pst@rotlist\@empty\else
- \edef\pst@rotlist{\pst@rotlist \pst@rot add }%
- \fi
- #1}
-\def\pst@@getrot#1\@nil{%
- \def\next##1@#1=##2@##3\@nil{%
- \ifx\relax##2%
- \pst@getangle{#1}\pst@rot
- \else
- \def\pst@rot{##2}%
- \fi}%
- \expandafter\next\pst@rottable @#1=\relax @\@nil}
-\def\pst@@@getrot#1#2\@nil{%
- \pst@@getrot#2\@nil
- \edef\pst@rot{\pst@rotlist neg \ifx\pst@rot\@empty\else\pst@rot add \fi}}%
-\def\pst@rotlist{0 }
-\def\pst@rot{}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@rottable}
-% The trailing spaces must be included, except when empty.
-% \begin{macrocode}
-\def\pst@rottable{%
- @0=%
- @U=%
- @L=90 %
- @D=180 %
- @R=-90 %
- @N=\pst@rotlist neg %
- @W=\pst@rotlist neg 90 add %
- @S=\pst@rotlist neg 180 add %
- @E=\pst@rotlist neg 90 sub }
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@rotate}
-% The last argument should be the register for a zero-dimensional box that is
-% to be rotated. By first putting the box in a zero-dimension box centered at
-% the reference point of the original box, we do not have to use "gsave" and
-% "grestore".
-% \begin{macrocode}
-\def\pst@rotate#1{%
- \setbox#1=\hbox{%
- \pst@Verb{\pst@rot \tx@Rot}%
- \box#1%
- \pst@Verb{\pst@rot neg \tx@Rot}}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \subsection{Translation}
-%
-% \begin{macro}{\psput@cartesian,\psput@special}
-% \n\psput@\ is defined by the \n\NormalCoor\ and \n\SpecialCoor\ commands to
-% invoke either "\psput@cartesian" or "\psput@special".
-%
-% "\psput@cartesian" is for Cartesian coordinates only. \TeX\ does the
-% translation.
-%
-% "\psput@special" works for any coordinates. PostScript does the translation.
-% "/lmtrx" is used to store a stack of transformation for nested translations.
-% \begin{macrocode}
-\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}}}
-\pst@def{PutCoor}<%
- gsave
- CP T
- CM
- \tx@STV
- exch exec
- moveto
- setmatrix
- CP
- grestore>
-\pst@def{PutBegin}<%
- /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
- CP 4 2 roll T moveto>
-\pst@def{PutEnd}<CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto>
-% \end{macrocode}
-% \end{macro}
-%
-% \subsection{The real thing}
-%
-% \begin{macro}{\begin@psput,\end@psput}
-% \begin{macrocode}
-\def\begin@psput#1{\begingroup\pst@killglue\leavevmode\pst@ifstar{#1}}%
-\def\end@psput#1(#2){%
- \pst@makebox{%
- \if@star
- \setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}%
- \fi
- #1(#2)%
- \endgroup
- \ignorespaces}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\rput}
-% \begin{macrocode}
-\def\rput{\begin@psput{\pst@getref{\pst@getrputrot{\end@psput\rput@i}}}}
-\def\rput@i(#1){%
- \pst@makesmall\pst@hbox
- \ifx\pst@rot\@empty\else\pst@rotate\pst@hbox\fi
- \psput@{#1}\pst@hbox}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\cput}
-% The first argument of "\cput@iii" is a hook used by node commands.
-% \begin{macrocode}
-\def\cput{\def\pst@par{}\pst@object{cput}}
-\def\cput@i{\begingroup\pst@killglue\leavevmode\pst@getrputrot\cput@ii}
-\def\cput@ii(#1){\pst@makebox{\cput@iii{}(#1)}}
-\def\cput@iii#1(#2){%
- \setbox\pst@hbox=\hbox{\psboxsepfalse\pscirclebox@ii{#1}}%
- \let\refpoint@x\relax
- \rput@i(#2)%
- \endgroup
- \ignorespaces}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{{\tt\Backslash uput} and company}
-%
-% The difference between "\uput" and \n\rput\ is that "\rput"'s reference
-% point is replaced by labelsep and reference angle arguments.
-%
-% \begin{macro}{\psset@labelsep,\pslabelsep}
-% \begin{macrocode}
-\newdimen\pslabelsep
-\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}}
-\psset@labelsep{5pt}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getrefangle}
-% \begin{macrocode}
-\def\pst@getrefangle#1\@nil{%
- \def\next##1@#1=##2"##3@##4\@nil{%
- \ifx\relax##2%
- \pst@getangle{#1}\pst@refangle
- \def\pst@uputref{}%
- \else
- \edef\pst@refangle{##2}%
- \edef\pst@uputref{##3}%
- \fi}%
- \expandafter\next\pst@refangletable @#1=\relax"@\@nil}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@refangletable}
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \begin{macro}{\uput}
-% \begin{macrocode}
-\def\uput{\begin@psput{\@ifnextchar[{\uput@ii}{\uput@i}}}
-\def\uput@i#1{\pssetlength\pslabelsep{#1}\uput@ii}
-\def\uput@ii[#1]{%
- \pst@expandafter\pst@getrefangle{#1}\@nil
- \pst@getrputrot{\end@psput\uput@iii}}
-\def\uput@iii(#1){%
- \ifx\pst@uputref\@empty
- \uput@iv\tx@UUput
- \else
- \ifx\pst@rot\@empty
- \expandafter\uput@v\pst@uputref
- \else
- \uput@iv\tx@UUput
- \fi
- \fi
- \psput@{#1}\pst@hbox}
-\def\uput@iv#1{%
- \edef\pst@coor{%
- \pst@number\pslabelsep
- \pst@number{\wd\pst@hbox}%
- \pst@number{\ht\pst@hbox}%
- \pst@number{\dp\pst@hbox}%
- \pst@refangle\space \ifx\pst@rot\@empty\else\pst@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\pst@rot\@empty\else\pst@rotate\pst@hbox\fi}
-\def\uput@v#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}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\tx@Uput}
-% I forget how this works, but it does.
-% \begin{macrocode}
-\pst@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>
-\pst@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 \tx@PtoC h1 add exch w1 add exch>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@getlabelsep,\Rput}
-% "\Rput" is an obsolete version of "\uput".
-% \begin{macrocode}
-\def\pst@getlabelsep#1{%
- \@ifnextchar[%
- {\def\refpoint@x{.5}\def\refpoint@y{.5}\pst@@getref{#1}}%
- {\pst@@getlabelsep{#1}}}
-\def\pst@@getlabelsep#1#2{\pssetlength\pslabelsep{#2}\pst@getref{#1}}
-\def\Rput{%
- \begin@psput{\pst@getlabelsep{\pst@getrputrot{\end@psput{\Rput@i\rput@i}}}}}
-\def\Rput@i{%
- \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}}%
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Pictures\label{Pictures}}
-%
-% \begin{macro}{\pspicture}
-% \begin{macrocode}
-\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}%
- \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}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Overlays\label{Overlays}}
-%
-% Overlays work by translating invisible material. They take advantage of the
-% fact that PostScript is running parallel to \TeX, and so we can redefine the
-% value of some PostScript variables in order to get a different overlay
-% printed each time we output a box containing overlay commands (even though
-% the box has already been typeset by \TeX).
-%
-% \begin{macro}{BeginOverlay}
-% "BeginOL" is a PostScript procedure, with syntax:
-% \begin{LVerbatim}
-% (<string>) BeginOL
-% \end{LVerbatim}
-% If the string is not "(all)" and does not match "TheOL", then the output is
-% made invisible by translating it over by the coffee pot (actually, by a
-% distance "OLUnit"). Otherwise, it is made visible by translating it back to
-% the page.
-%
-% Rather than translating the page, we could define a small clipping path off
-% the page, but that would be more likely to be messed up by someone's
-% "initclip" (e.g., by PSTricks' "initclip"!).
-% \begin{macrocode}
-\pst@def{BeginOL}<%
- dup (all) eq exch TheOL eq or
- { IfVisible not
- { CP OLUnit T moveto
- /IfVisible true def }
- if }
- { IfVisible
- { CP OLUnit \tx@NET moveto
- /IfVisible false def }
- if }
- ifelse>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{InitOL}
-% This figures out how far in the current units used by the driver is 50
-% inches up and to the right. This works even though drivers use unusual
-% coordinate systems (even "dvips"). This macro also defines "BOL" to be
-% "BeginOL" and sets the default value of "IfVisible".
-% \begin{macrocode}
-\pst@dimg=40in
-\edef\pst@OLunit{\pst@number\pst@dimg}
-\pst@def{InitOL}<%
- /OLUnit [ gsave CM \tx@STV \pst@OLunit
- dup moveto setmatrix CP grestore ] cvx def
- /BOL { \tx@BeginOL } def /IfVisible true def>
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@initoverlay}
-% This defines "TheOL" to be "#1". It must be inserted just before printing
-% overlay "#1".
-% \begin{macrocode}
-\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\pst@overlay,\pst@endoverlay}
-% "\pst@overlay" just calls "BeginOverlay".
-% \begin{macrocode}
-\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}
-% \end{macrocode}
-% \end{macro}
-%
-% \begin{macro}{\overlaybox,\endoverlaybox,\putoverlaybox}
-% "\pst@initoverlay", "\pst@overlay", and "\pst@endoverlay" are the overlays
-% primitives. An interface must be set up that guarantees that "\pst@overlay"
-% and "\pst@endoverlay" are only used inside a box, and that
-% "\pst@initoverlay" is inserted each type the box is printed. Here is one
-% such interface (see "seminar.sty" for an interface for slides). The extra
-% "\begingroup" and "\endgroup" assure that each "\pst@endoverlay" is executed
-% within the box.
-% \begin{macrocode}
-\newbox\theoverlaybox
-\def\overlaybox{%
- \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}}
-\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}}
-% \end{macrocode}
-% \end{macro}
-%
-%
-% \section{Configuration file -- revisited\label{Config:revisited}}
-%
-% \begin{macrocode}
-\ifx\pstcustomize\relax \input pstricks.con \fi
-% \end{macrocode}
-%
-% \begin{macrocode}
-\pst@ATH<end>
-\catcode`\@=\PstAtCode\relax
-\endinput
-% \end{macrocode}
-%
-% \endinput
-%
-%% END: pstricks.doc
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/tvz-code.sty b/Master/texmf-dist/doc/generic/pstricks/code/tvz-code.sty
deleted file mode 100644
index 5bf1b46de27..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/tvz-code.sty
+++ /dev/null
@@ -1,271 +0,0 @@
-%% BEGIN tvz-code.sty
-\input tvz-hax.sty
-\input doc.sty % Tested with v1.7k
-\input art11.sty
-
-%%%%%%%%%%%%%%%%%%% PAGE PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Paragraphs are marked by space rather than indentation:
-\parindent 0pt
-\parskip 4pt plus 1pt minus 1pt
-
-% Textwidth just wide enough for 72 characters of code.
-\setbox\@tempboxa=\hbox{\small\tt f}
-\textwidth 72\wd\@tempboxa
-\oddsidemargin\paperwidth\relax
-\advance\oddsidemargin -\textwidth
-\divide\oddsidemargin 2
-\advance\oddsidemargin -1in
-\evensidemargin\oddsidemargin
-
-\if@twoside
- \advance\oddsidemargin .3in
- \advance\evensidemargin -.3in
-\fi
-
-% No headers, 1in top margin
-\topmargin 0pt
-\headheight 0pt
-\headsep 0pt
-
-% Total bottom margin 1in, text height 9in
-\textheight 9in
-\footskip .625in
-
-% Now adjust for different paper size:
-\@tempdima=\paperheight
-\advance\@tempdima-11in
-\divide\@tempdima 2
-\advance\topmargin \@tempdima
-
-% Marginal notes always on left.
-\marginparwidth 3.5cm
-\marginparsep .5cm
-\reversemarginpar
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%% SHORT META %%%%%%%%%%%%%%%%%%%%%%%%
-
-% Works in verbatim environments, unless specially designed.
-\begingroup
- \catcode`\<=\active
- \gdef\ShortMeta{%
- \catcode`\<=\active
- \def<##1>{{\rm\it ##1\/}}}
-\endgroup
-\def\DeleteShortMeta{\catcode`\<=12\relax}
-
-\def\macrocode{%
- \macro@code
- \DeleteShortMeta
- \frenchspacing
- \@vobeyspaces
- \xmacro@code}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%% VERBATIM %%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Use fancybox.sty's LVerbatim environment. Each line should contain
-% percent plus three spaces (or other char), including blank lines. E.g.,
-% \begin{LVerbatim}
-% foo
-% bar
-% \end{LVerbatim}
-
-\def\EveryVerbatimLine#1#2#3#4{}
-{\catcode`\%=12 \catcode`\ =\active\relax\global\EndVerbatimTokens{% }}
-\AltGetVerbatim
-
-\def\MacroFont{\small\tt}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%% INDEXING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Things are faster without \MakeIndex
-
-\def\MakeIndex{\makeindex\EnableCrossrefs}
-\DisableCrossrefs
-
-% Use \codelabel[int]{foo} to label last line of code plus int.
-% E.g., to label first and then last line of some code:
-% \codelabel[1]{foo}
-% \begin{macrocode}
-% foo
-% bar
-% \end{macrocode}
-% \codelabel{foo}
-
-\def\codelabel{\@ifnextchar[{\@codelabel}{\@codelabel[0]}}
-\def\@codelabel[#1]#2{%
- \@bsphack
- \begingroup
- \advance\c@CodelineNo #1
- \def\@currentlabel{\the\c@CodelineNo}%
- \label{#2}%
- \endgroup
- \@esphack}
-
-% Definitions in code are indexed by page number, but other occurences
-% are indexed by the line of code.
-
-\CodelineIndex
-\def\SpecialMainPageIndex#1{%
- {\let\special@index\index\SpecialMainIndex{#1}}}
-\renewcommand{\theCodelineNo}{{\rm\tiny\arabic{CodelineNo}}}
-
-% Index numbers for main definitions are set in bold rather than underlined.
-
-\def\main#1{{\bf #1}}
-
-% two column index
-
-\setcounter{IndexColumns}{2}
-
-% Customize index prologue:
-
-\def\index@prologue{%
- \section*{Index}\markboth{INDEX}{INDEX}%
- \addcontentsline{toc}{section}{Index}%
- The {\bf bold} numbers denote the pages where the entries are defined,
- and all other numbers indicate the {\em lines of code} where
- the entries are used.}
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%%%% MACRO %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% A change to the macro environment; prints macro names within the margins
-% of the text, instead of as marginal notes. Use one \macro command,
-% with comma separated macro names.
-
-\newif\iffirst@macroname
-\newif\ifnestedmacro
-
-% D.G. modification begin - Apr. 30, 2003
-\newcount\macro@level
-\macro@level=\z@
-% D.G. modification end
-
-\def\macro{%
- \ifnum\macro@level=\z@
- \def\next{\MakePrivateLetters \m@cro@}%
- \else
- \def\next{\@latexerr{Nested \string\begin{macro}}\@eha
- \endgroup\end{macro}\macro@level=\z@\begin{macro}}
- \fi
- \next}
-\def\m@cro@#1{%
- \first@macronametrue
- \m@@cro@@#1,\@nil,}
-\def\m@@cro@@#1,{%
- \def\@tempa{#1}\def\@tempb{\@nil}%
- \ifx\@tempa\@tempb
- \let\next\finishm@@cro@@
- \else
- {\advance\c@CodelineNo\@ne\SpecialMainPageIndex{#1}\nobreak}%
- \DoNotIndex{#1}%
- \iffirst@macroname
- \edef\saved@macronames{\string#1}%
- \first@macronamefalse
- \else
- \def\comma{\noexpand\comma}%
- \edef\saved@macronames{\saved@macronames\comma\string#1}%
- \fi
- \let\next\m@@cro@@
- \fi
- \next}
-\def\finishm@@cro@@{%
- \advance\macro@level\@ne
- \def\comma{{\rm, }}%
- \ListMacroNames{\saved@macronames}}
-
-\let\endmacro\relax
-\def\ListMacroNames{%
- \@startsection{subsubsection}{3}{\z@}{-2.25ex plus -.5ex minus-.2ex}%
- {1.3ex plus.2ex}{\csname reset@font\endcsname\large\tt}*}
-\MacroIndent 0pt
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%% DoNot Index %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\DoNotIndex{\ ,\!,\[,\\,\],\^,\`,\{,\},\~}
-\DoNotIndex{\@warning,\active}
-\DoNotIndex{\begingroup,\catcode,\char,\csname,\def,\do}
-\DoNotIndex{\docdate,\dospecials,\edef,\else,\endcsname,\endgroup}
-\DoNotIndex{\expandafter,\fi,\filedate,\fileversion}
-\DoNotIndex{\gdef,\if,\ifcat}
-\DoNotIndex{\ifx,\immediate,\lccode,\let}
-\DoNotIndex{\lowercase,\next,\noexpand}
-\DoNotIndex{\relax,\space,\the}
-\DoNotIndex{\toks@,\typeout,\write}
-\DoNotIndex{\@M,\@arabic,\@author,\@auxout,\@bsphack,\@car,\@date}
-\DoNotIndex{\@dblarg,\@dblfloat,\@eha,\@empty,\@esphack,\@evenfoot}
-\DoNotIndex{\@evenhead,\@float,\@gobble,\@gobbletwo,\@gtempa,\@ifnextchar}
-\DoNotIndex{\@ifundefined,\@ixpt,\@latexerr,\@listI,\@listi,\@listii}
-\DoNotIndex{\@listiii,\@listiv,\@listv,\@listvi,\@makefnmark,\@mkboth}
-\DoNotIndex{\@namedef,\@nameuse,\@mne,\@nil,\@normalsize,\@oddfoot}
-\DoNotIndex{\@oddhead,\@tempa,\@tempb,\@tempc,\@tempd}
-\DoNotIndex{\@tempdima,\@testfalse,\@testtrue,\test@member}
-\DoNotIndex{\@thanks,\@thefnmark,\@title}
-\DoNotIndex{\@topnum,\@viiipt,\@viipt,\@vipt,\@vpt,\@xiipt}
-\DoNotIndex{\@xipt,\@xpt,\@xivpt,\@xviipt,\@xxpt,\@xxvpt}
-\DoNotIndex{\addcontentsline}
-\DoNotIndex{\advance,\aftergroup,\baselinestretch,\begin}
-\DoNotIndex{\belowdisplayshortskip,\belowdisplayskip,\bf,\bgroup}
-\DoNotIndex{\box,\c@@page,\c@page,\c@secnumdepth,\clearpage,\columnsep}
-\DoNotIndex{\columnwidth,\copy,\dimen@,\dimen@i,\dimen@ii,\divide}
-\DoNotIndex{\dp,\ds@article,\ds@notes,\ds@notesonly}
-\DoNotIndex{\ds@slidesonly,\egrou,\end,\end@dblfoloat,\end@float}
-\DoNotIndex{\endinput,\fnsymbol,\footheight,\footnotesep,\footskip}
-\DoNotIndex{\global,\globaldefs,\hbox,\headheight,\headsep,\hfil}
-\DoNotIndex{\hrule,\hskip,\hss,\ht,\Huge,\huge}
-\DoNotIndex{\if@filesw,\if@test,\if@twocolumn,\if@twoside}
-\DoNotIndex{\ifcase,\ifdim,\ifvmode,\ignorespaces}
-\DoNotIndex{\input,\interlinepenalty,\itemsep,\ixpt,\label}
-\DoNotIndex{\labelsep,\labelwidth,\LARGE,\large,\Large}
-\DoNotIndex{\leavevmode,\leftmargin,\leftmargini,\leftmarginii}
-\DoNotIndex{\leftmarginiii,\leftmarginiv,\leftmarginv}
-\DoNotIndex{\leftmarginvi,\leftmark,\leftskip,\lineskip}
-\DoNotIndex{\magstep,\marginparsep,\marginparwidth,\markboth}
-\DoNotIndex{\markright,\medbreak,\multiply,\newbox,\newcount}
-\DoNotIndex{\newcounter,\newdimen,\newif,\newlabel,\newpage}
-\DoNotIndex{\newtoks,\nobreak,\nointerlineskip,\normallineskip}
-\DoNotIndex{\normalsize,\null,\number,\numberline,\oddsidemargin}
-\DoNotIndex{\offinterlineskip,\or,\par,\parbox,\parskip,\partopsep}
-\DoNotIndex{\prevdepth,\protect,\ref,\refstepcounter,\rightmrk}
-\DoNotIndex{\rm,\scriptsize,\section,\sectionmark,\setbox,\setcounter}
-\DoNotIndex{\sl,\small,\stepcounter,\string,\textheight,\textwidth}
-\DoNotIndex{\thefootnote,\thepage,\thesection,\thesubsection}
-\DoNotIndex{\thispagestyle,\tiny,\topmargin,\topsep,\uppercase}
-\DoNotIndex{\vbox,\vfill,\viiipt,\viipt,\vipt,\vpt,\vskip,\vss}
-\DoNotIndex{\wd,\xcommentloaded@,\xdef,\xiipt,\xipt,\xivpt,\xpt}
-\DoNotIndex{\xviipt,\xxpt,\xxvpt,\z@}
-\DoNotIndex{\abovedisplayskip,\abovedisplayshortskip,\@currentlabel}
-\DoNotIndex{\@dottedtocline,\@ne\@setsize,\@starttoc,\@tempboxa,\@}
-\DoNotIndex{\arraystretch,\centerline,\egroup,\end@dblfloat}
-\DoNotIndex{\evensidemargin,\footnotesize,\ifnum,\parindent,\parsep}
-\DoNotIndex{\rightmark,\@afterindenttrue,\@ne,\if@specialpage.\long}
-\DoNotIndex{\fboxrule,\fboxsep,\@for,\vfil}
-\DoNotIndex{\@@fortmp,\@@tempa,\@@tempb,\@ehd,\@for,\@fortmp,\@m}
-\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue,\@nnil,\@spaces}
-\DoNotIndex{\@specialstyle,\@temptokena,\@twosidefalse,\@twosidetrue}
-\DoNotIndex{\@whilenum,\alph,\arabic,\count@,\errhelp,\errmessage}
-\DoNotIndex{\fbox,\index,\minipage,\newcommand,\overfullrule}
-\DoNotIndex{\pagestyle,\raggedright,\ref@stepcounter,renewcommand}
-\DoNotIndex{\semcolor@loaded,today,\@tempcnta,\@tempcntb,\trivlist,\t,\p}
-\DoNotIndex{\today,\item,\@colht,\@currenvir,\@thefoot,\@thehead}
-\DoNotIndex{\@totalleftmargin,\allowbreak,\@captype,\@footnotetext}
-\DoNotIndex{\@listdepth,\@minipagefalse,\@minipagetrue,\@mpfn,\@mpfootins}
-\DoNotIndex{\endtrivlist,\everypar,\hsize,\ifvoid,\lastskip}
-\DoNotIndex{\linewidth,\skip,\thempfn,\thempfootnote,\topskip,\unvbox}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-
-\endinput
-%% END tvz-code.sty
diff --git a/Master/texmf-dist/doc/generic/pstricks/code/tvz-hax.sty b/Master/texmf-dist/doc/generic/pstricks/code/tvz-hax.sty
deleted file mode 100644
index 90d74d4d004..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/code/tvz-hax.sty
+++ /dev/null
@@ -1,172 +0,0 @@
-%% BEGIN tvz-hax.sty
-%% 93/03/03
-%% These are some lousy hacks for typesetting the code
-%% and User's Guide in the Seminar and PSTricks packages.
-%%
-%% Tim Van Zandt tvz@Princeton.EDU
-
-\def\ds@a4{\def\paperwidth{210mm}\def\paperheight{297mm}}
-
-\input article.sty
-\input fancybox.sty % Version 0.93 or later.
-
-\def\arraystretch{1.2}
-
-\hfuzz 1pt
-
-\def\twosideclearpage{%
- \clearpage
- \if@twoside
- \ifodd\c@page\else
- \thispagestyle{empty}%
- \null\leavevmode
- \clearpage
- \fi
- \fi}
-
-% Just in case I'm using AmS-LaTeX.
-\def\makeatother{\catcode`\@=12\relax}
-
-%%%%%%%%%%%%%%%%% LOGOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-\def\AmS{{\protect\the\textfont\tw@
- A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
-
-\def\b@LaTeX{%
- \begingroup
- \csname reset@font\endcsname
- \rm\bf
- L\kern-.32em
- \raise.36ex\hbox{%
- \ifx\@currsize\Huge\LARGE\else
- \ifx\@currsize\huge\Large\else
- \ifx\@currsize\LARGE\large\else
- \ifx\@currsize\Large\normalsize\else
- \ifx\@currsize\large\small\else
- \ifx\@currsize\normalsize\footnotesize\else
- \ifx\@currsize\small\scriptsize\else
- \ifx\@currsize\footnotesize\scriptscriptsize
- \fi\fi\fi\fi\fi\fi\fi\fi
- \bf A}%
- \kern-.15em
- T\kern-.1667em
- \lower.7ex\hbox{E}\kern-.125em
- X%
- \endgroup}
-\def\bLaTeX{\b@LaTeX}
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%% PAGE STYLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Headings:
-\def\ps@docheadings{%
- \let\@mkboth\markboth
- \def\@oddhead{}%
- \let\@evenhead\@oddhead%
- \def\@oddfoot{%
- \small\sf
- \rightmark
- \hfil
- \thepage}%
- \def\@evenfoot{%
- \small\sf
- \thepage
- \hfil
- \theheadertitle}%
- \def\sectionmark##1{\markright {##1}}}%
-\pagestyle{docheadings}
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%% Table of Contents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% Tight up spacing in TOC:
-%%
-\newskip\tempskip
-\def\TOCshrink{.5}
-\def\TableOfContents{%
- \begin{quote}
- \begin{center} \Large\bf Contents \end{center}
- \def\numberline##1{\hbox to 0pt{\hss##1\hskip 1em}}%
- \let\oldaddvspace\addvspace
- \def\addvspace##1{%
- \tempskip##1\relax
- \oldaddvspace{\TOCshrink\tempskip}}
- \@starttoc{toc}%
- \end{quote}}
-\def\tableofcontents{%
- \clearpage
- \markright{Table of contents}%
- \TableOfContents
- \clearpage}
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%% dates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% This expands the date, as defined in \filedate.
-%%
-\def\expanddate#1/#2/#3/{%
- \number#3{}
- \month=#2
- \ifcase\month\or
- January \or February \or March \or April \or May \or June \or
- July \or August \or September \or October \or November \or December
- \fi
- 19#1}
-\def\thefiledate{\expandafter\expanddate\filedate/}
-\date{\thefiledate}
-%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%%%%%%%%%%%%% code and examples %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%
-%% This is an environment for putting samples of code. It is like
-%% a variant of \begin{quote}\tt ... \end{quote}. It is NOT verbatim.
-%%
-\def\NotNested{\def\begin##1{%
- \@latexerr{Bad nesting of environments.
- Perhaps missing \end{\@currenvir}}\@eha
- \end{\@currenvir}%
- \begin{##1}}}
-\def\endEx{\endlist}
-\def\Ex{%
- \NotNested
- \list{}{}\item[]%
- \if@minipage\else\vskip\parskip\fi
- \leftskip\@totalleftmargin
- \rightskip\z@
- \parindent\z@
- \parskip\z@
- \parfillskip\@flushglue
- \hfuzz 1pt
- \@@par
- \global\@inlabelfalse}
-\def\endEx{\endlist}
-%%
-%% Various things to make it easier to write code and examples:
-%%
-\begingroup
- \catcode`\{=12 \catcode`\}=12
- \catcode`\(=1 \catcode`\)=2
- \catcode`\+=0 \catcode`\\=12
- +gdef+|(\) % \| = character \
- +gdef+{({) % \{ = character {
- +gdef+}(}) % \} = character }
-+endgroup
-\def\Backslash{\protect\|}
-%%
-%% Define some functional font commands:
-%%
-\def\MainFont{\tt} % For macro definitions.
-\def\UsageFont{\tt} % For in-line macro names.
-\def\InlineFont{\tt} % For other in-line snipets of code.
-\def\DisplayFont{\tt} % For displayed code.
-\def\MetaFont{\sl} % For meta arguments.
-%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\endinput
-%% END tvz-hax.sty
diff --git a/Master/texmf-dist/doc/generic/pstricks/images/flowers.eps b/Master/texmf-dist/doc/generic/pstricks/images/flowers.eps
deleted file mode 100644
index 3f279322a6a..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/images/flowers.eps
+++ /dev/null
@@ -1,269 +0,0 @@
-%!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/Master/texmf-dist/doc/generic/pstricks/images/tiger.eps.gz b/Master/texmf-dist/doc/generic/pstricks/images/tiger.eps.gz
deleted file mode 100644
index c4c690ff227..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/images/tiger.eps.gz
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks/pst-quickref.pdf b/Master/texmf-dist/doc/generic/pstricks/pst-quickref.pdf
new file mode 100644
index 00000000000..24d8d07b21e
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pstricks/pst-quickref.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks/pstnews1-14.pdf b/Master/texmf-dist/doc/generic/pstricks/pstnews1-14.pdf
index b7be1743a84..77e7bbb34fc 100644
--- a/Master/texmf-dist/doc/generic/pstricks/pstnews1-14.pdf
+++ b/Master/texmf-dist/doc/generic/pstricks/pstnews1-14.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.pdf b/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.pdf
index 64df84aacce..eeb545bc825 100644
--- a/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.pdf
+++ b/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.tex b/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.tex
index 9152bf51cc9..f870ba62b38 100644
--- a/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.tex
+++ b/Master/texmf-dist/doc/generic/pstricks/pstnews97-15.tex
@@ -7,7 +7,7 @@
\usepackage{pst-plot}
\SpecialCoor
%\usepackage[ps2pdf,colorlinks,linktocpage]{hyperref}
-\usepackage[vtex,colorlinks,linktocpage]{hyperref}
+\usepackage[colorlinks,linktocpage]{hyperref}
\def\UrlFont{\small\ttfamily}
\makeatletter
\def\verbatim@font{\small\normalfont\ttfamily}
diff --git a/Master/texmf-dist/doc/generic/pstricks/pstricks-bug.tex b/Master/texmf-dist/doc/generic/pstricks/pstricks-bug.tex
new file mode 100644
index 00000000000..b5f9ba2c32c
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pstricks/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/Master/texmf-dist/doc/generic/pstricks/pstricks-doc.pdf b/Master/texmf-dist/doc/generic/pstricks/pstricks-doc.pdf
new file mode 100644
index 00000000000..ac881f0ff01
--- /dev/null
+++ b/Master/texmf-dist/doc/generic/pstricks/pstricks-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks/pstricks.bug b/Master/texmf-dist/doc/generic/pstricks/pstricks.bug
deleted file mode 100644
index 247cd7dee59..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/pstricks.bug
+++ /dev/null
@@ -1,291 +0,0 @@
-%% BEGIN pstricks.bug
-%%
-%% Last modified: March 15, 2000
-%%
-%% This file list some bugs and latebreaking news for PSTricks 97
-%%
-%% This file is edited by Denis Girou <Denis.Girou@idris.fr>
-%% and Sebastian Rahtz <sebastian.rahtz@computing-services.oxford.ac.uk>
-%%
-
-\def\fileversion{97 patch 5}
-\def\filedate{2000/03/15}
-
-\message{ v\fileversion, \filedate}
-
-% PROBLEMS:
-
-% 1. Inside the psmatrix environment, we can't use a parameter for the first
-% column definition if it's not the first row.
-% Reported by <Denis.Girou@idris.fr> in 1995.
-%
-% It's a parsing problem, as the parser wait something like [3mm] after the
-% \\ and not something like [name=B].
-%
-% In fact, this is the "standard" way in which LaTeX work, and this is
-% the same for the "tabular" environment, for instance.
-%
-% Test file:
-%
-% \documentclass{article}
-%
-% \usepackage{pstricks}
-%
-% \begin{document}
-% \begin{psmatrix}
-% [name=A] A \\
-% [name=B] B
-% \end{psmatrix}
-% \end{document}
-%
-% Workaround: add [0pt] after the \\ in these cases:
-%
-% [name=A] A \\[0pt]
-% [name=B] B
-
-% 2. With the `french' package, there is a problem with the special
-% < and > characters used for diagram and tree annotations (they are
-% not correctly typed nor positioned).
-% N.B. This problem doesn't occur with the frenchb sub-option of the
-% `babel' package.
-% Reported by Philippe Esperet <pesperet@compuserve.com> in October 1996.
-%
-% Test file:
-%
-% \documentclass{article}
-%
-% \usepackage{pstricks}
-% \usepackage{pst-node}
-% \usepackage{french}
-%
-% \begin{document}
-% \begin{psmatrix}
-% E&F\\
-% G&H
-% \ncline{1,1}{1,2}^w
-% \ncline{2,1}{2,2}_f
-% \ncline{1,1}{2,1}<u
-% \ncline{1,2}{2,2}>v
-% \end{psmatrix}
-% \end{document}
-%
-% Workaround: put the `psmatrix' environment inside an `english' one
-
-% 3. When arrows are required, this change the way the curves are drawn.
-% In fact, the modification is small, and we must be very careful
-% to see that, but this effect can be clearly demonstrated if we
-% surimpose a grid. And it can be specially ennoying for Bezier curves.
-% Reported by Thomas Siegel <siegel@aix520.informatik.uni-leipzig.de>
-% in September 1997.
-%
-% When an arrow is defined, the point used to draw line or curve is
-% the entry of the arrow, and no more the defined point itself.
-% It is difficult to say if it is a "bug or a feature" (seems rather
-% a bug for me - D.G.)
-%
-% Test file:
-%
-% \documentclass{article}
-%
-% \usepackage{pstricks}
-%
-% \pagestyle{empty}
-%
-% \begin{document}
-%
-% \begin{pspicture}(4,2)
-% \psgrid
-% \psdot*(1,1)
-% \psdot*(3,1)
-% \psset{arrowinset=0}
-% \psbezier[showpoints=true]{->}(1,1)(0,2)(4,2)(3,1)
-% \psbezier[showpoints=true]{<-}(1,1)(0,0)(4,0)(3,1)
-% \end{pspicture}
-%
-% \vspace{1cm}
-% \begin{pspicture}(4,2)
-% \psgrid
-% \psdot*(1,1)
-% \psdot*(3,1)
-% \psbezier[showpoints=true](1,1)(0,2)(4,2)(3,1)
-% \psbezier[showpoints=true](1,1)(0,0)(4,0)(3,1)
-% \end{pspicture}
-% \vspace{2cm}
-%
-% \begin{pspicture}(0,-2)(4,3)
-% \psbezier[arrowsize=2]{->}(1,1)(0,2)(4,2)(3,1)
-% \psbezier[arrowsize=2]{<-}(1,1)(0,0)(4,0)(3,1)
-% \end{pspicture}
-%
-% \begin{pspicture}(0,-2)(4,3)
-% \pscurve[arrowsize=2]{->}(1,1)(0,2)(4,2)(3,1)
-% \pscurve[arrowsize=2]{<-}(1,1)(0,0)(4,0)(3,1)
-% \end{pspicture}
-%
-% \clearpage
-%
-% \makeatletter
-% % Version of the /Arrow macro which keep the coordinates of the point
-% % and doesn't used the entry of the arrow head for that
-% % (default was specially ennoying for \psbezier and when we use large
-% % value of arrowsize or arrowscale parameter)
-% % Work here on the current page
-% \pst@Verb{%
-% /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
-% % DG modification begin - Sep. 25, 1997
-% 0 0 moveto
-% % DG modification end
-% gsave fill grestore } def}
-% \makeatother
-%
-% \begin{pspicture}(4,2)
-% \psgrid
-% \psdot*(1,1)
-% \psdot*(3,1)
-% \psset{arrowinset=0}
-% \psbezier[showpoints=true]{->}(1,1)(0,2)(4,2)(3,1)
-% \psbezier[showpoints=true]{<-}(1,1)(0,0)(4,0)(3,1)
-% \end{pspicture}
-%
-% \begin{pspicture}(0,-2)(4,5)
-% \psbezier[arrowsize=2]{->}(1,1)(0,2)(4,2)(3,1)
-% \psbezier[arrowsize=2]{<-}(1,1)(0,0)(4,0)(3,1)
-% \end{pspicture}
-%
-% \end{document}
-%
-% Workaround: change the definition of the PostScript /Arrow macro,
-% as described above
-
-% 4. The \savedata macro must not be used inside another macro.
-% In such case, the drawing commands, like \dataplot, will show nothing.
-% The problem is related to some catcode changes that can't be made,
-% and in fact a delimiter is not introduced after each point defined,
-% so the curve will have at the end only one point, the last one.
-% It is the reason why nothing is shown later by a macro like \dataplot.
-% Reported by Ivan Maio <maio@pol88a.polito.it> in October 1997.
-%
-% Test file:
-%
-% \documentclass{article}
-%
-% \usepackage{pst-plot}
-%
-% \pagestyle{empty}
-%
-% \begin{document}
-%
-% \begin{pspicture}(-2,-2)(2,2)
-% \savedata{\test}[%
-% -1.09 -0.55
-% -0.4 -0.1
-% 0 1.02
-% 1.28 0.06
-% 1.51 1.21]
-% \dataplot{\test}
-% \psaxes{<->}(0,0)(-2,-2)(2,2)
-% \end{pspicture}
-%
-% \vspace{1cm}
-% \psframebox{%
-% \begin{pspicture}(-2,-2)(2,2)
-% \savedata{\test}[%
-% -1.09 -0.55
-% -0.4 -0.1
-% 0 1.02
-% 1.28 0.06
-% 1.51 1.21]
-% \dataplot{\test}
-% \psaxes{<->}(0,0)(-2,-2)(2,2)
-% \end{pspicture}}
-%
-% \savedata{\test}[%
-% -1.09 -0.55
-% -0.4 -0.1
-% 0 1.02
-% 1.28 0.06
-% 1.51 1.21]
-%
-% \vspace{1cm}
-% \psframebox{%
-% \begin{pspicture}(-2,-2)(2,2)
-% \dataplot{\test}
-% \psaxes{<->}(0,0)(-2,-2)(2,2)
-% \end{pspicture}}
-%
-% \end{document}
-%
-% Workaround: do not use \savedata inside another macro, as shown in the
-% previous example
-
-% 5. Moves (by \rput for instance) of objects defined using nodes have
-% no effect. The position is not affected by the translation required.
-% Reported by Thomas Siegel <siegel@aix520.informatik.uni-leipzig.de>
-% in February 1998.
-%
-% Test file:
-%
-% \documentclass{article}
-%
-% \usepackage{pst-node}
-%
-% \pagestyle{empty}
-%
-% \begin{document}
-%
-% \SpecialCoor
-%
-% \begin{pspicture}(5,5)
-% \qdisk(5,0){2.5mm}
-% \qdisk(0,5){2.5mm}
-% \rput(1,1){\psline(5,0)(0,5)}
-% \end{pspicture}
-% \begin{pspicture}(5,5)
-% \Cnode*(5,0){f1}
-% \Cnode*(0,5){f2}
-% \rput(1,1){\psline(f1)(f2)}
-% \end{pspicture}
-%
-% \end{document}
-%
-% Workaround: none is known for the moment.
-
-% 6. When two labels are required for a node connection, the second one is
-% incorrectly positioned when at least one of them use also node
-% connections.
-% Reported by Anthony Doggett <adoggett@uiuc.edu> in December 1999.
-%
-% Test file:
-%
-% \documentclass{article}
-%
-% \usepackage{pst-node}
-%
-% \SpecialCoor
-%
-% \pagestyle{empty}
-%
-% \begin{document}
-%
-% \newcommand{\Label}{%
-% \pnode(0,0){A}
-% \pnode(2,0){B}
-% \psline(A)(B)}
-% %
-% \pcline(0,0)(3,-3)\naput{\Label}\nbput{Label} % Correct pos. for "Label"
-% %
-% \renewcommand{\Label}{%
-% \pnode(0,0){A}
-% \pnode(2,0){B}
-% \ncline{A}{B}}
-% %
-% \hfill
-% \pcline(0,0)(3,-3)\naput{\Label}\nbput{Label} % Uncorrect pos. for "Label"
-%
-% \end{document}
-%
-% Workaround: none is known for the moment (without bad side effects)
-
-%%
-%% END pstricks.bug
diff --git a/Master/texmf-dist/doc/generic/pstricks/test-pst.pdf b/Master/texmf-dist/doc/generic/pstricks/test-pst.pdf
deleted file mode 100644
index 2ac2bd0199a..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/test-pst.pdf
+++ /dev/null
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks/test-pst.tex b/Master/texmf-dist/doc/generic/pstricks/test-pst.tex
deleted file mode 100644
index 2af57b5daa6..00000000000
--- a/Master/texmf-dist/doc/generic/pstricks/test-pst.tex
+++ /dev/null
@@ -1,257 +0,0 @@
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- 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/Master/texmf-dist/dvips/pstricks/pst-node.pro b/Master/texmf-dist/dvips/pstricks/pst-node.pro
index 7168f9c457c..5502ecbd202 100644
--- a/Master/texmf-dist/dvips/pstricks/pst-node.pro
+++ b/Master/texmf-dist/dvips/pstricks/pst-node.pro
@@ -106,12 +106,14 @@ GetArmB xA2 yA2 xA1 yA1 tx@Dict begin ArrowA end xB2 yB2 xB1 yB1 tx@Dict
begin ArrowB end curveto /LPutVar [ xA1 yA1 xA2 yA2 xB2 yB2 xB1 yB1 ]
cvx def /LPutPos { t LPutVar BezierMidpoint } def /HPutPos { { HPutLines
} HPutCurve } def /VPutPos { { VPutLines } HPutCurve } def } def
+%
/NCAngles { GetEdgeA GetEdgeB GetArmA GetArmB /mtrx AngleA matrix rotate
def xA2 yA2 mtrx transform pop xB2 yB2 mtrx transform exch pop mtrx
itransform /y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA2
yA2 ArmA 0 ne { xA1 yA1 } if tx@Dict begin false Line end /LPutVar [ xB1
yB1 xB2 yB2 x0 y0 xA2 yA2 xA1 yA1 ] cvx def /LPutPos { LPutLines } def
/HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+%
/NCAngle { GetEdgeA GetEdgeB GetArmB /mtrx AngleA matrix rotate def xB2
yB2 mtrx itransform pop xA1 yA1 mtrx itransform exch pop mtrx transform
/y0 ED /x0 ED mark ArmB 0 ne { xB1 yB1 } if xB2 yB2 x0 y0 xA1 yA1
diff --git a/Master/texmf-dist/tex/generic/pstricks/Changes b/Master/texmf-dist/tex/generic/pstricks/Changes
index 44dded9a69e..124160c393b 100644
--- a/Master/texmf-dist/tex/generic/pstricks/Changes
+++ b/Master/texmf-dist/tex/generic/pstricks/Changes
@@ -1,4 +1,5 @@
pstricks.tex --------
+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
@@ -25,3 +26,12 @@ pstricks.tex --------
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-tree.tex --------
+1.15 2007-01-03 - fix bug with \endpsTree (hv)
+
+
+xdvipdfmx.con ------
+0.01 2007-03-11 - first CTAN version, must be renamed to pstricks.con
+ when used with XeTeX
diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-node.tex b/Master/texmf-dist/tex/generic/pstricks/pst-node.tex
index 234e94e642e..30fc49962e6 100644
--- a/Master/texmf-dist/tex/generic/pstricks/pst-node.tex
+++ b/Master/texmf-dist/tex/generic/pstricks/pst-node.tex
@@ -16,7 +16,7 @@
\message{ v\fileversion, \filedate}
\csname PSTnodesLoaded\endcsname
\let\PSTnodesLoaded\endinput
-\ifx\PSTricksLoaded\endinput\else\input pstricks.tex\fi\relax
+\ifx\PSTricksLoaded\endinput\else\input pstricks.tex \fi\relax
\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11
\pstheader{pst-node.pro}
@@ -64,35 +64,39 @@ end}%
\advance\pst@dimg-\dp\pst@hbox
\divide\pst@dimg2
\lower\pst@dimg}
+%
\def\tx@InitPnode{InitPnode }
\def\pnode{\@ifnextchar({\pnode@}{\pnode@(0,0)}}
\def\pnode@(#1)#2{%
-\pst@@getcoor{#1}%
-\pst@newnode{#2}{10}{\pst@coor}{\tx@InitPnode}%
-\ignorespaces}
+ \pst@@getcoor{#1}%
+ \pst@newnode{#2}{10}{\pst@coor}{\tx@InitPnode}%
+ \ignorespaces}
+%
\def\tx@InitCnode{InitCnode }
\def\cnode{\pst@object{cnode}}
\def\cnode@i{\@ifnextchar({\cnode@ii}{\cnode@ii(0,0)}}
\def\cnode@ii(#1)#2#3{%
-\leavevmode
-\hbox{%
-\use@par
-\pst@@getcoor{#1}%
-\pssetlength\pst@dimc{#2}%
-\pst@dimg=\psk@dimen\pslinewidth
-\advance\pst@dimc-\pst@dimg
-\advance\pst@dimc.5\pslinewidth
-\ifnodealign
-\kern\pst@dimc
-\vrule width\z@ height \pst@dimc depth \pst@dimc
-\fi
-\pscircle@do(#1){#2}%
-\pst@newnode{#3}{11}{\pst@coor \pst@number\pst@dimc}{\tx@InitCnode}%
-% DG/SR modification begin - Jul. 30, 1997 - Patch 2
-%\ifnodealign \kern\pst@dimc\egroup \fi}%
-\ifnodealign\kern\pst@dimc\fi}%
-% DG/SR modification end
-\ignorespaces}
+ \leavevmode
+ \hbox{%
+ \use@par
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dimc{#2}%
+ \pst@dimg=\psk@dimen\pslinewidth
+ \advance\pst@dimc-\pst@dimg
+ \advance\pst@dimc.5\pslinewidth
+ \ifnodealign
+ \kern\pst@dimc
+ \vrule width\z@ height \pst@dimc depth \pst@dimc
+ \fi
+ \pscircle@do(#1){#2}%
+ \pst@newnode{#3}{11}{\pst@coor \pst@number\pst@dimc}{\tx@InitCnode}%
+%% % DG/SR modification begin - Jul. 30, 1997 - Patch 2
+%% %\ifnodealign \kern\pst@dimc\egroup \fi}%
+ \ifnodealign\kern\pst@dimc\fi%
+%% % DG/SR modification end
+ }%
+ \ignorespaces}
+%
\def\Cnode{\pst@object{Cnode}}
\def\Cnode@i{\@ifnextchar({\Cnode@ii}{\Cnode@ii(0,0)}}
\def\Cnode@ii(#1)#2{\cnode@ii(#1){\psk@radius}{#2}}%
diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-plot.tex b/Master/texmf-dist/tex/generic/pstricks/pst-plot.tex
index 93284cc9823..a3273fd2228 100644
--- a/Master/texmf-dist/tex/generic/pstricks/pst-plot.tex
+++ b/Master/texmf-dist/tex/generic/pstricks/pst-plot.tex
@@ -3,8 +3,6 @@
%% Plots and axes with PSTricks 97.
%% See the PSTricks User's Guide for documentation.
%%
-\def\fileversion{97 patch 2}
-\def\filedate{1999/12/12}
%%
%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu.
%%
@@ -12,8 +10,6 @@
%% of the LaTeX Project Public License Distributed from CTAN
%% archives in directory macros/latex/base/lppl.txt.
%%
-\message{ v\fileversion, \filedate}
-
\csname PSTplotLoaded\endcsname
\let\PSTplotLoaded\endinput
@@ -27,6 +23,11 @@
\expandafter\next
\fi
+\def\fileversion{97 patch 2}
+\def\filedate{1999/12/12}
+\message{ v\fileversion, \filedate}
+
+
\edef\TheAtCode{\the\catcode`\@}
\catcode`\@=11
diff --git a/Master/texmf-dist/tex/generic/pstricks/pst-tree.tex b/Master/texmf-dist/tex/generic/pstricks/pst-tree.tex
index 33c1275d9c7..93024663d89 100644
--- a/Master/texmf-dist/tex/generic/pstricks/pst-tree.tex
+++ b/Master/texmf-dist/tex/generic/pstricks/pst-tree.tex
@@ -1,7 +1,7 @@
%% pst-tree.tex
%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu.
%% COPYRIGHT 2000-2003 by Denis Girou.
-%% Copyright 2004 Herbert Voss
+%% Copyright 2004-2007 Herbert Voss
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -22,8 +22,8 @@
\csname PSTreeLoaded\endcsname
\let\PSTreeLoaded\endinput
\ifx\PSTnodesLoaded\endinput\else\input pst-node.tex\fi\relax
-\def\fileversion{97 patch 6}
-\def\filedate{2004/07/24}
+\def\fileversion{1.00}
+\def\filedate{2007/01/03}
\message{ v\fileversion, \filedate}
%
\edef\TheAtCode{\the\catcode`\@}
@@ -182,132 +182,140 @@
\newcount\pstreecnt
\let\c@pstreecnt\pstreecnt
\newcount\pstree@cnt
+%
\def\pstree{\def\pst@par{}\pst@object{pstree}}
\def\pstree@i{\def\pstree@makebox{\pst@@makebox}\pstree@ii}
+%
\def\psTree{\def\pst@par{}\pst@object{psTree}}
\def\psTree@i{\def\pstree@makebox{\pst@makelongbox}\pstree@ii}
-\def\endpsTree{\pst@endlongbox\ignorespaces}
+% hv --begin 1.00 2007-01-03 make it LaTeX-compatible
+%\def\endpsTree{\pst@endlongbox\ignorespaces}
+\def\endpsTree{\pst@endlongbox\csname ignorespacesafterend\endcsname}
+% hv --end
\def\pstree@ii{%
-\ifnum\pstreelevel=\z@
-\let\pstree@savedshortput\pst@shortput
-\psset@shortput{tab}%
-\else
-\pst@@killglue
-\fi
-\begingroup
-\begingroup
-\def\pstree@node{%
-\xdef\pstree@next{%
-\noexpand\@psttrue
-\noexpand\def\noexpand\pst@tempa{\number\pst@dima}%
-\noexpand\def\noexpand\pst@tempb{\number\pst@dimb}%
-\noexpand\def\noexpand\pst@tempc{\number\pst@dimc}%
-\noexpand\def\noexpand\pst@tempd{\number\pst@dimd}}%
-\box\pstree@box}%
-\def\pssubtree@horizontal{\pssubtree@horizontal@o}%
-\def\pssubtree@vertical{\pssubtree@vertical@o}%
-\global\let\pstree@next\relax
-\pst@makebox\pstree@iii}
+ \ifnum\pstreelevel=\z@
+ \let\pstree@savedshortput\pst@shortput
+ \psset@shortput{tab}%
+ \else
+ \pst@@killglue
+ \fi
+ \begingroup
+ \begingroup
+ \def\pstree@node{%
+ \xdef\pstree@next{%
+ \noexpand\@psttrue
+ \noexpand\def\noexpand\pst@tempa{\number\pst@dima}%
+ \noexpand\def\noexpand\pst@tempb{\number\pst@dimb}%
+ \noexpand\def\noexpand\pst@tempc{\number\pst@dimc}%
+ \noexpand\def\noexpand\pst@tempd{\number\pst@dimd}}%
+ \box\pstree@box}%
+ \def\pssubtree@horizontal{\pssubtree@horizontal@o}%
+ \def\pssubtree@vertical{\pssubtree@vertical@o}%
+ \global\let\pstree@next\relax
+ \pst@makebox\pstree@iii}
+%
\def\pstree@iii{%
-\global\setbox\pst@boxg=\box\pst@hbox
-\endgroup
-\setbox\pstree@rootbox=\box\pst@boxg
-\@pstfalse
-\pstree@next
-\if@pst
-\ifdim\wd\pstree@rootbox=\z@\else
-\@pstrickserr{Extraneous space in root node}\@ehpa
-\wd\pstree@rootbox=\z@
-\fi
-\else
-\@pstrickserr{Missing or bad root node
-(level \the\pstreelevel, node \the\psnodecnt)}\@ehpa
-\def\pstree@next{%
-\def\pst@tempa{0}%
-\def\pst@tempb{0}%
-\def\pst@tempc{0}%
-\def\pst@tempd{0}}%
-\wd\pstree@rootbox=\z@
-\fi
-\pstree@savevalues
-\begingroup
-\pstree@initsuccvalues
-\pstree@setlevelpar
-\pstree@do}
+ \global\setbox\pst@boxg=\box\pst@hbox
+ \endgroup
+ \setbox\pstree@rootbox=\box\pst@boxg
+ \@pstfalse
+ \pstree@next
+ \if@pst
+ \ifdim\wd\pstree@rootbox=\z@\else
+ \@pstrickserr{Extraneous space in root node}\@ehpa
+ \typeout{===>\the\wd\pst@hbox (rootbox)}
+ \wd\pstree@rootbox=\z@
+ \fi
+ \else
+ \@pstrickserr{Missing or bad root node
+ (level \the\pstreelevel, node \the\psnodecnt)}\@ehpa
+ \def\pstree@next{%
+ \def\pst@tempa{0}%
+ \def\pst@tempb{0}%
+ \def\pst@tempc{0}%
+ \def\pst@tempd{0}}%
+ \wd\pstree@rootbox=\z@
+ \fi
+ \pstree@savevalues
+ \begingroup
+ \pstree@initsuccvalues
+ \pstree@setlevelpar
+ \pstree@do}
+%
\def\pstree@setlevelpar{%
-\advance\pstreelevel1
-\let\psk@thislevelsep\relax
-\let\psk@thistreesep\relax
-\let\psk@thistreefit\relax
-\let\psk@thistreenodesize\relax
-\csname pstreehook\romannumeral\pstreelevel\endcsname
-\use@par
-\ifx\psk@thistreesep\relax
-\let\psk@thistreesep\psk@treesep
-\fi
-\ifx\psk@thistreenodesize\relax
-\let\psk@thistreenodesize\psk@treenodesize
-\fi
-\ifx\psk@thistreefit\relax
-\let\psk@thistreefit\psk@treefit
-\fi
-\ifx\psk@thislevelsep\relax
-\let\psk@thislevelsep\psk@levelsep
-\let\psk@thislevelsepmode\psk@levelsepmode
-\fi
-\ifnum\psk@treemode=\pstree@predmode\else
-\global\advance\pstreecnt1
-\edef\pstree@thetree{\the\pstreecnt}%
-\let\pstree@predmode\psk@treemode
-\fi
-\ifx\psk@thislevelsepmode\relax
-\pst@dimg=\psk@thislevelsep\relax
-\pst@cntg=0\@nameuse{%
-pstree@levelsepadjust-\pstree@thetree-\the\pstreelevel}%
-\advance\pst@dimg\pst@cntg sp
-\edef\psk@thislevelsep{\number\pst@dimg sp}%
-\fi
-\ifnum\psk@treemode>1
-\def\pst@tposflip{1 sub neg }%
-\else
-\def\pst@tposflip{}%
-\fi
-\ifx\pstree@bboxadjust\@empty\else
-\xdef\pstree@treebboxadjust{%
-\pstree@bboxadjust
-\ifpsshowbbox\noexpand\pstree@showbbox\fi}%
-\gdef\pstree@bboxadjust{}%
-\fi
-\let\pst@thispsbox\@skiplevelfalse}
+ \advance\pstreelevel1
+ \let\psk@thislevelsep\relax
+ \let\psk@thistreesep\relax
+ \let\psk@thistreefit\relax
+ \let\psk@thistreenodesize\relax
+ \csname pstreehook\romannumeral\pstreelevel\endcsname
+ \use@par
+ \ifx\psk@thistreesep\relax
+ \let\psk@thistreesep\psk@treesep
+ \fi
+ \ifx\psk@thistreenodesize\relax
+ \let\psk@thistreenodesize\psk@treenodesize
+ \fi
+ \ifx\psk@thistreefit\relax
+ \let\psk@thistreefit\psk@treefit
+ \fi
+ \ifx\psk@thislevelsep\relax
+ \let\psk@thislevelsep\psk@levelsep
+ \let\psk@thislevelsepmode\psk@levelsepmode
+ \fi
+ \ifnum\psk@treemode=\pstree@predmode\else
+ \global\advance\pstreecnt1
+ \edef\pstree@thetree{\the\pstreecnt}%
+ \let\pstree@predmode\psk@treemode
+ \fi
+ \ifx\psk@thislevelsepmode\relax
+ \pst@dimg=\psk@thislevelsep\relax
+ \pst@cntg=0\@nameuse{pstree@levelsepadjust-\pstree@thetree-\the\pstreelevel}%
+ \advance\pst@dimg\pst@cntg sp
+ \edef\psk@thislevelsep{\number\pst@dimg sp}%
+ \fi
+ \ifnum\psk@treemode>1
+ \def\pst@tposflip{1 sub neg }%
+ \else
+ \def\pst@tposflip{}%
+ \fi
+ \ifx\pstree@bboxadjust\@empty\else
+ \xdef\pstree@treebboxadjust{%
+ \pstree@bboxadjust
+ \ifpsshowbbox\noexpand\pstree@showbbox\fi}%
+ \gdef\pstree@bboxadjust{}%
+ \fi
+ \let\pst@thispsbox\@skiplevelfalse}
+%
\def\pstree@predmode{-1}
\def\pstree@savevalues{%
-\edef\pstree@restorevalues{%
-\noexpand\gdef\noexpand\pstree@theleftprofile{\pstree@theleftprofile}%
-\noexpand\gdef\noexpand\pstree@therightprofile{\pstree@therightprofile}%
-\noexpand\gdef\noexpand\pstree@theupprofile{\pstree@theupprofile}%
-\noexpand\gdef\noexpand\pstree@thedownprofile{\pstree@thedownprofile}%
-\noexpand\gdef\noexpand\pstree@tspace{\pstree@tspace}%
-\noexpand\gdef\noexpand\pssucc{\pssucc}%
-\global\psnodecnt=\the\psnodecnt\relax
-\global\pstree@cnt=\the\pstree@cnt\relax}%
-\let\pstree@savebboxadjust\pstree@treebboxadjust}
+ \edef\pstree@restorevalues{%
+ \noexpand\gdef\noexpand\pstree@theleftprofile{\pstree@theleftprofile}%
+ \noexpand\gdef\noexpand\pstree@therightprofile{\pstree@therightprofile}%
+ \noexpand\gdef\noexpand\pstree@theupprofile{\pstree@theupprofile}%
+ \noexpand\gdef\noexpand\pstree@thedownprofile{\pstree@thedownprofile}%
+ \noexpand\gdef\noexpand\pstree@tspace{\pstree@tspace}%
+ \noexpand\gdef\noexpand\pssucc{\pssucc}%
+ \global\psnodecnt=\the\psnodecnt\relax
+ \global\pstree@cnt=\the\pstree@cnt\relax}%
+ \let\pstree@savebboxadjust\pstree@treebboxadjust}
\def\pstree@initsuccvalues{%
-\def\pstree@therightprofile{\pstree@stop,}%
-\let\pstree@theleftprofile\pstree@therightprofile
-\let\pstree@theupprofile\pstree@therightprofile
-\let\pstree@thedownprofile\pstree@therightprofile
-\psnodecnt=\z@
-\pstree@cnt\z@
-\gdef\pstree@tspace{\z@}%
-\let\pspred\pssucc}
+ \def\pstree@therightprofile{\pstree@stop,}%
+ \let\pstree@theleftprofile\pstree@therightprofile
+ \let\pstree@theupprofile\pstree@therightprofile
+ \let\pstree@thedownprofile\pstree@therightprofile
+ \psnodecnt=\z@
+ \pstree@cnt\z@
+ \gdef\pstree@tspace{\z@}%
+ \let\pspred\pssucc}
\def\pssucc{T}
\pstree@initsuccvalues
\def\pstree@down{%
-\pstree@succrow
-\pstree@makebox{\pstree@vertical{\lower}}}
+ \pstree@succrow
+ \pstree@makebox{\pstree@vertical{\lower}}}
\def\pstree@up{%
-\pstree@succrow
-\pstree@makebox{\pstree@vertical{\raise}}}
+ \pstree@succrow
+ \pstree@makebox{\pstree@vertical{\raise}}}
\def\pstree@levelsepadjust#1#2{%
% DG/SR modification begin - May 14, 1997 - Patch 1
% Problem with levelsep=*...
@@ -439,52 +447,49 @@ pstree@levelsepadjust-\pstree@thetree-\the\pstreelevel}%
\pstree@succcolumn
\pstree@makebox\pstree@horizontal}
\def\pstree@horizontal{%
-\ifdim\wd\pst@hbox=\z@\else
-\@pstrickserr{Extraneous space in tree successors}\@ehpa
-\fi
-\pst@cntg=\ifpstreeflip\ht\else\dp\fi\pst@hbox
-\divide\pst@cntg 2
-\pstree@add\pstree@theupprofile
-\pstree@add\pstree@thedownprofile
+ \ifdim\wd\pst@hbox=\z@\else
+ \@pstrickserr{Extraneous space in tree successors}\@ehpa
+ \typeout{===>\the\wd\pst@hbox (hbox)}
+ \fi
+ \pst@cntg=\ifpstreeflip\ht\else\dp\fi\pst@hbox
+ \divide\pst@cntg 2
+ \pstree@add\pstree@theupprofile
+ \pstree@add\pstree@thedownprofile
% DG/SR modification begin - Sep. 24, 1997 - Patch 3
%\ifx\psk@thislevelsepmode\relax
%\pstree@horizlevelsepadjust
%\fi
% DG/SR modification end
-\pst@dimg\psk@thislevelsep\relax
-\global\setbox\pstree@box=\hbox{%
-\unhbox\pstree@rootbox
-\kern\if@psrighttree\else-\fi\pst@dimg
-\ifpstreeflip\lower\else\raise\fi\pst@cntg sp\box\pst@hbox}%
+ \pst@dimg\psk@thislevelsep\relax
+ \global\setbox\pstree@box=\hbox{%
+ \unhbox\pstree@rootbox
+ \kern\if@psrighttree\else-\fi\pst@dimg
+ \ifpstreeflip\lower\else\raise\fi\pst@cntg sp\box\pst@hbox}%
% DG/SR modification begin - Sep. 24, 1997 - Patch 3
-\ifx\psk@thislevelsepmode\relax
-\pstree@horizlevelsepadjust
-\fi
+ \ifx\psk@thislevelsepmode\relax
+ \pstree@horizlevelsepadjust
+ \fi
% DG/SR modification end
-\if@psrighttree
-\pst@dimh=\pst@dimg
-\pstree@max\pstree@therightprofile\pst@cntg
-\global\advance\pst@dimh\pst@cntg sp
-\global\pst@dimg=\pst@tempa sp
-\else
-\pstree@max\pstree@theleftprofile\pst@cntg
-\global\advance\pst@dimg\pst@cntg sp
-\global\pst@dimh=\pst@tempb sp
-\fi
-\if@skiplevel
-\skiplevel@horizontal
-\else
-\endgroup
-\fi
-\pst@dima=\pst@dimg
-\pst@dimb=\pst@dimh
-\edef\pstree@upprofile{\pst@tempc,\pstree@theupprofile}%
-\edef\pstree@downprofile{\pst@tempd,\pstree@thedownprofile}%
-\dp\pstree@box=\z@
-\ht\pstree@box=\z@
-\wd\pstree@box=\z@
-\ifpsshowbbox
-\pstree@max\pstree@upprofile\pst@cntg
+ \if@psrighttree
+ \pst@dimh=\pst@dimg
+ \pstree@max\pstree@therightprofile\pst@cntg
+ \global\advance\pst@dimh\pst@cntg sp
+ \global\pst@dimg=\pst@tempa sp
+ \else
+ \pstree@max\pstree@theleftprofile\pst@cntg
+ \global\advance\pst@dimg\pst@cntg sp
+ \global\pst@dimh=\pst@tempb sp
+ \fi
+ \if@skiplevel\skiplevel@horizontal\else\endgroup\fi
+ \pst@dima=\pst@dimg
+ \pst@dimb=\pst@dimh
+ \edef\pstree@upprofile{\pst@tempc,\pstree@theupprofile}%
+ \edef\pstree@downprofile{\pst@tempd,\pstree@thedownprofile}%
+ \dp\pstree@box=\z@
+ \ht\pstree@box=\z@
+ \wd\pstree@box=\z@
+ \ifpsshowbbox
+ \pstree@max\pstree@upprofile\pst@cntg
\pst@dimc=\pst@cntg sp
\pstree@max\pstree@downprofile\pst@cntg
\pst@dimd=\pst@cntg sp
@@ -952,56 +957,56 @@ tx@Dict begin \psline@iii pop end
% DG/SR modification begin - Aug. 31, 1999 - Patch 4
%\pst@dimc=\pstree@gettop\pstree@theupprofile sp
%\pst@dimd=\pstree@gettop\pstree@thedownprofile sp
-\edef\pstree@upprofile{\pst@tempc,\pstree@theupprofile}%
-\edef\pstree@downprofile{\pst@tempd,\pstree@thedownprofile}%
-\pstree@max\pstree@upprofile\pst@cntg
-\pst@dimc=\pst@cntg sp
-\pstree@max\pstree@downprofile\pst@cntg
-\pst@dimd=\pst@cntg sp
+ \edef\pstree@upprofile{\pst@tempc,\pstree@theupprofile}%
+ \edef\pstree@downprofile{\pst@tempd,\pstree@thedownprofile}%
+ \pstree@max\pstree@upprofile\pst@cntg
+ \pst@dimc=\pst@cntg sp
+ \pstree@max\pstree@downprofile\pst@cntg
+ \pst@dimd=\pst@cntg sp
% DG/SR modification end
-\pstree@treebboxadjust
-\gdef\pstree@treebboxadjust{}%
-\xdef\pstree@next{%
-\noexpand\def\noexpand\pst@tempc{\number\pst@dimc}%
-\noexpand\def\noexpand\pst@tempd{\number\pst@dimd}}%
-\endgroup
-\pstree@next}
+ \pstree@treebboxadjust
+ \gdef\pstree@treebboxadjust{}%
+ \xdef\pstree@next{%
+ \noexpand\def\noexpand\pst@tempc{\number\pst@dimc}%
+ \noexpand\def\noexpand\pst@tempd{\number\pst@dimd}}%
+ \endgroup
+ \pstree@next}
\def\skiplevel@vertical{%
% DG/SR modification begin - Aug. 31, 1999 - Patch 4
%\pst@dima=\pstree@gettop\pstree@theleftprofile sp
%\pst@dimb=\pstree@gettop\pstree@therightprofile sp
-\edef\pstree@leftprofile{\pst@tempa,\pstree@theleftprofile}%
-\edef\pstree@rightprofile{\pst@tempb,\pstree@therightprofile}%
-\pstree@max\pstree@leftprofile\pst@cntg
-\pst@dima=\pst@cntg sp
-\pstree@max\pstree@rightprofile\pst@cntg
-\pst@dimb=\pst@cntg sp
+ \edef\pstree@leftprofile{\pst@tempa,\pstree@theleftprofile}%
+ \edef\pstree@rightprofile{\pst@tempb,\pstree@therightprofile}%
+ \pstree@max\pstree@leftprofile\pst@cntg
+ \pst@dima=\pst@cntg sp
+ \pstree@max\pstree@rightprofile\pst@cntg
+ \pst@dimb=\pst@cntg sp
% DG/SR modification end
-\pstree@treebboxadjust
-\gdef\pstree@treebboxadjust{}%
-\xdef\pstree@next{%
-\noexpand\def\noexpand\pst@tempa{\number\pst@dima}%
-\noexpand\def\noexpand\pst@tempb{\number\pst@dimb}}%
-\endgroup
-\pstree@next}
+ \pstree@treebboxadjust
+ \gdef\pstree@treebboxadjust{}%
+ \xdef\pstree@next{%
+ \noexpand\def\noexpand\pst@tempa{\number\pst@dima}%
+ \noexpand\def\noexpand\pst@tempb{\number\pst@dimb}}%
+ \endgroup
+ \pstree@next}
\def\skiplevels{\def\pst@par{}\pst@object{skiplevels}}
\def\skiplevels@i#1{%
-\pst@@killglue
-\begingroup
-\pst@cnta=#1\relax
-\edef\skiplevels@num{\the\pst@cnta}%
-\def\pstree@makebox{\pst@makelongbox}%
-\def\endskiplevels{}%
-\loop
-\ifnum\pst@cnta>\z@
-\advance\pst@cnta-1
-\expandafter\def\expandafter\endskiplevels\expandafter{%
-\endskiplevels\pst@endlongbox}
-\skiplevel@ii
-\repeat
-\expandafter\def\expandafter\endskiplevels\expandafter{%
-\endskiplevels\endgroup\ignorespaces}
-\ignorespaces}
+ \pst@@killglue
+ \begingroup
+ \pst@cnta=#1\relax
+ \edef\skiplevels@num{\the\pst@cnta}%
+ \def\pstree@makebox{\pst@makelongbox}%
+ \def\endskiplevels{}%
+ \loop
+ \ifnum\pst@cnta>\z@
+ \advance\pst@cnta-1
+ \expandafter\def\expandafter\endskiplevels\expandafter{%
+ \endskiplevels\pst@endlongbox}
+ \skiplevel@ii
+ \repeat
+ \expandafter\def\expandafter\endskiplevels\expandafter{%
+ \endskiplevels\endgroup\ignorespaces}
+ \ignorespaces}
\catcode`\@=\TheAtCode\relax
diff --git a/Master/texmf-dist/tex/generic/pstricks/pstricks.tex b/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
index a291bb50129..5e77b88da65 100644
--- a/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
+++ b/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
@@ -1,7 +1,7 @@
%% pstricks.tex
%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt, tvz@nwu.edu.
%% COPYRIGHT 2000-2003 by Denis Girou.
-%% Copyright 2004-2006 Herbert Voss
+%% Copyright 2004-2007 Herbert Voss
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either version 1.3
@@ -20,7 +20,7 @@
% See the PSTricks User's Guide for description.
% This uses the header file `pstricks.pro'.
%
-\def\fileversion{1.15}
+\def\fileversion{1.15a}
\def\filedate{2006/12/22}
%
\csname PSTricksLoaded\endcsname
@@ -1800,15 +1800,17 @@ grestore}}
\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\psparabola{\pst@object{psparabola}}% 1.15a 2006-01-05 (hv)
+\def\psparabola@i{\pst@getarrows\psparabola@ii}
+\def\psparabola@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}
+\let\parabola\psparabola% compatibility (hv)
%
\def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
\psset@gridwidth{.8pt}
diff --git a/Master/texmf-dist/tex/latex/pstricks/Changes b/Master/texmf-dist/tex/latex/pstricks/Changes
index 485f08d8633..e967adb415e 100644
--- a/Master/texmf-dist/tex/latex/pstricks/Changes
+++ b/Master/texmf-dist/tex/latex/pstricks/Changes
@@ -1,5 +1,6 @@
pstricks.sty --------
-0.32 2006-08-10 message for loading the pro file
+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)
@@ -12,5 +13,7 @@ pstricks.sty --------
pst-node.sty --------
2006-01-01 message for loading the pro file
-pst-text.sty --------
- 2006-01-01 message for loading the pro file
+
+pst-all.sty --------
+ 2006-12-19 do not load pst-char, it is now part of pst-text
+ \ No newline at end of file
diff --git a/Master/texmf-dist/tex/latex/pstricks/pst-all.sty b/Master/texmf-dist/tex/latex/pstricks/pst-all.sty
index 76d9041cdad..d2f7b46a518 100644
--- a/Master/texmf-dist/tex/latex/pstricks/pst-all.sty
+++ b/Master/texmf-dist/tex/latex/pstricks/pst-all.sty
@@ -4,27 +4,27 @@
%% IMPORTANT NOTICE:
%%
%% Copyright (C) 1997 Timothy Van Zandt
-%% Copyright (C) 2006 Herbert Voss <voss@perce.de>
+%% Copyright (C) 2004 Herbert Voss <voss@perce.de>
%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
%%
%% 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}[2006/11/07 the main pstricks tools]
+\ProvidesPackage{pst-all}[2006/12/19 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-tree}
-\RequirePackage{pst-node}
-\RequirePackage{pst-3d}
\RequirePackage{pst-grad}
+\RequirePackage{pst-plot}
\RequirePackage{pst-coil}
\RequirePackage{pst-text}
+\RequirePackage{pst-node}
+\RequirePackage{pst-3d}
\RequirePackage{pst-eps}
\RequirePackage[tiling]{pst-fill}
+\RequirePackage{pst-tree}
\RequirePackage{multido}
\endinput
diff --git a/Master/texmf-dist/tex/latex/pstricks/pstcol.sty b/Master/texmf-dist/tex/latex/pstricks/pstcol.sty
index 3597ebd03ed..29c4affd9f9 100644
--- a/Master/texmf-dist/tex/latex/pstricks/pstcol.sty
+++ b/Master/texmf-dist/tex/latex/pstricks/pstcol.sty
@@ -1,11 +1,11 @@
%%
%% pstcol.sty Copyright (C) 1994--1996 1999 David Carlisle
-%% 2004--2005 Herbert Voss <voss@perce.de>
-%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
+%% 2004--2007 Herbert Voss <voss@perce.de>
+%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pstcol}
- [2005/11/16 v1.2 LaTeX wrapper for `PSTricks' (RN,HV)]
+ [2007/04/11 v1.3 LaTeX wrapper for `PSTricks' (RN,HV)]
\DeclareOption*{\PassOptionsToPackage\CurrentOption{color}}
\ProcessOptions\relax
@@ -17,7 +17,8 @@
\@spaces\string\usepackage{pstricks}\MessageBreak
************************************}
-\RequirePackage[noxcolor]{pstricks}
+\PassOptionsToPackage{noxcolor}{pstricks}
+\RequirePackage{pstricks}
\endinput
%%
diff --git a/Master/texmf-dist/tex/latex/pstricks/pstricks.sty b/Master/texmf-dist/tex/latex/pstricks/pstricks.sty
index d5f6287bfd0..e7d3cdc2f6d 100644
--- a/Master/texmf-dist/tex/latex/pstricks/pstricks.sty
+++ b/Master/texmf-dist/tex/latex/pstricks/pstricks.sty
@@ -5,7 +5,7 @@
%%
%% pstricks.sty Copyright (C) 1997 Timothy Van Zandt
%% pstcol.sty Copyright (C) 1994-1996 1999 David Carlisle
-%% pstricks.sty Copyright (C) 2004-2006 Herbert Voss <voss@perce.de>
+%% pstricks.sty Copyright (C) 2004-2007 Herbert Voss <voss@perce.de>
%% Rolf Niepraschk <Rolf.Niepraschk@ptb.de>
%%
%% This package may be distributed under the terms of the LaTeX Project
@@ -16,7 +16,7 @@
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{pstricks}
- [2006/08/10 v0.32 LaTeX wrapper for `PSTricks' (RN,HV)]
+ [2007/02/18 v0.33 LaTeX wrapper for `PSTricks' (RN,HV)]
%
\DeclareOption{plain}{%
\input{pstricks.tex}
@@ -141,6 +141,7 @@
\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
diff --git a/Master/texmf-dist/tpm/pstricks.tpm b/Master/texmf-dist/tpm/pstricks.tpm
index d12afcc2171..26ee21fa651 100644
--- a/Master/texmf-dist/tpm/pstricks.tpm
+++ b/Master/texmf-dist/tpm/pstricks.tpm
@@ -3,7 +3,7 @@
<rdf:Description about="http://texlive.dante.de/texlive/Package/pstricks.zip">
<TPM:Name>pstricks</TPM:Name>
<TPM:Type>Package</TPM:Type>
- <TPM:Date>2007/03/11 21:10:30</TPM:Date>
+ <TPM:Date>2007/04/11 18:39:05</TPM:Date>
<TPM:Version></TPM:Version>
<TPM:Creator>rahtz</TPM:Creator>
<TPM:Title>PostScript macros for TeX.</TPM:Title>
@@ -21,10 +21,10 @@ contains bug-fixes and additions for pstricks (among others).
[description copied from TeX Catalogue]
</TPM:Description>
<TPM:Author>Timothy Van Zandt</TPM:Author>
- <TPM:Size>6996170</TPM:Size>
+ <TPM:Size>1547967</TPM:Size>
<TPM:License></TPM:License>
<TPM:Build/>
- <TPM:RunFiles size="250084">
+ <TPM:RunFiles size="231398">
texmf-dist/dvips/pstricks/Changes
texmf-dist/dvips/pstricks/pst-dots.pro
texmf-dist/dvips/pstricks/pst-node.pro
@@ -50,24 +50,10 @@ texmf-dist/tex/latex/pstricks/pstcol.sty
texmf-dist/tex/latex/pstricks/pstricks.sty
texmf-dist/tpm/pstricks.tpm
</TPM:RunFiles>
- <TPM:DocFiles size="1297883">
-texmf-dist/doc/generic/pstricks/CHANGES
+ <TPM:DocFiles size="5955012">
texmf-dist/doc/generic/pstricks/Changes.doc
texmf-dist/doc/generic/pstricks/README
-texmf-dist/doc/generic/pstricks/VERSIONS
-texmf-dist/doc/generic/pstricks/code/Changes
-texmf-dist/doc/generic/pstricks/code/Makefile
-texmf-dist/doc/generic/pstricks/code/README
-texmf-dist/doc/generic/pstricks/code/art11.sty
-texmf-dist/doc/generic/pstricks/code/pst-code.pdf
-texmf-dist/doc/generic/pstricks/code/pst-code.tex
-texmf-dist/doc/generic/pstricks/code/pst-coil.doc
-texmf-dist/doc/generic/pstricks/code/pst-node.doc
-texmf-dist/doc/generic/pstricks/code/pstricks.doc
-texmf-dist/doc/generic/pstricks/code/tvz-code.sty
-texmf-dist/doc/generic/pstricks/code/tvz-hax.sty
-texmf-dist/doc/generic/pstricks/images/flowers.eps
-texmf-dist/doc/generic/pstricks/images/tiger.eps.gz
+texmf-dist/doc/generic/pstricks/pst-quickref.pdf
texmf-dist/doc/generic/pstricks/pstnews1-10.pdf
texmf-dist/doc/generic/pstricks/pstnews1-10.tex
texmf-dist/doc/generic/pstricks/pstnews1-11.pdf
@@ -80,9 +66,8 @@ texmf-dist/doc/generic/pstricks/pstnews1-15.pdf
texmf-dist/doc/generic/pstricks/pstnews1-15.tex
texmf-dist/doc/generic/pstricks/pstnews97-15.pdf
texmf-dist/doc/generic/pstricks/pstnews97-15.tex
-texmf-dist/doc/generic/pstricks/pstricks.bug
-texmf-dist/doc/generic/pstricks/test-pst.pdf
-texmf-dist/doc/generic/pstricks/test-pst.tex
+texmf-dist/doc/generic/pstricks/pstricks-bug.tex
+texmf-dist/doc/generic/pstricks/pstricks-doc.pdf
</TPM:DocFiles>
<TPM:Provides>Package/pstricks</TPM:Provides>
</rdf:Description>
diff --git a/Master/texmf/lists/pstricks b/Master/texmf/lists/pstricks
index 8c0a2161c63..1b1e99dd036 100644
--- a/Master/texmf/lists/pstricks
+++ b/Master/texmf/lists/pstricks
@@ -1,20 +1,6 @@
-texmf-dist/doc/generic/pstricks/CHANGES
texmf-dist/doc/generic/pstricks/Changes.doc
texmf-dist/doc/generic/pstricks/README
-texmf-dist/doc/generic/pstricks/VERSIONS
-texmf-dist/doc/generic/pstricks/code/Changes
-texmf-dist/doc/generic/pstricks/code/Makefile
-texmf-dist/doc/generic/pstricks/code/README
-texmf-dist/doc/generic/pstricks/code/art11.sty
-texmf-dist/doc/generic/pstricks/code/pst-code.pdf
-texmf-dist/doc/generic/pstricks/code/pst-code.tex
-texmf-dist/doc/generic/pstricks/code/pst-coil.doc
-texmf-dist/doc/generic/pstricks/code/pst-node.doc
-texmf-dist/doc/generic/pstricks/code/pstricks.doc
-texmf-dist/doc/generic/pstricks/code/tvz-code.sty
-texmf-dist/doc/generic/pstricks/code/tvz-hax.sty
-texmf-dist/doc/generic/pstricks/images/flowers.eps
-texmf-dist/doc/generic/pstricks/images/tiger.eps.gz
+texmf-dist/doc/generic/pstricks/pst-quickref.pdf
texmf-dist/doc/generic/pstricks/pstnews1-10.pdf
texmf-dist/doc/generic/pstricks/pstnews1-10.tex
texmf-dist/doc/generic/pstricks/pstnews1-11.pdf
@@ -27,9 +13,8 @@ texmf-dist/doc/generic/pstricks/pstnews1-15.pdf
texmf-dist/doc/generic/pstricks/pstnews1-15.tex
texmf-dist/doc/generic/pstricks/pstnews97-15.pdf
texmf-dist/doc/generic/pstricks/pstnews97-15.tex
-texmf-dist/doc/generic/pstricks/pstricks.bug
-texmf-dist/doc/generic/pstricks/test-pst.pdf
-texmf-dist/doc/generic/pstricks/test-pst.tex
+texmf-dist/doc/generic/pstricks/pstricks-bug.tex
+texmf-dist/doc/generic/pstricks/pstricks-doc.pdf
texmf-dist/dvips/pstricks/Changes
texmf-dist/dvips/pstricks/pst-dots.pro