texlive[60327] Master/texmf-dist: pstricks (26aug21)

commits+karl at tug.org commits+karl at tug.org
Thu Aug 26 23:23:35 CEST 2021


Revision: 60327
          http://tug.org/svn/texlive?view=revision&revision=60327
Author:   karl
Date:     2021-08-26 23:23:35 +0200 (Thu, 26 Aug 2021)
Log Message:
-----------
pstricks (26aug21)

Modified Paths:
--------------
    trunk/Master/texmf-dist/doc/generic/pstricks/PSTricks.bib
    trunk/Master/texmf-dist/doc/generic/pstricks/pst-news21.pdf
    trunk/Master/texmf-dist/doc/generic/pstricks/pst-news21.tex
    trunk/Master/texmf-dist/dvips/pstricks/pstricks.pro
    trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
    trunk/Master/texmf-dist/tex/latex/pstricks/pst-doc.cls

Added Paths:
-----------
    trunk/Master/texmf-dist/tex/generic/pstricks/pstricks-arrows.tex

Removed Paths:
-------------
    trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex.neu

Modified: trunk/Master/texmf-dist/doc/generic/pstricks/PSTricks.bib
===================================================================
--- trunk/Master/texmf-dist/doc/generic/pstricks/PSTricks.bib	2021-08-26 13:22:58 UTC (rev 60326)
+++ trunk/Master/texmf-dist/doc/generic/pstricks/PSTricks.bib	2021-08-26 21:23:35 UTC (rev 60327)
@@ -1,4 +1,21 @@
 @STRING{dtk	= {{D}ie {\TeX}nische {K}om{\"o}die} }
+ at STRING{beiprogramm     = {{\TeX}-Beiprogramm}}
+ at STRING{bretter         = {Bretter, die die Welt bedeuten}}
+ at STRING{dtk             = {DTK}}
+ at STRING{editorial       = {Editorial}}
+ at STRING{fremdebuehne    = {Von fremden Bühnen}}
+ at STRING{fundus          = {Aus dem Fundus}}
+ at STRING{grusswort       = {Grußwort}}
+ at STRING{hinterbuehne    = {Hinter der Bühne}}
+ at STRING{komascript      = {\KOMAScript}}
+ at STRING{leserbriefe     = {Leserbriefe}}
+ at STRING{magazin         = {Magazin}}
+ at STRING{rezensionen     = {Bücher und Rezensionen}}
+ at STRING{schonimmer      = {Was Sie schon immer über {\TeX} wissen wollten, \dots}}
+ at STRING{spielplan       = {Spielplan}}
+ at STRING{theaterkasse    = {Von der Theaterkasse}}
+ at STRING{theatertage     = {{\TeX}-Theatertage}}
+ at STRING{tippstricks     = {Tipps und Tricks}}
 
 @Book{PostScript,
   Author         = {Kollock, Nikolai G.},

Modified: trunk/Master/texmf-dist/doc/generic/pstricks/pst-news21.pdf
===================================================================
(Binary files differ)

Modified: trunk/Master/texmf-dist/doc/generic/pstricks/pst-news21.tex
===================================================================
--- trunk/Master/texmf-dist/doc/generic/pstricks/pst-news21.tex	2021-08-26 13:22:58 UTC (rev 60326)
+++ trunk/Master/texmf-dist/doc/generic/pstricks/pst-news21.tex	2021-08-26 21:23:35 UTC (rev 60327)
@@ -1,18 +1,13 @@
-%% $Id: pst-news21.tex 157 2021-08-23 18:21:41Z herbert $
+%% $Id: pst-news21.tex 164 2021-08-25 19:26:42Z herbert $
 \documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
-    headinclude=false,footinclude=false,twoside]{scrartcl}
+    headinclude=false,footinclude=false,twoside]{pst-doc}
+    
+\usepackage{libertinus}
 
 \listfiles
-\usepackage[T1]{fontenc}
-\usepackage{listings}
-\lstset{basicstyle=\ttfamily\small}
-\usepackage{libertinus}
-\usepackage[scaled=0.88]{beramono}
-\usepackage{babel}
-\usepackage[svgnames,dvipsnames,x11names,pspdf=-dALLOWPSTRANSPARENCY]{pstricks-pdf}
-\usepackage{pstricks-add}
-\usepackage{showexpl}
-\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+%\usepackage[svgnames,dvipsnames,x11names,pspdf=-dALLOWPSTRANSPARENCY]{pstricks-pdf}
+\usepackage{showexpl,pst-arrow}
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={},extendedchars},
     escapechar=?}
 
 \usepackage{biblatex}
@@ -24,7 +19,7 @@
 \author{Herbert Voß}
 \date{\today}
 
-\maketitle
+\settitle
 
 \tableofcontents
 
@@ -44,9 +39,10 @@
 
 \subsection{Arrows}
 
-There are new arrow tyoes and a new optional argument \texttt{tipcolor}:
 
+There are new arrow types and a new optional argument \texttt{tipcolor}:
 
+
 \begin{LTXexample}[width=5cm]
 \begin{pspicture}[showgrid](4.2,3.25)
 \psline{-T>}(0,1)(4,1)
@@ -55,6 +51,52 @@
 \end{pspicture}
 \end{LTXexample}
 
+
+
+\LPack{pstricks} defines the following "`arrows"':
+
+  \def\myline#1{\psline[linecolor=red,linewidth=0.5pt,arrowscale=1.5]{#1}(0,1ex)(1.3,1ex)}%
+  \def\mylineA#1{\psline[linecolor=red,linewidth=0.5pt,arrowscale=4.5]{#1}(0,1ex)(2,1ex)}%
+  \psset{arrowscale=1.5}
+  \begin{longtable}{@{} c @{\qquad} p{3cm} l @{}}%
+    Value & Example & Name \\[2pt]\hline
+    \Lnotation{-}      & \myline{-}      & None\\
+    \Lnotation{<->}    & \myline{<->}    & Arrowheads.\\
+    \Lnotation{>-<}    & \myline{>-<}    & Reverse arrowheads.\\
+    \Lnotation{<{<}-{>}>}  & \myline{<<->>}  & Double arrowheads.\\
+    \Lnotation{{>}>-{<}<}  & \myline{>>-<<}  & Double reverse arrowheads.\\
+    \Lnotation{{|}-{|}}    & \myline{|-|}    & T-bars, flush to endpoints.\\
+    \Lnotation{{|}*-{|}*}  & \myline{|*-|*}  & T-bars, centered on endpoints.\\
+    \Lnotation{[-]}    & \myline{[-]}    & Square brackets.\\
+    \Lnotation{]-[}    & \myline{]-[}    & Reversed square brackets.\\
+    \Lnotation{(-)}    & \myline{(-)}    & Rounded brackets.\\
+    \Lnotation{)-(}    & \myline{)-(}    & Reversed rounded brackets.\\
+    \Lnotation{o-o}    & \myline{o-o}    & Circles, centered on endpoints.\\
+    \Lnotation{*-*}    & \myline{*-*}    & Disks, centered on endpoints.\\
+    \Lnotation{oo-oo}  & \myline{oo-oo}  & Circles, flush to endpoints.\\
+    \Lnotation{**-**}  & \myline{**-**}  & Disks, flush to endpoints.\\
+    \Lnotation{{|}<->{|}}  & \myline{|<->|}  & T-bars and arrows.\\
+    \Lnotation{{|}>-<{|}}  & \myline{|>-<|}  & T-bars and reverse arrows.\\
+    \Lnotation{h-h{}}   & \myline{h-h}    & left/right hook arrows.\\
+    \Lnotation{H-H{}}   & \myline{H-H}    & left/right hook arrows.\\
+    \Lnotation{v-v}   & \myline{v-v}    & left/right inside vee arrows.\\
+    \Lnotation{V-V}   & \myline{V-V}    & left/right outside vee arrows.\\
+    \Lnotation{f-f}   & \myline{f-f}    & left/right inside filled arrows.\\
+    \Lnotation{F-F}   & \myline{F-F}    & left/right outside filled arrows.\\
+    \Lnotation{t-t}   & \myline{t-t}    & left/right inside slash arrows.\\[5pt]
+    \Lnotation{T-T}   & \myline{T-T}    & left/right outside slash arrows.\\
+%
+    \Lnotation{<D-D>}   & \mylineA{<D-D>}    & curved  arrows.\\
+    \Lnotation{<D<D-D>D>}   & \mylineA{<D<D-D>D>}    & curved doubled arrows.\\
+    \Lnotation{D>-<D}   & \mylineA{D>-<D}    & curved  arrows, tip inside.\\
+    \Lnotation{<T-T>}   & \myline{<T-T>}    & curved lines.\\
+%    \Lnotation{>T-T<}   & \mylineA{>T-T<}    & \TikZ\ like arrows.\\
+    \hline
+  \end{longtable}
+
+
+
+
 %\@namedef{psas at T>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowT }%	hv 20210531
 %\@namedef{psas@<T}{ %	hv 20071211
 %  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowT
@@ -61,6 +103,8 @@
 %}
 
 
+With version 3.04 all arrow specific base code is moved to the file \LPack{pstricks-arrows}, which
+is not of interest for the default user..
 
 \subsection{Symbolfont}
 
@@ -83,6 +127,68 @@
 \end{verbatim}
 
 
+\subsection{Fillstyle \texttt{penrose}}
+
+There was a bug if this fillstyle was used together with a line sequence.
+
+
+\psset{unit=1cm}
+\centering\vspace{5cm}
+\pspicture[showgrid=false](-0.5\linewidth,-4.5)(0.5\linewidth,5)
+\rput(0,0){\parbox{4.5cm}{%
+  \psclip{\psccurve[linestyle=none,fillstyle=penrose,psscale=.2](-3,-2)
+  (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)}
+  ``One of the best new plays I have seen all year: cool, poetic,
+  ironic \ldots'' proclaimed \emph{The Guardian} upon the London
+  premiere of this extraordinary play about a Czech director and
+  his actress wife, confronting exile in America.
+  \endpsclip}}%
+  \psline[linearc=0.5cm,showpoints=true,dotstyle=|]{<<->>}(-1,-2)(0,-4)(1,-2)
+\endpspicture
+
+
+\begin{lstlisting}
+\pspicture[showgrid=false](-0.5\linewidth,-4.5)(0.5\linewidth,5)
+\rput(0,0){\parbox{4.5cm}{%
+  \psclip{\psccurve[linestyle=none,fillstyle=penrose,psscale=.2](-3,-2)
+  (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)}
+ ``One of the best new plays I have seen all year: cool, poetic,
+  ironic \ldots'' proclaimed \emph{The Guardian} upon the London
+  premiere of this extraordinary play about a Czech director and
+  his actress wife, confronting exile in America.
+  \endpsclip}}%
+  \psline[linearc=0.5cm,showpoints=true,dotstyle=|]{<<->>}(-1,-2)(0,-4)(1,-2)
+\endpspicture
+\end{lstlisting}
+
+
+\pspicture[showgrid=false](-0.5\linewidth,-4.5)(0.5\linewidth,5)
+\rput(0,0){\parbox{4.5cm}{%
+  \psclip{\psccurve[linestyle=none,fillstyle=penroseA,psscale=.2](-3,-2)
+  (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)}\color{white}
+  ``One of the best new plays I have seen all year: cool, poetic,
+  ironic \ldots'' proclaimed \emph{The Guardian} upon the London
+  premiere of this extraordinary play about a Czech director and
+  his actress wife, confronting exile in America.
+  \endpsclip}}%
+  \psline[linearc=0.5cm,showpoints=true,dotstyle=|]{<<->>}(-1,-2)(0,-4)(1,-2)
+\endpspicture
+
+\begin{lstlisting}
+\pspicture[showgrid=false](-0.5\linewidth,-4.5)(0.5\linewidth,5)
+\rput(0,0){\parbox{4.5cm}{%
+  \psclip{\psccurve[linestyle=none,fillstyle=penrose,psscale=.2](-3,-2)
+  (0.3,-1.5)(2.3,-2)(4.3,-1.5)(6.3,-2)(8,-1.5)(8,2)(-3,2)}\color{white}
+  ``One of the best new plays I have seen all year: cool, poetic,
+  ironic \ldots'' proclaimed \emph{The Guardian} upon the London
+  premiere of this extraordinary play about a Czech director and
+  his actress wife, confronting exile in America.
+  \endpsclip}}%
+  \psline[linearc=0.5cm,showpoints=true,dotstyle=|]{<<->>}(-1,-2)(0,-4)(1,-2)
+\endpspicture\end{lstlisting}
+
+
+
 \nocite{*}
 \printbibliography
 

Modified: trunk/Master/texmf-dist/dvips/pstricks/pstricks.pro
===================================================================
--- trunk/Master/texmf-dist/dvips/pstricks/pstricks.pro	2021-08-26 13:22:58 UTC (rev 60326)
+++ trunk/Master/texmf-dist/dvips/pstricks/pstricks.pro	2021-08-26 21:23:35 UTC (rev 60327)
@@ -1,7 +1,7 @@
-% $Id: pstricks.pro 152 2021-08-19 11:24:26Z herbert $
+% $Id: pstricks.pro 164 2021-08-25 19:26:42Z herbert $
 %
 %% PostScript prologue for pstricks.tex.
-%% Version 1.35, 2021/05/21
+%% Version 1.36, 2021/08/25
 %%
 %% This program can be redistributed and/or modified under the terms
 %% of the LaTeX Project Public License Distributed from CTAN archives
@@ -306,6 +306,7 @@
 } def
 %
 /PenroseFill {%	 on stack: scaling factor
+  20 dict begin
   /Scale ED
 %  1 exch div round /penroseFactor ED 
 %  a 0 dtransform round exch round exch
@@ -318,20 +319,22 @@
 %  a Div cvi /x1 ED /y2 y2 y1 sub def 
   clip 
   newpath 
-gsave
+  gsave
   220 150 translate
   Scale dup scale
   systemdict /setstrokeadjust known { true setstrokeadjust } if 
   /I/S/L/W/G/+/Z/F/E/D[/def/exch/for{E D}/add{s E get mul}
- { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall
+    { Z -36.2001 1 33 }{25 E S rlineto}{/q Z dup q G E q 1 + G}{Z 2 2}]{cvx def}forall
   [0 72 1008 {dup sin E cos }F ]1 setlinejoin/s W{/a W{/b I 10{/i I 4{/m I moveto
   i m +/j I 10{/l Z b m l + G a l G sub s m get div .2 + floor .3 + 25
   mul j l + S rmoveto}F i L j L stroke }F}F}F}F 
   grestore 
 %  pop pop 
+  end % userdict
 } def
 %
 /PenroseFillA {%  on stack: scaling factor, border color, kite color, dart color
+  30 dict begin
   /Scale ED
   Scale dup scale
   /border_colour ED 
@@ -367,6 +370,7 @@
   dup f exch neg exp dup scale
   5 {kite 72 rotate } repeat stroke 
   grestore
+  end % userdict
 } def
 %
 %

Added: trunk/Master/texmf-dist/tex/generic/pstricks/pstricks-arrows.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pstricks/pstricks-arrows.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/generic/pstricks/pstricks-arrows.tex	2021-08-26 21:23:35 UTC (rev 60327)
@@ -0,0 +1,572 @@
+%% $Id: pstricks-arrows.tex 164 2021-08-25 19:26:42Z herbert $
+%%
+%% This is file `pstricks-arrows.tex',
+%%
+%% IMPORTANT NOTICE:
+%%
+%% Herbert Voss <hvoss at tug.org>
+%%
+%% This program can be redistributed and/or modified under the terms
+%% of the LaTeX Project Public License Distributed from CTAN archives
+%% in directory macros/latex/base/lppl.txt.
+%%
+%% DESCRIPTION:
+%%   `pstricks-arrows' base code for arrows 
+%%
+%% fileversion and filedate see main file pstricks.tex
+%%
+\def\pst at getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
+% ------------------------- hv 1.10 beg ------------------------
+%\def\pst@@getarrows#1#2{\addto at par{arrows=#2}#1}
+\def\pst@@getarrows#1#2{%
+  \def\pst at tempa{#2}% prevent empty arrow arguments, to allow \psline{}(...)(...)
+  \ifx\pst at tempa\@empty
+    \addto at par{arrows=-}%
+  \else
+    \addto at par{arrows=#2}%
+  \fi
+  #1%
+}
+% ------------------------- hv 1.10 end ------------------------
+\def\pst at arrowtype{%
+  \ifx\psk at arrowB\@empty 0 \else -2 \fi
+  \ifx\psk at arrowA\@empty 0 \else -1 \fi
+  add }
+%
+\def\pst at addarrowdef{%
+  \addto at pscode{%
+    /ArrowA {
+      \ifx\psk at arrowA\@empty
+        \pst at oplineto
+      \else
+        \pst at arrowdef{A}
+        moveto
+      \fi
+    } def
+    /ArrowB { \ifx\psk at arrowB\@empty \else \pst at arrowdef{B} \fi } def
+}}
+%
+\def\pst at arrowdef#1{%
+  \ifnum\pst at repeatarrowsflag>\z@
+    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
+  \fi
+  \tx at BeginArrow 
+  \psk at arrowscale
+  \@nameuse{psas@\@nameuse{psk at arrow#1}}
+  \tx at EndArrow
+}
+%
+\def\pst at repeatarrows{%
+  \addto at pscode{%
+    gsave
+    \ifx\psk at arrowA\@empty\else ArrowAc ArrowA pop pop \fi
+    \ifx\psk at arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
+    grestore
+}}
+
+\define at key[psset]{pstricks}{tipcolor}[black]{\def\pst at tipcolor{#1}}
+\psset[pstricks]{tipcolor=}
+
+\def\ps at check@tipcolor{%
+  \expandafter\if\expandafter$\pst at tipcolor$
+    \pst at usecolor\pslinecolor
+  \else
+    \pst at usecolor\pst at tipcolor
+  \fi
+}
+%
+\def\tx at EndDot{ \ps at check@tipcolor\space EndDot }
+%
+% v : Vee arrow (inside)                 v,V,f and F by Christophe FOUREY
+% V : Vee arrow (outside)
+% f : Filled vee arrow (inside)
+% F : Filled vee arrow (outside)
+
+\def\psk at arrowA{}
+\def\psk at arrowB{}
+\def\pst at arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,%
+    <D-D>,D>-<D,<D<D-D>D>,<T-T>,|<*->|*,|<->|,v-v,V-V,f-f,F-F,t-t,T-T}
+\begingroup
+  \catcode`\<=13
+  \catcode`\>=13
+  \catcode`\|=13
+  \gdef\pst at activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
+\endgroup
+\def\tx at BeginArrow{BeginArrow }
+\def\tx at EndArrow{EndArrow }
+%
+\def\tx at Arrow{ \tx at setStrokeTransparency Arrow }% hv 2008-01-13
+\def\tx at ArrowD{ \tx at setStrokeTransparency ArrowD }% hv 2008-01-13
+\def\tx at ArrowT{ \tx at setStrokeTransparency ArrowT }% hv 2021-05-31
+%
+\@namedef{psas@<|}{ 
+    \psk at tbarsize\space \tx at Tbar
+    0 CLW 2 div T
+    newpath
+    true 
+    \psk at arrowinset 
+    \psk at arrowlength 
+    \psk at arrowsize 
+    \tx at Arrow 
+}
+% ]-[ arrow
+\def\tx at BracketOut{BracketOut }
+\@namedef{psas@[}{%
+  /BracketOut {%
+  CLW mul add dup CLW sub 2 div
+%/x ED mul CLW add
+  /x ED mul neg
+  /y ED
+  /z CLW 2 div def
+  x neg y moveto
+  x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
+  \psk at bracketlength\space \psk at tbarsize\space \tx at BracketOut
+}
+% )-( arrow
+\def\tx at RoundBracketOut{ \tx at setStrokeTransparency RoundBracketOut }% hv 2008-01-13
+\@namedef{psas@(}{%
+  /RoundBracketOut {%
+    CLW mul add dup 2 div
+%/x ED mul
+    /x ED mul neg
+    /y ED
+    /mtrx CM def
+    0 CLW
+    2 div T x y mul 0 ne { x y scale } if
+    1 1 moveto
+    .85 .5 .35 0 0 0 curveto
+    -.35 0 -.85 .5 -1 1 curveto
+    mtrx setmatrix stroke 0 CLW moveto } def
+  \psk at rbracketlength\space \psk at tbarsize\space \tx at RoundBracketOut
+}
+% end of new definitions of the missing arrows ---- hv 1.12
+\@namedef{psas@>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow }
+\@namedef{psas@>>}{%
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+  0 h T gsave newpath
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+  CP grestore CP newpath moveto 2 copy 
+  CLW \pst at arrowscale\space div SLW % set the original line width  
+  L stroke moveto
+}
+\@namedef{psas@<}{true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow}
+\@namedef{psas@<<}{
+  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+  CP newpath moveto 0 a neg 
+  gsave
+  CLW \pst at arrowscale\space div SLW % set the original line width  
+  L stroke 
+  grestore
+  0 h neg T
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+}
+\@namedef{psas at D>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD }%	hv 20071211
+\@namedef{psas at D>D>}{ %	hv 20071211
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
+  0 h Inset sub T gsave newpath
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
+  CP grestore moveto 
+}
+\@namedef{psas@<D}{ %	hv 20071211
+  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
+}
+\@namedef{psas@<D<D}{ %	hv 20071211
+  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
+  CP newpath moveto 0 a neg L stroke 0 h neg T
+  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
+}
+\@namedef{psas at T>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowT }%	hv 20210531
+\@namedef{psas@<T}{ %	hv 20071211
+  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowT
+}
+
+\define at key[psset]{pstricks}{tbarsize}[2pt 5]{%
+  \pst at expandafter\pst at getdimnum{#1} 0 {} {}\@nil
+  \edef\psk at tbarsize{\pst at number\pst at dimg \pst at tempg}}
+\psset[pstricks]{tbarsize=2pt 5}
+%
+\def\tx at Tbar{Tbar }
+\@namedef{psas@|}{\psk at tbarsize \tx at Tbar}
+\@namedef{psas@|*}{0 CLW -2 div T \psk at tbarsize \tx at Tbar}
+\@namedef{psas@>|}{%
+  \psk at tbarsize \tx at Tbar
+  0 CLW 2 div T
+  newpath
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+}
+\@namedef{psas@>|*}{%
+  0 CLW -2 div T
+  \psk at tbarsize \tx at Tbar
+  0 CLW 2 div T
+  newpath
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+}
+%
+\define at key[psset]{pstricks}{bracketlength}[0.15]{\pst at checknum{#1}\psk at bracketlength}
+\psset[pstricks]{bracketlength=.15}
+\def\tx at Bracket{Bracket }
+\@namedef{psas@]}{\psk at bracketlength \psk at tbarsize \tx at Bracket}
+\define at key[psset]{pstricks}{rbracketlength}[0.15]{\pst at checknum{#1}\psk at rbracketlength}
+\psset[pstricks]{rbracketlength=.15}
+\def\tx at RoundBracket{RoundBracket }
+\@namedef{psas@)}{\psk at rbracketlength \psk at tbarsize \tx at RoundBracket}
+%
+\def\psas at c{1 \psas@@c}
+\def\psas at cc{0 CLW 2 div T 1 \psas@@c}
+\def\psas at C{2 \psas@@c}
+\def\psas@@c{%
+  setlinecap
+  0 0 moveto
+  0 0.1 L % changed value from 0.5 to 0.1
+  stroke
+  0 0 moveto }
+%
+\def\psas@{}
+%
+\define at key[psset]{pstricks}{arrowLW}{\pst at getlength{#1}\psk at arrowLW}
+\psset[pstricks]{arrowLW=0}
+% arrowLW as LineWidth for the circled line ends
+%
+\def\psas at o{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+  {\pst at usecolor\psfillcolor true} false \psk at dotsize \tx at EndDot }
+\def\psas at oo{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+  {\pst at usecolor\psfillcolor true} true \psk at dotsize \tx at EndDot }
+\@namedef{psas@*}{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+  {false} false \psk at dotsize \tx at EndDot }
+\@namedef{psas@**}{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
+  {false} true \psk at dotsize \tx at EndDot }
+%
+\define at key[psset]{pstricks}{arrows}[-]{%
+  \begingroup
+    \pst at activearrows
+    \xdef\pst at tempg{#1}%
+  \endgroup
+  \expandafter\psset@@arrows\pst at tempg\@empty-\@empty\@nil
+  \if at pst\else\@pstrickserr{Bad arrows specification: #1}\@ehpa\fi}
+\def\psset@@arrows#1-#2\@empty#3\@nil{%
+  \@psttrue
+  \def\ps at next##1,#1-##2,##3\@nil{\def\pst at tempg{##2}}%
+  \expandafter\ps at next\pst at arrowtable,#1-#1,\@nil
+  \@ifundefined{psas@\pst at tempg}{\@pstfalse\def\psk at arrowA{}}{\let\psk at arrowA\pst at tempg}%
+  \@ifundefined{psas@#2}{\@pstfalse\def\psk at arrowB{}}{\def\psk at arrowB{#2}}}
+\psset[pstricks]{arrows=-}
+%
+\define at key[psset]{pstricks}{arrowscale}[1]{%                                   hv --1.12
+  \pst at getscale{#1}\psk at arrowscale
+  \pst@@arrowscale at i#1 \@nil}%           hv --1.12
+\def\pst@@arrowscale at i#1 #2\@nil{\edef\pst at arrowscale{#1}}% hv --1.12
+\psset[pstricks]{arrowscale=1}
+%
+\define at key[psset]{pstricks}{arrowsize}[1.5pt 2]{%
+  \pst at expandafter\pst at getdimnum{#1} 0 {} {}\@nil
+  \edef\psk at arrowsize{\pst at number\pst at dimg \pst at tempg}%
+}
+\psset[pstricks]{arrowsize=1.5pt 2}
+\define at key[psset]{pstricks}{arrowlength}[1.4]{\pst at checknum{#1}\psk at arrowlength}
+\psset[pstricks]{arrowlength=1.4}
+\define at key[psset]{pstricks}{arrowinset}[0.4]{\pst at checknum{#1}\psk at arrowinset}%
+\psset[pstricks]{arrowinset=0.4}
+% Vee arrow
+\define at key[psset]{pstricks}{veearrowlength}[3mm]{\pst at getlength{#1}\psk at veearrowlength}
+\psset[pstricks]{veearrowlength=3mm} % default projected length
+\define at key[psset]{pstricks}{veearrowangle}[30]{\pst at getangle{#1}\psk at veearrowangle}
+\psset[pstricks]{veearrowangle=30} % default angle
+\define at key[psset]{pstricks}{veearrowlinewidth}[0.35mm]{\pst at getlength{#1}\psk at veearrowlinewidth}
+\psset[pstricks]{veearrowlinewidth=0.35mm} % default vee arrow line width
+
+% Filled vee arrow
+\define at key[psset]{pstricks}{filledveearrowlength}[3mm]{\pst at getlength{#1}\psk at filledveearrowlength}
+\psset[pstricks]{filledveearrowlength=3mm} % default projected length
+\define at key[psset]{pstricks}{filledveearrowangle}[15]{\pst at getangle{#1}\psk at filledveearrowangle}
+\psset[pstricks]{filledveearrowangle=15} % default angle
+\define at key[psset]{pstricks}{filledveearrowlinewidth}[0.35mm]{\pst at getlength{#1}\psk at filledveearrowlinewidth}
+\psset[pstricks]{filledveearrowlinewidth=0.35mm} % default vee arrow line width
+\define at key[psset]{pstricks}{arrowlinestyle}[solid]{%
+  \@ifundefined{psls@#1}%
+    {\@pstrickserr{Line style `#1' not defined}\@eha}%
+    {\def\psarrowlinestyle{#1}}}
+\psset[pstricks]{arrowlinestyle=solid} % default
+\pst at def{VeeArrow}<%
+    1 setlinecap            % round caps
+    1 setlinejoin            % round join
+    setlinewidth            % vee arrow line width
+    /y ED                % projected length
+    2 div /a ED                % angle (divide by 2)
+    /t ED                % false = inside, true = outside
+    a sin a cos div y mul /x ED        % perpendicular length : x=tan(a).y
+    t { 1 -1 scale } if            % if outside : symmetry
+    x neg y moveto            % point #1
+    0 0 L                % point #2
+    x y L                % point #3
+    { closepath gsave fill grestore } if    % if filled : close and fill
+    \@nameuse{psls@\psarrowlinestyle}
+    \ps at check@tipcolor
+    stroke                % draw line
+    0 t { y 2 mul } { 0 } ifelse moveto>    % if outside : twice longer line
+
+% VeeArrow : filled?   outside?   (total) angle   (projected) length   (arrow) line width
+
+\@namedef{psas@|}{\ps at check@tipcolor \psk at tbarsize \tx at Tbar}
+
+\@namedef{psas at v}{%
+    \ps at check@tipcolor
+  false false \psk at veearrowangle \psk at veearrowlength \psk at veearrowlinewidth \tx at VeeArrow}
+\@namedef{psas at V}{%
+    \ps at check@tipcolor
+  false true \psk at veearrowangle \psk at veearrowlength \psk at veearrowlinewidth \tx at VeeArrow}
+\@namedef{psas at f}{%
+    \ps at check@tipcolor
+  true false \psk at filledveearrowangle \psk at filledveearrowlength \psk at filledveearrowlinewidth \tx at VeeArrow}
+\@namedef{psas at F}{%
+    \ps at check@tipcolor
+  true true \psk at filledveearrowangle \psk at filledveearrowlength \psk at filledveearrowlinewidth \tx at VeeArrow}
+
+% And An another arrowhead
+% architectural tick / oblique arrow
+
+% Tick arrow
+\define at key[psset]{pstricks}{tickarrowlength}[1.5mm]{\pst at getlength{#1}\psk at tickarrowlength}
+\psset[pstricks]{tickarrowlength=1.5mm} % default projected length
+\define at key[psset]{pstricks}{tickarrowlinewidth}[0.35mm]{\pst at getlength{#1}\psk at tickarrowlinewidth}
+\psset[pstricks]{tickarrowlinewidth=0.35mm} % default tick arrow line width
+
+\pst at def{TickArrow}<%
+    1 setlinecap            % round caps
+    1 setlinejoin            % round join
+    setlinewidth            % tick line width
+    /y ED                % projected length
+    /t ED                % false = normal, true = reversed
+    t { 1 -1 scale } if            % if reversed : symmetry
+    y neg y moveto            % point #1
+    y y neg L                % point #2
+    \@nameuse{psls@\psarrowlinestyle}
+    \ps at check@tipcolor
+    stroke                % draw line
+    0 0 moveto>                % origin
+
+
+\@namedef{psas at t}{ \ps at check@tipcolor\space false \psk at tickarrowlength \psk at tickarrowlinewidth \tx at TickArrow }
+\@namedef{psas at T}{ \ps at check@tipcolor\space true \psk at tickarrowlength \psk at tickarrowlinewidth \tx at TickArrow }
+
+\pst at def{ArrowD}< % the sides are drawn as curves (hv 20071211)
+  CLW mul add dup 
+  2 div /w ED 
+  mul dup /h ED 
+  mul /Inset ED 
+  { 0 h T 1 -1 scale } if % changes the direction
+% we use y=w/h^2 * x^2 as equation for the control points
+% for the coordinates the arrow is seen from top to bottom
+% the bottom (tip) is (0;0)
+  w neg h moveto % lower left of >
+  w 9 div 4 mul neg h 3 div 2 mul
+  w 9 div neg       h 3 div  
+  0 0 curveto    % tip of >
+  w 9 div        h 3 div  
+  w 9 div 4 mul  h 3 div 2 mul
+  w h curveto % upper left of >
+  w neg Inset neg rlineto % move to x=0 and inset
+  gsave 
+    \ps at check@tipcolor
+  fill grestore >
+%
+\pst at def{ArrowT}< % like tikz
+  CLW mul add dup 
+  2 div /w ED 
+  mul dup /h ED 
+  mul /Inset ED 
+  { 0 h T 1 -1 scale } if % changes the direction
+  w 2 mul /w exch def
+  w neg h moveto % lower left of >
+  w 9 div 4 mul neg h 3 div 2 mul
+  w 9 div neg       h 3 div  
+  0 0 curveto    % tip of >
+  w 9 div        h 3 div  
+  w 9 div 4 mul  h 3 div 2 mul
+  w h curveto % upper left of >
+%  w neg Inset neg rlineto % move to x=0 and inset
+%  CLW SLW
+%  1 0 0 setrgbcolor
+  2 setlinejoin
+    \ps at check@tipcolor
+  stroke
+  0 0 moveto >
+%
+%
+% HookLeft/RightArrow
+\newdimen\pshooklength
+\newdimen\pshookwidth
+\define at key[psset]{pstricks}{hooklength}[3mm]{\pssetlength\pshooklength{#1}}
+\define at key[psset]{pstricks}{hookwidth}[1mm]{\pssetlength\pshookwidth{#1}}
+%\psset{hooklength=3mm,hookwidth=1mm}
+%
+\edef\pst at arrowtable{\pst at arrowtable,H-H,h-h} % add new arrow
+\def\tx at RHook{RHook }         % PostScript name
+\def\tx at Rhook{Rhook }         % PostScript name
+
+\@namedef{psas at H}{%
+  /RHook {
+    /x ED                     % hook width
+    /y ED                     % hook length 
+    /z CLW 2 div def          % save it
+    x y moveto                % goto first point
+    x 0 0 0 0 y 
+    curveto                   % draw Bezier
+    stroke 
+    0 y moveto                % define current point
+  } def
+    \ps at check@tipcolor
+  \pst at number\pshooklength
+  \pst at number\pshookwidth
+  \tx at RHook 
+}
+\@namedef{psas at h}{%
+  /Rhook {
+    CLW mul 			% size * CLW
+    add dup 			% +length  size*CLW+length size*CLW+length 
+    2 div /w ED	 		% (size*CLW+length)/2  -> w 
+    mul dup /h ED mul 		% (size*CLW+length)
+    /a ED  
+    w neg h abs moveto 0 0 L 
+    gsave 
+    \ps at check@tipcolor
+    stroke grestore 
+  } def
+  0 \psk at arrowlength \psk at arrowsize \tx at Rhook 
+}
+% New parameter "arrowfill", with default as "true"
+\define at boolkey[psset]{pstricks}[ps]{ArrowFill}[true]{}
+%
+% Modification of the PostScript macro Arrow to choose to fill or not the arrow
+% (it require to restore the current linewidth, despite of the scaling)
+\pst at def{Arrow}<{%
+    CLW mul add dup 2 div
+    /w ED mul dup
+    /h ED mul
+    /a ED { 0 h T 1 -1 scale } if
+    gsave
+    \ifpsArrowFill\else\pst at number\pslinewidth \pst at arrowscale\space div SLW \fi
+    \ps at check@tipcolor    
+    w neg h moveto
+    0 0 L w h L w neg a neg rlineto
+    \ifpsArrowFill gsave 
+       \tx at setStrokeTransparency
+       fill  
+       grestore \else gsave closepath 
+    \ps at check@tipcolor
+       stroke grestore \fi
+    grestore
+    0 h a sub moveto
+}>
+%
+\define at key[psset]{pstricks}{nArrowsA}[2]{\def\psk at nArrowsA{#1}}
+\define at key[psset]{pstricks}{nArrowsB}[2]{\def\psk at nArrowsB{#1}}
+\define at key[psset]{pstricks}{nArrows}[2]{\def\psk at nArrowsA{#1}\def\psk at nArrowsB{#1}}
+\psset{nArrows=2}
+%
+\@namedef{psas@>>}{%
+    \psk at nArrowsA\space 1 sub {
+      false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+      0 h a sub T
+    } repeat
+    gsave
+    newpath
+    false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+    CP
+    grestore
+    moveto
+}
+%
+\@namedef{psas@<<}{%
+    true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+    0 h neg a add T
+  \psk at nArrowsB\space 2 sub {
+    false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+    0 h neg a add T
+  } repeat
+  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
+  0 h a 5 mul 2 div sub moveto
+}
+%
+% DG addition begin - Dec. 18/19, 1997 and Oct. 11, 2002
+% Adapted from \psset at arrows
+\define at key[psset]{pstricks}{ArrowInside}{%
+  \def\pst at tempArrow{#1}%
+  \ifx\pst at tempArrow\@empty \def\psk at ArrowInside{} %
+  \else%
+    \begingroup%
+      \pst at activearrows%
+      \xdef\pst at tempg{<#1}%
+    \endgroup%
+    \expandafter\psset@@ArrowInside\pst at tempg\@empty-\@empty\@nil%
+    \if at pst\else\@pstrickserr{Bad intermediate arrow specification: #1}\@ehpa\fi%
+  \fi%
+}
+% Adapted from \psset@@arrows
+\def\psset@@ArrowInside#1-#2\@empty#3\@nil{%
+  \@psttrue
+  \def\next##1,#1-##2,##3\@nil{\def\pst at tempg{##2}}%
+  \expandafter\next\pst at arrowtable,#1-#1,\@nil
+  \@ifundefined{psas@#2}%
+    {\@pstfalse\def\psk at ArrowInside{}}%
+    {\def\psk at ArrowInside{#2}}%
+}
+% Default value empty
+\psset{ArrowInside={}}
+% Modified version of \pst at addarrowdef
+\def\pst at addarrowdef{%
+  \addto at pscode{%
+    /ArrowA {
+      \ifx\psk at arrowA\@empty
+        \pst at oplineto
+      \else
+	\pst at arrowdef{A}
+	moveto
+      \fi
+    } def
+    /ArrowB { \ifx\psk at arrowB\@empty \else \pst at arrowdef{B} \fi } def
+% DG addition
+    /ArrowInside { 
+      \ifx\psk at ArrowInside\@empty \else \pst at arrowdefA{Inside} \fi 
+    } def
+  }%
+}
+% Adapted from \pst at arrowdef
+\def\pst at arrowdefA#1{%
+  \ifnum\pst at repeatarrowsflag>\z@ /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c\fi 
+  \tx at BeginArrow
+  \psk at arrowscale
+  \@nameuse{psas@\@nameuse{psk at Arrow#1}}
+  \tx at EndArrow%
+}
+% ArrowInsidePos parameter (default value 0.5)
+\define at key[psset]{pstricks}{ArrowInsidePos}[0.5]{\pst at checknum{#1}\psk at ArrowInsidePos}%
+%\psset{ArrowInsidePos=0.5}
+
+\def\pst at repeatarrowsflag{\z@}
+\def\pst at setrepeatarrowsflag{%
+  \edef\pst at repeatarrowsflag{%
+    \ifdim\psk at border\p@>\z@ 1\else\ifpsdoubleline 1\else
+      \ifpsshadow 1\else \z@\fi\fi\fi}}%
+%
+% Redefinition of the PostScript /Line macro to print the intermediate
+% arrow on each segment of the line
+%
+\define at key[psset]{pstricks}{ArrowInsideNo}[1]{\pst at checknum{#1}\psk at ArrowInsideNo}% hv 20031001
+\define at key[psset]{pstricks}{ArrowInsideOffset}[0]{\pst at checknum{#1}\psk at ArrowInsideOffset}% hv 20031001
+%\psset{ArrowInsideNo=1,ArrowInsideOffset=0}
+%
+\def\arrowType at H{H}
+
+\def\resetArrowOptions{%
+  \def\pst at linetype{0}%
+  \psset[pstricks]{%
+    hooklength=3mm, hookwidth=1mm,
+    ArrowFill=true,
+    ArrowInside={}, ArrowInsidePos=0.5,
+    ArrowInsideNo=1, ArrowInsideOffset=0,
+}}
+%
+\resetArrowOptions
+%
+%% END: pstricks-arrows.tex
+\endinput


Property changes on: trunk/Master/texmf-dist/tex/generic/pstricks/pstricks-arrows.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex	2021-08-26 13:22:58 UTC (rev 60326)
+++ trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex	2021-08-26 21:23:35 UTC (rev 60327)
@@ -18,10 +18,11 @@
 \csname PSTricksLoaded\endcsname
 \let\PSTricksLoaded\endinput  
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% !! loading additional TeX packages see line 38,39 and 72ff
-%% !! loading config file pstricks.con    line 439 
-%% !! loading pro files                   line 452ff 
-%% !! fileversion and date see            line 83 
+%% !! loading additional TeX packages see line 43,44 and 77ff
+%% !! loading config file pstricks.con    line 445 
+%% !! loading pro files                   line 458ff 
+%% !! fileversion and date see            line 84f 
+%% !! loaded arrow stuff                  line 1482
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 %
 \edef\PstAtCode{\the\catcode`\@}
@@ -80,8 +81,8 @@
 \fi
 \let\pgfforeach\foreach
 %
-\def\fileversion{3.03}
-\def\filedate{2021/08/23}
+\def\fileversion{3.05}
+\def\filedate{2021/08/25}
 \pst at addfams{pstricks}
 %
 %\define at boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
@@ -1103,6 +1104,8 @@
 \psset[pstricks]{doublesep=1.25\pslinewidth}
 \define at key[psset]{pstricks}{doublecolor}[white]{\pst at getcolor{#1}\psdoublecolor}
 \psset[pstricks]{doublecolor=white}
+
+\let\pst at setrepeatarrowsflag\relax
 %
 \define at boolkey[psset]{pstricks}[ps]{shadow}[true]{\pst at setrepeatarrowsflag}
 \psset[pstricks]{shadow=false}
@@ -1113,12 +1116,6 @@
 \define at key[psset]{pstricks}{shadowcolor}[darkgrey]{\pst at getcolor{#1}\psshadowcolor}
 \psset[pstricks]{shadowcolor=darkgray}
 %
-\def\pst at repeatarrowsflag{\z@}
-\def\pst at setrepeatarrowsflag{%
-  \edef\pst at repeatarrowsflag{%
-    \ifdim\psk at border\p@>\z@ 1\else\ifpsdoubleline 1\else
-      \ifpsshadow 1\else \z@\fi\fi\fi}}
-%
 \def\psls at none{}
 \def\psls at solid{ \psk at linejoin\space setlinejoin \psk at linecap\space setlinecap stroke }
 \def\psls at coloreddashed{ \psls at solid grestore gsave \pst at usecolor\psdashcolor \tx at setlinejoin \psls at dashed }
@@ -1482,192 +1479,9 @@
 
 %
 %--------------------------- A R R O W S ---------------------------
-%
-\def\psk at arrowA{}
-\def\psk at arrowB{}
-\def\pst at arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,<D-D>,D>-<D,<D<D-D>D>,<T-T>} % hv --1.16
-\edef\pst at arrowtable{\pst at arrowtable,|<*->|*,|<->|}
-\begingroup
-  \catcode`\<=13
-  \catcode`\>=13
-  \catcode`\|=13
-  \gdef\pst at activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
-\endgroup
-\def\tx at BeginArrow{BeginArrow }
-\def\tx at EndArrow{EndArrow }
-%
-\def\tx at Arrow{ \tx at setStrokeTransparency Arrow }% hv 2008-01-13
-\def\tx at ArrowD{ \tx at setStrokeTransparency ArrowD }% hv 2008-01-13
-\def\tx at ArrowT{ \tx at setStrokeTransparency ArrowT }% hv 2021-05-31
-%
-\@namedef{psas@<|}{ 
-    \psk at tbarsize\space \tx at Tbar
-    0 CLW 2 div T
-    newpath
-    true 
-    \psk at arrowinset 
-    \psk at arrowlength 
-    \psk at arrowsize 
-    \tx at Arrow 
-}
-% ]-[ arrow
-\def\tx at BracketOut{BracketOut }
-\@namedef{psas@[}{%
-  /BracketOut {%
-  CLW mul add dup CLW sub 2 div
-%/x ED mul CLW add
-  /x ED mul neg
-  /y ED
-  /z CLW 2 div def
-  x neg y moveto
-  x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
-  \psk at bracketlength\space \psk at tbarsize\space \tx at BracketOut
-}
-% )-( arrow
-\def\tx at RoundBracketOut{ \tx at setStrokeTransparency RoundBracketOut }% hv 2008-01-13
-\@namedef{psas@(}{%
-  /RoundBracketOut {%
-    CLW mul add dup 2 div
-%/x ED mul
-    /x ED mul neg
-    /y ED
-    /mtrx CM def
-    0 CLW
-    2 div T x y mul 0 ne { x y scale } if
-    1 1 moveto
-    .85 .5 .35 0 0 0 curveto
-    -.35 0 -.85 .5 -1 1 curveto
-    mtrx setmatrix stroke 0 CLW moveto } def
-  \psk at rbracketlength\space \psk at tbarsize\space \tx at RoundBracketOut
-}
-% end of new definitions of the missing arrows ---- hv 1.12
-\@namedef{psas@>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow }
-\@namedef{psas@>>}{%
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-  0 h T gsave newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-  CP grestore CP newpath moveto 2 copy 
-  CLW \pst at arrowscale\space div SLW % set the original line width  
-  L stroke moveto
-}
-\@namedef{psas@<}{true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow}
-\@namedef{psas@<<}{
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-  CP newpath moveto 0 a neg 
-  gsave
-  CLW \pst at arrowscale\space div SLW % set the original line width  
-  L stroke 
-  grestore
-  0 h neg T
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-}
-\@namedef{psas at D>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD }%	hv 20071211
-\@namedef{psas at D>D>}{ %	hv 20071211
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-  0 h Inset sub T gsave newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-  CP grestore moveto 
-}
-\@namedef{psas@<D}{ %	hv 20071211
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-}
-\@namedef{psas@<D<D}{ %	hv 20071211
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-  CP newpath moveto 0 a neg L stroke 0 h neg T
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-}
-\@namedef{psas at T>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowT }%	hv 20210531
-\@namedef{psas@<T}{ %	hv 20071211
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowT
-}
 
-\define at key[psset]{pstricks}{tbarsize}[2pt 5]{%
-  \pst at expandafter\pst at getdimnum{#1} 0 {} {}\@nil
-  \edef\psk at tbarsize{\pst at number\pst at dimg \pst at tempg}}
-\psset[pstricks]{tbarsize=2pt 5}
-%
-\def\tx at Tbar{Tbar }
-\@namedef{psas@|}{\psk at tbarsize \tx at Tbar}
-\@namedef{psas@|*}{0 CLW -2 div T \psk at tbarsize \tx at Tbar}
-\@namedef{psas@>|}{%
-  \psk at tbarsize \tx at Tbar
-  0 CLW 2 div T
-  newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-}
-\@namedef{psas@>|*}{%
-  0 CLW -2 div T
-  \psk at tbarsize \tx at Tbar
-  0 CLW 2 div T
-  newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-}
-%
-\define at key[psset]{pstricks}{bracketlength}[0.15]{\pst at checknum{#1}\psk at bracketlength}
-\psset[pstricks]{bracketlength=.15}
-\def\tx at Bracket{Bracket }
-\@namedef{psas@]}{\psk at bracketlength \psk at tbarsize \tx at Bracket}
-\define at key[psset]{pstricks}{rbracketlength}[0.15]{\pst at checknum{#1}\psk at rbracketlength}
-\psset[pstricks]{rbracketlength=.15}
-\def\tx at RoundBracket{RoundBracket }
-\@namedef{psas@)}{\psk at rbracketlength \psk at tbarsize \tx at RoundBracket}
-%
-\def\psas at c{1 \psas@@c}
-\def\psas at cc{0 CLW 2 div T 1 \psas@@c}
-\def\psas at C{2 \psas@@c}
-\def\psas@@c{%
-  setlinecap
-  0 0 moveto
-  0 0.1 L % changed value from 0.5 to 0.1
-  stroke
-  0 0 moveto }
-%
-\def\psas@{}
-%
-\define at key[psset]{pstricks}{arrowLW}{\pst at getlength{#1}\psk at arrowLW}
-\psset[pstricks]{arrowLW=0}
-% arrowLW as LineWidth for the circled line ends
-%
-\def\psas at o{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {\pst at usecolor\psfillcolor true} false \psk at dotsize \tx at EndDot }
-\def\psas at oo{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {\pst at usecolor\psfillcolor true} true \psk at dotsize \tx at EndDot }
-\@namedef{psas@*}{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {false} false \psk at dotsize \tx at EndDot }
-\@namedef{psas@**}{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {false} true \psk at dotsize \tx at EndDot }
-%
-\define at key[psset]{pstricks}{arrows}[-]{%
-  \begingroup
-    \pst at activearrows
-    \xdef\pst at tempg{#1}%
-  \endgroup
-  \expandafter\psset@@arrows\pst at tempg\@empty-\@empty\@nil
-  \if at pst\else\@pstrickserr{Bad arrows specification: #1}\@ehpa\fi}
-\def\psset@@arrows#1-#2\@empty#3\@nil{%
-  \@psttrue
-  \def\ps at next##1,#1-##2,##3\@nil{\def\pst at tempg{##2}}%
-  \expandafter\ps at next\pst at arrowtable,#1-#1,\@nil
-  \@ifundefined{psas@\pst at tempg}{\@pstfalse\def\psk at arrowA{}}{\let\psk at arrowA\pst at tempg}%
-  \@ifundefined{psas@#2}{\@pstfalse\def\psk at arrowB{}}{\def\psk at arrowB{#2}}}
-\psset[pstricks]{arrows=-}
-%
-\define at key[psset]{pstricks}{arrowscale}[1]{%                                   hv --1.12
-  \pst at getscale{#1}\psk at arrowscale
-  \pst@@arrowscale at i#1 \@nil}%           hv --1.12
-\def\pst@@arrowscale at i#1 #2\@nil{\edef\pst at arrowscale{#1}}% hv --1.12
-\psset[pstricks]{arrowscale=1}
-%
-\define at key[psset]{pstricks}{arrowsize}[1.5pt 2]{%
-  \pst at expandafter\pst at getdimnum{#1} 0 {} {}\@nil
-  \edef\psk at arrowsize{\pst at number\pst at dimg \pst at tempg}%
-}
-\psset[pstricks]{arrowsize=1.5pt 2}
-\define at key[psset]{pstricks}{arrowlength}[1.4]{\pst at checknum{#1}\psk at arrowlength}
-\psset[pstricks]{arrowlength=1.4}
-\define at key[psset]{pstricks}{arrowinset}[0.4]{\pst at checknum{#1}\psk at arrowinset}%
-\psset[pstricks]{arrowinset=0.4}
-%
+\input pstricks-arrows
+
 %% ---------------------- end arrow part ----------------------
 %
 \def\tx at SD{ \tx at setTransparency SD }
@@ -1718,20 +1532,6 @@
 \@namedef{#1 at i}{\addbefore at par{#3}\@nameuse{#2 at i}}}%
 \ignorespaces}
 %
-\def\pst at getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
-% ------------------------- hv 1.10 beg ------------------------
-%\def\pst@@getarrows#1#2{\addto at par{arrows=#2}#1}
-\def\pst@@getarrows#1#2{%
-  \def\pst at tempa{#2}% prevent empty arrow arguments, to allow \psline{}(...)(...)
-  \ifx\pst at tempa\@empty
-    \addto at par{arrows=-}%
-  \else
-    \addto at par{arrows=#2}%
-  \fi
-  #1%
-}
-% ------------------------- hv 1.10 end ------------------------
-%
 \def\begin at ClosedObj{%
   \leavevmode
   \pst at killglue
@@ -1913,42 +1713,6 @@
       grestore
 }}
 %
-\def\pst at arrowtype{%
-  \ifx\psk at arrowB\@empty 0 \else -2 \fi
-  \ifx\psk at arrowA\@empty 0 \else -1 \fi
-  add }
-%
-\def\pst at addarrowdef{%
-  \addto at pscode{%
-    /ArrowA {
-      \ifx\psk at arrowA\@empty
-        \pst at oplineto
-      \else
-        \pst at arrowdef{A}
-        moveto
-      \fi
-    } def
-    /ArrowB { \ifx\psk at arrowB\@empty \else \pst at arrowdef{B} \fi } def
-}}
-%
-\def\pst at arrowdef#1{%
-  \ifnum\pst at repeatarrowsflag>\z@
-    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
-  \fi
-  \tx at BeginArrow 
-  \psk at arrowscale
-  \@nameuse{psas@\@nameuse{psk at arrow#1}}
-  \tx at EndArrow
-}
-%
-\def\pst at repeatarrows{%
-  \addto at pscode{%
-    gsave
-    \ifx\psk at arrowA\@empty\else ArrowAc ArrowA pop pop \fi
-    \ifx\psk at arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
-    grestore
-}}
-%
 \def\pst at OpenShowPoints{%
   \addto at pscode{%
     gsave

Deleted: trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex.neu
===================================================================
--- trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex.neu	2021-08-26 13:22:58 UTC (rev 60326)
+++ trunk/Master/texmf-dist/tex/generic/pstricks/pstricks.tex.neu	2021-08-26 21:23:35 UTC (rev 60327)
@@ -1,4595 +0,0 @@
-%% pstricks.tex
-%% COPYRIGHT 1993, 1994, 1999 by Timothy Van Zandt
-%% COPYRIGHT 2000-2003 by Denis Girou.
-%% Copyright 2004-2019 Herbert Voss <hvoss at tug.org>
-%
-% This work may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-%   http://www.latex-project.org/lppl.txt
-% and version 1.3 or later is part of all distributions of LaTeX
-% version 2003/12/01 or later.
-%
-% This work has the LPPL maintenance status "maintained".
-% 
-% This Current Maintainer of this work is Herbert Voss
-%
-\csname PSTricksLoaded\endcsname
-\let\PSTricksLoaded\endinput  
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%% !! loading additional TeX packages see line 38,39 and 72ff
-%% !! loading config file pstricks.con    line 439 
-%% !! loading pro files                   line 452ff 
-%% !! fileversion and date see            line 83 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-\edef\PstAtCode{\the\catcode`\@}
-\catcode`\@=11\relax
-%
-%\if at check@engine
-  \ifx\c at lor@to at ps\@undefined
-    \def\c at lor@to at ps{\PSTricks_Not_Configured_For_This_Format}%  message for a pdflatex run
-  \fi
-%\fi
-\expandafter\ifx\csname @latexerr\endcsname\relax %	do we have TeX? then @latexerr isn't defined
-  \input pstricks-tex.def
-\fi
-
-\let\ifpstUndefined\@ifundefined
-
-%\catcode`\@=\PstAtCode\relax
-\ifx\PSTXKeyLoaded\endinput\else\input pst-xkey.tex \fi
-\ifx\PSTFPloaded\endinput\else\input pst-fp.tex\fi
-%
-%\catcode`\@=11\relax
-\def\XKV at ch@ckch at ice#1#2#3{%  bugfix for xkeyval
-  \def\XKV at tempa{#1}%
-  \ifx\XKV at tempa\@nnil\let\XKV at tempa\@empty\else
-    \def\XKV at tempa{\def#1{#2}}%
-  \fi
-%  \in@{,#2,}{,#3,}%
-\begingroup\edef\x{\endgroup\noexpand\in@{,#2,}}\x{,#3,}%
-%\expandafter\in@\expandafter{\expandafter,#2,}{,#3,}% --- hv 2012-04-27
-  \ifin@
-    \ifXKV at pl
-      \XKV at addtomacro@n\XKV at tempa\@firstoftwo
-    \else
-      \XKV at addtomacro@n\XKV at tempa\@firstofone
-    \fi
-  \else
-    \ifXKV at pl
-      \XKV at addtomacro@n\XKV at tempa\@secondoftwo
-    \else
-      \XKV at toks{#2}%
-      \XKV at err{value `\the\XKV at toks' is not allowed}%
-      \XKV at addtomacro@n\XKV at tempa\@gobble
-    \fi
-  \fi
-  \XKV at tempa
-}
-%
-\def\ProvidesPackageRCS#1{\typeout{Loading #1}}%
-%\@ifnextchar[\ProvidesPackageRCS at i{\ProvidesPackageRCS at i[] }}%$
-%\def\ProvidesPackageRCS at i[#1]#2{}
-
-\ifx\pgfkeysloaded\relax\else 
-  \input pgfutil-common.tex
-  \input pgfkeys.code.tex
-  \input pgffor.code.tex
-\fi
-\let\pgfforeach\foreach
-%
-\def\fileversion{3.0}
-\def\filedate{2020/04/01}
-\pst at addfams{pstricks}
-%
-%\define at boolkey[psset]{pstricks}[Pst@]{useURWfonts}[true]{}
-%\psset{useURWfonts}
-%
-% stolen from latex.ltx to make it TeX compatible
-\newcount\psLoopIndex
-\long\def\@fornoop#1\@@#2#3{}
-\long\def\@for#1:=#2\do#3{%
-  \pst at cntm=0
-  \expandafter\def\expandafter\@fortmp\expandafter{#2}%
-  \ifx\@fortmp\@empty \else
-    \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}
-%
-\long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx#4\@nnil \else
-       #5\def#4{#2}\ifx#4\@nnil \else\global\advance\psLoopIndex by \@ne\relax
-       #5\@iforloop #3\@@#4{#5}\fi\fi}
-%
-\long\def\@iforloop#1,#2\@@#3#4{\global\advance\psLoopIndex by \@ne\relax%
-   \def#3{#1}\ifx #3\@nnil
-     \expandafter\@fornoop \else
-     #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}}
-%
-\long\def\psforeach#1#2#3{%
-  \global\psLoopIndex=0\relax
-  \if$\ifnum9<1#2$\else\fi\psforeach at ii{#1}{#2}{#3}%
-  \else                      \expandafter\psforeach at i#2,..,,..,\@nil{#1}{#3}\fi}
-\long\def\psforeach at i#1,#2,..,#3,..,#4\@nil#5#6{% 
-  \ifx\relax#3\relax\psforeach at ii{#5}{#1,#2}{#6}%
-  \else\psforeach at iii{#5}{#1}{#2}{#3}{#6}\fi}
-\long\def\psforeach at ii#1#2#3{%
-  \begingroup
-  \edef\reserved at a{#2}%
-  \@for#1:=\reserved at a\do{#3}%
-  \endgroup}
-\long\def\psforeach at iii#1#2#3#4#5{%
-  \pstFPsub\pst at tempA{#3}{#2}%
-  \pst at dimm=\pst at tempA pt%
-  \pstFPstripZeros{\pst at tempA}\pst at tempB%
-  \def\pst at tempA{#2}%
-  \def\pst at tempa{#2}%
-  \pst at dimn=#4pt%
-  \loop
-    \pst at dimm=\pst at tempA pt
-    \ifdim\pst at dimm<\pst at dimn
-      \pstFPadd\pst at tempA{\pst at tempA}{\pst at tempB}%
-      \pstFPstripZeros{\pst at tempA}\pst at tempA%
-      \edef\pst at tempa{\pst at tempa,\pst at tempA}%
-  \repeat%
-  \psforeach at ii{#1}{\pst at tempa}{#5}}
-%
-\long\def\psForeach#1#2#3{%  without grouping the contents
-  \global\psLoopIndex=0\relax%
-  \if$\ifnum9<1#2$\else\fi\psforeach at ii{#1}{#2}{#3}%
-  \else                   \expandafter\psForeach at i#2,..,,..,\@nil{#1}{#3}\fi}
-\long\def\psForeach at i#1,#2,..,#3,..,#4\@nil#5#6{% 
-  \ifx\relax#3\relax\psForeach at ii{#5}{#1,#2}{#6}%
-  \else\psForeach at iii{#5}{#1}{#2}{#3}{#6}\fi%
-}
-\long\def\psForeach at ii#1#2#3{%
-  \edef\reserved at a{#2}%
-  \@for#1:=\reserved at a\do{#3}}
-\long\def\psForeach at iii#1#2#3#4#5{%
-  \pstFPsub\pst at tempA{#3}{#2}%
-  \pst at dimm=\pst at tempA pt%
-  \pstFPstripZeros{\pst at tempA}\pst at tempB%
-  \def\pst at tempA{#2}%
-  \def\pst at tempa{#2}%
-  \pst at dimn=#4pt%
-  \loop%
-    \pst at dimm=\pst at tempA pt%
-    \ifdim\pst at dimm<\pst at dimn%
-      \pstFPadd\pst at tempA{\pst at tempA}{\pst at tempB}%
-      \pstFPstripZeros{\pst at tempA}\pst at tempA
-      \edef\pst at tempa{\pst at tempa,\pst at tempA}%
-  \repeat%
-  \psForeach at ii{#1}{\pst at tempa}{#5}
-}
-  
-\def\psrecur at i#1{\csname ps at rn#1\psrecur at i} 
-\long\def\ps at rnm#1{\endcsname{#1}#1\global\advance\psLoopIndex by \@ne}
-\long\def\ps at rn#1{}
-\def\psLoop#1{\global\psLoopIndex=0\relax%
-  \csname ps at rn\expandafter\psrecur at i
-  \romannumeral\number\number#1 000\endcsname\endcsname}
-
-%
-% hv 2007-10-16 to fix the bug in pst-node with \\[name=...]
-% hv fix bug with empty fnodes in psmatrix
-\def\ps at ifnextchar#1#2#3{%
-  \let\reserved at d= #1%
-  \def\reserved at a{#2}\def\reserved at b{#3}%
-  \futurelet\@let at token\ps at ifnch}
-\def\ps at ifnch{%
-  \ifx\@let at token\reserved at d \let\reserved at b\reserved at a \fi
-  \reserved at b
-}
-\def\pshskip#1{\vrule \@width\z@\nobreak \hskip #1\hskip \z at skip}
-% end bugfix
-\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz,hv)}
-\def\@pstrickserr#1#2{%
-  \begingroup
-  \newlinechar`\^^J
-  \edef\pst at tempc{#2}%
-  \expandafter\errhelp\expandafter{\pst at tempc}%
-  \typeout{%
-    PSTricks error. \space See User's Guide for further information.^^J
-    \@spaces\@spaces\@spaces\@spaces
-    Type \space H <return> \space for immediate help.}%
-  \errmessage{#1}%
-  \endgroup}
-\def\@ehpa{%
-  Your command was ignored. Default value substituted.^^J
-  Type \space <return> \space to procede.}
-\def\@ehpb{%
-  Your command was ignored. Will recover best I can.^^J
-  Type \space <return> \space to procede.}
-\def\@ehpc{%
-  You better fix this before proceding.^^J
-  See the PSTricks User's Guide or ask your system administrator for help.^^J
-  Type \space X <return> \space to quit.}
-\def\@ehpd{%
-  Not allowed optional argument.^^J
-  Will proceed with the default setting.^^J
-  Type \space X <return> \space to quit.}
-\def\pst at misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
-\newdimen\pst at dima
-\newdimen\pst at dimb
-\newdimen\pst at dimc
-\newdimen\pst at dimd
-\newdimen\pst at dimg
-\newdimen\pst at dimh
-\newdimen\pst at dimm
-\newdimen\pst at dimn
-\newdimen\pst at dimo
-\newdimen\pst at dimp
-\chardef\f at ur=4
-%
-\newbox\pst at hbox
-\newbox\pst at ibox
-\newbox\pst at boxg
-\newcount\pst at cnta
-\newcount\pst at cntb
-\newcount\pst at cntc
-\newcount\pst at cntd
-\newcount\pst at cntg
-\newcount\pst at cnth
-\newcount\pst at cntm
-\newcount\pst at cntn
-\newcount\pst at cnto
-\newcount\pst at cntp
-\newcount\@zero\@zero=0\relax
-%
-\newif\ifPst at SpecialLength
-\Pst at SpecialLengthfalse
-%
-\newif\if at pst
-\newtoks\pst at toks
-\newif\if at star
-\def\pst at ifstar#1{%
-  \@ifnextchar*{\@startrue\def\ps at next*{#1}\ps at next}{\@starfalse#1}}
-%
-\def\pst at expandafter#1#2{%
-  \def\ps at next{#1}%
-  \edef\@tempa{#2}%
-  \ifx\@tempa\@empty
-    \@pstrickserr{Unexpected empty argument!}\@ehpb
-    \def\@tempa{\@empty}%
-  \fi
-  \expandafter\ps at next\@tempa}
-%
-\def\pst at dimtonum#1#2{\edef#2{\pst@@dimtonum#1}}
-\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1}
-{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}}
-%
-\def\pst at getdimdim#1 #2 #3\@nil{%
-  \def\pst at tempA{#2}%
-  \ifx\pst at tempA\@empty
-    \pssetlength\pst at dimn{#1}%
-    \pst at dimm=\z@%
-  \else%
-    \pssetlength\pst at dimm{#1}%
-    \pssetlength\pst at dimn{#2}%
-  \fi%
-}
-\def\pst at getxdimdim#1 #2 #3\@nil{%
-  \def\pst at tempA{#2}%
-  \ifx\pst at tempA\@empty
-    \pssetxlength\pst at dimn{#1}%
-    \pst at dimm=\z@
-  \else%
-    \pssetxlength\pst at dimm{#1}%
-    \pssetxlength\pst at dimn{#2}%
-  \fi%
-}
-\def\pst at getydimdim#1 #2 #3\@nil{%
-  \def\pst at tempA{#2}%
-  \ifx\pst at tempA\@empty
-    \pssetylength\pst at dimn{#1}%
-    \pst at dimm=\z@%
-  \else
-    \pssetylength\pst at dimm{#1}%
-    \pssetylength\pst at dimn{#2}%
-  \fi}
-%
-% A modulo macro for integer values
-% \pst at mod{34}{6}\value ==> \value is 4
-%
-\def\pst at mod#1#2#3{%
-  \begingroup%
-  \pst at cntm=#1\pst at cntn=#2\relax%
-  \pst at cnto=\pst at cntm%
-  \divide\pst at cntm by \pst at cntn%
-  \multiply\pst at cntn by \pst at cntm%
-  \advance\pst at cnto by -\pst at cntn%
-  \edef\value{\endgroup\def\noexpand#3{\number\pst at cnto}}\value%
-}
-\def\pst at max#1#2#3{%
-  \begingroup%
-  \pst at cntm=#1\pst at cntn=#2\relax%
-  \ifnum\pst at cntm<\pst at cntn\pst at cntm=\pst at cntn\fi
-  \global#3=\the\pst at cntm%
-  \endgroup%
-}
-\def\pst at maxdim#1#2#3{%
-  \begingroup%
-  \pst at dimm=#1\pst at dimn=#2\relax%
-  \ifdim\pst at dimm<\pst at dimn\pst at dimm=\pst at dimn\fi
-  \global#3=\the\pst at dimm%
-  \endgroup%
-}
-\def\pst at mindim#1#2#3{%
-  \begingroup%
-  \pst at dimm=#1\pst at dimn=#2\relax%
-  \ifdim\pst at dimm>\pst at dimn\pst at dimm=\pst at dimn\fi
-  \global#3=\the\pst at dimm%
-  \endgroup%
-}
-\def\pst at abs#1#2{%
-  \begingroup%
-  \pst at cntm=#1\relax%
-  \ifnum\pst at cntm<\z@\pst at cntm=-\pst at cntm\fi%
-  \global#2=\the\pst at cntm
-  \endgroup%
-}
-\def\pst at absdim#1#2{%
-  \begingroup%
-  \pst at dimm=#1\relax%
-  \ifdim\pst at dimm<\z@\pst at dimm=-\pst at dimm\fi%
-  \global#2=\the\pst at dimm%
-  \endgroup%
-}
-%
-\def\pst at pyth#1#2#3{% from pst-3d
-  \begingroup%
-    \pst at dima=#1\relax%
-    \ifnum\pst at dima<\z@\pst at dima=-\pst at dima\fi% dima=abs(x)
-    \pst at dimb=#2\relax%
-    \ifnum\pst at dimb<\z@\pst at dimb=-\pst at dimb\fi% dimb=abs(y)
-    \advance\pst at dimb\pst at dima         % dimb=s=abs(x)+abs(y)
-    \ifnum\pst at dimb=\z@
-      \global\pst at dimg=\z@             % dimg=z=sqrt(x^2+y^2)
-    \else
-      \multiply\pst at dima 8\relax              % dima= 8abs(x)
-      \pst@@divide\pst at dima\pst at dimb     % dimg =8t=8abs(x)/s
-      \advance\pst at dimg -4pt            % dimg = 4tau = (8t-4)
-      \multiply\pst at dimg 2
-      \pst at dimtonum\pst at dimg\pst at tempa
-      \pst at dima=\pst at tempa\pst at dimg           % dima=(8tau)^2
-      \advance\pst at dima 64pt         % dima=u=[64+(8tau)^2]/2
-      \divide\pst at dima 2\relax                      % =(8f)^2
-      \pst at dimd=7pt                % initial guess at sqrt(u)
-      \pst@@pyth\pst@@pyth\pst@@pyth            % dimd=sqrt(u)
-      \pst at dimtonum\pst at dimd\pst at tempa
-      \pst at dimg=\pst at tempa\pst at dimb
-      \global\divide\pst at dimg 8             % dimg=z=(8f)*s/8
-    \fi
-  \endgroup
-  #3=\pst at dimg}
-%
-\def\pst@@pyth{%                      dimd = g <-- (g + u/g)/2
-  \pst@@divide\pst at dima\pst at dimd
-  \advance\pst at dimd\pst at dimg
-  \divide\pst at dimd 2\relax}
-%
-% ----- the old pst at pyth begin -----  did not use dimens
-\def\pst at Pyth#1#2#3{\ifdim#1>#2\pst@@Pyth#1#2#3\else\pst@@Pyth#2#1#3\fi}
-\def\pst@@Pyth#1#2#3{%
-  \ifdim4#1>9#2\relax
-    #3=#1\advance#3 .2122#2%
-  \else
-    #3=.8384#1\advance#3 .5758#2%
-  \fi%
-}
-% ----- the old pst at pyth end -----
-%
-%------ new version \pst at divide ̣-------- by Michael Sharpe
-\def\pst at divide#1#2#3{%
-  \pst@@divide{#1}{#2}%
-  \advance\pst at dimg \pst at cnta pt%
-  \pst at dimtonum\pst at dimg{#3}%
-}
-\def\pst@@divide#1#2{%
-  \pst at dimg=#1\relax%
-  \pst at dimh=#2\relax%
-  \pst at cnth=\pst at dimh%
-  \pst at cntg=\pst at dimg%
-  \pst at cnta=\pst at cntg%
-  \divide\pst at cnta\pst at cnth%
-  \advance\pst at dimg -\pst at cnta\pst at dimh%
-  \pst at cntm=67108863\relax %2^26 -1
-  \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide%
-  \divide\pst at dimg\pst at cnth%
-}%
-\def\pst@@@divide{%
-  \ifnum%
-    \ifnum\pst at dimg<\z at -\fi\pst at dimg<\pst at cntm%
-      \multiply\pst at dimg\sixt@@n%
-  \else%
-    \divide\pst at cnth\sixt@@n%
-  \fi%
-}%
-%
-%-------------- the old version ----------
-\iffalse
-\def\pst at divide#1#2#3{%
-  \pst@@divide{#1}{#2}%
-  \pst at dimtonum\pst at dimg{#3}%
-}
-\def\pst@@divide#1#2{%
-  \pst at dimg=#1\relax
-  \pst at dimh=#2\relax
-  \pst at cntg=\pst at dimh
-  \pst at cnth=67108863
-  \pst@@@divide\pst@@@divide\pst@@@divide\pst@@@divide
-  \divide\pst at dimg\pst at cntg%
-}
-\def\pst@@@divide{%
-  \ifnum
-    \ifnum\pst at dimg<\z at -\fi\pst at dimg<\pst at cnth
-      \multiply\pst at dimg\sixt@@n
-    \else
-      \divide\pst at cntg\sixt@@n
-    \fi%
-}
-\fi
-%-------------- end old vesrion ---------------
-%
-\def\pst at configerr#1{\@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
-%
-\def\pstVerb#1{\pst at configerr\pstVerb}
-\def\pstverb#1{\pst at configerr\pstverb}
-\def\pstverbscale{\pst at configerr\pstverbscale}
-\def\pstrotate{\pst at configerr\pstrotate}
-\def\pstheader#1{\pst at configerr\pstheader}
-\def\pstdriver{\pst at configerr\pstdriver}
-\@ifundefined{pstcustomize}%
-  {\def\pstcustomize{\endinput\let\pstcustomize\relax}}{}
-%
-\input pstricks.con		% local config file
-%
-\newif\ifPSTricks
-\PSTrickstrue
-\def\PSTricksOff{%
-  \def\pstheader##1{}%
-  \def\pstverb##1{}%
-  \def\pstVerb##1{}%
-  \PSTricksfalse%
-}
-\@ifundefined{pst at def}{\def\pst at def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
-\@ifundefined{pst at ATH}{\def\pst at ATH<#1>{}}{}
-%
-\pstheader{pstricks.pro}
-%\pstheader{pstricks-fonts.pro}
-\pstheader{pst-algparser.pro}
-\pstheader{pst-tools.pro}
-%
-\def\pst at dict{tx at Dict begin }
-\def\pst at theheaders{pstricks.pro, pst-algparser.pro}
-\def\pst at Verb#1{\pstVerb{\pst at dict #1 end}}
-\def\tx at Atan{Atan }
-\def\tx at Div{Div }
-\def\tx at NET{NET }
-\def\tx at Pyth{Pyth }
-\def\tx at PtoC{PtoC }
-\def\tx at PathLength@{PathLength@ }
-\def\tx at PathLength{PathLength }
-\pst at dimg=\pstunit\relax
-\ifdim\pst at dimg=1bp
-\def\pst at stp{.996264 dup scale}
-\else
-\edef\pst at stp{1 \pst@@dimtonum\pst at dimg\space div dup scale}
-\fi
-\def\tx at STP{STP }
-\def\tx at STV{STV }
-%
-%--------------------------------------- PS stuff ---------------------------------
-% on stack x y 
-\pst at def{UserCoor}< \pst at number\psyunit div exch \pst at number\psxunit div exch >
-\pst at def{ScreenCoor}< \pst at number\psyunit mul exch \pst at number\psxunit mul exch >
-%--------------------------------------- PS stuff end -----------------------------
-%
-\def\pst at number#1{\pst@@dimtonum#1\space}
-%
-%-----------------------% hv 20100413
-\def\pst at strip@dot#1{\expandafter\pst at strip@dot at i#1..\@nil}
-\def\pst at strip@dot at i#1.#2.#3\@nil{%
-  \ifnum1#2>10\relax #1.#2\else#1\fi}
-%-----------------------% hv 20100413
-\def\pst at checknum#1#2{%
-  \edef\ps at next{#1}%
-  \ifx\ps at next\@empty
-    \let\pst at num\z@
-  \else
-    \expandafter\pst@@checknum\ps at next..\@nil
-  \fi
-  \ifcase\pst at num\relax
-    \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
-    \def#2{0 }%
-  \or%              1
-    \edef#2{\ifnum\pst at num=\tw at -\fi\the\pst at cntg.%
-      \expandafter\@gobble\the\pst at cnth\space}%
-  \or%              2
-    \edef#2{\ifnum\pst at num=\tw at -\fi\the\pst at cntg.%
-      \expandafter\@gobble\the\pst at cnth\space}%
-  \or%              3
-    \edef#2{\pst at tempA\space}%
-  \fi}
-\def\pst@@checknum{%
-  \@ifnextchar-%
-  {\let\pst at num\tw@\expandafter\pst@@@checknum\@gobble}%
-  {\@ifnextchar !%
-    {\def\pst at num{3}\pst@@@@@checknum}
-    {\let\pst at num\@ne\pst@@@checknum}}%
-}
-\def\pst@@@checknum#1.#2.#3\@nil{%
-\afterassignment\pst@@@@checknum\pst at cntg=0#1\relax\@nil%
-\afterassignment\pst@@@@checknum\pst at cnth=1#2\relax\@nil}
-\def\pst@@@@checknum#1\relax\@nil{\ifx\@nil#1\@nil\else\let\pst at num\z@\fi}
-%
-\def\pst@@@@@checknum#1#2.#3\@nil{\def\pst at tempA{#2}}% PostScript Notation with !<code>
-%
-\def\pst at getnumii#1 #2 #3\@nil{%
-  \pst at checknum{#1}\pst at tempg%
-  \ifx\relax#2\relax\let\pst at temph\pst at tempg\else\pst at checknum{#2}\pst at temph\fi}
-\def\pst at getnumiii#1 #2 #3 #4\@nil{%
-\pst at checknum{#1}\pst at tempg%
-\pst at checknum{#2}\pst at temph%
-\pst at checknum{#3}\pst at tempi}
-\def\pst at getnumiv#1 #2 #3 #4 #5\@nil{%
-\pst at checknum{#1}\pst at tempg%
-\pst at checknum{#2}\pst at temph%
-\pst at checknum{#3}\pst at tempi%
-\pst at checknum{#4}\pst at tempj}
-%
-\def\pst at getdimnum#1 #2 #3\@nil{%
-  \pssetlength\pst at dimg{#1}%
-  \pst at checknum{#2}\pst at tempg%
-}
-\def\pst at getscale#1#2{%	read and check a scale input x [y]
-  \edef\pst at tempg{#1}%
-  \ifx\pst at tempg\@none
-    \def#2{}%
-  \else
-    \pst at expandafter\pst at getnumii{#1 #1} {} {} {}\@nil
-    \ifdim\pst at tempg\p@=\z@
-      \@pstrickserr{Bad scaling argument `#1'}\@ehpa
-      \def#2{}%
-    \else
-      \ifdim\pst at temph\p@=\z@
-        \@pstrickserr{Bad scaling argument `#1'}\@ehpa
-        \def#2{}%
-      \else
-        \edef#2{\pst at tempg\space \pst at temph\space scale }%
-      \fi
-    \fi
-  \fi%
-}
-\def\pst at getint#1#2{%	read and check an integer
-  \pst at cntg=#1\relax
-  \edef#2{\the\pst at cntg\space}%
-}
-\begingroup
-\catcode`\{=12
-\catcode`\}=12
-\catcode`\[=1
-\catcode`\]=2
-\gdef\pslbrace[{ ]
-\gdef\psrbrace[} ]
-\endgroup
-%
-\pstVerb{
-  /pssetRGBcolor  /setrgbcolor  load def
-  /pssetCMYKcolor /setcmykcolor load def
-  /pssetGraycolor /setgray      load def
-}
-\def\@newcolor#1#2{%
-  \expandafter\edef\csname #1\endcsname{\noexpand\pst at color{#2}}%
-  %\expandafter\edef\csname color@#1\endcsname{#2}%
-  \expandafter\edef\csname\string\color@#1\endcsname{#2}%    hv 1.14 2005-12-17
-  \ignorespaces}
-%
-\def\pst at color#1{\def\pst at currentcolor{#1}\pstVerb{#1}\aftergroup\pst at endcolor}%
-\def\pst at endcolor{\pstVerb{\pst at currentcolor}}
-\def\pst at currentcolor{0 setgray}
-\def\altcolormode{%
-\def\pst at color##1{%
-  \pstVerb{gsave ##1}\aftergroup\pst at endcolor}%
-\def\pst at endcolor{\pstVerb{\pst at grestore}}}
-\def\pssetMonochrome{%
-  \pstVerb{
-    /setrgbcolor { add add 0 gt {0}{1} ifelse setgray } def 
-    /setcmykcolor{ 4 dict begin
-      /k ED /y ED /m ED /c ED 
-      1 1 k sub c mul k add sub 0.29 mul 
-      1 1 k sub m mul k add sub 0.587 mul add 
-      1 1 k sub y mul k add sub 0.114 mul add
-      end 0 gt {0}{1} ifelse setgray } def }}
-\def\pssetGrayscale{%
-  \pstVerb{
-    /setrgbcolor { 0.07 mul exch 0.71 mul add exch 0.21 mul add setgray } def 
-    /setcmykcolor{ 4 dict begin
-      /k ED /y ED /m ED /c ED 
-      1 1 k sub c mul k add sub 0.29 mul 
-      1 1 k sub m mul k add sub 0.587 mul add 
-      1 1 k sub y mul k add sub 0.114 mul add
-      end setgray } def }}
-\def\psresetColor{\pstVerb{
-    /setrgbcolor  tx at Dict begin /pssetRGBcolor  load end def 
-    /setcmykcolor tx at Dict begin /pssetCMYKcolor load end def }}
-
-\def\pst at grestore{
-  currentpoint
-  matrix currentmatrix
-  currentfont
-  grestore
-  setfont
-  setmatrix
-  moveto
-}
-%\def\pst at usecolor#1{\csname color@#1\endcsname\space}%    hv 1.14  2005--12-17
-\def\pst at usecolor#1{\csname\string\color@#1\endcsname\space}
-%
-\def\newgray#1#2{%
-    \pst at checknum{#2}\pst at tempg
-    \@newcolor{#1}{\pst at tempg setgray}}%
-\def\newrgbcolor#1#2{%
-  \pst at expandafter\pst at getnumiii{#2} {} {} {} {}\@nil
-  \@newcolor{#1}{\pst at tempg \pst at temph \pst at tempi setrgbcolor}}
-\def\newhsbcolor#1#2{%
-  \pst at expandafter\pst at getnumiii{#2} {} {} {} {}\@nil
-  \@newcolor{#1}{\pst at tempg \pst at temph \pst at tempi sethsbcolor}}
-\def\newcmykcolor#1#2{%
-  \pst at expandafter\pst at getnumiv{#2} {} {} {} {} {}\@nil
-  \@newcolor{#1}{\pst at tempg \pst at temph \pst at tempi \pst at tempj setcmykcolor}}
-\newgray{black}{0}
-\newgray{darkgray}{.25}
-\newgray{gray}{.5}
-\newgray{lightgray}{.75}
-\newgray{white}{1}
-\newrgbcolor{red}{1 0 0}
-\newrgbcolor{green}{0 1 0}
-\newrgbcolor{blue}{0 0 1}
-\newrgbcolor{yellow}{1 1 0}
-\newrgbcolor{cyan}{0 1 1}
-\newrgbcolor{magenta}{1 0 1}
-
-\@ifundefined{xglobal}%  do we have xcolor loaded?
- {\@newcolor{randomgray}{tx at Dict begin Rand setgray end}%
-  \@newcolor{randomrgb}{tx at Dict begin Rand Rand Rand setrgbcolor end}%
-  \@newcolor{randomcmyk}{tx at Dict begin Rand Rand Rand Rand setcmykcolor end}%
-  \@newcolor{randomhsb}{tx at Dict begin Rand Rand Rand sethsbcolor end}%
- }{%
-  \definecolor[ps]{randomgray}{gray}{tx at Dict begin Rand end}%
-  \definecolor[ps]{randomrgb}{rgb}{tx at Dict begin Rand Rand Rand end}%
-  \definecolor[ps]{randomcmyk}{cmyk}{tx at Dict begin Rand Rand Rand Rand end}%
-  \definecolor[ps]{randomhsb}{hsb}{tx at Dict begin Rand Rand Rand end}%
- }
-%
-\define at boolkey[psset]{pstricks}[Pst@]{draft}[true]{}
-\define at key[psset]{pstricks}{bgcolor}{\def\pst at bgcolor{#1}}% background for pspicture
-\psset[pstricks]{bgcolor={},draft=false}% \pst at bgcolor is \@empty
-
-\define at key[psset]{pstricks}{style}{%
-  \@ifundefined{pscs@#1}%
-    {\@pstrickserr{Custom style `#1' undefined}\@ehpa}%
-    {\@nameuse{pscs@#1}}%
-}
-\def\newpsstyle{\@ifnextchar[\newpsstyle at ii{\newpsstyle at ii[]}}%% hv 2016-12-23
-%
-%\def\newpsstyle at i#1#2{\@namedef{pscs@#1}{%
-%  \def\pst at tempA{#2}%
-%  \ifx\pst at tempA\@empty\else\psset{#2}\fi}}
-%
-\def\newpsstyle at ii[#1]#2#3{%
-  \@namedef{pscs@#2}{\if$#1$\psset{#3}\else\psset[#1]{#3}\fi}}%% end
-%
-\def\addto at psstyle#1#2{%
-    \pst at toks=\expandafter{#1#2}%
-    \edef#1{\the\pst at toks}}
-\def\addtopsstyle#1#2{%
-  \def\pst at tempA{#2}%
-  \ifx\pst at tempA\@empty\else
-    \@ifundefined{pscs@#1}%
-      {\newpsstyle{#1}{#2}}%
-      {\expandafter\addto at psstyle\csname pscs@#1\endcsname{\psset{#2}}}%
-  \fi\ignorespaces}
-%------------ hv 1.16 end -------------------
-%
-\def\@none{none}
-\def\pst at getcolor#1#2{%
-%  \@ifundefined{color@#1}%	hv 1.14  2005-12-17
-  \@ifundefined{\string\color@#1}%
-    {\@pstrickserr{Color `#1' not defined}\@eha}%
-    {\edef#2{#1}}%
-}
-\newdimen\psunit \psunit 1cm
-\newdimen\psxunit \psxunit 1cm
-\newdimen\psyunit \psyunit 1cm
-\let\psrunit\psunit
-%
-\def\pstunit at off{\let\@psunit\ignorespaces\ignorespaces}
-%
-\def\pssetlength#1#2{%
-  \let\@psunit\psunit
-  \afterassignment\pstunit at off
-  #1 #2\@psunit%
-}
-\def\psaddtolength#1#2{%
-  \let\@psunit\psunit
-  \afterassignment\pstunit at off
-  \advance#1 #2\@psunit%
-}
-\def\pssetxlength#1#2{%
-  \let\@psunit\psxunit
-% \ifpst at useCalc
-%    \edef\@@temp{\pscalculate{#2}}%
-%    \afterassignment\pstunit at off
-%      #1 \@@temp\@psunit
-%  \else
-    \afterassignment\pstunit at off
-    #1 #2\@psunit
-%  \fi
-}
-\def\pssetylength#1#2{%
-  \let\@psunit\psyunit
-%  \ifpst at useCalc
-%    \edef\@@temp{\pscalculate{#2}}%
-%    \afterassignment\pstunit at off
-%    #1 \@@temp\@psunit
-%  \else
-    \afterassignment\pstunit at off
-    #1 #2\@psunit
-%  \fi
-}
-\define at key[psset]{pstricks}{unit}[1cm]{%
-  \pssetlength\psunit{#1}%
-  \psxunit=\psunit%
-  \psyunit=\psunit%
-}
-\define at key[psset]{pstricks}{runit}[1cm]{\pssetlength\psrunit{#1}}
-\define at key[psset]{pstricks}{xunit}[1cm]{\pssetxlength\psxunit{#1}}
-\define at key[psset]{pstricks}{yunit}[1cm]{\pssetylength\psyunit{#1}}
-%
-\define at key[psset]{pstricks}{PstDebug}[0]{\pst at getint{#1}\Pst at Debug}% hv 2004-06-22
-\psset[pstricks]{PstDebug=0}
-\def\psDEBUG{\@ifnextchar[\psDEBUG at i{\psDEBUG at i[PSTricks]}}%
-\def\psDEBUG at i[#1]#2{\ifnum\Pst at Debug>0 \expandafter\typeout{<#1>: #2}\fi}%
-%
-\def\pst at getlength#1#2{%
-  \pssetlength\pst at dimg{#1}%
-  \edef#2{\pst at number\pst at dimg}%
-}
-\def\pst@@getlength#1#2{%
-  \pssetlength\pst at dimg{#1}%
-  \edef#2{\number\pst at dimg sp}%
-}
-\def\pst at getcoor#1#2{\pst@@getcoor{#1}\let#2\pst at coor}
-\def\pst at coor{0 0 }
-%
-\def\pst at getcoors#1#2{%
-  \def\pst at aftercoors{\addto at pscode{#1 \pst at coors }#2}%
-  \def\pst at coors{}%
-  \pst@@getcoors
-}
-\def\pst@@getcoors(#1){%
-  \pst@@getcoor{#1}%
-  \edef\pst at coors{\pst at coor\pst at coors}%
-  \@ifnextchar({\pst@@getcoors}{\pst at aftercoors}%
-}
-%
-\newcount\pst at C@@rType% 0: default cartesian coordinates and angles
-%
-\def\pst at getangle#1#2{\pst@@getangle{#1}\let#2\pst at angle}
-\def\pst at angle{0 }
-%
-\def\cartesian at coor#1,#2,#3\@nil{%
-  \pssetxlength\pst at dimg{#1}%
-  \pssetylength\pst at dimh{#2}%
-  \edef\pst at coor{\pst at number\pst at dimg \pst at number\pst at dimh}%
-}
-\def\NormalCoor{%
-  \def\pst@@getcoor##1{\pst at expandafter\cartesian at coor{##1},\relax,\@nil}%
-  \def\pstCheckCoorType##1{\global\pst at C@@rType=0}%
-  \Pst at SpecialLengthfalse
-  \def\pssetlength##1##2{%
-    \let\@psunit\psunit
-    \afterassignment\pstunit at off
-    ##1 ##2\@psunit%
-  }%
-  \def\pst@@getangle##1{%
-    \pst at checknum{##1}\pst at angle%
-    \edef\pst at angle{\pst at angle \pst at angleunit}%
-  }%
-  \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput at cartesian}%
-}
-%\NormalCoor% set to normal read of coors, angles and lengths
-%
-\def\degrees{\@ifnextchar[{\@degrees}{\def\pst at angleunit{}}}
-\def\@degrees[#1]{%
-  \pst at checknum{#1}\pst at tempg
-  \edef\pst at angleunit{360 \pst at tempg div mul }%
-  \pstVerb{tx at Dict begin startGlobal /pst at angleunit {\pst at angleunit} def endGlobal end}%
-  \ignorespaces}
-%
-\def\radians{\def\pst at angleunit{57.2956 mul }%
-  \pstVerb{tx at Dict begin startGlobal /pst at angleunit {\pst at angleunit} def endGlobal end}}%
-\def\pst at angleunit{}%
-
-%
-\def\SpecialCoor{%
-  \def\pst@@getcoor##1{%
-    \begingroup%
-      \pst at activecoor
-      \xdef\pst at tempg{##1}%
-    \endgroup
-    \expandafter\special at coor\pst at tempg||\@nil}%
-  \def\pstCheckCoorType##1{%
-    \begingroup
-      \pst at activecoor
-      \xdef\pst at tempg{##1}%
-    \endgroup
-    \psDEBUG[pstCheckCoorType]{:Checking coor \pst at tempg:}%
-    \expandafter\pst at CheckCoorType\pst at tempg||\@nil%
-    \psDEBUG[pstCheckCoorType]{::Coor type=\the\pst at C@@rType::}%
-  }%
-  \def\pssetlength##1##2{%
-    \begingroup%
-      \pst at activecoor%
-      \xdef\pst at tempg{##2}%
-    \endgroup%
-    \expandafter\special at length\pst at tempg\@nil{##1}%
-  \ignorespaces}%
-  \def\pst@@getangle##1{%
-    \begingroup%
-      \pst at activecoor%
-      \xdef\pst at tempg{##1}%
-    \endgroup%
-    \expandafter\special at angle\pst at tempg\@empty)\@nil%
-  }%
-  \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput at special}%
-}
-\SpecialCoor% set to special read of coors, angles and lengths
-%
-\define at key[psset]{}{precode}{\def\pst at prepscode{#1 }}
-\define at key[psset]{}{postcode}{\def\pst at postpscode{#1 }}
-\psset{precode={},postcode={}}% For use in other packages
-%
-%
-\begingroup
-\catcode`\|=13
-\catcode`\;=13
-\catcode`\!=13
-\catcode`\*=13
-\catcode`\>=13
-\catcode`\+=13
-\gdef\pst at activecoor{%
-  \def|{\string|}%
-  \def;{\string;}%
-  \def!{\string!}%
-  \def*{\string*}%			algebraic expression hv 2007-11-17
-  \def>{\string>}%
-  \def+{\string+}%			pure algebaric 2013-04-23
-}
-\endgroup
-% \pst at C@@rType = 0 cartesian (x,y)
-%               = 1 polar     (r;phi)
-%               = 2 PS        (! x y)
-%               = 3 mixed     ((x,y)|(x,y))
-%               = 4 algebraic (*x f(x))   x in PostScript notation
-%               = 5 node      (A)
-%               = 6 special node ([...]A)
-%               = 7 node      (>A)
-%               = 8 algebraic (+x,f(x))   _both_ algebraic
-\def\pst at CheckCoorType#1|#2|#3\@nil{%
-  \ifx#3|\relax 
-    \global\pst at C@@rType=3\relax
-  \else 
-    \expandafter\pst@@CheckCoorType#1;;\@nil%
-  \fi}
-%
-\def\pst@@CheckCoorType#1#2;#3;#4\@nil{%
-%\typeout{====1:#1}%
-%\typeout{====2:#2}%
-%\typeout{====3:#3}%
-%\typeout{====4:#4}%
-  \ifx#1>\relax%			node with special rotation for \uput
-    \global\pst at C@@rType=7
-  \else
-    \ifcat#1a\relax%			node names should start with a letter
-      \global\pst at C@@rType=5
-    \else
-      \ifx#1[\relax%			special node coor: [..]A
-        \global\pst at C@@rType=6
-      \else
-        \ifx#1!\relax%			PostScript code: x y
-          \global\pst at C@@rType=2
-        \else
-          \ifx#1*\relax%			algebraic PostScript code: x f(x)
-            \global\pst at C@@rType=4
-          \else
-            \ifx#1+\relax%			algebraic algebraic: x, f(x)
-              \global\pst at C@@rType=8
-  	    \else
-              \ifx#4;\relax%		polar coordinates
-                \global\pst at C@@rType=1
-              \else
-                \global\pst at C@@rType=0
-              \fi
-            \fi
-          \fi
-	\fi
-      \fi
-    \fi
-  \fi
-  \psDEBUG[pstCheckCoorType]{::\the\pst at C@@rType::}%
-  }%
-%
-%
-\def\special at coor#1|#2|#3\@nil{%
-  \ifx#3|\relax
-    \mixed at coor{#1}{#2}%
-  \else
-    \special@@coor#1;;\@nil%
-  \fi}
-%
-\def\special@@coor#1{%
-  \ifcat#1a\relax%			node names should start with a letter
-    \def\ps at next{\node at coor#1}%
-  \else
-    \ifx#1[\relax%			special node coor: [..]A
-      \def\ps at next{\Node at coor[}%
-    \else
-      \ifx#1>\relax%			PostScript code: x y
-        \def\ps at next{\special@@@@coor}%
-    \else
-      \ifx#1!\relax%			PostScript code: x y
-        \def\ps at next{\raw at coor}%
-      \else
-        \ifx#1*\relax%			PostScript/algebraic code: x f(x)
-          \def\ps at next{\alg at coor}%
-        \else
-          \ifx#1+\relax%		algebraic code: x,f(x)
-            \def\ps at next{\algalg at coor}%
-	  \else%
-            \def\ps at next{\special@@@coor#1}%
-          \fi%
-	\fi%
-      \fi%
-    \fi\fi%
-  \fi%
-  \ps at next%
-}
-\def\special@@@coor#1;#2;#3\@nil{%
-  \ifx#3;\relax
-    \polar at coor{#1}{#2}%
-  \else
-    \cartesian at coor#1,\relax,\@nil
-  \fi%
-}
-\def\special@@@@coor#1#2;#3;#4\@nil{%
-  \def\ps at A{A}\def\ps at B{#1}%
-  \ifcat\ps at A\ps at B\relax%
-    \node at coor#1#2;;\@nil%
-  \else%
-    \cartesian at coor#1#2,\relax,\@nil
-  \fi%
-}
-\def\mixed at coor#1#2{%
-  \begingroup%
-% DG/SR modification begin - Oct. 27, 1997 - Patch 6
-%\specialcoor at ii#1;;\@nil
-%\let\pst at tempa\pst at coor
-%\specialcoor at ii#2;;\@nil
-    \special@@coor#1;;\@nil%
-    \let\pst at tempa\pst at coor%
-    \special@@coor#2;;\@nil%
-% DG/SR modification end
-    \xdef\pst at tempg{\pst at tempa pop \pst at coor exch pop }%
-  \endgroup%
-  \let\pst at coor\pst at tempg%
-}
-%
-\def\polar at coor#1#2{%
-%  \pssetlength\pst at dimg{#1}%
-  \pssetlength\pst at dimb{#1}%	hv 2007-10-16  g is already used in get@@angle
-  \pst@@getangle{#2}%
-%  \edef\pst at coor{\pst at number\pst at dimg \pst at angle \tx at PtoC}%  dito
-  \edef\pst at coor{\pst at number\pst at dimb \pst at angle \tx at PtoC }%
-}
-%
-\def\raw at coor{\@ifnextchar !\raw@@coor\raw@@@coor}
-\def\raw@@coor!#1;#2\@nil{%		PostScript code without using \tx at ScreenCoor 
-  \edef\pst at coor{#1 }}
-\def\raw@@@coor#1;#2\@nil{%		PostScript code 
-  \edef\pst at coor{ #1 \tx at ScreenCoor }}
-%
-\def\alg at coor{\@ifnextchar*{\alg@@coor}{\alg@@@@coor}}
-\def\alg@@coor*#1;#2\@nil{\expandafter\alg@@@coor#1\@nil}
-\def\alg@@@coor#1 #2\@nil{%			algebraic PostScript code 
-%\typeout{Nummer1: #1}%
-%\typeout{Nummer2: #2}%
-  \edef\pst at coor{%
-    /Func (#1) AlgParser cvx def    
-    /y #2 def
-    y Func exch \tx at ScreenCoor }}
-%
-\def\alg@@@@coor#1;#2\@nil{\expandafter\alg@@@@@coor#1\@nil}
-\def\alg@@@@@coor#1 #2\@nil{%			algebraic PostScript code 
-  \edef\pst at coor{%
-    /x #1 def
-    /Func (#2) AlgParser cvx def 
-    x Func \tx at ScreenCoor }}
-%
-\define at boolkey[psset]{}[Pst@]{exchange}[true]{}
-\psset{exchange=false}
-%
-\def\algalg at coor#1;#2\@nil{\expandafter\algalg@@@coor#1\@nil}
-\def\algalg@@@coor#1,#2\@nil{%			algebraic algebraic code 
-  \edef\pst at coor{%
-    /x (#1) AlgParser cvx def    
-    /Func (#2) AlgParser cvx def    
-    x Func \tx at ScreenCoor  }}
-%
-\def\node at coor#1\@nil{%
-  \@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps
-  \def\pst at coor{0 0 }%
-}
-\def\Node at coor{\node at coor}
-%
-\def\special at angle#1#2)#3\@nil{%
-  \ifx !#1\relax
-    \edef\pst at angle{#2\space \pst at angleunit}%
-  \else\ifx(#1\relax
-    \pst@@getcoor{#2}%
-    \edef\pst at angle{\pst at coor exch \tx at Atan}%
-  \else
-    \pst at checknum{#1#2}\pst at angle
-    \edef\pst at angle{\pst at angle \pst at angleunit}%
-  \fi\fi}
-%
-\def\special at length#1#2\@nil#3{%
-  \ifx !#1\relax
-    \edef\pst at SpecialLength{ #2 \pst at number\psunit mul }%
-    \Pst at SpecialLengthtrue
-  \else
-    \let\@psunit\psunit
-    \afterassignment\pstunit at off
-    #3 #1#2\@psunit
-    \Pst at SpecialLengthfalse
-  \fi
-}
-%
-\def\Cartesian{%
-  \def\cartesian at coor##1,##2,##3\@nil{%
-    \pssetxlength\pst at dimg{##1}%
-    \pssetylength\pst at dimh{##2}%
-    \edef\pst at coor{\pst at number\pst at dimg \pst at number\pst at dimh}%
-  }%
-  \@ifnextchar({\Cartesian@}{}%
-}
-\def\Cartesian@(#1,#2){%
-  \pssetxlength\psxunit{#1}%
-  \pssetylength\psyunit{#2}%
-  \ignorespaces
-}
-\def\Polar{%
-  \def\psput at cartesian{\psput at special}%
-  \def\cartesian at coor##1,##2,##3\@nil{\polar at coor{##1}{##2}}%
-}%
-\define at key[psset]{pstricks}{origin}[]{%
-  \pst@@getcoor{#1}%
-  \edef\psk at origin{\pst at coor T }}
-\def\psk at origin{}
-%
-\define at boolkey[psset]{pstricks}[Pst@]{algebraic}[true]{}
-\psset{algebraic=false}
-%
-\define at boolkey[psset]{pstricks}[]{swapaxes}[true]{%	\if at pst
-  \@nameuse{@pst#1}%
-  \if at pst\def\psk at swapaxes{-90 rotate -1 1 scale }%
-  \else\def\psk at swapaxes{}%
-  \fi
-}
-\psset[pstricks]{swapaxes=false}
-%
-\define at boolkey[psset]{pstricks}[]{showpoints}[true]{}
-\psset[pstricks]{showpoints=false}
-%
-\let\pst at setrepeatarrowsflag\relax
-%
-\define at key[psset]{pstricks}{border}[0pt]{\pst at getlength{#1}\psk at border \pst at setrepeatarrowsflag}
-\psset[pstricks]{border=0pt}
-\define at key[psset]{pstricks}{bordercolor}[white]{\pst at getcolor{#1}\psbordercolor}
-\psset[pstricks]{bordercolor=white}
-\define at boolkey[psset]{pstricks}[ps]{doubleline}[true]{\pst at setrepeatarrowsflag}
-\psset[pstricks]{doubleline=false}
-\define at key[psset]{pstricks}{doublesep}[1.25\pslinewidth]{\def\psdoublesep{#1}}
-\psset[pstricks]{doublesep=1.25\pslinewidth}
-\define at key[psset]{pstricks}{doublecolor}[white]{\pst at getcolor{#1}\psdoublecolor}
-\psset[pstricks]{doublecolor=white}
-%
-\define at boolkey[psset]{pstricks}[ps]{shadow}[true]{\pst at setrepeatarrowsflag}
-\psset[pstricks]{shadow=false}
-\define at key[psset]{pstricks}{shadowsize}[3pt]{\pst at getlength{#1}\psk at shadowsize}
-\psset[pstricks]{shadowsize=3pt}
-\define at key[psset]{pstricks}{shadowangle}[-45]{\pst at getangle{#1}\psk at shadowangle}
-\psset[pstricks]{shadowangle=-45}
-\define at key[psset]{pstricks}{shadowcolor}[darkgrey]{\pst at getcolor{#1}\psshadowcolor}
-\psset[pstricks]{shadowcolor=darkgray}
-%
-\def\pst at repeatarrowsflag{\z@}
-\def\pst at setrepeatarrowsflag{%
-  \edef\pst at repeatarrowsflag{%
-    \ifdim\psk at border\p@>\z@ 1\else\ifpsdoubleline 1\else
-      \ifpsshadow 1\else \z@\fi\fi\fi}}
-%
-\def\psls at none{}
-\def\psls at solid{ \psk at linejoin\space setlinejoin \psk at linecap\space setlinecap stroke }
-\def\psls at coloreddashed{ \psls at solid grestore gsave \pst at usecolor\psdashcolor \tx at setlinejoin \psls at dashed }
-%
-\newdimen\pslinewidth
-\define at key[psset]{pstricks}{linewidth}[0.8pt]{\pssetlength\pslinewidth{#1}}
-\psset[pstricks]{linewidth=.8pt}
-\define at key[psset]{pstricks}{linecolor}[black]{\pst at getcolor{#1}\pslinecolor}
-\psset[pstricks]{linecolor=black}
-\define at key[psset]{pstricks}{kitecolor}[red]{\pst at getcolor{#1}\ps at kitecolor}
-\define at key[psset]{pstricks}{dartcolor}[blue]{\pst at getcolor{#1}\ps at dartcolor}
-\psset[pstricks]{kitecolor,dartcolor}
-%
-\newif\ifPst at coloreddashed
-\define at key[psset]{pstricks}{dashcolor}[white]{%
-  \ifx\relax#1\relax\Pst at coloreddashedfalse%
-  \else\Pst at coloreddashedtrue\pst at getcolor{#1}\psdashcolor
-  \fi}
-\psset{dashcolor=\relax}
-%\define at key[psset]{pstricks}{linecap}[0]{\pst at getint{#1}\psk at linecap}%	hv 2007-12-01
-%\psset[pstricks]{linecap=0}  >>>>>>>>>>>>> siehe unten
-\define at key[psset]{pstricks}{linejoin}[0]{\pst at getint{#1}\psk at linejoin}%	hv 2007-10-13
-\psset[pstricks]{linejoin=0}
-\def\tx at setlinejoin{\psk at linejoin\space setlinejoin }%	hv 2007-10-13
-%
-\def\pst at missing{%
-  \z@
-  \@pstrickserr{Missing number or dimension. 0 substituted}\@ehpa}
-%
-%%------------------- begin patch 15 HV 2004-05-15 -------------
-\def\pst at empty{\z@}
-
-\define at key[psset]{pstricks}{dash}[5pt 3pt 0pt 0pt]{%	defined in pstricks.tex
-  \pst at expandafter\psset@@dash{#1}\@nil}% Error handling for empty argument.
-\define at key[psset]{pstricks}{maxdashes}[11]{\def\psk at maxdashes{#1}}
-\psset[pstricks]{maxdashes=11}
-%
-\def\psset@@dash#1\@nil{%
- \def\psk at dash{}%
- \pst at cntm0
- \def\next##1 ##2\relax{%
-   \expandafter\ifnum\psk at maxdashes>\pst at cntm\relax  % 04-08-07
-     \edef\@tempa{##1}%
-     \ifx\@tempa\@empty\else% gobble leading spaces
-       \pssetlength\pst at dimc{##1}%
-       \advance\pst at cntm by 1
-       \edef\psk at dash{\psk at dash\space\pst at number\pst at dimc}%
-     \fi%
-     \edef\@tempa{##2}%
-     \ifx\@tempa\@empty\else% detect end
-       \ifx\@tempa\space\else% gobble trailing spaces
-         \next##2\relax%
-     \fi\fi%
-   \else% 04-08-07
-     \@pstrickserr{Number of dashes > \psk at maxdashes. Increasing 
-        'maxdashes' might work.}\@ehpa% 04-08-07
-   \fi% 04-08-07
- }%
- \expandafter\next#1 \relax}
-\psset[pstricks]{dash=5pt 3pt 0pt 0pt}% black white black white 
-%%------------------- end patch 15 HV 2004-05-15 -------------
-\define at boolkey[psset]{pstricks}[ps]{dashadjust}[true]{}
-\psset[pstricks]{dashadjust}
-\def\tx at DashLine{DashLine }
-%
-\def\psls at dashed{
-  \ifPst at coloreddashed \psls at solid grestore gsave \pst at usecolor\psdashcolor \tx at setlinejoin \fi
-  \psk at linecap\space setlinecap 
-  \ifpsdashadjust
-    [ \psk at dash ] \pst at linetype\space \tx at DashLine
-  \else
-    [ \psk at dash ] 0 setdash stroke
-  \fi}
-%% End patch TN; Date (YY-MM-DD): 04-07-17; 2nd part
-%
-\define at key[psset]{pstricks}{dotsep}[3pt]{\pst at getlength{#1}\psk at dotsep}
-\psset[pstricks]{dotsep=3pt}
-\def\tx at DotLine{DotLine }
-\def\psls at dotted{
-  \ifpsdashadjust
-    \psk at dotsep \pst at linetype\space \tx at DotLine
-  \else
-    [ 0 \psk at dotsep CLW add ] 0 setdash 1 setlinecap stroke
-  \fi
-}
-%
-\define at key[psset]{pstricks}{linestyle}[solid]{%
-  \@ifundefined{psls@#1}%
-    {\@pstrickserr{Line style `#1' not defined}\@eha}%
-    {\def\pslinestyle{#1}}}
-\psset[pstricks]{linestyle=solid}
-%
-\define at key[psset]{pstricks}{linecap}[0]{%
-  \def\psk at linecap{0}%
-  \ifnum#1>-1
-    \ifnum#1<3
-      \pst at getint{#1}\psk at linecap%
-  \fi\fi}
-\psset{linecap=0}
-%------------------------- Transparency modes ----------------------------
-\pst at def{setTransparency}< \psk at opacityalpha .setopacityalpha >
-\pst at def{setStrokeTransparency}< \psk at strokeopacityalpha .setstrokeopacityalpha >
-\pst at def{setBlendmode}<
-    \ifcase\psk at blendmode
-      /Normal \or
-      /Compatible \or
-      /Screen \or
-      /Multiply \or
-      /HardLight \or
-      /Darken \or
-      /Lighten \or
-      /Difference\or
-      /ColorDodge\or
-      /ColorBurn\or
-      /SoftLight\or
-      /Hue\or
-      /Saturation\or
-      /Luminosity\or
-      /Overlay\or
-      /Exclusion\or
-      /Color
-    \else
-      /Normal 
-    \fi
-    .setblendmode \psk at shapealpha .setopacityalpha >
-%
-%--------------------------------- hv 2007-09-09 begin ---------------------
-% transparency needs a run through latex -> dvips -> ps2pdf14(!) 
-%
-\def\e at fill@inverse{oefill}
-\define at key[psset]{pstricks}{fillcolor}[white]{%
-  \ifx\psk at fillstylename\e at fill@inverse
-    \pst at getcolor{#1}\psk at oefillcolor
-    \pst at getcolor{white}\psfillcolor
-  \else \pst at getcolor{white}\psk at oefillcolor
-        \pst at getcolor{#1}\psfillcolor
-  \fi}
-
-\psset[pstricks]{fillcolor=white}
-\define at key[psset]{pstricks}{strokeopacity}[1]{\pst at checknum{#1}\psk at strokeopacityalpha }% for lines
-\psset[pstricks]{strokeopacity=1}
-\define at key[psset]{pstricks}{opacity}[1]{\pst at checknum{#1}\psk at opacityalpha }% for filled areas 
-\psset[pstricks]{opacity=1}
-\define at key[psset]{pstricks}{shapealpha}[0.6]{\pst at checknum{#1}\psk at shapealpha }
-\psset[pstricks]{shapealpha=0.6}
-\define at key[psset]{pstricks}{blendmode}[0]{\pst at getint{#1}\psk at blendmode }% must be one of 
-% /Normal     0
-% /Compatible 1
-% /Screen     2
-% /Multiply   3
-% /HardLight  4
-\psset[pstricks]{blendmode=0}
-\define at key[psset]{pstricks}{fsAngle}[137.50775]{\pst at getangle{#1}\pst at fsAngle }
-\define at key[psset]{pstricks}{fsOrigin}[(0,0)]{%
-  \pst@@getcoor{#1}\edef\pst at fsOrigin{\pst at coor T }}
-\psset[pstricks]{fsOrigin={0,0},fsAngle=137.50775}
-%
-\def\tx at LineFill{LineFill }
-\def\tx at DotFill{DotFill }
-\def\tx at PenroseFill{PenroseFill }
-\def\tx at PenroseFillA{PenroseFillA }
-\def\tx at TruchetFill{TruchetFill }
-%
-\def\psfs at none{}
-\def\psfs at solid{\pst at fill{\pst at usecolor\psfillcolor \tx at setTransparency fill }}
-\def\psfs at eofill{\pst at fill{\pst at usecolor\psfillcolor \tx at setTransparency eofill}}
-\def\psfs at oefill{\pst at fill{\pst at usecolor\psk at oefillcolor \tx at setTransparency fill }\psfs at eofill }
-\def\psfs at shape{\pst at fill{\pst at usecolor\psfillcolor \tx at setBlendmode fill }}
-\def\psfs at spiral{\pst at fill{\pst at fsOrigin \pst at usecolor\psfillcolor clip newpath
-    0 .1 500 { dup dup sqrt 4 div 0 360 arc fill \pst at fsAngle rotate } for }}
-%
-\define at key[psset]{pstricks}{hatchwidth}[0.8pt]{\pst at getlength{#1}\psk at hatchwidth}
-\psset[pstricks]{hatchwidth=.8pt}
-\define at key[psset]{pstricks}{hatchsep}[4pt]{\pst at getlength{#1}\psk at hatchsep}
-\psset[pstricks]{hatchsep=4pt}
-\define at key[psset]{pstricks}{hatchcolor}[black]{\pst at getcolor{#1}\pshatchcolor}
-\psset[pstricks]{hatchcolor=black}
-\define at key[psset]{pstricks}{hatchangle}[45]{\pst at getangle{#1}\psk at hatchangle}
-\psset[pstricks]{hatchangle=45}
-\define at key[psset]{pstricks}{hatchsepinc}[0pt]{\pst at getlength{#1}\psk at hatchsepinc}
-\define at key[psset]{pstricks}{hatchwidthinc}[0pt]{\pst at getlength{#1}\psk at hatchwidthinc}
-\psset[pstricks]{hatchwidthinc=0pt,hatchsepinc=0pt}
-%
-\def\pst at linefill#1{
-  /clipType { \ifx\relax#1\relax clip \else#1\fi} def 
-  \psk at hatchangle rotate
-  \psk at hatchwidth SLW
-  \pst at usecolor\pshatchcolor
-  \psk at hatchsep 
-  \psk at hatchsepinc
-  \psk at hatchwidthinc
-  \tx at LineFill }
-%
-\def\psfs at vlines{\pst at fill{\pst at linefill{}}}
-\def\psfs at eovlines{\pst at fill{\pst at linefill{eoclip}}}
-\@namedef{psfs at vlines*}{\psfs at solid \psfs at vlines}
-\@namedef{psfs at eovlines*}{\psfs at eofill \psfs at eovlines}
-\def\psfs at hlines{\pst at fill{90 rotate \pst at linefill{}}}
-\def\psfs at eohlines{\pst at fill{90 rotate \pst at linefill{eoclip}}}
-\@namedef{psfs at hlines*}{\psfs at solid \psfs at hlines}
-\@namedef{psfs at eohlines*}{\psfs at eofill \psfs at eohlines}
-\def\psfs at crosshatch{\psfs at vlines \psfs at hlines}
-\@namedef{psfs at crosshatch*}{\psfs at solid \psfs at vlines \psfs at hlines}
-\@namedef{psfs at eocrosshatch*}{\psfs at eofill \psfs at eovlines \psfs at eohlines}
-%
-\define at key[psset]{pstricks}{psscale}[1]{%
-  \def\psk@@psscale{#1}%   for use with \psscalebox
-  \pst at checknum{#1}\psk at psscale}
-\psset[pstricks]{psscale=1}
-%
-\def\pst at dotFill[#1]{%
-  /clipType { \ifx\relax#1\relax clip \else #1 \fi } def 
-  gsave
-  \pst at number\pslinewidth SLW
-  \pst at usecolor\pshatchcolor
-%  /DotLineColor { \pst at usecolor\pslinecolor } def
-  \psk at hatchsep 
-  \psk at hatchwidth
-  \tx at DotFill }
-
-\def\psfs at dots{\pst at fill{ /SolidDot false def \pst at dotFill[] }}
-\def\psfs at eodots{\pst at fill{ /SolidDot false def \pst at dotFill[eoclip] }}
-\@namedef{psfs at dots*}{\pst at fill{ /SolidDot true def \pst at dotFill[] }}
-\@namedef{psfs at eodots*}{\pst at fill{ /SolidDot true def \pst at dotFill[eoclip] }}
-%
-\def\pst at penroseFill{%
-%  gsave					% restore in PenroseFill
-  \pst at number\pslinewidth SLW
-  \pst at usecolor\pshatchcolor
-  \psk at psscale 
-  \tx at PenroseFill }
-\def\psfs at penrose{\pst at fill\pst at penroseFill}
-\@namedef{psfs at penrose*}{\psfs at solid \psfs at penrose}
-%
-\def\pst at penroseFillA{%
-%  gsave					% restore in PenroseFillA
-  \pst at number\pslinewidth SLW
-%  \pst at usecolor\pshatchcolor
-%  on stack: scaling factor, border color, kite color, dart color
-%  dup dup scale
-%  /border_colour ED % 
-%  /kite_colour ED %
-%  /dart_colour 
-  { \pst at usecolor\ps at dartcolor }
-  { \pst at usecolor\ps at kitecolor }
-  { \pst at usecolor\pshatchcolor }
-  \psk at psscale 
-  \tx at PenroseFillA }
-\def\psfs at penroseA{\pst at fill\pst at penroseFillA}
-\@namedef{psfs at penroseA*}{\psfs at solid \psfs at penroseA}
-%
-\def\pst at truchetFill{%
-  gsave					% restore in PenroseFill
-  \pst at number\pslinewidth SLW
-  \pst at usecolor\pshatchcolor
-  \psk at psscale 
-  \tx at TruchetFill }
-\def\psfs at truchet{ \pst at fill\pst at truchetFill }
-\@namedef{psfs at truchet*}{\psfs at solid \psfs at truchet}
-%
-\define at key[psset]{pstricks}{fillstyle}[none]{%
-  \def\psk at fillstylename{#1}%  needed for inverse eofill
-  \edef\pst at tempg{#1}\def\pst at temph{none}%
-  \ifx\pst at tempg\pst at temph
-     \let\psk at fillstyle\relax
-  \else
-    \@ifundefined{psfs@#1}%
-    {\@pstrickserr{Undefined fill style: `#1'}\@eha}%
-    {\edef\psk at fillstyle{\expandafter\noexpand\csname psfs@#1\endcsname}}%
-  \fi%
-}
-\define at key[psset]{pstricks}{addfillstyle}[]{%
-  \@ifundefined{psfs@#1}%
-    {\@pstrickserr{Undefined fill style: `#1'}\@eha}%
-    {\edef\psk at fillstyle{%
-      \expandafter\noexpand\psk at fillstyle
-      \expandafter\noexpand\csname psfs@#1\endcsname}%
-    }}
-\psset[pstricks]{fillstyle=none}
-%
-%--------------------------- continous linewidth -------------------
-\newdimen\psk at startLW
-\newdimen\psk at endLW
-\define at key[psset]{pstricks}{startLW}[\pslinewidth]{\pssetlength{\psk at startLW}{#1}}%
-\define at key[psset]{pstricks}{endLW}[\pslinewidth]{\pssetlength{\psk at endLW}{#1}}%
-\define at key[psset]{pstricks}{startWL}[380]{\pst at getint{#1}\psk at startWL}%
-\define at key[psset]{pstricks}{endWL}[780]{\pst at getint{#1}\psk at endWL}%
-\define at boolkey[psset]{pstricks}[Pst@]{variableLW}[true]{}
-\define at boolkey[psset]{pstricks}[Pst@]{variableColor}[true]{}
-\define at key[psset]{pstricks}{setflat}[0.1]{\pst at checknum{#1}\psk at setflat}%
-\psset[pstricks]{startLW=\pslinewidth,endLW=\pslinewidth,variableColor=false,
-  variableLW=false,startWL=380,endWL=780,setflat=0.1}
-%
-\def\pst at flattenpath{
-  /Coors [] def         % the array of all points
-  /lambda \psk at startWL\space def
-  %
-  /add2Values { Coors aload length 2 add array astore /Coors exch def } def
-  /add6Values { Coors aload length 6 add array astore /Coors exch def } def
-%
-  \psk at setflat\space setflat   % the value for the line snippets
-  flattenpath            % flatten the existing path into line segments
-%
-  { add2Values }         % what to do with moveto
-  { add2Values }         % what to do with lineto 
-  { add6Values }         % what to do with curveto (not needed here) 
-  { }                    % what to do with closepath
-  pathforall             % do it for the existing path
-%
-  \pst at number\psk at startLW setlinewidth
-  \tx at setlinejoin
-  \psk at linecap\space setlinecap
-  Coors aload length 2 sub 2 div cvi /N0 exch def % set number of points
-  /NN 0 def
-  /N N0 def
-  { N 3 gt { N 3 sub /N ED }{ N 1 sub /N ED } ifelse 
-    NN 1 add /NN ED
-    N 0 eq { exit } if
-  } loop
-  /dLW \pst at number\psk at endLW \pst at number\psk at startLW sub NN div def          % the step for the linewidth
-  \ifPst at variableColor
-    /dColor \psk at endWL\space \psk at startWL\space sub NN div def
-    lambda dColor add dup /lambda ED 
-    tx at addDict begin wavelengthToRGB Red Green Blue end setrgbcolor
-  \else
-    \pst at usecolor\pslinecolor
-  \fi
-  moveto                 % move to the first one
-  /N N0 def
-  {
-    N 3 gt {  
-%    CP 6 2 roll
-    \psk at curvature\space /c ED /b ED /a ED
-    /ArrowA {} def
-    /ArrowB {} def
-    BOC NC EOC %    curveto 
-    N 3 sub /N ED }{ lineto N 1 sub /N ED } ifelse
-    currentlinewidth dLW add setlinewidth % increase line width
-    \ifPst at variableColor
-      lambda dColor add dup /lambda ED 
-      tx at addDict begin wavelengthToRGB Red Green Blue end setrgbcolor
-    \else
-      \pst at usecolor\pslinecolor
-    \fi
-    CP /Y ED /X ED       % put coors of current point on the stack
-    stroke               % draw the line segment
-    N 0 eq { exit }{ X Y moveto } ifelse
-  } loop
-%  N {                    % repeat for the other N coords
-%    lineto               % line to next point
-%    currentlinewidth dLW add setlinewidth % increase line width
-%    lambda dColor add dup /lambda ED 
-%    tx at addDict begin wavelengthToRGB Red Green Blue end setrgbcolor
-%    currentpoint         % put coors of current point on the stack
-%    0.4 .setopacityalpha 
-%    stroke               % draw the line segment
-%    moveto
-%  } repeat
-}
-
-%
-%--------------------------- A R R O W S ---------------------------
-%
-\def\psk at arrowA{}
-\def\psk at arrowB{}
-\def\pst at arrowtable{,-,<->,<<->>,>-<,>>-<<,(-),[-],)-(,]-[,|>-<|,<D-D>,D>-<D,<D<D-D>D>} % hv --1.16
-\edef\pst at arrowtable{\pst at arrowtable,|<*->|*,|<->|}
-\begingroup
-  \catcode`\<=13
-  \catcode`\>=13
-  \catcode`\|=13
-  \gdef\pst at activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
-\endgroup
-\def\tx at BeginArrow{BeginArrow }
-\def\tx at EndArrow{EndArrow }
-%
-\def\tx at Arrow{ \tx at setStrokeTransparency Arrow }% hv 2008-01-13
-\def\tx at ArrowD{ \tx at setStrokeTransparency ArrowD }% hv 2008-01-13
-%
-\@namedef{psas@<|}{ 
-    \psk at tbarsize\space \tx at Tbar
-    0 CLW 2 div T
-    newpath
-    true 
-    \psk at arrowinset 
-    \psk at arrowlength 
-    \psk at arrowsize 
-    \tx at Arrow 
-}
-% ]-[ arrow
-\def\tx at BracketOut{BracketOut }
-\@namedef{psas@[}{%
-  /BracketOut {%
-  CLW mul add dup CLW sub 2 div
-%/x ED mul CLW add
-  /x ED mul neg
-  /y ED
-  /z CLW 2 div def
-  x neg y moveto
-  x neg CLW 2 div L x CLW 2 div L x y L stroke 0 CLW moveto } def
-  \psk at bracketlength\space \psk at tbarsize\space \tx at BracketOut
-}
-% )-( arrow
-\def\tx at RoundBracketOut{ \tx at setStrokeTransparency RoundBracketOut }% hv 2008-01-13
-\@namedef{psas@(}{%
-  /RoundBracketOut {%
-    CLW mul add dup 2 div
-%/x ED mul
-    /x ED mul neg
-    /y ED
-    /mtrx CM def
-    0 CLW
-    2 div T x y mul 0 ne { x y scale } if
-    1 1 moveto
-    .85 .5 .35 0 0 0 curveto
-    -.35 0 -.85 .5 -1 1 curveto
-    mtrx setmatrix stroke 0 CLW moveto } def
-  \psk at rbracketlength\space \psk at tbarsize\space \tx at RoundBracketOut
-}
-% end of new definitions of the missing arrows ---- hv 1.12
-\@namedef{psas@>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow }
-\@namedef{psas@>>}{%
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-  0 h T gsave newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-  CP grestore CP newpath moveto 2 copy 
-  CLW \pst at arrowscale\space div SLW % set the original line width  
-  L stroke moveto
-}
-\@namedef{psas@<}{true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow}
-\@namedef{psas@<<}{
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-  CP newpath moveto 0 a neg 
-  gsave
-  CLW \pst at arrowscale\space div SLW % set the original line width  
-  L stroke 
-  grestore
-  0 h neg T
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-}
-\@namedef{psas at D>}{ false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD }%	hv 20071211
-\@namedef{psas at D>D>}{ %	hv 20071211
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-  0 h Inset sub T gsave newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-  CP grestore moveto 
-}
-\@namedef{psas@<D}{ %	hv 20071211
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-}
-\@namedef{psas@<D<D}{ %	hv 20071211
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-  CP newpath moveto 0 a neg L stroke 0 h neg T
-  true \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at ArrowD
-}
-\define at key[psset]{pstricks}{tbarsize}[2pt 5]{%
-  \pst at expandafter\pst at getdimnum{#1} 0 {} {}\@nil
-  \edef\psk at tbarsize{\pst at number\pst at dimg \pst at tempg}}
-\psset[pstricks]{tbarsize=2pt 5}
-%
-\def\tx at Tbar{Tbar }
-\@namedef{psas@|}{\psk at tbarsize \tx at Tbar}
-\@namedef{psas@|*}{0 CLW -2 div T \psk at tbarsize \tx at Tbar}
-\@namedef{psas@>|}{%
-  \psk at tbarsize \tx at Tbar
-  0 CLW 2 div T
-  newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-}
-\@namedef{psas@>|*}{%
-  0 CLW -2 div T
-  \psk at tbarsize \tx at Tbar
-  0 CLW 2 div T
-  newpath
-  false \psk at arrowinset \psk at arrowlength \psk at arrowsize \tx at Arrow
-}
-%
-\define at key[psset]{pstricks}{bracketlength}[0.15]{\pst at checknum{#1}\psk at bracketlength}
-\psset[pstricks]{bracketlength=.15}
-\def\tx at Bracket{Bracket }
-\@namedef{psas@]}{\psk at bracketlength \psk at tbarsize \tx at Bracket}
-\define at key[psset]{pstricks}{rbracketlength}[0.15]{\pst at checknum{#1}\psk at rbracketlength}
-\psset[pstricks]{rbracketlength=.15}
-\def\tx at RoundBracket{RoundBracket }
-\@namedef{psas@)}{\psk at rbracketlength \psk at tbarsize \tx at RoundBracket}
-%
-\def\psas at c{1 \psas@@c}
-\def\psas at cc{0 CLW 2 div T 1 \psas@@c}
-\def\psas at C{2 \psas@@c}
-\def\psas@@c{%
-  setlinecap
-  0 0 moveto
-  0 0.1 L % changed value from 0.5 to 0.1
-  stroke
-  0 0 moveto }
-%
-\def\psas@{}
-%
-\define at key[psset]{pstricks}{arrowLW}{\pst at getlength{#1}\psk at arrowLW}
-\psset[pstricks]{arrowLW=0}
-% arrowLW as LineWidth for the circled line ends
-%
-\def\psas at o{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {\pst at usecolor\psfillcolor true} false \psk at dotsize \tx at EndDot }
-\def\psas at oo{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {\pst at usecolor\psfillcolor true} true \psk at dotsize \tx at EndDot }
-\@namedef{psas@*}{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {false} false \psk at dotsize \tx at EndDot }
-\@namedef{psas@**}{\psk at arrowLW\space dup 0 eq { pop }{ SLW } ifelse
-  {false} true \psk at dotsize \tx at EndDot }
-%
-\define at key[psset]{pstricks}{arrows}[-]{%
-  \begingroup
-    \pst at activearrows
-    \xdef\pst at tempg{#1}%
-  \endgroup
-  \expandafter\psset@@arrows\pst at tempg\@empty-\@empty\@nil
-  \if at pst\else\@pstrickserr{Bad arrows specification: #1}\@ehpa\fi}
-\def\psset@@arrows#1-#2\@empty#3\@nil{%
-  \@psttrue
-  \def\ps at next##1,#1-##2,##3\@nil{\def\pst at tempg{##2}}%
-  \expandafter\ps at next\pst at arrowtable,#1-#1,\@nil
-  \@ifundefined{psas@\pst at tempg}{\@pstfalse\def\psk at arrowA{}}{\let\psk at arrowA\pst at tempg}%
-  \@ifundefined{psas@#2}{\@pstfalse\def\psk at arrowB{}}{\def\psk at arrowB{#2}}}
-\psset[pstricks]{arrows=-}
-%
-\define at key[psset]{pstricks}{arrowscale}[1]{%                                   hv --1.12
-  \pst at getscale{#1}\psk at arrowscale
-  \pst@@arrowscale at i#1 \@nil}%           hv --1.12
-\def\pst@@arrowscale at i#1 #2\@nil{\edef\pst at arrowscale{#1}}% hv --1.12
-\psset[pstricks]{arrowscale=1}
-%
-\define at key[psset]{pstricks}{arrowsize}[1.5pt 2]{%
-  \pst at expandafter\pst at getdimnum{#1} 0 {} {}\@nil
-  \edef\psk at arrowsize{\pst at number\pst at dimg \pst at tempg}%
-}
-\psset[pstricks]{arrowsize=1.5pt 2}
-\define at key[psset]{pstricks}{arrowlength}[1.4]{\pst at checknum{#1}\psk at arrowlength}
-\psset[pstricks]{arrowlength=1.4}
-\define at key[psset]{pstricks}{arrowinset}[0.4]{\pst at checknum{#1}\psk at arrowinset}%
-\psset[pstricks]{arrowinset=0.4}
-%
-\def\tx at SD{ \tx at setTransparency SD }
-\def\tx at EndDot{EndDot }
-%
-\def\pst at par{}
-\def\addto at par#1{%
-  \ifx\pst at par\@empty
-    \def\pst at par{#1}%
-  \else
-    \expandafter\def\expandafter\pst at par\expandafter{\pst at par,#1}%
-  \fi%
-}
-\def\addbefore at par#1{%
-  \ifx\pst at par\@empty
-    \def\pst at par{#1}%
-  \else
-    \toks@{#1}%
-    \pst at toks\expandafter{\pst at par}%
-    \edef\pst at par{\the\toks@,\the\pst at toks}%
-  \fi%
-}
-\def\use at par{%
-  \ifx\pst at par\@empty\else
-    \expandafter\@psset\pst at par,\@nil
-    \def\pst at par{}%
-  \fi
-}
-\def\use at keep@par{%			same as \use at par, but keeps the values
-  \ifx\pst at par\@empty\else
-    \expandafter\@psset\pst at par,\@nil
-%    \def\pst at par{}%
-  \fi}
-%
-\def\pst at object#1{%
-  \def\pst at par{}%
-  \pst at ifstar{%
-    \@ifnextchar[{\pst@@object{#1}}{\@nameuse{#1 at i}}}%
-}
-\def\pst@@object#1[#2]{%
-  \def\pst at par{#2}%
-  \@ifnextchar+{\@nameuse{#1 at i}}{\@nameuse{#1 at i}}%
-}
-\def\newpsobject#1#2#3{%
-\@ifundefined{#2 at i}%
-{\@pstrickserr{Graphics object `#2' not defined}\@eha}{%
-\@namedef{#1}{\pst at object{#1}}%
-\@namedef{#1 at i}{\addbefore at par{#3}\@nameuse{#2 at i}}}%
-\ignorespaces}
-%
-\def\pst at getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
-% ------------------------- hv 1.10 beg ------------------------
-%\def\pst@@getarrows#1#2{\addto at par{arrows=#2}#1}
-\def\pst@@getarrows#1#2{%
-  \def\pst at tempa{#2}% prevent empty arrow arguments, to allow \psline{}(...)(...)
-  \ifx\pst at tempa\@empty
-    \addto at par{arrows=-}%
-  \else
-    \addto at par{arrows=#2}%
-  \fi
-  #1%
-}
-% ------------------------- hv 1.10 end ------------------------
-%
-\def\begin at ClosedObj{%
-  \leavevmode
-  \pst at killglue
-  \begingroup
-  \use at par
-  \solid at star
-  \ifpsdoubleline\pst at setdoublesep\fi
-  \pst at addarrowdef% DG addition
-  \init at pscode}
-%
-\def\end at ClosedObj{%
-  \ifpsshadow \pst at closedshadow \fi
-  \ifdim\psk at border\p@>\z@ \pst at addborder \fi
-  \psk at fillstyle
-  \pst at stroke
-  \ifpsdoubleline \pst at doublestroke \fi
-  \ifshowpoints
-% DG modification begin - Mar. 4, 1995
-%\addto at pscode{Points aload length 2 div cvi /N ED \psdots at iii}%
-  \pst at OpenShowPoints
-% DG modification end
-  \fi
-  \use at pscode
-  \endgroup
-  \ignorespaces%
-}
-\def\begin at OpenObj{%
-  \begin at ClosedObj%
-  \let\pst at linetype\pst at arrowtype%
-  \pst at addarrowdef%
-}
-\def\begin at AltOpenObj{%
-  \begin at ClosedObj
-  \def\pst at repeatarrowsflag{\z@}%
-  \def\pst at linetype{0}}
-%
-\def\end at OpenObj{%
-  \ifpsshadow \pst at openshadow \fi
-  \ifdim\psk at border\p@>\z@ \pst at addborder \fi
-  \psk at fillstyle
-  \pst at stroke
-  \ifpsdoubleline \pst at doublestroke \fi
-  \ifnum\pst at repeatarrowsflag>\z@ \pst at repeatarrows \fi
-  \ifshowpoints \pst at OpenShowPoints \fi
-  \use at pscode
-  \endgroup
-  \ignorespaces}
-%
-\def\begin at SpecialObj{%
-  \leavevmode
-  \pst at killglue
-  \begingroup
-  \use at par
-  \init at pscode}
-%
-\def\end at SpecialObj{%
-  \use at pscode
-  \endgroup
-  \ignorespaces}
-%
-\def\pst at code{}%
-\def\init at pscode{%
-  \addto at pscode{%
-    \pst at number\pslinewidth SLW
-    \pst at usecolor\pslinecolor}%
-}
-\def\addto at pscode#1{\xdef\pst at code{\pst at code#1\space}}
-\def\use at pscode{%
-  \pstverb{
-    \pst at dict
-    \tx at STP
-    \pst at newpath
-    \psk at origin
-    \psk at swapaxes
-    \pst at code
-    end
-  }%
-  \gdef\pst at code{}%
-}
-\def\use at psCode{%
-  \pstVerb{
-    \pst at dict
-    \tx at STP
-    \pst at newpath
-    \psk at origin
-    \psk at swapaxes
-    \pst at code
-    end
-  }%
-  \gdef\pst at code{}%
-}
-\def\pst at newpath{newpath }
-%
-\def\pst@@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@@killglue\fi}
-\def\KillGlue{\let\pst at killglue\pst@@killglue}
-\def\DontKillGlue{\let\pst at killglue\relax}
-\DontKillGlue
-%
-\def\solid at star{%
-  \if at star
-    \pslinewidth=\z@
-    \psdoublelinefalse
-    \def\pslinestyle{none}%
-    \def\psk at fillstyle{\psfs at solid}%
-    \let\psfillcolor\pslinecolor
-  \fi}
-%
-\def\pst at setdoublesep{%
-\pst at getlength\psdoublesep\psdoublesep
-\pslinewidth=2\pslinewidth
-\advance\pslinewidth\psdoublesep\p@
-\let\pst at setdoublesep\relax}
-\def\tx at Shadow{Shadow }
-\def\pst at closedshadow{%
-  \addto at pscode{%
-    gsave
-    \psk at shadowsize \psk at shadowangle \tx at PtoC
-    \tx at Shadow
-    \pst at usecolor\psshadowcolor
-    gsave fill grestore
-    stroke
-    grestore
-    gsave
-    \pst at usecolor\psfillcolor
-    gsave fill grestore
-    stroke
-    grestore}}
-%
-\def\pst at openshadow{%
-  \addto at pscode{%
-    gsave
-    \psk at shadowsize \psk at shadowangle \tx at PtoC
-    \tx at Shadow
-    \pst at usecolor\psshadowcolor
-    \ifx\psk at fillstyle\relax\else
-      gsave fill grestore
-    \fi
-    stroke}%
-  \pst at repeatarrows%
-  \addto at pscode{grestore}%
-  \ifx\psk at fillstyle\relax\else
-    \addto at pscode{%
-      gsave
-      \pst at usecolor\psfillcolor
-      gsave fill grestore
-      stroke
-      grestore}%
-  \fi}
-%
-\def\pst at addborder{%
-  \addto at pscode{%
-    gsave
-    \psk at border 2 mul
-    CLW add SLW
-    \pst at usecolor\psbordercolor
-    stroke
-    grestore}}
-%
-\def\pst at stroke{%
-  \ifx\pslinestyle\@none\else
-    \addto at pscode{%
-      gsave
-      \pst at number\pslinewidth SLW
-      \pst at usecolor\pslinecolor
-      \tx at setStrokeTransparency % hv 2008-01-13
-      \@nameuse{psls@\pslinestyle}
-      grestore}%
-  \fi}
-%
-\def\pst at fill#1{\addto at pscode{gsave #1 grestore}}%
-%
-\def\pst at doublestroke{%
-    \addto at pscode{%
-      gsave
-      \psdoublesep SLW
-      \pst at usecolor\psdoublecolor
-      \tx at setStrokeTransparency % hv 2016-09-23
-      stroke
-      grestore
-}}
-%
-\def\pst at arrowtype{%
-  \ifx\psk at arrowB\@empty 0 \else -2 \fi
-  \ifx\psk at arrowA\@empty 0 \else -1 \fi
-  add }
-%
-\def\pst at addarrowdef{%
-  \addto at pscode{%
-    /ArrowA {
-      \ifx\psk at arrowA\@empty
-        \pst at oplineto
-      \else
-        \pst at arrowdef{A}
-        moveto
-      \fi
-    } def
-    /ArrowB { \ifx\psk at arrowB\@empty \else \pst at arrowdef{B} \fi } def
-}}
-%
-\def\pst at arrowdef#1{%
-  \ifnum\pst at repeatarrowsflag>\z@
-    /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
-  \fi
-  \tx at BeginArrow 
-  \psk at arrowscale
-  \@nameuse{psas@\@nameuse{psk at arrow#1}}
-  \tx at EndArrow
-}
-%
-\def\pst at repeatarrows{%
-  \addto at pscode{%
-    gsave
-    \ifx\psk at arrowA\@empty\else ArrowAc ArrowA pop pop \fi
-    \ifx\psk at arrowB\@empty\else ArrowBc ArrowB pop pop pop pop \fi
-    grestore
-}}
-%
-\def\pst at OpenShowPoints{%
-  \addto at pscode{%
-    gsave
-    \psk at dotsize
-    \@nameuse{psds@\psk at dotstyle}
-    newpath
-    Points aload length 2 div 2 sub cvi /N ED
-    N 0 ge
-      { \ifx\psk at arrowA\@empty Dot \else pop pop \fi 
-        N { Dot } repeat 
-	\ifx\psk at arrowB\@empty Dot \else pop pop \fi }
-      { N 2 mul { pop } repeat } ifelse
-    grestore
-}}
-%
-\newif\ifPst at custom\Pst at customfalse
-\define at boolkey[psset]{pstricks}[Pst@]{noCurrentPoint}[true]{}
-\psset[pstricks]{noCurrentPoint=false}
-%
-%
-\def\pscustom{\pst at object{pscustom}}
-\long\def\pscustom at i#1{%
-  \begin at SpecialObj%
-  \solid at star%
-  \let\pst at ifcustom\iftrue%
-  \Pst at customtrue%
-  \let\begin at ClosedObj\begin at CustomObj%
-  \let\end at ClosedObj\endgroup%
-  \def\begin at OpenObj{\begin at CustomObj\pst at addarrowdef}%
-  \let\end at OpenObj\endgroup%
-  \let\begin at AltOpenObj\begin at CustomObj%
-  \def\begin at SpecialObj{%
-    \begingroup%
-    \pst at misplaced{special graphics object}%
-    \def\addto at pscode####1{}%
-    \let\end at SpecialObj\endgroup}%
-  \def\@multips(##1)(##2)##3##4{\pst at misplaced\multips}%
-  \def\psclip##1{\pst at misplaced\psclip}%
-  \def\pst at repeatarrowsflag{\z@}%
-  \let\pst at setrepeatarrowsflag\relax%
-  \showpointsfalse%
-  \def\pst at linetype{\pslinetype}%
-  \def\psk at liftpen{\z@}%
-%  \psset{liftpen=0}%
-  \def\pst at cp{/currentpoint load stopped pop }%
-  \def\pst at oplineto{/lineto load stopped { moveto } if }%
-  \def\pst at optcp##1##2{\ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}%
-  \let\caddto at pscode\addto at pscode%
-  \def\cuse at par##1{{\use at par##1}}%
-  \the\pst at customdefs%
-  \setbox\pst at hbox=\hbox{#1}%
-  \psk at fillstyle
-  \pst at stroke
-  \end at SpecialObj
-  \let\pst at ifcustom\iffalse
-  \ignorespaces
-}
-%
-\let\pst at ifcustom\iffalse
-%
-\def\begin at CustomObj{%
-  \begingroup%
-  \use at par%
-  \addto at pscode{
-    \pst at number\pslinewidth SLW
-    \pst at usecolor\pslinecolor
-  }%
-}
-\def\pst at oplineto{moveto }
-\def\pst at cp{}
-\def\pst at optcp#1#2{}
-\define at key[psset]{pstricks}{liftpen}[0]{%
-  \ifPst at custom%
-  \ifcase#1\relax%
-    \def\psk at liftpen{\z@}%
-    \def\pst at cp{/currentpoint load stopped pop }%
-    \def\pst at oplineto{/lineto load stopped { moveto } if }%
-  \or%
-    \def\psk at liftpen{1}%
-    \def\pst at cp{}%
-    \def\pst at oplineto{/lineto load stopped { moveto } if }%
-  \or%
-    \def\psk at liftpen{2}%
-    \def\pst at cp{}%
-    \def\pst at oplineto{moveto }%
-  \fi\fi%
-}
-\psset[pstricks]{liftpen=0}
-\def\psk at liftpen{-1}
-%
-\define at key[psset]{pstricks}{linetype}[2]{%
-  \pst at getint{#1}\pslinetype
-  \ifnum\pst at cntg<-3
-    \@pstrickserr{linetype must be greater than -3}\@ehpa
-    \def\pslinetype{2}%
-  \fi}
-\psset[pstricks]{linetype=2}% otherwise there is a problem when using e.g.
-%                     \psaxes[axesstyle=frame,linestyle=dashed]{->}(3,-2)
-%
-\def\caddto at pscode#1{%
-    \@pstrickserr{Command can only be used in \string\pscustom}\@ehpa}
-\let\cuse at par\caddto at pscode
-%
-\def\tx at MSave{%
-     /msavematrx
-         [ tx at Dict /msavematrx known % does msavematrix exists?
-             { msavematrx aload pop } if
-             CM % matrix currentmatrix
-         ]
-     def
-%----------------- hv begin 2004-05-07 ------------- patch 15
-    msavematrx
-%----------------- hv end 2004-05-07 ------------- patch 15
-}
-\def\tx at MRestore{% a typo in pstricks with msavematrx
-     tx at Dict /msavematrx known { length 0 gt } { false } ifelse
-         { msavematrx aload pop setmatrix } if
-}
-%
-\newtoks\pst at customdefs
-\pst at customdefs{%
-  \def\newpath{\addto at pscode{newpath}}%
-  \def\reversepath{\addto at pscode{ reversepath }}%                      20131209  hv
-  \def\moveto(#1){\pst@@getcoor{#1}\addto at pscode{\pst at coor moveto}}%
-  \def\rmoveto(#1){\pst@@getcoor{#1}\addto at pscode{\pst at coor rmoveto}}%
-  \def\closepath{\addto at pscode{closepath}}%
-  \def\gsave{\begingroup\addto at pscode{gsave}}%
-  \def\grestore{\endgroup\addto at pscode{grestore}}%
-  \def\translate(#1){\pst@@getcoor{#1}\addto at pscode{\pst at coor translate}}%
-  \def\rotate#1{\pst@@getangle{#1}\addto at pscode{\pst at angle rotate}}%
-  \def\scale#1{\pst at getscale{#1}\pst at tempg\addto at pscode{\pst at tempg}}%
-  \def\msave{\addto at pscode{\tx at MSave}}%
-  \def\mrestore{\addto at pscode{\tx at MRestore}}%
-  \def\swapaxes{\addto at pscode{-90 rotate -1 1 scale}}%
-  \def\stroke{\def\pst at par{}\pst at object{stroke}}%
-  \def\fill{\def\pst at par{}\pst at object{fill}}%
-  \def\openshadow{\def\pst at par{}\pst at object{openshadow}}%
-  \def\closedshadow{\def\pst at par{}\pst at object{closedshadow}}%
-  \def\movepath(#1){\pst@@getcoor{#1}\addto at pscode{\pst at coor \tx at Shadow}}%
-  \def\lineto{\pst at onecoor{lineto}}%
-  \def\rlineto{\pst at onecoor{rlineto}}%
-  \def\curveto{\pst at threecoor{curveto}}%
-  \def\rcurveto{\pst at threecoor{rcurveto}}%
-  \def\code#1{\addto at pscode{#1}}%
-  \def\coor(#1){\pst@@getcoor{#1}\addto at pscode\pst at coor\@ifnextchar({\coor}{}}%
-  \def\rcoor{\pst at getcoors{}{}}%
-  \def\dim#1{\pssetlength\pst at dimg{#1}\addto at pscode{\pst at number\pst at dimg}}%
-  \def\setcolor#1{%
-    \@ifundefined{\string\color@#1}{}{\addto at pscode{\pst at usecolor{#1}}}}%  hv 1.14  2005-12-17
-  \def\arrows#1{{\psset[pstricks]{arrows=#1}\pst at addarrowdef}}%
-  \let\file\pst at rawfile%
-} % END \pst at customdefs
-%
-\def\closedshadow at i{\cuse at par\pst at closedshadow}
-\def\openshadow at i{\cuse at par\pst at openshadow}
-\def\stroke at i{\cuse at par\pst at stroke}%
-\def\fill at i{\cuse at par\psk at fillstyle}%
-\def\pst at onecoor#1(#2){%
-\pst@@getcoor{#2}%
-\addto at pscode{\pst at coor #1}}
-\def\pst at threecoor#1(#2)#3(#4)#5(#6){%
-  \begingroup
-    \pst at getcoor{#2}\pst at tempa
-    \pst at getcoor{#4}\pst at tempb
-% DG/SR modification begin - Aug.  4, 1999 - Patch 11
-%\pst at getcoor{#6}\pst at tembc
-    \pst at getcoor{#6}\pst at tempc
-% DG/SR modification end
-    \addto at pscode{\pst at tempa \pst at tempb \pst at tempc #1}%
-  \endgroup}
-%
-\def\pst at 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 at tempg
-    \loop
-      \ifeof1 \@pstfalse\else\@psttrue\fi
-      \if at pst
-      \addto at pscode\pst at tempg
-      \immediate\read1 to \pst at tempg
-    \repeat
-  \fi
-  \immediate\closein1\relax}
-%
-\def\tx at NArray{NArray }
-\def\tx at Line{Line }
-\def\tx at Arcto{Arcto }
-\def\tx at CheckClosed{CheckClosed }
-\def\tx at Polygon{Polygon }
-\define at key[psset]{pstricks}{gangle}[0]{\pst at getangle{#1}\psk at gangle}
-\define at boolkey[psset]{pstricks}[Pst@]{trueAngle}[true]{}
-\psset[pstricks]{trueAngle=false,gangle=0}
-%
-\def\tx at Diamond{Diamond }
-\def\psdiamond{\def\pst at par{}\pst at object{psdiamond}}
-\def\psdiamond at i(#1){\@ifnextchar({\psdiamond at ii(#1)}{\psdiamond at ii(0,0)(#1)}}
-\def\psdiamond at ii(#1)(#2){%
-  \begin at ClosedObj
-  \pst at getcoor{#1}\pst at tempa
-  \pst at getcoor{#2}\pst at tempb
-  \addto at pscode{%
-    \psline at iii
-    pop
-    \psk at dimen
-    \pst at tempb
-    \psk at gangle
-    \pst at tempa
-    \tx at Diamond
-  }%
-  \def\pst at linetype{4}%
-  \end at ClosedObj}
-%
-\def\tx at Triangle{Triangle }
-\def\pstriangle{\def\pst at par{}\pst at object{pstriangle}}
-\def\pstriangle at i(#1){\@ifnextchar({\pstriangle at ii(#1)}{\pstriangle at ii(0,0)(#1)}}
-\def\pstriangle at ii(#1)(#2){%
-  \begin at ClosedObj
-  \pst at getcoor{#1}\pst at tempa%	the center of the baseline
-  \pst at getcoor{#2}\pst at tempb%	the height of the triangle
-  \addto at pscode{%
-    \psline at iii
-    pop			    %	no showpoints option
-    \psk at dimen		    %	outer/inner/middle
-    \pst at tempb
-    \psk at gangle		    %	rotating angle
-    \pst at tempa
-    \tx at Triangle
-  }%
-  \def\pst at linetype{2}%
-  \end at ClosedObj}
-%
-\def\tx at CCA{CCA }
-\def\tx at CCA{CCA }
-\def\tx at CC{CC }
-\def\tx at IC{IC }
-\def\tx at BOC{BOC }
-\def\tx at NC{NC }
-\def\tx at EOC{EOC }
-\def\tx at BAC{BAC }
-\def\tx at NAC{NAC }
-\def\tx at EAC{EAC }
-\def\tx at OpenCurve{OpenCurve }
-\def\tx at AltCurve{AltCurve }
-\def\tx at ClosedCurve{ClosedCurve }
-%
-\define at key[psset]{pstricks}{curvature}[1 0.1 0]{%
-  \edef\pst at tempg{#1 }%
-  \expandafter\psset@@curvature\pst at tempg * * * \@nil}
-\def\psset@@curvature#1 #2 #3 #4\@nil{%
-  \pst at checknum{#1}\pst at tempg
-  \pst at checknum{#2}\pst at temph
-  \pst at checknum{#3}\pst at tempi
-  \edef\psk at curvature{\pst at tempg \pst at temph \pst at tempi}}
-%
-\psset[pstricks]{curvature=1 .1 0}
-%
-\def\pscurve{\pst at object{pscurve}}
-\def\pscurve at i{%
-  \pst at getarrows{%
-    \begin at OpenObj
-      \pst at getcoors[\pscurve at ii%
-    }%
-}
-\def\pscurve at ii{%
-  \addto at pscode{
-    \ifPst at noCurrentPoint\else\pst at cp\fi		% current point
-    \psk at curvature\space /c ED /b ED /a ED
-    \ifshowpoints true \else false \fi
-    \ifx\pslinestyle\psls@@symbol \psls at symbol OpenSymbolCurve \else \tx at OpenCurve \fi
-    \ifPst at variableLW \pst at flattenpath \fi
-  }%
-  \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
-  \end at OpenObj%
-}
-\def\psecurve{\pst at object{psecurve}}
-\def\psecurve at i{\pst at getarrows{\begin at OpenObj\pst at getcoors[\psecurve at ii}}
-\def\psecurve at ii{%
-  \addto at pscode{
-    \psk at curvature\space /c ED /b ED /a ED
-    \ifshowpoints true \else false \fi
-    \ifx\pslinestyle\psls@@symbol \psls at symbol AltOpenSymbolCurve \else \tx at AltCurve \fi
-  }%
-  \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
-  \end at OpenObj}
-%
-\def\psccurve{\pst at object{psccurve}}
-\def\psccurve at i{\begin at ClosedObj\pst at getcoors[\psccurve at ii}
-\def\psccurve at ii{%
-  \addto at pscode{%
-    \psk at curvature\space /c ED /b ED /a ED
-    \ifshowpoints true \else false \fi
-    \ifx\pslinestyle\psls@@symbol \psls at symbol ClosedSymbolCurve \else \tx at ClosedCurve \fi
-  }%
-  \def\pst at linetype{1}%
-  \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
-  \end at ClosedObj}
-%
-\def\pscspline{\pst at object{pscspline}}%  Christoph Bersch
-\def\pscspline at i{%
-  \pst at getarrows{%
-    \begin at OpenObj
-    \pst at getcoors[\pscspline at ii
-  }%
-}
-\def\tx at Spline{Spline }
-\def\pscspline at ii{%
-  \addto at pscode{
-    \ifPst at noCurrentPoint\else\pst at cp\fi
-    \tx at setlinejoin
-    \ifshowpoints true \else false \fi
-    \ifx\pslinestyle\psls@@symbol 
-      \psls at symbol OpenSymbolSpline
-    \else
-      \tx at Spline
-    \fi
-  }%      
-  \end at OpenObj
-}
-%
-\define at key[psset]{pstricks}{dotsize}[2pt 2]{%
-  \pst at expandafter\pst at getdimnum{#1} 0 {} {}\@nil%
-  \edef\psk@@dotsize{\pst at number\pst at dimg}%
-  \let\psk@@@dotsize\pst at tempg%
-  \edef\psk at dotsize{ /DS \psk@@dotsize \psk@@@dotsize CLW mul add 2 div def }}
-\psset[pstricks]{dotsize=2pt 2}
-%
-\define at key[psset]{pstricks}{dotscale}[1]{%
-  \pst at getscale{#1}\psk at dotscale
-  \ifx\psk at dotscale\@empty
-    \def\psk at xdotscale{1 }%
-    \def\psk at ydotscale{1 }%
-  \else
-    \let\psk at xdotscale\pst at tempg
-    \let\psk at ydotscale\pst at temph
-  \fi}
-%
-\def\pst at Getangle#1#2{%
-  \pst at getangle{#1}\pst at tempg
-  \def\pst at temph{0. }%
-  \ifx\pst at tempg\pst at temph\def#2{}\else\edef#2{\pst at tempg\space rotate }\fi}
-%
-\define at key[psset]{pstricks}{dotangle}[0]{%
-  \pst at getangle{#1}\psk@@dotangle
-  \ifdim\psk@@dotangle\p@=\z@
-    \let\psk at dotangle\@empty
-  \else
-    \edef\psk at dotangle{\psk@@dotangle rotate }%
-  \fi}
-\psset[pstricks]{dotangle=0}
-%
-\def\pst at getdotsize{%
-\pst at dimg=\psk@@@dotsize\pslinewidth
-\advance\pst at dimg\psk@@dotsize\p@
-\pst at dimh=\psk at ydotscale\pst at dimg
-\pst at dimg=\psk at xdotscale\pst at dimg
-\divide\pst at dimh 2
-\divide\pst at dimg 2\relax}
-%
-\psset[pstricks]{dotscale=1}
-%
-\def\psdot{\pst at object{psdot}}
-\def\psdot at i{\@ifnextchar({\psdot at ii}{\psdot at ii(\z@,\z@)}}
-\def\psdot at ii(#1){%
-  \begin at SpecialObj%
-% hv modification 1.13 2005-11-28 
-  \solid at star%
-% hv modification end 
-  \pst@@getcoor{#1}%
-  \addto at pscode{
-    \psk at dotsize
-    \@nameuse{psds@\psk at dotstyle}
-    \tx at setStrokeTransparency
-    \pst at coor Dot}%
-  \end at SpecialObj}
-%
-\def\psdots{\pst at object{psdots}}
-\def\psdots at i{%
-  \begin at SpecialObj%
-  \pst at getcoors[\psdots at ii}
-\def\psdots at ii{%
-  \addto at pscode{ false \tx at NArray \psdots at iii }%
-  \end at SpecialObj}
-\def\psdots at iii{%
-  \psk at dotsize
-  \@nameuse{psds@\psk at dotstyle}
-  \tx at setStrokeTransparency
-  newpath
-  n { transform floor .5 add exch floor .5 add exch itransform Dot  } repeat }
-%
-% DG: dead code (to suppress until \psset[pstricks]{dotstyle) ? - Aug. 4, 1997
-\def\tx at SQ{SQ }
-\def\tx at ST{ST }
-\def\tx at SP{SP }
-%
-\def\pst at gdot#1{ /Dot { gsave T \psk at dotangle \psk at dotscale #1 grestore } def }
-%
-\@namedef{psds@*}{\pst at gdot{ 0 0 DS \tx at SD }}
-\@namedef{psds at o}{%
-  /r2 DS CLW sub def
-  \pst at gdot{ 0 0 DS \tx at SD \pst at usecolor\psfillcolor SLW 0 0 r2 \tx at SD }}
-\@namedef{psds at square*}{ /r1 DS .886 mul def \pst at gdot{r1 \tx at SQ }}
-\@namedef{psds at square}{%
-  /r1 DS .886 mul def /r2 r1 CLW sub def
-  \pst at gdot{r1 \tx at SQ \pst at usecolor\psfillcolor r2 \tx at SQ}}
-\@namedef{psds at triangle*}{%
-  /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
-  \pst at gdot{x1 y1 \tx at ST}}
-\@namedef{psds at triangle}{%
-  /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
-  /y2 y1 CLW add def /x2 y2 1.732 mul neg def
-  \pst at gdot{x1 y1 \tx at ST \pst at usecolor\psfillcolor x2 y2 \tx at ST}}
-\@namedef{psds at pentagon*}{%
-  /r1 DS 1.149 mul def
-  \pst at gdot{r1 \tx at SP}}
-\@namedef{psds at pentagon}{%
-  DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
-  \pst at gdot{r1 \tx at SP \pst at usecolor\psfillcolor r2 \tx at SP}}
-\@namedef{psds at +}{%
-  /DS DS 1.253 mul def
-  \pst at gdot{DS 0 moveto DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke}}
-\@namedef{psds@|}{%
-  \psk at tbarsize CLW mul add 2 div /DS ED
-  \pst at gdot{0 DS moveto 0 DS neg L stroke}}
-% DG: end dead code?
-%
-\define at key[psset]{pstricks}{dotstyle}[*]{%
-  \@ifundefined{psds@#1}%
-    {\@pstrickserr{Dot style `#1' not defined}\@eha}%
-    {\edef\psk at dotstyle{#1}}}
-\psset[pstricks]{dotstyle=*}
-%
-\def\tx at FontDot{FontDot }
-\def\newpsfontdot#1[#2]#3#4{%
-  \@namedef{psds@#1}{%
-    /#3 \psk@@dotangle [#2] \tx at FontDot
-% DG/SR modification begin - Dec. 12, 1999 - Patch 14
-%/Dot { moveto #4 show } bind def }}
-    /Dot { moveto gsave \psk at dotscale #4 show grestore } bind def 
-}}
-% DG/SR modification end
-\def\newpsfontdotH#1[#2]#3#4#5{%	for filled objects
-  \@namedef{psds@#1}{%
-    /#3 \psk@@dotangle [#2] \tx at FontDot
-    /Dot {
-      moveto
-%      \iftrue
-% DG/SR modification begin - Dec. 23, 1999 - Patch 14
-%gsave \pst at usecolor\psfillcolor #5 show grestore
-%\fi
-%#4 show
-      gsave \psk at dotscale \pst at usecolor\psfillcolor #5 show grestore % fill first
-%      \fi					
-      gsave \psk at dotscale #4 show grestore	% show the unfilled one
-% DG/SR modification end
-    } bind def 
-}}
-%
-\pstheader{pst-dots.pro}
-\newpsfontdot{*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
-\newpsfontdotH{o}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
-\newpsfontdotH{Bo}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
-\newpsfontdotH{triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
-\newpsfontdotH{Btriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
-\newpsfontdot{triangle*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
-\newpsfontdotH{square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
-\newpsfontdotH{Bsquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
-\newpsfontdot{square*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
-\newpsfontdotH{pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
-\newpsfontdotH{Bpentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
-\newpsfontdot{pentagon*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
-% DG/SR modification begin - Mar. 18, 1997 and Dec. 16, 1999 - Patch 14
-%\newpsfontdot{diamond*}[1.9 0.0 0.0 1.9 -0.4598 -0.70775]{StandardSymL}{<E0>}
-%\newpsfontdot{diamond}[2.3 0.0 0.0 2.3 -0.8533 -0.5336]{StandardSymL}{<A8>}
-% D.G. modification begin - Jan. 17, 2000
-\newpsfontdotH{diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
-\newpsfontdotH{Bdiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
-\newpsfontdot{diamond*}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
-% DG/SR modification end
-\newpsfontdot{oplus}[1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]{StandardSymL}{<C5>}
-\newpsfontdot{otimes}[1.44928 0.0 0.0 1.44928 -0.562319 -0.475362]{StandardSymL}{<C4>}
-\newpsfontdot{x}[1.8 0.0 0.0 1.8 -0.495 -0.4788]{StandardSymL}{<B4>}
-\newpsfontdot{+}[2.3 0.0 0.0 2.3 -0.6486 -0.5819]{NimbusRomNo9L-Regu}{<2B>}
-\newpsfontdot{asterisk}[2.43309 0.0 0.0 2.43309 -0.609489 -1.14477]{NimbusRomNo9L-Regu}{<2A>}
-\newpsfontdot{B+}[2.3 0.0 0.0 2.3 -0.6555 -0.5819]{NimbusRomNo9L-Bold}{<2B>}
-\newpsfontdot{Basterisk}[2.29358 0.0 0.0 2.29358 -0.576835 -1.08486]{NimbusRomNo9L-Bold}{<2A>}
-\newpsfontdot{|}[1.98413 0.0 0.0 1.38 -0.258929 -0.5]{NimbusSanL-Regu}{(|)}
-% DG/SR modification begin - Oct. 27, 1997 - Patch 7
-%[1.98413 0.0 0.0 1.98413 -0.258929 -0.712302]{NimbusSanL-Regu}{(|)}
-% DG/SR modification end
-\newpsfontdot{B|}[1.98413 0.0 0.0 1.38 -0.277778 -0.5]{NimbusSanL-Bold}{(|)}%
-% DG/SR modification begin - Oct. 27, 1997 - Patch 7
-%[1.98413 0.0 0.0 1.98413 -0.277778 -0.78302]{NimbusSanL-Bold}{(|)}
-
-% DG/SR modification end
-\iffalse
-\newpsfontdot{*}[2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]{StandardSymL}{<B7>}
-\newpsfontdot{o}[3.33333 0.0 0.0 3.33333 -0.666667 -1.78167]{StandardSymL}{<B0>}
-\newpsfontdot{Bo}[4.69484 0.0 0.0 4.69484 -0.78169 -2.97418]{NimbusRomNo9L-Bold}{<CA>}
-\fi
-% Etienne Riga
-\newpsfontdot{Asterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(k)}
-\newpsfontdot{BoldAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(K)}
-\newpsfontdotH{SolidAsterisk}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(J)}{(b)}
-%
-\newpsfontdotH{Pentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(p)}{(q)}
-\newpsfontdotH{BoldPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(P)}{(q)}
-\newpsfontdot{SolidPentagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(q)}
-\newpsfontdotH{Hexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(h)}{(G)}
-\newpsfontdotH{BoldHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(H)}{(G)}
-\newpsfontdot{SolidHexagon}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(G)}
-\newpsfontdotH{Octogon}[1 0 0 1 0 0]{PSTricksDotFont}{(f)}{(g)}
-\newpsfontdotH{BoldOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(F)}{(g)}
-\newpsfontdot{SolidOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(g)}
-%
-\newpsfontdot{Bullet}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(b)}
-\newpsfontdotH{Circle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(c)}{(b)}
-\newpsfontdotH{BoldCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(C)}{(b)}
-%\newpsfontdot{SolidCircle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
-\newpsfontdotH{Triangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(t)}{(u)}
-\newpsfontdotH{BoldTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(T)}{(u)}
-\newpsfontdot{SolidTriangle}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(u)}
-\newpsfontdotH{Square}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(s)}{(r)}
-\newpsfontdotH{BoldSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(S)}{(r)}
-\newpsfontdot{SolidSquare}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(r)}
-\newpsfontdot{Add}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(a)}
-\newpsfontdot{BoldAdd}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(A)}
-\newpsfontdot{Mul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(x)}
-\newpsfontdot{BoldMul}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(X)}
-\newpsfontdotH{Oplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(m)}{(b)}
-\newpsfontdotH{BoldOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(M)}{(b)}
-\newpsfontdotH{SolidOplus}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(e)}{(b)}
-\newpsfontdotH{Otimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(n)}{(b)}
-\newpsfontdotH{BoldOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(N)}{(b)}
-\newpsfontdotH{SolidOtimes}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(E)}{(b)}
-\newpsfontdot{Bar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(i)}
-\newpsfontdot{BoldBar}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(I)}
-\newpsfontdotH{Diamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(d)}{(l)}
-\newpsfontdotH{BoldDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(D)}{(l)}
-\newpsfontdot{SolidDiamond}[1.0 0.0 0.0 1.0 0.0 0.0]{PSTricksDotFont}{(l)}
-%
-\newdimen\pslinearc
-\define at key[psset]{pstricks}{linearc}[0pt]{\pssetlength\pslinearc{#1}}
-\psset[pstricks]{linearc=0pt}
-%
-\def\psline{\begingroup\pst at object{psline}}
-\def\psline at i{%
-  \pst at getarrows{%
-    \begin at OpenObj
-    \pst at getcoors[\psline at ii
-  }%
-}
-\def\psline at ii{%
-  \ifx\pslinestyle\psls@@symbol\addto at pscode{ \psls at symbol SymbolLine }%
-  \else
-    \addto at pscode{
-      \ifPst at noCurrentPoint\else\pst at cp\fi 	  % current point?
-      \psline at iii % arc and lineto type
-      \tx at Line	  % .pro function
-    }%
-  \fi
-  \end at OpenObj
-  \endgroup
-}
-\def\psline at iii{%
-  \ifdim\pslinearc>\z@
-    /r \pst at number\pslinearc def
-    /Lineto { \tx at Arcto } def
-  \else
-    /Lineto /lineto load def
-  \fi
-  \tx at setlinejoin 			% hv 2007-10-13
-  \ifshowpoints true \else false \fi
-}
-%
-\def\psLine{\pst at object{psLine}}
-\def\psLine at i{%
-  \pst at getarrows{%
-    \begin at OpenObj
-    \psLine at ii}}
-\def\psLine at ii(#1){\@ifnextchar({\psLine at iii(#1)}{\psLine at iii(0,0)(#1)}}%
-\def\psLine at iii(#1)(#2){%
-  \pst at getcoor{#1}\pst at tempA
-  \pst at getcoor{#2}\pst at tempB
-  \addto at pscode{
-    \ifPst at noCurrentPoint\else\pst at cp\fi 	  % current point?
-    [ % start for coordinate array
-    \pst at tempB 
-    \pst at tempA  % order vice versa
-    4 copy Pyth2 \psk at arrowlength ge 
-      { \psline at iii \tx at Line } 
-      { pop pop pop pop pop } ifelse
-    }%
-  \end at OpenObj
-  \ignorespaces
-}
-\def\psLineSegments{\leavevmode\pst at killglue\pst at object{psLineSegments}}
-\def\psLineSegments at i{\pst at getarrows{\psLineSegments at ii}}
-\def\psLineSegments at ii(#1)(#2){%
-  \begingroup
-  \use at keep@par
-  \solid at star
-  \ifpsdoubleline\pst at setdoublesep\fi
-  \init at pscode
-  \let\pst at linetype\pst at arrowtype
-  \pst at addarrowdef
-  \pst at getcoor{#1}\pst at tempA
-  \pst at getcoor{#2}\pst at tempB
-  \addto at pscode{
-    \ifPst at noCurrentPoint\else\pst at cp\fi 	  % current point?
-    [ % start for coordinate array
-    \pst at tempB 
-    \pst at tempA  % order vice versa
-    4 copy Pyth2 \psk at arrowlength ge 
-      { \psline at iii \tx at Line } 
-      { pop pop pop pop pop } ifelse
-    }%
-  \end at OpenObj
-  \ignorespaces
-  \@ifnextchar(\psLineSegments at ii{}%
-}%
-\def\pst at isnum#1{\pst at isnum@i\zap at space#1 \@empty\@nil}%
-\def\pst at isnum@i#1\@nil{%
-  \if!\ifnum9<1#1!\else_\fi%
-      \expandafter\@firstoftwo%
-  \else%
-      \expandafter\@secondoftwo%
-  \fi}
-%
-\def\psset@@symbol#1#2#3#4\@nil{%
-  \ifx\relax#4\relax\def\psk at symbol{(#1)}%
-  \else%
-    \pst at isnum{#1#2#3}{%
-      \pst at cnta='#1#2#3\relax%
-      \ifnum\pst at cnta>'377\relax%
-        \@pstrickserr{Number too large!}\@ehpb%
-      \else%
-        \def\psk at symbol{(\@backslashchar#1#2#3)}%
-      \fi%
-}{\@pstrickserr{Not a number!}\@ehpb}%
-  \fi}
-%
-\define at key[psset]{pstricks}{symbol}[a]{\expandafter\psset@@symbol#1!!\@nil}
-\psset[pstricks]{symbol=a}
-%
-\newdimen\pst at symbolStep
-\define at key[psset]{pstricks}{symbolStep}[20pt]{\pst at expandafter\pst@@symbolStep#1\@nil}
-\def\pst@@symbolStep#1#2\@nil{\if-#1\pssetlength\pst at symbolStep{-#2pt}\else\pssetlength\pst at symbolStep{#1#2}\fi}
-\psset[pstricks]{symbolStep=20pt}
-
-\newdimen\pst at symbolWidth
-\newdimen\pst at symbolLinewidth
-\define at key[psset]{pstricks}{symbolWidth}[10pt]{\pssetlength\pst at symbolWidth{#1}}
-\define at key[psset]{pstricks}{symbolLinewidth}[0.5pt]{\pssetlength\pst at symbolLinewidth{#1}}
-\psset[pstricks]{symbolWidth=10pt,symbolLinewidth=0.5pt}
-
-\define at key[psset]{pstricks}{symbolFont}[Dingbats]{\def\psk at symbolFont{/#1 }}
-\psset[pstricks]{symbolFont=Dingbats}
-\define at boolkey[psset]{pstricks}[Pst@]{rotateSymbol}[true]{}
-\psset[pstricks]{rotateSymbol=false}
-\define at key[psset]{pstricks}{startAngle}[0]{\pst at getangle{#1}\psk at startAngle}
-\define at key[psset]{pstricks}{tickAngle}[0]{\pst at getangle{#1}\psk at tickAngle}
-\psset[pstricks]{startAngle=0,tickAngle=0}
-\define at boolkey[psset]{pstricks}[Pst@]{curveticks}[true]{}
-\psset[pstricks]{curveticks=false}
-
-%
-\def\psls at symbol{
-  /Symbol \psk at symbol def
-  /SymbolWidth \pst at number\pst at symbolWidth def
-  /SymbolLinewidth \pst at number\pst at symbolLinewidth def
-  /SymStep \pst at number\pst at symbolStep def
-  \psk at symbolFont findfont %0. [1.0 0.0 0.0 1.0 0.0 0.0]
-  \pst at number\pst at symbolWidth scalefont %dup 
-  setfont 
-  /rotateSymbol \ifPst at rotateSymbol true \else false \fi def
-  /tickAngle \psk at tickAngle\space def
-  /startAngle \psk at startAngle\space def
-  /CorrAngle \ifx\psk at rot\@empty 0 \else \psk at rot \fi def
-  /curveticks \ifPst at curveticks true \else false \fi def
-  \pst at number\pslinewidth SLW
-}
-\def\psls@@symbol{symbol}
-%
-\def\psPline{\def\pst at par{}\pst at object{psPline}}% perpendicular to another line B-C
-\def\psPline at i{%
-  \pst at getarrows{%
-    \begin at OpenObj
-    \pst at getcoors[\psPline at ii}%   \pst at coors on stack
-}
-\def\psPline at ii{%
-  \addto at pscode{ % [ pC pB pA  is on stack
-    /yA ED /xA ED
-    /yB ED /xB ED
-    yB sub exch xB sub div /mBC ED		% the slope
-    /mA 1 mBC neg div def			% orthogonal
-    /xS yA yB sub mBC xB mul add mA xA mul sub mBC mA sub div def
-    /yS mBC xS xB sub mul yB add def
-    xS yS xA yA 
-    \ifPst at noCurrentPoint\else\pst at cp\fi 	% current point
-    \psline at iii % arc and lineto type
-    \tx at Line	% .pro function
-  }%
-  \end at OpenObj%
-  \ignorespaces%
-}
-%
-\def\qline(#1)(#2){%
-  \def\pst at par{}%
-  \begin at SpecialObj
-  \def\pst at linetype{0}%
-  \pst at getcoor{#1}\pst at tempa
-  \pst@@getcoor{#2}%
-  \addto at pscode{%
-    \pst at tempa moveto \pst at coor L
-    \@nameuse{psls@\pslinestyle}%
-  }%
-  \end at SpecialObj}
-%
-\def\pspolygon{\pst at object{pspolygon}}
-\def\pspolygon at i{%
-  \begin at ClosedObj%
-  \def\pst at cp{}%
-  \pst at getcoors[\pspolygon at ii%
-}
-\def\pspolygon at ii{%
-  \ifx\pslinestyle\psls@@symbol\addto at pscode{ \psls at symbol SymbolPolygon }%
-  \else                        \addto at pscode{\psline at iii \tx at Polygon}%
-  \fi%
-  \def\pst at linetype{1}%
-  \end at ClosedObj}
-%
-\define at key[psset]{pstricks}{framearc}[0]{\pst at checknum{#1}\psk at framearc}
-\psset[pstricks]{framearc=0}
-%
-\define at key[psset]{pstricks}{cornersize}[relative]{\pst at expandafter\psset@@cornersize{#1}\@nil}
-\def\psset@@cornersize#1#2\@nil{%
-  \if #1a\relax
-    \def\psk at cornersize{\pst at number\pslinearc false }%
-  \else\def\psk at cornersize{\psk at framearc true }%
-  \fi}
-\psset[pstricks]{cornersize=relative}
-%
-\def\tx at Rect{Rect }
-\def\tx at OvalFrame{OvalFrame }
-\def\tx at Frame{Frame }
-%
-\define at key[psset]{pstricks}{dimen}[outer]{\pst at expandafter\psset@@dimen{#1}\@nil}
-\def\psset@@dimen#1#2\@nil{%
-  \if #1o\relax%	outer
-    \def\psk at dimen{.5 }%
-  \else
-    \if #1m\relax%	middle
-      \def\psk at dimen{0 }%
-    \else
-      \if #1i\relax%	inner
-        \def\psk at dimen{-.5 }%
-  \fi\fi\fi}
-\psset[pstricks]{dimen=outer}
-%
-\def\psframe{\pst at object{psframe}}
-\def\psframe at i(#1){%
-  \@ifnextchar({\psframe at ii(#1)}{\psframe at ii(0,0)(#1)}}
-\def\psframe at ii(#1)(#2){%
-  \begin at ClosedObj
-    \pst at getcoor{#1}\pst at tempa
-    \pst@@getcoor{#2}%
-    \addto at pscode{ \psk at cornersize \pst at tempa \pst at coor \psk at dimen \tx at Frame }%
-    \def\pst at linetype{2}%
-    \showpointsfalse
-  \end at ClosedObj
-}
-
-\iffalse
-\def\psSquare{\pst at object{psSquare}}
-\def\psSquare at i(#1)(#2){%
-  \begin at ClosedObj
-    \pst at getcoor{#1}\pst at tempa
-    \pst at getcoor{#2}\pst at tempb
-    \addto at pscode{ \psk at cornersize 
-      \pst at tempa /yA ED /xA ED 
-      \pst at tempb /yB ED /xB ED
-      xA yA moveto xB yB L
-      xA xB sub yA yB sub atan /Angle ED
-      xA yA xB yB Pyth2 dup xA add exch yA add 
-      \psk at dimen 
-      \tx at Frame 
-%      grestore
-    }%
-    \def\pst at linetype{2}%
-    \showpointsfalse
-  \end at ClosedObj
-}
-\fi
-%
-\def\psTextFrame{\pst at object{psTextFrame}}
-\def\psTextFrame at i(#1)(#2)#3{%
-  \addbefore at par{ref=c}%	to prevent an empty value
-  \leavevmode%
-  \pst at killglue
-  \begingroup
-  \use at par
-  \ifx\psk at yref\relax \def\psk at yref{0}\fi% no Baseline possible
-  \SpecialCoor
-  \pst at getcoor{#1}\pst at tempA
-  \pst at getcoor{#2}\pst at tempB
-  \if at star\psframe*(#1)(#2)\else\psframe(#1)(#2)\fi
-  \rput(! \pst at tempA \pst at tempB % x1 y1 x2 y2
-    exch 4 -1 roll 		% y1 y2 x2 x1
-    dup /x1 ED			% y1 y2 x2 x1
-    sub /dx ED			% y1 y2 
-    exch dup /y1 ED 		% y2 y1
-    sub /dy ED	
-    x1 dx \psk at xref\space mul add \pst at number\psxunit div 
-    y1 dy \psk at yref\space mul add \pst at number\psyunit div ){#3}
-  \endgroup
-  \ignorespaces}
-%
-\def\tx at BezierNArray{ BezierNArray }
-\def\tx at OpenBezier{ OpenBezier }
-\def\tx at ClosedBezier{ ClosedBezier }
-\def\tx at BezierShowPoints{ BezierShowPoints }
-\def\tx at BezierCurve{ BezierCurve }
-\def\pst at BezierType{2 }	% the default
-%
-\def\psbezier{\pst at object{psbezier}}
-\def\psbezier at i{%
-  \pst at getarrows{%
-    \begin at OpenObj
-      \pst at getcoors[\psbezier at ii%
-  }%
-}
-\def\psbezier at ii{%
-  \addto at pscode{
-    \ifPst at noCurrentPoint\else\pst at cp\fi
-    \ifshowpoints true \else false \fi
-    \ifx\pslinestyle\psls@@symbol \psls at symbol OpenSymbolBezier 
-    \else 
-      \tx at OpenBezier 
-      \ifshowpoints \tx at BezierShowPoints \fi
-    \fi
-  }%
-  \def\pst at linetype{1}%
-  \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
-  \end at OpenObj}
-%
-\def\pscbezier{\def\pst at par{}\pst at object{pscbezier}}
-\def\pscbezier at i{%
-  \begin at ClosedObj
-  \pst at getcoors[\pscbezier at ii}
-%
-\def\pscbezier at ii{%
-  \addto at pscode{%
-    \ifshowpoints true \else false \fi
-    \ifx\pslinestyle\psls@@symbol \psls at symbol ClosedSymbolBezier 
-    \else 
-      \tx at ClosedBezier
-      \ifshowpoints \tx at BezierShowPoints \fi
-    \fi}%
-%  \chardef\pst at linetype=1
-  \def\pst at linetype{1}%
-  \ifx\pslinestyle\psls@@symbol\def\pslinestyle{none}\fi%
-  \end at ClosedObj}
-%
-\iffalse
-\define at key[psset]{pstricks}{epsilon}[0.005]{\pst at checknum{#1}\psk at epsilon}
-\psset[pstricks]{epsilon=0.005}		% 200 steps for one curve
-%
-\def\psBezier#1{%		% allowed order is 1 ... 9
-  \ifnum#1>0 \ifnum#1<10 \def\pst at BezierType{#1 }\fi\fi%
-  \def\pst at par{}\pst at object{psBezier}}
-\def\psBezier at i{%
-  \pst at getarrows{%
-    \begin at OpenObj
-    \pst at getcoors[\psBezier at ii%
-}}
-\def\psBezier at ii{%
-  \addto at pscode{%
-    \psk at epsilon	    	% step for Bezier T=0,0+epsilon,0+i*epsilon,...,1
-    \pst at BezierType 		% type of the Bezier curve 2,3,4,... 
-    \tx at BezierCurve
-    \ifshowpoints \tx at BezierShowPoints \fi
-  }%
-  \end at OpenObj}
-\fi
-%
-\define at key[psset]{pstricks}{pType}[0]{\pst at cntg=#1\relax\edef\psk at pType{\the\pst at cntg}}
-\psset[pstricks]{pType=0}
-\def\tx at Parab{Parab }%	 given by 1 point and the min/max
-\def\tx at Parabo{Parab1 }% given by 2 points for y-a=(x-b)^2
-%
-\def\psparabola{\pst at object{psparabola}}%  2009-05-19 (hv)
-\def\psparabola at i{\pst at getarrows\psparabola at ii}
-\def\psparabola at ii#1(#2)#3(#4){%  #2 P #4 SP
-  \begin at OpenObj
-  \pst at getcoor{#2}\pst at tempa
-  \pst@@getcoor{#4}%
-  \addto at pscode{\pst at tempa \pst at coor 
-    \ifcase\psk at pType
-      \tx at Parab \or
-      \tx at Parabo
-    \fi}%
-  \end at OpenObj}
-\let\parabola\psparabola% compatibility  (hv)
-%
-%
-\define at key[psset]{pstricks}{gridwidth}[0.8pt]{\pst at getlength{#1}\psk at gridwidth}
-\psset[pstricks]{gridwidth=.8pt}
-\define at key[psset]{pstricks}{griddots}[0]{%
-  \pst at cntg=#1\relax
-  \edef\psk at griddots{\the\pst at cntg}}
-\psset[pstricks]{griddots=0}
-\define at key[psset]{pstricks}{gridcolor}[black]{\pst at getcolor{#1}\psgridcolor}
-\psset[pstricks]{gridcolor=black}
-\define at key[psset]{pstricks}{subgridwidth}[0.4pt]{\pst at getlength{#1}\psk at subgridwidth}
-\psset[pstricks]{subgridwidth=0.4pt}
-\define at key[psset]{pstricks}{subgridcolor}[gray]{\pst at getcolor{#1}\pssubgridcolor}
-\psset[pstricks]{subgridcolor=gray}
-\define at key[psset]{pstricks}{subgriddots}[0]{%
-  \pst at cntg=#1\relax\edef\psk at subgriddots{\the\pst at cntg}}
-\psset[pstricks]{subgriddots=0}
-\define at key[psset]{pstricks}{subgriddiv}[5]{%
-  \pst at cntg=#1\relax\edef\psk at subgriddiv{\the\pst at cntg}}
-\psset[pstricks]{subgriddiv=5}
-%
-\define at key[psset]{pstricks}{gridfont}[NimbusSanL-Regu]{\def\psk at gridfont{/#1 }}%   hv 2007-11-13
-\ifpst at psfonts
-  \psset[pstricks]{gridfont=Helvetica}%
-\else
-  \psset[pstricks]{gridfont=NimbusSanL-Regu}%
-\fi
-%
-\define at key[psset]{pstricks}{gridlabels}[10pt]{\pst at getlength{#1}\psk at gridlabels}
-\psset[pstricks]{gridlabels=10pt}
-\define at key[psset]{pstricks}{gridlabelcolor}[black]{\pst at getcolor{#1}\psgridlabelcolor}
-\psset[pstricks]{gridlabelcolor=black}
-\define at key[psset]{pstricks}{xgridoffset}[0]{\pst at getlength{#1}\psk at xgridoffset}
-\define at key[psset]{pstricks}{ygridoffset}[0]{\pst at getlength{#1}\psk at ygridoffset}
-\psset[pstricks]{xgridoffset=0,ygridoffset=0}
-
-\def\tx at Grid{Grid }
-
-\def\psgrid{\pst at object{psgrid}}
-\def\psgrid at i{\@ifnextchar({\psgrid at ii}{\expandafter\psgrid at iv\pic at coor}}
-\def\psgrid at ii(#1){\@ifnextchar({\psgrid at iii(#1)}{\psgrid at iv(0,0)(0,0)(#1)}}
-\def\psgrid at iii(#1)(#2){\@ifnextchar({\psgrid at iv(#1)(#2)}{\psgrid at iv(#1)(#1)(#2)}}
-\def\psgrid at iv(#1)(#2)(#3){%
-  \begin at SpecialObj%
-    \pst at getcoor{#1}\pst at tempA%  hv 1.11
-    \pst at getcoor{#2}\pst at tempB%  hv 1.11
-    \pst@@getcoor{#3}%
-    \ifnum\psk at subgriddiv>1\relax
-      \addto at pscode{
-      /xGridOffset \psk at xgridoffset\space def
-      /yGridOffset \psk at ygridoffset\space def
-        gsave
-        \tx at setStrokeTransparency
-        \psk at subgridwidth SLW 
-        \pst at usecolor\pssubgridcolor
-        \pst at tempB \pst at coor \pst at tempA                 % hv 1.11
-%        \pst at number\psxunit \pst at number\psyunit        % hv 1.11
-        \pst at number\psxunit abs \pst at number\psyunit abs % hv 1.11
-        \psk at subgriddiv\space \psk at subgriddots\space
-        {} 0 
-        \psk at gridfont findfont 0 scalefont setfont      % hv 1.16
-	\tx at Grid 
-	grestore
-      }%
-    \fi%
-    \addto at pscode{
-      gsave
-      /xGridOffset \psk at xgridoffset def
-      /yGridOffset \psk at ygridoffset def
-      \tx at setStrokeTransparency
-      \psk at gridwidth SLW 
-      \pst at usecolor\psgridcolor
-      \pst at tempB \pst at coor \pst at tempA                 % hv 1.11
-      \pst at number\psxunit abs \pst at number\psyunit abs % hv 1.11
-%      \pst at number\psxunit \pst at number\psyunit        % hv 1.11
-      1 \psk at griddots\space { \pst at usecolor\psgridlabelcolor }
-      \psk at gridlabels 
-      \psk at gridfont findfont \psk at gridlabels scalefont setfont  % hv 1.16
-       \tx at Grid 
-      grestore
-    }%
-  \end at SpecialObj}
-%
-\newif\ifpsmathbox
-\psmathboxtrue
-\def\pst at mathflag{\z@}
-\newtoks\everypsbox
-\let\pst at thisbox\relax
-%
-\long\def\pst at makenotverbbox#1#2{%
-  \edef\pst at mathflag{%
-  \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else\z@\fi\else\z@\fi}%
-  \setbox\pst at hbox=\hbox{%
-    \ifcase\pst at mathflag\or$\m at th\textstyle\or$\m at th\displaystyle\fi%
-    {\pst at thisbox\the\everypsbox#2}%
-    \ifnum\pst at mathflag>\z@$\fi%                                     $
-  }%
-  #1}
-%
-\def\pst at makeverbbox#1{%
-  \def\pst at afterbox{#1}%
-  \edef\pst at mathflag{\ifpsmathbox\ifmmode\ifinner1\else2\fi\else\z@\fi\else\z@\fi}%
-  \afterassignment\pst at beginbox%
-  \setbox\pst at hbox\hbox%
-}
-\def\pst at beginbox{%
-  \ifcase\pst at mathflag\or$\m at th\or$\m at th\displaystyle\fi%
-  \bgroup\aftergroup\pst at endbox%
-  \pst at thisbox%
-  \the\everypsbox%
-}
-\def\pst at endbox{%
-  \ifnum\pst at mathflag>\z@\relax$\fi%                      $
-  \egroup%
-  \pst at afterbox%
-}
-\def\pst at makebox{\pst@@makebox}
-\def\psverbboxtrue{\def\pst@@makebox{\pst at makeverbbox}}
-\def\psverbboxfalse{\def\pst@@makebox{\pst at makenotverbbox}}
-\psverbboxfalse
-\def\pst at longbox{%
-  \def\pst at makebox{%
-    \gdef\pst at makebox{\pst@@makebox}%
-    \pst at makelongbox%
-  }%
-}
-\def\pst at makelongbox#1{%
-  \def\pst at afterbox{#1}%
-  \edef\pst at mathflag{%
-    \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi%
-  }%
-  \setbox\pst at hbox\hbox\bgroup
-  \aftergroup\pst at afterbox
-  \ifcase\pst at mathflag\or$\m at th\or$\m at th\displaystyle\fi
-  \begingroup
-  \pst at thisbox
-  \the\everypsbox%
-}
-\def\pst at endlongbox{%
-  \endgroup
-  \ifnum\pst at mathflag>\z@$\fi		%$
-  \egroup%
-}
-\def\pslongbox#1#2{%
-  \@namedef{#1}{\pst at longbox#2}%
-  \@namedef{end#1}{\pst at endlongbox}}
-%
-\newdimen\psframesep
-\define at key[psset]{pstricks}{framesep}[3pt]{\pssetlength\psframesep{#1}}
-\psset[pstricks]{framesep=3pt}
-%
-\define at boolkey[psset]{pstricks}[ps]{boxsep}[true]{}
-\psset[pstricks]{boxsep}
-%
-\def\pst at useboxpar{%
-  \use at par
-  \if at star
-    \let\pslinecolor\psfillcolor
-    \solid at star
-    \let\solid at star\relax
-  \fi
-  \ifpsdoubleline \pst at setdoublesep \fi}
-%
-\def\psframebox{\def\pst at par{}\pst at object{psframebox}}
-\def\psframebox at i{\pst at makebox\psframebox at ii}
-\def\psframebox at ii{%
-  \begingroup
-  \pst at useboxpar
-  \pst at dima=\pslinewidth
-  \advance\pst at dima by \psframesep
-  \pst at dimc=\wd\pst at hbox\advance\pst at dimc by \pst at dima
-  \pst at dimb=\dp\pst at hbox\advance\pst at dimb by \pst at dima
-  \pst at dimd=\ht\pst at hbox\advance\pst at dimd by \pst at dima
-  \setbox\pst at hbox=\hbox{%
-    \ifpsboxsep\kern\pst at dima\fi
-    \begin at ClosedObj
-    \addto at pscode{%
-      \psk at cornersize % arcradius boolean
-      \pst at number\pst at dima neg
-      \pst at number\pst at dimb neg
-      \pst at number\pst at dimc
-      \pst at number\pst at dimd
-      .5
-      \tx at Frame%
-    }%
-    \def\pst at linetype{2}%
-    \showpointsfalse
-    \end at ClosedObj
-    \box\pst at hbox
-    \ifpsboxsep\kern\pst at dima\fi%
-  }%
-  \ifpsboxsep\dp\pst at hbox=\pst at dimb\ht\pst at hbox=\pst at dimd\fi
-  \leavevmode\box\pst at hbox
-  \endgroup}
-%
-\def\psdblframebox{\def\pst at par{}\pst at object{psdblframebox}}
-\def\psdblframebox at i{\addto at par{doubleline=true}\psframebox at i}
-%
-\define at key[psset]{pstricks}{clipcommand}[clip]{\def\pst at clipcommand{#1 }}
-\psset[pstricks]{clipcommand=clip}% alternative is eoclip
-%
-\def\psclip{\@ifnextchar[\psclip at i{\psclip at i[]}}%
-\def\psclip at i[#1]#2{%
-  \leavevmode%
-  \begingroup%
-    \ifx\relax#1\relax\else\psset{#1}\fi%
-    \begin at psclip%
-      \begingroup%
-        \def\use at pscode{%
-          \pstVerb{
-            \pst at dict
-            /mtrxc CM def
-            CP CP T
-            \tx at STV
-            \psk at origin
-            \psk at swapaxes
-            newpath
-            \pst at code
-            \pst at clipcommand
-            newpath
-            mtrxc setmatrix
-            moveto
-            0 setgray
-            end
-	  }%
-          \gdef\pst at code{}}%
-  \def\@multips(##1)(##2)##3##4{\pst at misplaced\multips}%
-  \def\nc at object##1##2##3##4{\pst at misplaced{node connection}}%
-  \hbox to\z@{#2}%
-  \endgroup%
-  \def\endpsclip{%
-    \end at psclip%
-    \endgroup}%
-  \ignorespaces}
-%
-\def\endpsclip{\pst at misplaced\endpsclip}
-\let\begin at psclip\relax
-\def\end at psclip{\pstVerb{currentpoint initclip moveto}}
-%
-\def\AltClipMode{%
-  \def\end at psclip{\pstVerb{\pst at grestore}}%
-  \def\begin at psclip{\pstVerb{gsave}}}
-  \def\clipbox{\@ifnextchar[{\clipbox@}{\clipbox@[\z@]}}
-% DG modification begin - Apr. 3, 1997
-% From paulus at immd5.informatik.uni-erlangen.de (Dietrich Paulus)
-%\def\clipbox@[#1]{\pst at makebox\clipbox@@{#1}}
-\def\clipbox@[#1]{\pst at makebox{\clipbox@@{#1}}}
-% DG modification end
-\def\clipbox@@#1{%
-  \pssetlength\pst at dimg{#1}%
-  \leavevmode\hbox{%
-  \begin at psclip%
-  \pst at Verb{
-    CM \tx at STV CP T newpath
-    /a \pst at number\pst at dimg def
-    /w \pst at number{\wd\pst at hbox}a add def
-    /d \pst at number{\dp\pst at hbox}a add neg def
-    /h \pst at number{\ht\pst at hbox}a add def
-    a neg d moveto
-    a neg h L
-    w h L
-    w d L
-    closepath
-    \pst at clipcommand
-    newpath
-    0 0 moveto
-    setmatrix}%
-  \unhbox\pst at hbox%
-  \end at psclip}}
-%
-\def\psshadowbox{\def\pst at par{}\pst at object{psshadowbox}}
-\def\psshadowbox at i{\pst at makebox\psshadowbox at ii}
-\def\psshadowbox at ii{%
-\begingroup
-\pst at useboxpar
-\psshadowtrue
-\psboxseptrue
-\def\psk at shadowangle{-45 }%
-\setbox\pst at hbox=\hbox{\psframebox at ii}%
-\pst at dimh=\psk at shadowsize\p@
-\pst at dimh=.7071\pst at dimh
-\pst at dimg=\dp\pst at hbox
-\advance\pst at dimg\pst at dimh
-\dp\pst at hbox=\pst at dimg
-\pst at dimg=\wd\pst at hbox
-\advance\pst at dimg\pst at dimh
-\wd\pst at hbox=\pst at dimg
-\leavevmode
-\box\pst at hbox
-\endgroup}
-%
-\def\pscirclebox{\pst at object{pscirclebox}}
-\def\pscirclebox at i{\pst at makebox\pscirclebox at ii}
-\def\pscirclebox at ii{%
-  \begingroup
-  \pst at useboxpar
-  \setbox\pst at hbox=\hbox{%
-    \pst at nodehook
-    \pscirclebox at iii
-    \box\pst at hbox}%
-  \ifpsboxsep\pscirclebox at sep\fi
-  \leavevmode
-  \box\pst at hbox
-  \endgroup
-  \ignorespaces
-}
-\def\pscirclebox at iii{%
-\if at star
-    \pslinewidth\z@
-    \pstverb{\pst at dict \tx at STP \pst at usecolor\psfillcolor
-             newpath \pscirclebox at iv \tx at SD end}%
-\else
-    \begin at ClosedObj
-    \def\pst at linetype{4}\showpointsfalse
-    \addto at pscode{ \pscirclebox at iv\space CLW 2 div add 0 360 arc closepath}%
-    \end at ClosedObj
-\fi
-}
-%
-\def\pscirclebox at iv{
-  \pst at number{\wd\pst at hbox} 2 div
-  \pst at number{\ht\pst at hbox} \pst at number{\dp\pst at hbox} add 2 div
-  2 copy \pst at number{\dp\pst at hbox} sub 4 2 roll
-  \tx at Pyth \pst at number\psframesep add }
-%
-\def\pscirclebox at sep{%
-  \pst at dimn=\ht\pst at hbox%			% the height of the box
-  \advance\pst at dimn by \dp\pst at hbox%		% the depth  of the box added to \pst at dimn
-  \divide\pst at dimn by 2%			% \pst at dimn/2
-  \pst at dimm=0.5\wd\pst at hbox%			% the half of the width
-  \pst at Pyth\pst at dimm\pst at dimn\pst at dimo%		% the diameter
-  \advance\pst at dimo by \pslinewidth%
-  \advance\pst at dimo by \psframesep%
-  \advance\pst at dimn by -\pst at dimo%
-  \setbox\pst at hbox=\hbox to 2\pst at dimo{\hss\vbox{\kern-\pst at dimn\box\pst at hbox}\hss}%
-  \advance\pst at dimn by -\dp\pst at hbox%
-  \dp\pst at hbox=-\pst at dimn}
-%  
-\let\pst at nodehook\relax
-%
-\def\psCirclebox{\def\pst at par{}\pst at object{psCirclebox}}
-\def\psCirclebox at i{\pst at makebox\psCirclebox at ii}
-\def\psCirclebox at ii{%
-  \begingroup
-  \pst at useboxpar
-  \pst at dima=\ht\pst at hbox
-  \advance\pst at dima by -\dp\pst at hbox
-  \divide\pst at dima\tw@
-  \pssetlength\pst at dimb\psk at radius
-  \setbox\pst at hbox=\hbox{%
-    \pst at nodehook
-    \pscircle(.5\wd\pst at hbox,\pst at dima){\pst at dimb}%
-    \box\pst at hbox}%
-  \ifpsboxsep \psCirclebox at sep \fi
-  \leavevmode
-  \box\pst at hbox
-  \endgroup
-}
-%
-\def\psCirclebox at sep{%
-  \pst at dimc=\pst at dimb
-  \advance\pst at dimb-\pst at dima
-  \advance\pst at dima\pst at dimc
-  \setbox\pst at hbox=\hbox to\tw@\pst at dimc{%
-    \hss\vrule width \z@ depth \pst at dimb height \pst at dima
-    \box\pst at hbox\hss}}
-%
-\def\psovalbox{\def\pst at par{}\pst at object{psovalbox}}
-\def\psovalbox at i{\pst at makebox{\psovalbox at ii}}
-\def\psovalbox at ii{%
-  \begingroup
-  \pst at useboxpar
-  \psovalbox at iii
-  \ifpsboxsep\psovalbox at sep\fi
-  \leavevmode
-  \box\pst at hbox
-  \endgroup}
-%
-\def\psovalbox at iii{%
-  \psovalbox at iv
-  \setbox\pst at hbox=\hbox{%
-    \begin at ClosedObj
-    \addto at pscode{%
-      0 360
-      \pst at number\pst at dimc CLW 2 div sub
-      \pst at number\pst at dimd CLW 2 div sub
-      \pst at number\pst at dima
-      \pst at number\pst at dimb
-      \tx at Ellipse
-      closepath }%
-    \def\pst at linetype{2}%
-    \end at ClosedObj
-    \unhbox\pst at hbox}}
-%
-\def\psovalbox at iv{%
-  \pst at dimc=\pslinewidth\advance\pst at dimc\psframesep
-  \pst at dimd=\ht\pst at hbox\advance\pst at dimd\dp\pst at hbox
-  \pst at dima=.5\wd\pst at hbox
-  \pst at dimb=.5\pst at dimd\advance\pst at dimb-\dp\pst at hbox
-  \pst at dimd=.707\pst at dimd
-  \advance\pst at dimd\pst at dimc
-  \advance\pst at dimc.707\wd\pst at hbox}
-%
-\def\psovalbox at sep{%
-  \setbox\pst at hbox\hbox to 2\pst at dimc{\hss\unhbox\pst at hbox\hss}%
-  \pst at dimg=\pst at dimd
-  \advance\pst at dimg-\pst at dimb
-  \dp\pst at hbox=\pst at dimg
-  \advance\pst at dimd\pst at dimb
-  \ht\pst at hbox=\pst at dimd}
-%
-\def\psdiabox{\def\pst at par{}\pst at object{psdiabox}}
-\def\psdiabox at i{\pst at makebox{\psdiabox at ii}}
-\def\psdiabox at ii{%
-\begingroup
-\pst at useboxpar
-\psdiabox at iii
-\ifpsboxsep\psdiabox at sep\fi
-\leavevmode
-\box\pst at hbox
-\endgroup}
-\def\psdiabox at iv{%
-\pst at dimg=.707\pslinewidth
-\advance\pst at dimg.707\psframesep
-\pst at dima=\wd\pst at hbox
-\divide\pst at dima 2
-\pst at dimc=\pst at dima
-\advance\pst at dimc\pst at dimg
-\pst at dimd=\ht\pst at hbox
-\advance\pst at dimd\dp\pst at hbox
-\divide\pst at dimd 2
-\pst at dimb=\pst at dimd
-\advance\pst at dimb-\dp\pst at hbox
-\advance\pst at dimd\pst at dimg}
-\def\psdiabox at iii{%
-\psdiabox at iv
-\setbox\pst at hbox=\hbox{%
-\begin at ClosedObj
-\addto at pscode{%
-\psline at iii
-pop
-.5
-\pst at number\pst at dimc 2 mul \pst at number\pst at dimd 2 mul
-0
-\pst at number\pst at dima \pst at number\pst at dimb
-\tx at Diamond}%
-\def\pst at linetype{4}%
-\end at ClosedObj
-\box\pst at hbox}}
-\def\psdiabox at sep{%
-\setbox\pst at hbox\hbox to 4\pst at dimc{\hss\unhbox\pst at hbox\hss}%
-\multiply\pst at dimd 2
-\advance\pst at dimd\pst at dimb
-\ht\pst at hbox\pst at dimd
-\advance\pst at dimd-2\pst at dimb
-\dp\pst at hbox\pst at dimd}
-%
-\define at key[psset]{pstricks}{trimode}[U]{\pst at expandafter\psset@@trimode{#1}\@empty\@empty\@nil}
-\def\psset@@trimode#1#2#3\@nil{%
-  \let\pst at tempg#1\relax
-  \ifx\pst at tempg*
-    \let\psk@@trimode\@empty
-    \let\pst at tempg#2\relax
-  \else
-    \let\psk@@trimode\relax
-  \fi
-  \edef\psk at trimode{%
-    \ifx R\pst at tempg 1 % Right
-    \else
-      \ifx D\pst at tempg 2 % Down
-      \else
-        \ifx L\pst at tempg 3 % Left
-        \else 
-          \ifx l\pst at tempg 4 % |_
-          \else
-            \ifx r\pst at tempg 5 % _|
-            \else 0 \fi     % Up
-          \fi
-        \fi
-      \fi
-    \fi}%
-}
-\psset[pstricks]{trimode=U}
-%
-\def\pstribox{\pst at object{pstribox}}
-\def\pstribox at i{\pst at makebox{\pstribox at ii}}
-\def\pstribox at ii{%
-  \begingroup
-  \pst at useboxpar
-  \pstribox at iii
-  \ifpsboxsep\pstribox at sep\fi
-  \leavevmode
-  \box\pst at hbox
-  \endgroup}
-%
-\def\pstribox at iii{%
-  \pstribox at iv
-  \setbox\pst at hbox=\hbox{%
-    \begin at ClosedObj
-    \addto at pscode{
-      \psline at iii
-      pop
-      0.5
-      \pst at number\pst at dimc % Width
-      \pst at number\pst at dimd % Height
-      \ifcase\psk at trimode  
-             \or  %% 0
-        exch \or  %% 1
-             \or  %% 2
-        exch \or  %% 3
-             \or  %% 4
-             \or  %% 5
-      \fi
-      \psk at trimode -90 mul
-      \pst at number\pst at dima % x coor for text
-      \pst at number\pst at dimb % y coor for text
-      \tx at Triangle}%
-    \def\pst at linetype{2}%
-    \end at ClosedObj
-    \box\pst at hbox}%
-}
-%
-\def\pstribox at iv{%
-  \pst at dimh=\pslinewidth
-  \advance\pst at dimh\psframesep
-  \pst at dimg=\ht\pst at hbox
-  \advance\pst at dimg-\dp\pst at hbox         % totalheight
-  \divide\pst at dimg 2                     % 0.5 totalheight
-  \edef\pst at tempa{\number\pst at dimg sp}%  % For use by nodes.
-  \ifodd\psk at trimode                     % 
-    \pst at dimb\pst at dimg
-  \else
-    \pst at dima=\wd\pst at hbox
-    \divide\pst at dima 2
-  \fi
-  \ifcase\psk at trimode
-    \pst at dimb=-\dp\pst at hbox
-    \advance\pst at dimb-\pst at dimh
-  \or\pst at dima=-\pst at dimh
-  \or\pst at dimb=\ht\pst at hbox
-     \advance\pst at dimb\pst at dimh
-  \or\pst at dima=\wd\pst at hbox
-     \advance\pst at dima\pst at dimh
-  \fi
-  \pst at dimd=\dp\pst at hbox
-  \advance\pst at dimd\ht\pst at hbox
-  \ifx\psk@@trimode\relax% no star for trimode=
-    \pst at dimc=\wd\pst at hbox
-    \advance\pst at dimc\ifodd\psk at trimode 1.447\else 1.789\fi\pst at dimh
-    \multiply\pst at dimc 2
-    \advance\pst at dimd\ifodd\psk at trimode 1.789\else 1.447\fi\pst at dimh
-    \multiply\pst at dimd 2
-  \else% trimode=R*,L*,U*,D*
-    \ifodd\psk at trimode
-      \advance\pst at dimd 1.1547\wd\pst at hbox
-      \advance\pst at dimd 3.4641\pst at dimh
-      \pst at dimc=.866\pst at dimd
-    \else
-      \advance\pst at dimd .866\wd\pst at hbox %.866=(sqrt(3)/2)
-      \advance\pst at dimd 3\pst at dimh 
-      \pst at dimc=1.1547\pst at dimd % 1.1547=(2/sqrt(3))
-    \fi
-  \fi}
-%
-\def\pstribox at sep{%
-\ifodd\psk at trimode
-\advance\pst at dimb.5\pst at dimd
-\ht\pst at hbox=\pst at dimb
-\advance\pst at dimd-\pst at dimb
-\dp\pst at hbox=\pst at dimd
-\else
-\setbox\pst at hbox\hbox to \pst at dimc{\hss\unhbox\pst at hbox\hss}%
-\global\pst at dimg=.5\pst at dimc
-\fi
-\ifcase\psk at trimode
-\dp\pst at hbox-\pst at dimb
-\advance\pst at dimd\pst at dimb
-\ht\pst at hbox\pst at dimd
-\or
-\pst at dimg=.5\wd\pst at hbox
-\global\advance\pst at dimg-\pst at dima
-\setbox\pst at hbox\hbox to \pst at dimc{\kern-\pst at dima\box\pst at hbox\hss}%
-\or
-\ht\pst at hbox\pst at dimb
-\advance\pst at dimd-\pst at dimb
-\dp\pst at hbox\pst at dimd
-\or
-\pst at dimg=\pst at dimc
-\advance\pst at dimg-\pst at dima
-\global\advance\pst at dimg.5\wd\pst at hbox
-\setbox\pst at hbox\hbox to \pst at dimc{%
-\hss\box\pst at hbox\kern\psframesep\kern\pslinewidth}%
-\fi}
-%
-\define at key[psset]{pstricks}{arcsepA}[0]{\pst at getlength{#1}\psk at arcsepA}
-\define at key[psset]{pstricks}{arcsepB}[0]{\pst at getlength{#1}\psk at arcsepB}
-\define at key[psset]{pstricks}{arcsep}[0]{%
-  \pst at getlength{#1}\psk at arcsepA\let\psk at arcsepB\psk at arcsepA}
-\psset[pstricks]{arcsep=0}
-\def\tx at ArcArrow{ArcArrow }
-%
-\def\psarc{\pst at object{psarc}}
-\def\psarc at i{\@ifnextchar({\psarc at iii}{\psarc at ii}}
-\def\psarc at ii#1{\addto at par{arrows=#1}\@ifnextchar(\psarc at iii{\psarc at iii(0,0)}}
-\def\psarc at iii(#1)#2#3#4{%
-  \pst at getangle{#3}\pst at tempa
-  \pst at getangle{#4}\pst at tempb
-  \ifx\pst at tempa\pst at tempb
-  \else
-    \begin at OpenObj
-      \pst@@getcoor{#1}%
-      \pssetlength\pst at dima{#2}%
-      \addto at pscode{\psarc at iv \psarc at v
-        \ifPst at variableLW \pst at flattenpath \fi
-      }%
-      \gdef\psarc at type{0}%
-      \showpointsfalse
-    \end at OpenObj
-  \fi
-}
-%
-\def\psarcOA{\pst at object{psarcOA}}% \psarcOA[..](O)(A){angle1}{angle2}
-\def\psarcOA at i{\@ifnextchar({\psarcOA at iii}{\psarcOA at ii}}
-\def\psarcOA at ii#1{\addto at par{arrows=#1}\@ifnextchar(\psarcOA at iii{\psarcOA at iii(0,0)}}
-\def\psarcOA at iii(#1)(#2)#3#4{%
-  \pst at getangle{#3}\pst at tempa
-  \pst at getangle{#4}\pst at tempb
-  \ifx\pst at tempa\pst at tempb
-  \else
-    \begin at OpenObj
-      \pst at getcoor{#1}\pst at tempA
-      \pst at getcoor{#2}\pst at tempB
-      \addto at pscode{
-        \pst at tempA 2 copy /y ED /x ED \pst at tempB Pyth2 /r ED 
-        x y translate
-        /c 57.2957 r \tx at Div def
-        /angleA
-          \pst at tempa
-          \psk at arcsepA c mul 2 div
-          \ifcase\psarc at type add \or sub \fi def
-       /angleB
-         \pst at tempb
-         \psk at arcsepB c mul 2 div
-         \ifcase\psarc at type sub \or add \fi def
-       \ifshowpoints\psarc at showpoints\fi
-       \ifx\psk at arrowA\@empty
-         \ifnum\psk at liftpen=2
-           r angleA \tx at PtoC moveto
-         \fi
-       \fi
-  /angleAtoB angleB angleA gt { true }{ false } ifelse def
-  0 0 r
-  angleA
-  \ifx\psk at arrowA\@empty\else
-    { ArrowA CP }
-    r 0 gt \pslbrace
-    { \ifcase\psarc at type add \or sub \fi } \psrbrace\pslbrace
-    { \ifcase\psarc at type sub \or add \fi } \psrbrace ifelse
-%    { \ifcase\psarc at type add \or sub \fi }
-    \tx at ArcArrow
-%    dup AngleA gt AngleAtoB exor { neg } fi
-  \fi
-  angleB
-  \ifx\psk at arrowB\@empty\else
-    { ArrowB }
-    r 0 gt \pslbrace
-      { \ifcase\psarc at type sub \or add \fi } \psrbrace\pslbrace
-      { \ifcase\psarc at type add \or sub \fi } \psrbrace ifelse
-%      { \ifcase\psarc at type sub \or add \fi }
-    \tx at ArcArrow
-    dup angleA gt angleAtoB xor { pop angleA } if
-  \fi
-  \ifcase\psarc at type arc \or arcn \fi
-       \ifPst at variableLW \pst at flattenpath \fi
-     x neg  y neg translate
-     }%
-     \gdef\psarc at type{0}%
-     \showpointsfalse
-    \end at OpenObj
-  \fi
-}
-\def\psarc at iv{%
-  \pst at coor /y ED /x ED
-  /r \ifPst at SpecialLength \pst at SpecialLength \else \pst at number\pst at dima \fi def
-  /c 57.2957 r \tx at Div def
-  /angleA
-    \pst at tempa
-    \psk at arcsepA c mul 2 div
-    \ifcase\psarc at type add \or sub \fi
-  def
-  /angleB
-    \pst at tempb
-    \psk at arcsepB c mul 2 div
-    \ifcase\psarc at type sub \or add \fi
-  def
-  \ifshowpoints\psarc at showpoints\fi
-  \ifx\psk at arrowA\@empty
-    \ifnum\psk at liftpen=2
-      r angleA \tx at PtoC
-      y add exch x add exch moveto
-    \fi
-  \fi}
-% hv ---- 1.10 2005-05-05 ----------------------> hv begin
-\def\psarc at v{%
-  /angleAtoB angleB angleA gt { true }{ false } ifelse def
-  x y r
-  angleA
-  \ifx\psk at arrowA\@empty\else
-    { ArrowA CP }
-    r 0 gt \pslbrace
-    { \ifcase\psarc at type add \or sub \fi } \psrbrace\pslbrace
-    { \ifcase\psarc at type sub \or add \fi } \psrbrace ifelse
-%    { \ifcase\psarc at type add \or sub \fi }
-    \tx at ArcArrow
-%    dup AngleA gt AngleAtoB exor { neg } fi
-  \fi
-  angleB
-  \ifx\psk at arrowB\@empty\else
-    { ArrowB }
-    r 0 gt \pslbrace
-      { \ifcase\psarc at type sub \or add \fi } \psrbrace\pslbrace
-      { \ifcase\psarc at type add \or sub \fi } \psrbrace ifelse
-%      { \ifcase\psarc at type sub \or add \fi }
-    \tx at ArcArrow
-    dup angleA gt angleAtoB xor { pop angleA } if
-  \fi
-  \ifcase\psarc at type arc \or arcn \fi
-}
-% hv ----- 1.10 2005-05-05 ------------------------> end
-%
-\def\psarc at type{0}
-\def\psarc at showpoints{%
-  gsave
-  newpath
-  x y moveto
-  x y r \pst at tempa \pst at tempb
-  \ifcase\psarc at type arc \or arcn \fi
-  closepath
-  CLW 2 div SLW
-  [ \psk at dash\space ] 0 setdash stroke
-  grestore }
-\def\psarcn{\def\pst at par{}\pst at object{psarcn}}
-\def\psarcn at i{\def\psarc at type{1}\psarc at i}
-%
-\def\psarcAB{\pst at object{psarcAB}}%		hv 2008-11-26
-\def\psarcAB at i{%
-  \addbefore at par{psscale=1}% be sure, that it is defined
-  \pst at getarrows{%
-    \begin at OpenObj%
-      \pst at getcoors{}%
-      \psarcAB at ii
-    }%
-}
-\def\psarcAB at ii{%
-  \addto at pscode{
-  /y ED /x ED /yA ED /xA ED /yB ED /xB ED 
-  /r xB yB x y Pyth2 \psk at psscale\space mul def
-  /c 57.2957 r \tx at Div def
-  /angleA
-    yA y sub xA x sub atan
-    \psk at arcsepA c mul 2 div
-    \ifcase\psarc at type add \else sub \fi
-  def
-  /angleB
-    yB y sub xB x sub atan
-    \psk at arcsepB c mul 2 div
-    \ifcase\psarc at type sub \else add \fi 
-  def
-  \ifx\psk at arrowA\@empty
-    \ifnum\psk at liftpen=2
-      r angleA \tx at PtoC
-      y add exch x add exch moveto
-    \fi
-  \fi
-  \psarc at v}%
-  \gdef\psarc at type{0}%
-  \showpointsfalse%
-  \end at OpenObj%
-}
-\def\psarcnAB{\def\pst at par{}\pst at object{psarcnAB}}
-\def\psarcnAB at i{\def\psarc at type{1}\psarcAB at i}
-%
-%------------------ tvz/DG/hv (2004-05-10) begin -------------------%%
-% from Denis Giroux: http://www.tug.org/pipermail/pstricks/2001/000507.html
-%
-% I - Definition of \psellipticwedge, a generalization of \pswedge for wedges
-%     of ellipses (from the code of \pswedge and \psellipse)
-%
-\def\psellipticwedge{\pst at object{psellipticwedge}}
-\def\psellipticwedge at i(#1){%
-  \@ifnextchar({\psellipticwedge at ii(#1)}{\psellipticwedge at ii(0,0)(#1)}}
-\def\psellipticwedge at ii(#1)(#2)#3#4{%
-  \begin at ClosedObj
-    \pst at getangle{#3}\pst at tempa
-    \pst at getangle{#4}\pst at tempb
-    \pst at getcoor{#1}\pst at tempc
-    \pst@@getcoor{#2}%
-    \def\pst at linetype{1}%
-    \addto at pscode{%
-      \pst at coor /ry ED /rx ED
-      \ifx\psk at rot\@empty \else \psk at rot\space rotate \fi
-      \pst at tempa 
-      \ifPst at correctAngle
-       cvi 90 mod 0 eq { \pst at tempa } 
-         { rx abs ry abs sub cvi 0 eq { \pst at tempa }{ rx ry
-           \tx at UserCoor exch \pst at tempa tan mul exch atan 
-            \pst at tempa 180 div 0.5 add floor 
-            180 mul sub } ifelse } ifelse
-      \fi
-      \pst at tempb
-      \ifPst at correctAngle
-       cvi 90 mod 0 eq { \pst at tempb } 
-         { rx abs ry abs sub cvi 0 eq { \pst at tempb }{ rx ry
-           \tx at UserCoor exch \pst at tempb tan mul exch atan 
-            \pst at tempb 180 div 0.5 add floor 
-            180 mul sub } ifelse } ifelse
-      \fi
-      rx ry
-      \pst at tempc moveto
-      \ifdim\psk at dimen\p@=\z@\else
-        \psk at dimen CLW mul dup 3 1 roll
-        sub 3 1 roll sub exch
-      \fi
-      \pst at tempc
-      \tx at Ellipse
-      closepath
-    }%
-  \showpointsfalse
-  \end at ClosedObj%
-}
-%
-% Code mainly from "pstricks.tex'' 0.94 beta (TvZ)
-%
-\def\psellipticarcn{\pst at object{psellipticarcn}}
-\def\psellipticarcn at i{\let\if at psarcn\iftrue\psellipticarc at ii}
-%
-\def\psellipticarc{\pst at object{psellipticarc}}
-\def\psellipticarc at i{\let\if at psarcn\iffalse\psellipticarc at ii}
-
-\define at boolkey[psset]{pstricks}[Pst@]{correctAngle}[true]{}
-\psset{correctAngle}
-
-\let\if at psarcn\iffalse
-
-\def\psellipticarc at ii{\pst at getarrows\psellipticarc at iii}
-\def\psellipticarc at iii(#1){%
-  \@ifnextchar({\psellipticarc at iv(#1)}{\psellipticarc at iv(0,0)(#1)}}
-\def\psellipticarc at iv(#1)(#2)#3#4{%
-%  \addbefore at par{correctAngle=false}
-  \pst at getangle{#3}\pst at tempc	%	start angle
-  \pst at getangle{#4}\pst at tempd	% 	end angle
-  \ifx\pst at tempc\pst at tempd
-  \else % same angles? then do nothing
-    \begin at OpenObj
-    \pst at getcoor{#1}\pst at tempa    %	origin
-    \pst at getcoor{#2}\pst at tempb	%	a b
-      \addto at pscode{ 
-        \psellipticarc at definearg \psellipticarc at draw
-        \ifPst at variableLW \pst at flattenpath \fi 
-      \ifshowpoints{}
-          gsave
-          xOrig yOrig T % set origin to ellipse origin
-          \ifx\psk at rot\@empty \else \psk at rot\space rotate \fi
-          rx ry scale   % now we draw a circle :-)
-          1 \pst at tempc  % start angle
-          \ifPst at correctAngle
-            cvi 90 mod 0 eq { \pst at tempc } 
-             { rx abs ry abs sub cvi 0 eq { \pst at tempc }{ rx ry
-               \tx at UserCoor exch \pst at tempc tan mul exch atan 
-               \pst at tempc 180 div 0.5 add floor 
-               180 mul sub } ifelse } ifelse
-          \fi
-        PtoC moveto 
-        0 0 lineto 
-        1 \pst at tempd % end angle
-        \ifPst at correctAngle
-          cvi 90 mod 0 eq { \pst at tempd } 
-           { rx ry \tx at UserCoor exch \pst at tempd tan mul exch atan 
-             \pst at tempd 180 div .5 add floor 180 mul sub } ifelse 
-        \fi
-        PtoC lineto 0 0 lineto 
-        closepath
-   %  \ifcase\psarc at type arc \or arcn \fi
-        CLW 3 div \pst at number\psunit div SLW 
-        [ 1 1 \tx at UserCoor 2 mul ] 0 setdash 
-        stroke
-        grestore 
-      \fi
-    }%
-      \showpointsfalse
-    \end at OpenObj
-  \fi
-}
-\def\psellipticarc at definearg{%
-%  \ifx\psk at rot\@empty \else \psk at rot\space rotate \fi
-  \pst at tempa /yOrig ED /xOrig ED  % Origin
-  \pst at tempb                      % radii. Now adjust:
-  \ifdim\psk at dimen\p@=\z@\else
-    \psk at dimen CLW mul dup 3 1 roll
-    sub 3 1 roll sub exch
-  \fi
-  /ry ED /rx ED		% a b
-  /angleA
-    /d { \if at psarcn sub \else add \fi } def
-%    \pst at tempc 
-% the angle in the parameter equation is not proportional to the real angle!
-% phi=atan(b*tan(angle)/a)+floor(angle/180+0.5)*180
-   \pst at tempc 
-   \ifPst at correctAngle 
-     cvi 90 mod 0 eq { \pst at tempc } 
-       { rx ry \tx at UserCoor exch \pst at tempc tan mul exch atan 
-          \pst at tempc 180 div .5 add floor 180 mul sub } ifelse 
-    \fi
-    \psk at arcsepA 2 div
-    ArcAdjust
-  def
-  /angleB
-    /d { \if at psarcn add \else sub \fi } def
-%    \pst at tempd 
-  \pst at tempd 
-  \ifPst at correctAngle
-     cvi 90 mod 0 eq { \pst at tempd } 
-       { rx ry \tx at UserCoor exch \pst at tempd tan mul exch atan 
-          \pst at tempd 180 div .5 add floor 180 mul sub } ifelse 
-  \fi
-  \psk at arcsepB 2 div ArcAdjust  def
-%  \ifshowpoints\psellipticarc at showpoints\fi
-  \ifx\psk at arrowA\@empty
-    \ifnum\psk at liftpen=2
-      angleA cos rx mul xOrig add
-      angleA sin ry mul yOrig add
-      moveto
-    \fi%
-  \fi%
-}
-\def\psellipticarc at draw{%
-  0 0 1
-  angleA
-  \ifx\psk at arrowA\@empty\else
-    { ArrowA CP }
-    { \if at psarcn sub \else add \fi }
-    EllipticArcArrow
-  \fi
-  angleB
-  \ifx\psk at arrowB\@empty\else
-    { ArrowB }
-    { \if at psarcn add \else sub \fi }
-    EllipticArcArrow
-  \fi
-  /mtrx CM def
-  xOrig yOrig T
-  \ifx\psk at rot\@empty \else \psk at rot\space rotate \fi
-  rx ry scale
-  \pst at ifcustom\else
-    0 0 moveto 
-    exch dup dup               % end start start start
-    cos exch sin moveto        % end start
-    exch                       % start end 
-  \fi
-%%  \if at star 0 0 moveto \fi	% for filling
-  \if at psarcn arcn \else arc \fi
-%%  \if at star 0 0 moveto \fi
-  mtrx setmatrix%
-}
-\def\psellipticarc at showpoints{%
-  gsave
-  /mtrx CM def
-  xOrig yOrig T
-  rx ry scale
-  0 0 moveto
-  0 0 1 
-  \pst at tempc % start angle
-  \ifPst at correctAngle
-     cvi 90 mod 0 eq { \pst at tempc } 
-       { rx abs ry abs sub cvi 0 eq { \pst at tempc }{ rx ry
-         \tx at UserCoor exch \pst at tempc tan mul exch atan 
-          \pst at tempc 180 div 0.5 add floor 
-          180 mul sub } ifelse } ifelse
-    \fi
-  \pst at tempd % end angle
-   \ifPst at correctAngle
-     cvi 90 mod 0 eq { \pst at tempd } 
-       { rx abs ry abs sub cvi 0 eq { \pst at tempd } { rx ry 
-         \tx at UserCoor exch \pst at tempd tan mul exch atan 
-          \pst at tempd 180 div 0.5 add floor 
-          180 mul sub } ifelse } ifelse
-    \fi
-  \ifcase\psarc at type arc \or arcn \fi
-  closepath
-  mtrx setmatrix
-  CLW 2 div SLW
-  [ \psk at dash\space ] 0 setdash 
-  stroke
-  grestore %
-}
-\def\pscircle{\def\pst at par{}\pst at object{pscircle}}
-\def\pscircle at i{\@ifnextchar({\pscircle at do}{\pscircle at do(0,0)}}
-\def\pscircle at do(#1)#2{%
-  \if at star{\use at par\qdisk(#1){#2}}%   	qdisk does not allow
-  \else%				to use opacity option
-    \addbefore at par{dimen=middle}%
-    \begin at ClosedObj
-    \pst@@getcoor{#1}%
-    \pssetlength\pst at dimc{#2}%
-    \def\pst at linetype{4}%
-    \addto at pscode{
-      \pst at coor 2 copy moveto
-      \ifPst at SpecialLength \pst at SpecialLength \else \pst at number\pst at dimc \fi 
-      \psk at dimen CLW mul round % prevent rounding errors
-      sub 
-      dup 0 rmoveto
-      0 360 arc
-      \ifPst at variableLW \pst at flattenpath \fi
-      closepath
-    }%
-    \showpointsfalse
-    \end at ClosedObj
-  \fi
-  \ignorespaces}
-%
-\def\pscircleOA{\def\pst at par{}\pst at object{pscircleOA}}%	hv 2008-04-14
-\def\pscircleOA at i(#1)(#2){%
-  \addbefore at par{dimen=middle}%
-  \begin at ClosedObj
-  \pst at getcoor{#1}\pst at tempA
-  \pst@@getcoor{#2}%
-  \def\pst at linetype{4}%
-  \addto at pscode{
-    \pst at tempA			% x0 y0
-    2 copy			% xO yO xO yO 
-    \pst at coor			% xO yO xO yO xA yA 
-    Pyth2			% xO yO radius
-    \psk at dimen CLW mul sub
-    \if at star \tx at SD \else
-      0 360 arc
-      closepath 
-    \fi }%
-  \showpointsfalse
-  \end at ClosedObj
-  \ignorespaces}
-%
-\def\qdisk(#1)#2{%
-  \def\pst at par{}%
-  \begin at SpecialObj
-  \pst@@getcoor{#1}%
-  \pssetlength\pst at dimg{#2}%
-  \addto at pscode{ 
-    \pst at coor 
-    \ifPst at SpecialLength \pst at SpecialLength \else \pst at number\pst at dimg \fi
-%    \pst at number\pst at dimg 
-    \tx at SD }%
-  \end at SpecialObj}
-%
-\define at key[psset]{pstricks}{radius}[0.25cm]{\pst@@getlength{#1}\psk at radius}
-\psset[pstricks]{radius=.25cm}
-%
-\def\psCircle{\pst at object{psCircle}}% same as \pscircle, but uses \psk at radius
-\def\psCircle at i{\@ifnextchar({\psCircle at ii}{\psCircle at ii(0,0)}}
-\def\psCircle at ii(#1){\pscircle at do(#1){\psk at radius}}
-%
-\def\psRing{\def\pst at par{}\pst at object{psRing}}%% hv 20130405
-\def\psRing at i{\@ifnextchar({\psRing at ii}{\psRing at ii(0,0)}}
-\def\psRing at ii(#1){%
-  \pst@@getcoor{#1}%
-  \@ifnextchar[{\psRing at iii}{\psRing at iii[0,360]}}
-\def\psRing at iii[#1,#2]#3#4{%   origin, inner radius, outer radius
-  \begin at ClosedObj
-  \pssetlength\pst at dimc{#3}%
-  \edef\pst at tempA{\ifPst at SpecialLength \pst at SpecialLength \else \pst at number\pst at dimc \fi}%
-  \pssetlength\pst at dimd{#4}%
-  \edef\pst at tempB{\ifPst at SpecialLength \pst at SpecialLength \else \pst at number\pst at dimd \fi}%
-  \pst at getangle{#1}\pst at tempa
-  \pst at getangle{#2}\pst at tempb
-  \def\pst at linetype{4}%
-  \addto at pscode{
-    \pst at coor translate 
-%    \pst at number\pst at dimc \psk at dimen CLW mul sub /InnerRadius ED
-%    \pst at number\pst at dimd \psk at dimen CLW mul sub /OuterRadius ED
-    \pst at tempA\space \psk at dimen CLW mul sub /InnerRadius ED
-    \pst at tempB\space \psk at dimen CLW mul sub /OuterRadius ED
-    InnerRadius 0 moveto newpath
-    0 0 InnerRadius \pst at tempa\space \pst at tempb\space arc 
-    OuterRadius \pst at tempb\space PtoC 
-    \pst at tempb\space \pst at tempa\space sub abs 360 eq { moveto }{ lineto } ifelse % whole circle or not??
-    0 0 OuterRadius \pst at tempb\space \pst at tempa\space arcn 
-    closepath
-  }%
-  \showpointsfalse
-  \end at ClosedObj
-  \ignorespaces}
-%
-\def\pswedge{\def\pst at par{}\pst at object{pswedge}}
-\def\pswedge at i{\@ifnextchar({\pswedge at ii}{\pswedge at ii(0,0)}}
-\def\pswedge at ii(#1)#2#3#4{%
-  \begin at ClosedObj
-  \pssetlength\pst at dimc{#2}%
-  \pst at getangle{#3}\pst at tempa
-  \pst at getangle{#4}\pst at tempb
-  \pst@@getcoor{#1}%
-  \def\pst at linetype{1}%
-  \addto at pscode{
-    \ifx\psk at rot\@empty 0 \else \psk at rot \fi rotate
-    \pst at coor
-    2 copy
-    moveto
-    \ifPst at SpecialLength \pst at SpecialLength \else \pst at number\pst at dimc \fi
-    \psk at dimen CLW mul sub % Adjusted radius
-    \pst at tempa \pst at tempb
-    arc
-    closepath}%
-  \showpointsfalse
-  \end at ClosedObj
-}
-\def\tx at ellipse#1{ \ifx\psk at rot\@empty 0 \else \psk at rot \fi #1  Ellipse }
-\def\tx at Ellipse{ \ifx\psk at rot\@empty 0 \else \psk at rot \fi Ellipse }
-%
-\def\psellipse{\def\pst at par{}\pst at object{psellipse}}
-\def\psellipse at i(#1){\@ifnextchar({\psellipse at ii(#1)}{\psellipse at ii(0,0)(#1)}}
-\def\psellipse at ii(#1)(#2){%
-  \begin at ClosedObj
-  \pst at getcoor{#1}\pst at tempa
-  \pst@@getcoor{#2}%
-  \addto at pscode{
-    0 360
-    \pst at coor 
-    \ifdim\psk at dimen\p@=\z@\else
-      \psk at dimen CLW mul
-      dup 4 -1 roll sub neg 3 1 roll sub
-    \fi
-    \pst at tempa 
-    \tx at ellipse{true}
-    \ifPst at variableLW \pst at flattenpath \fi
-    closepath
-  }%
-  \def\pst at linetype{2}%
-  \end at ClosedObj%
-}
-\def\psellipseAB{\def\pst at par{}\pst at object{psellipseAB}}
-\def\psellipseAB at i(#1)(#2)#3{%
-  \begin at ClosedObj
-  \pst at getcoor{#1}\pst at tempa
-  \pst at getcoor{#2}\pst at tempb
-  \addto at pscode{
-    0 360
-    #3 \pst at number\psxunit mul
-    \pst at tempa /yA ED /xA ED
-    \pst at tempb /yB ED /xB ED
-    xA xB sub dup mul
-    yA yB sub dup mul add sqrt 2 div
-    \ifdim\psk at dimen\p@=\z@\else
-      \psk at dimen CLW mul
-      dup 4 -1 roll sub neg 3 1 roll sub
-    \fi
-    xA xB add 2 div yA yB add 2 div
-    translate 0 0
-    xB xA sub yA yB sub atan 
-    Ellipse  % on stack is rotate coordinates
-    \ifPst at variableLW \pst at flattenpath \fi
-    closepath
-  }%
-  \def\pst at linetype{2}%
-  \end at ClosedObj
-}
-\def\multips{\@ifnextchar({\def\pst at par{}\multips at ii}{\multips at i}}
-\def\multips at i#1{\def\pst at par{rot=#1}\multips at ii}
-\def\multips at ii(#1){\@ifnextchar({\multips at iii(#1)}{\multips at iii(\z@,\z@)(#1)}}
-\long\def\multips at iii(#1)(#2)#3#4{%
-  \begingroup
-%----------------- hv 1.10 ------------------
-  \pst at killglue
-%----------------- hv 1.10 ------------------
-  \use at par
-  \pst at getcoor{#1}\pst at tempa
-  \pst@@getcoor{#2}%
-  \pst at cnta=#3\relax
-  \init at pscode
-  \addto at pscode{%
-    \pst at tempa T \the\pst at cnta\space \pslbrace
-    gsave \ifx\psk at rot\@empty\else\psk at rot rotate \fi}%
-  \hbox to\z@{%
-    \def\init at pscode{%
-      \addto at pscode{%
-        gsave
-        \pst at number\pslinewidth SLW
-        \pst at usecolor\pslinecolor}}%
-    \def\use at pscode{\addto at pscode{grestore}}%
-    \def\psclip##1{\pst at misplaced\psclip}%
-    \def\nc at object##1##2##3##4{\pst at misplaced{node connection}}%
-    #4%
-  }%
-  \addto at pscode{grestore \pst at coor T \psrbrace repeat}%
-  \leavevmode
-  \use at pscode
-  \endgroup
-  \ignorespaces}
-\def\psscalebox#1{\pst at makebox{\ps at scalebox{#1}}}
-\def\ps at scalebox#1{%
-  \begingroup%
-  \pst at getscale{#1}\pst at tempa%
-  \let\pst at tempc\pst at tempg%
-  \let\pst at tempd\pst at temph%
-  \ps@@scalebox%
-  \endgroup}
-\def\ps@@scalebox{%
-  \leavevmode%
-  \hbox{%
-    \ifdim\pst at tempd\p@<\z@%
-      \pst at dimg=\pst at tempd\ht\pst at hbox%
-      \pst at dimh=\pst at tempd\dp\pst at hbox%
-      \dp\pst at hbox=-\pst at dimg%
-      \ht\pst at hbox=-\pst at dimh%
-    \else%
-      \ht\pst at hbox=\pst at tempd\ht\pst at hbox%
-      \dp\pst at hbox=\pst at tempd\dp\pst at hbox%
-    \fi%
-    \pst at dima=\pst at tempc\wd\pst at hbox%
-    \ifdim\pst at dima<\z@\kern-\pst at dima\fi%
-    \pst at Verb{CP CP translate \pst at tempa \tx at NET}%
-    \hbox to \z@{\box\pst at hbox\hss}%
-    \pst at Verb{
-      CP CP translate
-      1 \pst at tempc div 1 \pst at tempd div scale
-      \tx at NET}%
-    \ifdim\pst at dima>\z@\kern\pst at dima\fi%
-  }%
-}
-\pslongbox{Scalebox}{\psscalebox}
-%
-\def\psscaleboxto(#1,#2){\pst at makebox{\ps at scaleboxto(#1,#2)}}
-\def\ps at scaleboxto(#1,#2){%
-  \begingroup
-  \pssetlength\pst at dima{#1}%
-  \pssetlength\pst at dimb{#2}%
-  \ifdim\pst at dima=\z@\else
-    \pst at divide{\pst at dima}{\wd\pst at hbox}\pst at tempc
-    \edef\pst at tempc{\pst at tempc\space}%
-  \fi
-  \ifdim\pst at dimb=\z@
-    \ifdim\pst at dima=\z@
-      \@pstrickserr{%
-        \string\psscaleboxto\space dimensions cannot both be zero}\@ehpa
-      \def\pst at tempa{}%
-      \def\pst at tempc{1 }%
-      \def\pst at tempd{1 }% 
-    \else
-      \let\pst at tempd\pst at tempc
-    \fi
-  \else
-    \pst at dimc=\ht\pst at hbox
-    \advance\pst at dimc\dp\pst at hbox
-    \pst at divide{\pst at dimb}{\pst at dimc}\pst at tempd
-    \edef\pst at tempd{\pst at tempd\space}%
-    \ifdim\pst at dima=\z@ \let\pst at tempc\pst at tempd \fi
-  \fi
-  \edef\pst at tempa{\pst at tempc \pst at tempd scale }%
-  \ps@@scalebox
-  \endgroup}
-\pslongbox{Scaleboxto}{\psscaleboxto}
-%
-\def\tx at Rot{Rot }
-\def\psrotateleft{\pst at makebox{\ps at rotateleft\pst at hbox}}
-\def\ps at rotateleft#1{%
-\leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
-\pst at Verb{90 \tx at Rot}
-\vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}%
-\pst at Verb{-90 \tx at Rot}}}}
-\def\psrotateright{\pst at makebox{\ps at rotateright\pst at hbox}}
-\def\ps at rotateright#1{%
-% ----------- hv begin 2004-05-07 ----------- patch 15
-%    \hbox{%
-  \leavevmode\hbox{%
-% ----------- hv end 2004-05-07 ----------- patch 15
-  \hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
-  \pst at Verb{-90 \tx at Rot}
-  \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}%
-  \pst at Verb{90 \tx at Rot}}}}
-\def\psrotatedown{\pst at makebox{\ps at rotatedown\pst at hbox}}
-\def\ps at rotatedown#1{%
-\hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1%
-\pst at Verb{180 \tx at Rot}%
-\vbox to \z@{\hbox to \z@{\box#1\hss}\vss}%
-\pst at Verb{-180 \tx at Rot}}}}
-\pslongbox{Rotateleft}{\psrotateleft}
-\pslongbox{Rotateright}{\psrotateright}
-\pslongbox{Rotatedown}{\psrotatedown}
-% ----------- hv begin 2004-09-23 ----------- 1.11
-% compatibility stuff 
-\let\rotateleft\psrotateleft
-\let\rotateright\psrotateright
-\let\rotatedown\psrotatedown
-% ----------- hv end 2005-09-23 ----------- 1.11
-\def\pst at starbox{%
-\setbox\pst at hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst at hbox}}}
-\def\pst@@makesmall#1{%
-\setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}}
-\def\pst@@@makesmall#1{%
-\pst at dimh=\psk at xref\wd#1%
-\ifx\psk at yref\relax
-\pst at dimg=\dp#1%
-\else
-\pst at dimg=\psk at yref\ht#1%
-\advance\pst at dimg\psk at yref\dp#1%
-\fi
-\setbox#1=\hbox to\z@{%
-\kern-\pst at dimh\vbox to\z@{\vss\box#1\kern-\pst at dimg}\hss}}
-%
-\define at key[psset]{pstricks}{ref}[c]{\pst at expandafter\psset@@ref{#1}\@empty,,\@nil}
-\def\psset@@ref#1#2,#3,#4\@nil{%
-  \def\psk at xref{.5}%
-  \def\psk at yref{.5}%
-  \let\pst at makesmall\pst@@@makesmall
-  \ifx\@empty#3\@empty
-    \@nameuse{getref@#1}%
-    \@nameuse{getref@#2}%
-  \else
-    \pst at checknum{#1#2}\psk at xref
-    \pst at checknum{#3}\psk at yref
-  \fi}
-%
-\def\getref at c{\let\pst at makesmall\pst@@makesmall}
-\def\getref at t{\def\psk at yref{1}}
-\def\getref at b{\def\psk at yref{0}}
-\def\getref at B{\let\psk at yref\relax}
-\def\getref at l{\def\psk at xref{0}}
-\def\getref at r{\def\psk at xref{1}}
-\psset[pstricks]{ref=c}
-%
-\def\pst at rotlist{ mark RAngle /ps at a ED cleartomark ps at a neg }
-\def\pst at rottable{%
- at 0=%
- at U=%
- at L=90 %
- at D=180 %
- at R=-90 %
- at N=\pst at rotlist
- at W=\pst at rotlist 90 add %
- at S=\pst at rotlist 180 add %
- at E=\pst at rotlist 90 sub }
-%
-\define at key[psset]{pstricks}{rot}[0]{%
-  \pst at expandafter{\@ifnextchar*{\psset@@@rot}{\psset@@rot}}{#1}\@nil}
-\def\psset@@rot#1\@nil{%
-  \def\next##1@#1=##2@##3\@nil{%
-    \ifx##2\relax\pst at getangle{#1}\psk at rot \else\def\psk at rot{##2}\fi%
-    \pst at Verb{ gsave  STV CP T /ps at rot \ifx\psk at rot\@empty 0 \else \psk at rot \fi def grestore }% (MJS)
-  }%
-  \expandafter\next\pst at rottable @#1=\relax @\@nil}
-%
-\def\psset@@@rot#1#2\@nil{%
-  \psset@@rot#2\@nil%
-  \edef\psk at rot{\pst at rotlist \ifx\psk at rot\@empty\else\space ps at rot add \fi}%
-  \pst at Verb{ gsave  STV CP T /ps at rot \ifx\psk at rot\@empty 0 \else \psk at rot \fi def grestore }}% (MJS)
-%
-%\def\psset@@rot#1\@nil{%
-%\def\ps at next##1@#1=##2@##3\@nil{%
-%\ifx\relax##2\pst at getangle{#1}\psk at rot\else\def\psk at rot{##2}\fi}%
-%\expandafter\ps at next\pst at rottable @#1=\relax @\@nil}
-%
-%\def\psset@@@rot#1#2\@nil{%
-%\psset@@rot#2\@nil
-%\edef\psk at rot{\pst at rotlist \ifx\psk at rot\@empty\else\psk at rot add \fi}}
-\psset[pstricks]{rot=0}
-%
-\def\tx at RotBegin{RotBegin }
-\def\tx at RotEnd{RotEnd }
-\def\pst at rotate#1#2{%
-  \ifx#1\@empty\else
-  \setbox#2=\hbox{\pst at Verb{#1 \tx at RotBegin}\box#2\pst at Verb{\tx at RotEnd}}%
-  \fi%
-}
-\def\psput at cartesian#1{%
-\hbox to \z@{\kern\pst at dimg{\vbox to \z@{\vss\box#1\vskip\pst at dimh}\hss}}%
-}
-\def\psput at special#1{%
-  \hbox{%
-    \pst at Verb{{ \pst at coor \pstnodescale } \tx at PutCoor \tx at PutBegin }%  20150911 hv
-    \box#1%
-    \pst at Verb{ \tx at PutEnd }%
-  }%
-}
-\def\tx at PutCoor{PutCoor }
-\def\tx at PutBegin{PutBegin }
-\def\tx at PutEnd{PutEnd }
-\def\rput{\def\pst at par{}\pst at ifstar{\@ifnextchar[{\rput at i}{\rput at ii}}}
-\def\rput at i[#1]{%
-  \test at for@options#1=\@nil
-  \ifnum\the\pst at cntm=\z@ 
-    \addto at par{ref={#1}}%
-  \else
-    \expandafter\addto at par\expandafter{#1}%
-  \fi
-  \rput at ii
-}
-\def\test at for@options#1=#2\@nil{%
-  \if$#2$%        #2 is empty -> old syntax
-    \pst at cntm=\z@
-  \else           % something like foo=bar
-    \pst at cntm=\@ne
-  \fi
-}
-
-\def\rput at ii{\@ifnextchar({\rput at iv}{\rput at iii}}
-\def\rput at iii#1{\addto at par{rot={#1}}\@ifnextchar({\rput at iv}{\rput at iv(\z@,\z@)}}
-\def\rput at iv(#1){\pst at killglue\pst at makebox{\rput at v{#1}}}
-\def\rput at v#1{%
-    \begingroup
-    \use at par
-    \if at star\pst at starbox\fi
-    \pst at makesmall\pst at hbox
-    \ifx\psk at rot\@empty\else\pst at rotate{ps at rot }\pst at hbox\fi% (MJS)
-%    \pst at rotate\psk at rot\pst at hbox%
-    \psput@{#1}\pst at hbox%
-  \endgroup
-  \ignorespaces}
-%
-\def\multirput{%
-  \def\pst at par{}%
-  \pst at ifstar{\@ifnextchar[{\multirput at i}{\multirput at ii}}}
-\def\multirput at i[#1]{\addto at par{ref={#1}}\multirput at ii}
-\def\multirput at ii{\@ifnextchar({\multirput at iv}{\multirput at iii}}
-\def\multirput at iii#1{\addto at par{rot={#1}}\multirput at iv}
-\def\multirput at iv(#1){%
-  \@ifnextchar({\multirput at v(#1)}{\multirput at v(\z@,\z@)(#1)}}
-\def\multirput at v(#1,#2)(#3,#4)#5{%
-  \pst at makebox{\multirput at vi(#1,#2)(#3,#4){#5}}}
-\def\multirput at vi(#1,#2)(#3,#4)#5{%
-  \pst at killglue%
-  \global\psLoopIndex=\@ne\relax
-  \begingroup
-    \use at par
-    \if at star\pst at starbox\fi
-    \pst at makesmall\pst at hbox
-    \ifx\psk at rot\@empty\else\pst at rotate{ps at rot }\pst at hbox\fi% (MJS)
-%    \pst at rotate\psk at rot\pst at hbox
-    \pssetxlength\pst at dima{#1}%
-    \pssetylength\pst at dimb{#2}%
-    \pssetxlength\pst at dimc{#3}%
-    \pssetylength\pst at dimd{#4}%
-    \pst at cntg=#5\relax
-    \leavevmode
-    \loop
-      \vbox to \z@{%
-        \vss
-        \hbox to \z@{\kern\pst at dima\copy\pst at hbox\hss}%
-        \vskip\pst at dimb%
-      }%
-      \ifnum\pst at cntg>\psLoopIndex
-        \advance\pst at dima\pst at dimc
-        \advance\pst at dimb\pst at dimd
-        \global\advance\psLoopIndex by \@ne
-    \repeat 
-  \endgroup
-  \ignorespaces%
-}
-%
-\newif\if at fixedradius
-\def\cput{\def\pst at par{}\pst at object{cput}}
-\def\cput at i{\@fixedradiusfalse\cput at ii}
-\def\cput at ii{\pst at killglue\@ifnextchar({\cput at iv}{\cput at iii}}
-\def\cput at iii#1{%
-  \addto at par{rot={#1}}%
-  \@ifnextchar({\cput at iv}{\cput at iv(\z@,\z@)}%
-}
-\def\cput at iv(#1){\pst at makebox{\cput at v{#1}}}
-\def\cput at v#1{%
-  \begingroup
-    \use at par
-    \setbox\pst at hbox=\hbox{%
-      \psboxsepfalse
-      \if at fixedradius\psCirclebox at ii\else\pscirclebox at ii\fi%
-    }%
-    \pst@@makesmall\pst at hbox
-    \ifx\psk at rot\@empty\else\pst at rotate{ps at rot }\pst at hbox\fi% (MJS)
-%    \pst at rotate\psk at rot\pst at hbox
-    \psput@{#1}\pst at hbox
-  \endgroup
-  \ignorespaces%
-}
-%
-\def\Cput{\def\pst at par{}\pst at object{Cput}}
-\def\Cput at i{\@fixedradiustrue\cput at ii}
-\newdimen\pslabelsep
-\define at key[psset]{pstricks}{labelsep}[5pt]{%
-  \pssetlength\pslabelsep{#1}%
-  \ifx\PSTplotLoaded\endinput% Set labels for pst-plot, if laoded
-    \let\psxlabelsep\pslabelsep%
-    \let\psylabelsep\pslabelsep%
-  \fi}
-\psset[pstricks]{labelsep=5pt}
-%
-\define at key[psset]{pstricks}{refangle}[0]{\pst at expandafter\psset@@refangle{#1}\@nil}
-\def\psset@@refangle#1\@nil{%
-  \def\next##1@#1=##2"##3@##4\@nil{%
-    \ifx\relax##2%
-      \pst at getangle{#1}\psk at refangle
-      \def\psk at uputref{}%
-    \else
-      \def\psk at refangle{##2 }%
-      \def\psk at uputref{##3}%
-    \fi}%
-  \expandafter\next\pst at refangletable @#1=\relax"@\@nil%
-  \pst at Verb{ gsave STV CP T /ps at refangle \psk at refangle\space def grestore }%ADDED (MJS)
-}
-%
-\def\pst at refangletable{%
- at r=0"20%
- at u=90"02%
- at l=180"10%
- at d=-90"01%
- at ur=45"22%
- at ul=135"12%
- at dr=-135"21%
- at dl=-45"11}
-\psset[pstricks]{refangle=0}
-
-% DG/SR modification begin - Mar. 24, 1999 - Patch 10
-%\def\uput{\def\pst at par{}\@ifnextchar[{\uput at ii}{\uput at i}}
-\def\uput{\def\pst at par{}\pst at ifstar{\@ifnextchar[{\uput at ii}{\uput at i}}} 
-% DG/SR modification end
-\def\uput at i#1{\addto at par{labelsep=#1}\uput at ii}
-%
-\def\uput at ii[#1]{%
-  \addto at par{refangle={#1}}%
-  \@ifnextchar({\uput at iv}{\uput at iii}}
-%
-\def\uput at iii#1{%
-  \addto at par{rot={#1}}%
-  \@ifnextchar({\uput at iv}{\uput at iv(\z@,\z@)}}
-%
-\def\uput at iv(#1){\pst at killglue\pst at makebox{\uput at v{#1}}}
-%
-\def\uput at v#1{%
-  \begingroup
-  \use at par
-  \if at star\pst at starbox\fi
-  \pstCheckCoorType{#1}% needed for \uput at vii
-  \uput at vi
-  \psput@{#1}\pst at hbox
-  \endgroup
-  \ignorespaces}
-%
-\def\uput at vi{%
-  \ifx\psk at uputref\@empty\uput at vii\tx at UUput{}%
-  \else
-    \ifx\psk at rot\@empty\expandafter\uput at viii\psk at uputref
-    \else\uput at vii\tx at UUput{}\fi
-  \fi}
-% 
-\def\uput at vii#1#2{%
-  \edef\pst at coor{%
-    \ifPst at SpecialLength\pst at SpecialLength\else\pst at number\pslabelsep\fi
-%    \pst at number\pslabelsep % \ifdim\pslabelsep<\z@  neg \fi
-    #2%
-    \pst at number{\wd\pst at hbox}%
-    \pst at number{\ht\pst at hbox}%
-    \pst at number{\dp\pst at hbox}%
-    \ifnum\pst at C@@rType=7
-      ps at refangle % CHANGED (MJS) FROM \psk at refangle\space
-      \ifx\psk at rot\@empty\else ps at rot\space sub \fi
-    \else
-      \psk at refangle\space 
-      \ifx\psk at rot\@empty\else \psk at rot\space sub \fi
-    \fi
-    \tx at Uput #1}%
-    %\show\pst at coor
-  \setbox\pst at hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst at hbox\vss}\hss}%
-  \setbox\pst at hbox=\psput at special\pst at hbox
-  \ifnum\pst at C@@rType=7
-    \ifx\psk at rot\@empty\else\pst at rotate{ps at rot }\pst at hbox\fi% CHANGED FROM \psk at rot (MJS)
-  \else
-    \ifx\psk at rot\@empty\else\pst at rotate{\psk at rot}\pst at hbox\fi% 
-  \fi}
-%
-%
-\def\uput at viii#1#2{%
-  \ifnum#1>\z@\relax\ifnum#2>\z@\relax\pslabelsep=.707\pslabelsep\fi\fi
-  \setbox\pst at hbox=\vbox to\z@{%
-    \ifnum#2=1\relax\vskip\pslabelsep\else\vss\fi
-    \hbox to\z@{%
-      \ifnum#1=2\relax\hskip\pslabelsep \else\hss\fi
-      \box\pst at hbox%
-      \ifnum#1=1\relax\hskip\pslabelsep\else\hss\fi}%
-    \ifnum#2=2\relax\vskip\pslabelsep\else\vss\fi}}
-%
-\def\tx at Uput{Uput }
-\def\tx at UUput{UUput }
-%
-\def\Rput{\def\pst at par{}\pst at ifstar{\@ifnextchar[{\Rput at ii}{\Rput at i}}}
-\def\Rput at i#1{\addto at par{labelsep=#1}\Rput at ii}
-\def\Rput at ii[#1]{\addto at par{ref={#1}}\@ifnextchar({\Rput at iv}{\Rput at iii}}
-\def\Rput at iii#1{\addto at par{rot={#1}}\@ifnextchar({\Rput at iv}{\Rput at iv(\z@,\z@)}}
-\def\Rput at iv(#1){\pst at killglue\pst at makebox{\Rput at v{#1}}}
-\def\Rput at v#1{%
-  \begingroup
-  \use at par
-  \if at star\pst at starbox\fi
-  \Rput at vi
-  \pst at makesmall\pst at hbox
-  \ifx\psk at rot\@empty\else\pst at rotate{ps at rot }\pst at hbox\fi% (MJS)
-%  \pst at rotate\psk at rot\pst at hbox
-  \psput@{#1}\pst at hbox
-  \endgroup
-  \ignorespaces}
-%
-\def\Rput at vi{%
-  \pst at dimg=\dp\pst at hbox
-  \advance\pst at dimg\pslabelsep
-  \dp\pst at hbox=\pst at dimg
-  \pst at dimg=\ht\pst at hbox
-  \advance\pst at dimg\pslabelsep
-  \ht\pst at hbox=\pst at dimg
-  \setbox\pst at hbox\hbox{\kern\pslabelsep\box\pst at hbox\kern\pslabelsep}}%
-%
-\def\oldpsput{\def\pst at par{}\pst at ifstar{\@ifnextchar[{\oldpsput at i}{\oldpsput at ii}}}
-\def\oldpsput at i[#1]{\addto at par{ref={#1}}\oldpsput at ii}
-\def\oldpsput at ii{\@ifnextchar<{\oldpsput at iii}{\oldpsput at iv}}
-\def\oldpsput at iii<#1>{\rput at iii{#1}}
-\def\OldPsput{\let\psput\oldpsput}
-\def\NewPsput{\let\psput\rput}
-%
-% -----------  hv 20120219 -------------------
-\newpsstyle{gridstyle}{subgriddiv=0,gridcolor=lightgray,griddots=10,gridlabels=8pt}
-\newpsstyle{gridstyleA}{subgriddiv=5,gridcolor=red!30,subgridcolor=green!20!black!10,gridlabels=0pt}
-\newif\ifshowgrid
-\newdimen\sh at wgridXunit
-\newdimen\sh at wgridYunit
-
-\define at key[psset]{pstricks}{showgrid}[b]{\expandafter\pst@@showgrid#1!!\@nil}
-\def\pst@@showgrid#1#2#3\@nil{%                            hv 20130403
-  \def\showgridp at s{0}%
-  \ifx#1b\showgridtrue\else%                               bottom
-    \ifx#1f\showgridfalse\else
-      \ifx#1t
-        \ifx#2r \showgridtrue\else%  			   true->bottom
-                \showgridtrue\def\showgridp at s{1}\fi%        top
-  \fi\fi\fi
-  \ifnum\showgridp at s>0\relax
-    \sh at wgridXunit=\psxunit
-    \sh at wgridYunit=\psyunit
-  \fi
-
-}
-\psset[pstricks]{showgrid=f}
-\define at boolkey[psset]{pstricks}[Pst@]{pgffunctions}[true]{}
-\psset[pstricks]{pgffunctions=false}
-%
-\newdimen\pst at shift
-\newif\ifPst at shift@star
-\define at key[psset]{pstricks}{shift}[0]{%
-  \ifx#1*
-    \global\Pst at shift@startrue
-    \pst at shift=\p@
-  \else
-    \global\Pst at shift@starfalse
-    \pssetlength\pst at dimg{#1}
-    \global\pst at shift\pst at dimg%   only the outer pspicture env can have a shift
-  \fi}
-\psset[pstricks]{shift=0}
-%
-%------------------------------- pspicture ------------------------------
-%
-\def\pspicture{\begingroup\pst at ifstar\pst at picture}
-\def\pst at picture{\@ifnextchar[{\pst@@picture}{\pst@@picture[]}}
-\def\pst@@picture[#1]{\@ifnextchar({\pst@@picture at i[#1]}{\pst@@picture at i[#1](10,10)}}%
-\def\pst@@picture at i[#1]#2(#3,#4){\@ifnextchar(%   ignore anything between [] and ()
-  {\pst@@@picture[#1](#3,#4)}%
-  {\pst@@@picture[#1](0,0)(#3,#4)}}
-%
-\def\pst@@@picture[#1](#2,#3)(#4,#5){%
-  \pssetxlength\pst at dima{#2}%
-  \pssetylength\pst at dimb{#3}%
-  \pssetxlength\pst at dimc{#4}%
-  \pssetylength\pst at dimd{#5}%
-  \ifdim\pst at dima>\pst at dimc%
-    \pst at dimg=\pst at dima%
-    \pst at dima=\pst at dimc%
-    \pst at dimc=\pst at dimg%
-  \fi%
-  \ifdim\pst at dimb>\pst at dimd%
-    \pst at dimg=\pst at dimb%
-    \pst at dimb=\pst at dimd%
-    \pst at dimd=\pst at dimg%
-  \fi%
-  \setbox\pst at hbox=\hbox\bgroup
-  \begingroup\KillGlue
-  \@ifundefined{@latexerr}{}{\let\unitlength\psunit}%
-  \edef\pic at coor{(#2,#3)(#2,#3)(#4,#5)}%
-% ----------- 1.10/12 beg hv -------------------
-  \psset{showgrid=false}%                % for nested pspicture environemnets
-  \def\pst at tempA{#1}%
-  \ifx\pst at tempA\@empty\else\psset{#1}\fi% sets the shift and grid option
-  \ifx\pst at bgcolor\@empty\else\psframe*[linecolor=\pst at bgcolor](#2,#3)(#4,#5)\fi
-  \ifshowgrid\ifnum\showgridp at s=0\psgrid[style=gridstyle]\fi\fi
-% ----------- 1.10/12 end hv -------------------
-  \ignorespaces%			% 2008-12-07
-  \ifPst at pgffunctions\pstVerb{ pgffunctions }\fi% hv 2013-04-17
-}
-\def\pic at coor{(0,0)(0,0)(10,10)}
-\def\endpspicture{%
-  \ifshowgrid\ifnum\showgridp at s>0
-    \psgrid[xunit=\sh at wgridXunit,yunit=\sh at wgridYunit,style=gridstyle]\fi\fi
-  \pst at killglue
-  \endgroup
-  \egroup
-  \ht\pst at hbox=\pst at dimd
-  \dp\pst at hbox=-\pst at dimb
-  \setbox\pst at hbox=\hbox{%
-    \kern-\pst at dima
-    \ifPst at shift@star%\typeout{==pstricks== old behaviour of the shift option}%     shift=*
-      \advance\pst at dimd-\pst at dimb
-      \pst at dimd=0.5\pst at dimd
-    \else\pst at dimd-\pst at shift\fi
-    \advance\pst at dimd\pst at dimb
-    \lower\pst at dimd\box\pst at hbox
-    \kern\pst at dimc}%
-  \if at star\setbox\pst at hbox=\hbox{\clipbox@@\z@}\fi
-  \leavevmode
-  \ifPst at draft
-    \expandafter\ifx\csname @latexerr\endcsname\relax
-      \box\pst at hbox
-    \else%	do we have LaTeX? 
-      \fboxsep=0pt
-      \fbox{\rule[-\pst at shift]{0pt}{\ht\pst at hbox}\rule{\wd\pst at hbox}{0pt}}%
-    \fi
-  \else
-    \box\pst at hbox
-  \fi
-  \endgroup
-  \psset[pstricks]{shift=0}% reset value
-}
-%
-\@namedef{pspicture*}{\pspicture*}
-\@namedef{endpspicture*}{\endpspicture}
-%
-\ifx\pstcustomize\relax \input pstricks.con \fi
-\catcode`\@=\PstAtCode\relax
-%
-\endinput
-%%
-%% END: pstricks.tex

Modified: trunk/Master/texmf-dist/tex/latex/pstricks/pst-doc.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/pstricks/pst-doc.cls	2021-08-26 13:22:58 UTC (rev 60326)
+++ trunk/Master/texmf-dist/tex/latex/pstricks/pst-doc.cls	2021-08-26 21:23:35 UTC (rev 60327)
@@ -16,13 +16,13 @@
 %
 \listfiles
 \ProvidesClass{pst-doc}[2017/04/18 v 0.20 PSTricks documentation class (hv)]
-\DeclareOption*{\PassOptionsToClass{\CurrentOption,usegeometry}{scrartcl}}
+\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
 \ProcessOptions\relax
 %
 \LoadClass{scrartcl}
 %
 \RequirePackage[dvipsnames,x11names,svgnames,table]{xcolor}
-\RequirePackage{ifxetex}
+\RequirePackage{iftex}
 \RequirePackage{amsmath, amssymb} 
 \ifxetex
   \usepackage{unicode-math}
@@ -115,7 +115,6 @@
     \gdef\index at vals{#1}%
     \def\FancyVerbFormatLine##1{\FV at ObeyTabs{##1}\use at index@vals}}
 
-\RequirePackage{filecontents}
 %\singlespace 
 \RequirePackage{showexpl}
 \renewcommand*\SX at Info{}%
@@ -451,64 +450,62 @@
 \providecommand\bgTitle{}
 \providecommand\LenToUnit[1]{#1\@gobble}
 
-\iffalse
-\renewcommand\maketitle{%
-\thispagestyle{empty}%
-\begin{titlepage}
-\ifpdf
-  \AddToShipoutPicture*{\includegraphics{pst-doc.pdf}}
-  \vspace*{0.3\textheight}
-  \parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}\\[5pt]
-  \parbox{15cm}{\sffamily\Large\@subtitle}
+\def\settitle{%
+  \thispagestyle{empty}%
+  \begin{titlepage}
+  \ifpdf
+    \AddToShipoutPicture*{\includegraphics{pst-doc.pdf}}
+    \vspace*{0.3\textheight}
+    \parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}\\[5pt]
+    \parbox{15cm}{\sffamily\Large\@subtitle}
 
-  \vspace{5cm}
-  \parbox{10cm}{\sffamily\@date}
+    \vspace{5cm}
+    \parbox{10cm}{\sffamily\@date}
 
-  \vfill
-  ~\\
-  \makebox[.5\textwidth]{\put(0,0){\bgImage}}\\
-  ~
+    \vfill
+    ~\\
+    \makebox[.5\textwidth]{\put(0,0){\bgImage}}\\
+    ~
 
-  \vfill
-  \parbox[b]{19cm}{\sffamily\RaggedRight 
-    \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\
-    \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{%
-      \bfseries\tabular[t]{@{}l@{}}\@author\endtabular}}
-\else
-  \psset{unit=1cm}
-  \begin{pspicture}(1.6in,0)(23cm,21.7cm)
-    \psframe[fillstyle=solid,linecolor=lightgray,fillcolor=lightgray,linestyle=solid](0,-5.75)(23,10)
-    \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,10)(23,10.5)
-    \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,21.1)(23,21.2)
-    \rput[lb](3,22){\Huge\sffamily\color{Orange!65!Red}\psscalebox{2}{\textbf{PSTricks}}}
-    \rput[lb](3,14.1){\parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}}
-    \rput[lb](3,12.6){\parbox{15cm}{\sffamily\Large\@subtitle}}
-    \rput[lb](3,7.6){\parbox{15cm}{\sffamily\@date}}
-    \rput[lb](3,-2.6){\parbox[b]{19cm}{\sffamily\RaggedRight 
+    \vfill
+    \parbox[b]{19cm}{\sffamily\RaggedRight 
       \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\
       \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{%
-        \bfseries\shortstack[l]{\@author}
-           %\begin{tabular}[t]{@{}l@{}} \@author\end{tabular}%
-}}}
-    \rput[C](11,4){\bgImage}%
-  \end{pspicture}%
-\fi
-\end{titlepage}
-\setcounter{footnote}{0}%
-\global\let\thanks\relax%
-\global\let\maketitle\relax%
-\global\let\@thanks\@empty%
-\global\let\@author\@empty%
-\global\let\@docauthor\@empty%
-\global\let\@date\@empty%
-\global\let\@title\@empty%
-\global\let\@subtitle\@empty%
-\global\let\title\relax%
-\global\let\author\relax%
-\global\let\date\relax%
-\global\let\and\relax%
+        \bfseries\tabular[t]{@{}l@{}}\@author\endtabular}}
+  \else
+    \psset{unit=1cm}
+    \begin{pspicture}(1.6in,0)(23cm,21.7cm)
+      \psframe[fillstyle=solid,linecolor=lightgray,fillcolor=lightgray,linestyle=solid](0,-5.75)(23,10)
+      \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,10)(23,10.5)
+      \psframe[fillstyle=solid,linecolor=Orange!85!Red,fillcolor=Orange!85!Red,linestyle=solid](0,21.1)(23,21.2)
+      \rput[lb](3,22){\Huge\sffamily\color{Orange!65!Red}\psscalebox{2}{\textbf{PSTricks}}}
+      \rput[lb](3,14.1){\parbox{17cm}{\sffamily\RaggedRight\bfseries\huge\@title}}
+      \rput[lb](3,12.6){\parbox{15cm}{\sffamily\Large\@subtitle}}
+      \rput[lb](3,7.6){\parbox{15cm}{\sffamily\@date}}
+      \rput[lb](3,-2.6){\parbox[b]{19cm}{\sffamily\RaggedRight 
+        \ifx\@docauthor\empty~\else Documentation by\fi\hfill\makebox[7cm][l]{Package author(s):}\\
+        \ifx\@docauthor\empty~\else{\bfseries\tabular[t]{@{}l@{}}\@docauthor\endtabular}\fi\hfill\makebox[7cm][l]{%
+          \bfseries\shortstack[l]{\@author}
+             %\begin{tabular}[t]{@{}l@{}} \@author\end{tabular}%
+      }}}
+      \rput[C](11,4){\bgImage}%
+    \end{pspicture}%
+  \fi
+  \end{titlepage}
+  \setcounter{footnote}{0}%
+  \global\let\thanks\relax%
+  \global\let\maketitle\relax%
+  \global\let\@thanks\@empty%
+  \global\let\@author\@empty%
+  \global\let\@docauthor\@empty%
+  \global\let\@date\@empty%
+  \global\let\@title\@empty%
+  \global\let\@subtitle\@empty%
+  \global\let\title\relax%
+  \global\let\author\relax%
+  \global\let\date\relax%
+  \global\let\and\relax%
 }
-\fi
 
 \newdimen\fullWidth
 \fullWidth=\linewidth



More information about the tex-live-commits mailing list.