summaryrefslogtreecommitdiff
path: root/obsolete/graphics/pstricks/doc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /obsolete/graphics/pstricks/doc
Initial commit
Diffstat (limited to 'obsolete/graphics/pstricks/doc')
-rw-r--r--obsolete/graphics/pstricks/doc/README23
-rw-r--r--obsolete/graphics/pstricks/doc/betadoc1.ps3617
-rw-r--r--obsolete/graphics/pstricks/doc/betadoc2.ps4899
-rw-r--r--obsolete/graphics/pstricks/doc/code/Changes4
-rw-r--r--obsolete/graphics/pstricks/doc/code/Makefile38
-rw-r--r--obsolete/graphics/pstricks/doc/code/README20
-rw-r--r--obsolete/graphics/pstricks/doc/code/art11.sty175
-rw-r--r--obsolete/graphics/pstricks/doc/code/pst-code.pdfbin0 -> 279460 bytes
-rw-r--r--obsolete/graphics/pstricks/doc/code/pst-code.tex138
-rw-r--r--obsolete/graphics/pstricks/doc/code/pst-coil.doc221
-rw-r--r--obsolete/graphics/pstricks/doc/code/pst-node.doc1066
-rw-r--r--obsolete/graphics/pstricks/doc/code/pstricks.doc4739
-rw-r--r--obsolete/graphics/pstricks/doc/code/tvz-code.sty271
-rw-r--r--obsolete/graphics/pstricks/doc/code/tvz-hax.sty172
-rw-r--r--obsolete/graphics/pstricks/doc/images/flowers.eps269
-rw-r--r--obsolete/graphics/pstricks/doc/images/tiger.eps.gzbin0 -> 49705 bytes
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-10-10.inl160
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-10-5.inl40
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-10-7.inl9
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-5-13.inl40
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-5-14.inl5
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-5-16.inl21
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-5-3.inl5
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-6-26.inl29
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-6-31.inl9
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-6-32.inl21
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-6-39.inl18
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-6-40.inl24
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-7-1.inl8
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-7-2.inl11
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-7-4.inl41
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-8-3.inl6
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-8-4.inl53
-rw-r--r--obsolete/graphics/pstricks/doc/lgc/4-8-5.inl77
-rw-r--r--obsolete/graphics/pstricks/doc/pst-doc.err95
-rw-r--r--obsolete/graphics/pstricks/doc/pst-quik.ps1012
-rw-r--r--obsolete/graphics/pstricks/doc/pst-usr1.ps2146
-rw-r--r--obsolete/graphics/pstricks/doc/pst-usr2.ps2322
-rw-r--r--obsolete/graphics/pstricks/doc/pst-usr3.ps2877
-rw-r--r--obsolete/graphics/pstricks/doc/pst-usr4.ps1780
-rw-r--r--obsolete/graphics/pstricks/doc/src/changes.tex147
-rw-r--r--obsolete/graphics/pstricks/doc/src/chartest.tex25
-rw-r--r--obsolete/graphics/pstricks/doc/src/defaults.pst103
-rw-r--r--obsolete/graphics/pstricks/doc/src/denis1.tex42
-rw-r--r--obsolete/graphics/pstricks/doc/src/denis2.tex36
-rw-r--r--obsolete/graphics/pstricks/doc/src/filetest.dat71
-rw-r--r--obsolete/graphics/pstricks/doc/src/filetest.raw6
-rw-r--r--obsolete/graphics/pstricks/doc/src/filetest.tex84
-rw-r--r--obsolete/graphics/pstricks/doc/src/pst-code.tex135
-rw-r--r--obsolete/graphics/pstricks/doc/src/pst-test.tex126
-rw-r--r--obsolete/graphics/pstricks/doc/src/pstree.rea37
-rw-r--r--obsolete/graphics/pstricks/doc/src/samples.tex434
-rw-r--r--obsolete/graphics/pstricks/doc/src/tp-test.tex71
-rw-r--r--obsolete/graphics/pstricks/doc/test-pst.pdfbin0 -> 189902 bytes
-rw-r--r--obsolete/graphics/pstricks/doc/test-pst.tex257
55 files changed, 28035 insertions, 0 deletions
diff --git a/obsolete/graphics/pstricks/doc/README b/obsolete/graphics/pstricks/doc/README
new file mode 100644
index 0000000000..32cca205ff
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/README
@@ -0,0 +1,23 @@
+ !!!!!!!!!!!!!
+ !! WARNING !!
+ !!!!!!!!!!!!!
+
+ These files are the original documentation of the version 0.93a of PSTricks.
+They are provided "as it", because there are still the _reference_
+documentation for PSTricks.
+
+ But take care that:
+ - this documentation is not strictly up to date,
+ - the betadoc?.ps files show some changes made in macros described
+in the pst-usr?.ps ones,
+ - the file pst-doc.err list the known errors in the files of this
+directory,
+ - there is no documentation for the `pst-3d' package,
+ - the documentation for the `pst-fill' package is in the doc directory,
+ - you can take advantage to look at the PSTricks chapter of
+"The LaTeX Graphics Companion", by Michel Goossens, Sebastian Rahtz and
+Frank Mittelbach, Addison Wesley, 1997
+http://www.awl.com/cseng/titles/0-201-85469-4
+
+--
+Denis Girou and Sebastian Rahtz (updated February 25, 1998)
diff --git a/obsolete/graphics/pstricks/doc/betadoc1.ps b/obsolete/graphics/pstricks/doc/betadoc1.ps
new file mode 100644
index 0000000000..28df420140
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/betadoc1.ps
@@ -0,0 +1,3617 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.491 Copyright 1986, 1992 Radical Eye Software
+%%Title: doc.dvi
+%%Pages: 25 1
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Helvetica-Bold Times-Roman Helvetica Helvetica-Oblique
+%%+ Helvetica-BoldOblique Symbol Times-Bold Times-Italic
+%%EndComments
+%DVIPSCommandLine: dvips -l25 -Pport doc -o pst-doc1.ps
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
+S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div
+/hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley
+0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
+product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
+(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
+rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
+ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
+/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
+B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
+rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
+B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
+/eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1993/3/12. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+pathforall z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
+sub y mul setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
+stroke /y1 y1 a add def } repeat grestore } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap systemdict /currentstrokeadjust known {
+currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
+0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
+bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
+repeat grestore } def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
+/SD { 0 360 arc fill } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
+c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
+div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
+div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
+def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
+div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
+div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
+{ 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
+def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
+b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
+add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
+f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
+add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
+setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
+cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
+moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
+add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
+if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
+h add def } loop grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+CP 4 2 roll T moveto } def
+/PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
+moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
+/IfVisible false def } if } ifelse } def
+/InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
+grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
+end
+%%EndProcSet
+%%BeginProcSet: psn-beta.pro
+%!
+% PostScript prologue for psn-beta.tex.
+% Created 1993/4/16. Source file was psn-beta.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@NodeDict 400 dict def tx@NodeDict begin
+tx@Dict begin /T /translate load def end
+/NewNode { dict dup 3 -1 roll ED begin /NodeMtrx CM def } def
+/InitPnode { /Y ED /X ED /NodePos { Nodesep Cos mul Nodesep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { Nodesep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r Nodesep add def } { /dx l Nodesep sub def
+} ifelse Sin 0 gt { /dy u Nodesep add def } { /dy d Nodesep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div Nodesep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d Nodesep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div Nodesep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w Nodesep add def /hh h Nodesep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdge { begin /Nodesep ED dup 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED Nodesep 0 ge { NodePos } {
+Nodesep neg dup Cos mul exch Sin mul } ifelse Y add exch X add exch
+NodeMtrx transform CM itransform end 4 2 roll AddOffset } def
+/GetPos { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED OffsetB
+AngleB NodesepB nodeB GetEdge /y2 ED /x2 ED } def
+/GetArmA { armA 0 lt { xA yA OffsetA AngleA AddOffset } { x1 y1 } ifelse
+armA abs AngleA sin mul add /y1a ED armA abs AngleA cos mul add /x1a ED
+} def
+/GetArmB { armB 0 lt { xB yB OffsetB AngleB AddOffset } { x2 y2 } ifelse
+armB abs AngleB sin mul add /y2a ED armB abs AngleB cos mul add /x2a ED
+} def
+/InitNC { /b ED /a ED /NodesepB ED /NodesepA ED /OffsetB ED /OffsetA ED
+tx@NodeDict a known tx@NodeDict b known and dup { /nodeA a load def
+/nodeB b load def nodeA GetCenter /yA ED /xA ED nodeB GetCenter /yB ED
+/xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yA sub yB yA sub Div xB xA sub mul xA add def /NAngle yB
+yA sub xB xA sub Atan def } def
+/HPutLine { HPosBegin /yA ED /xA ED /yB ED /xB ED HPosEnd } def
+/HPutLines { HPosBegin yB yA ge { /check { ge } def } { /check { lt } def
+} ifelse mark xB yB LPutVar { dup Y check { exit } { /yA ED /xA ED }
+ifelse } loop /yB ED /xB ED cleartomark HPosEnd } def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xA sub xB xA sub Div yB yA sub mul yA add def /NAngle yB
+yA sub xB xA sub Atan def } def
+/VPutLine { VPosBegin /yA ED /xA ED /yB ED /xB ED VPosEnd } def
+/VPutLines { VPosBegin xB xA ge { /check { ge } def } { /check { lt } def
+} ifelse mark xB yB LPutVar { 1 index X check { exit } { /yA ED /xA ED }
+ifelse } loop /yB ED /xB ED cleartomark VPosEnd } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetPos /LPutVar [ x2 y2 x1 y1 ] cvx def /LPutPos { LPutVar LPutLine }
+def /HPutPos { LPutVar HPutLine } def /VPutPos { LPutVar VPutLine } def
+LPutVar } def
+/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCCurve { GetPos x1 x2 sub y1 y2 sub Pyth 2 div dup 3 -1 roll mul /armA
+ED mul /armB ED GetArmA GetArmB x1a y1a x1 y1 tx@Dict begin ArrowA end
+x2a y2a x2 y2 tx@Dict begin ArrowB end curveto /LPutVar [ x1 y1 x1a y1a
+x2a y2a x2 y2 ] cvx def /LPutPos { t LPutVar BezierMidpoint } def
+/HPutPos { { HPutLines } HPutCurve } def /VPutPos { { VPutLines }
+HPutCurve } def } def
+/NCAngles { GetPos GetArmA GetArmB /mtrx AngleA matrix rotate def x1a y1a
+mtrx transform pop x2a y2a mtrx transform exch pop mtrx itransform /y0
+ED /x0 ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne {
+x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a y2a x0 y0
+x1a y1a x1 y1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines
+} def /VPutPos { VPutLines } def } def
+/NCAngle { GetPos GetArmB /mtrx AngleA matrix rotate def x2a y2a mtrx
+itransform pop x1 y1 mtrx itransform exch pop mtrx transform /y0 ED /x0
+ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1 tx@Dict begin false
+Line end /LPutVar [ x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCBar { GetPos GetArmA GetArmB /mtrx AngleA matrix rotate def x1a y1a
+mtrx itransform pop x2a y2a mtrx itransform pop sub dup 0 mtrx transform
+3 -1 roll 0 gt { /y2a exch y2a add def /x2a exch x2a add def } { /y1a
+exch neg y1a add def /x1a exch neg x1a add def } ifelse mark armB 0 ne {
+x2 y2 } if x2a y2a x1a y1a armA 0 ne { x1 y1 } if tx@Dict begin false
+Line end /LPutVar [ x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def /LPutPos {
+LPutVar LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines
+} def } def
+/NCDiag { GetPos GetArmA GetArmB mark armB 0 ne { x2 y2 } if x2a y2a x1a
+y1a armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2
+x2a y2a x1a y1a x1 y1 ] cvx def /LPutPos { LPutLines } def /HPutPos {
+HPutLines } def /VPutPos { VPutLines } def } def
+/NCDiagg { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED GetArmA yB
+y1a sub xB x1a sub Atan 180 add /AngleB ED OffsetB AngleB NodesepB nodeB
+GetEdge /y2 ED /x2 ED mark x2 y2 x1a y1a armA 0 ne { x1 y1 } if tx@Dict
+begin false Line end /LPutVar [ x2 y2 x1a y1a x1 y1] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetPos GetArmA GetArmB /mtrx AngleA matrix rotate def x1a y1a
+mtrx transform loopsize add /y1b ED /x1b ED /x2b x2a y2a mtrx transform
+pop def x2b y1b mtrx itransform /y2b ED /x2b ED x1b y1b mtrx itransform
+/y1b ED /x1b ED mark armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a
+y1a armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2
+x2a y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def /LPutPos { LPutLines }
+def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCCircle { 0 0 NodesepA nodeA GetEdge pop xA sub 2 div dup 2 exp r r mul
+sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r a ] def /LPutPos { LPutVar aload pop t
+360 mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add 3 1 roll add exch 3
+-1 roll } def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA
+90 sub a add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r
+ED /c 57.2957 r Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetPos /dx d AngleB sin mul def /dy d AngleB cos mul neg def
+/hx h AngleB sin mul neg def /hy h AngleB cos mul def /LPutVar [ x1 hx
+add y1 hy add x2 hx add y2 hy add x2 dx add y2 dy add x1 dx add y1 dy
+add ] cvx def /LPutPos { LPutLines } def /HPutPos { xB yB xA yA LPutLine
+} def /VPutPos { HPutPos } def mark LPutVar tx@Dict begin false Polygon
+end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetPos /AngleA tA 180 add yA y1 sub xA x1 sub Pyth c mul sub def /AngleB
+tB 180 add yB y2 sub xB x2 sub Pyth c mul add def l 0 eq { x0 y0 r h add
+AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } { x0 y0 translate
+/tA AngleA l c mul add def /tB AngleB l c mul sub def 0 0 r h add tA tB
+arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 roll l arcto 4 {
+pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 0 r d add tB tA
+arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 roll l arcto 4 {
+pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } ifelse closepath
+/LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos { LPutVar /d ED
+/h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { r h add AngleA
+1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } { t 2 lt {
+/NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add add AngleB
+PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub mul add dup
+90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t sub d mul t
+3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse y0 add /Y ED
+x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { LPutPos } def }
+def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def OffsetA AngleA NodesepA
+nodeA GetEdge /y1 ED /x1 ED w x1 xB sub y1 yB sub Pyth Pyth w Div CLW 2
+div mul 2 div dup AngleA sin mul y1 add /y1 ED AngleA cos mul x1 add /x1
+ED /LPutVar [ x1 y1 m { xB w add yB xB w sub yB } { xB yB w sub xB yB w
+add } ifelse x1 y1 ] cvx def /LPutPos { LPutLines } def /VPutPos@ {
+LPutVar flag { 8 4 roll pop pop pop pop } { pop pop pop pop 4 2 roll }
+ifelse } def /VPutPos { VPutPos@ VPutLine } def /HPutPos { VPutPos@
+HPutLine } def mark LPutVar tx@Dict begin /ArrowA { moveto } def /ArrowB
+{ } def false Line closepath end } def
+/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index
+/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5
+-1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin
+Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{
+FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics /Metrics
+currentdict end def[2 index currentdict end definefont 3 -1 roll makefont
+/setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4
+index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding
+exch def}def end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 137[21
+1[12 21 14 1[23 3[10 6[21 1[21 23 21 4[10 5[25 86[{}12 37.412769
+/Helvetica-Bold rf /Fb 137[22 22 12 17 15 2[22 22 34 3[12 22
+2[19 22 19 1[19 12[27 15[32 9[12 11[11 46[{}18 43.800289 /Times-Roman
+rf /Fc 138[16 1[12 12 15[16 98[{}4 32.000225 /Times-Italic
+rf /Fd 60[11 77[19 9 17 2[19 19 19 8[19 19 17 1[19 1[19 2[9
+92[{}13 34.166969 /Helvetica rf /Fe 192[20 63[{}1 40.000278
+/Times-Bold rf /Ff 137[19 21 11 19 13 1[21 21 21 30 9 19 2[21
+21 1[19 1[19 21 19 4[9 8[23 4[25 28 10[25 25 65[{}23 34.166969
+/Helvetica-Bold rf /Fg 80[22 52[18 20 20 29 20 20 11 16 13
+1[20 20 20 31 11 20 1[11 20 20 13 18 20 18 20 18 7[29 29 38
+2[24 1[27 3[29 3[16 1[29 2[24 22[10 13 10 44[{}37 40.000278
+/Times-Roman rf /Fh 200[14 14 14 14 14 14 14 49[{}7 28.000196
+/Times-Roman rf /Fi 200[16 16 16 16 16 1[16 49[{}6 32.000225
+/Times-Roman rf /Fj 72[22 19[26 163[{}2 48.249817 /Symbol rf
+/Fk 139[19 27 2[34 6[19 38[46 66[{}5 69.120476 /Times-Roman
+rf /Fl 139[28 47 3[52 52 4[24 3[47 52 47 1[47 18[61 10[61 67[{}11
+85.007408 /Helvetica-Bold rf /Fm 182[102 73[{}1 368.041595
+/Helvetica-Bold rf /Fn 143[50 50 50 1[28 2[28 1[50 1[44 3[44
+24[72 5[66 72 65[{}11 99.520683 /Times-Roman rf /Fo 134[34
+8[38 1[38 4[19 1[34 1[31 3[34 24[54 5[46 2[34 63[{}10 69.120476
+/Times-Bold rf /Fp 134[19 19 27 1[21 10 19 12 1[21 21 21 31
+8 2[8 21 21 1[21 21 19 21 21 17[29 27 31 21 2[10 2[23 2[27
+1[25 6[10 21 21 21 21 21 21 21 21 21 21 48[{}39 37.412769 /Helvetica
+rf /Fq 81[27 57[16 19 3[24 27 1[13 27 1[13 3[21 27 21 27 24
+18[35 14[24 63[{}15 48.000336 /Times-Bold rf /Fr 134[20 20
+29 1[23 11 20 14 1[23 23 23 34 9 2[9 1[23 11 23 23 20 1[23
+30[27 27 14[23 23 23 48[{}24 41.000366 /Helvetica-Oblique rf
+/Fs 60[14 20[20 48[14 11 14 20 20 20 29 20 23 11 20 14 23 23
+23 23 34 9 20 1[9 23 23 11 23 23 20 23 23 1[23 1[11 11 11 1[27
+27 39 1[29 25 1[29 2[32 29 1[23 2[11 29 2[27 29 29 27 27 1[23
+24 24 24 1[11 23 23 23 23 23 23 23 23 23 23 1[11 14 11 24 16
+14 14 1[27 36 23 2[11 33[{}76 41.000366 /Helvetica rf /Ft 55[16
+77[19 21 21 32 21 24 13 19 19 1[24 24 24 35 13 2[13 24 24 13
+21 24 21 24 24 8[29 1[29 2[24 29 1[29 1[32 8[29 35 32 29 29
+5[16 16 11[12 46[{}38 48.000336 /Times-Italic rf /Fu 81[25
+51[20 1[23 32 23 25 14 23 16 1[25 25 25 36 11 2[11 25 25 14
+23 25 23 25 23 4[11 9[29 15[29 29 3[24 11[23 23 2[14 45[{}31
+41.000366 /Helvetica-Bold rf /Fv 138[32 19 5[32 1[16 2[16 1[29
+19 25 32 2[29 27[38 41 1[38 7[19 58[{}14 57.600342 /Times-Bold
+rf /Fw 67[58 188[{}1 57.899727 /Symbol rf /Fx 134[27 27 38
+1[30 16 27 19 2[30 30 44 14 2[14 30 30 16 27 30 27 30 27 14
+10[35 2[35 5[30 7[35 1[35 35 3[29 8[27 27 27 27 1[14 4[19 2[14
+39[{}35 49.200378 /Helvetica-BoldOblique rf /Fy 134[25 25 35
+2[14 25 16 1[27 27 27 1[11 2[11 1[27 14 27 3[27 46[27 27 27
+48[{}18 49.200378 /Helvetica-Oblique rf /Fz 130[16 1[16 29[14
+1[14 46[14 1[19 16 16 40[{}8 49.200378 /Helvetica rf /FA 130[19
+1[19 25 27 27 38 27 30 16 27 19 1[30 30 30 44 14 27 1[14 30
+30 16 27 30 27 30 27 4[14 6[35 30 33 35 3[35 41 9[35 5[29 4[27
+27 27 27 27 1[27 27 27 1[14 16 14 1[19 16 16 40[{}49 49.200378
+/Helvetica-Bold rf /FB 59[16 9[21 8[24 1[27 27 3[21 44[23 10
+23 21 24 24 35 24 24 13 19 16 24 24 24 24 37 13 24 13 13 24
+24 16 21 24 21 24 21 16 6[35 35 45 2[29 27 32 1[27 35 35 43
+29 2[16 35 35 27 29 35 32 32 35 3[27 1[13 13 24 24 24 24 24
+24 24 24 24 24 13 12 16 12 27 1[16 16 16 5[16 33[{}78 48.000336
+/Times-Roman rf /FC 134[39 39 55 1[43 24 39 27 1[43 43 43 63
+20 2[20 43 43 1[39 43 39 43 39 17[55 51 59 43 2[20 2[43 1[51
+2[51 6[24 39 39 39 39 39 39 39 39 39 39 48[{}39 70.862267 /Helvetica-Bold
+rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 1 1
+0 bop 366 51 a FC(1)70 b(Dots)591 172 y FB(The)12 b(graphics)g(objects)712
+315 y FA(\\psdot)p Fz(*[)p Fy(par)5 b Fz(]\()p Fy(x1)p Fz(,)p
+Fy(y1)p Fz(\))712 390 y FA(\\psdots)p Fz(*[)p Fy(par)g Fz(])p
+FA(\()p Fx(x1)p FA(,)p Fx(y1)p FA(\))p Fz(\()p Fy(x2)s Fz(,)p
+Fy(y2)s Fz(\))q Fw(\274)s Fz(\()p Fy(xn)q Fz(,)p Fy(yn)q Fz(\))591
+518 y FB(put)12 b(a)g(dot)g(at)g(each)h(coordinate.)591 607
+y(What)f(a)g(\252dot\272)h(is)f(depends)f(on)h(the)g(value)h(of)f(the)712
+736 y FA(dotstyle=)p Fx(style)671 b Fv(Default:)20 b FA(*)591
+864 y FB(parameter)m(.)d(This)7 b(also)g(determines)g(the)g(dots)g(you)g(get)
+g(when)g Fu(showpoints=true)p FB(.)591 953 y(The)12 b(dot)g(styles)g(are)g
+(also)g(pretty)h(intuitive:)759 1087 y Ft(Style)75 b(Example)798
+1167 y Fs(*)112 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778
+-0.638889 -0.813889] DS 2 mul dup matrix scale matrix concatmatrix
+exch matrix rotate matrix concatmatrix exch findfont exch makefont
+setfont { moveto 0 show } dup 1 4 -1 roll put bind /Dot ED newpath
+n { Dot } repeat end
+
+@endspecial 794
+1239 a(o)d @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def /r2 DS CLW sub def /Dot { gsave T 0 0
+DS 0 360 arc fill 1. setgray 0 0 r2 0 360 arc fill grestore } def
+ newpath n { Dot } repeat end
+
+@endspecial 794 1312
+a(+)f @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <2B> /Symbol 0. [2.2 0.0 0.0 2.2 -0.6039
+-0.5863] DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont { moveto
+0 show } dup 1 4 -1 roll put bind /Dot ED newpath n { Dot } repeat
+end
+
+@endspecial 795 1384 a(x)j
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <B4> /Symbol 0. [1.8 0.0 0.0 1.8 -0.495
+-0.4788] DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont { moveto
+0 show } dup 1 4 -1 roll put bind /Dot ED newpath n { Dot } repeat
+end
+
+@endspecial 735 1456 a(asterisk)51
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <2A> /Symbol 0. [2.39808 0.0 0.0 2.39808
+-0.589928 -0.821343] DS 2 mul dup matrix scale matrix concatmatrix
+exch matrix rotate matrix concatmatrix exch findfont exch makefont
+setfont { moveto 0 show } dup 1 4 -1 roll put bind /Dot ED newpath
+n { Dot } repeat end
+
+@endspecial 757 1528 a(oplus)71
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <C5> /Symbol 0. [1.44928 0.0 0.0 1.44928
+-0.562319 -0.478261] DS 2 mul dup matrix scale matrix concatmatrix
+exch matrix rotate matrix concatmatrix exch findfont exch makefont
+setfont { moveto 0 show } dup 1 4 -1 roll put bind /Dot ED newpath
+n { Dot } repeat end
+
+@endspecial 746 1600 a(otimes)60
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <C4> /Symbol 0. [1.44928 0.0 0.0 1.44928
+-0.562319 -0.475362] DS 2 mul dup matrix scale matrix concatmatrix
+exch matrix rotate matrix concatmatrix exch findfont exch makefont
+setfont { moveto 0 show } dup 1 4 -1 roll put bind /Dot ED newpath
+n { Dot } repeat end
+
+@endspecial 800 1673 a(|)115 b
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def 2.0 5. CLW mul add 2 div /DS ED /Dot {
+gsave T 0 DS moveto 0 DS neg L stroke grestore } def newpath n { Dot
+} repeat end
+
+@endspecial 1378 1087 a Ft(Style)98
+b(Example)1362 1167 y Fs(square)80 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def /r1 DS .886 mul def /r2 r1 CLW sub def
+/Dot { gsave T r1 /r ED r r moveto r r neg L r neg r neg L r neg r
+L fill 1. setgray r2 /r ED r r moveto r r neg L r neg r neg L r neg
+r L fill grestore } def newpath n { Dot } repeat end
+
+
+@endspecial 1355 1239 a(square*)71 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def /r1 DS .886 mul def /Dot { gsave T r1
+/r ED r r moveto r r neg L r neg r neg L r neg r L fill grestore }
+def newpath n { Dot } repeat end
+
+
+@endspecial 1347 1312 a(diamond)63 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <A8> /Symbol 0. [2.3 0.0 0.0 2.3 -0.8533
+-0.5336] DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont { moveto
+0 show } dup 1 4 -1 roll put bind /Dot ED newpath n { Dot } repeat
+end
+
+
+@endspecial 1339 1384 a(diamond*)55 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def <E0> /Symbol 0. [1.9 0.0 0.0 1.9 -0.4598
+-0.70775] DS 2 mul dup matrix scale matrix concatmatrix exch matrix
+rotate matrix concatmatrix exch findfont exch makefont setfont { moveto
+0 show } dup 1 4 -1 roll put bind /Dot ED newpath n { Dot } repeat
+end
+
+
+@endspecial 1358 1456 a(triangle)75 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def /y1 DS .778 mul neg def /x1 y1 1.732 mul
+neg def /y2 y1 CLW add def /x2 y2 1.732 mul neg def /Dot { gsave T
+x1 y1 /y ED /x ED x y moveto x neg y L 0 x L fill 1. setgray x2 y2
+/y ED /x ED x y moveto x neg y L 0 x L fill grestore } def newpath
+n { Dot } repeat end
+
+
+@endspecial 1350 1528 a(triangle*)67 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def /y1 DS .778 mul neg def /x1 y1 1.732 mul
+neg def /Dot { gsave T x1 y1 /y ED /x ED x y moveto x neg y L 0 x L
+fill grestore } def newpath n { Dot } repeat end
+
+
+@endspecial 1340 1600 a(pentagon)56 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def DS .93 mul dup 1.236 mul /r1 ED CLW sub
+1.236 mul /r2 ED /Dot { gsave T r1 /r ED gsave 0 r moveto 4 { 72 rotate
+0 r L } repeat fill grestore 1. setgray r2 /r ED gsave 0 r moveto 4
+{ 72 rotate 0 r L } repeat fill grestore grestore } def newpath n
+{ Dot } repeat end
+
+
+@endspecial 1332 1673 a(pentagon*)48 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+2.0 2. CLW mul add 2 div def /r1 DS 1.149 mul def /Dot { gsave T r1
+/r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore
+grestore } def newpath n { Dot } repeat end
+
+
+@endspecial 591 1799 a FB(Except)19 b(for)g Fs(diamond)p FB(,)g(the)g
+(center)h(of)f(dot)g(styles)g(with)f(a)i(hollow)e(center)i(is)591
+1859 y(colored)12 b Fu(\256llcolor)p FB(.)591 1948 y(Here)c(are)i(the)f
+(parameters)h(for)f(changing)g(the)g(size)h(and)e(orientation)j(of)d(the)i
+(dots:)591 2077 y FA(dotsize=)p Fx(dim)i(`num')594 b Fv(Default:)19
+b FA(2pt)c(2)712 2157 y FB(The)g(diameter)h(of)e(a)g(circle)i(or)e(disc)g(is)
+g Fr(dim)h FB(plus)f Fr(num)h FB(times)g Fu(linewidth)712 2218
+y FB(\(if)d(the)f(optional)h Fr(num)f FB(is)g(included\).)17
+b(The)12 b(size)f(of)g(the)g(other)g(dots)g(styles)712 2278
+y(is)g(similar)h(\(except)g(for)e(the)h(size)h(of)e(the)1382
+2267 y Ft(\310)1392 2278 y FB(|)g(dot)h(style,)g(which)g(is)g(set)g(by)f(the)
+712 2338 y Fu(tbarsize)i FB(parameter)h(described)f(on)g(page)g
+Fq(??)p FB(\).)591 2439 y FA(dotscale=)p Fx(num1)h(`num2')581
+b Fv(Default:)20 b FA(1)712 2520 y FB(The)12 b(dots)e(are)i(scaled)f
+(horizontally)h(by)f Fr(num1)f FB(and)h(vertically)h(by)f Fr(num2)s
+FB(.)712 2580 y(If)i(you)g(only)g(include)g Fr(num1)p FB(,)f(the)i(arrows)e
+(are)h(scaled)g(by)g Fr(num1)f FB(in)h(both)712 2640 y(directions.)1928
+2828 y Fp(1)p eop
+%%Page: 2 2
+1 bop 591 50 a FA(dotangle=)p Fx(angle)750 b Fv(Default:)20
+b FA(0)712 130 y FB(After)12 b(setting)h(the)f(size)g(and)g(scaling)h(the)f
+(dots,)g(the)g(dots)g(are)g(rotated)h(by)712 190 y Fr(angle)q
+FB(.)366 386 y FC(2)70 b(Arrowheads)22 b(and)e(such)591 507
+y FB(New)11 b(arrows:)809 628 y Ft(V)-5 b(alue)54 b(Example)36
+b(Name)820 708 y Fs(|<->|)65 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar 0 CLW 2 div T newpath false 0.4 1.4 1.5 2. Arrow EndArrow
+ moveto } def /ArrowB { BeginArrow 2.0 5. Tbar 0 CLW 2 div T newpath
+false 0.4 1.4 1.5 2. Arrow EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+203 w FB(T)l(-bars)11 b(and)h(arrowheads.)805 780 y Fs(|<*->|*)48
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0 CLW -2 div T 2.0 5. Tbar 0 CLW 2 div T newpath false 0.4 1.4 1.5
+2. Arrow EndArrow moveto } def /ArrowB { BeginArrow 0 CLW -2 div
+T 2.0 5. Tbar 0 CLW 2 div T newpath false 0.4 1.4 1.5 2. Arrow EndArrow
+ } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto load def false Line
+ gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 203 w FB(T)l(-bars)11
+b(and)h(arrowheads,)g(\257ush.)591 904 y(The)e(size)g(of)f(these)h(line)h
+(terminators)f(is)g(controlled)h(by)e(the)h(following)g(parame-)591
+964 y(ters.)17 b(In)11 b(the)h(description)f(of)h(the)f(parameters,)i(the)e
+(width)h(always)f(refers)g(to)g(the)591 1025 y(dimension)g(perpendicular)h
+(to)g(the)g(line,)g(and)f(length)h(refers)f(to)h(a)f(dimension)h(in)591
+1085 y(the)g(direction)h(of)f(the)g(line.)591 1211 y FA(arrowsize=)p
+Fx(dim)g(`num')496 b Fv(Default:)20 b FA(1.5pt)14 b(2)712 1291
+y FB(The)g(width)g(of)g(arrowheads)f(is)g Fr(dim)h FB(plus)g
+Fr(num)g FB(times)g Fu(linewidth)g FB(\(if)f(the)712 1351 y(optional)g(`num')
+f(is)g(inclued\).)18 b(See)12 b(the)g(diagram)h(below)m(.)591
+1451 y FA(arrowlength=)p Fx(num)744 b Fv(Default:)712 1532
+y FB(Length)11 b(of)f(arrowheads,)f(as)h(a)g(fraction)h(of)e(the)i(width,)f
+(as)f(shown)g(below)m(.)591 1632 y FA(arrowinset=)p Fx(num)777
+b Fv(Default:)712 1712 y FB(Size)12 b(of)f(inset)g(for)f(arrowheads,)h(as)g
+(a)g(fraction)g(of)g(the)h(length,)f(as)g(shown)712 1772 y(below)m(.)925
+2129 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray [ 0.0 14.22636 28.45273
+0.0 0.0 56.90546 -28.45273 0.0 /Lineto /lineto load def false Polygon
+ gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ -35.5659 56.90546 -35.5659 0.0 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial 706 2023 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.39041
+neg 31.80019 10.93733 .5 Frame gsave 1. setgray fill grestore end
+
+
+@endspecial Ft(length)925 2129 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ 28.45273 -7.11317 -28.45273 -7.11317 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+
+@endspecial 872 2175 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.11519
+neg 28.60912 10.93733 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial(width)925
+2129 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ 35.5659 14.22636 35.5659 0.0 /Lineto /lineto load
+def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 1090 2113 a(inset)1178
+1919 y Fs(arrowsize)50 b FB(=)f Fr(dim)12 b(num)1247 1992 y
+Ft(width)50 b FB(=)f Fr(num)13 b FB(x)e Fu(linewidth)h FB(+)g
+Fr(dim1)1233 2064 y Ft(length)51 b FB(=)e Fu(arrowlength)11
+b FB(x)h Ft(width)1262 2136 y(inset)51 b FB(=)e Fu(arrowinset)11
+b FB(x)h Ft(height)591 2319 y FA(tbarsize=)p Fx(dim)g(`num')711
+b Fv(Default:)712 2399 y FB(The)18 b(width)f(of)g(a)h(t-bar)n(,)h(square)e
+(bracket)h(or)f(rounded)g(bracket)h(is)f Fr(dim)712 2459 y
+FB(plus)12 b Fr(num)g FB(times)h Fu(linewidth)f FB(\(if)g(the)g(optional)h
+(`num')f(is)g(included\).)591 2560 y FA(bracketlength=)p Fx(num)704
+b Fv(Default:)712 2640 y FB(The)13 b(height)f(of)g(a)g(square)g(bracket)h(is)
+f Fr(num)g FB(times)g(its)h(width.)591 2828 y Fp(Arrowheads)c(and)g(such)976
+b(2)p eop
+%%Page: 3 3
+2 bop 591 50 a FA(rbracketlength=)p Fx(num)685 b Fv(Default:)712
+131 y FB(The)13 b(height)f(of)g(a)g(round)g(bracket)h(is)e
+Fr(num)i FB(times)f(its)g(width.)591 232 y FA(arrowscale=)p
+Fx(arrowscale=num1)i(`num2')285 b Fv(Default:)712 313 y FB(Imagine)14
+b(that)g(arrows)e(and)h(such)g(point)g(down.)20 b(This)13 b(scales)g(the)h
+(width)712 374 y(of)h(the)h(arrows)e(by)h Fr(num1)f FB(and)h(the)g(length)h
+(\(height\))f(by)g Fr(num2)s FB(.)25 b(If)15 b(you)712 434
+y(only)e(include)h(one)e(number)n(,)h(the)h(arrows)d(are)j(scaled)f(the)g
+(same)g(in)g(both)712 494 y(directions.)18 b(Changing)11 b
+Fu(arrowscale)f FB(can)h(give)h(you)f(special)h(ef)o(fects)g(not)712
+554 y(possible)i(by)f(changing)h(the)g(parameters)h(described)f(above.)22
+b(E.g.,)14 b(you)712 614 y(can)f(change)f(the)h(width)e(of)h(lines)h(used)e
+(to)h(draw)g(brackets.)591 745 y(The)g(size)g(of)g(dots)g(is)f(controlled)i
+(by)f(the)h Fu(dotsize)e FB(parameter)m(.)366 942 y FC(3)70
+b(Lines)20 b(and)h(polygons)591 1055 y FA(\\psdiamond)p Fz(*[)p
+Fy(par)p Fz(]\()p Fy(x0)r Fz(,)t Fy(y0)r Fz(\))p FA(\()p Fx(x1)p
+FA(,)t Fx(y1)p FA(\))712 1136 y Fu(\\psdiamond)c FB(draws)f(a)h(diamond)g
+(centered)h(at)f Fs(\()p Fr(x0)r Fs(,)t Fr(y0)r Fs(\))p FB(,)g(and)g(with)f
+(the)712 1196 y(half)d(width)f(and)g(height)g(equal)h(to)f
+Fr(x1)g FB(and)g Fr(y1)p FB(,)g(respectively)m(.)118 1509 y
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 42.67911 28.45274 0. 56.90549 28.45274 /mtrx CM def
+T rotate /h ED /w ED dup 0 eq { pop } { CLW mul neg /d ED /a w h Atan
+def /h d a sin Div h add def /w d a cos Div w add def } ifelse mark
+w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div /ArrowA { moveto
+} def /ArrowB { } def false Line closepath mtrx setmatrix gsave 0.75
+setgray fill grestore gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 712 1372 a Fs(\\psdiamond[framearc=.3,\256llstyle=solid,)758
+1432 y(\256llcolor=lightgray]\(2,1\)\(1.5,1\))712 1632 y FB(The)h(diamond)f
+(is)g(rotated)h(about)f(the)g(center)h(by)820 1734 y FA(gangle=)p
+Fx(gangle)537 b Fv(Default:)20 b FA(0)591 1835 y(\\pstriangle)p
+Fz(*[)p Fy(par)p Fz(]\()p Fy(x0)r Fz(,)t Fy(y0)r Fz(\))p FA(\()p
+Fx(x1)p FA(,)t Fx(y1)p FA(\))712 1916 y Fu(\\pstriangle)14
+b FB(draws)g(an)h(isosceles)f(triangle)h(with)g(the)g(base)f(centered)h(at)
+712 1976 y Fs(\()p Fr(x0)r Fs(,)t Fr(y0)r Fs(\))p FB(,)21 b(and)f(with)f
+(width)g(\(base\))h(and)f(height)h(equal)g(to)g Fr(x1)f FB(and)h
+Fr(y1)p FB(,)712 2037 y(respectively)m(.)118 2350 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray /Lineto /lineto load
+def false pop .5 113.81097 28.45274 10. 56.90549 14.22636 /mtrx CM
+def translate rotate /h ED 2 div /w ED dup 0 eq { pop } { CLW mul /d
+ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 div dup cos exch
+sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 d /ArrowA {
+moveto } def /ArrowB { } def false Line closepath mtrx setmatrix gsave
+0. setgray fill grestore end
+
+@endspecial
+712 2242 a Fs(\\pstriangle*[gangle=10]\(2,.5\)\(4,1\))591 2828
+y Fp(Lines)9 b(and)h(polygons)1014 b(3)p eop
+%%Page: 4 4
+3 bop 366 51 a FC(4)70 b(Framed)21 b(boxes)591 164 y FA(\\psdiabox)p
+Fz(*[)p Fy(par)p Fz(])p FA({)p Fx(stuf)o(f)6 b FA(})712 244
+y Fu(\\psdiabox)12 b FB(draws)f(a)h(diamond.)206 416 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 30.80476 2 mul 9.98157 2 mul 0 28.11816 3.79471 /mtrx
+CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul neg /d ED /a
+w h Atan def /h d a sin Div h add def /w d a cos Div w add def } ifelse
+mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div /ArrowA
+{ moveto } def /ArrowB { } def false Line closepath mtrx setmatrix
+ gsave 3.0 -45. PtoC Shadow 0.25 setgray gsave fill grestore stroke
+grestore gsave 1. setgray gsave fill grestore stroke grestore gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial Fo(Happy?)712 411 y Fs
+(\\psdiabox[shadow=true]{\\Large\\bf)22 b(Happy?})591 604 y
+FA(\\pstribox)p Fz(*[)p Fy(par)p Fz(])p FA({)p Fx(stuf)o(f)6
+b FA(})712 684 y Fu(\\pstribox)12 b FB(draws)f(a)h(triangle.)196
+878 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 97.90497 49.93228 exch 1 -90 mul -5.8 3.79471 /mtrx
+CM def translate rotate /h ED 2 div /w ED dup 0 eq { pop } { CLW mul
+/d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 div dup cos
+exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 d /ArrowA
+{ moveto } def /ArrowB { } def false Line closepath mtrx setmatrix
+ gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial Fo(Begin)712 873
+y Fs(\\pstribox[trimode=R,framesep=5pt]{\\Large\\bf)22 b(Begin})712
+1086 y FB(The)13 b(triangle)g(points)f(in)g(the)g(direction:)820
+1188 y FA(trimode=)p Fx(*U/D/R/L)469 b Fv(Default:)19 b FA(U)712
+1289 y FB(If)10 b(you)g(include)h(the)f(optional)h Fs(*)p FB(,)f(then)g(an)h
+(equilateral)g(triangle)g(is)f(drawn,)712 1349 y(otherwise,)i(you)g(get)g
+(the)h(minimum-area)g(isosceles)f(triangle.)263 1727 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 94.80983 82.10822 0 -90 mul 28.53056 -8.95914 /mtrx
+CM def translate rotate /h ED 2 div /w ED dup 0 eq { pop } { CLW mul
+/d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 div dup cos
+exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 d /ArrowA
+{ moveto } def /ArrowB { } def false Line closepath mtrx setmatrix
+ gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial Fn(Begin)712 1604 y Fs
+(\\pstribox[trimode=*U]{\\Huge)23 b(Begin})366 1961 y FC(5)70
+b(Obsolete)20 b(put)g(commands)591 2082 y FB(There)13 b(is)h(an)f(obsolete)h
+(command)g Fu(\\Rput)g FB(that)g(has)f(the)h(same)g(syntax)f(as)g
+Fu(\\uput)591 2142 y FB(and)g(that)i(works)e(almost)h(the)g(same)g(way)m(,)g
+(except)h(the)f Fr(refangle)f FB(ar)o(gument)i(has)591 2202
+y(the)10 b(syntax)h(of)f Fu(\\rput)p FB(')m(s)g Fr(refpoint)j
+FB(ar)o(gument,)f(and)e(it)h(gives)g(the)g(point)f(in)h Fr(stuff)17
+b FB(that)591 2262 y(should)11 b(be)h(aligned)h(with)f Fs(\()p
+Fr(x)s Fs(,)t Fr(y)t Fs(\))p FB(.)18 b(E.g.,)712 2391 y Fs
+(\\qdisk\(4,0\){2pt})p @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 113.81097 0.0 2.0 0
+360 arc fill end
+
+@endspecial
+1480 2444 a FB(\()p Ft(x;)9 b(y)p FB(\))712 2451 y Fs
+(\\Rput[tl]\(4,0\){$\(x,y\)$})591 2580 y FB(Here)22 b(is)g(the)h(equivalence)
+h(between)f Fu(\\uput)p FB(')m(s)f Fr(refangle)h FB(abbreviations)g(and)591
+2640 y Fu(\\Rput)p FB(')m(s)12 b Fr(refpoint)j FB(abbreviations:)591
+2828 y Fp(Framed)9 b(boxes)1098 b(4)p eop
+%%Page: 5 5
+4 bop 916 51 a Fu(\\uput)50 b Fs(r)f(u)j(l)g(d)e(ur)h(ul)h(dr)d(dl)912
+123 y Fu(\\Rput)j Fs(l)g(b)e(r)55 b(t)j(bl)52 b(br)j(tr)60
+b(rl)591 251 y FB(Some)16 b(people)i(prefer)f Fu(\\Rput)p FB(')m(s)g
+(convention)g(for)g(specifying)g(the)g(position)g(of)591 312
+y Fr(stuff)h FB(over)12 b Fu(\\uput)p FB(')m(s.)591 401 y(Once)g(upon)g(a)g
+(time)h(there)g(was)f Fs(\\psput)h FB(instead)f(of)g Fu(\\nput)p
+FB(.)19 b(This)12 b(feature)h(is)f(still)591 461 y(supported)f(for)h
+(backwards)f(compatibility)m(.)591 2828 y Fp(Obsolete)e(put)h(commands)932
+b(5)p eop
+%%Page: 6 6
+5 bop 393 265 a Fm(I)591 182 y Fl(Nodes)23 b(and)g(Node)g(Connections)591
+566 y FB(All)16 b(the)h(commands)g(described)g(in)f(this)h(part)g(are)g
+(contained)g(in)g(the)g(\256le)g Fs(pst-)207 649 y
+ tx@Dict begin gsave STV CP T 34.14319 0.0 56.90549 28.45274 17.0716
+ tx@NodeDict begin /TheNodefile 16 NewNode InitRnode end end grestore
+end
+ 325 590
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 221 608 a FA(pst-node)591
+627 y Fs(node.tex)p FB(/)p Fs(pst-node.sty)p FB(.)591 716 y(The)k(node)f(and)
+h(node)g(connection)h(macros)e(let)i(you)f(connect)g(information)591
+776 y(and)15 b(place)i(labels,)g(without)f(knowing)g(the)g(exact)h(position)e
+(of)h(what)g(you)f(are)591 836 y(connecting)e(or)f(where)g(the)g(lines)h
+(should)e(connect.)19 b(These)12 b(macros)g(are)h(useful)591
+896 y(for)g(making)i(graphs)e(and)h(trees,)h(mathematical)h(diagrams,)f
+(linguistic)g(syntax)591 957 y(diagrams,)10 b(and)f(connecting)i(ideas)f(of)f
+(any)h(kind.)16 b(They)10 b(are)g(the)g(trickiest)h(tricks)591
+1017 y(in)h(PST)n(ricks!)591 1106 y(There)g(are)g(three)h(components)f(to)g
+(the)h(node)e(macros:)591 1237 y Fq(Node)g(de\256nitions)23
+b FB(The)10 b(node)h(de\256nitions)f(let)h(you)f(assign)f(a)i(name)g(and)f
+(shape)712 1297 y(to)j(an)f(object.)18 b(See)12 b(Section)g(6.)591
+1399 y Fq(Node)f(connections)23 b FB(The)10 b(node)f(connections)h(connect)g
+(two)f(nodes,)g(identi\256ed)712 1459 y(by)j(their)h(names.)k(See)12
+b(Section)h(7.)591 1561 y Fq(Node)e(labels)24 b FB(The)13 b(node)f(label)i
+(commands)e(let)i(you)e(af)o(\256x)g(labels)h(to)g(the)g(node)712
+1621 y(connections.)18 b(See)12 b(Section)h(8.)591 1752 y(Y)-5
+b(ou)8 b(can)i(use)f(these)h(macros)f(just)g(about)h(anywhere.)16
+b(The)10 b(best)f(way)g(to)h(position)591 1812 y(them)f(depends)g(on)f(the)h
+(application.)18 b(For)8 b(greatest)i(\257exibility)m(,)g(you)f(can)g(use)f
+(the)591 1872 y(nodes)h(in)i(a)g Fu(\\pspicture)p FB(,)e(positioning)i(and)g
+(rotating)g(them)g(with)f Fu(\\rput)p FB(.)17 b(Y)-5 b(ou)9
+b(can)591 1932 y(also)f(use)g(them)h(in)g(alignment)g(environments.)17
+b Fs(pst-node.tex)8 b FB(contains)g(a)h(special)591 1992 y(alignment)19
+b(environment,)h Fu(\\psmatrix)p FB(,)g(which)e(is)g(designed)g(for)g
+(positioning)591 2053 y(nodes)e(in)i(a)g(grid,)g(such)f(as)g(in)h
+(mathematical)i(diagrams)e(and)f(some)g(graphs.)591 2113 y
+Fu(\\psmatrix)e FB(is)h(described)h(in)f(Section)h Fq(??)p
+FB(.)29 b Fs(pst-node.tex)16 b FB(also)g(contains)h(high-)591
+2173 y(level)12 b(macros)h(for)e(trees.)18 b(These)12 b(are)g(described)g(in)
+h(Part)f Fq(??)p FB(.)591 2262 y(But)g(don')o(t)g(restrict)g(yourself)g(to)g
+(these)g(more)h(obvious)e(uses.)17 b(For)11 b(example:)106
+2500 y
+ tx@Dict begin gsave STV CP T 35.96866 29.96866 113.81102 56.9055 3.0
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ -117 x FB(I)h(made)h(the)f(\256le)g(symbol)g(a)106 2443
+y(node.)17 b(Now)11 b(I)h(can)g(draw)106 2503 y(an)g(arrow)g(so)f(that)i(you)
+106 2563 y(know)e(what)h(I)g(am)h(talking)106 2623 y(about.)591
+2500 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 8.0 8.0 /TheNodeA /TheNodefile
+InitNC { yB yA sub xB xA sub Atan dup 8. add /AngleA ED 8. sub 180
+add /AngleB ED 0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 712 2377 a Fs(\\rnode{A}{\045)758 2437 y(\\parbox{4cm}{\\raggedr)o
+(ight)803 2498 y(I)23 b(made)f(the)h(\256le)g(symbol)g(a)f(node.)g(Now)h(I)h
+(can)e(draw)g(an)803 2558 y(arrow)g(so)h(that)g(you)f(know)h(what)g(I)h(am)e
+(talking)h(about.}})712 2618 y(\\ncarc[nodesep=8pt]{->}{A}{\256le})591
+2828 y Fp(Nodes)9 b(and)g(Node)h(Connections)838 b(6)p eop
+%%Page: 7 7
+6 bop 366 51 a FC(6)70 b(Nodes)591 172 y FB(Nodes)11 b(have)h(a)g(name.)18
+b(a)12 b(boundary)g(and)g(a)g(center)m(.)314 327 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 24.0 .5 CLW
+mul sub 0 360 arc closepath gsave 0.5 setgray fill grestore gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 314 327 a
+ tx@Dict begin 45. tx@Dict /TMatrix known not { /TMatrix { } def /RAngle
+{ 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle
+[ RAngle dup a add ] cvx def end
+ 239 375 a
+ tx@Dict begin CP CP translate 3.04861 3.04861 scale NET end
+ FB(PS)239 375
+y
+ tx@Dict begin CP CP translate 1 3.04861 div 1 3.04861 div scale NET
+ end
+ 314 327 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 6.0 1.19998 .5
+CLW mul dup 4 -1 roll sub neg 3 1 roll sub 0.0 22.80002 /mtrx CM def
+T scale 0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0. setgray
+fill grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 6.0 1.19998 .5
+CLW mul dup 4 -1 roll sub neg 3 1 roll sub 0.0 33.0 /mtrx CM def T
+scale 0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0. setgray
+fill grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -6.0 22.80002
+6.0 33.0 .5 Frame gsave 0. setgray fill grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 42.0 0.0 33.0 ArrowA 6.0 48.0 21.0 48.0 ArrowB
+curveto gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin 0.0 tx@Dict /TMatrix known not { /TMatrix { } def /RAngle
+{ 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot /RAngle
+[ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 40.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 80.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 120.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 160.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 200.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 240.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 280.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 401 127 a
+ tx@Dict begin 320.0 tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.39996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 401 127 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 591 247 a FB(The)e(name)g(is)f(for)h
+(refering)g(to)f(the)h(node)g(when)f(making)h(node)g(connections)g(and)591
+307 y(labels.)28 b(Y)-5 b(ou)16 b(specify)f(the)h(name)h(as)e(an)h(ar)o
+(gument)g(to)g(the)g(node)g(commands.)591 368 y(The)d(name)h(must)f(contain)h
+(only)f(letters)h(and)g(numbers,)f(and)g(must)g(begin)h(with)591
+428 y(a)e(letter)m(.)19 b(Bad)12 b(node)g(names)g(can)g(cause)g(PostScript)g
+(errors.)591 527 y(The)f(center)h(of)f(a)h(node)f(is)g(where)g(node)g
+(connections)h(point)f(to.)18 b(The)11 b(boundary)591 587 y(is)16
+b(for)h(determining)h(where)f(to)g(connect)h(a)f(node)g(connection.)34
+b(The)17 b(various)591 647 y(nodes)11 b(dif)o(fer)i(in)f(how)g(they)g
+(determine)h(the)g(center)g(and)f(boundary)m(.)17 b(They)c(also)591
+707 y(dif)o(fer)f(in)g(what)g(kind)g(of)g(visable)g(object)h(they)f(create.)
+591 796 y(Here)f(are)i(the)f(nodes:)591 935 y FA(\\rnode)p
+Fz([)p Fy(refpoint)t Fz(])p FA({)p Fx(name)r FA(}{)p Fx(stuf)o(f)6
+b FA(})712 1016 y Fu(\\rnode)j FB(puts)g Fr(stuff)16 b FB(in)9
+b(a)g(box.)16 b(The)9 b(center)h(of)f(the)g(node)g(is)g Fr(refpoint)t
+FB(,)f(which)712 1076 y(you)k(can)h(specify)f(the)g(same)g(way)g(as)g(for)f
+Fu(\\rput)p FB(.)591 1177 y FA(\\Rnode)p Fz(*[)p Fy(par)p Fz(])p
+FA({)p Fx(name)r FA(}{)p Fx(stuf)o(f)6 b FA(})712 1257 y Fu(\\Rnode)20
+b FB(also)f(makes)g(a)h(box,)g(but)f(the)h(center)g(is)e(set)i(dif)o
+(ferently)m(.)39 b(If)712 1317 y(you)11 b(align)h Fu(\\rnode)p
+FB(')m(s)f(by)g(their)h(baseline,)g(dif)o(ferences)g(in)f(the)h(height)g(and)
+712 1377 y(depth)20 b(of)e(the)i(nodes)e(can)i(cause)f(connecting)h(lines)f
+(to)g(be)g(not)g(quite)712 1438 y(parallel,)14 b(such)d(as)h(in)g(the)h
+(following)f(example:)174 1606 y
+ tx@Dict begin gsave STV CP T 7.606 3.58319 14.74753 7.37376 2.0114
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ Fk(sp)489 1606 y
+ tx@Dict begin gsave STV CP T 11.2058 0.141 20.28821 10.1441 5.5324
+ tx@NodeDict begin /TheNodeB 16 NewNode InitRnode end end grestore
+end
+ Fk(Bit)591
+1606 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { NCLine } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 712 1541 a Fs(\\Large)712 1601 y(\\rnode{A}{sp})21 b(\\hskip)i(2cm)g
+(\\rnode{B}{Bit})712 1661 y(\\ncline{A}{B})712 1789 y FB(W)n(ith)13
+b Fu(\\Rnode)p FB(,)g(the)f(center)h(is)f(determined)h(relative)g(to)f(the)h
+(baseline:)174 1955 y
+ tx@Dict begin gsave STV CP T 7.606 3.58319 14.74753 7.37376 5.20224
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ Fk(sp)489 1955 y
+ tx@Dict begin gsave STV CP T 11.2058 0.141 20.28821 10.1441 5.20224
+ tx@NodeDict begin /TheNodeB 16 NewNode InitRnode end end grestore
+end
+ Fk(Bit)591 1955 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { NCLine } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 712
+1889 a Fs(\\Large)712 1949 y(\\Rnode{A}{sp})22 b(\\hskip)h(2cm)g
+(\\Rnode{B}{Bit})712 2010 y(\\ncline{A}{B})712 2138 y FB(Y)-5
+b(ou)11 b(can)g(usually)g(get)g(by)f(without)h(\256ddling)g(with)f(the)h
+(center)h(the)f(center)712 2198 y(of)h(the)h(node,)f(but)g(to)g(modify)g(it)g
+(you)g(set)g(the)820 2298 y FA(href=)p Fx(num)657 b Fv(Default:)20
+b FA(0)820 2359 y(vref=)p Fx(dim)608 b Fv(Default:)19 b FA(.7ex)712
+2459 y FB(parameters.)46 b(In)21 b(the)h(horizontal)g(direction,)i(the)e
+(center)g(is)f(located)712 2520 y(fraction)f Fu(href)e FB(from)h(the)g
+(center)h(to)f(the)g(edge.)39 b(E.g,)20 b(if)f Fu(href=-1)p
+FB(,)g(the)712 2580 y(center)f(is)g(on)f(the)g(left)h(edge)f(of)g(the)h(box.)
+33 b(In)17 b(the)g(vertical)i(direction,)712 2640 y(the)f(center)h(is)e
+(located)h(distance)g Fu(vref)f FB(from)g(the)h(baseline.)34
+b(The)18 b Fu(vref)591 2828 y Fp(Nodes)1228 b(7)p eop
+%%Page: 8 8
+7 bop 712 50 a FB(parameter)14 b(is)e(evaluated)i(each)f(time)g
+Fu(\\Rnode)g FB(is)f(used,)g(so)f(that)i(you)f(can)712 110
+y(use)17 b Fs(ex)g FB(units)f(to)h(have)g(the)g(distance)g(adjust)g(itself)g
+(to)g(the)g(size)g(of)f(the)712 170 y(current)c(font)f(\(but)f(without)h
+(being)h(sensitive)f(to)g(dif)o(ferences)g(in)g(the)g(size)712
+230 y(of)h(letters)h(within)f(the)h(current)f(font\).)591 332
+y FA(\\pnode)p Fz(\()p Fy(x)t Fz(,)t Fy(y)t Fz(\))p FA({)p
+Fx(name)r FA(})712 413 y FB(This)g(creates)h(a)f(zero)h(dimensional)f(node)g
+(at)h Fs(\()p Fr(x)s Fs(,)t Fr(y)t Fs(\))p FB(.)591 515 y FA(\\cnode)p
+Fz(*[)p Fy(par)p Fz(]\()p Fy(x)t Fz(,)t Fy(y)t Fz(\))p FA({)p
+Fx(radius)r FA(}{)p Fx(name)r FA(})712 596 y FB(This)f(draws)f(a)h(circle.)18
+b(Here)11 b(is)h(an)g(example)g(with)g Fu(\\pnode)f FB(and)h
+Fu(\\cnode)p FB(:)236 825 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 28.45274 7.11317
+.5 CLW mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+236 825 a
+ tx@Dict begin gsave STV CP T 0.0 28.45274 7.11317 tx@NodeDict begin
+/TheNodeA 11 NewNode InitCnode end end grestore end
+ 236 825 a
+ tx@Dict begin gsave STV CP T 85.35823 0.0 tx@NodeDict begin /TheNodeB
+10 NewNode InitPnode end end grestore end
+ 236 825 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeA /TheNodeB
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 712 702 a Fs(\\cnode\(0,1\){.25}{A})712
+763 y(\\pnode\(3,0\){B})712 823 y(\\ncline{<-}{A}{B})591 954
+y FA(\\Cnode)p Fz(*[)p Fy(par)p Fz(]\()p Fy(x)t Fz(,)t Fy(y)t
+Fz(\))p FA({)p Fx(name)r FA(})712 1035 y FB(This)g(is)g(like)h
+Fu(\\cnode)p FB(,)f(but)g(the)g(radius)g(is)g(the)g(value)h(of)820
+1137 y FA(radius=)p Fx(dim)571 b Fv(Default:)20 b FA(2pt)712
+1238 y FB(This)11 b(is)g(convenient)h(when)f(you)f(want)h(many)h(circle)g
+(nodes)e(of)h(the)h(same)712 1298 y(radius.)591 1400 y FA(\\circlenode)p
+Fz(*[)p Fy(par)p Fz(])p FA({)p Fx(name)r FA(}{)p Fx(stuf)o(f)6
+b FA(})712 1481 y FB(This)14 b(is)e(a)i(variant)f(of)g Fu(\\pscirclebox)g
+FB(that)g(gives)g(the)h(node)f(the)g(shape)g(of)712 1541 y(the)g(circle.)591
+1643 y FA(\\cnodeput)p Fz(*[)p Fy(par)p Fz(]{)p Fy(angle)q
+Fz(}\()p Fy(x)t Fz(,)t Fy(y)t Fz(\))p FA({)p Fx(name)r FA(}{)p
+Fx(stuf)o(f)6 b FA(})712 1724 y FB(This)19 b(is)f(a)h(variant)g(of)f
+Fu(\\cput)g FB(that)h(gives)f(the)h(node)f(the)h(shape)f(of)g(the)712
+1784 y(circle.)h(That)13 b(is,)e(it)i(is)f(like)820 1886 y
+Fs(\\rput{)p Fr(angle)q Fs(}\()p Fr(x)s Fs(,)p Fr(y)t Fs(\){\\circlenode{)p
+Fr(na)o(me)q Fs(}{)o Fr(stuff)6 b Fs(})591 1988 y FA(\\ovalnode)p
+Fz(*[)p Fy(par)p Fz(])p FA({)p Fx(name)r FA(}{)p Fx(stuf)o(f)g
+FA(})712 2069 y FB(This)11 b(is)f(a)h(variant)g(of)f Fu(\\psovalbox)g
+FB(that)i(gives)e(the)h(node)f(the)h(shape)f(of)h(an)712 2129
+y(ellipse.)19 b(Here)11 b(is)h(an)g(example)h(with)f Fu(\\circlenode)g
+FB(and)g Fu(\\ovalnode)p FB(:)186 2299 y
+ tx@Dict begin gsave STV CP T 28.15504 2 div 7.7818 0.15552 add 2 div
+2 copy 0.15552 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin
+/TheNodeA 11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 28.15504 2 div 7.7818
+0.15552 add 2 div 2 copy 0.15552 sub 4 2 roll Pyth 3.0 add CLW 2 div
+add 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial FB(Circle)33 b(and)451 2299 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 11.19751 def /Y 3.81314 def /w 19.63329 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 19.63329 CLW 2
+div sub 9.41168 CLW 2 div sub 11.19751 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial FB(Oval)591 2299 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 90. def /AngleB 90. def /armA 10.0 def /armB
+10.0 def /AngleB 90. def NCBar } if end gsave 0.8 SLW 0. setgray 0
+setlinecap stroke grestore grestore end
+ 712 2264 a Fs(\\circlenode{A}{Circle})22
+b(and)g(\\ovalnode{B}{Oval})712 2324 y(\\ncbar[angle=90]{A}{B})591
+2483 y FA(\\dianode)p Fz(*[)p Fy(par)p Fz(])p FA({)p Fx(name)r
+FA(}{)p Fx(stuf)o(f)6 b FA(})712 2564 y FB(This)12 b(is)g(like)h
+Fu(\\diabox)p FB(.)591 2828 y Fp(Nodes)1228 b(8)p eop
+%%Page: 9 9
+8 bop 591 50 a FA(\\trinode)p Fz(*[)p Fy(par)p Fz(])p FA({)p
+Fx(name)r FA(}{)p Fx(stuf)o(f)6 b FA(})712 130 y FB(This)12
+b(is)g(like)h Fu(\\tribox)p FB(.)229 270 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeA 14 NewNode
+/X 21.43886 def /Y 3.81314 def /w 24.12546 2 mul def /h 6.65526 2 mul
+def /NodePos { DiaNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 24.12546 2 mul 6.65526 2 mul 0 21.43886 3.81314 /mtrx
+CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul neg /d ED /a
+w h Atan def /h d a sin Div h add def /w d a cos Div w add def } ifelse
+mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div /ArrowA
+{ moveto } def /ArrowB { } def false Line closepath mtrx setmatrix
+ gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial FB(Diamond)414 493 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+88.25082 34.13666 exch 42.42679 3 38.62679 7.7818 2.48833 InitTriNode
+ end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 88.25082 34.13666 exch 3 -90 mul 42.42679 2.64673
+/mtrx CM def translate rotate /h ED 2 div /w ED dup 0 eq { pop } {
+CLW mul /d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 div
+dup cos exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d
+0 d /ArrowA { moveto } def /ArrowB { } def false Line closepath mtrx
+setmatrix gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial FB(T)n(riangle)118 553 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { /AngleA -135. def /AngleB 90. def
+0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 326 a Fs
+(\\rput[tl]\(0,3\){\\dianode{A}{Diamond}})712 386 y
+(\\rput[br]\(4,0\){\\trinode[trimode=L]{B}{T)n(rian)o(gle})o(})712
+446 y(\\nccurve[angleA=-135,angleB=90]{A}{B})591 677 y FA(\\dotnode)p
+Fz(*[)p Fy(par)p Fz(]\()p Fy(x)t Fz(,)t Fy(y)t Fz(\))p FA({)p
+Fx(name)r FA(})712 757 y FB(This)f(is)g(a)h(variant)f(of)g
+Fu(\\psdot)p FB(.)17 b(For)11 b(example:)236 1061 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeA 14 NewNode
+0.0 0.0 /Y ED /X ED /w 3.6 def /h 1.8 def /NodePos { OvalNodePos }
+def end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 2.0 2. CLW mul add
+2 div def /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def /Dot { gsave
+T 2. 1. scale x1 y1 /y ED /x ED x y moveto x neg y L 0 x L fill
+grestore } def 0.0 0.0 Dot end
+
+@endspecial 236 1061 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+85.35823 56.90549 /Y ED /X ED /w 1.8 def /h 1.8 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 2.0 2. CLW mul add
+2 div def <2B> /Symbol 0. [2.2 0.0 0.0 2.2 -0.6039 -0.5863] DS 2 mul
+dup matrix scale matrix concatmatrix exch matrix rotate matrix concatmatrix
+exch findfont exch makefont setfont { moveto 0 show } dup 1 4 -1 roll
+put bind /Dot ED 85.35823 56.90549 Dot end
+
+
+@endspecial 236 1061 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeA /TheNodeB InitNC { NCLine } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 712 893 a Fs(\\dotnode[dotstyle=triangle*,dotscale=2)
+22 b(1]\(0,0\){A})712 954 y(\\dotnode[dotstyle=+]\(3,2\){B})712
+1014 y(\\ncline[nodesep=3pt]{A}{B})591 1175 y FA(\\fnode)p
+Fz(*[)p Fy(par)p Fz(]\()p Fy(x)t Fz(,)t Fy(y)t Fz(\))p FA({)p
+Fx(name)r FA(})712 1255 y FB(The)15 b Fs(f)g FB(stands)f(for)g
+(\252frame\272.)26 b(This)15 b(is)f(like,)i(but)e(easier)h(than,)h(putting)f
+(a)712 1315 y Fu(\\psframe)d FB(in)g(an)g Fu(\\rnode)p FB(.)236
+1618 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeA 14 NewNode
+0.0 0.0 /Y ED /X ED /d .5 .5 sub CLW mul neg def /r 5.0 d add def /l
+r neg def /u 5.0 d add def /d u neg def /NodePos { GetRnodePos } def
+end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /x2 5.0 CLW .5 mul sub
+def /y2 5.0 CLW .5 mul sub def 0.0 0.0 2 copy y2 sub /y1 ED x2 sub
+/x1 ED y2 add /y2 ED x2 add /x2 ED 0. true 1 index 0 eq { pop pop Rect
+} { OvalFrame } ifelse gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 236 1618 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+56.90549 56.90549 /Y ED /X ED /d .5 .5 sub CLW mul neg def /r 14.22636
+d add def /l r neg def /u 2.5 d add def /d u neg def /NodePos { GetRnodePos
+} def end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray /x2 14.22636 CLW .5
+mul sub def /y2 2.5 CLW .5 mul sub def 56.90549 56.90549 2 copy y2
+sub /y1 ED x2 sub /x1 ED y2 add /y2 ED x2 add /x2 ED 0. true 1 index
+0 eq { pop pop Rect } { OvalFrame } ifelse gsave 0. setgray fill grestore
+end
+
+@endspecial 236 1618 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeA /TheNodeB InitNC { NCLine } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 712 1451 a Fs(\\fnode{A})712
+1511 y(\\fnode*[framesize=1)23 b(5pt]\(2,2\){B})712 1571 y
+(\\ncline[nodesep=3pt]{A}{B})712 1732 y FB(There)13 b(are)f(two)g(dif)o
+(ferences)h(between)f Fu(\\fnode)f FB(and)h Fu(\\psframe)p
+FB(:)772 1832 y Fj(\267)26 b FB(There)12 b(is)g(a)g(single)g(\(optional\))h
+(coordinate)g(ar)o(gument,)f(that)h(gives)820 1892 y(the)f
+Ft(center)h FB(of)e(the)i(frame.)772 1970 y Fj(\267)26 b FB(The)12
+b(width)g(and)g(height)h(of)e(the)i(frame)f(are)h(set)f(by)f(the)911
+2049 y FA(framesize=)p Fx(dim1)i(`dim2')191 b Fv(Default:)20
+b FA(10pt)820 2128 y FB(parameter)m(.)f(If)11 b(you)h(omit)h
+Fr(dim2)s FB(,)e(you)g(get)i(a)f(square)g(frame.)366 2322 y
+FC(7)70 b(Node)21 b(connections)591 2442 y FB(All)11 b(the)g(node)h
+(connection)g(commands)f(begin)g(with)h Fs(nc)p FB(,)f(and)g(they)h(all)g
+(have)f(the)591 2503 y(same)h(syntax:)839 2484 y Fi(1)p 591
+2545 544 2 v 646 2575 a Fh(1)662 2590 y Fg(The)h(node)f(connections)e(can)i
+(be)g(used)g(with)g Ff(\\pscustom)p Fg(.)22 b(The)13 b(beginning)f(of)g(the)g
+(node)591 2640 y(connection)c(is)i(attached)f(to)h(the)f(current)h(point)g
+(by)g(a)f(straight)h(line,)g(as)f(with)h Ff(\\psarc)p Fg(.)1790
+2625 y Fh(2)591 2828 y Fp(Node)f(connections)1037 b(9)p eop
+%%Page: 10 10
+9 bop 712 50 a Fs(\\)p Fr(nodeconnection)q Fs([)p Fr(par)t
+Fs(]{)p Fr(arrows)q Fs(}{)p Fr(nod)o(eA)p Fs(}{)p Fr(n)o(ode)o(B)r
+Fs(})591 158 y FB(A)14 b(line)h(of)g(some)g(sort)g(is)f(drawn)h(from)f
+Fr(nodeA)g FB(to)h Fr(nodeB)r FB(.)f(Some)h(of)g(the)g(node)591
+218 y(connection)10 b(commands)h(are)f(a)g(little)i(confusing,)e(but)g(with)g
+(a)g(little)i(experimen-)591 279 y(tation)k(you)g(will)g(\256gure)f(them)i
+(out,)g(and)f(you)f(will)h(be)g(amazed)h(at)g(the)f(things)591
+339 y(you)10 b(can)g(do.)17 b(When)10 b(we)h(refer)f(to)h(the)g
+Fs(A)f FB(and)h Fs(B)f FB(nodes)g(below)m(,)h(we)f(are)h(referring)591
+399 y(only)f(to)h(the)g(order)g(in)g(which)g(the)g(names)g(are)g(given)g(as)g
+(ar)o(guments)g(to)g(the)g(node)591 459 y(connection)h(macros.)962
+441 y Fi(3)591 545 y FB(The)h(node)g(connections)g(use)g(many)g(of)g(the)g
+(usual)g(graphics)g(parameters,)h(plus)591 605 y(a)k(few)g(special)h(ones.)37
+b(Let')m(s)19 b(start)f(with)h(one)f(that)h(applies)g(to)g(all)g(the)g(node)
+591 666 y(connections:)712 774 y FA(nodesep=)p Fx(dim)625 b
+Fv(Default:)20 b FA(0pt)591 882 y Fu(nodesep)10 b FB(is)h(the)h(border)g
+(around)f(the)h(nodes)f(that)h(is)f(added)h(for)f(the)h(purpose)f(of)591
+943 y(determining)i(where)e(to)i(connect)f(the)h(lines.)591
+1029 y(For)j(this)i(and)f(other)h(node)g(connection)g(parameters,)h(you)f
+(can)f(set)h(dif)o(ferent)591 1089 y(values)i(for)f(the)h(two)g(ends)f(of)h
+(the)g(node)g(connection.)41 b(Set)20 b(the)h(parameter)591
+1149 y Fu(nodesepA)11 b FB(for)h(the)g(\256rst)f(node,)h(and)g(set)g
+Fu(nodesepB)g FB(for)g(the)g(second)g(node.)591 1235 y(The)i(\256rst)f(two)g
+(node)h(connections)h(draw)e(a)h(line)g(or)g(arc)g(directly)h(between)f(the)
+591 1295 y(two)d(nodes:)591 1404 y FA(\\ncline)p Fz(*[)p Fy(par)p
+Fz(]{)p Fy(arrows)q Fz(})p FA({)p Fx(nodeA)p FA(}{)p Fx(nodeB)r
+FA(})712 1481 y FB(This)h(draws)g(a)g(straight)g(line)h(between)f(the)h
+(nodes.)j(For)c(example:)118 1889 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 28.46611 14.23305 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ FB(Idea)g(1)472 1568 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 28.46611 14.23305 3.81314
+ tx@NodeDict begin /TheNodeB 16 NewNode InitRnode end end grestore
+end
+
+FB(Idea)h(2)118 1890 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict
+begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB InitNC { NCLine } if
+end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 712 1663 a Fs(\\rput[bl]\(0,0\){\\rnode{A}{Idea)20
+b(1}})712 1723 y(\\rput[tr]\(4,3\){\\rnode{B}{Idea)g(2}})712
+1784 y(\\ncline[nodesep=3pt]{<->}{A}{B})591 1990 y FA(\\ncarc)p
+Fz(*[)p Fy(par)p Fz(]{)p Fy(arrows)q Fz(})p FA({)p Fx(nodeA)p
+FA(}{)p Fx(nodeB)r FA(})712 2068 y FB(This)12 b(connects)h(the)f(two)g(nodes)
+f(with)h(an)g(arc.)160 2424 y
+ tx@Dict begin gsave STV CP T 8.31749 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeA
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+FB(X)514 2188 y
+ tx@Dict begin gsave STV CP T 8.31749 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeB
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial FB(Y)177
+2408 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB
+InitNC { yB yA sub xB xA sub Atan dup 8. add /AngleA ED 8. sub 180
+add /AngleB ED 0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 177 2408 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeB /TheNodeA
+InitNC { yB yA sub xB xA sub Atan dup 8. add /AngleA ED 8. sub 180
+add /AngleB ED 0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 712 2180 a Fs(\\cnodeput\(0,0\){A}{X})712
+2240 y(\\cnodeput\(3,2\){B}{Y})712 2300 y(\\psset{nodesep=3pt})712
+2361 y(\\ncarc{->}{A}{B})712 2421 y(\\ncarc{->}{B}{A})p 591
+2495 544 2 v 646 2525 a Fh(3)662 2540 y Fg(When)h(a)h(node)f(name)g(cannot)g
+(be)h(found)f(on)h(the)f(same)g(page)g(as)g(the)h(node)f(connection)591
+2590 y(command,)6 b(you)h(get)g(either)g(no)g(node)f(conne)o(ction)h(or)f(a)h
+(no)o(nsens)o(e)f(node)g(conne)o(ction.)k(However)n(,)591 2640
+y(T)608 2649 y(E)628 2640 y(X)f(will)h(not)g(report)g(any)g(errors.)591
+2828 y Fp(Node)f(connections)1016 b(10)p eop
+%%Page: 11 11
+10 bop 712 50 a FB(The)12 b(angle)f(between)h(the)f(arc)h(and)f(the)g(line)h
+(between)f(the)h(two)e(nodes)h(is)1931 32 y Fi(4)820 152 y
+FA(arcangle=)p Fx(angle)524 b Fv(Default:)20 b FA(8)591 282
+y Fu(\\ncline)13 b FB(and)h Fu(\\ncarc)e FB(both)i(determine)g(the)g(angle)g
+(at)g(which)f(the)h(node)f(connec-)591 342 y(tions)d(join)i(by)e(the)i
+(relative)g(position)f(of)g(the)g(two)g(nodes.)16 b(W)n(ith)c(the)f(next)g
+(group)591 403 y(of)i(node)h(connections,)g(you)g(specify)f(one)h(or)f(both)h
+(of)g(the)g(angles)g(in)f(absolute)591 463 y(terms,)f(by)f(setting)i(the)712
+594 y FA(angle=)p Fx(angle)705 b Fv(Default:)20 b FA(0)591
+724 y FB(\(and)11 b Fu(angleA)i FB(and)f Fu(angleB)p FB(\))g(parameter)m(.)
+591 814 y(Y)-5 b(ou)11 b(also)g(specify)h(the)g(length)g(of)f(the)h(line)h
+(segment)f(where)f(the)h(node)f(connec-)591 874 y(tion)h(joins)g(at)g(one)g
+(or)g(both)g(of)g(the)g(ends)g(\(the)g(\252arms\272\))h(by)e(setting)i(the)
+712 1005 y FA(arm=)p Fx(dim)709 b Fv(Default:)20 b FA(10pt)591
+1135 y FB(\(and)11 b Fu(armA)i FB(and)f Fu(armB)p FB(\))g(parameter)m(.)591
+1225 y(These)i(node)f(connections)h(all)h(consist)f(of)f(several)h(line)h
+(segments,)f(including)591 1285 y(the)e(arms.)17 b(The)12 b(value)h(of)f
+Fu(linearc)f FB(is)h(used)g(for)g(rounding)f(the)i(corners.)591
+1374 y(Here)e(they)i(are,)f(starting)g(with)g(the)h(simplest)f(one:)591
+1517 y FA(\\ncdiag)p Fz(*[)p Fy(par)p Fz(]{)p Fy(arrows)q Fz(})p
+FA({)p Fx(nodeA)p FA(}{)p Fx(nodeB)r FA(})712 1598 y FB(An)18
+b(arm)g(is)f(drawn)h(at)g(each)g(node,)h(joining)g(at)f(angle)g
+Fu(angleA)g FB(or)g Fu(an-)712 1658 y(gleB)p FB(,)13 b(and)g(with)f(a)h
+(length)g(of)f Fu(armA)h FB(or)f Fu(armB)p FB(.)h(Then)f(the)h(two)f(arms)g
+(are)712 1719 y(connected)i(by)f(a)g(straight)g(line,)h(so)e(that)i(the)f
+(whole)g(line)g(has)g(three)g(line)712 1779 y(segments.)18
+b(For)11 b(example:)118 1904 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial FB(Node)g(A)397 2187 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial FB(Node)g(B)118 2210 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /r 5.69046 def /Lineto
+{ Arcto } def false pop end /AngleA -90. def /AngleB 90. def /armA
+14.22636 def /armB 14.22636 def NCDiag } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 712 1983 a Fs
+(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)20 b(A}}})712
+2043 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712 2103
+y(\\ncdiag[angleA=-90,)j(angleB=90,)f(arm=.5,)h(linearc=.2]{A}{B})p
+591 2244 544 2 v 646 2274 a Fh(4)662 2290 y Fg(Rather)13 b(than)g(using)g(a)g
+(true)g(arc,)h Ff(\\ncarc)g Fg(actually)e(draws)h(a)g(bezier)f(curve.)24
+b(When)13 b(con-)591 2339 y(necting)j(two)i(circular)f(nodes)g(using)g(the)g
+(default)g(parameter)g(values,)h(the)g(curve)f(will)g(be)591
+2389 y(indistinguishable)10 b(from)i(a)g(true)g(arc.)20 b(However)n(,)12
+b Ff(\\ncarc)g Fg(is)g(more)f(\257exible)h(than)g(an)f(arc,)h(and)591
+2439 y(works)g(right)h(connecting)f(nodes)h(of)g(dif)o(ferent)g(shapes)f(and)
+g(sizes.)23 b(Y)l(ou)12 b(can)h(set)f Ff(arcangleA)591 2489
+y Fg(and)c Ff(arcangleB)g Fg(separately)m(,)f(and)i(you)f(can)g(control)g
+(the)g(curvature)g(with)h(the)f Ff(ncurv)g Fg(parameter)n(,)591
+2539 y(which)h(is)g(described)g(on)h(page)f Fe(??)p Fg(.)591
+2828 y Fp(Node)g(connections)1019 b(1)m(1)p eop
+%%Page: 12 12
+11 bop 712 50 a FB(Y)-5 b(ou)10 b(can)f(also)h(set)g(one)f(or)h(both)f(of)g
+(the)h(arms)g(to)g(zero)f(length.)17 b(For)9 b(exam-)712 110
+y(ple,)14 b(if)g(you)f(set)g Fu(arm=0)p FB(,)g(the)h(nodes)f(are)h(connected)
+g(by)f(a)g(straight)h(line,)712 170 y(but)8 b(you)g(get)g(to)g(determine)g
+(where)g(the)g(line)g(connects)g(\(whereas)g(the)g(con-)712
+230 y(nection)15 b(point)g(is)f(determined)i(automatically)g(by)e
+Fu(\\ncline)p FB(\).)25 b(Compare)712 291 y(this)13 b(use)e(of)h
+Fu(\\ncdiag)g FB(with)g Fu(\\ncline)g FB(in)g(the)h(following)f(example:)463
+560 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeR 14 NewNode
+/X 11.20326 def /Y 3.84193 def /w 19.64143 def /h 9.37096 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 19.64143 CLW 2
+div sub 9.37096 CLW 2 div sub 11.20326 3.84193 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial FB(Root)202 443
+y
+ tx@Dict begin gsave STV CP T 16.63498 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeA
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 16.63498 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial FB(XX)202 679 y
+ tx@Dict begin gsave STV CP T 16.63498 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeB
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 16.63498 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial FB(YY)118 663 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeA /TheNodeR
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+0. def /AngleB 180. def /armA 0.0 def /armB 0.0 def NCDiag } if end
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 118 663 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeB /TheNodeR
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 712 435
+a Fs(\\rput[r]\(4,1\){\\ovalnode{R}{Root}})712 495 y
+(\\cnodeput\(1,2\){A}{XX})712 555 y(\\cnodeput\(1,0\){B}{YY})712
+615 y(\\ncdiag[angleB=180,)22 b(arm=0]{<-}{A}{R})712 675 y
+(\\ncline{<-}{B}{R})712 844 y FB(\(Note)12 b(that)h(in)f(this)g(example,)h
+(the)g(default)f(value)h Fu(angleA=0)f FB(is)f(used.\))591
+946 y FA(\\ncdiagg)p Fz(*[)p Fy(par)p Fz(]{)p Fy(arrows)q Fz(})p
+FA({)p Fx(nodeA)p FA(}{)p Fx(nodeB)r FA(})712 1027 y Fu(\\ncdiagg)18
+b FB(is)g(similar)h(to)f Fu(\\ncdiag)p FB(,)i(but)e(only)g(the)g(arm)h(for)e
+(node)h(A)g(is)712 1087 y(drawn.)f(The)c(end)f(of)g(this)g(arm)g(is)g(then)h
+(connected)g(directly)g(to)f(node)g(B.)712 1147 y(Compare)h
+Fu(\\ncdiagg)f FB(with)g Fu(\\ncdiag)g FB(when)f Fu(armB=0)p
+FB(:)177 1364 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 12.0 .5 CLW
+mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 177
+1364 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 12.0 tx@NodeDict begin /TheNodea
+11 NewNode InitCnode end end grestore end
+ 531 1262 a
+ tx@Dict begin gsave STV CP T 7.7818 0.0 8.31749 4.15874 3.8909 tx@NodeDict
+begin /TheNodeb 16 NewNode InitRnode end end grestore end
+ FB(H)531 1498 y
+ tx@Dict begin gsave STV CP T 7.7818 0.0 7.03876 3.51938 3.8909 tx@NodeDict
+begin /TheNodec 16 NewNode InitRnode end end grestore end
+ FB(T)177 1364 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+0.0 /TheNodeb /TheNodea InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 180. def /AngleB 0. def /armA 42.67911 def
+/armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 177 1364
+a
+ tx@Dict begin tx@NodeDict begin /t 1.2 def LPut end PutBegin end
+ 177 1364 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 37.1955 7.21277
+2.15988 NAngle 90 sub /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 100 1374 a Fs(\\ncdiagg)177 1364 y
+ tx@Dict begin PutEnd end
+ 177 1364 a
+ tx@Dict begin PutEnd end
+
+177 1364 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+0.0 /TheNodec /TheNodea InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 180. def /AngleB 0. def /armA 42.67911 def
+/armB 0.0 def NCDiag } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 177 1364 a
+ tx@Dict begin tx@NodeDict begin /t 1.2 def LPut end PutBegin end
+ 177 1364 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 31.72441 7.21277
+2.15988 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 111 1374 a Fs(\\ncdiag)177
+1364 y
+ tx@Dict begin PutEnd end
+ 177 1364 a
+ tx@Dict begin PutEnd end
+ 712 1254 a Fs(\\cnode\(0,0\){12pt}{a})712
+1314 y(\\rput[l]\(3,1\){\\rnode{b}{H}})712 1374 y
+(\\rput[l]\(3,-1\){\\rnode{c}{T}})712 1434 y(\\ncdiagg[angleA=180,)21
+b(armA=1.5,)i(nodesepA=3pt]{b}{a})712 1495 y(\\ncdiag[angleA=180,)f
+(armA=1.5,)g(armB=0,)g(nodesepA=3pt]{c}{a})712 1626 y FB(Y)-5
+b(ou)10 b(can)h(use)f Fu(\\ncdiagg)g FB(with)g Fu(armA=0)g
+FB(if)h(you)f(want)g(a)g(straight)h(line)g(that)712 1686 y(joins)f(to)h(node)
+e(A)h(at)g(the)h(angle)f(you)g(specify)m(,)g(and)g(to)g(node)g(B)g(at)g(an)g
+(angle)712 1746 y(that)j(is)f(determined)h(automatically)m(.)591
+1848 y FA(\\ncbar)p Fz(*[)p Fy(par)p Fz(]{)p Fy(arrows)q Fz(})p
+FA({)p Fx(nodeA)p FA(}{)p Fx(nodeB)r FA(})712 1929 y FB(This)24
+b(node)g(connection)h(consists)e(of)g(a)h(line)h(with)e(arms)h(dropping)712
+1989 y(\252down\272,)17 b(at)e(right)h(angles,)h(to)e(meet)i(two)e(nodes)g
+(at)h(an)g(angle)g Fu(angleA)p FB(.)712 2049 y(Each)11 b(arm)g(is)f(at)h
+(least)g(of)f(length)h Fu(armA)g FB(or)f Fu(armB)p FB(,)h(but)f(one)g(may)h
+(be)g(need)712 2110 y(to)i(be)f(longer)m(.)156 2282 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 38.39641 19.1982 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ FB(Connect)h(some)440
+2282 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 28.15506 14.07753 3.81314
+ tx@NodeDict begin /TheNodeB 16 NewNode InitRnode end end grestore
+end
+ FB(words)o(!)591 2282 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+{false} true /DS 2.0 2. CLW mul add 2 div def EndDot EndArrow } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+-90. def /AngleB -90. def /armA 10.0 def /armB 10.0 def /AngleB -90.
+def NCBar } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 591 2282 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 70. def /AngleB 70. def /armA 10.0 def /armB
+10.0 def /AngleB 70. def NCBar } if end gsave 0.8 SLW 0. setgray 0
+setlinecap stroke grestore grestore end
+ 712 2216 a Fs(\\rnode{A}{Connect})
+21 b(some)i(\\rnode{B}{words}!)712 2276 y(\\ncbar[nodesep=3pt,angle=-90]{<-)o
+(**}{)o(A}{B})712 2337 y(\\ncbar[nodesep=3pt,angle=70]{A}{B})712
+2468 y FB(Generally)m(,)13 b(the)f(whole)g(line)h(has)e(three)i(straight)f
+(segments.)591 2828 y Fp(Node)d(connections)1016 b(12)p eop
+%%Page: 13 13
+12 bop 591 50 a FA(\\ncangle)p Fz(*[)p Fy(par)p Fz(]{)p Fy(arrows)q
+Fz(})p FA({)p Fx(nodeA)p FA(}{)p Fx(nodeB)r FA(})712 131 y
+FB(Now)16 b(we)f(get)i(to)f(a)g(more)h(complicated)h(node)e(connection.)30
+b Fu(\\ncangle)712 191 y FB(typically)10 b(draws)d(three)i(line)g(segments,)f
+(like)h Fu(\\ncdiag)p FB(.)16 b(However)n(,)8 b(rather)712
+251 y(than)14 b(\256xing)e(the)i(length)f(of)g(arm)g(A,)f(we)h(adjust)g(arm)g
+(A)g(so)f(that)i(the)f(line)712 311 y(joining)g(the)f(two)g(arms)g(meets)g
+(arm)h(A)e(at)i(a)f(right)g(angle.)18 b(For)11 b(example:)118
+436 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial FB(Node)g(A)397
+719 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial FB(Node)g(B)118
+742 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA -90. def /AngleB 90. def /armA 10.0 def /armB
+28.45274 def NCAngle } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 516 a Fs(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)20
+b(A}}})712 576 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712
+636 y(\\ncangle[angleA=-90,angleB=90,armB=1cm]{A}{B})712 865
+y FB(Now)11 b(watch)i(what)e(happens)h(when)g(we)f(change)i
+Fu(angleA)p FB(:)118 990 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+FB(Node)e(A)118 1296 y
+ tx@Dict begin { tx@NodeDict begin tx@NodeDict /TheNodeA known { 0.0
+-70. 0.0 /TheNodeA load GetEdge } { CP } ifelse end } PutCoor PutBegin
+ end
+ 118 1296 a
+ tx@Dict begin { 0.0 0.0 0.0 0.0 -70. /a ED add 2 div /h ED 2 div
+/w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED
+{ pop } { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h
+mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs
+} ifelse /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div
+s mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add
+} { q { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch
+w1 add exch } PutCoor PutBegin end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 0.0 /y ED /x ED /r 11.38092 def /c 57.2957 r Div
+def /angleA 0. 0.0 c mul 2 div sub def /angleB -70. 0.0 c mul 2 div
+add def x y r angleA angleB arcn gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 118 1296 a
+ tx@Dict begin { 11.38092 30.63216 7.21277 2.15988 -35. /a ED add
+2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2
+copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul
+def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs
+h sub dup s mul abs } ifelse /z ED abs /y ED /x ED q { x s div c mul
+abs y gt } { x c div s mul abs y gt } ifelse { x x mul y y mul sub
+z z mul add sqrt z add } { q { x s div } { x c div } ifelse abs } ifelse
+a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 55 1306 a Fs(angleA)118 1296 y
+ tx@Dict begin PutEnd end
+ 118
+1296 a
+ tx@Dict begin PutEnd end
+ 118 1296 a
+ tx@Dict begin PutEnd end
+ 397 1273 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial
+FB(Node)g(B)118 1296 y
+ tx@Dict begin gsave STV newpath 1.2 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA -70. def /AngleB 90. def /armA 10.0 def /armB
+28.45274 def NCAngle } if end gsave 1.2 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 118 1296 a
+ tx@Dict begin { tx@NodeDict begin tx@NodeDict /TheNodeB known { 0.0
+90. 0.0 /TheNodeB load GetEdge } { CP } ifelse end } PutCoor PutBegin
+ end
+ 118 1296 a
+ tx@Dict begin { 0.0 0.0 0.0 0.0 90. /a ED add 2 div /h ED 2 div /w
+ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+/z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s mul
+abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } {
+q { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1
+add exch } PutCoor PutBegin end
+ 126 1270 a
+ tx@Dict begin CP CP translate 1.54375 2.79187 scale NET end
+ FB(})126
+1270 y
+ tx@Dict begin CP CP translate 1 1.54375 div 1 2.79187 div scale NET
+ end
+ 166 1250 a Fs(armB)118 1296 y
+ tx@Dict begin PutEnd end
+ 118 1296 a
+ tx@Dict begin PutEnd end
+ 118 1296 a
+ tx@Dict begin tx@NodeDict begin /t 1. def LPut end PutBegin end
+
+118 1296 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 0.0 0.0 9.95863
+9.95863 0 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 118 1296
+a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 1296 a
+ tx@Dict begin PutEnd end
+ 712 1069 a Fs(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)20
+b(A}}})712 1129 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712
+1189 y(\\ncangle[angleA=-70,angleB=90,armB=1cm,linewidth=1.2pt]{A}{B})712
+1418 y Fu(\\ncangle)14 b FB(is)g(also)g(a)g(good)g(way)f(to)i(join)f(nodes)g
+(by)f(a)h(right)h(angle,)g(with)712 1479 y(just)e(two)e(line)i(segments,)f
+(as)g(in)g(this)g(example:)118 1603 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial FB(Node)f(A)397 1768 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial FB(Node)g(B)118 1792 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /r 14.22636 def /Lineto
+{ Arcto } def false pop end /AngleA 0. def /AngleB 90. def /armA 10.0
+def /armB 0.0 def NCAngle } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 1624 a Fs
+(\\rput[tl]\(0,2\){\\rnode{A}{\\psframebox{Node)20 b(A}}})712
+1684 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712 1744
+y(\\ncangle[angleB=90,)j(armB=0,)g(linearc=.5]{A}{B})591 1914
+y FA(\\ncangles)p Fz(*[)p Fy(par)p Fz(]{)p Fy(arrows)q Fz(})p
+FA({)p Fx(nodeA)p FA(}{)p Fx(nodeB)r FA(})712 1995 y Fu(\\ncangles)13
+b FB(is)f(similar)i(to)f Fu(\\ncangle)p FB(,)f(but)h(the)g(length)h(of)e(arm)
+h(A)g(is)f(\256xed)712 2055 y(by)f(the)g Fu(armA)g FB(parameter)m(.)18
+b(Arm)10 b(A)g(is)g(connected)i(to)e(arm)h(B)g(by)f(two)g(line)712
+2115 y(segments)17 b(that)g(meet)h(arm)f(A)f(and)g(each)i(other)e(at)h(right)
+g(angles.)31 b(The)712 2176 y(angle)14 b(at)f(which)f(they)h(join)g(arm)g(B,)
+g(and)f(the)h(length)h(of)e(the)h(connecting)712 2236 y(segments,)j(depends)f
+(on)g(the)g(positions)g(of)g(the)g(two)g(arms.)26 b Fu(\\ncangles)712
+2296 y FB(generally)13 b(draws)f(a)g(total)h(of)e(four)h(line)h(segments.)
+1576 2278 y Fi(5)1611 2296 y FB(For)e(example:)p 591 2340 544
+2 v 646 2371 a Fh(5)662 2386 y Fg(Hence)e(there)h(is)f(one)h(more)g(angle)f
+(than)g Ff(\\ncangle)p Fg(,)h(and)g(hence)f(the)h Fd(s)f Fg(in)h
+Ff(\\ncangles)p Fg(.)591 2828 y Fp(Node)f(connections)1016
+b(13)p eop
+%%Page: 14 14
+13 bop 118 48 a
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+FB(Node)11 b(A)397 449 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial
+FB(Node)g(B)118 472 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /r 4.26773 def /Lineto
+{ Arcto } def false pop end /AngleA -90. def /AngleB 0. def /armA 28.45274
+def /armB 14.22636 def NCAngles } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 712 187 a Fs
+(\\rput[tl]\(0,4\){\\rnode{A}{\\psframebox{Node)20 b(A}}})712
+247 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712 307 y
+(\\ncangles[angleA=-90,)j(armA=1cm,)g(armB=.5cm,)h(linearc=.15]{A}{B})712
+595 y FB(Let')m(s)12 b(see)g(what)f(happens)g(to)g(the)h(previous)f(example)h
+(when)f(we)g(change)712 655 y Fu(angleB)p FB(:)118 779 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16
+w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial FB(Node)g(A)397 1180
+y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial FB(Node)g(B)118 1203
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /r 4.26773 def /Lineto
+{ Arcto } def false pop end /AngleA -90. def /AngleB 135. def /armA
+28.45274 def /armB 14.22636 def NCAngles } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 118 1203 a
+ tx@Dict begin { tx@NodeDict begin tx@NodeDict /TheNodeA known { 0.0
+-90. 0.0 /TheNodeA load GetEdge } { CP } ifelse end } PutCoor PutBegin
+ end
+ 118 1203 a
+ tx@Dict begin { 0.0 0.0 0.0 0.0 -90. /a ED add 2 div /h ED 2 div
+/w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED
+{ pop } { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h
+mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs
+} ifelse /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div
+s mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add
+} { q { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch
+w1 add exch } PutCoor PutBegin end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 0.0 /y ED /x ED /r 11.38092 def /c 57.2957 r Div
+def /angleA 0. 0.0 c mul 2 div sub def /angleB -90. 0.0 c mul 2 div
+add def x y r angleA angleB arcn gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+118 1203 a
+ tx@Dict begin { 11.38092 30.63216 7.21277 2.15988 -45. /a ED add
+2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2
+copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul
+def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs
+h sub dup s mul abs } ifelse /z ED abs /y ED /x ED q { x s div c mul
+abs y gt } { x c div s mul abs y gt } ifelse { x x mul y y mul sub
+z z mul add sqrt z add } { q { x s div } { x c div } ifelse abs } ifelse
+a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 55 1213 a Fs(angleA)118 1203 y
+ tx@Dict begin PutEnd end
+ -25 1274 a Fs(armA)77
+1293 y
+ tx@Dict begin CP CP translate 1.44075 2.79187 scale NET end
+ FB({)77 1293 y
+ tx@Dict begin CP CP translate 1 1.44075 div 1 2.79187 div scale NET
+ end
+ 118 1203 a
+ tx@Dict begin PutEnd end
+ 118 1203 a
+ tx@Dict begin PutEnd end
+ 118 1203 a
+ tx@Dict begin { tx@NodeDict begin tx@NodeDict /TheNodeB known { 0.0
+135. 0.0 /TheNodeB load GetEdge } { CP } ifelse end } PutCoor PutBegin
+ end
+ 118
+1203 a
+ tx@Dict begin { 0.0 0.0 0.0 0.0 135. /a ED add 2 div /h ED 2 div
+/w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED
+{ pop } { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h
+mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs
+} ifelse /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div
+s mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add
+} { q { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch
+w1 add exch } PutCoor PutBegin end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 0.0 /y ED /x ED /r 11.38092 def /c 57.2957 r Div
+def /angleA 0. 0.0 c mul 2 div add def /angleB 133. 0.0 c mul 2 div
+sub def x y r angleA angleB arc gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 118 1203 a
+ tx@Dict begin { 11.38092 30.63216 7.21277 2.15988 50.5 /a ED add
+2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2
+copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul
+def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs
+h sub dup s mul abs } ifelse /z ED abs /y ED /x ED q { x s div c mul
+abs y gt } { x c div s mul abs y gt } ifelse { x x mul y y mul sub
+z z mul add sqrt z add } { q { x s div } { x c div } ifelse abs } ifelse
+a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 55
+1213 a Fs(angleB)118 1203 y
+ tx@Dict begin PutEnd end
+ 118 1203 a
+ tx@Dict begin PutEnd end
+ 118 1203 a
+ tx@Dict begin PutEnd end
+ 118 1203
+a
+ tx@Dict begin tx@NodeDict begin /t 2. def LPut end PutBegin end
+ 118 1203 a
+ tx@Dict begin NAngle 90 add tx@Dict /TMatrix known not { /TMatrix
+{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED
+a Rot /RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ -9.95863 0.0 -9.95863 -9.95863 0.0 -9.95863 /Lineto
+/lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 118 1203
+a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 1203 a
+ tx@Dict begin PutEnd end
+ 118 1203 a
+ tx@Dict begin tx@NodeDict begin /t 3.5 def LPut end PutBegin end
+ -74 1217 a
+ tx@Dict begin gsave STV CP T 7.21277 0.23123 23.50795 11.75397 3.49077
+ tx@NodeDict begin /TheNodearm 16 NewNode InitRnode end end grestore
+end
+ Fs(armB)118 1203 y
+ tx@Dict begin gsave STV CP T 0.0 0.0 tx@NodeDict begin /TheNodebrak
+10 NewNode InitPnode end end grestore end
+ 118 1203
+a
+ tx@Dict begin PutEnd end
+ 118 1203 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodearm
+/TheNodebrak InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 887 a Fs(\\rput[tl]\(0,4\){\\rnode{A}{\\psframebox{Node)20
+b(A}}})712 947 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712
+1007 y(\\ncangles[angleA=-90,)j(angleB=135,)f(armA=1cm,)i(armB=.5cm,)781
+1068 y(linearc=.15]{A}{B})591 1325 y FA(\\ncloop)p Fz(*[)p
+Fy(par)p Fz(]{)p Fy(arrows)q Fz(})p FA({)p Fx(nodeA)p FA(}{)p
+Fx(nodeB)r FA(})712 1406 y Fu(\\ncloop)12 b FB(is)g(also)f(in)h(the)g(same)g
+(family)g(as)g Fu(\\ncangle)f FB(and)h Fu(\\ncangles)p FB(,)f(but)712
+1467 y(now)18 b(typically)h(5)e(line)i(segments)e(are)h(drawn.)34
+b(Hence,)20 b Fu(\\ncloop)d FB(can)712 1527 y(reach)f(around)e(to)h(opposite)
+g(sides)f(of)h(the)g(nodes.)25 b(The)15 b(lengths)g(of)f(the)712
+1587 y(arms)19 b(are)f(\256xed)g(by)g Fu(armA)g FB(and)h Fu(armB)p
+FB(.)f(Starting)h(at)f(arm)h(A,)f Fu(\\ncloop)712 1647 y FB(makes)13
+b(a)f(90)g(degree)g(turn)g(to)g(the)h(left,)f(drawing)g(a)g(segment)g(of)g
+(length)820 1749 y FA(loopsize=)p Fx(dim)497 b Fv(Default:)20
+b FA(1cm)712 1851 y FB(This)13 b(segment)h(connects)f(to)g(arm)g(B)g(the)h
+(way)e(arm)i(A)e(connects)h(to)g(arm)712 1911 y(B)f(with)g
+Fu(\\ncline)p FB(;)h(that)g(is,)f(two)f(more)i(segments)f(are)g(drawn,)g
+(which)f(join)712 1971 y(the)h(\256rst)e(segment)h(and)g(each)g(other)h(at)f
+(right)g(angles,)g(and)g(then)g(join)g(arm)712 2031 y(B.)h(For)g(example:)215
+2226 y
+ tx@Dict begin gsave STV CP T 19.93428 8.95914 73.28362 36.6418 5.48756
+ tx@NodeDict begin /TheNodea 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 8.95914
+neg 69.48361 19.93428 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial Fn(A)24
+b(loop)531 2226 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodea /TheNodea
+InitNC { tx@Dict begin /r 5.69046 def /Lineto { Arcto } def false pop
+end /AngleA 0. def /AngleB 180. def /armA 14.22636 def /armB 14.22636
+def /loopsize 28.45274 def NCLoop } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 531 2226 a
+ tx@Dict begin tx@NodeDict begin /t 3.5 def LPut end PutBegin end
+ 531 2226 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar 0 CLW 2 div T newpath false 0.4 1.4 1.5 2. Arrow EndArrow
+ moveto } def /ArrowB { BeginArrow 2.0 5. Tbar 0 CLW 2 div T newpath
+false 0.4 1.4 1.5 2. Arrow EndArrow } def [ -14.22636 -5.69046 14.22636
+-5.69046 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 531 2226 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 531 2226 a
+ tx@Dict begin PutEnd end
+ 531 2226 a
+ tx@Dict begin tx@NodeDict begin /t 3.5 def LPut end PutBegin end
+ 531 2226 a
+ tx@Dict begin NAngle 180 add tx@Dict /TMatrix known not { /TMatrix
+{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED
+a Rot /RAngle [ RAngle dup a add ] cvx def end
+ 531
+2226 a
+ tx@Dict begin { 9.95863 tx@Dict /NCLW known { NCLW add } if 36.09341
+7.21277 2.15988 NAngle 90 sub NAngle 180 add sub /a ED add 2 div
+/h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt
+dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul def /h1
+s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup
+s mul abs } ifelse exch pop add a PtoC h1 add exch w1 add exch } PutCoor
+PutBegin end
+ 456 2236 a Fs(loopsize)531 2226 y
+ tx@Dict begin PutEnd end
+ 531 2226 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 531 2226
+a
+ tx@Dict begin PutEnd end
+ 712 2166 a Fs(\\rnode{a}{\\psframebox{\\Huge)c(A)j(loop}})712
+2226 y(\\ncloop[angleB=180,loopsize=1,arm=.5,linearc=.2]{->}{)o(a}{)o(a})712
+2386 y FB(In)12 b(this)h(example,)g(node)f(A)g(and)g(node)g(B)g(are)h(the)f
+(same)h(node!)18 b(Y)-5 b(ou)11 b(can)712 2446 y(do)h(this)f(with)h(all)g
+(the)g(node)g(connections)g(\(but)f(it)h(doesn')o(t)g(always)f(make)712
+2506 y(sense\).)712 2587 y(Here)h(is)g(an)g(example)h(where)f
+Fu(\\ncloop)g FB(connects)h(two)e(dif)o(ferent)i(nodes:)591
+2828 y Fp(Node)c(connections)1016 b(14)p eop
+%%Page: 15 15
+14 bop 165 56 a
+ tx@Dict begin gsave STV CP T 13.0414 6.71689 41.39984 20.69992 3.16225
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 6.71689
+neg 37.59984 13.0414 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+Fv(Begin)374 261 y
+ tx@Dict begin gsave STV CP T 13.0414 4.0281 32.19301 16.0965 4.50664
+ tx@NodeDict begin /TheNodeB 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 4.0281
+neg 28.393 13.0414 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+Fv(End)520 261 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeA /TheNodeB
+InitNC { tx@Dict begin /r 5.69046 def /Lineto { Arcto } def false pop
+end /AngleA 180. def /AngleB 0. def /armA 14.22636 def /armB 14.22636
+def /loopsize 25.60728 def NCLoop } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 531 152 a
+ tx@Dict begin tx@NodeDict begin /t 1.5 def LPut end PutBegin end
+ 531 152 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar 0 CLW 2 div T newpath false 0.4 1.4 1.5 2. Arrow EndArrow
+ moveto } def /ArrowB { BeginArrow 2.0 5. Tbar 0 CLW 2 div T newpath
+false 0.4 1.4 1.5 2. Arrow EndArrow } def [ -12.80363 -5.69046 12.80363
+-5.69046 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 531 152 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 531 152 a
+ tx@Dict begin PutEnd end
+ 531 152 a
+ tx@Dict begin tx@NodeDict begin /t 1.5 def LPut end PutBegin end
+ 531 152 a
+ tx@Dict begin NAngle 180 add tx@Dict /TMatrix known not { /TMatrix
+{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED
+a Rot /RAngle [ RAngle dup a add ] cvx def end
+ 531 152
+a
+ tx@Dict begin { 9.95863 tx@Dict /NCLW known { NCLW add } if 36.09341
+7.21277 2.15988 NAngle 90 sub NAngle 180 add sub /a ED add 2 div
+/h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt
+dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul def /h1
+s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup
+s mul abs } ifelse exch pop add a PtoC h1 add exch w1 add exch } PutCoor
+PutBegin end
+ 457 163 a Fs(loopsize)531 152 y
+ tx@Dict begin PutEnd end
+ 531 152 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 531 152 a
+ tx@Dict begin PutEnd end
+ 712 30
+a Fs(\\parbox{3cm}{\045)712 90 y(\\rnode{A}{\\psframebox{\\large\\bf)20
+b(Begin}})712 150 y(\\vspace{1cm}\\hspace*{\\\256ll})712 211
+y(\\rnode{B}{\\psframebox{\\large\\bf)g(End}})712 271 y
+(\\ncloop[angleA=180,loopsize=.9,arm=.5,linearc=.2]{->}{A}{)o(B}})591
+423 y FB(The)12 b(next)g(two)g(node)g(connections)g(are)h(a)f(little)h(dif)o
+(ferent)g(from)f(the)g(rest.)591 566 y FA(\\nccurve)p Fz(*[)p
+Fy(par)p Fz(]{)p Fy(arrows)q Fz(})p FA({)p Fx(nodeA)p FA(}{)p
+Fx(nodeB)r FA(})712 647 y Fu(\\nccurve)f FB(draws)h(a)g(bezier)h(curve)f
+(between)g(the)g(nodes.)118 1052 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial FB(Node)f(A)397 769 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial FB(Node)g(B)118 1069 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { /AngleA 0. def /AngleB 180. def
+0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 842 a Fs
+(\\rput[bl]\(0,0\){\\rnode{A}{\\psframebox{Node)19 b(A}}})712
+902 y(\\rput[tr]\(4,3\){\\ovalnode{B}{Node)h(B}})712 962 y
+(\\nccurve[angleB=180]{A}{B})712 1191 y FB(Y)-5 b(ou)9 b(specify)g(the)g
+(angle)g(at)g(which)g(the)g(curve)g(joins)f(the)i(nodes)e(by)g(setting)712
+1251 y(the)17 b Fu(angle)f FB(\(and)g Fu(angleA)h FB(and)f
+Fu(angleB)p FB(\))g(parameter)m(.)32 b(The)17 b(distance)g(to)712
+1312 y(the)c(control)f(points)g(is)g(set)g(with)g(the)820 1413
+y FA(ncurv=)p Fx(num)575 b Fv(Default:)20 b FA(.67)712 1515
+y FB(\(and)e Fu(ncurvA)f FB(and)g Fu(ncurvB)p FB(\))g(parameter)m(.)36
+b(A)16 b(lower)i(number)f(gives)h(a)712 1575 y(tighter)h(curve.)36
+b(\(The)19 b(distance)g(between)f(the)h(beginning)f(of)g(the)g(arc)712
+1635 y(and)e(the)f(\256rst)f(control)i(point)f(is)g(one-half)g
+Fu(ncurvA)g FB(times)h(the)f(distance)712 1696 y(between)e(the)f(two)g
+(endpoints.\))591 1797 y FA(\\nccircle)p Fz(*[)p Fy(par)p Fz(]{)p
+Fy(arrows)q Fz(})p FA({)p Fx(node)r FA(}{)p Fx(radius)r FA(})712
+1878 y Fu(\\nccircle)d FB(draws)e(a)i(circle,)h(or)e(part)h(of)f(a)h(circle,)
+h(that,)g(if)f(complete,)h(would)712 1938 y(pass)h(through)f(the)i(center)f
+(of)g(the)g(node)g(counterclockwise,)h(at)f(an)g(angle)712
+1999 y(of)h Fu(angleA)p FB(.)460 2239 y
+ tx@Dict begin gsave STV CP T 7.70117 0.19008 23.68526 11.84262 3.75554
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ Fq(back)570 2239 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeA
+InitNC { /AngleA 0. def /r 19.91684 def NCCircle x y r angleA angleB
+{ ArrowB } { sub } ArcArrow arc end } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+
+712 2107 a Fs(\\rnode{A}{\\bf)22 b(back})712 2168 y
+(\\nccircle[nodesep=3pt]{->}{A}{.7cm})712 2228 y(\\kern)h(5pt)712
+2363 y Fu(\\nccircle)18 b FB(can)g(only)g(connect)g(a)g(node)g(to)g(itself;)j
+(it)d(is)g(the)g(only)g(node)712 2423 y(connection)c(with)e(this)g(property)m
+(.)18 b Fu(\\nccircle)12 b FB(is)g(also)h(special)g(because)f(it)712
+2483 y(has)e(an)g(additional)h(ar)o(gument,)g(for)e(specifying)h(the)g
+(radius)g(of)f(the)i(circle.)591 2828 y Fp(Node)e(connections)1016
+b(15)p eop
+%%Page: 16 16
+15 bop 591 50 a FB(The)12 b(last)g(two)g(node)g(connections)g(are)g(also)g
+(special.)18 b(Rather)13 b(than)f(connecting)591 110 y(the)f(nodes)f(with)h
+(an)g(open)g(curve,)g(they)g(enclose)g(the)g(nodes)g(in)g(a)g(box)f(or)h
+(curved)591 170 y(box.)24 b(Y)-5 b(ou)14 b(can)h(think)g(of)g(them)g(as)f
+(variants)h(of)g Fu(\\ncline)f FB(and)h Fu(\\ncarc)p FB(.)24
+b(In)15 b(both)591 230 y(cases,)c(the)i(half)f(the)g(width)g(of)g(the)h(box)e
+(is)712 361 y FA(boxsize=)p Fx(dim)608 b Fv(Default:)20 b FA(.4cm)591
+492 y FB(Y)-5 b(ou)19 b(have)h(to)g(set)g(this)f(yourself)h(to)g(the)g(right)
+g(size,)i(so)d(that)i(the)f(nodes)f(\256t)591 552 y(inside)13
+b(the)h(box.)21 b(The)13 b Fu(boxsize)g FB(parameter)i(actually)g(sets)e(the)
+g Fu(boxheight)g FB(and)591 612 y Fu(boxdepth)f FB(parameters.)22
+b(The)14 b(ends)f(of)g(the)h(boxes)f(extend)h(beyond)f(the)h(nodes)591
+672 y(by)d Fu(nodesepA)h FB(and)g Fu(nodesepB)p FB(.)591 816
+y FA(\\ncbox)p Fz(*[)p Fy(par)p Fz(])p FA({)p Fx(nodeA)p FA(}{)p
+Fx(nodeB)r FA(})712 897 y Fu(\\ncbox)22 b FB(encloses)f(the)h(nodes)f(in)h(a)
+g(box)f(with)h(straight)g(sides.)45 b(For)712 957 y(example:)177
+1328 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 28.46611 14.23305 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ FB(Idea)12 b(1)413 1125 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 28.46611 14.23305 3.81314
+ tx@NodeDict begin /TheNodeB 16 NewNode InitRnode end end grestore
+end
+ FB(Idea)h(2)118 1329 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 14.22636 14.22636 /TheNodeA /TheNodeB
+InitNC { tx@Dict begin /r 5.69046 def /Lineto { Arcto } def false pop
+end 17.07181 17.07181 NCBox } if end gsave 0.8 SLW 0. setgray 5.0
+3.0 2 DashLine grestore grestore end
+ 712
+1131 a Fs(\\rput[bl]\(.5,0\){\\rnode{A}{Idea)20 b(1}})712 1191
+y(\\rput[tr]\(3.5,2\){\\rnode{B}{Idea)g(2}})712 1251 y
+(\\ncbox[nodesep=.5cm,boxsize=.6,linearc=.2,)758 1312 y
+(linestyle=dashed]{A}{B})591 1510 y FA(\\ncarcbox)p Fz(*[)p
+Fy(par)p Fz(])p FA({)p Fx(nodeA)p FA(}{)p Fx(nodeB)r FA(})712
+1591 y Fu(\\ncarcbox)14 b FB(encloses)h(the)h(nodes)e(in)i(a)f(curved)g(box)g
+(that)g(is)g Fu(arcangleA)712 1652 y FB(away)d(from)g(the)h(line)f
+(connecting)h(the)g(two)e(nodes.)177 2024 y
+ tx@Dict begin gsave STV CP T 7.7818 0.0 5.76004 2.88002 3.8909 tx@NodeDict
+begin /TheNodeA 16 NewNode InitRnode end end grestore end
+ FB(1)508 1820 y
+ tx@Dict begin gsave STV CP T 7.7818 0.0 5.76004 2.88002 3.8909 tx@NodeDict
+begin /TheNodeB 16 NewNode InitRnode end end grestore end
+
+FB(2)118 2024 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 5.69046 5.69046 /TheNodeA /TheNodeB InitNC
+{ 50. 11.38092 11.38092 11.38092 NCArcBox } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 712 1826 a Fs(\\rput[bl]\(.5,0\){\\rnode{A}{1}})712
+1886 y(\\rput[tr]\(3.5,2\){\\rnode{B}{2}})712 1946 y
+(\\ncarcbox[nodesep=.2cm,boxsize=.4,linearc=.4,)758 2006 y
+(arcangle=50]{<->}{)o(A}{B})712 2205 y FB(The)i(arc)f(is)g(drawn)f
+(counterclockwise)i(from)f(node)g(A)f(to)i(node)e(B.)591 2348
+y(There)e(is)g(one)g(other)h(node)f(connection)h(parameter)g(that)g(applies)g
+(to)f(all)h(the)g(node)591 2408 y(connections,)i(except)h Fu(\\ncarcbox)p
+FB(:)712 2539 y FA(offset=)p Fx(dim)694 b Fv(Default:)20 b
+FA(0pt)591 2828 y Fp(Node)9 b(connections)1016 b(16)p eop
+%%Page: 17 17
+16 bop 591 50 a FB(\(Y)-5 b(ou)15 b(can)i(also)f(set)g Fu(offsetA)f
+FB(and)h Fu(offsetB)f FB(independently)m(.\))30 b(This)17 b(shifts)e(the)591
+110 y(point)f(where)g(the)g(connection)h(joins)f(up)g(by)g
+Fr(dim)h FB(\(given)f(the)h(convention)f(that)591 170 y(connections)e(go)g
+(from)g(left)g(to)h(right\).)591 259 y(There)g(are)g(two)g(main)g(uses)f(for)
+h(this)g(parameter)m(.)21 b(First,)13 b(it)g(lets)g(you)g(make)g(two)591
+320 y(parallel)g(lines)f(with)g Fu(\\ncline)p FB(,)h(as)e(in)h(the)h
+(following)f(example:)160 716 y
+ tx@Dict begin gsave STV CP T 8.31749 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeA
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+FB(X)514 480 y
+ tx@Dict begin gsave STV CP T 8.31749 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeB
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial FB(Y)177
+700 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 4.0 4.0 neg 3.0 3.0 /TheNodeA /TheNodeB
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 177 700 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 4.0 4.0 neg 3.0 3.0 /TheNodeB /TheNodeA
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 712 472 a Fs(\\cnodeput\(0,0\){A}{X})712 532
+y(\\cnodeput\(3,2\){B}{Y})712 592 y(\\psset{nodesep=3pt,of)o
+(fset=4pt,arrows=->})712 653 y(\\ncline{A}{B})712 713 y(\\ncline{B}{A})591
+890 y FB(Second,)17 b(it)h(lets)f(you)g(join)g(a)g(node)g(connection)g(to)g
+(a)g(rectangular)h(node)f(at)h(a)591 950 y(right)9 b(angle,)i(without)f
+(limiting)h(yourself)e(to)h(positions)f(that)i(lie)f(directly)h(above,)591
+1010 y(below)m(,)17 b(or)g(to)f(either)i(side)f(of)f(the)h(center)h(of)e(the)
+h(node.)31 b(This)17 b(is)f(useful,)i(for)591 1070 y(example,)12
+b(if)g(you)g(are)g(making)g(several)h(connections)f(to)g(the)g(same)g(node,)g
+(as)g(in)591 1131 y(the)g(following)g(example:)6 1311 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 31.06964 15.53482 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ FB(W)l(ord1)g(and)228
+1311 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 31.06964 15.53482 3.81314
+ tx@NodeDict begin /TheNodeB 16 NewNode InitRnode end end grestore
+end
+ FB(W)l(ord2)g(and)450 1311 y
+ tx@Dict begin gsave STV CP T 7.7818 0.15552 31.06964 15.53482 3.81314
+ tx@NodeDict begin /TheNodeC 16 NewNode InitRnode end end grestore
+end
+ FB(W)l(ord3)591 1311 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 4.0 neg 3.0 3.0 /TheNodeA /TheNodeB
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+-90. def /AngleB 0. def /armA 10.0 def /armB 10.0 def /AngleB -90.
+def NCBar } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+
+591 1311 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 4.0 0.0 neg 3.0 3.0 /TheNodeB /TheNodeC
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+-90. def /AngleB 0. def /armA 10.0 def /armB 10.0 def /AngleB -90.
+def NCBar } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 712 1246 a Fs(\\rnode{A}{W)o(ord1})19 b(and)j(\\rnode{B}{W)o
+(ord2})d(and)j(\\rnode{C}{W)o(ord3})712 1306 y(\\ncbar[of)o
+(fsetB=4pt,angleA=-90,nodesep=3pt]{->}{A}{B})712 1366 y(\\ncbar[of)o
+(fsetA=4pt,angleA=-90,nodesep=3pt]{->}{B}{C})591 1506 y FB(Sometimes)14
+b(you)f(might)h(be)g(aligning)g(several)g(nodes,)f(such)g(as)h(in)f(a)h
+(tree,)h(and)591 1566 y(you)e(want)h(to)g(ends)g(or)g(the)g(arms)g(of)g(the)g
+(node)g(connections)g(to)g(line)h(up.)23 b(This)591 1626 y(won')o(t)11
+b(happen)h(naturally)h(if)f(the)g(nodes)f(are)h(of)g(dif)o(ferent)g(size,)h
+(as)e(you)h(can)g(see)591 1686 y(in)g(this)g(example:)177 2148
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 25.60728 76.82185 4.0
+.5 CLW mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 177 2148 a
+ tx@Dict begin gsave STV CP T 25.60728 76.82185 4.0 tx@NodeDict begin
+/TheNodea 11 NewNode InitCnode end end grestore end
+ 141 2148
+a
+ tx@Dict begin gsave STV CP T 16.13428 0.0 17.24493 8.62247 7.49028
+ tx@NodeDict begin /TheNodeb 16 NewNode InitRnode end end grestore
+end
+ Fn(H)368 2148 y
+ tx@Dict begin gsave STV CP T 10.38997 0.20302 10.60492 5.30246 7.49028
+ tx@NodeDict begin /TheNodec 16 NewNode InitRnode end end grestore
+end
+ Fn(a)177 2148 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+0.0 /TheNodeb /TheNodea InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 90. def /AngleB 0. def /armA 25.60728 def
+/armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 177 2148 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+0.0 /TheNodec /TheNodea InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 90. def /AngleB 0. def /armA 25.60728 def
+/armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 1801 a Fs(\\Huge)712
+1861 y(\\cnode\(1,3\){4pt}{a})712 1922 y(\\rput[B]\(0,0\){\\Rnode{b}{H}})712
+1982 y(\\rput[B]\(2,0\){\\Rnode{c}{a}})712 2042 y
+(\\psset{angleA=90,armA=1,nodesepA=3pt})712 2102 y(\\ncdiagg{b}{a})712
+2162 y(\\ncdiagg{c}{a})591 2302 y FB(If)h(you)g(set)g(the)h
+Fu(nodesep)e FB(or)h Fu(arm)g FB(parameter)i(to)e(a)h(negative)g(value,)g
+(PST)n(ricks)591 2362 y(will)e(measure)g(the)h(distance)g(to)f(the)g
+(beginning)h(of)e(the)i(node)f(connection)h(or)f(to)591 2422
+y(the)g(end)f(of)h(the)g(arm)f(relative)i(to)f(the)g(center)h(of)e(the)h
+(node,)f(rather)i(than)e(relative)591 2483 y(to)j(the)h(boundary)f(of)g(the)g
+(node)h(or)f(the)g(beginning)h(of)f(the)h(arm.)24 b(Here)14
+b(is)g(how)591 2543 y(we)d(\256x)h(the)g(previous)g(example:)591
+2828 y Fp(Node)d(connections)1016 b(17)p eop
+%%Page: 18 18
+17 bop 177 377 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 25.60728 76.82185 4.0
+.5 CLW mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 177
+377 a
+ tx@Dict begin gsave STV CP T 25.60728 76.82185 4.0 tx@NodeDict begin
+/TheNodea 11 NewNode InitCnode end end grestore end
+ 141 377 a
+ tx@Dict begin gsave STV CP T 16.13428 0.0 17.24493 8.62247 7.49028
+ tx@NodeDict begin /TheNodeb 16 NewNode InitRnode end end grestore
+end
+ Fn(H)368 377 y
+ tx@Dict begin gsave STV CP T 10.38997 0.20302 10.60492 5.30246 7.49028
+ tx@NodeDict begin /TheNodec 16 NewNode InitRnode end end grestore
+end
+ Fn(a)177 377 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg -12.0
+0.0 /TheNodeb /TheNodea InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 90. def /AngleB 0. def /armA 25.60728 def
+/armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 177 377 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg -12.0
+0.0 /TheNodec /TheNodea InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA 90. def /AngleB 0. def /armA 25.60728 def
+/armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712
+30 a Fs(\\Huge)712 90 y(\\cnode\(1,3\){4pt}{a})712 150 y
+(\\rput[B]\(0,0\){\\Rnode{b}{H}})712 211 y(\\rput[B]\(2,0\){\\Rnode{c}{a}})
+712 271 y(\\psset{angleA=90,armA=1,nodesepA=-12pt})712 331
+y(\\ncdiagg{b}{a})712 391 y(\\ncdiagg{c}{a})591 517 y FB(Note)11
+b(also)h(the)h(use)f(of)f Fu(\\Rnode)p FB(.)591 605 y(One)d(more)i(paramter)g
+(trick:)17 b(By)9 b(using)g(the)h Fu(border)e FB(parameter)n(,)j(you)e(can)h
+(create)591 665 y(the)i(impression)g(that)g(one)g(node)g(connection)h(passes)
+e(over)h(another)m(.)591 752 y(The)d(node)h(connection)g(commands)g(make)f
+(interesting)i(drawing)e(tools)g(as)h(well,)591 812 y(as)f(an)i(alternative)h
+(to)e Fu(\\psline)g FB(for)g(connecting)h(two)f(points.)16
+b(There)11 b(are)f(variants)591 872 y(of)k(the)h(node)g(connection)g
+(commands)g(for)f(this)h(purpose.)24 b(Each)15 b(begins)g(with)591
+933 y Fs(pc)d FB(\(for)f(\252point)i(connection\272\))g(rather)f(than)h
+Fs(nc)p FB(.)k(E.g.,)712 1050 y Fs(\\pcarc{<->}\(3,4\)\(6,9\))591
+1167 y FB(gives)11 b(the)i(same)f(result)g(as)712 1284 y Fs
+(\\pnode\(3,4\){A})712 1345 y(\\pnode\(6,9\){B})712 1405 y
+(\\pcarc{<->}{A}{B})591 1522 y FB(Only)f Fu(\\nccircle)h FB(does)f(not)i
+(have)f(a)g Fs(pc)g FB(variant:)702 1644 y Ft(Command)627 b(Corr)n(esponds)10
+b(to:)702 1716 y FA(\\pcline)p Fz({)p Fy(arrows)q Fz(})p FA(\()p
+Fx(x1)p FA(,)t Fx(y1)p FA(\)\()p Fx(x2)5 b FA(,)t Fx(y2)t FA(\))165
+b Fu(\\ncline)702 1789 y FA(\\pccurve)p Fz({)p Fy(arrows)q
+Fz(})p FA(\()p Fx(x1)p FA(,)t Fx(y1)q FA(\)\()p Fx(x)q(2)t
+FA(,)t Fx(y2)t FA(\))119 b Fu(\\nccurve)702 1861 y FA(\\pcarc)p
+Fz({)p Fy(arrows)q Fz(})p FA(\()p Fx(x1)p FA(,)t Fx(y1)q FA(\)\()p
+Fx(x2)5 b FA(,)t Fx(y2)t FA(\))176 b Fu(\\ncarc)702 1933 y
+FA(\\pcbar)p Fz({)p Fy(arrows)q Fz(})p FA(\()p Fx(x1)p FA(,)t
+Fx(y1)p FA(\))q(\()p Fx(x2)t FA(,)t Fx(y2)t FA(\))e Fu(\\ncbar)702
+2005 y FA(\\pcdiag)p Fz({)p Fy(arrows)q Fz(})p FA(\()p Fx(x1)p
+FA(,)t Fx(y1)p FA(\)\()p Fx(x)q(2)t FA(,)t Fx(y2)t FA(\))149
+b Fu(\\ncdiag)702 2077 y FA(\\pcangle)p Fz({)p Fy(arrows)q
+Fz(})p FA(\()p Fx(x1)p FA(,)t Fx(y1)p FA(\)\()q Fx(x2)t FA(,)t
+Fx(y2)t FA(\))122 b Fu(\\ncangle)702 2150 y FA(\\pcloop)p Fz({)p
+Fy(arrows)q Fz(})p FA(\()p Fx(x1)p FA(,)t Fx(y1)p FA(\)\()p
+Fx(x2)5 b FA(,)t Fx(y2)t FA(\))146 b Fu(\\ncloop)702 2222 y
+FA(\\pcbox\()p Fx(x1)p FA(,)t Fx(y1)p FA(\)\()p Fx(x2)t FA(,)t
+Fx(y2)t FA(\))343 b Fu(\\ncbox)702 2294 y FA(\\pcarcbox\()p
+Fx(x1)p FA(,)t Fx(y1)p FA(\)\()p Fx(x2)t FA(,)t Fx(y2)t FA(\))270
+b Fu(\\ncarcbox)366 2460 y FC(8)70 b(Node)21 b(connections)f(labels:)27
+b(I)591 2580 y FB(Now)9 b(we)g(come)i(to)f(the)h(commands)f(for)g(attaching)h
+(labels)g(to)f(the)g(node)g(connec-)591 2640 y(tions.)16 b(The)11
+b(label)h(command)g(must)e(come)i(right)f(after)g(the)g(node)g(connection)h
+(to)591 2828 y Fp(Node)d(connections)f(labels:)14 b(I)876 b(18)p
+eop
+%%Page: 19 19
+18 bop 591 50 a FB(which)11 b(the)h(label)g(is)g(to)f(be)h(attached.)18
+b(Y)-5 b(ou)11 b(can)h(attach)h(more)f(than)g(one)f(label)i(to)591
+110 y(a)f(node)g(connection,)g(and)g(a)h(label)g(can)f(include)h(more)f
+(nodes.)591 198 y(The)k(node)g(label)h(commands)f(must)g(end)g(up)g(on)g(the)
+h(same)f(T)1654 209 y(E)1678 198 y(X)f(page)h(as)g(the)591
+258 y(node)11 b(connection)i(to)f(which)g(the)h(label)g(corresponds.)591
+346 y(There)k(are)h(two)e(groups)h(of)g(connection)h(labels,)g(which)f(dif)o
+(fer)h(in)f(how)f(they)591 407 y(select)d(the)f(point)h(on)f(the)h(node)f
+(connection.)19 b(In)12 b(this)h(section)g(we)f(describe)g(the)591
+467 y(\256rst)f(group:)712 604 y FA(\\ncput)p Fz(*[)p Fy(par)5
+b Fz(])p FA({)p Fx(stuf)o(f)h FA(})712 679 y(\\naput)p Fz(*[)p
+Fy(par)f Fz(])p FA({)p Fx(stuf)o(f)h FA(})712 754 y(\\nbput)p
+Fz(*[)p Fy(par)f Fz(])p FA({)p Fx(stuf)o(f)h FA(})591 876 y
+FB(These)13 b(three)g(command)h(dif)o(fer)f(in)g(where)g(the)h(labels)f(end)g
+(up)g(with)g(respect)h(to)591 937 y(the)e(line:)737 1055 y
+Fu(\\ncput)52 b Ft(on)12 b FB(the)g(line)737 1127 y Fu(\\naput)52
+b Ft(above)12 b FB(the)h(line)737 1199 y Fu(\\nbput)50 b Ft(below)12
+b FB(the)h(line)591 1320 y(\(using)e(the)h(convention)h(that)g(node)f
+(connections)g(go)g(from)g(left)g(to)g(right\).)591 1408 y(Here)f(is)h(an)g
+(example:)177 1805 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 14.22636 .5
+CLW mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+177 1805 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 14.22636 tx@NodeDict begin /TheNoderoot
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 42.67911 4.0
+0 360 arc fill end
+
+@endspecial 177 1805
+a
+ tx@Dict begin gsave STV CP T 85.35823 42.67911 4.0 tx@NodeDict begin
+/TheNodeA 11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 0.0 4.0 0 360
+arc fill end
+
+@endspecial 177 1805 a
+ tx@Dict begin gsave STV CP T 85.35823 0.0 4.0 tx@NodeDict begin /TheNodeB
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 -42.67911 4.0
+0 360 arc fill end
+
+@endspecial 177 1805 a
+ tx@Dict begin gsave STV CP T 85.35823 -42.67911 4.0 tx@NodeDict begin
+/TheNodeC 11 NewNode InitCnode end end grestore end
+ 177 1805 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeA InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 177 1805 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 177
+1805 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 27.50995 7.7818
+0.09792 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 120 1821 a FB(above)177 1805 y
+ tx@Dict begin PutEnd end
+ 177 1805 a
+ tx@Dict begin PutEnd end
+ 177 1805 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeB InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+
+177 1805 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 153 1816 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.09792
+neg 14.52008 8.01123 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial
+FB(on)177 1805 y
+ tx@Dict begin PutEnd end
+ 177 1805 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeC InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 177 1805 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 177 1805 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 28.15506 7.7818
+0.09792 NAngle 90 sub /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 119 1821
+a FB(below)177 1805 y
+ tx@Dict begin PutEnd end
+ 177 1805 a
+ tx@Dict begin PutEnd end
+ 712 1515 a Fs(\\cnode\(0,0\){.5cm}{root})712
+1575 y(\\cnode*\(3,1.5\){4pt}{A})712 1635 y(\\cnode*\(3,0\){4pt}{B})712
+1695 y(\\cnode*\(3,-1.5\){4pt}{C})712 1756 y(\\psset{nodesep=3pt})712
+1816 y(\\ncline{root}{A})712 1876 y(\\naput{above})712 1936
+y(\\ncline{root}{B})712 1996 y(\\ncput*{on})712 2057 y(\\ncline{root}{C})712
+2117 y(\\nbput{below})591 2249 y Fu(\\naput)k FB(and)h Fu(\\nbput)f
+FB(use)h(the)g(same)g(algorithm)h(as)f Fu(\\uput)f FB(for)h(displacing)g(the)
+591 2309 y(labels,)12 b(and)g(the)g(distance)g(beteen)h(the)f(line)g(and)g
+(labels)g(is)g Fu(labelsep)f FB(\(at)h(least)h(if)591 2369
+y(the)f(lines)g(are)h(straight\).)591 2457 y Fu(\\ncput)c FB(uses)g(the)i
+(same)f(system)g(as)f Fu(\\rput)h FB(for)g(setting)g(the)h(reference)f
+(point.)17 b(Y)-5 b(ou)591 2517 y(change)12 b(the)g(reference)h(point)f(by)g
+(setting)h(the)712 2640 y FA(ref=)p Fx(ref)837 b Fv(Default:)20
+b FA(c)591 2828 y Fp(Node)9 b(connections)f(labels:)14 b(I)876
+b(19)p eop
+%%Page: 20 20
+19 bop 591 50 a FB(parameter)m(.)591 139 y(Rotation)12 b(is)g(also)g
+(controlled)h(by)f(a)g(graphics)g(parameter:)712 270 y FA(nrot=)p
+Fx(rot)801 b Fv(Default:)20 b FA(0)591 401 y Fr(rot)e FB(can)d(be)g(in)g(any)
+g(of)g(the)g(forms)g(suitable)g(for)g Fu(\\rput)p FB(,)g(and)g(you)g(can)g
+(also)g(use)591 461 y(the)d(form)712 592 y Fs({:)p Fr(angle)q
+Fs(})591 722 y FB(The)i(angle)g(is)g(then)h(measured)f(with)g(respect)g(to)g
+(the)h(node)f(connection.)24 b(E.g.,)591 782 y(if)14 b(the)h(angle)f(is)g
+Fs({:U})p FB(,)h(then)g(the)g(label)g(runs)e(parallel)j(to)e(the)h(node)f
+(connection.)591 843 y(Since)g(the)h(label)g(can)g(include)g(other)f(put)h
+(commands,)g(you)f(really)h(have)g(a)f(lot)591 903 y(of)d(control)i(over)f
+(the)g(label)h(position.)591 992 y(The)h(next)g(example)h(illustrates)g(the)f
+(use)g Fs({:)p Fr(angle)q Fs(})p FB(,)f(the)h Fu(offset)e FB(parameter)n(,)k
+(and)591 1052 y Fu(\\pcline)p FB(:)118 1408 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 0.0 113.81097
+56.90549 0.0 0.0 /Lineto /lineto load def false Polygon gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 118 1408 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 tx@NodeDict begin /TheNode@@A
+10 NewNode InitPnode end end grestore end
+ 118 1408 a
+ tx@Dict begin gsave STV CP T 113.81097 56.90549 tx@NodeDict begin
+/TheNode@@B 10 NewNode InitPnode end end grestore end
+ 118 1408 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def /NCLW CLW def tx@NodeDict begin 12.0 12.0 neg 0.0
+0.0 /TheNode@@A /TheNode@@B InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 118
+1408 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 118 1408 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 50 1419 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.48833
+neg 35.63637 10.7818 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial
+FB(Length)118 1408 y
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 1408 a
+ tx@Dict begin PutEnd end
+ 712 1222 a Fs
+(\\pspolygon\(0,0\)\(4,2\)\(4,0\))712 1282 y(\\pcline[of)o
+(fset=12pt]{|-|}\(0,0\)\(4,2\))712 1343 y(\\ncput*[nrot=:U]{Length})591
+1538 y FB(Here)11 b(is)h(a)g(repeat)h(of)f(an)g(earlier)h(example,)g(now)e
+(using)h Fs({:)p Fr(angle)q Fs(})p FB(:)177 1944 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 14.22636 .5
+CLW mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 177 1944 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 14.22636 tx@NodeDict begin /TheNoderoot
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 42.67911 4.0
+0 360 arc fill end
+
+
+@endspecial 177 1944 a
+ tx@Dict begin gsave STV CP T 85.35823 42.67911 4.0 tx@NodeDict begin
+/TheNodeA 11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 0.0 4.0 0 360
+arc fill end
+
+@endspecial
+177 1944 a
+ tx@Dict begin gsave STV CP T 85.35823 0.0 4.0 tx@NodeDict begin /TheNodeB
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 -42.67911 4.0
+0 360 arc fill end
+
+@endspecial 177 1944
+a
+ tx@Dict begin gsave STV CP T 85.35823 -42.67911 4.0 tx@NodeDict begin
+/TheNodeC 11 NewNode InitCnode end end grestore end
+ 177 1944 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeA InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 177 1944 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 177 1944 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 177 1944 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 27.50995 7.7818
+0.09792 NAngle 90 add NAngle sub /a ED add 2 div /h ED 2 div /w ED
+/s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 120 1960 a FB(above)177
+1944 y
+ tx@Dict begin PutEnd end
+ 177 1944 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 177 1944 a
+ tx@Dict begin PutEnd end
+ 177 1944 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeB InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 177 1944 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 177 1944
+a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 153 1954 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.09792
+neg 14.52008 8.01123 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial FB(on)177
+1944 y
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 177 1944 a
+ tx@Dict begin PutEnd end
+ 177 1944 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeC InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 177 1944 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 177 1944 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 177 1944
+a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 28.15506 7.7818
+0.09792 NAngle 90 sub NAngle sub /a ED add 2 div /h ED 2 div /w ED
+/s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 119 1960 a FB(below)177 1944 y
+ tx@Dict begin PutEnd end
+ 177 1944 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 177 1944 a
+ tx@Dict begin PutEnd end
+ 712
+1653 a Fs(\\cnode\(0,0\){.5cm}{root})712 1714 y(\\cnode*\(3,1.5\){4pt}{A})712
+1774 y(\\cnode*\(3,0\){4pt}{B})712 1834 y(\\cnode*\(3,-1.5\){4pt}{C})712
+1894 y(\\psset{nodesep=3pt,nrot=:U})712 1954 y(\\ncline{root}{A})712
+2015 y(\\naput{above})712 2075 y(\\ncline{root}{B})712 2135
+y(\\ncput*{on})712 2195 y(\\ncline{root}{C})712 2255 y(\\nbput{below})591
+2395 y FB(The)g(position)g(on)g(the)g(node)g(connection)h(is)f(set)g(by)g
+(the)712 2526 y FA(npos=)p Fx(num)767 b Fv(Default:)591 2828
+y Fp(Node)9 b(connections)f(labels:)14 b(I)876 b(20)p eop
+%%Page: 21 21
+20 bop 591 50 a FB(parameter)n(,)12 b(roughly)f(according)h(to)g(the)g
+(following)f(scheme:)18 b(Each)12 b(node)f(con-)591 110 y(nection)k(has)g
+(potentially)i(one)e(or)g(more)g(segments,)h(including)f(the)h(arms)f(and)591
+170 y(connecting)e(lines.)18 b(A)12 b(number)g Fu(npos)g FB(between)h(0)f
+(and)g(1)g(picks)g(a)h(point)f(on)g(the)591 230 y(\256rst)e(segment)i(from)f
+(node)g Fs(A)h FB(to)f Fs(B)h FB(\(fraction)g Fu(npos)e FB(from)i(the)f
+(beginning)h(to)f(the)591 291 y(end)i(of)g(the)h(segment\),)f(a)h(number)f
+(between)h(1)f(and)g(2)g(picks)h(a)f(number)g(on)g(the)591
+351 y(second)e(segment,)i(and)f(so)f(on.)591 440 y(Each)j(node)g(connection)h
+(has)f(its)g(own)g(default)h(value)f(of)g Fu(npos)p FB(.)23
+b(If)14 b(you)g(leave)591 500 y(the)f Fu(npos)f FB(parameter)i(value)f(empty)
+g(\(e.g.,)g Fs([npos=])p FB(\),)g(then)g(the)g(default)h(is)e(sub-)591
+560 y(stituted.)18 b(This)12 b(is)f(the)i(default)g(mode.)591
+650 y(Here)e(are)i(the)f(details)h(for)f(each)g(node)g(connection:)837
+776 y Ft(Connection)50 b(Segments)74 b(Range)h(Default)837
+856 y Fu(\\ncline)219 b FB(1)128 b(0)q Fj(\243)r Ft(pos)q Fj(\243)r
+FB(1)93 b Fs(0.5)837 928 y Fu(\\nccurve)179 b FB(1)128 b(0)q
+Fj(\243)r Ft(pos)q Fj(\243)r FB(1)93 b Fs(0.5)837 1001 y Fu(\\ncarc)227
+b FB(1)128 b(0)q Fj(\243)r Ft(pos)q Fj(\243)r FB(1)93 b Fs(0.5)837
+1073 y Fu(\\ncbar)225 b FB(3)128 b(0)q Fj(\243)r Ft(pos)q Fj(\243)r
+FB(3)93 b Fs(1.5)837 1145 y Fu(\\ncdiag)205 b FB(3)128 b(0)q
+Fj(\243)r Ft(pos)q Fj(\243)r FB(3)93 b Fs(1.5)837 1217 y Fu(\\ncdiagg)180
+b FB(2)128 b(0)q Fj(\243)r Ft(pos)q Fj(\243)r FB(2)93 b Fs(0.5)837
+1289 y Fu(\\ncangle)182 b FB(3)128 b(0)q Fj(\243)r Ft(pos)q
+Fj(\243)r FB(3)93 b Fs(1.5)837 1362 y Fu(\\ncangles)159 b FB(4)128
+b(0)q Fj(\243)r Ft(pos)q Fj(\243)r FB(4)93 b Fs(1.5)837 1434
+y Fu(\\ncloop)203 b FB(5)128 b(0)q Fj(\243)r Ft(pos)q Fj(\243)r
+FB(5)93 b Fs(2.5)837 1506 y Fu(\\nccircle)182 b FB(1)128 b(0)q
+Fj(\243)r Ft(pos)q Fj(\243)r FB(1)93 b Fs(0.5)837 1578 y Fu(\\ncbox)216
+b FB(4)128 b(0)q Fj(\243)r Ft(pos)q Fj(\243)r FB(4)93 b Fs(0.5)837
+1651 y Fu(\\ncarcbox)154 b FB(4)128 b(0)q Fj(\243)r Ft(pos)q
+Fj(\243)r FB(4)93 b Fs(0.5)591 1779 y FB(Here)11 b(is)h(an)g(example:)118
+1912 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial FB(Node)f(A)338
+2195 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial FB(Node)g(B)118
+2219 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /r 4.26773 def /Lineto
+{ Arcto } def false pop end /AngleA -90. def /AngleB 0. def /armA 11.38092
+def /armB 11.38092 def NCAngles } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 118 2219 a
+ tx@Dict begin tx@NodeDict begin /t 1.5 def LPut end PutBegin end
+ 106 2235 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.15552
+neg 8.76004 10.7818 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial
+FB(d)118 2219 y
+ tx@Dict begin PutEnd end
+ 118 2219 a
+ tx@Dict begin tx@NodeDict begin /t 2.5 def LPut end PutBegin end
+ 118 2219 a
+ tx@Dict begin NAngle 180 add tx@Dict /TMatrix known not { /TMatrix
+{ } def /RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED
+a Rot /RAngle [ RAngle dup a add ] cvx def end
+ 118 2219 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 14.71114 5.28195
+2.48833 NAngle 90 sub NAngle 180 add sub /a ED add 2 div /h ED 2
+div /w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q
+ED { pop } { exch pop } ifelse def /w1 c b div w mul def /h1 s b div
+h mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul
+abs } ifelse exch pop add a PtoC h1 add exch w1 add exch } PutCoor
+PutBegin end
+ 87 2225 a
+FB(par)118 2219 y
+ tx@Dict begin PutEnd end
+ 118 2219 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 2219 a
+ tx@Dict begin PutEnd end
+ 712 1932 a Fs
+(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)20 b(A}}})712
+1992 y(\\rput[br]\(3.5,0\){\\ovalnode{B}{Node)g(B}})712 2052
+y(\\ncangles[angleA=-90,arm=.4cm,linearc=.15]{A}{B})712 2112
+y(\\ncput*{d})712 2172 y(\\nbput[nrot=:D,npos=2.5]{par})591
+2349 y FB(W)n(ith)9 b Fu(\\ncbox)f FB(and)g Fu(\\ncarcbox)p
+FB(,)g(the)h(segments)f(run)h(counterclockwise,)g(starting)591
+2410 y(with)15 b(the)h(lower)g(side)f(of)h(the)g(box.)28 b(Hence,)16
+b(with)g Fu(\\nbput)f FB(the)h(label)h(ends)e(up)591 2470 y(outside)d(the)g
+(box,)g(and)g(with)g Fu(\\naput)f FB(the)i(label)f(ends)g(up)g(inside)g(the)g
+(box.)591 2828 y Fp(Node)d(connections)f(labels:)14 b(I)876
+b(21)p eop
+%%Page: 22 22
+21 bop 177 295 a
+ tx@Dict begin gsave STV CP T 7.7818 0.0 5.76004 2.88002 3.8909 tx@NodeDict
+begin /TheNodeA 16 NewNode InitRnode end end grestore end
+ FB(1)508 91 y
+ tx@Dict begin gsave STV CP T 7.7818 0.0 5.76004 2.88002 3.8909 tx@NodeDict
+begin /TheNodeB 16 NewNode InitRnode end end grestore end
+ FB(2)118 295 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 5.69046 5.69046 /TheNodeA /TheNodeB InitNC
+{ 50. 11.38092 11.38092 11.38092 NCArcBox } if end gsave 0.8 SLW 0.
+setgray 5.0 3.0 1 DashLine grestore grestore end
+ 118 295 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 118
+295 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 118 295 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 12.7988 6.79684
+0.09792 NAngle 90 sub NAngle sub /a ED add 2 div /h ED 2 div /w ED
+/s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 91 309 a FB(set)118 295 y
+ tx@Dict begin PutEnd end
+ 118 295 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 295
+a
+ tx@Dict begin PutEnd end
+ 118 295 a
+ tx@Dict begin tx@NodeDict begin /t 2. def LPut end PutBegin end
+ 118 295 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 7.67236 7.7818
+0.0 NAngle 90 sub /a ED add 2 div /h ED 2 div /w ED /s a sin def /c
+a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse
+def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs w sub dup
+c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop add a PtoC
+h1 add exch w1 add exch } PutCoor PutBegin end
+ 102 311 a FB(II)118 295 y
+ tx@Dict begin PutEnd end
+ 118 295 a
+ tx@Dict begin PutEnd end
+ 712
+37 a Fs(\\rput[bl]\(.5,0\){\\rnode{A}{1}})712 97 y
+(\\rput[tr]\(3.5,2\){\\rnode{B}{2}})712 158 y
+(\\ncarcbox[nodesep=.2cm,boxsize=.4,linearc=.4,)758 218 y
+(arcangle=50,linestyle=dashed]{<->}{)o(A}{B})712 278 y(\\nbput[nrot=:U]{set})
+712 338 y(\\nbput[npos=2]{II})591 485 y FB(If)11 b(you)h(set)g(the)h
+(parameter)712 616 y FA(shortput=)p Fx(none/nab/tablr/tab)248
+b Fv(Default:)20 b FA(none)591 747 y FB(to)13 b Fs(nab)p FB(,)g(then)g
+(immediately)j(following)d(a)h(node)f(connection)h(or)f(another)h(node)591
+807 y(connection)d(label)h(you)e(can)h(use)f Fs(\303)h FB(instead)g(of)f
+Fu(\\naput)g FB(and)h Fs(_)f FB(instead)i(of)e Fu(\\nbput)p
+FB(.)177 1069 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 14.22636 .5
+CLW mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 177
+1069 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 14.22636 tx@NodeDict begin /TheNoderoot
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 42.67911 4.0
+0 360 arc fill end
+
+@endspecial 177 1069 a
+ tx@Dict begin gsave STV CP T 85.35823 42.67911 4.0 tx@NodeDict begin
+/TheNodeA 11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 85.35823 -42.67911 4.0
+0 360 arc fill end
+
+@endspecial 177 1069 a
+ tx@Dict begin gsave STV CP T 85.35823 -42.67911 4.0 tx@NodeDict begin
+/TheNodeC 11 NewNode InitCnode end end grestore end
+ 177 1069 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeA InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 177 1069 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 177
+1069 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 5.18402 5.0285
+0.11519 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 166 1079 a Ft(x)177 1069 y
+ tx@Dict begin PutEnd end
+ 177 1069 a
+ tx@Dict begin PutEnd end
+ 177 1069 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNoderoot /TheNodeC InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 177
+1069 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 177 1069 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 5.11491 5.0285
+2.39041 NAngle 90 sub /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 166 1074 a Ft(y)177 1069 y
+ tx@Dict begin PutEnd end
+ 177 1069 a
+ tx@Dict begin PutEnd end
+ 712
+929 a Fs(\\cnode\(0,0\){.5cm}{root})712 989 y(\\cnode*\(3,1.5\){4pt}{A})712
+1049 y(\\cnode*\(3,-1.5\){4pt}{C})712 1110 y
+(\\psset{nodesep=3pt,shortput=nab})712 1170 y(\\ncline{root}{A}\303{$x$})712
+1230 y(\\ncline{root}{C}_{$y$})591 1377 y FB(Y)-5 b(ou)19 b(can)h(still)h
+(have)f(parameter)h(changes)f(with)g(the)h(short)e Fs(\303)h
+FB(and)g Fs(_)f FB(forms.)591 1437 y(Another)11 b(example)i(is)f(given)g(on)g
+(page)g(27.)591 1526 y(If)k(you)g(have)h(set)f Fu(shortput=nab)p
+FB(,)g(and)h(then)g(you)f(want)g(to)h(use)f(a)h(true)g Fs(\303)f
+FB(or)g Fs(_)591 1587 y FB(character)e(right)g(after)g(a)f(node)g
+(connection,)i(you)e(must)g(precede)h(the)g Fs(\303)f FB(or)g
+Fs(_)g FB(by)591 1647 y Fs({})e FB(so)g(that)i(PST)n(ricks)f(does)f(not)h
+(convert)h(it)f(to)g Fs(\\naput)g FB(or)g Fs(\\nbput)p FB(.)591
+1736 y(Y)-5 b(ou)11 b(can)h(change)h(the)f(characters)h(that)g(you)e(use)h
+(for)g(the)g(short)g(form)g(with)g(the)712 1881 y FA(\\MakeShortNab{)p
+Fx(char1)p FA(}{)p Fx(char2)t FA(})591 2012 y FB(command.)791
+1994 y Fi(6)591 2101 y FB(The)f Fu(shortput=tablr)e FB(and)i
+Fu(shortput=tab)e FB(options)i(are)g(described)g(on)g(pages)g(24)591
+2161 y(and)h Fq(??)p FB(,)f(respectively)m(.)366 2359 y FC(9)70
+b(Node)21 b(connection)f(labels:)27 b(II)591 2480 y FB(Now)10
+b(the)j(second)f(group)f(of)h(node)g(connections:)p 591 2524
+544 2 v 646 2555 a Fh(6)662 2570 y Fg(Y)l(ou)h(can)g(also)g(use)g
+Ff(\\MakeShortNab)g Fg(if)h(you)f(want)g(to)g(use)g Fd(\303)h
+Fg(and)f Fd(_)g Fg(with)h(non-standard)591 2620 y(category)7
+b(codes.)13 b(Just)8 b(invoke)g(the)g(command)g(after)h(you)f(have)g(made)g
+(your)h Fd(\\catcode)g Fg(changes.)591 2828 y Fp(Node)g(connection)g(labels:)
+14 b(II)884 b(22)p eop
+%%Page: 23 23
+22 bop 712 50 a FA(\\tvput)p Fz(*[)p Fy(par)5 b Fz(])p FA({)p
+Fx(stuf)o(f)h FA(})712 125 y(\\tlput)p Fz(*[)p Fy(par)f Fz(])p
+FA({)p Fx(stuf)o(f)h FA(})712 199 y(\\trput)p Fz(*[)p Fy(par)f
+Fz(])p FA({)p Fx(stuf)o(f)h FA(})712 274 y(\\thput)p Fz(*[)p
+Fy(par)f Fz(])p FA({)p Fx(stuf)o(f)h FA(})712 349 y(\\taput)p
+Fz(*[)p Fy(par)f Fz(])p FA({)p Fx(stuf)o(f)h FA(})712 423 y(\\tbput)p
+Fz(*[)p Fy(par)f Fz(])p FA({)p Fx(stuf)o(f)h FA(})591 549 y
+FB(The)15 b(dif)o(ference)h(between)f(between)g(these)g(commands)h(and)f(the)
+g Fs(\\n*put)g FB(com-)591 609 y(mands)8 b(is)h(that)g(these)g(\256nd)f(the)h
+(position)g(as)g(an)g(intermediate)h(point)f(between)g(the)591
+669 y(centers)i(of)f(the)h(nodes,)f(either)i(in)f(the)g(horizontal)g(or)g
+(vertical)h(direction.)18 b(These)591 729 y(are)13 b(good)g(for)f(trees)h
+(and)g(mathematical)j(diagrams,)e(where)e(it)i(can)f(sometimes)591
+789 y(be)i(nice)i(to)f(have)g(the)g(labels)g(be)g(horizontally)g(or)g
+(vertically)h(aligned.)29 b(The)16 b Fs(t)591 850 y FB(stands)11
+b(for)h(\252tree\272.)591 938 y(Y)-5 b(ou)11 b(specify)h(the)h(position)f(by)
+f(setting)i(the)712 1063 y FA(tpos=)p Fx(num)740 b Fv(Default:)20
+b FA(.5)591 1189 y FB(parameter)m(.)591 1277 y Fu(\\tvput)p
+FB(,)e Fu(\\tlput)f FB(and)h Fu(\\trput)f FB(\256nd)h(the)g(position)g(that)g
+(lies)g(fraction)h Fr(tpos)f FB(in)g(the)591 1337 y Ft(vertical)13
+b FB(direction)g(from)g(the)g(upper)f(node)g(to)h(the)g(lower)f(node.)19
+b Fu(\\thput)p FB(,)12 b Fu(\\taput)591 1398 y FB(and)21 b
+Fu(\\tbput)f FB(\256nd)h(the)g(position)g(that)h(lies)g(fraction)f
+Fr(tpos)h FB(in)g(the)f Ft(horizontal)591 1458 y FB(direction)14
+b(from)f(the)g(left)h(node)f(to)g(the)h(right)f(node.)21 b(Then)13
+b(the)g(commands)h(put)591 1518 y(the)e(label)h(on)f(or)f(next)i(to)f(the)g
+(line,)h(as)f(follows:)924 1645 y Ft(Command)48 b(Dir)n(ection)63
+b(Placement)924 1729 y Fu(\\tvput)134 b FB(vertical)102 b(middle)924
+1802 y Fu(\\tlput)146 b FB(vertical)102 b(left)924 1874 y Fu(\\trput)141
+b FB(vertical)102 b(right)924 1946 y Fu(\\thput)132 b FB(horizontal)51
+b(middle)924 2018 y Fu(\\taput)134 b FB(horizontal)51 b(above)924
+2091 y Fu(\\tbput)132 b FB(horizontal)51 b(below)591 2214 y(Here)11
+b(is)h(an)g(example:)712 2339 y Fs(\\[)758 2399 y
+(\\setlength{\\arraycolsep}{1.1cm})758 2459 y(\\begin{array}{cc})803
+2520 y(\\Rnode{a}{\(X-A\)})20 b(&)j(\\Rnode{b}{A})e(\\\\[1.5cm])803
+2580 y(\\Rnode{c}{x})h(&)h(\\Rnode{d}{\\tilde{X}})758 2640
+y(\\end{array})591 2828 y Fp(Node)9 b(connection)g(labels:)h(II)888
+b(23)p eop
+%%Page: 24 24
+23 bop 758 50 a Fs(\\psset{nodesep=5pt,arrows=->})758 110 y
+(\\everypsbox{\\scriptstyle})758 170 y(\\ncline{a}{c}\\tlput{r})758
+230 y(\\ncline{a}{b}\\taput{u})758 291 y
+(\\ncline[linestyle=dashed]{c}{d}\\tbput{b})758 351 y
+(\\ncline{b}{d}\\trput{s})712 411 y(\\])720 585 y
+ tx@Dict begin gsave STV CP T 7.7818 2.03905 33.17723 16.58861 3.61267
+ tx@NodeDict begin /TheNodea 16 NewNode InitRnode end end grestore
+end
+ FB(\()p Ft(X)13
+b FB(\261)e Ft(A)p FB(\))1119 585 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 7.03876 3.51938 3.61267
+tx@NodeDict begin /TheNodeb 16 NewNode InitRnode end end grestore
+end
+ Ft(A)779 835 y
+ tx@Dict begin gsave STV CP T 5.0285 0.11519 5.18402 2.59201 3.61267
+ tx@NodeDict begin /TheNodec 16 NewNode InitRnode end end grestore
+end
+ Ft(x)1118
+835 y
+ tx@Dict begin gsave STV CP T 9.65956 0.0 7.29219 3.64609 3.61267
+tx@NodeDict begin /TheNoded 16 NewNode InitRnode end end grestore
+end
+ 1125 825 a FB(\304)1118 835 y Ft(X)1278 708 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodec
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 1278 708
+a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.50528 def
+/r 1.50528 def /h -0.26035 def /d 3.61267 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 1272 723 a Fc(r)1278 708 y
+ tx@Dict begin PutEnd end
+ 1278 708 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodeb
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 1278 708 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92001 def
+/r 1.92001 def /h -0.26035 def /d 3.68947 def /flag true def VPutAdjust
+LPutCoor end PutBegin end
+ 1270 723
+a Fc(u)1278 708 y
+ tx@Dict begin PutEnd end
+ 1278 708 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodec /TheNoded
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 5.0 3.0 -2 0 add
+DashLine grestore grestore end
+ 1278 708 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92001 def
+/r 1.92001 def /h 1.67888 def /d 3.68947 def /flag false def VPutAdjust
+LPutCoor end PutBegin end
+ 1270 723 a Fc(b)1278
+708 y
+ tx@Dict begin PutEnd end
+ 1278 708 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodeb /TheNoded
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 1278 708 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.49376 def
+/r 1.49376 def /h -0.26035 def /d 3.68947 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 1272 723 a Fc(s)1278 708 y
+ tx@Dict begin PutEnd end
+ 1408
+585 a
+ tx@Dict begin gsave STV CP T 7.7818 2.03905 33.17723 16.58861 2.87137
+ tx@NodeDict begin /TheNodea 16 NewNode InitRnode end end grestore
+end
+ FB(\()p Ft(X)h FB(\261)g Ft(A)p FB(\))1809 585 y
+ tx@Dict begin gsave STV CP T 5.0285 0.11519 5.76004 2.88002 2.45665
+ tx@NodeDict begin /TheNodeb 16 NewNode InitRnode end end grestore
+end
+ Ft(a)1466
+835 y
+ tx@Dict begin gsave STV CP T 5.0285 0.11519 5.18402 2.59201 2.45665
+ tx@NodeDict begin /TheNodec 16 NewNode InitRnode end end grestore
+end
+ Ft(x)1806 835 y
+ tx@Dict begin gsave STV CP T 9.65956 0.0 7.29219 3.64609 4.82977
+tx@NodeDict begin /TheNoded 16 NewNode InitRnode end end grestore
+end
+ 1813 825 a FB(\304)1806 835 y Ft(X)1966
+708 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodec
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 1966 708 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 1966 708 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 3.01057 3.35233
+0.0 NAngle 90 sub /a ED add 2 div /h ED 2 div /w ED /s a sin def /c
+a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse
+def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs w sub dup
+c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop add a PtoC
+h1 add exch w1 add exch } PutCoor PutBegin end
+ 1960 715 a Fc(r)1966 708 y
+ tx@Dict begin PutEnd end
+ 1966
+708 a
+ tx@Dict begin PutEnd end
+ 1966 708 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodeb
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 1966 708 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 1966 708 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 3.84003 3.35233
+0.0768 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1958 715 a Fc(u)1966
+708 y
+ tx@Dict begin PutEnd end
+ 1966 708 a
+ tx@Dict begin PutEnd end
+ 1966 708 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodec /TheNoded
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 5.0 3.0 -2 0 add
+DashLine grestore grestore end
+ 1966 708 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 1966 708 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 3.84003 5.29155
+0.0768 NAngle 90 sub /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1958 719
+a Fc(b)1966 708 y
+ tx@Dict begin PutEnd end
+ 1966 708 a
+ tx@Dict begin PutEnd end
+ 1966 708 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodeb /TheNoded
+InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 1966 708 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 1966 708
+a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 2.98753 3.35233
+0.0768 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1960 715 a Fc(s)1966 708 y
+ tx@Dict begin PutEnd end
+ 1966 708 a
+ tx@Dict begin PutEnd end
+ 599 938 a FB(On)d(the)g(left)g(is)g
+(the)g(diagram)h(with)e Fu(\\tlput)p FB(,)h Fu(\\trput)17 b(\\tbput)8
+b FB(and)h Fu(\\Rnode)p FB(,)g(as)g(shown)591 998 y(in)14 b(the)h(code.)24
+b(On)13 b(the)i(right)f(is)g(the)h(same)f(diagram,)i(but)e(with)g
+Fu(\\naput)22 b(\\nbput)591 1058 y FB(and)12 b Fu(\\rnode)p
+FB(.)591 1147 y(These)f(do)g(not)h(have)g(a)f(rotation)h(ar)o(gument)h(or)e
+(parameter)m(.)18 b(However)n(,)11 b(you)g(can)591 1207 y(rotate)e
+Fr(stuff)16 b FB(in)9 b(90)g(degree)h(increments)g(using)e(box)h(rotations)g
+(\(e.g.,)h Fu(\\rotateleft)p FB(\).)591 1296 y(If)e(you)g(set)g
+Fu(shortput=t)o(ablr)p FB(,)e(then)i(you)g(can)g(use)g(the)g(following)g
+(single-character)591 1356 y(abbreviations)k(for)g(the)g Fs(t)h
+FB(put)f(commands:)1099 1487 y Ft(Char)-5 b(.)48 b(Short)12
+b(for:)1190 1567 y Fs(\303)49 b Fu(\\taput)1181 1640 y Fs(_)g
+Fu(\\tbput)1180 1712 y Fs(<)g Fu(\\tlput)1180 1784 y Fs(>)g
+Fu(\\trput)591 1908 y FB(Y)-5 b(ou)11 b(can)h(change)h(the)f(character)h
+(abbreviations)g(with)712 2049 y FA(\\MakeShortT)l(ablr{)p
+Fx(char1)p FA(}{)p Fx(char2)t FA(}{)p Fx(char3)s FA(}{)p Fx(char)q(4)r
+FA(})591 2175 y FB(The)i Fs(t)h FB(put)f(commands,)i(including)f(an)f
+(example)i(of)e Fu(shortput=tablr)p FB(,)f(will)i(be)591 2235
+y(shown)10 b(further)i(when)g(we)g(get)g(to)g(mathematical)j(diagrams)d(and)g
+(trees.)591 2324 y Fb(Driver)d(notes:)44 b(The)11 b(node)g(macros)g(use)g
+Fa(\\pstV)n(erb)g Fb(and)g Fa(\\pstverbscale)p Fb(.)366 2519
+y FC(10)71 b(Attaching)19 b(labels)h(to)f(nodes)591 2640 y
+FB(The)12 b(command)591 2828 y Fp(Attaching)d(labels)h(to)g(nodes)899
+b(24)p eop
+%%Page: 25 25
+24 bop 712 50 a FA(\\nput)p Fz(*[)p Fy(par)5 b Fz(])p FA({)p
+Fx(refangle)r FA(}{)p Fx(name)r FA(}{)p Fx(stuf)o(f)h FA(})591
+171 y FB(af)o(\256xes)14 b Fr(stuff)21 b FB(to)15 b(node)g
+Fr(name)q FB(.)24 b(It)15 b(is)f(positioned)h(distance)h Fu(labelsep)e
+FB(from)g(the)591 231 y(node,)8 b(in)h(the)g(direction)g Fr(refangle)f
+FB(from)g(the)g(center)i(of)e(the)g(node.)16 b(The)9 b(algorithm)591
+291 y(is)i(the)i(same)f(as)g(for)g Fu(\\uput)p FB(.)17 b(If)11
+b(you)h(want)g(to)g(rotate)h(the)f(node,)g(set)g(the)712 413
+y FA(rot=)p Fx(rot)831 b Fv(Default:)20 b FA(0)591 534 y FB(parameter)n(,)e
+(where)d Fr(rot)k FB(is)d(a)g(rotation)h(that)f(would)g(be)g(valid)g(for)g
+Fu(\\rput)p FB(.)1828 516 y Fi(7)1874 534 y FB(The)591 594
+y(position)f(of)h(the)f(label)i(also)e(takes)h(into)g(account)g(the)g
+Fu(offsetA)f FB(parameter)m(.)29 b(If)591 654 y Fu(labelsep)16
+b FB(is)g(negative,)j(then)e(the)g(distance)g(is)f(from)h(the)g(center)g(of)g
+(the)g(node)591 714 y(rather)12 b(than)g(from)g(the)h(boundary)m(,)e(as)h
+(with)g Fu(nodesep)p FB(.)591 802 y(Here)f(is)h(how)g(I)f(used)h
+Fu(\\nput)g FB(to)g(mark)g(an)g(angle)h(in)f(a)g(previous)g(example:)397
+1232 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeB 14 NewNode
+/X 17.7582 def /Y 3.81314 def /w 28.91011 def /h 9.41168 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 28.91011 CLW 2
+div sub 9.41168 CLW 2 div sub 17.7582 3.81314 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial FB(Node)f(B)118
+949 y
+ tx@Dict begin gsave STV CP T 11.5818 3.95552 43.75 21.875 3.81314
+ tx@NodeDict begin /TheNodeA 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial FB(Node)g(A)118
+1255 y
+ tx@Dict begin { tx@NodeDict begin tx@NodeDict /TheNodeA known { 0.0
+-70. 0.0 /TheNodeA load GetEdge } { CP } ifelse end } PutCoor PutBegin
+ end
+ 118 1255 a
+ tx@Dict begin { 0.0 0.0 0.0 0.0 -70. /a ED add 2 div /h ED 2 div
+/w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED
+{ pop } { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h
+mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs
+} ifelse /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div
+s mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add
+} { q { x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch
+w1 add exch } PutCoor PutBegin end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 0.0 /y ED /x ED /r 11.38092 def /c 57.2957 r Div
+def /angleA 0. 0.0 c mul 2 div sub def /angleB -70. 0.0 c mul 2 div
+add def x y r angleA angleB arcn gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 118
+1255 a
+ tx@Dict begin { 11.38092 30.63216 7.21277 2.15988 -35. /a ED add
+2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2
+copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul
+def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs
+h sub dup s mul abs } ifelse /z ED abs /y ED /x ED q { x s div c mul
+abs y gt } { x c div s mul abs y gt } ifelse { x x mul y y mul sub
+z z mul add sqrt z add } { q { x s div } { x c div } ifelse abs } ifelse
+a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 55 1265 a Fs(angleA)118 1255 y
+ tx@Dict begin PutEnd end
+ 118 1255 a
+ tx@Dict begin PutEnd end
+ 118 1255 a
+ tx@Dict begin PutEnd end
+
+118 1255 a
+ tx@Dict begin gsave STV newpath 1.2 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeA /TheNodeB InitNC { tx@Dict begin /Lineto /lineto load
+def false pop end /AngleA -70. def /AngleB 90. def /armA 10.0 def /armB
+28.45274 def NCAngle } if end gsave 1.2 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 118 1255 a
+ tx@Dict begin tx@NodeDict begin /t 1. def LPut end PutBegin end
+ 118 1255 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 0.0 0.0 9.95863
+9.95863 0 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+
+@endspecial 118 1255 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 1255 a
+ tx@Dict begin PutEnd end
+ 712 908 a Fs
+(\\rput[br]\(4,0\){\\ovalnode{B}{Node)19 b(B}})712 968 y
+(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)h(A}}})712
+1028 y(\\nput[labelsep=0]{-70}{A}{\045)758 1088 y
+(\\psarcn\(0,0\){.4cm}{0}{-70)o(})758 1148 y(\\uput{.4cm}[-35]\(0,0\){{\\tt)h
+(angleA}}})712 1209 y
+(\\ncangle[angleA=-70,angleB=90,armB=1cm,linewidth=1.2pt]{A}{B})712
+1269 y(\\ncput[nrot=:U,npos=1]{\\psframe[dimen=middle]\(0,0\)\(.35,.35\)})366
+1472 y FC(1)l(1)71 b(Mathematical)19 b(diagrams)h(and)g(graphs)591
+1592 y FB(For)c(some)g(applications,)j(such)d(as)h(mathematical)i(diagrams)e
+(and)g(graphs,)g(it)591 1652 y(is)e(useful)h(to)h(arrange)f(nodes)g(on)g(a)g
+(grid.)29 b(Y)-5 b(ou)16 b(can)g(do)g(this)g(with)h(alignment)591
+1713 y(environments,)g(such)f(as)g(T)1061 1723 y(E)1085 1713
+y(X')m(s)f Fs(\\halign)p FB(primitive,)j(L)1504 1707 y(a)1518
+1713 y(T)1539 1728 y(E)1563 1713 y(X')m(s)e Fs(tabular)f FB(environ-)591
+1773 y(ment,)d(and)f(AMS-T)932 1783 y(E)954 1773 y(X')m(s)g
+Fs(\\matrix)p FB(,)h(but)g(PST)n(ricks)f(contains)h(its)g(own)f(alignment)591
+1833 y(environment)h(that)h(is)f(especially)h(adapted)g(for)e(this)h
+(purpose:)712 1969 y FA(\\psmatrix)i(...)k(\\endpsmatrix)591
+2090 y FB(Here)11 b(is)h(an)g(example)397 2202 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 7.03876 3.51938 3.61267
+tx@NodeDict begin /TheNodeM-1-1-2 16 NewNode InitRnode end end grestore
+end
+ Ft(A)247 2380
+y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 7.03876 3.51938 3.61267
+tx@NodeDict begin /TheNodeM-1-2-1 16 NewNode InitRnode end end grestore
+end
+ Ft(B)397 2380 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 7.03876 3.51938 3.61267
+tx@NodeDict begin /TheNodeM-1-2-2 16 NewNode InitRnode end end grestore
+end
+ Ft(E)547 2380 y
+ tx@Dict begin gsave STV CP T 7.55716 0.21887 7.68388 3.84193 3.61267
+ tx@NodeDict begin /TheNodeM-1-2-3 16 NewNode InitRnode end end grestore
+end
+ Ft(C)394 2558 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 8.31749 4.15874 3.61267
+tx@NodeDict begin /TheNodeM-1-3-2 16 NewNode InitRnode end end grestore
+end
+ Ft(D)712
+2197 y Fs($)712 2257 y(\\psmatrix[colsep=1cm,rowsep=1cm])803
+2317 y(&)23 b(A)g(\\\\)758 2377 y(B)g(&)g(E)g(&)g(C)g(\\\\)803
+2438 y(&)g(D)g(&)712 2498 y(\\endpsmatrix)712 2558 y($)p 591
+2594 544 2 v 646 2625 a Fh(7)662 2640 y Fg(Not)10 b(to)g(be)g(confused)e
+(with)i(the)g Fd(nput)g Fg(parameter)n(.)591 2828 y Fp(Mathematical)g
+(diagrams)f(and)h(graphs)733 b(25)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/graphics/pstricks/doc/betadoc2.ps b/obsolete/graphics/pstricks/doc/betadoc2.ps
new file mode 100644
index 0000000000..582e04852c
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/betadoc2.ps
@@ -0,0 +1,4899 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.491 Copyright 1986, 1992 Radical Eye Software
+%%Title: doc.dvi
+%%Pages: 26 1
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Times-Roman Helvetica-Bold Helvetica Helvetica-Oblique
+%%+ Times-Italic Helvetica-BoldOblique Times-Bold Symbol
+%%EndComments
+%DVIPSCommandLine: dvips -p26 -Pport doc -o pst-doc2.ps
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
+S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div
+/hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley
+0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
+product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
+(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
+rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
+ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
+/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
+B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
+rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
+B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
+/eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1993/3/12. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+pathforall z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
+sub y mul setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
+stroke /y1 y1 a add def } repeat grestore } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap systemdict /currentstrokeadjust known {
+currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
+0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
+bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
+repeat grestore } def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
+/SD { 0 360 arc fill } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
+c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
+div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
+div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
+def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
+div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
+div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
+{ 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
+def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
+b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
+add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
+f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
+add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
+setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
+cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
+moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
+add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
+if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
+h add def } loop grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+CP 4 2 roll T moveto } def
+/PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
+moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
+/IfVisible false def } if } ifelse } def
+/InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
+grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
+end
+%%EndProcSet
+%%BeginProcSet: psn-beta.pro
+%!
+% PostScript prologue for psn-beta.tex.
+% Created 1993/4/16. Source file was psn-beta.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@NodeDict 400 dict def tx@NodeDict begin
+tx@Dict begin /T /translate load def end
+/NewNode { dict dup 3 -1 roll ED begin /NodeMtrx CM def } def
+/InitPnode { /Y ED /X ED /NodePos { Nodesep Cos mul Nodesep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { Nodesep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r Nodesep add def } { /dx l Nodesep sub def
+} ifelse Sin 0 gt { /dy u Nodesep add def } { /dy d Nodesep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /Y ED /X ED X sub /r ED /l X neg def Y add neg /d ED Y sub
+/u ED /NodePos { GetRnodePos } def } def
+/DiaNodePos { w h mul w Sin mul abs h Cos mul abs add Div Nodesep add dup
+Cos mul exch Sin mul } def
+/TriNodePos { Sin s lt { d Nodesep sub dup Cos mul Sin Div exch } { w h
+mul w Sin mul h Cos abs mul add Div Nodesep add dup Cos mul exch Sin mul
+} ifelse } def
+/InitTriNode { sub 2 div exch 2 div exch 2 copy T 2 copy 4 index index /d
+ED pop pop pop pop -90 mul rotate /NodeMtrx CM def /X 0 def /Y 0 def d
+sub abs neg /d ED d add /h ED 2 div h mul h d sub Div /w ED /s d w Atan
+sin def /NodePos { TriNodePos } def } def
+/OvalNodePos { /ww w Nodesep add def /hh h Nodesep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/AddOffset { 1 index 0 eq { pop pop } { 2 copy 5 2 roll cos mul add 4 1
+roll sin mul sub exch } ifelse } def
+/GetEdge { begin /Nodesep ED dup 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED Nodesep 0 ge { NodePos } {
+Nodesep neg dup Cos mul exch Sin mul } ifelse Y add exch X add exch
+NodeMtrx transform CM itransform end 4 2 roll AddOffset } def
+/GetPos { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED OffsetB
+AngleB NodesepB nodeB GetEdge /y2 ED /x2 ED } def
+/GetArmA { armA 0 lt { xA yA OffsetA AngleA AddOffset } { x1 y1 } ifelse
+armA abs AngleA sin mul add /y1a ED armA abs AngleA cos mul add /x1a ED
+} def
+/GetArmB { armB 0 lt { xB yB OffsetB AngleB AddOffset } { x2 y2 } ifelse
+armB abs AngleB sin mul add /y2a ED armB abs AngleB cos mul add /x2a ED
+} def
+/InitNC { /b ED /a ED /NodesepB ED /NodesepA ED /OffsetB ED /OffsetA ED
+tx@NodeDict a known tx@NodeDict b known and dup { /nodeA a load def
+/nodeB b load def nodeA GetCenter /yA ED /xA ED nodeB GetCenter /yB ED
+/xB ED } if } def
+/LPutLine { 4 copy 3 -1 roll sub neg 3 1 roll sub Atan /NAngle ED 1 t sub
+mul 3 1 roll 1 t sub mul 4 1 roll t mul add /Y ED t mul add /X ED } def
+/LPutLines { mark LPutVar counttomark 2 div 1 sub /n ED t floor dup n gt
+{ pop n 1 sub /t 1 def } { dup t sub neg /t ED } ifelse cvi 2 mul { pop
+} repeat LPutLine cleartomark } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan /NAngle ED /Y ED /X ED } def
+/HPosBegin { yB yA ge { /t 1 t sub def } if /Y yB yA sub t mul yA add def
+} def
+/HPosEnd { /X Y yA sub yB yA sub Div xB xA sub mul xA add def /NAngle yB
+yA sub xB xA sub Atan def } def
+/HPutLine { HPosBegin /yA ED /xA ED /yB ED /xB ED HPosEnd } def
+/HPutLines { HPosBegin yB yA ge { /check { ge } def } { /check { lt } def
+} ifelse mark xB yB LPutVar { dup Y check { exit } { /yA ED /xA ED }
+ifelse } loop /yB ED /xB ED cleartomark HPosEnd } def
+/VPosBegin { xB xA lt { /t 1 t sub def } if /X xB xA sub t mul xA add def
+} def
+/VPosEnd { /Y X xA sub xB xA sub Div yB yA sub mul yA add def /NAngle yB
+yA sub xB xA sub Atan def } def
+/VPutLine { VPosBegin /yA ED /xA ED /yB ED /xB ED VPosEnd } def
+/VPutLines { VPosBegin xB xA ge { /check { ge } def } { /check { lt } def
+} ifelse mark xB yB LPutVar { 1 index X check { exit } { /yA ED /xA ED }
+ifelse } loop /yB ED /xB ED cleartomark VPosEnd } def
+/HPutCurve { gsave newpath /SaveLPutVar /LPutVar load def LPutVar 8 -2
+roll moveto curveto flattenpath /LPutVar [ {} {} {} {} pathforall ] cvx
+def grestore exec /LPutVar /SaveLPutVar load def } def
+/NCCoor { /AngleA yB yA sub xB xA sub Atan def /AngleB AngleA 180 add def
+GetPos /LPutVar [ x2 y2 x1 y1 ] cvx def /LPutPos { LPutVar LPutLine }
+def /HPutPos { LPutVar HPutLine } def /VPutPos { LPutVar VPutLine } def
+LPutVar } def
+/NCLine { NCCoor tx@Dict begin ArrowA CP 4 2 roll ArrowB lineto pop pop
+end } def
+/NCCurve { GetPos x1 x2 sub y1 y2 sub Pyth 2 div dup 3 -1 roll mul /armA
+ED mul /armB ED GetArmA GetArmB x1a y1a x1 y1 tx@Dict begin ArrowA end
+x2a y2a x2 y2 tx@Dict begin ArrowB end curveto /LPutVar [ x1 y1 x1a y1a
+x2a y2a x2 y2 ] cvx def /LPutPos { t LPutVar BezierMidpoint } def
+/HPutPos { { HPutLines } HPutCurve } def /VPutPos { { VPutLines }
+HPutCurve } def } def
+/NCAngles { GetPos GetArmA GetArmB /mtrx AngleA matrix rotate def x1a y1a
+mtrx transform pop x2a y2a mtrx transform exch pop mtrx itransform /y0
+ED /x0 ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne {
+x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a y2a x0 y0
+x1a y1a x1 y1 ] cvx def /LPutPos { LPutLines } def /HPutPos { HPutLines
+} def /VPutPos { VPutLines } def } def
+/NCAngle { GetPos GetArmB /mtrx AngleA matrix rotate def x2a y2a mtrx
+itransform pop x1 y1 mtrx itransform exch pop mtrx transform /y0 ED /x0
+ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1 tx@Dict begin false
+Line end /LPutVar [ x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCBar { GetPos GetArmA GetArmB /mtrx AngleA matrix rotate def x1a y1a
+mtrx itransform pop x2a y2a mtrx itransform pop sub dup 0 mtrx transform
+3 -1 roll 0 gt { /y2a exch y2a add def /x2a exch x2a add def } { /y1a
+exch neg y1a add def /x1a exch neg x1a add def } ifelse mark armB 0 ne {
+x2 y2 } if x2a y2a x1a y1a armA 0 ne { x1 y1 } if tx@Dict begin false
+Line end /LPutVar [ x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def /LPutPos {
+LPutVar LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines
+} def } def
+/NCDiag { GetPos GetArmA GetArmB mark armB 0 ne { x2 y2 } if x2a y2a x1a
+y1a armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2
+x2a y2a x1a y1a x1 y1 ] cvx def /LPutPos { LPutLines } def /HPutPos {
+HPutLines } def /VPutPos { VPutLines } def } def
+/NCDiagg { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED GetArmA yB
+y1a sub xB x1a sub Atan 180 add /AngleB ED OffsetB AngleB NodesepB nodeB
+GetEdge /y2 ED /x2 ED mark x2 y2 x1a y1a armA 0 ne { x1 y1 } if tx@Dict
+begin false Line end /LPutVar [ x2 y2 x1a y1a x1 y1] cvx def /LPutPos {
+LPutLines } def /HPutPos { HPutLines } def /VPutPos { VPutLines } def }
+def
+/NCLoop { GetPos GetArmA GetArmB /mtrx AngleA matrix rotate def x1a y1a
+mtrx transform loopsize add /y1b ED /x1b ED /x2b x2a y2a mtrx transform
+pop def x2b y1b mtrx itransform /y2b ED /x2b ED x1b y1b mtrx itransform
+/y1b ED /x1b ED mark armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a
+y1a armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2
+x2a y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def /LPutPos { LPutLines }
+def /HPutPos { HPutLines } def /VPutPos { VPutLines } def } def
+/NCCircle { 0 0 NodesepA nodeA GetEdge pop xA sub 2 div dup 2 exp r r mul
+sub abs sqrt atan 2 mul /a ED r AngleA 90 add PtoC yA add exch xA add
+exch 2 copy /LPutVar [ 4 2 roll r a ] def /LPutPos { LPutVar aload pop t
+360 mul add dup 5 1 roll 90 sub PtoC 3 -1 roll add 3 1 roll add exch 3
+-1 roll } def /HPutPos { LPutPos } def /VPutPos { LPutPos } def r AngleA
+90 sub a add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r
+ED /c 57.2957 r Div def /y ED /x ED } def
+/NCBox { /d ED /h ED /AngleB yB yA sub xB xA sub Atan def /AngleA AngleB
+180 add def GetPos /dx d AngleB sin mul def /dy d AngleB cos mul neg def
+/hx h AngleB sin mul neg def /hy h AngleB cos mul def /LPutVar [ x1 hx
+add y1 hy add x2 hx add y2 hy add x2 dx add y2 dy add x1 dx add y1 dy
+add ] cvx def /LPutPos { LPutLines } def /HPutPos { xB yB xA yA LPutLine
+} def /VPutPos { HPutPos } def mark LPutVar tx@Dict begin false Polygon
+end } def
+/NCArcBox { /l ED neg /d ED /h ED /a ED /AngleA yB yA sub xB xA sub Atan
+def /AngleB AngleA 180 add def /tA AngleA a sub 90 add def /tB tA a 2
+mul add def /r xB xA sub tA cos tB cos sub Div dup 0 eq { pop 1 } if def
+/x0 xA r tA cos mul add def /y0 yA r tA sin mul add def /c 57.2958 r div
+def /AngleA AngleA a sub 180 add def /AngleB AngleB a add 180 add def
+GetPos /AngleA tA 180 add yA y1 sub xA x1 sub Pyth c mul sub def /AngleB
+tB 180 add yB y2 sub xB x2 sub Pyth c mul add def l 0 eq { x0 y0 r h add
+AngleA AngleB arc x0 y0 r d add AngleB AngleA arcn } { x0 y0 translate
+/tA AngleA l c mul add def /tB AngleB l c mul sub def 0 0 r h add tA tB
+arc r h add AngleB PtoC r d add AngleB PtoC 2 copy 6 2 roll l arcto 4 {
+pop } repeat r d add tB PtoC l arcto 4 { pop } repeat 0 0 r d add tB tA
+arcn r d add AngleA PtoC r h add AngleA PtoC 2 copy 6 2 roll l arcto 4 {
+pop } repeat r h add tA PtoC l arcto 4 { pop } repeat } ifelse closepath
+/LPutVar [ x0 y0 r AngleA AngleB h d ] cvx def /LPutPos { LPutVar /d ED
+/h ED /AngleB ED /AngleA ED /r ED /y0 ED /x0 ED t 1 le { r h add AngleA
+1 t sub mul AngleB t mul add dup 90 add /NAngle ED PtoC } { t 2 lt {
+/NAngle AngleB 180 add def r 2 t sub h mul t 1 sub d mul add add AngleB
+PtoC } { t 3 lt { r d add AngleB 3 t sub mul AngleA 2 t sub mul add dup
+90 sub /NAngle ED PtoC } { /NAngle AngleA 180 add def r 4 t sub d mul t
+3 sub h mul add add AngleA PtoC } ifelse } ifelse } ifelse y0 add /Y ED
+x0 add /X ED } def /HPutPos { LPutPos } def /VPutPos { LPutPos } def }
+def
+/Tfan { /AngleA yB yA sub xB xA sub Atan def OffsetA AngleA NodesepA
+nodeA GetEdge /y1 ED /x1 ED w x1 xB sub y1 yB sub Pyth Pyth w Div CLW 2
+div mul 2 div dup AngleA sin mul y1 add /y1 ED AngleA cos mul x1 add /x1
+ED /LPutVar [ x1 y1 m { xB w add yB xB w sub yB } { xB yB w sub xB yB w
+add } ifelse x1 y1 ] cvx def /LPutPos { LPutLines } def /VPutPos@ {
+LPutVar flag { 8 4 roll pop pop pop pop } { pop pop pop pop 4 2 roll }
+ifelse } def /VPutPos { VPutPos@ VPutLine } def /HPutPos { VPutPos@
+HPutLine } def mark LPutVar tx@Dict begin /ArrowA { moveto } def /ArrowB
+{ } def false Line closepath end } def
+/LPutCoor { NAngle tx@Dict begin /NAngle ED end gsave CM STV CP Y sub neg
+exch X sub neg exch moveto setmatrix CP grestore } def
+/LPut { tx@NodeDict /LPutPos known { LPutPos } { CP /Y ED /X ED /NAngle 0
+def } ifelse LPutCoor } def
+/HPutAdjust { Sin Cos mul 0 eq { 0 } { d Cos mul Sin div flag not { neg }
+if h Cos mul Sin div flag { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { r add neg } { l add } ifelse X add /X ED }
+def
+/VPutAdjust { Sin Cos mul 0 eq { 0 } { l Sin mul Cos div flag { neg } if
+r Sin mul Cos div flag not { neg } if 2 copy gt { pop } { exch pop }
+ifelse } ifelse s add flag { d add } { h add neg } ifelse Y add /Y ED }
+def
+end
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index
+/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5
+-1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin
+Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{
+FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics /Metrics
+currentdict end def[2 index currentdict end definefont 3 -1 roll makefont
+/setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4
+index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding
+exch def}def end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 134[29
+6[19 5[16 6[25 29 25 1[25 14[38 1[32 1[41 1[35 19[29 2[29 29
+29 29 29 29 1[14 19 14 2[19 19 40[{}23 57.600342 /Times-Roman
+rf /Fb 139[16 19 21 2[24 2[13 2[13 27 24 1[21 27 36[24 63[{}11
+48.000336 /Times-Bold rf /Fc 140[47 33 12[47 16[52 84[{}4 85.007408
+/Helvetica-Bold rf /Fd 182[102 73[{}1 368.041595 /Helvetica-Bold
+rf /Fe 138[19 9 17 11 1[19 19 19 1[8 2[8 2[9 19 2[19 19 97[{}13
+34.166969 /Helvetica-Oblique rf /Ff 130[11 1[11 5[19 9 3[19
+3[8 14[9 9 9 8[25 5[19 27[19 3[9 2[11 11 40[{}15 34.166969
+/Helvetica rf /Fg 138[21 11 3[21 3[9 15[9 9[25 4[28 21 76[{}8
+34.166969 /Helvetica-Bold rf /Fh 134[20 20 29 20 20 11 16 13
+20 20 20 20 31 11 20 1[11 20 20 13 18 20 18 20 18 12[24 22
+2[22 6[13 26[10 13 10 44[{}31 40.000278 /Times-Roman rf /Fi
+199[14 56[{}1 28.000196 /Times-Roman rf /Fj 199[16 3[16 1[16
+16 49[{}4 32.000225 /Times-Roman rf /Fk 139[14 25 16 1[27 27
+27 1[11 2[11 1[27 14 27 2[27 27 97[{}13 49.200378 /Helvetica-Oblique
+rf /Fl 130[16 1[16 29[14 1[14 48[19 42[{}5 49.200378 /Helvetica
+rf /Fm 136[55 39 43 24 39 27 1[43 43 43 63 20 2[20 1[43 1[39
+43 39 43 39 12[43 4[55 51 8[47 51 11[39 39 39 39 39 39 39 39
+49[{}31 70.862267 /Helvetica-Bold rf /Fn 152[22 15 19 22 19
+22 19 18[32 1[27 32 2[32 72[{}11 43.800289 /Times-Roman rf
+/Fo 138[32 19 7[16 5[19 25 3[29 28[41 9[19 58[{}8 57.600342
+/Times-Bold rf /Fp 134[27 3[30 16 27 19 1[30 30 30 44 14 2[14
+30 30 16 27 30 27 30 27 11[35 2[35 5[30 7[35 17[27 27 1[14
+4[19 16 16 40[{}29 49.200378 /Helvetica-BoldOblique rf /Fq
+59[16 20[30 30 48[19 1[19 25 27 27 38 27 30 16 27 19 1[30 30
+30 44 14 27 1[14 30 30 16 27 30 27 30 27 4[14 7[30 33 35 4[41
+9[35 35 35 3[29 5[27 1[27 2[27 27 2[14 16 3[16 16 40[{}46 49.200378
+/Helvetica-Bold rf /Fr 138[21 10 19 12 1[21 21 21 31 8 2[8
+21 21 1[21 21 19 21 21 12[23 4[29 27 31 7[25 27 10[21 21 21
+21 21 21 21 21 21 21 48[{}33 37.412769 /Helvetica rf /Fs 1
+3 df<800002C0000660000C3000181800300C00600600C003018001830000C600006C00003800
+003800006C0000C6000183000301800600C00C006018003030001860000CC00006800002171878
+9727>2 D E /Ft 134[14 14 6[16 16 7[16 16 9 11[18 90[{}8 32.000225
+/Times-Italic rf /Fu 133[19 21 21 32 21 24 13 19 19 1[24 24
+24 35 13 21 13 13 24 24 13 21 24 21 24 24 6[27 27 29 1[29 35
+9[32 21 1[35 4[32 4[32 1[32 13[12 46[{}37 48.000336 /Times-Italic
+rf /Fv 136[29 1[23 11 20 14 1[23 23 23 34 9 2[9 1[23 11 23
+23 20 23 23 30[27 27 23[14 14 40[{}22 41.000366 /Helvetica-Oblique
+rf /Fw 59[14 14 20[20 48[14 11 14 20 20 20 29 20 23 11 20 14
+23 23 23 23 34 9 20 9 9 23 23 11 23 23 20 23 23 1[23 1[11 11
+11 25 27 27 2[29 25 27 29 1[27 32 29 34 23 27 20 1[29 2[27
+29 29 27 27 2[24 24 24 1[11 23 23 23 23 23 23 23 23 23 23 1[11
+14 11 1[16 14 14 1[27 36 23 23 35[{}80 41.000366 /Helvetica
+rf /Fx 80[25 25 51[20 23 23 1[23 25 14 23 16 1[25 25 25 36
+11 23 1[11 25 25 14 23 25 23 25 23 4[11 7[25 1[29 4[34 25 8[29
+1[29 3[24 12[23 48[{}34 41.000366 /Helvetica-Bold rf /Fy 59[16
+9[21 10[27 27 3[21 47[21 24 24 35 24 24 13 19 16 24 24 24 24
+37 13 24 13 13 24 24 16 21 24 21 24 21 6[29 35 35 45 35 35
+29 27 32 1[27 35 35 43 29 2[16 35 1[27 29 35 32 32 35 5[13
+13 3[24 1[24 1[24 24 24 13 12 16 12 2[16 16 16 39[{}67 48.000336
+/Times-Roman rf /Fz 72[22 19[26 163[{}2 48.249817 /Symbol rf
+end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 26 1
+0 bop 591 50 a Fy(As)7 b(an)g(alignment)g(environment,)j Fx(\\psmatrix)d
+Fy(is)g(similar)g(to)g(AMS-T)1717 61 y(E)1741 50 y(X')m(s)g
+Fw(\\matrix)p Fy(.)591 110 y(There)12 b(is)h(no)f(ar)o(gument)h(for)f
+(specifying)h(the)g(columns.)18 b(Instead,)13 b(you)f(can)h(just)591
+170 y(use)8 b(as)h(many)h(columns)f(as)g(you)g(need.)16 b(The)10
+b(entries)f(are)h(horizontally)g(centered.)591 230 y(Rows)g(are)j(ended)f(by)
+g Fw(\\\\)p Fy(.)18 b Fx(\\psmatrix)11 b Fy(can)i(be)f(used)f(in)h(or)g(out)g
+(of)g(math)h(mode.)591 320 y(Our)f(\256rst)h(example)h(wasn')o(t)g(very)f
+(interesting,)h(because)g(we)f(didn')o(t)h(make)g(use)591 380
+y(of)f(the)i(nodes.)22 b(Actually)m(,)15 b(each)f(entry)g(is)g(a)g(node.)23
+b(The)14 b(name)h(of)f(the)g(node)g(in)591 440 y(row)h Fv(row)20
+b Fy(and)d(column)f Fv(col)k Fy(is)d Fw({)p Fv(row)t Fw(,)p
+Fv(col)s Fw(})p Fy(,)g(with)f(no)h(spaces.)30 b(Let')m(s)17
+b(see)f(some)591 500 y(node)11 b(connections:)548 882 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 7.29219 3.64609 3.61267
+tx@NodeDict begin /TheNodeM-1-1-2 16 NewNode InitRnode end end grestore
+end
+ Fu(X)402
+1119 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 6.91202 3.45601 3.61267
+tx@NodeDict begin /TheNodeM-1-2-1 16 NewNode InitRnode end end grestore
+end
+ Fu(Y)550 1119 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 6.69315 3.34657 3.61267
+tx@NodeDict begin /TheNodeM-1-2-2 16 NewNode InitRnode end end grestore
+end
+ Fu(Z)579 1104 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-1-2
+/TheNodeM-1-2-1 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 579 1104 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.5936 def
+/r 1.5936 def /h 1.67888 def /d 5.20628 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 572 1119
+a Ft(f)579 1104 y
+ tx@Dict begin PutEnd end
+ 579 1104 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-1-2
+/TheNodeM-1-2-2 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 579 1104 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92001 def
+/r 1.92001 def /h -0.26035 def /d 5.20628 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 571 1119 a Ft(g)579
+1104 y
+ tx@Dict begin PutEnd end
+ 579 1104 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-2-1
+/TheNodeM-1-2-2 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+3.0 -2 0 add DotLine grestore grestore end
+ 579 1104 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92001 def
+/r 1.92001 def /h 1.67888 def /d 3.68947 def /flag false def VPutAdjust
+LPutCoor end PutBegin end
+ 571 1119 a Ft(h)579 1104 y
+ tx@Dict begin PutEnd end
+ 712
+607 a Fw($)712 667 y(\\psmatrix[colsep=1cm])803 727 y(&)23
+b(X)g(\\\\)758 788 y(Y)g(&)g(Z)712 848 y(\\endpsmatrix)712
+908 y(\\everypsbox{\\scriptstyle}\045)712 968 y
+(\\psset{nodesep=3pt,arrows=->})712 1028 y(\\ncline{1,2}{2,1})712
+1089 y(\\tlput{f})712 1149 y(\\ncline{1,2}{2,2})712 1209 y(\\trput{g})712
+1269 y(\\ncline[linestyle=dotted]{2,1}{2,2})712 1329 y(\\tbput{h})712
+1390 y($)591 1525 y Fy(Y)-5 b(ou)14 b(can)h(include)h(the)g(node)f
+(connections)g(inside)g(the)h Fx(\\psmatrix)p Fy(,)f(in)g(the)g(last)591
+1586 y(entry)10 b(and)h(right)f(before)h Fx(\\endpsmatrix)p
+Fy(.)16 b(One)10 b(advantage)h(to)f(doing)g(this)h(is)f(that)591
+1646 y Fx(shortput=tab)f Fy(is)j(the)h(default)f(within)g(a)h
+Fx(\\psmatrix)p Fy(.)18 1947 y
+ tx@Dict begin gsave STV CP T 7.55716 0.21887 8.60548 4.30273 3.61267
+ tx@NodeDict begin /TheNodeM-1-1-1 16 NewNode InitRnode end end grestore
+end
+ Fu(U)231 2185 y
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 33.8329 16.91644 3.61267
+ tx@NodeDict begin /TheNodeM-1-2-2 16 NewNode InitRnode end end grestore
+end
+ Fu(X)f Fs(\002)311
+2192 y Ft(Z)342 2185 y Fu(Y)548 2185 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 7.29219 3.64609 3.61267
+tx@NodeDict begin /TheNodeM-1-2-3 16 NewNode InitRnode end end grestore
+end
+ Fu(X)287 2422 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 6.91202 3.45601 3.61267
+tx@NodeDict begin /TheNodeM-1-3-2 16 NewNode InitRnode end end grestore
+end
+ Fu(Y)550
+2422 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 6.69315 3.34657 3.61267
+tx@NodeDict begin /TheNodeM-1-3-3 16 NewNode InitRnode end end grestore
+end
+ Fu(Z)578 2422 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-1-1
+/TheNodeM-1-2-2 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 578 2422 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.70497 def
+/r 1.70497 def /h -0.26035 def /d 5.20628 def /flag false def VPutAdjust
+LPutCoor end PutBegin end
+ 571 2437 a Ft(y)578 2422
+y
+ tx@Dict begin PutEnd end
+ 578 2422 a
+ tx@Dict begin gsave STV newpath 2.6 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeM-1-1-1 /TheNodeM-1-2-3 InitNC { NCLine } if end gsave
+2.6 SLW 0. setgray 5.0 3.0 0 0 add DashLine grestore gsave 1.0 SLW
+1. setgray stroke grestore gsave grestore grestore end
+ 578 2422 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.728 def
+/r 1.728 def /h -0.26035 def /d 3.68947 def /flag true def VPutAdjust
+LPutCoor end PutBegin end
+ 571 2437 a Ft(x)578 2422 y
+ tx@Dict begin PutEnd end
+ 578 2422
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-2-2
+/TheNodeM-1-3-2 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 578 2422 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92001 def
+/r 1.92001 def /h -0.26035 def /d 5.20628 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 570 2437 a Ft(q)578 2422 y
+ tx@Dict begin PutEnd end
+ 578 2422 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-2-2
+/TheNodeM-1-2-3 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 578 2422
+a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92001 def
+/r 1.92001 def /h -0.26035 def /d 5.20628 def /flag false def VPutAdjust
+LPutCoor end PutBegin end
+ 570 2437 a Ft(p)578 2422 y
+ tx@Dict begin PutEnd end
+ 578 2422 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-2-3
+/TheNodeM-1-3-3 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 578 2422 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.5936 def
+/r 1.5936 def /h 1.67888 def /d 5.20628 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 571 2437
+a Ft(f)578 2422 y
+ tx@Dict begin PutEnd end
+ 578 2422 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-3-2
+/TheNodeM-1-3-3 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 578 2422 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92001 def
+/r 1.92001 def /h -0.26035 def /d 5.20628 def /flag false def VPutAdjust
+LPutCoor end PutBegin end
+ 570 2437 a Ft(g)578
+2422 y
+ tx@Dict begin PutEnd end
+ 712 1761 a Fw($)758 1821 y(\\begin{psmatrix})803 1881
+y(U)24 b(\\\\)849 1941 y(&)45 b(X\\times_Z)24 b(Y)f(&)g(X)g(\\\\)849
+2002 y(&)136 b(Y)159 b(&)23 b(Z)803 2062 y(\\psset{arrows=->,nodesep=3pt})803
+2122 y(\\everypsbox{\\scriptstyle})803 2182 y(\\ncline{1,1}{2,2}_{y})803
+2242 y(\\ncline[doubleline=true,linestyle=dashed]{-}{1)o(,1}{2,3})o(\303{)o
+(x})803 2303 y(\\ncline{2,2}{3,2}<{q})803 2363 y(\\ncline{2,2}{2,3}_{p})803
+2423 y(\\ncline{2,3}{3,3}>{f})803 2483 y(\\ncline{3,2}{3,3}_{g})758
+2543 y(\\end{psmatrix})712 2604 y($)591 2828 y Fr(Mathematical)10
+b(diagrams)f(and)h(graphs)733 b(26)p eop
+%%Page: 27 2
+1 bop 591 50 a Fy(Y)-5 b(ou)11 b(can)h(change)h(the)f(kind)g(of)g(nodes)f
+(that)i(are)g(made)f(by)g(setting)g(the)712 181 y Fq(mnode=)p
+Fp(type)692 b Fo(Default:)19 b Fq(R)591 311 y Fy(parameter)m(.)40
+b(V)-5 b(alid)19 b(types)g(are)g Fw(R)p Fy(,)h Fw(r)p Fy(,)g
+Fw(C)p Fy(,)f Fw(f)p Fy(,)j Fw(p)p Fy(,)e Fw(circle)p Fy(,)h
+Fw(oval)p Fy(,)g Fw(dia)p Fy(,)f Fw(tri)p Fy(,)h Fw(dot)e Fy(and)591
+372 y Fw(none)p Fy(,)10 b(standing)h(for)h Fx(\\Rnode)p Fy(,)g
+Fx(\\rnode)p Fy(,)f Fx(\\Cnode)p Fy(,)h Fx(\\fnode)p Fy(,)f
+Fx(\\pnode)p Fy(,)g Fx(\\circlenode)p Fy(,)591 432 y Fx(\\ovalnode)p
+Fy(,)17 b Fx(\\dotnode)f Fy(and)g(no)g(node,)i(respectively)m(.)31
+b(Note)17 b(that)g(for)f(circles,)591 492 y(you)11 b(use)h
+Fx(mnode=C)g Fy(and)g(set)g(the)h(radius)e(with)h(the)h Fx(radius)e
+Fy(parameter)m(.)591 581 y(For)g(example:)338 833 y
+ tx@Dict begin gsave STV CP T 8.31749 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeM-1-1-2
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fy(A)143 1093 y
+ tx@Dict begin gsave STV CP T 7.68388 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeM-1-2-1
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.68388 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+
+@endspecial Fy(B)341 1093 y
+ tx@Dict begin gsave STV CP T 7.03876 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeM-1-2-2
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.03876 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+Fy(E)536 1093 y
+ tx@Dict begin gsave STV CP T 7.68388 2 div 7.7818 0.15552 add 2 div
+2 copy 0.15552 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin
+/TheNodeM-1-2-3 11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.68388 2 div 7.7818
+0.15552 add 2 div 2 copy 0.15552 sub 4 2 roll Pyth 3.0 add CLW 2 div
+add 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial Fy(C)338
+1353 y
+ tx@Dict begin gsave STV CP T 8.31749 2 div 7.7818 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeM-1-3-2
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fy(D)591 1337
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeM-1-2-2
+/TheNodeM-1-2-3 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 591 1337 a
+ tx@Dict begin tx@NodeDict begin /t 0.75 def LPut end PutBegin end
+ 591 1337 a
+ tx@Dict begin { 3.0 tx@Dict /NCLW known { NCLW add } if 4.66736 4.57275
+0.08934 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 581 1346 a Fn(a)591 1337 y
+ tx@Dict begin PutEnd end
+ 591 1337
+a
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeM-1-2-2
+/TheNodeM-1-2-1 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 591 1337 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 591 1337 a
+ tx@Dict begin { 3.0 tx@Dict /NCLW known { NCLW add } if 5.25603 7.10089
+0.08934 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 580 1351 a Fn(b)591 1337
+y
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeM-1-3-2
+/TheNodeM-1-2-1 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 591 1337 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 591 1337 a
+ tx@Dict begin { 3.0 tx@Dict /NCLW known { NCLW add } if 4.66736 4.81978
+0.08934 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 581 1346 a Fn(c)591
+1337 y
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { /ArrowBc [ 6 2 roll ] cvx def ArrowBc BeginArrow false
+0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict begin
+0.0 0.0 neg 0.0 0.0 /TheNodeM-1-3-2 /TheNodeM-1-1-2 InitNC { yB yA
+sub xB xA sub Atan dup -40. add /AngleA ED -40. sub 180 add /AngleB
+ED 0.67 0.67 NCCurve } if end gsave 3.0 2 mul CLW add SLW 1. setgray
+stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+gsave ArrowBc ArrowB pop pop pop pop grestore grestore end
+ 591 1337 a
+ tx@Dict begin tx@NodeDict begin /t 0.3 def LPut end PutBegin end
+ 591 1337 a
+ tx@Dict begin { 3.0 tx@Dict /NCLW known { NCLW add } if 5.25603 7.10089
+0.1419 NAngle 90 sub /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 580 1351
+a Fn(d)591 1337 y
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin tx@NodeDict begin /t 0.7 def LPut end PutBegin end
+ 591 1337 a
+ tx@Dict begin { 3.0 tx@Dict /NCLW known { NCLW add } if 4.66736 4.57275
+0.08934 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 581 1346
+a Fn(e)591 1337 y
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeM-1-1-2
+/TheNodeM-1-2-1 InitNC { yB yA sub xB xA sub Atan dup 12. add /AngleA
+ED 12. sub 180 add /AngleB ED 0.67 0.67 NCCurve } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 591 1337 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 591 1337
+a
+ tx@Dict begin { 3.0 tx@Dict /NCLW known { NCLW add } if 3.50052 7.10089
+0.0 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def /c
+a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse
+def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs w sub dup
+c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop add a PtoC
+h1 add exch w1 add exch } PutCoor PutBegin end
+ 584 1351 a Fn(f)591 1337 y
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeM-1-2-1
+/TheNodeM-1-1-2 InitNC { yB yA sub xB xA sub Atan dup 12. add /AngleA
+ED 12. sub 180 add /AngleB ED 0.67 0.67 NCCurve } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 591 1337
+a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 591 1337 a
+ tx@Dict begin { 3.0 tx@Dict /NCLW known { NCLW add } if 5.25603 4.81978
+2.2706 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 580 1342 a Fn(g)591 1337 y
+ tx@Dict begin PutEnd end
+ 591 1337 a
+ tx@Dict begin PutEnd end
+ 712 696
+a Fw(\\psmatrix[mnode=circle,colsep=1])803 756 y(&)23 b(A)g(\\\\)758
+817 y(B)g(&)g(E)g(&)g(C)g(\\\\)803 877 y(&)g(D)g(&)712 937
+y(\\endpsmatrix)712 997 y(\\psset{shortput=nab,arrows=->,labelsep=3pt})712
+1057 y(\\small)712 1117 y(\\ncline{2,2}{2,3}\303[npos=.75]{a})712
+1178 y(\\ncline{2,2}{2,1}\303{b})712 1238 y(\\ncline{3,2}{2,1}\303{c})712
+1298 y(\\ncarc[arcangle=-40,border=3p)o(t]{3,2}{1)o(,2})758
+1358 y(_[npos=.3]{d}\303[npos=.7]{e})712 1418 y
+(\\ncarc[arcangle=12]{1,2}{2,1}\303{f})712 1479 y
+(\\ncarc[arcangle=12]{2,1}{1,2}\303{g)o(})591 1618 y Fy(Note)13
+b(that)g(a)h(node)f(is)g(made)g(only)g(for)g(the)h(non-empty)f(entries.)21
+b(Y)-5 b(ou)12 b(can)i(also)591 1679 y(specify)e(a)g(node)g(for)f(the)i
+(empty)f(entries)h(by)f(setting)g(the)712 1809 y Fq(emnode=)p
+Fp(type)583 b Fo(Default:)20 b Fq(none)591 1940 y Fy(parameter)m(.)591
+2029 y(Y)-5 b(ou)18 b(can)h(change)g(parameters)g(for)g(a)g(single)f(entry)h
+(by)g(starting)g(with)g(entry)591 2090 y(with)12 b(the)h(parameter)h
+(changes,)f(enclosed)g(in)g(square)g(brackets.)19 b(Note)13
+b(that)g(the)591 2150 y(changes)g(af)o(fect)i(the)g(way)e(the)i(node)e(is)h
+(made,)h(but)f(not)g(contents)g(of)g(the)h(entry)591 2210 y(\(use)c
+Fx(\\psset)g Fy(for)h(this)g(purpose\).)k(For)c(example:)591
+2828 y Fr(Mathematical)e(diagrams)f(and)h(graphs)733 b(27)p
+eop
+%%Page: 28 3
+2 bop 526 197 a
+ tx@Dict begin gsave STV CP T 7.29219 2 div 7.55716 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeM-1-1-2
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.29219 2 div 7.55716
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fu(X)357
+434 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 6.91202 3.45601 3.61267
+tx@NodeDict begin /TheNodeM-1-2-1 16 NewNode InitRnode end end grestore
+end
+ Fu(Y)527 434 y
+ tx@Dict begin gsave STV CP T 7.55716 0.0 6.69315 3.34657 3.61267
+tx@NodeDict begin /TheNodeM-1-2-2 16 NewNode InitRnode end end grestore
+end
+ Fu(Z)579 419 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-1-2
+/TheNodeM-1-2-1 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 579 419 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-1-2
+/TheNodeM-1-2-2 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 579 419 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeM-1-2-1
+/TheNodeM-1-2-2 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray
+3.0 -2 0 add DotLine grestore grestore end
+ 712
+31 a Fw($)712 92 y(\\psmatrix[colsep=1cm])803 152 y(&)23 b([mnode=circle])g
+(X)g(\\\\)758 212 y(Y)g(&)g(Z)712 272 y(\\endpsmatrix)712 332
+y(\\psset{nodesep=3pt,arrows=->})712 393 y(\\ncline{1,2}{2,1})712
+453 y(\\ncline{1,2}{2,2})712 513 y(\\ncline[linestyle=dotted]{2,1}{2,2})712
+573 y($)591 703 y Fy(If)16 b(you)g(want)g(your)g(entry)h(to)f(begin)h(with)f
+(a)g Fw([)h Fy(that)g(is)f(not)h(meant)g(to)f(indicate)591
+764 y(parameter)d(changes,)f(the)g(precede)h(it)f(by)g Fw({})p
+Fy(.)591 852 y(Y)-5 b(ou)11 b(can)h(assign)g(your)g(own)f(name)h(to)h(a)f
+(node)g(by)f(setting)i(the)712 977 y Fq(name=)p Fp(name)732
+b Fo(Default:)591 1102 y Fy(parameter)16 b(at)g(the)g(beginning)g(of)g(the)f
+(entry)m(,)i(as)e(described)h(above.)28 b(Y)-5 b(ou)15 b(can)591
+1163 y(still)d(refer)h(to)f(the)g(node)g(by)g Fw({)p Fv(row)t
+Fw(,)p Fv(col)s Fw(})p Fy(,)g(but)g(here)g(are)h(a)f(few)f(reasons)h(for)g
+(giving)591 1223 y(your)f(own)g(name)i(to)f(a)g(node:)665 1348
+y Fz(\267)25 b Fy(The)13 b(name)f(may)h(be)f(easier)g(to)g(keep)h(track)f
+(of;)665 1448 y Fz(\267)25 b Fy(Unlike)10 b(the)g Fw({)p Fv(row)t
+Fw(,)p Fv(col)s Fw(})g Fy(names,)g(the)g(names)g(you)f(give)h(remain)g(valid)
+h(even)712 1508 y(when)h(you)g(add)g(extra)g(rows)f(or)h(columns)g(to)g(your)
+g(matrix.)665 1608 y Fz(\267)25 b Fy(The)11 b(names)f(remain)h(valid)f(even)g
+(when)g(you)g(start)g(a)g(new)g Fx(\\psmatrix)f Fy(that)712
+1669 y(reuses)j(the)g Fw({)p Fv(row)t Fw(,)p Fv(col)s Fw(})g
+Fy(names.)591 1794 y(Here)f(a)i(few)e(more)h(things)g(you)g(should)g(know:)
+665 1919 y Fz(\267)25 b Fy(The)13 b(baselines)f(of)f(the)i(nodes)e(pass)g
+(through)h(the)g(centers)g(of)g(the)g(nodes.)712 1979 y Fx(\\psmatrix)g
+Fy(achieves)h(this)f(by)f(setting)i(the)820 2079 y Fq(nodealign=)p
+Fp(true/false)319 b Fo(Default:)20 b Fq(false)712 2179 y Fy(parameter)h(to)f
+Fw(true)p Fy(.)38 b(Y)-5 b(ou)19 b(can)h(also)f(set)h(this)f(parameter)i
+(outside)e(of)712 2240 y Fx(\\psmatrix)12 b Fy(when)g(you)f(want)h(this)g
+(kind)g(of)g(alignment.)665 2340 y Fz(\267)25 b Fy(Y)-5 b(ou)12
+b(can)g(left)h(or)f(right-justify)g(the)h(nodes)e(by)h(setting)g(the)820
+2440 y Fq(mcol=)p Fp(l/r/c)650 b Fo(Default:)20 b Fq(c)712
+2540 y Fy(parameter)m(.)f Fw(l)p Fy(,)12 b Fw(r)g Fy(and)g
+Fw(c)g Fy(stand)g(for)g Fw(left)p Fy(,)g Fw(right)g Fy(and)g
+Fw(center)p Fy(,)f(respectively)m(.)665 2640 y Fz(\267)25 b
+Fy(The)13 b(space)f(between)g(rows)f(and)h(columns)g(is)g(set)g(by)g(the)591
+2828 y Fr(Mathematical)e(diagrams)f(and)h(graphs)733 b(28)p
+eop
+%%Page: 29 4
+3 bop 820 50 a Fq(rowsep=)p Fp(dim)482 b Fo(Default:)20 b Fq(1.5cm)820
+110 y(colsep=)p Fp(dim)498 b Fo(Default:)20 b Fq(1.5cm)712
+212 y Fy(parameters.)665 313 y Fz(\267)25 b Fy(If)12 b(you)g(want)g(all)h
+(the)f(nodes)g(to)g(have)g(a)g(\256xed)g(with,)g(set)820 415
+y Fq(mnodesize=)p Fp(dim)448 b Fo(Default:)20 b Fq(-1pt)712
+517 y Fy(to)13 b(a)f(positive)g(value.)665 619 y Fz(\267)25
+b Fy(If)14 b Fx(\\psmatrix)f Fy(is)g(used)g(in)h(math)g(mode,)f(all)i(the)e
+(entries)h(are)g(set)g(in)f(math)712 679 y(mode,)19 b(but)f(you)f(can)h
+(switch)f(a)g(single)h(entry)g(out)f(of)g(math)h(mode)g(by)712
+739 y(starting)13 b(and)f(ending)g(the)g(entry)h(with)f Fw($)p
+Fy(.)665 841 y Fz(\267)25 b Fy(The)11 b(radius)g(of)f(the)h
+Fw(c)g Fx(mnode)g Fy(\(corresponding)f(to)h Fx(\\cnode)p Fy(\))f(is)g(set)h
+(by)f(the)820 942 y Fq(radius=)p Fp(dim)571 b Fo(Default:)20
+b Fq(2pt)712 1044 y Fy(parameter)m(.)665 1146 y Fz(\267)25
+b Fy(Like)17 b(in)g(L)882 1140 y(a)896 1146 y(T)917 1161 y(E)940
+1146 y(X,)f(you)g(can)g(end)h(a)f(row)g(with)g Fw(\\\\[)p Fv(dim)q
+Fw(])h Fy(to)f(insert)h(an)f(extra)712 1206 y(space)d Fv(dim)f
+Fy(between)h(rows.)665 1308 y Fz(\267)25 b Fy(The)16 b(command)f
+Fw(\\psrowhookii)g Fy(is)g(executed,)h(if)g(de\256ned,)f(at)g(the)h(begin-)
+712 1368 y(ning)9 b(of)f(every)h(entry)g(in)g(row)f Fw(ii)g
+Fy(\(row)g(2\),)h(and)g(the)g(command)g Fw(\\pscolhookv)712
+1428 y Fy(is)16 b(executed)h(at)f(athe)g(beginning)g(of)g(every)f(entry)h(in)
+g(column)g Fw(v)g Fy(\(etc.\).)712 1488 y(Y)-5 b(ou)12 b(can)h(use)f(these)h
+(hooks,)f(for)g(example,)h(to)g(change)f(the)h(spacing)g(be-)712
+1548 y(tween)h(two)f(columns,)g(or)g(to)h(use)e(a)i(special)g
+Fx(mnode)f Fy(for)g(all)h(the)f(entries)712 1609 y(in)g(a)f(particular)h(row)
+m(.)665 1710 y Fz(\267)25 b Fy(An)14 b(entry)g(can)g(itself)g(be)g(a)g(node.)
+23 b(Y)-5 b(ou)13 b(might)h(do)g(this)g(if)g(you)f(want)h(an)712
+1770 y(entry)f(to)f(have)g(two)g(shapes.)665 1872 y Fz(\267)25
+b Fy(If)15 b(you)f(want)h(an)f(entry)h(to)g(stretch)g(across)f(several)h(\()p
+Fv(int)t Fy(\))f(columns,)h(use)712 1932 y(the)820 2049 y Fq(\\psspan{)p
+Fp(int)t Fq(})712 2150 y Fu(at)i(the)g(end)f(of)h(the)g(entry)p
+Fy(.)30 b(This)17 b(is)f(like)h(Plain)g(T)1569 2161 y(E)1592
+2150 y(X')m(s)f Fx(\\multispan)p Fy(,)i(or)712 2210 y(L)724
+2204 y(a)738 2210 y(T)759 2225 y(E)783 2210 y(X')m(s)8 b Fx(\\multicolumn)p
+Fy(,)j(but)e(the)h(template)g(for)f(the)h(current)f(column)g(\(the)712
+2271 y(\256rst)15 b(column)g(that)g(is)g(spanned\))g(is)f(still)i(used.)25
+b(If)15 b(you)f(want)h(wipe)g(out)712 2331 y(the)j(template)h(as)e(well,)i
+(use)d Fw(\\multispan{)p Fv(int)t Fw(})h Fu(at)g(the)h(beginning)f(of)g(the)
+712 2391 y(entry)12 b Fy(instead.)18 b(If)12 b(you)f(just)h(want)g(to)g(wipe)
+f(out)h(the)g(template,)i(use)d Fw(\\omit)712 2451 y Fy(before)i(the)f(entry)
+m(.)591 2828 y Fr(Mathematical)e(diagrams)f(and)h(graphs)733
+b(29)p eop
+%%Page: 30 5
+4 bop 665 50 a Fz(\267)25 b Fx(\\psmatrix)13 b Fy(can)g(be)g(nested,)h(but)f
+(then)g(all)g(node)g(connections)h(and)f(other)712 110 y(references)f(to)f
+(the)g(nodes)f(in)h(the)h Fw({)p Fv(row)t Fw(,)p Fv(col)s Fw(})e
+Fy(form)h(for)g(the)g(nested)g(matrix)712 170 y Fu(must)21
+b(go)g(inside)h Fy(the)f Fx(\\psmatrix)p Fy(.)45 b(This)22
+b(is)f(how)f(PST)n(ricks)h(decides)712 230 y(which)e(matrix)g(you)f(are)g
+(referring)h(to.)36 b(It)18 b(is)g(still)h(neatest)g(to)g(put)f(all)712
+291 y(the)f(node)f(connections)g(towards)f(the)h(end;)j(just)d(be)g(sure)f
+(to)h(put)g(them)712 351 y(before)e Fx(\\endpsmatrix)p Fy(.)21
+b(Be)14 b(careful)g(also)g(not)g(to)f(refer)h(to)g(a)g(node)f(until)712
+411 y(it)g(actually)g(appears.)k(The)12 b(whole)g(matrix)g(can)g(itself)h(go)
+e(inside)h(a)g(node,)712 471 y(and)g(node)f(connections)h(can)g(be)g(made)g
+(as)f(usual.)17 b(This)12 b(is)f(not)h(the)g(same)712 531 y(as)j(connecting)g
+(nodes)g(from)f(two)h(dif)o(ferent)g Fx(\\psmatrix)p Fy(')m(s.)25
+b(T)m(o)14 b(do)h(this,)712 592 y(you)c(must)f(give)h(the)g(nodes)f(names)g
+(and)h(refer)f(to)h(them)g(by)f(these)h(names.)366 789 y Fm(12)71
+b(Obsolete)19 b(put)h(commands)591 910 y Fy(This)f(is)g(old)h(documentation,)
+i(but)e(these)g(commands)f(will)h(continue)g(to)g(be)591 970
+y(supported.)591 1059 y(There)11 b(is)g(also)f(an)h(obsolete)g(command)h
+Fx(\\Lput)f Fy(for)f(putting)h(labels)h(next)f(to)g(node)591
+1120 y(connections.)17 b(The)c(syntax)e(is)712 1250 y Fw(\\Lput{)p
+Fv(labelsep)q Fw(}[)p Fv(refpoint)t Fw(]{)p Fv(rotation)q Fw(}\()o
+Fv(pos)q Fw(\){)o Fv(stuff)6 b Fw(})591 1381 y Fy(It)12 b(is)g(a)g
+(combination)h(of)f Fx(\\Rput)g Fy(and)g Fx(\\lput)p Fy(,)g(equivalent)h(to)
+712 1512 y Fw(\\lput\()p Fv(pos)q Fw(\){\\Rput{)p Fv(labelsep)q
+Fw(}[)p Fv(refpoint)t Fw(]{)p Fv(rotation)q Fw(})o(\(0)o(,0\){)p
+Fv(stuff)6 b Fw(}})591 1643 y Fx(\\Mput)16 b Fy(is)g(a)h(short)f(version)g
+(of)h Fx(\\Lput)f Fy(with)g(no)h Fw({)p Fv(rotation)q Fw(})d
+Fy(or)j Fw(\()p Fv(pos)q Fw(\))e Fy(ar)o(gument.)591 1703 y
+Fx(\\Lput)f Fy(and)g Fx(\\Mput)h Fy(remain)g(part)g(of)f(PST)n(ricks)g(only)h
+(for)f(backwards)g(compati-)591 1763 y(bility)m(.)591 1852
+y(Here)d(are)i(the)f(node)g(label)h(commands:)591 1983 y Fq(\\lput)p
+Fl(*[)p Fk(refpoint)t Fl(]{)p Fk(rotation)q Fl(})p Fq(\()p
+Fp(pos)p Fq(\){)p Fp(stuf)o(f)6 b Fq(})712 2064 y Fy(The)15
+b Fw(l)g Fy(stands)f(for)g(\252label\272.)26 b(Here)14 b(is)h(an)f(example)i
+(illustrating)f(the)g(use)712 2124 y(of)d(the)g(optional)h(star)f(and)g
+Fw(:)p Fv(angle)g Fy(with)g Fx(\\lput)p Fy(,)g(as)f(well)h(as)g(the)g(use)g
+(of)f(the)712 2184 y Fx(offset)g Fy(parameter)i(with)f Fx(\\pcline)p
+Fy(:)118 2533 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 0.0 113.81097
+56.90549 0.0 0.0 /Lineto /lineto load def false Polygon gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 118
+2533 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 tx@NodeDict begin /TheNode@@A
+10 NewNode InitPnode end end grestore end
+ 118 2533 a
+ tx@Dict begin gsave STV CP T 113.81097 56.90549 tx@NodeDict begin
+/TheNode@@B 10 NewNode InitPnode end end grestore end
+ 118 2533 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def /NCLW CLW def tx@NodeDict begin 12.0 12.0 neg 0.0
+0.0 /TheNode@@A /TheNode@@B InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 118 2533 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 118 2533 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 50 2544
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.48833
+neg 35.63637 10.7818 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial Fy(Length)118 2533
+y
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 2533 a
+ tx@Dict begin PutEnd end
+ 712 2347 a Fw(\\pspolygon\(0,0\)\(4,2\)\(4,0\))712
+2407 y(\\pcline[of)o(fset=12pt]{|-|}\(0,0\)\(4,2\))712 2468
+y(\\lput*{:U}{Length})591 2828 y Fr(Obsolete)d(put)h(commands)911
+b(30)p eop
+%%Page: 31 6
+5 bop 712 50 a Fy(\(Remember)15 b(that)f(with)f(the)h Fw(put)g
+Fy(commands,)g(you)f(can)h(omit)g(the)g(coor)o(-)712 110 y(dinate)h(if)e(you)
+h(include)g(the)g(angle)g(of)f(rotation.)22 b(Y)-5 b(ou)13
+b(are)h(likely)g(to)g(use)712 170 y(this)f(feature)f(with)g(the)h(node)f
+(label)g(commands.\))712 251 y(W)n(ith)g Fx(\\lput)f Fy(and)f
+Fx(\\rput)p Fy(,)h(you)f(have)h(a)g(lot)g(of)g(control)g(over)f(the)h
+(position)g(of)712 311 y(the)i(label.)18 b(E.g.,)118 624 y
+ tx@Dict begin gsave STV CP T 0.0 0.0 tx@NodeDict begin /TheNode@@A
+10 NewNode InitPnode end end grestore end
+
+118 624 a
+ tx@Dict begin gsave STV CP T 113.81097 56.90549 tx@NodeDict begin
+/TheNode@@B 10 NewNode InitPnode end end grestore end
+ 118 624 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNode@@A /TheNode@@B InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 118 624 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 118 624 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 118 577 a
+ tx@Dict begin mark RAngle /a ED cleartomark a neg tx@Dict /TMatrix
+known not { /TMatrix { } def /RAngle { 0 } def } if /TMatrix [ TMatrix
+CM ] cvx def /a ED a Rot /RAngle [ RAngle dup a add ] cvx def end
+ 25 593 a
+Fy(label)118 577 y
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 624 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 624 a
+ tx@Dict begin PutEnd end
+ 712 487 a Fw(\\pcline\(0,0\)\(4,2\))
+712 547 y(\\lput{:U}{\\rput[r]{N}\(0,.4\){label}})712 747 y
+Fy(puts)j(the)g(label)h(upright)f(on)g(the)g(page,)j(with)d(right)g(side)g
+(located)h(.4)712 807 y(centimeters)11 b(\252above\272)f(the)f(position)g
+Fw(.5)g Fy(of)g(the)h(node)f(connection)h(\(above)712 867 y(if)17
+b(the)f(node)g(connection)h(points)f(to)g(the)g(right\).)30
+b(However)n(,)16 b(the)g Fx(\\aput)712 927 y Fy(and)f Fx(\\bput)f
+Fy(commands)g(described)h(below)f(handle)h(the)f(most)g(common)712
+988 y(cases)e(without)g Fx(\\rput)p Fy(.)1086 969 y Fj(8)591
+1089 y Fq(\\aput)p Fl(*[)p Fk(labelsep)q Fl(]{)p Fk(angle)q
+Fl(})p Fq(\()p Fp(pos)p Fq(\){)p Fp(stuff)6 b Fq(})712 1170
+y Fv(stuff)23 b Fy(is)16 b(positioned)g(distance)g Fx(\\pslabelsep)g
+Fu(above)f Fy(the)i(node)e(connec-)712 1230 y(tion,)10 b(given)e(the)h
+(convention)g(that)g(node)f(connections)h(point)f(to)h(the)g(right.)712
+1291 y Fw(\\aput)j Fy(is)g(a)g(node-connection)h(variant)g(of)f
+Fx(\\uput)p Fy(.)17 b(For)11 b(example:)118 1604 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 0.0 113.81097
+56.90549 0.0 0.0 /Lineto /lineto load def false Polygon gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 118 1604 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 tx@NodeDict begin /TheNode@@A
+10 NewNode InitPnode end end grestore end
+ 118 1604 a
+ tx@Dict begin gsave STV CP T 113.81097 56.90549 tx@NodeDict begin
+/TheNode@@B 10 NewNode InitPnode end end grestore end
+ 118 1604 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNode@@A /TheNode@@B InitNC { NCLine } if end grestore end
+ 118
+1604 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 118 1604 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 118 1604 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 55.0314 7.7818
+2.48833 NAngle 90 add NAngle sub /a ED add 2 div /h ED 2 div /w ED
+/s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 4 1615 a Fy(Hypotenuse)118 1604
+y
+ tx@Dict begin PutEnd end
+ 118 1604 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 118 1604 a
+ tx@Dict begin PutEnd end
+ 712 1436 a Fw(\\pspolygon\(0,0\)\(4,2\)\(4,0\))712
+1496 y(\\pcline[linestyle=none]\(0,0\)\(4,2\))712 1556 y
+(\\aput{:U}{Hypotenuse})591 1726 y Fq(\\bput)p Fl(*[)p Fk(labelsep)q
+Fl(]{)p Fk(angle)q Fl(})p Fq(\()p Fp(pos)p Fq(\){)p Fp(stuf)o(f)c
+Fq(})712 1807 y Fy(This)14 b(is)f(like)h Fx(\\aput)p Fy(,)f(but)g
+Fv(stuff)20 b Fy(is)14 b(positioned)f Fu(below)h Fy(the)f(node)g(connec-)712
+1867 y(tion.)591 1998 y(It)e(is)g(fairly)h(common)g(to)f(want)h(to)f(use)g
+(the)h(default)g(position)f(and)h(rotation)g(with)591 2058
+y(these)k(node)g(connections,)i(but)e(you)g(have)h(to)f(include)h(at)g(least)
+g(one)f(of)h(these)591 2118 y(ar)o(guments.)g(Therefore,)c(PST)n(ricks)e
+(contains)i(some)e(variants:)p 591 2163 544 2 v 646 2193 a
+Fi(8)662 2208 y Fh(There)g(is)f(also)f(an)i(obsolete)e(command)h
+Fg(\\Lput)g Fh(for)h(putting)g(labels)e(next)h(to)h(node)f(connec-)591
+2258 y(tions.)j(The)d(syntax)f(is)698 2329 y Ff(\\Lput{)p Fe(labelsep)q
+Ff(}[)p Fe(refpoint)s Ff(]{)p Fe(rotation)q Ff(}\()p Fe(pos)q
+Ff(\){)p Fe(stuf)q(f)c Ff(})630 2399 y Fh(It)11 b(is)e(a)h(combination)f(of)h
+Fg(\\Rput)g Fh(and)g Fg(\\lput)p Fh(,)h(equivalent)d(to)698
+2470 y Ff(\\lput\()p Fe(pos)q Ff(\){\\Rput{)p Fe(labelsep)q
+Ff(}[)p Fe(refpoint)s Ff(]{)p Fe(rotat)q(ion)q Ff(}\(0,0\){)p
+Fe(st)q(uff)e Ff(}})630 2540 y Fg(\\Mput)15 b Fh(is)f(a)g(short)g(version)f
+(of)h Fg(\\Lput)h Fh(with)f(no)g Ff({)p Fe(rotation)q Ff(})h
+Fh(or)f Ff(\()p Fe(pos)q Ff(\))g Fh(ar)o(gument.)27 b Fg(\\Lput)14
+b Fh(and)591 2590 y Fg(\\Mput)c Fh(remain)g(part)g(of)g(PST)o(ricks)g(only)f
+(for)i(backwards)d(compatibility)m(.)591 2828 y Fr(Obsolete)h(put)h(commands)
+911 b(31)p eop
+%%Page: 32 7
+6 bop 712 50 a Fq(\\mput)p Fl(*[)p Fk(refpoint)t Fl(])p Fq({)p
+Fp(stuf)o(f)6 b Fq(})712 125 y(\\Aput)p Fl(*[)p Fk(labelsep)q
+Fl(])p Fq({)p Fp(stuf)o(f)g Fq(})712 199 y(\\Bput)p Fl(*[)p
+Fk(labelsep)q Fl(])p Fq({)p Fp(stuf)o(f)g Fq(})591 330 y Fy(of)12
+b Fx(\\lput)p Fy(,)g Fx(\\aput)g Fy(and)g Fx(\\bput)p Fy(,)g(respectively)m
+(,)h(that)g(have)f(no)g(angle)h(or)f(positioning)591 390 y(ar)o(gument.)18
+b(For)11 b(example:)118 711 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 0 360 arc
+fill end
+
+@endspecial
+118 711 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeA
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 113.81097 56.90549 3.0
+0 360 arc fill end
+
+@endspecial 118 711 a
+ tx@Dict begin gsave STV CP T 113.81097 56.90549 3.0 tx@NodeDict begin
+/TheNodeB 11 NewNode InitCnode end end grestore end
+
+118 711 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeA /TheNodeB InitNC { NCLine } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 118 711 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 106 728 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.0
+neg 8.76004 10.7818 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial
+Fy(1)118 711 y
+ tx@Dict begin PutEnd end
+ 712 514 a Fw(\\cnode*\(0,0\){3pt}{A})712 574
+y(\\cnode*\(4,2\){3pt}{B})712 634 y(\\ncline[nodesep=3pt]{A}{B})712
+694 y(\\mput*{1})591 842 y Fy(Here)g(is)h(another:)118 1154
+y
+ tx@Dict begin gsave STV CP T 0.0 0.0 tx@NodeDict begin /TheNode@@A
+10 NewNode InitPnode end end grestore end
+ 118 1154 a
+ tx@Dict begin gsave STV CP T 113.81097 56.90549 tx@NodeDict begin
+/TheNode@@B 10 NewNode InitPnode end end grestore end
+ 118 1154 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow } def /NCLW CLW def tx@NodeDict
+begin 0.0 0.0 neg 0.0 0.0 /TheNode@@A /TheNode@@B InitNC { NCLine
+} if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 118 1154 a
+ tx@Dict begin tx@NodeDict begin /t .5 def LPut end PutBegin end
+ 118 1154 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 26.2312 7.7818
+0.09792 NAngle 90 add /a ED add 2 div /h ED 2 div /w ED /s a sin def
+/c a cos def /b s abs c abs 2 copy gt dup /q ED { pop } { exch pop
+} ifelse def /w1 c b div w mul def /h1 s b div h mul def q { w1 abs
+w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 64 1170 a Fy(Label)118
+1154 y
+ tx@Dict begin PutEnd end
+ 118 1154 a
+ tx@Dict begin PutEnd end
+ 712 1016 a Fw(\\pcline{<->}\(0,0\)\(4,2\))712
+1076 y(\\Aput{Label})591 2828 y Fr(Obsolete)d(put)h(commands)911
+b(32)p eop
+%%Page: 33 8
+7 bop 291 265 a Fd(II)591 182 y Fc(T)-5 b(rees)366 584 y Fm(13)71
+b(Overview)591 705 y Fy(The)12 b(node)g(and)h(node)f(connections)h(are)f
+(perfect)h(tools)f(for)g(making)h(trees.)18 b(The)325 729 y
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 251 747 a Fq(pstree)591
+765 y Fy(\256le)12 b Fw(pstree.tex)h Fy(/)h Fw(pstree.sty)f
+Fy(contains)g(a)g(high-level)h(interface)g(for)f(positioning)591
+825 y(the)f(nodes)f(in)i(a)f(tree.)591 914 y(The)g(main)g(tree)h(macro)g(is)
+712 1054 y Fq(\\pstree{)p Fp(\(root\)node)r Fq(}{)p Fp(\(sub\)tre)q(es)k(and)
+d(\(terminal\)nodes)r Fq(})591 1179 y Fy(This)e(positions)f(the)i(root)f
+(node)g(above)g(its)g(successors.)374 1309 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0 14 NewNode
+/X 9.27942 def /Y 3.34946 def /w 16.92111 def /h 8.67459 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 16.92111 CLW 2
+div sub 8.67459 CLW 2 div sub 9.27942 3.34946 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial Fy(root)255 1531 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 255 1531 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 255 1531 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 360 1531 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 360 1531 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 465 1531 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 465 1531 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 570 1531 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-3
+11 NewNode InitCnode end end grestore end
+ 570 1531 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-3 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1410 a Fw(\\pstree{\\T)-5
+b(oval{root}}{\\TC*)22 b(\\TC*)h(\\TC*)h(\\TC*})591 1665 y
+Fx(\\pstree)12 b Fy(produces)h(a)g(box)h(that)g(encloses)f(all)h(the)g
+(nodes,)f(and)h(whose)e(baseline)591 1725 y(passes)f(through)g(the)i(center)g
+(of)e(the)i(root)f(node.)591 1814 y(For)k(most)h(of)g(the)g(nodes)g
+(described)g(in)h(Section)f(6)g(\(e.g.,)h Fx(\\ovalnode)p Fy(\),)g(there)591
+1874 y(is)f(a)g(variant)h(for)f(use)g(within)g(a)h(tree)g(\(e.g.,)g
+Fx(\\T)m(oval)p Fy(\).)33 b(Note)17 b(that)h(there)g(is)f(no)591
+1934 y(distinction)g(between)g(a)g(terminal)h(node)e(and)h(a)f(root)h(node,)h
+(other)e(than)h(their)591 1994 y(position)12 b(in)g(the)g Fx(\\pstree)f
+Fy(command.)591 2083 y(A)g(tree,)i(when)e(included)i(in)f(the)g(list)h(or)f
+(successors,)e(becomes)j(a)f(subtree.)461 2159 y
+ tx@Dict begin gsave STV CP T 0 0 tx@NodeDict begin /TheNodeT-0 10
+NewNode InitPnode end end grestore end
+ 352 2395 a
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 352 2395 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 352 2395
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 109 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461 2395 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 461
+2395 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 408 2632 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 408
+2632 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 408 2632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 106 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+514 2632 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 514 2632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 570 2395 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 570 2395 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 570 2395 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 2320 a Fw(\\pstree{\\Tp}{\045)758
+2380 y(\\TC*)758 2440 y(\\pstree{\\T)-5 b(c{3pt}}{\\TC*)22
+b(\\TC*})758 2501 y(\\TC*})591 2828 y Fr(T)o(rees)1221 b(33)p
+eop
+%%Page: 34 9
+8 bop 366 51 a Fm(14)71 b(T)l(ree)20 b(Nodes)591 172 y Fy(For)11
+b(most)h(nodes)f(described)h(in)g(Section)g(6,)g(you)f(can)h(add)g(strip)g
+Fw(node)f Fy(from)g(the)591 233 y(end)j(of)g(the)h(name)g(and)f(add)h
+Fw(T)f Fy(add)g(the)h(beginning)g(to)f(obtain)h(a)g(node)f(for)g(use)591
+293 y(in)g(trees.)24 b(The)14 b(syntax)g(of)g(a)g(tree)h(node)f(is)g(the)h
+(same)f(as)g(of)g(its)g(corresponding)591 353 y(\252normal\272)e(node,)g
+(except)h(that:)665 484 y Fz(\267)25 b Fy(there)14 b(is)e(always)h(an)f
+(optional)i(ar)o(gument)f(for)g(setting)g(graphics)f(param-)712
+544 y(eters,)h(even)f(if)g(the)g(original)h(node)f(did)g(not)g(have)h(one,)
+665 646 y Fz(\267)25 b Fy(there)13 b(is)f(no)g(ar)o(gument)g(for)g
+(specifying)g(the)h(name)f(of)g(the)g(node,)g(and)665 747 y
+Fz(\267)25 b Fy(there)13 b(is)f(never)g(a)g(coordinate)h(ar)o(gument)g(for)e
+(positioning)i(the)f(node.)665 849 y Fz(\267)25 b Fy(to)13
+b(set)f(the)g(reference)h(point)f(with)g Fx(\\T)n(r)p Fy(,)g(set)g(the)h
+Fx(ref)e Fy(parameter)m(.)591 980 y(Here)g(is)h(the)h(list)f(of)g(such)g
+(tree)g(nodes:)712 1125 y Fq(\\Tp)p Fl(*[)p Fk(par)5 b Fl(])712
+1200 y Fq(\\T)l(c)p Fl(*[)p Fk(par)g Fl(])p Fq({)p Fp(dim)q
+Fq(})712 1274 y(\\TC)p Fl(*[)p Fk(par)g Fl(])712 1349 y Fq(\\Tf)p
+Fl(*[)p Fk(par)g Fl(])712 1424 y Fq(\\Tdot)p Fl(*[)p Fk(par)g
+Fl(])712 1499 y Fq(\\T)m(r)p Fl(*[)p Fk(par)g Fl(])p Fq({)p
+Fp(stuf)o(f)h Fq(})712 1573 y(\\TR)p Fl(*[)p Fk(par)f Fl(])p
+Fq({)p Fp(stuf)o(f)h Fq(})712 1648 y(\\T)l(circle)p Fl(*[)p
+Fk(par)f Fl(])p Fq({)p Fp(stuf)o(f)h Fq(})712 1723 y(\\T)l(oval)p
+Fl(*[)p Fk(par)f Fl(])p Fq({)p Fp(stuf)o(f)h Fq(})712 1798
+y(\\Tdia)p Fl(*[)p Fk(par)f Fl(])p Fq({)p Fp(stuf)o(f)h Fq(})712
+1872 y(\\Ttri)p Fl(*[)p Fk(par)f Fl(])p Fq({)p Fp(stuf)o(f)h
+Fq(})591 2003 y Fx(\\Rnode)13 b Fy(is)f(a)h(good)g(choice)g(when)g(you)f
+(want)h(the)g(baselines)g(of)g(the)g(text)g(in)g(the)591 2063
+y(nodes)e(to)h(line)h(up)f(horizontally)m(.)441 2221 y
+ tx@Dict begin gsave STV CP T 7.29219 2 div 7.55716 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.29219 2 div 7.55716
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fu(X)328 2456 y
+ tx@Dict begin gsave STV CP T 11.76196 0.0 7.29219 3.64609 3.61267
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ 335 2438 a Fy(\304)335
+2447 y(\304)328 2456 y Fu(X)344 2441 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 447 2456 a
+ tx@Dict begin gsave STV CP T 5.0285 0.11519 5.18402 2.59201 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fu(x)458
+2441 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 557 2456 a
+ tx@Dict begin gsave STV CP T 5.0285 2.39041 5.11491 2.55745 3.61267
+ tx@NodeDict begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore
+end
+ Fu(y)568 2441 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 735 2180 a Fw($)735 2240
+y(\\pstree[nodesepB=3pt]{\\T)-5 b(circle{X}}{\045)781 2300
+y(\\TR{\\tilde{\\tilde{X}}})781 2360 y(\\TR{x})781 2420 y(\\TR{y}})735
+2481 y($)591 2617 y Fy(Compare)12 b(the)g(preceding)h(example)g(with)f(the)g
+(next)g(one,)g(which)g(uses)f Fx(\\rnode)p Fy(:)591 2828 y
+Fr(T)o(ree)e(Nodes)1122 b(34)p eop
+%%Page: 35 10
+9 bop 441 73 a
+ tx@Dict begin gsave STV CP T 7.29219 2 div 7.55716 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.29219 2 div 7.55716
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fu(X)328
+318 y
+ tx@Dict begin gsave STV CP T 11.76196 0.0 7.29219 3.64609 5.88098
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ 335 299 a Fy(\304)335 308 y(\304)328 318 y Fu(X)344 293
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 447 304 a
+ tx@Dict begin gsave STV CP T 5.0285 0.11519 5.18402 2.59201 2.45665
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fu(x)458 293 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 557 298 a
+ tx@Dict begin gsave STV CP T 5.0285 2.39041 5.11491 2.55745 1.31905
+ tx@NodeDict begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore
+end
+ Fu(y)568 293 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 735 31
+a Fw($)735 92 y(\\pstree[nodesepB=3pt]{\\T)-5 b(circle{X}}{\045)781
+152 y(\\T)n(r{\\tilde{\\tilde{X}}})781 212 y(\\T)n(r{x})781
+272 y(\\T)n(r{y}})735 332 y($)591 468 y Fy(There)12 b(is)g(also)g(a)g(null)g
+(tree)h(node)712 614 y Fq(\\Tn)591 744 y Fy(It)f(is)g(meant)g(to)h(be)f(just)
+g(a)g(place)h(holder)m(.)370 838 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 370 838 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 271 1074 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 271 1074 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 271 1074 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 223 1310 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 223 1310 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-0
+11 NewNode InitCnode end end grestore end
+ 223 1310 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-0 /TheNodeT-0-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 469 1074 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 469 1074 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 469 1074 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 417 1310 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 417 1310 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 417 1310 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 522 1310 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 522 1310 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 570 1546 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 570 1546 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1-1
+11 NewNode InitCnode end end grestore end
+ 570 1546 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-1-1 /TheNodeT-0-1-1-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1082 a Fw
+(\\pstree[nodesep=3pt]{\\TC*}{\045)758 1142 y(\\pstree{\\TC*}{\\TC*)23
+b(\\Tn})758 1202 y(\\pstree{\\TC*}{\045)803 1263 y(\\TC*)803
+1323 y(\\pstree{\\TC*}{\\Tn\\TC*}}})591 1685 y Fy(Actually)m(,)12
+b(if)g(I)g(was)f(going)h(to)g(do)g(this)g(a)g(lot)h(I)f(would)f(de\256ne)h
+(some)g(short-cuts:)712 1816 y Fw(\\def\\mytree{\\pstree{\\TC*}})712
+1876 y(\\def\\ltree#1{\\mytree{#1\\Tn}})712 1937 y
+(\\def\\rtree#1{\\mytree{\\Tn#1}})712 1997 y(\\psset{nodesep=3pt})712
+2057 y(\\mytree{\045)758 2117 y(\\ltree{\\TC*})758 2177 y(\\mytree{\045)803
+2237 y(\\TC*)803 2298 y(\\rtree{\\TC*}}})591 2428 y Fy(There)j(is)g(also)f(a)
+h(special)h(tree)f(node)g(that)h(doesn')o(t)e(have)h(a)g(\252normal\272)h
+(version)591 2489 y(and)c(that)g(can')o(t)h(be)f(used)g(as)f(the)i(root)f
+(node)g(of)g(a)g(whole)g(tree:)712 2634 y Fq(\\Tfan)p Fl(*[)p
+Fk(par)5 b Fl(])591 2828 y Fr(T)o(ree)k(Nodes)1122 b(35)p eop
+%%Page: 36 11
+10 bop 591 50 a Fy(This)12 b(draws)f(a)h(triangle)h(whose)e(base)h(is)712
+169 y Fq(fansize=)p Fp(dim)636 b Fo(Default:)20 b Fq(1cm)591
+288 y Fy(and)8 b(whose)f(opposite)i(corner)f(is)h(the)f(predecessor)h(node,)g
+(adjusted)f(by)g(the)h(value)591 348 y(of)i Fx(nodesepA)h Fy(and)g
+Fx(offsetA)p Fy(.)e(For)i(example:)341 489 y
+ tx@Dict begin gsave STV CP T 15.35626 2 div 7.7818 0.09792 add 2 div
+2 copy 0.09792 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin
+/TheNodeT-0 11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 15.35626 2 div 7.7818
+0.09792 add 2 div 2 copy 0.09792 sub 4 2 roll Pyth 3.0 add CLW 2 div
+add 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial Fy(foo)224 710 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-0 16 NewNode
+/Y 0 def /X 0 def /l 13.82637 def /r l def /u 0.4 def /d u def /NodePos
+{ GetRnodePos } def end end grestore end
+ 224 710 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC
+{ tx@Dict begin /Lineto /lineto load def false pop end /w 13.82637
+CLW 2 div sub def /m true def Tfan } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 378 710
+a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-1 14 NewNode
+0 0 /Y ED /X ED /d .5 .5 sub CLW mul neg def /r 2.0 d add def /l r
+neg def /u 2.0 d add def /d u neg def /NodePos { GetRnodePos } def
+end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray /x2 2.0 CLW .5 mul sub
+def /y2 2.0 CLW .5 mul sub def 0 0 2 copy y2 sub /y1 ED x2 sub /x1
+ED y2 add /y2 ED x2 add /x2 ED 0. true 1 index 0 eq { pop pop Rect
+} { OvalFrame } ifelse gsave 0. setgray fill grestore end
+
+@endspecial 378 710 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 475 726
+a
+ tx@Dict begin gsave STV CP T 11.5818 3.89792 22.31114 11.15556 3.84193
+ tx@NodeDict begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore
+end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.5 true 3.8 neg 3.89792
+neg 18.51114 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial Fy(bar)521 710
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 521 946 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-2-0 16
+NewNode /Y 0 def /X 0 def /l 13.82637 def /r l def /u 0.4 def /d u
+def /NodePos { GetRnodePos } def end end grestore end
+ 521 946 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeT-0-2 /TheNodeT-0-2-0
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /w 13.82637
+CLW 2 div sub def /m true def Tfan } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 712 605 a Fw(\\pstree{\\T)-5 b(circle{foo}}{\045)758
+665 y(\\Tfan)758 725 y(\\Tf*[framesize=4pt])758 785 y(\\pstree{\\T)n
+(r{\\psframebox[framearc=.5]{bar}}}{)o(\\Tfan}})591 1067 y
+Fy(Here)11 b(is)h(another)h(example)g(illustrating)g(that)g(a)f
+Fx(\\Tfan)f Fy(can)i(have)f(successors:)412 1208 y
+ tx@Dict begin gsave STV CP T 15.35626 2 div 7.7818 0.09792 add 2 div
+2 copy 0.09792 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin
+/TheNodeT-0 11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 15.35626 2 div 7.7818
+0.09792 add 2 div 2 copy 0.09792 sub 4 2 roll Pyth 3.0 add CLW 2 div
+add 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial Fy(foo)444 1428 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-0 16 NewNode
+/Y 0 def /X 0 def /l 14.22636 def /r l def /u 0.0 def /d u def /NodePos
+{ GetRnodePos } def end end grestore end
+ 444 1428 a
+ tx@Dict begin gsave STV newpath 0.0 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC
+{ tx@Dict begin /r 2.84544 def /Lineto { Arcto } def false pop end
+/w 14.22636 CLW 2 div sub def /m true def Tfan } if end gsave 0. setgray
+fill grestore grestore end
+ 367 1664
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 367 1664 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-0
+11 NewNode InitCnode end end grestore end
+ 367 1664
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0 /TheNodeT-0-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 521 1664 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-0-1 16
+NewNode /Y 0 def /X 0 def /l 13.82637 def /r l def /u 0.4 def /d u
+def /NodePos { GetRnodePos } def end end grestore end
+ 521 1664 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeT-0-0 /TheNodeT-0-0-1
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /w 13.82637
+CLW 2 div sub def /m true def Tfan } if end gsave 0.8 SLW 0. setgray
+5.0 3.0 1 DashLine grestore grestore end
+ 712 1326 a Fw(\\pstree{\\T)-5 b(circle{foo}}{\045)758
+1387 y(\\pstree{\\Tfan*[linearc=.1]}{\045)803 1447 y(\\T)g(c*{2pt})803
+1507 y(\\Tfan[linestyle=dashed]}})366 1866 y Fm(15)71 b(T)l(rees)591
+1986 y Fy(This)18 b(section)h(describes)g(several)g(graphics)g(parameters)h
+(for)e Fx(\\pstree)p Fy(.)36 b(Any)591 2046 y(settings)13 b(of)h(graphics)g
+(parameters)g(for)g Fx(\\pstree)f Fy(af)o(fects)h(all)g(of)g(its)g
+(successors,)591 2106 y(including)e(subtrees.)17 b(but)12 b(not)g(the)h(root)
+f(node.)591 2194 y(The)712 2313 y Fq(treemode=)p Fp(R/L/U/D)591
+b Fo(Default:)591 2432 y Fy(parameter)16 b(controls)g(the)f(direction)i(in)e
+(which)h(the)g(tree)g(grows.)26 b Fw(R)p Fy(,)16 b Fw(L)p Fy(,)f
+Fw(U)h Fy(and)591 2492 y Fw(D)f Fy(stand)g(for)g(\252right\272,)h
+(\252left\272,)h(\252up\272)e(and)g(\252down\272,)h(respectively)m(.)27
+b(When)15 b(you)591 2552 y(change)d(the)g Fx(treemode)p Fy(,)f(the)h
+Fx(treemode)f Fy(of)h(all)h(nested)f(trees)g(changes)g(as)g(well.)591
+2640 y(For)f(example,)i(here)f(is)g(a)g(tree)h(that)f(grows)f(up,)h(and)g
+(then)g(to)h(the)f(left:)591 2828 y Fr(T)o(rees)1221 b(36)p
+eop
+%%Page: 37 12
+11 bop 484 334 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 484
+334 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 389 98 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 389 98
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 389 98 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 2.0
+2.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 153 53 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-0-0 14
+NewNode 0.0 0.0 /Y ED /X ED /w 3.0 def /h 3.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 6.0 0. CLW mul add
+2 div def <C5> /Symbol 0. [1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial
+153 53 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 2.0
+2.0 /TheNodeT-0-0 /TheNodeT-0-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 153 142 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-0-1 14
+NewNode 0.0 0.0 /Y ED /X ED /w 3.0 def /h 3.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 6.0 0. CLW mul add
+2 div def <C5> /Symbol 0. [1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial 153
+53 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 2.0
+2.0 /TheNodeT-0-0 /TheNodeT-0-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 490 98 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-1 14 NewNode
+0.0 0.0 /Y ED /X ED /w 3.0 def /h 3.0 def /NodePos { OvalNodePos }
+def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 6.0 0. CLW mul add
+2 div def <C5> /Symbol 0. [1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial 490 98
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 2.0
+2.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 579 98 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-2 14 NewNode
+0.0 0.0 /Y ED /X ED /w 3.0 def /h 3.0 def /NodePos { OvalNodePos }
+def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 6.0 0. CLW mul add
+2 div def <C5> /Symbol 0. [1.44928 0.0 0.0 1.44928 -0.562319 -0.478261]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial 579 98 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 2.0
+2.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+
+712 30 a Fw(\\pstree[treemode=U,dotstyle=oplus,dotsize=6pt,)758
+90 y(nodesep=2pt]{\\T)-5 b(c{3pt}}{\045)758 150 y(\\pstree[treemode=L]{\\T)g
+(c{3pt}}{\045)803 211 y(\\Tdot)803 271 y(\\Tdot})758 331 y(\\Tdot)758
+391 y(\\Tdot})591 510 y Fy(When)15 b(the)h(tree)g(goes)f(up)h(or)f(down,)g
+(the)h(successors)f(are)g(lined)h(up)g(from)f(left)591 570
+y(to)f(right)h(in)g(the)g(order)f(they)h(appear)g(in)g Fx(\\pstree)p
+Fy(')m(s)f(ar)o(gument.)25 b(When)15 b(the)g(tree)591 630 y(goes)c(left)h(or)
+f(right,)h(the)g(successors)e(are)i(lined)g(up)f(from)g(top)h(to)g(bottom.)17
+b(As)11 b(an)591 690 y(afterthought,)h(you)g(might)g(want)g(to)h(\257ip)e
+(the)i(order)f(of)f(the)i(nodes.)k(The)712 800 y Fq(tree\257ip=)p
+Fp(true/false)496 b Fo(Default:)20 b Fq(false)591 910 y Fy(let')m(s)12
+b(you)g(do)g(this.)591 996 y(A)h(tree)i(can)f(also)g(be)g(root)g(node.)23
+b(This)14 b(is)g(useful)g(when)f(the)h(nested)h(tree)f(goes)591
+1056 y(of)o(f)g(in)h(a)g(dif)o(ferent)h(direction.)26 b(If)15
+b Fv(treeB)h Fy(is)f(the)g(root)g(node)f(of)h Fv(treeA)p Fy(,)f(then)h(the)
+591 1116 y(root)d(of)f Fv(treeB)j Fy(is)e(also)g(the)g(root)g(node)g
+Fv(treeA)p Fy(.)437 1257 y
+ tx@Dict begin gsave STV CP T 18.55884 2 div 6.79684 0.09792 add 2
+div 2 copy 0.09792 sub 4 2 roll Pyth 3.0 add 0.8 add tx@NodeDict begin
+/TheNodeT-0 11 NewNode InitCnode end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 18.55884 2 div 6.79684
+0.09792 add 2 div 2 copy 0.09792 sub 4 2 roll Pyth 3.0 add CLW 2 div
+add 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+Fy(root)224 1259 y
+ tx@Dict begin gsave STV CP T 7.7818 0.0 7.68388 3.84193 3.8909 tx@NodeDict
+begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore end
+ Fy(B)240 1243 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 373 1495 a
+ tx@Dict begin gsave STV CP T 7.7818 0.0 14.07753 7.03876 3.8909 tx@NodeDict
+begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore end
+ Fy(A1)402 1479
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 520 1495 a
+ tx@Dict begin gsave STV CP T 7.7818 0.0 14.07753 7.03876 3.8909 tx@NodeDict
+begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore end
+ Fy(A2)549 1479 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1201 a Fw(\\pstree{\045)758
+1261 y(\\pstree[treemode=L]{\\T)-5 b(circle{root}}{\045)803
+1321 y(\\T)n(r{B}}\045)758 1381 y(}{\045)803 1441 y(\\T)n(r{A1})803
+1502 y(\\T)n(r{A2}})591 1620 y Fy(A)11 b(node)h(can)g(also)g(contain)h(a)f
+(tree,)h(but)f(that)h(is)e(another)i(story)m(.)591 1706 y(The)f(distance)h
+(between)f(successors)f(and)h(between)g(levels)g(is)g(given)h(by)e(the)712
+1816 y Fq(treesep=)p Fp(dim)588 b Fo(Default:)20 b Fq(.75cm)712
+1876 y(levelsep=)p Fp(*dim)590 b Fo(Default:)20 b Fq(2cm)591
+1986 y Fy(parameters.)591 2072 y(The)h(distance)h(between)g(successors)e
+(takes)i(into)g(account)g(the)f(size)h(of)f(the)591 2132 y(nodes,)14
+b(but)g(the)h(distance)f(between)h(levels)g(does)e(not,)i(at)g(least)f(by)g
+(default.)25 b(If)591 2193 y(you)18 b(include)h(the)h(optional)f
+Fw(*)g Fy(when)f(setting)h Fx(levelsep)p Fy(,)h(the)f(level)h(sep)e(is)h(in)
+591 2253 y(addition)d(to)g(the)g(size)h(of)e(the)h(nodes.)29
+b(However)n(,)16 b(PST)n(ricks)f(needs)h(a)g(second)591 2313
+y(run)11 b(through)g(T)847 2324 y(E)870 2313 y(X)g(\(without)g(any)g(changes)
+h(between)f(runs\))g(to)g(get)h(the)g(spacing)591 2373 y(right,)f(and)f(it)h
+(writes)g(to)g(the)f Fw(.aux)h Fy(\256le)g(with)f(L)1331 2367
+y(a)1345 2373 y(T)1366 2388 y(E)1390 2373 y(X,)g(and)h(to)f(the)h(\256le)g
+Fw(\\jobname.pst)591 2433 y Fy(with)g(other)g(macro)h(packages.)17
+b(\(Even)11 b(then,)h(there)f(is)g(no)g(guarantee)h(it)g(will)f(get)591
+2494 y(the)h(spacing)g(right.\))591 2580 y(Here)17 b(are)g(two)g(exaggerated)
+h(examples)f(that)h(illustrates)g(the)g(dif)o(ference)g(be-)591
+2640 y(tween)12 b(relative)h(and)f(absolute)g(spacing)g(between)h(levels:)591
+2828 y Fr(T)o(rees)1221 b(37)p eop
+%%Page: 38 13
+12 bop 461 27 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461
+27 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 352 145 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 352 145
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 352 145 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 109 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461
+145 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 461 145 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 381 263 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 15.0 0 360 arc
+fill end
+
+@endspecial
+381 263 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 15.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 381 263 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 160 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+541 263 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 541 263 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 570 145 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+570 145 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 570 145 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 30 a Fw(\\pstree[levelsep=1cm,radius=2pt]{\\T)-5
+b(c{3pt}}{\045)758 90 y(\\TC*)758 150 y(\\pstree{\\T)g(c{3pt}}{\045)803
+211 y(\\T)g(c*{15pt})803 271 y(\\TC*})758 331 y(\\TC*})461
+431 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461 431 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 352
+574 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 352 574 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 352
+574 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 109 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461 574
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 461 574 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 381 767 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 15.0 0 360 arc
+fill end
+
+@endspecial
+381 767 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 15.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 381 767 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 160 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+541 767 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 541 767 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 570 574 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+570 574 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 570 574 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 454 a Fw(\\psset{levelsep=*1cm,radius=2pt})712
+514 y(\\pstree{\\T)g(c{3pt}}{\045)758 574 y(\\TC*)758 634 y(\\pstree{\\T)g
+(c{3pt}}{\045)803 694 y(\\T)g(c*{15pt})803 755 y(\\TC*})758
+815 y(\\TC*})591 964 y Fy(If)11 b(you)h(set)g(the)712 1088
+y Fq(treenodesize=)p Fp(dim)511 b Fo(Default:)20 b Fq(-1pt)591
+1212 y Fy(to)f(a)g(non-negative)g(value,)i(then)e(PST)n(ricks)g(uses)f
+Fx(treenodesize)f Fy(as)i(a)g(\256xed)591 1272 y(size)c(of)h(the)f
+(successors)g(\(in)g(the)h(direction)h(of)e(their)h(neighbors,)g(i.e.,)h(a)e
+(\256xed)591 1332 y(width)h(for)h(vertical)h(trees)f(and)g(a)f(\256xed)h
+(height/depth)h(for)e(horizontal)i(trees\).)591 1393 y(For)10
+b(example,)i(sometimes)g(it)g(is)f(esthetically)h(pleasing)g(to)f(smooth)g
+(over)g(small)591 1453 y(variations)h(in)g(the)h(sizes)f(of)f(the)i(nodes.)k
+(Compare)385 1544 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+385 1544 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 235 1795 a
+ tx@Dict begin gsave STV CP T 7.55716 2.39041 3.30624 1.65312 3.61267
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fu(j)242 1780 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+-8.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 338 1795 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 12.02391 6.01195 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fu(K)370 1802
+y Fj(4)363 1780 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+-8.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 476 1795 a
+ tx@Dict begin gsave STV CP T 5.87523 2.39041 24.67244 12.33621 3.61267
+ tx@NodeDict begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore
+end
+ Fu(x)d(>)g(y)527 1780 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+-8.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1588
+a Fw(\\pstree[nodesepB=-8pt]{\\T)-5 b(c{3pt}}{\045)758 1649
+y(\\TR{$j$}\045)758 1709 y(\\TR{$K_4$}\045)758 1769 y(\\TR{$x>y$}})591
+1929 y Fy(with)401 2010 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+401 2010 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 265 2261 a
+ tx@Dict begin gsave STV CP T 7.55716 2.39041 3.30624 1.65312 3.61267
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fu(j)272 2246 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+-8.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 376 2261 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 12.02391 6.01195 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fu(K)408 2268
+y Fj(4)401 2246 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+-8.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 480 2261 a
+ tx@Dict begin gsave STV CP T 5.87523 2.39041 24.67244 12.33621 3.61267
+ tx@NodeDict begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore
+end
+ Fu(x)14 b(>)g(y)531 2246 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+-8.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 712
+2055 a Fw(\\pstree[treenodesize=.4cm,treesep=.3cm,nodesepB=-8pt]{\\T)-5
+b(c{3pt}}{\045)758 2115 y(\\TR{$j$}\045)758 2175 y(\\TR{$K_4$}\045)758
+2235 y(\\TR{$x>y$}})591 2395 y Fy(A)10 b(subtree')m(s)h(pro\256le)g(varies)g
+(from)g(level)g(to)g(level.)18 b Fx(\\pstree)10 b Fy(has)h(two)f(modes)h(for)
+591 2456 y(\256tting)h(subtrees)f(together:)591 2580 y Fb(tight)24
+b Fy(W)n(ith)16 b(tight)h(\256t,)g(the)f(subtrees)g(are)g(\256t)g(together)g
+(so)g(that)g(the)h(minimum)712 2640 y(distance)c(on)f(any)g(level)h(is)f
+Fx(treesep)p Fy(.)j(This)d(is)g(the)g(default.)591 2828 y Fr(T)o(rees)1221
+b(38)p eop
+%%Page: 39 14
+13 bop 591 50 a Fb(loose)24 b Fy(W)n(ith)10 b(loose)g(\256t,)g(the)g
+(distance)h(between)f(the)g(subtrees')g(bounding)f(boxes)712
+110 y(is)16 b Fx(treesep)p Fy(.)25 b(Except)16 b(when)f(you)g(have)h
+(exceptionally)h(lar)o(ge)f(interme-)712 170 y(diate)g(nodes,)e(the)g(ef)o
+(fect)h(is)f(that)h(the)g(horizontal)g(distance)g(\(or)e(vertical)712
+230 y(distance,)18 b(for)e(horizontal)g(trees\))g(between)g(all)h(the)f
+(terminal)i(nodes)d(is)712 291 y(the)e(same.)591 403 y(Y)-5
+b(ou)11 b(select)i(the)f(mode)h(with)f(the)712 515 y Fq(tree\256t=)p
+Fp(tight/loose)499 b Fo(Default:)20 b Fq(tight)591 627 y Fy(parameter)m(.)929
+794 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 929 794 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 877
+1030 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 877 1030 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 877
+1030 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 982 1030
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 982 1030 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 822 1267 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+822 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 822 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 717 1503 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 717 1503 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-0
+11 NewNode InitCnode end end grestore end
+ 717 1503 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 822 1503 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-1
+11 NewNode InitCnode end end grestore end
+ 822 1503 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 927 1503 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-2
+11 NewNode InitCnode end end grestore end
+ 927 1503 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-2 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 931 1267 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 931 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 931 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 106 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1037 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-2
+11 NewNode InitCnode end end grestore end
+ 1037 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-2 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1142 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-3
+11 NewNode InitCnode end end grestore end
+ 1142 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-3 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1605 794 a
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1605 794 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 1395 1030
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 1395 1030 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 1395 1030
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 420 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1815 1030 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+
+1815 1030 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 1605 1267 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+1605 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 1605 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1500 1503 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 1500 1503 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-0
+11 NewNode InitCnode end end grestore end
+ 1500 1503 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 1605 1503 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-1
+11 NewNode InitCnode end end grestore end
+ 1605 1503 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 1710 1503 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-2
+11 NewNode InitCnode end end grestore end
+ 1710 1503 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-2 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1815 1267 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1815 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 1815 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 106 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1921 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-2
+11 NewNode InitCnode end end grestore end
+ 1921 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-2 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 2026 1267 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-3
+11 NewNode InitCnode end end grestore end
+ 2026 1267 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-3 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 817 1562 a
+Fx(tree\256t=tight)543 b(tree\256t=loose)591 1672 y Fy(As)10
+b(noted)i(at)f(the)h(beginning)g(of)f(this)g(section,)h(parameter)h(changes)e
+(made)h(with)591 1732 y Fx(\\pstree)e Fy(af)o(fect)i(all)g(subtrees.)17
+b(However)n(,)11 b(there)h(are)f(variants)h(of)f(some)g(of)h(these)591
+1792 y(parameters)i(for)f(making)h(local)h(changes,)f(i.e,)g(changes)f(that)i
+(af)o(fects)f(only)f(the)591 1852 y(current)f(level:)712 1965
+y Fq(thistreesep=)p Fp(dim)640 b Fo(Default:)712 2025 y Fq(thistreenodesize=)
+p Fp(dim)514 b Fo(Default:)712 2085 y Fq(thistree\256t=)p Fp(tight/loose)k
+Fo(Default:)712 2145 y Fq(thislevelsep=)p Fp(*dim)601 b Fo(Default:)591
+2257 y Fy(For)11 b(example:)339 2336 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 0 360 arc
+fill end
+
+
+@endspecial 339 2336 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 160 2395 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 160 2395 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 160 2395 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 107 2632 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 107 2632 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-0
+11 NewNode InitCnode end end grestore end
+ 107 2632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0 /TheNodeT-0-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 212 2632 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-1
+11 NewNode InitCnode end end grestore end
+ 212 2632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0 /TheNodeT-0-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 518 2395 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 518 2395 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 518 2395 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 465 2632 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 465 2632 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 465 2632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 570 2632 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 570 2632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 712 2432 a Fw
+(\\pstree[thislevelsep=.5cm,thistreesep=2cm,radius=2pt]{\\T)-5
+b(c*{3pt}}{\045)803 2492 y(\\pstree{\\TC*}{\\TC*)23 b(\\TC*})803
+2553 y(\\pstree{\\TC*}{\\TC*)g(\\TC*}})591 2828 y Fr(T)o(rees)1221
+b(39)p eop
+%%Page: 40 15
+14 bop 591 50 a Fy(There)12 b(are)f(some)h(things)f(you)h(may)f(want)h(set)g
+(uniformly)f(across)g(a)h(level)h(in)e(the)591 110 y(tree,)g(such)f(as)h(the)
+g Fx(levelsep)p Fy(.)16 b(At)10 b(level)i Fv(n)q Fy(,)e(the)h(command)h
+Fw(\\pstreehook)p Fv(roman\(n\))591 170 y Fy(\(e.g.,)d Fw(\\pstreehookii)p
+Fy(\))f(is)g(executed,)i(if)f(it)g(is)f(de\256ned)h(\(the)g(root)f(node)h(of)
+f(the)h(whole)591 230 y(tree)i(is)h(level)g(0,)f(the)h(successor)e(tree)i
+(objects)g(and)f(the)h(node)f(connections)h(from)591 291 y(the)19
+b(root)g(node)h(to)f(these)g(successors)f(is)i(level)g(1,)h(etc.\).)39
+b(In)19 b(the)h(following)591 351 y(example,)15 b(the)f Fx(levelsep)e
+Fy(is)i(changed)g(for)f(level)i(2,)e(without)h(having)g(to)g(set)f(the)591
+411 y Fx(thislevelsep)d Fy(parameter)j(for)f(each)h(of)e(the)i(three)f
+(subtrees)g(that)h(make)f(of)g(level)591 471 y(2:)712 588 y
+Fw(\\[)758 648 y(\\def\\pstreehookiii{\\psset{thislevelsep=3cm}})758
+709 y(\\pstree[treemode=R,levelsep=1cm,radius=2pt]{\\T)-5 b(c{4pt}}{\045)803
+769 y(\\pstree{\\TC*}{\045)849 829 y(\\pstree{\\TC*}{\\T)n(r{X_1})21
+b(\\T)n(r{X_2}})849 889 y(\\pstree{\\TC*}{\\T)n(r{Y_1})g(\\T)n(r{Y_2}}})803
+949 y(\\pstree{\\TC*}{\045)849 1010 y(\\pstree{\\TC*}{\\T)n(r{K_1})g(\\T)n
+(r{K_2}})849 1070 y(\\pstree{\\TC*}{\\T)n(r{J_1})g(\\T)n(r{J_2}}}})712
+1130 y(\\])970 1701 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 4.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+970 1701 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 4.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 1088 1446 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+1088 1446 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 1088 1446 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 1206 1319 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 1206 1319 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-0
+11 NewNode InitCnode end end grestore end
+ 1206 1319 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0 /TheNodeT-0-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1537 1267 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 11.37878 5.68939 2.87859
+ tx@NodeDict begin /TheNodeT-0-0-0-0 16 NewNode InitRnode end end
+grestore end
+ Fu(X)1566
+1274 y Fj(1)1561 1255 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0-0 /TheNodeT-0-0-0-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1537 1395 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 11.37878 5.68939 2.87859
+ tx@NodeDict begin /TheNodeT-0-0-0-1 16 NewNode InitRnode end end
+grestore end
+ Fu(X)1566 1402 y Fj(2)1561
+1255 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0-0 /TheNodeT-0-0-0-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1206 1574 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1206
+1574 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-1
+11 NewNode InitCnode end end grestore end
+ 1206 1574 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0 /TheNodeT-0-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1538 1522 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 10.74518 5.37259 2.87859
+ tx@NodeDict begin /TheNodeT-0-0-1-0 16 NewNode InitRnode end end
+grestore end
+ Fu(Y)1565 1529 y Fj(1)1561 1510
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0-1 /TheNodeT-0-0-1-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1539 1650 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 10.74518 5.37259 2.87859
+ tx@NodeDict begin /TheNodeT-0-0-1-1 16 NewNode InitRnode end end
+grestore end
+ Fu(Y)1566 1657 y Fj(2)1561 1510 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0-1 /TheNodeT-0-0-1-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1088 1956 a
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1088 1956 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 1088 1956
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 1206 1829 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1206 1829
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 1206 1829 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1536 1777 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 12.02391 6.01195 2.87859
+ tx@NodeDict begin /TheNodeT-0-1-0-0 16 NewNode InitRnode end end
+grestore end
+ Fu(K)1568 1784 y Fj(1)1561 1765 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+
+1536 1904 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 12.02391 6.01195 2.87859
+ tx@NodeDict begin /TheNodeT-0-1-0-1 16 NewNode InitRnode end end
+grestore end
+ Fu(K)1568 1911 y Fj(2)1561 1765 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1206 2084 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1206 2084 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 1206 2084 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1541 2032
+a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 9.45494 4.72746 2.87859
+ tx@NodeDict begin /TheNodeT-0-1-1-0 16 NewNode InitRnode end end
+grestore end
+ Fu(J)1562 2039 y Fj(1)1561 2020 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-1 /TheNodeT-0-1-1-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1541 2159 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 9.45494 4.72746 2.87859
+ tx@NodeDict begin /TheNodeT-0-1-1-1 16 NewNode InitRnode end end
+grestore end
+ Fu(J)1562 2166
+y Fj(2)1561 2020 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-1 /TheNodeT-0-1-1-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 366 2400 a Fm(16)71 b(Edges)591 2520 y Fy(A)13
+b(tree)h(node)f(is)g(really)i(a)e(composite)h(object.)23 b(In)13
+b(addition)h(to)g(creating)g(a)g(new)591 2580 y(node,)c(it)g(also)f(draws)g
+(a)h(node)g(connection)g(between)g(itself)h(and)e(its)h(predecessor)n(,)591
+2640 y(if)i(there)g(is)g(one.)591 2828 y Fr(Edges)1209 b(40)p
+eop
+%%Page: 41 16
+15 bop 591 50 a Fy(When)18 b(a)g(tree)g(node)g(has)g(made)h(the)f(new)g
+(node,)h(the)f(command)h Fx(\\pssucc)e Fy(is)591 110 y(equal)d(to)g(the)g
+(name)g(of)f(this)h(node,)g(and)g Fx(\\pspred)f Fy(is)h(equal)g(to)g(the)g
+(name)g(of)g(its)591 170 y(predecessor)m(.)j(Then)12 b(the)g(tree)h(node)f
+(executes)712 301 y Fw(\\psedge{\\pspred}{\\pssucc})591 432
+y Fy(Y)-5 b(ou)15 b(can)h(de\256ne)g Fx(\\psedge)g Fy(to)g(make)g(whatever)g
+(node)g(connection)h(you)f(want)591 492 y(\(see)i(Section)g
+Fb(??)p Fy(\).)35 b(For)17 b(example,)k(here)d(I)g(use)g Fx(\\ncdiag)p
+Fy(,)h(with)f Fx(armA=0)p Fy(,)i(to)591 552 y(get)f(all)h(the)g(node)g
+(connections)f(to)h(emanate)h(from)e(the)h(same)f(point)h(in)f(the)591
+612 y(predecessor:)712 743 y Fw
+(\\def\\psedge{\\ncdiag[armA=0,angleB=180,armB=1cm]})712 803
+y(\045)24 b(Or:)e(\\renewcommand{\\psedge}{)e(...)k(})712 863
+y(\\pstree[treemode=R,levelsep=3.5cm,framesep=2pt]{\\T)-5 b(c{6pt}}{\045)758
+924 y(\\small)23 b(\\T)-5 b(circle{N})24 b(\\T)-5 b(circle{K})23
+b(\\T)-5 b(circle{H})24 b(\\T)-5 b(circle{L}})1065 1285 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 6.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 1065 1285 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 6.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 1462 1067 a
+ tx@Dict begin gsave STV CP T 7.5897 2 div 7.10089 0.1419 add 2 div
+2 copy 0.1419 sub 4 2 roll Pyth 2.0 add 0.8 add tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.5897 2 div 7.10089
+0.1419 add 2 div 2 copy 0.1419 sub 4 2 roll Pyth 2.0 add CLW 2 div
+add 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial Fn(N)1478 1053 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 0. def /AngleB 180. def /armA 0.0 def
+/armB 28.45274 def NCDiag } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 1462 1223 a
+ tx@Dict begin gsave STV CP T 7.5897 2 div 7.10089 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 2.0 add 0.8 add tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.5897 2 div 7.10089
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 2.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fn(K)1478 1053 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 0. def /AngleB 180. def /armA 0.0 def
+/armB 28.45274 def NCDiag } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 1462 1378 a
+ tx@Dict begin gsave STV CP T 7.5897 2 div 7.10089 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 2.0 add 0.8 add tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 7.5897 2 div 7.10089
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 2.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fn(H)1478 1053 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 0. def /AngleB 180. def /armA 0.0 def
+/armB 28.45274 def NCDiag } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 1465 1532 a
+ tx@Dict begin gsave STV CP T 6.42287 2 div 7.10089 0.0 add 2 div 2
+copy 0.0 sub 4 2 roll Pyth 2.0 add 0.8 add tx@NodeDict begin /TheNodeT-0-3
+11 NewNode InitCnode end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 6.42287 2 div 7.10089
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 2.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial Fn(L)1478 1053 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-3 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 0. def /AngleB 180. def /armA 0.0 def
+/armB 28.45274 def NCDiag } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 591 1668 a Fy(Here)15
+b(is)h(another)g(example)h(with)f Fx(\\ncdiagg)p Fy(.)29 b(Note)16
+b(the)g(use)g(of)f(negative)i(the)591 1728 y Fx(armA)12 b Fy(value)h(so)f
+(that)h(the)g(corners)f(of)g(the)h(edges)f(are)g(vertically)i(aligned,)g
+(even)591 1789 y(though)d(the)i(nodes)e(have)i(dif)o(ferent)f(sizes:)712
+1919 y Fw($)712 1980 y(\\def\\psedge#1#2{\\ncdiagg[angleA=180)o(,)20
+b(armA=-3cm,)758 2040 y(nodesep=4pt]{#2}{#1)o(}})712 2100 y(\045)k(Or:)e
+(\\renewcommand{\\psedge}[2]{)e(...)k(})712 2160 y(\\pstree[treemode=R,)f
+(levelsep=5cm]{\\T)-5 b(c{3pt}}{\045)758 2220 y(\\T)n(r{z_1\\leq)22
+b(y})758 2281 y(\\T)n(r{z_1<y\\leq)h(z_2})758 2341 y(\\T)n(r{z_2<y\\leq)g(x})
+758 2401 y(\\T)n(r{x<y}})712 2461 y($)591 2828 y Fr(Edges)1209
+b(41)p eop
+%%Page: 42 17
+16 bop 935 213 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 935
+213 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 1482 31 a
+ tx@Dict begin gsave STV CP T 7.46907 2.39041 20.89365 10.44682 2.53932
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fu(z)1501 38 y Fj(1)1520 31 y Fz(\243)q Fu(y)1525
+20 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 4.0
+4.0 /TheNodeT-0-0 /TheNodeT-0 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 180. def /AngleB 0. def /armA -85.35826
+def /armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 1434 161 a
+ tx@Dict begin gsave STV CP T 7.46907 2.39041 44.1576 22.0788 2.53932
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fu(z)1453 168 y Fj(1)1484 161 y Fu(<)14 b(y)q
+Fz(\243)r Fu(z)1599 168 y Fj(2)1525 20 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 4.0
+4.0 /TheNodeT-0-1 /TheNodeT-0 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 180. def /AngleB 0. def /armA -85.35826
+def /armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 1441 290 a
+ tx@Dict begin gsave STV CP T 7.46907 2.39041 40.52028 20.26013 2.53932
+ tx@NodeDict begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore
+end
+ Fu(z)1460
+297 y Fj(2)1492 290 y Fu(<)g(y)q Fz(\243)r Fu(x)1525 20 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 4.0
+4.0 /TheNodeT-0-2 /TheNodeT-0 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 180. def /AngleB 0. def /armA -85.35826
+def /armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 1474
+413 a
+ tx@Dict begin gsave STV CP T 5.87523 2.39041 24.67244 12.33621 1.7424
+ tx@NodeDict begin /TheNodeT-0-3 16 NewNode InitRnode end end grestore
+end
+ Fu(x)g(<)g(y)1525 20 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 4.0
+4.0 /TheNodeT-0-3 /TheNodeT-0 InitNC { tx@Dict begin /Lineto /lineto
+load def false pop end /AngleA 180. def /AngleB 0. def /armA -85.35826
+def /armB 10.0 def NCDiagg } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 591 542 a Fy(Another)d(way)h(to)g(de\256ne)g
+Fx(\\psedge)f Fy(is)h(with)g(the)712 673 y Fq(edge=)p Fp(command)487
+b Fo(Default:)20 b Fq(\\ncline)591 804 y Fy(parameter)m(.)d(Be)9
+b(sure)g(to)f(enclose)i(the)f(value)g(in)g(braces)g Fw({})f
+Fy(if)h(it)g(contains)g(commas)591 864 y(or)18 b(other)h(parameter)h
+(delimiters.)39 b(This)19 b(gets)g(messy)f(if)h(your)g(command)g(is)591
+924 y(long,)10 b(and)f(you)h(can')o(t)g(use)g(ar)o(guments)g(like)g(in)g(the)
+g(preceding)g(example,)h(but)f(for)591 984 y(simple)15 b(changes)g(it)g(is)g
+(useful.)26 b(For)14 b(example,)i(if)f(I)g(want)g(to)g(switch)f(between)591
+1045 y(a)f(few)f(node)h(connections)g(frequently)m(,)g(I)g(might)h(de\256ne)e
+(a)h(command)h(for)e(each)591 1105 y(node)f(connection,)i(and)f(then)h(use)e
+(the)i Fx(edge)e Fy(parameter)m(.)461 1671 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461 1671 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 352 1434 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 352 1434 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 352 1434 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 5.0 3.0 0 0 add DashLine grestore grestore end
+ 109 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461 1434 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 461 1434 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 408 1198 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 408 1198 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 408 1198 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 5.0 3.0 0 0 add DashLine grestore grestore end
+ 106 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 514 1198 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 514 1198 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 570 1434 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 570 1434 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 570 1434 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1327 a Fw
+(\\def\\dedge{\\ncline[linestyle=dashed]})712 1387 y
+(\\pstree[treemode=U,radius=2pt]{\\T)-5 b(c{3pt}}{\045)758
+1447 y(\\TC*[edge=\\dedge])758 1507 y(\\pstree{\\T)g
+(c{3pt}}{\\TC*[edge=\\dedge])21 b(\\TC*})758 1567 y(\\TC*})591
+1814 y Fy(Y)-5 b(ou)11 b(can)h(also)g(set)g Fx(edge=none)f
+Fy(to)h(suppress)f(the)h(node)g(connection.)591 1903 y Fx(edge)h
+Fy(is)g(the)h(only)g(parameter)h(which,)f(when)f(set)h(in)g(a)g(tree)g(node')
+m(s)g(parameter)591 1963 y(ar)o(gument,)e(af)o(fects)h(the)g(drawing)e(of)h
+(the)h(node)f(connection)h(\(e.g.,)f(if)g(you)g(want)591 2023
+y(to)g(change)g(the)g Fx(nodesep)p Fy(,)f(your)h(edge)g(has)f(to)h(include)h
+(the)f(parameter)h(change,)591 2084 y(or)e(you)h(have)g(to)g(set)h(it)f
+(before)g(the)h(node\).)591 2173 y(If)g(you)f(want)i(to)f(draw)g(a)g(node)g
+(connection)h(between)g(two)f(nodes)f(that)i(are)g(not)591
+2233 y(direct)j(predecessor)g(and)f(successor)n(,)i(you)e(have)h(to)g(give)g
+(the)g(nodes)f(a)h(name)591 2293 y(that)f(you)f(can)h(refer)g(to,)h(using)e
+(the)h Fx(name)f Fy(parameter)m(.)30 b(For)15 b(example,)i(here)f(I)591
+2353 y(connect)c(two)g(nodes)f(on)h(the)h(same)f(level:)591
+2828 y Fr(Edges)1209 b(42)p eop
+%%Page: 43 18
+17 bop 353 50 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0 14 NewNode
+/X 14.39433 def /Y 3.34946 def /w 24.15361 def /h 8.67459 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 24.15361 CLW 2
+div sub 8.67459 CLW 2 div sub 14.39433 3.34946 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial Fy(nature)307
+272 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 307 272 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end /TheNodetop /TheNodeT-0-0 load def end grestore
+end
+ 307
+272 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 255 508 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 255
+508 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-0
+11 NewNode InitCnode end end grestore end
+ 255 508 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-0 /TheNodeT-0-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+360 508 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-1
+11 NewNode InitCnode end end grestore end
+ 360 508 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-0 /TheNodeT-0-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 518 272 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+518 272 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end /TheNodebot /TheNodeT-0-1 load def end grestore
+end
+ 518 272 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 465 508 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+465 508 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 465 508 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+570 508 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 570 508 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0
+3.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 591 36 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodetop /TheNodebot InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 5.0 3.0 0 0 add DashLine grestore grestore end
+ 712 179 a Fw
+(\\pstree[nodesep=3pt,radius=2pt]{\\T)-5 b(oval{nature}}{)o(\045)758
+239 y(\\pstree{\\T)g(c[name=top]{3pt}}{\\TC*)22 b(\\TC*})758
+299 y(\\pstree{\\T)-5 b(c[name=bot]{3pt}}{\\TC*)22 b(\\TC*}})735
+359 y(\\ncline[linestyle=dashed]{top}{bot})591 648 y Fy(W)l(e)12
+b(conclude)h(with)f(the)g(more)g(examples.)109 985 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0 14 NewNode
+/X 9.27942 def /Y 3.34946 def /w 16.92111 def /h 8.67459 def /NodePos
+{ OvalNodePos } def end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 16.92111 CLW 2
+div sub 8.67459 CLW 2 div sub 9.27942 3.34946 /mtrx CM def T scale
+0 0 1 5 3 roll arc mtrx setmatrix closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial Fy(root)544 777 y
+ tx@Dict begin gsave STV CP T 7.7818 0.0 8.31749 4.15874 3.8909 tx@NodeDict
+begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore end
+ Fy(X)561 761 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { /AngleA 0. def /AngleB 180.
+ def 0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 544
+987 a
+ tx@Dict begin gsave STV CP T 7.7818 0.0 8.31749 4.15874 3.8909 tx@NodeDict
+begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore end
+ Fy(Y)561 761 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { /AngleA 0. def /AngleB 180.
+ def 0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 546 1196 a
+ tx@Dict begin gsave STV CP T 7.7818 0.0 7.03876 3.51938 3.8909 tx@NodeDict
+begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore end
+ Fy(Z)561 761 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { /AngleA 0. def /AngleB 180.
+ def 0.67 0.67 NCCurve } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 921 a Fw
+(\\def\\psedge{\\nccurve[angleB=180,)22 b(nodesepB=3pt]})712
+981 y(\\pstree[treemode=R,)h(treesep=1.5,)f(levelsep=3.5]\045)758
+1041 y({\\T)-5 b(oval{root}}{\\T)n(r{X})21 b(\\T)n(r{Y})h(\\T)n(r{Z}})359
+1363 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0 14 NewNode
+/X 9.27942 def /Y 3.34946 def /w 11.96602 2 mul def /h 6.13397 2 mul
+def /NodePos { DiaNodePos } def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 11.96602 2 mul 6.13397 2 mul 0 9.27942 3.34946 /mtrx
+CM def T rotate /h ED /w ED dup 0 eq { pop } { CLW mul neg /d ED /a
+w h Atan def /h d a sin Div h add def /w d a cos Div w add def } ifelse
+mark w 2 div h 2 div w 0 0 h neg w neg 0 0 h w 2 div h 2 div /ArrowA
+{ moveto } def /ArrowB { } def false Line closepath mtrx setmatrix
+ gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial Fy(root)278 1659
+y
+ tx@Dict begin gsave STV CP T 5.0285 0.11519 5.18402 2.59201 3.61267
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fu(x)289 1644 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 3.0 /TheNodeT-0
+/TheNodeT-0-0 InitNC { tx@Dict begin /Lineto /lineto load def false
+pop end /AngleA 180. def /AngleB 180. def /armA 10.0 def /armB 10.0
+def /AngleB 180. def NCBar } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 388 1659 a
+ tx@Dict begin gsave STV CP T 5.0285 2.39041 5.11491 2.55745 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fu(y)399 1644 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 3.0 /TheNodeT-0
+/TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0
+setlinecap stroke grestore grestore end
+ 498 1659 a
+ tx@Dict begin gsave STV CP T 5.0285 0.0 4.48131 2.24065 3.61267 tx@NodeDict
+begin /TheNodeT-0-2 16 NewNode InitRnode end end grestore end
+ Fu(z)507
+1644 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 1.5 2. Arrow EndArrow }
+def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0 3.0 /TheNodeT-0
+/TheNodeT-0-2 InitNC { tx@Dict begin /Lineto /lineto load def false
+pop end /AngleA 0. def /AngleB 0. def /armA 10.0 def /armB 10.0 def
+/AngleB 0. def NCBar } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 1313 a Fw(\\pstree[nodesepB=3pt,)g(arrows=->,)g(xbbl=15pt,)758
+1374 y(xbbr=15pt,)g(levelsep=2.5cm]{\\Tdia{root}}{\045)758
+1434 y($)758 1494 y(\\TR[edge={\\ncbar[angle=180]}]{x})758
+1554 y(\\TR{y})758 1614 y(\\TR[edge=\\ncbar]{z})758 1675 y($})330
+1857 y
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0 14 NewNode
+50.71408 24.78677 -3.89792 0 18.55884 6.79684 0.09792 InitTriNode
+end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /Lineto /lineto load
+def false pop .5 50.71408 24.78677 0 -90 mul 9.27942 -3.89792 /mtrx
+CM def translate rotate /h ED 2 div /w ED dup 0 eq { pop } { CLW mul
+/d ED /h h d w h Atan sin Div sub def /w w d h w Atan 2 div dup cos
+exch sin Div mul sub def } ifelse mark 0 d w neg d 0 h w d 0 d /ArrowA
+{ moveto } def /ArrowB { } def false Line closepath mtrx setmatrix
+ gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial Fy(root)166 2198
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 166 2198 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 166 2198
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 0.0 /TheNodeT-0-0 /TheNodeT-0
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+90. def /AngleB -90. def /armA 10.0 def /armB 28.45274 def NCAngle
+ } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 135 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 301 2198 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 301
+2198 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 0.0 /TheNodeT-0-1 /TheNodeT-0
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+90. def /AngleB -90. def /armA 10.0 def /armB 28.45274 def NCAngle
+ } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 135 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 436 2198
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 436 2198 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 0.0 /TheNodeT-0-2 /TheNodeT-0
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+90. def /AngleB -90. def /armA 10.0 def /armB 28.45274 def NCAngle
+ } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 134 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 570
+2198 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-3
+11 NewNode InitCnode end end grestore end
+ 570 2198 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 1.5 2. Arrow EndArrow moveto } def /ArrowB { } def
+/NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 3.0 0.0 /TheNodeT-0-3 /TheNodeT-0
+InitNC { tx@Dict begin /Lineto /lineto load def false pop end /AngleA
+90. def /AngleB -90. def /armA 10.0 def /armB 28.45274 def NCAngle
+ } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 712 1908 a Fw(\\psset{armB=1cm,)i(levelsep=3cm,)f
+(treesep=1cm,)758 1969 y(angleB=-90,)e(angleA=90,)h(arrows=<-,)f
+(nodesepA=3pt})712 2029 y(\\def\\psedge#1#2{\\ncangle{#2}{)o(#1})o(})712
+2089 y(\\pstree[radius=2pt]{\\Ttri{root}}{\\TC*)g(\\TC*)j(\\TC*)f(\\TC*})366
+2403 y Fm(17)71 b(Edge)20 b(and)g(node)g(labels)591 2524 y
+Fy(Right)10 b(after)g(a)g(node,)g(an)g(edge)g(has)g(typically)h(been)f
+(drawn,)g(and)g(you)f(can)i(attach)591 2585 y(labels)h(using)g
+Fx(\\ncput)19 b(\\tlput)p Fy(,)12 b(etc.)591 2828 y Fr(Edge)d(and)g(node)h
+(labels)955 b(43)p eop
+%%Page: 44 19
+18 bop 591 50 a Fy(W)n(ith)14 b Fx(\\tlput)p Fy(,)f Fx(\\trput)p
+Fy(,)g Fx(\\taput)f Fy(and)h Fx(\\tbput)p Fy(,)g(you)g(can)h(align)g(the)f
+(labels)h(vertically)591 110 y(or)h(horizontally)m(,)j(just)d(like)i(the)f
+(nodes.)28 b(This)15 b(can)h(look)g(nice,)h(at)f(least)h(if)e(the)591
+170 y(slopes)c(of)h(the)g(node)g(connections)h(are)f(not)g(too)g(dif)o
+(ferent.)461 255 y
+ tx@Dict begin gsave STV CP T 0 0 tx@NodeDict begin /TheNodeT-0 10
+NewNode InitPnode end end grestore end
+ 352 491 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+352 491 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 352 491 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 352 491 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 2.88002 def
+/r 2.88002 def /h 4.16913 def /d 3.61267 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 340 506 a Fy(k)352 491 y
+ tx@Dict begin PutEnd end
+ 109
+w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 461 491 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 461 491
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 461 491 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 3.0 NCLW add def /l 1.91809 def
+/r 1.91809 def /h 1.66928 def /d 3.61267 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 453 506 a Fy(r)461 491 y
+ tx@Dict begin PutEnd end
+ 408 728 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 408 728 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 408 728 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 408 728 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.60129 def
+/r 1.60129 def /h 4.16913 def /d 6.101 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 401
+743 a Fy(j)408 728 y
+ tx@Dict begin PutEnd end
+ 106 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+514 728 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 514 728 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 514 728 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.60129 def
+/r 1.60129 def /h 1.39856 def /d 3.61267 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 507 743 a Fy(i)514 728 y
+ tx@Dict begin PutEnd end
+ 570
+491 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 570 491 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 570
+491 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 570 491 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 4.48131 def
+/r 4.48131 def /h 1.66928 def /d 3.61267 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 551 506 a Fy(m)570 491 y
+ tx@Dict begin PutEnd end
+ 712 326 a Fw
+(\\pstree[radius=2pt]{\\Tp}{\045)758 386 y(\\psset{tpos=.6})758
+446 y(\\TC*)23 b(\\tlput{k})758 506 y(\\pstree{\\T)-5 b(c{3pt})22
+b(\\tlput[labelsep=3pt]{r}}{\045)803 566 y(\\TC*)i(\\tlput{j})803
+626 y(\\TC*)g(\\trput{i}})758 687 y(\\TC*)f(\\trput{m}})591
+867 y Fy(W)n(ithin)12 b(trees,)f(the)h Fx(tpos)e Fy(parameter)j(measures)e
+(this)g(distance)h(from)f(the)h(prede-)591 927 y(cessor)i(to)h(the)g
+(successor)n(,)g(whatever)g(the)g(orientation)h(of)f(the)g(true.)26
+b(\(Outside)591 987 y(of)13 b(trees)h(it)g(measures)g(the)g(distance)h(from)e
+(the)i(top)e(to)h(bottom)h(or)e(left)i(to)e(right)591 1047
+y(nodes.\))591 1137 y(PST)n(ricks)e(also)h(sets)g Fx(shortput=tab)d
+Fy(within)j(trees.)18 b(This)12 b(is)f(a)i(special)f Fx(shortput)591
+1197 y Fy(option)21 b(that)g(should)f(not)h(be)g(used)g(outside)g(of)f
+(trees.)44 b(It)21 b(implements)h(the)591 1257 y(following)11
+b(abbreviations,)i(which)f(depend)g(of)g(the)g(orientation)h(of)f(the)g
+(true:)1255 1393 y(Short)f(for:)1055 1465 y Fu(Char)-5 b(.)56
+b(V)-5 b(ert.)58 b(Horiz.)1100 1545 y Fw(\303)98 b Fx(\\tlput)57
+b(\\taput)1096 1618 y Fw(_)91 b Fx(\\trput)52 b(\\tbput)591
+1746 y Fy(\(The)12 b(scheme)g(is)g(reversed)g(if)g Fx(tree\257ip=true)p
+Fy(.\))80 2211 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 80
+2211 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 435 2074 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 435
+2074 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 435 2074 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 435 2074 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 13.75497
+def /r 13.75497 def /h 4.16913 def /d 3.71059 def /flag true def VPutAdjust
+LPutCoor end PutBegin end
+ 378 2089 a Fy(above)435 2074 y
+ tx@Dict begin PutEnd end
+
+382 1838 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 382 1838
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-0
+11 NewNode InitCnode end end grestore end
+ 382 1838 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0 /TheNodeT-0-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 382 1838 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 7.67812
+def /r 7.67812 def /h 4.16913 def /d 3.71059 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 350 1853 a Fy(left)382 1838 y
+ tx@Dict begin PutEnd end
+ 105 w
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 487 1838 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0-1
+11 NewNode InitCnode end end grestore end
+ 487 1838
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-0 /TheNodeT-0-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 487 1838 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 10.8807
+def /r 10.8807 def /h 4.16913 def /d 6.101 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 442 1853 a Fy(right)487 1838 y
+ tx@Dict begin PutEnd end
+ 435 2213 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 435 2213 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 435 2074 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 435 2074 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 13.75497
+def /r 13.75497 def /h 4.16913 def /d 3.71059 def /flag true def VPutAdjust
+LPutCoor end PutBegin end
+ 378
+2089 a Fy(above)435 2074 y
+ tx@Dict begin PutEnd end
+ 274 x @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 435 2348 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 435 2074 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 435 2074 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 14.07753
+def /r 14.07753 def /h 4.16913 def /d 3.71059 def /flag false def VPutAdjust
+LPutCoor end PutBegin end
+ 376 2089 a Fy(below)435
+2074 y
+ tx@Dict begin PutEnd end
+ 712 1893 a Fw(\\psset{tpos=.6})712 1953 y(\\pstree[treemode=R,)23
+b(thistreesep=1cm,)758 2013 y(thislevelsep=3cm,radius=2pt]{\\T)-5
+b(c{3pt}}{\045)758 2074 y(\\pstree[treemode=U,)22 b(xbbr=20pt]{\\T)-5
+b(c{3pt}\303{above}}{\045)803 2134 y(\\TC*\303{left})803 2194
+y(\\TC*_{right}})758 2254 y(\\TC*\303{above})758 2314 y(\\TC*_{below}})591
+2487 y Fy(Y)g(ou)11 b(can)h(change)h(the)f(character)h(abbreviations)g(with)
+712 2632 y Fq(\\MakeShortT)l(ab{)p Fp(char1)p Fq(}{)p Fp(char2)t
+Fq(})591 2828 y Fr(Edge)c(and)g(node)h(labels)955 b(44)p eop
+%%Page: 45 20
+19 bop 591 50 a Fy(The)12 b Fw(\\n*put)g Fy(commands)g(can)g(also)g(give)g
+(good)g(results:)212 307 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+212 307 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 566 170 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+566 170 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 566 170 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 566 170 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def LPut end PutBegin end
+ 566 170 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 566 170 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 27.50995 7.7818
+0.09792 NAngle 90 add NAngle sub /a ED add 2 div /h ED 2 div /w ED
+/s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 509 186 a
+Fy(above)566 170 y
+ tx@Dict begin PutEnd end
+ 566 170 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 566 170 a
+ tx@Dict begin PutEnd end
+ 139 x @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 566 309 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 566 170 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 566 170 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def LPut end PutBegin end
+ 566
+170 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 566 170 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 27.50995 7.7818
+0.09792 NAngle 90 add NAngle sub /a ED add 2 div /h ED 2 div /w ED
+/s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 509 186 a Fy(above)566 170 y
+ tx@Dict begin PutEnd end
+ 566 170 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 566
+170 a
+ tx@Dict begin PutEnd end
+ 274 x @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 566 444
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 566 170 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 566 170 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 def LPut end PutBegin end
+ 566 170 a
+ tx@Dict begin NAngle tx@Dict /TMatrix known not { /TMatrix { } def
+/RAngle { 0 } def } if /TMatrix [ TMatrix CM ] cvx def /a ED a Rot
+/RAngle [ RAngle dup a add ] cvx def end
+ 566 170 a
+ tx@Dict begin { 5.0 tx@Dict /NCLW known { NCLW add } if 28.15506 7.7818
+0.09792 NAngle 90 sub NAngle sub /a ED add 2 div /h ED 2 div /w ED
+/s a sin def /c a cos def /b s abs c abs 2 copy gt dup /q ED { pop
+} { exch pop } ifelse def /w1 c b div w mul def /h1 s b div h mul def
+q { w1 abs w sub dup c mul abs } { h1 abs h sub dup s mul abs } ifelse
+exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 508 186 a Fy(below)566
+170 y
+ tx@Dict begin PutEnd end
+ 566 170 a
+ tx@Dict begin /TMatrix [ TMatrix setmatrix ] cvx def /RAngle [ RAngle
+pop ] cvx def end
+ 566 170 a
+ tx@Dict begin PutEnd end
+ 712 165 a Fw(\\psset{npos=.6,nrot=:U})712
+225 y(\\pstree[treemode=R,)23 b(thistreesep=1cm,)758 285 y
+(thislevelsep=3cm]{\\T)-5 b(c{3pt}}{\045)758 345 y(\\T)g
+(c{3pt}\\naput{above})758 406 y(\\T)g(c*{2pt}\\naput{above})758
+466 y(\\T)g(c*{2pt}\\nbput{below}})591 605 y Fy(Y)g(ou)14 b(can)i(put)f
+(labels)h(on)e(the)i(nodes)f(using)f Fx(\\nput)p Fy(.)27 b(However)n(,)15
+b Fx(\\pstree)f Fy(won')o(t)591 666 y(take)e(these)g(labels)h(into)f(account)
+h(when)f(calculating)h(the)g(bounding)e(boxes.)591 755 y(There)h(is)f(a)h
+(special)h(node)e(label)i(option)f(for)f(trees)h(that)g(does)g(keep)g(track)g
+(of)f(the)591 815 y(bounding)g(boxes:)712 960 y Fq(\304)p Fl(*[)p
+Fk(par)5 b Fl(])p Fq({)p Fp(stuf)o(f)h Fq(})591 1091 y Fy(Call)12
+b(this)g(a)g(\252tree)h(node)f(label\272.)591 1180 y(Put)17
+b(a)i(tree)f(node)g(label)h(right)g(after)f(the)h(node)f(to)g(which)g(it)h
+(applies,)h(before)591 1241 y(any)14 b(node)h(connection)g(labels)h(\(but)e
+(node)h(connection)g(labels,)h(including)f(the)591 1301 y(short)k(forms,)j
+(can)e(follow)g(a)g(tree)h(node)e(label\).)42 b(The)21 b(label)g(is)f
+(positioned)591 1361 y(directly)d(below)g(the)g(node)f(in)h(vertical)h
+(trees,)g(and)f(similarly)h(in)f(other)g(trees.)591 1421 y(For)11
+b(example:)407 1519 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+407 1519 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 407 1519 a
+ tx@Dict begin { tx@NodeDict begin tx@NodeDict /TheNodeT-0 known {
+0.0 45. 5.0 /TheNodeT-0 load GetEdge } { CP } ifelse end } PutCoor
+PutBegin end
+ 407 1519 a
+ tx@Dict begin { 0.0 18.55884 6.79684 0.09792 45. /a ED add 2 div
+/h ED 2 div /w ED /s a sin def /c a cos def /b s abs c abs 2 copy gt
+dup /q ED { pop } { exch pop } ifelse def /w1 c b div w mul def /h1
+s b div h mul def q { w1 abs w sub dup c mul abs } { h1 abs h sub dup
+s mul abs } ifelse /z ED abs /y ED /x ED q { x s div c mul abs y gt
+} { x c div s mul abs y gt } ifelse { x x mul y y mul sub z z mul add
+sqrt z add } { q { x s div } { x c div } ifelse abs } ifelse a PtoC
+h1 add exch w1 add exch } PutCoor PutBegin end
+ 368 1533 a Fy(root)407 1519
+y
+ tx@Dict begin PutEnd end
+ 407 1519 a
+ tx@Dict begin PutEnd end
+ 246 1755 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+246 1755 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 234 1826 a Fu(h)246 1755 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 109 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 355 1755 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 348 1826 a Fu(i)355 1755 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 460 1755 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 453 1826 a Fu(j)460 1755
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 108 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 568 1755 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-3
+11 NewNode InitCnode end end grestore end
+ 557
+1826 a Fu(k)568 1755 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-3 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1652 a Fw(\\pstree[radius=2pt]{\\T)-5
+b(c{3pt}\\nput{45}{\\pssucc}{root}}{)758 1712 y(\\TC*\304{$h$})21
+b(\\TC*\304{$i$})h(\\TC*\304{$j$})g(\\TC*\304{$k$}})591 1967
+y Fy(Note)10 b(that)i(there)f(is)g(no)f(\252long)h(form\272)g(for)g(this)g
+(tree)g(node)g(label.)18 b(However)n(,)10 b(you)591 2027 y(can)i(change)g
+(the)h(single)f(character)h(used)f(to)g(delimit)h(the)g(label)g(with)712
+2172 y Fq(\\MakeShortTnput{)p Fp(char1)p Fq(})591 2303 y Fy(If)k(you)g
+(\256nd)f(it)i(confusing)f(to)h(use)f(a)g(single)h(character)n(,)i(you)d(can)
+g(also)h(use)f(a)591 2363 y(command)12 b(sequence.)18 b(E.g.,)712
+2494 y Fw(\\MakeShortTnput{\\tnput})591 2828 y Fr(Edge)9 b(and)g(node)h
+(labels)955 b(45)p eop
+%%Page: 46 21
+20 bop 591 50 a Fy(Y)-5 b(ou)16 b(can)h(have)f(multiple)i(labels,)g(but)f
+(each)g(successive)g(label)g(is)g(positioned)591 110 y(relative)h(to)f(the)g
+(bounding)f(box)g(that)i(includes)f(the)g(previous)f(labels.)32
+b(Thus,)591 170 y(the)13 b(order)f(in)h(which)g(the)g(labels)g(are)g(placed)h
+(makes)f(a)g(dif)o(ference,)g(and)g(not)g(all)591 230 y(combinations)f(will)h
+(produce)f(satisfactory)g(results.)591 319 y(Y)-5 b(ou)12 b(will)i(probably)f
+(\256nd)g(that)h(the)g(tree)g(node)f(label)i(works)d(well)h(for)g(terminal)
+591 379 y(nodes,)k(without)g(your)g(intervention.)32 b(However)n(,)18
+b(you)e(can)i(control)f(the)g(tree)591 439 y(node)11 b(labels)i(be)f(setting)
+h(several)f(parameters.)591 527 y(T)m(o)d(position)g(the)h(label)g(on)f(any)h
+(side)f(of)g(the)h(node)f(\()p Fw(l)p Fy(eft,)h Fw(r)p Fy(ight,)g
+Fw(a)p Fy(bove)f(or)g Fw(b)p Fy(elow\),)591 587 y(set:)712
+711 y Fq(tnpos=)p Fp(l/r/a/b)723 b Fo(Default:)362 877 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 64.43336
+neg 52.10216 18.69476 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 106 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+468 877 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 429 844 a Fy(root)362 1129 y Fu(h)415 1114 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 415 1114 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 415 1114 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 105 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 520 1114 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 550 1129 a Fu(i)520 1114
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 893 a Fw(\\psframebox{\045)758 953 y(\\pstree{\\T)-5
+b(c{3pt}\304[tnpos=a,tndepth=0pt]{root}}{)803 1013 y(\\TC*\304[tnpos=l]{$h$})
+803 1073 y(\\TC*\304[tnpos=r]{$i$}}})591 1279 y Fy(When)17
+b(you)h(leave)g(the)g(ar)o(gument)h(empty)m(,)g(which)f(is)f(the)h(default,)i
+(PST)n(ricks)591 1339 y(chooses)11 b(the)h(label)h(position)f(is)g
+(automatically)m(.)591 1427 y(T)m(o)f(change)i(the)f(distance)h(between)f
+(the)g(node)g(and)g(the)h(label,)g(set)712 1551 y Fq(tnsep=)p
+Fp(dim)770 b Fo(Default:)591 1675 y Fy(When)17 b(you)h(leave)g(the)g(ar)o
+(gument)h(empty)m(,)g(which)f(is)f(the)h(default,)i(PST)n(ricks)591
+1735 y(uses)12 b(the)i(value)g(of)f Fx(labelsep)p Fy(.)21 b(When)14
+b(the)g(value)g(is)f(negative,)i(the)f(distance)g(is)591 1795
+y(measured)e(from)g(the)g(center)h(of)f(the)g(node.)591 1883
+y(When)f(labels)h(are)f(positioned)h(below)f(a)h(node,)f(the)g(label)i(is)e
+(given)g(a)h(minimum)591 1943 y(height)g(of)712 2067 y Fq(tnheight=)p
+Fp(dim)437 b Fo(Default:)20 b Fq(\\ht\\strutbox)591 2191 y
+Fy(Thus,)15 b(if)h(you)f(add)h(labels)g(to)g(several)f(nodes)g(that)i(are)f
+(horizontally)g(aligned,)591 2251 y(and)9 b(if)h(either)h(these)e(nodes)h
+(have)g(the)g(same)f(depth)h(or)g Fx(tnsep)e Fy(is)i(negative,)h(and)f(if)591
+2311 y(the)h(height)h(of)f(each)h(of)f(the)h(labels)f(is)g(no)h(more)f(than)h
+Fx(tnheight)p Fy(,)e(then)i(the)f(labels)591 2371 y(will)g(also)g(be)g
+(aligned)h(by)f(their)h(baselines.)17 b(The)12 b(default)g(is)f
+Fw(\\ht\\strutbox)p Fy(,)h(which)591 2431 y(in)g(most)h(T)767
+2442 y(E)790 2431 y(X)f(formats)h(is)f(the)h(height)g(of)g(a)f(typical)i
+(line)f(of)g(text)g(in)f(the)h(current)591 2492 y(font.)k(Note)12
+b(that)g(the)h(value)f(of)g Fx(tnheight)f Fy(is)h(not)g(evaluated)h(until)g
+(it)g(is)e(used.)591 2580 y(The)i(positioning)g(is)g(similar)g(for)g(labels)h
+(that)f(go)g(below)g(a)g(node.)20 b(The)13 b(label)h(is)591
+2640 y(given)e(a)g(minimum)h Fu(depth)f Fy(of)591 2828 y Fr(Edge)d(and)g
+(node)h(labels)955 b(46)p eop
+%%Page: 47 22
+21 bop 712 50 a Fq(tndepth=)p Fp(dim)438 b Fo(Default:)20 b
+Fq(\\dp\\strutbox)591 172 y Fy(For)12 b(labels)i(positioned)g(above)f(or)g
+(below)m(,)g(the)h(horizontal)g(reference)g(point)g(of)591
+232 y(the)g(label,)i(i.e.,)f(the)g(point)g(in)f(the)h(label)g(directly)h
+(above)e(or)g(below)g(the)h(center)591 292 y(of)c(the)i(node,)f(is)f(set)i
+(by)e(the)i Fx(href)e Fy(parameter)m(.)591 380 y(When)i(labels)g(are)g
+(positioned)g(on)g(the)g(left)h(or)f(right,)g(the)g(right)h(or)e(left)i(edge)
+f(of)591 441 y(the)f(label)h(is)f(positioned)g(distance)h Fx(tnsep)e
+Fy(from)h(the)g(node.)18 b(The)12 b(vertical)h(point)591 501
+y(that)f(is)g(aligned)h(with)f(the)g(center)h(of)f(the)g(node)g(is)g(set)g
+(by)712 623 y Fq(tnyref=)p Fp(num)749 b Fo(Default:)591 745
+y Fy(When)13 b(you)f(leave)i(this)f(empty)m(,)h Fx(vref)d Fy(is)i(used)g
+(instead.)20 b(Recall)14 b(that)g Fx(vref)e Fy(gives)591 805
+y(the)f(vertical)h Fu(distance)g Fy(from)f(the)g(baseline.)18
+b(Otherwise,)11 b(the)g Fx(tnyref)f Fy(parameter)591 865 y(works)j(like)i
+(the)f Fx(yref)g Fy(parameter)n(,)i(giving)e(the)h(fraction)g(of)f(the)h
+(distance)g(from)591 926 y(the)d(bottom)g(to)h(the)f(top)g(of)g(the)g(label.)
+366 1120 y Fm(18)71 b(Details)591 1240 y Fy(Both)17 b Fx(\\pstree)p
+Fy(')m(s)g(root)h(node)g(ar)o(gument)h(and)f(successors)e(ar)o(gument)j(are)f
+(pro-)591 1300 y(cessed)c(as)h(LR-boxes,)h(and)f(so)f(everything)i(in)f
+(Appendix)g Fb(??)p Fy(,)h(including)f(the)591 1361 y(treatment)e(of)e(math)h
+(and)g(verbatim)h(text,)f(applies,)g(except)h(the)f(following.)17
+b(Be-)591 1421 y(cause)10 b Fx(\\pstree)g Fy(has)g(two)g(ar)o(guments,)h(you)
+g(cannot)g(use)f Fx(\\pslongbox)g Fy(to)h(de\256ne)g(a)591
+1481 y(\252long\272)f(version)h(of)f Fx(\\pstree)p Fy(.)15
+b(However)n(,)10 b(there)h(is)g(a)f(variant)h Fx(\\psT)n(ree)f
+Fy(of)g Fx(\\pstree)591 1541 y Fy(whose)h(syntax)h(is:)712
+1678 y Fq(\\psT)m(ree{)p Fp(root)j(node)r Fq(})f Fp(successors)j
+Fq(\\endpsT)m(ree)591 1800 y Fy(For)11 b(example:)473 1889
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 473 1889 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 364 2125
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 364 2125 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 364 2125
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 109 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 473 2125 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 473
+2125 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 420 2361 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 420
+2361 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 420 2361 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 106 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+526 2361 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 526 2361 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 582 2125 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 582 2125 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 582 2125 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1923 a Fw(\\psT)n(ree{\\T)-5
+b(c{3pt}})758 1983 y(\\TC*)758 2043 y(\\psT)n(ree{\\T)g(c{3pt}})803
+2103 y(\\TC*)803 2164 y(\\TC*)758 2224 y(\\endpsT)n(ree)758
+2284 y(\\TC*)712 2344 y(\\endpsT)n(ree)591 2492 y Fy(L)603
+2486 y(a)617 2492 y(T)638 2507 y(E)661 2492 y(X)12 b(purists)f(can)h(write)h
+Fw(\\begin{psT)n(ree})d Fy(and)i Fw(\\end{psT)n(ree})e Fy(instead.)591
+2580 y(PST)n(ricks)h(does)g(a)h(pretty)g(good)f(job)g(of)h(positioning)g(the)
+f(nodes)h(and)f(creating)i(a)591 2640 y(box)f(whose)g(size)h(is)f(close)h(to)
+g(the)g(true)g(bounding)f(box)g(of)h(the)g(tree.)20 b(However)n(,)591
+2828 y Fr(Details)1202 b(47)p eop
+%%Page: 48 23
+22 bop 591 50 a Fy(PST)n(ricks)8 b(does)h(not)g(take)g(into)h(account)f(the)h
+(node)f(connections)g(or)g(labels)g(when)591 110 y(calculating)k(the)g
+(bounding)e(boxes,)h(except)h(the)f(tree)h(node)f(labels.)591
+196 y(If,)h(for)g(this)h(or)f(other)h(reasons,)f(you)h(want)f(to)h(\256ne)f
+(tune)h(the)g(bounding)f(box)g(of)591 256 y(the)f(nodes,)f(you)h(can)g(set)h
+(the)f(following)g(parameters:)712 363 y Fq(bbl=)p Fp(dim)826
+b Fo(Default:)712 423 y Fq(bbr=)p Fp(dim)821 b Fo(Default:)712
+484 y Fq(bbh=)p Fp(dim)810 b Fo(Default:)712 544 y Fq(bbd=)p
+Fp(dim)g Fo(Default:)712 604 y Fq(xbbl=)p Fp(dim)799 b Fo(Default:)712
+664 y Fq(xbbr=)p Fp(dim)794 b Fo(Default:)712 724 y Fq(xbbh=)p
+Fp(dim)783 b Fo(Default:)712 785 y Fq(xbbd=)p Fp(dim)g Fo(Default:)591
+892 y Fy(The)12 b Fw(x)g Fy(versions)f(increase)i(the)f(bounding)g(box)f(by)h
+Fv(dim)q Fy(,)f(and)h(the)h(others)e(set)h(the)591 952 y(bounding)j(box)g(to)
+g Fv(dim)q Fy(.)27 b(There)16 b(is)f(one)g(parameter)i(for)e(each)h
+(direction)g(from)591 1012 y(the)c(center)h(of)f(the)g(node,)g
+Fb(l)p Fy(eft,)g Fb(r)p Fy(ight,)h Fb(h)p Fy(eight,)f(and)g
+Fb(d)p Fy(epth.)591 1098 y(These)f(parameters)g(af)o(fect)h(trees)g(and)f
+(nodes,)f(and)h(subtrees)g(that)h(switch)e(direc-)591 1158
+y(tions,)j(but)g(not)h(subtrees)f(that)h(go)f(in)g(the)h(same)f(direction)h
+(as)g(their)f(parent)h(tree)591 1218 y(\(such)d(subtrees)g(have)h(a)g
+(pro\256le)g(rather)g(than)g(a)g(bounding)f(box,)h(and)f(should)h(be)591
+1279 y(adjusted)g(by)g(changing)g(the)g(bounding)g(boxes)f(of)h(the)h
+(constituent)f(nodes\).)591 1364 y(Save)c(any)h(\256ddling)g(with)f(the)i
+(bounding)e(box)h(until)g(you)g(are)g(otherwise)f(\256nished)591
+1425 y(with)k(the)g(tree.)591 1511 y(Y)-5 b(ou)11 b(can)h(see)g(the)h
+(bounding)e(boxes)h(by)g(setting)g(the)712 1618 y Fq(showbbox=)p
+Fp(true/false)417 b Fo(Default:)20 b Fq(false)591 1725 y Fy(parameter)14
+b(to)f Fw(true)p Fy(.)19 b(T)m(o)12 b(see)h(the)g(bounding)g(boxes)f(of)h
+(all)h(the)f(nodes)f(in)h(a)g(tree,)591 1785 y(you)e(have)h(to)h(set)f(this)g
+(parameter)h(before)f(the)g(tree.)591 1871 y(In)f(the)i(following)f(example,)
+h(the)f(labels)h(stick)f(out)g(of)g(the)g(bounding)g(box:)473
+2186 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -25.86475 -5.0
+25.54219 61.07463 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -5.0 -5.0 5.0
+5.0 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 5.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+473 2186 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 5.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 397 1950 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.67813 -3.71059
+7.67813 4.16913 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+365 1965 a
+ tx@Dict begin gsave STV CP T 7.7818 0.09792 15.35626 7.67813 3.61267
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fy(foo)397 1950 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 397 1950 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 7.67812
+def /r 7.67812 def /h 4.16913 def /d 3.71059 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 365 1965 a Fy(left)397
+1950 y
+ tx@Dict begin PutEnd end
+ 151 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.35556 -3.71059
+7.35558 4.16913 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 517 1965
+a
+ tx@Dict begin gsave STV CP T 7.7818 0.09792 14.71114 7.35556 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fy(bar)548 1950 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 548 1950 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 10.8807
+def /r 10.8807 def /h 4.16913 def /d 6.101 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 503 1965 a Fy(right)548 1950
+y
+ tx@Dict begin PutEnd end
+ 712 1990 a Fw(\\psset{tpos=.6,showbbox=true})712 2050 y
+(\\pstree[treemode=U]{\\T)-5 b(c{5pt}}{\045)758 2110 y(\\TR{foo}\303{left})
+758 2170 y(\\TR{bar}_{right}})591 2314 y Fy(Here)11 b(is)h(how)g(we)f(\256x)h
+(it:)414 2619 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -33.86475 -5.0
+39.54219 61.07463 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -25.86475 -5.0
+25.54219 61.07463 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -5.0 -5.0 5.0
+5.0 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 5.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 414 2619 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 5.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 339 2383
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.67813 -3.71059
+7.67813 4.16913 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 307 2398 a
+ tx@Dict begin gsave STV CP T 7.7818 0.09792 15.35626 7.67813 3.61267
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fy(foo)339
+2383 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 339 2383 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 7.67812
+def /r 7.67812 def /h 4.16913 def /d 3.71059 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 307 2398 a Fy(left)339 2383 y
+ tx@Dict begin PutEnd end
+ 151 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.35556 -3.71059
+7.35558 4.16913 .5 Frame gsave 0.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 459 2398 a
+ tx@Dict begin gsave STV CP T 7.7818 0.09792 14.71114 7.35556 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fy(bar)490 2383 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 490 2383
+a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 10.8807
+def /r 10.8807 def /h 4.16913 def /d 6.101 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 445 2398 a Fy(right)490 2383 y
+ tx@Dict begin PutEnd end
+ 712 2423 a Fw
+(\\psset{tpos=.6,showbbox=true})712 2483 y
+(\\pstree[treemode=U,xbbl=8pt,xbbr=14pt]{\\T)-5 b(c{5pt}}{\045)758
+2543 y(\\TR{foo}\303{left})758 2604 y(\\TR{bar}_{right}})591
+2828 y Fr(Details)1202 b(48)p eop
+%%Page: 49 24
+23 bop 591 50 a Fy(Now)10 b(we)i(can)h(frame)f(the)g(tree:)210
+441 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 14.0 false 15.5 neg
+20.5 neg 88.90694 76.57463 .5 Frame gsave 0.75 setgray fill grestore
+gsave 1.5 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 140 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 5.0 .5 CLW mul
+sub 0 360 arc closepath gsave 1.0 2 mul CLW add SLW 1. setgray stroke
+grestore gsave 1. setgray fill grestore gsave 0.8 SLW 0. setgray 0
+setlinecap stroke grestore end
+
+@endspecial 350 441 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 5.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 243 219 a
+ tx@Dict begin gsave STV CP T 7.7818 0.09792 15.35626 7.67813 3.61267
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fy(foo)275 204
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 1.0 2
+mul CLW add SLW 1. setgray stroke grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore gsave grestore grestore end
+ 275 204 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 7.67812
+def /r 7.67812 def /h 4.16913 def /d 3.71059 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 243 219 a Fy(left)275 204 y
+ tx@Dict begin PutEnd end
+ 395 219 a
+ tx@Dict begin gsave STV CP T 7.7818 0.09792 14.71114 7.35556 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fy(bar)426
+204 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+3.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 1.0 2
+mul CLW add SLW 1. setgray stroke grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore gsave grestore grestore end
+ 426 204 a
+ tx@Dict begin tx@NodeDict begin /t 0.6 1 sub neg def tx@NodeDict /HPutPos
+known { HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse
+/Sin NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 10.8807
+def /r 10.8807 def /h 4.16913 def /d 6.101 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 381 219 a Fy(right)426 204 y
+ tx@Dict begin PutEnd end
+ 712 154 a Fw
+(\\psframebox[\256llstyle=solid,\256llcolor=lightgray)m(,framesep=14pt,)758
+214 y(linearc=14pt,cornersize=absolute,linewidth=1.5pt]{\045)758
+275 y(\\psset{tpos=.6,border=1pt,nodesepB=3pt})758 335 y
+(\\pstree[treemode=U,xbbl=8pt,xbbr=14pt]{\045)803 395 y(\\T)-5
+b(c[\256llcolor=white,\256llst)q(yle=solid]{5pt}}{\045)803
+455 y(\\TR*{foo}\303{left})803 515 y(\\TR*{bar}_{right}}})591
+654 y Fy(W)l(e)11 b(would)f(have)h(gotten)h(the)f(same)g(result)g(by)g
+(changing)g(the)g(bounding)f(box)h(of)591 714 y(the)h(two)g(terminal)h
+(nodes.)591 803 y(Y)-5 b(ou)11 b(can)h(also)g(adjust)h(the)f(distance)h
+(between)f(successors)f(with)h(the)712 946 y Fq(\\tspace{)p
+Fp(dim)q Fq(})591 1074 y Fy(command.)389 1164 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 389 1164 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 209 1400 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 209 1400 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-0
+11 NewNode InitCnode end end grestore end
+ 209 1400 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 423 1415 a
+ tx@Dict begin gsave STV CP T 7.55716 1.79999 12.02391 6.01195 3.61267
+ tx@NodeDict begin /TheNodeT-0-1 16 NewNode InitRnode end end grestore
+end
+ Fu(K)455
+1422 y Fj(4)448 1400 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 122 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial
+570 1400 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-2
+11 NewNode InitCnode end end grestore end
+ 570 1400 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-2 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1177 a Fw(\\pstree{\\T)-5 b(c{3pt}}{\045)758
+1237 y(\\T)g(c*{2pt}\045)758 1297 y(\\tspace{1cm})758 1358
+y(\\TR*{$K_4$}\045)758 1418 y(\\T)g(c*{2pt}})591 1555 y Fy(T)m(o)11
+b(skip)h(levels,)g(use)712 1698 y Fq(\\skiplevel)p Fl(*[)p
+Fk(par)5 b Fl(])p Fq({)p Fp(nodes)14 b(or)g(subtrees)r Fq(})712
+1773 y(\\skiplevels)p Fl(*[)p Fk(par)5 b Fl(])p Fq({)p Fp(int)t
+Fq(})k Fp(nodes)g(or)g(subtrees)j Fq(\\endskiplevels)591 1901
+y Fy(These)g(are)g(kind)g(of)g(like)h(subtrees,)e(but)h(with)g(no)g(root)g
+(node.)712 2029 y Fw(\\pstree[treemode=R,levelsep=1.8,radius=2pt]{\\T)-5
+b(c{3pt}}{)758 2090 y(\\skiplevel{\\Tfan})758 2150 y(\\pstree{\\T)g(c{3pt}}{)
+803 2210 y(\\TC*)826 2270 y(\\skiplevels{2})849 2330 y(\\pstree{\\T)g
+(c{3pt}}{\\TC*)22 b(\\TC*})849 2390 y(\\TC*)803 2451 y(\\endskiplevels)803
+2511 y(\\pstree{\\T)-5 b(c{3pt}}{)849 2571 y(\\TC*)849 2631
+y(\\TC*}}})591 2828 y Fr(Details)1202 b(49)p eop
+%%Page: 50 25
+24 bop 740 253 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 740
+253 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0
+11 NewNode InitCnode end end grestore end
+ 1165 57 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-0-0 16 NewNode
+/Y 0 def /X 0 def /l 0.4 def /r l def /u 13.82637 def /d u def /NodePos
+{ GetRnodePos } def end end grestore end
+ 1165 57 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeT-0 /TheNodeT-0-0 InitNC
+{ tx@Dict begin /Lineto /lineto load def false pop end /w 13.82637
+CLW 2 div sub def /m false def Tfan } if end gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore grestore end
+ 953 448 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 953 448 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1
+11 NewNode InitCnode end end grestore end
+ 953 448 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0 /TheNodeT-0-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 1165 212 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+
+@endspecial 1165 212 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 1165 212 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1591 369 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 1591 369 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1-0
+11 NewNode InitCnode end end grestore end
+ 1591 369 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1803 317 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1803 317 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-0
+11 NewNode InitCnode end end grestore end
+ 1803 317 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 105 x @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1803 422 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-0-1
+11 NewNode InitCnode end end grestore end
+ 1803 317 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-0 /TheNodeT-0-1-0-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1591 527 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1591 527 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-1
+11 NewNode InitCnode end end grestore end
+ 1591 369 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1165 685 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 1165 685 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 3.0 tx@NodeDict begin /TheNodeT-0-1-2
+11 NewNode InitCnode end end grestore end
+ 1165 685 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1 /TheNodeT-0-1-2 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1378 632 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1378 632 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-2-0
+11 NewNode InitCnode end end grestore end
+ 1378 632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-2 /TheNodeT-0-1-2-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 106 x @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2.0 0 360 arc
+fill end
+
+@endspecial 1378 738 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 2.0 tx@NodeDict begin /TheNodeT-0-1-2-1
+11 NewNode InitCnode end end grestore end
+ 1378 632 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-0-1-2 /TheNodeT-0-1-2-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 591 865 a Fy(The)13
+b(pro\256le)g(at)h(the)g(missing)f(levels)h(is)f(the)h(same)g(as)f(at)h(the)g
+(\256rst)e(non-missing)591 926 y(level.)39 b(Y)-5 b(ou)19 b(can)h(adjust)f
+(this)g(with)g(the)h(bounding)f(box)g(parameters.)39 b(Y)-5
+b(ou)591 986 y(get)16 b(greatest)h(control)g(if)f(you)g(use)g(nested)h
+Fx(\\skiplevel)f Fy(commands)g(instead)h(of)591 1046 y Fx(\\skiplevels)p
+Fy(.)712 1189 y Fw(\\large)712 1249 y(\\psset{radius=6pt,)23
+b(dotsize=4pt})712 1310 y
+(\\pstree[thislevelsep=0,edge=none,levelsep=2.5cm]{\\Tn}{\045)758
+1370 y(\\pstree{\\TR{Player)f(1}}{\\pstree{\\TR{Player)f(2}}{\\TR{Player)h
+(3}}})758 1430 y(\\psset{edge=\\ncline})758 1490 y(\\pstree)803
+1550 y({\\pstree[treemode=R]{\\TC}{\\Tdot)g(\304{\(0,0,0\)})f(\303{N}}}{\045)
+803 1611 y(\\pstree{\\TC[name=A])i(\303{L}}{\045)849 1671 y(\\Tdot)g
+(\304{\(-10,10.-10\))o(})d(\303{l})849 1731 y(\\pstree{\\TC[name=C])j
+(_{r}}{\045)894 1791 y(\\Tdot)g(\304{\(3,8,-4\)})d(\303{c})894
+1851 y(\\Tdot)j(\304{\(-8,3,4\)})d(_{d}}})803 1911 y(\\pstree{\\TC[name=B])j
+(_{R}}{\045)849 1972 y(\\Tdot)g(\304{\(10,-10.0\)})c(\303{l})849
+2032 y(\\pstree{\\TC[name=D]_{r}}{\045)894 2092 y(\\Tdot)k(\304{\(4,8,-3\)})d
+(\303{c})894 2152 y(\\Tdot)j(\304{\(0,-5,0\)})d(_{d}}})803
+2212 y(}})712 2273 y
+(\\ncbox[linearc=.3,boxsize=.3,linestyle=dashed,nodesep=.4]{A}{B})712
+2333 y(\\ncarcbox[linearc=.3,boxsize=.3,linestyle=dashed,)758
+2393 y(arcangle=25,nodesep=.4]{D}{C})591 2828 y Fr(Details)1202
+b(50)p eop
+%%Page: 51 26
+25 bop 591 68 a
+ tx@Dict begin gsave STV CP T 9.33817 2.986 45.68852 22.84425 4.33519
+ tx@NodeDict begin /TheNodeT-0 16 NewNode InitRnode end end grestore
+end
+ Fa(Player)15 b(1)591 363 y
+ tx@Dict begin gsave STV CP T 9.33817 2.986 45.68852 22.84425 4.33519
+ tx@NodeDict begin /TheNodeT-0-0 16 NewNode InitRnode end end grestore
+end
+ Fa(Player)g(2)591
+658 y
+ tx@Dict begin gsave STV CP T 9.33817 2.986 45.68852 22.84425 4.33519
+ tx@NodeDict begin /TheNodeT-0-0-0 16 NewNode InitRnode end end grestore
+end
+ Fa(Player)g(3)1400 50 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 6.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+1400 50 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 6.0 tx@NodeDict begin /TheNodeT-1
+11 NewNode InitCnode end end grestore end
+ 1400 50 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT /TheNodeT-1 InitNC { NCLine } if end gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore grestore end
+ 1695 50 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-1-0 14 NewNode
+0.0 0.0 /Y ED /X ED /w 2.0 def /h 2.0 def /NodePos { OvalNodePos }
+def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 4.0 0. CLW mul add
+2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial
+1716 68 a Fa(\(0,0,0\))1695 50 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1 /TheNodeT-1-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 1695 50 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ VPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 4.9905 def
+/r 4.9905 def /h 5.00298 def /d 4.5218 def /flag true def VPutAdjust
+LPutCoor end PutBegin end
+ 1674 68 a Fa(N)1695
+50 y
+ tx@Dict begin PutEnd end
+ 1133 345 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 6.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 1133
+345 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 6.0 tx@NodeDict begin /TheNodeT-1-0
+11 NewNode InitCnode end /TheNodeA /TheNodeT-1-0 load def end grestore
+end
+ 1133 345 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1 /TheNodeT-1-0 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 1133 345 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 4.22325 def
+/r 4.22325 def /h 5.00298 def /d 4.33519 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 1115 363 a Fa(L)1133 345 y
+ tx@Dict begin PutEnd end
+ 1007
+640 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-1-0-0 14
+NewNode 0.0 0.0 /Y ED /X ED /w 2.0 def /h 2.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 4.0 0. CLW mul add
+2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial 869 713 a Fa(\(-10,10.-10\))1007
+640 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-0 /TheNodeT-1-0-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1007 640 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92154 def
+/r 1.92154 def /h 5.00298 def /d 4.33519 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 999 658 a Fa(l)1007 640 y
+ tx@Dict begin PutEnd end
+ 253 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 6.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 1260 640 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 6.0 tx@NodeDict begin /TheNodeT-1-0-1
+11 NewNode InitCnode end /TheNodeC /TheNodeT-1-0-1 load def end grestore
+end
+ 1260 640 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-0 /TheNodeT-1-0-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1260 640 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 2.3017 def
+/r 2.3017 def /h 2.00314 def /d 4.33519 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 1250
+658 a Fa(r)1260 640 y
+ tx@Dict begin PutEnd end
+ 1129 936 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-1-0-1-0
+14 NewNode 0.0 0.0 /Y ED /X ED /w 2.0 def /h 2.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 4.0 0. CLW mul add
+2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+
+@endspecial 1043 1009 a Fa(\(3,8,-4\))1129 936 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-0-1 /TheNodeT-1-0-1-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1129 936
+a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 3.06894 def
+/r 3.06894 def /h 2.00314 def /d 4.45268 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 1116 954 a Fa(c)1129 936 y
+ tx@Dict begin PutEnd end
+ 1390 936 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-1-0-1-1
+14 NewNode 0.0 0.0 /Y ED /X ED /w 2.0 def /h 2.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 4.0 0. CLW mul add
+2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+
+@endspecial 1304 1009 a Fa(\(-8,3,4\))1390 936 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-0-1 /TheNodeT-1-0-1-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1390 936
+a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 3.45601 def
+/r 3.45601 def /h 5.00298 def /d 4.5218 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 1376 954 a Fa(d)1390 936 y
+ tx@Dict begin PutEnd end
+ 1667 345 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 6.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 1667 345 a
+ tx@Dict begin gsave STV CP T 0.0 0.0 6.0 tx@NodeDict begin /TheNodeT-1-1
+11 NewNode InitCnode end /TheNodeB /TheNodeT-1-1 load def end grestore
+end
+ 1667 345 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1 /TheNodeT-1-1 InitNC { NCLine } if end gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore grestore end
+ 1667 345 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 4.61032 def
+/r 4.61032 def /h 5.00298 def /d 4.33519 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 1648 363 a Fa(R)1667
+345 y
+ tx@Dict begin PutEnd end
+ 1553 640 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-1-1-0 14
+NewNode 0.0 0.0 /Y ED /X ED /w 2.0 def /h 2.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 4.0 0. CLW mul add
+2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial 1438
+713 a Fa(\(10,-10.0\))1553 640 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-1 /TheNodeT-1-1-0 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1553 640 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 1.92154 def
+/r 1.92154 def /h 5.00298 def /d 4.33519 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 1545 658 a Fa(l)1553
+640 y
+ tx@Dict begin PutEnd end
+ 228 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 6.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 1781 640
+a
+ tx@Dict begin gsave STV CP T 0.0 0.0 6.0 tx@NodeDict begin /TheNodeT-1-1-1
+11 NewNode InitCnode end /TheNodeD /TheNodeT-1-1-1 load def end grestore
+end
+ 1781 640 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-1 /TheNodeT-1-1-1 InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1781 640 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 2.3017 def
+/r 2.3017 def /h 2.00314 def /d 4.33519 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 1771 658 a Fa(r)1781 640 y
+ tx@Dict begin PutEnd end
+ 1651 936
+a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-1-1-1-0
+14 NewNode 0.0 0.0 /Y ED /X ED /w 2.0 def /h 2.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 4.0 0. CLW mul add
+2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial 1565 1009 a Fa(\(4,8,-3\))1651
+936 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-1-1 /TheNodeT-1-1-1-0 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1651 936 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 3.06894 def
+/r 3.06894 def /h 2.00314 def /d 4.45268 def /flag true def HPutAdjust
+LPutCoor end PutBegin end
+ 1638 954 a Fa(c)1651 936 y
+ tx@Dict begin PutEnd end
+ 1911 936 a
+ tx@Dict begin gsave STV CP T tx@NodeDict begin /TheNodeT-1-1-1-1
+14 NewNode 0.0 0.0 /Y ED /X ED /w 2.0 def /h 2.0 def /NodePos { OvalNodePos
+} def end end grestore end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /DS 4.0 0. CLW mul add
+2 div def <B7> /Symbol 0. [2.77778 0.0 0.0 2.77778 -0.638889 -0.813889]
+DS 2 mul dup matrix scale matrix concatmatrix exch matrix rotate matrix
+concatmatrix exch findfont exch makefont setfont { moveto 0 show }
+dup 1 4 -1 roll put bind /Dot ED 0.0 0.0 Dot end
+
+@endspecial 1825 1009 a Fa(\(0,-5,0\))1911 936
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def /NCLW CLW def tx@NodeDict begin 0.0 0.0 neg 0.0
+0.0 /TheNodeT-1-1-1 /TheNodeT-1-1-1-1 InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 1911 936 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def tx@NodeDict /HPutPos known
+{ HPutPos } { CP /Y ED /X ED /NAngle 0 def /NCLW 0 def } ifelse /Sin
+NAngle sin def /Cos NAngle cos def /s 5.0 NCLW add def /l 3.45601 def
+/r 3.45601 def /h 5.00298 def /d 4.5218 def /flag false def HPutAdjust
+LPutCoor end PutBegin end
+ 1897 954 a Fa(d)1911 936 y
+ tx@Dict begin PutEnd end
+ 1270 1023 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 11.38092 11.38092 /TheNodeA /TheNodeB
+InitNC { tx@Dict begin /r 8.5359 def /Lineto { Arcto } def false pop
+end 8.5359 8.5359 NCBox } if end gsave 0.8 SLW 0. setgray 5.0 3.0
+2 DashLine grestore grestore end
+ 1270 1023
+a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /NCLW CLW def
+tx@NodeDict begin 0.0 0.0 neg 11.38092 11.38092 /TheNodeD /TheNodeC
+InitNC { 25. 8.5359 8.5359 8.5359 NCArcBox } if end gsave 0.8 SLW
+0. setgray 5.0 3.0 1 DashLine grestore grestore end
+ 591 2828 a Fr(Details)1202 b(51)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/graphics/pstricks/doc/code/Changes b/obsolete/graphics/pstricks/doc/code/Changes
new file mode 100644
index 0000000000..53f76bc9ed
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/Changes
@@ -0,0 +1,4 @@
+pst-code.tex --------
+
+2006-12-17 make it run with pdflatex (hv)
+
diff --git a/obsolete/graphics/pstricks/doc/code/Makefile b/obsolete/graphics/pstricks/doc/code/Makefile
new file mode 100644
index 0000000000..58a4fec923
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/Makefile
@@ -0,0 +1,38 @@
+input=pst-code
+
+all:
+ $(MAKE) dvi
+ $(MAKE) ps
+ $(MAKE) pdf
+
+index:
+ makeindex -s gind.ist $(input).idx
+
+dvi:
+ latex $(input).tex
+ $(MAKE) index
+ latex $(input).tex
+ xdvi $(input).dvi
+
+ps:
+ latex $(input).tex
+ $(MAKE) index
+ latex $(input).tex
+ dvips $(input)
+ gv $(input).ps
+
+pdf:
+ pdflatex $(input).tex
+ $(MAKE) index
+ pdflatex $(input).tex
+ xpdf $(input).pdf
+
+
+zip:
+ $(RM) $(input).zip
+ zip -r $(input).zip *
+
+clean:
+ $(RM) *.pdf
+ $(RM) *.ps
+
diff --git a/obsolete/graphics/pstricks/doc/code/README b/obsolete/graphics/pstricks/doc/code/README
new file mode 100644
index 0000000000..9a4b312a92
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/README
@@ -0,0 +1,20 @@
+latex pst-code
+makeindex -s gind.ist pst-code.idx
+latex pst-code
+
+or
+
+pdflatex pst-code
+makeindex -s gind.ist pst-code.idx
+pdflatex pst-code
+
+or use one of the alternative make commands
+
+make dvi
+make pdf
+make ps
+make clean
+make zip
+
+-------------
+2006-12-17 Herbert Voss \ No newline at end of file
diff --git a/obsolete/graphics/pstricks/doc/code/art11.sty b/obsolete/graphics/pstricks/doc/code/art11.sty
new file mode 100644
index 0000000000..d08dfe2e0f
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/art11.sty
@@ -0,0 +1,175 @@
+% ARTICLE STANDARD DOCUMENT STYLE -- Released 14 Jan 1992
+% for LaTeX version 2.09
+% Copyright (C) 1992 by Leslie Lamport
+
+\lineskip 1pt
+\normallineskip 1pt
+\def\baselinestretch{1}
+
+\def\@normalsize{\@setsize\normalsize{13.6pt}\xipt\@xipt
+\abovedisplayskip 11\p@ plus3\p@ minus6\p@
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3\p@
+\belowdisplayshortskip 6.5\p@ plus3.5\p@ minus3\p@
+\let\@listi\@listI}
+
+\def\small{\@setsize\small{12pt}\xpt\@xpt
+\abovedisplayskip 10\p@ plus2\p@ minus5\p@
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus3\p@
+\belowdisplayshortskip 6\p@ plus3\p@ minus3\p@
+\def\@listi{\leftmargin\leftmargini
+\topsep 6\p@ plus2\p@ minus2\p@\parsep 3\p@ plus2\p@ minus\p@
+\itemsep \parsep}}
+
+\def\footnotesize{\@setsize\footnotesize{11pt}\ixpt\@ixpt
+\abovedisplayskip 8\p@ plus2\p@ minus4\p@
+\belowdisplayskip \abovedisplayskip
+\abovedisplayshortskip \z@ plus\p@
+\belowdisplayshortskip 4\p@ plus2\p@ minus2\p@
+\def\@listi{\leftmargin\leftmargini
+\topsep 4\p@ plus2\p@ minus2\p@\parsep 2\p@ plus\p@ minus\p@
+\itemsep \parsep}}
+
+\def\scriptsize{\@setsize\scriptsize{9.5pt}\viiipt\@viiipt}
+\def\tiny{\@setsize\tiny{7pt}\vipt\@vipt}
+\def\large{\@setsize\large{14pt}\xiipt\@xiipt}
+\def\Large{\@setsize\Large{18pt}\xivpt\@xivpt}
+\def\LARGE{\@setsize\LARGE{22pt}\xviipt\@xviipt}
+\def\huge{\@setsize\huge{25pt}\xxpt\@xxpt}
+\def\Huge{\@setsize\Huge{30pt}\xxvpt\@xxvpt}
+
+\normalsize
+
+\if@twoside
+ \oddsidemargin 36pt
+ \evensidemargin 74pt
+ \marginparwidth 100pt
+\else
+ \oddsidemargin 54pt
+ \evensidemargin 54pt
+ \marginparwidth 83pt
+\fi
+\marginparsep 10pt
+
+\topmargin 27pt
+
+\headheight 12pt
+\headsep 25pt
+\topskip = 11pt
+
+\footskip 30pt
+
+\textheight = 38\baselineskip
+\advance\textheight by \topskip
+\textwidth 360pt
+
+\columnsep 10pt
+\columnseprule 0pt
+
+\footnotesep 7.7pt
+
+\skip\footins 10pt plus 4pt minus 2pt
+
+\floatsep 12pt plus 2pt minus 2pt
+
+\textfloatsep 20pt plus 2pt minus 4pt
+
+\intextsep 12pt plus 2pt minus 2pt
+
+\@maxsep 20pt
+
+\dblfloatsep 12pt plus 2pt minus 2pt
+
+\dbltextfloatsep 20pt plus 2pt minus 4pt
+
+\@dblmaxsep 20pt
+
+\@fptop 0pt plus 1fil
+
+\@fpsep 8pt plus 2fil
+\@fpbot 0pt plus 1fil
+
+\@dblfptop 0pt plus 1fil
+
+\@dblfpsep 8pt plus 2fil
+\@dblfpbot 0pt plus 1fil
+
+\marginparpush 5pt
+
+\parskip 0pt plus 1pt
+
+\parindent 17pt
+
+\partopsep 3pt plus 1pt minus 2pt
+
+\@lowpenalty 51
+\@medpenalty 151
+\@highpenalty 301
+
+\@beginparpenalty -\@lowpenalty
+
+\@endparpenalty -\@lowpenalty
+
+\@itempenalty -\@lowpenalty
+
+\def\section{\@startsection {section}{1}{\z@}{-3.5ex plus-1ex minus
+ -.2ex}{2.3ex plus.2ex}{\reset@font\Large\bf}}
+\def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus-1ex
+ minus-.2ex}{1.5ex plus.2ex}{\reset@font\large\bf}}
+\def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
+ -1ex minus-.2ex}{1.5ex plus.2ex}{\reset@font\normalsize\bf}}
+\def\paragraph{\@startsection
+ {paragraph}{4}{\z@}{3.25ex plus1ex minus.2ex}{-1em}{\reset@font
+ \normalsize\bf}}
+\def\subparagraph{\@startsection
+ {subparagraph}{4}{\parindent}{3.25ex plus1ex minus
+ .2ex}{-1em}{\reset@font\normalsize\bf}}
+
+\setcounter{secnumdepth}{3}
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\thesection{\Alph{section}}}
+
+\leftmargini 2.5em
+\leftmarginii 2.2em
+\leftmarginiii 1.87em
+\leftmarginiv 1.7em
+\leftmarginv 1em
+\leftmarginvi 1em
+
+\leftmargin\leftmargini
+\labelsep .5em
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+
+\def\@listI{\leftmargin\leftmargini \parsep 4.5\p@ plus2\p@ minus\p@
+\topsep 9\p@ plus3\p@ minus5\p@
+\itemsep 4.5\p@ plus2\p@ minus\p@}
+
+\let\@listi\@listI
+\@listi
+
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 4.5\p@ plus2\p@ minus\p@
+ \parsep 2\p@ plus\p@ minus\p@
+ \itemsep \parsep}
+
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 2\p@ plus\p@ minus\p@
+ \parsep \z@ \partopsep\p@ plus\z@ minus\p@
+ \itemsep \topsep}
+
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+\endinput
diff --git a/obsolete/graphics/pstricks/doc/code/pst-code.pdf b/obsolete/graphics/pstricks/doc/code/pst-code.pdf
new file mode 100644
index 0000000000..aa1ce5ecc1
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/pst-code.pdf
Binary files differ
diff --git a/obsolete/graphics/pstricks/doc/code/pst-code.tex b/obsolete/graphics/pstricks/doc/code/pst-code.tex
new file mode 100644
index 0000000000..c0aae3c50a
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/pst-code.tex
@@ -0,0 +1,138 @@
+%% BEGIN pst-code.tex
+%%
+%% For printing documented code for PSTricks.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% This LaTeX file inputs pstricks.doc and pst-node.doc,
+%% and prints the documented code.
+%%
+%% You must also have Frank Mittelbach's
+%% doc.sty and gind.ist
+%% (available from rusmv1.rus.uni-stuttgart.de), as well as my
+%% tvz-hax.sty, tvz-code.sty and fancybox.sty
+%% (distributed with PSTricks).
+%%
+%% gind.ist is for the index. I.e.,
+%% makeindex -s gind.ist pst-code.idx
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Change these for a4 paper:
+% \def\paperwidth{8.5in}
+% \def\paperheight{11in}
+
+\def\paperwidth{210mm}
+\def\paperheight{297mm}
+
+\documentstyle{tvz-code}
+
+\def\fileversion{0.93a-97}
+\def\filedate{1997/03/25}
+
+% Comment out to suppress generation of .idx file. Speeds things up.
+% \MakeIndex
+
+% Include to suppress checksums for drafts:
+\def\StopEventually#1{\let\Finale\relax}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%% More DoNotIndex for pst-code %%%%%%%%%%%%%%%
+\DoNotIndex{\pst@dima,\pst@dimb,\pst@dimc,\pst@dimd,\pst@dimg,\pst@cnta,%
+\pst@cntb,\pst@cntc,\pst@cntg,\pst@tempa,\pst@tempb,\pst@tempc,\pst@tempd,%
+\pst@tempg,\pst@boxa,\pst@boxg,\if@pst,\@psttrue,\@pstfalse}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\makeatother
+
+\MakeShortVerb\"
+
+\ShortMeta
+
+\def\n#1{{\tt \string#1}}
+
+\newbox\junkbox
+\def\DocInput#1{%
+ \MakePercentIgnore
+ \setbox\junkbox=\hbox\bgroup
+ \input{#1}%
+ \MakePercentComment}
+\let\EndDocPreamble\egroup
+
+\begin{document}
+
+\def\thetitle{PSTricks: Documented Code}
+
+\begin{titlepage}
+
+\let\footnotesize\small
+\let\footnoterule\relax
+\setcounter{page}{0}
+
+\null
+\vfil
+\vskip 25pt
+
+\begin{center}
+
+ {\LARGE\bf PSTricks}:\\[5pt]
+ {\large\bf PostScript macros for Generic TeX}\\[7pt]
+ {\LARGE\bf\em Documented Code}\par
+
+ \vskip 3em
+
+ {\large \lineskip .75em Timothy Van Zandt}%
+ \thanks{%
+ Author's address:
+ Department of Economics, Princeton University,
+ Princeton, NJ 08544-1021, USA. Internet: {\tt tvz@Princeton.EDU}}%
+ \par
+
+ \vskip 1.5em
+
+ {\large \thefiledate\\[2pt] Version \fileversion}\par
+
+\end{center}
+
+\par
+
+\makeatletter\@thanks\makeatother
+
+\vfil
+
+PSTricks is a collection of PostScript macros that is compatible with most
+\TeX\ macro packages, including Plain \TeX\ and \LaTeX. Included are macros
+for color, graphics, rotation and overlays.
+
+This is the documented code. There is also a {\em User's Guide} and a read-me
+file.
+
+\vfil
+\null
+
+\end{titlepage}
+
+\setcounter{footnote}{0}
+\pagenumbering{roman}
+\tableofcontents
+\clearpage
+\pagenumbering{arabic}
+
+\StopEventually{}
+\DocInput{pstricks.doc}
+\Finale
+\clearpage
+
+\StopEventually{}
+\DocInput{pst-node.doc}
+\Finale
+\clearpage
+
+\DeleteShortMeta
+
+\PrintIndex
+
+\end{document}
+
+%% END pst-code.tex
diff --git a/obsolete/graphics/pstricks/doc/code/pst-coil.doc b/obsolete/graphics/pstricks/doc/code/pst-coil.doc
new file mode 100644
index 0000000000..c412ed4595
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/pst-coil.doc
@@ -0,0 +1,221 @@
+%% BEGIN pst-coil.doc
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%%
+%% For stroking and filling characters with PSTricks' line and fill styles.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%% See pstricks.doc or pstricks.tex for copying restrictions.
+%%
+%% See the PSTricks read-me file and the User's Guide for documentation.
+%
+% **************************************************************************
+% This is `pst-coil.doc'. Use as is, or create a header file and stripped
+% input file with pst-make.tex. See the PSTricks read-me file for details.
+% **************************************************************************
+
+\message{ v\fileversion, \filedate}
+
+\csname PSTcoilsLoaded\endcsname
+\let\PSTcoilsLoaded\endinput
+
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex}\expandafter\next
+\fi
+
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+
+\pst@ATH<\% Version \fileversion, \filedate.>
+\pst@ATH<\% For use with \pstdriver.>
+\pst@ATH</tx@CoilDict 40 dict def tx@CoilDict begin>
+
+\ifx\pst@useheader\iftrue
+ \pstheader{pst-coil.pro}
+ \edef\pst@theheaders{\pst@theheaders,pst-coil.pro}
+ \def\pst@coildict{tx@CoilDict begin }
+\else
+ \def\pst@coildict{%
+ /tx@CoilDict where
+ { pop tx@CoilDict begin}
+ { userdict begin /tx@CoilDict 40 dict def end
+ tx@CoilDict begin }
+ ifelse }
+\fi
+
+\def\psset@coilwidth#1{\pst@getlength{#1}\psk@coilwidth}
+\psset@coilwidth{1cm}
+
+\def\psset@coilheight#1{\pst@checknum{#1}\pscoilheight}
+\psset@coilheight{1}
+
+\def\psset@coilarmA#1{\pst@getlength{#1}\psk@coilarmA}
+\def\psset@coilarmB#1{\pst@getlength{#1}\psk@coilarmB}
+\def\psset@coilarm#1{%
+ \pst@getlength{#1}\psk@coilarmA
+ \let\psk@coilarmB\psk@coilarmA}
+\psset@coilarm{.5cm}
+
+\def\psset@coilaspect#1{\pst@getangle{#1}\psk@coilaspect}
+\psset@coilaspect{45}
+
+\def\psset@coilinc#1{\pst@getangle{#1}\psk@coilinc}
+\psset@coilinc{10}
+
+\def\pscoil{\def\pst@par{}\pst@object{pscoil}}
+\def\pscoil@i{\pst@getarrows\pscoil@ii}
+\def\pscoil@ii(#1){%
+ \@ifnextchar(%
+ {\pscoil@iii{1}(#1)}%
+ {\pscoil@iii{\z@}(0,0)(#1)}}
+\def\pscoil@iii#1(#2)(#3){%
+ \begin@OpenObj
+ \pst@getcoor{#2}\pst@tempa
+ \pst@getcoor{#3}\pst@tempb
+ \pst@optcp{#1}\pst@tempa
+ \addto@pscode{%
+ \pst@tempa \pst@tempb
+ \psk@coilwidth \pscoilheight
+ \psk@coilarmA \psk@coilarmB
+ \psk@coilaspect \psk@coilinc
+ \pst@coildict \tx@Coil end}%
+ \showpointsfalse
+ \end@OpenObj}
+
+\pst@def{CoilLoop}<%
+ /t ED
+ t sin AspectSin mul t 180 div AspectCos mul add
+ t cos
+ lineto>
+
+\pst@def{Coil}<%
+ /Inc ED
+ dup sin /AspectSin ED cos /AspectCos ED
+ /ArmB ED /ArmA ED
+ /h ED /w ED
+ /y1 ED /x1 ED /y0 ED /x0 ED
+ x0 y0 translate
+ y1 y0 sub x1 x0 sub
+ 2 copy \tx@Pyth /TotalLength ED
+ \tx@Atan rotate
+ /BeginAngle ArmA AspectCos \tx@Div w h mul \tx@Div 360 mul def
+ /EndAngle
+ TotalLength ArmB sub AspectCos \tx@Div
+ w h mul \tx@Div 360 mul
+ def
+ 1 0 0 0 ArrowA
+ ArmA 0 lineto
+ /mtrx CM def
+ w h mul 2 \tx@Div w 2 \tx@Div scale
+ BeginAngle Inc EndAngle { \tx@CoilLoop } for
+ EndAngle \tx@CoilLoop
+ mtrx setmatrix
+ TotalLength ArmB sub 0 lineto
+ CP TotalLength 0 ArrowB
+ lineto>
+
+\def\psCoil{\def\pst@par{}\pst@object{psCoil}}
+\def\psCoil@i#1#2{%
+ \begin@AltOpenObj
+ \showpointsfalse
+ \pst@getangle{#1}\pst@tempa
+ \pst@getangle{#2}\pst@tempb
+ \addto@pscode{%
+ \pst@tempa
+ \pst@tempb
+ \psk@coilwidth
+ \pscoilheight
+ \psk@coilaspect
+ \psk@coilinc
+ \pst@coildict \tx@AltCoil end
+ \@nameuse{psls@\pslinestyle}}%
+ \end@OpenObj}
+
+\pst@def{AltCoil}<%
+ /Inc ED
+ dup sin /AspectSin ED cos /AspectCos ED
+ /h ED /w ED
+ /EndAngle ED /BeginAngle ED
+ /mtrx CM def
+ w h mul 2 \tx@Div w 2 \tx@Div scale
+ BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add
+ BeginAngle cos
+ /lineto load stopped { moveto } if
+ BeginAngle Inc EndAngle { \tx@CoilLoop } for
+ EndAngle \tx@CoilLoop
+ mtrx setmatrix>
+
+\def\pszigzag{\def\pst@par{}\pst@object{pszigzag}}
+\def\pszigzag@i{\pst@getarrows\pszigzag@ii}
+\def\pszigzag@ii(#1){%
+ \@ifnextchar({\pszigzag@iii{1}(#1)}{\pszigzag@iii{\z@}(0,0)(#1)}}
+\def\pszigzag@iii#1(#2)(#3){%
+ \begin@OpenObj
+ \pst@getcoor{#2}\pst@tempa
+ \pst@getcoor{#3}\pst@tempb
+ \pst@optcp{#1}\pst@tempa
+ \addto@pscode{%
+ \pst@tempa
+ \pst@tempb
+ \pscoilheight
+ \psk@coilwidth
+ \psk@coilarmA
+ \psk@coilarmB
+ \pst@coildict \tx@ZigZag end
+ \psline@iii
+ \tx@Line}%
+ \end@OpenObj}
+
+\pst@def{ZigZag}<%
+ /ArmB ED /ArmA ED
+ 2 div /w ED w mul /h ED
+ /y1 ED /x1 ED /y0 ED /x0 ED
+ x1 y1 translate
+ y0 y1 sub x0 x1 sub
+ 2 copy \tx@Pyth /TotalLength ED
+ \tx@Atan rotate
+ TotalLength ArmA sub ArmB sub dup h div cvi /n ED
+ n h mul sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED
+ /x ArmB h 2 div add def
+ mark
+ 0 0 ArmB 0
+ n { x w /w w neg def /x x h add def } repeat
+ TotalLength ArmA sub 0 TotalLength 0>
+
+\def\nccoil{\def\pst@par{}\pst@object{nccoil}}
+\def\nccoil@i{\check@arrow{\nccoil@ii}}
+\def\nccoil@ii#1#2{\nc@object{#1}{#2}{.5}{%
+ \tx@NCCoor
+ tx@Dict begin
+ \psk@coilwidth \pscoilheight
+ \psk@coilarmA \psk@coilarmB
+ \psk@coilaspect \psk@coilinc
+ \pst@coildict \tx@Coil end
+ end}}
+
+\def\pccoil{\def\pst@par{}\pst@object{pccoil}}
+\def\pccoil@i{\pc@object\nccoil@ii}
+
+\def\nczigzag{\def\pst@par{}\pst@object{nczigzag}}
+\def\nczigzag@i{\check@arrow{\nczigzag@ii}}
+\def\nczigzag@ii#1#2{\nc@object{#1}{#2}{.5}{%
+ \tx@NCCoor
+ tx@Dict begin
+ \pscoilheight
+ \psk@coilwidth
+ \psk@coilarmA
+ \psk@coilarmB
+ \pst@coildict \tx@ZigZag end
+ \psline@iii
+ \tx@Line
+ end}}
+
+\def\pczigzag{\def\pst@par{}\pst@object{pczigzag}}
+\def\pczigzag@i{\pc@object\nczigzag@ii}
+
+\pst@ATH<end>
+
+\catcode`\@=\TheAtCode\relax
+
+\endinput
+%% END pst-coil.doc
diff --git a/obsolete/graphics/pstricks/doc/code/pst-node.doc b/obsolete/graphics/pstricks/doc/code/pst-node.doc
new file mode 100644
index 0000000000..8f725482dd
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/pst-node.doc
@@ -0,0 +1,1066 @@
+%% BEGIN: pst-node.doc
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%%
+%% pst-node.tex: Node macros for PSTricks.
+%% See the PSTricks read-me file and the User's Guide for documentation.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% Copying of part or all of any file in the pstricks.tex package
+%% is allowed under the following conditions only:
+%% (1) You may freely distribute unchanged copies of the files. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of any file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the files, for personal use or for use
+%% in a macro package for distribution, as long as credit is given
+%% where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% these files or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+% **************************************************************************
+% This file contains the documented code for pst-node.tex and pst-node.pro.
+% See the PSTricks read-me file for information on how to use this file.
+% **************************************************************************
+%
+% \EndDocPreamble
+%
+% \CheckSum{5874}
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \part{pst-node.doc}
+%
+% Check whether file has been loaded already.
+% \begin{macrocode}
+\csname PSTnodesLoaded\endcsname
+\let\PSTnodesLoaded\endinput
+% \end{macrocode}
+%
+% Load "pstricks.tex" if necessary:
+% \begin{macrocode}
+\ifx\PSTricksLoaded\endinput\else
+ \def\next{\input pstricks.tex}\expandafter\next
+\fi
+% \end{macrocode}
+%
+% Take care of the catcode of "@":
+% \begin{macrocode}
+\edef\TheAtCode{\the\catcode`\@}
+\catcode`\@=11
+% \end{macrocode}
+%
+%
+% \section{Node header}
+%
+% Nodes use the dictionary "tx@NodeDict", which is always put on the stack
+% after "tx@Dict". "tx@NodeDict" should avoid using the same procedure names
+% as are found in "tx@Dict", especially those that do not use scratch
+% variables and hence can be used without problem when "tx@NodeDict" is on top
+% of the stack. When invoking a "tx@Dict" procedure that does use scratch
+% variables, "tx@Dict" should be put on top.
+%
+% \begin{macro}{\pst@nodedict}
+% \begin{macrocode}
+\pst@ATH<\% Version \fileversion, \filedate.>
+\pst@ATH<\% For use with \pstdriver.>
+\pst@ATH</tx@NodeDict 200 dict def tx@NodeDict begin>
+\ifx\pst@useheader\iftrue
+ \pstheader{pst-node.pro}
+ \def\pst@nodedict{tx@NodeDict begin }
+\else
+ \def\pst@nodedict{%
+ /tx@NodeDict where
+ { pop }
+ { userdict begin /tx@NodeDict 200 dict def end }
+ ifelse
+ tx@NodeDict begin }
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Nodes}
+%
+%
+% \begin{macro}{\pst@getnode}
+% \begin{macrocode}
+% A node is a dictionary. To reduce the chance of errors, we check that the
+% name begins with a letter and does not contain any spaces.
+% \begin{macrocode}
+\def\pst@getnode#1#2{%
+ \pst@expandafter\pst@@getnode{#1} * \@nil{#1}#2}
+\def\pst@@getnode#1#2 #3\@nil#4#5{%
+ \ifcat#1a\relax
+ \def#5{/TheNode#1#2 }%
+ \else
+ \def#5{/BadNode }%
+ \@pstrickserr{Bad node name: `#4'}\@ehpa
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% Before a node is defined, the coordinate system is scaled to PSTricks'
+% standard coordinate system, with the origin at \TeX's current point. The
+% following objects should then be added to the node dictionary:
+% \begin{description}
+% \item[NodeMtrx] The current matrix.
+% \item[X] The x-coordinate of the center.
+% \item[Y] The y-coordinate of the center.
+% \item[NodePos] A procedure that, given the values of "Sin", "Cos", and
+% "Nodesep", gives the relative position of the point that is distance
+% "Nodesep"from the edge of the node, in the direction "(Cos,Sin)" from the
+% center. ``Relative'' means relative to "(X,Y)" and for the coordinate system
+% in effect when the node was defined.
+% \end{description}
+%
+% \begin{macro}{\tx@NewNode,\pst@newnode}
+% The node's dictionary size should be large enough for the 7 key's mentioned
+% above, plus any keys the node needs for "NodePos", plus a few more to avoid
+% mistakes.
+%
+% Syntax for "NewNode"
+% \begin{LVerbatim}
+% {<beforenode_proc>} /<node_name> <dict_size> {<node_proc>} NewNode"
+% \end{LVerbatim}
+% "<beforenode_proc>" is stuff to be done with "tx@Dict". It might leave
+% things on the stack for use by "<node_proc>".
+%
+% Syntax for "\pst@newnode":
+% \begin{LVerbatim}
+% \pst@newnode{<node_name>}{<dict_size>}{<beforenode_proc>}{<node_proc>}
+% \end{LVerbatim}
+% \begin{macrocode}
+\pst@def{NewNode}<%
+ gsave
+ /next ED
+ dict
+ dup 3 -1 roll ED
+ begin
+ tx@Dict begin
+ \tx@STV
+ CP T
+ exec
+ end
+ /NodeMtrx CM def
+ next
+ end
+ grestore>
+\def\pst@newnode#1#2#3#4{%
+ \leavevmode
+ \pst@getnode{#1}\pst@thenode
+ \pst@Verb{%
+ \pst@nodedict
+ { #3 } \pst@thenode #2 { #4 } \tx@NewNode
+ end}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@InitPnode,\pnode}
+% \begin{macrocode}
+\pst@def{InitPnode}<%
+ /Y ED /X ED
+ /NodePos { Nodesep Cos mul Nodesep Sin mul } def>
+\def\pnode{\@ifnextchar({\pnode@}{\pnode@(0,0)}}
+\def\pnode@(#1)#2{%
+ \pst@@getcoor{#1}%
+ \pst@newnode{#2}{10}{\pst@coor}{\tx@InitPnode}%
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@InitCnode,\cnode}
+% \begin{macrocode}
+\pst@def{InitCnode}<%
+ /r ED /Y ED /X ED
+ /NodePos { Nodesep r add dup Cos mul exch Sin mul } def>
+\def\cnode{\def\pst@par{}\pst@object{cnode}}
+\def\cnode@i{\@ifnextchar({\cnode@ii}{\cnode@ii(0,0)}}
+\def\cnode@ii(#1)#2#3{%
+ \begingroup
+ \use@par
+ \pscircle@do(#1){#2}%
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dimc{#2}%
+ \pst@newnode{#3}{11}{%
+ \pst@coor
+ \pst@number\pst@dimc
+ \pst@number\pslinewidth
+ \psk@dimen .5 sub mul sub}%
+ {\tx@InitCnode}%
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\cnodeput{\def\pst@par{}\pst@object{cnodeput}}
+\def\cnodeput@i{%
+ \begingroup
+ \pst@killglue
+ \leavevmode
+ \pst@getrputrot
+ \cnodeput@ii}
+\def\cnodeput@ii(#1)#2{%
+ \pst@makebox{\cput@iii{\cnodeput@iii{#2}}(#1)}}
+\def\cnodeput@iii#1{%
+ \pst@newnode{#1}{11}{\pscirclebox@iv \pst@number\pslinewidth add}%
+ {\tx@InitCnode}}
+% \end{macrocode}
+%
+% \begin{macro}{\circlenode}
+% \begin{macrocode}
+\def\circlenode{\def\pst@par{}\pst@object{circlenode}}
+\def\circlenode@i#1{\pst@makebox{\pscirclebox@ii{\cnodeput@iii{#1}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\pst@def{GetRnodePos}<%
+ Cos 0 gt
+ { /dx r Nodesep add def }
+ { /dx l Nodesep sub def }
+ ifelse
+ Sin 0 gt
+ { /dy u Nodesep add def }
+ { /dy d Nodesep sub def }
+ ifelse
+ dx Sin mul abs dy Cos mul abs gt
+ { dy Cos mul Sin div dy }
+ { dx dup Sin mul Cos \tx@Div }
+ ifelse>
+% \end{macrocode}
+%
+% \begin{macro}{InitRnode}
+% Syntax:
+% \begin{Ex}
+% <yref ht dp bool xref wd> InitRnode
+% \end{Ex}
+% Additional keys: "r", "l", "d", "u", "dx" and "dy".
+% \begin{macrocode}
+\pst@def{InitRnode}<%
+ /r ED r mul neg /l ED /r r l add def
+ /X l neg def
+ { neg /d ED /u ED /Y 0 def }
+ { neg /Y ED
+ Y sub /u ED
+ u mul neg /d ED
+ /u u d add def
+ /Y Y d sub def }
+ ifelse
+ /NodePos { \tx@GetRnodePos } def>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rnode}
+% The ability to set the refpoint is an undocumented feature that may be
+% omitted.
+% \begin{macrocode}
+\def\rnode{\begingroup\pst@getref\rnode@}
+\def\rnode@#1{\pst@makebox{\rnode@@{#1}}}
+\def\rnode@@#1{%
+ \ifx\refpoint@x\relax
+ \def\refpoint@y{.5}%
+ \def\refpoint@x{.5}%
+ \fi
+ \pst@newnode{#1}{16}{}{%
+ \ifx\refpoint@x\relax .5 \else \refpoint@y\space \fi
+ \pst@number{\ht\pst@hbox}%
+ \pst@number{\dp\pst@hbox}%
+ \ifx\refpoint@y\@empty true \else false \fi
+ \refpoint@x\space
+ \pst@number{\wd\pst@hbox}%
+ \tx@InitRnode}%
+ \box\pst@hbox
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{InitRNode}
+% Syntax:
+% \begin{Ex}
+% <ht dp wd xref yref> "InitRNode"
+% \end{Ex}
+% \begin{macrocode}
+\pst@def{InitRNode}<%
+ /Y ED /X ED /r ED /X r 2 div X add def /r r X sub def /l X neg def
+ Y add neg /d ED Y sub /u ED
+ /NodePos { \tx@GetRnodePos } def>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\Rnode}
+% \begin{macrocode}
+\def\Rnode{\@ifnextchar({\Rnode@}{\Rnode@(\RnodeRef)}}
+\def\Rnode@(#1)#2{\pst@makebox{\Rnode@@(#1){#2}}}
+\def\Rnode@@(#1)#2{%
+ \begingroup
+ \pst@@getcoor{#1}%
+ \pst@newnode{#2}{16}{%
+ \pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}%
+ \pst@number{\wd\pst@hbox}\pst@coor}{\tx@InitRNode}%
+ \box\pst@hbox
+ \endgroup}
+\def\RnodeRef{0,.7ex}
+% \end{macrocode}
+% \end{macro}
+
+% \begin{macro}{GetOnodePos}
+% \begin{macrocode}
+\pst@def{GetOnodePos}<%
+ /ww w Nodesep add def /hh h Nodesep add def
+ Sin ww mul Cos hh mul \tx@Atan dup
+ cos ww mul exch sin hh mul>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\ovalnode}
+% Additional keys: "w", "h", "ww", "hh".
+% \begin{macrocode}
+\def\ovalnode{\def\pst@par{}\pst@object{ovalnode}}
+\def\ovalnode@i#1{\pst@makebox{\psovalbox@ii{\ovalnode@ii{#1}}}}
+\def\ovalnode@ii#1{%
+ \pst@newnode{#1}{14}{}{%
+ /X \pst@number{\wd\pst@hbox}2 div def
+ /Y \pst@number\pst@dimg 2 div \pst@number{\dp\pst@hbox}sub def
+ /w \pst@number\pst@dima def
+ /h \pst@number\pst@dimb def
+ /NodePos { \tx@GetOnodePos } def}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Node connections: Preliminaries}
+%
+% \begin{macro}{\tx@GetCenter,\tx@GetAngle}
+% Syntax:
+% \begin{Ex}
+% - "GetCenter" <x y> \hskip 1em (Center coordinates)\\
+% - "GetAngle" <angle> \hskip 1em (Angle from A to B)
+% \end{Ex}
+% \begin{macrocode}
+\pst@def{GetCenter}<begin X Y NodeMtrx transform CM itransform end>
+\pst@def{GetAngle}<%
+ nodeA \tx@GetCenter
+ nodeB \tx@GetCenter
+ 3 -1 roll sub 3 1 roll sub neg \tx@Atan>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@GetEdge,\tx@GetPos}
+% Syntax:
+% \begin{Ex}
+% <offset angle nodesep node> "GetEdge" <x y>
+% \end{Ex}
+% "GetPos" defines "(x1,y1)" and "(x2,y2)" to be coordinates of position for
+% node A and B, taking into account "AngleA", "AngleB", "OffsetA", "OffsetB",
+% "NodesepA" and "NodesepB".
+% \begin{macrocode}
+\pst@def{GetEdge}<%
+ begin
+ /Nodesep ED
+ dup
+ 1 0 NodeMtrx dtransform CM idtransform exch atan sub
+ dup sin /Sin ED cos /Cos ED
+ NodePos Y add exch X add exch
+ NodeMtrx transform CM itransform
+ end % offset angle x y
+ 4 2 roll
+% Now add the offsets:
+ 1 index 0 eq
+ { pop pop }
+ { 2 copy 5 2 roll % x offset angle y offset angle
+ cos mul add
+ 4 1 roll
+ sin mul sub
+ exch }
+ ifelse>
+\pst@def{GetPos}<%
+ OffsetA AngleA NodesepA nodeA \tx@GetEdge /y1 ED /x1 ED
+ OffsetB AngleB NodesepB nodeB \tx@GetEdge /y2 ED /x2 ED>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\check@arrow#1#2{%
+ \check@@arrow#2-\@nil
+ \if@pst
+ \addto@par{arrows=#2}%
+ \def\next{#1}%
+ \else
+ \def\next{#1{#2}}%
+ \fi
+ \next}
+\def\check@@arrow#1-#2\@nil{%
+ \ifx\@nil#2\@nil\@pstfalse\else\@psttrue\fi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{InitNC}<%
+ /nodeB ED /nodeA ED
+ /NodesepB ED /NodesepA ED
+ /OffsetB ED /OffsetA ED
+ tx@NodeDict nodeA known tx@NodeDict nodeB known and dup
+ { /nodeA nodeA load def /nodeB nodeB load def } if>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\nc@object#1#2#3#4{%
+ \begin@OpenObj
+ \showpointsfalse
+ \pst@getnode{#1}\pst@tempa
+ \pst@getnode{#2}\pst@tempb
+ \gdef\lputpos@default{#3}%
+ \addto@pscode{%
+ \pst@nodedict
+ \psk@offsetA
+ \psk@offsetB neg
+ \psk@nodesepA
+ \psk@nodesepB
+ \pst@tempa
+ \pst@tempb
+ \tx@InitNC { #4 } if
+ end}%
+ \def\use@pscode{%
+ \pst@Verb{gsave \tx@STV newpath \pst@code\space grestore}%
+ \gdef\pst@code{}}%
+ \end@OpenObj}
+\def\lputpos@default{.5}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pc@object#1{%
+ \@ifnextchar({\pc@@object#1}{\pst@getarrows{\pc@@object#1}}}
+\def\pc@@object#1(#2)(#3){%
+ \pnode(#2){@@A}\pnode(#3){@@B}%
+ #1{@@A}{@@B}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\psset@nodesepA#1{\pst@getlength{#1}\psk@nodesepA}
+\def\psset@nodesepB#1{\pst@getlength{#1}\psk@nodesepB}
+\def\psset@nodesep#1{%
+ \psset@nodesepA{#1}\let\psk@nodesepB\psk@nodesepA}
+\psset@nodesep{0}
+% \end{macrocode}
+%
+% \begin{macro}{\psset@offset,\psk@offsetA,\psk@offsetB}
+% \begin{macrocode}
+\def\psset@offsetA#1{\pst@getlength{#1}\psk@offsetA}
+\def\psset@offsetB#1{\pst@getlength{#1}\psk@offsetA}
+\def\psset@offset#1{%
+ \psset@offsetA{#1}\let\psk@offsetB\psk@offsetA}
+\psset@offset{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@arm,\psk@armA,\psk@armB}
+% \begin{macrocode}
+\def\psset@armA#1{\pst@getlength{#1}\psk@armA}
+\def\psset@armB#1{\pst@getlength{#1}\psk@armB}
+\def\psset@arm#1{\psset@armA{#1}\let\psk@armB\psk@armA}
+\psset@arm{10pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@angle,\psk@angleA,\psk@angleB}
+% \begin{macrocode}
+\def\psset@angleA#1{\pst@getangle{#1}\psk@angleA}
+\def\psset@angleB#1{\pst@getangle{#1}\psk@angleB}%
+\def\psset@angle#1{\pst@getangle{#1}\psk@angleA
+ \let\psk@angleB\psk@angleA}
+\psset@angle{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@arcangle,\psk@arcangleA,\psk@arcangleB}
+% \begin{macrocode}
+\def\psset@arcangleA#1{\pst@getangle{#1}\psk@arcangleA}
+\def\psset@arcangleB#1{\pst@getangle{#1}\psk@arcangleB}%
+\def\psset@arcangle#1{\pst@getangle{#1}\psk@arcangleA
+ \let\psk@arcangleB\psk@arcangleA}
+\psset@arcangle{8}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@ncurv,\psk@ncurvA,\psk@ncurvB}
+% \begin{macrocode}
+\def\psset@ncurvA#1{\pst@checknum{#1}\psk@ncurvA}
+\def\psset@ncurvB#1{\pst@checknum{#1}\psk@ncurvB}%
+\def\psset@ncurv#1{\psset@ncurvA{#1}\let\psk@ncurvB\psk@ncurvA}
+\psset@ncurv{.67}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Node connections: The real thing}
+%
+% \begin{macrocode}
+\pst@def{LineMP}<%
+ 4 copy
+ 1 t sub mul exch t mul add 3 1 roll
+ 1 t sub mul exch t mul add exch 6 2 roll
+ sub 3 1 roll sub \tx@Atan>
+% \end{macrocode}
+%
+% \begin{macro}{\tx@NCCoor,\tx@NCLine}
+% Syntax:
+% \begin{Ex}
+% <OffsetB NodesepB OffsetA NodesepA> NCLine
+% \end{Ex}
+% Leaves coordinates on stack rather than actually drawing line.
+% \begin{macrocode}
+\pst@def{NCCoor}<%
+ \tx@GetAngle
+ /AngleA ED /AngleB AngleA 180 add def
+ \tx@GetPos
+ /LPutVar [ x2 x1 y2 y1 ] cvx def
+ /LPutPos { LPutVar \tx@LineMP } def
+ x1 y1 x2 y2>
+\pst@def{NCLine}<%
+ \tx@NCCoor
+ tx@Dict begin
+ ArrowB
+ 4 2 roll
+ ArrowA
+ lineto
+ end>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\ncline{\def\pst@par{}\pst@object{ncline}}
+\def\ncline@i{\check@arrow{\ncline@ii}}
+\def\ncline@ii#1#2{\nc@object{#1}{#2}{.5}{\tx@NCLine}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pcline{\def\pst@par{}\pst@object{pcline}}
+\def\pcline@i{\pc@object\ncline@ii}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\def\ncLine{\def\pst@par{}\pst@object{ncLine}}
+\def\ncLine@i{\check@arrow{\ncLine@ii}}
+\def\ncLine@ii#1#2{\nc@object{#1}{#2}{.5}%
+ {\tx@NCLine
+ /LPutVar [
+ nodeA \tx@GetCenter
+ nodeB \tx@GetCenter
+ 3 1 roll 4 1 roll
+ ] cvx def }}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{BezierMidpoint}<%
+ /y3 ED /x3 ED
+ /y2 ED /x2 ED
+ /y1 ED /x1 ED
+ /y0 ED /x0 ED
+ /t ED
+ /cx x1 x0 sub 3 mul def
+ /cy y1 y0 sub 3 mul def
+ /bx x2 x1 sub 3 mul cx sub def
+ /by y2 y1 sub 3 mul cy sub def
+ /ax x3 x0 sub cx sub bx sub def
+ /ay y3 y0 sub cy sub by sub def
+ ax t 3 exp mul bx t t mul mul add cx t mul add x0 add
+ ay t 3 exp mul by t t mul mul add cy t mul add y0 add
+ 3 ay t t mul mul mul 2 by t mul mul add cy add
+ 3 ax t t mul mul mul 2 bx t mul mul add cx add
+ atan>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{GetArms}<%
+ /x1a armA AngleA cos mul x1 add def
+ /y1a armA AngleA sin mul y1 add def
+ /x2a armB AngleB cos mul x2 add def
+ /y2a armB AngleB sin mul y2 add def>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{NCCurve}<%
+ \tx@GetPos
+ x1 x2 sub y1 y2 sub \tx@Pyth
+ 2 div dup
+ 3 -1 roll mul /armA ED mul /armB ED
+ \tx@GetArms
+ x1a y1a x1 y1 tx@Dict begin ArrowA end
+ x2a y2a x2 y2 tx@Dict begin ArrowB end
+ curveto
+ /LPutVar [ x1 y1 x1a y1a x2a y2a x2 y2 ] cvx def
+ /LPutPos { t LPutVar \tx@BezierMidpoint } def>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\nccurve{\def\pst@par{}\pst@object{nccurve}}
+\def\nccurve@i{\check@arrow{\nccurve@ii}}
+\def\nccurve@ii#1#2{\nc@object{#1}{#2}{.5}{%
+ /AngleA \psk@angleA\space def /AngleB \psk@angleB\space def
+ \psk@ncurvB\space \psk@ncurvA\space
+ \tx@NCCurve}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pccurve{\def\pst@par{}\pst@object{pccurve}}
+\def\pccurve@i{\pc@object\nccurve@ii}
+% \end{macrocode}
+%
+%
+% \begin{macrocode}
+\def\ncarc{\def\pst@par{}\pst@object{ncarc}}
+\def\ncarc@i{\check@arrow{\ncarc@ii}}
+\def\ncarc@ii#1#2{\nc@object{#1}{#2}{.5}{%
+ \tx@GetAngle dup
+ \psk@arcangleA\space add /AngleA ED
+ \psk@arcangleB\space sub 180 add /AngleB ED
+ \psk@ncurvB\space \psk@ncurvA\space
+ \tx@NCCurve}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pcarc{\def\pst@par{}\pst@object{pcarc}}
+\def\pcarc@i{\pc@object\ncarc@ii}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{AnglesMP}<%
+ LPutVar
+ t 3 gt
+ { /t t 3 sub def }
+ { t 2 gt
+ { /t t 2 sub def 10 -2 roll }
+ { t 1 gt
+ { /t t 1 sub def 10 -4 roll }
+ { 10 4 roll }
+ ifelse }
+ ifelse }
+ ifelse
+ 6 { pop } repeat
+ 3 -1 roll exch \tx@LineMP>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{NCAngles}<%
+ \tx@GetPos
+ \tx@GetArms
+ /mtrx AngleA matrix rotate def
+ x1a y1a mtrx transform pop
+ x2a y2a mtrx transform exch pop
+ mtrx itransform
+ /y0 ED /x0 ED
+ mark
+ armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne { x1 y1 } if
+ tx@Dict begin false \tx@Line end
+ /LPutVar [ x2 y2 x2a y2a x0 y0 x1a y1a x1 y1 ] cvx def
+ /LPutPos { \tx@AnglesMP } def>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\ncangles{\def\pst@par{}\pst@object{ncangles}}
+\def\ncangles@i{\check@arrow{\ncangles@ii}}
+\def\ncangles@ii#1#2{%
+ \nc@object{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngles}}
+\def\ncangles@iii{%
+ tx@Dict begin
+ \ifdim\pslinearc>\z@
+ /r \pst@number\pslinearc def
+ /Lineto { \tx@Arcto } def
+ \else
+ /Lineto { L } def
+ \fi
+ end
+ /AngleA \psk@angleA\space def /AngleB \psk@angleB\space def
+ /armA \psk@armA\space def /armB \psk@armB\space def }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pcangles{\def\pst@par{}\pst@object{pcangles}}
+\def\pcangles@i{\pc@object\ncangles@ii}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{NCAngle}<%
+ \tx@GetPos
+ /x2a armB AngleB cos mul x2 add def
+ /y2a armB AngleB sin mul y2 add def
+ /mtrx AngleA matrix rotate def
+ x2a y2a mtrx transform pop
+ x1 y1 mtrx transform exch pop
+ mtrx itransform
+ /y0 ED /x0 ED
+ mark
+ armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1
+ tx@Dict begin false \tx@Line end
+ /LPutVar [ x2 y2 x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def
+ /LPutPos { \tx@AnglesMP } def>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\ncangle{\def\pst@par{}\pst@object{ncangle}}
+\def\ncangle@i{\check@arrow{\ncangle@ii}}
+\def\ncangle@ii#1#2{%
+ \nc@object{#1}{#2}{1.5}{\ncangles@iii \tx@NCAngle}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pcangle{\def\pst@par{}\pst@object{pcangle}}
+\def\pcangle@i{\pc@object\ncangle@ii}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{NCBar}<%
+ \tx@GetPos
+ \tx@GetArms
+ /mtrx AngleA matrix rotate def
+ x1a y1a mtrx transform pop
+ x2a y2a mtrx transform pop sub
+ dup 0 mtrx itransform
+ 3 -1 roll 0 gt
+ { /y2a exch y2a add def /x2a exch x2a add def }
+ { /y1a exch neg y1a add def /x2a exch neg x2a add def }
+ ifelse
+ mark
+ x2 y2 x2a y2a x1a y1a x1 y1
+ tx@Dict begin false \tx@Line end
+ /LPutVar [ x2 y2 x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def
+ /LPutPos { LPutVar \tx@AnglesMP } def>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\ncbar{\def\pst@par{}\pst@object{ncbar}}
+\def\ncbar@i{\check@arrow{\ncbar@ii}}
+\def\ncbar@ii#1#2{\nc@object{#1}{#2}{1.5}{%
+ \ncangles@iii /AngleB \psk@angleA def \tx@NCBar}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pcbar{\def\pst@par{}\pst@object{pcbar}}
+\def\pcbar@i{\pc@object\ncbar@ii}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@def{NCDiag}<%
+ \tx@GetPos
+ \tx@GetArms
+ mark
+ x2 y2 x2a y2a x1a y1a x1 y1
+ tx@Dict begin false \tx@Line end
+ /LPutVar [ x2 y2 x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def
+ /LPutPos { \tx@AnglesMP } def>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\ncdiag{\def\pst@par{}\pst@object{ncdiag}}
+\def\ncdiag@i{\check@arrow{\ncdiag@ii}}
+\def\ncdiag@ii#1#2{%
+ \nc@object{#1}{#2}{1.5}{\ncangles@iii \tx@NCDiag}}
+% \end{macrocode}
+%
+% \begin{macro}{\pcdiag}
+% \begin{macrocode}
+\def\pcdiag{\def\pst@par{}\pst@object{pcdiag}}
+\def\pcdiag@i{\pc@object\ncdiag@ii}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\pst@def{NCDiagg}<%
+ OffsetA AngleA NodesepA nodeA \tx@GetEdge
+ /y1 ED /x1 ED
+ /x1a armA AngleA cos mul x1 add def
+ /y1a armA AngleA sin mul y1 add def
+ nodeB \tx@GetCenter
+ y1a sub exch x1a sub \tx@Atan 180 add /AngleB ED
+ OffsetB AngleB NodesepB nodeB \tx@GetEdge
+ /y2 ED /x2 ED
+ mark
+ x2 y2 x1a y1a x1 y1
+ tx@Dict begin false \tx@Line end
+ /LPutVar [ x2 y2 x2 y2 x2 y2 x1a y1a x1 y1] cvx def
+ /LPutPos { \tx@AnglesMP } def>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\ncdiagg{\def\pst@par{}\pst@object{ncdiagg}}
+\def\ncdiagg@i{\check@arrow{\ncdiagg@ii}}
+\def\ncdiagg@ii#1#2{%
+ \nc@object{#1}{#2}{.5}{\ncangles@iii \tx@NCDiagg}}
+% \end{macrocode}
+%
+% \begin{macro}{\pcdiagg}
+% \begin{macrocode}
+\def\pcdiagg{\def\pst@par{}\pst@object{pcdiagg}}
+\def\pcdiagg@i{\pc@object\ncdiagg@ii}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@LoopMP}
+% \begin{macrocode}
+\pst@def{LoopMP}<%
+ /t t abs def
+ [ LPutVar ] length 2 div 1 sub dup t lt { /t ED } { pop } ifelse
+ mark LPutVar
+ t cvi { /t t 1 sub def pop pop } repeat
+ counttomark 1 add 4 roll cleartomark
+ 3 -1 roll exch \tx@LineMP>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\pst@def{NCLoop}<%
+ \tx@GetPos
+ \tx@GetArms
+ /mtrx AngleA matrix rotate def
+ x1a y1a mtrx transform loopsize add /y1b ED /x1b ED
+ /x2b x2a y2a mtrx transform pop def
+ x2b y1b mtrx itransform /y2b ED /x2b ED
+ x1b y1b mtrx itransform /y1b ED /x1b ED
+ mark
+ armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a y1a armA
+ 0 ne { x1 y1 } if
+ tx@Dict begin false \tx@Line end
+ /LPutVar [ x2 y2 x2a y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def
+ /LPutPos { \tx@LoopMP } def>
+% \end{macrocode}
+%
+% \begin{macro}{\psset@loopsize}
+% \begin{macrocode}
+\def\psset@loopsize#1{\pst@getlength{#1}\psk@loopsize}
+\psset@loopsize{1cm}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\ncloop{\def\pst@par{}\pst@object{ncloop}}
+\def\ncloop@i{\check@arrow{\ncloop@ii}}
+\def\ncloop@ii#1#2{%
+ \nc@object{#1}{#2}{2.5}%
+ {\ncangles@iii /loopsize \psk@loopsize\space def \tx@NCLoop}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\pcloop{\def\pst@par{}\pst@object{pcloop}}
+\def\pcloop@i{\pc@object\ncloop@ii}
+% \end{macrocode}
+%
+% \begin{macro}{\tx@NCCircle}
+% \begin{macrocode}
+\pst@def{NCCircle}<%
+ nodeA \tx@GetCenter
+ 0 0 NodesepA nodeA \tx@GetEdge
+ % Stack: x-center y-center x-edge y-origin
+ pop 3 1 roll
+ /Y ED /X ED % center
+ X sub 2 div % half distance to edge
+ dup 2 exp r r mul sub abs sqrt atan 2 mul /a ED % angle to edge
+ r AngleA 90 add \tx@PtoC % displacement to origin
+ Y add exch X add exch % origin
+ 2 copy /LPutVar [ 4 2 roll r a ] def
+ /LPutPos { LPutVar aload pop t 360 mul add dup 5 1 roll
+ 90 sub \tx@PtoC 3 -1 roll add 3 1 roll add exch 3 -1 roll } def
+ r
+ AngleA 90 sub a add % begin arc angle
+ AngleA 270 add a sub % end arc angle
+ % Stack: x0 y0 r a1 a2
+ tx@Dict begin
+ /angleB ED
+ /angleA ED
+ /r ED
+ /c 57.2957 r \tx@Div def
+ /y ED
+ /x ED>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\def\nccircle{\def\pst@par{}\pst@object{nccircle}}
+\def\nccircle@i{\check@arrow{\nccircle@ii}}
+\def\nccircle@ii#1#2{%
+ \pssetlength\pst@dima{#2}%
+ \nc@object{#1}{#1}{.5}{%
+ /AngleA \psk@angleA def
+ /r \pst@number\pst@dima def
+ \tx@NCCircle \psarc@v end}}
+% \end{macrocode}
+%
+%
+% \section{Node Labels}
+%
+%
+% \begin{macro}{\pst@getlputrot}
+% \begin{macrocode}
+\def\pst@getlputrot#1{%
+ \@ifnextchar(%
+ {\def\pst@rot{}#1}%
+ {\pst@@getlputrot{\@ifnextchar({#1}{#1(\lputpos@default)}}}}
+\def\pst@@getlputrot#1#2{%
+ \pst@expandafter{\@ifnextchar:{\pst@@@getlputrot}%
+ {\@ifstar{\pst@@@getrot}{\pst@@getrot}}}{#2}\@nil
+ \ifx\pst@rotlist\@empty\else
+ \edef\pst@rotlist{\pst@rotlist \pst@rot add }%
+ \fi
+ #1}
+\def\pst@@@getlputrot#1#2\@nil{%
+ \pst@@getrot#2\@nil
+ \edef\pst@rot{langle \ifx\pst@rot\@empty\else\pst@rot add \fi}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{LPutCoor}
+% \begin{macrocode}
+\pst@def{LPutCoor}<%
+ tx@NodeDict /LPutPos known
+ { gsave
+ LPutPos
+ tx@Dict begin
+ /langle ED
+ CM 3 1 roll
+ \tx@STV
+ CP 3 -1 roll sub neg 3 1 roll sub exch
+ moveto
+ setmatrix
+ CP
+ end
+ grestore }
+ { 0 0 tx@Dict /langle 0 def end }
+ ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psput@lput}
+% \begin{macrocode}
+\def\psput@lput#1#2{%
+ \pst@checknum{#1}\pst@tempa
+ \hbox{%
+ \pst@Verb{%
+ \pst@nodedict
+ /t \pst@tempa\space def
+ \tx@LPutCoor
+ end
+ \tx@PutBegin}%
+ \box#2%
+ \pst@Verb{\tx@PutEnd}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\lput}
+% \begin{macrocode}
+\def\lput{\begin@psput{\pst@getref{\pst@getlputrot{\end@psput\lput@i}}}}
+\def\lput@i(#1){%
+ \pst@makesmall\pst@hbox
+ \ifx\pst@rot\@empty\else\pst@rotate\pst@hbox\fi
+ \psput@lput{#1}\pst@hbox}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mput}
+% \begin{macrocode}
+\def\mput{%
+ \begin@psput{\def\pst@rot{}\pst@getref{\end@psput\lput@i(\lputpos@default)}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\aput,\Aput,\bput,\Bput}
+% \begin{macrocode}
+\def\aput@#1{\begin@psput{%
+ \def\pst@refangle{#1 }%
+ \@ifnextchar[{\aput@i}{\pst@getlputrot{\end@psput\aput@ii}}}}
+\def\aput@i[#1]{%
+ \pssetlength\pslabelsep{#1}\pst@getlputrot{\end@psput\aput@ii}}
+\def\aput@ii(#1){%
+ \uput@iv\aput@iii
+ \psput@lput{#1}\pst@hbox}
+\def\aput@iii{exch pop add a \tx@PtoC h1 add exch w1 add exch }
+\def\aput{\aput@{langle 90 add}}
+\def\bput{\aput@{langle 90 sub}}
+\def\Aput@#1{\begin@psput{%
+ \def\pst@refangle{#1 }%
+ \def\pst@rot{}%
+ \@ifnextchar[{\Aput@i}{\end@psput\aput@ii(\lputpos@default)}}}
+\def\Aput@i[#1]{%
+ \pssetlength\pslabelsep{#1}%
+ \end@psput\aput@ii(\lputpos@default)}
+\def\Aput{\Aput@{langle 90 add}}
+\def\Bput{\Aput@{langle 90 sub}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\Lput,\Mput}
+% These are obsolete.
+% \begin{macrocode}
+\def\Lput{%
+ \begin@psput{\pst@getlabelsep{\pst@getlputrot{\end@psput{\Rput@i\lput@i}}}}}
+\def\Mput{%
+ \begin@psput{%
+ \def\pst@rot{}%
+ \pst@getlabelsep{\end@psput{\Rput@i\lput@i}(\lputpos@default)}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Node coordinates}
+%
+% \begin{macro}{\node@coor}
+% \begin{macrocode}
+\def\node@coor#1;#2\@nil{%
+ \pst@getnode{#1}\pst@tempg
+ \edef\pst@coor{%
+ \pst@nodedict
+ tx@NodeDict \pst@tempg known
+ { \pst@tempg load \tx@GetCenter }
+ { 0 0 }
+ ifelse
+ end }}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Node@coor}
+% \begin{macrocode}
+\def\Node@coor[#1]#2;#3\@nil{%
+ \begingroup
+ \psset{#1}%
+ \pst@getnode{#2}\pst@tempg
+ \xdef\pst@tempg{%
+ \pst@nodedict
+ tx@NodeDict \pst@tempg known
+ { \psk@offsetA \psk@angleA \psk@nodesepA \pst@tempg load \tx@GetEdge }
+ { 0 0 }
+ ifelse
+ end }%
+ \endgroup
+ \let\pst@coor\pst@tempg}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\pst@ATH<end>
+\catcode`\@=\TheAtCode\relax
+\endinput
+% \end{macrocode}
+%
+% \Finale
+% \endinput
+%
+%% END: pst-node.doc
diff --git a/obsolete/graphics/pstricks/doc/code/pstricks.doc b/obsolete/graphics/pstricks/doc/code/pstricks.doc
new file mode 100644
index 0000000000..e7cf2b591c
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/pstricks.doc
@@ -0,0 +1,4739 @@
+%% BEGIN pstricks.doc
+\def\fileversion{0.93a}
+\def\filedate{93/03/12}
+%
+% File `pstricks.doc': PostScript macros for Generic TeX.
+%%
+%% See the PSTricks read-me file and the User's Guide for documentation.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% Copying of part or all of any file in the pstricks.tex package
+%% is allowed under the following conditions only:
+%% (1) You may freely distribute unchanged copies of the files. Please
+%% include the documentation when you do so.
+%% (2) You may modify a renamed copy of any file, but only for personal
+%% use or use within an organization.
+%% (3) You may copy fragments from the files, for personal use or for use
+%% in a macro package for distribution, as long as credit is given
+%% where credit is due.
+%%
+%% You are NOT ALLOWED to take money for the distribution or use of
+%% these files or modified versions or fragments thereof, except for
+%% a nominal charge for copying etc.
+%%
+% **************************************************************************
+% This is `pstricks.doc', which contains the documented code for the PSTricks
+% package. See the PSTricks read-me file for information on how to
+% use this file.
+% **************************************************************************
+%
+% \EndDocPreamble
+%
+% \CheckSum{5048}
+% \CharacterTable
+% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+% Digits \0\1\2\3\4\5\6\7\8\9
+% Exclamation \! Double quote \" Hash (number) \#
+% Dollar \$ Percent \% Ampersand \&
+% Acute accent \' Left paren \( Right paren \)
+% Asterisk \* Plus \+ Comma \,
+% Minus \- Point \. Solidus \/
+% Colon \: Semicolon \; Less than \<
+% Equals \= Greater than \> Question mark \?
+% Commercial at \@ Left bracket \[ Backslash \\
+% Right bracket \] Circumflex \^ Underscore \_
+% Grave accent \` Left brace \{ Vertical bar \|
+% Right brace \} Tilde \~}
+%
+%
+% \section{Disclaimers, Guidelines and Other Comments}
+%
+% \paragraph*{Disclaimer}
+% These macros are extensive and were written hurriedly. Only modest attempts
+% have been made to clean up and optimize the code. The internals may change
+% substantially until version 1.0 comes up.
+%
+% \paragraph*{PostScript Guidelines}
+% The following guidelines were followed for macros using PostScript
+% "\special"'s:
+% \begin{enumerate}
+% \item Almost no "gsave" and "grestore" commands are used (reducing the
+% likelihood of conflicts with dvi-to-ps drivers or an unmatched "gsave" or
+% "grestore" ending up on a page).
+% \item Most end-user macros (those without "@") have error-checking so that
+% bad arguments or other misuse will not generate PostScript errors.
+% \end{enumerate}
+%
+% \iffalse
+% \paragraph*{Prefixes}
+% (This list is not complete.) Here are the conventions on prefixes, such as
+% the "pst" is "\pst@Verb":
+% \begin{center}
+% \begin{tabular}{ll}
+% {\em Prefix} & {\em Use}\\
+% "pst" & This and that.\\
+% "psk" & Graphics parameters ("k"={\em key}).\\
+% "psset" & Macros that set graphics parameters.\\
+% "psls" & Line styles.\\
+% "psfs" & Fill styles.\\
+% "psas" & Arrow styles.\\
+% "pscs" & Custom styles.\\
+% \end{tabular}
+% \end{center}
+% \fi
+%
+% \paragraph*{Macros}
+% A ``macro'' means any command sequence that is documented in this with a
+% heading entry. Macros with "@" are internal, and others are part of the user
+% interface. Commands that are not in the heading preceding their definition
+% are internal commands of a macro, and are not meant to be used directly by
+% other macros.
+%
+% \paragraph*{Local and global variables}
+% There are various classes of scratch registers and commands:
+% \begin{description}
+% \item[Global] These can be changed using "\global", etc.
+% \begin{LVerbatim}
+% \pst@tempg
+% \pst@temph
+% \pst@dimg
+% \pst@dimh
+% \pst@cntg
+% \pst@cnth
+% \pst@boxg
+% \end{LVerbatim}
+%
+% \item[Local-I] These cannot be changed with "\global", but otherwise there
+% are no restrictions.
+% \begin{LVerbatim}
+% \next
+% \@tempa
+% \end{LVerbatim}
+%
+% \item[Local-I]
+% Changes to these must be local to the macro in which they occur (be
+% grouping).
+% \begin{LVerbatim}
+% \pst@tempa
+% \pst@tempb
+% \pst@tempc
+% \pst@tempd
+% \end{LVerbatim}
+%
+% \item[Local-II] Changes to these must be local to the macro in which they
+% occur, and it must be possible to use these as arguments of macros.
+% \begin{LVerbatim}
+% \pst@dima
+% \pst@dimb
+% \pst@dimc
+% \pst@dimd
+% \if@pst
+% \end{LVerbatim}
+% There is one exception. When using these in coordinates that are processed
+% directly as Cartesian coordinates rather than with "\pst@getcoor", they must
+% be used in this order:
+% \begin{LVerbatim}
+% (\pst@dima,\pst@dimb)(\pst@dimc,\pst@dimd)
+% \end{LVerbatim}
+%
+% \item[Shared] These are used to share information between macros. Their
+% value may be set by one macro and then used by another. Use with care. Do
+% not set with "\global".
+% \begin{quote}
+% \begin{tabular}{ll}
+% \em command & \em usage\\
+% "\pst@hbox" & Box created and manipulated in HR-box macros.\\
+% "\pst@coor" & PostScript code for a coordinate.\\
+% "\pst@angle" & PostScript code for an angle.\\
+% "\pst@rot" & PostScript code for a rotation angle.\\
+% "\if@star" & This is a flag to keep track of optional "*".
+% \end{tabular}
+% \end{quote}
+%
+% \end{description}
+%
+% \paragraph*{Plain \TeX\ commands}
+% The commands
+% \begin{LVerbatim}
+% \newbox
+% \newcount
+% \newdimen
+% \newif
+% \loop ... \repeat ... \fi
+% \z@
+% \sixt@@n
+%\end{LVerbatim}
+% are defined in "plain.tex" are part of most macro packages. PSTricks assumes
+% that they are defined. Other than these, PSTricks only makes use of \TeX\
+% primitives.
+%
+% \paragraph*{Dividing the file}
+%
+% {\bf\em Breaking up the file}\hskip 1em "pstricks.tex" can be broken up into
+% the following components:
+% \begin{description}
+% \item[Basics] (Including color and simple rotation.) Sections \ref{Prelim},
+% \ref{Config}, \ref{Header}, \ref{Errors}, \ref{Colors}, \ref{Colortab},
+% \ref{Rotation:simple} and \ref{Config:revisited}.
+% \item[Graphics] Sections \ref{Parameters}, \ref{Objects}, \ref{Linestyles},
+% \ref{Arrowheads}, \ref{Lines}, \ref{Grids}, \ref{Fillstyles}, \ref{Frames},
+% \ref{Frameboxes} and \ref{Circles}. Requires also {\bf Basics}.
+% \item[Rotation] (Including picture environment.) Sections \ref{Arithmetic},
+% \ref{Rotation:prelim}, \ref{Rotation:main} and \ref{Pictures}. Requires also
+% {\bf Basics}.
+% \end{description}
+%
+
+% \section{Preliminaries\label{Prelim}}
+%
+% Check whether file has been loaded already.
+% \begin{macrocode}
+\csname PSTricksLoaded\endcsname
+\let\PSTricksLoaded\endinput
+% \end{macrocode}
+%
+% Take care of the catcode of "@":
+% \begin{macrocode}
+\edef\PstAtCode{\the\catcode`\@}
+\catcode`\@=11\relax
+% \end{macrocode}
+%
+% Here are some hacks borrowed from \LaTeX{}, which are defined if \LaTeX{} is
+% not being used.
+%
+% \begin{macrocode}
+\expandafter\ifx\csname @latexerr\endcsname\relax
+ \long\def\@ifundefined#1#2#3{\expandafter\ifx\csname
+ #1\endcsname\relax#2\else#3\fi}
+ \def\@namedef#1{\expandafter\def\csname #1\endcsname}
+ \def\@nameuse#1{\csname #1\endcsname}
+ \def\@eha{%
+ Your command was ignored.^^J
+ Type \space I <command> <return> \space to replace
+ it with another command,^^J
+ or \space <return> \space to continue without it.}
+ \def\@spaces{\space\space\space\space}
+ \def\typeout#1{\immediate\write\@unused{#1}}
+ \alloc@7\write\chardef\sixt@@n\@unused
+ \def\@empty{}
+ \def\@gobble#1{}
+ \def\@nnil{\@nil}
+ \def\@ifnextchar#1#2#3{%
+ \let\@tempe#1\def\@tempa{#2}\def\@tempb{#3}\futurelet\@tempc\@ifnch}
+ \def\@ifnch{%
+ \ifx\@tempc\@sptoken
+ \let\@tempd\@xifnch
+ \else
+ \ifx\@tempc\@tempe \let\@tempd\@tempa \else \let\@tempd\@tempb \fi
+ \fi
+ \@tempd}
+ \begingroup
+ \def\:{\global\let\@sptoken= } \:
+ \def\:{\@xifnch} \expandafter\gdef\: {\futurelet\@tempc\@ifnch}
+ \endgroup
+\fi
+% \end{macrocode}
+%
+% Announce that the file is being loaded:
+% \begin{macrocode}
+\typeout{`PSTricks' v\fileversion\space\space <\filedate> (tvz)}
+% \end{macrocode}
+%
+%
+% \section{Error messages}
+%
+% \begin{macro}{\@pstrickserr}
+% "\@pstrickserr" is analogous to "\@latexerr".
+% \begin{macrocode}
+\def\@pstrickserr#1#2{%
+ \begingroup
+ \newlinechar`\^^J
+ \edef\pst@tempc{#2}%
+ \expandafter\errhelp\expandafter{\pst@tempc}%
+ \typeout{%
+ PSTricks error. \space See User's Guide for further information.^^J
+ \@spaces\@spaces\@spaces\@spaces
+ Type \space H <return> \space for immediate help.}%
+ \errmessage{#1}%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@ehpa,\@ehpb,\@ehpc}
+% Here are some extra "\errhelp" message:
+% \begin{macrocode}
+\def\@ehpa{%
+ Your command was ignored. Default value substituted.^^J
+ Type \space <return> \space to procede.}
+\def\@ehpb{%
+ Your command was ignored. Will recover best I can.^^J
+ Type \space <return> \space to procede.}
+\def\@ehpc{%
+ You better fix this before proceding.^^J
+ See the PSTricks User's Guide or ask your system administrator for help.^^J
+ Type \space X <return> \space to quit.}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@misplaced}
+% \begin{macrocode}
+\def\pst@misplaced#1{\@pstrickserr{Misplaced \string#1 command}\@ehpb}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Scratch registers}
+%
+% \begin{macrocode}
+\newdimen\pst@dima
+\newdimen\pst@dimb
+\newdimen\pst@dimc
+\newdimen\pst@dimd
+\newdimen\pst@dimg
+\newdimen\pst@dimh
+\newbox\pst@hbox
+\newbox\pst@boxg
+\newcount\pst@cnta
+\newcount\pst@cntb
+\newcount\pst@cntc
+\newcount\pst@cntd
+\newcount\pst@cntg
+\newcount\pst@cnth
+\newif\if@pst
+% \end{macrocode}
+%
+%
+% \section{Useful hacks}
+%
+% \begin{macro}{\pst@ifstar,\if@star}
+% \begin{macrocode}
+\newif\if@star
+\def\pst@ifstar#1{%
+ \@ifnextchar*{\@startrue\def\next*{#1}\next}{\@starfalse#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@expandafter}
+% \begin{macrocode}
+\def\pst@expandafter#1#2{%
+ \def\next{#1}%
+ \edef\@tempa{#2}%
+ \ifx\@tempa\@empty
+ \@pstrickserr{Unexpected empty argument!}\@ehpb
+ \def\@tempa{\@empty}%
+ \fi
+ \expandafter\next\@tempa}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Arithmetic}
+%
+% \begin{macro}{\pst@dimtonum,\pst@@dimtonum}
+% This macro strips the value of "#1", a dimension register, of the "pt", and
+% assigns the result to "#2", a command sequence. This is used for arithmetic
+% and for converting \TeX\ dimensions to PostScript.
+% \begin{macrocode}
+\def\pst@dimtonum#1#2{\edef#2{\pst@@dimtonum#1}}
+\def\pst@@dimtonum#1{\expandafter\pst@@@dimtonum\the#1}
+{\catcode`\p=12 \catcode`\t=12 \global\@namedef{pst@@@dimtonum}#1pt{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@pyth}
+% This is a piecewise-linear approximation to $("#1"^2+"#2"^2)^(1/2)$. The
+% answer is assigned to "#3". All arguments should be dimension registers.
+% \begin{macrocode}
+\def\pst@pyth#1#2#3{%
+ \ifdim#1>#2\pst@@pyth#1#2#3\else\pst@@pyth#2#1#3\fi}
+\def\pst@@pyth#1#2#3{%
+ \ifdim4#1>9#2%
+ #3=#1\advance#3 .2122#2%
+ \else
+ #3=.8384#1\advance#3 .5758#2%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@divide}
+% This computes "#3"="#1"/"#2" reasonably quickly. "#1" and "#2" should be
+% dimensions, and "#3" should be a command sequence.
+% \begin{macrocode}
+\def\pst@divide#1#2#3{%
+ \begingroup
+ \pst@dimg=#1\relax\pst@dimh=#2\relax
+ \pst@cnta=\pst@dimg
+ \pst@cntb=1073741824
+ \pst@cntc=65536
+ \def\pst@tempa{\fi\ifnum}%
+ \loop\ifnum\pst@cnta<\pst@cntb
+ \pst@tempa\pst@cntc>\@ne
+ \multiply\pst@cnta2\divide\pst@cntc2
+ \repeat
+ \divide\pst@dimh\pst@cntc
+ \divide\pst@cnta\pst@dimh
+ \global\pst@dimg\number\pst@cnta sp
+ \endgroup
+ \pst@dimtonum\pst@dimg#3}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Configuration file\label{Config}}
+%
+% \begin{macro}{\pst@configerr}
+% \begin{macrocode}
+\def\pst@configerr#1{%
+ \@pstrickserr{\string#1 not defined in pstricks.con}\@ehpc}
+% \end{macrocode}
+% \end{macro}
+%
+% % \begin{macrocode}
+\def\pstVerb#1{\pst@configerr\pstVerb}
+\def\pstverb#1{\pst@configerr\pstverb}
+\def\pstverbscale{\pst@configerr\pstverbscale}
+\def\pstrotate{\pst@configerr\pstrotate}
+\def\pstheader#1{\pst@configerr\pstheader}
+\def\pstdriver{\pst@configerr\pstdriver}
+\@ifundefined{pstcustomize}%
+ {\def\pstcustomize{\endinput\let\pstcustomize\relax}}{}
+\input pstricks.con
+% \end{macrocode}
+%
+% \begin{macro}{\PSTricksOff}
+% \begin{macrocode}
+\newif\ifPSTricks
+\PSTrickstrue
+\def\PSTricksOff{%
+ \def\pstheader##1{}%
+ \def\pstverb##1{}%
+ \def\pstVerb##1{}%
+ \PSTricksfalse}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{PostScript header file\label{Header}}
+%
+% \begin{macro}{\pst@def,\pst@ATH,\pst@useheader}
+% There are three ways to use PSTricks:
+% \begin{enumerate}
+% \item Use "pstricks.doc" directly. No header file is used.
+% \item Use "\pst-make.tex" to generate a stripped input file for use without
+% a header.
+% \item Use "\pst-make.tex" to generate a header and a stripped input file for
+% use with the header.
+% \end{enumerate}
+% PSTricks has been optimized for use with a header file (and the difference
+% is speed and memory is very significant), but the flexible system described
+% above makes it easier to maintain the code and allows one to use PSTricks
+% with a DVI-to-PS driver that does not support header files.
+%
+% The following commands should be used in this ".doc" file for PostScript
+% macros and other goodies related to the header file. Their behavior for each
+% of the three cases list above is given below. These commands should always
+% come {\em at the beginning of the line}, and should not inside conditionals.
+%
+% \begin{itemize}
+%
+% \item "\pst@def{foo}<bar>"
+% \begin{enumerate}
+% \item "\tx@foo" is defined to be "bar".
+% \item Writes
+% \begin{LVerbatim}
+% \def\tx@foo{bar}
+% \end{LVerbatim}
+% to "pstricks.tex".
+% \item Writes
+% \begin{LVerbatim}
+% /foo { bar } def
+% \end{LVerbatim}
+% to "pstricks.pro" and
+% \begin{LVerbatim}
+% \def\tx@foo{foo}
+% \end{LVerbatim}
+% to "pstricks.tex".
+% \end{enumerate}
+%
+% \item "\pst@ATH<foo>"
+% \begin{enumerate}
+% \item Gobbles "foo".
+% \item Ignores line.
+% \item Writes "foo" to "pstricks.pro".
+% \end{enumerate}
+% Note: "\pst@ATH" must come at the beginning of the line.
+%
+% \item "\ifx\pst@useheader\iftrue foo \else bar \fi"
+% \begin{enumerate}
+% \item Ignores "foo" and includes "bar".
+% \item Ignores "foo" and processes "bar".
+% \item Processes "foo" and ignores "bar".
+% \end{enumerate}
+% Note: "\ifx\pst@useheader\iftrue", "\else" and "\fi" must each be on their
+% own line.
+%
+% \end{itemize}
+%
+% "pst@make.tex" can be used to process other files at well, in the right
+% order.
+%
+% \begin{macrocode}
+\@ifundefined{pst@def}{\def\pst@def#1<#2>{\@namedef{tx@#1}{#2 }}}{}
+\@ifundefined{pst@ATH}{\def\pst@ATH<#1>{}}{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@dict}
+% The PostScript dictionary "tx@Dict" is set up in the header file, if one is
+% used. Otherwise, it is set up with each procedure that uses the dictionary,
+% if it is not currently defined.
+% \begin{macrocode}
+\pst@ATH<\% Version \fileversion, \filedate.>
+\pst@ATH<\% For use with \pstdriver.>
+\pst@ATH</tx@Dict 200 dict def tx@Dict begin>
+\pst@ATH</ADict 25 dict def>
+\pst@ATH</CM { matrix currentmatrix } bind def>
+\pst@ATH</SLW /setlinewidth load def>
+\pst@ATH</CLW /currentlinewidth load def>
+\pst@ATH</CP /currentpoint load def>
+\pst@ATH</ED { exch def } bind def>
+\pst@ATH</L /lineto load def>
+\pst@ATH</T /translate load def>
+\ifx\pst@useheader\iftrue
+ \pstheader{pstricks.pro}
+ \def\pst@dict{tx@Dict begin }
+ \def\pst@theheaders{pstricks.pro}
+\else
+ \def\pst@dict{%
+ /tx@Dict where
+ { pop tx@Dict begin}
+ { userdict begin
+ /tx@Dict 200 dict def
+ end
+ tx@Dict begin
+ /ADict 25 dict def
+ /CM { matrix currentmatrix } bind def
+ /SLW /setlinewidth load def
+ /CLW /currentlinewidth load def
+ /CP /currentpoint load def
+ /ED { exch def } bind def
+ /L /lineto load def }
+ ifelse }
+ \def\pst@theheaders{}%
+\fi
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@Verb}
+% \begin{macrocode}
+\def\pst@Verb#1{\pstVerb{\pst@dict #1 end}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{PostScript hacks}
+%
+%
+% \begin{macro}{\tx@Atan,\tx@Div}
+% These are variants of "atan", and "div", that recover when result is not
+% defined.
+% \begin{macrocode}
+\pst@def{Atan}</atan load stopped { pop pop 0 } if>
+\pst@def{Div}<dup 0 eq { pop } { div } ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@NET}
+% \begin{macrocode}
+\pst@def{NET}<neg exch neg exch T>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@Pyth}
+% $A$ $B$ "Pyth" $(A^2 + B^2)^{1/2}$
+% \begin{macrocode}
+\pst@def{Pyth}<dup mul exch dup mul add sqrt>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@PtoC}
+% Polar to Cartesian:
+% \begin{LVerbatim}
+% <r> <a> PtoC <x> <y>
+% \end{LVerbatim}
+% \begin{macrocode}
+\pst@def{PtoC}<2 copy cos mul 3 1 roll sin mul>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@PathLength}
+% "PathLength" is taken from the Blue Book. It leaves on the stack the length
+% of the current path.
+% \begin{macrocode}
+\pst@def{PathLength@}<%
+ /z z y y1 sub x x1 sub \tx@Pyth add def
+ /y1 y def /x1 x def>
+\pst@def{PathLength}<%
+ flattenpath /z 0 def
+ { /y1 ED /x1 ED /y2 y1 def /x2 x1 def } % moveto
+ { /y ED /x ED \tx@PathLength@ } % lineto
+ {} % curveto; ignore because of flattenpath.
+ { /y y2 def /x x2 def \tx@PathLength@ } % closepath
+ pathforall z>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Converting \TeX\ things to PostScript}
+%
+% \begin{macro}{\pst@number,\tx@STP,\tx@STV}
+% \begin{itemize}
+% \item PSTricks' PostScript unit is 1pt, rather than 1bp, because this is
+% more efficient.
+% \item "\pst@number{<dimen register>}" converts <dimen> to PostScript, in
+% points (pt).
+% \item "\tx@STP" scales the DVI-to-PS driver's "\pstverb" environment to
+% points (pt).
+% \item "\tx@STV" scales the DVI-to-PS drivers's ungrouped PostScript
+% "\special" environment ("\pstVerb") to points (pt).
+% \end{itemize}
+% \begin{macrocode}
+\pst@dimg=\pstunit\relax
+\ifdim\pst@dimg=1bp
+ \def\pst@stp{.996264 dup scale}
+\else
+ \edef\pst@stp{1 \pst@@dimtonum\pst@dimg\space div dup scale}
+\fi
+\pst@def{STP}<\pst@stp>
+\pst@def{STV}<\pstverbscale\space\tx@STP>
+\def\pst@number#1{\pst@@dimtonum#1\space}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@checknum}
+% The first argument of "\pst@checknum" should be a number, and the second
+% argument is a command. There are three possible outcomes:
+% \begin{enumerate}
+% \item The number is suitable for PostScript consumption, the command is set
+% to the number, and "\pst@num" is set to "1" if the number is positive and to
+% "2" if the number is negative.
+% \item "\pst@checknum" detects that the number is not suitable for
+% PostScript; "\pst@num" is set to "0", an error is given, and the command is
+% defined to be {\tt 0 }.
+% \item The number is not suitable for PostScript consumption, but
+% "\pst@checknum" does not detect this. "\pst@num" is set to "1" or "2", and
+% the command is set to some number that {\em is} suitable for PostScript.
+% \end{enumerate}
+%
+% A trailing space is always added.
+%
+% "\pst@checknum" should generate no extraneous errors nor output, even if the
+% first argument is a bad number.
+%
+% This macro is probably pretty close to optimal for what it does, as many
+% variations have been tried.
+%
+% \begin{macrocode}
+\def\pst@checknum#1#2{%
+ \edef\next{#1}%
+ \ifx\next\@empty
+ \let\pst@num\z@
+ \else
+ \expandafter\pst@@checknum\next..\@nil
+ \fi
+ \ifnum\pst@num=\z@
+ \@pstrickserr{Bad number: `#1'. 0 substituted.}\@ehpa
+ \def#2{0 }%
+ \else
+ \edef#2{\ifnum\pst@num=2 -\fi\the\pst@cntg.%
+ \expandafter\@gobble\the\pst@cnth\space}%
+ \fi}
+\def\pst@@checknum{%
+ \@ifnextchar-%
+ {\def\pst@num{2}\expandafter\pst@@@checknum\@gobble}%
+ {\def\pst@num{1}\pst@@@checknum}}
+\def\pst@@@checknum#1.#2.#3\@nil{%
+ \afterassignment\pst@@@@checknum\pst@cntg=0#1\relax\@nil
+ \afterassignment\pst@@@@checknum\pst@cnth=1#2\relax\@nil}
+\def\pst@@@@checknum#1\relax\@nil{%
+ \ifx\@nil#1\@nil\else\let\pst@num\z@\fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getnumii,\pst@getnumiii,\pst@getnumiv}
+% These are for processing comma-separated lists of numbers. They assign the
+% numbers to "\pst@tempg", "\pst@temph", etc. Use like
+% \begin{LVerbatim}
+% \pst@expandafter\pst@getnumiii{foo} {} {} {} {}\@ni
+% \end{LVerbatim}
+% If there are too few numbers, an error results. If there are too many, the
+% extra numbers are ignored.
+% \begin{macrocode}
+\def\pst@getnumii#1 #2 #3\@nil{%
+ \pst@checknum{#1}\pst@tempg
+ \pst@checknum{#2}\pst@temph}
+\def\pst@getnumiii#1 #2 #3 #4\@nil{%
+ \pst@checknum{#1}\pst@tempg
+ \pst@checknum{#2}\pst@temph
+ \pst@checknum{#3}\pst@tempi}
+\def\pst@getnumiv#1 #2 #3 #4 #5\@nil{%
+ \pst@checknum{#1}\pst@tempg
+ \pst@checknum{#2}\pst@temph
+ \pst@checknum{#3}\pst@tempi
+ \pst@checknum{#4}\pst@tempj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getdimnum}
+% Like "\pst@getnumii", but first item is a dimension and second is a number.
+% \begin{macrocode}
+\def\pst@getdimnum#1 #2 #3\@nil{%
+ \pssetlength\pst@dimg{#1}%
+ \pst@checknum{#2}\pst@tempg}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getscale}
+% "\pst@getscale" can have one or two numbers in its first argument.
+% \begin{macrocode}
+\def\pst@getscale#1#2{%
+ \pst@expandafter\pst@getnumii{#1 #1} {} {} {}\@nil
+ \edef#2{\pst@tempg\space \pst@temph\space scale }%
+ \ifdim\pst@tempg\p@=\z@
+ \@pstrickserr{Bad scaling argument `#1'}\@ehpa
+ \def#2{}%
+ \else
+ \ifdim\pst@temph\p@=\z@
+ \@pstrickserr{Bad scaling argument}\@ehpa
+ \def#2{}%
+ \else
+ \ifdim\pst@tempg\p@=\p@ \ifdim\pst@temph\p@=\p@ \def#2{}\fi\fi
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getint}
+% \begin{macrocode}
+\def\pst@getint#1#2{%
+ \pst@cntg=#1\relax
+ \edef#2{\the\pst@cntg\space}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pslbrace,\psrbrace}
+% When balanced braces are used, they work without problems in "\special"'s.
+% "\pslbrace" and "\psrbrace" let you use unbalanced braces.
+% \begin{macrocode}
+\begingroup
+ \catcode`\{=12
+ \catcode`\}=12
+ \catcode`\[=1
+ \catcode`\]=2
+ \gdef\pslbrace[{ ]
+ \gdef\psrbrace[} ]
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Colors\label{Colors}}
+%
+% \begin{macro}{\@newcolor}
+% "\@newcolor{<color>}{<spec>}", where <color> is a name and <spec> is the
+% associated PostScript color specification , sets
+% \begin{itemize}
+% \item "\<color>" to "\pst@color{<spec>}", and
+% \item "\color@<color>" to <spec>.
+% \end{itemize}
+% Then "\<color>" can be used by the user to color text, etc., and
+% "\color@<color>" is used by PSTricks graphics objects to find the
+% specification for <color>.
+% \begin{macrocode}
+\def\@newcolor#1#2{%
+ \expandafter\edef\csname #1\endcsname{\noexpand\pst@color{#2}}%
+ \expandafter\edef\csname color@#1\endcsname{#2}%
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@color,\pst@endcolor}
+% The argument of "\pst@color" should be a PostScript command for setting the
+% color; e.g., "0 setgray". It saves the command in "\pst@currentcolor", and
+% then switches to "\pst@currentcolor" at the end of the current group. The
+% color changes do not extend across pages, although this capability could be
+% written into the output routines (so that "\pst@currentcolor" is set at the
+% beginning of the page, and headers and footers begin with "\black", etc.).
+% Moving boxes cause problems, but there is no way around this until \TeX{}
+% supports color internally.
+% \begin{macrocode}
+\def\pst@color#1{%
+ \def\pst@currentcolor{#1}\pstVerb{#1}\aftergroup\pst@endcolor}
+\def\pst@endcolor{\pstVerb{\pst@currentcolor}}
+\def\pst@currentcolor{0 setgray}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\altcolormode,\pst@grestore}
+% The color macros defined above can conflict with other color macros.
+% "\altcolormode" sets up a different scheme that uses "gsave" and "grestore"
+% to reset colors. This may reduce the likelihood of such conflict. It also
+% makes moving boxes less of a problem, as long as the color command is itself
+% grouped within the box. However, if the scope of a color command extends
+% across pages in a \TeX{} input file, unmatched "gsave"'s and "grestore"'s
+% will be left on pages, wreaking havok on the output. "\pst@grestore" is
+% defined to do various things that makes using "grestore" more robust.
+% \begin{macrocode}
+\def\altcolormode{%
+ \def\pst@color##1{%
+ \pstVerb{gsave ##1}\aftergroup\pst@endcolor}%
+ \def\pst@endcolor{\pstVerb{\pst@grestore}}}
+\def\pst@grestore{%
+ currentpoint
+ matrix currentmatrix
+ currentfont
+ grestore
+ setfont
+ setmatrix
+ moveto}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@usecolor}
+% This looks up the color specification.
+% \begin{macrocode}
+\def\pst@usecolor#1{\csname color@#1\endcsname\space}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newgray}
+% "\newgray" uses PostScript's "setgray" operator.
+% \begin{macrocode}
+\def\newgray#1#2{%
+ \pst@checknum{#2}\pst@tempg
+ \@newcolor{#1}{\pst@tempg setgray}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newrgbcolor}
+% This works like "\newgray", but the color specification should consist of 3
+% numbers rather than just 1, and the "setrgbcolor" operator is used.
+% \begin{macrocode}
+\def\newrgbcolor#1#2{%
+ \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
+ \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi setrgbcolor}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newhsbcolor}
+% This is just like "\newrgbcolor", but the "sethsbcolor" operator is used.
+% \begin{macrocode}
+\def\newhsbcolor#1#2{%
+ \pst@expandafter\pst@getnumiii{#2} {} {} {} {}\@nil
+ \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi sethsbcolor}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newcmykcolor}
+% This is like "\newrgbcolor", the color specification consists of 4 numbers
+% and the "setcmykcolor" operator is used.
+% \begin{macrocode}
+\def\newcmykcolor#1#2{%
+ \pst@expandafter\pst@getnumiv{#2} {} {} {} {} {}\@nil
+ \@newcolor{#1}{\pst@tempg \pst@temph \pst@tempi \pst@tempj setcmykcolor}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\black,\darkgray,\gray,\lightgray,\white}
+% Here are some default gray definitions:
+% \begin{macrocode}
+\newgray{black}{0}
+\newgray{darkgray}{.25}
+\newgray{gray}{.5}
+\newgray{lightgray}{.75}
+\newgray{white}{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\red,\green,\blue,\yellow,\cyan,\magenta}
+% And some default rgb color definitions.
+% \begin{macrocode}
+\newrgbcolor{red}{1 0 0}
+\newrgbcolor{green}{0 1 0}
+\newrgbcolor{blue}{0 0 1}
+\newrgbcolor{yellow}{1 1 0}
+\newrgbcolor{cyan}{0 1 1}
+\newrgbcolor{magenta}{1 0 1}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Setting graphics parameters\label{Parameters}}
+%
+% \begin{macro}{\psset}
+% For each <parameter>"="<value> pair in its argument, "\psset" invokes
+% \begin{LVerbatim}
+% \psset@<parameter>{<value>}
+% \end{LVerbatim}
+% The value is processed and typically stored in "\ps<parameters>" if the
+% value is user-accessible and "\psk@<parameter>" if not. "\psset" ignores
+% spaces that follow the comma that separates key-value pairs.
+%
+% When initializing <parameter> in this file, preferable use
+% \begin{LVerbatim}
+% \psset@<parameter>{<value>}
+% \end{LVerbatim}
+% so that default values can be easily extracted for the {\em User's Guide}.
+% \begin{macrocode}
+\def\psset#1{\@psset#1,\@nil\ignorespaces}
+\def\@psset#1,{%
+ \@@psset#1==\@nil
+ \@ifnextchar\@nil{\@gobble}{\@psset}}
+\def\@@psset#1=#2=#3\@nil{%
+ \@ifundefined{psset@#1}%
+ {\@pstrickserr{Graphics parameter `#1' not defined.}\@ehpa}%
+ {\@nameuse{psset@#1}{#2}}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newpsstyle}
+% \begin{macrocode}
+\def\psset@style#1{%
+ \@ifundefined{pscs@#1}%
+ {\@pstrickserr{Custom style `#1' undefined}\@ehpa}%
+ {\@nameuse{pscs@#1}}}
+\def\newpsstyle#1#2{\@namedef{pscs@#1}{\psset{#2}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\@none}
+% Use to check when a parameter value is "none".
+% \begin{macrocode}
+\def\@none{none}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getcolor}
+% This is used by various graphics parameters that are colors.
+% \begin{macrocode}
+\def\pst@getcolor#1#2{%
+ \@ifundefined{color@#1}%
+ {\@pstrickserr{Color `#1' not defined}\@eha}%
+ {\edef#2{#1}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Dimensions}
+%
+% \begin{macro}{\psunit,\psxunit,\psyunit}
+% \begin{macrocode}
+\newdimen\psunit \psunit 1cm
+\newdimen\psxunit \psxunit 1cm
+\newdimen\psyunit \psyunit 1cm
+\let\psrunit\psunit
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pssetlength,\psaddtolength,\pssetxlength,\pssetylength}
+% \begin{macrocode}
+\def\pstunit@off{\let\@psunit\ignorespaces\ignorespaces}
+\def\pssetlength#1#2{%
+ \let\@psunit\psunit
+ \afterassignment\pstunit@off
+ #1 #2\@psunit}
+\def\psaddtolength#1#2{%
+ \let\@psunit\psunit
+ \afterassignment\pstunit@off
+ \advance#1 #2\@psunit}
+\def\pssetxlength#1#2{%
+ \let\@psunit\psxunit
+ \afterassignment\pstunit@off
+ #1 #2\@psunit}
+\def\pssetylength#1#2{%
+ \let\@psunit\psyunit
+ \afterassignment\pstunit@off
+ #1 #2\@psunit}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@unit,\psset@xunit,\psset@yunit}
+% \begin{macrocode}
+\def\psset@unit#1{%
+ \pssetlength\psunit{#1}%
+ \psxunit=\psunit
+ \psyunit=\psunit}
+\def\psset@runit#1{\pssetlength\psrunit{#1}}
+\def\psset@xunit#1{\pssetxlength\psxunit{#1}}
+\def\psset@yunit#1{\pssetylength\psyunit{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getlength,pst@@getlength}
+% "#1" is a \TeX\ dimensions. "\pst@getlength" sets "#2" to the PostScript
+% code for "#1", and "\pst@@getlength" set "#2" to the \TeX\ code for "#1".
+% \begin{macrocode}
+\def\pst@getlength#1#2{%
+ \pssetlength\pst@dimg{#1}%
+ \edef#2{\pst@number\pst@dimg}}
+\def\pst@@getlength#1#2{%
+ \pssetlength\pst@dimg{#1}%
+ \edef#2{\number\pst@dimg sp}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Normal Coordinates and angles}
+%
+% \begin{macro}{\pst@getcoor,\pst@coor}
+% "\pst@@getcoor" should be defined to read a coordinate and convert it to
+% PostScript, assigning the result to "\pst@coor" (including the trailing
+% space).
+%
+% "\pst@getcoor" invokes "\pst@@getcoor" and then sets its second argument to
+% "\pst@coor".
+% \begin{macrocode}
+\def\pst@getcoor#1#2{\pst@@getcoor{#1}\let#2\pst@coor}
+\def\pst@coor{0 0 }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getcoors,\pst@coors}
+% "\pst@getcoors" reads coordinates until there are none left, adding them
+% {\em in reverse order} to "\pst@coors".
+% \begin{macrocode}
+\def\pst@getcoors#1#2{%
+ \def\pst@aftercoors{\addto@pscode{#1 \pst@coors }#2}%
+ \def\pst@coors{}%
+ \pst@@getcoors}
+\def\pst@@getcoors(#1){%
+ \pst@@getcoor{#1}%
+ \edef\pst@coors{\pst@coor\pst@coors}%
+ \@ifnextchar({\pst@@getcoors}{\pst@aftercoors}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getangle,\pst@angle}
+% \n\pst@@getangle\ should be defined to read an angle and convert it to
+% PostScript, assigning the result to \n\pst@angle\ (including the trailing
+% space).
+%
+% \n\pst@getangle\ invokes \n\pst@@getangle\ and then sets its second argument
+% to \n\pst@angle.
+% \begin{macrocode}
+\def\pst@getangle#1#2{\pst@@getangle{#1}\let#2\pst@angle}
+\def\pst@angle{0 }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{getcoor@c,\NormalCoor}
+% By default, coordinates are read as Cartesian coordinates by
+% "\cartesian@coor".
+%
+% Angles are read as numbers, scaled by \n\pst@angleunit.
+%
+% "\NormalCoor" sets these two defaults, and also defines the translation for
+% the put commands to be done by \TeX\ using Cartesian coordinates.
+% \begin{macrocode}
+\def\cartesian@coor#1,#2,#3\@nil{%
+ \pssetxlength\pst@dimg{#1}%
+ \pssetylength\pst@dimh{#2}%
+ \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}
+\def\NormalCoor{%
+ \def\pst@@getcoor##1{\pst@expandafter\cartesian@coor{##1},\relax,\@nil}%
+ \def\pst@@getangle##1{%
+ \pst@checknum{##1}\pst@angle
+ \edef\pst@angle{\pst@angle \pst@angleunit}}%
+ \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@cartesian}}
+\NormalCoor
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@angleunit,\degrees,\radians}
+% "\degrees" sets "\pst@angleunit" to the PostScript code for scaling the
+% angle, including the trailing space.
+% \begin{macrocode}
+\def\degrees{\@ifnextchar[{\@degrees}{\def\pst@angleunit{}}}
+\def\@degrees[#1]{%
+ \pst@checknum{#1}\pst@tempg
+ \edef\pst@angleunit{360 \pst@tempg div mul }%
+ \ignorespaces}
+\def\radians{\def\pst@angleunit{57.2956 mul }}
+\def\pst@angleunit{}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Special coordinates and angles}
+%
+% This is a tedious but useful.
+%
+% \begin{macro}{\SpecialCoor}
+% \begin{macrocode}
+\def\SpecialCoor{%
+ \def\pst@@getcoor##1{\pst@expandafter\special@coor{##1}||\@nil}%
+ \def\pst@@getangle##1{\pst@expandafter\special@angle{##1}\@empty)\@nil}%
+ \def\psput@##1{\pst@@getcoor{##1}\leavevmode\psput@special}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\specialcoor}
+% \begin{macrocode}
+\def\special@coor#1|#2|#3\@nil{%
+ \ifx#3|\relax
+ \mixed@coor{#1}{#2}%
+ \else
+ \special@@coor#1;;\@nil
+ \fi}
+\def\special@@coor#1{%
+ \ifcat#1a\relax
+ \def\next{\node@coor#1}%
+ \else
+ \ifx#1[\relax
+ \def\next{\Node@coor[}%
+ \else
+ \ifx#1!\relax
+ \def\next{\raw@coor}%
+ \else
+ \def\next{\special@@@coor#1}%
+ \fi
+ \fi
+ \fi
+ \next}
+\def\special@@@coor#1;#2;#3\@nil{%
+ \ifx#3;\relax
+ \polar@coor{#1}{#2}%
+ \else
+ \cartesian@coor#1,\relax,\@nil
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\mixed@coor}
+% This allows mixing of coordinate types with \n\SpecialCoor.
+% \begin{macrocode}
+\def\mixed@coor#1#2{%
+ \begingroup
+ \specialcoor@ii#1;;\@nil
+ \let\pst@tempa\pst@coor
+ \specialcoor@ii#2;;\@nil
+ \xdef\pst@tempg{\pst@tempa pop \pst@coor exch pop }%
+ \endgroup
+ \let\pst@coor\pst@tempg}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\polar@coor}
+% For polar coordinates
+% \begin{macrocode}
+\def\polar@coor#1#2{%
+ \pssetlength\pst@dimg{#1}%
+ \pst@@getangle{#2}%
+ \edef\pst@coor{\pst@number\pst@dimg \pst@angle \tx@PtoC}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\raw@coor}
+% For raw PostScript.
+% \begin{macrocode}
+\def\raw@coor#1;#2\@nil{%
+ \edef\pst@coor{%
+ #1 \pst@number\psyunit mul exch \pst@number\psxunit mul exch }}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\node@coor,\Node@coor}
+% These are defined in "pst-node.tex".
+% \begin{macrocode}
+\def\node@coor#1\@nil{%
+ \@pstrickserr{You must load `pst-node.tex' to use node coordinates.}\@ehps
+ \def\pst@coor{0 0 }}
+\def\Node@coor{\node@coor}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\special@angle}
+% \begin{macrocode}
+\def\special@angle#1#2)#3\@nil{%
+ \ifx#1!\relax
+ \edef\pst@angle{#2 \pst@angleunit}%
+ \else
+ \ifx#1(\relax
+ \pst@@getcoor{#2}%
+ \edef\pst@angle{\pst@coor exch \tx@Atan}%
+ \else
+ \pst@checknum{#1#2}\pst@angle
+ \edef\pst@angle{\pst@angle \pst@angleunit}%
+ \fi
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\Cartesian,\Polar}
+% These are obsolete.
+% \begin{macrocode}
+\def\Cartesian{%
+ \def\cartesian@coor##1,##2,##3\@nil{%
+ \pssetxlength\pst@dimg{##1}%
+ \pssetylength\pst@dimh{##2}%
+ \edef\pst@coor{\pst@number\pst@dimg \pst@number\pst@dimh}}%
+ \@ifnextchar({\Cartesian@}{}}
+\def\Cartesian@(#1,#2){%
+ \pssetxlength\psxunit{#1}%
+ \pssetylength\psyunit{#2}%
+ \ignorespaces}
+\def\Polar{%
+ \def\psput@cartesian{\psput@special}%
+ \def\cartesian@coor##1,##2,##3\@nil{\polar@coor{##1}{##2}}}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Basic graphics parameters}
+%
+%
+% \begin{macro}{\psset@origin,\psk@origin}
+% \begin{macrocode}
+\def\psset@origin#1{%
+ \pst@@getcoor{#1}%
+ \edef\psk@origin{\pst@coor \tx@NET }}
+\def\psk@origin{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@swapaxes,\ifpsswapaxes}
+% \begin{macrocode}
+\newif\ifswapaxes
+\def\psset@swapaxes#1{%
+ \@nameuse{@pst#1}%
+ \if@pst
+ \def\psk@swapaxes{-90 rotate -1 1 scale }%
+ \else
+ \def\psk@swapaxes{}%
+ \fi}
+\psset@swapaxes{false}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@showpoints,\ifshowpoints}
+% \begin{macrocode}
+\newif\ifshowpoints
+\def\psset@showpoints#1{\@nameuse{showpoints#1}}
+\psset@showpoints{false}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@border,\psk@border}
+% \begin{macrocode}
+\let\pst@setrepeatarrowsflag\relax
+\def\psset@border#1{%
+ \pst@getlength{#1}\psk@border
+ \pst@setrepeatarrowsflag}
+\psset@border{0pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@bordercolor,\psbordercolor}
+% \begin{macrocode}
+\def\psset@bordercolor#1{\pst@getcolor{#1}\psbordercolor}
+\psset@bordercolor{white}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@doubleline,\ifpsdoubleline}
+% \begin{macrocode}
+\newif\ifpsdoubleline
+\def\psset@doubleline#1{%
+ \@nameuse{psdoubleline#1}%
+ \pst@setrepeatarrowsflag}
+\psset@doubleline{false}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@doublesep,\psdoublesep}
+% \begin{macrocode}
+\def\psset@doublesep#1{\def\psdoublesep{#1}}
+\psset@doublesep{1.25\pslinewidth}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@doublecolor,\psdoublecolor}
+% \begin{macrocode}
+\def\psset@doublecolor#1{\pst@getcolor{#1}\psdoublecolor}
+\psset@doublecolor{white}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@shadow,\ifpsshadow}
+% \begin{macrocode}
+\newif\ifpsshadow
+\def\psset@shadow#1{%
+ \@nameuse{psshadow#1}%
+ \pst@setrepeatarrowsflag}
+\psset@shadow{false}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@shadowsize,\psk@shadowsize}
+% \begin{macrocode}
+\def\psset@shadowsize#1{\pst@getlength{#1}\psk@shadowsize}
+\psset@shadowsize{3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@shadowangle,\psk@shadowangle}
+% \begin{macrocode}
+\def\psset@shadowangle#1{\pst@getangle{#1}\psk@shadowangle}
+\psset@shadowangle{-45}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@shadowcolor,\psshadowcolor}
+% \begin{macrocode}
+\def\psset@shadowcolor#1{\pst@getcolor{#1}\psshadowcolor}
+\psset@shadowcolor{darkgray}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@setrepeatarrowsflag}
+% \begin{macrocode}
+\def\pst@repeatarrowsflag{\z@}
+\def\pst@setrepeatarrowsflag{%
+ \edef\pst@repeatarrowsflag{%
+ \ifdim\psk@border\p@>\z@ 1\else\ifpsdoubleline 1\else
+ \ifpsshadow 1\else \z@\fi\fi\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \section{Line styles\label{Linestyles}}
+%
+% For each "linestyle" <style>, the command "\psls@<style>" should be the
+% PostScript code that strokes the path. The style can assume that the
+% PostScript environment has linewidth equal to \n\pslinewidth\ and color
+% equal to \n\pslinecolor.
+%
+% \begin{macro}{\pst@linetype}
+% Macros that draw lines should define "\pst@linetype" (not a count register)
+% to be:
+% \begin{description}
+% \item[1,2,$\ldots$] A closed path whose length should be divided by
+% "\pst@linetype" before fitting a pattern.
+% \item[0] A line that has nothing at the tips.
+% \item[-1] A line with an arrow or something at the end.
+% \item[-2] A line with an arrow or something at the beginning.
+% \item[-3] A line with an arrow or something at each end.
+% \end{description}
+% This information is used by the line styles that draw dashed and dotted
+% lines in order to figure out how to adjust the patterns.
+% \end{macro}
+%
+% \begin{macro}{\psls@none}
+% \begin{macrocode}
+\def\psls@none{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@linewidth,\pslinewidth}
+% \begin{macrocode}
+\newdimen\pslinewidth
+\def\psset@linewidth#1{\pssetlength\pslinewidth{#1}}
+\psset@linewidth{.8pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@linecolor,\pslinecolor}
+% \begin{macrocode}
+\def\psset@linecolor#1{\pst@getcolor{#1}\pslinecolor}
+\psset@linecolor{black}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psls@solid}
+% \begin{macrocode}
+\def\psls@solid{0 setlinecap stroke }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@dash,\psk@dash}
+% "\psk@dash" is set to the PostScript code for the dash pattern (include the
+% trailing space).
+% \begin{macrocode}
+\def\psset@dash#1{%
+ \pst@expandafter\psset@@dash{#1} * * *\@nil
+ \edef\psk@dash{\pst@number\pst@dimg \pst@number\pst@dimh}}
+\def\psset@@dash#1 #2 #3\@nil{%
+ \pssetlength\pst@dimg{#1}%
+ \pssetlength\pst@dimh{#2}}
+\psset@dash{5pt 3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psls@dashed}
+% \begin{macrocode}
+\def\psls@dashed{\psk@dash \pst@linetype\space \tx@DashLine}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@DashLine}
+% Syntax:
+% \begin{Ex}
+% <dim1 dim2 linetype> "DashLine"
+% \end{Ex}
+% "DashLine" adjusts, and then sets, the dash pattern "[<dim1 dim2>]" so that
+% it fits evenly onto a path.
+% \begin{macrocode}
+\pst@def{DashLine}<%
+ % "a" is set to the length of first and last black segment, as fraction of
+ % usual black segment.
+ dup 0 gt
+ { /a .5 def \tx@PathLength exch div }
+ { pop /a 1 def \tx@PathLength }
+ ifelse
+ /b ED % Pattern should fit evenly in b
+ /x ED % Length of white segment.
+ /y ED % Length of black segment.
+ /z y x add def % Total length of dash pattern.
+ % If pattern is repeated n times, total length is (nz + 2(a-.5)y).
+ % Set length to b, solve for n, round, and leave on stack:
+ % n = round((b - 2(a-.5)y)/z)
+ b a .5 sub 2 mul y mul sub z \tx@Div round
+ % Adjust x and y by factor k so that
+ % (n(kz) + 2(a-.5)(ky)) = b.
+ % Solve for k and leave two copies on stack:
+ % k = b/(nz + 2(a-.5)y)
+ z mul a .5 sub 2 mul y mul add b exch \tx@Div dup
+ % Scale x and y, set dash, and stroke:
+ y mul /y ED x mul /x ED
+ % Make sure both x and y aren't zero:
+ x 0 eq y 0 eq and { /x 1 def /y 1 def } if
+ [ y x ] 1 a sub y mul setdash stroke>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dotsep}
+% \begin{macrocode}
+\def\psset@dotsep#1{\pst@getlength{#1}\psk@dotsep}
+\psset@dotsep{3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psls@dotted}
+% \begin{macrocode}
+\def\psls@dotted{\psk@dotsep \pst@linetype\space \tx@DotLine}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@DotLine}
+% Syntax:
+% \begin{Ex}
+% <dim linetype> "DotLine"
+% \end{Ex}
+% "DotLine" adjusts, and then sets, the dash pattern to produce a dotted line
+% with distance <dim> between dots so that it fits evenly onto a path. Dots
+% are produced by setting dash pattern with length of white segment equal to
+% distance from center of dot to center of dot, length of black segment equal
+% to 0, and "linecap" equal to 1.
+% \begin{macrocode}
+\pst@def{DotLine}<%
+ /b \tx@PathLength def % Path length.
+ /a ED % \pst@linetype.
+ /z ED % dotsep.
+ /y CLW def % linewidth (dot diameter).
+ /z y z add def % Total length of dash pattern.
+ % Set b to adjusted path length that pattern should be multiple of:
+ a 0 gt
+ % If closed, as many dots as spaces.
+ { /b b a div def }
+ { a 0 eq
+ % If open with no arrows, one more dot than space.
+ { /b b y sub def }
+ % If open one arrow, as many dots as spaces (do nothing)
+ % If open two arrows, one more space than dot.
+ { a -3 eq { /b b y add def } if }
+ ifelse }
+ ifelse
+ % Let n be number of times pattern is repeated:
+ % n = round(b/z)
+ % Adjust length of pattern so that it fits evenly in b:
+ % z = b/n = b/(round(b/z))
+ % z is length of white segment. Length of black segment is 0.
+ [ 0 b b z \tx@Div round \tx@Div dup 0 le { pop 1 } if ]
+ a 0 gt % setting dash pattern.
+ % Set offset to 0 if path is closed]
+ { 0 }
+ % Set offset to -(y/2) if open curve begins with arrow, (y/2) otherwise:
+ { y 2 div a -2 gt { neg } if }
+ ifelse
+ % Setting linecap to 1 produces the dots.
+ setdash 1 setlinecap stroke>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@linestyle}
+% \begin{macrocode}
+\def\psset@linestyle#1{%
+ \@ifundefined{psls@#1}%
+ {\@pstrickserr{Line style `#1' not defined}\@eha}%
+ {\edef\pslinestyle{#1}}}
+\psset@linestyle{solid}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Fill styles\label{Fillstyles}}
+%
+% For each "fillstyle" <style>, the command "\psfs@<style>" should be the
+% PostScript code that fills the region. The style should not assume anything
+% about the PostScript environment's "linewidth" or color.
+%
+% \begin{macro}{\psfs@none}
+% \begin{macrocode}
+\def\psfs@none{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@fillcolor,\psfillcolor}
+% \begin{macrocode}
+\def\psset@fillcolor#1{\pst@getcolor{#1}\psfillcolor}
+\psset@fillcolor{white}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psfs@solid}
+% \begin{macrocode}
+\def\psfs@solid{\pst@usecolor\psfillcolor fill }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{hatchwidth}
+% \begin{macrocode}
+\def\psset@hatchwidth#1{\pst@getlength{#1}\psk@hatchwidth}
+\psset@hatchwidth{.8pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{hatchsep}
+% \begin{macrocode}
+\def\psset@hatchsep#1{\pst@getlength{#1}\psk@hatchsep}
+\psset@hatchsep{4pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{hatchcolor}
+% \begin{macrocode}
+\def\psset@hatchcolor#1{\pst@getcolor{#1}\pshatchcolor}
+\psset@hatchcolor{black}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{hatchangle}
+% \begin{macrocode}
+\def\psset@hatchangle#1{\pst@getangle{#1}\psk@hatchangle}
+\psset@hatchangle{45}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psfs@hlines}
+% \begin{macrocode}
+\def\psfs@hlines{%
+ \psk@hatchangle rotate
+ \psk@hatchwidth SLW
+ \pst@usecolor\pshatchcolor
+ \psk@hatchsep \tx@LineFill}
+\@namedef{psfs@hlines*}{gsave \psfs@solid grestore \psfs@hlines}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@LineFill}
+% \begin{macrocode}
+\pst@def{LineFill}<%
+ abs CLW add /a ED % hatchsep
+ gsave
+ clip
+ pathbbox %leave llx,lly,urx,ury on stack
+ a \tx@Div ceiling /y2 ED % Number of top line to be drawn.
+ /x2 ED
+ a \tx@Div floor /y1 ED % Number of bottom line to be drawn
+ /x1 ED
+ /n y2 y1 sub 1 add cvi def % Number of lines.
+ /y1 a y1 mul def % y-coordinate of bottom line.
+ newpath 2 setlinecap
+ n
+ { currentstrokeadjust ==
+ x1 y1 moveto
+ x2 y1 L
+ stroke
+ /y1 y1 a add def }
+ repeat
+ grestore>
+\pst@def{LineFill}<%
+ abs CLW add /a ED % hatchsep
+ gsave
+ clip
+ pathbbox %leave llx,lly,urx,ury on stack
+ a \tx@Div ceiling /y2 ED % Number of top line to be drawn.
+ /x2 ED
+ a \tx@Div floor /y1 ED % Number of bottom line to be drawn
+ /x1 ED
+ /n y2 y1 sub 1 add cvi def % Number of lines.
+ /y1 a y1 mul def % y-coordinate of bottom line.
+ newpath 2 setlinecap
+ systemdict /currentstrokeadjust known % Level 2
+ { currentstrokeadjust }
+ { false }
+ ifelse
+ { /t { } def }
+ { /t {
+ transform
+ 0.25 sub round 0.25 add exch
+ 0.25 sub round 0.25 add exch
+ itransform
+ } bind def }
+ ifelse
+ n {
+ x1 y1 t moveto
+ x2 y1 t L
+ stroke
+ /y1 y1 a add def
+ } repeat
+ grestore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psfs@vlines}
+% \begin{macrocode}
+\def\psfs@vlines{%
+ 90 rotate
+ \psfs@hlines}
+\@namedef{psfs@vlines*}{gsave \psfs@solid grestore \psfs@vlines}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psfs@crosshatch}
+% \begin{macrocode}
+\def\psfs@crosshatch{gsave \psfs@hlines grestore \psfs@vlines}
+\@namedef{psfs@crosshatch*}{%
+ gsave \psfs@solid grestore
+ gsave \psfs@hlines grestore
+ \psfs@vlines}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{fillstyle}
+% \begin{macrocode}
+\def\psset@fillstyle#1{%
+ \@ifundefined{psfs@#1}%
+ {\@pstrickserr{Undefined fill style: `#1'}\@eha}%
+ {\edef\psfillstyle{#1}}}
+\psset@fillstyle{none}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Arrowheads and t-bars\label{Arrowheads}}
+%
+% It would be nice to use a font, with hinting.
+%
+% \begin{macro}{\psset@arrows,\psk@arrowA,\psk@arrowB}
+% "\if@pst" is used as a flag for errors.
+% \begin{macrocode}
+\def\psset@arrows#1{%
+ \begingroup
+ \pst@activearrows
+ \xdef\pst@tempg{#1}%
+ \endgroup
+ \expandafter\psset@@arrows\pst@tempg\@empty-\@empty\@nil
+ \if@pst\else
+ \@pstrickserr{Bad arrows specification: #1}\@ehpa
+ \fi}
+\def\psset@@arrows#1-#2\@empty#3\@nil{%
+ \@psttrue
+ \def\next##1,#1-##2,##3\@nil{\def\pst@tempg{##2}}%
+ \expandafter\next\pst@arrowtable,#1-#1,\@nil
+ \@ifundefined{psas@\pst@tempg}%
+ {\@pstfalse\def\psk@arrowA{}}%
+ {\let\psk@arrowA\pst@tempg}%
+ \@ifundefined{psas@#2}%
+ {\@pstfalse\def\psk@arrowB{}}%
+ {\def\psk@arrowB{#2}}}
+\def\psk@arrowA{}
+\def\psk@arrowB{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@arrowtable}
+% This is a translator for "arrowA". Add to it with "\edef", as in
+% \begin{LVerbatim}
+% \edef\pst@arrowtable{\pst@arrowtable,*o-o*}
+% \end{LVerbatim}
+% \begin{macrocode}
+\def\pst@arrowtable{,<->,<<->>,>-<,>>-<<,(-),[-]}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@activearrows}
+% This redefines certain characters in case they are active, before expanding
+% the "arrows" argument. Add to it with "\expandafter", as in
+% \begin{LVerbatim}
+% \begingroup
+% \catcode`\:=13
+% \expandafter\gdef\expandafter\pst@activearrows
+% \expandafter{\def:{\string:}}
+% \endgroup
+% \end{LVerbatim}
+% \begin{macrocode}
+\begingroup
+ \catcode`\<=13
+ \catcode`\>=13
+ \catcode`\|=13
+ \gdef\pst@activearrows{\def<{\string<}\def>{\string>}\def|{\string|}}
+\endgroup
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{BeginArrow,EndArrow}
+% For each arrow <arrow>, "\psas@<arrow>" should be PostScript code so that
+% \begin{LVerbatim}
+% <y2 x2 y1 x1> BeginArrow \psk@arrowscale \psas@<arrow> EndArrow
+% \end{LVerbatim}
+% \begin{itemize}
+% \item Draws an arrow with the tip at <x1 y1>, and
+% \item Leaves on the stack <y2 x2 x1' y1'>, where <x1' y1'> is the position
+% that a connecting line should start from.
+% \end{itemize}
+%
+% "BeginArrow" sets up an environment so that "\psas@<arrow>" only has to draw
+% an arrow pointing down and with the tip at "0 0" and , and leave the current
+% point where a connecting line should start from. "EndArrow" then restores
+% the original environment and translates the current point into the original
+% coordinate system.
+%
+% A special dictionary "ADict" is used with arrows so that scratch variables
+% will not conflict. The matrix is saved as "@mtrx" to indicate that the arrow
+% procedures should not change this. The same is true for "@x1", "@y1", "@x2",
+% "@y2" and "@angle", which are used by a patch of "BeginArrow" and "EndArrow"
+% that is required for some versions of Sun's NewsPrint (see "read-me.pst").
+% \begin{macrocode}
+\pst@def{BeginArrow}<%
+ ADict begin
+ /@mtrx CM def
+ gsave
+ 2 copy T
+ 2 index sub neg exch 3 index sub exch \tx@Atan
+ rotate
+ newpath>
+\pst@def{EndArrow}<@mtrx setmatrix CP grestore end>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{arrowscale}
+% \begin{macrocode}
+\def\psset@arrowscale#1{\pst@getscale{#1}\psk@arrowscale}
+\psset@arrowscale{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@arrowsize,\psk@arrowsize}
+% \begin{macrocode}
+\def\psset@arrowsize#1{%
+ \pst@expandafter\pst@getdimnum{#1} {} {} {}\@nil
+ \edef\psk@arrowsize{\pst@number\pst@dimg \pst@tempg}}
+\psset@arrowsize{2pt 3}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@arrowlength,\psk@arrowlength}
+% \begin{macrocode}
+\def\psset@arrowlength#1{\pst@checknum{#1}\psk@arrowlength}
+\psset@arrowlength{1.4}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@arrowinset,\psk@arrowinset}
+% \begin{macrocode}
+\def\psset@arrowinset#1{\pst@checknum{#1}\psk@arrowinset}%
+\psset@arrowinset{.4}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@Arrow}
+% Syntax:
+% \begin{LVerbatim}
+% <boolean> \psk@arrowinset \psk@arrowlength \psk@arrowsize Arrow
+% \end{LVerbatim}
+% <boolean> is "true" for reverse arrows and "false" for normal arrows.
+% \begin{macrocode}
+\pst@def{Arrow}<%
+ CLW mul add dup % width
+ 2 div /w ED % Half width
+ mul dup /h ED % Height
+ mul /a ED % Inset
+ { 0 h T 1 -1 scale } if % For reverse arrows
+ w neg h moveto
+ 0 0 L
+ w h L
+ w neg a neg rlineto
+ gsave fill grestore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@>}
+% \begin{macrocode}
+\@namedef{psas@>}{%
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@>>}
+% \begin{macrocode}
+\@namedef{psas@>>}{%
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+ 0 h T
+ gsave
+ newpath
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+ CP
+ grestore
+ CP newpath moveto
+ 2 copy
+ L
+ stroke
+ moveto}
+% \end{macrocode}
+% \end{macro}
+%
+% \begingroup
+% \catcode`\<=12
+% \begin{macro}{\psas@<}
+% \begin{macrocode}
+\@namedef{psas@<}{%
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@<<}
+% \begin{macrocode}
+\@namedef{psas@<<}{%
+ true \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow
+ CP newpath moveto 0 a neg L stroke 0 h neg T
+ false \psk@arrowinset \psk@arrowlength \psk@arrowsize \tx@Arrow}
+% \end{macrocode}
+% \end{macro}
+% \endgroup
+%
+% \begin{macro}{\psset@tbarsize,\psk@tbarsize}
+% \begin{macrocode}
+\def\psset@tbarsize#1{%
+ \pst@expandafter\pst@getdimnum{#1} {} {} {}\@nil
+ \edef\psk@tbarsize{\pst@number\pst@dimg \pst@tempg}}
+\psset@tbarsize{2pt 5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Tbar}
+% Syntax
+% \begin{LVerbatim}
+% \psk@tbarsize Tbar
+% \end{LVerbatim}
+% \begin{macrocode}
+\pst@def{Tbar}<%
+ CLW mul add /z ED % width
+ z -2 div CLW 2 div moveto
+ z 0 rlineto
+ stroke
+ 0 CLW moveto>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@|}
+% \begin{macrocode}
+\@namedef{psas@|}{\psk@tbarsize \tx@Tbar}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@|*}
+% \begin{macrocode}
+\@namedef{psas@|*}{0 CLW -2 div T \psk@tbarsize \tx@Tbar}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@bracketlength,\psk@bracketlength}
+% \begin{macrocode}
+\def\psset@bracketlength#1{\pst@checknum{#1}\psk@bracketlength}
+\psset@bracketlength{.15}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@Bracket,\tx@@Bracket}
+% Syntax
+% \begin{LVerbatim}
+% \psk@bracketlength \psk@tbarsize Bracket
+% \end{LVerbatim}
+% \begin{macrocode}
+\pst@def{Bracket}<%
+ CLW mul add dup
+ CLW sub 2 div /x ED % adjusted half width
+ mul CLW add /y ED % y-position of height
+ /z CLW 2 div def
+ x neg y moveto
+ x neg CLW 2 div L
+ x CLW 2 div L
+ x y L
+ stroke
+ 0 CLW moveto>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@]}
+% \begin{macrocode}
+\@namedef{psas@]}{\psk@bracketlength \psk@tbarsize \tx@Bracket}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@rbracketlength,\psk@rbracketlength}
+% \begin{macrocode}
+\def\psset@rbracketlength#1{\pst@checknum{#1}\psk@rbracketlength}
+\psset@rbracketlength{.15}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{RoundBracket}
+% Syntax
+% \begin{LVerbatim}
+% \psk@bracketlength \psk@tbarsize RoundBracket
+% \end{LVerbatim}
+% \begin{macrocode}
+\pst@def{RoundBracket}<%
+ CLW mul add dup
+ 2 div /x ED % half width
+ mul /y ED % height
+ /mtrx CM def
+ 0 CLW 2 div T
+ x y mul 0 ne { x y scale } if
+ 1 1 moveto
+ .85 .5 .35 0 0 0 curveto
+ -.35 0 -.85 .5 -1 1 curveto
+ mtrx setmatrix
+ stroke
+ 0 CLW moveto>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@(}
+% \begin{macrocode}
+\@namedef{psas@)}{\psk@rbracketlength \psk@tbarsize \tx@RoundBracket}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@c,\psas@cc,\psas@C}
+% This is not going to be used frequently, and so we don't bother defining a
+% PostScript procedure in the header.
+% \begin{macrocode}
+\def\psas@c{1 \psas@@c}
+\def\psas@cc{0 CLW 2 div T 1 \psas@@c}
+\def\psas@C{2 \psas@@c}
+\def\psas@@c{%
+ setlinecap
+ 0 0 moveto
+ 0 CLW 2 div L
+ stroke
+ 0 0 moveto}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@}
+% \begin{macrocode}
+\def\psas@{}
+\psset@arrows{-}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Graphics objects: processing arguments}
+%
+% \begin{macro}{\pst@par,\addto@par,\use@par}
+% Graphics objects accumulate <parameter>=<value> pairs in the command
+% sequence "\pst@par". They use "\addto@par" to add to "\pst@par", and
+% "\use@par" to make the parameter changes effective.
+% \begin{macrocode}
+\def\pst@par{}
+\def\addto@par#1{%
+ \ifx\pst@par\@empty
+ \def\pst@par{#1}%
+ \else
+ \expandafter\def\expandafter\pst@par\expandafter{\pst@par,#1}%
+ \fi}
+\def\use@par{%
+ \ifx\pst@par\@empty\else
+ \expandafter\@psset\pst@par,\@nil
+ \def\pst@par{}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@object}
+% Any macro, such as "\psline", that uses graphics parameters should begin as
+% follows:
+% \begin{LVerbatim}
+% \def\psline{\def\pst@par{}\pst@object{psline}}
+% \def\psline@i{ ... }
+% \end{LVerbatim}
+% "\pst@object" checkes for the optional "[<par>=<value>,...]" argument, adds
+% key-value pairs to "\pst@par" if found, skips spaces, and then invokes
+% "\psline@i".
+% \begin{macrocode}
+\def\pst@object#1{%
+ \pst@ifstar{\@ifnextchar[{\pst@@object{#1}}{\@nameuse{#1@i}}}}
+\def\pst@@object#1[#2]{%
+ \addto@par{#2}\@ifnextchar+{\@nameuse{#1@i}}{\@nameuse{#1@i}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newpsobject}
+% For example,
+% \begin{LVerbatim}
+% \newpsobject{dottedline}{psline}{linestyle=dotted}
+% \end{LVerbatim}
+% has the following effect:
+% \begin{LVerbatim}
+% \def\dottedline{%
+% \def\pst@par{linestyle=dotted}\pst@object{psline}}
+% \end{LVerbatim}
+% and thus "\dottedline" is just like "\psline", except that the default falue
+% of "linestyle" is changed to "dotted".
+% \begin{macrocode}
+\def\newpsobject#1#2#3{%
+ \@ifundefined{#2@i}%
+ {\@pstrickserr{Graphics object `#2' not defined}\@eha}%
+ {\@namedef{#1}{\def\pst@par{#3}\pst@object{#2}}}\ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getarrows}
+% "\pst@getarrows{foo}" checks for an optional argument containing arrows, and
+% then invokes "foo". The arrows argument must be followed by "(".
+% \begin{macrocode}
+\def\pst@getarrows#1{\@ifnextchar({#1}{\pst@@getarrows{#1}}}
+\def\pst@@getarrows#1#2{\addto@par{arrows=#2}#1}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Graphics objects: Basics \TeX\ macros\label{Objects}}
+%
+% Each graphics object should use one of the following:
+% \begin{center}
+% \begin{tabular}{ll}
+% "\begin@OpenObj ... \end@OpenObj" & Open curves with arrows.\\
+% "\begin@AltOpenObj ... \end@AltOpenObj" & Open curves w/o arrows.\\
+% "\begin@ClosedObj ... \end@ClosedObj" & Closed curves.\\
+% "\begin@SpecialObj ... \end@SpecialObj" & Other.
+% \end{tabular}
+% \end{center}
+% This makes it possible for "\pscustom" to work by redefining these.
+%
+% \begin{macro}{\begin@ClosedObj,\end@ClosedObj}
+% \begin{macrocode}
+\def\begin@ClosedObj{%
+ \leavevmode
+ \pst@killglue
+ \begingroup
+ \use@par
+ \solid@star
+ \ifpsdoubleline \pst@setdoublesep \fi
+ \init@pscode}
+\def\end@ClosedObj{%
+ \ifpsshadow \pst@closedshadow \fi
+ \ifdim\psk@border\p@>\z@ \pst@addborder \fi
+ \pst@fill
+ \pst@stroke
+ \ifpsdoubleline \pst@doublestroke \fi
+ \ifshowpoints
+ \addto@pscode{Points aload length 2 div cvi /N ED \psdots@iii}%
+ \fi
+ \use@pscode
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\begin@OpenObj,\begin@AltOpenObj,\end@OpenObj}
+% \begin{macrocode}
+\def\begin@OpenObj{%
+ \begin@ClosedObj
+ \let\pst@linetype\pst@arrowtype
+ \pst@addarrowdef}
+\def\begin@AltOpenObj{%
+ \begin@ClosedObj
+ \def\pst@repeatarrowsflag{\z@}%
+ \def\pst@linetype{0}}
+\def\end@OpenObj{%
+ \ifpsshadow \pst@openshadow \fi
+ \ifdim\psk@border\p@>\z@ \pst@addborder \fi
+ \pst@fill
+ \pst@stroke
+ \ifpsdoubleline \pst@doublestroke \fi
+ \ifnum\pst@repeatarrowsflag>\z@ \pst@repeatarrows \fi
+ \ifshowpoints \pst@OpenShowPoints \fi
+ \use@pscode
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\begin@SpecialObj,\end@SpecialObj}
+% \begin{macrocode}
+\def\begin@SpecialObj{%
+ \leavevmode
+ \pst@killglue
+ \begingroup
+ \use@par
+ \init@pscode}
+\def\end@SpecialObj{%
+ \use@pscode
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\init@pscode,\addto@pscode,\use@pscode}
+% Graphics objects are built up by adding PostScript code to "\pst@code" with
+% "\addto@pscode". "\use@pscode" then adds leading and trailing PostScript
+% code, and (normally) inserts it in a "\special" (it also most empty
+% "\pst@code"). Hacks like "\psclip", "\multips" and "\pstextpath" work by
+% redefining "\use@pscode". These hacks use "\use@pscode" themselves when
+% appropriate, making limited nesting of these hacks is possible. "\PSTtoEPS"
+% works be redefining "\addto@pscode" so that it writes to a file. All this
+% was carefully designed so that these hacks would work. Watch out!
+% \begin{macrocode}
+\def\pst@code{}%
+\def\init@pscode{%
+ \addto@pscode{%
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pslinecolor}}
+\def\addto@pscode#1{\xdef\pst@code{\pst@code#1\space}}
+\def\use@pscode{%
+ \pstverb{%
+ \pst@dict
+ \tx@STP
+ newpath
+ \psk@origin
+ \psk@swapaxes
+ \pst@code
+ end}%
+ \gdef\pst@code{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@killglue}
+% \begin{macrocode}
+\def\KillGlue{%
+ \def\pst@killglue{\unskip\ifdim\lastskip>\z@\expandafter\pst@killglue\fi}}
+\def\DontKillGlue{\let\pst@killglue\relax}
+\DontKillGlue
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\solid@star}
+% The optional "*" is typically used to make a solid option. This means that
+% "linestyle" is set to "none", "linewidth" is set to "0", and "fillcolor" is
+% set to "linecolor".
+% \begin{macrocode}
+\def\solid@star{%
+ \if@star
+ \pslinewidth=\z@
+ \psdoublelinefalse
+ \def\pslinestyle{none}%
+ \def\psfillstyle{solid}%
+ \let\psfillcolor\pslinecolor
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@setdoublesep}
+% \begin{macrocode}
+\def\pst@setdoublesep{%
+ \pst@getlength\psdoublesep\psdoublesep
+ \pslinewidth=2\pslinewidth
+ \advance\pslinewidth\psdoublesep\p@
+ \let\pst@setdoublesep\relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@Shadow}
+% Syntax:
+% \begin{Ex}
+% <x y> Shadow
+% \end{Ex}
+% translates current path by <x y>.
+% \begin{macrocode}
+\pst@def{Shadow}<%
+ [
+ { /moveto load }
+ { /lineto load }
+ { /curveto load }
+ { /closepath load }
+ pathforall
+ ]
+ cvx
+ newpath
+ 3 1 roll
+ T
+ exec>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@closedshadow}
+% \begin{macrocode}
+\def\pst@closedshadow{%
+ \addto@pscode{%
+ gsave
+ \psk@shadowsize \psk@shadowangle \tx@PtoC
+ \tx@Shadow
+ \pst@usecolor\psshadowcolor
+ gsave fill grestore
+ stroke
+ grestore
+ gsave
+ \pst@usecolor\psfillcolor
+ gsave fill grestore
+ stroke
+ grestore}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@openshadow}
+% \begin{macrocode}
+\def\pst@openshadow{%
+ \addto@pscode{%
+ gsave
+ \psk@shadowsize \psk@shadowangle \tx@PtoC
+ \tx@Shadow
+ \pst@usecolor\psshadowcolor
+ \ifx\psfillstyle\@none\else
+ gsave fill grestore
+ \fi
+ stroke}%
+ \pst@repeatarrows
+ \addto@pscode{grestore}
+ \ifx\psfillstyle\@none\else
+ \addto@pscode{%
+ gsave
+ \pst@usecolor\psfillcolor
+ gsave fill grestore
+ stroke
+ grestore}
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@addborder}
+% \begin{macrocode}
+\def\pst@addborder{%
+ \addto@pscode{%
+ gsave
+ \psk@border 2 mul
+ CLW add SLW
+ \pst@usecolor\psbordercolor
+ stroke
+ grestore}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@stroke}
+% \begin{macrocode}
+\def\pst@stroke{%
+ \ifx\pslinestyle\@none\else
+ \addto@pscode{%
+ gsave
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pslinecolor
+ \@nameuse{psls@\pslinestyle}
+ grestore}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@fill}
+% \begin{macrocode}
+\def\pst@fill{%
+ \ifx\psfillstyle\@none\else
+ \addto@pscode{gsave \@nameuse{psfs@\psfillstyle} grestore}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@doublestroke}
+% \begin{macrocode}
+\def\pst@doublestroke{%
+ \addto@pscode{%
+ gsave
+ \psdoublesep SLW
+ \pst@usecolor\psdoublecolor
+ stroke
+ grestore}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@arrowtype}
+% \begin{macrocode}
+\def\pst@arrowtype{%
+ \ifx\psk@arrowB\@empty 0 \else -2 \fi
+ \ifx\psk@arrowA\@empty 0 \else -1 \fi
+ add}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@addarrowdef,\pst@arrowdef,\pst@arrowtype}
+% "ArrowA" takes two coordinates from the stack, draws the arrow with the tip
+% at the top coordinate, leaves the second coordinate on the stack and leaves
+% the current point where a line should join.
+%
+% "ArrowB" takes two coordinates from the stack, draws the arrow with the tip
+% at the top coordinate, and leaves both coordinates on the stack, without
+% changing the graphics state.
+%
+% This particular definition of "ArrowA" is important for "\pscustom".
+%
+% "ArrowA" and "ArrowB" might also save the arrow coordinates, because
+% sometimes it is necessary to redraw the arrows (see
+% "\pst@setrepeatarrowsflag").
+% \begin{macrocode}
+\def\pst@addarrowdef{%
+ \addto@pscode{%
+ /ArrowA {
+ \ifx\psk@arrowA\@empty
+ \pst@oplineto
+ \else
+ \pst@arrowdef{A}
+ moveto
+ \fi
+ } def
+ /ArrowB {
+ \ifx\psk@arrowB\@empty \else \pst@arrowdef{B} \fi
+ } def}}
+\def\pst@arrowdef#1{%
+ \ifnum\pst@repeatarrowsflag>\z@
+ /Arrow#1c [ 6 2 roll ] cvx def Arrow#1c
+ \fi
+ \tx@BeginArrow
+ \psk@arrowscale
+ \@nameuse{psas@\@nameuse{psk@arrow#1}}
+ \tx@EndArrow}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@repeatarrows}
+% \begin{macrocode}
+\def\pst@repeatarrows{%
+ \addto@pscode{%
+ gsave
+ \ifx\psk@arrowA\@empty\else
+ ArrowAc ArrowA pop pop
+ \fi
+ \ifx\psk@arrowB\@empty\else
+ ArrowBc ArrowB pop pop pop pop
+ \fi
+ grestore}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@OpenShowPoints}
+% \begin{macrocode}
+\def\pst@OpenShowPoints{%
+ \addto@pscode{%
+ gsave
+ \psk@dotsize
+ \@nameuse{psds@\psk@dotstyle}
+ /TheDot {
+ gsave T \psk@dotangle \psk@dotscale Dot grestore
+ } def
+ newpath
+ Points aload length 2 div 2 sub cvi /N ED
+ N 0 ge
+ { \ifx\psk@arrowA\@empty
+ TheDot
+ \else
+ pop pop
+ \fi
+ N { TheDot } repeat
+ \ifx\psk@arrowB\@empty
+ TheDot
+ \else
+ pop pop
+ \fi }
+ { N 2 mul { pop } repeat }
+ ifelse
+ grestore}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Custom graphics}
+%
+% Graphics objects using "\begin@SpecialObj" cannot be used with "\pscustom".
+% It is up to the other graphics objects to be compatible with "\pscustom".
+% This means:
+% \begin{itemize}
+% \item To use the current point as an additional coordinate, when it exists,
+% the graphics object should insert "\pst@cp".
+% \item For graphics objects that use "\begin@OpenObj", the "ArrowA" is
+% defined by "\pscustom" to connect the top coordinate with the current point
+% by a line, if there is a current point. Other graphics objects should use
+% "\pst@oplineto" as a substitute for "moveto" if they wish to connect a
+% coordinate to the current point if it exists.
+% \end{itemize}
+%
+% Closed graphics objects are not under an obligation to anything particularly
+% sensible the current point exists.
+%
+% \begin{macro}{\pscustom}
+% The main graphics object modifies "\begin@OpenObj" and "\end@OpenObj" so
+% that the open curves extend the current path.
+% \begin{macrocode}
+\def\pscustom{\def\pst@par{}\pst@object{pscustom}}
+\long\def\pscustom@i#1{%
+ \begin@SpecialObj
+ \solid@star
+ \let\pst@ifcustom\iftrue
+ \let\begin@ClosedObj\begin@CustomObj
+ \let\end@ClosedObj\endgroup
+ \def\begin@OpenObj{\begin@CustomObj\pst@addarrowdef}%
+ \let\end@OpenObj\endgroup
+ \let\begin@AltOpenObj\begin@CustomObj
+ \def\begin@SpecialObj{%
+ \begingroup
+ \pst@misplaced{special graphics object}%
+ \def\addto@pscode####1{}
+ \let\end@SpecialObj\endgroup}%
+ \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}%
+ \def\psclip##1{\pst@misplaced\psclip}%
+ \def\pst@repeatarrowsflag{\z@}%
+ \let\pst@setrepeatarrowsflag\relax
+ \showpointsfalse
+ \let\showpointstrue\relax
+ \def\pst@linetype{\pslinetype}%
+ \let\psset@liftpen\psset@@liftpen
+ \psset@liftpen{\z@}%
+ \def\pst@cp{/currentpoint load stopped pop }%
+ \def\pst@oplineto{/lineto load stopped { moveto } if }%
+ \def\pst@optcp##1##2{%
+ \ifnum##1=\z@\def##2{/currentpoint load stopped { 0 0 } if }\fi}%
+ \let\caddto@pscode\addto@pscode
+ \def\cuse@par##1{{\use@par##1}}%
+ \the\pst@customdefs
+ \setbox\pst@hbox=\hbox{#1}%
+ \pst@fill
+ \pst@stroke
+ \end@SpecialObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\begin@CustomObj,\end@CustomObj}
+% \begin{macrocode}
+\def\begin@CustomObj{%
+ \begingroup
+ \use@par
+ \addto@pscode{%
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pslinecolor}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@liftpen,\pst@cp,\pst@oplineto,\pst@optcp}
+% \begin{macrocode}
+\def\pst@oplineto{moveto }
+\def\pst@cp{}
+\def\pst@optcp#1#2{}
+\def\psset@liftpen#1{}
+\def\psset@@liftpen#1{%
+ \ifcase#1\relax
+ \def\psk@liftpen{\z@}%
+ \def\pst@cp{/currentpoint load stopped pop }%
+ \def\pst@oplineto{/lineto load stopped { moveto } if }%
+ \or
+ \def\psk@liftpen{1}%
+ \def\pst@cp{}%
+ \def\pst@oplineto{/lineto load stopped { moveto } if }%
+ \or
+ \def\psk@liftpen{2}%
+ \def\pst@cp{}%
+ \def\pst@oplineto{moveto }%
+ \fi}
+\psset@liftpen{0}
+\def\psk@liftpen{-1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@linetype,\pslinetype}
+% \begin{macrocode}
+\def\psset@linetype#1{%
+ \pst@getint{#1}\pslinetype
+ \ifnum\pst@dimg<-3
+ \@pstrickserr{linetype must be greater than -3}\@ehpa
+ \def\pslinetype{0}%
+ \fi}
+\psset@linetype{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\caddto@pscode}
+% Commands that should only occur in "\pscustom" should use this. Obsolete?
+% \begin{macrocode}
+\def\caddto@pscode#1{%
+ \@pstrickserr{Command can only be used in \string\pscustom}\@ehpa}
+\let\cuse@par\caddto@pscode
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@MSave,\tx@MRestore}
+% It doesn't seem worth adding these to the header file.
+% \begin{macrocode}
+\def\tx@MSave{%
+ /msavemtrx
+ [ tx@Dict /msavemtrx known { msavemtrx aload pop } if CM ]
+ def }
+\def\tx@MRestore{%
+ tx@Dict /msavemtrx known { length 0 gt } { false } ifelse
+ { /msavematrx [ msavematrx aload pop setmatrix ] def }
+ if }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psmove,\psclosepath,\psgroup}
+% \begin{macrocode}
+\newtoks\pst@customdefs
+\pst@customdefs{%
+ \def\newpath{\addto@pscode{newpath}}%
+ \def\moveto(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
+ \def\closepath{\addto@pscode{closepath}}%
+ \def\gsave{\begingroup\addto@pscode{gsave}}%
+ \def\grestore{\endgroup\addto@pscode{grestore}}%
+ \def\translate(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor moveto}}%
+ \def\rotate#1{\pst@@getangle{#1}\addto@pscode{\pst@angle rotate}}%
+ \def\scale#1{\pst@getscale{#1}\pst@tempg\addto@pscode{\pst@tempg}}%
+ \def\msave{\addto@pscode{\tx@MSave}}%
+ \def\mrestore{\addto@pscode{\tx@MRestore}}%
+ \def\swapaxes{\addto@pscode{-90 rotate -1 1 scale}}%
+ \def\stroke{\def\pst@par{}\pst@object{stroke}}%
+ \def\fill{\def\pst@par{}\pst@object{fill}}%
+ \def\openshadow{\def\pst@par{}\pst@object{openshadow}}%
+ \def\closedshadow{\def\pst@par{}\pst@object{closedshadow}}%
+ \def\movepath(#1){\pst@@getcoor{#1}\addto@pscode{\pst@coor tx@Shadow}}%
+ \def\lineto{\pst@onecoor{lineto}}%
+ \def\rlineto{\pst@onecoor{rlineto}}%
+ \def\curveto{\pst@threecoor{curveto}}%
+ \def\rcurveto{\pst@threecoor{rcurveto}}%
+ \def\code#1{\addto@pscode{#1}}%
+ \def\coor(#1){\pst@@getcoor{#1}\addto@pscode\pst@coor\@ifnextchar({\coor}{}}%
+ \def\rcoor{\pst@getcoors{}{}}%
+ \def\dim#1{\pssetlength\pst@dimg{#1}\addto@pscode{\pst@number\pst@dimg}}%
+ \def\setcolor#1{%
+ \@ifundefined{color@#1}{}{\addto@pscode{\use@color{#1}}}}%
+ \def\arrows#1{{\psset@arrows{#1}\pst@addarrowdef}}%
+ \let\file\pst@rawfile
+} % END \pst@customdefs
+\def\closedshadow@i{\cuse@par\pst@closedshadow}
+\def\openshadow@i{\cuse@par\pst@openshadow}
+\def\stroke@i{\cuse@par\pst@stroke}%
+\def\fill@i{\cuse@par\pst@fill}%
+\def\pst@onecoor#1(#2){%
+ \pst@@getcoor{#2}%
+ \addto@pscode{\pst@coor #1}}
+\def\pst@threecoor#1(#2)#3(#4)#5(#6){%
+ \begingroup
+ \pst@getcoor{#2}\pst@tempa
+ \pst@getcoor{#4}\pst@tempb
+ \pst@getcoor{#6}\pst@tembc
+ \addto@pscode{\pst@tempa \pst@tempb \pst@tempc #1}%
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\psrawfile,\pst@rawfile}
+% \begin{macrocode}
+\def\pst@rawfile#1{%
+ \begingroup
+ \def\do##1{\catcode`##1=12\relax}"
+ \dospecials
+ \catcode`\%=14
+ \pst@@rawfile{#1}%
+ \endgroup}
+\def\pst@@rawfile#1{%
+ \immediate\openin1 #1
+ \ifeof1
+ \@pstrickserr{File `#1' not found}\@ehpa
+ \else
+ \immediate\read1 to \pst@tempg
+ \loop
+ \ifeof1 \@pstfalse\else\@psttrue\fi
+ \if@pst
+ \addto@pscode\pst@tempg
+ \immediate\read1 to \pst@tempg
+ \repeat
+ \fi
+ \immediate\closein1\relax}
+% \end{macrocode}
+% \end{macro}
+%
+%
+%
+% \section{Graphics objects: Basic PostScript macros}
+%
+% \begin{macro}{SD}
+% \begin{macrocode}
+\pst@def{SD}<%
+ 0 360 arc fill>
+\pst@def{SQ}<%
+ /r ED
+ r r moveto
+ r r neg L
+ r neg r neg L
+ r neg r L
+ fill>
+\pst@def{ST}<%
+ /y ED /x ED
+ x y moveto
+ x neg y L
+ 0 x L
+ fill>
+\pst@def{SP}<%
+ /r ED
+ gsave
+ 0 r moveto
+ 4 { 72 rotate 0 r L } repeat
+ fill
+ grestore>
+\@namedef{psds@*}{/Dot { 0 0 DS \tx@SD } def}
+\@namedef{psds@o}{%
+ /r2 DS CLW sub def
+ /Dot { 0 0 DS \tx@SD \pst@usecolor\psfillcolor 0 0 r2 \tx@SD } def}
+\@namedef{psds@square*}{%
+ /r1 DS .886 mul def
+ /Dot { r1 \tx@SQ } def}
+\@namedef{psds@square}{%
+ /r1 DS .886 mul def /r2 r1 CLW sub def
+ /Dot { r1 \tx@SQ \pst@usecolor\psfillcolor r2 \tx@SQ } def}
+\@namedef{psds@triangle*}{%
+ /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
+ /Dot { x1 y1 \tx@ST } def}
+\@namedef{psds@triangle}{%
+ /y1 DS .778 mul neg def /x1 y1 1.732 mul neg def
+ /y2 y1 CLW add def /x2 y2 1.732 mul neg def
+ /Dot { x1 y1 \tx@ST \pst@usecolor\psfillcolor x2 y2 \tx@ST } def}
+\@namedef{psds@pentagon*}{%
+ /r1 DS 1.149 mul def
+ /Dot { r1 \tx@SP } def}
+\@namedef{psds@pentagon}{%
+ DS .93 mul dup 1.236 mul /r1 ED CLW sub 1.236 mul /r2 ED
+ /Dot { r1 \tx@SP \pst@usecolor\psfillcolor
+ r2 \tx@SP } def}
+\@namedef{psds@+}{%
+ /DS DS 1.253 mul def
+ /Dot { DS 0 moveto DS neg 0 L stroke
+ 0 DS moveto 0 DS neg L stroke } def}
+\@namedef{psds@|}{%
+ \psk@tbarsize CLW mul add 2 div /DS ED
+ /Dot { 0 DS moveto 0 DS neg L stroke } def}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dotstyle}
+% \begin{macrocode}
+\def\psset@dotstyle#1{%
+ \@ifundefined{psds@#1}%
+ {\@pstrickserr{Dot style `#1' not defined}\@eha}%
+ {\edef\psk@dotstyle{#1}}}
+\psset@dotstyle{*}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{NArray}
+% Syntax:
+% \begin{Ex}
+% <array of points> NArray <points>
+% \end{Ex}
+% Sets "n" to the number of pairs in the array, and makes sure there is an
+% even number of elements.
+% \begin{macrocode}
+\pst@def{NArray}<%
+ aload length 2 div dup
+ dup cvi eq not { exch pop } if
+ /n exch cvi def>
+\pst@def{NArray}<%
+ /f ED
+ counttomark 2 div
+ dup cvi /n ED
+ n eq not { exch pop } if
+ f
+ { ] aload /Points ED }
+ { n 2 mul 1 add -1 roll pop }
+ ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Line}
+% Syntax:
+% \begin{Ex}
+% <array of points> Line -
+% \end{Ex}
+% "ArrowA" and "ArrowB" should be defined to draw arrows, and "Lineto" should
+% be the procedure used to draw the path; either "lineto" or "Arcto".
+% \begin{macrocode}
+\pst@def{Line}<%
+ \tx@NArray
+ n 0 eq not
+ { n 1 eq { 0 0 /n 2 def } if
+ ArrowA
+ /n n 2 sub def
+ n { Lineto } repeat
+ CP 4 2 roll ArrowB L
+ pop pop }
+ if>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Arcto}
+% Syntax:
+% \begin{Ex}
+% <x2 y2 x1 y1> Arcto <x2 y2>
+% \end{Ex}
+% "r" should be set to the arc radius. Adds to the path with "arcto", with the
+% corner at <x1 y1> and going towards <x2 y2>. Works even when the points are
+% equal. For use with "Line" and "Polygon".
+% \begin{macrocode}
+\pst@def{Arcto}<%
+ /a [ 6 -2 roll ] cvx def
+ a r /arcto load stopped { 5 } { 4 } ifelse { pop } repeat a>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Polygon}
+% Syntax:
+% \begin{Ex}
+% <array of points> Line -
+% \end{Ex}
+% "Lineto" should be the procedure used to draw the path; either "lineto" or
+% "Arcto".
+% \begin{macrocode}
+\pst@def{CheckClosed}<%
+ dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq and
+ { pop pop /n n 1 sub def }
+ if>
+\pst@def{Polygon}<%
+ \tx@NArray
+ n 2 eq { 0 0 /n 3 def } if
+ n 3 lt
+ { n { pop pop } repeat }
+ { n 3 gt { \tx@CheckClosed } if
+ n 2 mul -2 roll /y0 ED /x0 ED
+ /y1 ED /x1 ED x1 y1
+ /x1 x0 x1 add 2 div def
+ /y1 y0 y1 add 2 div def
+ x1 y1 moveto
+ /n n 2 sub def
+ n { Lineto } repeat
+ x1 y1 x0 y0 6 4 roll
+ Lineto Lineto pop pop closepath }
+ ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Interpolated curves}
+%
+% This documentation is largely junk.
+%
+% There one was an alternate algorithm that had the nice property that when
+% the coordinates were scaled, the interpolated curve would scale in the same
+% way. It was also simpler. However, this one gives nicer looking results in
+% most cases.
+%
+% Two parameters should be defined:
+% \begin{description}
+% \item[a] Lower values make the curve tighter. (Default: 1)
+% \item[b] Higher values make the curve tighter where the angle ABC is less
+% than 45 degrees, and loosen the curve elsewhere. (Default: .1)
+% \end{description}
+% "ArrowA" and "ArrowB" should be defined as well.
+%
+% Each two points are connected by a single Bezier curve, using curveto. For
+% each point P, let P- and P+ be the control points before and after the
+% point. I.e., If A, B and C are consecutive points, then A and B are
+% connected by the Bezier curve with control points A, A+, B- and B, and B and
+% C are connected with control points B, B+, C- and C.
+%
+% The interpolation is local, meaning that control points B- and B+ depend
+% only on points A, B and C.
+%
+% \begin{macro}{\tx@CCA,\tx@CC}
+% The first three lines before "CCA" set "x1"$=Ax+$, "y1"$=Ay+$,
+% "l0"$=d(A,B)$, "dx0"$=Bx-Ax$, and "dy0"$=By-Ay$. After "CCA", "x"$=Bx$,
+% "y"$=By$, "dx1"$=Cx-Bx$, "dy2"$=Cy-By$, and "l1"$=d(B,C)$.
+% \begin{macrocode}
+\pst@def{CCA}<%
+ /y ED /x ED 2 copy
+ y sub /dy1 ED x sub /dx1 ED
+ /l1 dx1 dy1 \tx@Pyth def>
+\pst@def{CCA}<%
+ /y ED /x ED 2 copy
+ y sub /dy1 ED x sub /dx1 ED
+ /l1 dx1 dy1 \tx@Pyth def>
+\pst@def{CC}<%
+ /l0 l1 def
+ /x1 x dx sub def /y1 y dy sub def
+ /dx0 dx1 def /dy0 dy1 def
+ \tx@CCA
+% \end{macrocode}
+% The task is now to calculate $B-$ and $B+$. We first calculate the slope
+% "dx" and "dy" at $B$. This tangent at $B$ should be perpendicular to the
+% bisection of the angle $ABC$. Recalling that "dx0" and "dy0" ``point'' from
+% $A$ to $B$, this tangency thus passes through $B+(dx,dy)$, where $(dx,dy)$
+% is the average of $dx0,dy0$ and $dx1,dy1$, once these have been normalized
+% to have the same length. If we normalize by dividing each by their length,
+% and then multiplying both by both lengths, we get
+% \begin{center}\tt\begin{tabular}{rcl}
+% dx & $=$ & l1 $\times$ dx0 $+$ l0 $\times$ dx1 \\[3pt]
+% dy & $=$ & l1 $\times$ dy0 $+$ l0 $\times$ dy1
+% \end{tabular}\end{center}
+% \begin{macrocode}
+ /dx dx0 l1 c exp mul dx1 l0 c exp mul add def
+ /dy dy0 l1 c exp mul dy1 l0 c exp mul add def
+% \end{macrocode}
+% "dx" and "dy" give us the direction of the control points $B-$ and $B+$ from
+% $B$. Now we adjust the distance of these control points. The first component
+% is sine of the angle ABC, so that smaller angles give closer control points.
+% This is raised to the "b", so that "b" controls the extent of this
+% dependency (and can even reverse the relation).
+% Then this amount is multiplied times "a", which those adjusts the overall
+% tightness, independently of the angle. Let's call this amount $M$. This
+% amount is then divided by the length of the vector $(dx,dy)$, thereby
+% normalizing this vector to unit length, and then, multiplied times the
+% distance between $A$ and $B$ (for calculating $B-$). Thus, $B-$ is distance
+% $M d(A,B)$ from $B$. $(x2,y2)$ are set to $B-$, thus calculated, and $B+$ is
+% temporily stored in $(dx,dy)$.
+% \begin{macrocode}
+ /m dx0 dy0 \tx@Atan dx1 dy1 \tx@Atan sub
+ 2 div cos abs b exp a mul
+ dx dy \tx@Pyth \tx@Div 2 div def
+ /x2 x l0 dx mul m mul sub def
+ /y2 y l0 dy mul m mul sub def
+ /dx l1 dx mul m mul neg def
+ /dy l1 dy mul m mul neg def>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@IC,\tx@BOC,\tx@NC,\tx@EOC,\tx@BAC,\tx@NAC,\tx@EAC}
+% These are the compenents of the loops that go through the lists of points
+% that are to be interpolated. These are abbreviations, as follows:
+% \begin{center}
+% \begin{tabular}{ll}
+% "IC" & Initialize Curve\\
+% "BOC" & Begin Open Curve\\
+% "NC" & Next Curve\\
+% "EOC" & End Open Curve\\
+% "BAC" & Begin Alternative Curve\\
+% "NAC" & Next Alternative Curve\\
+% "EAC" & End Alternative Curve
+% \end{tabular}
+% \end{center}
+% \begin{macrocode}
+\pst@def{IC}<%
+ /c c 1 add def
+ c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if } ifelse
+ /a a 2 mul 3 div 45 cos b exp div def
+ \tx@CCA /dx 0 def /dy 0 def>
+\pst@def{BOC}<%
+ \tx@IC \tx@CC x2 y2 x1 y1 ArrowA
+ CP 4 2 roll x y curveto>
+\pst@def{NC}<\tx@CC x1 y1 x2 y2 x y curveto>
+\pst@def{EOC}<%
+ x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto>
+\pst@def{BAC}<%
+ \tx@IC \tx@CC x y moveto \tx@CC
+ x1 y1 CP ArrowA>
+\pst@def{NAC}<x2 y2 x y curveto \tx@CC x1 y1>
+\pst@def{EAC}<x2 y2 x y ArrowB curveto pop pop>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{OpenCurve}
+% Syntax:
+% \begin{Ex}
+% <array of points> OpenCurve
+% \end{Ex}
+% \begin{macrocode}
+\pst@def{OpenCurve}<%
+ \tx@NArray
+ n 3 lt
+ { n { pop pop } repeat }
+ { \tx@BOC
+ /n n 3 sub def
+ n { \tx@NC } repeat
+ \tx@EOC }
+ ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{AltCurve}
+% Syntax:
+% \begin{Ex}
+% <array of points> AltCurve
+% \end{Ex}
+% \begin{macrocode}
+\pst@def{AltCurve}<%
+ { false \tx@NArray
+ n 2 mul 2 roll
+ [ n 2 mul 3 sub 1 roll ]
+ aload /Points ED
+ n 2 mul -2 roll }
+ { false \tx@NArray }
+ ifelse
+ n 4 lt
+ { n { pop pop } repeat }
+ { \tx@BAC
+ /n n 4 sub def
+ n { \tx@NAC } repeat
+ \tx@EAC }
+ ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{ClosedCurve}
+% Syntax:
+% \begin{Ex}
+% <array of points> ClosedCurve
+% \end{Ex}
+% \begin{macrocode}
+\pst@def{ClosedCurve}<%
+ \tx@NArray
+ n 3 lt
+ { n { pop pop } repeat }
+ { n 3 gt { \tx@CheckClosed } if
+ 6 copy n 2 mul 6 add 6 roll
+ \tx@IC \tx@CC x y moveto
+ n { \tx@NC } repeat
+ closepath pop pop }
+ ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{curvature}
+% \begin{macrocode}
+\def\psset@curvature#1{%
+ \edef\pst@tempg{#1 }%
+ \expandafter\psset@@curvature\pst@tempg * * * \@nil}
+\def\psset@@curvature#1 #2 #3 #4\@nil{%
+ \pst@checknum{#1}\pst@tempg
+ \pst@checknum{#2}\pst@temph
+ \pst@checknum{#3}\pst@tempi
+ \edef\psk@curvature{\pst@tempg \pst@temph \pst@tempi}}
+\psset@curvature{1 .1 0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pscurve}
+% \begin{macrocode}
+\def\pscurve{\def\pst@par{}\pst@object{pscurve}}
+\def\pscurve@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\pscurve@ii}}
+\def\pscurve@ii{%
+ \addto@pscode{%
+ \pst@cp
+ \psk@curvature\space /c ED /b ED /a ED
+ \ifshowpoints true \else false \fi
+ \tx@OpenCurve}%
+ \end@OpenObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psecurve}
+% \begin{macrocode}
+\def\psecurve{\def\pst@par{}\pst@object{psecurve}}
+\def\psecurve@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\psecurve@ii}}
+\def\psecurve@ii{%
+ \addto@pscode{%
+ \psk@curvature\space /c ED /b ED /a ED
+ \ifshowpoints true \else false \fi
+ \tx@AltCurve}%
+ \end@OpenObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psccurve}
+% \begin{macrocode}
+\def\psccurve{\def\pst@par{}\pst@object{psccurve}}
+\def\psccurve@i{%
+ \begin@ClosedObj
+ \pst@getcoors[\psccurve@ii}
+\def\psccurve@ii{%
+ \addto@pscode{%
+ \psk@curvature\space /c ED /b ED /a ED
+ \ifshowpoints true \else false \fi
+ \tx@ClosedCurve}%
+ \def\pst@linetype{1}%
+ \end@ClosedObj}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Dots}
+%
+% It would be nice to use a font, with hinting.
+%
+% \begin{macro}{dotsize}
+% \begin{macrocode}
+\def\psset@dotsize#1{%
+ \edef\pst@tempg{#1 }%
+ \expandafter\psset@@dotsize\pst@tempg -1 -1 -1\@nil}
+\def\psset@@dotsize#1 #2 #3\@nil{%
+ \pst@checknum{#2}\pst@tempg
+ \pssetlength\pst@dimg{#1}%
+ \edef\psk@dotsize{%
+ /DS \pst@number\pst@dimg \pst@tempg CLW mul add 2 div def }}
+\psset@dotsize{.5pt 2.5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psset@dotscale}
+% \begin{macrocode}
+\def\psset@dotscale#1{\pst@getscale{#1}\psk@dotscale}
+\psset@dotscale{1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@Getangle}
+% \begin{macrocode}
+\def\pst@Getangle#1#2{%
+ \pst@getangle{#1}\pst@tempg
+ \def\pst@temph{0. }%
+ \ifx\pst@tempg\pst@temph
+ \def#2{}%
+ \else
+ \edef#2{\pst@tempg\space rotate }%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dotangle}
+% \begin{macrocode}
+\def\psset@dotangle#1{\pst@Getangle{#1}\psk@dotangle}
+\psset@dotangle{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psdots}
+% \begin{macrocode}
+\def\psdots{\def\pst@par{}\pst@object{psdots}}
+\def\psdots@i{%
+ \begin@SpecialObj
+ \pst@getcoors[\psdots@ii}
+\def\psdots@ii{%
+ \addto@pscode{false \tx@NArray \psdots@iii}%
+ \end@SpecialObj}
+\def\psdots@iii{%
+ \psk@dotsize
+ \@nameuse{psds@\psk@dotstyle}
+ newpath
+ n { gsave T \psk@dotangle \psk@dotscale Dot grestore } repeat}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{EndDot}
+% Syntax
+% \begin{LVerbatim}
+% {<fill>} {<displace>} EndDot
+% \end{LVerbatim}
+% "DS" should be defined to be the dot size.
+% \begin{macrocode}
+\pst@def{EndDot}<%
+ { /z DS def } { /z 0 def } ifelse
+ /b ED
+ 0 z DS \tx@SD
+ b { 0 z DS CLW sub \tx@SD } if
+ 0 DS z add CLW 4 div sub moveto>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@oo}
+% \begin{macrocode}
+\def\psas@oo{{\pst@usecolor\psfillcolor true} true \psk@dotsize \tx@EndDot}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@o}
+% \begin{macrocode}
+\def\psas@o{{\pst@usecolor\psfillcolor true} false \psk@dotsize \tx@EndDot}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@**}
+% \begin{macrocode}
+\@namedef{psas@**}{{false} true \psk@dotsize \tx@EndDot}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psas@*}
+% \begin{macrocode}
+\@namedef{psas@*}{{false} false \psk@dotsize \tx@EndDot}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Lines and polygons\label{Lines}}
+%
+% \begin{macro}{linearc}
+% \begin{macrocode}
+\newdimen\pslinearc
+\def\psset@linearc#1{\pssetlength\pslinearc{#1}}
+\psset@linearc{0pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psline}
+% \begin{macrocode}
+\def\psline{\def\pst@par{}\pst@object{psline}}
+\def\psline@i{%
+ \pst@getarrows{%
+ \begin@OpenObj
+ \pst@getcoors[\psline@ii}}
+\def\psline@ii{%
+ \addto@pscode{\pst@cp \psline@iii \tx@Line}%
+ \end@OpenObj}
+\def\psline@iii{%
+ \ifdim\pslinearc>\z@
+ /r \pst@number\pslinearc def
+ /Lineto { \tx@Arcto } def
+ \else
+ /Lineto /lineto load def
+ \fi
+ \ifshowpoints true \else false \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\qline}
+% \begin{macrocode}
+\def\qline(#1)(#2){%
+ \def\pst@par{}%
+ \begin@SpecialObj
+ \def\pst@linetype{0}%
+ \pst@getcoor{#1}\pst@tempa
+ \pst@@getcoor{#2}%
+ \addto@pscode{%
+ \pst@tempa moveto \pst@coor L
+ \@nameuse{psls@\pslinestyle}}%
+ \end@SpecialObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pspolygon}
+% \begin{macrocode}
+\def\pspolygon{\def\pst@par{}\pst@object{pspolygon}}
+\def\pspolygon@i{%
+ \begin@ClosedObj
+ \def\pst@cp{}%
+ \pst@getcoors[\pspolygon@ii}
+\def\pspolygon@ii{%
+ \addto@pscode{\psline@iii \tx@Polygon}%
+ \def\pst@linetype{1}%
+ \end@ClosedObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{framearc}
+% \begin{macrocode}
+\def\psset@framearc#1{\pst@checknum{#1}\psk@framearc}
+\psset@framearc{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{cornersize}
+% \begin{macrocode}
+\def\psset@cornersize#1{%
+ \pst@expandafter\psset@@cornersize{#1}\@nil}
+\def\psset@@cornersize#1#2\@nil{%
+ \if #1a\relax
+ \def\psk@cornersize{\pst@number\pslinearc false }%
+ \else
+ \def\psk@cornersize{\psk@framearc true }%
+ \fi}
+\psset@cornersize{relative}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Frame}
+% Syntax
+% \begin{Ex}
+% <framearc/linearc bool x1 y1 x2 y2 dimen> "Frame"
+% \end{Ex}
+% \begin{macrocode}
+\pst@def{Rect}<%
+ x1 y1 y2 add 2 div moveto
+ x1 y2 lineto
+ x2 y2 lineto
+ x2 y1 lineto
+ x1 y1 lineto
+ closepath>
+\pst@def{OvalFrame}<%
+ x1 x2 eq y1 y2 eq or
+ { pop pop x1 y1 moveto x2 y2 L }
+ { y1 y2 sub abs x1 x2 sub abs
+ 2 copy gt { exch pop } { pop } ifelse
+ 2 div
+ exch % STACK: cornersize halfwidth boolean
+ { dup 3 1 roll mul exch }
+ if
+ 2 copy lt { pop } { exch pop } ifelse
+ /b ED
+ x1 y1 y2 add 2 div moveto
+ x1 y2 x2 y2 b arcto
+ x2 y2 x2 y1 b arcto
+ x2 y1 x1 y1 b arcto
+ x1 y1 x1 y2 b arcto
+ 16 { pop } repeat
+ closepath }
+ ifelse>
+\pst@def{Frame}<%
+ CLW mul /a ED
+ 3 -1 roll 2 copy gt { exch } if
+ a sub /y2 ED a add /y1 ED
+ 2 copy gt { exch } if
+ a sub /x2 ED a add /x1 ED
+ 1 index 0 eq { pop pop \tx@Rect } { \tx@OvalFrame } ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{dimen}
+% \begin{macrocode}
+\def\psset@dimen#1{%
+ \pst@expandafter\psset@@dimen{#1}\@nil}
+\def\psset@@dimen#1#2\@nil{%
+ \if #1o\relax
+ \def\psk@dimen{.5 }%
+ \else
+ \if #1m\relax
+ \def\psk@dimen{0 }%
+ \else
+ \if #1i\relax
+ \def\psk@dimen{-.5 }%
+ \fi
+ \fi
+ \fi}
+\psset@dimen{outer}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psframe}
+% \begin{macrocode}
+\def\psframe{\def\pst@par{}\pst@object{psframe}}
+\def\psframe@i(#1){%
+ \@ifnextchar({\psframe@ii(#1)}{\psframe@ii(0,0)(#1)}}
+\def\psframe@ii(#1)(#2){%
+ \begin@ClosedObj
+ \pst@getcoor{#1}\pst@tempa
+ \pst@@getcoor{#2}%
+ \addto@pscode{\psk@cornersize \pst@tempa \pst@coor \psk@dimen \tx@Frame}%
+ \def\pst@linetype{2}%
+ \showpointsfalse
+ \end@ClosedObj}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Curves}
+%
+% \begin{macro}{\psbezier}
+% \begin{macrocode}
+\def\psbezier{\def\pst@par{}\pst@object{psbezier}}
+\def\psbezier@i{\pst@getarrows\psbezier@ii}
+\def\psbezier@ii#1(#2)#3(#4)#5(#6){%
+ \@ifnextchar({\psbezier@iii{1}(#2)(#4)(#6)}%
+ {\psbezier@iii{\z@}(0,0)(#2)(#4)(#6)}}
+\def\psbezier@iii#1(#2)(#3)(#4)(#5){%
+ \begin@OpenObj
+ \pst@getcoor{#2}\pst@tempa
+ \pst@getcoor{#3}\pst@tempb
+ \pst@getcoor{#4}\pst@tempc
+ \pst@getcoor{#5}\pst@tempd
+ \pst@optcp{#1}\pst@tempa
+ \ifshowpoints\psbezier@iv\fi
+ \addto@pscode{
+ \pst@tempb \pst@tempa ArrowA
+ \pst@tempc \pst@tempd ArrowB
+ curveto}%
+ \end@OpenObj}
+\def\psbezier@iv{%
+ \addto@pscode{%
+ gsave
+ \pst@tempa \pst@tempb \pst@tempc \pst@tempd
+ newpath moveto L L L
+ CLW 2 div SLW
+ [ \psk@dash\space ] 0 setdash stroke
+ grestore
+ /Points [\pst@tempa\pst@tempb\pst@tempc\pst@tempd] def}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\parabola}
+% \begin{macrocode}
+\pst@def{Parab}<%
+ /y0 exch def
+ /x0 exch def
+ /y1 exch def
+ /x1 exch def
+ /dx x0 x1 sub 3 div def
+ /dy y0 y1 sub 3 div def
+ x0 dx sub y0 dy add x1 y1 ArrowA
+ x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB
+ curveto
+ /Points [ x1 y1 x0 y0 x0 2 mul x1 sub y1 ] def>
+\def\parabola{\def\pst@par{}\pst@object{parabola}}
+\def\parabola@i{\pst@getarrows\parabola@ii}
+\def\parabola@ii#1(#2)#3(#4){%
+ \begin@OpenObj
+ \pst@getcoor{#2}\pst@tempa
+ \pst@@getcoor{#4}%
+ \addto@pscode{\pst@tempa \pst@coor \tx@Parab}%
+ \end@OpenObj}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Grids\label{Grids}}
+%
+% \begin{macro}{gridwidth}
+% \begin{macrocode}
+\def\psset@gridwidth#1{\pst@getlength{#1}\psk@gridwidth}
+\psset@gridwidth{.8pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{griddots}
+% \begin{macrocode}
+\def\psset@griddots#1{%
+ \pst@cntg=#1\relax
+ \edef\psk@griddots{\the\pst@cntg}}
+\psset@griddots{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{gridcolor}
+% \begin{macrocode}
+\def\psset@gridcolor#1{\pst@getcolor{#1}\psgridcolor}
+\psset@gridcolor{black}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{subgridwidth}
+% \begin{macrocode}
+\def\psset@subgridwidth#1{\pst@getlength{#1}\psk@subgridwidth}
+\psset@subgridwidth{.4pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{subgridcolor}
+% \begin{macrocode}
+\def\psset@subgridcolor#1{\pst@getcolor{#1}\pssubgridcolor}
+\psset@subgridcolor{gray}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{subgriddots}
+% \begin{macrocode}
+\def\psset@subgriddots#1{%
+ \pst@cntg=#1\relax\edef\psk@subgriddots{\the\pst@cntg}}
+\psset@subgriddots{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{subgriddiv}
+% \begin{macrocode}
+\def\psset@subgriddiv#1{%
+ \pst@cntg=#1\relax\edef\psk@subgriddiv{\the\pst@cntg}}
+\psset@subgriddiv{5}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{gridlabels}
+% \begin{macrocode}
+\def\psset@gridlabels#1{\pst@getlength{#1}\psk@gridlabels}
+\psset@gridlabels{10pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{gridlabelcolor}
+% \begin{macrocode}
+\def\psset@gridlabelcolor#1{\pst@getcolor{#1}\psgridlabelcolor}
+\psset@gridlabelcolor{black}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Grid}
+% Syntax:
+% \begin{Ex}
+% <x1 y1 x2 y2 x-origin y-origin x-divsize y-divsize>\\
+% <numsubdiv griddots labelcolor labelsize> "Grid"
+% \end{Ex}
+% Coordinates should all be integers. Font needs to be defined before invoking
+% this procedure. This could probably be simplified.
+% \begin{macrocode}
+\pst@def{Grid}<%
+ /a 4 string def % Empty string
+ /b ED % Label size
+ /d ED % Label color procedure.
+ /n ED % Number of grid dots
+ cvi dup 1 lt { pop 1 } if /c ED % Number subdivisions
+ c div dup 0 eq { pop 1 } if /cy ED
+ c div dup 0 eq { pop 1 } if /cx ED % division spacing
+ cy div cvi /y ED % origin y
+ cx div cvi /x ED % origin x
+ cy div cvi /y2 ED % y2
+ cx div cvi /x2 ED % x2
+ cy div cvi /y1 ED % y1
+ cx div cvi /x1 ED % x1
+ /h y2 y1 sub 0 gt { 1 } { -1 } ifelse def % Sign of y2-y1
+ /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def % Sign of x2-x1
+ b 0 gt
+ { /z1 b 4 div CLW 2 div add def
+ /Helvetica findfont b scalefont setfont
+ /b b .95 mul CLW 2 div add def }
+ if
+ gsave
+ n 0 gt
+ { 1 setlinecap [ 0 cy n div ] 0 setdash }
+ { 2 setlinecap }
+ ifelse
+ /c x1 def /i 500 w mul x1 add def % Index
+ /e y cy mul def /f y1 cy mul def /g y2 cy mul def
+ x1 cx mul 0 T
+ { newpath
+ 0 e moveto
+ b 0 gt
+ { gsave d c a cvs dup
+ stringwidth pop /z2 ED
+ w 0 gt {z1} {z1 z2 add neg} ifelse
+ h 0 gt {b neg} {z1} ifelse
+ rmoveto show grestore } if
+ 0 f moveto 0 g L stroke
+ cx w mul 0 T
+ c x2 eq c i eq or {exit} if
+ /c c w add def
+ } loop
+ grestore
+ gsave
+ n 0 gt
+ { 1 setlinecap [ 0 cx n div ] 0 setdash }
+ { 2 setlinecap }
+ ifelse
+ /c y1 def /i 500 h mul y1 add def
+ /e x cx mul def /f x1 cx mul def /g x2 cx mul def
+ 0 y1 cy mul T
+ { newpath
+ e 0 moveto
+ b 0 gt { gsave d
+ c a cvs dup
+ stringwidth pop /z2 ED
+ w 0 gt {z1 z2 add neg} {z1} ifelse
+ h 0 gt {z1} {b neg} ifelse
+ rmoveto show grestore } if
+ f 0 moveto g 0 L stroke
+ 0 cy h mul T
+ c y2 eq c i eq or {exit} if
+ /c c h add def
+ } loop
+ grestore>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psgrid}
+% \begin{macrocode}
+\def\psgrid{\def\pst@par{}\pst@object{psgrid}}
+\def\psgrid@i{\@ifnextchar(%
+ {\psgrid@ii}{\expandafter\psgrid@iv\pic@coor}}
+\def\psgrid@ii(#1){\@ifnextchar(%
+ {\psgrid@iii(#1)}{\psgrid@iv(0,0)(0,0)(#1)}}
+\def\psgrid@iii(#1)(#2){\@ifnextchar(%
+ {\psgrid@iv(#1)(#2)}{\psgrid@iv(#1)(#1)(#2)}}
+\def\psgrid@iv(#1)(#2)(#3){%
+ \begin@SpecialObj
+ \pst@getcoor{#1}\pst@tempa
+ \pst@getcoor{#2}\pst@tempb
+ \pst@@getcoor{#3}%
+ \ifnum\psk@subgriddiv>1
+ \addto@pscode{gsave
+ \psk@subgridwidth SLW \pst@usecolor\pssubgridcolor
+ \pst@tempb \pst@coor \pst@tempa
+ \pst@number\psxunit \pst@number\psyunit
+ \psk@subgriddiv\space \psk@subgriddots\space
+ {} 0 \tx@Grid grestore}%
+ \fi
+ \addto@pscode{gsave
+ \psk@gridwidth SLW \pst@usecolor\psgridcolor
+ \pst@tempb \pst@coor \pst@tempa
+ \pst@number\psxunit \pst@number\psyunit
+ 1 \psk@griddots\space { \pst@usecolor\psgridlabelcolor }
+ \psk@gridlabels \tx@Grid grestore}%
+ \end@SpecialObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{LR-box commands}
+%
+% \begin{macro}{\ifpsmathbox,\everypsbox}
+% \begin{macrocode}
+\newif\ifpsmathbox
+\psmathboxtrue
+\def\pst@mathflag{\z@}
+\newtoks\everypsbox
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@makenotverbbox}
+% \begin{macrocode}
+\long\def\pst@makenotverbbox#1#2{%
+ \edef\pst@mathflag{%
+ \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}%
+ \setbox\pst@hbox=\hbox{%
+ \ifcase\pst@mathflag\or$\m@th\textstyle\or$\m@th\displaystyle\fi
+ {\the\everypsbox#2}%
+ \ifnum\pst@mathflag>\z@$\fi}%
+ #1}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@makeverbbox}
+% There is no way to do this such that with
+% \begin{LVerbatim}
+% \psframebox{\aftergroup\foo}
+% \end{LVerbatim}
+% "\foo" does not end up outside the box. That is why this is not the default
+% mode.
+% \begin{macrocode}
+\def\pst@makeverbbox#1{%
+ \def\pst@afterbox{#1}%
+ \edef\pst@mathflag{%
+ \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}%
+ \afterassignment\pst@beginbox
+ \setbox\pst@hbox\hbox}
+\def\pst@beginbox{%
+ \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
+ \bgroup\aftergroup\pst@endbox
+ \the\everypsbox}
+\def\pst@endbox{%
+ \ifnum\pst@mathflag>\z@$\fi
+ \egroup
+ \pst@afterbox}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psverbboxtrue,\psverbboxfalse}
+% \begin{macrocode}
+\def\pst@makebox{\pst@@makebox}
+\def\psverbboxtrue{\def\pst@@makebox{\pst@makeverbbox}}
+\def\psverbboxfalse{\def\pst@@makebox{\pst@makenotverbbox}}
+\psverbboxfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@longbox,\pst@makelongbox}
+% There is no way to do this such that with
+% \begin{LVerbatim}
+% \psframebox{\aftergroup\foo}
+% \end{LVerbatim}
+% "\foo" does not end up outside the box. That is why this is not the default
+% mode.
+% \begin{macrocode}
+\def\pst@longbox{%
+ \def\pst@makebox{%
+ \gdef\pst@makebox{\pst@@makebox}%
+ \pst@makelongbox}}
+\def\pst@makelongbox#1{%
+ \def\pst@afterbox{#1}%
+ \edef\pst@mathflag{%
+ \ifpsmathbox\ifmmode\ifinner 1\else 2\fi\else \z@\fi\else \z@\fi}%
+ \setbox\pst@hbox\hbox\bgroup
+ \aftergroup\pst@afterbox
+ \ifcase\pst@mathflag\or$\m@th\or$\m@th\displaystyle\fi
+ \begingroup
+ \the\everypsbox}
+\def\pst@endlongbox{%
+ \endgroup
+ \ifnum\pst@mathflag>\z@$\fi
+ \egroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pslongbox}
+% \begin{macrocode}
+\def\pslongbox#1#2{%
+ \@namedef{#1}{\pst@longbox#2}%
+ \@namedef{end#1}{\pst@endlongbox}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Frame boxes\label{Frameboxes}}
+%
+% \begin{macro}{framesep}
+% \begin{macrocode}
+\newdimen\psframesep
+\def\psset@framesep#1{\pssetlength\psframesep{#1}}
+\psset@framesep{3pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{boxsep}
+% \begin{macrocode}
+\newif\ifpsboxsep
+\def\psset@boxsep#1{\@nameuse{psboxsep#1}}
+\psset@boxsep{true}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@useboxpar}
+% \begin{macrocode}
+\def\pst@useboxpar{%
+ \use@par
+ \if@star
+ \let\pslinecolor\psfillcolor
+ \solid@star
+ \let\solid@star\relax
+ \fi
+ \ifpsdoubleline \pst@setdoublesep \fi}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psframebox}
+% "\psframebox" puts its argument in an "\hbox" and draws a frame around it
+% with thickness "\pst@linewidth", and with distance "\pst@framesep" between
+% each side of the frame (between the line making up each side) and each side
+% of the box. The result is a box with no depth and with width and height
+% equal to the width and height of the original box, plus
+% 2("\pslinewidth"+"\psframesep").
+%
+% "\pst@dima" is set to the distance between each side of the original box and
+% the outer side of the frame (i.e., the side of the resulting box).
+% "\pst@dimb" is set to the depth of the resulting box, "\pst@dimc" is set to
+% the height plus depth of this box, and "\pst@dimd" is set to the width.
+% "\psframe" does the drawing of the frame.
+% \begin{macrocode}
+\def\psframebox{\def\pst@par{}\pst@object{psframebox}}
+\def\psframebox@i{\pst@makebox\psframebox@ii}
+\def\psframebox@ii{%
+ \begingroup
+ \pst@useboxpar
+ \pst@dima=\pslinewidth
+ \advance\pst@dima by \psframesep
+ \pst@dimc=\wd\pst@hbox\advance\pst@dimc by \pst@dima
+ \pst@dimb=\dp\pst@hbox\advance\pst@dimb by \pst@dima
+ \pst@dimd=\ht\pst@hbox\advance\pst@dimd by \pst@dima
+ \setbox\pst@hbox=\hbox{%
+ \ifpsboxsep\kern\pst@dima\fi
+ \begin@ClosedObj
+ \addto@pscode{%
+ \psk@cornersize
+ \pst@number\pst@dima neg
+ \pst@number\pst@dimb neg
+ \pst@number\pst@dimc
+ \pst@number\pst@dimd
+ .5
+ \tx@Frame}%
+ \def\pst@linetype{2}%
+ \showpointsfalse
+ \end@ClosedObj
+ \box\pst@hbox
+ \ifpsboxsep\kern\pst@dima\fi}%
+ \ifpsboxsep\dp\pst@hbox=\pst@dimb\ht\pst@hbox=\pst@dimd\fi
+ \leavevmode\box\pst@hbox
+ \endgroup}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psdblframebox}
+% \begin{macrocode}
+\def\psdblframebox{\def\pst@par{}\pst@object{psdblframebox}}
+\def\psdblframebox@i{\addto@par{doubleline=true}\psframebox@i}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psclip,\endclip}
+% Clipping involves drawing graphics objects, not grouped by "gsave" and
+% "grestore", which may affect the graphics environment. Furthermore, to reset
+% the clipping path, we must either use "grestore" or "initclip", neither of
+% which is robust.
+% \begin{macrocode}
+\def\psclip#1{%
+ \leavevmode
+ \begingroup
+ \begin@psclip
+ \begingroup
+ \def\use@pscode{%
+ \pstVerb{%
+ \pst@dict
+ /mtrxc CM def
+ CP CP T
+ \tx@STV
+ \psk@origin
+ \psk@swapaxes
+ newpath
+ \pst@code
+ clip
+ newpath
+ mtrxc setmatrix
+ moveto
+ 0 setgray
+ end}%
+ \gdef\pst@code{}}%
+ \def\@multips(##1)(##2)##3##4{\pst@misplaced\multips}%
+ \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}%
+ \hbox to\z@{#1}%
+ \endgroup
+ \def\endpsclip{%
+ \end@psclip
+ \endgroup}%
+ \ignorespaces}
+\def\endpsclip{\pst@misplaced\endpsclip}
+\let\begin@psclip\relax
+\def\end@psclip{\pstVerb{currentpoint initclip moveto}}
+\def\AltClipMode{%
+ \def\end@psclip{\pstVerb{\pst@grestore}}%
+ \def\begin@psclip{\pstVerb{gsave}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psclipbox}
+% \begin{macrocode}
+\def\clipbox{\@ifnextchar[{\psclipbox@}{psclipbox@[\z@]}}
+\def\clipbox@[#1]{\pst@makebox\psclipbox@@{#1}}
+\def\clipbox@@#1{%
+ \pssetlength\pst@dimg{#1}%
+ \leavevmode\hbox{%
+ \begin@psclip
+ \pst@Verb{%
+ CM \tx@STV CP T newpath
+ /a \pst@number\pst@dimg def
+ /w \pst@number{\wd\pst@hbox}a add def
+ /d \pst@number{\dp\pst@hbox}a add neg def
+ /h \pst@number{\ht\pst@hbox}a add def
+ a neg d moveto
+ a neg h L
+ w h L
+ w d L
+ closepath
+ clip
+ newpath
+ 0 0 moveto
+ setmatrix}%
+ \unhbox\pst@hbox
+ \end@psclip}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psshadowbox}
+% \begin{macrocode}
+\def\psshadowbox{%
+ \def\pst@par{}\pst@object{psshadowbox}}
+\def\psshadowbox@i{\pst@makebox\psshadowbox@ii}
+\def\psshadowbox@ii{%
+ \begingroup
+ \pst@useboxpar
+ \psshadowtrue
+ \psboxseptrue
+ \def\psk@shadowangle{-45 }%
+ \setbox\pst@hbox=\hbox{\psframebox@ii}%
+ \pst@dimh=\psk@shadowsize\p@
+ \pst@dimh=.7071\pst@dimh
+ \pst@dimg=\dp\pst@hbox
+ \advance\pst@dimg\pst@dimh
+ \dp\pst@hbox=\pst@dimg
+ \pst@dimg=\wd\pst@hbox
+ \advance\pst@dimg\pst@dimh
+ \wd\pst@hbox=\pst@dimg
+ \leavevmode
+ \box\pst@hbox
+ \endgroup}
+%
+%
+% \begin{macro}{\pscirclebox}
+% "\pscirclebox@ii"'s argument is a hook that is used by node commands.
+% \begin{macrocode}
+\def\pscirclebox{\def\pst@par{}\pst@object{pscirclebox}}
+\def\pscirclebox@i{\pst@makebox{\pscirclebox@ii{}}}
+\def\pscirclebox@ii#1{%
+ \begingroup
+ \pst@useboxpar
+ \setbox\pst@hbox=\hbox{#1\pscirclebox@iii\box\pst@hbox}%
+ \ifpsboxsep
+ \pst@dima=.5\wd\pst@hbox
+ \pst@pyth\pst@dima\pst@dimb\pst@dimc
+ \advance\pst@dimc\pslinewidth
+ \advance\pst@dimc\psframesep
+ \setbox\pst@hbox=\hbox to2\pst@dimc{%
+ \hss
+ \vbox{\vskip\pst@dimc\vskip-\pst@dimb\box\pst@hbox}%
+ \hss}%
+ \advance\pst@dimc-\pst@dimb
+ \dp\pst@hbox=\pst@dimc
+ \fi
+ \leavevmode\box\pst@hbox
+ \endgroup}
+\def\pscirclebox@iii{%
+ \if@star
+ \pslinewidth\z@
+ \pstverb{\pst@dict \tx@STP \pst@usecolor\psfillcolor
+ newpath \pscirclebox@iv \tx@SD end}%
+ \else
+ \begin@ClosedObj
+ \def\pst@linetype{4}\showpointsfalse
+ \addto@pscode{%
+ \pscirclebox@iv CLW 2 div add 0 360 arc closepath}%
+ \end@ClosedObj
+ \fi}
+\def\pscirclebox@iv{%
+ \pst@number{\wd\pst@hbox}2 div
+ \pst@number{\ht\pst@hbox}\pst@number{\dp\pst@hbox}add 2 div
+ 2 copy \pst@number{\dp\pst@hbox}sub 4 2 roll
+ \tx@Pyth \pst@number\psframesep add }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psovalbox}
+% The argument of "\psovalbox@ii" is a hook used by node commands.
+% \begin{macrocode}
+\def\psovalbox{\def\pst@par{}\pst@object{psovalbox}}
+\def\psovalbox@i{\pst@makebox{\psovalbox@ii{}}}
+\def\psovalbox@ii#1{%
+ \begingroup
+ \pst@useboxpar
+ \pst@dimd=.707\pslinewidth\advance\pst@dimd by 1.414\psframesep
+ \pst@dimg=\ht\pst@hbox\advance\pst@dimg\dp\pst@hbox
+ \pst@dimb=.707\pst@dimg\advance\pst@dimb\pst@dimd
+ \pst@dima=.707\wd\pst@hbox\advance\pst@dima\pst@dimd
+ \setbox\pst@hbox=\hbox{#1\psovalbox@iii\box\pst@hbox}%
+ \ifpsboxsep
+ \setbox\pst@hbox\hbox to 2\pst@dima{\hss\unhbox\pst@hbox\hss}%
+ \advance\pst@dimb-.5\pst@dimg
+ \pst@dimg\ht\pst@hbox
+ \advance\pst@dimg\pst@dimb
+ \ht\pst@hbox=\pst@dimb
+ \pst@dimg=\dp\pst@hbox
+ \advance\pst@dimg\pst@dimb
+ \dp\pst@hbox=\pst@dimb
+ \fi
+ \leavevmode\box\pst@hbox
+ \endgroup}
+\def\psovalbox@iii{%
+ \begin@ClosedObj
+ \addto@pscode{%
+ 0 360
+ \pst@number\pst@dima \pst@number\pst@dimb
+ \pst@number{\wd\pst@hbox}2 div
+ \pst@number\pst@dimg 2 div \pst@number{\dp\pst@hbox}sub
+ \tx@Ellipse
+ closepath}%
+ \def\pst@linetype{2}%
+ \end@ClosedObj}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Circles, discs and ellipses\label{Circles}}
+%
+%
+% \begin{macro}{\psset@arcsep,\psk@arcsepA,\psk@arcsepB}
+% \begin{macrocode}
+\def\psset@arcsepA#1{\pst@getlength{#1}\psk@arcsepA}
+\def\psset@arcsepB#1{\pst@getlength{#1}\psk@arcsepB}
+\def\psset@arcsep#1{%
+ \psset@arcsepA{#1}\let\psk@arcsepB\psk@arcsepA}
+\psset@arcsep{0}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@Arc}
+% Syntax:
+% \begin{LVerbatim}
+% <angle> {<arrow>} {<add/sub>} ArcArrow <angle>
+% \end{LVerbatim}
+% "r"=radius and "c"=57.2957/"r" should also be defined.
+% \begin{macrocode}
+\pst@def{ArcArrow}<%
+ /d ED % add/sub
+ /b ED % arrow procedure
+ /a ED % angle
+ gsave
+ newpath
+ 0 -1000 moveto
+ clip % Set clippath far from arrow.
+ newpath
+ 0 1 0 0 b % Draw arrow to determine length.
+ grestore
+ c mul
+ /e ED % /e equals angle to adjust for arrow length.
+ pop pop pop
+ r a e d \tx@PtoC % `a e d' is end angle for arrow.
+ y add exch x add exch
+ r a \tx@PtoC % Now arrow end coor and begin coor are on stack.
+ y add exch x add exch
+ b pop pop pop pop % Draw arrow, and discard coordinates.
+ a e d % End angle of arrow.
+ CLW 8 div c mul neg d> % Adjust angle to give a little overlap.
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psarc}
+% \begin{macrocode}
+\def\psarc{\def\pst@par{}\pst@object{psarc}}
+\def\psarc@i{%
+ \@ifnextchar({\psarc@iii}{\psarc@ii}}
+\def\psarc@ii#1{\addto@par{arrows=#1}%
+ \@ifnextchar({\psarc@iii}{\psarc@iii(0,0)}}
+\def\psarc@iii(#1)#2#3#4{%
+ \begin@OpenObj
+ \pst@getangle{#3}\pst@tempa
+ \pst@getangle{#4}\pst@tempb
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dima{#2}%
+ \addto@pscode{\psarc@iv \psarc@v}%
+ \gdef\psarc@type{0}%
+ \showpointsfalse
+ \end@OpenObj}
+\def\psarc@iv{%
+ \pst@coor /y ED /x ED
+ /r \pst@number\pst@dima def
+ /c 57.2957 r \tx@Div def
+ /angleA
+ \pst@tempa
+ \psk@arcsepA c mul 2 div
+ \ifcase \psarc@type add \or sub \fi
+ def
+ /angleB
+ \pst@tempb
+ \psk@arcsepB c mul 2 div
+ \ifcase \psarc@type sub \or add \fi
+ def
+ \ifshowpoints\psarc@showpoints\fi
+ \ifx\psk@arrowA\@empty
+ \ifnum\psk@liftpen=2
+ r angleA \tx@PtoC
+ y add exch x add exch
+ moveto
+ \fi
+ \fi}
+\def\psarc@v{%
+ x y r
+ angleA
+ \ifx\psk@arrowA\@empty\else
+ { ArrowA CP }
+ { \ifcase\psarc@type add \or sub \fi }
+ \tx@ArcArrow
+ \fi
+ angleB
+ \ifx\psk@arrowB\@empty\else
+ { ArrowB }
+ { \ifcase\psarc@type sub \or add \fi }
+ \tx@ArcArrow
+ \fi
+ \ifcase\psarc@type arc \or arcn \fi}
+\def\psarc@type{0}
+\def\psarc@showpoints{%
+ gsave
+ newpath
+ x y moveto
+ x y r \pst@tempa \pst@tempb
+ \ifcase\psarc@type arc \or arcn \fi
+ closepath
+ CLW 2 div SLW
+ [ \psk@dash\space ] 0 setdash stroke
+ grestore }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psarcn}
+% \begin{macrocode}
+\def\psarcn{\def\pst@par{}\pst@object{psarcn}}
+\def\psarcn@i{\def\psarc@type{1}\psarc@i}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pscircle}
+% \begin{macrocode}
+\def\pscircle{\def\pst@par{}\pst@object{pscircle}}
+\def\pscircle@i{\@ifnextchar({\pscircle@do}{\pscircle@do(0,0)}}
+\def\pscircle@do(#1)#2{%
+ \if@star
+ {\use@par\qdisk(#1){#2}}%
+ \else
+ \begin@ClosedObj
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dimc{#2}%
+ \def\pst@linetype{4}%
+ \addto@pscode{%
+ \pst@coor
+ \pst@number\pst@dimc
+ \psk@dimen CLW mul sub
+ 0 360 arc
+ closepath}%
+ \showpointsfalse
+ \end@ClosedObj
+ \fi
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\qdisk}
+% \begin{macrocode}
+\def\qdisk(#1)#2{%
+ \def\pst@par{}%
+ \begin@SpecialObj
+ \pst@@getcoor{#1}%
+ \pssetlength\pst@dimg{#2}%
+ \addto@pscode{\pst@coor \pst@number\pst@dimg \tx@SD}%
+ \end@SpecialObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pswedge}
+% \begin{macrocode}
+\def\pswedge{\def\pst@par{}\pst@object{pswedge}}
+\def\pswedge@i{\@ifnextchar({\pswedge@ii}{\pswedge@ii(0,0)}}
+\def\pswedge@ii(#1)#2#3#4{%
+ \begin@ClosedObj
+ \pssetlength\pst@dimc{#2}
+ \pst@getangle{#3}\pst@tempa
+ \pst@getangle{#4}\pst@tempb
+ \pst@@getcoor{#1}%
+ \def\pst@linetype{1}%
+ \addto@pscode{%
+ \pst@coor
+ 2 copy
+ moveto
+ \pst@number\pst@dimc \psk@dimen CLW mul sub % Adjusted radius
+ \pst@tempa \pst@tempb
+ arc
+ closepath}%
+ \showpointsfalse
+ \end@ClosedObj}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{Ellipse}
+% Syntax:
+% \begin{Ex}
+% <angle1 angle2 x-radius y-radius x-origin y-origin> "Ellipse"
+% \end{Ex}
+% \begin{macrocode}
+\pst@def{Ellipse}<%
+ /mtrx CM def
+ T
+ scale
+ 0 0 1 5 3 roll arc
+ mtrx setmatrix>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\psellipse}
+% \begin{macrocode}
+\def\psellipse{\def\pst@par{}\pst@object{psellipse}}
+\def\psellipse@i(#1){\@ifnextchar(%
+ {\psellipse@ii(#1)}{\psellipse@ii(0,0)(#1)}}
+\def\psellipse@ii(#1)(#2){%
+ \begin@ClosedObj
+ \pst@getcoor{#1}\pst@tempa
+ \pst@@getcoor{#2}%
+ \addto@pscode{%
+ 0 360
+ \pst@coor
+ \ifdim\psk@dimen\p@=\z@\else
+ \psk@dimen CLW mul dup 3 1 roll
+ sub 3 1 roll sub exch
+ \fi
+ \pst@tempa
+ \tx@Ellipse
+ closepath}%
+ \def\pst@linetype{2}%
+ \end@ClosedObj}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Repetition}
+%
+% \begin{macro}{\multirput}
+% \begin{macrocode}
+\def\multirput{%
+ \begingroup\pst@getref{\pst@getrputrot\multirput@i}}
+\def\multirput@i(#1){\@ifnextchar(%
+ {\multirput@ii(#1)}{\multirput@ii(0,0)(#1)}}
+\def\multirput@ii(#1,#2)(#3,#4)#5{%
+ \pst@makebox{\multirput@iii(#1,#2)(#3,#4){#5}}}
+\def\multirput@iii(#1,#2)(#3,#4)#5{%
+ \pst@makesmall\pst@hbox
+ \ifx\pst@rot\@empty\else\pst@rotate\pst@hbox\fi
+ \pssetxlength\pst@dima{#1}\pssetylength\pst@dimb{#2}
+ \pssetxlength\pst@dimc{#3}\pssetylength\pst@dimd{#4}
+ \pst@cntg=#5\relax\pst@cnth=0\relax
+ \leavevmode
+ \loop\ifnum\pst@cntg>\pst@cnth
+ \vbox to \z@{\vss\hbox to \z@{%
+ \kern\pst@dima\copy\pst@hbox\hss}\vskip\pst@dimb}%
+ \advance\pst@dima by\pst@dimc
+ \advance\pst@dimb by\pst@dimd
+ \advance\pst@cnth by 1
+ \repeat
+ \endgroup\ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\multips}
+% \begin{macrocode}
+\def\multips{\begingroup\pst@getrputrot\multips@i}
+\def\multips@i(#1){\@ifnextchar({\@multips@ii(#1)}{\@multips@ii(0,0)(#1)}}
+\def\@multips@ii(#1)(#2)#3#4{%
+ \pst@getcoor{#1}\pst@tempa
+ \pst@@getcoor{#2}%
+ \pst@cnta=#3\relax
+ \addto@pscode{%
+ \pst@tempa T \the\pst@cnta\space \pslbrace
+ gsave \ifx\pst@rot\@empty\else\pst@rot rotate \fi }%
+ \hbox to\z@{%
+ \def\init@pscode{%
+ \addto@pscode{%
+ gsave
+ \pst@number\pslinewidth SLW
+ \pst@usecolor\pslinecolor}}%
+ \def\use@pscode{\addto@pscode{grestore}}%
+ \def\psclip##1{\pst@misplaced\psclip}%
+ \def\nc@object##1##2##3##4{\pst@misplaced{node connection}}%
+ #4}%
+ \addto@pscode{grestore \pst@coor T \psrbrace repeat}%
+ \leavevmode
+ \use@pscode
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Scaling\label{Scaling}}
+%
+% \begin{macro}{\scalebox}
+% \begin{macrocode}
+\def\scalebox#1{%
+ \begingroup
+ \pst@getscale{#1}\pst@tempa
+ \pst@makebox{\@scalebox}}
+\def\@scalebox{%
+ \leavevmode
+ \ifx\pst@tempa\@empty
+ \box\pst@hbox
+ \else
+ \hbox{%
+ \ht\pst@hbox=\pst@temph\ht\pst@hbox%
+ \dp\pst@hbox=\pst@temph\dp\pst@hbox%
+ \pst@dima=\pst@tempg\wd\pst@hbox%
+ \ifdim\pst@dima<\z@\kern-\pst@dima\fi
+ \pst@Verb{CP CP T \pst@tempa \tx@NET}%
+ \hbox to \z@{\box\pst@hbox\hss}%
+ \pst@Verb{%
+ CP CP T
+ 1 \pst@tempg\space div 1 \pst@temph\space div scale
+ \tx@NET}%
+ \ifdim\pst@dima>\z@\kern\pst@dima\fi}%
+ \fi
+ \endgroup}
+\pslongbox{Scalebox}{\scalebox}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\scaleboxto}
+% \begin{macrocode}
+\def\scaleboxto(#1,#2){%
+ \begingroup
+ \pssetlength\pst@dima{#1}%
+ \pssetlength\pst@dimb{#2}%
+ \pst@makebox{\@scaleboxto\@scalebox}}
+\def\@scaleboxto{%
+ \ifdim\pst@dima=\z@\else
+ \pst@divide{\pst@dima}{\wd\pst@hbox}\pst@tempg
+ \fi
+ \ifdim\pst@dimb=\z@
+ \let\pst@temph\pst@tempg
+ \else
+ \pst@dimc=\ht\pst@hbox\advance\pst@dimc\dp\pst@hbox
+ \pst@divide{\pst@dimb}{\pst@dimc}\pst@temph
+ \ifdim\pst@dima=\z@\let\pst@tempg\pst@temph\fi
+ \fi
+ \edef\pst@tempa{\pst@tempg\space\pst@temph\space scale }%
+ \ifdim\pst@dima=\z@
+ \ifdim\pst@dimb=\z@
+ \@pstrickserr{%
+ \string\scaleboxto\space dimensions cannot both be zero}\@ehpa
+ \def\pst@tempa{}%
+ \fi\fi}
+\pslongbox{Scaleboxto}{\scaleboxto}
+% \end{macrocode}
+% \end{macro}
+%
+% \section{Rotation: The simple version\label{Rotation:simple}}
+%
+% \begin{macro}{\tx@Rot}
+% \begin{macrocode}
+\pst@def{Rot}<\pstrotate>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rotateleft,\rotateright,\rotatedown}
+% These are pretty standard, except that they do not use "gsave" and
+% "grestore".
+% \begin{macrocode}
+\def\rotateleft{\pst@makebox{\@rotateleft\pst@hbox}}
+\def\@rotateleft#1{%
+ \leavevmode\hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
+ \pst@Verb{90 \tx@Rot}
+ \vbox to \z@{\vss\hbox to \z@{\box#1\hss}\vskip\z@}%
+ \pst@Verb{-90 \tx@Rot}}}}
+\def\rotateright{\pst@makebox{\@rotateright\pst@hbox}}
+\def\@rotateright#1{%
+ \hbox{\hskip\ht#1\hskip\dp#1\vbox{\vskip\wd#1%
+ \pst@Verb{-90 \tx@Rot}
+ \vbox to \z@{\hbox to \z@{\hss\box#1}\vss}%
+ \pst@Verb{90 \tx@Rot}}}}
+\def\rotatedown{\pst@makebox{\@rotatedown\pst@hbox}}
+\def\@rotatedown#1{%
+ \hbox{\hskip\wd#1\vbox{\vskip\ht#1\vskip\dp#1%
+ \pst@Verb{180 \tx@Rot}%
+ \vbox to \z@{\hbox to \z@{\box#1\hss}\vss}%
+ \pst@Verb{-180 \tx@Rot}}}}
+\pslongbox{Rotateleft}{\rotateleft}
+\pslongbox{Rotateright}{\rotateright}
+\pslongbox{Rotatedown}{\rotatedown}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{{\tt\Backslash rput} and company}
+%
+% \n\rput\ and similar commands are divided into fours steps:
+% \begin{enumerate}
+% \item The four arguments are collected:
+% \begin{enumerate}
+% \item The reference point argument is stored in \n\refpoint@x\ and
+% \n\refpoint@y.
+% \item The rotation angle is store in \n\pst@rot.
+% \item The translation coordinate is passed to the command that is returned
+% to after the box is made.
+% \item The RH-box is assigned to the register \n\pst@hbox.
+% \end{enumerate}
+% \item The box is made zero-dimension and positioned at the reference point
+% by \n\pst@makesmall.
+% \item The box is rotated by \n\pst@rotate.
+% \item The box is translated by \n\psput@.
+% \end{enumerate}
+%
+% \subsection{Reference point}
+%
+% \begin{macro}{\pst@getref}
+% \begin{macrocode}
+\def\pst@getref#1{%
+ \@ifnextchar[%
+ {\def\refpoint@x{.5}\def\refpoint@y{.5}\pst@@getref{#1}}%
+ {\let\refpoint@x\relax#1}}
+\def\pst@@getref#1[#2]{%
+ \pst@expandafter\pst@@@getref{#2}\@empty,,\@nil#1}
+\def\pst@@@getref#1#2,#3,#4\@nil{%
+ \ifx\@empty#3\@empty
+ \@nameuse{getref@#1}\@nameuse{getref@#2}%
+ \else
+ \pst@checknum{#1#2}\refpoint@x
+ \pst@checknum{#3}\refpoint@y
+ \fi}
+\def\getref@t{\def\refpoint@y{1}}
+\def\getref@b{\def\refpoint@y{0}}
+\def\getref@B{\let\refpoint@y\relax}
+\def\getref@l{\def\refpoint@x{0}}
+\def\getref@r{\def\refpoint@x{1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@makesmall}
+% \begin{macrocode}
+\def\pst@makesmall#1{%
+ \ifx\refpoint@x\relax
+ \setbox#1=\hbox to\z@{\hss\vbox to \z@{\vss\box#1\vss}\hss}%
+ \else
+ \pst@@makesmall{#1}%
+ \fi}
+\def\pst@@makesmall#1{%
+ \pst@dimh=\refpoint@x\wd#1%
+ \ifx\refpoint@y\relax
+ \pst@dimg=\dp#1%
+ \else
+ \pst@dimg=\refpoint@y\ht#1%
+ \advance\pst@dimg\refpoint@y\dp#1%
+ \fi
+ \setbox#1=\hbox to\z@{%
+ \hskip-\pst@dimh\vbox to\z@{\vss\box#1\vskip-\pst@dimg}\hss}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Rotation}
+%
+% \begin{macro}{\pst@getrputrot}
+% \begin{macrocode}
+\def\pst@getrputrot#1{%
+ \@ifnextchar(%
+ {\def\pst@rot{}#1}%
+ {\pst@getrot{\@ifnextchar({#1}{#1(0,0)}}}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getrot}
+% \begin{macrocode}
+\def\pst@getrot#1#2{%
+ \pst@expandafter{\@ifnextchar*{\pst@@@getrot}{\pst@@getrot}}{#2}\@nil
+ \ifx\pst@rotlist\@empty\else
+ \edef\pst@rotlist{\pst@rotlist \pst@rot add }%
+ \fi
+ #1}
+\def\pst@@getrot#1\@nil{%
+ \def\next##1@#1=##2@##3\@nil{%
+ \ifx\relax##2%
+ \pst@getangle{#1}\pst@rot
+ \else
+ \def\pst@rot{##2}%
+ \fi}%
+ \expandafter\next\pst@rottable @#1=\relax @\@nil}
+\def\pst@@@getrot#1#2\@nil{%
+ \pst@@getrot#2\@nil
+ \edef\pst@rot{\pst@rotlist neg \ifx\pst@rot\@empty\else\pst@rot add \fi}}%
+\def\pst@rotlist{0 }
+\def\pst@rot{}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@rottable}
+% The trailing spaces must be included, except when empty.
+% \begin{macrocode}
+\def\pst@rottable{%
+ @0=%
+ @U=%
+ @L=90 %
+ @D=180 %
+ @R=-90 %
+ @N=\pst@rotlist neg %
+ @W=\pst@rotlist neg 90 add %
+ @S=\pst@rotlist neg 180 add %
+ @E=\pst@rotlist neg 90 sub }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@rotate}
+% The last argument should be the register for a zero-dimensional box that is
+% to be rotated. By first putting the box in a zero-dimension box centered at
+% the reference point of the original box, we do not have to use "gsave" and
+% "grestore".
+% \begin{macrocode}
+\def\pst@rotate#1{%
+ \setbox#1=\hbox{%
+ \pst@Verb{\pst@rot \tx@Rot}%
+ \box#1%
+ \pst@Verb{\pst@rot neg \tx@Rot}}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \subsection{Translation}
+%
+% \begin{macro}{\psput@cartesian,\psput@special}
+% \n\psput@\ is defined by the \n\NormalCoor\ and \n\SpecialCoor\ commands to
+% invoke either "\psput@cartesian" or "\psput@special".
+%
+% "\psput@cartesian" is for Cartesian coordinates only. \TeX\ does the
+% translation.
+%
+% "\psput@special" works for any coordinates. PostScript does the translation.
+% "/lmtrx" is used to store a stack of transformation for nested translations.
+% \begin{macrocode}
+\def\psput@cartesian#1{%
+ \hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}}
+\def\psput@special#1{%
+ \hbox{%
+ \pst@Verb{{ \pst@coor } \tx@PutCoor \tx@PutBegin}%
+ \box#1%
+ \pst@Verb{\tx@PutEnd}}}
+\pst@def{PutCoor}<%
+ gsave
+ CP T
+ CM
+ \tx@STV
+ exch exec
+ moveto
+ setmatrix
+ CP
+ grestore>
+\pst@def{PutBegin}<%
+ /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+ CP 4 2 roll T moveto>
+\pst@def{PutEnd}<CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto>
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The real thing}
+%
+% \begin{macro}{\begin@psput,\end@psput}
+% \begin{macrocode}
+\def\begin@psput#1{\begingroup\pst@killglue\leavevmode\pst@ifstar{#1}}%
+\def\end@psput#1(#2){%
+ \pst@makebox{%
+ \if@star
+ \setbox\pst@hbox\hbox{\psframebox*[boxsep=false]{\unhbox\pst@hbox}}%
+ \fi
+ #1(#2)%
+ \endgroup
+ \ignorespaces}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\rput}
+% \begin{macrocode}
+\def\rput{\begin@psput{\pst@getref{\pst@getrputrot{\end@psput\rput@i}}}}
+\def\rput@i(#1){%
+ \pst@makesmall\pst@hbox
+ \ifx\pst@rot\@empty\else\pst@rotate\pst@hbox\fi
+ \psput@{#1}\pst@hbox}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\cput}
+% The first argument of "\cput@iii" is a hook used by node commands.
+% \begin{macrocode}
+\def\cput{\def\pst@par{}\pst@object{cput}}
+\def\cput@i{\begingroup\pst@killglue\leavevmode\pst@getrputrot\cput@ii}
+\def\cput@ii(#1){\pst@makebox{\cput@iii{}(#1)}}
+\def\cput@iii#1(#2){%
+ \setbox\pst@hbox=\hbox{\psboxsepfalse\pscirclebox@ii{#1}}%
+ \let\refpoint@x\relax
+ \rput@i(#2)%
+ \endgroup
+ \ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{{\tt\Backslash uput} and company}
+%
+% The difference between "\uput" and \n\rput\ is that "\rput"'s reference
+% point is replaced by labelsep and reference angle arguments.
+%
+% \begin{macro}{\psset@labelsep,\pslabelsep}
+% \begin{macrocode}
+\newdimen\pslabelsep
+\def\psset@labelsep#1{\pssetlength\pslabelsep{#1}}
+\psset@labelsep{5pt}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getrefangle}
+% \begin{macrocode}
+\def\pst@getrefangle#1\@nil{%
+ \def\next##1@#1=##2"##3@##4\@nil{%
+ \ifx\relax##2%
+ \pst@getangle{#1}\pst@refangle
+ \def\pst@uputref{}%
+ \else
+ \edef\pst@refangle{##2}%
+ \edef\pst@uputref{##3}%
+ \fi}%
+ \expandafter\next\pst@refangletable @#1=\relax"@\@nil}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@refangletable}
+% \begin{macrocode}
+\def\pst@refangletable{%
+ @r=0"20%
+ @u=90"02%
+ @l=180"10%
+ @d=-90"01%
+ @ur=45"22%
+ @ul=135"12%
+ @dr=-135"21%
+ @dl=-45"11}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \begin{macro}{\uput}
+% \begin{macrocode}
+\def\uput{\begin@psput{\@ifnextchar[{\uput@ii}{\uput@i}}}
+\def\uput@i#1{\pssetlength\pslabelsep{#1}\uput@ii}
+\def\uput@ii[#1]{%
+ \pst@expandafter\pst@getrefangle{#1}\@nil
+ \pst@getrputrot{\end@psput\uput@iii}}
+\def\uput@iii(#1){%
+ \ifx\pst@uputref\@empty
+ \uput@iv\tx@UUput
+ \else
+ \ifx\pst@rot\@empty
+ \expandafter\uput@v\pst@uputref
+ \else
+ \uput@iv\tx@UUput
+ \fi
+ \fi
+ \psput@{#1}\pst@hbox}
+\def\uput@iv#1{%
+ \edef\pst@coor{%
+ \pst@number\pslabelsep
+ \pst@number{\wd\pst@hbox}%
+ \pst@number{\ht\pst@hbox}%
+ \pst@number{\dp\pst@hbox}%
+ \pst@refangle\space \ifx\pst@rot\@empty\else\pst@rot\space sub \fi
+ \tx@Uput #1}%
+ \setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}%
+ \setbox\pst@hbox=\psput@special\pst@hbox
+ \ifx\pst@rot\@empty\else\pst@rotate\pst@hbox\fi}
+\def\uput@v#1#2{%
+ \ifnum#1>\z@\ifnum#2>\z@\pslabelsep=.707\pslabelsep\fi\fi
+ \setbox\pst@hbox=\vbox to\z@{%
+ \ifnum#2=1 \vskip\pslabelsep\else\vss\fi
+ \hbox to\z@{%
+ \ifnum#1=2 \hskip\pslabelsep\else\hss\fi
+ \box\pst@hbox
+ \ifnum#1=1 \hskip\pslabelsep\else\hss\fi}%
+ \ifnum#2=2 \vskip\pslabelsep\else\vss\fi}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\tx@Uput}
+% I forget how this works, but it does.
+% \begin{macrocode}
+\pst@def{Uput}<%
+ /a ED
+ add 2 div /h ED
+ 2 div /w ED
+ /s a sin def
+ /c a cos def
+ /b
+ s abs c abs 2 copy gt
+ dup /q ED
+ { pop } { exch pop } ifelse
+ def
+ /w1 c b div w mul def
+ /h1 s b div h mul def
+ q
+ { w1 abs w sub dup c mul abs }
+ { h1 abs h sub dup s mul abs }
+ ifelse>
+\pst@def{UUput}<%
+ /z ED
+ abs /y ED
+ /x ED
+ q
+ { x s div c mul abs y gt }
+ { x c div s mul abs y gt }
+ ifelse
+ { x x mul y y mul sub z z mul add sqrt z add }
+ { q { x s div } { x c div } ifelse abs }
+ ifelse
+ a \tx@PtoC h1 add exch w1 add exch>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@getlabelsep,\Rput}
+% "\Rput" is an obsolete version of "\uput".
+% \begin{macrocode}
+\def\pst@getlabelsep#1{%
+ \@ifnextchar[%
+ {\def\refpoint@x{.5}\def\refpoint@y{.5}\pst@@getref{#1}}%
+ {\pst@@getlabelsep{#1}}}
+\def\pst@@getlabelsep#1#2{\pssetlength\pslabelsep{#2}\pst@getref{#1}}
+\def\Rput{%
+ \begin@psput{\pst@getlabelsep{\pst@getrputrot{\end@psput{\Rput@i\rput@i}}}}}
+\def\Rput@i{%
+ \pst@dimg=\dp\pst@hbox
+ \advance\pst@dimg\pslabelsep
+ \dp\pst@hbox=\pst@dimg
+ \pst@dimg=\ht\pst@hbox
+ \advance\pst@dimg\pslabelsep
+ \ht\pst@hbox=\pst@dimg
+ \setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}%
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Pictures\label{Pictures}}
+%
+% \begin{macro}{\pspicture}
+% \begin{macrocode}
+\def\pspicture{\begingroup\pst@ifstar\pst@picture}
+\def\pst@picture{%
+ \@ifnextchar[{\pst@@picture}{\pst@@picture[0]}}
+\def\pst@@picture[#1]#2(#3,#4){%
+ \@ifnextchar({\pst@@@picture[#1](#3,#4)}%
+ {\pst@@@picture[#1](0,0)(#3,#4)}}
+\def\pst@@@picture[#1](#2,#3)(#4,#5){%
+ \pssetxlength\pst@dima{#2}\pssetylength\pst@dimb{#3}%
+ \pssetxlength\pst@dimc{#4}\pssetylength\pst@dimd{#5}%
+ \def\pst@tempa{#1}%
+ \setbox\pst@hbox=\hbox\bgroup
+ \begingroup\KillGlue
+ \@ifundefined{@latexerr}{}{\let\unitlength\psunit}%
+ \edef\pic@coor{(#2,#3)(#2,#3)(#4,#5)}\ignorespaces}
+\def\pic@coor{(0,0)(0,0)(10,10)}
+\def\endpspicture{%
+ \pst@killglue
+ \endgroup
+ \egroup
+ \ifdim\wd\pst@hbox=\z@\else
+ \@pstrickserr{Extraneous space in the pspicture environment}%
+ {Type \space <return> \space to procede.}%
+ \fi
+ \ht\pst@hbox=\pst@dimd
+ \dp\pst@hbox=-\pst@dimb
+ \setbox\pst@hbox=\hbox{%
+ \kern-\pst@dima
+ \ifx\pst@tempa\@empty\else
+ \advance\pst@dimd-\pst@dimb
+ \pst@dimd=\pst@tempa\pst@dimd
+ \advance\pst@dimd\pst@dimb
+ \lower\pst@dimd
+ \fi
+ \box\pst@hbox
+ \kern\pst@dimc}%
+ \if@star\setbox\pst@hbox=\hbox{\clipbox@@\z@}\fi
+ \leavevmode\box\pst@hbox
+ \endgroup}
+\@namedef{pspicture*}{\pspicture*}
+\@namedef{endpspicture*}{\endpspicture}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Overlays\label{Overlays}}
+%
+% Overlays work by translating invisible material. They take advantage of the
+% fact that PostScript is running parallel to \TeX, and so we can redefine the
+% value of some PostScript variables in order to get a different overlay
+% printed each time we output a box containing overlay commands (even though
+% the box has already been typeset by \TeX).
+%
+% \begin{macro}{BeginOverlay}
+% "BeginOL" is a PostScript procedure, with syntax:
+% \begin{LVerbatim}
+% (<string>) BeginOL
+% \end{LVerbatim}
+% If the string is not "(all)" and does not match "TheOL", then the output is
+% made invisible by translating it over by the coffee pot (actually, by a
+% distance "OLUnit"). Otherwise, it is made visible by translating it back to
+% the page.
+%
+% Rather than translating the page, we could define a small clipping path off
+% the page, but that would be more likely to be messed up by someone's
+% "initclip" (e.g., by PSTricks' "initclip"!).
+% \begin{macrocode}
+\pst@def{BeginOL}<%
+ dup (all) eq exch TheOL eq or
+ { IfVisible not
+ { CP OLUnit T moveto
+ /IfVisible true def }
+ if }
+ { IfVisible
+ { CP OLUnit \tx@NET moveto
+ /IfVisible false def }
+ if }
+ ifelse>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{InitOL}
+% This figures out how far in the current units used by the driver is 50
+% inches up and to the right. This works even though drivers use unusual
+% coordinate systems (even "dvips"). This macro also defines "BOL" to be
+% "BeginOL" and sets the default value of "IfVisible".
+% \begin{macrocode}
+\pst@dimg=40in
+\edef\pst@OLunit{\pst@number\pst@dimg}
+\pst@def{InitOL}<%
+ /OLUnit [ gsave CM \tx@STV \pst@OLunit
+ dup moveto setmatrix CP grestore ] cvx def
+ /BOL { \tx@BeginOL } def /IfVisible true def>
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@initoverlay}
+% This defines "TheOL" to be "#1". It must be inserted just before printing
+% overlay "#1".
+% \begin{macrocode}
+\def\pst@initoverlay#1{\pst@Verb{\tx@InitOL /TheOL (#1) def}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\pst@overlay,\pst@endoverlay}
+% "\pst@overlay" just calls "BeginOverlay".
+% \begin{macrocode}
+\def\pst@overlay#1{%
+ \edef\curr@overlay{#1}%
+ \pst@Verb{(#1) BOL}%
+ \aftergroup\pst@endoverlay}
+\def\pst@endoverlay{%
+ \pst@Verb{(\curr@overlay) BOL}}
+\def\curr@overlay{all}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\overlaybox,\endoverlaybox,\putoverlaybox}
+% "\pst@initoverlay", "\pst@overlay", and "\pst@endoverlay" are the overlays
+% primitives. An interface must be set up that guarantees that "\pst@overlay"
+% and "\pst@endoverlay" are only used inside a box, and that
+% "\pst@initoverlay" is inserted each type the box is printed. Here is one
+% such interface (see "seminar.sty" for an interface for slides). The extra
+% "\begingroup" and "\endgroup" assure that each "\pst@endoverlay" is executed
+% within the box.
+% \begin{macrocode}
+\newbox\theoverlaybox
+\def\overlaybox{%
+ \setbox\theoverlaybox=\hbox\bgroup
+ \begingroup
+ \let\psoverlay\pst@overlay
+ \def\overlaybox{%
+ \@pstrickserr{Overlays cannot be nested}\@eha}%
+ \def\putoverlaybox{%
+ \@pstrickserr{You must end the overlay box
+ before using \string\putoverlaybox}}%
+ \psoverlay{main}}
+\def\endoverlaybox{\endgroup\egroup}
+\def\putoverlaybox#1{%
+ \hbox{\pst@initoverlay{#1}\copy\theoverlaybox}}
+\def\psoverlay{\@pstrickserr{\string\psoverlay\space
+ can only be used after \string\overlaybox}}
+% \end{macrocode}
+% \end{macro}
+%
+%
+% \section{Configuration file -- revisited\label{Config:revisited}}
+%
+% \begin{macrocode}
+\ifx\pstcustomize\relax \input pstricks.con \fi
+% \end{macrocode}
+%
+% \begin{macrocode}
+\pst@ATH<end>
+\catcode`\@=\PstAtCode\relax
+\endinput
+% \end{macrocode}
+%
+% \endinput
+%
+%% END: pstricks.doc
diff --git a/obsolete/graphics/pstricks/doc/code/tvz-code.sty b/obsolete/graphics/pstricks/doc/code/tvz-code.sty
new file mode 100644
index 0000000000..5bf1b46de2
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/tvz-code.sty
@@ -0,0 +1,271 @@
+%% BEGIN tvz-code.sty
+\input tvz-hax.sty
+\input doc.sty % Tested with v1.7k
+\input art11.sty
+
+%%%%%%%%%%%%%%%%%%% PAGE PARAMETERS %%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Paragraphs are marked by space rather than indentation:
+\parindent 0pt
+\parskip 4pt plus 1pt minus 1pt
+
+% Textwidth just wide enough for 72 characters of code.
+\setbox\@tempboxa=\hbox{\small\tt f}
+\textwidth 72\wd\@tempboxa
+\oddsidemargin\paperwidth\relax
+\advance\oddsidemargin -\textwidth
+\divide\oddsidemargin 2
+\advance\oddsidemargin -1in
+\evensidemargin\oddsidemargin
+
+\if@twoside
+ \advance\oddsidemargin .3in
+ \advance\evensidemargin -.3in
+\fi
+
+% No headers, 1in top margin
+\topmargin 0pt
+\headheight 0pt
+\headsep 0pt
+
+% Total bottom margin 1in, text height 9in
+\textheight 9in
+\footskip .625in
+
+% Now adjust for different paper size:
+\@tempdima=\paperheight
+\advance\@tempdima-11in
+\divide\@tempdima 2
+\advance\topmargin \@tempdima
+
+% Marginal notes always on left.
+\marginparwidth 3.5cm
+\marginparsep .5cm
+\reversemarginpar
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% SHORT META %%%%%%%%%%%%%%%%%%%%%%%%
+
+% Works in verbatim environments, unless specially designed.
+\begingroup
+ \catcode`\<=\active
+ \gdef\ShortMeta{%
+ \catcode`\<=\active
+ \def<##1>{{\rm\it ##1\/}}}
+\endgroup
+\def\DeleteShortMeta{\catcode`\<=12\relax}
+
+\def\macrocode{%
+ \macro@code
+ \DeleteShortMeta
+ \frenchspacing
+ \@vobeyspaces
+ \xmacro@code}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%% VERBATIM %%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Use fancybox.sty's LVerbatim environment. Each line should contain
+% percent plus three spaces (or other char), including blank lines. E.g.,
+% \begin{LVerbatim}
+% foo
+% bar
+% \end{LVerbatim}
+
+\def\EveryVerbatimLine#1#2#3#4{}
+{\catcode`\%=12 \catcode`\ =\active\relax\global\EndVerbatimTokens{% }}
+\AltGetVerbatim
+
+\def\MacroFont{\small\tt}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%% INDEXING %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Things are faster without \MakeIndex
+
+\def\MakeIndex{\makeindex\EnableCrossrefs}
+\DisableCrossrefs
+
+% Use \codelabel[int]{foo} to label last line of code plus int.
+% E.g., to label first and then last line of some code:
+% \codelabel[1]{foo}
+% \begin{macrocode}
+% foo
+% bar
+% \end{macrocode}
+% \codelabel{foo}
+
+\def\codelabel{\@ifnextchar[{\@codelabel}{\@codelabel[0]}}
+\def\@codelabel[#1]#2{%
+ \@bsphack
+ \begingroup
+ \advance\c@CodelineNo #1
+ \def\@currentlabel{\the\c@CodelineNo}%
+ \label{#2}%
+ \endgroup
+ \@esphack}
+
+% Definitions in code are indexed by page number, but other occurences
+% are indexed by the line of code.
+
+\CodelineIndex
+\def\SpecialMainPageIndex#1{%
+ {\let\special@index\index\SpecialMainIndex{#1}}}
+\renewcommand{\theCodelineNo}{{\rm\tiny\arabic{CodelineNo}}}
+
+% Index numbers for main definitions are set in bold rather than underlined.
+
+\def\main#1{{\bf #1}}
+
+% two column index
+
+\setcounter{IndexColumns}{2}
+
+% Customize index prologue:
+
+\def\index@prologue{%
+ \section*{Index}\markboth{INDEX}{INDEX}%
+ \addcontentsline{toc}{section}{Index}%
+ The {\bf bold} numbers denote the pages where the entries are defined,
+ and all other numbers indicate the {\em lines of code} where
+ the entries are used.}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%% MACRO %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% A change to the macro environment; prints macro names within the margins
+% of the text, instead of as marginal notes. Use one \macro command,
+% with comma separated macro names.
+
+\newif\iffirst@macroname
+\newif\ifnestedmacro
+
+% D.G. modification begin - Apr. 30, 2003
+\newcount\macro@level
+\macro@level=\z@
+% D.G. modification end
+
+\def\macro{%
+ \ifnum\macro@level=\z@
+ \def\next{\MakePrivateLetters \m@cro@}%
+ \else
+ \def\next{\@latexerr{Nested \string\begin{macro}}\@eha
+ \endgroup\end{macro}\macro@level=\z@\begin{macro}}
+ \fi
+ \next}
+\def\m@cro@#1{%
+ \first@macronametrue
+ \m@@cro@@#1,\@nil,}
+\def\m@@cro@@#1,{%
+ \def\@tempa{#1}\def\@tempb{\@nil}%
+ \ifx\@tempa\@tempb
+ \let\next\finishm@@cro@@
+ \else
+ {\advance\c@CodelineNo\@ne\SpecialMainPageIndex{#1}\nobreak}%
+ \DoNotIndex{#1}%
+ \iffirst@macroname
+ \edef\saved@macronames{\string#1}%
+ \first@macronamefalse
+ \else
+ \def\comma{\noexpand\comma}%
+ \edef\saved@macronames{\saved@macronames\comma\string#1}%
+ \fi
+ \let\next\m@@cro@@
+ \fi
+ \next}
+\def\finishm@@cro@@{%
+ \advance\macro@level\@ne
+ \def\comma{{\rm, }}%
+ \ListMacroNames{\saved@macronames}}
+
+\let\endmacro\relax
+\def\ListMacroNames{%
+ \@startsection{subsubsection}{3}{\z@}{-2.25ex plus -.5ex minus-.2ex}%
+ {1.3ex plus.2ex}{\csname reset@font\endcsname\large\tt}*}
+\MacroIndent 0pt
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%% DoNot Index %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\DoNotIndex{\ ,\!,\[,\\,\],\^,\`,\{,\},\~}
+\DoNotIndex{\@warning,\active}
+\DoNotIndex{\begingroup,\catcode,\char,\csname,\def,\do}
+\DoNotIndex{\docdate,\dospecials,\edef,\else,\endcsname,\endgroup}
+\DoNotIndex{\expandafter,\fi,\filedate,\fileversion}
+\DoNotIndex{\gdef,\if,\ifcat}
+\DoNotIndex{\ifx,\immediate,\lccode,\let}
+\DoNotIndex{\lowercase,\next,\noexpand}
+\DoNotIndex{\relax,\space,\the}
+\DoNotIndex{\toks@,\typeout,\write}
+\DoNotIndex{\@M,\@arabic,\@author,\@auxout,\@bsphack,\@car,\@date}
+\DoNotIndex{\@dblarg,\@dblfloat,\@eha,\@empty,\@esphack,\@evenfoot}
+\DoNotIndex{\@evenhead,\@float,\@gobble,\@gobbletwo,\@gtempa,\@ifnextchar}
+\DoNotIndex{\@ifundefined,\@ixpt,\@latexerr,\@listI,\@listi,\@listii}
+\DoNotIndex{\@listiii,\@listiv,\@listv,\@listvi,\@makefnmark,\@mkboth}
+\DoNotIndex{\@namedef,\@nameuse,\@mne,\@nil,\@normalsize,\@oddfoot}
+\DoNotIndex{\@oddhead,\@tempa,\@tempb,\@tempc,\@tempd}
+\DoNotIndex{\@tempdima,\@testfalse,\@testtrue,\test@member}
+\DoNotIndex{\@thanks,\@thefnmark,\@title}
+\DoNotIndex{\@topnum,\@viiipt,\@viipt,\@vipt,\@vpt,\@xiipt}
+\DoNotIndex{\@xipt,\@xpt,\@xivpt,\@xviipt,\@xxpt,\@xxvpt}
+\DoNotIndex{\addcontentsline}
+\DoNotIndex{\advance,\aftergroup,\baselinestretch,\begin}
+\DoNotIndex{\belowdisplayshortskip,\belowdisplayskip,\bf,\bgroup}
+\DoNotIndex{\box,\c@@page,\c@page,\c@secnumdepth,\clearpage,\columnsep}
+\DoNotIndex{\columnwidth,\copy,\dimen@,\dimen@i,\dimen@ii,\divide}
+\DoNotIndex{\dp,\ds@article,\ds@notes,\ds@notesonly}
+\DoNotIndex{\ds@slidesonly,\egrou,\end,\end@dblfoloat,\end@float}
+\DoNotIndex{\endinput,\fnsymbol,\footheight,\footnotesep,\footskip}
+\DoNotIndex{\global,\globaldefs,\hbox,\headheight,\headsep,\hfil}
+\DoNotIndex{\hrule,\hskip,\hss,\ht,\Huge,\huge}
+\DoNotIndex{\if@filesw,\if@test,\if@twocolumn,\if@twoside}
+\DoNotIndex{\ifcase,\ifdim,\ifvmode,\ignorespaces}
+\DoNotIndex{\input,\interlinepenalty,\itemsep,\ixpt,\label}
+\DoNotIndex{\labelsep,\labelwidth,\LARGE,\large,\Large}
+\DoNotIndex{\leavevmode,\leftmargin,\leftmargini,\leftmarginii}
+\DoNotIndex{\leftmarginiii,\leftmarginiv,\leftmarginv}
+\DoNotIndex{\leftmarginvi,\leftmark,\leftskip,\lineskip}
+\DoNotIndex{\magstep,\marginparsep,\marginparwidth,\markboth}
+\DoNotIndex{\markright,\medbreak,\multiply,\newbox,\newcount}
+\DoNotIndex{\newcounter,\newdimen,\newif,\newlabel,\newpage}
+\DoNotIndex{\newtoks,\nobreak,\nointerlineskip,\normallineskip}
+\DoNotIndex{\normalsize,\null,\number,\numberline,\oddsidemargin}
+\DoNotIndex{\offinterlineskip,\or,\par,\parbox,\parskip,\partopsep}
+\DoNotIndex{\prevdepth,\protect,\ref,\refstepcounter,\rightmrk}
+\DoNotIndex{\rm,\scriptsize,\section,\sectionmark,\setbox,\setcounter}
+\DoNotIndex{\sl,\small,\stepcounter,\string,\textheight,\textwidth}
+\DoNotIndex{\thefootnote,\thepage,\thesection,\thesubsection}
+\DoNotIndex{\thispagestyle,\tiny,\topmargin,\topsep,\uppercase}
+\DoNotIndex{\vbox,\vfill,\viiipt,\viipt,\vipt,\vpt,\vskip,\vss}
+\DoNotIndex{\wd,\xcommentloaded@,\xdef,\xiipt,\xipt,\xivpt,\xpt}
+\DoNotIndex{\xviipt,\xxpt,\xxvpt,\z@}
+\DoNotIndex{\abovedisplayskip,\abovedisplayshortskip,\@currentlabel}
+\DoNotIndex{\@dottedtocline,\@ne\@setsize,\@starttoc,\@tempboxa,\@}
+\DoNotIndex{\arraystretch,\centerline,\egroup,\end@dblfloat}
+\DoNotIndex{\evensidemargin,\footnotesize,\ifnum,\parindent,\parsep}
+\DoNotIndex{\rightmark,\@afterindenttrue,\@ne,\if@specialpage.\long}
+\DoNotIndex{\fboxrule,\fboxsep,\@for,\vfil}
+\DoNotIndex{\@@fortmp,\@@tempa,\@@tempb,\@ehd,\@for,\@fortmp,\@m}
+\DoNotIndex{\@mparswitchfalse,\@mparswitchtrue,\@nnil,\@spaces}
+\DoNotIndex{\@specialstyle,\@temptokena,\@twosidefalse,\@twosidetrue}
+\DoNotIndex{\@whilenum,\alph,\arabic,\count@,\errhelp,\errmessage}
+\DoNotIndex{\fbox,\index,\minipage,\newcommand,\overfullrule}
+\DoNotIndex{\pagestyle,\raggedright,\ref@stepcounter,renewcommand}
+\DoNotIndex{\semcolor@loaded,today,\@tempcnta,\@tempcntb,\trivlist,\t,\p}
+\DoNotIndex{\today,\item,\@colht,\@currenvir,\@thefoot,\@thehead}
+\DoNotIndex{\@totalleftmargin,\allowbreak,\@captype,\@footnotetext}
+\DoNotIndex{\@listdepth,\@minipagefalse,\@minipagetrue,\@mpfn,\@mpfootins}
+\DoNotIndex{\endtrivlist,\everypar,\hsize,\ifvoid,\lastskip}
+\DoNotIndex{\linewidth,\skip,\thempfn,\thempfootnote,\topskip,\unvbox}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+\endinput
+%% END tvz-code.sty
diff --git a/obsolete/graphics/pstricks/doc/code/tvz-hax.sty b/obsolete/graphics/pstricks/doc/code/tvz-hax.sty
new file mode 100644
index 0000000000..90d74d4d00
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/code/tvz-hax.sty
@@ -0,0 +1,172 @@
+%% BEGIN tvz-hax.sty
+%% 93/03/03
+%% These are some lousy hacks for typesetting the code
+%% and User's Guide in the Seminar and PSTricks packages.
+%%
+%% Tim Van Zandt tvz@Princeton.EDU
+
+\def\ds@a4{\def\paperwidth{210mm}\def\paperheight{297mm}}
+
+\input article.sty
+\input fancybox.sty % Version 0.93 or later.
+
+\def\arraystretch{1.2}
+
+\hfuzz 1pt
+
+\def\twosideclearpage{%
+ \clearpage
+ \if@twoside
+ \ifodd\c@page\else
+ \thispagestyle{empty}%
+ \null\leavevmode
+ \clearpage
+ \fi
+ \fi}
+
+% Just in case I'm using AmS-LaTeX.
+\def\makeatother{\catcode`\@=12\relax}
+
+%%%%%%%%%%%%%%%%% LOGOS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+\def\AmS{{\protect\the\textfont\tw@
+ A\kern-.1667em\lower.5ex\hbox{M}\kern-.125emS}}
+
+\def\b@LaTeX{%
+ \begingroup
+ \csname reset@font\endcsname
+ \rm\bf
+ L\kern-.32em
+ \raise.36ex\hbox{%
+ \ifx\@currsize\Huge\LARGE\else
+ \ifx\@currsize\huge\Large\else
+ \ifx\@currsize\LARGE\large\else
+ \ifx\@currsize\Large\normalsize\else
+ \ifx\@currsize\large\small\else
+ \ifx\@currsize\normalsize\footnotesize\else
+ \ifx\@currsize\small\scriptsize\else
+ \ifx\@currsize\footnotesize\scriptscriptsize
+ \fi\fi\fi\fi\fi\fi\fi\fi
+ \bf A}%
+ \kern-.15em
+ T\kern-.1667em
+ \lower.7ex\hbox{E}\kern-.125em
+ X%
+ \endgroup}
+\def\bLaTeX{\b@LaTeX}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%% PAGE STYLE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Headings:
+\def\ps@docheadings{%
+ \let\@mkboth\markboth
+ \def\@oddhead{}%
+ \let\@evenhead\@oddhead%
+ \def\@oddfoot{%
+ \small\sf
+ \rightmark
+ \hfil
+ \thepage}%
+ \def\@evenfoot{%
+ \small\sf
+ \thepage
+ \hfil
+ \theheadertitle}%
+ \def\sectionmark##1{\markright {##1}}}%
+\pagestyle{docheadings}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%% Table of Contents %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Tight up spacing in TOC:
+%%
+\newskip\tempskip
+\def\TOCshrink{.5}
+\def\TableOfContents{%
+ \begin{quote}
+ \begin{center} \Large\bf Contents \end{center}
+ \def\numberline##1{\hbox to 0pt{\hss##1\hskip 1em}}%
+ \let\oldaddvspace\addvspace
+ \def\addvspace##1{%
+ \tempskip##1\relax
+ \oldaddvspace{\TOCshrink\tempskip}}
+ \@starttoc{toc}%
+ \end{quote}}
+\def\tableofcontents{%
+ \clearpage
+ \markright{Table of contents}%
+ \TableOfContents
+ \clearpage}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% dates %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This expands the date, as defined in \filedate.
+%%
+\def\expanddate#1/#2/#3/{%
+ \number#3{}
+ \month=#2
+ \ifcase\month\or
+ January \or February \or March \or April \or May \or June \or
+ July \or August \or September \or October \or November \or December
+ \fi
+ 19#1}
+\def\thefiledate{\expandafter\expanddate\filedate/}
+\date{\thefiledate}
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%% code and examples %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% This is an environment for putting samples of code. It is like
+%% a variant of \begin{quote}\tt ... \end{quote}. It is NOT verbatim.
+%%
+\def\NotNested{\def\begin##1{%
+ \@latexerr{Bad nesting of environments.
+ Perhaps missing \end{\@currenvir}}\@eha
+ \end{\@currenvir}%
+ \begin{##1}}}
+\def\endEx{\endlist}
+\def\Ex{%
+ \NotNested
+ \list{}{}\item[]%
+ \if@minipage\else\vskip\parskip\fi
+ \leftskip\@totalleftmargin
+ \rightskip\z@
+ \parindent\z@
+ \parskip\z@
+ \parfillskip\@flushglue
+ \hfuzz 1pt
+ \@@par
+ \global\@inlabelfalse}
+\def\endEx{\endlist}
+%%
+%% Various things to make it easier to write code and examples:
+%%
+\begingroup
+ \catcode`\{=12 \catcode`\}=12
+ \catcode`\(=1 \catcode`\)=2
+ \catcode`\+=0 \catcode`\\=12
+ +gdef+|(\) % \| = character \
+ +gdef+{({) % \{ = character {
+ +gdef+}(}) % \} = character }
++endgroup
+\def\Backslash{\protect\|}
+%%
+%% Define some functional font commands:
+%%
+\def\MainFont{\tt} % For macro definitions.
+\def\UsageFont{\tt} % For in-line macro names.
+\def\InlineFont{\tt} % For other in-line snipets of code.
+\def\DisplayFont{\tt} % For displayed code.
+\def\MetaFont{\sl} % For meta arguments.
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\endinput
+%% END tvz-hax.sty
diff --git a/obsolete/graphics/pstricks/doc/images/flowers.eps b/obsolete/graphics/pstricks/doc/images/flowers.eps
new file mode 100644
index 0000000000..3f279322a6
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/images/flowers.eps
@@ -0,0 +1,269 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: background2.eps
+%%Creator: xwpick Version 2.20 Rev: 20/09/94 - by Evgeni Chernyaev
+%%CreationDate: Wed Nov 26 21:12:29 1997
+%%BoundingBox: 0 0 80 60
+%%EndComments
+%***********************************************************************
+%* *
+%* Function: Display a Lempel-Ziv Welch (LZW) encoded color image. *
+%* This is an Encapsulated PostScript file suitable for any *
+% kind of PostScript printer: Level I/II, color/grayscale...*
+%* To optimize output on GrayScale printers you may uncomment*
+%* line '/GRAYneeded true def'. *
+%* *
+%* Author: Evgeni CHERNYAEV (chernaev@vxcern.cern.ch) *
+%* *
+%***********************************************************************
+gsave
+userdict begin
+/EPSneeded true def
+%/GRAYneeded true def
+end
+%***********************************************************************
+%* Image Description *
+%***********************************************************************
+/colomns 80 def
+/rows 60 def
+/mm {2.835 mul} def
+userdict /EPSneeded known {
+ /EPSneeded userdict /EPSneeded get def
+}{
+ /EPSneeded false def
+} ifelse
+userdict /GRAYneeded known {
+ /GRAYneeded userdict /GRAYneeded get def
+}{
+ /GRAYneeded false def
+} ifelse
+EPSneeded {
+ /IfRotate false def
+ /MarginX 0 def /MarginY 0 def
+ /Ymax rows def /Xmax colomns def /Ymin 0 def /Xmin 0 def
+}{
+ /IfRotate colomns rows gt {true} {false} ifelse def
+ /MarginX 8 mm def /MarginY 18 mm def
+ 0 0 moveto clippath pathbbox
+ /Ymax exch def /Xmax exch def /Ymin exch def /Xmin exch def
+} ifelse
+/IfColor systemdict /colorimage known {true} {false} ifelse def
+GRAYneeded {/IfColor false def} if
+/IfLevel2 systemdict /filter known systemdict /setcolorspace known and
+ {true} {false} ifelse def
+%***********************************************************************
+% Procedures *
+%***********************************************************************
+/Table 4096 array def
+/StrArray 10 array def
+/InLine 70 string def
+/BinCodes 112 string def
+/CurBit 0 def /FreeCode 258 def /CurCodeSize 9 def /CurMask 511 def
+/incr IfColor {3} {1} ifelse def
+IfLevel2 not {/setcolorspace null def /filter null def} if
+%***********************************************************************
+/ReadLine { % Read Next Data Line (ASCII85 decode) *
+%***********************************************************************
+ BinCodes 0 BinCodes 56 56 getinterval putinterval
+ currentfile InLine readline pop pop
+ 1 1 14 {
+ /i exch 1 sub def
+ /k i 5 mul def
+ /c1 InLine k get 33 sub 255 and def
+ /rest c1 1868977 mul
+ InLine k 1 add get 33 sub 255 and 614125 mul add
+ InLine k 2 add get 33 sub 255 and 7225 mul add
+ InLine k 3 add get 33 sub 255 and 85 mul add
+ InLine k 4 add get 33 sub 255 and add def
+ /k i 4 mul 56 add def
+ BinCodes k c1 3 mul rest 16777216 idiv add 255 and put
+ /rest rest 16777216 mod def
+ BinCodes k 1 add rest 65536 idiv put
+ BinCodes k 2 add rest 256 idiv 255 and put
+ BinCodes k 3 add rest 255 and put
+ } for
+} bind def
+%***********************************************************************
+/ReadCode { % Read next code *
+%***********************************************************************
+ /CurByte CurBit 8 idiv def
+ /CurCode
+ BinCodes CurByte get 8 bitshift
+ BinCodes CurByte 1 add get add 8 bitshift
+ BinCodes CurByte 2 add get add
+ CurCodeSize CurBit 7 and add 24 sub bitshift CurMask and def
+ /CurBit CurBit CurCodeSize add dup 448 ge {ReadLine 448 sub} if def
+} bind def
+%***********************************************************************
+/DecodeCode { % Decode CurCode *
+%***********************************************************************
+ ReadCode CurCode 256 eq {
+ /FreeCode 258 def /CurCodeSize 9 def /CurMask 511 def
+ /StrInd -1 def /Lrest 0 def ReadCode
+ }{
+ L Lrest gt {
+ /StrInd StrInd 1 add def /Lrest 65535 def
+ StrArray StrInd get null eq {StrArray StrInd 65535 string put} if
+ /CurStr StrArray StrInd get def
+ } if
+ Table FreeCode CurStr 65535 Lrest sub L getinterval
+ dup 0 Table OldCode get putinterval
+ dup L incr sub Table
+ CurCode FreeCode lt {CurCode} {OldCode} ifelse get
+ 0 incr getinterval putinterval put
+ /Lrest Lrest L sub def /FreeCode FreeCode 1 add def
+ FreeCode CurMask ge CurCodeSize 12 lt and {
+ /CurCodeSize CurCodeSize 1 add def
+ /CurMask CurMask 1 bitshift 1 add def
+ } if
+ } ifelse
+ /OldCode CurCode def
+ Table CurCode get dup length incr add /L exch def
+} bind def
+%***********************************************************************
+/DisplayImage { % Display a LZW-encoded color image *
+%***********************************************************************
+ /DelX Xmax Xmin sub MarginX 2 mul sub def
+ /DelY Ymax Ymin sub MarginY 2 mul sub def
+ /SizeX IfRotate {rows} {colomns} ifelse def
+ /SizeY IfRotate {colomns} {rows} ifelse def
+ /FactorX DelX SizeX div def /FactorY DelY SizeY div def
+ /Factor FactorX FactorY le {FactorX} {FactorY} ifelse def
+ /ScaleX SizeX Factor mul def /ScaleY SizeY Factor mul def
+ DelX ScaleX sub 2 div MarginX add
+ DelY ScaleY sub 2 div MarginY add translate
+ IfRotate {ScaleY ScaleX} {ScaleX ScaleY} ifelse scale
+ /Palette currentfile 768 string readhexstring pop def
+ currentfile InLine readline pop pop
+ IfColor not {
+ 0 1 255 {
+ Palette exch dup /i exch 3 mul def
+ Palette i 0 add get 0.299 mul
+ Palette i 1 add get 0.587 mul add
+ Palette i 2 add get 0.114 mul add cvi put
+ } for
+ /Palette Palette 0 256 getinterval def
+ } if
+ /Matr IfRotate
+ {[0 colomns rows 0 0 0]} {[colomns 0 0 rows neg 0 rows]} ifelse def
+ IfLevel2 {
+ [/Indexed IfColor {/DeviceRGB} {/DeviceGray} ifelse 255 Palette]
+ setcolorspace
+ /infile currentfile /ASCII85Decode filter /LZWDecode filter def
+ 8 dict
+ dup /ImageType 1 put
+ dup /Width colomns put
+ dup /Height rows put
+ dup /BitsPerComponent 8 put
+ dup /ImageMatrix Matr put
+ dup /Interpolate false put
+ dup /Decode [0 255] put
+ dup /DataSource infile put image
+ }{
+ 0 1 255 {
+ Table exch dup incr mul Palette exch incr getinterval put
+ } for
+ ReadLine ReadLine
+ colomns rows 8 Matr {DecodeCode}
+ IfColor {false 3 colorimage} {image} ifelse
+ } ifelse
+} bind def
+%***********************************************************************
+%* Image decoding *
+%***********************************************************************
+DisplayImage
+000000 ffffff ffffe0 228b22 c0c0c0 00ff00 ff0000 ffff00 ffa500 b3b3b3
+7f7f7f cd5c5c b4b4b4 101010 e0e0e0 f0f050 60f060 d0d0d0 404040 c02020
+404080 fff68f a0a0c0 c07070 202020 ff4040 008000 a0a000 0000ff ff00ff
+008080 606060 808080 8080c0 c08080 80c080 c080c0 c0c080 80c0c0 d08050
+5080d0 91c591 104210 1d761d e6e6fa adadad 7b7b7b 737373 a37474 6b6b6b
+636363 966a6a 634848 dadada cf8a8a 9e9e9e 7b4a4a 848484 5a5a5a 8b5f5f
+845454 bdbdbd 362828 b5b5b5 ffc0cb 191315 846342 342114 806b61 110f0e
+8d7360 594123 3f343b 372915 988067 6c4e35 725c58 a58c72 231a1d 2d262a
+4a3118 594544 615259 030203 868686 ababab 656565 add8e6 d50000 d5d500
+aa0055 5500aa 94dec5 7ce4a4 63e983 4aef62 31f441 18fa20 d2b48c ffebcd
+8b7765 6a5acd ffe4e1 ee82ee a6a6a6 afeeee cccccc 8c8c8c e5e5e5 666666
+bfbfbf 775588 8f66a3 473351 d9d9d9 999999 b2c0dc c6d5e2 8b99b5 b22222
+00008b 595959 424242 dedede 949494 00ffff 009999 8f8f8f d7d7d7 333333
+00dfff 006400 bebebe fefefe 828282 f2f2f2 a020f0 e4c0c0 663b3b a35f5f
+b03060 cd0000 8b0000 8b3a3a 191970 78706b 5a5357 717fca 2a218b 929ed3
+311fb3 6f76a0 9f8762 25244a 29256f 51518c 4b51b1 a3b1d7 cde1f9 b5c0d1
+9796a0 797169 595155 717dcb 28208a 301cb2 6d75a2 9e8661 242449 28246d
+51518e 4951b2 a2b2d7 cfe3fb b6c3d3 9696a2 65493c 825145 9a7165 45342c
+693430 201c1c 1c1414 fa1340 5151fb e7e7e7 3bfa34 655d55 d7c7a6 dfcfae
+6f6f6f 1d155b a2a2a2 5b0000 9c9c9c 565656 0000b0 3f0f7b 646464 2f4f4f
+2e8b57 999986 778899 db7093 008b00 b87850 d0a888 583838 302828 d09068
+905040 9a9a9a b0b0b0 2a2a2a 878787 434343 ff1493 898989 bdb76b ff69b4
+8b8b8b 8aadb8 5f777e fa8072 0000cd 98fb98 6920ac b7ffb7 5b975b 8b008b
+93b8c4 ff4500 525252 b53100 ffe752 ce634a 31317b de8473 e78c9c de7b5a
+63528c 737329 738442 291839 d67339 c65218 c6adad c65229 bd4208 180800
+ffde21 b54a18 f7c66b b53910 ffde39 f7d6ef
+J3.)@GU(^knp%f=DYJ/kJ;GL5=Y,`/-/pch]Nmg"X/XVJIl`bq;EQ8LIr;+$.9*CN>5g7W
+'[nor[TJf+!aT_7]=mFm7*cpW[Tg<aLB+rWY=I@'lMZBuhX%b!]pA13&=tO&P(f'sIRf!n
+kj3`m2.VpX,scL`%[WL)K!.G>W`Gu.b0m81Jc5rPSibbMkTdLjp)jE+p`rM_lTBU4?#JhG
+,]"i@6=D?il&ImkYik'sE]HH!Ih8=B'/ZXJq"/kQ9)"0G?>"Z#^#+&tdO!I&b/=]`f4uu3
+qo:nAmnB>TQR.<IMM4DeIQns:ou\1]EEiQE<c,#H=/.WTPuB0_<u+^_i$$oTGCLXcfb0,s
+&W"e'?4r\7Sus7?HC:XLNiaHUb!;"08('a.T>ubJ(DVN].Xhe%&o)_*Y;o9MScrh3]p-EZ
+i8_?X3UV8D^q2"=%#Qe'a.7*7S=QS&dFKP5Vhn0IUoqR##.j$na;5BV]ImNEWM*!rV1Atc
+AL%N=*+]i-lqi/7k@sA+T$?gEHFX/MgjZNK>'>8'LS1<'M!ZZa"NYU'*?cFk4K>[q@&dCA
+*Y2K%;\JJKloGdM_;I9pYt<P:T4#0F)Zo2r&jqcGH17]&o0Lg@K'0p%+\jmGie5/2oG^f\
+J?0Z8+-KLf)h9,`9P">LTf.-5,H0h\NT@W&FIb$Mq@eJOq<Zp$b!G<?;ePIBHl^V&f#O2d
+.GIG"LQ(V$<L$GR"<NO'%\';fW&@_K",J@:=B$R^2hu%ad)[Z0ZC8rK-i*dh*B&8)`up./
+hB<To9Yu".a(S5">PA7>EEm/(pm\qWW5a6,Ks6RE*Z58B9o\iTIcOmo);9MnB5%u$&EiG:
+FIrt_*-^PL$\4u*Wa'-=@Tiq;"DEdHDGI$^@1S9%R/u4p!eQ\\XGC#YR\p;\Ksl16@KGMW
+T;T\J7-n']eqPTh5(%JoLMRk2_7CfUNa-lWM@3oC@8'%[Kl$g7#m6!Z71)^-@B/#IIWBS%
+VJP#fPW>"eBP^hsC7_qkg,Y%(H6lRa>b(?^3Ye)K6Bq_0jT$_M3L=!!fVfaO:%h7!S!sT4
+-GsLT)8Y`bEp%a5iPF+Mli\Ea+nU3H#Gs'_V2o=D6k/i92WOJ@OmmIaQaaGo\MGMPFo-D<
+lg?Y9BRh3pA4o&Oo=3]iIK9H*lf5h3O/!@j6[r3U^q%K>@P'G^=((aW8o#Q&(%SFraCC)e
+@fRj4"tI'7r5YRU/oYC`&'-jR"+Y??L%'PPeKd<-O;Aq;89ZDTSB[Ue\Rs0Qar'(IV92'k
+1e^_g0dc#eh$EOm/JNXpFA.OB#]Do'(j@X+TXNc.O'2YA8g"@LA"N#mB.j.M"98Kba(YB4
+#n`"&([=+Qcl7d:d4uXE?p=eJ=Tfn`%@K+\4bmuD#[n]c!I+kRc/DAVM^9*,1hL6`JFt>U
+@P=*^`gtoKoE0,/+Z^8Y#E+13-&O7"K44aBL\Q^e6f_P`Yni7`8;gE!2/AftFNm=%c[c<%
+IZO22(_!)\!<dP%6mEZ`a3a>YE_(MZ5V+57.j7bu^fQq,C_B1@6P1OK70<NB1<426+G6b?
+X`=VQa%Dn="4Vg\jnqK!3CQ-k-2K`)ipjh>=F5cba.^<*?AllJ(#lq=NoB^RVpZn%$;+5k
+P]dMVM7\;Um!LZkBd.*rl[<4^b*c-K,"VU%I]X0EO*/N+<Ig?:-1.LlH'l"V88p0^r*]s*
+,!1@-PWNDH-G*eb(o<HC+iP@V;++b$TW?%VmEBlM.>k2-BKS/.FB1>fjul$Jn1TC+$V\X1
+Dus_KO$]ADNt^_?6A4)dj?01mnIe_u0Sq?boc^tkKc45**b:tXUkNej?BcS!#]KPO(Vu=T
+_6>U#!=U6oTS=-d6)@!PUa248METEG59Z^#ap=.s=D)^MIk;CU$Li=(_$I+LiJ]:N@r)E_
+;HZ-oKHuTjnigk<q&)(&$!:#Y4\*T`7H;(Je+NT@9V]K_j7q8%jsE-eWNZR,^c2Wt3\(<2
+rWRtr;\&n&&B)1UYJEaggA83p7S-dE<YU^MP=fBn/*jK8U33_S`<VtYX!B3YifCl_%hRrk
+'nENM#?#.\`D@6MJ]2%Md,SjnYa;urN$AK,6<$Z>pG.qtSf'ib'F.>JK@"k'Q5&[UROsjJ
+OG8o*@K*9^TV`B=J2jhrX`^i`/cqDF!"YAX3JY[d69uSNNtFTf.j;h\`_[UETS,DJ@S.kU
+GjM8-M2)h%'c$$;nLcq%-A9qP=(KVX@iSWe`NZcW+MR/q9?`n-Up_;[*&9:uME?PpVkU-&
+)_2o$BEVT`Gm&'nMpaR%i<Z;^:-(6?@IgRrNe/!L$Pfs%1KK46]+juj@149BV8?qN?ddXU
+V;i!1([^Ln;)EJ&Y[EO/L)eO-r!+bq-p%F%90uf!Ftu.[J;7_9\tcKWKWpUNL(Nbi6eG/g
+64t\JnWkqa4CH?l7Z58iP,9HL(aflX7g(e]gE9HMO7:2LXa'1R#tnS2O=2T3hQTT*/5:t_
+KFl!S664PA3X7q84B$N1c5FFU&$[*8iDo+!Af`;d'daBD3c@)in:0iA&"`q@A'il\:OtiE
+.`-0#'19Z=mVu2UdWOC^_*Nc'F@7M/nHa@6<S"\$<cM]Db9"iGi%73[0Wgn$gRRXpMU3kt
+ZoCh-f["O#Eb]n7)">`M,ZfamC5@FMV]JET[[8b%3^sF+7nQB97uJi+TgIECigbChE=P29
+5(6EHGZT`p69N<6]X@^RI#2j556^7.WM5b[$*7qpL)0Gh^pCl[E/n!)=Qp]51e"2/LC'9I
+//`Z/F%^&fQcp:C&,h_9KHS8f6o],i@Jk@ZYr!dtR5;Inclp'`<]q(Y+7J1f>*&2W$NLHf
+%0OOFn&YEP8*FJ3,OAunEf@bl7[k5NCr)(#0BYY5q4E1j*X*]D*.:=sj!3V4?i+k[-5`!_
+6E#-Br59!Hk]E%=A&8g.FCc1(:`)PV+Thc#4^!*Zi0IH-5W%!"$bco*ng/hEC-^e%!Ajcf
+'ZR:,'-U<s+m(pt<ptSp#qTm!+Em"PS.&1!"cmj*i+rX,p'<pLeE*,@j+&2LRLeD:lNFs+
+j)i;7nd%J\($l9/D-dlNke"Yf4TRG^@%?8M.-(eKY\loBD2)Ia!n1]<15H\_+Ee'"(2KS'
+7DN`W.6nt`Jf#VbJSDhXlX'WY<(]fheaKfOi1'cWkT40p(;VgJNG@8Lik*!\(<qA'+l!6P
+%[881#is:h$*55A?jHamAcWB?l*MMr<9ku>0B)V:9=uo(i`AoP'.u'A9>(TBF<-@c%Llb4
+%)W"GL)lu=+i*@E,^^0k?39%mJ:Z,Q_%'@0ODfbr*oWP),oS^2)A2K\+0/^L%q9'W..lEt
+$,E)"b?bi8:D;-:)*p#`c6`ku@+[,k"cCM>MU!WN!c`o87DT`[U#'^=dLkYY*F\Md6Cq'Z
+A.cZK2XIpTJMQm,CCUh1)"4WN/63E,!,=en#%<Z*i.`(@=O_k'9HiaW$@Ff>b_9OTU5?aK
+!J72b(EH"fE`%3:")Pqm\fPiRdI8:Nm9^]#!")'f&+WEJMIIUHIZs=2Ad$<mKrQ0/:?Eg.
+;lKadVfZO*B.%-9+"ELI5iQ(NZ5#Zo*?d8qU#oY)YlO5c.BBHc;5Vc\=G`ja!p%4*Tahg1
+Xp8q8c=C6'YP^=WEe1N>;?7h\k![bY9UK8K)"Nh2EKnWT":cQ9C&k%:6/3"89cA'C#1<u:
+U[0)\Op^YkZ@lPYB7M#a3]Rgu0rJ2tUQ,uWPT><3j:^#bJ6NH0i"Imp*J!0+k5k^Jl3C^5
+hG&V7;Z&`'PR%8l!?c"-/EX6h(7PS9;A+(RJK6JC>S06]%KTTNJQ<NG?ro'C*\iW`OZ+nU
+mM:B/J1Hp>jn&c8C`\-KKn*>J+a0)#+u4c^>)6EX#IPpmBP(iV+)sFR!bM^'DA@5B(iUW-
+PMc^^AL,(j;K5k]nYT2l`"?M%7D\sC_*SQ\JB^?0]d=GIU'htiBP+0E/;@]NCpMjff[g[T
+mS;sQ%)<r7=W:cb#iU@I+CGL``"_1!)5^X\i/S0'=s)`D0`urld0Lk,ChtoG+D7cf5`Se%
+m+)d.ea6d8nLFEPCrWh9[G[\iiU.R.J0*X/#@ZBo@h'Q1@$C[%+Y;(QCO3(aM\cNC=pM-2
+Kq;D+r,nd)+/)@7^l^Bl4%Jh$!g$tW7,G?;#pgb^"[Hl9@?MHMRNBkRA`<V0+T<++rWS).
+k&US9+HDM&HD0LMHbo1U`af;']H&.R%NpK4!/D$M"Z(_^*agDs</jXH/dUG`aG.,@U;"m'
+OpS+&WO2mk::rP2[L*%e=pDif@2rG7@T-7H1(UJA^aULn38D>E!m=i0DC,X.=Y$KL#/H6'
+'i5oZ:KhaG'nQu#_30iM\7%\_(c>t^.:bl4F<.8_Z2s;]V^2rJe6UFM*aptTn1;%!%6d(2
+544rH+nh/Zg^$/?']d,seG^.)r^''N4(QPV+a=hIdM\t$Au9<Lk%JqsJf^V;&]\9]UZ=E(
+ImXN3/Raed0*2WWroq8Ml`;EEnSAeFD%O`1"i7bk+Hhri&t,C**Pmq,eg<(aAhh>0&]ZP5
+8J$$@TMq!&&_.P$"QCAobRUmRA7>HTD)Y80rC""f!&gnu_*/;6p'BnH15Y_`76Wm^_N<fF
+Q6b*c,]<YBP!p-=l!TYfjPj7clXWm#dr\_]JJ)t2TICCl&tlD8UtuTWbb_"d+]"DTANMV<
+^0>(Q*eE0@PS8$A`@&%RY^la`i%,H_kS'p_DW1Th+V'_;h_<-aXPa.HTVs]_TE$7](%$`M
+jYmRp80DNi>3'Y(8\U\g,sG*'#p>lETT0U-3YSain7``m-2[`m-$.uG*ZtM,+9
+~>
+showpage grestore
diff --git a/obsolete/graphics/pstricks/doc/images/tiger.eps.gz b/obsolete/graphics/pstricks/doc/images/tiger.eps.gz
new file mode 100644
index 0000000000..c4c690ff22
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/images/tiger.eps.gz
Binary files differ
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-10-10.inl b/obsolete/graphics/pstricks/doc/lgc/4-10-10.inl
new file mode 100644
index 0000000000..fa4d3b9da5
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-10-10.inl
@@ -0,0 +1,160 @@
+\makeatletter
+\newdimen\CurX
+\newdimen\CurY
+\newdimen\Cir@temp
+\newcount\Cir@direction % 0 right, 1 left, 2 up, 3 down
+
+\Cir@direction0
+
+\def\SetX#1{\CurX=#1pt}
+\def\SetY#1{\CurY=#1pt}
+
+\def\ShowDirection{%
+ \typeout{Direction:
+ \ifcase\Cir@direction right\or left\or up\or down\fi,
+ now at (\strip@pt\CurX,\strip@pt\CurY)}%
+}
+
+\def\ShowXY{\message{(\strip@pt\CurX,\strip@pt\CurY)}}
+
+\def\Down#1{\advance\CurY by -#1\p@\Cir@direction3%\ShowDirection
+}
+\def\Up#1{\advance\CurY by #1\p@\Cir@direction2%\ShowDirection
+}
+\def\Left#1{\advance\CurX by -#1\p@\Cir@direction1%\ShowDirection
+}
+\def\Right#1{\advance\CurX by #1\p@\Cir@direction0%\ShowDirection
+}
+
+\def\MyBox#1#2{% width,height
+ \pssetlength{\Cir@temp}{#1}%
+ \rule{\Cir@temp}{\z@}%
+ \pssetlength{\Cir@temp}{#2}%
+ \rule{\z@}{\Cir@temp}%
+}
+
+\def\Point#1{%
+ \rput(\strip@pt\CurX,\strip@pt\CurY){\pnode{#1}}%
+}
+
+\def\Switch#1{%
+ \message{[Switch] #1}\ShowXY
+ \relax
+ \ifcase\Cir@direction % right
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode[b]{#1}{%
+ \psline(.5,.4)%
+ \psarc{<-}{.4}{-10}{70}%
+ \MyBox{.5}{.4}%
+ }}%
+ \advance\CurX by .5\p@
+ \or % left
+ \advance\CurX by -.5\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode[b]{#1}{%
+ \psline(0,0)(.5,.4)%
+ \psarc{<-}{.4}{-10}{70}%
+ \MyBox{.5}{.4}%
+ }}%
+ \fi
+}
+
+\def\Battery#1{%
+ \message{[Battery] #1}\ShowXY
+ \relax
+ \ifcase\Cir@direction % right
+ \rput[r](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#1}{%
+ \psline(0,-.4)(0,.4)%
+ \psline(.2,-.2)(.2,.2)%
+ \MyBox{.2}{.8}%
+ }}%
+ \advance\CurX by .2\p@
+ \or % left
+ \advance\CurX by -.2\p@
+ \rput[r](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#1}{%
+ \psline(0,-.4)(0,.4)%
+ \psline(.2,-.2)(.2,.2)%
+ \MyBox{.2}{.8}%
+ }}%
+ \or % up
+ \advance\CurY by .2\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#1}{%
+ \psline(.1,.2)(.9,.2)%
+ \psline(0.3,0)(0.7,0)%
+ \MyBox{1}{.2}%
+ }}%
+ \or % down
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#1}{%
+ \psline(-.4,0)(.4,0)%
+ \psline(-.2,-.2)(.2,-.2)%
+ \MyBox{1}{.2}%
+ }}%
+ \advance\CurY by -.2\p@
+ \fi
+}
+
+\def\Resistor{\message{[Resistor]}\ShowXY
+ \@ifnextchar[{\@ResInd}{\@ResInd[1]{pszigzag}}}
+\def\Inductor{\message{[Inductor]}\ShowXY
+ \@ifnextchar[{\@ResInd}{\@ResInd[1]{pscoil}}}
+
+\def\@ResInd[#1]#2#3{%
+ \ifcase\Cir@direction % right
+ \rput[l](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](0,.15)(#1,.15)%
+ \MyBox{#1}{.3}%
+ }}%
+ \advance\CurX by #1\p@
+ \or % left
+ \advance\CurX by -#1\p@
+ \rput[l](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](0,.15)(#1,.15)%
+ \MyBox{#1}{.3}%
+ }}%
+ \or % up
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](.15,0)(.15,#1)%
+ \MyBox{.3}{#1}%
+ }}%
+ \advance\CurY by #1\p@
+ \or % down
+ \advance\CurY by -#1\p@
+ \rput[b](\strip@pt\CurX,\strip@pt\CurY){%
+ \rnode{#3}{%
+ \csname #2\endcsname[coilarm=.01,coilwidth=.3](.15,0)(.15,#1)%
+ \MyBox{.3}{#1}%
+ }}%
+ \fi
+}
+\makeatother
+
+\begin{pspicture}(-0.3,0)(8.4,2.8)
+ \SetX{1}
+ \Up{1}
+ \Battery{A}
+ \Up{1}
+ \Right{2}
+ \Resistor{B}
+ \Right{1}
+ \Down{.3}
+ \Inductor{C}
+ \Down{.5}
+ \Left{1}
+ \Switch{D}
+ \ncangle[angleA=90,angleB=180,armB=0]{A}{B}
+ \ncangle[angleA=0,angleB=90,armB=0]{B}{C}
+ \ncput[ref=l]{~~~$i=i_{\mbox{max}}(1-w^{-t/3})$}
+ \ncangle[angleA=-90,armB=0,angleB=0]{C}{D}
+ \ncangle[angleA=180,armB=0,angleB=-90]{D}{A}
+ \nput{180}{A}{10V}
+ \nput{90}{B}{R}
+ \nput{0}{C}{3mH}
+ \nput{270}{D}{S}
+\end{pspicture}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-10-5.inl b/obsolete/graphics/pstricks/doc/lgc/4-10-5.inl
new file mode 100644
index 0000000000..7c9eb48eb1
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-10-5.inl
@@ -0,0 +1,40 @@
+\newdimen\X
+\newdimen\Y
+\newdimen\Coor
+
+% #1 is number of steps
+\newcommand{\RandomWalk}[1]{%
+ \setrandim\X{0pt}{1pt}
+ \setrandim\Y{0pt}{1pt}
+ \psdots[dotstyle=*,dotsize=6pt](\pointless\X,\pointless\Y)
+ \pscustom{%
+ \moveto(\pointless\X,\pointless\Y)
+ \multido{\i=1+1}{#1}{%
+ \MoveCoordinate{\X}
+ \MoveCoordinate{\Y}
+ \lineto(\pointless\X,\pointless\Y)}}}
+
+% Computation of new horizontal or vertical position of point
+\newcommand{\MoveCoordinate}[1]{%
+ \setrandim\Coor{-0.03pt}{0.03pt}
+ \advance #1 by \Coor
+ \ifdim#1>1pt #1=1pt \fi
+ \ifdim#1<0pt #1=0pt \fi}
+
+\newcommand{\randomdemo}[2]{{%
+ \psframe[linewidth=0.6mm](1,1)
+ \rput(#1,#2){\RandomWalk{300}}
+ \psset{linecolor=red}
+ \rput(#1,#2){\RandomWalk{200}}
+ \psset{linecolor=green}
+ \rput(#1,#2){\RandomWalk{100}}}}
+
+\psset{unit=5,dimen=middle}
+
+\framebox{%
+ \begin{pspicture}(1,3)
+ \randomdemo{0}{0}
+ \randomdemo{0}{1}
+ \randomdemo{0}{2}
+ \end{pspicture}}
+
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-10-7.inl b/obsolete/graphics/pstricks/doc/lgc/4-10-7.inl
new file mode 100644
index 0000000000..2364d978d9
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-10-7.inl
@@ -0,0 +1,9 @@
+\PstPolygon
+\PstPolygon[PolyNbSides=11]
+\PstPolygon[PolyOffset=2]
+\PstPolygon[linecolor=red,PolyIntermediatePoint=0.2]
+\PstPolygon[linestyle=dashed,PolyCurves,PolyOffset=2,
+ PolyIntermediatePoint=0.75]
+\PstPolygon[unit=2,PolyNbSides=9,PolyOffset=2]
+\PstPolygon[unit=2,PolyNbSides=27,PolyOffset=7,PolyCurves,
+ PolyIntermediatePoint=0.1]
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-5-13.inl b/obsolete/graphics/pstricks/doc/lgc/4-5-13.inl
new file mode 100644
index 0000000000..50b213c167
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-5-13.inl
@@ -0,0 +1,40 @@
+\begin{pspicture}(-0.3,0)(9.1,9)
+ \small
+ \psset{linestyle=none}
+ \pstextpath[r]{\pscurve(1.5,8)(3,9)(4.45,6.5)}
+ {Tous les souvenirs de naguère}
+ \pstextpath[r]{\pscurve(1,7)(2,7.5)(4.45,6)}
+ {O mes amis partis en guerre}
+ \pstextpath[r]{\pscurve(1,6)(2,6.7)(4.45,5.2)}
+ {Jaillissent vers le firmament}
+ \pstextpath[r]{\pscurve(0.8,5)(2,5.8)(4.45,4.4)}
+ {Et vos regards en l'eau dormant}
+ \pstextpath[r]{\pscurve(1,4.3)(2,5)(4.45,3.8)}
+ {Meurent mélancoliquement}
+ \pstextpath[r]{\pscurve(0.3,3.2)(2,4.3)(4.45,3.3)}
+ {Où sont-ils Braque et Max Jacob}
+ \pstextpath[r]{\pscurve(0.2,2.7)(2,3.5)(3.8,3.2)(4.45,2.8)}
+ {Derain aux yeux gris comme l'aube}
+ \rput(4.5,7.3){\bfseries\Huge ?}
+ \pstextpath[l]{\pscurve(4.55,6.5)(6.5,8.7)(7.8,8)}
+ {Où sont Raynal Billy Dalize}
+ \pstextpath[l]{\pscurve(4.55,5.8)(6.5,7.5)(8.3,6.4)}
+ {Dont les noms se mélancolisent}
+ \pstextpath[l]{\pscurve(4.55,5.2)(6.5,6.6)(7.6,6.4)(8.2,5.2)(8.5,5.4)}
+ {Comme des pas dans une église}
+ \pstextpath[l]{\pscurve(4.55,4.5)(6.5,5.8)(8.5,4.7)}
+ {Où est Cremnitz qui s'engagea}
+ \pstextpath[l]{\pscurve(4.55,3.8)(6.5,4.7)(8.5,4)}
+ {Peut-être sont-ils morts déjà}
+ \pstextpath[l]{\pscurve(4.55,3.2)(6.5,4.2)(9,2.8)}
+ {De souvenirs mon âme est pleine}
+ \pstextpath[l]{\pscurve(4.55,2.4)(5,3)(6.5,3.5)(8.8,2.3)}
+ {Le jet d'eau pleure sur ma peine}
+ \pstextpath[c]{\pscurve(-0.3,1.4)(4.5,2.2)(9.1,1.4)}
+ {{\footnotesize\scshape Ceux qui sont partis à la guerre au nord
+ se battent maintenant}}
+ \pstextpath[c]{\pscurve(2.1,1.2)(4.5,0.8)(6.9,1.3)}
+ {Le soir tombe {\bfseries\Huge O} sanglante mer}
+ \pstextpath[c]{\pscurve(0,1)(4.5,0)(9,1)}
+ {Jardins où saigne abondamment le laurier rose fleur guerrière}
+\end{pspicture}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-5-14.inl b/obsolete/graphics/pstricks/doc/lgc/4-5-14.inl
new file mode 100644
index 0000000000..c577277ddc
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-5-14.inl
@@ -0,0 +1,5 @@
+\begin{pspicture}(0,-1)(8.7,2.5)
+ \fontfamily{ptm}\selectfont
+ \pscharpath[fillstyle=solid,linecolor=red,fillcolor=lightblue,linewidth=2pt]
+ {\fontsize{1.5in}{1.5in}\selectfont \LaTeX}
+\end{pspicture}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-5-16.inl b/obsolete/graphics/pstricks/doc/lgc/4-5-16.inl
new file mode 100644
index 0000000000..1bc020e636
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-5-16.inl
@@ -0,0 +1,21 @@
+\DeclareFixedFont{\bigsf}{T1}{phv}{b}{n}{1.75cm}
+\DeclareFixedFont{\tinyrm}{T1}{ptm}{m}{n}{2mm}
+
+\newcounter{myN}
+\setcounter{myN}{300}
+
+\begin{pspicture}(0,0)(11,1.4)
+ \begin{pscharclip}[linecolor=red,fillstyle=solid,fillcolor=yellow]
+ {\rput[bl](0,0){\bigsf CHOCOLATE}}
+ \rput[t]{90}(0,0){%
+ \begin{minipage}{4cm}
+ \offinterlineskip
+ \raggedright\tinyrm\color{black}%
+ \whiledo{\value{myN}>0}%
+ {%
+ \addtocounter{myN}{-1}
+ nuts and raisins
+ }%
+ \end{minipage}}%
+ \end{pscharclip}
+\end{pspicture}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-5-3.inl b/obsolete/graphics/pstricks/doc/lgc/4-5-3.inl
new file mode 100644
index 0000000000..39ef0f0d0d
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-5-3.inl
@@ -0,0 +1,5 @@
+\psframebox{The dragon}
+\psframebox{\psframebox[linecolor=green]{ate}
+ \psframebox[linecolor=blue]
+ {\psframebox[linecolor=red]{the women} and
+ \psframebox[linecolor=red]{children}}}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-6-26.inl b/obsolete/graphics/pstricks/doc/lgc/4-6-26.inl
new file mode 100644
index 0000000000..2331474e25
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-6-26.inl
@@ -0,0 +1,29 @@
+\newcounter{CtA}
+\newcounter{CtB}
+
+\newcommand{\Wheel}[3]{{%
+ \color{black}
+ \psset{unit=#2}
+ \begin{pspicture}(-1,-1.2)(1,1.2)
+ \SpecialCoor
+ \degrees[#1]
+ \multido{\ia=1+1}{#1}{%
+ \setcounter{CtA}{\ia}%
+ \stepcounter{CtA}%
+ \setcounter{CtB}{#1}%
+ \addtocounter{CtB}{-\ia}%
+ \multido{\ib=\value{CtA}+1}{%
+ \value{CtB}}{#3(1;\ia)(1;\ib)}}
+ \multido{\i=1+1}{#1}{%
+ \rput(1;\i){%
+ \pscirclebox[fillstyle=solid,fillcolor=white]{\footnotesize\i}}}
+ \end{pspicture}}}% end of newcommand
+
+{%
+ \color{white}
+ \fbox{\Wheel{3}{1.2}{\psline}
+ \Wheel{5}{1.2}{\psline}}
+ \psset{arcangle=10}
+ \fbox{\Wheel{12}{3}{\pcarc[linecolor=blue]}}
+}
+
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-6-31.inl b/obsolete/graphics/pstricks/doc/lgc/4-6-31.inl
new file mode 100644
index 0000000000..1bde6620c4
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-6-31.inl
@@ -0,0 +1,9 @@
+\psset{framearc=.4}
+\begin{psmatrix}[colsep=3]
+ \pnode{A}&\psframebox{Waiting} & \psframebox{Calculating}
+ \ncline[arrows=->]{1,1}{1,2}
+ \psset{offset=-.1}
+ \ncline[arrows=->]{1,2}{1,3}\naput{{\scriptsize TRIGGER/activated}}
+ \psset{offset=.1}
+ \ncline[arrows=<-]{1,2}{1,3}\nbput{{\scriptsize [4,11]/finished}}
+\end{psmatrix}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-6-32.inl b/obsolete/graphics/pstricks/doc/lgc/4-6-32.inl
new file mode 100644
index 0000000000..0755ba6594
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-6-32.inl
@@ -0,0 +1,21 @@
+\psset{arrows=->,fillcolor=white,fillstyle=solid}
+
+\newcommand{\Show}[1]{\psshadowbox{#1}}
+
+\begin{psmatrix}[mnode=r,ref=t]
+ \psframebox[linestyle=none,framesep=.75]{%
+ \begin{psmatrix}[name=A,ref=c]
+ \Show{Stakeholder}
+ \end{psmatrix}} &
+ \psframebox[fillstyle=solid,fillcolor=pink,framesep=.75]{%
+ \rule{1cm}{0pt}
+ \begin{psmatrix}[ref=c]
+ [name=B]\Show{Goal} & \Show{Criteria}\\
+ \Show{Sub-goal} & \Show{Justification}
+ \ncline{1,1}{1,2}
+ \ncline{1,1}{2,2}
+ \ncline{1,1}{2,1}\tlput{Strategy}
+ \ncline{2,1}{2,2}
+ \end{psmatrix}}
+\end{psmatrix}
+\ncline[angleB=180]{A}{B}\naput[npos=.7]{Model}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-6-39.inl b/obsolete/graphics/pstricks/doc/lgc/4-6-39.inl
new file mode 100644
index 0000000000..a6313be1ed
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-6-39.inl
@@ -0,0 +1,18 @@
+\renewcommand\psedge{\nccurve}
+\newcommand{\Female}[2][]{{\psset{linecolor=pink}\TR[#1]{\emph{#2}}}}
+\newcommand{\Male}[2][]{{\psset{linecolor=blue}\TR[#1]{#2}}}
+
+\psset{nodesep=2pt,angleA=90,angleB=-90}
+
+\pstree[treemode=U]{\Female{{\bfseries Matilde}}}{%
+ \pstree{\Male{Sebastian}}{%
+ \pstree{\Male[name=P]{Philip}}{\Male{Frederick}\Female{Ethel}}
+ \pstree{\Female[name=W]{Mary}}{\Male{Lionel}\Female{Agnes}}}
+ \pstree{\Female{Leonor}}{
+ \pstree{\Male[name=R]{Ra\'ul}}{\Male{Joaquim}\Female{J\'ulia}}
+ \pstree{\Female[name=A]{Am\'elia}}{\Male{\'Alvaro}\Female{Augusta}}}
+}
+
+\psset{linecolor=green,doubleline=true,linestyle=dotted}
+\ncline{P}{W}\nbput{1940}
+\ncline{R}{A}\nbput{1954}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-6-40.inl b/obsolete/graphics/pstricks/doc/lgc/4-6-40.inl
new file mode 100644
index 0000000000..434205ea52
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-6-40.inl
@@ -0,0 +1,24 @@
+\newcommand{\Item}[1]{\Tr[ref=l]{\psframebox[linestyle=none]{#1}}}
+\renewcommand{\psedge}{\ncangle}
+
+\psset{xbbd=1.5cm,treemode=R,angleB=-180,angleA=0,levelsep=72pt}
+
+\pstree{\Item{langs}}{%
+ \Item{german}
+ \pstree{\Item{greek}}{%
+ \Item{h kelly}
+ \pstree{\Item{levy}}{%
+ \Item{doc}
+ \Item{src}
+ }
+ }
+ \Item{italian}
+ \pstree{\Item{russian}}{
+ \Item{hyphen}
+ }
+ \pstree{\Item{turkish}}{%
+ \Item{hyphen}
+ \Item{inputs}
+ \Item{mf}
+ }
+}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-7-1.inl b/obsolete/graphics/pstricks/doc/lgc/4-7-1.inl
new file mode 100644
index 0000000000..7a7b138eab
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-7-1.inl
@@ -0,0 +1,8 @@
+\begin{pspicture}(-1,-2.5)(9,2.5)
+ \psset{xunit=.25mm,yunit=2cm}
+ \psset{plotpoints=50}
+ \psplot[linestyle=dashed,linecolor=blue]{0}{360}{x sin}
+ \psplot[plotstyle=dots,dotstyle=triangle]{0}{360}{x cos}
+ \psset{plotpoints=200}
+ \psplot[linecolor=red]{0}{360}{x dup sin exch cos mul}
+\end{pspicture}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-7-2.inl b/obsolete/graphics/pstricks/doc/lgc/4-7-2.inl
new file mode 100644
index 0000000000..dfa4f936ff
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-7-2.inl
@@ -0,0 +1,11 @@
+\begin{tabular}{ccc}
+ \begin{pspicture}(-0.75,-0.75)(3,2)\psaxes(3,2)\end{pspicture}&
+ \begin{pspicture}(-0.75,-2)(3,0.75)\psaxes(3,-2)\end{pspicture}&
+ \begin{pspicture}(-0.75,-.75)(3,2)\psaxes(2,1)(0,0)(3,2)\end{pspicture}\\
+ \verb|psaxes(3,2)| & \verb|psaxes(3,-2)| & \verb|psaxes(2,1)(0,0)(3,2)|\\[20pt]
+ \begin{pspicture}(-3,-0.5)(0.75,2.5)\psaxes(-3,2)\end{pspicture}&
+ \begin{pspicture}(-3,-2)(0.5,0.75)\psaxes(-3,-2)\end{pspicture}&
+ \begin{pspicture}(-1,-2)(0,0)\psaxes(0,0)(-1,0)(1,1)\end{pspicture}\\
+ \verb|psaxes(-3,2)| &\verb|psaxes(-3,-2)|
+ & \verb|psaxes(0,0)(-1,0)(1,1)|\\
+\end{tabular}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-7-4.inl b/obsolete/graphics/pstricks/doc/lgc/4-7-4.inl
new file mode 100644
index 0000000000..c42ee5c12b
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-7-4.inl
@@ -0,0 +1,41 @@
+\newcounter{lastval}
+\newcounter{thishalf}
+\newcounter{thisval}
+
+\newcommand\lang[4]{% name, value, percentage, color
+ \setcounter{thisval}{\value{lastval}}
+ \addtocounter{thisval}{#3}
+ \pswedge[fillcolor=#4]{1}{\thelastval}{\thethisval}%
+ \setcounter{thishalf}{((\value{thisval}-\value{lastval})/2)+\value{lastval}}
+ %\typeout{#1: \thethishalf}%
+ \ifnum#3>200\rput(1.3;\thethishalf){#1}\fi
+ \setcounter{lastval}{\value{thisval}}
+}
+
+\bgroup
+\psset{unit=3}
+\centerline{%
+ \begin{pspicture}(-1.3,-1.3)(1.3,1.3)
+ \psset{fillstyle=solid}
+ \degrees[10000]
+ \SpecialCoor
+ \setcounter{lastval}{0}
+ \lang{Romanian}{1}{3}{green}
+ \lang{Czech}{2}{6}{blue}
+ \lang{Bulgarian}{4}{11}{green}
+ \lang{Japanese}{4}{11}{palegreen}
+ \lang{Dutch}{7}{20}{black}
+ \lang{Norwegian}{20}{56}{cyan}
+ \lang{Greek}{26}{73}{magenta}
+ \lang{Swedish}{34}{95}{lightgray}
+ \lang{Danish}{46}{129}{white}
+ \lang{French}{83}{232}{pink}
+ \lang{Latin}{146}{409}{wheat}
+ \lang{Russian}{243}{680}{white}
+ \lang{Italian}{391}{1093}{gray}
+ \lang{German}{508}{1421}{lightblue}
+ \lang{unknown}{599}{1676}{red}
+ \lang{English}{1462}{4085}{yellow}
+\end{pspicture}}
+\egroup
+
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-8-3.inl b/obsolete/graphics/pstricks/doc/lgc/4-8-3.inl
new file mode 100644
index 0000000000..0fea88b07a
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-8-3.inl
@@ -0,0 +1,6 @@
+\begin{pspicture}(-2.3,-0.8)(2.3,1.5)
+ \psset{unit=.3cm}
+ \psset{viewpoint=-1 -1 1}
+ \ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}
+ \ThreeDput[normal=-1 0 0](0,4,0){\psframe*[linecolor=yellow](4,4)}
+\end{pspicture}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-8-4.inl b/obsolete/graphics/pstricks/doc/lgc/4-8-4.inl
new file mode 100644
index 0000000000..6984defd87
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-8-4.inl
@@ -0,0 +1,53 @@
+\def\CubeSide#1#2#3#4{%
+ \ThreeDput[normal=#1](#2){%
+ \psframe*[linecolor=#3](4,4)
+ \rput(2,2){\footnotesize#4}}
+}
+
+\catcode`\<=12
+\catcode`\>=12
+
+\def\TheCube#1#2{%
+ \begin{pspicture}(-9,-7)(9,9)
+ \bfseries
+ \ifcase #1 \relax
+ \or %1
+ \psset{viewpoint=-1 -1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: -1 -1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{-1 0 0}{0,4,0}{yellow}{FRONT}
+ \CubeSide{0 -1 0}{0,0,0}{blue}{FRONT}
+ \or %2
+ \psset{viewpoint=1 -1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: 1 -1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{0 -1 0}{0,0,0}{blue}{FRONT}
+ \CubeSide{1 0 0}{4,0,0}{white}{BACK}
+ \or %3
+ \psset{viewpoint=1 1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: 1 1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{1 0 0}{4,0,0}{white}{BACK}
+ \CubeSide{0 1 0}{4,4,0}{green}{BACK}
+ \or %4
+ \psset{viewpoint=-1 1 #2}
+ \rput[l](-8,-6){{\normalsize Viewpoint: -1 1 #2}}
+ \ifnum#2>0\ThreeDput[normal=0 0 1]{\psgrid(-3,-3)(6,6)}\fi
+ \CubeSide{0 1 0}{4,4,0}{green}{BACK}
+ \CubeSide{-1 0 0}{0,4,0}{yellow}{FRONT}
+ \fi
+ \ifnum#2<0
+ \CubeSide{0 0 -1}{0,4,0}{magenta}{BOT}
+ \else
+ \CubeSide{0 0 1}{0,0,4}{red}{TOP}
+ \fi
+ \end{pspicture}
+}
+
+\psset{unit=.3cm,subgriddiv=0}
+\begin{tabular}{cc}
+ \TheCube{1}{1}&
+ \TheCube{2}{1}\\[-10pt]
+ \TheCube{3}{1}&
+ \TheCube{4}{1}\\
+\end{tabular}
diff --git a/obsolete/graphics/pstricks/doc/lgc/4-8-5.inl b/obsolete/graphics/pstricks/doc/lgc/4-8-5.inl
new file mode 100644
index 0000000000..f32d756d6e
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/lgc/4-8-5.inl
@@ -0,0 +1,77 @@
+\newcommand{\DieFrame}[1][darkgray]{%
+ \psframe[linecolor=black,fillcolor=#1,fillstyle=solid](4,4)}
+
+\newcommand{\SpotColor}{white}
+\newcommand{\DieOne}{\DieFrame[lightgray]
+ \pscircle*[linecolor=\SpotColor](2,2){.3}
+}
+\newcommand{\DieTwo}{\DieFrame[lightgray]
+ \pscircle*[linecolor=\SpotColor](1,2){.3}
+ \pscircle*[linecolor=\SpotColor](3,2){.3}
+}
+\newcommand{\DieThree}{\DieFrame[lightgray]
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](2,2){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+}
+\newcommand{\DieFour}{\DieFrame
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+ \pscircle*[linecolor=\SpotColor](1,3){.3}
+ \pscircle*[linecolor=\SpotColor](3,1){.3}
+}
+\newcommand{\DieFive}{\DieFrame
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+ \pscircle*[linecolor=\SpotColor](1,3){.3}
+ \pscircle*[linecolor=\SpotColor](3,1){.3}
+ \pscircle*[linecolor=\SpotColor](2,2){.3}
+}
+\newcommand{\DieSix}{\DieFrame
+ \pscircle*[linecolor=\SpotColor](1,1){.3}
+ \pscircle*[linecolor=\SpotColor](1,2){.3}
+ \pscircle*[linecolor=\SpotColor](1,3){.3}
+ \pscircle*[linecolor=\SpotColor](3,1){.3}
+ \pscircle*[linecolor=\SpotColor](3,2){.3}
+ \pscircle*[linecolor=\SpotColor](3,3){.3}
+}
+\newcommand\DieSide[3]{\ThreeDput[normal=#1](#2){#3}}
+
+\def\TheDie#1#2(#3)(#4){%
+ \begin{pspicture}(#3)(#4)
+ \ifcase #1 \relax
+ \or %1
+ \psset{viewpoint=-1 -1 #2}
+ \DieSide{-1 0 0}{0,4,0}{\DieThree}
+ \DieSide{0 -1 0}{0,0,0}{\DieFive}
+ \or %2
+ \psset{viewpoint=1 -1 #2}
+ \DieSide{0 -1 0}{0,0,0}{\DieFive}
+ \DieSide{1 0 0}{4,0,0}{\DieFour}
+ \or %3
+ \psset{viewpoint=1 1 #2}
+ \DieSide{1 0 0}{4,0,0}{\DieFour}
+ \DieSide{0 1 0}{4,4,0}{\DieTwo}
+ \or %4
+ \psset{viewpoint=-1 1 #2}
+ \DieSide{0 1 0}{4,4,0}{\DieTwo}
+ \DieSide{-1 0 0}{0,4,0}{\DieThree}
+ \fi
+ \ifnum#2<0
+ \DieSide{0 0 -1}{0,4,0}{\DieSix}
+ \else
+ \DieSide{0 0 1}{0,0,4}{\DieOne}
+ \fi
+ \end{pspicture}}
+
+\psset{unit=.5cm}
+\begin{tabular}{ccc}
+ \TheDie{1}{1}(-4,-0.5)(5,7.5)&
+ \TheDie{2}{1}(-1.5,-1.5)(7.5,6.5)&
+ \TheDie{3}{1}(-4,-3)(5,5)\\
+ \TheDie{4}{1}(-6.5,-2)(2.5,6)&
+ \TheDie{1}{-1}(-4,-3)(5,5)&
+ \TheDie{2}{-1}(-1.5,-1.5)(7.5,6.5)\\
+ \TheDie{3}{-1}(-4,-0.5)(5,7.5)&
+ \TheDie{4}{-1}(-6.5,-2)(2.5,6)\\
+\end{tabular}
diff --git a/obsolete/graphics/pstricks/doc/pst-doc.err b/obsolete/graphics/pstricks/doc/pst-doc.err
new file mode 100644
index 0000000000..191c1d1000
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/pst-doc.err
@@ -0,0 +1,95 @@
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -*- Mode: Text -*- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; pst-doc.err --- Various errors in PSTricks documentation for 0.93a version
+;; from 12 March 1993 and in betadoc1/betadoc2 documentation
+;;
+;; Author : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+;; Created the : Wed Mar 12 20:08:54 1997
+;; Last mod. by : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+;; Last mod. the : Wed Mar 12 21:14:49 1997
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
+In PSTricks documentation for 0.93a version from 12 March 1993:
+--------------------------------------------------------------
+
+* Page 20 : \plotfile must be read \fileplot (four times)
+
+* Page 20 : \dataplot[origin=(0,1)]{\bar}
+ must be read
+ \dataplot[origin={0,1}]{\bar}
+
+* Page 22 : sin(x)cos((x=2)^2)
+ must be read
+ sin(x)cos((x/2)^2)
+
+* Page 31 : \newpsobject{\mygrid}{etc.}
+ must be read
+ \newpsobject{mygrid}{etc.}
+
+* Page 51 : \psxlabel
+ \psylabel
+ .........
+ \def\psxlabel#1{\small #1}
+ must be read
+ \pshlabel
+ \psvlabel
+ .........
+ \def\pshlabel#1{\small #1}
+
+* Page 54 : for retarc or linearc
+ must be read
+ for linearc
+ (retarc is no longer a defined parameter)
+
+* Page 70 : \pscoiland must be read \pscoil and
+
+* Page 79 : dvipsfoo:dvi -E -ofoo:eps
+ must be read
+ dvips foo:dvi -E -ofoo:eps
+ or "dvips foo.dvi -E -ofoo.eps" on some systems
+
+
+In betadoc1/betadoc2 documentation
+-----------------------------------
+
+* Page 1 : results for diamond and diamond* are inverted
+
+* Page 7 : the center the center
+ must be read
+ the center
+
+* Page 8 : \rput{angle}(x,y){\circlenode{name}{stuff}
+ must be read
+ \rput{angle}(x,y){\circlenode{name}{stuff}}
+
+* Page 18 : One more paramter trick:
+ must be read
+ One more parameter trick:
+
+* Page 23 : between between
+ must be read
+ between
+
+* Page 24 : right "a" in the second diagram must be read "A"
+
+* Page 26 : shortput=tab is the default within a \psmatrix
+ must be read
+ shortput=tablr is the default within a \psmatrix
+
+* Page 28 : the precede it by {}
+ must be read
+ then precede it by {}
+
+* Page 29 : a fixed with
+ must be read
+ a fixed width
+
+* Page 29 : the c mnode (corresponding to \cnode)
+ must be read
+ the C mnode (corresponding to \Cnode)
+
+* Page 29 : use \multispan{int}
+ must be read
+ use \psspan{int}
+
diff --git a/obsolete/graphics/pstricks/doc/pst-quik.ps b/obsolete/graphics/pstricks/doc/pst-quik.ps
new file mode 100644
index 0000000000..4c25e99ff1
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/pst-quik.ps
@@ -0,0 +1,1012 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.491 Copyright 1986, 1992 Radical Eye Software
+%%Title: pst-user.dvi
+%%Pages: 8 1
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Helvetica-Bold Times-Bold Helvetica-BoldOblique Helvetica
+%%+ Helvetica-Oblique Symbol Times-Italic Times-Roman Times-BoldItalic
+%%EndComments
+%DVIPSCommandLine: dvips pst-user.dvi -Pport -o pst-quik.ps -p1.2
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
+S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div
+/hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley
+0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
+product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
+(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
+rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
+ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
+/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
+B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
+rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
+B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
+/eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1993/3/12. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+pathforall z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
+sub y mul setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
+stroke /y1 y1 a add def } repeat grestore } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap systemdict /currentstrokeadjust known {
+currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
+0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
+bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
+repeat grestore } def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
+/SD { 0 360 arc fill } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
+c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
+div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
+div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
+def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
+div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
+div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
+{ 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
+def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
+b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
+add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
+f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
+add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
+setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
+cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
+moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
+add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
+if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
+h add def } loop grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+CP 4 2 roll T moveto } def
+/PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
+moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
+/IfVisible false def } if } ifelse } def
+/InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
+grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
+end
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index
+/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5
+-1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin
+Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{
+FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics /Metrics
+currentdict end def[2 index currentdict end definefont 3 -1 roll makefont
+/setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4
+index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding
+exch def}def end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 135[24
+3[13 19 19 1[24 24 27 37 13 2[13 1[24 1[21 24 21 1[24 27[32
+35 32 1[32 65[{}19 48.000336 /Times-BoldItalic rf /Fb 136[41
+2[16 22 19 2[29 29 45 16 2[16 1[29 1[25 1[25 29 25 20[35 7[41
+21[14 46[{}17 57.600342 /Times-Roman rf /Fc 139[14 3[27 62[27
+27 48[{}4 49.200378 /Helvetica rf /Fd 80[29 58[16 22 22 1[29
+29 29 1[16 2[16 3[25 1[25 1[29 10[35 13[41 3[41 68[{}15 57.600342
+/Times-Italic rf /Fe 80[27 54[24 35 24 24 13 19 16 24 24 24
+24 1[13 24 1[13 24 2[21 24 21 24 21 12[29 27 32 3[35 7[27 29
+35 32 1[35 18[12 16 12 44[{}33 48.000336 /Times-Roman rf /Ff
+135[16 9[16 25 3[9 7[14 97[{}5 32.000225 /Times-Roman rf /Fg
+134[21 21 2[24 13 3[24 2[35 13 6[21 3[24 10[29 2[24 4[32 8[29
+69[{}13 48.000336 /Times-Italic rf /Fh 134[20 20 29 20 23 11
+20 14 1[23 23 23 34 9 2[9 1[23 11 23 23 1[23 23 35[24 10[23
+23 23 48[{}24 41.000366 /Helvetica-Oblique rf /Fi 130[14 11
+14 5[23 11 20 14 23 23 23 23 1[9 2[9 1[23 1[23 1[20 1[23 3[11
+1[11 23[29 4[24 1[24 13[11 14 11 24 16 14 14 40[{}29 41.000366
+/Helvetica rf /Fj 81[25 48[16 1[16 1[23 23 32 23 25 14 23 16
+1[25 25 25 36 11 1[11 11 25 25 14 23 25 23 25 23 30[29 29 3[24
+8[23 23 23 23 23 11 2[11 2[14 14 40[{}38 41.000366 /Helvetica-BoldOblique
+rf /Fk 81[25 48[16 11 16 20 23 23 32 23 25 14 23 16 25 25 25
+25 36 11 23 11 11 25 25 14 23 25 23 25 23 3[14 11 14 2[27 3[25
+27 29 1[27 32 29 1[25 6[27 1[29 29 29 3[24 1[14 1[23 23 23
+23 23 23 23 23 23 23 1[11 14 11 1[16 14 14 6[14 33[{}64 41.000366
+/Helvetica-Bold rf /Fl 136[35 24 27 16 19 21 1[27 24 27 40
+13 2[13 1[24 16 21 27 21 27 24 13[27 35 1[29 11[35 35 1[35
+6[16 24 24 24 24 24 24 24 24 24 24 1[12 4[16 16 40[{}39 48.000336
+/Times-Bold rf /Fm 81[36 51[29 33 33 46 33 36 20 33 23 1[36
+36 36 52 16 33 16 16 36 36 20 33 36 33 36 33 12[36 39 42 1[39
+46 42 49 36 2[16 1[46 36 39 42 42 42 42 20[16 44[{}43 59.040516
+/Helvetica-Bold rf /Fn 134[27 27 38 1[30 16 27 19 1[30 30 30
+44 14 27 1[14 1[30 16 27 30 27 30 27 10[33 1[30 33 35 38 33
+38 5[14 4[35 2[35 3[29 61[{}32 49.200378 /Helvetica-Bold rf
+/Fo 67[48 188[{}1 48.249817 /Symbol rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 1 1
+0 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1145
+b(I)-75 2828 y Fm(Color)22 2933 y Fl(5)40 b Fk(\\newgray)o({)p
+Fj(color)t Fk(}{)p Fj(num)q Fk(})22 3009 y Fl(5)g Fk(\\newrgbcolor{)p
+Fj(color)t Fk(}{)p Fj(num1)11 b(num2)g(num3)r Fk(})22 3086
+y Fl(5)40 b Fk(\\newhsbcolor{)p Fj(color)t Fk(}{)p Fj(num1)10
+b(num2)i(num3)r Fk(})22 3163 y Fl(5)40 b Fk(\\newcmykcolor)o({)p
+Fj(color)t Fk(}{)p Fj(num1)11 b(num2)h(num3)f(num4)r Fk(})-75
+3332 y Fm(Setting)16 b(graphics)f(parameters)22 3436 y Fl(6)40
+b Fk(\\psset)o({)p Fj(par1=value1)p Fi(,)p Fh(par2=value2)p
+Fi(,)q Fo(\274)o Fk(})-75 3605 y Fm(Dimensions,)17 b(coordinates)e(and)h
+(angles)22 3710 y Fl(7)40 b Fk(unit=)p Fj(dim)704 b Fl(Default:)15
+b Fk(1cm)22 3786 y Fl(7)40 b Fk(\\pssetlength)o({)p Fj(cmd)t
+Fk(}{)p Fj(dim)q Fk(})22 3863 y Fl(7)g Fk(\\psaddtolength)o({)p
+Fj(cmd)t Fk(}{)p Fj(dim)q Fk(})22 3940 y Fl(7)g Fk(xunit=)p
+Fj(dim)681 b Fl(Default:)15 b Fk(1cm)22 4017 y Fl(7)40 b Fk(yunit=)p
+Fj(dim)681 b Fl(Default:)15 b Fk(1cm)22 4094 y Fl(7)40 b Fk(runit=)p
+Fj(dim)688 b Fl(Default:)15 b Fk(1cm)22 4170 y Fl(8)40 b Fk(\\degrees)o
+Fi([)p Fh(num)q Fi(])22 4247 y Fl(8)g Fk(\\radians)-75 4416
+y Fm(Basic)16 b(graphics)g(parameters)22 4520 y Fl(8)40 b Fk(linewidth=)p
+Fj(dim)611 b Fl(Default:)15 b Fk(.8pt)22 4597 y Fl(8)40 b Fk(linecolor=)p
+Fj(color)558 b Fl(Default:)15 b Fk(black)22 4674 y Fl(9)40
+b Fk(showpoints=)p Fj(true/false)428 b Fl(Default:)15 b Fk(false)1400
+2828 y Fm(Lines)h(and)f(polygons)1472 2933 y Fl(10)41 b Fk(linearc=)p
+Fj(dim)667 b Fl(Default:)15 b Fk(0pt)1472 3009 y Fl(10)41 b
+Fk(framearc=)p Fj(num)649 b Fl(Default:)15 b Fk(0)1472 3086
+y Fl(10)41 b Fk(cornersize=)p Fj(relative/absolute)260 b Fl(Default:)15
+b Fk(relative)1472 3163 y Fl(10)41 b Fk(\\psline)p Fi(*[)p
+Fh(par)p Fi(]{)p Fh(arrows)q Fi(}\()p Fh(x0)r Fi(,)p Fh(y0)r
+Fi(\))p Fk(\()p Fj(x1)p Fk(,)p Fj(y1)p Fk(\))p Fo(\274)o Fi(\()p
+Fh(xn)q Fi(,)p Fh(yn)q Fi(\))1472 3240 y Fl(10)g Fk(\\qline\()p
+Fj(coor0)p Fk(\)\()p Fj(coor1)p Fk(\))1475 3317 y Fl(1)m(1)g
+Fk(\\pspolygon)p Fi(*[)p Fh(par)p Fi(]\()p Fh(x0)r Fi(,)p Fh(y0)r
+Fi(\))p Fk(\()p Fj(x1)p Fk(,)p Fj(y1)p Fk(\)\()p Fj(x)o(2)s
+Fk(,)p Fj(y2)s Fk(\))p Fo(\274)o Fi(\()p Fh(xn)q Fi(,)p Fh(yn)q
+Fi(\))1475 3393 y Fl(1)m(1)g Fk(\\psframe)o Fi(*[)p Fh(par)p
+Fi(]\()p Fh(x0)r Fi(,)p Fh(y0)r Fi(\))p Fk(\()p Fj(x1)p Fk(,)p
+Fj(y1)p Fk(\))1400 3562 y Fm(Arcs,)16 b(circles)g(and)g(ellipses)1475
+3667 y Fl(1)m(1)41 b Fk(\\pscircle)p Fi(*[)p Fh(par)p Fi(]\()p
+Fh(x0)r Fi(,)p Fh(y0)r Fi(\))p Fk({)p Fj(radius)q Fk(})1475
+3743 y Fl(1)m(1)g Fk(\\qdisk\()p Fj(coor)p Fk(\){)p Fj(radius)q
+Fk(})1472 3820 y Fl(12)g Fk(\\pswedge)o Fi(*[)p Fh(par)p Fi(]\()p
+Fh(x0)r Fi(,)p Fh(y0)r Fi(\))p Fk({)p Fj(radius)q Fk(}{)p Fj(angle1)p
+Fk(}{)p Fj(angle2)s Fk(})1472 3897 y Fl(12)g Fk(\\psellipse)p
+Fi(*[)p Fh(par)p Fi(]\()p Fh(x0)r Fi(,)p Fh(y0)r Fi(\))p Fk(\()p
+Fj(x1)p Fk(,)p Fj(y1)p Fk(\))1472 3974 y Fl(12)g Fk(\\psarc)o
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(}\()p Fh(x)s Fi(,)t
+Fh(y)t Fi(\))p Fk({)p Fj(radius)q Fk(}{)p Fj(angleA)p Fk(}{)p
+Fj(angleB)r Fk(})1472 4051 y Fl(12)g Fk(arcsepA=)p Fj(dim)637
+b Fl(Default:)15 b Fk(0pt)1472 4127 y Fl(12)41 b Fk(arcsepB=)p
+Fj(dim)637 b Fl(Default:)15 b Fk(0pt)1472 4204 y Fl(13)41 b
+Fk(arcsep=)p Fj(dim)704 b Fl(Default:)15 b Fk(0)1472 4281 y
+Fl(13)41 b Fk(\\psarcn)o Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q
+Fi(}\()p Fh(x)s Fi(,)t Fh(y)t Fi(\))p Fk({)p Fj(radius)q Fk(}{)p
+Fj(angleA)p Fk(}{)p Fj(angleB)r Fk(})1400 4450 y Fm(Curves)1472
+4554 y Fl(13)g Fk(\\psbezier)p Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q
+Fi(}\()p Fh(x0)r Fi(,)p Fh(y0)r Fi(\))p Fk(\()p Fj(x1)o Fk(,)p
+Fj(y1)p Fk(\)\()o Fj(x2)s Fk(,)p Fj(y2)r Fk(\)\()p Fj(x)o(3)r
+Fk(,)p Fj(y3)r Fk(\))1472 4631 y Fl(14)g Fk(\\parabola)o Fi(*[)p
+Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x0)r Fk(,)t
+Fj(y0)r Fk(\)\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\))1472 4708 y
+Fl(14)g Fk(curvature=)p Fj(num1)9 b(num2)i(num3)295 b Fl(Default:)15
+b Fk(1)c(.1)g(0)0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Page: 2 2
+1 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1132
+b(II)-2 2828 y Fl(15)40 b Fk(\\pscurve)o Fi(*[)p Fh(par)p Fi(]{)p
+Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\))q Fo(\274)o
+Fi(\()p Fh(xn)q Fi(,)t Fh(yn)q Fi(\))-2 2905 y Fl(15)g Fk(\\psecurve)o
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p
+Fk(,)t Fj(y1)p Fk(\))q Fo(\274)n Fi(\()p Fh(xn)q Fi(,)t Fh(yn)q
+Fi(\))p Fk(])-2 2982 y Fl(15)g Fk(\\psccurve)o Fi(*[)p Fh(par)p
+Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\))q
+Fo(\274)n Fi(\()p Fh(xn)q Fi(,)t Fh(yn)q Fi(\))-75 3151 y Fm(Dots)-2
+3255 y Fl(15)g Fk(\\psdots)p Fi(*[)p Fh(par)t Fi(])p Fk(\()p
+Fj(x1)p Fk(,)p Fj(y1)p Fk(\))p Fi(\()p Fh(x2)s Fi(,)p Fh(y2)s
+Fi(\))q Fo(\274)n Fi(\()p Fh(xn)q Fi(,)p Fh(yn)q Fi(\))-2 3332
+y Fl(16)g Fk(dotstyle=)p Fj(style)664 b Fl(Default:)16 b Fk(*)496
+3463 y Fn(Dot)e(styles)126 3545 y Fg(Style)79 b(Example)164
+3625 y Fi(*)117 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /Dot { 0 0 DS SD } def newpath n { gsave
+T Dot grestore } repeat end
+
+@endspecial 161
+3697 a(o)c @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r2 DS CLW sub def /Dot { 0 0 DS SD 1.
+setgray 0 0 r2 SD } def newpath n { gsave T Dot grestore } repeat end
+
+@endspecial 160 3770
+a(+)g @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /DS DS 1.253 mul def /Dot { DS 0 moveto
+DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke } def newpath n { gsave
+T Dot grestore } repeat end
+
+@endspecial 105 3842 a(triangle)57
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /y1 DS .778 mul neg def /x1 y1 1.732
+mul neg def /y2 y1 CLW add def /x2 y2 1.732 mul neg def /Dot { x1 y1
+ST 1. setgray x2 y2 ST } def newpath n { gsave T Dot grestore } repeat
+end
+
+@endspecial 97 3914 a(triangle*)49
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /y1 DS .778 mul neg def /x1 y1 1.732
+mul neg def /Dot { x1 y1 ST } def newpath n { gsave T Dot grestore
+} repeat end
+
+@endspecial 702 3545 a Fg(Style)98
+b(Example)686 3625 y Fi(square)80 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r1 DS .886 mul def /r2 r1 CLW sub def
+/Dot { r1 SQ 1. setgray r2 SQ } def newpath n { gsave T Dot grestore
+} repeat end
+
+
+@endspecial 678 3697 a(square*)72 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r1 DS .886 mul def /Dot { r1 SQ } def
+newpath n { gsave T Dot grestore } repeat end
+
+
+@endspecial 664 3770 a(pentagon)56 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def DS .93 mul dup 1.236 mul /r1 ED CLW sub
+1.236 mul /r2 ED /Dot { r1 SP 1. setgray r2 SP } def newpath n { gsave
+T Dot grestore } repeat end
+
+
+@endspecial 656 3842 a(pentagon*)48 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r1 DS 1.149 mul def /Dot { r1 SP } def
+newpath n { gsave T Dot grestore } repeat end
+
+
+@endspecial 744 3914 a(|)137 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def 2.0 5. CLW mul add 2 div /DS ED /Dot
+{ 0 DS moveto 0 DS neg L stroke } def newpath n { gsave T Dot grestore
+} repeat end
+
+@endspecial
+-2 4044 a Fl(16)40 b Fk(dotscale=)p Fj(num1)10 b(num2)515 b
+Fl(Default:)15 b Fk(1)-2 4121 y Fl(16)40 b Fk(dotangle=)p Fj(angle)632
+b Fl(Default:)15 b Fk(0)-75 4290 y Fm(Grids)-2 4394 y Fl(17)40
+b Fk(\\psgrid)p Fi(\()p Fh(x0)r Fi(,)p Fh(y0)r Fi(\)\()p Fh(x1)p
+Fi(,)p Fh(y1)p Fi(\)\()p Fh(x2)s Fi(,)p Fh(y2)s Fi(\))-2 4471
+y Fl(18)g Fk(gridwidth=)p Fj(dim)604 b Fl(Default:)15 b Fk(.8pt)-2
+4548 y Fl(18)40 b Fk(gridcolor=)p Fj(color)551 b Fl(Default:)15
+b Fk(black)-2 4625 y Fl(18)40 b Fk(griddots=)p Fj(num)660 b
+Fl(Default:)15 b Fk(0)-2 4701 y Fl(18)40 b Fk(gridlabels=)p
+Fj(dim)583 b Fl(Default:)15 b Fk(10pt)1472 2828 y Fl(18)41
+b Fk(gridlabelcolor=)p Fj(color)457 b Fl(Default:)16 b Fk(black)1472
+2905 y Fl(18)41 b Fk(subgriddiv=)p Fj(int)650 b Fl(Default:)15
+b Fk(5)1472 2982 y Fl(18)41 b Fk(subgridwidth=)p Fj(dim)530
+b Fl(Default:)15 b Fk(.4pt)1472 3059 y Fl(18)41 b Fk(subgridcolor=)p
+Fj(color)496 b Fl(Default:)15 b Fk(gray)1472 3135 y Fl(18)41
+b Fk(subgriddots=)p Fj(num)586 b Fl(Default:)15 b Fk(0)1400
+3304 y Fm(Plots)1472 3409 y Fl(19)41 b Fk(plotstyle=)p Fj(style)598
+b Fl(Default:)16 b Fk(line)1472 3485 y Fl(20)41 b Fk(\\\256leplot)p
+Fi(*[)p Fh(par)p Fi(])p Fk({)p Fj(\256le)q Fk(})1472 3562 y
+Fl(20)g Fk(\\dataplot)o Fi(*[)p Fh(par)p Fi(])p Fk({)p Fj(commands)q
+Fk(})1472 3639 y Fl(20)g Fk(\\savedata)n({)p Fj(command)t Fk(}[)p
+Fj(data)q Fk(])1472 3716 y Fl(20)g Fk(\\readdata)n({)p Fj(command)t
+Fk(}{)p Fj(\256le)q Fk(})1472 3793 y Fl(21)g Fk(\\listplot)p
+Fi(*[)p Fh(par)p Fi(])p Fk({)p Fj(list)s Fk(})1472 3869 y Fl(21)g
+Fk(\\psplot)p Fi(*[)p Fh(par)p Fi(])p Fk({)p Fg(x)1830 3876
+y Ff(min)1881 3869 y Fk(}{)p Fg(x)1934 3876 y Ff(max)1991 3869
+y Fk(}{)p Fj(function)q Fk(})1472 3946 y Fl(22)g Fk(\\parametricplot)o
+Fi(*[)p Fh(par)p Fi(])p Fk({)p Fg(t)1983 3953 y Ff(min)2034
+3946 y Fk(}{)p Fg(t)2079 3953 y Ff(max)2136 3946 y Fk(}{)p
+Fj(function)q Fk(})1472 4023 y Fl(22)g Fk(plotpoints=)p Fj(int)638
+b Fl(Default:)16 b Fk(50)1400 4192 y Fm(Coordinate)f(systems)1472
+4296 y Fl(24)41 b Fk(origin=)p Fj({coor})564 b Fl(Default:)15
+b Fk(0pt,0pt)1472 4373 y Fl(24)41 b Fk(swapaxes=)p Fj(true)566
+b Fl(Default:)15 b Fk(false)1400 4542 y Fm(Line)h(styles)1472
+4646 y Fl(24)41 b Fk(linestyle=)p Fj(style)578 b Fl(Default:)16
+b Fk(solid)1472 4723 y Fl(25)41 b Fk(dash=)p Fj(dim1)11 b(dim2)501
+b Fl(Default:)15 b Fk(5pt)c(3pt)0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Page: 3 3
+2 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1118
+b(III)-2 2828 y Fl(25)40 b Fk(dotsep=)p Fj(dim)664 b Fl(Default:)15
+b Fk(3pt)-2 2905 y Fl(25)40 b Fk(border=)p Fj(dim)669 b Fl(Default:)15
+b Fk(0pt)-2 2982 y Fl(25)40 b Fk(bordercolor=)p Fj(color)498
+b Fl(Default:)15 b Fk(white)-2 3059 y Fl(25)40 b Fk(doubleline=)p
+Fj(true/false)452 b Fl(Default:)15 b Fk(false)-2 3135 y Fl(25)40
+b Fk(doublesep=)p Fj(dim)340 b Fl(Default:)15 b Fk(1.25\\pslinewidth)-2
+3212 y Fl(26)40 b Fk(doublecolor=)p Fj(color)494 b Fl(Default:)15
+b Fk(white)-2 3289 y Fl(26)40 b Fk(shadow=)p Fj(true/false)503
+b Fl(Default:)15 b Fk(false)-2 3366 y Fl(26)40 b Fk(shadowsize=)p
+Fj(dim)569 b Fl(Default:)15 b Fk(3pt)-2 3442 y Fl(26)40 b Fk(shadowangle=)p
+Fj(angle)506 b Fl(Default:)15 b Fk(-45)-2 3519 y Fl(26)40 b
+Fk(shadowcolor=)p Fj(color)407 b Fl(Default:)15 b Fk(darkgray)-2
+3596 y Fl(26)40 b Fk(dimen=)p Fj(outer/inner/middle)354 b Fl(Default:)15
+b Fk(outer)-75 3765 y Fm(Fill)i(styles)-2 3869 y Fl(27)40 b
+Fk(\256llstyle=)p Fj(style)600 b Fl(Default:)15 b Fk(none)-2
+3946 y Fl(27)40 b Fk(\256llcolor=)p Fj(color)581 b Fl(Default:)15
+b Fk(white)-2 4023 y Fl(27)40 b Fk(hatchwidth=)p Fj(dim)571
+b Fl(Default:)15 b Fk(.8pt)-2 4100 y Fl(27)40 b Fk(hatchsep=)p
+Fj(dim)618 b Fl(Default:)15 b Fk(4pt)-2 4177 y Fl(27)40 b Fk(hatchcolor=)p
+Fj(color)518 b Fl(Default:)15 b Fk(black)-2 4253 y Fl(27)40
+b Fk(hatchangle=)p Fj(rot)615 b Fl(Default:)15 b Fk(45)-75
+4422 y Fm(Arrowheads)g(and)h(such)-2 4527 y Fl(28)40 b Fk(arrows=)p
+Fj(style)690 b Fl(Default:)15 b Fk(-)528 4657 y Fn(Arrows)1612
+2829 y Fg(V)-5 b(alue)51 b(Example)37 b(Name)1658 2909 y Fi(-)97
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto load def
+false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 204 w Fe(None)1635
+2982 y Fi(<->)72 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 204
+w Fe(Arrowheads.)1635 3054 y Fi(>-<)g @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+true 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+true 0.4 1.4 2.0 3. Arrow EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 204 w Fe(Reverse)12 b(arrowheads.)1611 3126 y
+Fi(<<->>)48 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow 0 h T gsave newpath false 0.4 1.4 2.0 3.
+Arrow CP grestore CP newpath moveto 2 copy L stroke moveto EndArrow
+ moveto } def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow 0 h T
+gsave newpath false 0.4 1.4 2.0 3. Arrow CP grestore CP newpath moveto
+2 copy L stroke moveto EndArrow } def [ 36.98865 5.161 0.0 5.161
+/Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 204 w
+Fe(Double)12 b(arrowheads.)1611 3198 y Fi(>>-<<)48 b @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+true 0.4 1.4 2.0 3. Arrow CP newpath moveto 0 a neg L stroke 0 h neg
+T false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+true 0.4 1.4 2.0 3. Arrow CP newpath moveto 0 a neg L stroke 0 h neg
+T false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 36.98865 5.161 0.0
+5.161 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 204 w Fe(Double)12 b(reverse)g(arrowheads.)1648
+3271 y Fi(|-|)85 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto load def
+false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 204
+w Fe(T)l(-bars,)11 b(\257ush)g(to)h(endpoints.)1632 3343 y
+Fi(|*-|*)69 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0 CLW -2 div T 2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow
+0 CLW -2 div T 2.0 5. Tbar EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 204 w
+Fe(T)l(-bars,)11 b(centered)i(on)f(endpoints.)1647 3415 y Fi([-])86
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0.15 2.0 5. Bracket EndArrow moveto } def /ArrowB { BeginArrow 0.15
+2.0 5. Bracket EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto
+/lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 204 w Fe(Square)12
+b(brackets.)1645 3487 y Fi(\(-\))82 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0.15 2.0 5. RoundBracket EndArrow moveto } def /ArrowB { BeginArrow
+0.15 2.0 5. RoundBracket EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 204 w Fe(Rounded)11 b(brackets.)1636 3559 y Fi(o-o)73
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{1. setgray true} false /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow
+ moveto } def /ArrowB { BeginArrow {1. setgray true} false /DS 0.5
+2.5 CLW mul add 2 div def EndDot EndArrow } def [ 36.98865 5.161
+0.0 5.161 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 204 w Fe(Circles,)12
+b(centered)h(on)f(endpoints.)1642 3632 y Fi(*-*)81 b @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{false} false /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow moveto
+} def /ArrowB { BeginArrow {false} false /DS 0.5 2.5 CLW mul add 2
+div def EndDot EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto
+/lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 204 w Fe(Disks,)11 b(centered)i(on)e(endpoints.)1613
+3704 y Fi(oo-oo)50 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{1. setgray true} true /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow
+ moveto } def /ArrowB { BeginArrow {1. setgray true} true /DS 0.5 2.5
+CLW mul add 2 div def EndDot EndArrow } def [ 36.98865 5.161 0.0
+5.161 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial
+204 w Fe(Circles,)12 b(\257ush)f(to)h(endpoints.)1627 3776
+y Fi(**-**)64 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{false} true /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow moveto
+} def /ArrowB { BeginArrow {false} true /DS 0.5 2.5 CLW mul add 2 div
+def EndDot EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial 204
+w Fe(Disks,)11 b(\257ush)g(to)h(endpoints.)1638 3848 y Fi(c-c)77
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+1 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow 1 setlinecap 0 0 moveto 0 CLW 2 div L stroke
+0 0 moveto EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial 204 w Fe(Extended,)12
+b(rounded)g(ends.)1618 3921 y Fi(cc-cc)57 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0 CLW 2 div T 1 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto
+EndArrow moveto } def /ArrowB { BeginArrow 0 CLW 2 div T 1 setlinecap
+0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow } def [ 36.98865
+5.161 0.0 5.161 /Lineto /lineto load def false Line gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 204 w Fe(Flush)11 b(round)h(ends.)1629 3993 y
+Fi(C-C)68 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow 2 setlinecap 0 0 moveto 0 CLW 2 div L stroke
+0 0 moveto EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial 204 w Fe(Extended,)12
+b(square)g(ends.)1472 4123 y Fl(30)41 b Fk(arrowsize=)p Fj(dim)11
+b(num)478 b Fl(Default:)16 b Fk(2pt)10 b(3)1472 4200 y Fl(30)41
+b Fk(arrowlength=)p Fj(num)554 b Fl(Default:)15 b Fk(1.4)1472
+4277 y Fl(30)41 b Fk(arrowinset=)p Fj(num)604 b Fl(Default:)15
+b Fk(.4)1472 4353 y Fl(30)41 b Fk(tbarsize=)p Fj(dim)11 b(num)512
+b Fl(Default:)16 b Fk(2pt)10 b(5)1472 4430 y Fl(30)41 b Fk(bracketlength=)p
+Fj(num)519 b Fl(Default:)15 b Fk(.15)1472 4507 y Fl(30)41 b
+Fk(rbracketlength=)p Fj(num)503 b Fl(Default:)15 b Fk(.15)1472
+4584 y Fl(30)41 b Fk(dotsize=)p Fj(dim)11 b(num)481 b Fl(Default:)15
+b Fk(.5pt)c(2.5)1472 4660 y Fl(30)41 b Fk(arrowscale=)p Fj(arrowsca)o
+(le=num1)9 b(num2)229 b Fl(Default:)15 b Fk(1)0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Page: 4 4
+3 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1113
+b(IV)-75 2828 y Fm(Custom)16 b(styles)-2 2933 y Fl(31)40 b
+Fk(\\newpsobject)o({)p Fj(name)q Fk(}{)p Fj(object)s Fk(}{)p
+Fj(par1=value1)p Fi(,)q Fo(\274)o Fk(})-2 3009 y Fl(31)g Fk(\\newpsstyle)o({)
+p Fj(name)q Fk(}{)p Fj(par1=value1)p Fi(,)q Fo(\274)p Fk(})-75
+3178 y Fm(The)16 b(basics)-2 3283 y Fl(32)40 b Fk(\\pscustom)p
+Fi(*[)p Fh(par)t Fi(])p Fk({)p Fj(commands)q Fk(})-75 3451
+y Fm(Parameters)-2 3556 y Fl(33)g Fk(linetype=)p Fj(int)705
+b Fl(Default:)15 b Fk(0)-75 3725 y Fm(Graphics)g(objects)-2
+3829 y Fl(35)40 b Fk(liftpen=)p Fj(0/1/2)696 b Fl(Default:)15
+b Fk(0)-75 3998 y Fm(Safe)h(tricks)-2 4103 y Fl(36)40 b Fk(\\newpath)-2
+4179 y Fl(36)g Fk(\\moveto\()p Fj(coor)p Fk(\))-2 4256 y Fl(36)g
+Fk(\\closepath)-2 4333 y Fl(36)g Fk(\\stroke)o Fi([)p Fh(par)t
+Fi(])-2 4410 y Fl(37)g Fk(\\\256ll)q Fi([)p Fh(par)t Fi(])-2
+4486 y Fl(37)g Fk(\\gsave)-2 4563 y Fl(37)g Fk(\\grestore)-2
+4640 y Fl(38)g Fk(\\translate)o(\()p Fj(coor)p Fk(\))-2 4717
+y Fl(38)g Fk(\\scale{)p Fj(num1)11 b Fh(num2)s Fk(})1472 2828
+y Fl(38)41 b Fk(\\rotate)o({)p Fj(angle)q Fk(})1472 2902 y
+Fl(38)g Fk(\\swapaxes)1472 2976 y Fl(38)g Fk(\\msave)1472 3050
+y Fl(38)g Fk(\\mrestore)1472 3123 y Fl(38)g Fk(\\openshadow)o
+Fi([)p Fh(par)t Fi(])1472 3197 y Fl(38)g Fk(\\closedshadow)o
+Fi([)p Fh(par)t Fi(])1472 3271 y Fl(38)g Fk(\\movepath)o(\()p
+Fj(coor)p Fk(\))1400 3434 y Fm(Pretty)15 b(safe)g(tricks)1472
+3535 y Fl(39)41 b Fk(\\lineto\()p Fj(coor)p Fk(\))1472 3609
+y Fl(39)g Fk(\\rlineto\()p Fj(coor)p Fk(\))1472 3683 y Fl(39)g
+Fk(\\curveto)o(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\)\()p Fj(x2)s
+Fk(,)t Fj(y2)s Fk(\)\()o Fj(x3)r Fk(,)t Fj(y3)r Fk(\))1472
+3757 y Fl(39)g Fk(\\rcurveto)o(\()p Fj(x1)p Fk(,)t Fj(y1)p
+Fk(\)\()p Fj(x2)s Fk(,)t Fj(y2)s Fk(\)\()o Fj(x3)r Fk(,)t Fj(y3)r
+Fk(\))1400 3920 y Fm(For)16 b(hackers)e(only)1472 4021 y Fl(39)41
+b Fk(\\code)o({)p Fj(code)q Fk(})1472 4095 y Fl(39)g Fk(\\dim)q({)p
+Fj(dim)q Fk(})1472 4169 y Fl(39)g Fk(\\coor\()p Fj(x1)p Fk(,)t
+Fj(y1)p Fk(\))p Fi(\()p Fh(x2)s Fi(,)t Fh(y2)s Fi(\)...\()p
+Fh(xn)q Fi(,)t Fh(yn)q Fi(\))1472 4243 y Fl(40)g Fk(\\rcoor\()p
+Fj(x1)p Fk(,)t Fj(y1)p Fk(\))p Fi(\()p Fh(x2)s Fi(,)t Fh(y2)s
+Fi(\)...\()p Fh(xn)q Fi(,)t Fh(yn)q Fi(\))1472 4316 y Fl(40)g
+Fk(\\\256le{)p Fj(\256le)q Fk(})1472 4390 y Fl(40)g Fk(\\arrows)o({)p
+Fj(arrows)q Fk(})1472 4464 y Fl(40)g Fk(\\setcolor)o({)p Fj(color)t
+Fk(})1400 4627 y Fm(Pictures)1472 4728 y Fl(41)g Fk(\\pspicture)o
+Fi(*[)p Fh(baseline)q Fi(]\()p Fh(x0)r Fi(,)p Fh(y0)r Fi(\))p
+Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\))0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Page: 5 5
+4 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1126
+b(V)-2 2828 y Fl(41)40 b Fk(\\endpspicture)-75 2996 y Fm(Placing)17
+b(and)f(rotating)f(whatever)-2 3099 y Fl(43)40 b Fk(\\rput)p
+Fi(*[)p Fh(refpoint)t Fi(]{)p Fh(rotation)q Fi(})p Fk(\()p
+Fj(x)t Fk(,)t Fj(y)t Fk(\){)o Fj(stuf)n(f)5 b Fk(})-2 3176
+y Fl(44)40 b Fk(\\uput)p Fi(*{)p Fh(labelsep)q Fi(})p Fk([)p
+Fj(refangle)q Fk(])p Fi({)p Fh(r)o(otation)q Fi(})o(\()p Fh(x)s
+Fi(,)t Fh(y)t Fi(\))p Fk({)p Fj(stuf)o(f)5 b Fk(})-2 3252 y
+Fl(44)40 b Fk(\\pslabelsep)-2 3328 y Fl(44)g Fk(labelsep=)p
+Fj(dim)635 b Fl(Default:)15 b Fk(5pt)-75 3496 y Fm(Repetition)-2
+3599 y Fl(46)40 b Fk(\\multirput)q Fi(*[)p Fh(refpoint)t Fi(]{)p
+Fh(angle)q Fi(}\()p Fh(x0)r Fi(,)t Fh(y0)r Fi(\))p Fk(\()o
+Fj(x1)p Fk(,)t Fj(y1)p Fk(\))o({)p Fj(int)s Fk(}{)p Fj(st)o(uf)o(f)5
+b Fk(})-2 3676 y Fl(46)40 b Fk(\\multips)q Fi({)p Fh(angle)q
+Fi(}\()p Fh(x0)r Fi(,)t Fh(y0)r Fi(\))p Fk(\()p Fj(x1)p Fk(,)t
+Fj(y1)o Fk(\){)p Fj(int)s Fk(}{)p Fj(grap)o(hics)q Fk(})-75
+3843 y Fm(Axes)-2 3947 y Fl(48)g Fk(\\psaxes)o Fi(*[)p Fh(par)t
+Fi(]{)p Fh(arrows)q Fi(}\()p Fh(x0)r Fi(,)t Fh(y0)r Fi(\)\()p
+Fh(x1)p Fi(,)t Fh(y1)p Fi(\))p Fk(\()p Fj(x2)s Fk(,)t Fj(y2)s
+Fk(\))353 4072 y Fn(Axes)14 b(label)g(parameters)p 56 4105
+1114 2 v 55 4203 2 98 v 81 4167 a Fd(Horitontal)p 347 4203
+V 58 w(V)-6 b(ertical)p 594 4203 V 60 w(D\257t)p 730 4203 V
+50 w(Description)p 1169 4203 V 55 4292 2 90 v 103 4265 a Fn(Ox=num)p
+347 4292 V 72 w(Oy=num)p 594 4292 V 79 w Fc(0)p 730 4292 V
+79 w Fb(Label)15 b(at)g(origin.)p 1169 4292 V 55 4382 V 104
+4355 a Fn(Dx=num)p 347 4382 V 75 w(Dy=num)p 594 4382 V 81 w
+Fc(1)p 730 4382 V 79 w Fb(Label)g(increment.)p 1169 4382 V
+55 4472 V 115 4445 a Fn(dx=dim)p 347 4472 V 96 w(oy=dim)p 594
+4472 V 70 w Fc(0pt)p 730 4472 V 59 w Fb(Dist)g(btwn)f(labels.)p
+1169 4472 V 56 4473 1114 2 v -2 4576 a Fl(50)40 b Fk(labels=)p
+Fj(all/x/y/none)549 b Fl(Default:)15 b Fk(all)-2 4652 y Fl(50)40
+b Fk(showorigin=)p Fj(true/false)454 b Fl(Default:)15 b Fk(true)-2
+4728 y Fl(50)40 b Fk(ticks=)p Fj(all/x/y/none)571 b Fl(Default:)15
+b Fk(all)1472 2828 y Fl(50)41 b Fk(tickstyle=)p Fj(full/top/bottom)420
+b Fl(Default:)15 b Fk(full)1472 2905 y Fl(50)41 b Fk(ticksize=)p
+Fj(dim)651 b Fl(Default:)15 b Fk(3pt)1472 2982 y Fl(51)41 b
+Fk(\\psxlabel)1472 3059 y Fl(51)g Fk(\\psylabel)1472 3135 y
+Fl(51)g Fk(axesstyle=)p Fj(axes)o(/frame/none)332 b Fl(Default:)15
+b Fk(axes)1400 3304 y Fm(Framed)g(boxes)1472 3409 y Fl(52)41
+b Fk(framesep=)p Fj(dim)616 b Fl(Default:)15 b Fk(3pt)1472
+3485 y Fl(52)41 b Fk(boxsep=)p Fj(true/false)528 b Fl(Default:)15
+b Fk(true)1472 3562 y Fl(52)41 b Fk(\\psframebox)o Fi(*[)p
+Fh(par)p Fi(])p Fk({)p Fj(stuf)o(f)5 b Fk(})1472 3639 y Fl(53)41
+b Fk(\\psdblframebox)o Fi(*[)p Fh(par)p Fi(])p Fk({)p Fj(stuf)o(f)5
+b Fk(})1472 3716 y Fl(53)41 b Fk(\\psshadowbox)o Fi(*[)p Fh(par)p
+Fi(])p Fk({)p Fj(stuf)o(f)5 b Fk(})1472 3793 y Fl(53)41 b Fk(\\pscirclebox)o
+Fi(*[)p Fh(par)p Fi(])p Fk({)p Fj(stuf)o(f)5 b Fk(})1472 3869
+y Fl(53)41 b Fk(\\cput)o Fi(*[)p Fh(par)p Fi(])p Fj({angle)q(}\(x)t(,)t(y)t
+(\))q Fk({)p Fj(stuf)o(f)5 b Fk(})1472 3946 y Fl(54)41 b Fk(\\psovalbox)o
+Fi(*[)p Fh(par)p Fi(])p Fk({)p Fj(stuf)o(f)5 b Fk(})1400 4115
+y Fm(Clipping)1472 4219 y Fl(54)41 b Fk(\\clipbox)p Fi([)p
+Fh(dim)q Fi(])p Fk({)p Fj(stuf)o(f)5 b Fk(})1472 4296 y Fl(54)41
+b Fk(\\psclip{)p Fj(graphics)q Fk(})12 b Fo(\274)h Fk(\\endpsclip)1400
+4465 y Fm(Rotation)i(and)h(scaling)g(boxes)1472 4570 y Fl(55)41
+b Fk(\\rotateleft)n({)p Fj(stuf)o(f)5 b Fk(})1472 4646 y Fl(55)41
+b Fk(\\rotateright)n({)p Fj(stuf)o(f)5 b Fk(})1472 4723 y Fl(56)41
+b Fk(\\rotatedown)n({)p Fj(stuf)o(f)5 b Fk(})0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Page: 6 6
+5 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1113
+b(VI)-2 2828 y Fl(56)40 b Fk(\\scalebox)o({)p Fj(num1)12 b
+Fh(num2)s Fk(}{)p Fj(stuf)o(f)5 b Fk(})-2 2904 y Fl(56)40 b
+Fk(\\scaleboxto)o(\()p Fj(x)t Fk(,)t Fj(y)t Fk(\){)p Fj(stuf)o(f)5
+b Fk(})-75 3070 y Fm(Nodes)-2 3173 y Fl(59)40 b Fk(\\rnode)p
+Fi([)p Fh(refpoint)t Fi(])p Fk({)p Fj(name)q Fk(}{)p Fj(stuf)o(f)5
+b Fk(})-2 3249 y Fl(59)40 b Fk(\\Rnode)q Fi(\()p Fh(x)s Fi(,)t
+Fh(y)t Fi(\))p Fk({)p Fj(name)q Fk(}{)p Fj(stuf)o(f)5 b Fk(})-2
+3325 y Fl(59)40 b Fk(\\RnodeRef)-2 3400 y Fl(60)g Fk(\\pnode)p
+Fi(\()p Fh(x)s Fi(,)t Fh(y)t Fi(\))p Fk({)p Fj(name)q Fk(})-2
+3476 y Fl(60)g Fk(\\cnode)p Fi(*[)p Fh(par)p Fi(]\()p Fh(x)s
+Fi(,)t Fh(y)t Fi(\))p Fk({)p Fj(radius)q Fk(}{)p Fj(name)q
+Fk(})-2 3551 y Fl(60)g Fk(\\circlenode)p Fi(*[)p Fh(par)p Fi(])p
+Fk({)p Fj(name)q Fk(}{)p Fj(stuf)o(f)5 b Fk(})-2 3627 y Fl(60)40
+b Fk(\\cnodeput)o Fi(*[)p Fh(par)p Fi(]{)p Fh(angle)q Fi(}\()p
+Fh(x)s Fi(,)t Fh(y)t Fi(\))p Fk({)p Fj(name)q Fk(}{)p Fj(stuf)o(f)5
+b Fk(})-2 3703 y Fl(60)40 b Fk(\\ovalnode)p Fi(*[)p Fh(par)p
+Fi(])p Fk({)p Fj(name)q Fk(}{)p Fj(stuf)o(f)5 b Fk(})-75 3869
+y Fm(Node)16 b(connections)-2 3972 y Fl(61)40 b Fk(nodesep=)p
+Fj(dim)669 b Fl(Default:)15 b Fk(0)-2 4048 y Fl(61)40 b Fk(offset=)p
+Fj(dim)725 b Fl(Default:)15 b Fk(0)-2 4123 y Fl(61)40 b Fk(arm=)p
+Fj(dim)701 b Fl(Default:)15 b Fk(10pt)-2 4199 y Fl(61)40 b
+Fk(angle=)p Fj(angle)696 b Fl(Default:)15 b Fk(0)-2 4275 y
+Fl(61)40 b Fk(arcangle=)p Fj(angle)634 b Fl(Default:)15 b Fk(8)-2
+4350 y Fl(61)40 b Fk(ncurv=)p Fj(num)677 b Fl(Default:)16 b
+Fk(.67)-2 4426 y Fl(62)40 b Fk(loopsize=)p Fj(dim)616 b Fl(Default:)15
+b Fk(1cm)-2 4501 y Fl(62)40 b Fk(\\ncline)q Fi(*[)p Fh(par)p
+Fi(]{)p Fh(arrows)q Fi(})p Fk({)p Fj(nodeA)p Fk(}{)p Fj(nodeB)r
+Fk(})-2 4577 y Fl(62)g Fk(\\ncLine)p Fi(*[)p Fh(par)p Fi(]{)p
+Fh(arrows)q Fi(})p Fk({)p Fj(nodeA)p Fk(}{)p Fj(nodeB)r Fk(})-2
+4653 y Fl(62)g Fk(\\nccurve)o Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q
+Fi(})p Fk({)p Fj(nodeA)p Fk(}{)p Fj(nodeB)r Fk(})-2 4728 y
+Fl(63)g Fk(\\ncarc)p Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p
+Fk({)p Fj(nodeA)p Fk(}{)p Fj(nodeB)r Fk(})1472 2828 y Fl(63)h
+Fk(\\ncbar)o Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk({)p
+Fj(nodeA)p Fk(}{)p Fj(nodeB)r Fk(})1472 2904 y Fl(63)g Fk(\\ncdiag)p
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk({)p Fj(nodeA)p
+Fk(}{)p Fj(nodeB)r Fk(})1472 2979 y Fl(64)g Fk(\\ncdiagg)p
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk({)p Fj(nodeA)p
+Fk(}{)p Fj(nodeB)r Fk(})1472 3055 y Fl(64)g Fk(\\ncangle)p
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk({)p Fj(nodeA)p
+Fk(}{)p Fj(nodeB)r Fk(})1472 3131 y Fl(64)g Fk(\\ncangles)o
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk({)p Fj(nodeA)p
+Fk(}{)p Fj(nodeB)r Fk(})1472 3206 y Fl(65)g Fk(\\ncloop)p Fi(*[)p
+Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk({)p Fj(nodeA)p Fk(}{)p
+Fj(nodeB)r Fk(})1472 3282 y Fl(65)g Fk(\\nccircle)p Fi(*[)p
+Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk({)p Fj(node)q Fk(}{)p
+Fj(radius)q Fk(})1472 3357 y Fl(65)g Fk(\\pcline)p Fi(*[)p
+Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p Fk(,)t
+Fj(y1)p Fk(\)\()p Fj(x)o(2)s Fk(,)t Fj(y2)s Fk(\))1472 3433
+y Fl(65)g Fk(\\pccurve)o Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q
+Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\)\()o Fj(x2)s Fk(,)t
+Fj(y2)r Fk(\))1472 3509 y Fl(65)g Fk(\\pcarc)o Fi(*[)p Fh(par)p
+Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\)\()p
+Fj(x)o(2)s Fk(,)t Fj(y2)s Fk(\))1472 3584 y Fl(65)g Fk(\\pcbar)o
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p
+Fk(,)t Fj(y1)p Fk(\)\()p Fj(x2)r Fk(,)t Fj(y2)s Fk(\))1472
+3660 y Fl(65)g Fk(\\pcdiag)p Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q
+Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\)\()o Fj(x2)s Fk(,)t
+Fj(y2)r Fk(\))1472 3735 y Fl(66)g Fk(\\pcangle)p Fi(*[)p Fh(par)p
+Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\))o(\()p
+Fj(x2)r Fk(,)t Fj(y2)s Fk(\))1472 3811 y Fl(66)g Fk(\\pcloop)p
+Fi(*[)p Fh(par)p Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p
+Fk(,)t Fj(y1)p Fk(\)\()o Fj(x2)s Fk(,)t Fj(y2)s Fk(\))1400
+3977 y Fm(Attaching)15 b(labels)h(to)g(node)g(connections)1472
+4081 y Fl(67)41 b Fk(\\lput)p Fi(*[)p Fh(refpoint)t Fi(]{)p
+Fh(rotation)q Fi(})p Fk(\()p Fj(pos)p Fk(\))o({)p Fj(stuf)n(f)5
+b Fk(})1472 4156 y Fl(68)41 b Fk(\\aput)o Fi(*[)p Fh(labelsep)q
+Fi(]{)p Fh(angle)q Fi(})p Fk(\()p Fj(pos)p Fk(\){)p Fj(stuf)n(f)5
+b Fk(})1472 4232 y Fl(68)41 b Fk(\\bput)p Fi(*[)p Fh(labelsep)q
+Fi(]{)p Fh(angle)q Fi(})p Fk(\()p Fj(pos)p Fk(\){)p Fj(s)o(tuf)n(f)5
+b Fk(})1472 4307 y Fl(68)41 b Fk(\\mput)p Fi(*[)p Fh(refpoint)t
+Fi(])p Fk({)p Fj(stuf)o(f)5 b Fk(})1472 4383 y Fl(68)41 b Fk(\\Aput)p
+Fi(*[)p Fh(labelsep)q Fi(])p Fk({)p Fj(stuf)o(f)5 b Fk(})1472
+4459 y Fl(68)41 b Fk(\\Bput)p Fi(*[)p Fh(labelsep)q Fi(])p
+Fk({)p Fj(stuf)o(f)5 b Fk(})1400 4625 y Fm(Coils)17 b(and)f(zigzags)1472
+4728 y Fl(70)41 b Fk(\\pscoil)p Fi(*[)p Fh(par)t Fi(]{)p Fh(arrows)q
+Fi(}\()p Fh(x0)r Fi(,)t Fh(y0)r Fi(\))p Fk(\()p Fj(x1)p Fk(,)t
+Fj(y1)p Fk(\))0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Page: 7 7
+6 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1099
+b(VII)-2 2828 y Fl(70)40 b Fk(\\psCoil)q Fi(*[)p Fh(par)t Fi(])p
+Fk({)p Fj(angle1)p Fk(}{)p Fj(angle2)s Fk(})-2 2905 y Fl(70)g
+Fk(\\pszigzag)q Fi(*[)p Fh(par)t Fi(]{)p Fh(arrows)q Fi(}\()p
+Fh(x0)r Fi(,)t Fh(y0)r Fi(\))p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p
+Fk(\))-2 2982 y Fl(70)g Fk(coilwidth=)p Fj(dim)602 b Fl(Default:)15
+b Fk(1cm)-2 3059 y Fl(70)40 b Fk(coilheight=)p Fj(num)631 b
+Fl(Default:)15 b Fk(1)-2 3135 y Fl(70)40 b Fk(coilarm=)p Fj(dim)622
+b Fl(Default:)15 b Fk(.5cm)-2 3212 y Fl(70)40 b Fk(coilaspect=)p
+Fj(angle)579 b Fl(Default:)15 b Fk(45)-2 3289 y Fl(70)40 b
+Fk(coilinc=)p Fj(angle)651 b Fl(Default:)15 b Fk(10)-2 3366
+y Fl(71)40 b Fk(\\nccoil)q Fi(*[)p Fh(par)t Fi(]{)p Fh(arrows)q
+Fi(})p Fk({)p Fj(nodeA)p Fk(}{)p Fj(nodeB)r Fk(})-2 3442 y
+Fl(71)g Fk(\\nczigzag)q Fi(*[)p Fh(par)t Fi(]{)p Fh(arrows)q
+Fi(})p Fk({)p Fj(nodeA)p Fk(}{)p Fj(nodeB)r Fk(})-2 3519 y
+Fl(71)g Fk(\\pccoil)q Fi(*[)p Fh(par)t Fi(]{)p Fh(arrows)q
+Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\)\()o Fj(x2)s Fk(,)t
+Fj(y2)r Fk(\))-2 3596 y Fl(71)g Fk(\\pczigzag)q Fi(*[)p Fh(par)t
+Fi(]{)p Fh(arrows)q Fi(})p Fk(\()p Fj(x1)p Fk(,)t Fj(y1)p Fk(\)\()p
+Fj(x)o(2)s Fk(,)t Fj(y2)s Fk(\))-75 3765 y Fm(Special)16 b(coordinates)-2
+3869 y Fl(72)40 b Fk(\\SpecialCoor)246 4000 y Fn(Special)14
+b(coordinates)g(and)g(angles)p 1530 2780 1115 2 v 1529 2861
+2 81 v 1577 2831 a Fa(Coordinate)p 1843 2861 V 113 w(Example)p
+2153 2861 V 93 w(Description)p 2644 2861 V 1529 2933 2 73 v
+1641 2911 a Fk(\()p Fj(x)t Fk(,)p Fj(y)t Fk(\))p 1843 2933
+V 223 w(\(3,4\))p 2153 2933 V 137 w Fl(Cartesian)d(coordinate.)p
+2644 2933 V 1529 3005 V 1645 2983 a Fk(\()p Fj(r)t Fk(;)p Fj(a)q
+Fk(\))p 1843 3005 V 203 w(\(3;1)n(10\))p 2153 3005 V 113 w
+Fl(Polar)h(coordinate.)p 2644 3005 V 1529 3077 V 1624 3056
+a Fk(\()p Fj(node)q Fk(\))p 1843 3077 V 219 w(\(A\))p 2153
+3077 V 152 w Fl(Center)f(of)h Fj(node)q Fl(.)p 2644 3077 V
+1529 3149 V 1577 3128 a Fk(\([)p Fj(par)t Fk(])p Fj(node)q
+Fk(\))p 1843 3149 V 69 w(\([angle=45]A\))p 2153 3149 V 48 w
+Fl(Relative)g(to)g Fj(node)q Fl(.)p 2644 3149 V 1529 3222 V
+1642 3200 a Fk(\(!)p Fj(ps)q Fk(\))p 1843 3222 V 142 w(\(!5)e(3.3)h(2)h
+(exp\))p 2153 3222 V 55 w Fl(Raw)e(PostScript.)p 2644 3222
+V 1529 3294 V 1555 3272 a Fk(\()p Fj(coor1)p Fk(|)p Fj(coor2)s
+Fk(\))p 1843 3294 V 85 w(\(A|1in;30\))p 2153 3294 V 86 w Fl(Combination.)p
+2644 3294 V 1530 3296 1115 2 v 1530 3305 V 1529 3386 2 81 v
+1629 3356 a Fa(Angle)p 1843 3386 V 165 w(Example)p 2153 3386
+V 93 w(Description)p 2644 3386 V 1529 3458 2 73 v 1643 3437
+a Fj(num)p 1843 3458 V 247 w Fk(45)p 2153 3458 V 157 w Fl(Angle.)p
+2644 3458 V 1529 3530 V 1627 3509 a Fk(\()p Fj(coor)t Fk(\))p
+1843 3530 V 202 w(\(-1,1\))p 2153 3530 V 130 w Fl(Coordinate)h(\(vector\).)p
+2644 3530 V 1529 3603 V 1656 3581 a Fk(!)p Fj(ps)p 1843 3603
+V 207 w Fk(!33)f(sqrt)p 2153 3603 V 106 w Fl(Raw)g(PostScript.)p
+2644 3603 V 1530 3604 1115 2 v 1472 3684 a(73)41 b Fk(\\NormalCoor)1400
+3846 y Fm(Overlays)1472 3948 y Fl(73)g Fk(\\overlaybox)10 b
+Fj(stuf)o(f)5 b Fk(\\endoverlaybox)1472 4022 y Fl(73)41 b Fk(\\psoverlay)o({)
+p Fj(string)r Fk(})1472 4095 y Fl(74)g Fk(\\putoverlaybox)n({)p
+Fj(string)r Fk(})1472 4169 y Fl(74)g Fk(gradbegin=)p Fj(color)436
+b Fl(Default:)16 b Fk(gradbegin)1472 4243 y Fl(74)41 b Fk(gradend=)p
+Fj(color)509 b Fl(Default:)15 b Fk(gradend)1472 4317 y Fl(75)41
+b Fk(gradlines=)p Fj(int)632 b Fl(Default:)15 b Fk(500)1472
+4391 y Fl(75)41 b Fk(gradmidpoint=)p Fj(num)551 b Fl(Default:)15
+b Fk(.9)1472 4464 y Fl(75)41 b Fk(gradangle=)p Fj(angle)606
+b Fl(Default:)15 b Fk(0)1400 4627 y Fm(T)l(ypesetting)f(text)h(along)h(a)g
+(path)1472 4728 y Fl(76)41 b Fk(\\pstextpath)n Fi([)p Fh(pos)q
+Fi(]\()p Fh(x)p Fi(,)p Fh(y)p Fi(\))p Fk({)p Fj(graphics)11
+b(object)s Fk(}{)p Fj(text)s Fk(})0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Page: 8 8
+7 bop 0 2700 a
+ tx@Dict begin 90 Rot end
+ -88 x Fn(PST)m(ricks)950 b(Quick)13 b(Reference)1085
+b(VIII)-75 2828 y Fm(Stroking)16 b(and)g(\256lling)h(character)d(paths)-2
+2928 y Fl(77)40 b Fk(\\pscharpath)o Fi(*[)p Fh(par)t Fi(])p
+Fk({)p Fj(text)s Fk(})-2 3001 y Fl(78)g Fk(\\pscharclip)p Fi(*[)p
+Fh(par)t Fi(])p Fk({)p Fj(text)s Fk(})10 b(...)17 b(\\endpscharclip)-75
+3162 y Fm(Exporting)f(EPS)h(\256les)-2 3262 y Fl(79)40 b Fk(\\T)m(eXtoEPS)-2
+3335 y Fl(79)g Fk(\\endT)m(eXtoEPS)-2 3407 y Fl(80)g Fk(\\PSTtoEPS)q
+Fi([)p Fh(par)t Fi(])p Fk({)p Fj(\256le)q Fk(}{)p Fj(graphics)11
+b(objects)q Fk(})-2 3480 y Fl(80)40 b Fk(bbllx=)p Fj(dim)690
+b Fl(Default:)16 b Fk(-1pt)-2 3553 y Fl(80)40 b Fk(bblly=)p
+Fj(dim)690 b Fl(Default:)16 b Fk(-1pt)-2 3625 y Fl(80)40 b
+Fk(bburx=)p Fj(dim)685 b Fl(Default:)15 b Fk(1pt)-2 3698 y
+Fl(80)40 b Fk(bbury=)p Fj(dim)685 b Fl(Default:)15 b Fk(1pt)-2
+3771 y Fl(81)40 b Fk(header\256le=)p Fj(\256le)657 b Fl(Default:)15
+b Fk(s)-2 3843 y Fl(81)40 b Fk(headers=)p Fj(none/all/user)425
+b Fl(Default:)15 b Fk(none)-75 4004 y Fm(Boxes)-2 4104 y Fl(83)40
+b Fk(\\psmathboxtrue)-2 4177 y Fl(83)g Fk(\\psmathboxfalse)-2
+4250 y Fl(83)g Fk(\\everypsbox)o({)p Fj(commands)q Fk(})-2
+4322 y Fl(83)g Fk(\\pslongbox{)p Fj(name)q Fk(}{)p Fj(cmd)t
+Fk(})-2 4395 y Fl(84)g Fk(\\psverbboxtrue)-2 4468 y Fl(84)g
+Fk(\\psverbboxfalse)-75 4628 y Fm(T)o(ips)16 b(and)g(More)g(T)m(ricks)-2
+4728 y Fl(85)40 b Fk(\\PST)n(ricksOff)1400 2828 y Fm(Including)16
+b(PostScript)g(code)1472 2933 y Fl(87)41 b Fk(\\pslbrace)1472
+3009 y Fl(87)g Fk(\\psrbrace)0 2700 y
+ tx@Dict begin -90 Rot end
+ eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/graphics/pstricks/doc/pst-usr1.ps b/obsolete/graphics/pstricks/doc/pst-usr1.ps
new file mode 100644
index 0000000000..ea1280d28b
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/pst-usr1.ps
@@ -0,0 +1,2146 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.491 Copyright 1986, 1992 Radical Eye Software
+%%Title: pst-user.dvi
+%%Pages: 24 1
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Times-Bold Times-Roman Times-Italic Helvetica Helvetica-Bold
+%%+ Symbol Helvetica-Oblique Helvetica-BoldOblique
+%%EndComments
+%DVIPSCommandLine: dvips pst-user.dvi -Pport -o pst-usr1.ps -l20
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
+S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div
+/hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley
+0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
+product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
+(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
+rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
+ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
+/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
+B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
+rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
+B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
+/eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1993/3/12. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+pathforall z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
+sub y mul setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
+stroke /y1 y1 a add def } repeat grestore } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap systemdict /currentstrokeadjust known {
+currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
+0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
+bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
+repeat grestore } def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
+/SD { 0 360 arc fill } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
+c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
+div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
+div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
+def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
+div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
+div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
+{ 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
+def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
+b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
+add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
+f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
+add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
+setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
+cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
+moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
+add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
+if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
+h add def } loop grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+CP 4 2 roll T moveto } def
+/PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
+moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
+/IfVisible false def } if } ifelse } def
+/InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
+grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
+end
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Created 1993/3/12. Source file was pst-node.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@NodeDict 200 dict def tx@NodeDict begin
+/NewNode { gsave /next ED dict dup 3 -1 roll ED begin tx@Dict begin STV
+CP T exec end /NodeMtrx CM def next end grestore } def
+/InitPnode { /Y ED /X ED /NodePos { Nodesep Cos mul Nodesep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { Nodesep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r Nodesep add def } { /dx l Nodesep sub def
+} ifelse Sin 0 gt { /dy u Nodesep add def } { /dy d Nodesep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /r ED r mul neg /l ED /r r l add def /X l neg def { neg /d
+ED /u ED /Y 0 def } { neg /Y ED Y sub /u ED u mul neg /d ED /u u d add
+def /Y Y d sub def } ifelse /NodePos { GetRnodePos } def } def
+/InitRNode { /Y ED /X ED /r ED /X r 2 div X add def /r r X sub def /l X
+neg def Y add neg /d ED Y sub /u ED /NodePos { GetRnodePos } def } def
+/GetOnodePos { /ww w Nodesep add def /hh h Nodesep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/GetAngle { nodeA GetCenter nodeB GetCenter 3 -1 roll sub 3 1 roll sub
+neg Atan } def
+/GetEdge { begin /Nodesep ED dup 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED NodePos Y add exch X add exch
+NodeMtrx transform CM itransform end 4 2 roll 1 index 0 eq { pop pop } {
+2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse } def
+/GetPos { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED OffsetB
+AngleB NodesepB nodeB GetEdge /y2 ED /x2 ED } def
+/InitNC { /nodeB ED /nodeA ED /NodesepB ED /NodesepA ED /OffsetB ED
+/OffsetA ED tx@NodeDict nodeA known tx@NodeDict nodeB known and dup {
+/nodeA nodeA load def /nodeB nodeB load def } if } def
+/LineMP { 4 copy 1 t sub mul exch t mul add 3 1 roll 1 t sub mul exch t
+mul add exch 6 2 roll sub 3 1 roll sub Atan } def
+/NCCoor { GetAngle /AngleA ED /AngleB AngleA 180 add def GetPos /LPutVar
+[ x2 x1 y2 y1 ] cvx def /LPutPos { LPutVar LineMP } def x1 y1 x2 y2 }
+def
+/NCLine { NCCoor tx@Dict begin ArrowB 4 2 roll ArrowA lineto end } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan } def
+/GetArms { /x1a armA AngleA cos mul x1 add def /y1a armA AngleA sin mul
+y1 add def /x2a armB AngleB cos mul x2 add def /y2a armB AngleB sin mul
+y2 add def } def
+/NCCurve { GetPos x1 x2 sub y1 y2 sub Pyth 2 div dup 3 -1 roll mul /armA
+ED mul /armB ED GetArms x1a y1a x1 y1 tx@Dict begin ArrowA end x2a y2a
+x2 y2 tx@Dict begin ArrowB end curveto /LPutVar [ x1 y1 x1a y1a x2a y2a
+x2 y2 ] cvx def /LPutPos { t LPutVar BezierMidpoint } def } def
+/AnglesMP { LPutVar t 3 gt { /t t 3 sub def } { t 2 gt { /t t 2 sub def
+10 -2 roll } { t 1 gt { /t t 1 sub def 10 -4 roll } { 10 4 roll } ifelse
+} ifelse } ifelse 6 { pop } repeat 3 -1 roll exch LineMP } def
+/NCAngles { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform exch pop mtrx itransform /y0 ED /x0
+ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne { x1 y1 }
+if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a y2a x0 y0 x1a y1a
+x1 y1 ] cvx def /LPutPos { AnglesMP } def } def
+/NCAngle { GetPos /x2a armB AngleB cos mul x2 add def /y2a armB AngleB
+sin mul y2 add def /mtrx AngleA matrix rotate def x2a y2a mtrx transform
+pop x1 y1 mtrx transform exch pop mtrx itransform /y0 ED /x0 ED mark
+armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1 tx@Dict begin false Line end
+/LPutVar [ x2 y2 x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def /LPutPos { AnglesMP
+} def } def
+/NCBar { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform pop sub dup 0 mtrx itransform 3 -1
+roll 0 gt { /y2a exch y2a add def /x2a exch x2a add def } { /y1a exch
+neg y1a add def /x2a exch neg x2a add def } ifelse mark x2 y2 x2a y2a
+x1a y1a x1 y1 tx@Dict begin false Line end /LPutVar [ x2 y2 x2 y2 x2a
+y2a x1a y1a x1 y1 ] cvx def /LPutPos { LPutVar AnglesMP } def } def
+/NCDiag { GetPos GetArms mark x2 y2 x2a y2a x1a y1a x1 y1 tx@Dict begin
+false Line end /LPutVar [ x2 y2 x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def
+/LPutPos { AnglesMP } def } def
+/NCDiagg { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED /x1a armA
+AngleA cos mul x1 add def /y1a armA AngleA sin mul y1 add def nodeB
+GetCenter y1a sub exch x1a sub Atan 180 add /AngleB ED OffsetB AngleB
+NodesepB nodeB GetEdge /y2 ED /x2 ED mark x2 y2 x1a y1a x1 y1 tx@Dict
+begin false Line end /LPutVar [ x2 y2 x2 y2 x2 y2 x1a y1a x1 y1] cvx def
+/LPutPos { AnglesMP } def } def
+/LoopMP { /t t abs def [ LPutVar ] length 2 div 1 sub dup t lt { /t ED }
+{ pop } ifelse mark LPutVar t cvi { /t t 1 sub def pop pop } repeat
+counttomark 1 add 4 roll cleartomark 3 -1 roll exch LineMP } def
+/NCLoop { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform loopsize add /y1b ED /x1b ED /x2b x2a y2a mtrx transform pop
+def x2b y1b mtrx itransform /y2b ED /x2b ED x1b y1b mtrx itransform /y1b
+ED /x1b ED mark armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a y1a
+armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a
+y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def /LPutPos { LoopMP } def }
+def
+/NCCircle { nodeA GetCenter 0 0 NodesepA nodeA GetEdge pop 3 1 roll /Y ED
+/X ED X sub 2 div dup 2 exp r r mul sub abs sqrt atan 2 mul /a ED r
+AngleA 90 add PtoC Y add exch X add exch 2 copy /LPutVar [ 4 2 roll r a
+] def /LPutPos { LPutVar aload pop t 360 mul add dup 5 1 roll 90 sub
+PtoC 3 -1 roll add 3 1 roll add exch 3 -1 roll } def r AngleA 90 sub a
+add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c
+57.2957 r Div def /y ED /x ED } def
+/LPutCoor { tx@NodeDict /LPutPos known { gsave LPutPos tx@Dict begin
+/langle ED CM 3 1 roll STV CP 3 -1 roll sub neg 3 1 roll sub exch moveto
+setmatrix CP end grestore } { 0 0 tx@Dict /langle 0 def end } ifelse }
+def
+end
+%%EndProcSet
+%%BeginProcSet: pst-coil.pro
+%!
+% PostScript prologue for pst-coil.tex.
+% Created 1993/3/12. Source file was pst-coil.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@CoilDict 40 dict def tx@CoilDict begin
+/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos
+lineto } def
+/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED
+/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0
+sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos
+Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div
+w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h
+mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for
+EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP
+TotalLength 0 ArrowB lineto } def
+/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED
+/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale
+BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add
+BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc
+EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def
+/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED
+/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED
+Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul
+sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add
+def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat
+TotalLength ArmA sub 0 TotalLength 0 } def
+end
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index
+/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5
+-1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin
+Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{
+FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics /Metrics
+currentdict end def[2 index currentdict end definefont 3 -1 roll makefont
+/setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4
+index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding
+exch def}def end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 136[25
+2[9 17 2[19 19 19 4[8 19 1[9 9[9 92[{}10 34.166969 /Helvetica
+rf /Fb 67[58 188[{}1 57.899727 /Symbol rf /Fc 134[25 25 35
+25 27 1[25 16 1[27 27 27 41 11 6[27 3[27 35[29 10[27 27 27
+48[{}18 49.200378 /Helvetica-Oblique rf /Fd 130[16 1[16 29[14
+1[14 46[14 1[19 16 16 40[{}8 49.200378 /Helvetica rf /Fe 139[12
+21 14 1[23 10[21 2[23 5[10 5[25 86[{}8 37.412769 /Helvetica-Bold
+rf /Ff 81[30 52[27 27 1[27 30 16 27 19 1[30 30 30 44 14 2[14
+1[30 16 27 30 27 30 27 30[35 35 3[29 8[27 27 27 27 27 14 47[{}30
+49.200378 /Helvetica-BoldOblique rf /Fg 135[19 1[19 21 11 19
+13 1[21 21 21 30 7[19 1[19 21 19 4[9 92[{}15 34.166969 /Helvetica-Bold
+rf /Fh 133[18 20 20 29 20 20 11 16 13 20 20 20 20 31 11 20
+11 11 20 20 13 18 20 18 20 18 10[29 1[24 22 27 1[22 3[24 2[13
+29 6[29 18[10 13 10 44[{}38 40.000278 /Times-Roman rf /Fi 203[14
+14 14 14 49[{}4 28.000196 /Times-Roman rf /Fj 203[16 16 16
+16 49[{}4 32.000225 /Times-Roman rf /Fk 130[20 1[20 1[29 3[33
+16 29 20 2[33 2[13 2[13 33 33 16 33 33 1[33 33 4[16 7[36 37[16
+46[{}20 59.040516 /Helvetica rf /Fl 134[39 2[39 43 24 39 27
+1[43 43 43 63 20 2[20 43 43 1[39 43 39 1[39 13[47 2[47 3[43
+4[55 2[51 51 51 51 7[39 39 39 39 39 39 39 39 39 39 3[20 44[{}37
+70.862267 /Helvetica-Bold rf /Fm 182[102 73[{}1 368.041595
+/Helvetica-Bold rf /Fn 81[25 51[20 23 23 32 23 25 14 23 16
+1[25 25 25 36 11 2[11 25 25 14 23 25 23 25 23 4[11 7[25 27
+2[27 7[29 2[27 1[29 29 29 2[24 24 24 6[23 23 6[14 2[16 42[{}40
+41.000366 /Helvetica-Bold rf /Fo 134[23 1[32 23 25 14 23 16
+25 25 25 25 1[11 2[11 25 1[14 23 25 23 25 23 17[32 6[29 5[29
+4[24 12[23 2[14 45[{}26 41.000366 /Helvetica-BoldOblique rf
+/Fp 81[20 52[20 20 1[20 23 11 20 14 23 23 23 23 34 9 2[9 1[23
+1[23 23 20 23 23 17[32 6[29 5[27 27 12[23 23 23 23 23 2[14
+45[{}31 41.000366 /Helvetica-Oblique rf /Fq 67[48 4[22 183[{}2
+48.249817 /Symbol rf /Fr 81[30 48[19 1[19 25 27 27 38 27 30
+16 27 19 30 30 30 30 44 14 27 1[14 30 30 16 27 30 27 30 27
+3[16 14 16 24[35 35 3[29 4[27 2[27 27 2[27 27 1[14 16 14 1[19
+16 16 40[{}45 49.200378 /Helvetica-Bold rf /Fs 139[28 47 33
+1[52 52 52 75 24 47 24 24 52 52 1[47 1[47 52 47 9[80 2[52 56
+2[56 10[56 2[61 66[{}23 85.007408 /Helvetica-Bold rf /Ft 81[27
+51[21 24 24 35 24 27 16 19 21 1[27 24 27 40 13 27 16 13 27
+24 16 21 27 21 27 24 12[32 27 35 1[29 37 35 45 32 2[19 1[37
+29 32 35 35 32 35 7[24 24 24 24 24 24 24 24 24 24 3[12 44[{}53
+48.000336 /Times-Bold rf /Fu 139[23 27 3[34 38 8[31 33[50 67[{}6
+69.120476 /Times-Bold rf /Fv 133[19 3[19 21 10 19 12 1[21 21
+21 31 8 19 8 8 21 21 10 21 21 19 21 21 9[35 1[27 23 25 2[25
+8[29 1[25 27 27 25 25 38 6[21 21 21 21 21 21 21 21 21 21 1[10
+1[10 44[{}46 37.412769 /Helvetica rf /Fw 81[24 52[22 2[22 22
+12 17 15 1[22 22 22 34 3[12 22 1[15 19 22 19 22 19 11[32 27
+24 2[24 1[32 3[17 15 3[27 32 2[32 6[12 1[22 2[22 22 1[22 22
+22 1[11 15 11 4[15 39[{}40 43.800289 /Times-Roman rf /Fx 134[29
+4[16 22 19 2[29 29 45 3[16 29 2[25 29 25 1[25 6[35 3[41 1[35
+6[51 19[29 5[29 29 29 29 1[14 46[{}23 57.600342 /Times-Roman
+rf /Fy 81[20 48[14 11 14 20 20 20 29 20 23 11 20 14 23 23 23
+23 34 9 20 1[9 23 23 11 23 23 20 23 23 3[11 11 11 5[29 1[27
+2[27 7[29 1[25 2[29 27 1[41 1[24 24 24 11 1[23 23 23 23 23
+23 23 23 23 23 1[11 14 11 24 16 14 14 9 1[36 3[11 33[{}64 41.000366
+/Helvetica rf /Fz 55[16 78[21 21 32 21 24 13 19 19 1[24 24
+24 35 13 21 1[13 24 24 13 21 24 21 24 24 7[27 29 40 1[35 27
+24 29 1[29 1[32 40 27 4[35 1[29 1[32 1[29 6[16 11[12 16 12
+4[16 5[16 33[{}45 48.000336 /Times-Italic rf /FA 135[29 2[32
+19 22 25 1[32 29 32 48 16 32 19 16 32 29 19 25 32 25 32 29
+8[41 57 41 1[38 32 2[35 1[41 54 3[22 45 45 1[38 41 41 38 7[19
+1[29 29 1[29 29 29 29 29 29 1[14 46[{}46 57.600342 /Times-Bold
+rf /FB 47[48 21[21 11[27 3[21 45[10 1[21 24 24 35 24 24 13
+19 16 24 24 24 24 37 13 24 13 13 24 24 16 21 24 21 24 21 7[35
+35 45 35 35 29 27 32 1[27 35 35 43 29 35 1[16 35 35 27 29 35
+32 32 35 3[27 1[13 13 24 24 24 24 24 24 24 24 24 24 13 12 16
+12 1[24 16 16 16 5[16 33[{}76 48.000336 /Times-Roman rf /FC
+138[46 1[32 37 6[46 1[23 3[37 46 37 13[60 55 46 2[50 8[64 31[28
+39[{}14 82.960571 /Times-Bold rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 0 1
+0 bop 808 392 a FC(PST)-6 b(ricks)p FB(:)539 473 y FA(PostScript)15
+b(macr)o(os)g(for)g(Generic)h(T)-5 b(eX.)314 1210 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray 0 360 11.38092 34.14276
+.5 CLW mul dup 3 1 roll sub 3 1 roll sub exch 91.04736 79.66644 Ellipse
+closepath gsave 1.0 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 1. setgray 0. true 72.83781 73.97598
+91.04736 85.3569 .5 Frame gsave 1. setgray fill grestore gsave 0.8
+SLW 1. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 45.52368 85.3569 91.04736 85.3569 91.04736 91.04736
+ /r 3.4143 def /Lineto { Arcto } def false Line gsave 1.0 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 34.14276 85.3569 45.52368 85.3569 ArrowA 34.14276
+73.97598 34.14276 62.59506 ArrowB curveto gsave 1.0 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 56.9046 73.97598 91.04736 73.97598 91.04736 68.28552
+ /r 3.4143 def /Lineto { Arcto } def false Line gsave 1.0 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 45.52368 73.97598 56.9046 73.97598 ArrowA 45.52368
+73.97598 45.52368 62.59506 ArrowB curveto gsave 1.0 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 45.52368 62.59506 34.14276 62.59506 /Lineto /lineto
+load def false Line gsave 1.0 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 68.28552 85.3569 68.28552 91.04736 56.9046 91.04736
+56.9046 85.3569 /r 3.4143 def /Lineto { Arcto } def false Line gsave
+1.0 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray 0. true 60.31891 91.04736
+64.8712 99.01396 .5 Frame gsave 1.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.0 SLW 0. setgray 1. true 45.52368 99.01396
+79.66644 102.42828 .5 Frame gsave 1. setgray fill grestore gsave
+1.0 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 479 983
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 2.84523 -4.55229 0.0 0.0 ArrowA -2.84523 -4.55229
+0.0 0.0 ArrowB curveto gsave 0.5 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 48 x @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 2.84523 -4.55229 0.0 0.0 ArrowA -2.84523 -4.55229
+0.0 0.0 ArrowB curveto gsave 0.5 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 47 x @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 2.84523 -4.55229 0.0 0.0 ArrowA -2.84523 -4.55229
+0.0 0.0 ArrowB curveto gsave 0.5 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+47 x @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 2.84523 -4.55229 0.0 0.0 ArrowA -2.84523 -4.55229
+0.0 0.0 ArrowB curveto gsave 0.5 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 417 1242 a FB(Dripping)12
+b(Faucet)1188 974 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 1. setgray [ 45.52368 51.21414
+45.52368 45.52368 11.38092 45.52368 11.38092 51.21414 /Lineto /lineto
+load def false Polygon gsave 90 rotate 45. rotate 0.8 SLW 0. setgray
+2.27614 LineFill grestore gsave 0.8 SLW 1. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 45.52368 45.52368 11.38092 45.52368 /Lineto /lineto
+load def false Line gsave 2.0 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 28.4523 6.82861 28.4523 12.51907 23.9 14.79523 33.0046
+19.34752 23.9 23.9 33.0046 28.4523 23.9 33.0046 33.0046 37.55707 28.4523
+39.83322 28.4523 45.52368 /Lineto /lineto load def false Line gsave
+1.5 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 0. true 20.48569 -11.38092
+36.4189 6.82861 .5 Frame gsave 0.75 setgray fill grestore gsave 1.5
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 1285 999
+a Fz(M)1188 974 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 42.10936 5.69046 42.10936
+-10.24275 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 0. true 20.48569 -39.83322
+36.4189 -21.62367 .5 Frame gsave 0.75 setgray fill grestore gsave
+1.5 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 1288 1112 a(m)1188 974 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow } def [
+56.9046 -11.38092 56.9046 11.38092 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 1447 979 a(g)1188 974 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow } def [
+42.10936 -38.69505 42.10936 -22.76184 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 1072 1195 a FB(Mathematical)i(Model)e(for)1133
+1242 y(a)g(Dripping)g(Faucet)904 1068 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 22.76184 5.69046 0.0 5.69046 /Lineto /lineto load
+def false Line gsave 2.0 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 22.76184 -5.69046 0.0 -5.69046 /Lineto /lineto load
+def false Line gsave 2.0 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 17.07138 -11.38092 28.4523 0.0 17.07138 11.38092
+ /Lineto /lineto load def false Line gsave 2.0 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 243 1210 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0.5 setgray 0.05 true 0.0 -28.4523
+352.80853 136.57104 .5 Frame gsave 2.0 SLW 0.5 setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 243 986 a
+ tx@Dict begin 90. Rot end
+ 243 986 a
+ tx@Dict begin { 5.0 39.93105 7.21277 2.15988 180 90. sub Uput UUput
+} PutCoor PutBegin end
+ 160 996 a Fy(leecheng)243
+986 y
+ tx@Dict begin PutEnd end
+ 243 986 a
+ tx@Dict begin 90. neg Rot end
+ 745 1547 a FC(User)q(')m(s)20 b(Guide)751 1780
+y Fx(T)n(imothy)13 b(V)-6 b(an)15 b(Zandt)800 1956 y(12)e(March)j(1993)817
+2024 y(V)-6 b(ersion)15 b(0.93a)296 2342 y Fw(Author)r(')n(s)8
+b(address:)296 2399 y(Department)j(of)f(Economics,)h(Princeton)g(University)m
+(,)296 2455 y(Princeton,)g(NJ)f(08544-1021,)f(USA.)h(Internet:)16
+b Fv(tvz@Princeton.EDU)p eop
+%%Page: 1 2
+1 bop 1138 50 a Fu(Contents)712 161 y FA(W)m(elcome)16 b(to)e(PST)l(ricks)565
+b(1)712 271 y(Part)15 b(I)92 b(The)15 b(Essentials)498 b(3)641
+376 y Ft(1)47 b(Arguments)11 b(and)g(delimiters)557 b(3)641
+481 y(2)47 b(Color)974 b(4)641 586 y(3)47 b(Setting)12 b(graphics)f
+(parameters)514 b(5)641 691 y(4)47 b(Dimensions,)11 b(coordinates)g(and)g
+(angles)365 b(7)641 796 y(5)47 b(Basic)12 b(graphics)g(parameters)548
+b(8)712 907 y FA(Part)15 b(II)70 b(Basic)15 b(graphics)g(objects)279
+b(10)641 1011 y Ft(6)47 b(Lines)12 b(and)f(polygons)672 b(10)641
+1116 y(7)47 b(Ar)o(cs,)12 b(cir)o(cles)h(and)e(ellipses)575
+b(1)m(1)641 1221 y(8)47 b(Curves)920 b(13)641 1326 y(9)47 b(Dots)973
+b(15)617 1431 y(10)47 b(Grids)950 b(17)619 1536 y(1)m(1)48
+b(Plots)966 b(19)712 1647 y FA(Part)15 b(III)48 b(Mor)o(e)15
+b(graphics)g(parameters)169 b(24)617 1751 y Ft(12)47 b(Coordinate)12
+b(systems)665 b(24)617 1856 y(13)47 b(Line)12 b(styles)850
+b(24)617 1961 y(14)47 b(Fill)14 b(styles)873 b(27)617 2066
+y(15)47 b(Arr)o(owheads)11 b(and)g(such)620 b(28)617 2171 y(16)47
+b(Custom)11 b(styles)783 b(31)712 2282 y FA(Part)15 b(IV)51
+b(Custom)14 b(graphics)405 b(32)617 2387 y Ft(17)47 b(The)12
+b(basics)852 b(32)617 2491 y(18)47 b(Parameters)831 b(32)617
+2596 y(19)47 b(Graphics)12 b(objects)722 b(33)591 2828 y Fv(T)l(able)9
+b(of)h(contents)1055 b(1)p eop
+%%Page: 2 3
+2 bop 617 50 a Ft(20)47 b(Safe)12 b(tricks)850 b(36)617 155
+y(21)47 b(Pr)o(etty)13 b(safe)f(tricks)719 b(39)617 260 y(22)47
+b(For)13 b(hackers)e(only)721 b(39)712 370 y FA(Part)15 b(V)73
+b(Pictur)o(e)15 b(T)-5 b(ools)500 b(41)617 475 y Ft(23)47 b(Pictur)o(es)901
+b(41)617 580 y(24)47 b(Placing)13 b(and)e(r)o(otating)h(whatever)449
+b(42)617 685 y(25)47 b(Repetition)854 b(46)617 790 y(26)47
+b(Axes)968 b(47)712 901 y FA(Part)15 b(VI)51 b(T)-5 b(ext)14
+b(T)l(ricks)546 b(52)617 1005 y Ft(27)47 b(Framed)12 b(boxes)778
+b(52)617 1110 y(28)47 b(Clipping)888 b(54)617 1215 y(29)47
+b(Rotation)11 b(and)g(scaling)h(boxes)520 b(55)712 1326 y FA(Part)15
+b(VII)29 b(Nodes)15 b(and)f(Node)h(Connections)105 b(58)617
+1431 y Ft(30)47 b(Nodes)941 b(59)617 1536 y(31)47 b(Node)12
+b(connections)708 b(60)617 1641 y(32)47 b(Attaching)11 b(labels)h(to)g(node)f
+(connections)322 b(66)712 1751 y FA(Part)15 b(VIII)7 b(Special)14
+b(T)l(ricks)477 b(70)617 1856 y Ft(33)47 b(Coils)12 b(and)f(zigzags)716
+b(70)617 1961 y(34)47 b(Special)13 b(coordinates)671 b(71)617
+2066 y(35)47 b(Overlays)884 b(73)617 2171 y(36)47 b(The)12
+b(gradient)g(\256ll)g(style)632 b(74)617 2276 y(37)47 b(Adding)11
+b(color)h(to)g(tables)616 b(75)617 2381 y(38)47 b(T)l(ypesetting)12
+b(text)g(along)g(a)f(path)477 b(76)617 2485 y(39)47 b(Str)o(oking)12
+b(and)f(\256lling)h(character)g(paths)338 b(77)617 2590 y(40)47
+b(Importing)11 b(EPS)h(\256les)665 b(78)591 2828 y Fv(T)l(able)9
+b(of)h(contents)1055 b(2)p eop
+%%Page: 3 4
+3 bop 617 50 a Ft(41)47 b(Exporting)12 b(EPS)f(\256les)668
+b(79)712 161 y FA(Help)939 b(82)630 266 y Ft(A)47 b(Boxes)947
+b(82)633 370 y(B)47 b(T)o(ips)12 b(and)f(Mor)o(e)i(T)l(ricks)624
+b(85)630 475 y(C)47 b(Including)11 b(PostScript)h(code)540
+b(86)630 580 y(D)47 b(T)l(r)o(oubleshooting)733 b(87)591 2828
+y Fv(T)l(able)9 b(of)h(contents)1055 b(3)p eop
+%%Page: 1 5
+4 bop 591 61 a Fs(W)n(elcome)23 b(to)h(PST)-5 b(ricks)591 387
+y FB(PST)n(ricks)15 b(is)i(a)f(collection)i(of)e(PostScript-based)g(T)1486
+397 y(E)1509 387 y(X)g(macros)g(that)h(is)g(com-)591 447 y(patible)j(with)g
+(most)f(T)978 458 y(E)1002 447 y(X)g(macro)h(packages,)h(including)g(Plain)e
+(T)1742 458 y(E)1766 447 y(X,)g(L)1844 441 y(a)1858 447 y(T)1879
+462 y(E)1902 447 y(X,)591 507 y(AMST)717 518 y(E)739 507 y(X,)d(and)h(AMS-L)
+1021 501 y(a)1035 507 y(T)1056 522 y(E)1078 507 y(X.)g(PST)n(ricks)g(gives)g
+(you)g(color)n(,)h(graphics,)h(rota-)591 567 y(tion,)d(trees)g(and)f
+(overlays.)28 b(PST)n(ricks)15 b(puts)g(the)h(icing)g(\(PostScript\))f(on)g
+(your)591 627 y(cake)d(\(T)727 638 y(E)751 627 y(X\)!)591 717
+y(T)m(o)j(install)h(PST)n(ricks,)f(follow)g(the)h(instructions)g(in)f(the)h
+(\256le)f Fy(read-me.pst)f FB(that)591 777 y(comes)g(with)h(the)f(PST)n
+(ricks)h(package.)25 b(Even)14 b(if)h(PST)n(ricks)f(has)g(already)i(been)591
+837 y(installed)d(for)e(you,)h(give)g Fy(read-me.pst)f FB(a)h(look)g(over)m
+(.)591 926 y(This)d Fz(User)r(')-6 b(s)7 b(Guide)i FB(ver)o(ges)f(on)h(being)
+h(a)f(reference)h(manual,)g(meaning)g(that)f(it)h(is)591 986
+y(not)e(designed)g(to)h(be)f(read)h(linearly)m(.)17 b(Here)8
+b(is)g(a)h(recommended)g(strategy:)16 b(Finish)591 1047 y(reading)h(this)g
+(brief)g(overview)g(of)g(the)g(features)g(in)h(PST)n(ricks.)31
+b(Then)18 b(thumb)591 1107 y(through)d(the)h(entire)g Fz(User)r(')-6
+b(s)14 b(Guide)h FB(to)h(get)f(your)h(own)e(overview)m(.)28
+b(Return)16 b(to)591 1167 y(Part)11 b(I)h(\(Essentials\))g(and)g(read)g(it)h
+(carefully)m(.)18 b(Refer)12 b(to)g(the)g(remaining)h(sections)591
+1227 y(as)e(the)i(need)f(arises.)591 1316 y(When)d(you)f(cannot)h(\256gure)g
+(out)g(how)f(to)h(do)g(something)g(or)f(when)h(trouble)g(arises,)591
+1377 y(check)16 b(out)g(the)h(appendices)f(\(Help\).)30 b(Y)-5
+b(ou)15 b(just)i(might)f(be)g(lucky)h(enough)f(to)591 1437
+y(\256nd)c(a)h(solution.)20 b(There)13 b(is)g(also)f(a)h(L)1202
+1431 y(a)1216 1437 y(T)1237 1452 y(E)1261 1437 y(X)f(\256le)h
+Fy(samples.pst)h FB(of)f(samples)f(that)i(is)591 1497 y(distributed)e(with)g
+(PST)n(ricks.)17 b(Look)12 b(to)g(this)g(\256le)g(for)g(further)g
+(inspiration.)591 1586 y(This)17 b(documentation)j(is)d(written)i(with)f(L)
+1314 1580 y(a)1328 1586 y(T)1349 1601 y(E)1372 1586 y(X.)g(Some)g(examples)g
+(use)g(L)1856 1580 y(a)1870 1586 y(T)1891 1601 y(E)1914 1586
+y(X)591 1646 y(speci\256c)f(constructs)g(and)g(some)g(don')o(t.)34
+b(However)n(,)17 b(there)h(is)f(nothing)h(L)1856 1640 y(a)1870
+1646 y(T)1891 1661 y(E)1914 1646 y(X)591 1707 y(speci\256c)8
+b(about)h(any)f(of)h(the)g(macros,)g(nor)f(is)h(there)g(anything)g(that)g
+(does)f(not)h(work)591 1767 y(with)j(L)700 1761 y(a)714 1767
+y(T)735 1782 y(E)759 1767 y(X.)g(This)g(package)h(has)g(been)g(tested)g(with)
+f(Plain)h(T)1617 1778 y(E)1641 1767 y(X,)f(L)1712 1761 y(a)1726
+1767 y(T)1747 1782 y(E)1770 1767 y(X,)g(AMS-)591 1827 y(L)603
+1821 y(a)617 1827 y(T)638 1842 y(E)661 1827 y(Xand)j(AMST)906
+1838 y(E)928 1827 y(X,)g(and)g(should)g(work)g(with)g(other)g(T)1565
+1838 y(E)1589 1827 y(X)g(macro)h(packages)591 1887 y(as)11
+b(well.)591 1976 y(The)18 b(main)g(macro)g(\256le)g(is)g Fy(pstricks.tex)p
+FB(/)p Fy(pstricks)q(.s)q(ty)p FB(.)38 b(Each)18 b(of)g(the)g(PST)n(ricks)325
+2000 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 231 2018 a Fr(pstricks)591
+2037 y FB(macro)c(\256les)h(comes)f(with)h(a)f Fy(.tex)i FB(extension)e(and)h
+(a)f Fy(.sty)i FB(extension;)h(these)d(are)591 2097 y(equivalent,)19
+b(but)e(the)h Fy(.sty)g FB(extension)f(means)h(that)f(you)g(can)g(include)h
+(the)g(\256le)591 2157 y(name)12 b(as)g(a)g(L)803 2151 y(a)817
+2157 y(T)838 2172 y(E)862 2157 y(X)f(document)i(style)f(option.)591
+2246 y(There)18 b(are)h(numerous)e(supplementary)i(macro)g(\256les.)35
+b(A)18 b(\256le,)h(like)g(the)g(one)591 2306 y(above)13 b(and)g(the)h(left,)h
+(is)e(used)g(in)g(this)h Fz(User)r(')-6 b(s)11 b(Guide)j FB(to)f(remind)h
+(you)f(that)h(you)591 2367 y(must)e(input)g(a)g(\256le)g(before)g(using)g
+(the)g(macros)g(it)h(contains.)591 2456 y(For)h(most)g(PST)n(ricks)h(macros,)
+g(even)g(if)g(you)g(misuse)f(them,)i(you)e(will)i(not)e(get)591
+2516 y(PostScript)g(errors)h(in)g(the)g(output.)27 b(However)n(,)15
+b(it)h(is)e(recommended)i(that)g(you)591 2576 y(resolve)h(any)f(T)852
+2587 y(E)876 2576 y(X)g(errors)h(before)g(attempting)h(to)f(print)g(your)g
+(document.)32 b(A)591 2637 y(few)14 b(PST)n(ricks)h(macros)g(pass)g(on)g
+(PostScript)f(errors)h(without)g(warning.)26 b(Use)591 2828
+y Fv(W)o(elcome)10 b(to)g(PST)o(ricks)982 b(1)p eop
+%%Page: 2 6
+5 bop 591 50 a FB(these)10 b(with)h(care,)h(especially)f(if)g(you)g(are)g
+(using)f(a)h(networked)f(printer)n(,)h(because)591 110 y(PostScript)g(errors)
+g(can)h(cause)g(a)g(printer)h(to)f(bomb.)17 b(Such)11 b(macros)h(are)g
+(pointed)591 170 y(out)g(in)g(strong)f(terms,)h(using)g(a)g(warning)g(like)h
+(this)f(one:)297 359 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 28.0 .5 CLW
+mul sub 0 360 arc closepath gsave 0.5 setgray fill grestore gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+297 359 a
+ tx@Dict begin 45. Rot end
+ 210 415 a
+ tx@Dict begin CP CP T 3.55672 3.55672 scale NET end
+ FB(PS)210 415 y
+ tx@Dict begin CP CP T 1 3.55672 div 1 3.55672 div scale NET end
+ 297 359 a
+ tx@Dict begin 45. neg Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 26.60002 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 38.5 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.0 26.60002
+7.0 38.5 .5 Frame gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 49.0 0.0 38.5 ArrowA 7.0 56.0 24.5 56.0 ArrowB
+curveto gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 127 a
+ tx@Dict begin 0.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 0.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 40.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 40.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 80.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 80.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 120.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 120.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 160.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 160.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 200.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 200.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 240.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 240.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 280.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 280.0 neg Rot end
+ 399 127 a
+ tx@Dict begin 320.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 127 a
+ tx@Dict begin 320.0 neg Rot end
+ 712 330 a Fz(W)l(arning:)47 b(Use)18 b(macr)n(os)f(that)h(do)g(not)
+h(check)g(for)f(PostScript)712 390 y(err)n(ors)13 b(with)h(car)n(e.)22
+b(PostScript)14 b(err)n(ors)e(can)h(cause)h(a)f(printer)h(to)712
+450 y(bomb!)591 594 y FB(Keep)i(in)i(mind)f(the)g(following)g(typographical)h
+(conventions)g(in)f(this)g(User)r(')m(s)591 654 y(Guide.)665
+785 y Fq(\267)25 b FB(All)11 b(literal)g(input)g(characters,)g(i.e.,)g(those)
+f(that)h(should)e(appear)i(verbatim)712 845 y(in)16 b(your)f(input)g(\256le,)
+h(appear)g(in)f(upright)g Fy(Helvetica)h FB(and)g Fy(Helvetica-Bold)712
+905 y FB(fonts.)665 1007 y Fq(\267)25 b FB(Meta)11 b(ar)o(guments,)g(for)f
+(which)g(you)f(are)i(supposed)e(to)h(substitute)h(a)f(value)712
+1067 y(\(e.g.,)22 b Fp(angle)q FB(\))c(appear)i(in)f(slanted)h
+Fp(Helvetica-Oblique)f FB(and)h Fo(Helvetica-)712 1127 y(BoldOblique)13
+b FB(fonts.)665 1229 y Fq(\267)25 b FB(The)18 b(main)g(entry)g(for)g(a)f
+(macro)h(or)g(parameter)g(that)h(states)e(its)h(syntax)712
+1289 y(appears)e(in)g(a)f(lar)o(ge)h(bold)g(font,)g Fz(except)h(for)e(the)h
+(optional)g(ar)n(guments,)712 1349 y(which)e(ar)n(e)f(in)g(medium)f(weight)p
+FB(.)21 b(This)13 b(is)g(how)f(you)h(can)h(recognize)f(the)712
+1409 y(optional)g(ar)o(guments.)665 1511 y Fq(\267)25 b FB(References)16
+b(to)g(PST)n(ricks)e(commands)i(and)f(parameters)h(within)g(para-)712
+1571 y(graphs)c(are)g(set)g(in)h Fn(Helvetica-Bold)p FB(.)591
+2828 y Fv(W)o(elcome)d(to)g(PST)o(ricks)982 b(2)p eop
+%%Page: 3 7
+6 bop 393 265 a Fm(I)591 182 y Fs(The)23 b(Essentials)366 585
+y Fl(1)70 b(Arguments)21 b(and)f(delimiters)591 706 y FB(Here)14
+b(is)h(some)g(nitty-gritty)h(about)f(ar)o(guments)g(and)g(delimiters)h(that)f
+(is)g(really)591 766 y(important)d(to)h(know)m(.)591 855 y(The)f(PST)n(ricks)
+g(macros)g(use)f(the)i(following)f(delimiters:)1264 989 y(Curly)g(braces)50
+b Fy({)p Fp(arg)r Fy(})764 1061 y FB(Brackets)12 b(\(only)g(for)g(optional)g
+(ar)o(guments\))51 b Fy([)p Fp(arg)r Fy(])728 1133 y FB(Parentheses)12
+b(and)g(commas)h(for)e(coordinates)51 b Fy(\()p Fp(x)s Fy(,)t
+Fp(y)t Fy(\))1089 1205 y(=)12 b FB(and)g Fy(,)g FB(for)g(parameters)51
+b Fp(par1)p Fy(=)p Fp(val1)p Fy(,)12 b Fq(\274)591 1332 y FB(Spaces)i(and)h
+(commas)g(are)h(also)e(used)h(as)g(delimiters)h(within)f(ar)o(guments,)h(but)
+591 1392 y(in)c(this)g(case)g(the)g(ar)o(gument)h(is)e(expanded)i(before)f
+(looking)g(for)f(the)i(delimiters.)591 1481 y(Always)f(use)i(a)g(period)g
+(rather)g(than)g(a)g(comma)g(to)g(denote)g(the)g(decimal)i(point,)591
+1541 y(so)11 b(that)i(PST)n(ricks)e(doesn')o(t)h(mistake)h(the)f(comma)h(for)
+f(a)g(delimiter)m(.)591 1630 y(The)f(easiest)g(mistake)h(to)f(make)g(with)g
+(the)g(PST)n(ricks)g(macros)g(is)f(to)h(mess)g(up)f(the)591
+1690 y(delimiters.)21 b(This)13 b(may)g(generate)h(complaints)g(from)f(T)1532
+1701 y(E)1556 1690 y(X)f(or)h(PST)n(ricks)g(about)591 1751
+y(bad)f(ar)o(guments,)g(or)g(other)g(unilluminating)h(errors)f(such)g(as)f
+(the)i(following:)615 1879 y Fy(!)f(Use)g(of)f(\\get@coor)g(doesn't)g(match)h
+(its)g(de\256nition.)615 1960 y(!)g(Paragraph)d(ended)h(before)g
+(\\pst@addcoor)h(was)h(complete.)615 2041 y(!)g(Forbidden)d(control)i
+(sequence)f(found)h(while)g(scanning)g(use)g(of)h(\\check@arrow)n(.)615
+2121 y(!)g(File)f(ended)f(while)h(scanning)g(use)g(of)h(\\lput.)591
+2250 y FB(Delimiters)e(are)f(generally)h(the)g(\256rst)e(thing)i(to)f(check)h
+(when)f(you)g(get)g(errors)g(with)591 2310 y(a)j(PST)n(ricks)f(macro.)591
+2399 y(Since)i(PST)n(ricks)g(macros)h(can)g(have)f(many)h(ar)o(guments,)g(it)
+g(is)g(useful)f(to)h(know)591 2459 y(that)g(you)f(can)i(leave)f(a)g(space)g
+(or)g(new)f(line)i(between)f(any)g(ar)o(guments,)g(except)591
+2520 y(between)j(ar)o(guments)h(enclosed)f(in)h(curly)f(braces.)33
+b(If)17 b(you)g(need)h(to)f(insert)h(a)591 2580 y(new)c(line)i(between)g(ar)o
+(guments)f(enclosed)h(in)f(curly)g(braces,)h(put)f(a)h(comment)591
+2640 y(character)d Fy(\045)f FB(at)g(the)h(end)f(of)g(the)g(line.)591
+2828 y Fv(The)d(Essentials)1092 b(3)p eop
+%%Page: 4 8
+7 bop 591 50 a FB(As)13 b(a)h(general)g(rule,)h(the)f(\256rst)f(non-space)h
+(character)h(after)g(a)f(PST)n(ricks)f(macro)591 110 y(should)f(not)g(be)h(a)
+g Fy([)g FB(or)f Fy(\()p FB(.)19 b(Otherwise,)12 b(PST)n(ricks)g(might)h
+(think)g(that)g(the)g Fy([)g FB(or)g Fy(\()f FB(is)591 170
+y(actually)h(part)f(of)g(the)h(macro.)18 b(Y)-5 b(ou)12 b(can)g(always)g(get)
+g(around)g(this)h(by)e(inserting)591 230 y(a)h(pair)g Fy({})f
+FB(of)h(braces)g(somewhere)g(between)g(the)h(macro)f(and)g(the)g
+Fy([)h FB(or)f Fy(\()p FB(.)366 427 y Fl(2)70 b(Color)591 549
+y FB(The)12 b(grayscales)712 680 y Fy(black)p FB(,)h Fy(darkgray)p
+FB(,)e Fy(gray)p FB(,)g Fy(lightgray)p FB(,)g(and)h Fy(white)p
+FB(,)591 810 y(and)g(the)g(colors)712 941 y Fy(red)p FB(,)f
+Fy(green)p FB(,)g Fy(blue)p FB(,)g Fy(cyan)p FB(,)h Fy(magenta)p
+FB(,)f(and)h Fy(yellow)591 1072 y FB(are)g(prede\256ned)g(in)g(PST)n(ricks.)
+591 1161 y(This)g(means)g(that)h(these)g(names)f(can)h(be)f(used)g(with)g
+(the)h(graphics)f(objects)h(that)591 1221 y(are)e(described)g(in)h(later)g
+(sections.)17 b(This)11 b(also)g(means)g(that)h(the)g(command)f
+Fn(\\gray)591 1282 y FB(\(or)g Fn(\\red)p FB(,)h(etc.\))18
+b(can)12 b(be)g(used)g(much)g(like)h Fy(\\rm)f FB(or)g Fy(\\tt)p
+FB(,)h(as)e(in)591 1361 y
+ 0.5 setgray
+ 712 1443 a Fk({\\gray)16 b(This)h(stuf)o(f)g
+(should)f(be)g(gray)l(.})591 1498 y
+ 0 setgray
+ 76 x FB(The)e(commands)g
+Fn(\\gray)p FB(,)g Fn(\\red)p FB(,)h(etc.)24 b(can)14 b(be)g(nested)g(like)h
+(the)g(font)f(commands)591 1634 y(as)e(well.)20 b(There)13
+b(are)g(a)g(few)f(important)i(ways)e(in)h(which)g(the)g(color)g(commands)591
+1695 y(dif)o(fer)f(from)g(the)g(font)g(commands:)652 1825 y(1.)24
+b(The)12 b(color)g(commands)g(can)f(be)h(used)f(in)g(and)h(out)f(of)h(math)g
+(mode)f(\(there)712 1886 y(are)i(no)f(restrictions,)g(other)g(than)h(proper)e
+(T)1441 1896 y(E)1465 1886 y(X)g(grouping\).)652 1987 y(2.)24
+b(The)10 b(color)g(commands)f(af)o(fect)h(whatever)g(is)f(in)g(their)h(scope)
+f(\(e.g.,)h(lines\),)712 2047 y(not)j(simply)f(characters.)652
+2149 y(3.)24 b(The)13 b(scope)f(of)f(the)i(color)f(commands)g(does)g(not)g
+(extend)g(across)g(pages.)652 2251 y(4.)24 b(The)16 b(color)f(commands)g(are)
+h(not)f(as)g(robust)f(as)h(font)g(commands)g(when)712 2311
+y(used)e(inside)h(box)f(macros.)22 b(See)13 b(page)h(89)f(for)g(details.)22
+b(Y)-5 b(ou)13 b(can)h(avoid)712 2371 y(most)f(problems)g(by)f(explicitly)i
+(grouping)e(color)h(commands)g(\(e.g.,)g(en-)712 2431 y(closing)e(the)f
+(scope)g(in)g(braces)g Fy({})p FB(\))g(whenever)g(these)g(are)g(in)h(the)f
+(ar)o(gument)712 2492 y(of)i(another)h(command.)1120 2474 y
+Fj(1)p 591 2526 544 2 v 646 2557 a Fi(1)662 2572 y Fh(However)n(,)8
+b(this)e(is)h(not)g(necessary)f(with)h(the)g(PST)o(ricks)g(LR-box)g
+(commands,)f(expect)h(when)591 2622 y Fg(\\psverbboxtrue)i
+Fh(is)h(in)g(ef)o(fect.)k(See)c(Section)f(A.)591 2828 y Fv(Color)1248
+b(4)p eop
+%%Page: 5 9
+8 bop 591 50 a FB(Y)-5 b(ou)17 b(can)i(de\256ne)f(or)h(rede\256ne)f
+(additional)i(colors)e(and)g(grayscales)h(with)f(the)591 110
+y(following)12 b(commands.)18 b(In)12 b(each)h(case,)f Fp(numi)j
+FB(is)d(a)h(number)f(between)h(0)f(and)g(1.)591 170 y(Spaces)h(are)h(used)f
+(as)g(delimiters\320don')o(t)i(add)e(any)h(extraneous)f(spaces)h(in)f(the)591
+230 y(ar)o(guments.)591 364 y Fr(\\newgray{)p Ff(color)5 b
+Fr(}{)p Ff(num)q Fr(})712 444 y Fp(num)j FB(is)g(the)g(gray)g(scale)g
+(speci\256cation,)h(to)f(be)g(set)g(by)g(PostScript')m(s)g
+Fy(setgray)712 504 y FB(operator)m(.)18 b(0)12 b(is)g(black)h(and)f(1)g(is)f
+(white.)18 b(For)11 b(example:)820 604 y Fy(\\newgray{darkgray}{.25})591
+703 y Fr(\\newrgbcolor{)p Ff(color)5 b Fr(}{)p Ff(num1)13 b(num2)g(num3)s
+Fr(})712 783 y Fp(num1)h(num2)g(num3)i FB(is)g(a)g Fz(r)n(ed-gr)n(een-blue)f
+FB(speci\256cation,)j(to)e(be)f(set)h(by)712 843 y(PostScript')m(s)c
+Fy(setrgbcolor)f FB(operator)m(.)18 b(For)11 b(example,)820
+943 y Fy(\\newrgbcolor{green})o({0)19 b(1)k(0})591 1042 y Fr(\\newhsbcolor{)p
+Ff(color)5 b Fr(}{)p Ff(num1)13 b(num2)g(num3)s Fr(})712 1122
+y Fp(num1)i(num2)h(num3)i FB(is)f(an)g Fz(hue-saturation-brightness)f
+FB(speci\256cation,)712 1183 y(to)d(be)f(set)g(by)g(PostScript')m(s)f
+Fy(sethsbcolor)h FB(operator)m(.)18 b(For)11 b(example,)820
+1282 y Fy(\\newhsbcolor{mycolor}{.3)21 b(.7)i(.9})591 1382
+y Fr(\\newcmykcolor{)p Ff(color)5 b Fr(}{)p Ff(num1)13 b(num2)g(num3)h(num4)r
+Fr(})712 1462 y Fp(num1)j(num2)g(num3)f(num4)j FB(is)g(a)g
+Fz(cyan-magenta-yellow-black)i FB(speci-)712 1522 y(\256cation,)h(to)d(be)h
+(set)f(by)g(PostScript')m(s)g Fy(newcmykcolor)h FB(operator)m(.)39
+b(For)712 1582 y(example,)820 1682 y Fy(\\newcmykcolor{hercolor}{.5)21
+b(1)i(0)f(.5})591 1815 y FB(For)d(de\256ning)g(new)h(colors,)h(the)f
+Fz(rbg)g FB(model)g(is)g(a)g(sure)f(thing.)41 b Fz(hsb)19 b
+FB(is)h(not)591 1875 y(recommended.)d Fz(cmyk)11 b FB(is)f(not)g(supported)g
+(by)g(all)h(Level)g(1)f(implementations)i(of)591 1936 y(PostScript,)7
+b(although)g(it)g(is)g(best)g(for)g(c)q(olor)g(printi)q(ng.)18
+b(For)7 b(more)g(information)g(on)591 1996 y(color)12 b(models)g(and)g(color)
+g(speci\256cations,)g(consult)g(the)g Fz(PostScript)h(Language)591
+2056 y(Refer)n(ence)g(Manual)p FB(,)f(2nd)f(Edition)i(\(Red)f(Book\),)f(and)h
+(a)h(color)f(guide.)591 2144 y Fw(Driver)d(notes:)44 b(The)11
+b(command)g Fe(\\pstV)n(erb)g Fw(must)g(be)g(de\256ned.)366
+2339 y Fl(3)70 b(Setting)19 b(graphics)i(parameters)591 2459
+y FB(PST)n(ricks)12 b(uses)h(a)g(key-value)g(system)g(of)g(graphics)g
+(parameters)h(to)f(customize)591 2520 y(the)i(macros)h(that)g(generate)g
+(graphics)g(\(e.g.,)g(lines)f(and)h(circles\),)h(or)e(graphics)591
+2580 y(combined)h(with)g(text)g(\(e.g.,)g(framed)h(boxes\).)27
+b(Y)-5 b(ou)16 b(can)g(change)g(the)g(default)591 2640 y(values)c(of)f
+(parameters)i(with)f(the)h(command)f Fn(\\psset)p FB(,)f(as)h(in)591
+2828 y Fv(Setting)e(graphics)f(parameters)871 b(5)p eop
+%%Page: 6 10
+9 bop 712 50 a Fy(\\psset{\256llcolor=yellow})712 110 y
+(\\psset{linecolor=blue,framearc=.3,dash=3pt)21 b(6pt})591
+241 y FB(The)12 b(general)h(syntax)e(is:)712 386 y Fr(\\psset{)p
+Ff(par1=value1)p Fd(,)p Fc(par2=value2)p Fd(,)q Fb(\274)s Fr(})591
+517 y FB(As)i(illustrated)i(in)f(the)g(examples)h(above,)f(spaces)g(are)h
+(used)e(as)h(delimiters)h(for)591 577 y(some)f(of)g(the)h(values.)26
+b(Additional)15 b(spaces)f(are)h(allowed)g(only)g(following)f(the)591
+637 y(comma)c(that)f(separates)h Fp(par)t Fy(=)p Fp(value)f
+FB(pairs)g(\(which)g(is)g(thus)g(a)g(good)g(place)h(to)f(start)591
+697 y(a)i(new)g(line)g(if)h(there)f(are)h(many)f(parameter)i(changes\).)j
+(E.g.,)c(the)f(\256rst)g(example)591 758 y(is)g(acceptable,)j(but)e(the)h
+(second)e(is)h(not:)712 888 y Fy(\\psset{\256llcolor=yellow)n(,)24
+b(linecolor=blue})712 949 y(\\psset{\256llcolor=)g(yellow)n(,linecolor)e
+(=blue)g(})591 1079 y FB(The)12 b(parameters)h(are)f(described)h(throughout)f
+(this)g Fz(User)r(')-6 b(s)10 b(Guide)p FB(,)i(as)g(they)g(are)591
+1139 y(needed.)591 1229 y(Nearly)h(every)h(macro)g(that)h(makes)f(use)f(of)g
+(graphics)h(parameters)h(allows)e(you)591 1289 y(to)18 b(include)i(changes)f
+(as)f(an)h(optional)h(\256rst)e(ar)o(gument,)j(enclosed)e(in)g(square)591
+1349 y(brackets.)e(For)11 b(example,)712 1480 y Fy
+(\\psline[linecolor=green,linestyle=dotted]\(8,7\))591 1611
+y FB(draws)g(a)h(dotted,)g(green)h(line.)k(It)c(is)e(roughly)h(equivalent)h
+(to)712 1741 y Fy({\\psset{linecolor=green,linestyle=dotted}\\psline\(8,7\)})
+591 1872 y FB(For)i(many)i(parameters,)h(PST)n(ricks)e(processes)f(the)i
+(value)f(and)h(stores)e(it)i(in)g(a)591 1932 y(peculiar)d(form,)f(ready)g
+(for)g(PostScript)g(consumption.)20 b(For)13 b(others,)g(PST)n(ricks)591
+1993 y(stores)e(the)i(value)f(in)g(a)h(form)f(that)g(you)g(would)g(expect.)18
+b(In)12 b(the)g(latter)h(case,)g(this)591 2053 y Fz(User)r(')-6
+b(s)12 b(Guide)i FB(will)h(mention)h(the)f(name)g(of)f(the)h(command)g(where)
+f(the)h(value)591 2113 y(is)e(stored.)20 b(This)14 b(is)f(so)f(that)i(you)f
+(can)h(use)f(the)g(value)h(to)f(set)h(other)f(parameters.)591
+2173 y(E.g.,)712 2304 y Fy(\\psset{linecolor=\\ps\256llcolor)n
+(,doublesep=.5\\pslinewidth})591 2435 y FB(However)n(,)d(even)h(for)g(these)g
+(parameters,)g(PST)n(ricks)g(may)g(do)g(some)f(processing)591
+2495 y(and)j(error)o(-checking,)h(and)f(you)g(should)g(always)g(set)g(them)h
+(using)f Fn(\\psset)f FB(or)h(as)591 2555 y(optional)f(parameter)h(changes,)e
+(rather)h(than)g(rede\256ning)g(the)g(command)g(where)591 2615
+y(the)g(value)g(is)g(stored.)591 2828 y Fv(Setting)e(graphics)f(parameters)
+871 b(6)p eop
+%%Page: 7 11
+10 bop 366 51 a Fl(4)70 b(Dimensions,)20 b(coordinates)h(and)f(angles)591
+170 y FB(Whenever)13 b(an)g(ar)o(gument)g(of)g(a)g(PST)n(ricks)f(macro)i(is)e
+(a)h(dimension,)h(the)f(unit)g(is)591 230 y(optional.)18 b(The)12
+b(default)h(unit)f(is)g(set)g(by)g(the)712 345 y Fr(unit=)p
+Ff(dim)712 b FA(Default:)20 b Fr(1cm)591 461 y FB(parameter)m(.)28
+b(For)14 b(example,)j(with)e(the)h(default)g(value)f(of)g Fy(1cm)p
+FB(,)h(the)g(following)591 521 y(are)c(equivalent:)712 636
+y Fy(\\psset{linewidth=.5cm})712 696 y(\\psset{linewidth=.5})591
+811 y FB(By)d(never)i(explicitly)g(giving)g(units,)f(you)g(can)g(scale)h
+(graphics)f(by)g(changing)g(the)591 871 y(value)i(of)g Fn(unit)p
+FB(.)591 958 y(Y)-5 b(ou)14 b(can)g(use)g(the)h(default)g(coordinate)h(when)e
+(setting)h(non-PST)n(ricks)e(dimen-)591 1019 y(sions)e(as)h(well,)g(using)f
+(the)i(commands)712 1148 y Fr(\\pssetlength{)p Ff(cmd)t Fr(}{)p
+Ff(dim)q Fr(})712 1223 y(\\psaddtolength{)p Ff(cmd)t Fr(}{)p
+Ff(dim)q Fr(})591 1338 y FB(where)g Fp(cmd)18 b FB(is)c(a)g(dimension)g
+(register)g(\(in)g(L)1346 1332 y(a)1360 1338 y(T)1381 1353
+y(E)1404 1338 y(X)g(parlance,)h(a)f(\252length\272\),)h(and)591
+1398 y Fp(dim)21 b FB(is)f(a)h(length)h(with)e(optional)i(unit.)43
+b(These)21 b(are)g(analogous)g(to)g(L)1824 1392 y(a)1838 1398
+y(T)1859 1413 y(E)1882 1398 y(X')m(s)591 1458 y Fy(\\setlength)12
+b FB(and)g Fy(\\addtolength)p FB(.)591 1546 y(Coordinate)20
+b(pairs)g(have)g(the)g(form)g Fy(\()p Fp(x)s Fy(,)t Fp(y)t
+Fy(\))p FB(.)42 b(The)20 b(origin)g(of)g(the)g(coordinate)591
+1606 y(system)7 b(is)h(at)h(T)835 1616 y(E)858 1606 y(X')m(s)f(currentpoint.)
+16 b(The)9 b(command)f Fn(\\SpecialCoor)h FB(lets)f(you)g(use)591
+1666 y(polar)13 b(coordinates,)g(in)g(the)g(form)g Fy(\()p
+Fp(r)t Fy(;)p Fp(a)q Fy(\))p FB(,)e(where)i Fp(r)j FB(is)d(the)g(radius)g
+(\(a)g(dimension\))591 1726 y(and)f Fp(a)h FB(is)g(the)g(angle)g(\(see)f
+(below\).)19 b(Y)-5 b(ou)12 b(can)h(still)h(use)e(Cartesian)h(coordinates.)
+591 1786 y(For)e(a)h(complete)h(description)g(of)f Fn(\\SpecialCoor)p
+FB(,)g(see)g(Section)h(34.)591 1873 y(The)f Fn(unit)g FB(parameter)h
+(actually)g(sets)f(the)g(following)g(three)h(parameters:)712
+1988 y Fr(xunit=)p Ff(dim)685 b FA(Default:)20 b Fr(1cm)712
+2049 y(yunit=)p Ff(dim)685 b FA(Default:)20 b Fr(1cm)712 2109
+y(runit=)p Ff(dim)693 b FA(Default:)20 b Fr(1cm)591 2224 y
+FB(These)g(are)g(the)h(default)f(units)h(for)e(x-coordinates,)k
+(y-coordinates,)f(and)e(all)591 2284 y(other)10 b(coordinates,)h
+(respectively)m(.)17 b(By)10 b(setting)h(these)f(independently)m(,)i(you)d
+(can)591 2344 y(scale)15 b(the)h(x)f(and)h(y)f(dimensions)g(in)g(Cartesian)h
+(coordinate)h(unevenly)m(.)27 b(After)591 2404 y(changing)12
+b Fn(yunit)f FB(to)i Fy(1pt)p FB(,)e(the)i(two)e Fn(\\psline)p
+FB(')m(s)i(below)e(are)i(equivalent:)712 2520 y Fy(\\psset{yunit=1pt})712
+2580 y(\\psline\(0cm,20pt\)\(5cm,80pt\))712 2640 y(\\psline\(0,20\)\(5,80\))
+591 2828 y Fv(Dimensions,)c(coordinates)g(and)h(angles)735
+b(7)p eop
+%%Page: 8 12
+11 bop 591 50 a FB(The)18 b(values)g(of)g(the)g Fn(runit)p
+FB(,)h Fn(xunit)e FB(and)h Fn(yunit)g FB(parameters)g(are)h(stored)e(in)h
+(the)591 110 y(dimension)12 b(registers)g Fn(\\psunit)p FB(\(also)g
+Fn(\\psrunit)p FB(\),)f Fn(\\psxunit)h FB(and)g Fn(\\psyunit)p
+FB(.)591 199 y(Angles,)h(in)h(polar)g(coordinates)g(and)g(other)g(ar)o
+(guments,)g(should)f(be)h(a)g(number)591 259 y(giving)g(the)g(angle)h(in)f
+(degrees,)h(by)f(default.)24 b(Y)-5 b(ou)13 b(can)i(also)f(change)g(the)h
+(units)591 320 y(used)c(for)h(angles)g(with)g(the)g(command)712
+465 y Fr(\\degrees)p Fd([)p Fc(num)q Fd(])591 596 y Fp(num)g
+FB(should)g(be)h(the)g(number)f(of)g(units)h(in)f(a)h(circle.)20
+b(For)12 b(example,)h(you)f(might)591 656 y(use)712 787 y Fy(\\degrees[100])
+591 917 y FB(to)f(make)h(a)f(pie)h(chart)f(when)g(you)g(know)f(the)i(shares)f
+(in)g(percentages.)18 b Fn(\\degrees)591 978 y FB(without)12
+b(the)g(ar)o(gument)h(is)f(the)g(same)g(as)712 1108 y Fy(\\degrees[360])591
+1239 y FB(The)g(command)712 1384 y Fr(\\radians)591 1515 y
+FB(is)f(short)h(for)712 1646 y Fy(\\degrees[6.28319])591 1777
+y Fn(\\SpecialCoor)g FB(lets)h(you)e(specify)h(angles)g(in)h(other)f(ways)f
+(as)h(well.)366 1974 y Fl(5)70 b(Basic)20 b(graphics)h(parameters)591
+2095 y FB(The)12 b(width)g(and)g(color)g(of)g(lines)g(is)g(set)g(by)g(the)g
+(parameters:)712 2226 y Fr(linewidth=)p Ff(dim)600 b FA(Default:)20
+b Fr(.8pt)712 2286 y(linecolor=)p Ff(color)538 b FA(Default:)19
+b Fr(black)591 2417 y FB(The)14 b Fn(linewidth)h FB(is)f(stored)g(in)h(the)g
+(dimension)f(register)h Fn(\\pslinewidth)p FB(,)g(and)f(the)591
+2477 y Fn(linecolor)e FB(is)g(stored)f(in)i(the)f(command)h
+Fn(\\pslinecolor)p FB(.)591 2566 y(The)e(regions)g(delimited)i(by)e(open)g
+(and)g(closed)g(curves)g(can)h(be)f(\256lled,)g(as)g(deter)o(-)591
+2627 y(mined)h(by)g(the)g(parameters:)591 2828 y Fv(Basic)d(graphics)g
+(parameters)896 b(8)p eop
+%%Page: 9 13
+12 bop 712 50 a Fn(\256llstyle=)p Fo(style)712 110 y Fn(\256llcolor=)p
+Fo(color)591 241 y FB(When)10 b Fn(\256llstyle=none)p FB(,)f(the)h(regions)g
+(are)g(not)g(\256lled.)17 b(When)10 b Fn(\256llstyle=solid)p
+FB(,)g(the)591 301 y(regions)g(are)h(\256lled)g(with)g Fn(\256llcolor)p
+FB(.)17 b(Other)10 b Fn(\256llstyle)p FB(')m(s)h(are)g(described)g(in)f
+(Section)591 361 y(14.)591 450 y(The)j(graphics)g(objects)h(all)g(have)f(a)h
+(starred)f(version)g(\(e.g.,)h Fn(\\psframe)p FB(*\))e(which)591
+511 y(draws)f(a)h(solid)g(object)h(whose)e(color)h(is)g Fn(linecolor)p
+FB(.)17 b(For)12 b(example,)354 714 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 28.45274 14.22636
+.5 CLW mul dup 3 1 roll sub 3 1 roll sub exch 28.45274 14.22636 Ellipse
+closepath gsave 0. setgray fill grestore end
+
+
+@endspecial 712 665 a Fy(\\psellipse*\(1,.5\)\(1,.5\))591
+845 y FB(Open)f(curves)h(can)g(have)g(arrows,)f(according)i(to)f(the)712
+975 y Fn(arrows=)p Fo(arrows)591 1106 y FB(parameter)m(.)39
+b(If)19 b Fn(arrows=-)p FB(,)f(you)h(get)g(no)g(arrows.)37
+b(If)18 b Fn(arrows=<->)p FB(,)h(you)f(get)591 1166 y(arrows)g(on)h(both)h
+(ends)f(of)g(the)h(curve.)39 b(Y)-5 b(ou)19 b(can)h(also)g(set)f
+Fn(arrows=->)f FB(and)591 1226 y Fn(arrows=<-)p FB(,)e(if)i(you)f(just)g
+(want)h(an)f(arrow)g(on)g(the)h(end)f(or)h(beginning)f(of)g(the)591
+1287 y(curve,)j(respectively)m(.)38 b(W)n(ith)19 b(the)g(open)f(curves,)i
+(you)e(can)h(also)g(specify)f(the)591 1347 y(arrows)e(as)h(an)h(optional)g
+(ar)o(gument)g(enclosed)g(in)g Fy({})f FB(brackets.)34 b(This)17
+b(should)591 1407 y(come)12 b(after)h(the)f(optional)h(parameters)g(ar)o
+(gument.)k(E.g.,)354 1610 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { } def
+[ 56.90549 28.45274 /Lineto /lineto load def false Line gsave 2.0
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+712 1562 a Fy(\\psline[linewidth=2pt]{<-}\(2,1\))591 1741 y
+FB(Other)11 b(arrow)h(styles)g(are)g(described)g(in)g(Section)h(15)591
+1830 y(If)e(you)h(set)g(the)712 1961 y Fr(showpoints=)p Ff(true/false)387
+b FA(Default:)20 b Fr(false)591 2092 y FB(parameter)f(to)g
+Fy(true)p FB(,)h(then)f(most)g(of)g(the)g(graphics)g(objects)g(will)g(put)g
+(dots)f(at)591 2152 y(the)d(appropriate)g(coordinates)g(or)g(control)g
+(points)f(of)h(the)g(object.)1723 2134 y Fj(2)1767 2152 y FB(Section)g(9)591
+2212 y(describes)c(how)h(to)g(change)g(the)h(dot)f(style.)p
+591 2594 544 2 v 646 2625 a Fi(2)662 2640 y Fh(The)e(parameter)f(value)h(is)f
+(stored)h(in)g(the)f(conditional)h Fa(\\ifshowpoints)p Fh(.)591
+2828 y Fv(Basic)f(graphics)g(parameters)896 b(9)p eop
+%%Page: 10 14
+13 bop 291 265 a Fm(II)591 182 y Fs(Basic)23 b(graphics)g(objects)366
+585 y Fl(6)70 b(Lines)20 b(and)h(polygons)591 707 y FB(The)12
+b(objects)g(in)g(this)h(section)f(also)g(use)g(the)g(following)g(parameters:)
+591 837 y Fr(linearc=)p Ff(dim)789 b FA(Default:)20 b Fr(0pt)712
+918 y FB(The)12 b(radius)e(of)h(arcs)g(drawn)f(at)h(the)g(corners)g(of)g
+(lines)g(by)f(the)i Fn(\\psline)f FB(and)712 978 y Fn(\\pspolygon)h
+FB(graphics)g(objects.)18 b Fp(dim)13 b FB(should)e(be)h(positive.)591
+1080 y Fr(framearc=)p Ff(num)772 b FA(Default:)20 b Fr(0)712
+1161 y FB(In)c(the)h Fn(\\psframe)e FB(and)h(the)h(related)g(box)f(framing)g
+(macros,)h(the)g(radius)712 1221 y(of)f(rounded)f(corners)g(is)g(set,)h(by)g
+(default,)h(to)e(one-half)h Fp(num)f FB(times)h(the)712 1281
+y(width)g(or)e(height)i(of)f(the)h(frame,)g(whichever)f(is)g(less.)27
+b Fp(num)15 b FB(should)g(be)712 1342 y(between)e(0)f(and)g(1.)591
+1443 y Fr(cornersize=)p Ff(relative/absolute)306 b FA(Default:)20
+b Fr(relative)712 1524 y FB(If)14 b Fn(cornersize)f FB(is)h
+Fy(relative)p FB(,)g(then)g(the)g Fn(framearc)e FB(parameter)j(determines)712
+1584 y(the)10 b(radius)f(of)f(the)i(rounded)f(corners)f(for)h
+Fn(\\psframe)p FB(,)g(as)f(described)i(above)712 1645 y(\(and)22
+b(hence)f(the)h(radius)f(depends)g(on)g(the)h(size)g(of)f(the)g(frame\).)46
+b(If)712 1705 y Fn(cornersize)13 b FB(is)f Fy(absolute)p FB(,)g(then)h(the)h
+Fn(linearc)e FB(parameter)i(determines)f(the)712 1765 y(radius)g(of)f(the)h
+(rounded)g(corners)f(for)g Fn(\\psframe)g FB(\(and)h(hence)g(the)g(radius)712
+1825 y(is)f(of)g(constant)g(size\).)591 1956 y(Now)e(here)j(are)f(the)g
+(lines)h(and)f(polygons:)591 2087 y Fr(\\psline)p Fd(*[)p Fc(par)p
+Fd(]{)p Fc(arrows)q Fd(}\()p Fc(x0)r Fd(,)p Fc(y0)r Fd(\))p
+Fr(\()p Ff(x1)p Fr(,)p Ff(y1)p Fr(\))q Fb(\274)s Fd(\()p Fc(xn)q
+Fd(,)p Fc(yn)q Fd(\))712 2168 y FB(This)g(draws)g(a)g(line)g(through)g(the)h
+(list)f(of)g(coordinates.)18 b(For)11 b(example:)118 2481 y
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow } def [
+56.90549 0.0 0.0 28.45274 113.81097 56.90549 /r 7.11317 def /Lineto
+{ Arcto } def false Line gsave 2.0 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+
+@endspecial 712 2373 a Fy
+(\\psline[linewidth=2pt,linearc=.25]{->}\(4,2\)\(0,1\)\()o(2,0\))591
+2603 y Fr(\\qline\()p Ff(coor0)p Fr(\)\()p Ff(coor1)p Fr(\))591
+2828 y Fv(Basic)e(graphics)g(objects)945 b(10)p eop
+%%Page: 11 15
+14 bop 712 50 a FB(This)10 b(is)g(a)g(streamlined)h(version)f(of)f
+Fn(\\psline)i FB(that)f(does)g(not)g(pay)f(attention)712 110
+y(to)20 b(the)f Fn(arrows)f FB(parameter)n(,)k(and)d(that)h(can)f(only)g
+(draw)g(a)g(single)g(line)712 170 y(segment.)24 b(Note)14 b(that)g(both)g
+(coordinates)g(are)h(obligatory)m(,)g(and)e(there)i(is)712
+230 y(no)j(optional)h(ar)o(gument)f(for)g(setting)g(parameters)h(\(use)e
+Fn(\\psset)g FB(if)h(you)712 291 y(need)13 b(to)f(change)g(the)h
+Fn(linewidth)p FB(,)f(or)f(whatever\).)18 b(For)11 b(example:)354
+467 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 56.90549 28.45274 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 moveto 56.90549
+28.45274 L 0 setlinecap stroke end
+
+@endspecial 712 419 a Fy(\\qline\(0,0\)\(2,1\))591
+572 y Fr(\\pspolygon)p Fd(*[)p Fc(par)p Fd(]\()p Fc(x0)r Fd(,)p
+Fc(y0)r Fd(\))p Fr(\()p Ff(x1)p Fr(,)p Ff(y1)p Fr(\)\()p Ff(x2)t
+Fr(,)p Ff(y2)t Fr(\))q Fb(\274)r Fd(\()p Fc(xn)q Fd(,)p Fc(yn)q
+Fd(\))712 650 y FB(This)f(is)g(similar)h(to)f Fn(\\psline)p
+FB(,)h(but)f(it)h(draws)e(a)h(closed)g(path.)17 b(For)10 b(example:)118
+945 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray [ 28.45274 56.90549
+0.0 56.90549 /Lineto /lineto load def false Polygon gsave 1.5 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0.25 setgray [ 113.81097 56.90549
+113.81097 0.0 28.45274 56.90549 28.45274 0.0 /r 5.69046 def /Lineto
+{ Arcto } def false Polygon gsave 0.25 setgray fill grestore end
+
+@endspecial
+712 807 a Fy(\\pspolygon[linewidth=1.5pt]\(0,2\)\(1,2\))712
+868 y(\\pspolygon*[linearc=.2,linecolor=darkgray]\(1,0\)\(1)o(,2\)\(4)o
+(,0\)\(4)o(,2\))591 1049 y Fr(\\psframe)p Fd(*[)p Fc(par)p
+Fd(]\()p Fc(x0)r Fd(,)p Fc(y0)r Fd(\))p Fr(\()p Ff(x1)p Fr(,)p
+Ff(y1)p Fr(\))712 1128 y Fn(\\psframe)19 b FB(draws)f(a)h(rectangle)i(with)e
+(opposing)f(corners)h Fy(\()p Fp(x0)r Fy(,)t Fp(y0)r Fy(\))g
+FB(and)712 1188 y Fy(\()p Fp(x1)p Fy(,)t Fp(y1)p Fy(\))p FB(.)f(For)11
+b(example:)118 1483 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray 0.3 true 0.0 0.0 113.81097
+56.90549 .5 Frame gsave 0.75 setgray fill grestore gsave 2.0 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 28.45274 14.22636
+56.90549 42.67911 .5 Frame gsave 1. setgray fill grestore end
+
+
+@endspecial 712 1315 a Fy
+(\\psframe[linewidth=2pt,framearc=.3,\256llstyle=solid,)758
+1375 y(\256llcolor=lightgray]\(4,2\))712 1435 y
+(\\psframe*[linecolor=white]\(1,.5\)\(2,1.5\))366 1675 y Fl(7)70
+b(Arcs,)21 b(circles)f(and)g(ellipses)591 1785 y Fr(\\pscircle)p
+Fd(*[)p Fc(par)p Fd(]\()p Fc(x0)r Fd(,)p Fc(y0)r Fd(\))p Fr({)p
+Ff(radius)r Fr(})712 1864 y FB(This)13 b(draws)f(a)h(circle)g(whose)f(center)
+h(is)g(at)g Fy(\()p Fp(x0)r Fy(,)t Fp(y0)r Fy(\))f FB(and)g(that)i(has)e
+(radius)712 1924 y Fp(radius)q FB(.)17 b(For)11 b(example:)354
+2219 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+-28.45274 -28.45274 56.90549 56.90549 -28.45274 -28.45274 28.45274
+28.45274 1 10 { 0. setgray } 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray 14.22636 14.22636 42.67911
+.5 CLW mul sub 0 360 arc closepath gsave 2.0 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 712 2170 a Fy
+(\\pscircle[linewidth=2pt]\(.5,.5\){1.5})591 2441 y Fr(\\qdisk\()p
+Ff(coor)p Fr(\){)p Ff(radius)r Fr(})712 2520 y FB(This)19 b(is)g(a)g
+(streamlined)h(version)e(of)h Fn(\\pscircle*)p FB(.)37 b(Note)18
+b(that)i(the)f(two)712 2580 y(ar)o(guments)d(are)f(obligatory)g(and)g(there)h
+(is)e(no)h(parameters)h(ar)o(guments.)712 2640 y(T)m(o)c(change)h(the)f
+(color)g(of)g(the)g(disks,)g(you)f(have)i(to)f(use)f Fn(\\psset)p
+FB(:)591 2828 y Fv(Arcs,)f(circles)g(and)f(ellipses)911 b(1)m(1)p
+eop
+%%Page: 12 16
+15 bop 343 404 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0.5 setgray 56.90549 85.35823 4.0
+SD end
+
+@endspecial 712
+30 a Fy(\\psset{linecolor=gray})712 90 y(\\qdisk\(2,3\){4pt})591
+213 y Fr(\\pswedge)p Fd(*[)p Fc(par)p Fd(]\()p Fc(x0)r Fd(,)p
+Fc(y0)r Fd(\))p Fr({)p Ff(radius)r Fr(}{)p Ff(angle1)p Fr(}{)p
+Ff(angle2)t Fr(})712 292 y FB(This)18 b(draws)e(a)h(wedge)g(whose)f(center)i
+(is)f(at)h Fy(\()p Fp(x0)r Fy(,)t Fp(y0)r Fy(\))p FB(,)f(that)h(has)f(radius)
+712 352 y Fp(radius)q FB(,)12 b(and)h(that)g(extends)g(counterclockwise)g
+(from)g Fp(angle1)e FB(to)i Fp(angle2)s FB(.)712 413 y(The)g(angles)f(must)g
+(be)g(speci\256ed)g(in)g(degrees.)17 b(For)12 b(example:)354
+717 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 56.90549 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0.5 setgray 0.0 0.0 2 copy moveto
+56.90549 .5 CLW mul sub 0. 70. arc closepath gsave 1. setgray fill
+ grestore gsave 2.0 SLW 0.5 setgray 0 setlinecap stroke grestore end
+
+@endspecial 712 609 a Fy(\\pswedge[linecolor=gray)m
+(,linewidth=2pt,\256llstyle=solid]{2}{0}{70})591 830 y Fr(\\psellipse)p
+Fd(*[)p Fc(par)p Fd(]\()p Fc(x0)r Fd(,)p Fc(y0)r Fd(\))p Fr(\()p
+Ff(x1)p Fr(,)p Ff(y1)p Fr(\))712 910 y Fy(\()p Fp(x0)r Fy(,)t
+Fp(y0)r Fy(\))e FB(is)f(the)h(center)h(of)e(the)i(ellipse,)g(and)e
+Fp(x1)h FB(and)g Fp(y1)g FB(are)g(the)g(horizontal)712 970
+y(and)i(vertical)i(radii,)e(respectively)m(.)19 b(For)11 b(example:)354
+1156 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+-28.45274 -42.67911 56.90549 28.45274 -28.45274 -42.67911 28.45274
+28.45274 1 10 { 0. setgray } 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 42.67911 28.45274
+.5 CLW mul dup 3 1 roll sub 3 1 roll sub exch 14.22636 0.0 Ellipse
+closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 712 1196 a Fy
+(\\psellipse[\256llcolor=lightgray]\(.5,0\)\(1.5,1\))591 1446
+y Fr(\\psarc)p Fd(*[)p Fc(par)p Fd(]{)p Fc(arrows)q Fd(}\()p
+Fc(x)t Fd(,)t Fc(y)t Fd(\))p Fr({)p Ff(radius)r Fr(}{)p Ff(angleA)p
+Fr(}{)p Ff(angleB)r Fr(})712 1526 y FB(This)d(draws)g(an)g(arc)g(from)g
+Fp(angleA)f FB(to)h Fp(angleB)r FB(,)f(going)h(counter)h(clockwise,)712
+1586 y(for)f(a)h(circle)g(of)f(radius)g Fp(radius)g FB(and)g(centered)h(at)g
+Fy(\()p Fp(x)s Fy(,)t Fp(y)t Fy(\))p FB(.)16 b(Y)-5 b(ou)8
+b(must)g(include)712 1646 y(either)13 b(the)g(arrows)e(ar)o(gument)i(or)e
+(the)i Fy(\()p Fp(x)s Fy(,)t Fp(y)t Fy(\))f FB(ar)o(gument.)18
+b(For)12 b(example:)236 1950 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 85.35823 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 42.67911 42.67911 /y ED /x ED /r 42.67911 def /c 57.2957
+r Div def /angleA 215. 0.0 c mul 2 div add def /angleB 0. 0.0 c mul
+2 div sub def gsave newpath x y moveto x y r 215. 0. arc closepath
+CLW 2 div SLW [ 5.0 3.0 ] 0 setdash stroke grestore x y r angleA angleB
+arc gsave 0. setgray fill grestore end
+
+@endspecial 712 1843 a Fy
+(\\psarc*[showpoints=true]\(1.5,1.5\){1.5}{215}{0})712 2064
+y FB(See)g(how)e Fn(showpoints=true)f FB(draws)i(a)g(dashed)g(line)h(from)f
+(the)h(center)g(to)712 2124 y(the)h(arc;)g(this)f(is)f(useful)h(when)g
+(composing)g(pictures.)712 2204 y Fn(\\psarc)g FB(also)g(uses)f(the)h
+(parameters:)712 2303 y Fr(arcsepA=)p Ff(dim)634 b FA(Default:)20
+b Fr(0pt)820 2372 y Fp(angleA)12 b FB(is)g(adjusted)h(so)f(that)i(the)f(arc)g
+(would)f(just)h(touch)g(a)g(line)g(of)820 2432 y(width)k Fp(dim)h
+FB(that)f(extended)h(from)f(the)h(center)g(of)f(the)g(arc)h(in)f(the)820
+2492 y(direction)c(of)f Fp(angleA)p FB(.)712 2571 y Fr(arcsepB=)p
+Ff(dim)634 b FA(Default:)20 b Fr(0pt)820 2640 y FB(This)12
+b(is)g(like)g Fn(arcsepA)p FB(,)f(but)h Fp(angleB)h FB(is)f(adjusted.)591
+2828 y Fv(Arcs,)e(circles)g(and)f(ellipses)908 b(12)p eop
+%%Page: 13 17
+16 bop 712 50 a Fr(arcsep=)p Ff(dim)716 b FA(Default:)20 b
+Fr(0)820 120 y FB(This)12 b(just)g(sets)g(both)f Fn(arcsepA)h
+FB(and)g Fn(arcsepB)p FB(.)712 222 y(These)g(parameters)g(make)f(it)h(easy)f
+(to)g(draw)g(two)f(intersecting)i(lines)g(and)712 282 y(then)j(use)e
+Fn(\\psarc)g FB(with)h(arrows)f(to)h(indicate)h(the)f(angle)g(between)g
+(them.)712 342 y(For)e(example:)118 774 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 113.81097 10. PtoC 0.0 0.0 113.81097 50. PtoC /Lineto
+/lineto load def false Line gsave 2.0 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow } def 0.0
+0.0 /y ED /x ED /r 85.35823 def /c 57.2957 r Div def /angleA 10. 0.0
+c mul 2 div add def /angleB 50. 2.0 c mul 2 div sub def x y r angleA
+angleB { ArrowB } { sub } ArcArrow arc gsave 0.8 SLW 0. setgray 0
+setlinecap stroke grestore end
+
+@endspecial 712 547 a Fy(\\SpecialCoor)712 607
+y(\\psline[linewidth=2pt]\(4;50\)\(0,0\)\(4;10\))712 667 y
+(\\psarc[arcsepB=2pt]{->}{3}{10}{50)o(})591 896 y Fr(\\psarcn)p
+Fd(*[)p Fc(par)p Fd(]{)p Fc(arrows)q Fd(}\()p Fc(x)t Fd(,)t
+Fc(y)t Fd(\))p Fr({)p Ff(radius)r Fr(}{)p Ff(angleA)p Fr(}{)p
+Ff(angleB)r Fr(})712 977 y FB(This)21 b(is)f(like)g Fn(\\psarc)p
+FB(,)i(but)e(the)g(arc)h(is)f(drawn)f Fz(clockwise)p FB(.)43
+b(Y)-5 b(ou)19 b(can)712 1037 y(achieve)i(the)e(same)g(ef)o(fect)i(using)d
+Fn(\\psarc)h FB(by)f(switching)i Fp(angleA)e FB(and)712 1097
+y Fp(angleB)13 b FB(and)f(the)h(arrows.)1148 1079 y Fj(3)366
+1294 y Fl(8)70 b(Curves)591 1408 y Fr(\\psbezier)p Fd(*[)p
+Fc(par)p Fd(]{)p Fc(arrows)q Fd(}\()p Fc(x0)r Fd(,)p Fc(y0)r
+Fd(\))p Fr(\()p Ff(x1)p Fr(,)p Ff(y1)p Fr(\)\()p Ff(x2)t Fr(,)p
+Ff(y2)t Fr(\)\()p Ff(x3)s Fr(,)p Ff(y3)s Fr(\))712 1488 y Fn(\\psbezier)14
+b FB(draws)e(a)h(bezier)h(curve)g(with)f(the)g(four)g(control)h(points.)20
+b(The)712 1549 y(curve)14 b(starts)f(at)g(the)h(\256rst)e(coordinate,)i
+(tangent)g(to)f(the)g(line)h(connecting)712 1609 y(to)e(the)f(second)g
+(coordinate.)17 b(It)11 b(ends)g(at)g(the)h(last)f(coordinate,)h(tangent)g
+(to)712 1669 y(the)h(line)g(connecting)h(to)e(the)h(third)g(coordinate.)19
+b(The)13 b(second)f(and)g(third)712 1729 y(coordinates,)h(in)f(addition)g(to)
+g(determining)h(the)f(tangency)h(of)e(the)i(curve)712 1789
+y(at)j(the)f(endpoints,)g(also)g(\252pull\272)h(the)f(curve)g(towards)f
+(themselves.)26 b(For)712 1850 y(example:)118 2399 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow } def gsave
+0.0 0.0 28.45274 113.81097 56.90549 28.45274 113.81097 99.5846 newpath
+moveto L L L CLW 2 div SLW [ 5.0 3.0 ] 0 setdash stroke grestore /Points
+[0.0 0.0 28.45274 113.81097 56.90549 28.45274 113.81097 99.5846 ] def
+ 28.45274 113.81097 0.0 0.0 ArrowA 56.90549 28.45274 113.81097 99.5846
+ArrowB curveto gsave 2.0 SLW 0. setgray 0 setlinecap stroke grestore
+gsave /DS 0.5 2.5 CLW mul add 2 div def /Dot { 0 0 DS SD } def /TheDot
+{ gsave T Dot grestore } def newpath Points aload length 2 div 2 sub
+cvi /N ED N 0 ge { TheDot N { TheDot } repeat pop pop } { N 2 mul {
+pop } repeat } ifelse grestore end
+
+@endspecial 712 2173 a Fy
+(\\psbezier[linewidth=2pt,showpoints=true]{->}\(0,0\)\(1,4\)\(2)o(,1\)\(4)o
+(,3.5\))p 591 2433 544 2 v 646 2463 a Fi(3)662 2478 y Fh(However)n(,)14
+b(with)f Fg(\\pscustom)h Fh(graphics)e(object,)i(described)e(in)i(Part)f(IV,)
+h Fg(\\psarcn)g Fh(is)f(not)591 2528 y(redundant.)591 2828
+y Fv(Curves)1197 b(13)p eop
+%%Page: 14 18
+17 bop 712 50 a Fn(showpoints=true)10 b FB(puts)h(dots)h(in)g(all)g(the)g
+(control)g(points,)g(and)f(connects)712 110 y(them)h(by)f(dashed)f(lines,)i
+(which)e(is)h(useful)g(when)f(adjusting)h(your)g(bezier)712
+170 y(curve.)591 272 y Fr(\\parabola)p Fd(*[)p Fc(par)p Fd(]{)p
+Fc(arrows)q Fd(})p Fr(\()p Ff(x0)s Fr(,)t Ff(y0)s Fr(\)\()p
+Ff(x1)p Fr(,)t Ff(y1)q Fr(\))712 353 y FB(Starting)25 b(at)f
+Fy(\()p Fp(x0)r Fy(,)t Fp(y0)r Fy(\))p FB(,)i Fn(\\parabola)e
+FB(draws)e(the)j(parabola)f(that)h(passes)712 413 y(through)11
+b Fy(\()p Fp(x0)r Fy(,)t Fp(y0)r Fy(\))g FB(and)g(whose)f(maximum)i(or)f
+(minimum)h(is)f Fy(\()p Fp(x1)p Fy(,)t Fp(y1)p Fy(\))p FB(.)16
+b(For)712 473 y(example:)118 904 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 28.45274 28.45274 56.90549 85.35823 Parab gsave 0.
+setgray fill grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def 113.74512 85.35823 56.87256
+0.0 Parab gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 712 677 a Fy(\\parabola*\(1,1\)\(2,3\))712
+738 y(\\psset{xunit=.01})712 798 y(\\parabola{<->}\(40)o(0,3\)\()o(200,0\))
+591 1048 y FB(The)k(next)g(three)g(graphics)g(objects)g(interpolate)h(an)f
+(open)g(or)g(closed)g(curve)591 1108 y(through)11 b(the)i(given)f(points.)17
+b(The)c(curve)f(at)h(each)f(interior)h(point)f(is)g(perpendic-)591
+1168 y(ular)i(to)g(the)g(line)h(bisecting)g(the)f(angle)h(ABC,)e(where)h(B)g
+(is)f(the)i(interior)g(point,)591 1228 y(and)f(A)g(and)g(C)g(are)h(the)g
+(neighboring)f(points.)24 b(Scaling)15 b(the)f(coordinates)h
+Fz(does)591 1288 y(not)d FB(cause)g(the)g(curve)g(to)h(scale)f
+(proportionately)m(.)591 1378 y(The)g(curvature)g(is)g(controlled)h(by)f(the)
+g(following)g(parameter:)591 1508 y Fr(curvature=)p Ff(num1)i(num2)f(num3)344
+b FA(Default:)20 b Fr(1)14 b(.1)g(0)712 1589 y FB(Y)-5 b(ou)19
+b(have)h(to)g(just)f(play)h(around)f(with)g(this)h(parameter)g(to)g(get)g
+(what)712 1649 y(you)15 b(want.)25 b(Individual)15 b(values)f(outside)h(the)g
+(range)g(-1)f(to)h(1)f(are)h(either)712 1710 y(ignored)c(or)g(are)g(for)g
+(entertainment)i(only)m(.)k(Below)10 b(is)h(an)g(explanation)h(of)712
+1770 y(what)k(each)g(number)f(does.)28 b(A,)15 b(B)g(and)g(C)h(refer)f(to)h
+(three)g(consecutive)712 1830 y(points.)712 1911 y(Lower)c(values)g(of)g
+Fp(num1)f FB(make)i(the)f(curve)g(tighter)m(.)712 1992 y(Lower)h(values)g(of)
+f Fp(num2)i FB(tighten)g(the)f(curve)g(where)f(the)h(angle)g(ABC)f(is)712
+2052 y(greater)h(than)f(45)g(degrees,)g(and)g(loosen)g(the)g(curve)h
+(elsewhere.)712 2133 y Fp(num3)19 b FB(determines)f(the)g(slope)f(at)h(each)g
+(point.)34 b(If)17 b Fp(num3)r FB(=0,)h(then)f(the)712 2193
+y(curve)c(is)f(perpendicular)i(at)e(B)h(to)f(the)h(bisection)g(of)f(ABC.)g
+(If)g Fp(num3)r FB(=-1,)712 2253 y(then)g(the)f(curve)g(at)g(B)g(is)f
+(parallel)i(to)f(the)h(line)f(AC.)f(W)n(ith)i(this)f(value)g(\(and)712
+2314 y(only)h(this)f(value\),)h(scaling)g(the)g(coordinates)g(causes)f(the)h
+(curve)g(to)f(scale)712 2374 y(proportionately)m(.)31 b(However)n(,)17
+b(positive)f(values)h(can)f(look)h(better)g(with)712 2434 y(irregularly)11
+b(spaced)f(coordinates.)17 b(V)-5 b(alues)10 b(less)f(than)h(-1)g(or)g
+(greater)g(than)712 2494 y(2)i(are)h(converted)f(to)g(-1)g(and)g(2,)g
+(respectively)m(.)591 2625 y(Here)f(are)i(the)f(three)h(curve)f
+(interpolation)h(macros:)591 2828 y Fv(Curves)1197 b(14)p eop
+%%Page: 15 19
+18 bop 591 50 a Fr(\\pscurve)p Fd(*[)p Fc(par)p Fd(]{)p Fc(arrows)q
+Fd(})p Fr(\()p Ff(x1)p Fr(,)t Ff(y1)p Fr(\))r Fb(\274)t Fd(\()p
+Fc(xn)q Fd(,)t Fc(yn)q Fd(\))712 131 y FB(This)12 b(interpolates)g(an)f(open)
+g(curve)h(through)f(the)g(points.)17 b(For)11 b(example:)118
+444 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 56.90549 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 11.38092 11.38092 113.81097
+45.52455 93.89413 14.22636 19.91682 51.21501 0.0 36.98865 1. 0.1 0.
+ /c ED /b ED /a ED true OpenCurve gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore gsave /DS 0.5 2.5 CLW mul add 2 div def /Dot { 0 0
+DS SD } def /TheDot { gsave T Dot grestore } def newpath Points aload
+length 2 div 2 sub cvi /N ED N 0 ge { pop pop N { TheDot } repeat pop
+pop } { N 2 mul { pop } repeat } ifelse grestore end
+
+@endspecial 712 306 a Fy
+(\\pscurve[showpoints=true]{<->}\(0,1.3\)\(0.7,1.8\))758 366
+y(\(3.3,0.5\)\(4,1.6\)\(0.4,0.4\))712 566 y FB(Note)f(the)h(use)e(of)h
+Fn(showpoints=true)e FB(to)i(see)g(the)g(points.)17 b(This)10
+b(is)f(helpful)712 626 y(when)j(constructing)g(a)h(curve.)591
+728 y Fr(\\psecurve)p Fd(*[)p Fc(par)p Fd(]{)p Fc(arrows)q
+Fd(})p Fr(\()p Ff(x1)p Fr(,)t Ff(y1)p Fr(\))r Fb(\274)t Fd(\()p
+Fc(xn)q Fd(,)t Fc(yn)q Fd(\))p Fr(])712 809 y FB(This)e(is)f(like)i
+Fn(\\pscurve)p FB(,)e(but)g(the)h(curve)g(is)f(not)h(extended)g(to)g(the)g
+(\256rst)f(and)712 869 y(last)15 b(points.)22 b(This)14 b(gets)f(around)h
+(the)g(problem)g(of)g(trying)g(to)g(determine)712 929 y(how)k(the)g(curve)g
+(should)f(join)h(the)g(\256rst)f(and)h(last)g(points.)35 b(The)18
+b Fy(e)f FB(has)712 990 y(something)c(to)f(do)g(with)g(\252endpoints\272.)17
+b(For)12 b(example:)118 1539 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 -25.60728 113.81097 113.81097 0.0 -25.60728 28.45274 28.45274 1
+10 { 0. setgray } 7.0 Grid grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 227.62195 3.55658 113.81097 7.11317 56.90549 14.22636
+28.45274 28.45274 14.22636 56.90549 7.11317 113.81097 3.55658 227.62195
+ 1. 0.1 0. /c ED /b ED /a ED true AltCurve gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore gsave /DS 0.5 2.5 CLW mul add 2 div def
+/Dot { 0 0 DS SD } def /TheDot { gsave T Dot grestore } def newpath
+Points aload length 2 div 2 sub cvi /N ED N 0 ge { TheDot N { TheDot
+} repeat TheDot } { N 2 mul { pop } repeat } ifelse grestore end
+
+@endspecial 712 1336 a Fy
+(\\psecurve[showpoints=true]\(.125,8\)\(.25,4\)\(.5,2\))758
+1396 y(\(1,1\)\(2,.5\)\(4,.25\)\(8,.125)o(\))591 1768 y Fr(\\psccurve)p
+Fd(*[)p Fc(par)p Fd(]{)p Fc(arrows)q Fd(})p Fr(\()p Ff(x1)p
+Fr(,)t Ff(y1)p Fr(\))r Fb(\274)t Fd(\()p Fc(xn)q Fd(,)t Fc(yn)q
+Fd(\))712 1848 y FB(This)i(interpolates)h(a)f(closed)g(curve)g(through)g(the)
+g(points.)23 b Fy(c)14 b FB(stands)f(for)712 1909 y(\252closed\272.)18
+b(For)12 b(example:)118 2104 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 28.45274 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 14.22636 28.45274
+99.5846 0.0 99.5846 28.45274 14.22636 0.0 1. 0.1 0. /c ED /b ED /a
+ED true ClosedCurve gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore Points aload length 2 div cvi /N ED /DS 0.5 2.5 CLW mul add
+2 div def /Dot { 0 0 DS SD } def newpath n { gsave T Dot grestore }
+repeat end
+
+@endspecial 712 2025 a Fy
+(\\psccurve[showpoints=true])758 2085 y(\(.5,0\)\(3.5,1\)\(3.5,0\)\(.5,1\))
+366 2301 y Fl(9)70 b(Dots)591 2422 y FB(The)12 b(graphics)g(object)712
+2567 y Fr(\\psdots)p Fd(*[)p Fc(par)5 b Fd(])p Fr(\()p Ff(x1)p
+Fr(,)p Ff(y1)p Fr(\))p Fd(\()p Fc(x2)s Fd(,)p Fc(y2)s Fd(\))q
+Fb(\274)s Fd(\()p Fc(xn)q Fd(,)p Fc(yn)q Fd(\))591 2828 y Fv(Dots)1239
+b(15)p eop
+%%Page: 16 20
+19 bop 591 50 a FB(puts)13 b(a)g(dot)g(at)h(each)g(coordinate.)22
+b(What)14 b(a)f(\252dot\272)h(is)f(depends)g(on)g(the)h(value)g(of)591
+110 y(the)712 215 y Fr(dotstyle=)p Ff(style)671 b FA(Default:)20
+b Fr(*)591 319 y FB(parameter)m(.)d(This)7 b(also)g(determines)g(the)g(dots)g
+(you)g(get)g(when)g Fn(showpoints=true)p FB(.)591 380 y(The)12
+b(dot)g(styles)g(are)g(also)g(pretty)h(intuitive:)761 489 y
+Fz(Style)79 b(Example)799 570 y Fy(*)117 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /Dot { 0 0 DS SD } def newpath n { gsave
+T Dot grestore } repeat end
+
+
+@endspecial 796 642 a(o)c @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r2 DS CLW sub def /Dot { 0 0 DS SD 1.
+setgray 0 0 r2 SD } def newpath n { gsave T Dot grestore } repeat end
+
+@endspecial
+795 714 a(+)g @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /DS DS 1.253 mul def /Dot { DS 0 moveto
+DS neg 0 L stroke 0 DS moveto 0 DS neg L stroke } def newpath n { gsave
+T Dot grestore } repeat end
+
+@endspecial 740 786
+a(triangle)57 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /y1 DS .778 mul neg def /x1 y1 1.732
+mul neg def /y2 y1 CLW add def /x2 y2 1.732 mul neg def /Dot { x1 y1
+ST 1. setgray x2 y2 ST } def newpath n { gsave T Dot grestore } repeat
+end
+
+@endspecial 732
+858 a(triangle*)49 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /y1 DS .778 mul neg def /x1 y1 1.732
+mul neg def /Dot { x1 y1 ST } def newpath n { gsave T Dot grestore
+} repeat end
+
+@endspecial
+1381 489 a Fz(Style)98 b(Example)1365 570 y Fy(square)80 b
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r1 DS .886 mul def /r2 r1 CLW sub def
+/Dot { r1 SQ 1. setgray r2 SQ } def newpath n { gsave T Dot grestore
+} repeat end
+
+@endspecial 1358 642 a(square*)71
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r1 DS .886 mul def /Dot { r1 SQ } def
+newpath n { gsave T Dot grestore } repeat end
+
+@endspecial 1343 714 a(pentagon)56
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def DS .93 mul dup 1.236 mul /r1 ED CLW sub
+1.236 mul /r2 ED /Dot { r1 SP 1. setgray r2 SP } def newpath n { gsave
+T Dot grestore } repeat end
+
+@endspecial 1335 786 a(pentagon*)48
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def /r1 DS 1.149 mul def /Dot { r1 SP } def
+newpath n { gsave T Dot grestore } repeat end
+
+@endspecial 1423 858 a(|)137 b
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 54.06003 5.161 41.25638
+5.161 28.45274 5.161 15.6491 5.161 2.84544 5.161 false NArray /DS
+0.5 2.5 CLW mul add 2 div def 2.0 5. CLW mul add 2 div /DS ED /Dot
+{ 0 DS moveto 0 DS neg L stroke } def newpath n { gsave T Dot grestore
+} repeat end
+
+@endspecial 591 961 a FB(As)11 b(with)h(arrows,)f
+(there)h(is)g(a)g(parameter)h(for)f(scaling)h(the)f(dots:)712
+1066 y Fr(dotscale=)p Ff(num1)i(num2)487 b FA(Default:)20 b
+Fr(1)591 1170 y FB(The)d(dots)f(are)h(scaled)h(horizontally)f(by)g
+Fp(num1)f FB(and)h(vertically)h(by)f Fp(num2)s FB(.)30 b(If)591
+1231 y(you)15 b(only)h(include)g(one)g(number)n(,)h(the)f(arrows)f(are)h
+(scaled)h(the)f(same)g(in)g(both)591 1291 y(directions.)591
+1376 y(There)c(is)g(also)g(a)g(parameter)h(for)f(rotating)h(the)f(dots:)712
+1481 y Fr(dotangle=)p Ff(angle)629 b FA(Default:)20 b Fr(0)591
+1586 y FB(Thus,)15 b(e.g.,)h(by)f(setting)h Fn(dotangle=45)p
+FB(,)e(the)i Fy(+)f Fn(dotstyle)e FB(gives)i(you)g(an)g Fy(x)p
+FB(,)i(and)591 1646 y(the)f Fy(square)f Fn(dotstyle)g FB(gives)i(you)f(a)g
+(diamond.)31 b(Note)16 b(that)h(the)g(dots)f(are)g(\256rst)591
+1706 y(scaled)c(and)g(then)g(rotated.)591 1791 y(The)7 b(unscaled)g(size)g
+(of)g(the)1030 1780 y Fz(\310)1039 1791 y FB(|)g(dot)g(style)h(is)f(controll)
+q(ed)g(by)g(the)h Fn(tbarsize)i FB(parameter)n(,)591 1852 y(and)16
+b(the)h(unscaled)f(size)h(of)f(the)g(remaining)i(dot)e(styles)g(is)g
+(controlled)h(by)f(the)591 1912 y Fn(dotsize)p FB(.)24 b(These)14
+b(are)h(described)f(in)h(Section)g(15.)24 b(The)14 b(radius)h(as)f
+(determined)591 1972 y(by)e(the)h(value)h(of)e Fn(dotsize)h
+FB(is)f(the)i(radius)e(of)h(solid)g(or)f(open)h(circles.)20
+b(The)14 b(other)591 2032 y(types)d(of)h(dots)g(are)g(of)g(similar)h(size.)
+1200 2014 y Fj(4)591 2118 y FB(The)18 b(dot)f(sizes)h(are)g(allowed)g(to)g
+(depend)g(on)f(the)h Fn(linewidth)g FB(because)g(of)f(the)591
+2178 y Fn(showpoints)6 b FB(parameter)h(.)17 b(However)n(,)8
+b(you)f(can)g(set)g(the)g(dot)g(sizes)g(to)g(an)g(a)q(bsolute)591
+2238 y(dimension)13 b(by)g(setting)h(the)g(second)f(number)g(in)g(the)h
+Fn(dotsize)f FB(parameter)i(to)e(0.)591 2298 y(E.g.,)712 2403
+y Fy(\\psset{dotsize=3pt)24 b(0})591 2508 y FB(sets)11 b(the)i(size)f(of)g
+(the)g(dots)g(to)g Fy(3pt)p FB(,)g(independent)g(of)g(the)h(value)f(of)g
+Fn(linewidth)p FB(.)p 591 2545 544 2 v 646 2575 a Fi(4)662
+2590 y Fh(The)f(polygons)f(are)g(sized)g(to)h(have)f(the)g(same)g(area)g(as)g
+(the)h(circles.)16 b(A)10 b(diamond)g(is)h(just)f(a)591 2640
+y(rotated)f(square.)591 2828 y Fv(Dots)1239 b(16)p eop
+%%Page: 17 21
+20 bop 366 53 a Fl(10)71 b(Grids)591 173 y FB(PST)n(ricks)11
+b(has)h(a)g(powerful)g(macro)g(for)g(making)g(grids)g(and)g(graph)g(paper:)
+712 308 y Fr(\\psgrid)p Fd(\()p Fc(x0)r Fd(,)p Fc(y0)r Fd(\)\()p
+Fc(x1)p Fd(,)p Fc(y1)p Fd(\)\()p Fc(x2)s Fd(,)p Fc(y2)s Fd(\))591
+428 y Fn(\\psgrid)17 b FB(draws)g(a)g(grid)h(with)f(opposing)g(corners)g
+Fy(\()p Fp(x1)p Fy(,)t Fp(y1)p Fy(\))g FB(and)h Fy(\()p Fp(x2)s
+Fy(,)t Fp(y2)s Fy(\))p FB(.)32 b(The)591 488 y(intervals)13
+b(are)g(numbered,)g(with)f(the)h(numbers)g(positioned)f(at)h
+Fp(x0)i FB(and)e Fp(y0)r FB(.)18 b(The)591 549 y(coordinates)12
+b(are)g(always)g(interpreted)h(as)f(Cartesian)g(coordinates.)18
+b(For)11 b(exam-)591 609 y(ple:)236 920 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.4 SLW 0.5 setgray
+-28.45274 -28.45274 85.35823 56.90549 0.0 0.0 28.45274 28.45274 5 0
+{} 0 Grid grestore gsave 0.8 SLW 0. setgray -28.45274 -28.45274 85.35823
+56.90549 0.0 0.0 28.45274 28.45274 1 0 { 0. setgray } 10.0 Grid grestore
+end
+
+
+@endspecial 712 871 a Fy(\\psgrid\(0,0\)\(-1,-1\)\(3,2\))591
+1158 y FB(\(Note)h(that)i(the)f(coordinates)h(and)f(label)g(positioning)g
+(work)g(the)g(same)g(as)g(with)591 1218 y Fn(\\psaxes)p FB(.\))591
+1306 y(The)e(main)g(grid)g(divisions)g(occur)g(on)g(multiples)h(of)e
+Fn(xunit)h FB(and)g Fn(yunit)p FB(.)16 b(Subdivi-)591 1366
+y(sions)10 b(are)i(allowed)f(as)g(well.)18 b(Generally)m(,)11
+b(the)h(coordinates)f(would)g(be)h(given)f(as)591 1427 y(integers,)h(without)
+g(units.)591 1514 y(If)18 b(the)g Fy(\()p Fp(x0)r Fy(,)t Fp(y0)r
+Fy(\))g FB(coordinate)h(is)f(omitted,)j Fy(\()p Fp(x1)p Fy(,)t
+Fp(y1)p Fy(\))d FB(is)h(used.)35 b(The)19 b(default)g(for)591
+1575 y Fy(\()p Fp(x1)p Fy(,)t Fp(y1)p Fy(\))11 b FB(is)g Fy(\(0,0\))p
+FB(.)16 b(If)11 b(you)g(don')o(t)h(give)f(any)h(coordinates)f(at)h(all,)g
+(then)g(the)g(coordi-)591 1635 y(nates)h(of)f(the)i(current)f
+Fn(\\pspicture)f FB(environment)h(are)h(used)e(or)h(a)g(10x10)f(grid)h(is)591
+1695 y(drawn.)20 b(Thus,)13 b(you)g(can)h(include)g(a)g Fn(\\psgrid)f
+FB(command)h(without)f(coordinates)591 1755 y(in)18 b(a)g Fn(\\pspicture)f
+FB(environment)h(to)h(get)f(a)g(grid)g(that)h(will)f(help)g(you)g(position)
+591 1815 y(objects)12 b(in)g(the)h(picture.)591 1903 y(The)f(main)g(grid)g
+(divisions)f(are)i(numbered,)f(with)f(the)i(numbers)e(drawn)g(next)i(to)591
+1963 y(the)g(vertical)i(line)f(at)g Fp(x0)h FB(\(away)e(from)h
+Fp(x2)s FB(\))f(and)g(next)h(to)f(the)h(horizontal)g(line)g(at)591
+2023 y Fp(x1)i FB(\(away)h(from)f Fp(y2)s FB(\).)31 b Fy(\()p
+Fp(x1)p Fy(,)t Fp(y1)p Fy(\))17 b FB(can)g(be)f(any)h(corner)g(of)f(the)h
+(grid,)h(as)e(long)h(as)591 2084 y Fy(\()p Fp(x2)s Fy(,)t Fp(y2)s
+Fy(\))c FB(is)h(the)g(opposing)g(corner)n(,)h(you)f(can)g(position)g(the)h
+(labels)g(on)f(any)g(side)591 2144 y(you)d(want.)17 b(For)12
+b(example,)h(compare)118 2337 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.4 SLW 0.5 setgray
+0.0 0.0 113.81097 28.45274 0.0 0.0 28.45274 28.45274 5 0 {} 0 Grid
+grestore gsave 0.8 SLW 0. setgray 0.0 0.0 113.81097 28.45274 0.0 0.0
+28.45274 28.45274 1 0 { 0. setgray } 10.0 Grid grestore end
+
+@endspecial
+712 2288 a Fy(\\psgrid\(0,0\)\(4,1\))591 2457 y FB(and)118
+2640 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.4 SLW 0.5 setgray
+113.81097 28.45274 0.0 0.0 113.81097 28.45274 28.45274 28.45274 5 0
+{} 0 Grid grestore gsave 0.8 SLW 0. setgray 113.81097 28.45274 0.0
+0.0 113.81097 28.45274 28.45274 28.45274 1 0 { 0. setgray } 10.0 Grid
+grestore end
+
+@endspecial 712 2591 a Fy
+(\\psgrid\(4,1\)\(0,0\))591 2828 y Fv(Grids)1227 b(17)p eop
+%%Page: 18 22
+21 bop 591 50 a FB(The)12 b(following)g(parameters)h(apply)f(only)g(to)g
+Fn(\\psgrid)p FB(:)591 181 y Fr(gridwidth=)p Ff(dim)713 b FA(Default:)20
+b Fr(.8pt)712 262 y FB(The)13 b(width)f(of)f(grid)h(lines.)591
+363 y Fr(gridcolor=)p Ff(color)651 b FA(Default:)19 b Fr(black)712
+444 y FB(The)13 b(color)f(of)g(grid)g(lines.)591 546 y Fr(griddots=)p
+Ff(num)782 b FA(Default:)20 b Fr(0)712 627 y FB(If)d Fp(num)h
+FB(is)f(positive,)h(the)g(grid)f(lines)g(are)h(dotted,)h(with)e
+Fp(num)g FB(dots)g(per)712 687 y(division.)591 789 y Fr(gridlabels=)p
+Ff(dim)688 b FA(Default:)20 b Fr(10pt)712 870 y FB(The)13 b(size)f(of)g(the)g
+(numbers)g(used)g(to)g(mark)g(the)g(grid.)591 971 y Fr(gridlabelcolor=)p
+Ff(color)539 b FA(Default:)19 b Fr(black)712 1052 y FB(The)13
+b(color)f(of)g(the)g(grid)g(numbers.)591 1154 y Fr(subgriddiv=)p
+Ff(int)771 b FA(Default:)20 b Fr(5)712 1235 y FB(The)13 b(number)f(of)g(grid)
+g(subdivisions.)591 1337 y Fr(subgridwidth=)p Ff(dim)626 b
+FA(Default:)20 b Fr(.4pt)712 1418 y FB(The)13 b(width)f(of)f(subgrid)h
+(lines.)591 1519 y Fr(subgridcolor=)p Ff(color)585 b FA(Default:)20
+b Fr(gray)712 1600 y FB(The)13 b(color)f(of)g(subgrid)f(lines.)591
+1702 y Fr(subgriddots=)p Ff(num)695 b FA(Default:)20 b Fr(0)712
+1783 y FB(Like)13 b Fn(griddots)p FB(,)e(but)h(for)g(subdivisions.)591
+1914 y(Here)e(is)g(a)g(familiar)i(looking)e(grid)h(which)f(illustrates)h
+(some)f(of)g(the)h(parameters:)236 2117 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+-28.45274 -28.45274 85.35823 28.45274 -28.45274 -28.45274 28.45274
+28.45274 1 10 { 0. setgray } 7.0 Grid grestore end
+
+
+@endspecial 712 2127 a Fy(\\psgrid[subgriddiv=1,griddots=10,gridlabels=7p)o
+(t]\(-1,-1\))o(\(3,1\))591 2366 y FB(Note)18 b(that)g(the)h(values)f(of)g
+Fn(xunit)g FB(and)g Fn(yunit)g FB(are)g(important)h(parameters)g(for)591
+2426 y Fn(\\psgrid)p FB(,)10 b(because)h(they)g(determine)g(the)g(spacing)g
+(of)f(the)h(divisions.)16 b(E.g.,)11 b(if)f(the)591 2486 y(value)i(of)g
+(these)g(is)g Fy(1pt)p FB(,)g(and)g(then)g(you)g(type)712 2617
+y Fy(\\psgrid\(0,0\)\(10in,10in\))591 2828 y Fv(Grids)1227
+b(18)p eop
+%%Page: 19 23
+22 bop 591 50 a FB(you)18 b(will)i(get)g(a)f(grid)g(with)g(723)g(main)h
+(divisions)f(and)g(3615)g(subdivisions!)591 110 y(\(Actually)m(,)12
+b Fn(\\psgrid)g FB(allows)f(at)h(most)g(500)g(divisions)f(or)h(subdivisions,)
+f(to)g(limit)591 170 y(the)f(damage)h(done)f(by)g(this)g(kind)g(of)g
+(mistake.\))17 b(Probably)10 b(you)g(want)g(to)g(set)g Fn(unit)591
+230 y FB(to)i Fy(.5in)g FB(or)f Fy(1in)p FB(,)h(as)f(in)712
+361 y Fy(\\psgrid[unit=.5in]\(0,0\)\(20,20\))366 558 y Fl(1)l(1)71
+b(Plots)591 680 y FB(The)7 b(plotting)g(commands)g(described)g(in)g(this)g
+(part)g(are)h(de\256ned)f(in)g Fy(pst-plot.t)q(ex)p FB(/)p
+Fy(pst)q(-)325 704 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+235 721 a Fr(pst-plot)591 740 y Fy(plot.sty)p FB(,)13 b(which)f(you)f(must)h
+(load)h(\256rst.)591 829 y(The)k Fn(\\psdots)p FB(,)h Fn(\\psline)p
+FB(,)g Fn(\\pspolygon)p FB(,)h Fn(\\pscurve)p FB(,)e Fn(\\psecurve)f
+FB(and)h Fn(\\psccurve)591 889 y FB(graphics)d(objects)h(let)h(you)e(plot)h
+(data)g(in)g(a)g(variety)g(of)g(ways.)24 b(However)n(,)14 b(\256rst)591
+949 y(you)d(have)h(to)g(generate)g(the)g(data)g(and)g(enter)g(it)g(as)g
+(coordinate)g(pairs)g Fy(\()p Fp(x)s Fy(,)t Fp(y)t Fy(\))p
+FB(.)17 b(The)591 1010 y(plotting)e(macros)g(in)g(this)g(section)g(give)g
+(you)g(other)g(ways)f(to)h(get)g(and)g(use)f(the)591 1070 y(data.)j
+(\(Section)c(26)f(tells)g(you)g(how)f(to)h(generate)h(axes.\))591
+1159 y(T)m(o)e(parameter)712 1290 y Fr(plotstyle=)p Ff(style)592
+b FA(Default:)19 b Fr(line)591 1421 y FB(determines)10 b(what)g(kind)g(of)g
+(plot)g(you)g(get.)17 b(V)-5 b(alid)9 b(styles)h(are)h Fy(dots)p
+FB(,)f Fy(line)p FB(,)g Fy(polygon)p FB(,)591 1481 y Fy(curve)p
+FB(,)16 b Fy(ecurve)p FB(,)g Fy(ccurve)p FB(.)28 b(E.g.,)17
+b(if)f(the)g Fn(plotstyle)e FB(is)i Fy(polygon)p FB(,)f(then)h(the)g(macro)
+591 1541 y(becomes)c(a)g(variant)h(of)f(the)g Fn(\\pspolygon)g
+FB(object.)591 1630 y(Y)-5 b(ou)13 b(can)h(use)f(arrows)g(with)g(the)h(plot)g
+(styles)g(that)g(are)g(open)g(curves,)g(but)f(there)591 1690
+y(is)f(no)h(optional)g(ar)o(gument)h(for)e(specifying)h(the)g(arrows.)19
+b(Y)-5 b(ou)12 b(have)h(to)g(use)f(the)591 1751 y Fn(arrows)e
+FB(parameter)k(instead.)297 2100 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 28.0 .5 CLW
+mul sub 0 360 arc closepath gsave 0.5 setgray fill grestore gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 297 2100 a
+ tx@Dict begin 45. Rot end
+ 210 2157 a
+ tx@Dict begin CP CP T 3.55672 3.55672 scale NET end
+ FB(PS)210 2157 y
+ tx@Dict begin CP CP T 1 3.55672 div 1 3.55672 div scale NET end
+ 297 2100
+a
+ tx@Dict begin 45. neg Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 26.60002 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 38.5 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.0 26.60002
+7.0 38.5 .5 Frame gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 49.0 0.0 38.5 ArrowA 7.0 56.0 24.5 56.0 ArrowB
+curveto gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1868 a
+ tx@Dict begin 0.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 0.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 40.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 40.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 80.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 80.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 120.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 120.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 160.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 160.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 200.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 200.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 240.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 240.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 280.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 280.0 neg Rot end
+ 399 1868 a
+ tx@Dict begin 320.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 399 1868 a
+ tx@Dict begin 320.0 neg Rot end
+ 712 1910 a Fz(W)l(arning:)47 b(No)18
+b(PostScript)g(err)n(or)f(checking)i(is)f(pr)n(ovided)g(for)712
+1970 y(the)h(data)g(ar)n(guments.)35 b(Read)19 b(Appendix)g(C)f(befor)n(e)h
+(including)712 2031 y(PostScript)13 b(code)f(in)g(the)h(ar)n(guments.)712
+2111 y(Ther)n(e)j(ar)n(e)f(system-dependent)h(limits)g(on)f(the)h(amount)f
+(of)h(data)712 2172 y(T)731 2182 y(E)754 2172 y(X)11 b(and)g(PostScript)g
+(can)f(handle.)17 b(Y)l(ou)10 b(ar)n(e)h(much)f(less)g(likely)j(to)712
+2232 y(exceed)h(the)e(PostScript)h(limits)f(when)g(you)h(use)e(the)i
+Fp(line)p Fz(,)f Fp(polygon)712 2292 y Fz(or)g Fp(dots)g Fz(plot)g(style,)g
+(with)g Fo(showpoints=false)p Fz(,)e Fo(linearc=0pt)p Fz(,)g(and)712
+2352 y(no)i(arr)n(ows.)591 2496 y FB(Note)c(that)h(the)g(lists)g(of)f(data)h
+(generated)g(or)g(used)f(by)g(the)h(plot)g(commands)f(cannot)591
+2556 y(contain)k(units.)18 b(The)12 b(values)g(of)g Fn(\\psxunit)f
+FB(and)h Fn(\\psyunit)g FB(are)g(used)g(as)g(the)g(unit.)591
+2828 y Fv(Plots)1233 b(19)p eop
+%%Page: 20 24
+23 bop 591 50 a Fr(\\\256leplot)p Fd(*[)p Fc(par)p Fd(])p Fr({)p
+Ff(\256le)r Fr(})712 131 y Fn(\\plot\256le)14 b FB(is)g(the)g(simplest)f(of)h
+(the)g(plotting)g(functions)f(to)h(use.)22 b(Y)-5 b(ou)13 b(just)712
+191 y(need)f(a)f(\256le)g(that)h(contains)g(a)f(list)g(of)g(coordinates)h
+(\(without)f(units\),)g(such)712 251 y(as)19 b(generated)g(by)g(Mathematica)h
+(or)e(other)h(mathematical)j(packages.)712 311 y(The)d(data)g(can)g(be)f
+(delimited)i(by)e(curly)g(braces)h Fy({)f(})p FB(,)h(parentheses)f
+Fy(\()g(\))p FB(,)712 372 y(commas,)13 b(and/or)f(white)g(space.)18
+b(Bracketing)12 b(all)h(the)f(data)h(with)f(square)712 432
+y(brackets)f Fy([)g(])f FB(will)h(signi\256cantly)g(speed)f(up)h(the)g(rate)g
+(at)g(which)f(the)h(data)g(is)712 492 y(read,)e(but)f(there)g(are)g
+(system-dependent)g(limits)g(on)g(how)g(much)g(data)g(T)1891
+503 y(E)1914 492 y(X)712 552 y(can)15 b(read)f(like)g(this)g(in)g(one)g
+(chunk.)22 b(\(The)14 b Fy([)g Fz(must)f FB(go)h(at)g(the)h(beginning)712
+612 y(of)i(a)g(line.\))33 b(The)18 b(\256le)f(should)f(not)h(contain)h
+(anything)f(else)h(\(not)f(even)712 672 y Fy(\\endinput)p FB(\),)11
+b(except)i(for)f(comments)g(marked)h(with)f Fy(\045)p FB(.)712
+753 y Fn(\\plot\256le)21 b FB(only)f(recognizes)h(the)f Fy(line)p
+FB(,)i Fy(polygon)d FB(and)h Fy(dots)g FB(plot)h(styles,)712
+814 y(and)e(it)f(ignores)g(the)h Fn(arrows)p FB(,)f Fn(linearc)g
+FB(and)g Fn(showpoints)f FB(parameters.)712 874 y(The)d Fn(\\listplot)f
+FB(command,)h(described)f(below)m(,)g(can)g(also)g(plot)g(data)h(from)712
+934 y(\256le,)21 b(without)e(these)f(restrictions)i(and)e(with)h(faster)g(T)
+1656 945 y(E)1679 934 y(X)f(processing.)712 994 y(However)n(,)e(you)g(are)g
+(less)g(likely)g(to)g(exceed)h(PostScript')m(s)e(memory)h(or)712
+1054 y(operand)c(stack)h(limits)g(with)f Fn(\\plot\256le)p
+FB(.)712 1135 y(If)18 b(you)e(\256nd)h(that)h(it)g(takes)f(T)1211
+1146 y(E)1235 1135 y(X)f(a)i(long)f(time)h(to)g(process)e(your)h
+Fn(\\plot-)712 1196 y(\256le)i FB(command,)i(you)e(may)g(want)g(to)g(use)f
+(the)h Fn(\\PSTtoEPS)h FB(command)712 1256 y(described)c(on)g(page)f(80.)28
+b(This)16 b(will)g(also)f(reduce)h(T)1615 1266 y(E)1639 1256
+y(X')m(s)f(memory)h(re-)712 1316 y(quirements.)591 1418 y Fr(\\dataplot)p
+Fd(*[)p Fc(par)p Fd(])p Fr({)p Ff(commands)r Fr(})712 1499
+y Fn(\\dataplot)d FB(is)g(also)g(for)g(plotting)h(lists)f(of)g(data)h
+(generated)g(by)f(other)g(pro-)712 1559 y(grams,)22 b(but)d(you)h(\256rst)f
+(have)g(to)h(retrieve)h(the)f(data)g(with)f(one)h(of)f(the)712
+1619 y(following)12 b(commands:)820 1735 y Fr(\\savedata{)p
+Ff(command)t Fr(}[)p Ff(data)q Fr(])820 1810 y(\\readdata{)p
+Ff(command)t Fr(}{)p Ff(\256le)r Fr(})712 1912 y Fp(data)e
+FB(or)f(the)h(data)g(in)f Fp(\256le)i FB(should)e(conform)g(to)h(the)g(rules)
+f(described)h(above)712 1972 y(for)g(the)f(data)i(in)e Fn(\\\256leplot)h
+FB(\(with)f Fn(\\savedata)p FB(,)f(the)i(data)g(must)g(be)f(delimited)712
+2032 y(by)g Fy([)g(])p FB(,)h(and)e(with)h Fn(\\readdata)p
+FB(,)f(bracketing)i(the)f(data)g(with)g Fy([)g(])g FB(speeds)f(things)712
+2092 y(up\).)17 b(Y)-5 b(ou)12 b(can)g(concatenate)i(and)e(reuse)g(lists,)g
+(as)g(in)820 2194 y Fy(\\readdata{\\foo}{foo.data})820 2254
+y(\\readdata{\\bar}{b)o(ar)m(.data})820 2314 y(\\dataplot{\\foo\\bar})820
+2374 y(\\dataplot[origin=\(0,1\)]{\\bar})712 2476 y FB(The)18
+b Fn(\\readdata)e FB(and)h Fn(\\dataplot)f FB(combination)i(is)f(faster)g
+(than)h Fn(\\\256leplot)712 2536 y FB(if)f(you)f(reuse)g(the)h(data.)31
+b Fn(\\\256leplot)16 b FB(uses)g(less)g(of)g(T)1585 2547 y(E)1608
+2536 y(X')m(s)g(memory)g(than)712 2597 y Fn(\\readdata)11 b
+FB(and)h Fn(\\dataplot)f FB(if)h(you)g(are)g(also)g(use)g Fn(\\PSTtoEPS)p
+FB(.)591 2828 y Fv(Plots)1233 b(20)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/graphics/pstricks/doc/pst-usr2.ps b/obsolete/graphics/pstricks/doc/pst-usr2.ps
new file mode 100644
index 0000000000..1fb53f1117
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/pst-usr2.ps
@@ -0,0 +1,2322 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.491 Copyright 1986, 1992 Radical Eye Software
+%%Title: pst-user.dvi
+%%Pages: 26 1
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Times-Roman Helvetica Helvetica-Bold Helvetica-Oblique
+%%+ Helvetica-BoldOblique Times-Italic Times-Bold Symbol
+%%EndComments
+%DVIPSCommandLine: dvips pst-user.dvi -Pport -o pst-usr2.ps -p21 -l46
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
+S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div
+/hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley
+0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
+product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
+(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
+rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
+ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
+/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
+B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
+rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
+B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
+/eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1993/3/12. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+pathforall z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
+sub y mul setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
+stroke /y1 y1 a add def } repeat grestore } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap systemdict /currentstrokeadjust known {
+currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
+0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
+bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
+repeat grestore } def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
+/SD { 0 360 arc fill } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
+c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
+div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
+div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
+def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
+div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
+div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
+{ 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
+def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
+b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
+add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
+f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
+add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
+setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
+cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
+moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
+add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
+if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
+h add def } loop grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+CP 4 2 roll T moveto } def
+/PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
+moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
+/IfVisible false def } if } ifelse } def
+/InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
+grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
+end
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Created 1993/3/12. Source file was pst-node.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@NodeDict 200 dict def tx@NodeDict begin
+/NewNode { gsave /next ED dict dup 3 -1 roll ED begin tx@Dict begin STV
+CP T exec end /NodeMtrx CM def next end grestore } def
+/InitPnode { /Y ED /X ED /NodePos { Nodesep Cos mul Nodesep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { Nodesep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r Nodesep add def } { /dx l Nodesep sub def
+} ifelse Sin 0 gt { /dy u Nodesep add def } { /dy d Nodesep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /r ED r mul neg /l ED /r r l add def /X l neg def { neg /d
+ED /u ED /Y 0 def } { neg /Y ED Y sub /u ED u mul neg /d ED /u u d add
+def /Y Y d sub def } ifelse /NodePos { GetRnodePos } def } def
+/InitRNode { /Y ED /X ED /r ED /X r 2 div X add def /r r X sub def /l X
+neg def Y add neg /d ED Y sub /u ED /NodePos { GetRnodePos } def } def
+/GetOnodePos { /ww w Nodesep add def /hh h Nodesep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/GetAngle { nodeA GetCenter nodeB GetCenter 3 -1 roll sub 3 1 roll sub
+neg Atan } def
+/GetEdge { begin /Nodesep ED dup 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED NodePos Y add exch X add exch
+NodeMtrx transform CM itransform end 4 2 roll 1 index 0 eq { pop pop } {
+2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse } def
+/GetPos { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED OffsetB
+AngleB NodesepB nodeB GetEdge /y2 ED /x2 ED } def
+/InitNC { /nodeB ED /nodeA ED /NodesepB ED /NodesepA ED /OffsetB ED
+/OffsetA ED tx@NodeDict nodeA known tx@NodeDict nodeB known and dup {
+/nodeA nodeA load def /nodeB nodeB load def } if } def
+/LineMP { 4 copy 1 t sub mul exch t mul add 3 1 roll 1 t sub mul exch t
+mul add exch 6 2 roll sub 3 1 roll sub Atan } def
+/NCCoor { GetAngle /AngleA ED /AngleB AngleA 180 add def GetPos /LPutVar
+[ x2 x1 y2 y1 ] cvx def /LPutPos { LPutVar LineMP } def x1 y1 x2 y2 }
+def
+/NCLine { NCCoor tx@Dict begin ArrowB 4 2 roll ArrowA lineto end } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan } def
+/GetArms { /x1a armA AngleA cos mul x1 add def /y1a armA AngleA sin mul
+y1 add def /x2a armB AngleB cos mul x2 add def /y2a armB AngleB sin mul
+y2 add def } def
+/NCCurve { GetPos x1 x2 sub y1 y2 sub Pyth 2 div dup 3 -1 roll mul /armA
+ED mul /armB ED GetArms x1a y1a x1 y1 tx@Dict begin ArrowA end x2a y2a
+x2 y2 tx@Dict begin ArrowB end curveto /LPutVar [ x1 y1 x1a y1a x2a y2a
+x2 y2 ] cvx def /LPutPos { t LPutVar BezierMidpoint } def } def
+/AnglesMP { LPutVar t 3 gt { /t t 3 sub def } { t 2 gt { /t t 2 sub def
+10 -2 roll } { t 1 gt { /t t 1 sub def 10 -4 roll } { 10 4 roll } ifelse
+} ifelse } ifelse 6 { pop } repeat 3 -1 roll exch LineMP } def
+/NCAngles { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform exch pop mtrx itransform /y0 ED /x0
+ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne { x1 y1 }
+if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a y2a x0 y0 x1a y1a
+x1 y1 ] cvx def /LPutPos { AnglesMP } def } def
+/NCAngle { GetPos /x2a armB AngleB cos mul x2 add def /y2a armB AngleB
+sin mul y2 add def /mtrx AngleA matrix rotate def x2a y2a mtrx transform
+pop x1 y1 mtrx transform exch pop mtrx itransform /y0 ED /x0 ED mark
+armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1 tx@Dict begin false Line end
+/LPutVar [ x2 y2 x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def /LPutPos { AnglesMP
+} def } def
+/NCBar { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform pop sub dup 0 mtrx itransform 3 -1
+roll 0 gt { /y2a exch y2a add def /x2a exch x2a add def } { /y1a exch
+neg y1a add def /x2a exch neg x2a add def } ifelse mark x2 y2 x2a y2a
+x1a y1a x1 y1 tx@Dict begin false Line end /LPutVar [ x2 y2 x2 y2 x2a
+y2a x1a y1a x1 y1 ] cvx def /LPutPos { LPutVar AnglesMP } def } def
+/NCDiag { GetPos GetArms mark x2 y2 x2a y2a x1a y1a x1 y1 tx@Dict begin
+false Line end /LPutVar [ x2 y2 x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def
+/LPutPos { AnglesMP } def } def
+/NCDiagg { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED /x1a armA
+AngleA cos mul x1 add def /y1a armA AngleA sin mul y1 add def nodeB
+GetCenter y1a sub exch x1a sub Atan 180 add /AngleB ED OffsetB AngleB
+NodesepB nodeB GetEdge /y2 ED /x2 ED mark x2 y2 x1a y1a x1 y1 tx@Dict
+begin false Line end /LPutVar [ x2 y2 x2 y2 x2 y2 x1a y1a x1 y1] cvx def
+/LPutPos { AnglesMP } def } def
+/LoopMP { /t t abs def [ LPutVar ] length 2 div 1 sub dup t lt { /t ED }
+{ pop } ifelse mark LPutVar t cvi { /t t 1 sub def pop pop } repeat
+counttomark 1 add 4 roll cleartomark 3 -1 roll exch LineMP } def
+/NCLoop { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform loopsize add /y1b ED /x1b ED /x2b x2a y2a mtrx transform pop
+def x2b y1b mtrx itransform /y2b ED /x2b ED x1b y1b mtrx itransform /y1b
+ED /x1b ED mark armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a y1a
+armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a
+y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def /LPutPos { LoopMP } def }
+def
+/NCCircle { nodeA GetCenter 0 0 NodesepA nodeA GetEdge pop 3 1 roll /Y ED
+/X ED X sub 2 div dup 2 exp r r mul sub abs sqrt atan 2 mul /a ED r
+AngleA 90 add PtoC Y add exch X add exch 2 copy /LPutVar [ 4 2 roll r a
+] def /LPutPos { LPutVar aload pop t 360 mul add dup 5 1 roll 90 sub
+PtoC 3 -1 roll add 3 1 roll add exch 3 -1 roll } def r AngleA 90 sub a
+add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c
+57.2957 r Div def /y ED /x ED } def
+/LPutCoor { tx@NodeDict /LPutPos known { gsave LPutPos tx@Dict begin
+/langle ED CM 3 1 roll STV CP 3 -1 roll sub neg 3 1 roll sub exch moveto
+setmatrix CP end grestore } { 0 0 tx@Dict /langle 0 def end } ifelse }
+def
+end
+%%EndProcSet
+%%BeginProcSet: pst-coil.pro
+%!
+% PostScript prologue for pst-coil.tex.
+% Created 1993/3/12. Source file was pst-coil.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@CoilDict 40 dict def tx@CoilDict begin
+/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos
+lineto } def
+/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED
+/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0
+sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos
+Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div
+w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h
+mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for
+EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP
+TotalLength 0 ArrowB lineto } def
+/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED
+/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale
+BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add
+BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc
+EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def
+/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED
+/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED
+Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul
+sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add
+def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat
+TotalLength ArmA sub 0 TotalLength 0 } def
+end
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index
+/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5
+-1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin
+Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{
+FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics /Metrics
+currentdict end def[2 index currentdict end definefont 3 -1 roll makefont
+/setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4
+index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding
+exch def}def end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 134[18
+18 60[13 59[{}3 40.000278 /Times-Italic rf /Fb 134[17 17 2[19
+9 17 11 1[19 19 19 1[8 2[8 1[19 9 19 3[19 97[{}15 34.166969
+/Helvetica-Oblique rf /Fc 130[11 1[11 1[17 17 2[19 9 17 11
+19 19 3[8 17 1[8 19 2[19 19 17 19 19 3[9 9 9 8[25 29[19 1[19
+1[19 1[9 1[9 2[11 11 3[19 36[{}31 34.166969 /Helvetica rf /Fd
+138[21 11 19 13 1[21 21 2[9 2[9 21 2[19 1[19 1[19 4[9 9[25
+82[{}14 34.166969 /Helvetica-Bold rf /Fe 140[19 2[27 24 27
+1[13 2[13 3[21 27 21 1[24 13[27 3[37 11[35 67[{}13 48.000336
+/Times-Bold rf /Ff 137[21 23 12 21 14 1[23 23 23 33 10 2[10
+3[21 1[21 23 21 4[10 5[25 86[{}17 37.412769 /Helvetica-Bold
+rf /Fg 134[22 1[32 22 22 12 17 15 1[22 22 22 34 12 2[12 22
+22 15 19 22 19 22 19 7[32 4[27 24 2[24 2[39 8[32 9[12 22 1[22
+22 2[22 22 22 22 1[11 15 3[15 15 3[22 36[{}40 43.800289 /Times-Roman
+rf /Fh 198[14 14 14 14 14 3[14 14 48[{}7 28.000196 /Times-Roman
+rf /Fi 134[39 1[55 39 43 24 39 27 1[43 43 43 63 20 39 20 20
+43 43 24 39 43 39 43 39 12[43 47 51 1[47 3[43 4[55 43 2[51
+1[51 7[39 39 39 39 39 39 39 39 39 39 48[{}42 70.862267 /Helvetica-Bold
+rf /Fj 138[52 28 47 33 1[52 52 1[75 24 2[24 52 52 1[47 1[47
+1[47 12[52 3[56 2[71 9[61 67[{}18 85.007408 /Helvetica-Bold
+rf /Fk 169[245 12[102 73[{}2 368.041595 /Helvetica-Bold rf
+/Fl 138[32 19 7[16 5[19 25 3[29 28[41 9[19 58[{}8 57.600342
+/Times-Bold rf /Fm 78[16 119[16 16 16 16 16 2[16 16 16 48[{}9
+32.000225 /Times-Roman rf /Fn 134[19 1[27 19 21 10 19 12 1[21
+21 21 31 8 19 8 8 21 21 10 21 21 19 21 21 4[10 7[23 25 27 1[25
+2[31 21 4[29 23 2[27 1[25 7[21 21 21 21 21 21 21 21 21 21 5[14
+42[{}45 37.412769 /Helvetica rf /Fo 81[24 51[19 21 21 32 21
+24 13 19 19 24 24 24 24 35 13 21 13 13 24 24 13 21 24 21 24
+24 9[40 29 1[27 24 2[29 1[32 40 27 3[35 2[29 7[32 1[16 16 11[12
+46[{}41 48.000336 /Times-Italic rf /Fp 81[22 51[18 20 20 29
+20 20 11 16 13 20 20 20 20 31 11 20 11 11 20 20 13 18 20 18
+20 18 7[29 29 38 1[29 24 22 2[22 1[29 1[24 2[13 29 29 1[24
+29 9[11 11[10 1[10 2[13 13 13 39[{}47 40.000278 /Times-Roman
+rf /Fq 135[25 3[16 116[{}2 57.600342 /Times-Italic rf /Fr 81[20
+52[20 20 29 1[23 11 20 14 1[23 23 23 34 9 20 9 9 23 23 11 23
+23 20 23 23 45[23 23 23 23 2[14 5[9 39[{}30 41.000366 /Helvetica-Oblique
+rf /Fs 81[25 51[20 23 23 32 23 25 14 23 16 25 25 25 25 36 11
+23 11 11 25 25 14 23 25 23 25 23 4[11 25[29 4[24 10[23 23 23
+2[14 45[{}34 41.000366 /Helvetica-Bold rf /Ft 81[30 48[19 1[19
+1[27 27 38 27 30 16 27 19 1[30 30 30 44 14 1[14 14 30 30 16
+27 30 27 30 27 35[29 9[27 27 27 27 14 47[{}32 49.200378 /Helvetica-BoldOblique
+rf /Fu 134[25 25 2[27 14 25 16 1[27 27 27 41 11 2[11 1[27 14
+27 2[27 27 46[27 1[27 48[{}19 49.200378 /Helvetica-Oblique
+rf /Fv 130[16 1[16 29[14 1[14 44[14 1[14 1[19 16 16 40[{}9
+49.200378 /Helvetica rf /Fw 81[30 48[19 1[19 25 27 27 38 27
+30 16 27 19 1[30 30 30 44 14 27 14 14 30 30 16 27 30 27 30
+27 3[16 14 16 15[35 3[38 2[35 6[29 4[27 2[27 27 27 27 27 27
+1[14 16 14 2[16 16 40[{}47 49.200378 /Helvetica-Bold rf /Fx
+81[20 48[14 11 14 20 20 20 29 20 23 11 20 14 23 23 23 23 34
+9 20 9 9 23 23 11 23 23 20 23 23 3[11 11 11 3[39 1[29 25 27
+29 2[32 29 34 23 2[11 29 2[27 29 29 27 27 2[24 24 24 11 1[23
+23 23 23 23 23 23 23 23 23 1[11 14 11 1[16 14 14 9 27 36 23
+36[{}73 41.000366 /Helvetica rf /Fy 69[21 10[27 27 3[21 47[21
+24 24 35 24 24 13 19 16 24 24 24 24 37 13 24 13 13 24 24 16
+21 24 21 24 21 4[13 2[35 35 45 35 35 29 27 32 1[27 35 35 43
+29 2[16 35 1[27 29 35 32 32 35 3[27 1[13 13 24 24 24 24 24
+24 24 24 24 24 1[12 16 12 27 24 16 16 16 37 4[16 33[{}75 48.000336
+/Times-Roman rf /Fz 67[58 188[{}1 57.899727 /Symbol rf /FA
+67[48 188[{}1 48.249817 /Symbol rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 21 1
+0 bop 712 50 a Fy(Here)22 b(is)f(a)h(plot)g(of)f Fx(Integral\(sin\(x\)\))p
+Fy(.)44 b(The)22 b(data)g(was)f(generated)h(by)712 110 y(Mathematica,)14
+b(with)820 212 y Fx(T)-5 b(able[{x,N[SinIntegral[x]]},{x,0,20}])712
+313 y Fy(and)12 b(then)h(copied)f(to)g(this)g(document.)118
+858 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def /D {} def mark D 0 D 0 D 1. D 0.946083 D 2. D 1.60541
+D 3. D 1.84865 D 4. D 1.7582 D 5. D 1.54993 D 6. D 1.42469 D 7. D 1.4546
+D 8. D 1.57419 D 9. D 1.66504 D 10. D 1.65835 D 11. D 1.57831 D 12.
+D 1.50497 D 13. D 1.49936 D 14. D 1.55621 D 15. D 1.61819 D 16. D 1.6313
+D 17. D 1.59014 D 18. D 1.53661 D 19. D 1.51863 D 20. D 1.54824 5.69046
+42.67912 /y ED /x ED counttomark dup dup cvi eq not { exch pop } if
+/m exch def /n m 2 div cvi def n { y mul m 1 roll x mul m 1 roll /m
+m 2 sub def } repeat 1. 0.1 0. /c ED /b ED /a ED true OpenCurve
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore gsave /DS 0.5
+2.5 CLW mul add 2 div def /y1 DS .778 mul neg def /x1 y1 1.732 mul
+neg def /y2 y1 CLW add def /x2 y2 1.732 mul neg def /Dot { x1 y1 ST
+1. setgray x2 y2 ST } def /TheDot { gsave T Dot grestore } def newpath
+Points aload length 2 div 2 sub cvi /N ED N 0 ge { TheDot N { TheDot
+} repeat TheDot } { N 2 mul { pop } repeat } ifelse grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 113.8092 0.0 0.0 0.0
+0.0 85.35825 /Lineto /lineto load def false Line gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore end
+
+@endspecial 712 420 a Fx(\\psset{xunit=.2cm,yunit=1.5cm})712
+480 y(\\savedata{\\mydata}[)758 540 y({{0,)22 b(0},)g({1.,)h(0.946083},)e
+({2.,)i(1.60541},)e({3.,)i(1.84865},)e({4.,)i(1.7582},)758
+601 y({5.,)g(1.54993},)e({6.,)i(1.42469},)e({7.,)i(1.4546},)f({8.,)g
+(1.57419},)758 661 y({9.,)h(1.66504},)e({10.,)i(1.65835},)e({1)m(1.,)h
+(1.57831},)g({12.,)g(1.50497},)758 721 y({13.,)g(1.49936},)g({14.,)g
+(1.55621},)g({15.,)g(1.61819},)f({16.,)i(1.6313},)758 781 y({17.,)f
+(1.59014},)g({18.,)g(1.53661},)g({19.,)g(1.51863},)f({20.,)i(1.54824}}])712
+841 y(\\dataplot[plotstyle=curve,showpoints=true,)758 902 y
+(dotstyle=triangle]{\\mydata})712 962 y(\\psline{<->}\(0,2\)\(0,0\)\(2)o
+(0,0\))591 1093 y Fw(\\listplot)p Fv(*[)p Fu(par)p Fv(])p Fw({)p
+Ft(list)t Fw(})712 1174 y Fs(\\listplot)17 b Fy(is)g(yet)g(another)g(way)g
+(of)f(plotting)i(lists)e(of)h(data.)32 b(This)17 b(time,)712
+1234 y Fr(list)i Fy(should)14 b(be)h(a)f(list)h(of)g(data)g(\(coordinate)g
+(pairs\),)g(delimited)h(only)e(by)712 1295 y(white)e(space.)18
+b Fr(list)e Fy(is)c(\256rst)f(expanded)h(by)f(T)1436 1305 y(E)1460
+1295 y(X)g(and)h(then)g(by)f(PostScript.)712 1355 y(This)18
+b(means)g(that)g Fr(list)k Fy(might)d(be)e(a)h(PostScript)f(program)h(that)g
+(leaves)712 1415 y(on)i(the)f(stack)h(a)f(list)h(of)f(data,)j(but)d(you)g
+(can)h(also)f(include)h(data)g(that)712 1475 y(has)13 b(been)f(retrieved)i
+(with)e Fs(\\readdata)f Fy(and)i Fs(\\dataplot)p Fy(.)k(However)n(,)12
+b(when)712 1535 y(using)i(the)h Fx(line)p Fy(,)f Fx(polygon)g
+Fy(or)g Fx(dots)g Fy(plotstyles)h(with)f Fs(showpoints=false)p
+Fy(,)712 1596 y Fs(linearc=0pt)20 b Fy(and)h(no)g(arrows,)h
+Fs(\\dataplot)e Fy(is)g(much)h(less)g(likely)g(than)712 1656
+y Fs(\\listplot)d Fy(to)g(exceed)h(PostScript')m(s)e(memory)h(or)g(stack)f
+(limits.)36 b(In)17 b(the)712 1716 y(preceding)g(example,)h(these)e
+(restrictions)g(were)g(not)g(satis\256ed,)g(and)g(so)712 1776
+y(the)d(example)g(is)f(equivalent)h(to)f(when)g Fs(\\listplot)g
+Fy(is)g(used:)820 1878 y Fx(...)820 1938 y
+(\\listplot[plotstyle=curve,showpoints=true,)865 1998 y
+(dotstyle=triangle]{\\mydata})820 2058 y(...)591 2160 y Fw(\\psplot)p
+Fv(*[)p Fu(par)p Fv(])p Fw({)p Fq(x)913 2169 y Fp(min)977 2160
+y Fw(}{)p Fq(x)1040 2169 y Fp(max)1111 2160 y Fw(}{)p Ft(function)q
+Fw(})712 2241 y Fs(\\psplot)k Fy(can)h(be)f(used)g(to)g(plot)g(a)h(function)f
+Fo(f)7 b Fy(\()p Fo(x)p Fy(\),)17 b(if)g(you)f(know)f(a)h(little)712
+2301 y(PostScript.)31 b Fr(function)17 b Fy(should)f(be)g(the)h(PostScript)f
+(code)h(for)f(calculat-)712 2361 y(ing)j Fo(f)7 b Fy(\()p Fo(x)p
+Fy(\).)35 b(Note)18 b(that)g(you)g(must)g(use)g Fo(x)g Fy(as)g(the)g
+(dependent)h(variable.)712 2422 y(PostScript)13 b(is)g(not)f(designed)h(for)g
+(scienti\256c)g(computation,)h(but)f Fs(\\psplot)712 2482 y
+Fy(is)d(good)e(for)h(graphing)h(simple)f(functions)h(right)f(from)g(within)h
+(T)1781 2492 y(E)1804 2482 y(X.)f(E.g.,)820 2583 y Fx
+(\\psplot[plotpoints=200]{0}{720}{x)20 b(sin})591 2828 y Fn(Plots)1233
+b(21)p eop
+%%Page: 22 2
+1 bop 712 50 a Fy(plots)14 b(sin\()p Fo(x)p Fy(\))g(from)f(0)g(to)h(720)f
+(degrees,)h(by)f(calculating)i(sin\()p Fo(x)p Fy(\))f(roughly)712
+110 y(every)19 b(3.6)e(degrees)h(and)g(then)h(connecting)f(the)h(points)f
+(with)f Fs(\\psline)p Fy(.)712 170 y(Here)12 b(are)h(plots)f(of)f(sin\()p
+Fo(x)p Fy(\))e(cos\(\()p Fo(x=)p Fy(2\))1351 152 y Fm(2)1369
+170 y Fy(\))j(and)g(sin)1534 152 y Fm(2)1552 170 y Fy(\()p
+Fo(x)p Fy(\):)118 417 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0.5 setgray /ArrowA { moveto }
+def /ArrowB { } def /x 0 def /x1 90 def /dx x1 x sub 49 div def /xy
+{ x 1.2 mul x sin dup mul 28.45274 mul } def mark /n 2 def 49 { xy
+n 2 roll /n n 2 add def /x x dx add def } repeat /x x1 def xy n 2 roll
+1. 0.1 0. /c ED /b ED /a ED false OpenCurve gsave 1.5 SLW 0.5 setgray
+0 setlinecap stroke grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def /x 0 def /x1 90 def /dx x1 x sub 99 div def /xy { x
+1.2 mul x sin x 2 div 2 exp cos mul 28.45274 mul } def xy moveto 99
+1 sub { /x x dx add def xy L } repeat /x x1 def xy L gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 0.0 28.45274 0.0 -28.45274
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow } def [
+119.9997 0.0 /Lineto /lineto load def false Line gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore end
+
+@endspecial 712 277
+a Fx(\\psset{xunit=1.2pt})712 337 y(\\psplot[linecolor=gray)m
+(,linewidth=1.5pt,plotstyle=curve]\045)758 397 y({0}{90}{x)20
+b(sin)j(dup)f(mul})712 457 y(\\psplot[plotpoints=100]{0}{90}{x)f(sin)i(x)g(2)
+f(div)h(2)g(exp)f(cos)h(mul})712 518 y(\\psline{<->}\(0,-1\)\(0,1\))712
+578 y(\\psline{->}\(100,0\))591 709 y Fw(\\parametricplot)p
+Fv(*[)p Fu(par)p Fv(])p Fw({)p Fq(t)1097 718 y Fp(min)1161
+709 y Fw(}{)p Fq(t)1215 718 y Fp(max)1286 709 y Fw(}{)p Ft(function)q
+Fw(})712 790 y Fy(This)8 b(is)g(for)g(a)g(parametric)g(plot)g(of)g(\()p
+Fo(x)p Fy(\()p Fo(t)p Fy(\))p Fo(;)g(y)p Fy(\()p Fo(t)p Fy(\)\).)17
+b Fr(function)8 b Fy(is)g(the)g(PostScript)712 850 y(code)13
+b(for)e(calculating)j(the)f(pair)f Fo(x)p Fy(\()p Fo(t)p Fy(\))h
+Fo(y)p Fy(\()p Fo(t)p Fy(\).)712 931 y(For)f(example,)236 1362
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 85.35823 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /t -6 def /t1 6 def
+/dt t1 t sub 12 div def /xy { 1.2 t exp 1.2 t neg exp 28.45274 mul
+exch 28.45274 mul exch } def xy /DS 0.5 2.5 CLW mul add 2 div def /Dot
+{ 0 0 DS SD } def /TheDot { gsave translate Dot grestore } def TheDot
+ 12 1 sub { /t t dt add def xy TheDot } repeat /t t1 def xy TheDot
+ end
+
+
+@endspecial 712 1166 a Fx
+(\\parametricplot[plotstyle=dots,plotpoints=13]\045)758 1226
+y({-6}{6}{1.2)20 b(t)j(exp)f(1.2)h(t)g(neg)f(exp})712 1485
+y Fy(plots)7 b(13)g(points)g(from)g(the)g(hyperbola)g Fo(xy)16
+b Fy(=)e(1,)8 b(starting)f(with)g(\(1)p Fo(:)p Fy(2)1819 1467
+y Fm(\2616)1853 1485 y Fo(;)i Fy(1)p Fo(:)p Fy(2)1942 1467
+y Fm(6)1959 1485 y Fy(\))712 1545 y(and)j(ending)h(with)f(\(1)p
+Fo(:)p Fy(2)1113 1527 y Fm(6)1130 1545 y Fo(;)d Fy(1)p Fo(:)p
+Fy(2)1219 1527 y Fm(\2616)1252 1545 y Fy(\).)712 1626 y(Here)j(is)g(a)g
+(parametric)i(plot)e(of)g(\(sin\()p Fo(t)p Fy(\))p Fo(;)d Fy(sin)o(\(2)p
+Fo(t)p Fy(\)\):)354 1843 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.2 SLW 0. setgray /t 0 def /t1 360 def
+/dt t1 t sub 49 div def /xy { t sin t 2 mul sin 28.45274 mul exch 48.36958
+mul exch } def mark /n 2 def 49 { xy n 2 roll /n n 2 add def /t t dt
+add def } repeat /t t1 def xy n 2 roll 1. 0.1 0. /c ED /b ED /a ED
+false ClosedCurve gsave 1.2 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 0.0 34.1432 0.0 -34.1432
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 58.04335 0.0 -58.04335
+0.0 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 712 1733 a Fx(\\psset{xunit=1.7cm})712 1793 y
+(\\parametricplot[linewidth=1.2pt,plotstyle=ccurve]\045)758
+1853 y({0}{360}{t)20 b(sin)j(t)g(2)f(mul)h(sin})712 1913 y
+(\\psline{<->}\(0,-1.2\)\(0,1.2\))712 1973 y
+(\\psline{<->}\(-1.2,0\)\(1.2,0\))591 2126 y Fy(The)16 b(number)g(of)g
+(points)g(that)h(the)g Fs(\\psplot)f Fy(and)g Fs(\\parametricplot)g
+Fy(commands)591 2186 y(calculate)d(is)f(set)g(by)g(the)712
+2317 y Fw(plotpoints=)p Ft(int)636 b Fl(Default:)20 b Fw(50)591
+2447 y Fy(parameter)m(.)g(Using)12 b Fx(curve)g Fy(or)h(its)f(variants)h
+(instead)g(of)g Fx(line)f Fy(and)g(increasing)h(the)591 2508
+y(value)i(of)f Fs(plotpoints)g Fy(are)h(two)f(ways)g(to)h(get)g(a)f(smoother)
+h(curve.)25 b(Both)15 b(ways)591 2568 y(increase)9 b(the)g(imaging)h(time.)17
+b(Which)9 b(is)f(better)i(depends)e(on)h(the)g(complexity)h(of)591
+2628 y(the)i(computation.)19 b(\(Note)11 b(that)i(all)g(PostScript)f(lines)g
+(are)h(ultimately)h(rendered)591 2828 y Fn(Plots)1233 b(22)p
+eop
+%%Page: 23 3
+2 bop 591 50 a Fy(as)12 b(a)i(series)f(\(perhaps)f(short\))h(line)h
+(segments.\))20 b(Mathematica)15 b(generally)e(uses)591 110
+y Fx(lineto)d Fy(to)g(connect)i(the)f(points)f(in)h(its)g(plots.)16
+b(The)11 b(default)h(minimum)f(number)g(of)591 170 y(plot)d(points)g(for)g
+(Mathematica)g(is)g(25,)h(but)f(unlike)g Fs(\\psplot)g Fy(and)g
+Fs(\\parametricplot)p Fy(,)591 230 y(Mathematica)13 b(increases)e(the)h
+(sampling)g(frequency)f(on)g(sections)h(of)f(the)h(curve)591
+291 y(with)g(greater)g(\257uctuation.)591 2828 y Fn(Plots)1233
+b(23)p eop
+%%Page: 24 4
+3 bop 189 265 a Fk(III)591 182 y Fj(More)22 b(graphics)h(parameters)591
+566 y Fy(The)18 b(graphics)g(parameters)h(described)f(in)g(this)g(part)g(are)
+h(common)f(to)g(all)h(or)591 627 y(most)12 b(of)f(the)i(graphics)f(objects.)
+366 824 y Fi(12)71 b(Coordinate)20 b(systems)591 945 y Fy(The)e(following)h
+(manipulations)g(of)f(the)h(coordinate)g(system)g(apply)f(only)h(to)591
+1005 y(pure)11 b(graphics)h(objects.)591 1095 y(A)j(simple)i(way)e(to)h(move)
+h(the)f(origin)g(of)g(the)g(coordinate)h(system)f(to)g Fx(\()p
+Fr(x)s Fx(,)t Fr(y)t Fx(\))h Fy(is)591 1155 y(with)12 b(the)712
+1286 y Fw(origin=)p Ft({coor})546 b Fl(Default:)20 b Fw(0pt,0pt)591
+1416 y Fy(This)11 b(is)h(the)g(one)f(time)i(that)f(coordinates)g
+Fo(must)f Fy(be)h(enclosed)g(in)g(curly)f(brackets)591 1476
+y Fx({})g Fy(rather)h(than)h(parentheses)f Fx(\(\))p Fy(.)591
+1566 y(A)f(simple)i(way)e(to)h(switch)g(swap)f(the)i(axes)f(is)g(with)g(the)
+712 1696 y Fw(swapaxes=)p Ft(true)554 b Fl(Default:)20 b Fw(false)591
+1827 y Fy(parameter)m(.)30 b(E.g.,)17 b(you)f(might)g(change)h(your)e(mind)i
+(on)e(the)i(orientation)g(of)f(a)591 1887 y(plot)c(after)g(generating)h(the)g
+(data.)366 2085 y Fi(13)71 b(Line)19 b(styles)591 2206 y Fy(The)d(following)h
+(graphics)g(parameters)g(\(in)g(addition)g(to)g Fs(linewidth)f
+Fy(and)h Fs(line-)591 2266 y(color)p Fy(\))i(determine)i(how)d(the)i(lines)g
+(are)g(drawn,)h(whether)e(they)h(be)g(open)f(or)591 2326 y(closed)12
+b(curves.)591 2457 y Fw(linestyle=)p Ft(style)688 b Fl(Default:)19
+b Fw(solid)712 2538 y Fy(V)-5 b(alid)12 b(styles)g(are)h Fx(none)p
+Fy(,)d Fx(solid)p Fy(,)i Fx(dashed)f Fy(and)h Fx(dotted)p Fy(.)591
+2828 y Fn(More)e(graphics)f(parameters)881 b(24)p eop
+%%Page: 25 5
+4 bop 591 50 a Fw(dash=)p Ft(dim1)13 b(dim2)591 b Fl(Default:)20
+b Fw(5pt)14 b(3pt)712 131 y Fy(The)f Fr(black-white)g Fy(dash)f(pattern)g
+(for)g(the)h Fx(dashed)d Fy(line)j(style.)18 b(For)712 191
+y(example:)118 504 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 56.90549 28.45274
+.5 CLW mul dup 3 1 roll sub 3 1 roll sub exch 56.90549 28.45274 Ellipse
+closepath gsave 0.8 SLW 0. setgray 3.0 2.0 2 DashLine grestore end
+
+@endspecial
+712 396 a Fx(\\psellipse[linestyle=dashed,dash=3pt)23 b(2pt]\(2,1\)\(2,1\))
+591 626 y Fw(dotsep=)p Ft(dim)787 b Fl(Default:)20 b Fw(3pt)712
+707 y Fy(The)13 b(distance)f(between)h(dots)e(in)i(the)f Fx(dotted)g
+Fy(line)g(style.)18 b(For)11 b(example)118 902 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow false 0.4
+1.4 2.0 3. Arrow 0 h T gsave newpath false 0.4 1.4 2.0 3. Arrow CP
+grestore CP newpath moveto 2 copy L stroke moveto EndArrow } def [
+113.81097 28.45274 /Lineto /lineto load def false Line gsave 0.8
+SLW 0. setgray 2.0 -2 -1 add DotLine grestore end
+
+@endspecial 712 854 a Fx
+(\\psline[linestyle=dotted,dotsep=2pt]{|->>}\(4,1\))591 1025
+y Fw(border=)p Ft(dim)792 b Fl(Default:)20 b Fw(0pt)712 1106
+y Fy(A)12 b(positive)g(value)h(draws)e(a)h(border)g(of)g(width)g
+Fr(dim)g Fy(and)g(color)712 1166 y Fs(bordercolor)g Fy(on)f(each)i(side)f(of)
+g(the)g(curve.)18 b(This)12 b(is)f(useful)h(for)g(giving)712
+1226 y(the)h(impression)f(that)g(one)g(line)h(passes)e(on)h(top)g(of)g
+(another)m(.)18 b(The)12 b(value)712 1286 y(is)g(saved)g(in)g(the)h
+(dimension)f(register)g Fs(\\psborder)p Fy(.)591 1388 y Fw(bordercolor=)p
+Ft(color)589 b Fl(Default:)20 b Fw(white)712 1469 y Fy(See)12
+b Fs(border)g Fy(above.)712 1550 y(For)g(example:)118 1981
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 51.21501 85.35823 0.0 0.0 /Lineto /lineto load def
+false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { /ArrowAc [
+6 2 roll ] cvx def ArrowAc BeginArrow {false} false /DS 0.5 2.5 CLW
+mul add 2 div def EndDot EndArrow moveto } def /ArrowB { /ArrowBc
+[ 6 2 roll ] cvx def ArrowBc BeginArrow false 0.4 1.4 2.0 3. Arrow
+ EndArrow } def [ 51.21501 0.0 0.0 85.35823 /Lineto /lineto load
+def false Line gsave 2.0 2 mul CLW add SLW 1. setgray stroke grestore
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore gsave ArrowAc
+ArrowA pop pop ArrowBc ArrowB pop pop pop pop grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0.5 setgray 0. true 56.90549 0.0
+113.81097 85.35823 .5 Frame gsave 0.5 setgray fill grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 1.5 SLW 1. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 108.1205 85.35823 62.59595
+0.0 /Lineto /lineto load def false Line gsave 1.5 SLW 1. setgray
+0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 1. setgray 0 360 19.91682 39.83366
+.5 CLW mul dup 3 1 roll sub 3 1 roll sub exch 85.35823 42.67911 Ellipse
+closepath gsave 2.0 2 mul CLW add SLW 0.5 setgray stroke grestore gsave
+1.5 SLW 1. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+712 1664 a Fx(\\psline\(0,0\)\(1.8,3\))712 1724 y
+(\\psline[border=2pt]{*->}\(0,3\)\()o(1.8,0\))712 1784 y
+(\\psframe*[linecolor=gray]\(2,0\)\(4,3\))712 1844 y
+(\\psline[linecolor=white,linewidth=1.5pt]{<->}\(2.2,0\)\(3.8,3\))712
+1904 y(\\psellipse[linecolor=white,linewidth=1.5pt,)758 1965
+y(bordercolor=gra)o(y)m(,border)o(=2p)o(t]\(3,1.5\)\(.7,1.4\))591
+2103 y Fw(doubleline=)p Ft(true/false)534 b Fl(Default:)20
+b Fw(false)712 2184 y Fy(When)13 b Fx(true)p Fy(,)e(a)h(double)g(line)h(is)f
+(drawn,)f(separated)i(by)e(a)i(space)f(that)h(is)712 2244 y
+Fs(doublesep)f Fy(wide)g(and)g(of)f(color)i Fs(doublecolor)p
+Fy(.)k(This)12 b(doesn')o(t)g(work)f(as)712 2305 y(expected)i(with)f(the)h
+Fx(dashed)e Fs(linestyle)p Fy(,)g(and)h(some)g(arrows)f(look)h(funny)712
+2365 y(as)g(well.)591 2467 y Fw(doublesep=)p Ft(dim)397 b Fl(Default:)20
+b Fw(1.25\\pslinewidth)712 2547 y Fy(See)12 b Fs(doubleline)p
+Fy(,)h(above.)591 2828 y Fn(Line)c(styles)1140 b(25)p eop
+%%Page: 26 6
+5 bop 591 50 a Fw(doublecolor=)p Ft(color)583 b Fl(Default:)20
+b Fw(white)712 130 y Fy(See)12 b Fs(doubleline)p Fy(,)h(above.)712
+209 y(Here)f(is)g(an)g(example)h(of)f(double)g(lines:)118 395
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 3.1 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { /ArrowBc [ 6 2 roll ] cvx def ArrowBc BeginArrow false 0.4
+1.4 2.0 3. Arrow EndArrow } def [ 113.81097 0.0 85.35823 28.45274
+0.0 0.0 /r 14.22636 def /Lineto { Arcto } def false Line gsave 3.1
+SLW 0. setgray 0 setlinecap stroke grestore gsave 1.5 SLW 1. setgray
+stroke grestore gsave ArrowBc ArrowB pop pop pop pop grestore end
+
+@endspecial 712 317 a Fx
+(\\psline[doubleline=true,linearc=.5,)758 377 y(doublesep=1.5pt]{->}\(0)o
+(,0\)\(3)o(,1\)\(4)o(,0\))591 509 y Fw(shadow=)p Ft(true/false)598
+b Fl(Default:)20 b Fw(false)712 589 y Fy(When)13 b Fx(true)p
+Fy(,)e(a)h(shadow)f(is)h(drawn,)f(at)i(a)f(distance)h Fs(shadowsize)e
+Fy(from)712 649 y(the)i(original)g(curve,)f(in)g(the)g(direction)h
+Fs(shadowangle)p Fy(,)e(and)h(of)g(color)712 709 y Fs(shadowcolor)p
+Fy(.)591 808 y Fw(shadowsize=)p Ft(dim)672 b Fl(Default:)20
+b Fw(3pt)712 888 y Fy(See)12 b Fs(shadow)p Fy(,)f(above.)591
+987 y Fw(shadowangle=)p Ft(angle)600 b Fl(Default:)20 b Fw(-45)712
+1067 y Fy(See)12 b Fs(shadow)p Fy(,)f(above.)591 1166 y Fw(shadowcolor=)p
+Ft(color)480 b Fl(Default:)20 b Fw(darkgray)712 1246 y Fy(See)12
+b Fs(shadow)p Fy(,)f(above.)712 1325 y(Here)h(is)g(an)g(example)h(of)f(the)g
+Fs(shadow)f Fy(feature,)i(which)f(should)f(look)712 1385 y(familiar:)472
+1535 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 712 1474 a Fx
+(\\pspolygon[linearc=2pt,shadow=true,shadowangle=45,)758 1534
+y(xunit=1.1]\(-1,-.55\)\(-1,.5\)\(-.8,.5\)\()o(-.8,.65\))758
+1594 y(\(-.2,.65\)\(-.2,.5\)\(1,.5\)\(1,-.55\))591 1725 y Fy(Here)d(is)h
+(another)h(graphics)f(parameter)h(that)f(is)g(related)h(to)f(lines)h(but)f
+(that)g(applies)591 1785 y(only)15 b(to)h(the)g(closed)g(graphics)g(objects)g
+Fs(\\psframe)p Fy(,)g Fs(\\pscircle)p Fy(,)g Fs(\\psellipse)g
+Fy(and)591 1845 y Fs(\\pswedge)p Fy(:)712 1967 y Fw(dimen=)p
+Ft(outer/inner/middle)291 b Fl(Default:)20 b Fw(outer)591 2089
+y Fy(It)f(determines)i(whether)f(the)g(dimensions)f(refer)h(to)g(the)g
+(inside,)i(outside)e(or)591 2149 y(middle)10 b(of)f(the)g(boundary)m(.)16
+b(The)10 b(dif)o(ference)g(is)f(noticeable)i(when)e(the)g(linewidth)591
+2209 y(is)i(lar)o(ge:)118 2640 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 7.11317 SLW 0. setgray 0. true 0.0 0.0
+56.90549 28.45274 -.5 Frame gsave 7.11317 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 7.11317 SLW 0. setgray 0. true 0.0 56.90549
+56.90549 85.35823 0 Frame gsave 7.11317 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 7.11317 SLW 0. setgray 0. true 85.35823
+0.0 113.81097 85.35823 .5 Frame gsave 7.11317 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+712 2383 a Fx(\\psset{linewidth=.25cm})712 2443 y
+(\\psframe[dimen=inner]\(0,0\)\(2,1\))712 2503 y
+(\\psframe[dimen=middle]\(0,2\)\(2,3\))712 2564 y
+(\\psframe[dimen=outer]\(3,0\)\(4,3\))591 2828 y Fn(Line)e(styles)1140
+b(26)p eop
+%%Page: 27 7
+6 bop 591 50 a Fy(W)n(ith)12 b Fx(\\pswedge)p Fy(,)g(this)f(only)h(af)o
+(fects)g(the)h(radius;)f(the)g(origin)g(always)f(lies)h(in)g(the)591
+110 y(middle)17 b(the)g(boundary)m(.)31 b(The)17 b(right)g(setting)g(of)f
+(this)h(parameter)h(depends)e(on)591 170 y(how)11 b(you)h(want)f(to)i(align)f
+(other)g(objects.)366 367 y Fi(14)71 b(Fill)18 b(styles)591
+489 y Fy(The)e(next)g(group)f(of)h(graphics)f(parameters)i(determine)g(how)e
+(closed)h(regions)591 549 y(are)d(\256lled.)22 b(Even)14 b(open)g(curves)f
+(can)h(be)f(\256lled;)i(this)f(does)f(not)g(af)o(fect)i(how)d(the)591
+609 y(curve)g(is)g(painted.)591 740 y Fw(\256llstyle=)p Ft(style)712
+b Fl(Default:)20 b Fw(none)712 821 y Fy(V)-5 b(alid)12 b(styles)g(are)820
+922 y Fx(none)p Fy(,)f Fx(solid)p Fy(,)g Fx(vlines)p Fy(,)i
+Fx(vlines*)p Fy(,)f Fx(hlines)p Fy(,)g Fx(hlines*)p Fy(,)f
+Fx(crosshatch)820 983 y Fy(and)h Fx(crosshatch*)p Fy(.)712
+1084 y Fx(vlines)p Fy(,)h Fx(hlines)e Fy(and)h Fx(crosshatch)h
+Fy(draw)e(a)i(pattern)f(of)g(lines,)g(according)h(to)712 1145
+y(the)g(four)f(parameters)g(list)h(below)f(that)g(are)h(pre\256xed)e(with)h
+Fx(hatch)p Fy(.)17 b(The)c Fx(*)712 1205 y Fy(versions)f(also)g(\256ll)g(the)
+g(background,)g(as)g(in)g(the)g Fx(solid)g Fy(style.)591 1306
+y Fw(\256llcolor=)p Ft(color)686 b Fl(Default:)20 b Fw(white)712
+1387 y Fy(The)13 b(background)f(color)g(in)g(the)g Fx(solid)p
+Fy(,)g Fx(vlines*)p Fy(,)g Fx(hlines*)g Fy(and)g Fx(crosshatch*)712
+1448 y Fy(styles.)591 1549 y Fw(hatchwidth=)p Ft(dim)676 b
+Fl(Default:)20 b Fw(.8pt)712 1630 y Fy(W)n(idth)13 b(of)f(lines.)591
+1732 y Fw(hatchsep=)p Ft(dim)733 b Fl(Default:)20 b Fw(4pt)712
+1813 y Fy(W)n(idth)13 b(of)f(space)g(between)g(the)h(lines.)591
+1915 y Fw(hatchcolor=)p Ft(color)614 b Fl(Default:)19 b Fw(black)712
+1996 y Fy(Color)12 b(of)g(lines.)18 b(Saved)12 b(in)g Fs(\\pshatchcolor)p
+Fy(.)591 2097 y Fw(hatchangle=)p Ft(rot)731 b Fl(Default:)20
+b Fw(45)712 2178 y Fy(Rotation)13 b(of)f(the)g(lines,)h(in)f(degrees.)17
+b(For)11 b(example,)i(if)g Fs(hatchangle)d Fy(is)712 2238 y(set)j(to)f
+Fx(45)p Fy(,)f(the)h Fx(vlines)h Fy(style)f(draws)f(lines)i(that)f(run)g(NW)m
+(-SE,)g(and)g(the)712 2299 y Fx(hlines)g Fy(style)g(draws)g(lines)g(that)h
+(run)e Fx(SW)o(-NE)p Fy(,)i(and)f(the)g Fx(crosshatch)g Fy(style)712
+2359 y(draws)g(both.)591 2490 y(Here)f(is)h(an)g(example)h(of)f(the)h
+Fx(vlines)f Fy(and)g(related)h(\256ll)f(styles:)591 2828 y
+Fn(Fill)f(styles)1162 b(27)p eop
+%%Page: 28 8
+7 bop 118 354 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 0.0 0.0
+85.35823 0.0 0.0 /Lineto /lineto load def false Polygon gsave 90
+rotate 45. rotate 0.8 SLW 0. setgray 4.0 LineFill grestore gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 0.0 113.81097
+85.35823 0.0 0.0 /Lineto /lineto load def false Polygon gsave 45.
+rotate 0.8 SLW 0. setgray 4.0 LineFill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 85.35823
+56.90549 42.67911 0.0 85.35823 /Lineto /lineto load def false Polygon
+ gsave gsave 0. setgray fill grestore gsave 0. rotate 1.2 SLW 1. setgray
+1.8 LineFill grestore 90 rotate 0. rotate 1.2 SLW 1. setgray 1.8 LineFill
+ grestore gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+712 67 a Fx(\\pspolygon[\256llstyle=vlines]\(0,0\)\(0,3\)\(4,0\))712
+127 y(\\pspolygon[\256llstyle=hlines]\(0,0\)\(4,3\)\(4,0\))712
+188 y(\\pspolygon[\256llstyle=crosshatch*,\256llc)q(olor=black,)758
+248 y(hatchcolor=white,hatchwidth=1.2pt,hatchsep=1.8pt,)758
+308 y(hatchangle=0]\(0,3\)\(2,1.5\)\()o(4,3\))591 485 y Fy(Don')o(t)8
+b(be)h(surprised)e(if)i(the)g(checkered)h(part)f(of)f(this)h(example)g(\(the)
+g(last)g Fs(\\pspoly-)591 545 y(gon)p Fy(\))i(looks)h(funny)g(on)g
+(low-resolution)g(devices.)18 b(PST)n(ricks)12 b(adjusts)g(the)g(lines)591
+605 y(so)e(that)h(they)f(all)i(have)e(the)h(same)g(width,)g(but)f(the)h
+(space)g(between)g(them,)g(which)591 666 y(in)h(this)g(case)g(is)g(black,)g
+(can)h(have)f(varying)g(width.)591 755 y(Each)j(of)f(the)h(pure)g(graphics)g
+(objects)g(\(except)g(those)g(beginning)g(with)g Fx(q)p Fy(\))f(has)591
+815 y(a)19 b(starred)f(version)h(that)g(produces)g(a)g(solid)g(object)g(of)g
+(color)g Fs(linecolor)p Fy(.)38 b(\(It)591 875 y(automatically)21
+b(sets)d Fs(linewidth)h Fy(to)g(zero,)i Fs(\256llcolor)e Fy(to)g
+Fs(linecolor)p Fy(,)i Fs(\256llstyle)e Fy(to)591 935 y Fx(solid)p
+Fy(,)11 b(and)h Fs(linestyle)g Fy(to)g Fx(none)p Fy(.\))366
+1133 y Fi(15)71 b(Arrowheads)21 b(and)f(such)591 1254 y Fy(Lines)9
+b(and)g(other)h(open)f(curves)g(can)h(be)f(terminated)i(with)e(various)g
+(arrowheads,)591 1314 y(t-bars)i(or)h(circles.)18 b(The)712
+1445 y Fw(arrows=)p Ft(style)701 b Fl(Default:)19 b Fw(-)591
+1576 y Fy(parameter)c(determines)h(what)f(you)f(get.)26 b(It)15
+b(can)g(have)g(the)g(following)g(values,)591 1636 y(which)c(are)i(pretty)f
+(intuitive:)1084 1618 y Fm(5)p 591 1680 544 2 v 646 1711 a
+Fh(5)662 1726 y Fp(This)e(is)g(T)797 1735 y(E)817 1726 y(X')n(s)f(version)g
+(of)h(WYSIWYG.)591 2828 y Fn(Arrowheads)f(and)g(such)955 b(28)p
+eop
+%%Page: 29 9
+8 bop 794 51 a Fo(V)-5 b(alue)52 b(Example)36 b(Name)841 131
+y Fx(-)97 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto load def
+false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 203 w Fy(None)817
+203 y Fx(<->)73 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 203
+w Fy(Arrowheads.)817 276 y Fx(>-<)g @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+true 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+true 0.4 1.4 2.0 3. Arrow EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 203 w Fy(Reverse)12 b(arrowheads.)793 348 y Fx(<<->>)49
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow 0 h T gsave newpath false 0.4 1.4 2.0 3.
+Arrow CP grestore CP newpath moveto 2 copy L stroke moveto EndArrow
+ moveto } def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow 0 h T
+gsave newpath false 0.4 1.4 2.0 3. Arrow CP grestore CP newpath moveto
+2 copy L stroke moveto EndArrow } def [ 36.98865 5.161 0.0 5.161
+/Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 203 w Fy(Double)12
+b(arrowheads.)793 420 y Fx(>>-<<)49 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+true 0.4 1.4 2.0 3. Arrow CP newpath moveto 0 a neg L stroke 0 h neg
+T false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+true 0.4 1.4 2.0 3. Arrow CP newpath moveto 0 a neg L stroke 0 h neg
+T false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 36.98865 5.161 0.0
+5.161 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 203 w Fy(Double)12 b(reverse)g(arrowheads.)830
+492 y Fx(|-|)86 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto load def
+false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 203
+w Fy(T)l(-bars,)12 b(\257ush)f(to)h(endpoints.)814 564 y Fx(|*-|*)70
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0 CLW -2 div T 2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow
+0 CLW -2 div T 2.0 5. Tbar EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 203 w Fy(T)l(-bars,)12
+b(centered)h(on)e(endpoints.)829 637 y Fx([-])87 b @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0.15 2.0 5. Bracket EndArrow moveto } def /ArrowB { BeginArrow 0.15
+2.0 5. Bracket EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto
+/lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 203 w Fy(Square)12 b(brackets.)827
+709 y Fx(\(-\))83 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0.15 2.0 5. RoundBracket EndArrow moveto } def /ArrowB { BeginArrow
+0.15 2.0 5. RoundBracket EndArrow } def [ 36.98865 5.161 0.0 5.161
+ /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+203 w Fy(Rounded)12 b(brackets.)818 781 y Fx(o-o)74 b @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{1. setgray true} false /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow
+ moveto } def /ArrowB { BeginArrow {1. setgray true} false /DS 0.5
+2.5 CLW mul add 2 div def EndDot EndArrow } def [ 36.98865 5.161
+0.0 5.161 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 203 w Fy(Circles,)13 b(centered)g(on)e(endpoints.)
+825 853 y Fx(*-*)81 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{false} false /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow moveto
+} def /ArrowB { BeginArrow {false} false /DS 0.5 2.5 CLW mul add 2
+div def EndDot EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto
+/lineto load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+203 w Fy(Disks,)11 b(centered)i(on)f(endpoints.)795 926 y Fx(oo-oo)51
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{1. setgray true} true /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow
+ moveto } def /ArrowB { BeginArrow {1. setgray true} true /DS 0.5 2.5
+CLW mul add 2 div def EndDot EndArrow } def [ 36.98865 5.161 0.0
+5.161 /Lineto /lineto load def false Line gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 203 w Fy(Circles,)13
+b(\257ush)e(to)h(endpoints.)809 998 y Fx(**-**)65 b @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+{false} true /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow moveto
+} def /ArrowB { BeginArrow {false} true /DS 0.5 2.5 CLW mul add 2 div
+def EndDot EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial 203 w Fy(Disks,)11 b(\257ush)g(to)h(endpoints.)820
+1070 y Fx(c-c)78 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+1 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow 1 setlinecap 0 0 moveto 0 CLW 2 div L stroke
+0 0 moveto EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial 203
+w Fy(Extended,)13 b(rounded)e(ends.)800 1142 y Fx(cc-cc)58
+b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+0 CLW 2 div T 1 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto
+EndArrow moveto } def /ArrowB { BeginArrow 0 CLW 2 div T 1 setlinecap
+0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow } def [ 36.98865
+5.161 0.0 5.161 /Lineto /lineto load def false Line gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 203 w Fy(Flush)12
+b(round)f(ends.)811 1215 y Fx(C-C)69 b @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow 2 setlinecap 0 0 moveto 0 CLW 2 div L stroke
+0 0 moveto EndArrow } def [ 36.98865 5.161 0.0 5.161 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+
+@endspecial 203 w Fy(Extended,)13 b(square)f(ends.)591 1334
+y(Y)-5 b(ou)12 b(can)h(also)g(mix)h(and)f(match.)21 b(E.g.,)13
+b Fx(->)p Fy(,)f Fx(*-\))g Fy(and)h Fx([->)g Fy(are)h(all)f(valid)h(values)f
+(of)591 1394 y(the)f Fs(arrows)f Fy(parameter)m(.)591 1482
+y(W)l(ell,)23 b(perhaps)c(the)h Fx(c)p Fy(,)j Fx(cc)d Fy(and)g
+Fx(C)h Fy(arrows)e(are)h(not)g(so)g(obvious.)40 b Fx(c)20 b
+Fy(and)g Fx(C)591 1542 y Fy(correspond)12 b(to)g(setting)h(PostScript')m(s)f
+Fx(linecap)g Fy(to)h(1)g(and)f(2,)h(respectively)m(.)20 b Fx(cc)13
+b Fy(is)591 1602 y(like)g Fx(c)p Fy(,)h(but)f(adjusted)h(so)e(that)i(the)f
+(line)h(\257ush)e(to)h(the)h(endpoint.)20 b(These)14 b(arrows)591
+1663 y(styles)d(are)i(noticeable)g(when)f(the)g Fs(linewidth)g
+Fy(is)g(thick:)207 2004 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 14.22636 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def [ 0.0 56.90549 0.0 0.0 /Lineto /lineto load
+def false Line gsave 14.22636 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 14.22636 SLW 0. setgray /ArrowA { BeginArrow
+1 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow 1 setlinecap 0 0 moveto 0 CLW 2 div L stroke
+0 0 moveto EndArrow } def [ 28.45274 56.90549 28.45274 0.0 /Lineto
+/lineto load def false Line gsave 14.22636 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 14.22636 SLW 0. setgray /ArrowA { BeginArrow
+0 CLW 2 div T 1 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto
+EndArrow moveto } def /ArrowB { BeginArrow 0 CLW 2 div T 1 setlinecap
+0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow } def [ 56.90549
+56.90549 56.90549 0.0 /Lineto /lineto load def false Line gsave 14.22636
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 14.22636 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow 2 setlinecap 0 0 moveto 0 CLW 2 div L stroke
+0 0 moveto EndArrow } def [ 85.35823 56.90549 85.35823 0.0 /Lineto
+/lineto load def false Line gsave 14.22636 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 200 2052
+a Fx(-)298 2062 y(c-c)43 b(cc-cc)525 2070 y(C-C)712 1806 y
+(\\psline[linewidth=.5cm]\(0,0\)\(0,2\))712 1866 y
+(\\psline[linewidth=.5cm]{c-c}\(1,0\)\(1,2\))712 1927 y
+(\\psline[linewidth=.5cm]{cc-cc}\(2,0\)\(2,2\))712 1987 y
+(\\psline[linewidth=.5cm]{C-C}\(3,0\)\(3,2\))591 2155 y Fy(Almost)17
+b(all)h(the)g(open)f(curves)g(let)h(you)g(include)g(the)g Fs(arrows)e
+Fy(parameters)i(as)591 2215 y(an)g(optional)g(ar)o(gument,)j(enclosed)d(in)g
+(curly)g(braces)g(and)g(before)h(any)f(other)591 2276 y(ar)o(guments)12
+b(\(except)h(the)f(optional)h(parameters)f(ar)o(gument\).)18
+b(E.g.,)12 b(instead)h(of)712 2397 y Fx
+(\\psline[arrows=<-,linestyle=dotted]\(3,4\))591 2519 y Fy(you)e(can)i(write)
+712 2640 y Fx(\\psline[linestyle=dotted]{<-}\(3,4\))591 2828
+y Fn(Arrowheads)c(and)g(such)955 b(29)p eop
+%%Page: 30 10
+9 bop 591 50 a Fy(The)10 b(exceptions)h(are)f(a)g(few)g(streamlined)h(macros)
+f(that)h(do)f(not)g(support)g(the)g(use)591 110 y(of)h(arrows)g(\(these)i
+(all)f(begin)h(with)f Fx(q)p Fy(\).)591 198 y(The)e(size)g(of)f(these)h(line)
+h(terminators)f(is)g(controlled)h(by)e(the)h(following)g(parame-)591
+258 y(ters.)17 b(In)11 b(the)h(description)f(of)h(the)f(parameters,)i(the)e
+(width)h(always)f(refers)g(to)g(the)591 318 y(dimension)g(perpendicular)h(to)
+g(the)g(line,)g(and)f(length)h(refers)f(to)h(a)f(dimension)h(in)591
+378 y(the)g(direction)h(of)f(the)g(line.)591 499 y Fw(arrowsize=)p
+Ft(dim)g(num)565 b Fl(Default:)19 b Fw(2pt)c(3)712 579 y Fy(W)n(idth)e(of)f
+(arrowheads,)f(as)h(shown)f(below)m(.)591 678 y Fw(arrowlength=)p
+Ft(num)657 b Fl(Default:)20 b Fw(1.4)712 757 y Fy(Length)13
+b(of)f(arrowheads,)f(as)h(shown)f(below)m(.)591 856 y Fw(arrowinset=)p
+Ft(num)717 b Fl(Default:)20 b Fw(.4)712 936 y Fy(Size)13 b(of)f(inset)g(for)g
+(arrowheads,)f(as)h(shown)f(below)m(.)925 1292 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray [ 0.0 14.22636 28.45273
+0.0 0.0 56.90546 -28.45273 0.0 /Lineto /lineto load def false Polygon
+ gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ -35.5659 56.90546 -35.5659 0.0 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial
+706 1186 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.39041
+neg 31.80019 10.93733 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial Fo(length)925
+1292 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ 28.45273 -7.11317 -28.45273 -7.11317 /Lineto /lineto
+load def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+grestore end
+
+@endspecial 872 1338 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.11519
+neg 28.60912 10.93733 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial(width)925 1292 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def [ 35.5659 14.22636 35.5659 0.0 /Lineto /lineto load
+def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+
+@endspecial 1090 1276 a(inset)1178 1082 y Fx(arrowsize)50
+b Fy(=)f Fr(dim)12 b(num)1247 1155 y Fo(width)50 b Fy(=)f Fr(num)13
+b Fy(x)e Fs(linewidth)h Fy(+)g Fr(dim1)1233 1227 y Fo(length)51
+b Fy(=)e Fs(arrowlength)11 b Fy(x)h Fo(width)1262 1299 y(inset)51
+b Fy(=)e Fs(arrowinset)11 b Fy(x)h Fo(height)591 1475 y Fw(tbarsize=)p
+Ft(dim)g(num)606 b Fl(Default:)19 b Fw(2pt)c(5)712 1555 y Fy(The)i(width)f
+(of)g(a)g(t-bar)n(,)h(square)f(bracket)h(or)f(rounded)g(bracket)g(is)g
+Fr(num)712 1615 y Fy(times)d Fs(linewidth)p Fy(,)f(plus)g Fr(dim)q
+Fy(.)591 1714 y Fw(bracketlength=)p Ft(num)617 b Fl(Default:)20
+b Fw(.15)712 1794 y Fy(The)13 b(height)f(of)g(a)g(square)g(bracket)h(is)f
+Fr(num)g Fy(times)g(its)h(width.)591 1892 y Fw(rbracketlength=)p
+Ft(num)598 b Fl(Default:)20 b Fw(.15)712 1972 y Fy(The)13 b(height)f(of)g(a)g
+(round)g(bracket)h(is)e Fr(num)i Fy(times)f(its)g(width.)591
+2071 y Fw(dotsize=)p Ft(dim)g(num)567 b Fl(Default:)20 b Fw(.5pt)14
+b(2.5)712 2150 y Fy(The)f(diameter)g(of)f(a)g(circle)h(or)f(disc)g(is)g
+Fr(num)g Fy(times)h Fs(linewidth)p Fy(,)f(plus)f Fr(dim)q Fy(.)591
+2249 y Fw(arrowscale=)p Ft(arrowscale=num1)j(num2)267 b Fl(Default:)20
+b Fw(1)712 2329 y Fy(Imagine)14 b(that)g(arrows)e(and)h(such)g(point)g(down.)
+20 b(This)13 b(scales)g(the)h(width)712 2389 y(of)h(the)h(arrows)e(by)h
+Fr(num1)f Fy(and)h(the)g(length)h(\(height\))f(by)g Fr(num2)s
+Fy(.)25 b(If)15 b(you)712 2449 y(only)e(include)h(one)e(number)n(,)h(the)h
+(arrows)d(are)j(scaled)f(the)g(same)g(in)g(both)712 2509 y(directions.)18
+b(Changing)11 b Fs(arrowscale)f Fy(can)h(give)h(you)f(special)h(ef)o(fects)g
+(not)712 2569 y(possible)i(by)f(changing)h(the)g(parameters)h(described)f
+(above.)22 b(E.g.,)14 b(you)712 2630 y(can)f(change)f(the)h(width)e(of)h
+(lines)h(used)e(to)h(draw)g(brackets.)591 2828 y Fn(Arrowheads)d(and)g(such)
+955 b(30)p eop
+%%Page: 31 11
+10 bop 366 53 a Fi(16)71 b(Custom)19 b(styles)591 175 y Fy(Y)-5
+b(ou)16 b(can)h(de\256ne)f(customized)h(versions)f(of)h(any)f(macro)h(that)g
+(has)g(parameter)591 235 y(changes)9 b(as)g(an)h(optional)g(\256rst)f(ar)o
+(gument)i(using)e(the)h Fs(\\newpsobject)e Fy(command:)712
+380 y Fw(\\newpsobject{)p Ft(name)r Fw(}{)p Ft(object)t Fw(}{)p
+Ft(par1=value1)p Fv(,)q Fz(\274)s Fw(})591 511 y Fy(as)j(in)712
+642 y Fx(\\newpsobject{myline}{psline}{linecolor=gree)o(n,linestyle=dotted})
+712 702 y(\\newpsobject{\\mygrid}{psgrid}{subgriddiv=1,grid)o(dots=10,)758
+762 y(gridlabels=7pt})591 893 y Fy(The)g(\256rst)f(ar)o(gument)h(is)g(the)g
+(name)g(of)f(the)i(new)e(command)h(you)g(want)f(to)h(de\256ne.)591
+953 y(The)g(second)g(ar)o(gument)h(is)f(the)g(name)h(of)f(the)g(graphics)g
+(object.)18 b(Note)11 b(that)h(both)591 1013 y(of)e(these)g(ar)o(guments)h
+(are)g(given)g(without)f(the)h(backslash.)17 b(The)10 b(third)h(ar)o(gument)
+591 1073 y(is)g(the)i(special)g(parameter)g(values)f(that)h(you)e(want)h(to)g
+(set.)591 1163 y(W)n(ith)i(the)f(above)h(examples,)g(the)g(commands)g
+Fx(\\myline)f Fy(and)h Fx(\\mygrid)f Fy(work)g(just)591 1223
+y(like)e(the)g(graphics)f(object)h Fs(\\psline)g Fy(it)g(is)g(based)f(on,)g
+(and)h(you)f(can)h(even)g(reset)f(the)591 1283 y(parameters)i(that)h(you)f
+(set)g(when)f(de\256ning)h Fx(\\myline)p Fy(,)g(as)g(in:)712
+1414 y Fx(\\myline[linecolor=gray)m(,dotsep=2pt]\(5,6\))591
+1544 y Fy(Another)d(way)g(to)h(de\256ne)f(custom)h(graphics)f(parameter)i
+(con\256gurations)e(is)h(with)591 1605 y(the)712 1750 y Fw(\\newpsstyle{)p
+Ft(name)r Fw(}{)p Ft(par1=value1)p Fv(,)q Fz(\274)s Fw(})591
+1881 y Fy(command.)16 b(Y)-5 b(ou)9 b(can)h(then)g(set)f(the)h
+Fs(style)e Fy(graphics)h(parameter)i(to)e Fr(name)q Fy(,)g(rather)591
+1941 y(than)f(setting)h(the)g(parameters)g(given)f(in)h(the)f(second)g(ar)o
+(gument)h(of)f Fs(\\newpsstyle)p Fy(.)591 2001 y(For)j(example,)712
+2132 y Fx(\\newpsstyle{mystyle}{linecolor=green,linestyle=dotted})712
+2192 y(\\psline[style=mystyle])q(\(5,6\))591 2828 y Fn(Custom)e(styles)1082
+b(31)p eop
+%%Page: 32 12
+11 bop 148 265 a Fk(IV)591 182 y Fj(Custom)23 b(graphics)366
+585 y Fi(17)71 b(The)20 b(basics)591 705 y Fy(PST)n(ricks)e(contains)g(a)h
+(lar)o(ge)g(palette)h(of)e(graphics)g(objects,)j(but)d(sometimes)591
+766 y(you)11 b(need)g(something)h(special.)18 b(For)11 b(example,)h(you)f
+(might)h(want)g(to)f(shade)g(the)591 826 y(region)h(between)g(two)g(curves.)
+17 b(The)712 967 y Fw(\\pscustom)p Fv(*[)p Fu(par)5 b Fv(])p
+Fw({)p Ft(commands)r Fw(})591 1094 y Fy(command)12 b(lets)g(you)g(\252roll)h
+(you)e(own\272)h(graphics)g(object.)591 1183 y(Let')m(s)20
+b(review)g(how)f(PostScript)g(handles)h(graphics.)41 b(A)19
+b Fo(path)h Fy(is)f(a)h(line,)j(in)591 1243 y(the)15 b(mathematical)k(sense)c
+(rather)h(than)g(the)g(visual)f(sense.)28 b(A)15 b(path)h(can)g(have)591
+1303 y(several)11 b(disconnected)g(segments,)g(and)f(it)i(can)e(be)h(open)g
+(or)f(closed.)17 b(PostScript)591 1363 y(has)d(various)h(operators)g(for)g
+(making)h(paths.)27 b(The)15 b(end)g(of)g(the)h(path)g(is)f(called)591
+1424 y(the)f Fo(curr)n(ent)g(point)p Fy(,)h(but)g(if)f(there)h(is)f(no)g
+(path)h(then)f(there)h(is)f(no)g(current)h(point.)591 1484
+y(T)m(o)i(turn)h(the)g(path)g(into)g(something)g(visual,)i(PostScript)d(can)h
+Fo(\256ll)g Fy(the)h(region)591 1544 y(enclosed)g(by)g(the)g(path)h(\(that)g
+(is)f(what)g Fs(\256llstyle)f Fy(and)i(such)e(are)i(about\),)h(and)591
+1604 y Fo(str)n(oke)12 b Fy(the)g(path)g(\(that)h(is)f(what)g
+Fs(linestyle)f Fy(and)h(such)g(are)g(about\).)591 1693 y(At)18
+b(the)h(beginning)g(of)f Fs(\\pscustom)p Fy(,)i(there)f(is)f(no)h(path.)37
+b(There)19 b(are)g(various)591 1753 y(commands)f(that)h(you)f(can)h(use)f(in)
+h Fs(\\pscustom)e Fy(for)h(drawing)h(paths.)36 b(Some)591 1813
+y(of)15 b(these)h(\(the)g(open)g(curves\))f(can)h(also)g(draw)g(arrows.)27
+b Fs(\\pscustom)15 b Fy(\256lls)h(and)591 1873 y(strokes)9
+b(the)h(path)f(at)i(the)f(end,)g(and)f(for)g(special)i(ef)o(fects,)f(you)g
+(can)g(\256ll)f(and)h(stroke)591 1934 y(the)i(path)g(along)g(the)h(way)e
+(using)h Fs(\\ps\256ll)h Fy(and)f Fs(\\pstroke)f Fy(\(see)h(below\).)591
+2022 y Fg(Driver)19 b(notes:)44 b Ff(\\pscustom)20 b Fg(uses)h
+Ff(\\pstverb)g Fg(and)g Ff(\\pstunit)p Fg(.)45 b(There)21 b(are)g(system-)591
+2082 y(dependent)13 b(limits)h(on)g(how)e(long)h(the)h(ar)o(gument)g(of)f
+Fn(\\special)g Fg(can)h(be.)24 b(Y)l(ou)12 b(may)i(run)591
+2143 y(into)9 b(this)g(limit)h(using)f Ff(\\pscustom)g Fg(because)h(all)g
+(the)g(PostScript)g(code)f(accumulated)i(by)591 2203 y Ff(\\pscustom)f
+Fg(is)h(the)g(ar)o(gument)g(of)f(a)i(single)f Fn(\\special)f
+Fg(command.)366 2399 y Fi(18)71 b(Parameters)591 2520 y Fy(Y)-5
+b(ou)13 b(need)h(to)g(keep)h(the)f(separation)g(between)h(drawing,)f
+(stroking)g(and)g(\256lling)591 2580 y(paths)k(in)h(mind)g(when)f(setting)h
+(graphics)g(parameters.)38 b(The)19 b Fs(linewidth)g Fy(and)591
+2640 y Fs(linecolor)e Fy(parameters)h(af)o(fect)g(the)g(drawing)f(of)g
+(arrows,)g(but)g(since)h(the)f(path)591 2828 y Fn(Custom)9
+b(graphics)1036 b(32)p eop
+%%Page: 33 13
+12 bop 591 50 a Fy(commands)19 b(do)g(not)g(stroke)g(or)g(\256ll)g(the)h
+(paths,)g(these)g(parameters,)h(and)e(the)591 110 y Fs(linestyle)p
+Fy(,)14 b Fs(\256llstyle)g Fy(and)h(related)h(parameters,)g(do)e(not)h(have)f
+(any)h(other)g(ef)o(fect)591 170 y(\(except)e(that)g(in)g(some)g(cases)g
+Fs(linewidth)f Fy(is)h(used)f(in)h(some)g(calculations)h(when)591
+230 y(drawing)k(the)i(path\).)39 b Fs(\\pscustom)19 b Fy(and)g
+Fs(\\\256ll)h Fy(make)g(use)f(of)g Fs(\256llstyle)g Fy(and)g(re-)591
+291 y(lated)11 b(parameters,)h(and)e Fs(\\pscustom)g Fy(and)g
+Fs(\\stroke)g Fy(make)h(use)f(of)g(plinestyle)i(and)591 351
+y(related)h(parameters.)591 437 y(For)e(example,)i(if)f(you)g(include)712
+549 y Fx
+(\\psline[linewidth=2pt,linecolor=blue,\256llstyle=vlines]{<-}\(3,3\)\(4,0)p
+(\))591 660 y Fy(in)e Fs(\\pscustom)p Fy(,)g(then)h(the)g(changes)g(to)f
+Fs(linewidth)h Fy(and)f Fs(linecolor)h Fy(will)g(af)o(fect)g(the)591
+720 y(size)g(and)f(color)h(of)g(the)g(arrow)g(but)f(not)h(of)g(the)g(line)h
+(when)e(it)h(is)g(stroked,)g(and)f(the)591 781 y(change)i(to)g
+Fs(\256llstyle)g Fy(will)g(have)g(no)g(ef)o(fect)h(at)g(all.)591
+867 y(The)k Fs(shadow)p Fy(,)g Fs(border)p Fy(,)h Fs(doubleline)f
+Fy(and)g Fs(showpoints)f Fy(parameters)i(are)f(dis-)591 927
+y(abled)10 b(in)f Fs(\\pscustom)p Fy(,)h(and)f(the)h Fs(origin)g
+Fy(and)g Fs(swapaxes)d Fy(parameters)j(only)g(af)o(fect)591
+988 y Fs(\\pscustom)f Fy(itself,)i(but)f(there)h(are)f(commands)g
+(\(described)h(below\))e(that)i(let)g(you)591 1048 y(achieve)i(these)f
+(special)h(ef)o(fects.)591 1134 y(The)i Fs(dashed)g Fy(and)g
+Fs(dotted)f Fy(line)i(styles)f(need)h(to)g(know)e(something)i(about)f(the)591
+1194 y(path)g(in)h(order)g(to)f(adjust)h(the)g(dash)f(or)h(dot)f(pattern)i
+(appropriately)m(.)28 b(Y)-5 b(ou)15 b(can)591 1255 y(give)d(this)g
+(information)h(by)e(setting)i(the)712 1366 y Fw(linetype=)p
+Ft(int)716 b Fl(Default:)20 b Fw(0)591 1478 y Fy(parameter)m(.)30
+b(If)15 b(the)i(path)f(contains)g(more)g(than)g(one)g(disconnected)g
+(segment,)591 1538 y(there)g(is)f(no)g(appropriate)h(way)f(to)h(adjust)g(the)
+g(dash)f(or)g(dot)h(pattern,)h(and)e(you)591 1598 y(might)g(as)g(well)g
+(leave)h(the)f(default)h(value)g(of)e Fs(linetype)p Fy(.)26
+b(Here)15 b(are)g(the)h(values)591 1658 y(for)11 b(simple)i(paths:)776
+1775 y Fo(V)-5 b(alue)50 b(T)l(ype)12 b(of)h(path)817 1847
+y Fy(0)91 b(Open)12 b(curve)g(without)g(arrows.)809 1919 y(-1)83
+b(Open)12 b(curve)g(with)g(an)g(arrow)f(at)i(the)f(beginning.)809
+1991 y(-2)83 b(Open)12 b(curve)g(with)g(an)g(arrow)f(at)i(the)f(end.)809
+2063 y(-3)83 b(Open)12 b(curve)g(with)g(an)g(arrow)f(at)i(both)f(ends.)817
+2136 y(1)91 b(Closed)12 b(curve)g(with)g(no)g(particular)h(symmetry)m(.)793
+2208 y Fo(n)p Fx(>)p Fy(1)67 b(Closed)12 b(curve)g(with)g Fo(n)g
+Fy(symmetric)h(segments.)366 2375 y Fi(19)71 b(Graphics)20
+b(objects)591 2493 y Fy(Y)-5 b(ou)16 b(can)h(use)f(most)h(of)g(the)g
+(graphics)f(objects)i(in)f Fs(\\pscustom)p Fy(.)30 b(These)17
+b(draw)591 2554 y(paths)11 b(and)h(making)h(arrows,)e(but)h(do)g(not)g
+(\256ll)g(and)g(stroke)g(the)g(paths.)591 2640 y(There)g(are)g(three)h(types)
+f(of)g(graphics)g(objects:)591 2828 y Fn(Graphics)d(objects)1038
+b(33)p eop
+%%Page: 34 14
+13 bop 591 50 a Fe(Special)24 b Fy(Special)19 b(graphics)e(objects)i(include)
+f Fs(\\psgrid)p Fy(,)i Fs(\\psdots)p Fy(,)e Fs(\\qline)h Fy(and)712
+110 y Fs(\\qdisk)p Fy(.)f(Y)-5 b(ou)11 b(cannot)i(use)e(special)i(graphics)f
+(objects)h(in)f Fs(\\pscustom)p Fy(.)591 212 y Fe(Closed)23
+b Fy(Y)-5 b(ou)15 b(are)g(allowed)g(to)g(use)g(closed)g(graphics)g(objects)g
+(in)h Fs(\\pscustom)p Fy(,)712 272 y(but)10 b(their)g(ef)o(fect)h(is)e
+(unpredictable.)1310 254 y Fm(6)1346 272 y Fy(Usually)g(you)h(would)f(use)g
+(the)h(open)712 332 y(curves)i(plus)g Fs(\\closepath)f Fy(\(see)h(below\))g
+(to)g(draw)f(closed)h(curves.)591 434 y Fe(Open)24 b Fy(The)19
+b(open)f(graphics)h(objects)g(are)g(the)g(most)g(useful)f(commands)h(for)712
+494 y(drawing)11 b(paths)h(with)f Fs(\\pscustom)p Fy(.)16 b(By)11
+b(piecing)h(together)g(several)g(open)712 554 y(curves,)20
+b(you)e(can)g(draw)g(arbitrary)h(paths.)35 b(The)19 b(rest)f(of)g(this)g
+(section)712 614 y(pertains)13 b(to)f(the)g(open)g(graphics)g(objects.)591
+745 y(By)17 b(default,)j(the)e(open)g(curves)f(draw)h(a)g(straight)g(line)g
+(between)g(the)g(current)591 805 y(point,)11 b(if)g(it)h(exists,)f(and)g(the)
+g(beginning)g(of)g(the)h(curve,)f(except)h(when)e(the)i(curve)591
+866 y(begins)f(with)h(an)g(arrow)m(.)17 b(For)11 b(example)236
+1305 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 85.35823 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.8 SLW 0. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+0.0 0.0 /y ED /x ED /r 42.67911 def /c 57.2957 r Div def /angleA 5.
+0.0 c mul 2 div add def /angleB 85. 0.0 c mul 2 div sub def x y r angleA
+angleB arc 0.8 SLW 0. setgray /ArrowA { /lineto load stopped { moveto
+} if } def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow
+ } def 0.0 0.0 /y ED /x ED /r 85.35823 def /c 57.2957 r Div def /angleA
+85. 0.0 c mul 2 div sub def /angleB 5. 0.0 c mul 2 div add def x y
+r angleA angleB { ArrowB } { add } ArcArrow arcn gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore end
+
+@endspecial 712 1078 a Fx(\\pscustom{)758 1138
+y(\\psarc\(0,0\){1.5}{5}{85)o(})758 1198 y(\\psarcn{->}\(0,0\){3}{)o(85})o
+({5})o(})591 1436 y Fy(Also,)g(the)i(following)f(curves)g(make)h(use)f(of)g
+(the)g(current)h(point,)g(if)f(it)h(exists,)f(as)591 1496 y(a)g(\256rst)f
+(coordinate:)712 1627 y Fs(\\psline)i Fy(and)f Fs(\\pscurve)p
+Fy(.)712 1687 y(The)h(plot)f(commands,)g(with)g(the)h Fx(line)e
+Fy(or)h Fx(curve)g Fs(plotstyle)p Fy(.)712 1747 y Fs(\\psbezier)20
+b Fy(if)13 b(you)e(only)h(include)h(three)g(coordinates.)591
+1938 y(For)e(example:)118 2377 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 1.5 SLW 0. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+/x .67 def /x1 4 def /dx x1 x sub 49 div def /xy { x 28.45274 mul 2
+x div 28.45274 mul } def mark /n 2 def 49 { xy n 2 roll /n n 2 add
+def /x x dx add def } repeat /x x1 def xy n 2 roll /currentpoint load
+stopped pop 1. 0.1 0. /c ED /b ED /a ED false OpenCurve 1.5 SLW 0.
+setgray /ArrowA { /lineto load stopped { moveto } if } def /ArrowB
+{ } def [ 113.81097 85.35823 /currentpoint load stopped pop /Lineto
+/lineto load def false Line gsave 1.5 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 712 2150
+a Fx(\\pscustom[linewidth=1.5pt]{)758 2211 y
+(\\psplot[plotstyle=curve]{.67}{4}{2)22 b(x)h(div})758 2271
+y(\\psline\(4,3\)})p 591 2411 544 2 v 646 2442 a Fh(6)662 2457
+y Fp(The)9 b(closed)f(objects)g(never)g(use)g(the)h(current)g(point)g(as)f
+(an)h(coordinate,)f(but)h(typically)f(they)591 2507 y(will)h(close)e(any)i
+(existing)f(paths,)h(and)f(they)h(might)g(draw)f(a)h(line)g(between)f(the)g
+(currentpoint)h(and)591 2557 y(the)g(closed)g(curved.)591 2828
+y Fn(Graphics)g(objects)1038 b(34)p eop
+%%Page: 35 15
+14 bop 591 50 a Fy(W)l(e'll)14 b(see)f(later)h(how)e(to)h(make)h(that)f(one)g
+(more)h(interesting.)21 b(Here)13 b(is)f(another)591 110 y(example)118
+549 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.8 SLW 0. setgray
+/ArrowA { BeginArrow 2.0 5. Tbar EndArrow moveto } def /ArrowB {
+} def [ 56.90549 56.90549 0.0 0.0 0.0 56.90549 /currentpoint load
+stopped pop /r 5.69046 def /Lineto { Arcto } def false Line 0.8 SLW
+0. setgray /ArrowA { /lineto load stopped { moveto } if } def /ArrowB
+{ BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow } def 85.35823
+85.35823 /currentpoint load stopped { 0 0 } if ArrowA 28.45274 0.0
+113.81097 85.35823 ArrowB curveto gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 712 323 a Fx(\\pscustom{)758 383 y
+(\\psline[linearc=.2]{|-}\(0,2\)\(0,0\))o(\(2,2\))758 443 y
+(\\psbezier{->}\(3,3\)\(1,0\))o(\(4,3\))o(})591 680 y Fy(However)n(,)i(you)h
+(can)g(control)g(how)g(the)g(open)g(curves)f(treat)i(the)f(current)g(point)
+591 740 y(with)d(the)712 871 y Fw(liftpen=)p Ft(0/1/2)705 b
+Fl(Default:)20 b Fw(0)591 1002 y Fy(parameter)m(.)591 1091
+y(If)11 b Fs(liftpen=0)p Fy(,)f(you)h(get)h(the)g(default)g(behavior)f
+(described)h(above.)17 b(For)11 b(example)118 1530 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray 2.0 SLW 0. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+[ 113.81097 85.35823 56.90549 42.67911 28.45274 71.13185 0.0 56.90549
+ /currentpoint load stopped pop 1. 0.1 0. /c ED /b ED /a ED false
+OpenCurve 2.0 SLW 0. setgray /ArrowA { /lineto load stopped { moveto
+} if } def /ArrowB { } def [ 0.0 14.22636 28.45274 0.0 56.90549 28.45274
+85.35823 14.22636 113.81097 28.45274 /currentpoint load stopped pop
+1. 0.1 0. /c ED /b ED /a ED false OpenCurve gsave 0.5 setgray fill
+ grestore gsave 2.0 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+712 1304 a Fx(\\pscustom[linewidth=2pt,\256llsty)q(le=solid,\256llc)q
+(olor=gray]{)758 1364 y(\\pscurve\(0,2\)\(1,2.5\)\(2,1.5\)\(4,3\))758
+1424 y(\\pscurve\(4,1\)\(3,0.5\)\(2,1\)\(1,0\))o(\(0,.5\)})591
+1661 y Fy(If)e Fs(liftpen=1)p Fy(,)g(the)h(curves)f(do)g(not)h(use)f(the)h
+(current)f(point)h(as)f(the)h(\256rst)f(coordinate)591 1721
+y(\(except)h Fs(\\psbezier)p Fy(,)h(but)f(you)g(can)h(avoid)f(this)g(by)g
+(explicitly)i(including)f(the)f(\256rst)591 1782 y(coordinate)i(as)g(an)g(ar)
+o(gument\).)18 b(For)12 b(example:)118 2221 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray 2.0 SLW 0. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+[ 113.81097 85.35823 56.90549 42.67911 28.45274 71.13185 0.0 56.90549
+ /currentpoint load stopped pop 1. 0.1 0. /c ED /b ED /a ED false
+OpenCurve 2.0 SLW 0. setgray /ArrowA { /lineto load stopped { moveto
+} if } def /ArrowB { } def [ 0.0 14.22636 28.45274 0.0 56.90549 28.45274
+85.35823 14.22636 113.81097 28.45274 1. 0.1 0. /c ED /b ED /a ED
+false OpenCurve gsave 0.5 setgray fill grestore gsave 2.0 SLW 0.
+setgray 0 setlinecap stroke grestore end
+
+@endspecial
+712 1994 a Fx(\\pscustom[linewidth=2pt,\256llsty)q(le=solid,\256llc)q
+(olor=gray]{)758 2054 y(\\pscurve\(0,2\)\(1,2.5\)\(2,1.5\)\(4,3\))758
+2115 y(\\pscurve[liftpen=1]\(4,1\)\(3,0.5\)\(2,1\)\(1,0\)\()o(0,.5\)})591
+2352 y Fy(If)c Fs(liftpen=2)p Fy(,)g(the)h(curves)f(do)h(not)f(use)g(the)h
+(current)g(point)g(as)f(the)h(\256rst)f(coordinate,)591 2412
+y(and)i(they)h(do)g(not)g(draw)f(a)h(line)g(between)g(the)h(current)f(point)g
+(and)f(the)i(beginning)591 2472 y(of)f(the)i(curve.)k(For)12
+b(example)591 2828 y Fn(Graphics)d(objects)1038 b(35)p eop
+%%Page: 36 16
+15 bop 118 354 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 2.0 SLW 0. setgray 2.0 SLW 0. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+[ 113.81097 85.35823 56.90549 42.67911 28.45274 71.13185 0.0 56.90549
+ /currentpoint load stopped pop 1. 0.1 0. /c ED /b ED /a ED false
+OpenCurve 2.0 SLW 0. setgray /ArrowA { moveto } def /ArrowB { } def
+[ 0.0 14.22636 28.45274 0.0 56.90549 28.45274 85.35823 14.22636 113.81097
+28.45274 1. 0.1 0. /c ED /b ED /a ED false OpenCurve gsave 0.5 setgray
+fill grestore gsave 2.0 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 712 127 a Fx(\\pscustom[linewidth=2pt,\256llsty)q
+(le=solid,\256llc)q(olor=gray]{)758 188 y
+(\\pscurve\(0,2\)\(1,2.5\)\(2,1.5\)\(4,3\))758 248 y
+(\\pscurve[liftpen=2]\(4,1\)\(3,0.5\)\(2,1\)\(1,0\)\()o(0,.5\)})591
+475 y Fy(Later)12 b(we)f(will)h(use)f(the)h(second)g(example)g(to)g(\256ll)g
+(the)g(region)f(between)h(the)g(two)591 535 y(curves,)f(and)h(then)h(draw)e
+(the)i(curves.)366 729 y Fi(20)71 b(Safe)19 b(tricks)591 849
+y Fy(The)c(commands)g(described)g(under)g(this)g(heading,)i(which)e(can)g
+(only)g(be)g(used)591 910 y(in)j Fs(\\pscustom)p Fy(,)i(do)e(not)h(run)g(a)g
+(risk)f(of)g(PostScript)h(errors)f(\(assuming)g(your)591 970
+y(document)12 b(compiles)h(without)f(T)1155 980 y(E)1178 970
+y(X)g(errors\).)591 1058 y(Let')m(s)g(start)g(with)g(some)g(path,)h(\256ll)f
+(and)g(stroke)g(commands:)591 1178 y Fw(\\newpath)712 1258
+y Fy(Clear)h(the)f(path)h(and)f(the)g(current)h(point.)591
+1357 y Fw(\\moveto\()p Ft(coor)p Fw(\))712 1436 y Fy(This)f(moves)g(the)h
+(current)f(point)g(to)g Fx(\()p Fr(x)s Fx(,)t Fr(y)t Fx(\))p
+Fy(.)591 1535 y Fw(\\closepath)712 1614 y Fy(This)g(closes)g(the)g(path,)g
+(joining)h(the)f(beginning)g(and)g(end)g(of)f(each)i(piece)712
+1675 y(\(there)g(may)f(be)g(more)h(than)f(one)g(piece)h(if)f(you)g(use)f
+Fs(\\moveto)p Fy(\).)1771 1657 y Fm(7)591 1773 y Fw(\\stroke)p
+Fv([)p Fu(par)5 b Fv(])712 1853 y Fy(This)16 b(strokes)g(the)g(path)h
+(\(non-destructively\).)29 b Fs(\\pscustom)16 b Fy(automati-)712
+1913 y(cally)d(strokes)e(the)h(path,)h(but)e(you)h(might)g(want)g(to)g
+(stroke)f(it)i(twice,)f(e.g.,)712 1973 y(to)g(add)g(a)g(border)m(.)17
+b(Here)12 b(is)f(an)h(example)h(that)f(makes)g(a)g(double)f(line)i(and)712
+2034 y(adds)f(a)g(border)g(\(this)g(example)h(is)f(kept)g(so)f(simple)i(that)
+f(it)h(doesn')o(t)f(need)712 2094 y Fs(\\pscustom)g Fy(at)g(all\):)118
+2513 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 113.81097 0.0 0.0 85.35823 /Lineto /lineto load
+def false Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 1. setgray 1.5 SLW 1. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+[ 113.81097 85.35823 0.0 0.0 /currentpoint load stopped pop /Lineto
+/lineto load def false Line gsave 7.5 SLW 1. setgray 0 setlinecap
+stroke grestore gsave 4.5 SLW 0. setgray 0 setlinecap stroke grestore
+gsave 1.5 SLW 1. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+712 2226 a Fx(\\psline\(0,3\)\(4,0\))712 2286 y
+(\\pscustom[linecolor=white,linewidth=1.5pt]{\045)758 2347
+y(\\psline\(0,0\)\(4,3\))758 2407 y(\\stroke[linewidth=5\\pslinewidth])758
+2467 y(\\stroke[linewidth=3\\pslinewidth,linecolor=black]})p
+591 2545 544 2 v 646 2575 a Fh(7)662 2590 y Fp(Note)7 b(that)g(the)g(path)g
+(is)g(automatically)f(closed)g(when)h(the)g(region)g(is)g(\256lled.)13
+b(Use)6 b Fd(\\closepath)591 2640 y Fp(if)k(you)g(also)f(want)g(to)h(close)f
+(the)h(boundary)m(.)591 2828 y Fn(Safe)g(tricks)1142 b(36)p
+eop
+%%Page: 37 17
+16 bop 591 50 a Fw(\\\256ll)p Fv([)p Fu(par)5 b Fv(])712 131
+y Fy(This)j(\256lls)g(the)h(region)f(\(non-destructively\).)16
+b Fs(\\pscustom)7 b Fy(automatically)712 191 y(\256lls)12 b(the)h(region)f
+(as)g(well.)591 293 y Fw(\\gsave)712 374 y Fy(This)19 b(saves)e(the)i
+(current)f(graphics)g(state)h(\(i.e.,)h(the)e(path,)i(color)n(,)g(line)712
+434 y(width,)f(coordinate)g(system,)f(etc.\))35 b Fs(\\grestore)16
+b Fy(restores)h(the)h(graphics)712 494 y(state.)g Fs(\\gsave)10
+b Fy(and)h Fs(\\grestore)e Fy(must)i(be)g(used)f(in)h(pairs,)g(properly)g
+(nested)712 554 y(with)16 b(respect)g(to)g(T)1038 565 y(E)1061
+554 y(X)f(groups.)27 b(Y)-5 b(ou)15 b(can)h(have)g(have)g(nested)g
+Fs(\\gsave)p Fy(-)712 614 y Fs(\\grestore)11 b Fy(pairs.)591
+716 y Fw(\\grestore)712 797 y Fy(See)h(above.)712 878 y(Here)17
+b(is)g(an)g(example)h(that)g(\256xes)e(an)h(earlier)h(example,)h(using)e
+Fs(\\gsave)712 938 y Fy(and)12 b Fs(\\grestore)p Fy(:)118 1391
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def [ 113.81097 0.0 0.0 0.0
+0.0 85.35823 /Lineto /lineto load def false Line gsave 0.8 SLW 0.
+setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 1.5 SLW 0. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+/x .67 def /x1 4 def /dx x1 x sub 49 div def /xy { x 28.45274 mul 2
+x div 28.45274 mul } def mark /n 2 def 49 { xy n 2 roll /n n 2 add
+def /x x dx add def } repeat /x x1 def xy n 2 roll /currentpoint load
+stopped pop 1. 0.1 0. /c ED /b ED /a ED false OpenCurve gsave 1.5
+SLW 0. setgray /ArrowA { /lineto load stopped { moveto } if } def
+/ArrowB { } def [ 113.81097 85.35823 /currentpoint load stopped pop
+/Lineto /lineto load def false Line gsave 0.5 setgray fill grestore
+grestore gsave 1.5 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 712 1043 a Fx(\\psline{<->}\(0,3\)\(0,0\)\(4)o(,0\))712
+1104 y(\\pscustom[linewidth=1.5pt]{)758 1164 y
+(\\psplot[plotstyle=curve]{.67}{4}{2)22 b(x)h(div})758 1224
+y(\\gsave)803 1284 y(\\psline\(4,3\))803 1344 y
+(\\\256ll[\256llstyle=solid,\256)q(llcolor=gray])758 1405 y(\\grestore})712
+1536 y Fy(Observe)15 b(how)f(the)h(line)g(added)g(by)g Fx(\\psline\(4,3\))f
+Fy(is)h(never)g(stroked,)g(be-)712 1596 y(cause)e(it)f(is)g(nested)g(in)g
+Fx(\\gsave)h Fy(and)f Fx(\\grestore)p Fy(.)712 1677 y(Here)g(is)g(another)h
+(example:)118 2131 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 1.5 SLW 0. setgray
+/ArrowA { /lineto load stopped { moveto } if } def /ArrowB { } def
+[ 113.81097 85.35823 56.90549 42.67911 28.45274 71.13185 0.0 56.90549
+ /currentpoint load stopped pop 1. 0.1 0. /c ED /b ED /a ED false
+OpenCurve gsave 1.5 SLW 0. setgray /ArrowA { /lineto load stopped
+{ moveto } if } def /ArrowB { } def [ 0.0 14.22636 28.45274 0.0 56.90549
+28.45274 85.35823 14.22636 113.81097 28.45274 1. 0.1 0. /c ED /b
+ED /a ED false OpenCurve gsave 0.5 setgray fill grestore grestore
+gsave 1.5 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 0.0 14.22636 28.45274 0.0 56.90549 28.45274 85.35823
+14.22636 113.81097 28.45274 1. 0.1 0. /c ED /b ED /a ED false OpenCurve
+ gsave 1.5 SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 712 1784 a Fx(\\pscustom[linewidth=1.5pt]{)758
+1844 y(\\pscurve\(0,2\)\(1,2.5\)\(2,1.5\)\(4,3\))758 1904 y(\\gsave)803
+1964 y(\\pscurve[liftpen=1]\(4,1\)\(3,0.5\)\(2,1\)\(1,0\)\(0)o(,.5\))803
+2025 y(\\\256ll[\256llstyle=solid,\256)q(llcolor=gray])758
+2085 y(\\grestore})712 2145 y
+(\\pscurve[linewidth=1.5pt]\(4,1\)\(3,0.5\)\(2,1\)\(1,0\)\(0)o(,.5\))712
+2276 y Fy(Note)22 b(how)e(I)i(had)f(to)h(repeat)g(the)f(second)h
+Fs(\\pscurve)e Fy(\(I)h(could)h(have)712 2337 y(repeated)17
+b(it)e(within)g Fs(\\pscustom)p Fy(,)g(with)h Fs(liftpen=2)p
+Fy(\),)e(because)i(I)f(wanted)712 2397 y(to)e(draw)f(a)g(line)h(between)f
+(the)h(two)f(curves)g(to)g(enclose)h(the)f(region)h(but)f(I)712
+2457 y(didn')o(t)h(want)f(this)g(line)g(to)h(be)f(stroked.)591
+2588 y(The)g(next)g(set)g(of)g(commands)g(modify)g(the)h(coordinate)g
+(system.)591 2828 y Fn(Safe)d(tricks)1142 b(37)p eop
+%%Page: 38 18
+17 bop 591 50 a Fw(\\translate\()p Ft(coor)p Fw(\))712 128
+y Fy(T)n(ranslate)15 b(coordinate)e(system)g(by)g Fx(\()p Fr(x)s
+Fx(,)t Fr(y)t Fx(\))p Fy(.)20 b(This)13 b(shifts)g(everything)g(that)712
+188 y(comes)19 b(later)g(by)f Fx(\()p Fr(x)s Fx(,)t Fr(y)t
+Fx(\))p Fy(,)i(but)e(doesn')o(t)g(af)o(fect)h(what)f(has)g(already)h(been)712
+248 y(drawn.)591 343 y Fw(\\scale{)p Ft(num1)13 b Fu(num2)s
+Fw(})712 421 y Fy(Scale)h(the)g(coordinate)g(system)g(in)f(both)h(directions)
+g(by)f Fr(num1)p Fy(,)g(or)g(hori-)712 481 y(zontally)h(by)d
+Fr(num1)g Fy(and)h(vertically)i(by)e Fr(num2)s Fy(.)591 576
+y Fw(\\rotate{)p Ft(angle)r Fw(})712 654 y Fy(Rotate)h(the)g(coordinate)g
+(system)e(by)h Fr(angle)q Fy(.)591 749 y Fw(\\swapaxes)712
+827 y Fy(Switch)g(the)h(x)f(and)g(y)f(coordinates.)18 b(This)12
+b(is)g(equivalent)h(to)820 922 y Fx(\\rotate{-90})820 982 y(\\scale{-1)22
+b(1)h(scale})591 1077 y Fw(\\msave)712 1155 y Fy(Save)13 b(the)g(current)h
+(coordinate)f(system.)20 b(Y)-5 b(ou)12 b(can)h(then)h(restore)e(it)i(with)
+712 1215 y Fs(\\mrestore)p Fy(.)k(Y)-5 b(ou)12 b(can)g(have)h(nested)f
+Fs(\\msave)p Fy(-)p Fs(\\mrestore)f Fy(pairs.)18 b Fs(\\msave)712
+1275 y Fy(and)d Fs(\\mrestore)e Fy(do)i(not)f(have)h(to)f(be)h(properly)f
+(nested)g(with)h(respect)g(to)712 1336 y(T)733 1346 y(E)757
+1336 y(X)i(groups)f(or)h Fs(\\gsave)f Fy(and)h Fs(\\grestore)p
+Fy(.)31 b(However)n(,)18 b(remember)g(that)712 1396 y Fs(\\gsave)d
+Fy(and)h Fs(\\grestore)p Fy(also)e(af)o(fect)i(the)g(coordinate)h(system.)27
+b Fs(\\msave)p Fy(-)712 1456 y Fs(\\mrestore)15 b Fy(lets)g(you)g(change)g
+(the)h(coordinate)g(system)f(while)g(drawing)712 1516 y(part)d(of)f(a)h
+(path,)g(and)f(then)h(restore)f(the)h(old)f(coordinate)i(system)e(without)712
+1576 y(destroying)16 b(the)f(path.)27 b Fs(\\gsave)p Fy(-)p
+Fs(\\grestore)p Fy(,)14 b(on)h(the)h(other)f(hand,)h(af)o(fect)712
+1637 y(the)d(path)f(and)g(all)h(other)f(componments)g(of)g(the)h(graphics)f
+(state.)591 1732 y Fw(\\mrestore)712 1810 y Fy(See)g(above.)591
+1918 y(And)f(now)g(here)h(are)h(a)f(few)g(shadow)f(tricks:)591
+2026 y Fw(\\openshadow)p Fv([)p Fu(par)5 b Fv(])712 2103 y
+Fy(Strokes)16 b(a)h(replica)g(of)g(the)f(current)h(path,)h(using)e(the)h
+(various)f(shadow)712 2163 y(parameters.)591 2259 y Fw(\\closedshadow)p
+Fv([)p Fu(par)5 b Fv(])712 2336 y Fy(Makes)13 b(a)h(shadow)e(of)i(the)g
+(region)f(enclosed)h(by)f(the)h(current)g(path)f(as)h(if)712
+2397 y(it)f(were)f(opaque)g(regions.)591 2492 y Fw(\\movepath\()p
+Ft(coor)p Fw(\))712 2569 y Fy(Moves)g(the)h(path)f(by)g Fx(\()p
+Fr(x)s Fx(,)t Fr(y)t Fx(\))p Fy(.)19 b(Use)12 b Fs(\\gsave)p
+Fy(-)p Fs(\\grestore)e Fy(if)i(you)g(don')o(t)h(want)712 2630
+y(to)g(lose)f(the)g(original)h(path.)591 2828 y Fn(Safe)d(tricks)1142
+b(38)p eop
+%%Page: 39 19
+18 bop 366 51 a Fi(21)71 b(Pretty)19 b(safe)h(tricks)591 172
+y Fy(The)e(next)g(group)g(of)f(commands)h(are)h(safe,)g Fo(as)e(long)h(as)g
+(ther)n(e)g(is)g(a)g(curr)n(ent)591 233 y(point)p Fy(!)591
+376 y Fw(\\lineto\()p Ft(coor)p Fw(\))712 457 y Fy(This)12
+b(is)g(a)h(quick)f(version)f(of)h Fx(\\psline\()p Fr(coor)t
+Fx(\))p Fy(.)591 558 y Fw(\\rlineto\()p Ft(coor)p Fw(\))712
+639 y Fy(This)i(is)g(like)g Fs(\\lineto)p Fy(,)g(but)g Fx(\()p
+Fr(x)s Fx(,)t Fr(y)t Fx(\))g Fy(is)g(interpreted)g(relative)i(to)d(the)h
+(current)712 700 y(point.)591 801 y Fw(\\curveto\()p Ft(x1)p
+Fw(,)t Ft(y1)p Fw(\)\()p Ft(x2)t Fw(,)t Ft(y2)t Fw(\)\()p Ft(x3)s
+Fw(,)t Ft(y3)s Fw(\))712 882 y Fy(This)e(is)g(a)h(quick)f(version)f(of)h
+Fx(\\psbezier\()p Fr(x1)p Fx(,)t Fr(y1)p Fx(\)\()p Fr(x2)s
+Fx(,)t Fr(y2)s Fx(\)\()p Fr(x3)r Fx(,)t Fr(y3)r Fx(\))p Fy(.)591
+984 y Fw(\\rcurveto\()p Ft(x1)p Fw(,)t Ft(y1)p Fw(\)\()p Ft(x2)t
+Fw(,)t Ft(y2)t Fw(\)\()p Ft(x3)s Fw(,)t Ft(y3)s Fw(\))712 1065
+y Fy(This)18 b(is)f(like)i Fs(\\curveto)p Fy(,)f(but)f Fx(\()p
+Fr(x1)p Fx(,)t Fr(y1)p Fx(\))p Fy(,)i Fx(\()p Fr(x2)s Fx(,)t
+Fr(y2)s Fx(\))e Fy(and)g Fx(\()p Fr(x3)r Fx(,)t Fr(y3)r Fx(\))g
+Fy(are)h(inter)o(-)712 1125 y(preted)13 b(relative)g(to)f(the)h(current)f
+(point.)366 1322 y Fi(22)71 b(For)20 b(hackers)h(only)591 1444
+y Fy(For)16 b(PostScript)g(hackers,)j(there)e(are)h(a)f(few)f(more)i
+(commands.)32 b(Be)17 b(sure)g(to)591 1504 y(read)12 b(Appendix)f(C)h(before)
+g(using)g(these.)17 b(Needless)12 b(to)g(say:)297 1655 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 28.0 .5 CLW
+mul sub 0 360 arc closepath gsave 0.5 setgray fill grestore gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 297 1655 a
+ tx@Dict begin 45. Rot end
+ 210 1711 a
+ tx@Dict begin CP CP T 3.55672 3.55672 scale NET end
+ Fy(PS)210 1711
+y
+ tx@Dict begin CP CP T 1 3.55672 div 1 3.55672 div scale NET end
+ 297 1655 a
+ tx@Dict begin 45. neg Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 26.60002 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 38.5 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.0 26.60002
+7.0 38.5 .5 Frame gsave 0. setgray fill grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 49.0 0.0 38.5 ArrowA 7.0 56.0 24.5 56.0 ArrowB
+curveto gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 0.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 0.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 40.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 40.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 80.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 80.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 120.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 120.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 160.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 160.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 200.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 200.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 240.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 240.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 280.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 280.0 neg Rot end
+ 399 1422 a
+ tx@Dict begin 320.0 Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1422 a
+ tx@Dict begin 320.0 neg Rot end
+ 712 1651 a Fo(W)l(arning:)47
+b(Misuse)20 b(of)g(the)h(commands)e(in)h(this)g(section)h(can)712
+1711 y(cause)12 b(PostScript)h(err)n(ors.)591 1852 y Fy(The)d(PostScript)g
+(environment)g(in)h(ef)o(fect)g(with)f Fs(\\pscustom)f Fy(has)h(one)g(unit)g
+(equal)591 1912 y(to)i(one)g(T)742 1923 y(E)765 1912 y(X)g
+Fx(pt)p Fy(.)591 2055 y Fw(\\code{)p Ft(code)r Fw(})712 2136
+y Fy(Insert)g(the)h(raw)e(PostScript)h(code.)591 2238 y Fw(\\dim{)p
+Ft(dim)q Fw(})712 2319 y Fy(Convert)e(the)g(PST)n(ricks)g(dimension)g(to)g
+(the)g(number)g(of)f Fx(pt)p Fy(')m(s,)h(and)g(inserts)712
+2379 y(it)j(in)f(the)h(PostScript)e(code.)591 2481 y Fw(\\coor\()p
+Ft(x1)p Fw(,)t Ft(y1)p Fw(\))p Fv(\()p Fu(x2)s Fv(,)t Fu(y2)s
+Fv(\)...\()p Fu(xn)q Fv(,)t Fu(yn)q Fv(\))712 2561 y Fy(Convert)k(one)f(or)h
+(more)f(PST)n(ricks)g(coordinates)h(to)g(a)f(pair)h(of)f(numbers)712
+2622 y(\(using)e Fx(pt)g Fy(units\),)g(and)g(insert)g(them)h(in)f(the)g
+(PostScript)g(code.)591 2828 y Fn(Pretty)e(safe)g(tricks)1041
+b(39)p eop
+%%Page: 40 20
+19 bop 591 50 a Fw(\\rcoor\()p Ft(x1)p Fw(,)t Ft(y1)p Fw(\))p
+Fv(\()p Fu(x2)s Fv(,)t Fu(y2)s Fv(\)...\()p Fu(xn)q Fv(,)t
+Fu(yn)q Fv(\))712 131 y Fy(Like)13 b Fs(\\coor)p Fy(,)f(but)g(insert)g(the)h
+(coordinates)f(in)g(reverse)g(order)m(.)591 232 y Fw(\\\256le{)p
+Ft(\256le)r Fw(})712 313 y Fy(This)21 b(is)g(like)h Fs(\\code)p
+Fy(,)h(but)e(the)g(raw)g(PostScript)g(is)f(copied)i(verbatim)712
+374 y(\(except)13 b(comments)g(delimited)g(by)f Fx(\045)p Fy(\))g(from)g
+Fr(\256le)q Fy(.)591 475 y Fw(\\arrows{)p Ft(arrows)r Fw(})712
+556 y Fy(This)g(de\256nes)g(the)g(PostScript)g(operators)g
+Fx(ArrowA)g Fy(and)g Fx(ArrowB)f Fy(so)h(that)820 658 y Fx(x2)23
+b(y2)f(x1)h(y1)g(ArrowA)820 718 y(x2)g(y2)f(x1)h(y1)g(ArrowB)712
+820 y Fy(each)18 b(draws)e(an)h(arrow\(head\))g(with)g(the)g(tip)h(at)f
+Fx(\()p Fr(x1)p Fx(,)t Fr(y1)p Fx(\))g Fy(and)g(pointing)712
+880 y(from)11 b Fx(\()p Fr(x2)s Fx(,)t Fr(y2)s Fx(\))p Fy(.)16
+b Fx(ArrowA)10 b Fy(leaves)h(the)g(current)g(point)g(at)g(end)g(of)f(the)h
+(arrow-)712 940 y(head,)h(where)f(a)h(connect)g(line)g(should)f(start,)h(and)
+f(leaves)h Fx(\()p Fr(x2)s Fx(,)t Fr(y2)s Fx(\))e Fy(on)h(the)712
+1000 y(stack.)18 b Fx(ArrowB)12 b Fy(does)f(not)i(change)f(the)g(current)h
+(point,)f(but)g(leaves)820 1102 y Fx(x2)23 b(y2)f(x1')h(y1')712
+1204 y Fy(on)13 b(the)g(stack,)g(where)g Fx(\()p Fr(x1')s Fx(,)t
+Fr(y1')s Fx(\))h Fy(is)f(the)g(point)g(where)f(a)h(connecting)h(line)712
+1264 y(should)h(join.)26 b(T)m(o)14 b(give)h(an)g(idea)g(of)g(how)f(this)h
+(work,)f(the)h(following)g(is)712 1324 y(roughly)i(how)f(PST)n(ricks)g(draws)
+f(a)i(bezier)h(curve)e(with)h(arrows)e(at)i(the)712 1384 y(end:)118
+1806 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow false 0.4
+1.4 2.0 3. Arrow EndArrow } def 80 140 5 5 ArrowA 30 -30 110 75
+ArrowB curveto gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial 712 1489 a Fx(\\pscustom{)758 1549
+y(\\arrows{|->})758 1609 y(\\code{)803 1669 y(80)22 b(140)g(5)h(5)f(ArrowA)
+803 1730 y(30)g(-30)g(1)m(10)g(75)g(ArrowB)803 1790 y(curveto}})591
+1928 y Fw(\\setcolor{)p Ft(color)5 b Fw(})712 2009 y Fy(Set)13
+b(the)f(color)g(to)g Fr(color)t Fy(.)591 2828 y Fn(For)e(hackers)f(only)1040
+b(40)p eop
+%%Page: 41 21
+20 bop 250 265 a Fk(V)591 182 y Fj(Picture)23 b(T)-6 b(ools)366
+582 y Fi(23)71 b(Pictures)591 699 y Fy(The)19 b(graphics)f(objects)h(and)g
+Fs(\\rput)g Fy(and)f(its)h(variants)g(do)g(not)g(change)g(T)1859
+710 y(E)1882 699 y(X')m(s)591 760 y(current)i(point)g(\(i.e.,)j(they)d
+(create)h(a)f(0-dimensional)h(box\).)43 b(If)21 b(you)g(string)591
+820 y(several)c(of)g(these)h(together)g(\(and)f(any)g(other)h(0-dimensional)g
+(objects\),)g(they)591 880 y(share)12 b(the)h(same)g(coordinate)g(system,)g
+(and)g(so)f(you)g(can)h(create)h(a)e(picture.)20 b(For)591
+940 y(this)12 b(reason,)f(these)i(macros)f(are)g(called)h Fo(pictur)n(e)g
+(objects)p Fy(.)591 1026 y(If)8 b(you)h(create)h(a)f(picture)h(this)f(way)m
+(,)g(you)f(will)i(probably)e(want)h(to)g(give)h(the)f(whole)591
+1086 y(picture)14 b(a)f(certain)h(size.)22 b(Y)-5 b(ou)13 b(can)g(do)g(this)g
+(by)h(putting)f(the)h(picture)g(objects)g(in)591 1146 y(a)e
+Fs(pspicture)f Fy(environment,)h(as)g(in:)712 1267 y Fw(\\pspicture)p
+Fv(*[)p Fu(baseline)q Fv(]\()p Fu(x0)r Fv(,)p Fu(y0)r Fv(\))p
+Fw(\()p Ft(x1)p Fw(,)t Ft(y1)p Fw(\))712 1342 y Fr(picture)f(objects)j
+Fw(\\endpspicture)591 1448 y Fy(The)j(picture)h(objects)g(are)g(put)f(in)h(a)
+g(box)f(whose)f(lower)h(left-hand)h(corner)g(is)591 1508 y(at)g
+Fx(\()p Fr(x0)r Fx(,)t Fr(y0)r Fx(\))f Fy(\(by)g(default,)j
+Fx(\(0,0\))p Fy(\))c(and)i(whose)f(upper)g(right-hand)h(corner)g(is)f(at)591
+1568 y Fx(\()p Fr(x1)p Fx(,)t Fr(y1)p Fx(\))p Fy(.)591 1654
+y(By)12 b(default,)h(the)f(baseline)h(is)f(set)g(at)h(the)g(bottom)g(of)f
+(the)g(box,)g(but)g(the)h(optional)591 1714 y(ar)o(gument)g
+Fx([)p Fr(baseline)q Fx(])g Fy(sets)f(the)h(baseline)h(fraction)f
+Fr(baseline)g Fy(from)g(the)g(bottom.)591 1774 y(Thus,)d Fr(baseline)i
+Fy(is)f(a)g(number)n(,)h(generally)g(but)f(not)g(necessarily)h(between)g(0)f
+(and)591 1834 y(1.)16 b(If)c(you)f(include)h(this)f(ar)o(gument)h(but)g
+(leave)g(it)g(empty)g(\()p Fx([)t(])p Fy(\),)g(then)f(the)h(baseline)591
+1895 y(passes)f(through)g(the)i(origin.)591 1980 y(Normally)m(,)h(the)h
+(picture)g(objects)f(can)g(extend)h(outside)f(the)h(boundaries)f(of)f(the)591
+2041 y(box.)21 b(However)n(,)13 b(if)g(you)g(include)h(the)g
+Fx(*)p Fy(,)g(anything)f(outside)h(the)g(boundaries)f(is)591
+2101 y(clipped.)591 2186 y(Besides)g(picture)h(objects,)h(you)e(can)h(put)g
+(anything)g(in)f(a)h Fs(\\pspicture)f Fy(that)h(does)591 2247
+y(not)d(take)h(up)g(space.)17 b(E.g.,)12 b(you)f(can)h(put)f(in)h(font)f
+(declarations)i(and)f(use)f Fs(\\psset)p Fy(,)591 2307 y(and)i(you)g(can)h
+(put)g(in)g(braces)f(for)h(grouping.)21 b(PST)n(ricks)14 b(will)g(alert)g
+(you)f(if)h(you)591 2367 y(include)e(something)h(that)f(does)g(take)g(up)g
+(space.)1407 2349 y Fm(8)591 2453 y Fy(L)603 2447 y(a)617 2453
+y(T)638 2468 y(E)661 2453 y(X)g(users)f(can)h(type)p 591 2495
+544 2 v 646 2525 a Fh(8)662 2540 y Fp(When)i(PST)o(ricks)g(picture)g(objects)
+g(are)g(included)f(in)i(a)f Fd(\\pspicture)h Fp(environment,)g(they)591
+2590 y(gobble)d(up)h(any)g(spaces)f(that)h(follow)m(,)h(and)f(any)g
+(preceding)f(spaces)g(as)g(well,)i(making)f(it)g(less)591 2640
+y(likely)h(that)g(extraneous)f(space)g(gets)h(inserted.)27
+b(\(PST)o(ricks)15 b(objects)e(always)g(ignore)i(spaces)591
+2828 y Fn(Picture)10 b(T)l(ools)1102 b(41)p eop
+%%Page: 42 22
+21 bop 712 50 a Fx(\\begin{pspicture})12 b FA(\274)h Fx(\\end{pspicture})591
+181 y Fy(Y)-5 b(ou)8 b(can)i(use)e(PST)n(ricks)h(picture)h(objects)f(in)h(a)f
+(L)1383 175 y(a)1397 181 y(T)1418 196 y(E)1441 181 y(X)g Fx(picture)f
+Fy(environment,)j(and)591 241 y(you)g(can)g(use)g(L)838 235
+y(a)852 241 y(T)873 256 y(E)897 241 y(X)g(picture)h(objects)g(in)f(a)h(PST)n
+(ricks)f Fs(pspicture)f Fy(environment.)591 301 y(However)n(,)f(the)g
+Fs(pspicture)g Fy(environment)h(makes)f(L)1441 295 y(a)1455
+301 y(T)1476 316 y(E)1500 301 y(X')m(s)f Fx(picture)h Fy(environment)591
+361 y(obsolete,)21 b(and)e(has)f(a)h(few)g(small)h(advantages)f(over)g(the)g
+(latter)m(.)40 b(Note)19 b(that)591 421 y(the)14 b(ar)o(guments)h(of)e(the)i
+Fs(pspicture)e Fy(environment)i(work)e(dif)o(ferently)i(from)f(the)591
+482 y(ar)o(guments)e(of)g(L)865 476 y(a)879 482 y(T)900 497
+y(E)924 482 y(X')m(s)g Fx(picture)g Fy(environment)h(\(i.e.,)f(the)h(right)g
+(way)f(versus)f(the)591 542 y(wrong)g(way\).)591 631 y Fg(Driver)e(notes:)44
+b(The)11 b(clipping)g(option)f(\()p Fn(*)p Fg(\))h(uses)g Ff(\\pstV)n(erb)g
+Fg(and)g Ff(\\pstverbscale)p Fg(.)366 828 y Fi(24)71 b(Placing)19
+b(and)i(rotating)e(whatever)591 949 y Fy(PST)n(ricks)f(contains)h(several)g
+(commands)g(for)f(positioning)h(and)f(rotating)i(an)591 1010
+y(HR-mode)12 b(ar)o(gument.)19 b(All)13 b(of)f(these)h(commands)g(end)f(in)h
+Fx(put)p Fy(,)f(and)h(bear)g(some)591 1070 y(similarity)8 b(to)g(L)838
+1064 y(a)852 1070 y(T)873 1085 y(E)897 1070 y(X')m(s)g Fx(\\put)e
+Fy(command,)j(but)f(with)g(additional)g(capabilities.)18 b(Like)591
+1130 y(L)603 1124 y(a)617 1130 y(T)638 1145 y(E)661 1130 y(X')m(s)11
+b Fx(\\put)g Fy(and)g(unlike)h(the)g(box)f(rotation)h(macros)f(described)h
+(in)f(Section)h(29,)591 1190 y(these)f(commands)g(do)g(not)g(take)g(up)g(any)
+g(space.)17 b(They)12 b(can)f(be)g(used)g(inside)g(and)591
+1250 y(outside)h Fs(\\pspicture)f Fy(environments.)591 1340
+y(Most)g(of)h(the)g(PST)n(ricks)g Fx(put)f Fy(commands)i(are)f(of)g(the)g
+(form:)712 1470 y(\\)p Fr(put)t Fy(*)p Fr(arg)r Fx({)p Fr(rotation)q
+Fx(}\()p Fr(coor)s Fx(\){)p Fr(stuff)6 b Fx(})591 1601 y Fy(W)n(ith)12
+b(the)h(optional)f Fx(*)g Fy(ar)o(gument,)h Fr(stuff)19 b Fy(is)11
+b(\256rst)h(put)g(in)g(a)712 1732 y Fx(\\psframebox*[boxsep=false]{<stuf)o
+(f>})591 1863 y Fy(thereby)k(blotting)h(out)f(whatever)g(is)f(behind)h
+Fr(stuff)6 b Fy(.)30 b(This)16 b(is)g(useful)g(for)f(posi-)591
+1923 y(tioning)d(text)h(on)e(top)i(of)e(something)i(else.)591
+2012 y Fr(arg)c Fy(refers)f(to)g(other)h(ar)o(guments)g(that)g(vary)f(from)g
+(one)h Fx(put)f Fy(command)h(to)f(another)n(,)591 2072 y(The)13
+b(optional)h Fr(rotation)g Fy(is)f(the)h(angle)g(by)f(which)g
+Fr(stuff)20 b Fy(should)13 b(be)h(rotated;)h(this)591 2133
+y(ar)o(guments)j(works)f(pretty)i(much)f(the)h(same)f(for)g(all)h
+Fx(put)f Fy(commands)h(and)f(is)591 2193 y(described)i(further)h(below)m(.)42
+b(The)21 b Fx(\()p Fr(coor)t Fx(\))e Fy(ar)o(gument)j(is)e(the)h(coordinate)g
+(for)591 2253 y(positioning)d Fr(stuff)6 b Fy(,)20 b(but)e(what)g(this)g
+(really)g(means)g(is)g(dif)o(ferent)h(for)f(each)g Fx(put)591
+2313 y Fy(command.)i(The)13 b Fx(\()p Fr(coor)t Fx(\))f Fy(ar)o(gument)i(is)e
+(shown)g(to)h(be)g(obligatory)m(,)h(but)f(you)f(can)591 2373
+y(actually)h(omit)g(it)f(if)g(you)g(include)h(the)f Fr(rotation)g
+Fy(ar)o(gument.)p 591 2418 544 2 v 591 2463 a Fp(that)h(follow)m(.)28
+b(If)15 b(you)e(also)h(want)f(them)h(to)g(try)h(to)f(neutralize)f(preceding)h
+(space)e(when)i(used)591 2513 y(outside)8 b(the)i Fd(\\pspicture)g
+Fp(environment)f(\(e.g.,)h(in)f(a)h(L)1326 2508 y(a)1337 2513
+y(T)1354 2526 y(E)1374 2513 y(X)g Fc(picture)g Fp(environment\),)f(then)g
+(use)g(the)591 2563 y(command)i Fw(\\KillGlue)p Fp(.)22 b(The)12
+b(command)g Fw(\\DontKillGlue)g Fp(turns)g(this)h(behavior)f(back)591
+2613 y(of)o(f.\))591 2828 y Fn(Placing)d(and)h(rotating)g(whatever)825
+b(42)p eop
+%%Page: 43 23
+22 bop 591 50 a Fy(The)17 b Fr(rotation)h Fy(ar)o(gument)g(should)f(be)h(an)g
+(angle,)h(as)e(described)h(in)g(Section)g(4,)591 110 y(but)f(the)h(angle)h
+(can)f(be)g(preceded)g(by)f(an)h Fx(*)p Fy(.)35 b(This)17 b(causes)h(all)g
+(the)g(rotations)591 170 y(\(except)i(the)g(box)f(rotations)h(described)f(in)
+h(Section)g(29\))f(within)h(which)f(the)591 230 y Fs(\\rput)d
+Fy(command)i(is)f(be)g(nested)h(to)f(be)g(undone)g(before)g(setting)h(the)f
+(angle)h(of)591 291 y(rotation.)24 b(This)14 b(is)g(mainly)h(useful)f(for)g
+(getting)h(a)f(piece)i(of)d(text)i(right)g(side)f(up)591 351
+y(when)d(it)i(is)e(nested)i(inside)f(rotations.)17 b(For)12
+b(example,)354 672 y
+ tx@Dict begin 34. Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true -28.45274 0.0
+56.90549 28.45274 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+591 554 a
+ tx@Dict begin 0 34. add neg Rot end
+ 508 544 a Fo(stuff)591 554 y
+ tx@Dict begin 0 34. add neg neg Rot end
+ 354 672 a
+ tx@Dict begin 34. neg Rot end
+ 712 534 a
+Fx(\\rput{34}{\045)758 594 y(\\psframe\(-1,0\)\(2,1\))758 654
+y(\\rput[br]{*0}\(2,1\){\\em)20 b(stuf)o(f}})591 862 y Fy(There)10
+b(are)g(also)f(some)h(letter)h(abbreviations)f(for)g(the)g(command)g(angles.)
+17 b(These)591 922 y(indicate)c(which)f(way)f(is)h(up:)661
+1058 y Fo(Letter)50 b(Short)12 b(for)50 b(Equiv)l(.)13 b(to)704
+1130 y Fx(U)92 b Fy(Up)308 b(0)707 1202 y Fx(L)95 b Fy(Left)264
+b(90)704 1274 y Fx(D)92 b Fy(Down)201 b(180)704 1347 y Fx(R)92
+b Fy(Right)213 b(270)1324 1058 y Fo(Letter)50 b(Short)11 b(for)50
+b(Equiv)l(.)13 b(to)1366 1130 y Fx(N)93 b Fy(North)230 b(*0)1361
+1202 y Fx(W)88 b Fy(W)l(est)224 b(*90)1367 1274 y Fx(S)94 b
+Fy(South)182 b(*180)1367 1347 y Fx(E)94 b Fy(East)212 b(*270)591
+1475 y(This)15 b(section)g(describes)g(just)g(a)g(two)g(of)f(the)i(PST)n
+(ricks)e Fx(put)h Fy(commands.)26 b(The)591 1535 y(most)12
+b(basic)g(one)g(command)g(is)712 1681 y Fw(\\rput)p Fv(*[)p
+Fu(refpoint)t Fv(]{)p Fu(rotation)q Fv(})p Fw(\()p Ft(x)5 b
+Fw(,)t Ft(y)g Fw(\){)p Ft(stuf)o(f)i Fw(})591 1811 y Fr(refpoint)15
+b Fy(determines)e(the)g(reference)g(point)g(of)g Fr(stuff)6
+b Fy(,)13 b(and)g(this)f(reference)h(point)591 1872 y(is)e(translated)i(to)f
+Fx(\()p Fr(x)s Fx(,)t Fr(y)t Fx(\))p Fy(.)591 1961 y(By)k(default,)j(the)f
+(reference)g(point)f(is)g(the)g(center)h(of)f(the)g(box.)32
+b(This)17 b(can)h(be)591 2021 y(changed)10 b(by)f(including)i(one)e(or)h(two)
+f(of)h(the)g(following)g(in)g(the)g(optional)h Fr(refpoint)591
+2081 y Fy(ar)o(gument:)995 2217 y Fo(Horizontal)99 b(V)-5 b(ertical)1000
+2289 y Fx(l)50 b Fy(Left)180 b Fx(t)50 b Fy(T)m(op)995 2361
+y Fx(r)g Fy(Right)142 b Fx(b)49 b Fy(Bottom)1302 2434 y Fx(B)h
+Fy(Baseline)591 2562 y(V)m(isually)m(,)14 b(here)g(is)f(where)h(the)g
+(reference)h(point)f(is)f(set)h(of)g(the)g(various)f(combi-)591
+2622 y(nations)f(\(the)g(dashed)g(line)g(is)g(the)h(baseline\):)591
+2828 y Fn(Placing)c(and)h(rotating)g(whatever)825 b(43)p eop
+%%Page: 44 24
+23 bop 1270 224 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true -56.90549 -14.22636
+56.90549 42.67911 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 56.90549 0.0 -56.90549 0.0 /Lineto /lineto load
+def false Line gsave 0.8 SLW 0. setgray 5.0 3.0 0 0 add DashLine
+grestore end
+
+@endspecial 1263 26 a Fs(t)1258 334 y(b)1255 239
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.0
+neg 10.10454 10.10454 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial(B)1001 180 y(l)972
+239 y(Bl)982 328 y(bl)994 32 y(tl)1527 177 y(r)1527 239 y(Br)1521
+328 y(br)1521 32 y(tr)591 461 y Fy(There)17 b(are)g(numerous)f(examples)i(of)
+e Fs(\\rput)h Fy(in)g(this)g(documentation,)i(but)e(for)591
+522 y(now)11 b(here)h(is)g(a)g(simple)h(one:)472 633 y
+ tx@Dict begin 90. Rot end
+ 244
+623 a Fy(Here)f(is)g(a)g(mar)o(ginal)h(note.)472 633 y
+ tx@Dict begin 90. neg Rot end
+ 712
+643 a Fx(\\rput[b]{90}\(-1,0\){Here)20 b(is)j(a)f(marginal)g(note.})591
+783 y Fy(One)16 b(common)g(use)h(of)f(a)h(macro)g(such)f(as)g
+Fs(\\rput)g Fy(is)g(to)h(put)g(labels)g(on)f(things.)591 843
+y(PST)n(ricks)11 b(has)h(a)g(variant)h(of)f Fs(\\rput)f Fy(that)i(is)f
+(especially)h(designed)f(for)g(labels:)712 989 y Fw(\\uput)p
+Fv(*{)p Fu(labelsep)q Fv(})p Fw([)p Ft(refangle)r Fw(])p Fv({)q
+Fu(rotation)q Fv(}\()q Fu(x)t Fv(,)t Fu(y)t Fv(\))p Fw({)p
+Ft(stuf)o(f)7 b Fw(})591 1119 y Fy(This)12 b(places)g Fr(stuff)19
+b Fy(distance)12 b Fr(labelsep)h Fy(from)f Fx(\()p Fr(x)s Fx(,)t
+Fr(y)t Fx(\))p Fy(,)g(in)g(the)h(direction)g Fr(refangle)q
+Fy(.)591 1209 y(The)f(default)h(value)f(of)g Fr(labelsep)g
+Fy(is)g(the)h(dimension)f(register)712 1354 y Fw(\\pslabelsep)591
+1485 y Fy(Y)-5 b(ou)11 b(can)h(also)g(change)h(this)f(be)g(setting)g(the)712
+1615 y Fw(labelsep=)p Ft(dim)630 b Fl(Default:)20 b Fw(5pt)591
+1746 y Fy(parameter)12 b(\(but)f(remember)g(that)h Fs(\\uput)f
+Fy(does)f(have)i(an)f(optional)g(ar)o(gument)h(for)591 1806
+y(setting)g(parameters\).)591 1896 y(Here)f(is)h(a)g(simple)h(example:)236
+2217 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 28.45274 28.45274 1.0
+SD end
+
+@endspecial 354 2099 a
+ tx@Dict begin { 5.0 22.07246 7.7818 2.03905 45. Uput UUput } PutCoor
+PutBegin end
+ 308
+2111 a Fy(\(1,1\))354 2099 y
+ tx@Dict begin PutEnd end
+ 712 2079 a Fx(\\qdisk\(1,1\){1pt})712
+2139 y(\\uput[45]\(1,1\){\(1,1\)})591 2348 y Fy(Here)h(is)h(a)g(more)g
+(interesting)h(example)g(where)f Fs(\\uput)f Fy(is)h(used)g(to)g(make)g(a)g
+(pie)591 2408 y(chart:)699 2390 y Fm(9)p 591 2443 544 2 v 646
+2473 a Fh(9)662 2488 y Fp(PST)o(ricks)21 b(is)f(distributed)g(with)h(a)f
+(useful)g(tool)h(for)g(converting)f(data)g(to)h(piecharts:)591
+2538 y Fc(piechart.sh)p Fp(.)14 b(This)c(is)g(a)f(UNIX)h Fc(sh)g
+Fp(script)f(written)h(by)g(Denis)f(Girou.)591 2828 y Fn(Placing)g(and)h
+(rotating)g(whatever)825 b(44)p eop
+%%Page: 45 25
+24 bop 712 50 a Fx(\\psset{unit=1.2cm})712 110 y
+(\\pspicture\(-2.2,-2.2\)\(2.2,2.2\))758 170 y
+(\\pswedge[\256llstyle=solid,\256llcolor=gray]{2}{0}{70})758
+230 y(\\pswedge[\256llstyle=solid,\256llcolor=lightgray]{2}{70}{200})758
+291 y(\\pswedge[\256llstyle=solid,\256llcolor=darkgray]{2}{200}{360})758
+351 y(\\SpecialCoor)758 411 y(\\psset{framesep=1.5pt})758 471
+y(\\rput\(1.2;35\){\\psframebox*{\\small\\$9.0M}})758 531 y
+(\\uput{2.2}[45]\(0,0\){Oreo)o(s})758 592 y
+(\\rput\(1.2;135\){\\psframebox*{\\small\\$16.7M}})758 652
+y(\\uput{2.2}[135]\(0,0\){Heath})758 712 y
+(\\rput\(1.2;280\){\\psframebox*{\\small\\$23.1M}})758 772
+y(\\uput{2.2}[280]\(0,0\){M\\&M})712 832 y(\\endpspicture)1270
+1240 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+68.28644 .5 CLW mul sub 0. 70. arc closepath gsave 0.5 setgray fill
+ grestore gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+68.28644 .5 CLW mul sub 70. 200. arc closepath gsave 0.75 setgray fill
+ grestore gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+68.28644 .5 CLW mul sub 200. 360. arc closepath gsave 0.25 setgray
+fill grestore gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+1270 1240 a
+ tx@Dict begin { 40.97176 35. PtoC } PutCoor PutBegin end
+ 1212 1254 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 1.5 neg 2.41454
+neg 29.2413 9.00035 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial
+Fg($9.0M)1270 1240 y
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1240 a
+ tx@Dict begin { 75.11497 27.50993 7.7818 0.15552 45. Uput UUput }
+PutCoor PutBegin end
+ 1213 1256 a Fy(Oreos)1270
+1240 y
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin { 40.97176 135. PtoC } PutCoor PutBegin end
+ 1201 1254 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 1.5 neg 2.41454
+neg 34.49733 9.00035 .5 Frame gsave 1. setgray fill grestore end
+
+
+@endspecial Fg($16.7M)1270 1240 y
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1240 a
+ tx@Dict begin { 75.11497 27.50993 7.7818 0.09792 135. Uput UUput
+} PutCoor PutBegin end
+
+1213 1256 a Fy(Heath)1270 1240 y
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin { 40.97176 280. PtoC } PutCoor PutBegin end
+ 1201
+1254 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 1.5 neg 2.41454
+neg 34.49733 9.00035 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial Fg($23.1M)1270
+1240 y
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1240 a
+ tx@Dict begin { 75.11497 29.44531 7.7818 0.15552 280. Uput UUput
+} PutCoor PutBegin end
+ 1209 1256 a Fy(M&M)1270 1240
+y
+ tx@Dict begin PutEnd end
+ 1270 1240 a
+ tx@Dict begin PutEnd end
+ 591 1695 a Fy(Y)-5 b(ou)10 b(can)h(use)f(the)h(following)f
+(abbreviations)h(for)g Fr(refangle)q Fy(,)e(which)h(indicate)i(the)591
+1755 y(direction)h(the)f(angle)g(points:)1088 1737 y Fm(10)s(1)o(1)p
+591 1800 544 2 v 632 1830 a Fh(10)662 1845 y Fp(Using)d(the)h(abbreviations)f
+(when)g(applicable)g(is)g(more)h(ef)o(\256cient.)633 1880 y
+Fh(1)o(1)662 1895 y Fp(There)i(is)g(an)g(obsolete)f(command)h
+Fd(\\Rput)g Fp(that)g(has)f(the)h(same)f(syntax)g(as)h Fd(\\uput)g
+Fp(and)g(that)591 1945 y(works)h(almost)g(the)h(same)f(way)m(,)h(except)f
+(the)h Fb(refangle)h Fp(ar)o(gument)f(has)f(the)g(syntax)g(of)i
+Fd(\\rput)p Fp(')n(s)591 1995 y Fb(refpoint)d Fp(ar)o(gument,)c(and)h(it)f
+(gives)g(the)h(point)f(in)h Fb(stuff)14 b Fp(that)9 b(should)f(be)g(aligned)g
+(with)h Fc(\()p Fb(x)s Fc(,)t Fb(y)s Fc(\))p Fp(.)15 b(E.g.,)712
+2070 y Fc(\\qdisk\(4,0\){2pt})p @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 113.81097 0.0 2.0 SD
+ end
+
+@endspecial
+1435 2117 a Fp(\()p Fa(x;)7 b(y)p Fp(\))712 2119 y Fc
+(\\Rput[tl]\(4,0\){$\(x,)q(y\)$})591 2194 y Fp(Here)14 b(is)g(the)h
+(equivalence)e(between)h Fd(\\uput)p Fp(')n(s)h Fb(refangle)h
+Fp(abbreviations)d(and)i Fd(\\Rput)p Fp(')n(s)f Fb(refpoint)591
+2244 y Fp(abbreviations:)942 2332 y Fd(\\uput)50 b Fc(r)g(u)i(l)f(d)f(ur)i
+(ul)f(dr)f(dl)938 2392 y Fd(\\Rput)i Fc(l)f(b)f(r)55 b(t)i(bl)51
+b(br)j(tr)60 b(rl)591 2490 y Fp(Some)7 b(people)g(prefer)h
+Fd(\\Rput)p Fp(')n(s)f(convention)g(for)h(specifying)f(the)h(position)f(of)h
+Fb(stuff)14 b Fp(over)7 b Fd(\\uput)p Fp(')n(s.)591 2828 y
+Fn(Placing)i(and)h(rotating)g(whatever)825 b(45)p eop
+%%Page: 46 26
+25 bop 648 51 a Fo(Letter)50 b(Short)11 b(for)50 b(Equiv)l(.)13
+b(to)698 123 y Fx(r)100 b Fy(right)276 b(0)693 195 y Fx(u)96
+b Fy(up)294 b(90)700 267 y Fx(l)103 b Fy(left)255 b(180)693
+339 y Fx(d)96 b Fy(down)211 b(270)1296 51 y Fo(Letter)50 b(Short)12
+b(for)91 b(Equiv)l(.)12 b(to)1335 123 y Fx(ur)88 b Fy(up-right)230
+b(45)1337 195 y Fx(ul)91 b Fy(up-left)233 b(135)1337 267 y
+Fx(dl)91 b Fy(down-left)174 b(225)1335 339 y Fx(dr)88 b Fy(down-right)147
+b(315)591 468 y(The)12 b(\256rst)f(example)i(could)f(thus)g(have)g(been)h
+(written:)236 789 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 28.45274 28.45274 1.0
+SD end
+
+@endspecial
+369 648 a(\(1,1\))712 652 y Fx(\\qdisk\(1,1\){1pt})712 712
+y(\\uput[ur]\(1,1\){\(1,1\)})591 920 y Fg(Driver)c(notes:)44
+b(The)11 b(rotation)g(macros)g(use)g Ff(\\pstV)n(erb)g Fg(and)g
+Ff(\\pstrotate)p Fg(.)366 1117 y Fi(25)71 b(Repetition)591
+1239 y Fy(The)12 b(macro)712 1384 y Fw(\\multirput)p Fv(*[)p
+Fu(refpoint)t Fv(]{)p Fu(angle)q Fv(}\()p Fu(x0)r Fv(,)t Fu(y0)r
+Fv(\))p Fw(\()p Ft(x1)p Fw(,)t Ft(y1)p Fw(\){)p Ft(int)t Fw(}{)p
+Ft(st)q(uf)o(f)7 b Fw(})591 1515 y Fy(is)k(a)h(variant)g(of)g
+Fs(\\rput)f Fy(that)h(puts)g(down)f Fr(int)k Fy(copies,)d(starting)g(at)g
+Fx(\()p Fr(x0)r Fx(,)t Fr(y0)r Fx(\))f Fy(and)h(ad-)591 1575
+y(vancing)f(by)g Fx(\()p Fr(x1)p Fx(,)t Fr(y1)p Fx(\))g Fy(each)h(time.)18
+b Fx(\()p Fr(x0)r Fx(,)t Fr(y0)r Fx(\))10 b Fy(and)h Fx(\()p
+Fr(x1)p Fx(,)t Fr(y1)p Fx(\))g Fy(are)h(always)f(interpreted)591
+1635 y(as)g(Cartesian)i(coordinates.)18 b(For)11 b(example:)165
+1890 y(*)201 1878 y(*)236 1866 y(*)272 1854 y(*)307 1843 y(*)342
+1831 y(*)378 1819 y(*)413 1807 y(*)449 1795 y(*)484 1784 y(*)520
+1772 y(*)555 1760 y(*)712 1807 y Fx(\\multirput\(.5,0\)\(.3,.1\){12}{*})591
+2004 y Fy(If)g(you)h(want)g(copies)g(of)g(pure)g(graphics,)g(it)g(is)g(more)g
+(ef)o(\256cient)h(to)f(use)712 2150 y Fw(\\multips)p Fv({)p
+Fu(angle)q Fv(}\()p Fu(x0)r Fv(,)t Fu(y0)r Fv(\))p Fw(\()p
+Ft(x1)p Fw(,)t Ft(y1)p Fw(\){)p Ft(int)t Fw(}{)p Ft(graphics)r
+Fw(})591 2281 y Fr(graphics)c Fy(can)g(be)h(one)f(or)g(more)g(of)g(the)h
+(pure)f(graphics)g(objects)h(described)f(in)h(Part)591 2341
+y(II,)k(or)g Fs(\\pscustom)p Fy(.)19 b(Note)14 b(that)f Fs(\\multips)h
+Fy(has)f(the)g(same)h(syntax)f(as)g Fs(\\multirput)p Fy(,)591
+2401 y(except)18 b(that)g(there)g(is)f(no)g Fr(refpoint)k Fy(ar)o(gument)d
+(\(since)f(the)h(graphics)g(are)g(zero)591 2461 y(dimensional)10
+b(anyway\).)16 b(Also,)10 b(unlike)g Fs(\\multirput)p Fy(,)h(the)f
+(coordinates)g(can)g(be)g(of)591 2521 y(any)f(type.)17 b(An)9
+b Fx(Overfull)h(\\hbox)f Fy(warning)h(indicates)g(that)h(the)f
+Fr(graphics)g Fy(ar)o(gument)591 2581 y(contains)i(extraneous)g(output)g(or)g
+(space.)17 b(For)12 b(example:)591 2828 y Fn(Repetition)1148
+b(46)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/graphics/pstricks/doc/pst-usr3.ps b/obsolete/graphics/pstricks/doc/pst-usr3.ps
new file mode 100644
index 0000000000..e4da11b2bf
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/pst-usr3.ps
@@ -0,0 +1,2877 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.491 Copyright 1986, 1992 Radical Eye Software
+%%Title: pst-user.dvi
+%%Pages: 24 1
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Helvetica Times-Roman Helvetica-Bold Helvetica-Oblique
+%%+ Helvetica-BoldOblique Times-Italic Times-Bold Symbol
+%%EndComments
+%DVIPSCommandLine: dvips pst-user.dvi -Pport -o pst-usr3.ps -p47 -l70
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
+S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div
+/hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley
+0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
+product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
+(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
+rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
+ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
+/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
+B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
+rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
+B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
+/eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1993/3/12. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+pathforall z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
+sub y mul setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
+stroke /y1 y1 a add def } repeat grestore } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap systemdict /currentstrokeadjust known {
+currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
+0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
+bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
+repeat grestore } def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
+/SD { 0 360 arc fill } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
+c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
+div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
+div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
+def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
+div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
+div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
+{ 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
+def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
+b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
+add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
+f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
+add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
+setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
+cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
+moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
+add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
+if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
+h add def } loop grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+CP 4 2 roll T moveto } def
+/PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
+moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
+/IfVisible false def } if } ifelse } def
+/InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
+grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
+end
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Created 1993/3/12. Source file was pst-node.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@NodeDict 200 dict def tx@NodeDict begin
+/NewNode { gsave /next ED dict dup 3 -1 roll ED begin tx@Dict begin STV
+CP T exec end /NodeMtrx CM def next end grestore } def
+/InitPnode { /Y ED /X ED /NodePos { Nodesep Cos mul Nodesep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { Nodesep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r Nodesep add def } { /dx l Nodesep sub def
+} ifelse Sin 0 gt { /dy u Nodesep add def } { /dy d Nodesep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /r ED r mul neg /l ED /r r l add def /X l neg def { neg /d
+ED /u ED /Y 0 def } { neg /Y ED Y sub /u ED u mul neg /d ED /u u d add
+def /Y Y d sub def } ifelse /NodePos { GetRnodePos } def } def
+/InitRNode { /Y ED /X ED /r ED /X r 2 div X add def /r r X sub def /l X
+neg def Y add neg /d ED Y sub /u ED /NodePos { GetRnodePos } def } def
+/GetOnodePos { /ww w Nodesep add def /hh h Nodesep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/GetAngle { nodeA GetCenter nodeB GetCenter 3 -1 roll sub 3 1 roll sub
+neg Atan } def
+/GetEdge { begin /Nodesep ED dup 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED NodePos Y add exch X add exch
+NodeMtrx transform CM itransform end 4 2 roll 1 index 0 eq { pop pop } {
+2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse } def
+/GetPos { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED OffsetB
+AngleB NodesepB nodeB GetEdge /y2 ED /x2 ED } def
+/InitNC { /nodeB ED /nodeA ED /NodesepB ED /NodesepA ED /OffsetB ED
+/OffsetA ED tx@NodeDict nodeA known tx@NodeDict nodeB known and dup {
+/nodeA nodeA load def /nodeB nodeB load def } if } def
+/LineMP { 4 copy 1 t sub mul exch t mul add 3 1 roll 1 t sub mul exch t
+mul add exch 6 2 roll sub 3 1 roll sub Atan } def
+/NCCoor { GetAngle /AngleA ED /AngleB AngleA 180 add def GetPos /LPutVar
+[ x2 x1 y2 y1 ] cvx def /LPutPos { LPutVar LineMP } def x1 y1 x2 y2 }
+def
+/NCLine { NCCoor tx@Dict begin ArrowB 4 2 roll ArrowA lineto end } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan } def
+/GetArms { /x1a armA AngleA cos mul x1 add def /y1a armA AngleA sin mul
+y1 add def /x2a armB AngleB cos mul x2 add def /y2a armB AngleB sin mul
+y2 add def } def
+/NCCurve { GetPos x1 x2 sub y1 y2 sub Pyth 2 div dup 3 -1 roll mul /armA
+ED mul /armB ED GetArms x1a y1a x1 y1 tx@Dict begin ArrowA end x2a y2a
+x2 y2 tx@Dict begin ArrowB end curveto /LPutVar [ x1 y1 x1a y1a x2a y2a
+x2 y2 ] cvx def /LPutPos { t LPutVar BezierMidpoint } def } def
+/AnglesMP { LPutVar t 3 gt { /t t 3 sub def } { t 2 gt { /t t 2 sub def
+10 -2 roll } { t 1 gt { /t t 1 sub def 10 -4 roll } { 10 4 roll } ifelse
+} ifelse } ifelse 6 { pop } repeat 3 -1 roll exch LineMP } def
+/NCAngles { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform exch pop mtrx itransform /y0 ED /x0
+ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne { x1 y1 }
+if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a y2a x0 y0 x1a y1a
+x1 y1 ] cvx def /LPutPos { AnglesMP } def } def
+/NCAngle { GetPos /x2a armB AngleB cos mul x2 add def /y2a armB AngleB
+sin mul y2 add def /mtrx AngleA matrix rotate def x2a y2a mtrx transform
+pop x1 y1 mtrx transform exch pop mtrx itransform /y0 ED /x0 ED mark
+armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1 tx@Dict begin false Line end
+/LPutVar [ x2 y2 x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def /LPutPos { AnglesMP
+} def } def
+/NCBar { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform pop sub dup 0 mtrx itransform 3 -1
+roll 0 gt { /y2a exch y2a add def /x2a exch x2a add def } { /y1a exch
+neg y1a add def /x2a exch neg x2a add def } ifelse mark x2 y2 x2a y2a
+x1a y1a x1 y1 tx@Dict begin false Line end /LPutVar [ x2 y2 x2 y2 x2a
+y2a x1a y1a x1 y1 ] cvx def /LPutPos { LPutVar AnglesMP } def } def
+/NCDiag { GetPos GetArms mark x2 y2 x2a y2a x1a y1a x1 y1 tx@Dict begin
+false Line end /LPutVar [ x2 y2 x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def
+/LPutPos { AnglesMP } def } def
+/NCDiagg { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED /x1a armA
+AngleA cos mul x1 add def /y1a armA AngleA sin mul y1 add def nodeB
+GetCenter y1a sub exch x1a sub Atan 180 add /AngleB ED OffsetB AngleB
+NodesepB nodeB GetEdge /y2 ED /x2 ED mark x2 y2 x1a y1a x1 y1 tx@Dict
+begin false Line end /LPutVar [ x2 y2 x2 y2 x2 y2 x1a y1a x1 y1] cvx def
+/LPutPos { AnglesMP } def } def
+/LoopMP { /t t abs def [ LPutVar ] length 2 div 1 sub dup t lt { /t ED }
+{ pop } ifelse mark LPutVar t cvi { /t t 1 sub def pop pop } repeat
+counttomark 1 add 4 roll cleartomark 3 -1 roll exch LineMP } def
+/NCLoop { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform loopsize add /y1b ED /x1b ED /x2b x2a y2a mtrx transform pop
+def x2b y1b mtrx itransform /y2b ED /x2b ED x1b y1b mtrx itransform /y1b
+ED /x1b ED mark armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a y1a
+armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a
+y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def /LPutPos { LoopMP } def }
+def
+/NCCircle { nodeA GetCenter 0 0 NodesepA nodeA GetEdge pop 3 1 roll /Y ED
+/X ED X sub 2 div dup 2 exp r r mul sub abs sqrt atan 2 mul /a ED r
+AngleA 90 add PtoC Y add exch X add exch 2 copy /LPutVar [ 4 2 roll r a
+] def /LPutPos { LPutVar aload pop t 360 mul add dup 5 1 roll 90 sub
+PtoC 3 -1 roll add 3 1 roll add exch 3 -1 roll } def r AngleA 90 sub a
+add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c
+57.2957 r Div def /y ED /x ED } def
+/LPutCoor { tx@NodeDict /LPutPos known { gsave LPutPos tx@Dict begin
+/langle ED CM 3 1 roll STV CP 3 -1 roll sub neg 3 1 roll sub exch moveto
+setmatrix CP end grestore } { 0 0 tx@Dict /langle 0 def end } ifelse }
+def
+end
+%%EndProcSet
+%%BeginProcSet: pst-coil.pro
+%!
+% PostScript prologue for pst-coil.tex.
+% Created 1993/3/12. Source file was pst-coil.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@CoilDict 40 dict def tx@CoilDict begin
+/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos
+lineto } def
+/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED
+/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0
+sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos
+Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div
+w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h
+mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for
+EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP
+TotalLength 0 ArrowB lineto } def
+/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED
+/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale
+BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add
+BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc
+EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def
+/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED
+/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED
+Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul
+sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add
+def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat
+TotalLength ArmA sub 0 TotalLength 0 } def
+end
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index
+/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5
+-1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin
+Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{
+FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics /Metrics
+currentdict end def[2 index currentdict end definefont 3 -1 roll makefont
+/setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4
+index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding
+exch def}def end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 139[9
+17 11 1[19 19 19 4[8 7[19 97[{}8 34.166969 /Helvetica-Oblique
+rf /Fb 130[11 1[11 5[19 9 17 11 1[19 19 19 1[8 2[8 2[9 19 2[19
+19 3[9 9 9 8[25 5[19 13[20 1[20 11[19 3[9 2[11 11 40[{}26 34.166969
+/Helvetica rf /Fc 143[50 50 2[28 42[72 65[{}4 99.520683 /Times-Roman
+rf /Fd 140[12 12 9[16 16 9 3[16 16 97[{}7 32.000225 /Times-Italic
+rf /Fe 136[32 21 24 13 19 19 1[24 24 24 35 13 2[13 1[24 13
+21 24 21 24 24 8[29 40 3[24 29 1[29 1[32 9[35 32 29 29 5[16
+16 11[12 46[{}32 48.000336 /Times-Italic rf /Ff 136[50 2[23
+4[34 38 4[19 38 34 23 31 18[50 5[46 7[50 68[{}12 69.120476
+/Times-Bold rf /Fg 137[21 1[12 21 14 1[23 23 23 1[10 2[10 3[21
+23 21 23 21 4[10 5[25 8[31 9[27 1[27 65[{}19 37.412769 /Helvetica-Bold
+rf /Fh 138[22 2[17 3[22 4[12 22 2[19 22 2[22 12[24 12[32 71[{}10
+43.800289 /Times-Italic rf /Fi 67[44 188[{}1 44.027897 /Symbol
+rf /Fj 81[27 57[16 19 21 2[24 27 1[13 2[13 3[21 27 21 27 24
+18[35 4[19 1[37 37[16 33[{}17 48.000336 /Times-Bold rf /Fk
+135[47 3[28 47 33 1[52 52 52 1[24 47 1[24 3[47 52 47 1[47 12[52
+56 4[61 10[61 67[{}18 85.007408 /Helvetica-Bold rf /Fl 169[245
+12[102 73[{}2 368.041595 /Helvetica-Bold rf /Fm 138[32 19 7[16
+5[19 25 3[29 28[41 9[19 58[{}8 57.600342 /Times-Bold rf /Fn
+135[19 2[21 11 3[21 3[9 15[9 9[25 2[26 1[28 21 7[25 6[20 7[19
+19 2[19 19 1[9 46[{}17 34.166969 /Helvetica-Bold rf /Fo 136[41
+2[16 22 19 2[29 29 45 16 2[16 1[29 1[25 1[25 29 25 20[35 7[41
+21[14 46[{}17 57.600342 /Times-Roman rf /Fp 80[29 58[16 22
+22 1[29 29 29 1[16 2[16 3[25 1[25 1[29 10[35 10[38 2[41 3[41
+68[{}16 57.600342 /Times-Italic rf /Fq 81[22 52[20 20 29 20
+20 11 16 13 20 20 20 20 31 11 20 1[11 20 20 13 18 20 18 20
+18 12[24 22 2[22 6[13 2[22 14[20 5[20 2[10 13 10 4[13 39[{}36
+40.000278 /Times-Roman rf /Fr 202[14 14 14 14 14 49[{}5 28.000196
+/Times-Roman rf /Fs 202[16 16 16 16 16 49[{}5 32.000225 /Times-Roman
+rf /Ft 134[20 20 2[23 11 20 14 1[23 23 23 34 9 2[9 23 23 11
+23 23 20 1[23 30[27 27 14[23 23 23 48[{}24 41.000366 /Helvetica-Oblique
+rf /Fu 130[19 1[19 1[27 27 2[30 16 27 19 1[30 30 30 44 14 2[14
+30 30 16 27 30 27 30 27 30[35 35 14[27 27 1[14 2[14 2[16 16
+40[{}30 49.200378 /Helvetica-BoldOblique rf /Fv 134[25 25 35
+1[27 14 25 16 1[27 27 27 41 11 2[11 1[27 14 27 27 1[27 27 46[27
+27 27 48[{}22 49.200378 /Helvetica-Oblique rf /Fw 130[16 1[16
+6[14 3[27 18[14 1[14 41[27 27 3[14 1[19 16 16 40[{}12 49.200378
+/Helvetica rf /Fx 135[19 1[19 1[10 19 12 1[21 21 21 31 8 19
+1[8 21 21 1[21 21 19 21 21 4[10 7[23 25 27 3[27 7[23 2[27 1[25
+7[21 21 21 21 21 21 21 21 21 21 48[{}37 37.412769 /Helvetica
+rf /Fy 133[35 1[39 3[24 39 27 1[43 43 43 63 20 2[20 43 43 1[39
+43 39 43 39 14[51 3[51 7[43 2[51 1[51 7[39 39 39 39 2[39 39
+39 39 48[{}31 70.862267 /Helvetica-Bold rf /Fz 47[44 21[19
+11[24 3[19 47[19 22 22 32 22 22 12 17 15 1[22 22 22 34 12 22
+1[12 22 22 15 19 22 19 22 19 8[32 1[32 1[27 24 2[24 32 32 1[27
+2[15 3[27 32 29 1[32 6[12 22 22 22 22 22 22 22 22 22 22 1[11
+15 11 4[15 39[{}56 43.800289 /Times-Roman rf /FA 130[19 1[19
+25 27 27 38 27 30 16 27 19 1[30 30 30 44 14 27 1[14 30 30 16
+27 30 27 30 27 4[14 9[35 2[38 2[30 7[35 35 35 35 3[29 4[27
+27 27 27 27 27 1[27 27 1[14 16 14 2[16 16 40[{}48 49.200378
+/Helvetica-Bold rf /FB 81[25 51[20 23 23 32 23 25 14 23 16
+1[25 25 25 36 11 23 11 11 25 25 14 23 25 23 25 23 4[11 9[29
+2[32 2[25 7[29 29 29 29 3[24 15[14 45[{}36 41.000366 /Helvetica-Bold
+rf /FC 59[16 9[21 8[24 1[27 27 3[21 47[21 24 24 35 24 24 13
+19 16 24 24 24 24 37 13 24 13 13 24 24 16 21 24 21 24 21 7[35
+35 45 1[35 29 27 32 35 27 35 35 1[29 35 19 16 35 35 27 29 35
+32 32 35 1[21 3[13 13 24 2[24 24 24 24 24 24 24 13 12 16 12
+2[16 16 16 2[24 2[16 33[{}75 48.000336 /Times-Roman rf /FD
+69[14 11[20 48[14 11 14 20 20 20 29 20 23 11 20 14 23 23 23
+23 34 9 20 9 9 23 23 11 23 23 20 23 23 9 23 1[11 11 11 1[27
+27 39 1[29 25 27 29 32 1[32 29 1[23 27 1[11 29 32 25 27 29
+29 27 27 41 23 24 24 24 1[11 23 23 23 23 23 23 23 23 23 23
+1[11 14 11 24 16 14 14 9 27 36 23 23 1[11 33[{}86 41.000366
+/Helvetica rf /FE 67[58 188[{}1 57.899727 /Symbol rf /FF 67[48
+24[26 163[{}2 48.249817 /Symbol rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 47 1
+0 bop 118 80 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 0.0 T 8 { gsave gsave 1.5 SLW 0. setgray
+ /ArrowA { moveto } def /ArrowB { } def [ 14.22635 0.0 10.66975 -7.11317
+3.55658 7.11317 0.0 0.0 /Lineto /lineto load def false Line gsave
+1.5 SLW 0. setgray 0 setlinecap stroke grestore grestore grestore
+14.22635 0.0 T } repeat end
+
+@endspecial 712 30
+a FD(\\def\\zigzag{\\psline\(0,0\)\(.5,1\)\(1.5,-1\)\(2,0\)})o(\045)712
+90 y(\\psset{unit=.25,linewidth=1.5pt})712 150 y
+(\\multips\(0,0\)\(2,0\){8}{\\zigzag})591 281 y FC(PST)n(ricks)16
+b(is)g(distributed)h(with)g(a)f(much)h(more)g(general)g(loop)g(macro,)h
+(called)591 341 y FB(\\multido)p FC(.)38 b(Y)-5 b(ou)19 b(must)g(input)g(the)
+g(\256le)g FD(multido.tex)h FC(or)e FD(multido.sty)p FC(.)39
+b(See)19 b(the)325 365 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial
+236 383 a FA(multido)591 402 y FC(documentation)11 b FD(multido.doc)f
+FC(for)g(details.)18 b(Here)10 b(is)g(a)h(sample)g(of)f(what)g(you)g(can)591
+462 y(do:)712 584 y FD(\\begin{pspicture}\(-3.4,-3.4\)\(3)o(.4,3.4\))758
+644 y(\\newgray{mygray}{0})43 b(\045)23 b(Initialize)h(`mygray')e(for)h
+(bene\256t)758 704 y(\\psset{\256llstyle=solid,\256llcolor=mygray})47
+b(\045)23 b(of)g(this)g(line.)758 764 y(\\SpecialCoor)758 824
+y(\\degrees[1.1])758 884 y(\\multido{\\n=0.0+.1}{1)m(1}{\045)803
+945 y(\\newgray{mygray}{\\n})803 1005 y(\\rput{\\n}{\\pswedge{3}{-.05}{)o
+(.05}})803 1065 y(\\uput{3.2}[\\n]\(0,0\){\\small\\n}})712
+1125 y(\\end{pspicture})1270 1611 y
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin 0.0 360 1.1 div mul Rot end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.0 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.0 360 1.1 div mul neg Rot end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611
+a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.0 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.0)1270 1611 y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270
+1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin 0.1 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.1 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 1270
+1611 a
+ tx@Dict begin 0.1 360 1.1 div mul neg Rot end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.1 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.1)1270
+1611 y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin 0.2 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.2 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.2 360 1.1 div mul neg Rot end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611
+a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.2 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.2)1270 1611 y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270
+1611 a
+ tx@Dict begin 0.3 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.3 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.3 360 1.1 div mul neg Rot end
+ 1270
+1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.3 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.3)1270 1611
+y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin 0.4 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.4 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.4 360 1.1 div mul neg Rot end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611
+a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.4 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.4)1270 1611 y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270
+1611 a
+ tx@Dict begin 0.5 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.5 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.5 360 1.1 div mul neg Rot end
+ 1270
+1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.5 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.5)1270 1611
+y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin 0.6 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.6 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.6 360 1.1 div mul neg Rot end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611
+a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.6 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.6)1270 1611 y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270
+1611 a
+ tx@Dict begin 0.7 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.7 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.7 360 1.1 div mul neg Rot end
+ 1270
+1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.7 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.7)1270 1611
+y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin 0.8 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.8 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.8 360 1.1 div mul neg Rot end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611
+a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 0.8 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.8)1270 1611 y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270
+1611 a
+ tx@Dict begin 0.9 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 0.9 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial 1270 1611 a
+ tx@Dict begin 0.9 360 1.1 div mul neg Rot end
+ 1270
+1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.23126 0.9 360 1.1 div
+mul Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(0.9)1270 1611
+y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611 a
+ tx@Dict begin 1.0 360 1.1 div mul Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 2 copy moveto
+85.35823 .5 CLW mul sub -0.05 360 1.1 div mul 0.05 360 1.1 div mul
+arc closepath gsave 1.0 setgray fill grestore gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial 1270 1611 a
+ tx@Dict begin 1.0 360 1.1 div mul neg Rot end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin { 0.0 0.0 } PutCoor PutBegin end
+ 1270 1611
+a
+ tx@Dict begin { 91.04869 13.14006 7.10089 0.1419 1.0 360 1.1 div mul
+ Uput UUput } PutCoor PutBegin end
+ 1243 1626 a Fz(1.0)1270 1611 y
+ tx@Dict begin PutEnd end
+ 1270 1611 a
+ tx@Dict begin PutEnd end
+ 591 2145 a FC(All)12
+b(of)f(these)i(loop)f(macros)g(can)g(be)g(nested.)366 2339
+y Fy(26)71 b(Axes)591 2459 y FC(The)15 b(axes)f(command)i(described)f(in)g
+(this)g(section)g(is)f(de\256ned)h(in)g FD(pst-plot.tex)h FC(/)325
+2483 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 235 2501 a FA(pst-plot)591
+2520 y FD(pst-plot.sty)p FC(,)i(which)d(you)g(must)h(input)g(\256rst.)28
+b FD(pst-plot.tex)p FC(,)17 b(in)f(turn,)g(will)h(auto-)591
+2580 y(matically)g(input)e FD(multido.tex)p FC(,)i(which)e(is)g(used)g(for)g
+(putting)h(the)g(labels)f(on)g(the)591 2640 y(axes.)591 2828
+y Fx(Axes)1232 b(47)p eop
+%%Page: 48 2
+1 bop 591 50 a FC(The)12 b(macro)g(for)g(making)g(axes)g(is:)712
+195 y FA(\\psaxes)p Fw(*[)p Fv(par)5 b Fw(]{)p Fv(arrows)q
+Fw(}\()q Fv(x0)r Fw(,)t Fv(y0)r Fw(\)\()p Fv(x1)p Fw(,)t Fv(y1)p
+Fw(\))p FA(\()p Fu(x2)t FA(,)t Fu(y2)t FA(\))591 326 y FC(The)16
+b(coordinates)h(must)f(be)g(Cartesian)h(coordinates.)30 b(They)17
+b(work)e(the)i(same)591 386 y(way)c(as)h(with)h FB(\\psgrid)p
+FC(.)24 b(That)14 b(is,)h(if)f(we)g(imagine)h(that)g(the)g(axes)f(are)g
+(enclosed)591 446 y(in)d(a)g(rectangle,)h FD(\()p Ft(x1)p FD(,)t
+Ft(y1)p FD(\))f FC(and)g FD(\()p Ft(x2)s FD(,)t Ft(y2)s FD(\))f
+FC(are)i(opposing)e(corners)g(of)h(the)h(rectangle.)591 506
+y(\(I.e.,)f(the)i(x-axis)e(extends)h(from)g Ft(x1)g FC(to)g
+Ft(x2)i FC(and)e(the)g(y-axis)g(extends)g(from)g Ft(y1)g FC(to)591
+567 y Ft(y2)s FC(.\))k(The)d(axes)f(intersect)h(at)f FD(\()p
+Ft(x0)r FD(,)t Ft(y0)r FD(\))p FC(.)17 b(For)11 b(example:)118
+1006 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 113.81097 85.35823 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial 354 888 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 1.2 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def 56.90549 0 -56.90549
+ 0 ArrowA CP 4 2 roll ArrowB L pop pop gsave 1.2 SLW 0. setgray 0
+setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.2 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def 56.90549 0 exch -28.45274
+ 0 exch ArrowA CP 4 2 roll ArrowB L pop pop gsave 1.2 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial
+118 1006 a
+ tx@Dict begin tx@NodeDict begin { 113.81097 85.35823 } /TheNodeB
+10 { InitPnode } NewNode end end
+ 456 764 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.15988
+neg 35.32098 10.21277 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial
+456 764 a
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 7.21277 2.15988
+false .5 32.32098 InitRnode } NewNode end end
+ FD(\()p Ft(x2)s FD(,)t Ft(y2)s FD(\))118 1006 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 118
+1006 a
+ tx@Dict begin tx@NodeDict begin { 56.90549 28.45274 } /TheNodeB 10
+{ InitPnode } NewNode end end
+ 139 796 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.15988
+neg 34.90768 10.21277 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial 139
+796 a
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 7.21277 2.15988
+false .5 31.90768 InitRnode } NewNode end end
+ FD(\()p Ft(x0)r FD(,)t Ft(y0)r FD(\))118 1006 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 118 1006
+a
+ tx@Dict begin tx@NodeDict begin { 0.0 0.0 } /TheNodeB 10 { InitPnode
+ } NewNode end end
+ 97 x @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.15988
+neg 34.07129 10.21277 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial 118 1103 a
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 7.21277 2.15988
+false .5 31.07129 InitRnode } NewNode end end
+ FD(\()p
+Ft(x1)p FD(,)t Ft(y1)p FD(\))118 1006 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 712 809 a FD
+(\\psaxes[linewidth=1.2pt,labels=none,)758 870 y
+(ticks=none]{<->}\(2,1\)\(0,0\)\(4,3\))591 1137 y FC(If)e FD(\()p
+Ft(x0)r FD(,)t Ft(y0)r FD(\))f FC(is)i(omitted,)h(then)e(the)h(origin)g(is)f
+FD(\()p Ft(x1)p FD(,)t Ft(y1)p FD(\))p FC(.)16 b(If)9 b(both)h
+FD(\()p Ft(x0)r FD(,)t Ft(y0)r FD(\))e FC(and)i FD(\()p Ft(x1)p
+FD(,)t Ft(y1)p FD(\))591 1197 y FC(are)16 b(omitted,)i FD(\(0,0\))d
+FC(is)h(used)g(as)g(the)g(default.)30 b(For)16 b(example,)i(when)d(the)i
+(axes)591 1257 y(enclose)12 b(a)g(single)g(orthont,)g(only)g
+FD(\()p Ft(x2)s FD(,)t Ft(y2)s FD(\))f FC(is)h(needed:)213
+1531 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def 91.04907 0 0.0 0 ArrowA CP 4 2 roll ArrowB L pop pop gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def 45.52454 0 exch 0.0 0 exch ArrowA CP 4 2 roll ArrowB L pop pop
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n 3 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial
+202 1596 a Fz(0)72 b(1)h(2)f(3)213 1531 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 90 rotate /n 1 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+
+@endspecial 156 1546 a(0)156 1451 y(1)712 1471 y FD(\\psaxes{->}\(4,2\))591
+1709 y FC(Labels)15 b(\(numbers\))f(are)h(put)g(next)g(to)g(the)g(axes,)g(on)
+g(the)g(same)g(side)f(as)h Ft(x1)g FC(and)591 1769 y Ft(y1)p
+FC(.)24 b(Thus,)14 b(if)h(we)f(enclose)g(a)h(dif)o(ferent)g(orthont,)g(the)g
+(numbers)f(end)g(up)g(in)g(the)591 1830 y(right)e(place:)213
+1962 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def 91.04907 0 0.0 0 ArrowA CP 4 2 roll ArrowB L pop pop gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def -45.52454 0 exch 0.0 0 exch ArrowA CP 4 2 roll ArrowB L pop pop
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n 3 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial
+202 1926 a Fz(0)72 b(1)h(2)f(3)213 1962 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 90 rotate /n -1 def
+/dx 22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0
+CLW 2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+
+@endspecial 156 1976 a(0)141 2071 y(-1)712 2043 y FD(\\psaxes{->}\(4,-2\))
+591 2282 y FC(Also,)10 b(if)i(you)f(set)h(the)g FB(arrows)e
+FC(parameter)n(,)j(the)f(\256rst)f(arrow)g(is)g(used)h(for)f(the)h(tips)591
+2342 y(at)j Ft(x1)g FC(and)g Ft(y1)p FC(,)g(while)g(the)h(second)e(arrow)h
+(is)f(used)h(for)f(the)i(tips)e(at)i Ft(x2)h FC(and)e Ft(y2)s
+FC(.)591 2402 y(Thus,)e(in)g(the)h(preceding)g(examples,)g(the)g(arrowheads)f
+(ended)g(up)g(in)h(the)f(right)591 2462 y(place)f(too.)776
+2444 y Fs(12)p 591 2507 544 2 v 632 2537 a Fr(12)662 2552 y
+Fq(Including)c(a)f(\256rst)h(arrow)g(in)f(these)g(examples)f(would)i(have)f
+(had)g(no)h(ef)o(fect)f(because)f(arrows)591 2602 y(are)j(never)h(drawn)f(at)
+h(the)g(origin.)591 2828 y Fx(Axes)1232 b(48)p eop
+%%Page: 49 3
+2 bop 591 50 a FC(When)16 b(the)h(axes)g(don')o(t)f(just)h(enclose)g(an)g
+(orthont,)h(that)f(is,)g(when)g(the)g(origin)591 110 y(is)h(not)h(at)g(a)g
+(corner)n(,)h(there)f(is)g(some)f(discretion)h(as)g(to)g(where)f(the)h
+(numbers)591 170 y(should)11 b(go.)18 b(The)12 b(rules)g(for)g(positioning)h
+(the)f(numbers)g(and)g(arrows)g(described)591 230 y(above)f(still)i(apply)m
+(,)f(and)f(so)g(you)h(can)g(position)g(the)g(numbers)f(as)g(you)h(please)g
+(by)591 291 y(switching)f Ft(y1)i FC(and)f Ft(y2)s FC(,)f(or)h
+Ft(x1)g FC(and)g Ft(x2)s FC(.)17 b(For)11 b(example,)i(compare)354
+612 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def 56.90567 0 -56.90567
+ 0 ArrowA CP 4 2 roll ArrowB L pop pop gsave 0.8 SLW 0. setgray 0
+setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def 56.90567 0 exch 0.0 0 exch ArrowA CP 4 2 roll ArrowB L pop pop
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n 2 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial
+343 676 a Fz(0)73 b(1)f(2)354 612 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n -2 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+
+@endspecial 242 676 a(-1)-132 b(-2)354 612 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 90 rotate /n 2 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial 298 532 a(1)298 438 y(2)712 528 y
+FD(\\psaxes{<->}\(0,0\)\(-2.5,0\)\(2.5,2.5\))591 790 y FC(with)12
+b(what)f(we)h(get)h(when)e Ft(x1)h FC(and)g Ft(x2)j FC(are)d(switched:)354
+1111 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def -56.90567 0 56.90567
+ 0 ArrowA CP 4 2 roll ArrowB L pop pop gsave 0.8 SLW 0. setgray 0
+setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def 56.90567 0 exch 0.0 0 exch ArrowA CP 4 2 roll ArrowB L pop pop
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n -2 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial
+343 1175 a Fz(0)-123 b(-1)-132 b(-2)354 1111 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n 2 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial 438 1175 a(1)72 b(2)354 1111 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 90 rotate /n 2 def /dx
+22.76227 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial 389 1031 a(1)389 937 y(2)712 1027
+y FD(\\psaxes{<->}\(0,0\)\(2.5,0\)\(-2.5,2.5\))591 1289 y FB(\\psaxes)7
+b FC(puts)h(the)i(ticks)f(and)f(numbers)h(on)f(the)h(axes)g(at)g(regular)g
+(intervals,)h(using)591 1349 y(the)i(following)g(parameters:)p
+713 1436 1114 2 v 712 1534 2 98 v 738 1499 a Fp(Horitontal)p
+1004 1534 V 58 w(V)-6 b(ertical)p 1251 1534 V 60 w(D\257t)p
+1387 1534 V 50 w(Description)p 1826 1534 V 712 1624 2 90 v
+760 1597 a FA(Ox=num)p 1004 1624 V 72 w(Oy=num)p 1251 1624
+V 78 w Fw(0)p 1387 1624 V 80 w Fo(Label)15 b(at)g(origin.)p
+1826 1624 V 712 1713 V 761 1686 a FA(Dx=num)p 1004 1713 V 75
+w(Dy=num)p 1251 1713 V 80 w Fw(1)p 1387 1713 V 80 w Fo(Label)g(increment.)p
+1826 1713 V 712 1803 V 772 1776 a FA(dx=dim)p 1004 1803 V 96
+w(oy=dim)p 1251 1803 V 70 w Fw(0pt)p 1387 1803 V 59 w Fo(Dist)g(btwn)f
+(labels.)p 1826 1803 V 713 1805 1114 2 v 591 1912 a FC(When)g
+FB(dx)g FC(is)g(0,)h FD(Dx\\psxunit)h FC(is)e(used)g(instead,)h(and)g
+(similarly)g(for)f FB(dy)p FC(.)24 b(Hence,)591 1972 y(the)12
+b(default)h(values)f(of)g FD(0pt)f FC(for)h FB(dx)g FC(and)g
+FB(dy)f FC(are)i(not)f(as)g(peculiar)h(as)e(they)i(seem.)591
+2061 y(Y)-5 b(ou)15 b(have)i(to)f(be)g(very)g(careful)h(when)f(setting)h
+FB(Ox)p FC(,)f FB(Dx)p FC(,)i FB(Oy)d FC(and)h FB(Dy)h FC(to)f(non-)591
+2121 y(integer)22 b(values.)47 b FD(multido.tex)22 b FC(increments)g(the)g
+(labels)h(using)e(rudimentary)591 2181 y(\256xed-point)14 b(arithmetic,)i
+(and)e(it)h(will)g(come)f(up)g(with)h(the)f(wrong)f(answer)h(un-)591
+2242 y(less)h FB(Ox)g FC(and)h FB(Dx)p FC(,)g(or)g FB(Oy)f
+FC(and)h FB(Dy)p FC(,)g(have)g(the)g(same)g(number)g(of)g(digits)g(to)f(the)
+591 2302 y(right)g(of)g(the)h(decimal.)28 b(The)16 b(only)f(exception)h(is)f
+(that)h FB(Ox)f FC(or)g FB(Oy)f FC(can)i(always)591 2362 y(be)g(an)g(integer)
+n(,)h(even)g(if)f FB(Dx)g FC(or)g FB(Dy)g FC(is)g(not.)29 b(\(The)16
+b(converse)g(does)g(not)g(work,)591 2422 y(however)m(.\))781
+2404 y Fs(13)p 591 2465 544 2 v 632 2495 a Fr(13)662 2510 y
+Fq(For)11 b(example,)f Fn(Ox=1.0)i Fq(and)e Fn(Dx=1.4)g Fq(is)h(okay)m(,)f
+(as)g(is)h Fn(Ox=1)f Fq(and)h Fn(Dx=1.4)p Fq(,)f(but)h Fn(Ox=1.4)g
+Fq(and)591 2560 y Fn(Dx=1)p Fq(,)j(or)h Fn(Ox=1.4)g Fq(and)f
+Fn(Dx=1.15)p Fq(,)h(is)f(not)h(okay)m(.)28 b(If)15 b(you)f(get)g(this)g
+(wrong,)h(PST)o(ricks)g(won')o(t)591 2610 y(complain,)9 b(but)h(you)f(won')o
+(t)i(get)e(the)h(right)g(labels)f(either)n(.)591 2828 y Fx(Axes)1232
+b(49)p eop
+%%Page: 50 4
+3 bop 591 50 a FC(Note)16 b(that)g FB(\\psaxes)p FC(')m(s)f(\256rst)g
+(coordinate)i(ar)o(gument)g(determines)g(the)f(physical)591
+110 y(position)10 b(of)h(the)g(origin,)g(but)g(it)g(doesn')o(t)f(af)o(fect)i
+(the)f(label)h(at)f(the)g(origin.)17 b(E.g.,)11 b(if)591 170
+y(the)i(origin)g(is)g(at)h FD(\(1,1\))p FC(,)e(the)i(origin)f(is)g(still)h
+(labeled)g FD(0)f FC(along)g(each)h(axis,)f(unless)591 230
+y(you)e(explicitly)j(change)e FB(Ox)g FC(and)g FB(Oy)p FC(.)k(For)c(example:)
+118 670 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { } def 113.81097 0 0.0 0 ArrowA CP 4 2 roll ArrowB
+L pop pop gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { } def 85.35823 0 exch 0.0 0 exch ArrowA CP 4 2 roll
+ArrowB L pop pop gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n 4 def /dx
+28.45274 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial
+98 737 a(-2)78 b(-1)86 b(0)94 b(1)h(2)118 670 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 90 rotate /n 3 def /dx
+28.45274 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial 59 686 a(0)59 568 y(1)59 450 y(2)59
+331 y(3)712 503 y FD(\\psaxes[Ox=-2]\(-2,0\)\(2,3\))591 801
+y FC(The)12 b(ticks)g(and)g(labels)h(use)e(a)i(few)e(other)h(parameters)h(as)
+f(well:)591 931 y FA(labels=)p Fu(all/x/y/none)647 b Fm(Default:)20
+b FA(all)712 1012 y FC(T)m(o)e(specify)g(whether)g(labels)g(appear)g(on)f
+(both)h(axes,)h(the)f(x-axis,)h(the)712 1072 y(y-axis,)12 b(or)g(neither)m(.)
+591 1174 y FA(showorigin=)p Fu(true/false)537 b Fm(Default:)20
+b FA(true)712 1255 y FC(If)c FD(true)p FC(,)h(then)f(labels)h(are)f(placed)h
+(at)f(the)h(origin,)g(as)f(long)g(as)f(the)i(label)712 1315
+y(doesn')o(t)e(end)g(up)f(on)h(one)g(of)f(the)h(axes.)26 b(If)14
+b FD(false)p FC(,)i(the)f(labels)h(are)f(never)712 1375 y(placed)e(at)g(the)f
+(origin.)591 1477 y FA(ticks=)p Fu(all/x/y/none)675 b Fm(Default:)20
+b FA(all)712 1558 y FC(T)m(o)g(specify)g(whether)g(ticks)g(appear)g(on)f
+(both)h(axes,)i(the)e(x-axis,)h(the)712 1618 y(y-axis,)12 b(or)g(neither)m(.)
+591 1720 y FA(tickstyle=)p Fu(full/top/bottom)496 b Fm(Default:)20
+b FA(full)712 1801 y FC(For)13 b(example,)i(if)e FB(tickstyle=top)p
+FC(,)e(then)j(the)g(ticks)f(are)h(only)f(on)g(the)h(side)712
+1861 y(of)h(the)g(axes)g(away)g(from)f(the)h(labels.)27 b(If)14
+b FB(tickstyle=bottom)p FC(,)f(the)i(ticks)712 1921 y(are)h(on)f(the)h(same)f
+(side)h(as)f(the)g(labels.)28 b FD(full)15 b FC(gives)h(ticks)f(extending)h
+(on)712 1982 y(both)c(sides.)591 2083 y FA(ticksize=)p Fu(dim)770
+b Fm(Default:)20 b FA(3pt)712 2164 y FC(T)n(icks)13 b(extend)f
+Ft(dim)h FC(above)f(and/or)g(below)g(the)h(axis.)591 2295 y(The)k(distance)h
+(between)g(ticks)g(and)f(labels)h(is)g FB(\\pslabelsep)p FC(,)g(which)f(you)g
+(can)591 2355 y(change)12 b(with)g(the)g FB(labelsep)g FC(parameter)m(.)591
+2444 y(The)h(labels)g(are)h(set)f(in)g(the)g(current)h(font)f(\(ome)g(of)g
+(the)g(examples)h(above)f(were)591 2505 y(preceded)k(by)g FD(\\small)h
+FC(so)f(that)h(the)f(labels)h(would)f(be)g(smaller\).)34 b(Y)-5
+b(ou)16 b(can)i(do)591 2565 y(fancy)12 b(things)g(with)g(the)g(labels)g(by)g
+(rede\256ning)g(the)h(commands:)591 2828 y Fx(Axes)1232 b(50)p
+eop
+%%Page: 51 5
+4 bop 712 50 a FA(\\psxlabel)712 125 y(\\psylabel)591 255 y
+FC(E.g.,)16 b(if)g(you)g(want)g(change)g(the)g(font)g(of)g(the)g(horizontal)h
+(labels,)g(but)f(not)g(the)591 315 y(vertical)d(labels,)f(try)g(something)h
+(like)712 446 y FD(\\def\\psxlabel#1{\\small)23 b(#1})591 577
+y FC(Y)-5 b(ou)14 b(can)g(choose)h(to)f(have)h(a)g(frame)g(instead)f(of)h
+(axes,)g(or)f(no)g(axes)h(at)g(all)g(\(but)591 637 y(you)c(still)i(get)f(the)
+h(ticks)f(and)g(labels\),)g(with)g(the)h(parameter:)712 768
+y FA(axesstyle=)p Fu(axes/frame/none)274 b Fm(Default:)20 b
+FA(axes)591 899 y FC(The)12 b(usual)g FB(linestyle)p FC(,)f
+FB(\256llstyle)h FC(and)g(related)h(paremeters)g(apply)m(.)591
+988 y(For)e(example:)531 1427 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 0 moveto -85.35823
+0 L 0 85.35823 2 copy rlineto L closepath gsave 0.8 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n -3 def /dx
+28.45274 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /y1 0 def /x dx def n { x y1 moveto x
+y2 lineto stroke /x x dx add def } repeat end
+
+@endspecial 519 1482 a(0)-167 b(-0.5)-195
+b(-1.0)h(-1.5)531 1427 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 90 rotate /n 3 def /dx
+28.45274 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /y1 0 def /x dx def n { x y1 moveto x
+y2 lineto stroke /x x dx add def } repeat end
+
+@endspecial
+554 1443 a(0)554 1325 y(1)554 1207 y(2)554 1089 y(3)712 1290
+y FD(\\psaxes[Dx=.5,dx=1,tic)q(ks)q(tyle=top,axess)q(ty)q(le=frame]\(-3,3\))
+591 1617 y FC(The)12 b FB(\\psaxes)f FC(macro)i(is)f(pretty)h(\257exible,)g
+(but)f(PST)n(ricks)g(contains)g(some)h(other)591 1677 y(tools)20
+b(for)h(making)g(axes)f(from)h(scratch.)43 b(E.g.,)23 b(you)d(can)h(use)g
+FB(\\psline)g FC(and)591 1738 y FB(\\psframe)16 b FC(to)i(draw)f(axes)h(and)g
+(frames,)h(respectively)m(,)h FB(\\multido)e FC(to)g(generate)591
+1798 y(labels)i(\(see)g(the)g(documentation)h(for)e FD(multido.tex)p
+FC(\),)j(and)e FB(\\multips)g FC(to)g(make)591 1858 y(ticks.)591
+2828 y Fx(Axes)1232 b(51)p eop
+%%Page: 52 6
+5 bop 148 265 a Fl(VI)591 182 y Fk(T)-6 b(ext)23 b(T)-5 b(ricks)366
+585 y Fy(27)71 b(Framed)20 b(boxes)591 707 y FC(The)9 b(macros)g(for)g
+(framing)g(boxes)f(take)i(their)f(ar)o(gument,)i(put)e(it)g(in)g(an)g
+FD(\\hbox)p FC(,)h(and)591 767 y(put)i(a)g(PostScript)g(frame)h(around)f(it.)
+18 b(\(They)12 b(are)h(analogous)f(to)g(L)1695 761 y(a)1709
+767 y(T)1730 782 y(E)1754 767 y(X')m(s)f FD(\\fbox)p FC(\).)591
+827 y(Thus,)j(they)g(are)g(composite)h(objects)f(rather)h(than)f(pure)g
+(graphics)g(objects.)24 b(In)591 887 y(addition)14 b(to)g(the)g(graphics)g
+(parameters)g(for)g FB(\\psframe)p FC(,)f(these)h(macros)g(use)f(the)591
+947 y(following)e(parameters:)591 1078 y FA(framesep=)p Fu(dim)730
+b Fm(Default:)20 b FA(3pt)712 1159 y FC(Distance)13 b(between)f(each)h(side)f
+(of)f(a)i(frame)f(and)g(the)g(enclosed)h(box.)591 1261 y FA(boxsep=)p
+Fu(true/false)628 b Fm(Default:)20 b FA(true)712 1342 y FC(When)d
+FD(true)p FC(,)g(the)g(box)f(that)h(is)f(produced)g(is)h(the)f(size)h(of)f
+(the)h(frame)g(or)712 1402 y(whatever)9 b(that)h(is)e(drawn)h(around)f(the)h
+(object.)17 b(When)9 b FD(false)p FC(,)h(the)f(box)f(that)712
+1462 y(is)14 b(produced)f(is)h(the)f(size)h(of)g(whatever)f(is)h(inside,)g
+(and)f(so)g(the)h(frame)g(is)712 1522 y(\252transparent\272)9
+b(to)g(T)1042 1533 y(E)1065 1522 y(X.)f(This)g(parameter)h(only)f(applies)h
+(to)f FB(\\psframebox)p FC(,)712 1582 y FB(\\pscirclebox)p
+FC(,)k(and)g FB(\\psovalbox)p FC(.)591 1713 y(Here)f(are)i(the)f(three)h
+(box-framing)f(macros:)591 1844 y FA(\\psframebox)p Fw(*[)p
+Fv(par)p Fw(])p FA({)p Fu(stuf)o(f)6 b FA(})712 1925 y FC(A)16
+b(simple)h(frame)f(\(perhaps)g(with)g(rounded)g(corners\))g(is)g(drawn)f
+(using)712 1985 y FB(\\psframe)p FC(.)h(The)9 b FD(*)f FC(option)h(is)g(of)f
+(particular)i(interest.)17 b(It)9 b(generates)g(a)g(solid)712
+2045 y(frame)16 b(whose)e(color)h(is)g FB(\256llcolor)g FC(\(rather)h(than)f
+FB(linecolor)p FC(,)h(as)e(with)h(the)712 2105 y(closed)e(graphics)f
+(objects\).)17 b(Recall)c(that)g(the)f(default)h(value)g(of)e
+FB(\256llcolor)712 2166 y FC(is)19 b FD(white)p FC(,)i(and)e(so)g(this)g(has)
+g(the)g(ef)o(fect)h(of)f(blotting)h(out)f(whatever)g(is)712
+2226 y(behind)13 b(the)f(box.)17 b(For)11 b(example,)236 2539
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 56.90549 56.90549
+85.35823 56.90549 85.35823 0.0 0.0 0.0 /Lineto /lineto load def false
+Polygon gsave gsave 0.5 setgray fill grestore gsave 45. rotate 0.8
+SLW 0. setgray 4.0 LineFill grestore 90 rotate 45. rotate 0.8 SLW 0.
+setgray 4.0 LineFill grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 418 2437 a @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0.3 true 3.0 neg 3.09792
+neg 29.2312 10.7818 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial(Label)712 2371 y FD(\\pspolygon[\256llcolor=gray)m
+(,\256llstyle=crosshatch*]\(0,0\)\(3,0\))758 2431 y(\(3,2\)\(2,2\))712
+2491 y(\\rput\(2,1\){\\psframebox*[framearc=.3]{Label})o(})591
+2828 y Fx(T)l(ext)e(T)o(ricks)1139 b(52)p eop
+%%Page: 53 7
+6 bop 591 50 a FA(\\psdblframebox)p Fw(*[)p Fv(par)p Fw(])p
+FA({)p Fu(stuf)o(f)6 b FA(})712 130 y FC(This)16 b(draws)f(a)h(double)f
+(frame.)29 b(It)15 b(is)h(just)g(a)f(variant)i(of)e FB(\\psframebox)p
+FC(,)712 190 y(de\256ned)d(by)820 291 y FD
+(\\newpsobject{psdblframebox}{psframebox}{d)o(oub)o(lesep=\\pslinewidth})712
+391 y FC(For)g(example,)820 491 y FD(\\psdblframebox[linewidth=1.5pt]{\045)
+865 551 y(\\parbox[c]{6cm}{\\raggedright)20 b(A)j(double)f(frame)g(is)h
+(drawn)865 612 y(with)h(the)e(gap)g(between)g(lines)h(equal)e(to)i({\\tt)h
+(doublesep}}})976 790 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 4.875 SLW 0. setgray 0. true 7.875 neg
+17.26006 neg 178.59152 23.26007 .5 Frame gsave 4.875 SLW 0. setgray
+0 setlinecap stroke grestore gsave 1.875 SLW 1. setgray stroke grestore
+end
+
+@endspecial
+-32 x FC(A)12 b(double)g(frame)g(is)g(drawn)g(with)g(the)976
+818 y(gap)g(between)h(lines)f(equal)g(to)h FD(doublesep)591
+970 y FA(\\psshadowbox)p Fw(*[)p Fv(par)p Fw(])p FA({)p Fu(stuf)o(f)6
+b FA(})712 1050 y FC(This)12 b(draws)g(a)g(single)g(frame,)g(with)g(a)h
+(shadow)m(.)301 1171 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.99008
+neg 64.6951 11.9159 .5 Frame gsave 3.0 -45 PtoC Shadow 0.25 setgray
+gsave fill grestore stroke grestore gsave 1. setgray gsave fill grestore
+stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+Fj(Gr)o(eat)g(Idea!!)712 1170 y FD(\\psshadowbox{\\bf)23 b(Great)f(Idea!!})
+712 1314 y FC(Y)-5 b(ou)20 b(can)h(get)f(the)h(shadow)e(with)h
+FB(\\psframebox)f FC(just)h(be)h(setting)f(the)712 1374 y FB(shadowsize)14
+b FC(parameter)n(,)i(but)f(with)f FB(\\psframebox)f FC(the)i(dimensions)f(of)
+712 1435 y(the)d(box)f(won')o(t)f(re\257ect)i(the)f(shadow)f(\(which)h(may)g
+(be)g(what)g(you)g(want!\).)591 1535 y FA(\\pscirclebox)p Fw(*[)p
+Fv(par)p Fw(])p FA({)p Fu(stuf)o(f)c FA(})712 1615 y FC(This)j(draws)g(a)g
+(circle.)17 b(W)n(ith)10 b FB(boxsep=true)p FC(,)d(the)j(size)f(of)g(the)g
+(box)g(is)g(close)712 1675 y(to)k(but)f(may)g(be)g(lar)o(ger)h(than)f(the)g
+(size)h(of)f(the)g(circle.)18 b(For)12 b(example:)365 1946
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 47.63158 2 div 20.39992
+14.39992 add 2 div 2 copy 14.39992 sub 4 2 roll Pyth 3.0 add CLW 2
+div add 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial 390 1912 a(Y)-5 b(ou)12
+b(are)423 1985 y(here)712 1915 y FD(\\pscirclebox{\\begin{tabular}{c})21
+b(Y)l(ou)h(are)g(\\\\)h(here)f(\\end{tabular}})591 2179 y FA(\\cput)p
+Fw(*[)p Fv(par)p Fw(])p Fu({angle)r(}\(x)5 b(,)t(y)g(\))q FA({)p
+Fu(stuf)o(f)h FA(})712 2259 y FC(This)12 b(combines)h(the)f(functions)g(of)g
+FB(\\pscirclebox)f FC(and)h FB(\\rput)p FC(.)17 b(It)12 b(is)g(like)820
+2359 y FD(\\rput{<angle>}\(x0,y0\){\\string\\pscirclebox*[<par>]{<stuf)o
+(f>}})712 2459 y FC(but)17 b(it)g(is)f(more)h(ef)o(\256cient.)31
+b(Unlike)17 b(the)g FB(\\rput)f FC(command,)i(there)f(is)f(no)712
+2520 y(ar)o(gument)c(for)f(changing)h(the)f(reference)h(point;)g(it)g(is)f
+(always)f(the)i(center)712 2580 y(of)j(the)h(box.)27 b(Instead,)16
+b(there)f(is)g(an)h(optional)g(ar)o(gument)g(for)f(changing)712
+2640 y(graphics)d(parameters.)18 b(For)12 b(example)591 2828
+y Fx(Framed)d(boxes)1077 b(53)p eop
+%%Page: 54 8
+7 bop 354 118 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray gsave 0.8 SLW 0. setgray
+0.0 0.0 56.90549 28.45274 0.0 0.0 28.45274 28.45274 1 10 { 0. setgray
+} 7.0 Grid grestore end
+
+@endspecial 442
+73 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 2.6 SLW 0. setgray 14.52069 2 div 9.06859
+2.15999 add 2 div 2 copy 2.15999 sub 4 2 roll Pyth 3.0 add CLW 2 div
+add 0 360 arc closepath gsave 2.6 SLW 0. setgray 0 setlinecap stroke
+ grestore gsave 1.0 SLW 1. setgray stroke grestore end
+
+@endspecial Fp(K)480 82 y Fq(1)712
+71 y FD(\\cput[doubleline=true]\(1,.5\){\\large)20 b($K_1$})591
+241 y FA(\\psovalbox)p Fw(*[)p Fv(par)p Fw(])p FA({)p Fu(stuf)o(f)6
+b FA(})712 322 y FC(This)13 b(draws)f(an)g(ellipse.)20 b(If)13
+b(you)f(want)g(an)h(oval)g(with)f(square)h(sides)f(and)712
+382 y(rounded)i(corners,)f(then)h(use)f FB(\\psframebox)f FC(with)i(a)f
+(positive)h(value)g(for)712 442 y FB(rectarc)c FC(or)i FB(linearc)f
+FC(\(depending)h(on)f(whether)g FB(cornersize)g FC(is)h FD(relative)f
+FC(or)712 502 y FD(absolute)p FC(\).)17 b(Here)12 b(is)g(an)g(example)h(that)
+g(uses)e FB(boxsep=false)p FC(:)165 611 y(At)35 b(the)h(introductory)165
+671 y(price)f(of)f @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0.25 setgray 0 360 27.20554 11.32742
+31.68022 2 div 9.22182 2 div 1.00224 sub Ellipse closepath gsave 0.8
+SLW 0.25 setgray 0 setlinecap stroke grestore end
+
+@endspecial($13.99)o(,)40
+b(it)165 732 y(pays)12 b(to)g(act)h(now!)712 611 y FD(At)24
+b(the)e(introductory)g(price)h(of)712 671 y
+(\\psovalbox[boxsep=false,linecolor=darkgray]{\\$13.99},)712
+731 y(it)h(pays)f(to)f(act)i(now!)591 873 y FC(Y)-5 b(ou)13
+b(can)i(de\256ne)f(variants)g(of)g(these)h(box)e(framing)i(macros)f(using)g
+(the)g FB(\\newp-)591 933 y(sobject)d FC(command.)591 1022
+y(If)i(you)h(want)g(to)g(control)g(the)g(\256nal)g(size)g(of)g(the)g(frame,)h
+(independently)g(of)e(the)591 1082 y(material)f(inside,)e(nest)h
+Ft(stuff)17 b FC(in)10 b(something)h(like)g(L)1426 1076 y(a)1440
+1082 y(T)1461 1097 y(E)1484 1082 y(X')m(s)f FD(\\makebox)g
+FC(command.)366 1279 y Fy(28)71 b(Clipping)591 1401 y FC(The)12
+b(command)712 1546 y FA(\\clipbox)p Fw([)p Fv(dim)q Fw(])p
+FA({)p Fu(stuf)o(f)6 b FA(})591 1677 y FC(puts)12 b Ft(stuff)20
+b FC(in)13 b(an)h FD(\\hbox)f FC(and)g(then)g(clips)h(around)f(the)g
+(boundary)g(of)g(the)g(box,)g(at)591 1737 y(a)f(distance)g
+Ft(dim)h FC(from)f(the)g(box)g(\(the)g(default)h(is)f FD(0pt)p
+FC(\).)591 1826 y(The)c FB(\\pspicture)e FC(environment)i(also)g(lets)g(you)g
+(clip)g(the)g(picture)g(to)g(the)g(boundary)m(.)591 1915 y(The)k(command)712
+2061 y FA(\\psclip{)p Fu(graphics)r FA(})j FE(\274)f FA(\\endpsclip)591
+2192 y FC(sets)e(the)i(clipping)f(path)h(to)f(the)g(path)h(drawn)e(by)h(the)h
+(graphics)f(object\(s\),)g(until)591 2252 y(the)18 b FB(\\endpsclip)g
+FC(command)g(is)g(reached.)36 b FB(\\psclip)18 b FC(and)g FB(\\endpsclip)g
+FC(must)g(be)591 2312 y(properly)8 b(nested)h(with)f(respect)h(to)g(T)1196
+2323 y(E)1220 2312 y(X)f(grouping.)16 b(Only)8 b(pure)g(graphics)h(\(those)
+591 2372 y(described)17 b(in)g(Part)h(II)f(and)g FB(\\pscustom)p
+FC(\))g(are)g(permitted.)35 b(An)16 b FD(Overfull)g(\\hbox)591
+2432 y FC(warning)9 b(indicates)i(that)f(the)g Ft(graphics)g
+FC(ar)o(gument)h(contains)f(extraneous)g(output)591 2492 y(or)17
+b(space.)36 b(Note)18 b(that)g(the)h(graphics)f(objects)g(otherwise)g(act)h
+(as)e(usual,)j(and)591 2553 y(the)d FB(\\psclip)g FC(does)g(not)g(otherwise)f
+(af)o(fect)i(the)f(surrounded)g(text.)32 b(Here)17 b(is)g(an)591
+2613 y(example:)591 2828 y Fx(Clipping)1181 b(54)p eop
+%%Page: 55 9
+8 bop 47 89 a
+ tx@Dict begin /mtrxc CM def CP CP T STV newpath 0.8 SLW 0. setgray
+ [ -85.35823 56.90549 227.62195 56.90549 227.62195 -42.67911 179.25237
+-56.90549 122.34688 -42.67911 65.44139 -56.90549 8.5359 -42.67911 -85.35823
+-56.90549 1. 0.1 0. /c ED /b ED /a ED false ClosedCurve clip newpath
+mtrxc setmatrix moveto 0 setgray end
+ Fz(\252One)23 b(of)f(the)i(best)f(new)f(plays)47
+149 y(I)i(have)h(seen)g(all)g(year:)43 b(cool,)47 209 y(poetic,)18
+b(ironic)g Fi(\274)q Fz(\272)e(proclaimed)47 269 y Fh(The)j(Guar)n(dian)e
+Fz(upon)g(the)i(Lon-)47 329 y(don)9 b(premiere)h(of)g(this)g(extraordi-)47
+389 y(nary)g(play)g(about)h(a)f(Czech)i(direc-)47 450 y(tor)k(and)h(his)f
+(actress)i(wife,)f(con-)47 510 y(fronting)10 b(exile)h(in)g(America.)516
+510 y
+ currentpoint initclip moveto
+ 712 30 a FD(\\parbox{4.5cm}{\045)758 90 y
+(\\psclip{\\psccurve[linestyle=none]\(-3,-2\))803 150 y
+(\(0.3,-1.5\)\(2.3,-2\)\(4.3,-1.5\))o(\(6.3,-2)o(\)\(8)o(,-1.5\)\()o(8,2\)\()
+o(-3,2\))o(})758 211 y(``One)22 b(of)h(the)f(best)h(new)g(plays)g(I)g(have)f
+(seen)g(all)h(year:)f(cool,)h(poetic,)758 271 y(ironic)68 b(\\ldots\272)23
+b(proclaimed)e({\\em)h(The)h(Guardian})d(upon)h(the)i(London)758
+331 y(premiere)e(of)i(this)g(extraordinary)e(play)h(about)g(a)h(Czech)g
+(director)f(and)758 391 y(his)h(actress)g(wife,)h(confronting)e(exile)g(in)h
+(America.\\vspace{-1cm})758 451 y(\\endpsclip})591 586 y FC(If)7
+b(you)g(don')o(t)g(want)g(the)g(outline)g(to)g(be)g(painted,)k(you)c(need)g
+(to)g(include)g FB(linestyle=none)591 646 y FC(in)h(the)g(parameter)g
+(changes.)17 b(Y)-5 b(ou)8 b(can)g(actually)g(include)g(more)g(than)g(one)g
+(graph-)591 706 y(ics)13 b(object)h(in)g(the)f(ar)o(gument,)i(in)e(which)g
+(case)h(the)g(clipping)g(path)f(is)g(set)h(to)f(the)591 767
+y(intersection)g(of)e(the)i(paths.)591 855 y FB(\\psclip)f
+FC(can)h(be)f(a)g(useful)g(tool)h(in)f(picture)h(environments.)19
+b(For)11 b(example,)j(here)591 915 y(it)e(is)g(used)g(to)g(shade)g(the)g
+(region)g(between)g(two)g(curves:)118 1582 y
+ tx@Dict begin /mtrxc CM def CP CP T STV newpath 0.8 SLW 0. setgray
+ 0.8 SLW 0. setgray /ArrowA { /lineto load stopped { moveto } if }
+def /ArrowB { } def /x .5 def /x1 4 def /dx x1 x sub 49 div def /xy
+{ x 28.45274 mul 2 x div 28.45274 mul } def xy /lineto load stopped
+{ moveto } if 49 1 sub { /x x dx add def xy L } repeat /x x1 def
+xy L 113.81097 113.81097 lineto clip newpath mtrxc setmatrix moveto
+0 setgray end
+ 118 1582 a
+ tx@Dict begin /mtrxc CM def CP CP T STV newpath 0.8 SLW 0. setgray
+ 0.8 SLW 0. setgray /ArrowA { /lineto load stopped { moveto } if }
+def /ArrowB { } def /x 0 def /x1 3 def /dx x1 x sub 49 div def /xy
+{ x 28.45274 mul 3 x x mul 3 div sub 28.45274 mul } def xy /lineto
+load stopped { moveto } if 49 1 sub { /x x dx add def xy L } repeat
+/x x1 def xy L 0.0 0.0 lineto clip newpath mtrxc setmatrix moveto
+0 setgray end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0.5 setgray 0. true 0.0 0.0 113.81097
+113.81097 .5 Frame gsave 0.5 setgray fill grestore end
+
+@endspecial 118 1582 a
+ currentpoint initclip moveto
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def /x .5 def /x1 4 def /dx x1 x sub 49 div def /xy { x
+28.45274 mul 2 x div 28.45274 mul } def xy moveto 49 1 sub { /x x
+dx add def xy L } repeat /x x1 def xy L gsave 1.5 SLW 0. setgray
+0 setlinecap stroke grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def /x 0 def /x1 3 def /dx x1 x sub 49 div def /xy { x
+28.45274 mul 3 x x mul 3 div sub 28.45274 mul } def xy moveto 49 1
+sub { /x x dx add def xy L } repeat /x x1 def xy L gsave 1.5 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { } def 113.81097 0 0.0 0 ArrowA CP 4 2 roll ArrowB
+L pop pop gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2 setlinecap 0 0 moveto 0 CLW 2 div L stroke 0 0 moveto EndArrow moveto
+} def /ArrowB { } def 113.81097 0 exch 0.0 0 exch ArrowA CP 4 2 roll
+ArrowB L pop pop gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 rotate /n 4 def /dx
+28.45274 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial 106 1649 a FC(0)94 b(1)g(2)g(3)h(4)118
+1582 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 90 rotate /n 4 def /dx
+28.45274 def n 0 lt { /dx dx neg def /n n neg def } if /y2 3.0 CLW
+2 div add def /y1 y2 neg def /x dx def n { x y1 moveto x y2 lineto
+stroke /x x dx add def } repeat end
+
+@endspecial 59 1598 a(0)59
+1480 y(1)59 1362 y(2)59 1244 y(3)59 1126 y(4)712 1025 y FD(\\psclip{\045)758
+1086 y(\\pscustom[linestyle=none]{\045)803 1146 y(\\psplot{.5}{4}{2)21
+b(x)i(div})803 1206 y(\\lineto\(4,4\)})758 1266 y
+(\\pscustom[linestyle=none]{\045)803 1326 y(\\psplot{0}{3}{3)e(x)i(x)g(mul)g
+(3)f(div)h(sub})803 1386 y(\\lineto\(0,0\)}})712 1447 y
+(\\psframe*[linecolor=gray]\(0,0\)\(4,4\))712 1507 y(\\endpsclip)712
+1567 y(\\psplot[linewidth=1.5pt]{.5}{4}{2)f(x)h(div})712 1627
+y(\\psplot[linewidth=1.5pt]{0}{3}{3)e(x)i(x)g(mul)g(3)f(div)h(sub})712
+1687 y(\\psaxes\(4,4\))591 1822 y Fz(Driver)9 b(notes:)44 b(The)10
+b(clipping)h(macros)f(use)h Fg(\\pstverbscale)f Fz(and)g Fg(\\pstV)n(erb)p
+Fz(.)16 b(Don')o(t)10 b(be)591 1882 y(surprised)g(if)h(PST)n(ricks')n(s)g
+(clipping)h(does)f(not)g(work)f(or)h(causes)i(problem\320it)d(is)i(never)591
+1943 y(robust.)h Fx(\\endpsclip)7 b Fz(uses)h Fx(initclip)p
+Fz(.)15 b(This)7 b(can)i(interfere)e(with)h(other)f(clipping)h(operations,)
+591 2003 y(and)h(especially)j(if)d(the)h(T)967 2013 y(E)988
+2003 y(X)f(document)h(is)g(converted)g(to)g(an)g(Encapsulated)g(PostScript)
+591 2063 y(\256le.)26 b(The)14 b(command)g Fg(\\AltClipMode)h
+Fz(causes)g Fg(\\psclip)f Fz(and)g Fg(\\endpsclip)g Fz(to)g(use)g
+Fx(gsave)591 2123 y Fz(and)8 b Fx(grestore)g Fz(instead.)15
+b(This)8 b(bothers)g(some)g(drivers,)g(such)h(as)f(NeXTT)m(eX')n(s)e(T)m(eXV)
+m(iew)m(,)591 2183 y(especially)12 b(if)f Fg(\\psclip)g Fz(and)f
+Fg(\\endpsclip)h Fz(do)f(not)h(end)g(up)f(on)h(the)g(same)h(page.)366
+2379 y Fy(29)71 b(Rotation)19 b(and)h(scaling)g(boxes)591 2500
+y FC(There)12 b(are)g(versions)g(of)g(the)g(standard)g(box)g(rotation)g
+(macros:)712 2640 y FA(\\rotateleft{)p Fu(stuf)o(f)7 b FA(})591
+2828 y Fx(Rotation)j(and)f(scaling)h(boxes)867 b(55)p eop
+%%Page: 56 10
+9 bop 712 50 a FA(\\rotateright{)p Fu(stuf)o(f)6 b FA(})712
+125 y(\\rotatedown{)p Fu(stuf)o(f)g FA(})591 255 y Ft(stuff)16
+b FC(is)10 b(put)g(in)g(an)g FD(\\hbox)f FC(and)h(then)g(rotated)h(or)f
+(scaled,)g(leaving)h(the)f(appropriate)591 315 y(amount)i(of)g(spaces.)17
+b(Here)12 b(are)g(a)g(few)g(uninteresting)h(examples:)306 565
+y
+ tx@Dict begin 90 Rot end
+ -1 x Ff(Left)306 565 y
+ tx@Dict begin -90 Rot end
+ 496 565 a
+ tx@Dict begin 180 Rot end
+ 46 x Ff(Down)496 565 y
+ tx@Dict begin -180 Rot end
+ 573
+565 a
+ tx@Dict begin -90 Rot end
+ 409 611 a Ff(Right)573 565 y
+ tx@Dict begin 90 Rot end
+ 712 493 a FD(\\Large\\bf)22
+b(\\rotateleft{Left})h(\\rotatedown{Down})f(\\rotateright{Right})591
+696 y FC(There)12 b(are)g(also)g(two)g(box)g(scaling)g(macros:)591
+827 y FA(\\scalebox{)p Fu(num1)h Fv(num2)s FA(}{)p Fu(stuf)o(f)6
+b FA(})712 908 y FC(If)16 b(you)g(give)g(two)g(numbers)g(in)g(the)h(\256rst)e
+(ar)o(gument,)j Ft(num1)d FC(is)h(used)g(to)712 968 y(scale)10
+b(horizontally)h(and)e Ft(num2)i FC(is)e(used)g(to)g(scale)h(vertically)m(.)
+18 b(If)9 b(you)f(give)712 1028 y(just)k(one)f(number)n(,)g(the)h(box)f(is)g
+(scaled)g(by)g(the)h(same)f(in)g(both)g(directions.)712 1088
+y(Y)-5 b(ou)13 b(can')o(t)g(scale)g(by)g(zero,)g(but)g(negative)h(numbers)e
+(are)h(OK,)f(and)h(have)712 1148 y(the)j(ef)o(fect)h(of)e(\257ipping)g(the)h
+(box)f(around)g(the)h(axis.)27 b(Y)-5 b(ou)15 b(never)h(know)712
+1208 y(when)c(you)g(need)g(to)g(do)g(something)g(like)1487
+1208 y
+ tx@Dict begin CP CP T -1. 1. scale NET end
+ FC(this)1487 1208 y
+ tx@Dict begin CP CP T 1 -1. div 1 1. div scale NET end
+ 12 w FC(\()p FD(\\scalebox{-1)f(1}{this})p
+FC(\).)591 1310 y FA(\\scaleboxto\()p Fu(x)5 b FA(,)t Fu(y)g
+FA(\){)p Fu(stuf)o(f)h FA(})712 1391 y FC(This)14 b(time,)h(the)f(\256rst)e
+(ar)o(gument)j(is)e(a)g(\(Cartesian\))h(coordinate,)h(and)e(the)712
+1451 y(box)f(is)g(scaled)g(to)g(have)g(width)f Ft(x)16 b FC(and)c(height)g
+(\(plus)f(depth\))h Ft(y)t FC(.)18 b(If)11 b(one)h(of)712 1511
+y(the)g(dimensions)e(is)h(0,)g(the)g(box)g(is)f(scaled)i(by)e(the)h(same)h
+(amount)f(in)g(both)712 1572 y(directions.)18 b(For)12 b(example:)106
+1827 y
+ tx@Dict begin CP CP T 1.91203 5.54118 scale NET end
+ FC(Big)g(and)g(long)106 1827 y
+ tx@Dict begin CP CP T 1 1.91203 div 1 5.54118 div scale NET end
+ 712 1777 a FD(\\scaleboxto\(4,2\){Big)
+22 b(and)g(long})591 2015 y FC(PST)n(ricks)16 b(de\256nes)g(LR-box)g
+(environments)h(for)f(all)h(these)g(box)f(rotation)i(and)591
+2076 y(scaling)12 b(commands:)712 2206 y FD
+(\\pslongbox{Rotateleft}{\\rotateleft})712 2267 y
+(\\pslongbox{Rotateright}{\\rotateright})712 2327 y
+(\\pslongbox{Rotatedown}{\\rotatedown})712 2387 y
+(\\pslongbox{Scalebox}{\\scalebox})712 2447 y
+(\\pslongbox{Scaleboxto}{\\scaleboxto})591 2578 y FC(Here)e(is)g(an)h
+(example)g(where)f(we)h FB(\\Rotatedown)e FC(for)h(the)h(answers)f(to)g
+(exercises:)591 2828 y Fx(Rotation)g(and)f(scaling)h(boxes)867
+b(56)p eop
+%%Page: 57 11
+10 bop 106 32 a FC(Question:)17 b(How)11 b(do)106 92 y(Democrats)h(or)o
+(ganize)h(a)106 153 y(\256ring)f(squad?)591 267 y
+ tx@Dict begin 180 Rot end
+ 603 299 a
+FC(Answer:)j(First)9 b(they)h(get)g(in)603 359 y(a)i(circle,)i
+FF(\274)591 267 y
+ tx@Dict begin -180 Rot end
+ 712 54 a FD(Question:)23 b(How)g(do)g(Democrats)g(organize)
+e(a)i(\256ring)f(squad?)758 114 y(\\begin{Rotatedown})758 174
+y(\\parbox{\\hsize}{Answer:)g(First)h(they)g(get)g(in)f(a)g(circle,)i
+(\\ldots\\hss}\045)712 234 y(\\end{Rotatedown})591 397 y FC(See)13
+b(the)g(documentation)h(of)f FD(fancybox.sty)i FC(for)e(tips)g(on)g(rotating)
+h(a)f(L)1754 391 y(a)1768 397 y(T)1789 412 y(E)1813 397 y(X)f
+FD(table)591 458 y FC(or)f FD(\256gure)g FC(environment,)i(and)f(other)g
+(boxes.)591 2828 y Fx(Rotation)e(and)f(scaling)h(boxes)867
+b(57)p eop
+%%Page: 58 12
+11 bop 46 265 a Fl(VII)591 182 y Fk(Nodes)23 b(and)g(Node)g(Connections)591
+566 y FC(All)16 b(the)h(commands)g(described)g(in)f(this)h(part)g(are)g
+(contained)g(in)g(the)g(\256le)g FD(pst-)325 590 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 221 608 a FA(pst-node)591 627 y FD(node.tex)p
+FC(/)p FD(pst-node.sty)p FC(.)591 716 y(The)k(node)f(and)h(node)g(connection)
+h(macros)e(let)i(you)f(connect)g(information)591 776 y(and)15
+b(place)i(labels,)g(without)f(knowing)g(the)g(exact)h(position)e(of)h(what)g
+(you)f(are)591 836 y(connecting)k(or)f(of)h(where)f(the)h(lines)g(should)f
+(connect.)38 b(These)19 b(macros)f(are)591 896 y(useful)c(for)h(making)g
+(graphs)g(and)g(trees,)g(mathematical)j(diagrams,)e(linguistic)591
+957 y(syntax)8 b(diagrams,)g(and)g(connecting)g(ideas)g(of)g(any)g(kind.)15
+b(They)8 b(are)g(the)g(trickiest)591 1017 y(tricks)k(in)g(PST)n(ricks!)591
+1106 y(Although)e(you)g(might)h(use)f(these)h(macros)g(in)g(pictures,)g
+(positioning)g(and)f(rotat-)591 1166 y(ing)h(them)g(with)g
+FB(\\rput)p FC(,)g(you)g(can)g(actually)h(use)f(them)h(anywhere.)k(For)11
+b(example,)591 1226 y(I)g(might)i(do)f(something)g(like)h(this)f(in)g(a)g
+(guide)g(about)h(page)f(styles:)106 1523 y(W)n(ith)h(the)f
+FD(myfooters)h FC(page)106 1583 y(style,)f(the)h(name)f(of)g(the)106
+1643 y(current)h(section)f(appears)106 1703 y(at)h(the)f(bottom)h(of)e(each)
+106 1763 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeB 16 { .5 5.28195 2.48833
+false .5 21.74991 InitRnode } NewNode end end
+ FC(page.)712 1341 y FD(\\makeatletter)712 1402 y
+(\\gdef\\ps@temp{\\def\\@oddhead{}\\def\\@evenhead{})758 1462
+y(\\def\\@oddfoot{\\small\\sf)803 1522 y
+(\\ovalnode[boxsep=false]{A}{\\rightmark})803 1582 y
+(\\nccurve[ncurv=.5,angleB=240,angleA=180,nodesep=6)o(pt]{<-}{)o(A}{B})803
+1642 y(\\h\256l\\thepage})758 1703 y(\\let\\@evenfoot\\@oddfoot})712
+1763 y(\\makeatother)712 1823 y(\\thispagestyle{temp})758 1883
+y(With)22 b(the)h({\\tt)g(myfooters})g(page)e(style,)k(the)d(name)g(of)h(the)
+f(current)g(section)712 1943 y(appears)g(at)h(the)f(bottom)h(of)f(each)h
+(\\rnode{B}{page)o(}.)591 2083 y FC(Y)-5 b(ou)8 b(can)h(use)g(nodes)g(in)g
+(math)h(mode)f(and)g(in)g(alignment)h(environments)g(as)f(well.)591
+2143 y(Here)i(is)h(an)g(example)h(of)f(a)g(commutative)i(diagram:)591
+2828 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 14 { /X 119.7806 2
+div def /Y 6.79265 2 div 0.211 sub def /w 89.49257 def /h 9.61 def
+/NodePos { GetOnodePos } def } NewNode end end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 89.49257 9.61
+119.7806 2 div 6.79265 2 div 0.211 sub Ellipse closepath gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial Fx(Nodes)9 b(and)g(Node)h
+(Connections)1098 2828 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { } def
+tx@NodeDict begin 0.0 0.0 neg 6.0 6.0 /TheNodeA /TheNodeB InitNC {
+/AngleA 180. def /AngleB 240. def 0.5 0.5 NCCurve } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 809 w Fx(58)p eop
+%%Page: 59 13
+12 bop 527 179 a
+ tx@Dict begin tx@NodeDict begin { } /TheNodea 16 { .5 7.55716 0.0
+false .5 7.03876 InitRnode } NewNode end end
+ Fe(A)379 488 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeb 16 { .5 7.55716 0.0
+false .5 7.03876 InitRnode } NewNode end end
+ Fe(B)526 488 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodec 16 { .5 7.55716 0.21887
+false .5 7.68388 InitRnode } NewNode end end
+ Fe(C)579 332
+y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodea /TheNodeb InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 579 332 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 579 332 a
+ tx@Dict begin { 5.0 3.1872 5.29155 1.59361 langle 90 sub Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 572 339 a Fd(f)579 332 y
+ tx@Dict begin PutEnd end
+ 579 332 a
+ tx@Dict begin PutEnd end
+ 579
+332 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodea /TheNodec InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 579 332 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 579 332 a
+ tx@Dict begin { 5.0 3.84003 3.35233 1.59361 langle 90 add Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 571 336 a Fd(g)579 332 y
+ tx@Dict begin PutEnd end
+ 579 332
+a
+ tx@Dict begin PutEnd end
+ 579 332 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeb /TheNodec InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 3.0 -2 0 add DotLine grestore
+ grestore end
+ 579 332 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 579 332 a
+ tx@Dict begin { 5.0 3.84003 5.29155 0.0768 langle 90 add Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 571 343 a Fd(h)579 332 y
+ tx@Dict begin PutEnd end
+ 579
+332 a
+ tx@Dict begin PutEnd end
+ 712 31 a FD($)712 92 y(\\begin{array}{c@{\\hskip)22 b(1cm}c})758
+152 y(&)h(\\rnode{a}{A}\\\\[2cm])758 212 y(\\rnode{b}{B})d(&)j(\\rnode{c}{C})
+712 272 y(\\end{array})712 332 y(\\psset{nodesep=3pt})712 393
+y(\\everypsbox{\\scriptstyle})712 453 y(\\ncline{->}{a}{b}\\Bput{f})712
+513 y(\\ncline{->}{a}{c}\\Aput{g})712 573 y
+(\\ncline[linestyle=dotted]{->}{b}{c}\\Aput{h})712 633 y($)591
+767 y FC(There)12 b(are)g(three)h(components)f(to)g(the)h(node)e(macros:)591
+895 y Fj(Node)g(de\256nitions)23 b FC(The)10 b(node)h(de\256nitions)f(let)h
+(you)f(assign)f(a)i(name)g(and)f(shape)712 955 y(to)j(an)f(object.)18
+b(See)12 b(Section)g(30.)591 1056 y Fj(Node)f(connections)23
+b FC(The)10 b(node)f(connections)h(connect)g(two)f(nodes,)g(identi\256ed)712
+1116 y(by)j(their)h(names.)k(See)12 b(Section)h(31.)591 1217
+y Fj(Node)e(labels)24 b FC(The)13 b(node)f(label)i(commands)e(let)i(you)e(af)
+o(\256x)g(labels)h(to)g(the)g(node)712 1278 y(connections.)18
+b(See)12 b(Section)h(32.)366 1474 y Fy(30)71 b(Nodes)591 1595
+y FC(The)15 b Ft(name)g FC(of)h(a)f(node)g(must)g(contain)h(only)g(letters)g
+(and)f(numbers,)h(and)f(must)591 1655 y(begin)d(with)g(a)g(letter)m(.)297
+1785 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 28.0 .5 CLW
+mul sub 0 360 arc closepath gsave 0.5 setgray fill grestore gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 297 1785 a
+ tx@Dict begin 45. Rot end
+ 210
+1842 a
+ tx@Dict begin CP CP T 3.55672 3.55672 scale NET end
+ FC(PS)210 1842 y
+ tx@Dict begin CP CP T 1 3.55672 div 1 3.55672 div scale NET end
+ 297 1785 a
+ tx@Dict begin 45. neg Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 26.60002 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0 360 7.0 1.39998 .5
+CLW mul dup 3 1 roll sub 3 1 roll sub exch 0.0 38.5 Ellipse closepath
+gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.0 SLW 0. setgray 0. true -7.0 26.60002
+7.0 38.5 .5 Frame gsave 0. setgray fill grestore end
+
+@endspecial @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 49.0 0.0 38.5 ArrowA 7.0 56.0 24.5 56.0 ArrowB
+curveto gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+399 1553 a
+ tx@Dict begin 0.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 0.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 40.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 40.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 80.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 80.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 120.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 120.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 160.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 160.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 200.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 200.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 240.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 240.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 280.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 280.0 neg Rot end
+ 399 1553 a
+ tx@Dict begin 320.0 Rot end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def [ 2.79996 0.0 0.0 0.0 /Lineto /lineto load def false
+Line gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 399 1553
+a
+ tx@Dict begin 320.0 neg Rot end
+ 712 1811 a Fe(W)l(arning:)47 b(Bad)12 b(node)g(names)f(can)h(cause)g
+(PostScript)g(err)n(ors.)591 1961 y FA(\\rnode)p Fw([)p Fv(refpoint)t
+Fw(])p FA({)p Fu(name)r FA(}{)p Fu(stuf)o(f)6 b FA(})712 2042
+y FC(This)13 b(assigns)e(the)h Ft(name)h FC(to)f(the)g(node,)h(which)f(will)g
+(have)g(a)h(rectangular)712 2102 y(shape)i(for)g(the)g(purpose)f(of)h(making)
+g(connections,)h(with)f(the)g(\252center)r(\272)712 2162 y(at)20
+b(the)f(reference)h(point)f(\(i.e.,)i(node)e(connections)h(will)f(point)g(to)
+g(the)712 2223 y(reference)13 b(point.)18 b FB(\\rnode)12 b
+FC(was)f(used)h(in)g(the)g(two)g(examples)g(above.)591 2324
+y FA(\\Rnode)p Fw(\()p Fv(x)t Fw(,)t Fv(y)t Fw(\))p FA({)p
+Fu(name)r FA(}{)p Fu(stuf)o(f)6 b FA(})712 2404 y FC(This)i(is)g(like)g
+FB(\\rnode)p FC(,)h(but)f(the)g(reference)g(point)g(is)g(calculated)g(dif)o
+(fere)q(ntly)m(.)712 2464 y(It)j(is)f(set)g(to)h(the)f(middle)h(of)f(the)h
+(box')m(s)f(baseline,)h(plus)f FD(\()p Ft(x)s FD(,)t Ft(y)t
+FD(\))p FC(.)17 b(If)10 b(you)g(omit)712 2524 y(the)j FD(\()p
+Ft(x)s FD(,)t Ft(y)t FD(\))f FC(ar)o(gument,)h(command)820
+2640 y FA(\\RnodeRef)591 2828 y Fx(Nodes)1207 b(59)p eop
+%%Page: 60 14
+13 bop 712 50 a FC(is)12 b(substituted.)18 b(The)12 b(default)h(de\256nition)
+f(of)g FB(\\RnodeRef)g FC(is)g FD(0,.7ex)p FC(.)18 b(E.g,)712
+110 y(the)13 b(following)f(are)g(equivalent:)820 212 y FD
+(\\Rnode\(0,.6ex\){stuf)o(f})820 272 y({\\def\\RnodeRef{0,.6ex}\\Rnode{stuf)o
+(f}})712 374 y FB(\\Rnode)d FC(is)f(useful)g(when)g(aligning)g(nodes)g(by)g
+(their)g(baaelines,)g(such)g(as)g(in)712 434 y(commutative)j(diagrams.)16
+b(W)n(ith)9 b FB(\\rnode)16 b FC(horizontal)9 b(node)f(connections)712
+494 y(might)15 b(not)g(be)f(quite)h(horizontal,)h(because)f(of)f(dif)o
+(ferences)h(in)g(the)f(size)712 554 y(of)e(letters.)591 656
+y FA(\\pnode)p Fw(\()p Fv(x)t Fw(,)t Fv(y)t Fw(\))p FA({)p
+Fu(name)r FA(})712 737 y FC(This)k(creates)h(a)f(zero)g(dimensional)g(node)g
+(at)g(the)h(point)f FD(\()p Ft(x)s FD(,)t Ft(y)t FD(\))g FC(\(default)712
+797 y FD(\(0,0\))p FC(\).)591 899 y FA(\\cnode)p Fw(*[)p Fv(par)p
+Fw(]\()p Fv(x)t Fw(,)t Fv(y)t Fw(\))p FA({)p Fu(radius)r FA(}{)p
+Fu(name)r FA(})712 980 y FC(This)c(draws)g(a)g(circle)h(and)f(assigns)f(the)h
+Ft(name)h FC(to)f(it.)591 1081 y FA(\\circlenode)p Fw(*[)p
+Fv(par)p Fw(])p FA({)p Fu(name)r FA(}{)p Fu(stuf)o(f)6 b FA(})712
+1162 y FC(This)14 b(is)e(a)i(variant)f(of)g FB(\\pscirclebox)g
+FC(that)g(gives)g(the)h(node)f(the)g(shape)g(of)712 1222 y(the)g(circle.)591
+1324 y FA(\\cnodeput)p Fw(*[)p Fv(par)p Fw(]{)p Fv(angle)q
+Fw(}\()p Fv(x)t Fw(,)t Fv(y)t Fw(\))p FA({)p Fu(name)r FA(}{)p
+Fu(stuf)o(f)6 b FA(})712 1405 y FC(This)19 b(is)f(a)h(variant)g(of)f
+FB(\\cput)g FC(that)h(gives)f(the)h(node)f(the)h(shape)f(of)g(the)712
+1465 y(circle.)591 1567 y FA(\\ovalnode)p Fw(*[)p Fv(par)p
+Fw(])p FA({)p Fu(name)r FA(}{)p Fu(stuf)o(f)6 b FA(})712 1648
+y FC(This)16 b(is)f(a)g(variant)h(of)f FB(\\psovalbox)f FC(that)i(gives)f
+(the)g(node)h(the)f(shape)g(of)712 1708 y(the)e(ellipse.)591
+1851 y(The)d(reason)g(that)h(there)g(is)f(no)g FB(\\framenode)f
+FC(command)i(is)f(that)h(using)f FB(\\psframe-)591 1912 y(box)15
+b FC(\(or)h FB(\\psshadowbox)f FC(or)h FB(\\psdblframebox)p
+FC(\))g(in)g(the)h(ar)o(gument)g(of)f FB(\\rnode)591 1972 y
+FC(gives)11 b(the)i(desired)f(result.)366 2169 y Fy(31)71 b(Node)20
+b(connections)591 2290 y FC(All)11 b(the)g(node)h(connection)g(commands)f
+(begin)g(with)h FD(nc)p FC(,)f(and)g(they)h(all)g(have)f(the)591
+2350 y(same)h(syntax:)712 2481 y FD(\\<nodeconnection>[<par>]{<arrows>}{<)o
+(node)o(A>}{<)o(node)o(B>})591 2828 y Fx(Node)d(connections)1016
+b(60)p eop
+%%Page: 61 15
+14 bop 591 50 a FC(A)14 b(line)h(of)g(some)g(sort)g(is)f(drawn)h(from)f
+Ft(nodeA)g FC(to)h Ft(nodeB)r FC(.)f(Some)h(of)g(the)g(node)591
+110 y(connection)10 b(commands)h(are)f(a)g(little)i(confusing,)e(but)g(with)g
+(a)g(little)i(experimen-)591 170 y(tation)k(you)g(will)g(\256gure)f(them)i
+(out,)g(and)f(you)f(will)h(be)g(amazed)h(at)g(the)f(things)591
+230 y(you)11 b(can)i(do.)591 320 y(The)20 b(node)g(and)g(point)g(connections)
+g(can)h(be)f(used)f(with)h FB(\\pscustom)p FC(.)40 b(The)591
+380 y(beginning)15 b(of)f(the)h(node)g(connection)g(is)g(attached)h(to)f(the)
+g(current)g(point)g(by)g(a)591 440 y(straight)d(line,)h(as)e(with)h
+FB(\\psarc)p FC(.)1123 422 y Fs(14)591 529 y FC(When)g(we)f(refer)i(to)f(the)
+g FD(A)g FC(and)g FD(B)h FC(nodes)e(below)m(,)h(we)g(are)g(referring)g(only)g
+(to)g(the)591 589 y(order)e(in)g(which)g(the)g(names)h(are)f(given)h(as)f(ar)
+o(guments)g(to)g(the)h(node)f(connection)591 650 y(macros.)591
+739 y(When)19 b(a)h(node)g(name)g(cannot)g(be)g(found)g(on)f(the)h(same)g
+(page)g(as)g(the)g(node)591 799 y(connection)13 b(command,)f(you)g(get)h
+(either)g(no)f(node)g(connection)h(or)f(a)h(nonsense)591 859
+y(node)e(connection.)19 b(However)n(,)11 b(T)1153 870 y(E)1176
+859 y(X)h(will)g(not)g(report)g(any)g(errors.)591 949 y(The)g(node)g
+(connections)g(use)g(the)g(following)g(parameters:)591 1079
+y FA(nodesep=)p Fu(dim)793 b Fm(Default:)20 b FA(0)712 1160
+y FC(The)9 b(border)f(around)h(the)f(nodes)g(added)h(for)f(the)h(purpose)f
+(of)g(determining)712 1220 y(where)k(to)g(connect)h(the)g(lines.)591
+1322 y FA(offset=)p Fu(dim)862 b Fm(Default:)20 b FA(0)712
+1403 y FC(After)e(the)f(node)h(connection)g(point)f(is)g(calculated,)k(it)d
+(is)f(shift)g(up)g(for)712 1463 y Ft(nodeA)k FC(and)g(down)g(for)g
+Ft(nodeB)h FC(by)g Ft(dim)q FC(,)h(where)e(\252up\272)h(and)f(\252down\272)
+712 1523 y(assume)12 b(that)g(the)f(connecting)i(line)f(points)f(to)g(the)h
+(right)g(from)f(the)h(node.)591 1625 y FA(arm=)p Fu(dim)830
+b Fm(Default:)20 b FA(10pt)712 1706 y FC(Some)11 b(node)g(connections)h
+(start)f(with)g(a)g(segment)h(of)f(length)g Ft(dim)h FC(before)712
+1766 y(turning)h(somewhere.)591 1868 y FA(angle=)p Fu(angle)826
+b Fm(Default:)20 b FA(0)712 1949 y FC(Some)d(node)f(connections)h(let)g(you)f
+(specify)g(the)h(angle)g(that)g(the)g(node)712 2009 y(connection)c(should)f
+(connect)g(to)h(the)f(node.)591 2111 y FA(arcangle=)p Fu(angle)753
+b Fm(Default:)20 b FA(8)712 2192 y FC(This)12 b(applies)h(only)f(to)g
+FB(\\ncarc)p FC(,)f(and)h(is)g(described)g(below)m(.)591 2293
+y FA(ncurv=)p Fu(num)804 b Fm(Default:)20 b FA(.67)712 2374
+y FC(This)i(applies)f(only)g(to)h FB(\\nccurve)e FC(and)h FB(\\pccurve)p
+FC(,)h(and)g(is)f(described)712 2435 y(below)m(.)p 591 2469
+544 2 v 632 2500 a Fr(14)662 2515 y Fq(See)8 b(page)g(71)g(if)h(you)f(want)g
+(to)h(use)e(the)h(nodes)g(as)g(coordinates)f(in)h(other)h(PST)o(ricks)f
+(macros.)591 2828 y Fx(Node)h(connections)1016 b(61)p eop
+%%Page: 62 16
+15 bop 591 50 a FA(loopsize=)p Fu(dim)726 b Fm(Default:)20
+b FA(1cm)712 129 y FC(This)10 b(applies)f(only)g(the)h FB(\\ncloop)f
+FC(and)g FB(\\pcloop)p FC(,)h(and)f(is)g(described)g(below)m(.)591
+244 y(Y)-5 b(ou)12 b(can)h(set)g(these)g(parameters)h(separately)g(for)e(the)
+h(two)g(nodes.)20 b(Just)12 b(add)h(an)591 304 y FD(A)f FC(or)g
+FD(B)g FC(to)g(the)g(parameter)h(name.)18 b(E.g.)712 420 y
+FD(\\psset{nodesepA=3pt,)23 b(of)o(fsetA=5pt,)h(of)o(fsetB=3pt,)g(arm=1cm})
+591 536 y FC(sets)16 b FB(nodesep)f FC(for)h(the)h FD(A)g FC(node,)g(but)g
+(leaves)g(the)g(value)g(for)f(the)h FD(B)g FC(node)f(un-)591
+596 y(changed,)f(sets)f FD(of)o(fset)i FC(for)e(the)i FD(A)e
+FC(and)h FD(B)g FC(nodes)f(to)h(dif)o(ferent)g(values,)g(and)g(sets)591
+656 y FD(arm)c FC(for)h(the)g FD(A)g FC(and)g FD(B)g FC(nodes)g(to)g(the)g
+(same)h(value.)591 743 y(Don')o(t)18 b(for)o(get)i(that)f(by)g(using)g(the)h
+FB(border)e FC(parameter)n(,)k(you)d(can)g(create)h(the)591
+803 y(impression)11 b(that)i(one)f(node)g(connection)h(passes)e(over)h
+(another)m(.)591 890 y(Here)f(is)h(a)g(description)h(of)f(the)g(individual)h
+(node)f(connection)h(commands:)591 1006 y FA(\\ncline)p Fw(*[)p
+Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p FA({)p Fu(nodeA)p FA(}{)p
+Fu(nodeB)r FA(})712 1085 y FC(This)e(draws)f(a)h(straight)h(line)f(between)g
+(the)h(nodes.)k(Only)11 b(the)g FB(offset)e FC(and)712 1145
+y FB(nodesep)i FC(parameters)i(are)f(used.)118 1560 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 7.7818 0.15552
+false .5 28.46611 InitRnode } NewNode end end
+ FC(Idea)g(1)472
+1239 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeB 16 { .5 7.7818 0.15552
+false .5 28.46611 InitRnode } NewNode end end
+ FC(Idea)h(2)118 1561 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def tx@NodeDict begin 0.0 0.0
+neg 3.0 3.0 /TheNodeA /TheNodeB InitNC { NCLine } if end gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1334 a FD
+(\\rput[bl]\(0,0\){\\rnode{A}{Idea)20 b(1}})712 1394 y
+(\\rput[tr]\(4,3\){\\rnode{B}{Idea)g(2}})712 1454 y
+(\\ncline[nodesep=3pt]{<->}{A}{B})591 1668 y FA(\\ncLine)p
+Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p FA({)p Fu(nodeA)p
+FA(}{)p Fu(nodeB)r FA(})712 1747 y FC(This)14 b(is)f(like)h
+FB(\\ncline)p FC(,)g(but)f(the)h(labels)g(\(with)f FB(\\lput)p
+FC(,)h(etc\))g(are)g(positioned)712 1807 y(as)f(if)h(the)f(line)h(began)f
+(and)h(ended)f(at)h(the)f(center)h(of)f(the)h(nodes.)20 b(This)13
+b(is)712 1867 y(useful)f(if)g(you)g(have)g(multiple)i(parallel)f(lines)f(and)
+g(you)g(want)g(the)g(labels)712 1928 y(to)19 b(line)g(up,)h(even)f(though)f
+(the)h(nodes)f(are)h(of)f(varying)g(size,)j(e.g.,)f(in)712
+1988 y(commutative)14 b(diagrams.)591 2085 y FA(\\nccurve)p
+Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p FA({)p Fu(nodeA)p
+FA(}{)p Fu(nodeB)r FA(})712 2164 y FC(This)9 b(draws)f(a)h(bezier)g(curve)g
+(between)g(the)g(nodes.)15 b(It)9 b(uses)f(the)h FB(nodesep)p
+FC(,)712 2224 y FB(offset)p FC(,)i FB(angle)g FC(and)h FB(ncurv)f
+FC(parameters.)118 2624 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 11.5818 3.95552
+false .5 43.75 InitRnode } NewNode end end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+FC(Node)g(A)393 2312 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeB 14 { /X 35.51639 2
+div def /Y 7.93732 2 div 0.15552 sub def /w 29.91771 def /h 10.41928
+def /NodePos { GetOnodePos } def } NewNode end end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 29.91771 10.41928
+35.51639 2 div 7.93732 2 div 0.15552 sub Ellipse closepath gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+FC(Node)g(B)118 2640 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeA
+/TheNodeB InitNC { /AngleA 0. def /AngleB 180. def 0.67 0.67 NCCurve
+ } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 712 2413 a FD
+(\\rput[bl]\(0,0\){\\rnode{A}{\\psframebox{Node)19 b(A}}})712
+2473 y(\\rput[tr]\(4,3\){\\ovalnode{B}{Node)h(B}})712 2534
+y(\\nccurve[angleB=180]{A}{B})591 2828 y Fx(Node)9 b(connections)1016
+b(62)p eop
+%%Page: 63 17
+16 bop 591 50 a FA(\\ncarc)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q
+Fw(})p FA({)p Fu(nodeA)p FA(}{)p Fu(nodeB)r FA(})712 131 y
+FC(This)17 b(is)f(actually)h(a)f(variant)h(of)f FB(\\nccurve)p
+FC(.)29 b(I.e.,)17 b(it)g(also)f(connects)g(the)712 191 y(nodes)e(with)f(a)h
+(bezier)h(curve,)f(using)f(the)i FB(nodesep)p FC(,)e FB(offset)p
+FC(,)f(and)i FB(ncurv)712 251 y FC(parameters.)26 b(However)n(,)15
+b(the)g(curve)g(connects)f(to)h(node)g FD(A)f FC(at)i(an)e(angle)712
+311 y FB(arcangleA)d FC(from)f(the)h(line)g(between)g FD(A)g
+FC(and)g FD(B)p FC(,)g(and)f(connects)h(to)g(node)g FD(B)712
+372 y FC(at)i(an)e(angle)i(-)p FB(arcangleB)e FC(from)g(the)h(line)h(between)
+f FD(B)g FC(and)f FD(A)p FC(.)h(For)f(small,)712 432 y(equal)k(values)g(of)f
+FB(angleA)h FC(and)f FB(angleB)h FC(\(e.g.,)g(the)g(default)g(value)g(of)f
+FD(8)p FC(\))712 492 y(and)i(with)g(the)g(default)g(value)g(of)g
+FB(ncurv)p FC(,)g(the)g(curve)f(approximates)i(an)712 552 y(arc)f(of)f(a)h
+(circle.)29 b FB(\\ncarc)14 b FC(is)i(a)f(nice)h(way)f(to)h(connect)g(two)f
+(nodes)g(with)712 612 y(two)d(lines.)160 991 y
+ tx@Dict begin tx@NodeDict begin { 8.31749 2 div 7.7818 0.0 add 2 div
+2 copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add } /TheNodeA 11 { InitCnode
+ } NewNode end end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+@endspecial FC(X)514 755 y
+ tx@Dict begin tx@NodeDict begin { 8.31749 2 div 7.7818 0.0 add 2 div
+2 copy 0.0 sub 4 2 roll Pyth 3.0 add 0.8 add } /TheNodeB 11 { InitCnode
+ } NewNode end end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 8.31749 2 div 7.7818
+0.0 add 2 div 2 copy 0.0 sub 4 2 roll Pyth 3.0 add CLW 2 div add 0
+360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+end
+
+
+@endspecial FC(Y)177 975 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB InitNC
+{ GetAngle dup 8. add /AngleA ED 8. sub 180 add /AngleB ED 0.67
+0.67 NCCurve } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 177 975 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeB /TheNodeA InitNC
+{ GetAngle dup 8. add /AngleA ED 8. sub 180 add /AngleB ED 0.67
+0.67 NCCurve } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 712 747 a FD(\\cnodeput\(0,0\){A}{X})
+712 807 y(\\cnodeput\(3,2\){B}{Y})712 867 y(\\psset{nodesep=3pt})712
+927 y(\\ncarc{->}{A}{B})712 987 y(\\ncarc{->}{B}{A})591 1156
+y FA(\\ncbar)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p
+FA({)p Fu(nodeA)p FA(}{)p Fu(nodeB)r FA(})712 1237 y FC(First,)h(lines)g(are)
+g(drawn)f(attaching)i(to)f(both)g(nodes)f(at)i(an)e(angle)i
+FB(angleA)712 1297 y FC(and)e(of)f(lengths)h FB(armA)f FC(and)h
+FB(armB)p FC(.)g(Then)f(one)h(of)f(the)h(arms)f(is)g(extended)712
+1357 y(so)j(that)i(when)e(the)g(two)h(are)f(connected,)i(the)f(\256nished)f
+(line)h(contains)g(3)712 1418 y(segments)g(meeting)g(at)f(right)h(angles.)24
+b(Generally)m(,)15 b(the)f(whole)g(line)h(has)712 1478 y(three)c(straight)g
+(segments.)17 b(The)11 b(value)g(of)f FB(linearc)g FC(is)g(used)g(for)g
+(rounding)712 1538 y(the)j(corners.)156 1670 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 7.7818 0.15552
+false .5 38.39641 InitRnode } NewNode end end
+ FC(Connect)g(some)440
+1670 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeB 16 { .5 7.7818 0.15552
+false .5 28.15506 InitRnode } NewNode end end
+ FC(words)o(!)591 1670 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+{false} true /DS 0.5 2.5 CLW mul add 2 div def EndDot EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA /TheNodeB InitNC
+{ tx@Dict begin /Lineto { L } def end /AngleA -90. def /AngleB -90.
+ def /armA 10.0 def /armB 10.0 def /AngleB -90. def NCBar } if end
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 712 1635 a FD(\\rnode{A}{Connect})21
+b(some)i(\\rnode{B}{words}!)712 1695 y(\\ncbar[nodesep=3pt,angle=-90]{<-)o
+(**}{)o(A}{B})591 1827 y FA(\\ncdiag)p Fw(*[)p Fv(par)p Fw(]{)p
+Fv(arrows)q Fw(})p FA({)p Fu(nodeA)p FA(}{)p Fu(nodeB)r FA(})712
+1908 y FC(First,)18 b(the)g(arms)e(are)i(drawn)e(using)h FB(angle)f
+FC(and)h FB(arm)p FC(.)32 b(Then)17 b(they)g(are)712 1968 y(connected)11
+b(with)f(a)g(straight)g(line.)18 b(Generally)m(,)10 b(the)g(whole)g(line)h
+(has)e(three)712 2028 y(straight)15 b(segments.)23 b(The)14
+b(value)g(of)g FB(linearc)f FC(is)h(used)f(for)h(rounding)f(the)712
+2088 y(corners.)118 2203 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 11.5818 3.95552
+false .5 43.75 InitRnode } NewNode end end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+FC(Node)e(A)393 2483 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeB 14 { /X 35.51639 2
+div def /Y 7.93732 2 div 0.15552 sub def /w 29.91771 def /h 10.41928
+def /NodePos { GetOnodePos } def } NewNode end end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 29.91771 10.41928
+35.51639 2 div 7.93732 2 div 0.15552 sub Ellipse closepath gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+FC(Node)g(B)118 2510 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeA
+/TheNodeB InitNC { tx@Dict begin /r 5.69046 def /Lineto { Arcto } def
+end /AngleA -90. def /AngleB 90. def /armA 14.22636 def /armB 14.22636
+ def NCDiag } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 712 2283 a FD
+(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)20 b(A}}})712
+2343 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712 2403
+y(\\ncdiag[angleA=-90,angleB=90,arm=.5,linear)o(c=.2]{A}{B})591
+2828 y Fx(Node)9 b(connections)1016 b(63)p eop
+%%Page: 64 18
+17 bop 591 50 a FA(\\ncdiagg)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q
+Fw(})p FA({)p Fu(nodeA)p FA(}{)p Fu(nodeB)r FA(})712 131 y
+FC(This)13 b(is)g(similar)h(to)f FB(\\ncdiag)p FC(,)h(but)f(only)g(the)g(arm)
+g(for)g(node)g(A)f(is)h(drawn.)712 191 y(The)18 b(end)f(of)g(this)h(arm)f(is)
+h(then)f(connected)h(directly)h(to)e(node)g(B.)g(The)712 251
+y(connection)g(typically)g(has)e(two)g(segments.)28 b(The)16
+b(value)g(of)g FB(linearc)f FC(is)712 311 y(used)d(for)g(rounding)f(the)i
+(corners.)177 528 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 4.0 .5 CLW mul
+sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial
+177 528 a
+ tx@Dict begin tx@NodeDict begin { 0.0 0.0 4.0 0.8 .5 .5 sub mul sub
+} /TheNodea 11 { InitCnode } NewNode end end
+ 531 426 a
+ tx@Dict begin tx@NodeDict begin { } /TheNodeb 16 { .5 7.7818 0.0
+false .5 8.31749 InitRnode } NewNode end end
+ FC(H)531 662 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodec 16 { .5 7.7818 0.0
+false .5 7.03876 InitRnode } NewNode end end
+ FC(T)177 528 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 3.0 0.0 /TheNodeb
+/TheNodea InitNC { tx@Dict begin /Lineto { L } def end /AngleA 180.
+ def /AngleB 0. def /armA 56.9055 def /armB 10.0 def NCDiagg }
+if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+ 177 528 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 3.0 0.0 /TheNodec
+/TheNodea InitNC { tx@Dict begin /Lineto { L } def end /AngleA 180.
+ def /AngleB 0. def /armA 56.9055 def /armB 10.0 def NCDiagg }
+if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore
+end
+
+712 418 a FD(\\cnode\(0,0\){4pt}{a})712 478 y
+(\\rput[l]\(3,1\){\\rnode{b}{H}})712 538 y(\\rput[l]\(3,-1\){\\rnode{c}{T}})
+712 599 y(\\ncdiagg[angleA=180,armA=2cm,nodesepA=3pt]{b}{)o(a})712
+659 y(\\ncdiagg[angleA=180,armA=2cm,nodesepA=3pt]{c}{a})591
+790 y FA(\\ncangle)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p
+FA({)p Fu(nodeA)p FA(}{)p Fu(nodeB)r FA(})712 871 y FC(The)d(node)e
+(connection)i(points)f(are)g(determined)h(by)f FB(angleA)g
+FC(and)g FB(angleB)712 931 y FC(\(and)h FB(nodesep)f FC(and)h
+FB(offset)p FC(\).)15 b(Then)10 b(an)h(arm)f(is)g(drawn)f(for)h(node)g
+FD(B)g FC(using)712 992 y FB(armB)p FC(.)j(This)f(arm)g(is)f(connected)i(to)f
+(node)g FD(A)g FC(by)g(a)g(right)g(angle,)g(that)h(also)712
+1052 y(meets)e(node)g FD(A)f FC(at)h(angle)g FB(angleA)p FC(.)g(Generally)m
+(,)g(the)g(whole)f(line)h(has)f(three)712 1112 y(straight)15
+b(segments,)f(but)f(it)i(can)f(have)f(fewer)m(.)23 b(The)14
+b(value)g(of)g FB(linearc)f FC(is)712 1172 y(used)c(for)g(rounding)f(the)i
+(corners.)16 b(Simple,)10 b(right?)17 b(Here)9 b(is)f(an)i(example:)118
+1297 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 11.5818 3.95552
+false .5 43.75 InitRnode } NewNode end end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial FC(Node)h(A)393
+1576 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeB 14 { /X 35.51639 2
+div def /Y 7.93732 2 div 0.15552 sub def /w 29.91771 def /h 10.41928
+def /NodePos { GetOnodePos } def } NewNode end end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 29.91771 10.41928
+35.51639 2 div 7.93732 2 div 0.15552 sub Ellipse closepath gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial FC(Node)g(B)118
+1603 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeA
+/TheNodeB InitNC { tx@Dict begin /Lineto { L } def end /AngleA -90.
+ def /AngleB 90. def /armA 11.38092 def /armB 11.38092 def NCAngle
+ } if end gsave 0.8 SLW 0. setgray 5.0 3.0 0 0 add DashLine grestore
+ grestore end
+ 712 1346 a FD(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)20
+b(A}}})712 1406 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712
+1467 y(\\ncangle[angleA=-90,angleB=90,arm=.4cm,)758 1527 y
+(linestyle=dashed]{A}{B})591 1726 y FA(\\ncangles)p Fw(*[)p
+Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p FA({)p Fu(nodeA)p FA(}{)p
+Fu(nodeB)r FA(})712 1807 y FC(This)f(is)f(similar)h(to)f FB(\\ncangle)p
+FC(,)h(but)f(both)g FB(armA)h FC(and)f FB(armB)h FC(are)f(used.)712
+1867 y(The)g(arms)g(are)f(connected)i(by)e(a)g(right)h(angle)g(that)g(meets)g
+(arm)g FD(A)g FC(at)g(a)712 1927 y(right)11 b(angle)g(as)g(well.)17
+b(Generally)11 b(there)g(are)g(four)f(segments)h(\(hence)g(one)712
+1987 y(more)18 b(angle)f(than)h FB(\\ncangle)p FC(,)g(and)f(hence)g(the)h
+FD(s)f FC(in)h FB(\\ncangles)p FC(\).)31 b(The)712 2047 y(value)16
+b(of)e FB(linearc)h FC(is)f(used)h(for)f(rounding)g(the)i(corners.)25
+b(Compare)15 b(this)712 2108 y(example)e(with)f(the)h(previous)e(one:)118
+2232 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeA 16 { .5 11.5818 3.95552
+false .5 43.75 InitRnode } NewNode end end
+ 16 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 3.95552
+neg 39.95 11.5818 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore end
+
+@endspecial FC(Node)g(A)393
+2512 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeB 14 { /X 35.51639 2
+div def /Y 7.93732 2 div 0.15552 sub def /w 29.91771 def /h 10.41928
+def /NodePos { GetOnodePos } def } NewNode end end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0 360 29.91771 10.41928
+35.51639 2 div 7.93732 2 div 0.15552 sub Ellipse closepath gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial FC(Node)g(B)118
+2539 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodeA
+/TheNodeB InitNC { tx@Dict begin /r 4.26773 def /Lineto { Arcto } def
+end /AngleA -90. def /AngleB 0. def /armA 11.38092 def /armB 11.38092
+ def NCAngles } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke
+ grestore grestore end
+ 712 2312 a FD(\\rput[tl]\(0,3\){\\rnode{A}{\\psframebox{Node)20
+b(A}}})712 2372 y(\\rput[br]\(4,0\){\\ovalnode{B}{Node)f(B}})712
+2432 y(\\ncangles[angleA=-90,arm=.4cm,linearc=.15]{A}{B})591
+2828 y Fx(Node)9 b(connections)1016 b(64)p eop
+%%Page: 65 19
+18 bop 591 50 a FA(\\ncloop)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q
+Fw(})p FA({)p Fu(nodeA)p FA(}{)p Fu(nodeB)r FA(})712 131 y
+FC(The)15 b(\256rst)e(segment)h(is)g FB(armA)p FC(,)g(then)g(it)h(makes)f(a)g
+(90)f(degree)i(turn)e(to)h(the)712 191 y(left,)h(drawing)e(a)g(segment)h(of)f
+(length)h FB(loopsize)p FC(.)21 b(The)14 b(next)f(segment)h(is)712
+251 y(again)f(at)g(a)f(right)g(angle;)h(it)f(connects)h(to)f
+FB(armB)p FC(.)g(For)f(example:)215 446 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodea 16 { .5 19.93428 8.95914
+false .5 73.28362 InitRnode } NewNode end end
+ 16 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 8.95914
+neg 69.48361 19.93428 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial Fc(A)24 b(loop)531 446 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNodea /TheNodea InitNC
+{ tx@Dict begin /r 5.69046 def /Lineto { Arcto } def end /AngleA 0.
+ def /AngleB 180. def /armA 14.22636 def /armB 14.22636 def /loopsize
+28.45274 def NCLoop } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 712 385 a
+FD(\\rnode{a}{\\psframebox{\\Huge)c(A)j(loop}})712 446 y
+(\\ncloop[angleB=180,loopsize=1,arm=.5,linearc=.2]{->}{)o(a}{)o(a})591
+605 y FA(\\nccircle)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q
+Fw(})p FA({)p Fu(node)r FA(}{)p Fu(radius)r FA(})712 686 y
+FC(This)c(draws)f(a)h(circle)g(from)g(a)g(node)f(to)h(itself.)38
+b(It)19 b(is)f(the)h(only)g(node)712 746 y(connection)e(command)e(of)h(this)f
+(sort.)27 b(The)15 b(circle)i(starts)e(at)h(angle)g FB(an-)712
+806 y(gleA)h FC(and)g(goes)f(around)g(the)g(node)h(counterclockwise,)h(at)f
+(a)f(distance)712 866 y FB(nodesepA)c FC(from)g(the)g(node.)591
+997 y(The)d(node)h(connection)g(commands)g(make)f(interesting)i(drawing)e
+(tools)g(as)h(well,)591 1057 y(as)f(an)i(alternative)h(to)e
+FB(\\psline)g FC(for)g(connecting)h(two)f(points.)16 b(There)11
+b(are)f(variants)591 1117 y(of)k(the)h(node)g(connection)g(commands)g(for)f
+(this)h(purpose.)24 b(Each)15 b(begins)g(with)591 1177 y FD(pc)d
+FC(\(for)f(\252point)i(connection\272\))g(rather)f(than)h FD(nc)p
+FC(.)k(E.g.,)712 1308 y FD(\\pcarc{<->}\(3,4\)\(6,9\))591 1438
+y FC(gives)11 b(the)i(same)f(result)g(as)712 1568 y FD
+(\\pnode\(3,4\){A}\\pnode\()o(6,9\){)o(B}\\pcarc{<->})o({A}{)o(B})591
+1699 y FC(Only)f FB(\\ncLine)h FC(and)g FB(\\nccircle)g FC(do)g(not)g(have)g
+FD(pc)g FC(variants:)591 1829 y FA(\\pcline)p Fw(*[)p Fv(par)p
+Fw(]{)p Fv(arrows)q Fw(})p FA(\()p Fu(x1)p FA(,)t Fu(y1)p FA(\)\()p
+Fu(x2)t FA(,)t Fu(y2)t FA(\))712 1910 y FC(Like)h FB(\\ncline)p
+FC(.)591 2012 y FA(\\pccurve)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q
+Fw(})p FA(\()p Fu(x1)p FA(,)t Fu(y1)p FA(\)\()q Fu(x2)t FA(,)t
+Fu(y2)t FA(\))712 2093 y FC(Like)g FB(\\nccurve)p FC(.)591
+2194 y FA(\\pcarc)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p
+FA(\()p Fu(x1)p FA(,)t Fu(y1)p FA(\)\()q Fu(x2)t FA(,)t Fu(y2)t
+FA(\))712 2275 y FC(Like)g FB(\\ncarc)p FC(.)591 2377 y FA(\\pcbar)p
+Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p FA(\()p Fu(x1)p
+FA(,)t Fu(y1)p FA(\)\()p Fu(x)q(2)t FA(,)t Fu(y2)t FA(\))712
+2458 y FC(Like)g FB(\\ncbar)p FC(.)591 2559 y FA(\\pcdiag)p
+Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p FA(\()p Fu(x1)p
+FA(,)t Fu(y1)p FA(\)\()p Fu(x2)t FA(,)t Fu(y2)t FA(\))712 2640
+y FC(Like)g FB(\\ncdiag)p FC(.)591 2828 y Fx(Node)c(connections)1016
+b(65)p eop
+%%Page: 66 20
+19 bop 591 50 a FA(\\pcangle)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q
+Fw(})p FA(\()p Fu(x1)p FA(,)t Fu(y1)p FA(\)\()p Fu(x2)5 b FA(,)t
+Fu(y2)t FA(\))712 130 y FC(Like)13 b FB(\\ncangle)p FC(.)591
+231 y FA(\\pcloop)p Fw(*[)p Fv(par)p Fw(]{)p Fv(arrows)q Fw(})p
+FA(\()p Fu(x1)p FA(,)t Fu(y1)p FA(\)\()p Fu(x2)t FA(,)t Fu(y2)t
+FA(\))712 311 y FC(Like)g FB(\\ncloop)p FC(.)366 507 y Fy(32)71
+b(Attaching)19 b(labels)h(to)f(node)h(connections)591 627 y
+FC(Now)14 b(we)h(come)i(to)e(the)h(commands)g(for)f(attaching)i(labels)g(to)e
+(the)h(node)g(con-)591 688 y(nections.)39 b(The)20 b(node)f(label)h(command)g
+(must)f(come)h(right)f(after)h(the)g(node)591 748 y(connection)c(to)g(which)g
+(the)g(label)g(is)g(to)g(be)g(attached.)29 b(Y)-5 b(ou)16 b(can)g(attach)h
+(more)591 808 y(than)10 b(one)g(label)g(to)h(a)f(node)f(connection,)i(and)f
+(a)g(label)h(can)g(include)f(more)g(nodes.)591 897 y(The)16
+b(node)g(label)h(commands)f(must)g(end)g(up)g(on)g(the)h(same)f(T)1654
+907 y(E)1678 897 y(X)f(page)h(as)g(the)591 957 y(node)11 b(connection)i(to)f
+(which)g(the)h(label)g(corresponds.)591 1045 y(The)j(coordinate)h(ar)o
+(gument)g(in)f(other)h(PST)n(ricks)f FD(put)g FC(commands)g(is)g(a)h(single)
+591 1106 y(number)10 b(in)h(the)f(node)h(label)g(commands:)17
+b FD(\()p Ft(pos)q FD(\))p FC(.)e(This)c(number)f(selects)h(a)f(point)591
+1166 y(on)17 b(the)h(node)g(connection,)i(roughly)e(according)g(to)g(the)g
+(following)g(scheme:)591 1226 y(Each)13 b(node)f(connection)i(has)e
+(potentially)i(one)f(or)g(more)f(segments,)h(including)591
+1286 y(the)j(arms)f(and)h(connecting)h(lines.)29 b(A)15 b(number)h
+Fe(pos)f FC(between)h(0)f(and)h(1)g(picks)591 1346 y(a)g(point)g(on)g(the)h
+(\256rst)f(segment)g(from)g(node)h FD(A)f FC(to)g FD(B)p FC(,)h(\(fraction)g
+Fe(pos)e FC(from)h(the)591 1407 y(beginning)d(to)g(the)h(end)f(of)g(the)h
+(segment\),)g(a)f(number)h(between)f(1)g(and)h(2)f(picks)591
+1467 y(a)f(number)f(on)h(the)g(second)g(segment,)g(and)g(so)f(on.)17
+b(Each)c(node)e(connection)i(has)591 1527 y(its)j(own)g(default)h(value)h(of)
+e(the)h(positioning)g(coordinate,)h(which)e(is)h(used)f(by)591
+1587 y(some)11 b(short)h(versions)f(of)h(the)h(label)f(commands.)591
+1676 y(Here)f(are)i(the)f(details)h(for)f(each)g(node)g(connection:)837
+1797 y Fe(Connection)50 b(Segments)74 b(Range)h(Default)837
+1878 y FB(\\ncline)219 b FC(1)128 b(0)q FF(\243)r Fe(pos)q
+FF(\243)r FC(1)93 b FD(0.5)837 1950 y FB(\\nccurve)179 b FC(1)128
+b(0)q FF(\243)r Fe(pos)q FF(\243)r FC(1)93 b FD(0.5)837 2022
+y FB(\\ncarc)227 b FC(1)128 b(0)q FF(\243)r Fe(pos)q FF(\243)r
+FC(1)93 b FD(0.5)837 2094 y FB(\\ncbar)225 b FC(3)128 b(0)q
+FF(\243)r Fe(pos)q FF(\243)r FC(3)93 b FD(1.5)837 2167 y FB(\\ncdiag)205
+b FC(3)128 b(0)q FF(\243)r Fe(pos)q FF(\243)r FC(3)93 b FD(1.5)837
+2239 y FB(\\ncdiagg)180 b FC(2)128 b(0)q FF(\243)r Fe(pos)q
+FF(\243)r FC(2)93 b FD(0.5)837 2311 y FB(\\ncangle)182 b FC(3)128
+b(0)q FF(\243)r Fe(pos)q FF(\243)r FC(3)93 b FD(1.5)837 2383
+y FB(\\ncloop)203 b FC(5)128 b(0)q FF(\243)r Fe(pos)q FF(\243)r
+FC(4)93 b FD(2.5)837 2456 y FB(\\nccircle)182 b FC(1)128 b(0)q
+FF(\243)r Fe(pos)q FF(\243)r FC(1)93 b FD(0.5)591 2580 y FC(There)10
+b(is)g(another)g(dif)o(ference)h(between)g(the)f(node)g(label)h(commands)f
+(and)h(other)591 2640 y FD(put)h FC(commands.)21 b(In)13 b(addition)g(to)g
+(the)h(various)f(ways)f(of)h(specifying)g(the)g(angle)591 2828
+y Fx(Attaching)c(labels)h(to)g(node)g(connections)707 b(66)p
+eop
+%%Page: 67 21
+20 bop 591 50 a FC(of)16 b(rotation)h(for)g FB(\\rput)p FC(,)g(with)g(the)g
+(node)g(label)g(commands)g(the)g(angle)h(can)f(be)591 110 y(of)d(the)h(form)g
+FD({:)p Ft(angle)q FD(})p FC(.)24 b(In)15 b(this)f(case,)i(the)f(angle)h(is)e
+(calculated)j(after)e(rotating)591 170 y(the)d(coordinate)h(system)f(so)f
+(that)i(the)g(node)e(connection)i(at)g(the)f(position)h(of)e(the)591
+230 y(label)16 b(points)f(to)h(the)f(right)h(\(from)f(nodes)g
+FD(A)g FC(to)h FD(B)p FC(\).)f(E.g.,)h(if)g(the)g(angle)g(is)f
+FD({:U})p FC(,)591 291 y(then)d(the)g(label)h(runs)e(parallel)j(to)e(the)g
+(node)g(connection.)591 380 y(Here)f(are)i(the)f(node)g(label)h(commands:)591
+511 y FA(\\lput)p Fw(*[)p Fv(refpoint)t Fw(]{)p Fv(rotation)q
+Fw(})p FA(\()p Fu(pos)p FA(\){)p Fu(stuf)o(f)6 b FA(})712 592
+y FC(The)15 b FD(l)g FC(stands)f(for)g(\252label\272.)26 b(Here)14
+b(is)h(an)f(example)i(illustrating)f(the)g(use)712 652 y(of)d(the)g(optional)
+h(star)f(and)g FD(:)p Ft(angle)g FC(with)g FB(\\lput)p FC(,)g(as)f(well)h(as)
+g(the)g(use)g(of)f(the)712 712 y FB(offset)g FC(parameter)i(with)f
+FB(\\pcline)p FC(:)118 1060 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 0.0 113.81097
+56.90549 0.0 0.0 /Lineto /lineto load def false Polygon gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial
+118 1060 a
+ tx@Dict begin tx@NodeDict begin { 0.0 0.0 } /TheNode@@A 10 { InitPnode
+ } NewNode end end
+ 118 1060 a
+ tx@Dict begin tx@NodeDict begin { 113.81097 56.90549 } /TheNode@@B
+10 { InitPnode } NewNode end end
+ 118 1060 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+2.0 5. Tbar EndArrow moveto } def /ArrowB { BeginArrow 2.0 5. Tbar
+ EndArrow } def tx@NodeDict begin 12.0 12.0 neg 0.0 0.0 /TheNode@@A
+/TheNode@@B InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 118 1060 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 118 1060 a
+ tx@Dict begin langle Rot end
+ 50 1071
+a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 5.48833
+neg 35.63637 10.7818 .5 Frame gsave 1. setgray fill grestore end
+
+@endspecial FC(Length)118 1060
+y
+ tx@Dict begin langle neg Rot end
+ 118 1060 a
+ tx@Dict begin PutEnd end
+ 712 875 a FD(\\pspolygon\(0,0\)\(4,2\)\(4,0\))712
+935 y(\\pcline[of)o(fset=12pt]{|-|}\(0,0\)\(4,2\))712 995 y
+(\\lput*{:U}{Length})712 1183 y FC(\(Remember)j(that)f(with)f(the)h
+FD(put)g FC(commands,)g(you)f(can)h(omit)g(the)g(coor)o(-)712
+1243 y(dinate)h(if)e(you)h(include)g(the)g(angle)g(of)f(rotation.)22
+b(Y)-5 b(ou)13 b(are)h(likely)g(to)g(use)712 1303 y(this)f(feature)f(with)g
+(the)h(node)f(label)g(commands.\))712 1384 y(W)n(ith)g FB(\\lput)f
+FC(and)f FB(\\rput)p FC(,)h(you)f(have)h(a)g(lot)g(of)g(control)g(over)f(the)
+h(position)g(of)712 1444 y(the)i(label.)18 b(E.g.,)118 1757
+y
+ tx@Dict begin tx@NodeDict begin { 0.0 0.0 } /TheNode@@A 10 { InitPnode
+ } NewNode end end
+ 118 1757 a
+ tx@Dict begin tx@NodeDict begin { 113.81097 56.90549 } /TheNode@@B
+10 { InitPnode } NewNode end end
+ 118 1757 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNode@@A
+/TheNode@@B InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 118 1757 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 118 1757 a
+ tx@Dict begin langle Rot end
+ 118 1710 a
+ tx@Dict begin 0 langle add 0 langle add neg add neg Rot end
+ 25
+1726 a FC(label)118 1710 y
+ tx@Dict begin 0 langle add 0 langle add neg add neg neg Rot end
+ 118 1757 a
+ tx@Dict begin langle neg Rot end
+ 118 1757 a
+ tx@Dict begin PutEnd end
+ 712 1620 a
+FD(\\pcline\(0,0\)\(4,2\))712 1680 y(\\lput{:U}{\\rput[r]{N}\(0,.4\){label}})
+712 1880 y FC(puts)j(the)g(label)h(upright)f(on)g(the)g(page,)j(with)d(right)
+g(side)g(located)h(.4)712 1940 y(centimeters)11 b(\252above\272)f(the)f
+(position)g FD(.5)g FC(of)g(the)h(node)f(connection)h(\(above)712
+2000 y(if)17 b(the)f(node)g(connection)h(points)f(to)g(the)g(right\).)30
+b(However)n(,)16 b(the)g FB(\\aput)712 2060 y FC(and)f FB(\\bput)f
+FC(commands)g(described)h(below)f(handle)h(the)f(most)g(common)712
+2120 y(cases)e(without)g FB(\\rput)p FC(.)1086 2102 y Fs(15)p
+591 2164 544 2 v 632 2194 a Fr(15)662 2209 y Fq(There)f(is)f(also)f(an)i
+(obsolete)e(command)h Fn(\\Lput)g Fq(for)h(putting)g(labels)e(next)h(to)h
+(node)f(connec-)591 2259 y(tions.)j(The)d(syntax)f(is)698 2330
+y Fb(\\Lput{<labelsep>}[<refpoint>]{<rotation>}\(<pos>\){<stuff>})630
+2400 y Fq(It)i(is)e(a)h(combination)f(of)h Fn(\\Rput)g Fq(and)g
+Fn(\\lput)p Fq(,)h(equivalent)d(to)698 2471 y Fb
+(\\lput\(<pos>\){\\Rput{<labelsep>}[<refpoint>]{<rotation>}\(0,0\))q({<stuff)
+q(>}})630 2541 y Fn(\\Mput)15 b Fq(is)f(a)g(short)g(version)f(of)h
+Fn(\\Lput)h Fq(with)f(no)g Fb({)p Fa(rotation)q Fb(})h Fq(or)f
+Fb(\()p Fa(pos)q Fb(\))g Fq(ar)o(gument.)27 b Fn(\\Lput)14
+b Fq(and)591 2591 y Fn(\\Mput)c Fq(remain)g(part)g(of)g(PST)o(ricks)g(only)f
+(for)i(backwards)d(compatibility)m(.)591 2828 y Fx(Attaching)h(labels)h(to)g
+(node)g(connections)707 b(67)p eop
+%%Page: 68 22
+21 bop 591 50 a FA(\\aput)p Fw(*[)p Fv(labelsep)q Fw(]{)p Fv(angle)q
+Fw(})p FA(\()p Fu(pos)p FA(\){)p Fu(stuff)6 b FA(})712 131
+y Ft(stuff)23 b FC(is)16 b(positioned)g(distance)g FB(\\pslabelsep)g
+Fe(above)f FC(the)i(node)e(connec-)712 191 y(tion,)10 b(given)e(the)h
+(convention)g(that)g(node)f(connections)h(point)f(to)h(the)g(right.)712
+251 y FD(\\aput)j FC(is)g(a)g(node-connection)h(variant)g(of)f
+FB(\\uput)p FC(.)17 b(For)11 b(example:)118 564 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 113.81097 0.0 113.81097
+56.90549 0.0 0.0 /Lineto /lineto load def false Polygon gsave 0.8
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 118 564 a
+ tx@Dict begin tx@NodeDict begin { 0.0 0.0 } /TheNode@@A 10 { InitPnode
+ } NewNode end end
+ 118 564 a
+ tx@Dict begin tx@NodeDict begin { 113.81097 56.90549 } /TheNode@@B
+10 { InitPnode } NewNode end end
+ 118 564 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 0.0 0.0 /TheNode@@A
+/TheNode@@B InitNC { NCLine } if end grestore end
+ 118
+564 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 118 564 a
+ tx@Dict begin langle Rot end
+ 118 564 a
+ tx@Dict begin { 5.0 55.0314 7.7818 2.48833 langle 90 add langle
+sub Uput exch pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin
+ end
+ 4 575 a FC(Hypotenuse)118 564 y
+ tx@Dict begin PutEnd end
+ 118
+564 a
+ tx@Dict begin langle neg Rot end
+ 118 564 a
+ tx@Dict begin PutEnd end
+ 712 396 a FD(\\pspolygon\(0,0\)\(4,2\)\(4,0\))712
+456 y(\\pcline[linestyle=none]\(0,0\)\(4,2\))712 517 y
+(\\aput{:U}{Hypotenuse})591 687 y FA(\\bput)p Fw(*[)p Fv(labelsep)q
+Fw(]{)p Fv(angle)q Fw(})p FA(\()p Fu(pos)p FA(\){)p Fu(stuf)o(f)c
+FA(})712 768 y FC(This)14 b(is)f(like)h FB(\\aput)p FC(,)f(but)g
+Ft(stuff)20 b FC(is)14 b(positioned)f Fe(below)h FC(the)f(node)g(connec-)712
+828 y(tion.)591 958 y(It)e(is)g(fairly)h(common)g(to)f(want)h(to)f(use)g(the)
+h(default)g(position)f(and)h(rotation)g(with)591 1019 y(these)k(node)g
+(connections,)i(but)e(you)g(have)h(to)f(include)h(at)g(least)g(one)f(of)h
+(these)591 1079 y(ar)o(guments.)g(Therefore,)c(PST)n(ricks)e(contains)i(some)
+e(variants:)712 1224 y FA(\\mput)p Fw(*[)p Fv(refpoint)t Fw(])p
+FA({)p Fu(stuf)o(f)6 b FA(})712 1299 y(\\Aput)p Fw(*[)p Fv(labelsep)q
+Fw(])p FA({)p Fu(stuf)o(f)g FA(})712 1374 y(\\Bput)p Fw(*[)p
+Fv(labelsep)q Fw(])p FA({)p Fu(stuf)o(f)g FA(})591 1504 y FC(of)12
+b FB(\\lput)p FC(,)g FB(\\aput)g FC(and)g FB(\\bput)p FC(,)g(respectively)m
+(,)h(that)g(have)f(no)g(angle)h(or)f(positioning)591 1565 y(ar)o(gument.)18
+b(For)11 b(example:)118 1886 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0.0 0.0 3.0 SD end
+
+@endspecial
+118 1886 a
+ tx@Dict begin tx@NodeDict begin { 0.0 0.0 3.0 0.8 .5 .5 sub mul sub
+} /TheNodeA 11 { InitCnode } NewNode end end
+ @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 113.81097 56.90549 3.0
+SD end
+
+@endspecial 118 1886
+a
+ tx@Dict begin tx@NodeDict begin { 113.81097 56.90549 3.0 0.8 .5 .5
+sub mul sub } /TheNodeB 11 { InitCnode } NewNode end end
+ 118 1886 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { } def tx@NodeDict begin 0.0 0.0 neg 3.0 3.0 /TheNodeA
+/TheNodeB InitNC { NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore grestore end
+ 118 1886 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 106 1902 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.0 SLW 1. setgray 0. true 3.0 neg 3.0
+neg 8.76004 10.7818 .5 Frame gsave 1. setgray fill grestore end
+
+
+@endspecial FC(1)118 1886 y
+ tx@Dict begin PutEnd end
+ 712 1688 a FD(\\cnode*\(0,0\){3pt}{A})712
+1748 y(\\cnode*\(4,2\){3pt}{B})712 1808 y(\\ncline[nodesep=3pt]{A}{B})712
+1868 y(\\mput*{1})591 2017 y FC(Here)g(is)h(another:)118 2328
+y
+ tx@Dict begin tx@NodeDict begin { 0.0 0.0 } /TheNode@@A 10 { InitPnode
+ } NewNode end end
+ 118 2328 a
+ tx@Dict begin tx@NodeDict begin { 113.81097 56.90549 } /TheNode@@B
+10 { InitPnode } NewNode end end
+ 118 2328 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def tx@NodeDict begin 0.0 0.0
+neg 0.0 0.0 /TheNode@@A /TheNode@@B InitNC { NCLine } if end gsave
+0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 118 2328 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 118 2328 a
+ tx@Dict begin { 5.0 26.2312 7.7818 0.09792 langle 90 add Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 64 2344 a FC(Label)118
+2328 y
+ tx@Dict begin PutEnd end
+ 118 2328 a
+ tx@Dict begin PutEnd end
+ 712 2190 a FD(\\pcline{<->}\(0,0\)\(4,2\))712
+2251 y(\\Aput{Label})591 2459 y FC(Now)k(we)i(can)g(compare)h
+FB(\\ncline)f FC(with)g FB(\\ncLine)p FC(,)h(and)f FB(\\rnode)g
+FC(with)f FB(\\Rnode)p FC(.)591 2519 y(First,)11 b(here)h(is)g(a)g
+(mathematical)j(diagram)e(with)f FB(\\ncLine)g FC(and)g FB(\\Rnode)p
+FC(:)591 2828 y Fx(Attaching)d(labels)h(to)g(node)g(connections)707
+b(68)p eop
+%%Page: 69 23
+22 bop 712 50 a FD(\\[)758 110 y(\\setlength{\\arraycolsep}{1cm})758
+170 y(\\def\\tX{\\tilde{\\tilde{X}}})758 230 y(\\begin{array}{cc})803
+291 y(\\Rnode{a}{\(X-A,N-A\)})21 b(&)i(\\Rnode{b}{\(\\tX,a\)}\\\\[1.5cm])803
+351 y(\\Rnode{c}{\(X,N\)})f(&)h(\\Rnode{d}{\\LARGE\(\\tX,N\)}\\\\[1.5cm])758
+411 y(\\end{array})758 471 y(\\psset{nodesep=5pt,arrows=->})758
+531 y(\\everypsbox{\\scriptstyle})758 592 y(\\ncLine{a}{b}\\Aput{a})758
+652 y(\\ncLine{a}{c}\\Bput{r})758 712 y
+(\\ncLine[linestyle=dashed]{c}{d}\\Bput{b})758 772 y(\\ncLine{b}{d}\\Bput{s})
+712 832 y(\\])956 1016 y
+ tx@Dict begin tx@NodeDict begin { 7.7818 2.03905 65.26706 0.0 3.61267
+ } /TheNodea 16 { InitRNode } NewNode end end
+ FC(\()p Fe(X)13 b FC(\261)e Fe(A;)d(N)13
+b FC(\261)e Fe(A)p FC(\))1468 1016 y
+ tx@Dict begin tx@NodeDict begin { 11.76196 2.03905 26.56075 0.0 3.61267
+ } /TheNodeb 16 { InitRNode } NewNode end end
+ FC(\()1491 997 y(\304)1491
+1006 y(\304)1484 1016 y Fe(X)q(;)e(a)p FC(\))1032 1266 y
+ tx@Dict begin tx@NodeDict begin { 7.7818 2.03905 28.58827 0.0 3.61267
+ } /TheNodec 16 { InitRNode } NewNode end end
+ FC(\()p
+Fe(X;)g(N)q FC(\))1463 1266 y
+ tx@Dict begin tx@NodeDict begin { 11.76196 2.03905 28.8417 0.0 3.61267
+ } /TheNoded 16 { InitRNode } NewNode end end
+ FC(\()1486 1247 y(\304)1486 1256
+y(\304)1479 1266 y Fe(X)r(;)f(N)q FC(\))1701 1227 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodeb InitNC
+{ NCLine /LPutVar [ nodeA GetCenter nodeB GetCenter 3 1 roll 4 1 roll
+] cvx def } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 1701 1227
+a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1227 a
+ tx@Dict begin { 5.0 3.84003 3.35233 0.0768 langle 90 add Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1693 1234 a Fd(a)1701 1227 y
+ tx@Dict begin PutEnd end
+ 1701 1227 a
+ tx@Dict begin PutEnd end
+ 1701
+1227 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodec InitNC
+{ NCLine /LPutVar [ nodeA GetCenter nodeB GetCenter 3 1 roll 4 1 roll
+] cvx def } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 1701 1227 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1227 a
+ tx@Dict begin { 5.0 3.01057 3.35233 0.0 langle 90 sub Uput exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1695 1234 a Fd(r)1701 1227 y
+ tx@Dict begin PutEnd end
+
+1701 1227 a
+ tx@Dict begin PutEnd end
+ 1701 1227 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodec /TheNoded InitNC
+{ NCLine /LPutVar [ nodeA GetCenter nodeB GetCenter 3 1 roll 4 1 roll
+] cvx def } if end gsave 0.8 SLW 0. setgray 5.0 3.0 -2 0 add DashLine
+ grestore grestore end
+ 1701 1227 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1227 a
+ tx@Dict begin { 5.0 3.84003 5.29155 0.0768 langle 90 sub Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1693 1238 a
+Fd(b)1701 1227 y
+ tx@Dict begin PutEnd end
+ 1701 1227 a
+ tx@Dict begin PutEnd end
+ 1701 1227 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodeb /TheNoded InitNC
+{ NCLine /LPutVar [ nodeA GetCenter nodeB GetCenter 3 1 roll 4 1 roll
+] cvx def } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 1701 1227 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1227
+a
+ tx@Dict begin { 5.0 2.98753 3.35233 0.0768 langle 90 sub Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1695 1234 a Fd(s)1701 1227 y
+ tx@Dict begin PutEnd end
+ 1701 1227 a
+ tx@Dict begin PutEnd end
+ 603 1551 a FC(Here)j(is)h(the)h
+(same)f(one,)g(but)g(with)g FB(\\ncline)g FC(and)g FB(\\rnode)g
+FC(instead:)956 1662 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodea 16 { .5 7.7818 2.03905
+false .5 65.26706 InitRnode } NewNode end end
+ FC(\()p Fe(X)h FC(\261)e Fe(A;)d(N)13
+b FC(\261)e Fe(A)p FC(\))1468 1662 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodeb 16 { .5 11.76196 2.03905
+false .5 26.56075 InitRnode } NewNode end end
+ FC(\()1491 1643 y(\304)1491
+1652 y(\304)1484 1662 y Fe(X)q(;)e(a)p FC(\))1032 1912 y
+ tx@Dict begin tx@NodeDict begin { } /TheNodec 16 { .5 7.7818 2.03905
+false .5 28.58827 InitRnode } NewNode end end
+ FC(\()p
+Fe(X;)g(N)q FC(\))1463 1912 y
+ tx@Dict begin tx@NodeDict begin { } /TheNoded 16 { .5 11.76196 2.03905
+false .5 28.8417 InitRnode } NewNode end end
+ FC(\()1486 1893 y(\304)1486 1902
+y(\304)1479 1912 y Fe(X)r(;)f(N)q FC(\))1701 1873 y
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodeb InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 1701 1873
+a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1873 a
+ tx@Dict begin { 5.0 3.84003 3.35233 0.0768 langle 90 add Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1693 1880 a Fd(a)1701 1873 y
+ tx@Dict begin PutEnd end
+ 1701 1873 a
+ tx@Dict begin PutEnd end
+ 1701
+1873 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodea /TheNodec InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 1701 1873 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1873 a
+ tx@Dict begin { 5.0 3.01057 3.35233 0.0 langle 90 sub Uput exch pop
+add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1695 1880 a Fd(r)1701 1873 y
+ tx@Dict begin PutEnd end
+
+1701 1873 a
+ tx@Dict begin PutEnd end
+ 1701 1873 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodec /TheNoded InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 5.0 3.0 -2 0 add DashLine
+ grestore grestore end
+ 1701 1873 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1873 a
+ tx@Dict begin { 5.0 3.84003 5.29155 0.0768 langle 90 sub Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1693 1884 a
+Fd(b)1701 1873 y
+ tx@Dict begin PutEnd end
+ 1701 1873 a
+ tx@Dict begin PutEnd end
+ 1701 1873 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { moveto
+} def /ArrowB { BeginArrow false 0.4 1.4 2.0 3. Arrow EndArrow }
+def tx@NodeDict begin 0.0 0.0 neg 5.0 5.0 /TheNodeb /TheNoded InitNC
+{ NCLine } if end gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore
+ grestore end
+ 1701 1873 a
+ tx@Dict begin tx@NodeDict begin /t 0.5 def LPutCoor end PutBegin
+ end
+ 1701 1873
+a
+ tx@Dict begin { 5.0 2.98753 3.35233 0.0768 langle 90 sub Uput exch
+pop add a PtoC h1 add exch w1 add exch } PutCoor PutBegin end
+ 1695 1880 a Fd(s)1701 1873 y
+ tx@Dict begin PutEnd end
+ 1701 1873 a
+ tx@Dict begin PutEnd end
+ 591 2223 a Fz(Driver)h(notes:)44
+b(The)11 b(node)g(macros)g(use)g Fg(\\pstV)n(erb)g Fz(and)g
+Fg(\\pstverbscale)p Fz(.)591 2828 y Fx(Attaching)e(labels)h(to)g(node)g
+(connections)707 b(69)p eop
+%%Page: 70 24
+23 bop -55 265 a Fl(VIII)591 182 y Fk(Special)23 b(T)-5 b(ricks)366
+586 y Fy(33)71 b(Coils)19 b(and)h(zigzags)591 707 y FC(The)10
+b(\256le)g FD(pst-coil.tex)p FC(/)p FD(pst-coil.sty)j FC(\(and)d(optionally)h
+(the)g(header)f(\256le)g FD(pst-coil.pro)p FC(\))325 731 y
+@beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 238 749 a FA(pst-coil)591
+767 y FC(de\256nes)h(the)h(following)g(graphics)g(objects)h(for)e(coils)i
+(and)f(zigzags:)712 907 y FA(\\pscoil)p Fw(*[)p Fv(par)5 b
+Fw(]{)p Fv(arrows)q Fw(}\()p Fv(x0)r Fw(,)t Fv(y0)r Fw(\))p
+FA(\()p Fu(x1)p FA(,)t Fu(y1)p FA(\))712 981 y(\\psCoil)p Fw(*[)p
+Fv(par)g Fw(])p FA({)p Fu(angle1)p FA(}{)p Fu(angle2)t FA(})712
+1056 y(\\pszigzag)p Fw(*[)p Fv(par)g Fw(]{)p Fv(arrows)q Fw(}\()p
+Fv(x0)r Fw(,)t Fv(y0)r Fw(\))p FA(\()p Fu(x1)p FA(,)t Fu(y1)p
+FA(\))591 1181 y FC(These)12 b(graphics)g(objects)g(use)g(the)g(following)g
+(parameters:)712 1306 y FA(coilwidth=)p Fu(dim)589 b Fm(Default:)20
+b FA(1cm)712 1366 y(coilheight=)p Fu(num)625 b Fm(Default:)20
+b FA(1)712 1426 y(coilarm=)p Fu(dim)613 b Fm(Default:)20 b
+FA(.5cm)712 1487 y(coilaspect=)p Fu(angle)566 b Fm(Default:)20
+b FA(45)712 1547 y(coilinc=)p Fu(angle)649 b Fm(Default:)20
+b FA(10)591 1672 y FC(All)9 b(coil)h(and)g(zigzag)g(objects)g(draw)f(a)g
+(coil)h(or)g(zigzag)g(whose)e(width)i(\(diameter\))591 1732
+y(is)j FB(coilwidth)p FC(,)h(and)g(with)g(the)g(distance)h(along)f(the)g
+(axes)f(for)h(each)g(period)g(\(360)591 1792 y(degrees\))d(equal)i(to)712
+1917 y FB(coilheight)f FC(x)g FB(coilwidth)p FC(.)591 2042
+y(Both)h FB(\\pscoil)h FC(and)g FB(\\psCoil)h FC(draw)e(a)h(\2523D\272)f
+(coil,)i(projected)f(onto)g(the)g(xz-axes.)591 2102 y(The)i(center)h(of)f
+(the)h(3D)f(coil)g(lies)h(on)f(the)h(yz-plane)g(at)f(angle)h(pcoilaspect)h
+(to)591 2162 y(the)11 b(z-axis.)17 b(The)12 b(coil)g(is)f(drawn)f(with)i
+(PostScript')m(s)e FD(lineto)p FC(,)h(joining)h(points)f(that)591
+2222 y(lie)16 b(at)g(angle)g FB(coilinc)g FC(from)g(each)g(other)g(along)g
+(the)g(coil.)29 b(Hence,)16 b(increasing)591 2283 y FB(coilinc)h
+FC(makes)h(the)g(curve)f(smoother)h(but)f(the)h(printing)g(slower)m(.)33
+b FB(\\pszigzag)591 2343 y FC(does)11 b(not)h(use)g(the)g FB(coilaspect)f
+FC(and)h FB(coilinc)g FC(parameters.)591 2431 y FB(\\pscoil)p
+FC(and)18 b FB(\\pszigzag)g FC(connect)g FD(\()p Ft(x0)r FD(,)t
+Ft(y0)r FD(\))f FC(and)h FD(\()p Ft(x1)p FD(,)t Ft(y1)p FD(\))p
+FC(,)h(starting)f(and)g(ending)591 2491 y(with)11 b(straight)h(line)h
+(segments)e(of)h(length)g FB(coilarmA)g FC(and)g FB(coilarmB)p
+FC(,)g(resp.)17 b(Set-)591 2552 y(ting)12 b FB(coilarm)g FC(is)g(the)g(same)h
+(as)e(setting)i FB(coilarmA)g FC(and)f FB(coilarmB)p FC(.)591
+2640 y(Here)f(is)h(an)g(example)h(of)f FB(\\pscoil)p FC(:)591
+2828 y Fx(Special)d(T)o(ricks)1085 b(70)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/graphics/pstricks/doc/pst-usr4.ps b/obsolete/graphics/pstricks/doc/pst-usr4.ps
new file mode 100644
index 0000000000..35f65bb139
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/pst-usr4.ps
@@ -0,0 +1,1780 @@
+%!PS-Adobe-2.0
+%%Creator: dvips 5.491 Copyright 1986, 1992 Radical Eye Software
+%%Title: pst-user.dvi
+%%Pages: 25 1
+%%BoundingBox: 0 0 612 792
+%%DocumentFonts: Helvetica Times-Roman Helvetica-Bold Helvetica-Oblique
+%%+ Helvetica-BoldOblique Times-Italic Times-Bold Symbol
+%%EndComments
+%DVIPSCommandLine: dvips pst-user.dvi -Pport -o pst-usr4.ps -p71 -l95
+%%BeginProcSet: tex.pro
+%!
+/TeXDict 250 dict def TeXDict begin /N{def}def /B{bind def}N /S{exch}N /X{S N}
+B /TR{translate}N /isls false N /vsize 11 72 mul N /@rigin{isls{[0 -1 1 0 0 0]
+concat}if 72 Resolution div 72 VResolution div neg scale isls{Resolution hsize
+-72 div mul 0 TR}if Resolution VResolution vsize -72 div 1 add mul TR matrix
+currentmatrix dup dup 4 get round 4 exch put dup dup 5 get round 5 exch put
+setmatrix}N /@landscape{/isls true N}B /@manualfeed{statusdict /manualfeed
+true put}B /@copies{/#copies X}B /FMat[1 0 0 -1 0 0]N /FBB[0 0 0 0]N /nn 0 N
+/IE 0 N /ctr 0 N /df-tail{/nn 8 dict N nn begin /FontType 3 N /FontMatrix
+fntrx N /FontBBox FBB N string /base X array /BitMaps X /BuildChar{
+CharBuilder}N /Encoding IE N end dup{/foo setfont}2 array copy cvx N load 0 nn
+put /ctr 0 N[}B /df{/sf 1 N /fntrx FMat N df-tail}B /dfs{div /sf X /fntrx[sf 0
+0 sf neg 0 0]N df-tail}B /E{pop nn dup definefont setfont}B /ch-width{ch-data
+dup length 5 sub get}B /ch-height{ch-data dup length 4 sub get}B /ch-xoff{128
+ch-data dup length 3 sub get sub}B /ch-yoff{ch-data dup length 2 sub get 127
+sub}B /ch-dx{ch-data dup length 1 sub get}B /ch-image{ch-data dup type
+/stringtype ne{ctr get /ctr ctr 1 add N}if}B /id 0 N /rw 0 N /rc 0 N /gp 0 N
+/cp 0 N /G 0 N /sf 0 N /CharBuilder{save 3 1 roll S dup /base get 2 index get
+S /BitMaps get S get /ch-data X pop /ctr 0 N ch-dx 0 ch-xoff ch-yoff ch-height
+sub ch-xoff ch-width add ch-yoff setcachedevice ch-width ch-height true[1 0 0
+-1 -.1 ch-xoff sub ch-yoff .1 add]{ch-image}imagemask restore}B /D{/cc X dup
+type /stringtype ne{]}if nn /base get cc ctr put nn /BitMaps get S ctr S sf 1
+ne{dup dup length 1 sub dup 2 index S get sf div put}if put /ctr ctr 1 add N}
+B /I{cc 1 add D}B /bop{userdict /bop-hook known{bop-hook}if /SI save N @rigin
+0 0 moveto /V matrix currentmatrix dup 1 get dup mul exch 0 get dup mul add
+.99 lt{/FV}{/RV}ifelse load def pop}N /eop{SI restore showpage userdict
+/eop-hook known{eop-hook}if}N /@start{userdict /start-hook known{start-hook}
+if /VResolution X /Resolution X 1000 div /DVImag X /IE 256 array N 0 1 255{IE
+S 1 string dup 0 3 index put cvn put}for 65781.76 div /vsize X 65781.76 div
+/hsize X}N /p{show}N /RMat[1 0 0 -1 0 0]N /BDot 260 string N /rulex 0 N /ruley
+0 N /v{/ruley X /rulex X V}B /V{}B /RV statusdict begin /product where{pop
+product dup length 7 ge{0 7 getinterval dup(Display)eq exch 0 4 getinterval
+(NeXT)eq or}{pop false}ifelse}{false}ifelse end{{gsave TR -.1 -.1 TR 1 1 scale
+rulex ruley false RMat{BDot}imagemask grestore}}{{gsave TR -.1 -.1 TR rulex
+ruley scale 1 1 false RMat{BDot}imagemask grestore}}ifelse B /FV{gsave
+transform round exch round exch itransform moveto rulex 0 rlineto 0 ruley neg
+rlineto rulex neg 0 rlineto fill grestore}B /a{moveto}B /delta 0 N /tail{dup
+/delta X 0 rmoveto}B /M{S p delta add tail}B /b{S p tail}B /c{-4 M}B /d{-3 M}
+B /e{-2 M}B /f{-1 M}B /g{0 M}B /h{1 M}B /i{2 M}B /j{3 M}B /k{4 M}B /w{0
+rmoveto}B /l{p -4 w}B /m{p -3 w}B /n{p -2 w}B /o{p -1 w}B /q{p 1 w}B /r{p 2 w}
+B /s{p 3 w}B /t{p 4 w}B /x{0 S rmoveto}B /y{3 2 roll p a}B /bos{/SS save N}B
+/eos{SS restore}B end
+%%EndProcSet
+%%BeginProcSet: pstricks.pro
+%!
+% PostScript prologue for pstricks.tex.
+% Created 1993/3/12. Source file was pstricks.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@Dict 200 dict def tx@Dict begin
+/ADict 25 dict def
+/CM { matrix currentmatrix } bind def
+/SLW /setlinewidth load def
+/CLW /currentlinewidth load def
+/CP /currentpoint load def
+/ED { exch def } bind def
+/L /lineto load def
+/T /translate load def
+/Atan { /atan load stopped { pop pop 0 } if } def
+/Div { dup 0 eq { pop } { div } ifelse } def
+/NET { neg exch neg exch T } def
+/Pyth { dup mul exch dup mul add sqrt } def
+/PtoC { 2 copy cos mul 3 1 roll sin mul } def
+/PathLength@ { /z z y y1 sub x x1 sub Pyth add def /y1 y def /x1 x def }
+def
+/PathLength { flattenpath /z 0 def { /y1 ED /x1 ED /y2 y1 def /x2 x1 def
+} { /y ED /x ED PathLength@ } {} { /y y2 def /x x2 def PathLength@ }
+pathforall z } def
+/STP { .996264 dup scale } def
+/STV { SDict begin normalscale end STP } def
+/DashLine { dup 0 gt { /a .5 def PathLength exch div } { pop /a 1 def
+PathLength } ifelse /b ED /x ED /y ED /z y x add def b a .5 sub 2 mul y
+mul sub z Div round z mul a .5 sub 2 mul y mul add b exch Div dup y mul
+/y ED x mul /x ED x 0 eq y 0 eq and { /x 1 def /y 1 def } if [ y x ] 1 a
+sub y mul setdash stroke } def
+/DotLine { /b PathLength def /a ED /z ED /y CLW def /z y z add def a 0 gt
+{ /b b a div def } { a 0 eq { /b b y sub def } { a -3 eq { /b b y add
+def } if } ifelse } ifelse [ 0 b b z Div round Div dup 0 le { pop 1 } if
+] a 0 gt { 0 } { y 2 div a -2 gt { neg } if } ifelse setdash 1
+setlinecap stroke } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap n { currentstrokeadjust == x1 y1 moveto x2 y1 L
+stroke /y1 y1 a add def } repeat grestore } def
+/LineFill { abs CLW add /a ED gsave clip pathbbox a Div ceiling /y2 ED
+/x2 ED a Div floor /y1 ED /x1 ED /n y2 y1 sub 1 add cvi def /y1 a y1 mul
+def newpath 2 setlinecap systemdict /currentstrokeadjust known {
+currentstrokeadjust } { false } ifelse { /t { } def } { /t { transform
+0.25 sub round 0.25 add exch 0.25 sub round 0.25 add exch itransform }
+bind def } ifelse n { x1 y1 t moveto x2 y1 t L stroke /y1 y1 a add def }
+repeat grestore } def
+/BeginArrow { ADict begin /@mtrx CM def gsave 2 copy T 2 index sub neg
+exch 3 index sub exch Atan rotate newpath } def
+/EndArrow { @mtrx setmatrix CP grestore end } def
+/Arrow { CLW mul add dup 2 div /w ED mul dup /h ED mul /a ED { 0 h T 1 -1
+scale } if w neg h moveto 0 0 L w h L w neg a neg rlineto gsave fill
+grestore } def
+/Tbar { CLW mul add /z ED z -2 div CLW 2 div moveto z 0 rlineto stroke 0
+CLW moveto } def
+/Bracket { CLW mul add dup CLW sub 2 div /x ED mul CLW add /y ED /z CLW 2
+div def x neg y moveto x neg CLW 2 div L x CLW 2 div L x y L stroke 0
+CLW moveto } def
+/RoundBracket { CLW mul add dup 2 div /x ED mul /y ED /mtrx CM def 0 CLW
+2 div T x y mul 0 ne { x y scale } if 1 1 moveto .85 .5 .35 0 0 0
+curveto -.35 0 -.85 .5 -1 1 curveto mtrx setmatrix stroke 0 CLW moveto }
+def
+/Shadow { [ { /moveto load } { /lineto load } { /curveto load } {
+/closepath load } pathforall ] cvx newpath 3 1 roll T exec } def
+/SD { 0 360 arc fill } def
+/SQ { /r ED r r moveto r r neg L r neg r neg L r neg r L fill } def
+/ST { /y ED /x ED x y moveto x neg y L 0 x L fill } def
+/SP { /r ED gsave 0 r moveto 4 { 72 rotate 0 r L } repeat fill grestore }
+def
+/NArray { aload length 2 div dup dup cvi eq not { exch pop } if /n exch
+cvi def } def
+/NArray { /f ED counttomark 2 div dup cvi /n ED n eq not { exch pop } if
+f { ] aload /Points ED } { n 2 mul 1 add -1 roll pop } ifelse } def
+/Line { NArray n 0 eq not { n 1 eq { 0 0 /n 2 def } if ArrowA /n n 2 sub
+def n { Lineto } repeat CP 4 2 roll ArrowB L pop pop } if } def
+/Arcto { /a [ 6 -2 roll ] cvx def a r /arcto load stopped { 5 } { 4 }
+ifelse { pop } repeat a } def
+/CheckClosed { dup n 2 mul 1 sub index eq 2 index n 2 mul 1 add index eq
+and { pop pop /n n 1 sub def } if } def
+/Polygon { NArray n 2 eq { 0 0 /n 3 def } if n 3 lt { n { pop pop }
+repeat } { n 3 gt { CheckClosed } if n 2 mul -2 roll /y0 ED /x0 ED /y1
+ED /x1 ED x1 y1 /x1 x0 x1 add 2 div def /y1 y0 y1 add 2 div def x1 y1
+moveto /n n 2 sub def n { Lineto } repeat x1 y1 x0 y0 6 4 roll Lineto
+Lineto pop pop closepath } ifelse } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CCA { /y ED /x ED 2 copy y sub /dy1 ED x sub /dx1 ED /l1 dx1 dy1 Pyth
+def } def
+/CC { /l0 l1 def /x1 x dx sub def /y1 y dy sub def /dx0 dx1 def /dy0 dy1
+def CCA /dx dx0 l1 c exp mul dx1 l0 c exp mul add def /dy dy0 l1 c exp
+mul dy1 l0 c exp mul add def /m dx0 dy0 Atan dx1 dy1 Atan sub 2 div cos
+abs b exp a mul dx dy Pyth Div 2 div def /x2 x l0 dx mul m mul sub def
+/y2 y l0 dy mul m mul sub def /dx l1 dx mul m mul neg def /dy l1 dy mul
+m mul neg def } def
+/IC { /c c 1 add def c 0 lt { /c 0 def } { c 3 gt { /c 3 def } if }
+ifelse /a a 2 mul 3 div 45 cos b exp div def CCA /dx 0 def /dy 0 def }
+def
+/BOC { IC CC x2 y2 x1 y1 ArrowA CP 4 2 roll x y curveto } def
+/NC { CC x1 y1 x2 y2 x y curveto } def
+/EOC { x dx sub y dy sub 4 2 roll ArrowB 2 copy curveto } def
+/BAC { IC CC x y moveto CC x1 y1 CP ArrowA } def
+/NAC { x2 y2 x y curveto CC x1 y1 } def
+/EAC { x2 y2 x y ArrowB curveto pop pop } def
+/OpenCurve { NArray n 3 lt { n { pop pop } repeat } { BOC /n n 3 sub def
+n { NC } repeat EOC } ifelse } def
+/AltCurve { { false NArray n 2 mul 2 roll [ n 2 mul 3 sub 1 roll ] aload
+/Points ED n 2 mul -2 roll } { false NArray } ifelse n 4 lt { n { pop
+pop } repeat } { BAC /n n 4 sub def n { NAC } repeat EAC } ifelse } def
+/ClosedCurve { NArray n 3 lt { n { pop pop } repeat } { n 3 gt {
+CheckClosed } if 6 copy n 2 mul 6 add 6 roll IC CC x y moveto n { NC }
+repeat closepath pop pop } ifelse } def
+/EndDot { { /z DS def } { /z 0 def } ifelse /b ED 0 z DS SD b { 0 z DS
+CLW sub SD } if 0 DS z add CLW 4 div sub moveto } def
+/Rect { x1 y1 y2 add 2 div moveto x1 y2 lineto x2 y2 lineto x2 y1 lineto
+x1 y1 lineto closepath } def
+/OvalFrame { x1 x2 eq y1 y2 eq or { pop pop x1 y1 moveto x2 y2 L } { y1
+y2 sub abs x1 x2 sub abs 2 copy gt { exch pop } { pop } ifelse 2 div
+exch { dup 3 1 roll mul exch } if 2 copy lt { pop } { exch pop } ifelse
+/b ED x1 y1 y2 add 2 div moveto x1 y2 x2 y2 b arcto x2 y2 x2 y1 b arcto
+x2 y1 x1 y1 b arcto x1 y1 x1 y2 b arcto 16 { pop } repeat closepath }
+ifelse } def
+/Frame { CLW mul /a ED 3 -1 roll 2 copy gt { exch } if a sub /y2 ED a add
+/y1 ED 2 copy gt { exch } if a sub /x2 ED a add /x1 ED 1 index 0 eq {
+pop pop Rect } { OvalFrame } ifelse } def
+/Parab { /y0 exch def /x0 exch def /y1 exch def /x1 exch def /dx x0 x1
+sub 3 div def /dy y0 y1 sub 3 div def x0 dx sub y0 dy add x1 y1 ArrowA
+x0 dx add y0 dy add x0 2 mul x1 sub y1 ArrowB curveto /Points [ x1 y1 x0
+y0 x0 2 mul x1 sub y1 ] def } def
+/Grid { /a 4 string def /b ED /d ED /n ED cvi dup 1 lt { pop 1 } if /c ED
+c div dup 0 eq { pop 1 } if /cy ED c div dup 0 eq { pop 1 } if /cx ED cy
+div cvi /y ED cx div cvi /x ED cy div cvi /y2 ED cx div cvi /x2 ED cy
+div cvi /y1 ED cx div cvi /x1 ED /h y2 y1 sub 0 gt { 1 } { -1 } ifelse
+def /w x2 x1 sub 0 gt { 1 } { -1 } ifelse def b 0 gt { /z1 b 4 div CLW 2
+div add def /Helvetica findfont b scalefont setfont /b b .95 mul CLW 2
+div add def } if gsave n 0 gt { 1 setlinecap [ 0 cy n div ] 0 setdash }
+{ 2 setlinecap } ifelse /c x1 def /i 500 w mul x1 add def /e y cy mul
+def /f y1 cy mul def /g y2 cy mul def x1 cx mul 0 T { newpath 0 e moveto
+b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1} {z1 z2
+add neg} ifelse h 0 gt {b neg} {z1} ifelse rmoveto show grestore } if 0
+f moveto 0 g L stroke cx w mul 0 T c x2 eq c i eq or {exit} if /c c w
+add def } loop grestore gsave n 0 gt { 1 setlinecap [ 0 cx n div ] 0
+setdash } { 2 setlinecap } ifelse /c y1 def /i 500 h mul y1 add def /e x
+cx mul def /f x1 cx mul def /g x2 cx mul def 0 y1 cy mul T { newpath e 0
+moveto b 0 gt { gsave d c a cvs dup stringwidth pop /z2 ED w 0 gt {z1 z2
+add neg} {z1} ifelse h 0 gt {z1} {b neg} ifelse rmoveto show grestore }
+if f 0 moveto g 0 L stroke 0 cy h mul T c y2 eq c i eq or {exit} if /c c
+h add def } loop grestore } def
+/ArcArrow { /d ED /b ED /a ED gsave newpath 0 -1000 moveto clip newpath 0
+1 0 0 b grestore c mul /e ED pop pop pop r a e d PtoC y add exch x add
+exch r a PtoC y add exch x add exch b pop pop pop pop a e d CLW 8 div c
+mul neg d } def
+/Ellipse { /mtrx CM def T scale 0 0 1 5 3 roll arc mtrx setmatrix } def
+/Rot { CP CP translate 3 -1 roll neg rotate NET } def
+/PutCoor { gsave CP T CM STV exch exec moveto setmatrix CP grestore } def
+/PutBegin { /lmtrx [ tx@Dict /lmtrx known { lmtrx aload pop } if CM ] def
+CP 4 2 roll T moveto } def
+/PutEnd { CP /lmtrx [ lmtrx aload pop setmatrix ] def moveto } def
+/Uput { /a ED add 2 div /h ED 2 div /w ED /s a sin def /c a cos def /b s
+abs c abs 2 copy gt dup /q ED { pop } { exch pop } ifelse def /w1 c b
+div w mul def /h1 s b div h mul def q { w1 abs w sub dup c mul abs } {
+h1 abs h sub dup s mul abs } ifelse } def
+/UUput { /z ED abs /y ED /x ED q { x s div c mul abs y gt } { x c div s
+mul abs y gt } ifelse { x x mul y y mul sub z z mul add sqrt z add } { q
+{ x s div } { x c div } ifelse abs } ifelse a PtoC h1 add exch w1 add
+exch } def
+/BeginOL { dup (all) eq exch TheOL eq or { IfVisible not { CP OLUnit T
+moveto /IfVisible true def } if } { IfVisible { CP OLUnit NET moveto
+/IfVisible false def } if } ifelse } def
+/InitOL { /OLUnit [ gsave CM STV 2890.79999 dup moveto setmatrix CP
+grestore ] cvx def /BOL { BeginOL } def /IfVisible true def } def
+end
+%%EndProcSet
+%%BeginProcSet: pst-node.pro
+%!
+% PostScript prologue for pst-node.tex.
+% Created 1993/3/12. Source file was pst-node.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@NodeDict 200 dict def tx@NodeDict begin
+/NewNode { gsave /next ED dict dup 3 -1 roll ED begin tx@Dict begin STV
+CP T exec end /NodeMtrx CM def next end grestore } def
+/InitPnode { /Y ED /X ED /NodePos { Nodesep Cos mul Nodesep Sin mul } def
+} def
+/InitCnode { /r ED /Y ED /X ED /NodePos { Nodesep r add dup Cos mul exch
+Sin mul } def } def
+/GetRnodePos { Cos 0 gt { /dx r Nodesep add def } { /dx l Nodesep sub def
+} ifelse Sin 0 gt { /dy u Nodesep add def } { /dy d Nodesep sub def }
+ifelse dx Sin mul abs dy Cos mul abs gt { dy Cos mul Sin div dy } { dx
+dup Sin mul Cos Div } ifelse } def
+/InitRnode { /r ED r mul neg /l ED /r r l add def /X l neg def { neg /d
+ED /u ED /Y 0 def } { neg /Y ED Y sub /u ED u mul neg /d ED /u u d add
+def /Y Y d sub def } ifelse /NodePos { GetRnodePos } def } def
+/InitRNode { /Y ED /X ED /r ED /X r 2 div X add def /r r X sub def /l X
+neg def Y add neg /d ED Y sub /u ED /NodePos { GetRnodePos } def } def
+/GetOnodePos { /ww w Nodesep add def /hh h Nodesep add def Sin ww mul Cos
+hh mul Atan dup cos ww mul exch sin hh mul } def
+/GetCenter { begin X Y NodeMtrx transform CM itransform end } def
+/GetAngle { nodeA GetCenter nodeB GetCenter 3 -1 roll sub 3 1 roll sub
+neg Atan } def
+/GetEdge { begin /Nodesep ED dup 1 0 NodeMtrx dtransform CM idtransform
+exch atan sub dup sin /Sin ED cos /Cos ED NodePos Y add exch X add exch
+NodeMtrx transform CM itransform end 4 2 roll 1 index 0 eq { pop pop } {
+2 copy 5 2 roll cos mul add 4 1 roll sin mul sub exch } ifelse } def
+/GetPos { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED OffsetB
+AngleB NodesepB nodeB GetEdge /y2 ED /x2 ED } def
+/InitNC { /nodeB ED /nodeA ED /NodesepB ED /NodesepA ED /OffsetB ED
+/OffsetA ED tx@NodeDict nodeA known tx@NodeDict nodeB known and dup {
+/nodeA nodeA load def /nodeB nodeB load def } if } def
+/LineMP { 4 copy 1 t sub mul exch t mul add 3 1 roll 1 t sub mul exch t
+mul add exch 6 2 roll sub 3 1 roll sub Atan } def
+/NCCoor { GetAngle /AngleA ED /AngleB AngleA 180 add def GetPos /LPutVar
+[ x2 x1 y2 y1 ] cvx def /LPutPos { LPutVar LineMP } def x1 y1 x2 y2 }
+def
+/NCLine { NCCoor tx@Dict begin ArrowB 4 2 roll ArrowA lineto end } def
+/BezierMidpoint { /y3 ED /x3 ED /y2 ED /x2 ED /y1 ED /x1 ED /y0 ED /x0 ED
+/t ED /cx x1 x0 sub 3 mul def /cy y1 y0 sub 3 mul def /bx x2 x1 sub 3
+mul cx sub def /by y2 y1 sub 3 mul cy sub def /ax x3 x0 sub cx sub bx
+sub def /ay y3 y0 sub cy sub by sub def ax t 3 exp mul bx t t mul mul
+add cx t mul add x0 add ay t 3 exp mul by t t mul mul add cy t mul add
+y0 add 3 ay t t mul mul mul 2 by t mul mul add cy add 3 ax t t mul mul
+mul 2 bx t mul mul add cx add atan } def
+/GetArms { /x1a armA AngleA cos mul x1 add def /y1a armA AngleA sin mul
+y1 add def /x2a armB AngleB cos mul x2 add def /y2a armB AngleB sin mul
+y2 add def } def
+/NCCurve { GetPos x1 x2 sub y1 y2 sub Pyth 2 div dup 3 -1 roll mul /armA
+ED mul /armB ED GetArms x1a y1a x1 y1 tx@Dict begin ArrowA end x2a y2a
+x2 y2 tx@Dict begin ArrowB end curveto /LPutVar [ x1 y1 x1a y1a x2a y2a
+x2 y2 ] cvx def /LPutPos { t LPutVar BezierMidpoint } def } def
+/AnglesMP { LPutVar t 3 gt { /t t 3 sub def } { t 2 gt { /t t 2 sub def
+10 -2 roll } { t 1 gt { /t t 1 sub def 10 -4 roll } { 10 4 roll } ifelse
+} ifelse } ifelse 6 { pop } repeat 3 -1 roll exch LineMP } def
+/NCAngles { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform exch pop mtrx itransform /y0 ED /x0
+ED mark armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1a y1a armA 0 ne { x1 y1 }
+if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a y2a x0 y0 x1a y1a
+x1 y1 ] cvx def /LPutPos { AnglesMP } def } def
+/NCAngle { GetPos /x2a armB AngleB cos mul x2 add def /y2a armB AngleB
+sin mul y2 add def /mtrx AngleA matrix rotate def x2a y2a mtrx transform
+pop x1 y1 mtrx transform exch pop mtrx itransform /y0 ED /x0 ED mark
+armB 0 ne { x2 y2 } if x2a y2a x0 y0 x1 y1 tx@Dict begin false Line end
+/LPutVar [ x2 y2 x2 y2 x2a y2a x0 y0 x1 y1 ] cvx def /LPutPos { AnglesMP
+} def } def
+/NCBar { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform pop x2a y2a mtrx transform pop sub dup 0 mtrx itransform 3 -1
+roll 0 gt { /y2a exch y2a add def /x2a exch x2a add def } { /y1a exch
+neg y1a add def /x2a exch neg x2a add def } ifelse mark x2 y2 x2a y2a
+x1a y1a x1 y1 tx@Dict begin false Line end /LPutVar [ x2 y2 x2 y2 x2a
+y2a x1a y1a x1 y1 ] cvx def /LPutPos { LPutVar AnglesMP } def } def
+/NCDiag { GetPos GetArms mark x2 y2 x2a y2a x1a y1a x1 y1 tx@Dict begin
+false Line end /LPutVar [ x2 y2 x2 y2 x2a y2a x1a y1a x1 y1 ] cvx def
+/LPutPos { AnglesMP } def } def
+/NCDiagg { OffsetA AngleA NodesepA nodeA GetEdge /y1 ED /x1 ED /x1a armA
+AngleA cos mul x1 add def /y1a armA AngleA sin mul y1 add def nodeB
+GetCenter y1a sub exch x1a sub Atan 180 add /AngleB ED OffsetB AngleB
+NodesepB nodeB GetEdge /y2 ED /x2 ED mark x2 y2 x1a y1a x1 y1 tx@Dict
+begin false Line end /LPutVar [ x2 y2 x2 y2 x2 y2 x1a y1a x1 y1] cvx def
+/LPutPos { AnglesMP } def } def
+/LoopMP { /t t abs def [ LPutVar ] length 2 div 1 sub dup t lt { /t ED }
+{ pop } ifelse mark LPutVar t cvi { /t t 1 sub def pop pop } repeat
+counttomark 1 add 4 roll cleartomark 3 -1 roll exch LineMP } def
+/NCLoop { GetPos GetArms /mtrx AngleA matrix rotate def x1a y1a mtrx
+transform loopsize add /y1b ED /x1b ED /x2b x2a y2a mtrx transform pop
+def x2b y1b mtrx itransform /y2b ED /x2b ED x1b y1b mtrx itransform /y1b
+ED /x1b ED mark armB 0 ne { x2 y2 } if x2a y2a x2b y2b x1b y1b x1a y1a
+armA 0 ne { x1 y1 } if tx@Dict begin false Line end /LPutVar [ x2 y2 x2a
+y2a x2b y2b x1b y1b x1a y1a x1 y1 ] cvx def /LPutPos { LoopMP } def }
+def
+/NCCircle { nodeA GetCenter 0 0 NodesepA nodeA GetEdge pop 3 1 roll /Y ED
+/X ED X sub 2 div dup 2 exp r r mul sub abs sqrt atan 2 mul /a ED r
+AngleA 90 add PtoC Y add exch X add exch 2 copy /LPutVar [ 4 2 roll r a
+] def /LPutPos { LPutVar aload pop t 360 mul add dup 5 1 roll 90 sub
+PtoC 3 -1 roll add 3 1 roll add exch 3 -1 roll } def r AngleA 90 sub a
+add AngleA 270 add a sub tx@Dict begin /angleB ED /angleA ED /r ED /c
+57.2957 r Div def /y ED /x ED } def
+/LPutCoor { tx@NodeDict /LPutPos known { gsave LPutPos tx@Dict begin
+/langle ED CM 3 1 roll STV CP 3 -1 roll sub neg 3 1 roll sub exch moveto
+setmatrix CP end grestore } { 0 0 tx@Dict /langle 0 def end } ifelse }
+def
+end
+%%EndProcSet
+%%BeginProcSet: pst-coil.pro
+%!
+% PostScript prologue for pst-coil.tex.
+% Created 1993/3/12. Source file was pst-coil.doc
+% Version 0.93a, 93/03/12.
+% For use with Rokicki's dvips.
+/tx@CoilDict 40 dict def tx@CoilDict begin
+/CoilLoop { /t ED t sin AspectSin mul t 180 div AspectCos mul add t cos
+lineto } def
+/Coil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /ArmB ED /ArmA ED
+/h ED /w ED /y1 ED /x1 ED /y0 ED /x0 ED x0 y0 translate y1 y0 sub x1 x0
+sub 2 copy Pyth /TotalLength ED Atan rotate /BeginAngle ArmA AspectCos
+Div w h mul Div 360 mul def /EndAngle TotalLength ArmB sub AspectCos Div
+w h mul Div 360 mul def 1 0 0 0 ArrowA ArmA 0 lineto /mtrx CM def w h
+mul 2 Div w 2 Div scale BeginAngle Inc EndAngle { CoilLoop } for
+EndAngle CoilLoop mtrx setmatrix TotalLength ArmB sub 0 lineto CP
+TotalLength 0 ArrowB lineto } def
+/AltCoil { /Inc ED dup sin /AspectSin ED cos /AspectCos ED /h ED /w ED
+/EndAngle ED /BeginAngle ED /mtrx CM def w h mul 2 Div w 2 Div scale
+BeginAngle sin AspectSin mul BeginAngle 180 div AspectCos mul add
+BeginAngle cos /lineto load stopped { moveto } if BeginAngle Inc
+EndAngle { CoilLoop } for EndAngle CoilLoop mtrx setmatrix } def
+/ZigZag { /ArmB ED /ArmA ED 2 div /w ED w mul /h ED /y1 ED /x1 ED /y0 ED
+/x0 ED x1 y1 translate y0 y1 sub x0 x1 sub 2 copy Pyth /TotalLength ED
+Atan rotate TotalLength ArmA sub ArmB sub dup h div cvi /n ED n h mul
+sub 2 div dup ArmA add /ArmA ED ArmB add /ArmB ED /x ArmB h 2 div add
+def mark 0 0 ArmB 0 n { x w /w w neg def /x x h add def } repeat
+TotalLength ArmA sub 0 TotalLength 0 } def
+end
+%%EndProcSet
+%%BeginProcSet: texps.pro
+%!
+TeXDict begin /rf{findfont dup length 1 add dict begin{1 index /FID ne 2 index
+/UniqueID ne and{def}{pop pop}ifelse}forall[1 index 0 6 -1 roll exec 0 exch 5
+-1 roll VResolution Resolution div mul neg 0 0]/Metrics exch def dict begin
+Encoding{exch dup type /integertype ne{pop pop 1 sub dup 0 le{pop}{[}ifelse}{
+FontMatrix 0 get div Metrics 0 get div def}ifelse}forall Metrics /Metrics
+currentdict end def[2 index currentdict end definefont 3 -1 roll makefont
+/setfont load]cvx def}def /ObliqueSlant{dup sin S cos div neg}B /SlantFont{4
+index mul add}def /ExtendFont{3 -1 roll mul exch}def /ReEncodeFont{/Encoding
+exch def}def end
+%%EndProcSet
+%%BeginProcSet: special.pro
+%!
+TeXDict begin /SDict 200 dict N SDict begin /@SpecialDefaults{/hs 612 N /vs
+792 N /ho 0 N /vo 0 N /hsc 1 N /vsc 1 N /ang 0 N /CLIP 0 N /rwiSeen false N
+/rhiSeen false N /letter{}N /note{}N /a4{}N /legal{}N}B /@scaleunit 100 N
+/@hscale{@scaleunit div /hsc X}B /@vscale{@scaleunit div /vsc X}B /@hsize{/hs
+X /CLIP 1 N}B /@vsize{/vs X /CLIP 1 N}B /@clip{/CLIP 2 N}B /@hoffset{/ho X}B
+/@voffset{/vo X}B /@angle{/ang X}B /@rwi{10 div /rwi X /rwiSeen true N}B /@rhi
+{10 div /rhi X /rhiSeen true N}B /@llx{/llx X}B /@lly{/lly X}B /@urx{/urx X}B
+/@ury{/ury X}B /magscale true def end /@MacSetUp{userdict /md known{userdict
+/md get type /dicttype eq{userdict begin md length 10 add md maxlength ge{/md
+md dup length 20 add dict copy def}if end md begin /letter{}N /note{}N /legal{
+}N /od{txpose 1 0 mtx defaultmatrix dtransform S atan/pa X newpath clippath
+mark{transform{itransform moveto}}{transform{itransform lineto}}{6 -2 roll
+transform 6 -2 roll transform 6 -2 roll transform{itransform 6 2 roll
+itransform 6 2 roll itransform 6 2 roll curveto}}{{closepath}}pathforall
+newpath counttomark array astore /gc xdf pop ct 39 0 put 10 fz 0 fs 2
+F/|______Courier fnt invertflag{PaintBlack}if}N /txpose{pxs pys scale ppr
+aload pop por{noflips{pop S neg S TR pop 1 -1 scale}if xflip yflip and{pop S
+neg S TR 180 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0
+get neg sub neg TR}if xflip yflip not and{pop S neg S TR pop 180 rotate ppr 3
+get ppr 1 get neg sub neg 0 TR}if yflip xflip not and{ppr 1 get neg ppr 0 get
+neg TR}if}{noflips{TR pop pop 270 rotate 1 -1 scale}if xflip yflip and{TR pop
+pop 90 rotate 1 -1 scale ppr 3 get ppr 1 get neg sub neg ppr 2 get ppr 0 get
+neg sub neg TR}if xflip yflip not and{TR pop pop 90 rotate ppr 3 get ppr 1 get
+neg sub neg 0 TR}if yflip xflip not and{TR pop pop 270 rotate ppr 2 get ppr 0
+get neg sub neg 0 S TR}if}ifelse scaleby96{ppr aload pop 4 -1 roll add 2 div 3
+1 roll add 2 div 2 copy TR .96 dup scale neg S neg S TR}if}N /cp{pop pop
+showpage pm restore}N end}if}if}N /normalscale{Resolution 72 div VResolution
+72 div neg scale magscale{DVImag dup scale}if 0 setgray}N /psfts{S 65781.76
+div N}N /startTexFig{/psf$SavedState save N userdict maxlength dict begin
+/magscale false def normalscale currentpoint TR /psf$ury psfts /psf$urx psfts
+/psf$lly psfts /psf$llx psfts /psf$y psfts /psf$x psfts currentpoint /psf$cy X
+/psf$cx X /psf$sx psf$x psf$urx psf$llx sub div N /psf$sy psf$y psf$ury
+psf$lly sub div N psf$sx psf$sy scale psf$cx psf$sx div psf$llx sub psf$cy
+psf$sy div psf$ury sub TR /showpage{}N /erasepage{}N /copypage{}N /p 3 def
+@MacSetUp}N /doclip{psf$llx psf$lly psf$urx psf$ury currentpoint 6 2 roll
+newpath 4 copy 4 2 roll moveto 6 -1 roll S lineto S lineto S lineto closepath
+clip newpath moveto}N /endTexFig{end psf$SavedState restore}N /@beginspecial{
+SDict begin /SpecialSave save N gsave normalscale currentpoint TR
+@SpecialDefaults count /ocount X /dcount countdictstack N}N /@setspecial{CLIP
+1 eq{newpath 0 0 moveto hs 0 rlineto 0 vs rlineto hs neg 0 rlineto closepath
+clip}if ho vo TR hsc vsc scale ang rotate rwiSeen{rwi urx llx sub div rhiSeen{
+rhi ury lly sub div}{dup}ifelse scale llx neg lly neg TR}{rhiSeen{rhi ury lly
+sub div dup scale llx neg lly neg TR}if}ifelse CLIP 2 eq{newpath llx lly
+moveto urx lly lineto urx ury lineto llx ury lineto closepath clip}if
+/showpage{}N /erasepage{}N /copypage{}N newpath}N /@endspecial{count ocount
+sub{pop}repeat countdictstack dcount sub{end}repeat grestore SpecialSave
+restore end}N /@defspecial{SDict begin}N /@fedspecial{end}B /li{lineto}B /rl{
+rlineto}B /rc{rcurveto}B /np{/SaveX currentpoint /SaveY X N 1 setlinecap
+newpath}N /st{stroke SaveX SaveY moveto}N /fil{fill SaveX SaveY moveto}N
+/ellipse{/endangle X /startangle X /yrad X /xrad X /savematrix matrix
+currentmatrix N TR xrad yrad scale 0 0 1 startangle endangle arc savematrix
+setmatrix}N end
+%%EndProcSet
+TeXDict begin 40258431 52099146 1000 300 300 @start /Fa 143[52
+3[24 6[47 28[61 72[{}4 85.007408 /Helvetica-Bold rf /Fb 78[24
+60[16 19 2[27 2[40 13 2[13 2[16 21 3[24 13[27 25[24 24 24 24
+24 24 24 24 24 24 48[{}21 48.000336 /Times-Bold rf /Fc 138[32
+19 7[16 5[19 25 3[29 28[41 9[19 58[{}8 57.600342 /Times-Bold
+rf /Fd 137[21 1[12 21 14 1[23 3[10 6[21 1[21 23 21 4[10 5[25
+86[{}12 37.412769 /Helvetica-Bold rf /Fe 134[22 2[22 22 12
+17 15 2[22 22 1[12 2[12 3[19 22 2[19 17[32 10[32 9[12 11[11
+46[{}17 43.800289 /Times-Roman rf /Ff 141[11 16[19 97[{}2 34.166969
+/Helvetica-Oblique rf /Fg 130[11 1[11 1[17 17 2[19 9 17 11
+1[19 19 19 2[17 1[8 1[19 1[19 19 17 1[19 4[9 24[25 4[20 20
+20 8[19 19 3[9 1[9 2[11 11 40[{}29 34.166969 /Helvetica rf
+/Fh 139[11 19 13 1[21 21 21 1[9 2[9 3[19 1[19 1[19 4[9 8[23
+2[23 12[25 67[{}15 34.166969 /Helvetica-Bold rf /Fi 81[22 52[20
+20 29 1[20 11 16 13 1[20 20 20 31 11 20 1[11 20 20 13 18 20
+18 20 18 12[24 22 27 1[22 3[24 2[13 3[24 1[27 20[10 13 10 44[{}34
+40.000278 /Times-Roman rf /Fj 198[14 14 14 14 4[14 49[{}5 28.000196
+/Times-Roman rf /Fk 134[21 21 1[21 24 13 19 19 1[24 24 24 35
+13 21 1[13 1[24 13 21 24 21 24 24 11[35 27 24 2[29 3[27 4[35
+1[29 1[32 7[16 16 12[16 5[16 39[{}33 48.000336 /Times-Italic
+rf /Fl 134[23 23 2[25 1[23 16 1[25 25 25 36 7[23 25 23 1[23
+46[23 23 49[{}15 41.000366 /Helvetica-BoldOblique rf /Fm 198[16
+16 16 16 4[16 49[{}5 32.000225 /Times-Roman rf /Fn 81[19 52[19
+19 1[19 21 10 19 12 1[21 21 21 31 8 19 1[8 21 21 1[21 21 19
+21 21 8[25 3[23 25 2[25 29 27 31 3[10 27 2[25 27 1[25 25 7[21
+21 21 21 21 21 21 21 21 21 48[{}45 37.412769 /Helvetica rf
+/Fo 81[43 52[39 39 1[39 43 24 39 27 1[43 43 43 63 20 39 1[20
+43 43 1[39 43 39 43 39 12[43 47 2[47 55 1[59 3[20 3[47 51 51
+51 51 7[39 39 39 39 39 39 39 1[39 39 48[{}42 70.862267 /Helvetica-Bold
+rf /Fp 81[30 52[27 27 2[30 16 27 19 1[30 30 30 44 14 1[14 14
+30 30 16 27 30 27 30 27 30[35 35 14[27 27 1[14 47[{}27 49.200378
+/Helvetica-BoldOblique rf /Fq 134[25 25 35 3[25 16 1[27 27
+13[27 97[{}8 49.200378 /Helvetica-Oblique rf /Fr 130[16 1[16
+29[14 1[14 46[14 1[19 16 16 40[{}8 49.200378 /Helvetica rf
+/Fs 81[30 48[19 1[19 25 27 27 1[27 30 16 27 19 1[30 30 30 44
+14 27 1[14 30 30 16 27 30 27 30 27 4[14 3[33 3[30 33 2[33 38
+35 8[33 1[35 5[29 3[27 3[27 2[27 27 27 1[14 16 14 2[16 16 40[{}46
+49.200378 /Helvetica-Bold rf /Ft 134[20 20 2[23 11 20 14 1[23
+23 23 34 9 2[9 1[23 11 23 23 20 1[23 46[23 23 49[{}20 41.000366
+/Helvetica-Oblique rf /Fu 81[25 48[16 11 16 20 23 23 1[23 25
+14 23 16 1[25 25 25 36 11 23 1[11 25 25 14 23 25 23 25 23 3[14
+11 14 6[25 27 2[27 2[34 7[27 1[29 1[29 3[24 1[14 10[23 3[11
+2[14 14 6[14 33[{}44 41.000366 /Helvetica-Bold rf /Fv 69[21
+8[24 1[27 27 3[21 47[21 24 24 35 24 24 13 19 16 24 24 24 24
+37 13 24 13 13 24 24 16 21 24 21 24 21 7[35 35 45 35 35 29
+27 32 1[27 35 35 43 29 35 19 16 35 35 27 29 35 32 32 35 5[13
+13 24 24 24 24 24 24 24 24 24 24 13 12 16 12 2[16 16 16 5[16
+33[{}75 48.000336 /Times-Roman rf /Fw 59[14 20[20 20 48[14
+11 14 20 20 20 29 20 23 11 20 14 23 23 23 23 34 9 20 9 9 23
+23 11 23 23 20 23 23 3[11 11 11 2[27 39 27 29 25 27 29 1[27
+32 29 34 23 27 1[11 29 32 25 27 29 29 27 27 41 23 24 24 24
+11 11 23 23 23 23 23 23 23 23 23 23 11 11 14 11 24 16 14 14
+9 1[36 23 23 1[11 33[{}87 41.000366 /Helvetica rf /Fx 72[22
+183[{}1 48.249817 /Symbol rf end
+%%EndProlog
+%%BeginSetup
+%%Feature: *Resolution 300dpi
+TeXDict begin
+
+%%EndSetup
+%%Page: 71 1
+0 bop 118 236 a @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+2.0 5. Tbar EndArrow } def 0.0 0.0 113.81097 56.90549 14.22636 1.
+14.22636 14.22636 45. 10. tx@CoilDict begin Coil end gsave 1.5 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 712
+129 a Fw(\\pscoil[coilarm=.5cm,linewidth=1.5pt,coilwidth=.5cm]{<-|}\(4,2\))
+591 357 y Fv(Here)11 b(is)h(an)g(example)h(of)f Fu(\\pszigzag)p
+Fv(:)118 491 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def 0.0 0.0 113.81097 0.0 1.
+28.45274 14.22636 14.22636 tx@CoilDict begin ZigZag end /r 2.84544
+def /Lineto { Arcto } def false Line gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 712 502
+a Fw(\\pszigzag[coilarm=.5,linearc=.1]{<->}\(4,0\))591 671
+y Fv(Note)g(that)h Fu(\\pszigzag)h Fv(uses)d(the)i Fu(linearc)f
+Fv(parameters,)i(and)e(that)i(the)f(beginning)591 732 y(and)f(ending)g
+(segments)g(may)g(be)g(longer)g(than)g Fu(coilarm)h Fv(to)f(take)h(up)e
+(slack.)591 819 y Fu(\\psCoil)g Fv(just)g(draws)f(the)h(coil)g(horizontally)h
+(from)e Ft(angle1)f Fv(to)i Ft(angle2)s Fv(.)k(Use)10 b Fu(\\rput)591
+880 y Fv(to)19 b(rotate)h(and)f(translate)i(the)e(coil,)j(if)e(desired.)39
+b Fu(\\psCoil)20 b Fv(does)f(not)g(use)g(the)591 940 y Fu(coilarm)10
+b Fv(parameter)m(.)18 b(For)10 b(example,)h(with)g Fu(coilaspect=0)d
+Fv(we)i(get)h(a)f(sine)g(curve:)118 1065 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 0. 1440. 21.33955 1.33
+0. 10. tx@CoilDict begin AltCoil end 0 setlinecap stroke gsave 1.5
+SLW 0. setgray 0 setlinecap stroke grestore end
+
+
+@endspecial 712 1045 a Fw(\\psCoil[coilaspect=0,coilheight=1.33,)758
+1105 y(coilwidth=.75,linewidth=1.5pt]{0}{1440})591 1235 y(pst-coil.tex)17
+b Fv(also)f(contains)g(coil)h(and)f(zigzag)h(node)f(connections.)29
+b(Y)-5 b(ou)16 b(must)325 1259 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 221 1277 a Fs(pst-node)591 1295 y Fv(also)c(load)h
+Fw(pst-node.tex)f Fv(/)h Fw(pst-node.sty)g Fv(to)g(use)f(these.)19
+b(The)13 b(node)f(connections)591 1355 y(are:)712 1491 y Fs(\\nccoil)p
+Fr(*[)p Fq(par)5 b Fr(]{)p Fq(arrows)q Fr(})p Fs({)p Fp(nodeA)p
+Fs(}{)p Fp(nodeB)r Fs(})712 1566 y(\\nczigzag)p Fr(*[)p Fq(par)g
+Fr(]{)p Fq(arrows)q Fr(})p Fs({)p Fp(nodeA)p Fs(}{)p Fp(nodeB)r
+Fs(})712 1640 y(\\pccoil)p Fr(*[)p Fq(par)g Fr(]{)p Fq(arrows)q
+Fr(})p Fs(\()p Fp(x1)p Fs(,)t Fp(y1)p Fs(\)\()p Fp(x)q(2)t
+Fs(,)t Fp(y2)t Fs(\))712 1715 y(\\pczigzag)p Fr(*[)p Fq(par)g
+Fr(]{)p Fq(arrows)q Fr(})p Fs(\()p Fp(x1)p Fs(,)t Fp(y1)p Fs(\)\()p
+Fp(x2)t Fs(,)t Fp(y2)t Fs(\))591 1836 y Fv(The)13 b(end)g(points)g(are)g
+(chosen)g(the)g(same)g(as)g(for)g Fu(\\ncline)g Fv(and)g Fu(\\pcline)p
+Fv(,)h(and)f(oth-)591 1896 y(erwise)e(these)i(commands)f(work)f(like)i
+Fu(\\pscoil)f Fv(and)g Fu(\\pszigzag)p Fv(.)18 b(For)11 b(example:)118
+2326 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 14.22636 14.22636 14.22636
+.5 CLW mul sub 0 360 arc closepath gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 118 2326 a
+ tx@Dict begin tx@NodeDict begin { 14.22636 14.22636 14.22636 0.8 .5
+.5 sub mul sub } /TheNodeA 11 { InitCnode } NewNode end end
+ @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 99.5846 71.13185 14.22636
+.5 CLW mul sub 0 360 arc closepath gsave 0.75 setgray fill grestore
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 118 2326 a
+ tx@Dict begin tx@NodeDict begin { 99.5846 71.13185 14.22636 0.8 .5
+.5 sub mul sub } /TheNodeB 11 { InitCnode } NewNode end end
+ 118 2326 a
+ tx@Dict begin gsave STV newpath 0.8 SLW 0. setgray /ArrowA { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow moveto } def /ArrowB { BeginArrow
+false 0.4 1.4 2.0 3. Arrow EndArrow } def tx@NodeDict begin 0.0 0.0
+neg 0.0 0.0 /TheNodeA /TheNodeB InitNC { NCCoor tx@Dict begin 8.5359
+1. 14.22636 14.22636 45. 10. tx@CoilDict begin Coil end end } if end
+gsave 0.8 SLW 0. setgray 0 setlinecap stroke grestore grestore end
+ 712 2099 a Fw
+(\\cnode\(.5,.5\){.5}{A})712 2159 y
+(\\cnode[\256llstyle=solid,\256llcolor=lightgray]\(3.5,2.5\){.5}{B})712
+2219 y(\\nccoil[coilwidth=.3]{<->}{A}{B})366 2520 y Fo(34)71
+b(Special)20 b(coordinates)591 2640 y Fv(The)12 b(command)591
+2828 y Fn(Special)d(coordinates)990 b(71)p eop
+%%Page: 72 2
+1 bop 712 50 a Fs(\\SpecialCoor)591 181 y Fv(enables)15 b(a)h(special)g
+(feature)g(that)g(lets)g(you)f(specify)g(coordinates)h(in)f(a)h(variety)591
+241 y(of)c(ways,)g(in)g(addition)i(to)e(the)h(usual)g(Cartesian)g
+(coordinates.)1644 223 y Fm(16)1697 241 y Fv(Processing)f(is)591
+301 y(slightly)k(slower)g(and)g(less)g(robust,)g(which)g(is)g(why)f(this)h
+(feature)h(is)f(available)591 361 y(on)g(demand)h(rather)g(than)g(by)f
+(default,)j(but)e(you)f(probably)h(won')o(t)f(notice)h(the)591
+421 y(dif)o(ference.)591 511 y(Here)11 b(are)i(the)f(coordinates)h(you)e(can)
+i(use:)591 641 y Fu(\()p Fl(x)t Fu(,)p Fl(y)t Fu(\))23 b Fv(The)12
+b(usual)g(Cartesian)g(coordinate.)19 b(E.g.,)11 b Fw(\(3,4\))p
+Fv(.)591 743 y Fu(\()p Fl(r)t Fu(;)p Fl(a)q Fu(\))22 b Fv(Polar)12
+b(coordinate,)h(with)f(radius)g Fk(r)g Fv(and)g(angle)g Fk(a)p
+Fv(.)18 b(The)12 b(default)h(unit)f(for)g Fk(r)712 803 y Fv(is)g
+Fu(unit)p Fv(.)17 b(E.g.,)12 b Fw(\(3;1)m(10\))p Fv(.)591 905
+y Fu(\()p Fl(node)q Fu(\))23 b Fv(The)12 b(center)h(of)f Ft(node)q
+Fv(.)k(E.g.,)c Fw(\(A\))p Fv(.)591 1007 y Fu(\([)p Fl(par)t
+Fu(])p Fl(node)q Fu(\))22 b Fv(The)15 b(position)f(relative)i(to)f
+Ft(node)f Fv(determined)i(using)e(the)h Fu(angle)p Fv(,)712
+1067 y Fu(nodesep)c Fv(and)h Fu(offset)f Fv(parameters.)18
+b(E.g.,)12 b Fw(\([angle=45]A\))p Fv(.)591 1169 y Fu(\(!)p
+Fl(ps)q Fu(\))23 b Fv(Raw)11 b(PostScript)h(code.)17 b Ft(ps)c
+Fv(should)f(expand)g(to)g(a)g(coordinate)h(pair)m(.)k(The)712
+1229 y(units)f Fu(xunit)g Fv(and)g Fu(yunit)f Fv(are)h(used.)29
+b(For)15 b(example,)j(if)e(I)g(want)g(to)g(use)g(a)712 1289
+y(polar)10 b(coordinate)h(\(3)p Fk(;)d Fv(1)n(10\))h(that)i(is)e(scaled)h
+(along)g(with)g Fu(xunit)f Fv(and)g Fu(yunit)p Fv(,)712 1349
+y(I)j(can)h(write)820 1451 y Fw(\(!3)22 b(1)m(10)g(cos)h(mul)g(3)f(1)m(10)g
+(sin)h(mul\))591 1553 y Fu(\()p Fl(coor1)p Fu(|)p Fl(coor2)s
+Fu(\))f Fv(The)15 b Fk(x)g Fv(coordinate)h(from)f Ft(coor1)f
+Fv(and)h(the)g Fk(y)g Fv(coordinate)h(from)712 1613 y Ft(coor2)s
+Fv(.)h Ft(coor1)12 b Fv(and)g Ft(coor2)i Fv(can)e(be)h(any)f(other)g
+(coordinates)h(for)f(use)g(with)712 1673 y Fu(\\SpecialCoor)p
+Fv(.)18 b(For)12 b(example,)h Fw(\(A|1in;30\))p Fv(.)591 1804
+y Fu(\\SpecialCoor)f Fv(also)g(lets)h(you)e(specify)h(angles)g(in)h(several)f
+(ways:)591 1934 y Fl(num)25 b Fv(A)12 b(number)n(,)g(as)f(usual,)h(with)g
+(units)g(given)g(by)g(the)h Fu(\\degrees)e Fv(command.)p 591
+1979 544 2 v 632 2009 a Fj(16)662 2024 y Fi(There)g(is)g(an)f(obsolete)g
+(command)g Fh(\\Polar)i Fi(that)f(causes)e(coordinates)g(in)i(the)g(form)h
+Fg(\()p Ff(r)t Fg(,)p Ff(a)p Fg(\))g Fi(to)591 2074 y(be)e(interpreted)g(as)g
+(polar)h(coordinates.)k(The)c(use)e(of)i Fh(\\Polar)h Fi(is)e(not)g
+(recommended)g(because)f(it)591 2124 y(does)e(not)i(allow)g(one)f(to)h(mix)g
+(Cartesian)e(and)i(polar)f(coordinates)g(the)h(way)f Fh(\\SpecialCoor)h
+Fi(does,)591 2174 y(and)g(because)f(it)j(is)e(not)h(as)f(apparent)h(when)f
+(examining)g(an)h(input)g(\256le)g(whether)n(,)g(e.g.,)f Fg(\(3,2\))i
+Fi(is)f(a)591 2224 y(Cartesian)f(or)i(polar)g(coordinate.)17
+b(The)11 b(command)f(for)h(undoing)g Fh(\\Polar)h Fi(is)e Fh(\\Cartesian)p
+Fi(.)18 b(It)12 b(has)591 2274 y(an)d(optional)h(ar)o(gument)f(for)i(setting)
+e(the)h(default)f(units.)14 b(I.e.,)712 2348 y Fg(\\Cartesian\(<x>,<y>\))630
+2423 y Fi(has)9 b(the)h(ef)o(fect)g(of)712 2498 y Fg
+(\\psset{xunit=<x>,yunit=<y>})630 2572 y Fh(\\Cartesian)h Fi(can)e(be)h(used)
+f(for)h(this)g(purpose)f(without)h(using)f Fh(\\Polar)p Fi(.)591
+2828 y Fn(Special)g(coordinates)990 b(72)p eop
+%%Page: 73 3
+2 bop 591 50 a Fu(\()p Fl(coor)t Fu(\))23 b Fv(A)14 b(coordinate,)i
+(indicating)g(where)f(the)g(angle)h(points)e(to.)26 b(Be)15
+b(sure)g(to)712 110 y(include)g(the)g Fw(\(\))p Fv(,)e(in)h(addition)h(to)f
+(whatever)g(other)h(delimiters)g(the)f(angle)712 170 y(ar)o(gument)e(uses.)17
+b(For)10 b(example,)i(the)g(following)f(are)g(two)g(ways)f(to)h(draw)712
+230 y(an)i(arc)f(of)g(.8)g(inch)g(radius)g(from)g(0)f(to)i(135)e(degrees:)236
+543 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 0.0 /y ED /x ED /r 57.81621 def /c 57.2957 r Div
+def /angleA 0. 0.0 c mul 2 div add def /angleB 135. 0.0 c mul 2 div
+sub def x y r angleA angleB arc gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray /ArrowA { moveto } def
+/ArrowB { } def 0.0 0.0 /y ED /x ED /r 57.81621 def /c 57.2957 r Div
+def /angleA 0. 0.0 c mul 2 div add def /angleB -28.45274 28.45274 exch
+Atan 0.0 c mul 2 div sub def x y r angleA angleB arc gsave 0.8 SLW
+0. setgray 0 setlinecap stroke grestore end
+
+@endspecial 712 375 a Fw(\\SpecialCoor)712 435
+y(\\psarc\(0,0\){.8in}{0}{135})712 495 y(\\psarc\(0,0\){.8in}{0}{\(-1)o
+(,1\)})591 665 y Fu(!)p Fl(ps)25 b Fv(Raw)15 b(PostScript)h(code.)30
+b Ft(ps)17 b Fv(should)f(expand)g(to)g(a)h(number)m(.)30 b(The)17
+b(same)712 725 y(units)12 b(are)h(used)e(as)h(with)g Ft(num)q
+Fv(.)591 855 y(The)g(command)712 1000 y Fs(\\NormalCoor)591
+1131 y Fv(disables)g(the)g Fu(\\SpecialCoor)h Fv(features.)366
+1328 y Fo(35)71 b(Overlays)591 1449 y Fv(Overlays)8 b(are)g(mainly)g(of)g
+(interest)g(for)g(making)g(slides,)f(and)h(the)g(overlay)g(macros)591
+1509 y(described)h(in)g(this)h(section)f(are)h(mainly)g(of)f(interest)h(to)g
+(T)1529 1520 y(E)1552 1509 y(X)f(macro)g(writers)g(who)591
+1569 y(want)h(to)h(implement)i(overlays)e(in)g(a)g(slide)g(macro)h(package.)
+17 b(For)10 b(example,)i(the)591 1629 y Fw(seminar)n(.sty)g
+Fv(package,)g(a)g(L)1034 1623 y(a)1048 1629 y(T)1069 1644 y(E)1092
+1629 y(X)f(style)h(for)f(notes)h(and)f(slides,)h(uses)e(PST)n(ricks)i(to)591
+1690 y(implement)h(overlays.)591 1779 y(Overlays)k(are)i(made)f(by)g
+(creating)h(an)f Fw(\\hbox)g Fv(and)h(then)f(outputting)h(the)f(box)591
+1839 y(several)12 b(times,)h(printing)f(dif)o(ferent)h(material)g(in)g(the)f
+(box)g(each)g(time.)19 b(The)12 b(box)591 1899 y(is)f(created)i(by)f(the)h
+(commands)712 2044 y Fs(\\overlaybox)i Fp(stuf)o(f)6 b Fs(\\endoverlaybox)591
+2174 y Fv(L)603 2168 y(a)617 2174 y(T)638 2189 y(E)661 2174
+y(X)12 b(users)f(can)h(instead)h(write:)712 2305 y Fw(\\begin{overlaybox})21
+b(<stuf)o(f>)j(\\end{overlaybox})591 2435 y Fv(The)14 b(material)h(for)f
+(overlay)g Ft(string)h Fv(should)e(go)h(within)g(the)g(scope)g(of)f(the)i
+(com-)591 2495 y(mand)712 2640 y Fs(\\psoverlay{)p Fp(string)r
+Fs(})591 2828 y Fn(Overlays)1168 b(73)p eop
+%%Page: 74 4
+3 bop 591 50 a Ft(string)15 b Fv(can)f(be)g(any)g(string,)g(after)h
+(expansion.)23 b(Anything)13 b(not)h(in)g(the)g(scope)g(of)591
+110 y(any)d Fu(\\psoverlay)f Fv(command)i(goes)f(on)g(overlay)h
+Fw(main)p Fv(,)f(and)g(material)i(within)e(the)591 170 y(scope)f(of)h
+Fu(\\psoverlay{all})g Fv(goes)f(on)h(all)h(the)g(overlays.)k
+Fu(\\psoverlay)11 b Fv(commands)591 230 y(can)h(be)g(nested)g(and)g(can)g(be)
+h(used)e(in)h(math)h(mode.)591 320 y(The)f(command)712 465
+y Fs(\\putoverlaybox{)p Fp(string)r Fs(})591 596 y Fv(then)g(prints)g
+(overlay)g Ft(string)r Fv(.)591 685 y(Here)f(is)h(an)g(example:)712
+816 y Fw(\\overlaybox)758 876 y(\\psoverlay{all})758 936 y
+(\\psframebox[framearc=.15,linewidth=1.5pt]{\045)803 996 y(\\psoverlay{main})
+803 1056 y(\\parbox{3.5cm}{\\raggedrigh)o(t)808 1117 y(Foam)k(Cups)g(Damage)g
+(Environment)f({\\psoverlay{one})f(Less)i(than)849 1177 y(Paper)21
+b(Cups,})i(Study)h(Says.}})712 1237 y(\\endoverlaybox)758 1297
+y(\\putoverlaybox{main})d(\\hspace{.5in})h(\\putoverlaybox{one})696
+1536 y
+ tx@Dict begin InitOL /TheOL (main) def end
+ 696 1536 a
+ tx@Dict begin (main) BOL end
+ 696 1536 a
+ tx@Dict begin (all) BOL end
+ 31 w @beginspecial @setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 0.15 true 4.5 neg 28.38506
+neg 106.96466 34.38507 .5 Frame gsave 1.5 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 727 1536 a
+ tx@Dict begin (main) BOL end
+ 739 1444 a Fv(Foam)12 b(Cups)f(Damage)739
+1505 y(Environment)1000 1505 y
+ tx@Dict begin (one) BOL end
+ 12 w Fv(Less)739 1565 y(than)h(Paper)g(Cups,)
+1065 1565 y
+ tx@Dict begin (main) BOL end
+ 739 1625 a Fv(Study)f(Says.)1152 1536 y
+ tx@Dict begin (all) BOL end
+ 1183 1536
+a
+ tx@Dict begin (all) BOL end
+ 1183 1536 a
+ tx@Dict begin (all) BOL end
+ 1357 1536 a
+ tx@Dict begin InitOL /TheOL (one) def end
+ 1357 1536 a
+ tx@Dict begin (main) BOL end
+ 1357 1536 a
+ tx@Dict begin (all) BOL end
+ 30 w @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 1.5 SLW 0. setgray 0.15 true 4.5 neg 28.38506
+neg 106.96466 34.38507 .5 Frame gsave 1.5 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 1387 1536 a
+ tx@Dict begin (main) BOL end
+ 1399 1444 a Fv(Foam)h(Cups)f(Damage)1399
+1505 y(Environment)1661 1505 y
+ tx@Dict begin (one) BOL end
+ 12 w Fv(Less)1399 1565 y(than)i(Paper)e(Cups,)
+1725 1565 y
+ tx@Dict begin (main) BOL end
+ 1399 1625 a Fv(Study)h(Says.)1813 1536 y
+ tx@Dict begin (all) BOL end
+ 1843 1536
+a
+ tx@Dict begin (all) BOL end
+ 1843 1536 a
+ tx@Dict begin (all) BOL end
+ 591 1771 a Fe(Driver)d(notes:)44 b(Overlays)11
+b(use)g Fd(\\pstV)n(erb)g Fe(and)g Fd(\\pstverbscale)p Fe(.)366
+1968 y Fo(36)71 b(The)20 b(gradient)g(\256ll)f(style)591 2089
+y Fv(The)e(\256le)g Fw(gradient.tex)p Fv(/)p Fw(gradient.sty)p
+Fv(,)h(along)g(with)f(the)g(PostScript)g(header)h(\256le)325
+2113 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 228 2131 a Fs(gradient)591
+2149 y Fw(gradient.pro)p Fv(,)e(de\256nes)g(the)i Fw(gradient)e
+Fu(\256llstyle)p Fv(,)i(for)e(gradiated)i(shading.)33 b(This)591
+2209 y Fu(\256llstyle)11 b Fv(uses)h(the)g(following)g(parameters:)591
+2340 y Fs(gradbegin=)p Fp(color)515 b Fc(Default:)20 b Fs(gradbegin)712
+2421 y Fv(The)13 b(starting)f(and)g(ending)g(color)m(.)591
+2523 y Fs(gradend=)p Fp(color)603 b Fc(Default:)19 b Fs(gradend)712
+2604 y Fv(The)13 b(color)f(at)h(the)f(midpoint.)591 2828 y
+Fn(The)d(gradient)h(\256ll)h(style)974 b(74)p eop
+%%Page: 75 5
+4 bop 591 50 a Fs(gradlines=)p Fp(int)749 b Fc(Default:)20
+b Fs(500)712 131 y Fv(The)h(number)f(of)g(lines.)41 b(More)20
+b(lines)g(means)g(\256ner)g(gradiation,)j(but)712 191 y(slower)12
+b(printing.)591 293 y Fs(gradmidpoint=)p Fp(num)650 b Fc(Default:)20
+b Fs(.9)712 374 y Fv(The)c(position)f(of)g(the)h(midpoint,)g(as)f(a)h
+(fraction)g(of)e(the)i(distance)g(from)712 434 y(top)d(to)f(bottom.)17
+b Ft(num)c Fv(should)e(be)h(between)h(0)e(and)h(1.)591 535
+y Fs(gradangle=)p Fp(angle)720 b Fc(Default:)20 b Fs(0)712
+616 y Fv(The)13 b(image)g(is)e(rotated)i(by)f Ft(angle)q Fv(.)591
+747 y Fu(gradbegin)h Fv(and)h Fu(gradend)f Fv(should)g(preferably)i(be)f
+Fw(rgb)f Fv(colors,)h(but)g(grays)g(and)591 807 y Fw(cmyk)i
+Fv(colors)e(should)g(also)h(work.)25 b(The)15 b(de\256nitions)g(of)f(the)i
+(colors)e Fw(gradbegin)591 868 y Fv(and)e Fw(gradend)d Fv(are:)712
+998 y Fw(\\newrgbcolor{gradbegin})o({0)19 b(.1)k(.95})712 1059
+y(\\newrgbcolor{gradend})o({0)d(1)i(1})591 1189 y Fv(Here)11
+b(are)i(two)e(ways)h(to)g(change)g(the)h(gradient)f(colors:)712
+1320 y Fw(\\newrgbcolor{gradbegin})o({1)19 b(.4)k(0})591 1451
+y Fv(and)712 1582 y Fw(\\psset{gradbegin=blue})591 1712 y Fv(T)n(ry)12
+b(this)g(example:)712 1843 y Fw
+(\\psframe[\256llstyle=gradient,gradangle=45]\(10,-20\))366
+2040 y Fo(37)71 b(Adding)19 b(color)i(to)e(tables)591 2162
+y Fv(The)d(\256le)h Fw(colortab.tex)p Fv(/)p Fw(colortab.sty)g
+Fv(contains)g(macros)g(that,)h(when)e(used)g(with)325 2186
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 228 2203 a Fs(colortab)591
+2222 y Fv(color)e(commands)g(such)g(as)g(those)f(in)i(PST)n(ricks,)f(let)h
+(you)e(color)i(the)f(cells)h(and)591 2282 y(lines)d(in)g(tables.)18
+b(See)12 b Fw(colortab.doc)f Fv(for)h(more)g(information.)591
+2828 y Fn(Adding)d(color)h(to)h(tables)957 b(75)p eop
+%%Page: 76 6
+5 bop 366 51 a Fo(38)71 b(T)-5 b(ypesetting)19 b(text)g(along)h(a)g(path)591
+172 y Fv(The)d(\256le)g Fw(textpath.tex)p Fv(/)p Fw(textpath.sty)k
+Fv(de\256nes)16 b(the)i(command)g Fu(\\pstextpath)p Fv(,)e(for)325
+196 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 229 213 a Fs(textpath)591
+232 y Fv(typesetting)11 b(text)g(along)g(a)f(path.)17 b(It)11
+b(is)f(a)h(remarkable)g(trick,)h(but)e(there)h(are)g(some)591
+292 y(caveats:)665 431 y Fx(\267)25 b Fw(textpath.tex)17 b
+Fv(only)e(works)f(with)h(certain)h(DVI-to-PS)d(drivers.)26
+b(Here)15 b(is)712 491 y(what)d(is)g(currently)h(known:)771
+591 y Fb(\261)25 b Fv(It)10 b(works)e(with)i(Rokicki')m(s)f
+Fw(dvips)p Fv(,)i(version)e(5.487)g(or)h(later)g(\(at)g(least)820
+652 y(up)i(to)g(v5.495\).)771 732 y Fb(\261)25 b Fv(It)12 b(does)g(not)g
+(work)f(with)h(earlier)h(versions)e(of)h(dvips.)771 811 y Fb(\261)25
+b Fv(It)9 b(does)g(not)g(work)f(with)h(T)m(eXview)g(\(to)g(preview)g(\256les)
+g(with)g(NeXT)l(-)820 872 y(T)m(eX)g(3.0,)h(convert)g(the)g
+Fw(.dvi)g Fv(\256le)g(to)g(a)g(PostScript)f(\256le)h(with)g
+Fw(dvips)g(-o)820 932 y Fv(and)i(use)g(Preview\).)771 1012
+y Fb(\261)25 b Fv(\252Does)15 b(not)h(work\272)f(means)g(that)i(it)f(has)f
+(no)h(ef)o(fect,)h(for)f(better)g(or)820 1072 y(for)c(worse.)771
+1152 y Fb(\261)25 b Fv(This)13 b(may)h(work)e(with)h(other)h(drivers.)20
+b(The)14 b(requirement)g(is)f(that)820 1212 y(the)d(driver)g(only)g(use)f
+(PostScript')m(s)g Fw(show)h Fv(operator)n(,)h(unbound)e(and)820
+1272 y(unloaded,)j(to)g(show)f(characters.)665 1373 y Fx(\267)25
+b Fv(Y)-5 b(ou)9 b(must)g(also)g(have)g(installed)h(the)g(PostScript)e
+(header)i(\256le)f Fw(textpath.ps)p Fv(,)712 1433 y(and)14
+b Fu(\\pstheader)f Fv(must)g(be)h(properly)g(de\256ned)f(in)h
+Fw(pstricks.con)i Fv(for)d(your)712 1493 y(driver)m(.)665 1594
+y Fx(\267)25 b Fv(Like)19 b(other)g(PST)n(ricks)f(that)h(involve)g(rotating)g
+(text,)h(this)f(works)e(best)712 1654 y(with)12 b(PostScript)g(\(outline\))h
+(fonts.)665 1755 y Fx(\267)25 b Fv(PostScript)12 b(rendering)g(with)g
+Fw(textpath.tex)h Fv(is)f(slow)m(.)591 1893 y(Because)f(of)g(all)h(this,)f
+(no)g(samples)g(are)h(shown)e(here.)17 b(However)n(,)10 b(there)i(is)f(a)g
+(test)591 1953 y(\256le)k Fw(tp-test.tex)j Fv(and)d(PostScript)h(output)g
+Fw(tp-test.ps)h Fv(that)f(are)g(distributed)h(with)591 2013
+y(PST)n(ricks.)591 2102 y(Here)11 b(is)h(the)h(command:)712
+2244 y Fs(\\pstextpath)p Fr([)p Fq(pos)q Fr(]\()p Fq(x)p Fr(,)p
+Fq(y)p Fr(\))p Fs({)p Fp(graphics)h(object)t Fs(}{)p Fp(text)t
+Fs(})591 2371 y Ft(text)22 b Fv(is)d(placed)g(along)f(the)h(path,)h(from)f
+(beginning)f(to)h(end,)h(de\256ned)e(by)g(the)591 2431 y(PST)n(ricks)9
+b(graphics)h(object.)18 b(\(This)10 b(object)h(otherwise)f(behaves)g
+(normally)m(.)17 b(Set)591 2491 y Fu(linestyle=none)10 b Fv(if)j(you)e(don')o
+(t)h(want)g(it)h(to)f(appear)m(.\))591 2580 y Ft(text)20 b
+Fv(can)d(only)f(contain)h(characters.)31 b(No)16 b(T)m(eX)g(rules,)h(no)g
+(PST)n(ricks,)g(and)f(no)591 2640 y(other)e Fw(\\special)p
+Fv(')m(s.)23 b(\(These)14 b(things)g(don')o(t)g(cause)g(errors;)h(they)f
+(just)h(don')o(t)f(work)591 2828 y Fn(T)n(ypesetting)9 b(text)h(along)g(a)g
+(path)839 b(76)p eop
+%%Page: 77 7
+6 bop 591 50 a Fv(right.\))17 b(Math)11 b(mode)g(is)g(OK,)f(but)h(math)h
+(operators)f(that)h(are)g(built)f(from)g(several)591 110 y(characters)19
+b(\(e.g.,)h(lar)o(ge)f(integral)h(signs\))e(may)g(break.)37
+b(Entire)20 b(boxes)e(\(e.g.,)591 170 y Fw(\\parbox)p Fv(\))11
+b(are)h(OK)f(too,)h(but)g(this)g(is)g(mainly)h(for)f(amusement.)591
+259 y Ft(pos)g Fv(is)g(either)972 394 y(l)55 b(justify)12 b(on)g(beginning)g
+(of)g(path)968 466 y(c)51 b(center)12 b(on)g(path)971 538 y(r)53
+b(justify)12 b(on)g(end)g(of)f(path.)591 667 y(The)h(default)h(is)e
+Fw(l)p Fv(.)591 756 y Fw(\()p Ft(x)s Fw(,)p Ft(y)t Fw(\))j
+Fv(is)f(an)h(of)o(fset.)22 b(Characters)15 b(are)f(shifted)g(distance)g
+Ft(x)j Fv(along)d(path,)h(and)e(are)591 816 y(shifted)e(up)g(by)h
+Ft(y)t Fv(.)17 b(\252Up\272)11 b(means)h(with)f(respect)h(to)g(the)g(path,)g
+(at)g(whatever)f(point)591 876 y(on)h(the)h(path)g(corresponding)g(to)g(the)g
+(middle)h(of)e(the)h(character)m(.)22 b Fw(\()p Ft(x)s Fw(,)p
+Ft(y)t Fw(\))13 b Fv(must)g(be)591 937 y(Cartesian)f(coordinates.)18
+b(Both)11 b(coordinates)i(use)e Fu(\\psunit)h Fv(as)f(the)i(default.)k(The)
+591 997 y(default)g(coordinate)g(is)f Fw(\(0,\\TPof)o(fset\))p
+Fv(,)j(where)d Fu(\\TPoffset)f Fv(a)i(command)g(whose)591 1057
+y(default)10 b(value)f(is)g Fw(-.7ex)p Fv(.)16 b(This)10 b(value)f(leads)h
+(to)f(good)g(spacing)g(of)g(the)h(characters.)591 1117 y(Remember)d(that)g
+Fw(ex)i Fv(units)e(are)g(for)g(the)g(font)g(in)g(ef)o(fect)h(when)f
+Fu(\\pstextpath)h Fv(occurs,)591 1177 y(not)k(inside)g(the)g
+Ft(text)17 b Fv(ar)o(gument.)591 1267 y(More)11 b(things)h(you)g(might)g
+(want)g(to)g(know:)665 1397 y Fx(\267)25 b Fv(Like)16 b(with)f
+Fw(\\rput)f Fv(and)h(the)g(graphics)g(objects,)g(it)h(is)e(up)h(to)g(you)f
+(to)h(leave)712 1458 y(space)e(for)e Fw(\\pstextpath)p Fv(.)665
+1559 y Fx(\267)25 b Fv(Results)12 b(are)h(unpredictable)g(if)f
+Ft(text)k Fv(is)c(wider)g(than)g(length)h(of)f(path.)665 1661
+y Fx(\267)25 b Fw(\\pstextpath)10 b Fv(leaves)e(the)h(typesetting)g(to)g(T)
+1400 1672 y(E)1423 1661 y(X.)f(It)g(just)h(intercepts)g(the)f
+Fw(show)712 1721 y Fv(operator)13 b(to)f(remap)g(the)h(coordinate)g(system.)
+366 1918 y Fo(39)71 b(Stroking)20 b(and)g(\256lling)f(character)i(paths)591
+2040 y Fv(The)12 b(\256le)g Fw(charpath.tex)p Fv(/)p Fw(charpath.sty)g
+Fv(de\256nes)g(the)g(command:)325 2064 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+
+@endspecial 221 2081 a Fs(charpath)712 2185 y(\\pscharpath)p
+Fr(*[)p Fq(par)5 b Fr(])p Fs({)p Fp(text)t Fs(})591 2316 y
+Fv(It)13 b(strokes)g(and)h(\256lls)f(the)h Ft(text)k Fv(character)d(paths)f
+(using)f(the)h(PST)n(ricks)f Fu(linestyle)591 2376 y Fv(and)f
+Fu(\256llstyle)p Fv(.)591 2465 y(The)i(restrictions)g(on)g(DVI-to-PS)e
+(drivers)h(listed)i(on)f(page)g(76)f(for)h Fw(\\pstextpath)591
+2525 y Fv(apply)h(to)h Fw(\\pscharpath)p Fv(.)28 b(Furthermore,)16
+b(only)g(outline)g(\(PostScript\))f(fonts)g(are)591 2586 y(af)o(fected.)591
+2828 y Fn(Stroking)10 b(and)f(\256lling)h(character)g(paths)744
+b(77)p eop
+%%Page: 78 8
+7 bop 591 50 a Fv(Sample)11 b(input)h(and)g(output)f(\256les)g
+Fw(chartest.tex)i Fv(and)e Fw(chartest.ps)h Fv(are)g(distributed)591
+110 y(with)g(PST)n(ricks.)591 199 y(W)n(ith)c(the)h(optional)g
+Fw(*)p Fv(,)f(the)h(character)g(path)f(is)g(not)g(removed)h(from)f(the)g
+(PostScript)591 259 y(environment)16 b(at)g(the)g(end.)29 b(This)15
+b(is)h(mainly)g(for)g(special)g(hacks.)28 b(For)15 b(exam-)591
+320 y(ple,)j(you)e(can)h(use)g Fw(\\pscharpath*)f Fv(in)h(the)g(\256rst)f(ar)
+o(gument)i(of)e Fw(\\pstextpath)p Fv(,)j(and)591 380 y(thus)c(typeset)h(text)
+g(along)g(the)g(character)h(path)e(of)h(some)f(other)h(text.)29
+b(See)15 b(the)591 440 y(sample)e(\256le)h Fw(denis1.tex)p
+Fv(.)22 b(\(However)n(,)13 b(you)g(cannot)h(combine)g Fw(\\pscharpath)f
+Fv(and)591 500 y Fw(\\pstextpath)e Fv(in)g(any)g(other)g(way)m(.)17
+b(E.g.,)11 b(you)g(cannot)g(typeset)g(character)h(outlines)591
+560 y(along)g(a)g(path,)g(and)g(then)h(\256ll)f(and)g(stroke)f(the)i
+(outlines)f(with)g Fw(\\pscharpath)p Fv(.\))591 650 y(The)g(command)712
+795 y Fs(\\pscharclip)p Fr(*[)p Fq(par)5 b Fr(])p Fs({)p Fp(text)t
+Fs(})15 b(...)j(\\endpscharclip)591 926 y Fv(works)f(just)i(like)h
+Fu(\\pscharpath)p Fv(,)f(but)g(it)g(also)g(sets)f(the)i(clipping)f(path)g(to)
+g(the)591 986 y(character)13 b(path.)19 b(Y)-5 b(ou)12 b(may)g(want)h(to)f
+(position)h(this)f(clipping)h(path)g(using)f Fu(\\rput)591
+1046 y Fk(inside)g Fu(\\pscharclip)p Fv(')m(s)f(ar)o(gument.)18
+b(Like)13 b Fu(\\psclip)f Fv(and)g Fu(\\endpsclip)p Fv(,)g
+Fu(\\pscharclip)591 1106 y Fv(and)f Fu(\\endpscharclip)g Fv(should)h(come)g
+(on)g(the)g(same)g(page)g(and)g(should)f(be)h(prop-)591 1166
+y(erly)d(nested)h(with)g(respect)g(to)f(T)1113 1177 y(E)1137
+1166 y(X)g(groups)g(\(unless)g Fu(\\AltClipMode)i Fv(is)e(in)h(ef)o(fect\).)
+591 1227 y(The)i(\256le)g Fw(denis2.tex)g Fv(contains)g(a)h(sample)f(of)g
+Fu(\\pscharclip)p Fv(.)366 1424 y Fo(40)71 b(Importing)19 b(EPS)h(\256les)591
+1545 y Fv(PST)n(ricks)c(does)h(not)f(come)i(with)f(any)g(facility)h(for)e
+(including)i(Encapsulated)591 1605 y(PostScript)k(\256les,)j(because)e(there)
+g(are)g(other)g(very)g(good)f(and)h(well-tested)591 1666 y(macros)7
+b(for)g(exactly)g(that.)17 b(If)7 b(using)g(Rokicki')m(s)g
+Fw(dvips)p Fv(,)i(then)e(try)g Fw(epsf.tex)p Fv(/)p Fw(epsf.st)q(y)p
+Fv(,)591 1726 y(by)k(the)i(man)f(himself!)591 1815 y(What)i(PST)n(ricks)f
+Fk(is)h Fv(good)f(for)h(is)f(embellishing)i(your)f(EPS)f(picture.)23
+b(Y)-5 b(ou)13 b(can)591 1875 y(include)f(an)g(EPS)g(\256le)g(in)g(in)g(the)h
+(ar)o(gument)f(of)g Fu(\\rput)p Fv(,)g(as)f(in)712 2006 y Fw
+(\\rput\(3,3\){\\epsfbox{my\256le.eps}})591 2137 y Fv(and)k(hence)g(you)g
+(can)g(include)h(an)f(EPS)g(\256le)g(in)g(the)h Fu(\\pspicture)e
+Fv(environment.)591 2197 y(T)n(urn)d(on)f Fu(\\psgrid)p Fv(,)h(and)g(you)f
+(can)h(\256nd)f(the)h(coordinates)g(for)g(whatever)g(graphics)591
+2257 y(or)h(text)h(you)g(want)f(to)h(add.)19 b(This)13 b(works)e(even)i(when)
+f(the)h(picture)h(has)e(a)h(weird)591 2317 y(bounding)c(box,)i(because)f
+(with)h(the)f(ar)o(guments)h(to)f Fu(\\pspicture)g Fv(you)g(control)g(the)591
+2377 y(bounding)h(box)h(from)g(T)993 2388 y(E)1016 2377 y(X')m(s)g(point)g
+(of)g(view)m(.)591 2467 y(This)e(isn')o(t)h(always)g(the)g(best)f(way)h(to)g
+(work)f(with)g(an)h(EPS)f(\256le,)h(however)m(.)17 b(If)10
+b(the)591 2527 y(PostScript)h(\256le')m(s)h(bounding)f(box)g(is)h(the)g(size)
+g(you)f(want)h(the)g(resulting)g(picture)591 2587 y(to)g(be,)g(after)g(your)g
+(additions,)g(then)h(try)591 2828 y Fn(Importing)d(EPS)g(\256les)999
+b(78)p eop
+%%Page: 79 9
+8 bop 712 50 a Fw(\\hbox{<picture)22 b(objects>)h(\\epsfbox{<\256le.eps>})591
+181 y Fv(This)11 b(will)i(put)f(all)g(your)g(picture)g(objects)h(at)f(the)g
+(lower)g(left)h(corner)e(of)h(the)g(EPS)591 241 y(\256le.)17
+b Fw(\\epsfbox)12 b Fv(takes)g(care)h(of)f(leaving)h(the)f(right)g(amount)h
+(of)e(space.)591 330 y(If)17 b(you)g(need)h(to)g(determine)h(the)f(bounding)f
+(box)h(of)f(an)h(EPS)f(\256le,)i(then)f(you)591 390 y(can)f(try)g(of)f(the)i
+(automatic)g(bounding)f(box)f(calculating)j(programs,)e(such)g(as)591
+450 y Fw(bb\256g)f Fv(\(distributed)i(with)g(Rokicki')m(s)f
+Fw(dvips)p Fv(\).)34 b(However)n(,)18 b(all)g(such)f(programs)591
+511 y(are)e(easily)g(fooled;)i(the)e(only)g(sure)f(way)h(to)g(determine)h
+(the)f(bounding)f(box)h(is)591 571 y(visually)m(.)i Fu(\\psgrid)12
+b Fv(is)g(a)g(good)g(tool)g(for)g(this.)366 768 y Fo(41)71
+b(Exporting)20 b(EPS)g(\256les)591 889 y Fv(Y)-5 b(ou)17 b(must)h(load)g
+Fw(pst2eps.tex)h Fv(or)f Fw(pst2eps.sty)h Fv(to)f(use)g(the)g(PST)n(ricks)g
+(macros)325 913 y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray [ 31.29819 -15.6491
+31.29819 14.22636 -6.25954 14.22636 -6.25954 18.4941 -25.03864 18.4941
+-25.03864 14.22636 -31.29819 14.22636 -31.29819 -15.6491 /r 2.0 def
+/Lineto { Arcto } def false Polygon gsave 3.0 45. PtoC Shadow 0.25
+setgray gsave fill grestore stroke grestore gsave 1. setgray gsave
+fill grestore stroke grestore gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial 232
+931 a Fs(pst2eps)591 949 y Fv(described)12 b(in)g(this)g(section.)591
+1039 y(If)h(you)h(want)g(to)h(export)f(an)g(EPS)f(\256le)i(that)f(contains)h
+(both)f(graphics)g(and)g(text,)591 1099 y(then)h(you)f(need)h(to)g(be)g
+(using)g(a)g(DVI-to-PS)e(driver)i(that)g(suports)f(such)g(a)i(fea-)591
+1159 y(ture.)34 b(If)17 b(you)g(just)h(want)f(to)h(export)g(pure)f(graphics,)
+i(then)f(you)f(can)h(use)f(the)591 1219 y Fu(\\PST)n(ricksEPS)h
+Fv(command.)34 b(Both)17 b(of)g(these)h(options)f(are)h(described)f(in)h
+(this)591 1279 y(section.)591 1369 y(Newer)9 b(versions)g(of)h(Rokicki')m(s)g
+Fw(dvips)g Fv(support)g(an)g Fw(-E)g Fv(option)g(for)f(creating)i(EPS)591
+1429 y(\256les)g(from)h(T)808 1440 y(E)832 1429 y(X)f Fw(.dvi)i
+Fv(\256les.)k(E.g.,)1008 1539 y Fk(dvipsfoo:dvi)12 b Fv(\261)f
+Fk(E)g Fv(\261)h Fk(ofoo:eps)591 1649 y Fv(Y)-5 b(our)10 b(document)h(should)
+f(be)g(a)h(single)g(page.)17 b Fw(dvips)10 b Fv(will)h(\256nd)f(a)h(tight)g
+(bounding)591 1709 y(box)k(that)h(just)g(encloses)g(the)g(printed)g
+(characters)h(on)e(the)h(page.)29 b(This)16 b(works)591 1769
+y(best)d(with)g(outline)g(\(PostScript\))g(fonts,)g(so)f(that)i(the)f(EPS)g
+(\256le)g(is)g(scalable)h(and)591 1829 y(resolution)e(independent.)591
+1919 y(There)k(are)h(two)f(inconvenient)h(aspects)g(of)f(this)g(method.)31
+b(Y)-5 b(ou)16 b(may)g(want)h(a)591 1979 y(dif)o(ferent)e(bounding)g(box)f
+(than)i(the)f(one)g(calculated)i(by)d Fw(dvips)i Fv(\(in)f(particular)n(,)591
+2039 y Fw(dvips)c Fv(ignores)g(all)g(the)h(PostScript)e(generated)i(by)f(PST)
+n(ricks)f(when)h(calculating)591 2099 y(the)h(bounding)g(box\),)g(and)g(you)g
+(may)h(have)f(to)h(go)f(out)g(of)g(your)g(way)g(to)h(turn)f(of)o(f)591
+2160 y(any)g(headers)g(and)g(footers)f(that)i(would)f(be)g(added)g(by)g
+(output)g(routines.)591 2249 y(PST)n(ricks)18 b(contains)h(an)g(environment)g
+(that)g(tries)g(to)g(get)g(around)f(these)h(two)591 2309 y(problems:)712
+2454 y Fs(\\T)l(eXtoEPS)735 2529 y Ft(stuff)712 2604 y Fs(\\endT)l(eXtoEPS)
+591 2828 y Fn(Exporting)9 b(EPS)h(\256les)997 b(79)p eop
+%%Page: 80 10
+9 bop 591 50 a Fv(This)7 b(is)g(all)g(that)g(should)g(appear)h(in)f(your)g
+(docume)q(nt,)k(but)c(headers)g(and)g(whatever)591 110 y(that)k(would)f
+(normally)i(be)f(added)g(by)f(output)h(routines)g(are)g(ignored.)17
+b Fw(dvips)11 b Fv(will)591 170 y(again)k(try)g(to)g(\256nd)f(a)h(tight)g
+(bounding)g(box,)g(but)g(it)g(will)g(treat)h Ft(stuff)22 b
+Fv(as)14 b(if)h(there)591 230 y(was)d(a)i(frame)g(around)f(it.)23
+b(Thus,)13 b(the)h(bounding)f(box)h(will)g(be)f(sure)g(to)h(include)591
+291 y Ft(stuff)6 b Fv(,)11 b(but)g(might)h(be)f(lar)o(ger)g(if)g(there)g(is)g
+(output)g(outside)g(the)g(boundaries)g(of)g(this)591 351 y(box.)17
+b(If)11 b(the)i(bounding)e(box)h(still)h(isn')o(t)f(right,)g(then)g(you)g
+(will)g(have)h(to)f(edit)h(the)712 482 y Fw(\045\045BoundingBox)23
+b(<llx)g(lly)g(urx)g(ury>)591 612 y Fv(speci\256cation)12 b(in)g(the)h(EPS)e
+(\256le)h(by)g(hand.)591 702 y(If)k(your)f(goal)i(is)f(to)g(make)h(an)f(EPS)f
+(\256le)i(for)f(inclusion)g(in)g(other)h(documents,)591 762
+y(then)10 b Fw(dvips)g(-E)g Fv(is)g(the)g(way)g(to)g(go.)16
+b(However)n(,)10 b(it)g(can)h(also)f(be)g(useful)g(to)g(generate)591
+822 y(an)k(EPS)g(\256le)h(from)g(PST)n(ricks)f(graphics)g(objects)i(and)e
+(include)i(it)f(in)g(the)g(same)591 882 y(document,)791 864
+y Fm(17)842 882 y Fv(rather)i(than)g(just)f(including)h(the)g(PST)n(ricks)f
+(graphics)g(directly)m(,)591 942 y(because)d(T)776 953 y(E)799
+942 y(X)f(gets)h(involved)g(with)g(processing)f(the)i(PST)n(ricks)e(graphics)
+h(only)591 1002 y(when)h(the)h(EPS)f(\256le)h(is)f(initially)j(created)e(or)g
+(updated.)25 b(Hence,)16 b(you)e(can)h(edit)591 1063 y(your)h(\256le)i(and)f
+(preview)g(the)h(graphics,)g(without)g(having)f(to)h(process)e(all)i(the)591
+1123 y(PST)n(ricks)13 b(graphics)g(each)i(time)f(you)g(correct)g(a)g(typo.)22
+b(This)13 b(speed-up)h(can)g(be)591 1183 y(signi\256cant)e(with)f(complex)i
+(graphics)f(such)f(as)h Fw(\\pslistplot)p Fv(')m(s)h(with)e(a)h(lot)h(of)e
+(data.)591 1272 y(T)m(o)g(create)i(an)f(EPS)g(\256le)g(from)g(PST)n(ricks)f
+(graphics)h(objects,)h(use)712 1418 y Fs(\\PSTtoEPS)p Fr([)p
+Fq(par)5 b Fr(])p Fs({)p Fp(\256le)r Fs(}{)p Fp(graphics)13
+b(objects)r Fs(})591 1548 y Fv(The)c(\256le)h(is)g(created)g(immediately)m(,)
+i(and)e(hence)g(you)f(can)h(include)h(it)f(in)g(the)g(same)591
+1609 y(document)16 b(\(after)h(the)g Fu(\\PSTtoEPS)g Fv(command\))g(and)f(as)
+g(many)g(times)h(as)f(you)591 1669 y(want.)30 b(Unlike)16 b(with)g
+Fw(dvips)g(-E)p Fv(,)g(only)g(pure)h(graphics)f(objects)h(are)f(processed)591
+1729 y(\(e.g.,)11 b Fw(\\rput)h Fv(commands)g(have)h(no)e(ef)o(fect\).)591
+1818 y Fu(\\PSTtoEPS)g Fv(cannot)f(calculate)i(the)f(bounding)f(box)f(of)h
+(the)h(EPS)e(\256le.)17 b(Y)-5 b(ou)10 b(have)591 1878 y(to)i(specify)g(it)g
+(yourself,)g(by)g(setting)g(the)h(following)f(parameters:)712
+2009 y Fs(bbllx=)p Fp(dim)695 b Fc(Default:)20 b Fs(-1pt)712
+2069 y(bblly=)p Fp(dim)695 b Fc(Default:)20 b Fs(-1pt)712 2130
+y(bburx=)p Fp(dim)690 b Fc(Default:)20 b Fs(1pt)712 2190 y(bbury=)p
+Fp(dim)690 b Fc(Default:)20 b Fs(1pt)591 2320 y Fv(Note)9 b(that)i(if)f(the)h
+(EPS)e(\256le)h(is)g(only)g(to)g(be)g(included)g(in)g(a)h(PST)n(ricks)e
+(picture)i(with)591 2381 y Fu(\\rput)19 b Fv(you)12 b(might)g(as)g(well)h
+(leave)f(the)h(default)g(bounding)e(box.)591 2470 y Fu(\\PST)n(ricksEPS)h
+Fv(also)g(uses)f(the)i(following)f(parameters:)p 591 2514 544
+2 v 632 2545 a Fj(17)662 2560 y Fi(See)e(the)f(preceding)h(section)e(on)i
+(importing)g(EPS)h(\256les.)591 2828 y Fn(Exporting)e(EPS)h(\256les)997
+b(80)p eop
+%%Page: 81 11
+10 bop 591 50 a Fs(header\256le=)p Fp(\256le)780 b Fc(Default:)20
+b Fs(s)712 131 y Fv(\(\)This)12 b(parameter)h(is)f(for)g(specifying)g
+(PostScript)g(header)g(\256les)g(that)g(are)712 191 y(to)h(be)g(included)h
+(in)f(the)g(EPS)f(\256le.)19 b(The)14 b(ar)o(gument)f(should)f(contain)i(one)
+712 251 y(or)d(more)h(\256le)f(names,)h(separated)f(by)g(commas.)18
+b(If)11 b(you)g(have)g(more)g(than)712 311 y(one)h(\256le,)h(however)n(,)e
+(the)i(entire)f(list)h(must)f(be)g(enclosed)g(in)g(braces)g
+Fw({})p Fv(.)591 413 y Fs(headers=)p Fp(none/all/user)502 b
+Fc(Default:)20 b Fs(none)712 494 y Fv(When)8 b Fw(none)p Fv(,)g(no)g(header)g
+(\256les)g(are)g(included.)17 b(When)8 b Fw(all)p Fv(,)g(the)g(header)g
+(\256les)712 554 y(used)j(by)g(PST)n(ricks)g(plus)g(the)h(header)g(\256les)f
+(speci\256ed)g(by)g(the)h Fu(header\256le)712 614 y Fv(parameter)e(are)f
+(included.)17 b(When)8 b Fw(user)p Fv(,)h(only)f(the)h(header)g(\256les)f
+(speci\256ed)712 675 y(by)13 b(the)h Fu(header\256le)e Fv(parameter)i(are)f
+(included.)21 b(If)13 b(the)g(EPS)g(\256le)g(is)g(to)g(be)712
+735 y(included)g(in)g(a)g(T)994 745 y(E)1017 735 y(X)f(document)h(that)g
+(uses)e(the)i(same)g(PST)n(ricks)f(macros)712 795 y(and)18
+b(hence)h(loads)e(the)h(relevant)h(PST)n(ricks)f(header)g(\256les)f(anyway)h
+(\(in)712 855 y(particular)n(,)12 b(if)f(the)f(EPS)g(\256le)g(is)g(to)h(be)f
+(included)h(in)f(the)h(same)f(document\),)712 915 y(then)j
+Fu(headers)d Fv(should)i(be)g Fw(none)f Fv(or)h Fw(user)p Fv(.)591
+2828 y Fn(Exporting)d(EPS)h(\256les)997 b(81)p eop
+%%Page: 82 12
+11 bop 591 61 a Fa(Help)366 428 y Fo(A)70 b(Boxes)591 547 y
+Fv(Many)8 b(of)g(the)h(PST)n(ricks)f(macros)h(have)f(an)h(ar)o(gument)g(for)f
+(text)i(that)f(is)f(processed)591 607 y(in)17 b(restricted)i(horizontal)g
+(mode)e(\(in)h(L)1259 601 y(a)1273 607 y(T)1294 622 y(E)1318
+607 y(X)f(parlance,)j(LR-mode\))e(and)f(then)591 667 y(transformed)f(in)h
+(some)g(way)m(.)31 b(This)17 b(is)g(always)f(the)i(macro')m(s)f(last)g(ar)o
+(gument,)591 727 y(and)12 b(it)h(is)g(written)g Fw({)p Ft(stuff)6
+b Fw(})13 b Fv(in)g(this)f Fk(User)r(')-6 b(s)11 b(Guide)p
+Fv(.)19 b(Examples)13 b(are)g(the)g(framing,)591 788 y(rotating,)j(scaling,)h
+(positioning)f(and)f(node)g(macros.)28 b(I)15 b(will)h(call)g(these)g
+(\252LR-)591 848 y(box\272)c(macros,)g(and)h(use)f(framing)g(as)g(the)h
+(leading)g(example)g(in)g(the)g(discussion)591 908 y(below)m(.)591
+995 y(In)d(restricted)i(horizontal)f(mode,)g(the)h(input,)f(consisting)f(of)h
+(regular)g(characters)591 1055 y(and)19 b(boxes,)h(is)g(made)f(into)h(one)f
+(\(long)h(or)f(short\))f(line.)40 b(There)20 b(is)f(no)g(line-)591
+1115 y(breaking,)j(nor)d(can)h(there)h(be)f(vertical)h(mode)f(material)i
+(such)d(as)h(an)g(entire)591 1175 y(displayed)11 b(equation.)18
+b(However)n(,)10 b(the)i(fact)g(that)f(you)g(can)h(include)g(another)f(box)
+591 1236 y(means)h(that)g(this)g(isn')o(t)h(really)f(a)h(restriction.)591
+1323 y(For)d(one)h(thing,)h(alignment)g(environments)g(such)e(as)h
+Fw(\\halign)g Fv(or)g(L)1688 1317 y(a)1702 1323 y(T)1723 1338
+y(E)1746 1323 y(X')m(s)g Fw(tabular)591 1383 y Fv(are)i(just)g(boxes,)f(and)h
+(thus)g(present)g(no)g(problem.)20 b(Picture)14 b(environments)f(and)591
+1443 y(the)i(box)f(macros)h(themselves)h(are)f(also)g(just)g(boxes.)25
+b(Actually)m(,)16 b(there)g(isn')o(t)f(a)591 1503 y(single)g(PST)n(ricks)g
+(command)i(that)f(cannot)g(be)f(put)h(directly)g(in)g(the)g(ar)o(gument)591
+1563 y(of)k(an)g(LR-box)g(macro.)43 b(However)n(,)22 b(entire)f(paragraphs)g
+(or)f(other)g(vertical)591 1624 y(mode)12 b(material)j(such)d(as)g(displayed)
+h(equations)g(need)g(to)f(be)h(nested)g(in)f(a)h Fw(\\vbox)591
+1684 y Fv(or)i(L)658 1678 y(a)672 1684 y(T)693 1699 y(E)717
+1684 y(X)g Fw(\\parbox)g Fv(or)h Fw(minipage)p Fv(.)28 b(L)1194
+1678 y(a)1208 1684 y(T)1229 1699 y(E)1252 1684 y(X)15 b(users)h(should)f(see)
+h Fw(fancybox.sty)i Fv(and)591 1744 y(its)d(documentation,)j
+Fw(fancybox.doc)p Fv(,)f(for)f(extensive)g(tips)g(and)f(trick)i(for)e(using)
+591 1804 y(LR-box)c(commands.)591 1891 y(The)i(PST)n(ricks)f(LR-box)h(macros)
+g(have)g(some)f(features)i(that)f(are)g(not)g(found)g(in)591
+1951 y(most)j(other)h(LR-box)g(macros,)h(such)e(as)g(the)i(standard)e(L)1575
+1945 y(a)1589 1951 y(T)1610 1966 y(E)1634 1951 y(X)g(LR-box)h(com-)591
+2011 y(mands.)591 2098 y(W)n(ith)j(L)716 2092 y(a)730 2098
+y(T)751 2113 y(E)775 2098 y(X)g(LR-box)g(commands,)i(the)e(contents)h(is)f
+(always)g(processed)g(in)591 2158 y(text)g(mode,)h(even)e(when)g(the)h(box)f
+(occurs)g(in)g(math)h(mode.)39 b(PST)n(ricks,)21 b(on)591 2219
+y(the)g(other)g(hand,)i(preserves)e(math)g(mode,)i(and)e(attempts)h(to)g
+(preserve)e(the)591 2279 y(math)15 b(style)f(as)h(well.)24
+b(T)999 2290 y(E)1023 2279 y(X)14 b(has)g(four)g(math)h(styles:)22
+b(text,)16 b(display)m(,)f(script)g(and)591 2339 y(scriptscript.)21
+b(Generally)m(,)14 b(if)f(the)h(box)f(macro)g(occurs)g(in)h(displayed)f(math)
+h(\(but)591 2399 y(not)h(in)g(sub-)f(or)h(superscript)f(math\),)i(the)g
+(contents)f(are)g(processed)g(in)g(display)591 2459 y(style,)f(and)f
+(otherwise)h(the)f(contents)h(are)g(processed)f(in)h(text)g(style)g(\(even)g
+(here)591 2520 y(the)h(PST)n(ricks)g(macros)g(can)g(make)h(mistakes,)g(but)f
+(through)g(no)g(fault)g(of)g(their)591 2580 y(own\).)35 b(If)18
+b(you)g(don')o(t)g(get)g(the)h(right)g(style,)h(explicitly)f(include)g(a)g
+Fw(\\textstyle)p Fv(,)591 2640 y Fw(\\displaystyle)p Fv(,)12
+b Fw(\\scriptstyle)h Fv(or)e Fw(\\scriptscriptstyle)i Fv(command)f(at)f(the)h
+(beginning)f(of)591 2828 y Fn(Help)1239 b(82)p eop
+%%Page: 83 13
+12 bop 591 50 a Fv(the)12 b(box)g(macro')m(s)g(ar)o(gument.)591
+138 y(In)f(case)h(you)g(want)f(your)h(PST)n(ricks)f(LR-box)h(commands)f(to)h
+(treat)h(math)f(in)g(the)591 198 y(same)i(as)g(your)f(other)h(LR-box)g
+(commands,)h(you)e(can)i(switch)e(this)h(feature)h(on)591 259
+y(and)d(of)o(f)f(with)h(the)h(commands)712 399 y Fs(\\psmathboxtrue)712
+473 y(\\psmathboxfalse)591 599 y Fv(Y)-5 b(ou)13 b(can)h(have)g(commands)h
+(\(such)e(as,)h(but)g(not)g(restricted)h(to,)g(the)f(math)g(style)591
+659 y(commands\))20 b(automatically)j(inserted)e(at)f(the)h(beginning)g(of)f
+(each)h(LR-box)591 719 y(using)11 b(the)712 859 y Fs(\\everypsbox{)p
+Fp(commands)r Fs(})591 985 y Fv(command.)791 967 y Fm(18)591
+1073 y Fv(If)h(you)h(would)g(like)g(to)g(de\256ne)g(an)g(LR-box)g
+(environment)h Ft(name)f Fv(from)g(an)g(LR-)591 1133 y(box)e(command)i
+Ft(cmd)t Fv(,)f(use)712 1273 y Fs(\\pslongbox{)p Fp(name)r
+Fs(}{)p Fp(cmd)t Fs(})591 1399 y Fv(For)f(example,)i(after)712
+1524 y Fw(\\pslongbox{MyFrame}{\\psframebox})591 1650 y Fv(you)e(can)i(write)
+712 1775 y Fw(\\MyFrame)23 b(<stuf)o(f>\\endMyFrame)591 1901
+y Fv(instead)12 b(of)712 2026 y Fw(\\psframebox{<stuf)o(f>})591
+2152 y Fv(Also,)f(L)717 2146 y(a)731 2152 y(T)752 2167 y(E)775
+2152 y(X)h(users)f(can)h(write)712 2277 y Fw(\\begin{MyFrame})21
+b(<stuf)o(f>\\end{MyFrame})591 2403 y Fv(It)12 b(is)g(up)g(to)g(you)g(to)g
+(be)g(sure)g(that)g Ft(cmd)k Fv(is)c(a)h(PST)n(ricks)e(LR-box)h(command;)h
+(if)f(it)591 2463 y(isn')o(t,)g(nasty)g(errors)f(can)h(arise.)591
+2551 y(Environments)g(like)h(have)f(nice)g(properties:)p 591
+2594 544 2 v 632 2625 a Fj(18)662 2640 y Fi(This)e(is)g(a)f(token)h(register)
+n(.)591 2828 y Fn(Boxes)1211 b(83)p eop
+%%Page: 84 14
+13 bop 665 50 a Fx(\267)25 b Fv(The)13 b(syntax)f(is)f(clearer)j(when)d
+Ft(stuff)19 b Fv(is)12 b(long.)665 151 y Fx(\267)25 b Fv(It)14
+b(is)e(easier)i(to)f(build)g(composite)h(LR-box)e(commands.)21
+b(For)12 b(example,)712 212 y(here)h(is)f(a)g(framed)g(minipage)h
+(environment)g(for)f(L)1555 206 y(a)1569 212 y(T)1590 226 y(E)1613
+212 y(X:)820 313 y Fw(\\pslongbox{MyFrame}{\\psframebox})820
+373 y(\\newenvironment{fminipage}\045)865 433 y
+({\\MyFrame\\begin{minipage}}\045)865 494 y({\\end{minipage}\\endMyFrame)o(})
+665 595 y Fx(\267)25 b Fv(Y)-5 b(ou)12 b(include)h(verbatim)g(text)f(and)g
+(other)h Fw(\\catcode)f Fv(tricks)g(in)g Ft(stuff)6 b Fv(.)591
+725 y(The)19 b(rest)h(of)f(this)g(section)h(elaborates)h(on)e(the)h
+(inclusion)f(of)h(verbatim)g(text)591 785 y(in)14 b(LR-box)g(environments)g
+(and)h(commands,)g(for)f(those)g(who)f(are)i(interested.)591
+845 y Fw(fancybox.sty)g Fv(also)e(contains)g(some)g(nice)h(verbatim)g(macros)
+f(and)g(tricks,)h(some)591 906 y(of)d(which)h(are)h(useful)e(for)h(LR-box)g
+(commands.)591 995 y(The)k(reason)f(that)i(you)e(cannot)i(normally)f(include)
+h(verbatim)f(text)h(in)f(an)g(LR-)591 1055 y(box)d(commands)h(ar)o(gument)h
+(is)f(that)g(T)1243 1066 y(E)1267 1055 y(X)f(reads)h(the)g(whole)g(ar)o
+(gument)h(before)591 1115 y(processing)e(the)h Fw(\\catcode)g
+Fv(changes,)g(at)g(which)f(point)h(it)h(is)e(too)h(late)h(to)e(change)591
+1175 y(the)g(category)g(codes.)19 b(If)12 b(this)h(is)g(all)g(Greek)f(to)h
+(you,)1473 1157 y Fm(19)1520 1175 y Fv(then)g(just)f(try)h(this)g(L)1856
+1169 y(a)1870 1175 y(T)1891 1190 y(E)1914 1175 y(X)591 1236
+y(example)g(to)f(see)g(the)g(problem:)712 1366 y Fw
+(\\psframebox{\\verb+\\foo{bar}+})591 1496 y Fv(The)18 b(LR-box)g
+(environments)g(de\256ned)g(with)g Fu(\\pslongbox)g Fv(do)g(not)g(have)h
+(this)591 1556 y(problem)h(because)h Ft(stuff)28 b Fv(is)20
+b(not)h(processed)f(as)g(an)h(ar)o(gument.)43 b(Thus,)23 b(this)591
+1616 y(works:)712 1746 y Fw(\\pslongbox{MyFrame}{\\psframebox})712
+1806 y(\\MyFrame)g(\\verb+\\foo{bar}+\\endMyFrame)1198 1949
+y @beginspecial @setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 5.90578
+neg 41.00531 11.01277 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial(\\foo{bar})591 2091
+y Fv(The)12 b(commands)712 2235 y Fs(\\psverbboxtrue)712 2310
+y(\\psverbboxfalse)591 2440 y Fv(switch)i(into)i(and)e(out)h(of,)h
+(respectively)m(,)g(a)f(special)h(PST)n(ricks)f(mode)g(that)g(lets)591
+2500 y(you)c(include)i(verbatim)g(text)g(in)f(any)g(LR-box)g(command.)17
+b(For)12 b(example:)p 591 2545 544 2 v 632 2575 a Fj(19)662
+2590 y Fi(Incidentally)m(,)d(many)g(foreign)g(language)e(macros,)i(such)e(as)
+i Fg(greek.tex)p Fi(,)h(use)e Fg(\\catcode)h Fi(tricks)591
+2640 y(which)g(can)g(cause)g(problems)g(in)h(LR-box)g(macros.)591
+2828 y Fn(Boxes)1211 b(84)p eop
+%%Page: 85 15
+14 bop 712 50 a Fw(\\psverbboxtrue)712 110 y
+(\\psframebox{\\verb+\\foo{bar}+})1192 253 y @beginspecial
+@setspecial
+ tx@Dict begin STP newpath 0.8 SLW 0. setgray 0. true 3.8 neg 5.90578
+neg 41.00531 11.01277 .5 Frame gsave 0.8 SLW 0. setgray 0 setlinecap
+stroke grestore end
+
+@endspecial(\\foo{bar})591 396 y Fv(However)n(,)15
+b(this)g(is)g(not)h(as)f(robust.)26 b(Y)-5 b(ou)15 b(must)g(explicitly)i
+(group)e(color)h(com-)591 457 y(mands)e(in)h Ft(stuff)6 b Fv(,)16
+b(and)f(LR-box)f(commands)h(that)h(usually)f(ignore)g(spaces)f(that)591
+517 y(follow)d Fw({)p Ft(stuff)6 b Fw(})12 b Fv(might)h(not)f(do)g(so)f(when)
+h Fu(\\psverbboxtrue)e Fv(is)i(in)g(ef)o(fect.)366 714 y Fo(B)70
+b(T)o(ips)20 b(and)g(More)g(T)l(ricks)591 835 y Fw(1)40 b(How)12
+b(do)f(I)h(rotate/frame)e(this)i(or)f(that)g(with)h Fv(L)1356
+829 y(a)1370 835 y(T)1391 850 y(E)1415 835 y(X)p Fw(?)591 957
+y Fv(See)g Fw(fancybox.sty)i Fv(and)e(its)g(documentation.)591
+1116 y Fw(2)40 b(How)14 b(can)e(I)h(suppress)g(the)g(PostScript)g(so)g(that)g
+(I)g(can)g(use)g(my)g(document)f(with)654 1176 y(a)f(non-PostScript)g(dvi)h
+(driver?)591 1297 y Fv(Put)f(the)i(command)712 1442 y Fs(\\PST)m(ricksOff)591
+1573 y Fv(at)j(the)h(beginning)f(of)g(your)g(document.)30 b(Y)-5
+b(ou)15 b(should)h(then)g(be)h(able)f(to)g(print)591 1633 y(or)c(preview)g
+(drafts)g(of)g(your)g(document)g(\(minus)g(the)h(PostScript,)f(and)g(perhaps)
+591 1694 y(pretty)g(strange)g(looking\))g(with)g(any)g(dvi)g(driver)m(.)591
+1852 y Fw(3)40 b(How)12 b(can)f(I)h(improve)f(the)g(rendering)e(of)i
+(halftones?)591 1974 y Fv(This)g(can)g(be)h(an)f(important)h(consideration)g
+(when)e(you)h(have)h(a)f(halftone)h(in)f(the)591 2034 y(background)g(and)h
+(text)h(on)f(top.)17 b(Y)-5 b(ou)12 b(can)g(try)g(putting)712
+2165 y Fw(\\pstverb{106)i(45)g({dup)f(mul)i(exch)g(dup)e(mul)i(add)e(1.0)i
+(exch)f(sub})g(setscreen})591 2296 y Fv(before)f(the)h(halftone,)h(or)f(in)g
+(a)g(header)g(\(as)f(in)h(headers)g(and)f(footers,)h(not)g(as)g(in)591
+2356 y(PostScript)d(header)i(\256les\),)e(if)h(you)g(want)g(it)g(to)h(have)f
+(an)g(ef)o(fect)h(on)f(every)g(page.)591 2445 y Fw(setscreen)g
+Fv(is)f(a)i(device-dependent)g(operator)m(.)591 2828 y Fn(T)o(ips)c(and)g
+(More)i(T)o(ricks)970 b(85)p eop
+%%Page: 86 16
+15 bop 591 50 a Fw(4)40 b(What)11 b(special)g(characters)g(can)h(be)e(active)
+i(with)g(PST)n(ricks?)366 212 y Fo(C)70 b(Including)20 b(PostScript)f(code)
+591 330 y Fv(T)m(o)8 b(learn)i(about)f(the)g(PostScript)f(language,)i
+(consult)f(Adobe')m(s)f Fk(PostScript)h(Lan-)591 390 y(guage)15
+b(T)m(utorial)g(and)g(Cookbook)g Fv(\(the)h(\252Blue)f(Book\272\),)h(or)f
+(Henry)g(McGilton)591 450 y(and)h(Mary)h(Campione')m(s)g Fk(PostScript)g(by)g
+(Example)h Fv(\(1992\).)31 b(Both)17 b(are)g(pub-)591 510 y(lished)11
+b(by)g(Addison-W)l(esley)m(.)16 b(Y)-5 b(ou)11 b(may)g(\256nd)g(that)h(the)f
+(Appendix)g(of)g(the)g(Blue)591 570 y(Book,)h(plus)g(an)g(understanding)g(of)
+g(how)g(the)h(stack)f(works,)g(is)g(all)h(you)f(need)h(to)591
+631 y(write)h(simple)g(code)g(for)g(computing)g(numbers)f(\(e.g.,)i(to)e
+(specify)h(coordinates)591 691 y(or)d(plots)h(using)g(PostScript\).)591
+777 y(Y)-5 b(ou)10 b(may)h(want)g(to)h(de\256ne)e(T)1073 787
+y(E)1097 777 y(X)g(macros)i(for)e(including)i(PostScript)f(fragments)591
+837 y(in)16 b(various)f(places.)30 b(All)16 b(T)1059 848 y(E)1083
+837 y(X)f(macros)h(are)h(expanded)f(before)g(being)g(passed)591
+897 y(on)d(to)h(PostScript.)21 b(It)14 b(is)g(not)f(always)h(clear)g(what)g
+(this)g(means.)22 b(For)13 b(example,)591 957 y(suppose)e(you)g(write)712
+1065 y Fw(\\SpecialCoor)712 1125 y(\\def\\mydata{23)23 b(43})712
+1185 y(\\psline\(!47)g(\\mydata)g(add\))712 1246 y(\\psline\(!47)g
+(\\mydata\\)g(add\))712 1306 y(\\psline\(!47)g(\\mydata\304add\))712
+1366 y(\\psline\(!47)g(\\mydata{})f(add\))591 1474 y Fv(Y)-5
+b(ou)11 b(will)g(get)h(a)g(PostScript)f(error)g(in)h(each)g(of)g(the)f
+Fu(\\psline)h Fv(commands.)18 b(T)m(o)11 b(see)591 1534 y(what)g(the)i(ar)o
+(gument)g(is)e(expanding)i(to,)f(try)g(use)g(T)1436 1545 y(E)1459
+1534 y(X')m(s)f Fw(\\edef)h Fv(and)g Fw(\\show)p Fv(.)18 b(E.g.,)712
+1642 y Fw(\\def\\mydata{23)23 b(43})712 1702 y(\\edef\\temp{47)f(\\mydata)h
+(add})712 1762 y(\\show\\temp)712 1822 y(\\edef\\temp{47)f(\\mydata\\)i(add})
+712 1883 y(\\show\\temp)712 1943 y(\\edef\\temp{47)e(\\mydata\304add})712
+2003 y(\\show\\temp)712 2063 y(\\edef\\temp{47)g(\\mydata{})h(add})712
+2123 y(\\show\\temp)591 2231 y Fv(T)612 2242 y(E)635 2231 y(X)13
+b(expands)f(the)i(code,)f(assigns)g(its)g(value)g(to)h Fw(\\temp)p
+Fv(,)f(and)g(then)h(displays)e(the)591 2291 y(value)h(of)f
+Fw(\\temp)g Fv(on)g(your)h(console.)18 b(Hit)13 b Ft(return)e
+Fv(to)i(procede.)19 b(Y)-5 b(ou)12 b(\256ll)g(\256nd)g(that)591
+2352 y(the)g(four)g(samples)g(expand,)g(respectively)m(,)g(to:)712
+2459 y Fw(47)23 b(23)f(43add)712 2520 y(47)h(23)f(43\\)g(add)712
+2580 y(47)h(23)f(43\\penalty)g(\\@M)h(\\)h(add)712 2640 y(47)f(23)f(43{})f
+(add)591 2828 y Fn(Including)9 b(PostScript)h(code)895 b(86)p
+eop
+%%Page: 87 17
+16 bop 591 50 a Fv(All)14 b(you)f(really)i(wanted)f(was)g(a)g(space)g
+(between)h(the)f Fw(43)g Fv(and)g Fw(add)p Fv(.)22 b(The)15
+b(com-)591 110 y(mand)d Fw(\\space)g Fv(will)g(do)g(the)h(trick:)712
+241 y Fw(\\psline\(!47)23 b(\\mydata\\space)g(add\))591 372
+y Fv(Y)-5 b(ou)12 b(can)h(include)g(balance)h(braces)f Fw({)f(})p
+Fv(;)h(these)g(will)g(be)f(passed)h(on)f(verbatim)i(to)591
+432 y(PostScript.)21 b(However)n(,)13 b(to)g(include)h(an)g(unbalanced)g
+(left)g(or)f(right)h(brace,)g(you)591 492 y(have)e(to)g(use,)g(respectively)m
+(,)712 637 y Fs(\\pslbrace)712 712 y(\\psrbrace)591 843 y Fv(Don')o(t)f
+(bother)h(trying)h Fw(\\})f Fv(or)f Fw(\\{)p Fv(.)591 932 y(Whenever)j(you)g
+(insert)g(PostScript)g(code)g(in)g(a)g(PST)n(ricks)g(ar)o(gument,)h(the)f
+(dic-)591 992 y(tionary)e(on)f(the)i(top)f(of)f(the)i(dictionary)f(stack)g
+(is)g Fw(tx@Dict)p Fv(,)i(which)e(is)g(PST)n(rick')m(s)591
+1052 y(main)f(dictionary)m(.)18 b(If)10 b(you)h(want)g(to)g(de\256ne)g(you)f
+(own)h(variables,)g(you)g(have)g(two)591 1112 y(options:)591
+1243 y Fb(Simplest)23 b Fv(Always)10 b(include)i(a)g Fw(@)f
+Fv(in)h(the)f(variable)h(names,)g(because)f(PST)n(ricks)712
+1303 y(never)16 b(uses)f Fw(@)h Fv(in)g(its)f(variables)i(names.)28
+b(Y)-5 b(ou)15 b(are)h(at)g(a)f(risk)h(of)f(over)o(-)712 1364
+y(\257owing)d(the)h Fw(tx@Dict)i Fv(dictionary)m(,)f(depending)f(on)f(your)g
+(PostScript)h(in-)712 1424 y(terpreter)m(.)19 b(Y)-5 b(ou)10
+b(are)i(also)f(more)g(likely)h(to)f(collide)h(with)g(someone)f(else')m(s)712
+1484 y(de\256nitions,)h(if)f(there)h(are)f(multiple)i(authors)e(contributing)
+h(to)f(the)h(docu-)712 1544 y(ment.)591 1646 y Fb(Safest)23
+b Fv(Create)13 b(a)g(dictionary)h(named)f Fw(TDict)h Fv(for)e(your)g(scratch)
+h(computations.)712 1706 y(Be)i(sure)e(to)h(remove)h(it)f(from)g(the)h
+(dictionary)g(stack)f(at)g(the)h(end)f(of)g(any)712 1766 y(code)f(you)e
+(insert)i(in)f(an)g(ar)o(gument.)18 b(E.g.,)820 1868 y Fw(TDict)24
+b(10)e(dict)h(def)g(TDict)h(begin)d(<your)h(code>)g(end)366
+2065 y Fo(D)70 b(T)l(roubleshooting)591 2186 y Fw(1)40 b(Why)9
+b(does)f(the)h(document)f(bomb)g(in)h(the)g(printer)e(when)i(the)g(\256rst)g
+(item)g(in)g(a)g Fv(L)1856 2180 y(a)1870 2186 y(T)1891 2201
+y(E)1914 2186 y(X)654 2247 y Fw(\256le)j(is)g(a)f(\257oat?)591
+2368 y Fv(When)k(the)g(\256rst)f(item)i(in)f(a)g(L)1082 2362
+y(a)1096 2368 y(T)1117 2383 y(E)1140 2368 y(X)g(\256le)f(is)h(a)g(\257oat,)h
+Fw(\\special)p Fv(')m(s)f(in)g(the)g(preamble)591 2428 y(are)c(discarded.)17
+b(In)11 b(particular)n(,)h(the)g Fw(\\special)f Fv(for)g(including)h(PST)n
+(ricks')m(s)e(header)591 2488 y(\256le)k(is)g(lost.)24 b(The)14
+b(workaround)g(is)g(to)g(but)g(something)h(before)f(the)h(\257oat,)g(or)f(to)
+591 2549 y(include)i(the)g(header)g(\256le)g(by)g(a)g(command-line)h(option)f
+(with)g(your)f(dvi-to-ps)591 2609 y(driver)m(.)591 2828 y Fn(T)o
+(roubleshooting)1048 b(87)p eop
+%%Page: 88 18
+17 bop 591 50 a Fw(2)40 b(I)13 b(converted)f(a)g(.dvi)h(\256le)f(to)h
+(PostScript,)h(and)d(then)h(mailed)g(it)g(to)h(a)f(colleague.)18
+b(It)654 110 y(prints)11 b(\256ne)h(for)f(me)g(but)g(bombs)g(on)g(her)f
+(printer)n(.)591 229 y Fv(Here)15 b(is)g(the)h(most)g(likely)h(\(but)e(not)h
+(the)g(only\))f(cause)h(of)f(this)h(problem.)28 b(The)591 290
+y(PostScript)17 b(\256les)g(you)h(get)g(when)f(using)g(PST)n(ricks)g(can)h
+(contain)h(long)f(lines.)591 350 y(This)c(should)f(be)i(acceptable)h(to)e
+(any)g(proper)g(PostScript)g(interpreter)n(,)i(but)e(the)591
+410 y(lines)j(can)h(get)g(chopped)f(when)g(mailing)h(the)g(\256le.)34
+b(There)17 b(is)h(no)f(way)g(to)g(\256x)591 470 y(this)h(in)g(PST)n(ricks,)h
+(but)f(you)g(can)g(make)g(a)h(point)f(of)g(wrapping)f(the)i(lines)f(of)591
+530 y(your)c(PostScript)h(\256les)g(when)g(mailing)h(them.)27
+b(E.g.,)16 b(on)f(UNIX)f(you)h(can)g(use)591 591 y Fw(uuencode)f
+Fv(and)i Fw(uudecode)p Fv(,)g(or)g(you)g(can)g(use)g(the)h(following)f(A)l
+(WK)f(script)i(to)591 651 y(wrap)11 b(the)h(lines:)712 767
+y Fw(#!)23 b(/bin/sh)712 828 y(#)g(This)g(script)g(wraps)g(all)f(lines)712
+888 y(#)h(Usage)g(\(if)f(script)i(is)f(named)e(wrap\):)712
+948 y(#)91 b(wrap)22 b(<)h(in\256le)g(>)f(out\256le)712 1008
+y(awk)i(')712 1068 y(BEGIN)g({)758 1129 y(N)f(=)g(78)90 b(#)22
+b(Max)h(line)g(length)712 1189 y(})712 1249 y({)46 b(if)23
+b(\(length\($0\)<=N\))803 1309 y(print)758 1369 y(else)g({)803
+1430 y(currlength)f(=)g(0)803 1490 y(for)h(\(i)f(=)h(1;)f(i)h(<=NF;)g(i++\))g
+({)849 1550 y(if)g(\(\(currlength)d(=)j(currlength)e(+)i(length\($i\))e(+)h
+(1\))g(>)h(N\))g({)882 1610 y(printf)233 b(printf)h(currlength)19
+b(=)j(length\($i\))894 1670 y(})849 1730 y(else)894 1791 y(printf)h(\\)g
+(\045s)182 b(})803 1851 y(printf)114 b(})712 1911 y(})23 b(')591
+2066 y(3)40 b(The)11 b(color)g(commands)g(cause)g(extraneous)g(vertical)g
+(space)h(to)f(be)g(inserted.)591 2185 y Fv(For)e(example,)j(this)e(can)h
+(happen)f(if)h(you)f(start)g(a)h(L)1414 2179 y(a)1428 2185
+y(T)1449 2200 y(E)1472 2185 y(X)f Fw(\\parbox)g Fv(or)g(a)g
+Fw(p{})f Fv(column)591 2245 y(with)17 b(a)h(color)g(command.)35
+b(The)19 b(solution)e(usually)h(is)g(to)g(precede)g(the)h(color)591
+2306 y(command)12 b(with)g Fw(\\leavevmode)p Fv(.)591 2460
+y Fw(4)40 b(The)11 b(color)g(commands)g(interfere)f(with)i(other)e(color)h
+(macros)h(I)f(use.)591 2580 y Fv(T)n(ry)19 b(putting)h(the)g(command)g
+Fs(\\altcolormode)f Fv(at)h(the)g(beginning)g(of)f(your)591
+2640 y(document.)e(This)11 b(may)g(or)g(may)g(not)g(help.)17
+b(Be)11 b(extra)g(careful)h(that)f(the)g(scope)g(of)591 2828
+y Fn(T)o(roubleshooting)1048 b(88)p eop
+%%Page: 89 19
+18 bop 591 50 a Fv(color)13 b(commands)g(does)f(not)h(extend)h(across)e
+(pages.)20 b(This)12 b(is)h(generally)h(a)f(less)591 110 y(robust)e(color)h
+(scheme.)591 269 y Fw(5)40 b(How)11 b(do)g(I)g(stop)f(\257oats)i(from)e
+(being)g(the)g(same)h(color)f(as)h(surrounding)d(material?)591
+390 y Fv(That')m(s)k(easy:)17 b(Just)12 b(put)f(an)h(explicit)i(color)e
+(command)g(at)g(the)h(beginning)f(of)f(the)591 450 y(\257oat,)g(e.g.,)h
+Fu(\\black)p Fv(.)591 609 y Fw(6)40 b(When)16 b(I)h(use)f(some)h(color)f
+(command)g(in)h(box)g(macros)f(or)g(with)i(\\setbox,)h(the)654
+670 y(colors)11 b(get)h(all)f(screwed)g(up.)591 791 y Fv(If)g
+Fw(\\mybox)i Fv(is)f(a)g(box)g(register)n(,)g(and)g(you)g(write)712
+922 y Fw(\\green)22 b(Ho)h(Hum.)712 982 y(\\setbox\\mybox=\\hbox{Foo)g(bar)f
+(\\blue)g(fee)h(fum})712 1042 y(Hi)h(Ho.)f(\\red)f(Diddley-dee)712
+1102 y(\\box\\mybox)i(hum)e(dee)g(do)591 1233 y Fv(then)17
+b(when)f Fw(\\mybox)i Fv(is)f(inserted,)h(the)f(current)h(color)f(is)g(red)g
+(and)f(so)h Fw(Foo)e(bar)591 1293 y Fv(comes)10 b(out)g(red)g(\(rather)g
+(than)h(green,)f(which)g(was)g(the)g(color)h(in)f(ef)o(fect)h(when)e(the)591
+1353 y(box)i(was)g(set\).)17 b(The)12 b(command)h(that)f(returns)g(from)f
+Fu(\\blue)h Fv(to)g(the)g(current)h(color)591 1414 y Fw(green)p
+Fv(,)f(when)i(the)g(box)f(is)h(set,)g(is)g(executed)h(after)f(the)g
+Fw(\\hbox)g Fv(is)g(closed,)g(which)591 1474 y(means)e(that)g
+Fw(Hi)g(Ho)g Fv(is)g(green,)g(but)g Fw(hum)f(dee)g(do)g Fv(is)h(still)h
+(blue.)591 1563 y(This)k(odd)g(behavior)g(is)h(due)f(to)g(the)h(fact)g(that)g
+(T)1431 1574 y(E)1455 1563 y(X)e(does)h(not)h(support)f(color)591
+1623 y(internally)m(,)11 b(the)g(way)f(it)h(supports)f(font)g(commands.)17
+b(The)11 b(\256rst)f(thing)g(to)h(do)f(is)h(to)591 1683 y(explicitly)i
+(bracket)g(any)g(color)f(commands)h(inside)f(the)h(box.)18
+b(Second,)12 b(be)g(sure)591 1744 y(that)h(the)h(current)g(color)f(is)g
+(black)h(when)e(setting)i(the)g(box.)20 b(Third,)14 b(make)g(other)591
+1804 y(explicit)g(color)e(changes)h(where)g(necessary)f(if)h(you)f(still)h
+(have)g(problems.)19 b(The)591 1864 y(color)10 b(scheme)h(invoked)f(by)g
+Fu(\\altcolormode)g Fv(is)g(slightly)h(better)g(behaved)g(if)f(you)591
+1924 y(follow)h(the)i(\256rst)e(two)h(rules.)591 2013 y(Note)k(that)g
+(various)g(box)g(macros)g(use)g Fw(\\setbox)h Fv(and)f(so)g(these)g
+(anomalies)h(can)591 2074 y(arise)12 b(unexpectedly)m(.)591
+2828 y Fn(T)o(roubleshooting)1048 b(89)p eop
+%%Page: 90 20
+19 bop 366 115 a Fo(Index)366 199 y Fw(\\AltClipMode)p Fv(,)12
+b(55,)g(78)366 259 y Fw(\\altcolormode)p Fv(,)f Fb(88)p Fv(,)g(89)366
+319 y Fw(angle)f Fv(\(parameter\),)j Fb(61)p Fv(,)f(62,)g(63,)g(72)366
+379 y Fw(angleA)f Fv(\(parameter\),)i(63\26165)366 440 y Fw(angleB)e
+Fv(\(parameter\),)i(63,)e(64)366 500 y Fw(\\Aput)p Fv(,)h Fb(68)366
+560 y Fw(\\aput)p Fv(,)f(67,)h Fb(68)p Fv(,)g(68)366 620 y
+Fw(arcangle)e Fv(\(parameter\),)j Fb(61)366 680 y Fw(arcangleA)d
+Fv(\(parameter\),)j(63)366 741 y Fw(arcangleB)d Fv(\(parameter\),)j(63)366
+801 y Fw(arcsep)e Fv(\(parameter\),)i Fb(13)366 861 y Fw(arcsepA)e
+Fv(\(parameter\),)i Fb(12)p Fv(,)f(12,)g(13)366 921 y Fw(arcsepB)f
+Fv(\(parameter\),)i Fb(12)p Fv(,)f(13)366 981 y Fw(arm)f Fv(\(parameter\),)i
+Fb(61)p Fv(,)f(63)366 1042 y Fw(armA)f Fv(\(parameter\),)i(63\26165)366
+1102 y Fw(armB)e Fv(\(parameter\),)i(63\26165)366 1162 y Fw(arrowinset)e
+Fv(\(parameter\),)i Fb(30)p Fv(,)f(30)366 1222 y Fw(arrowlength)e
+Fv(\(parameter\),)j Fb(30)p Fv(,)f(30)366 1282 y Fw(\\arrows)p
+Fv(,)f Fb(40)366 1342 y Fw(arrows)i Fv(\(parameter\),)j(9,)f(1)n(1,)g(19,)f
+(20,)h Fb(28)p Fv(,)532 1403 y(29,)c(48)366 1463 y Fw(arrowscale)g
+Fv(\(parameter\),)i Fb(30)p Fv(,)f(30)366 1523 y Fw(arrowsize)f
+Fv(\(parameter\),)i Fb(30)366 1583 y Fw(axesstyle)g Fv(\(parameter\),)g
+Fb(51)366 1685 y Fw(bbllx)e Fv(\(parameter\),)i Fb(80)366 1745
+y Fw(bblly)e Fv(\(parameter\),)i Fb(80)366 1805 y Fw(bburx)e
+Fv(\(parameter\),)i Fb(80)366 1866 y Fw(bbury)e Fv(\(parameter\),)i
+Fb(80)366 1926 y Fw(\\black)p Fv(,)f(89)366 1986 y Fw(\\blue)p
+Fv(,)f(89)366 2046 y Fw(border)f Fv(\(parameter\),)j Fb(25)p
+Fv(,)e(25,)h(33,)g(62)366 2106 y Fw(bordercolor)d Fv(\(parameter\),)k
+Fb(25)p Fv(,)f(25)366 2166 y Fw(boxsep)f Fv(\(parameter\),)i
+Fb(52)p Fv(,)f(53,)g(54)366 2227 y Fw(\\Bput)p Fv(,)g Fb(68)366
+2287 y Fw(\\bput)p Fv(,)f(67,)h Fb(68)p Fv(,)g(68)366 2347
+y Fw(bracketlength)f Fv(\(parameter\),)i Fb(30)366 2449 y Fw(\\Cartesian)p
+Fv(,)f Fb(72)p Fv(,)f(72)366 2509 y Fw(\\circlenode)p Fv(,)g
+Fb(60)366 2569 y Fw(\\clipbox)p Fv(,)h Fb(54)366 2629 y Fw(\\closedshadow)p
+Fv(,)g Fb(38)1230 199 y Fw(\\closepath)p Fv(,)g(34,)g Fb(36)p
+Fv(,)f(36)1230 259 y Fw(\\cnode)p Fv(,)g Fb(60)1230 319 y Fw(\\cnodeput)p
+Fv(,)g Fb(60)1230 379 y Fw(\\code)p Fv(,)h Fb(39)p Fv(,)f(40)1230
+440 y Fw(coilarm)g Fv(\(parameter\),)i Fb(70)p Fv(,)f(70,)g(71)1230
+500 y Fw(coilarmA)g Fv(\(parameter\),)h(70)1230 560 y Fw(coilarmB)f
+Fv(\(parameter\),)h(70)1230 620 y Fw(coilaspect)f Fv(\(parameter\),)h
+Fb(70)p Fv(,)f(70,)g(71)1230 680 y Fw(coilheight)f Fv(\(parameter\),)i
+Fb(70)p Fv(,)f(70)1230 741 y Fw(coilinc)g Fv(\(parameter\),)h
+Fb(70)p Fv(,)f(70)1230 801 y Fw(coilwidth)g Fv(\(parameter\),)h
+Fb(70)p Fv(,)f(70)1230 861 y Fw(\\coor)p Fv(,)g Fb(39)p Fv(,)f(40)1230
+921 y Fw(cornersize)g Fv(\(parameter\),)i Fb(10)p Fv(,)f(10,)g(54)1230
+981 y Fw(\\cput)p Fv(,)g Fb(53)p Fv(,)g(60)1230 1042 y Fw(curvature)f
+Fv(\(parameter\),)i Fb(14)1230 1102 y Fw(\\curveto)p Fv(,)f
+Fb(39)p Fv(,)g(39)1230 1203 y Fw(dash)f Fv(\(parameter\),)i
+Fb(25)1230 1264 y Fw(dashed)e Fv(\(parameter\),)i(33)1230 1324
+y Fw(\\dataplot)p Fv(,)e Fb(20)p Fv(,)h(20,)g(21)1230 1384
+y Fw(\\degrees)p Fv(,)f Fb(8)p Fv(,)g(8,)h(72)1230 1444 y Fw(\\dim)p
+Fv(,)g Fb(39)1230 1504 y Fw(dimen)f Fv(\(parameter\),)i Fb(26)1230
+1565 y Fw(\\DontKillGlue)p Fv(,)f Fb(42)1230 1625 y Fw(dotangle)e
+Fv(\(parameter\),)j Fb(16)p Fv(,)f(16)1230 1685 y Fw(dotscale)g
+Fv(\(parameter\),)h Fb(16)1230 1745 y Fw(dotsep)e Fv(\(parameter\),)i
+Fb(25)1230 1805 y Fw(dotsize)f Fv(\(parameter\),)h(16,)f Fb(30)1230
+1866 y Fw(dotstyle)h Fv(\(parameter\),)f Fb(16)p Fv(,)g(16)1230
+1926 y Fw(dotted)f Fv(\(parameter\),)i(33)1230 1986 y Fw(doublecolor)d
+Fv(\(parameter\),)j(25,)f Fb(26)1230 2046 y Fw(doubleline)e
+Fv(\(parameter\),)j Fb(25)p Fv(,)f(25,)f(26,)h(33)1230 2106
+y Fw(doublesep)e Fv(\(parameter\),)j Fb(25)p Fv(,)f(25)1230
+2166 y Fw(Dx)h Fv(\(parameter\),)g Fb(49)p Fv(,)e(49)1230 2227
+y Fw(dx)h Fv(\(parameter\),)h Fb(49)p Fv(,)f(49)1230 2287 y
+Fw(Dy)h Fv(\(parameter\),)g Fb(49)p Fv(,)e(49)1230 2347 y Fw(dy)h
+Fv(\(parameter\),)h(49)1230 2449 y Fw(\\endoverlaybox)p Fv(,)e
+Fb(73)1230 2509 y Fw(\\endpscharclip)p Fv(,)g Fb(78)p Fv(,)h(78)1230
+2569 y Fw(\\endpsclip)p Fv(,)g Fb(54)p Fv(,)f(54,)h(55,)g(78)1230
+2629 y Fw(\\endpspicture)p Fv(,)f Fb(41)1133 2828 y Fv(90)p
+eop
+%%Page: 91 21
+20 bop 366 50 a Fw(\\endT)-5 b(eXtoEPS)p Fv(,)12 b Fb(79)366
+110 y Fw(\\everypsbox)p Fv(,)g Fb(83)366 212 y Fw(\\\256le)p
+Fv(,)g Fb(40)366 272 y Fw(\\\256leplot)p Fv(,)g Fb(20)p Fv(,)g(20)366
+332 y Fw(\\\256ll)p Fv(,)g(33,)g Fb(37)366 392 y Fw(\256llcolor)g
+Fv(\(parameter\),)h(9,)e Fb(27)p Fv(,)h(28,)g(52)366 452 y
+Fw(\256llstyle)j Fv(\(parameter\),)h(9,)e Fb(27)p Fv(,)g(28,)g(32,)h(33,)532
+513 y(51,)c(74,)h(77)366 573 y Fw(framearc)f Fv(\(parameter\),)i
+Fb(10)p Fv(,)e(10)366 633 y Fw(\\framenode)p Fv(,)f(60)366
+693 y Fw(framesep)h Fv(\(parameter\),)i Fb(52)366 795 y Fw(gradangle)c
+Fv(\(parameter\),)k Fb(75)366 855 y Fw(gradbegin)c Fv(\(parameter\),)k
+Fb(74)p Fv(,)f(75)366 915 y Fw(gradend)d Fv(\(parameter\),)k
+Fb(74)p Fv(,)f(75)366 976 y Fw(gradlines)e Fv(\(parameter\),)j
+Fb(75)366 1036 y Fw(gradmidpoint)d Fv(\(parameter\),)j Fb(75)366
+1096 y Fw(\\gray)p Fv(,)e(4)366 1156 y Fw(\\grestore)p Fv(,)g
+Fb(37)p Fv(,)g(37,)h(38)366 1216 y Fw(gridcolor)e Fv(\(parameter\),)j
+Fb(18)366 1276 y Fw(griddots)e Fv(\(parameter\),)i Fb(18)p
+Fv(,)e(18)366 1337 y Fw(gridlabelcolor)e Fv(\(parameter\),)k
+Fb(18)366 1397 y Fw(gridlabels)d Fv(\(parameter\),)j Fb(18)366
+1457 y Fw(gridwidth)e Fv(\(parameter\),)i Fb(18)366 1517 y
+Fw(\\gsave)p Fv(,)f Fb(37)p Fv(,)g(37,)f(38)366 1619 y Fw(hatchangle)f
+Fv(\(parameter\),)j Fb(27)p Fv(,)f(27)366 1679 y Fw(hatchcolor)f
+Fv(\(parameter\),)i Fb(27)366 1739 y Fw(hatchsep)e Fv(\(parameter\),)i
+Fb(27)366 1800 y Fw(hatchwidth)f Fv(\(parameter\),)h Fb(27)366
+1860 y Fw(header\256le)d Fv(\(parameter\),)j Fb(81)p Fv(,)f(81)366
+1920 y Fw(headers)e Fv(\(parameter\),)j Fb(81)p Fv(,)f(81)366
+2022 y Fw(\\KillGlue)p Fv(,)g Fb(42)366 2123 y Fw(labels)f
+Fv(\(parameter\),)i Fb(50)366 2183 y Fw(labelsep)e Fv(\(parameter\),)i
+Fb(44)p Fv(,)e(50)366 2244 y Fw(liftpen)g Fv(\(parameter\),)i
+Fb(35)p Fv(,)f(35,)g(37)366 2304 y Fw(linearc)d Fv(\(parameter\),)j
+Fb(10)p Fv(,)e(10,)h(19\26121,)f(54,)532 2364 y(63,)h(64,)h(71)366
+2424 y Fw(linecolor)j Fv(\(parameter\),)k Fb(8)p Fv(,)e(8,)h(9,)f(24,)h(28,)
+532 2484 y(32,)11 b(33,)h(52)366 2545 y Fw(linestyle)18 b Fv(\(parameter\),)j
+Fb(24)p Fv(,)f(25,)f(28,)h(32,)532 2605 y(33,)11 b(51,)h(55,)g(76,)g(77)1230
+50 y Fw(\\lineto)p Fv(,)g Fb(39)p Fv(,)f(39)1230 110 y Fw(linetype)h
+Fv(\(parameter\),)g Fb(33)p Fv(,)g(33)1230 170 y Fw(linewidth)g
+Fv(\(parameter\),)i Fb(8)p Fv(,)e(8,)h(1)n(1,)g(16,)f(24,)1396
+230 y(28\26130,)f(32,)h(33)1230 291 y Fw(\\listplot)p Fv(,)h(20,)f
+Fb(21)p Fv(,)f(21)1230 351 y Fw(loopsize)h Fv(\(parameter\),)h
+Fb(62)p Fv(,)e(65)1230 411 y Fw(\\Lput)p Fv(,)h Fb(67)p Fv(,)f(67)1230
+471 y Fw(\\lput)p Fv(,)h(62,)g Fb(67)p Fv(,)f(67,)h(68)1230
+572 y Fw(\\movepath)p Fv(,)f Fb(38)1230 632 y Fw(\\moveto)p
+Fv(,)h Fb(36)p Fv(,)g(36)1230 693 y Fw(\\Mput)p Fv(,)g Fb(67)p
+Fv(,)g(67)1230 753 y Fw(\\mput)p Fv(,)g Fb(68)1230 813 y Fw(\\mrestore)p
+Fv(,)f Fb(38)p Fv(,)h(38)1230 873 y Fw(\\msave)p Fv(,)g Fb(38)p
+Fv(,)g(38)1230 933 y Fw(\\multido)p Fv(,)g(47,)f(51)1230 993
+y Fw(\\multips)p Fv(,)h Fb(46)p Fv(,)g(46,)g(51)1230 1054 y
+Fw(\\multirput)p Fv(,)g Fb(46)p Fv(,)f(46)1230 1155 y Fw(\\ncangle)p
+Fv(,)g Fb(64)p Fv(,)h(64,)g(66)1230 1215 y Fw(\\ncangles)p
+Fv(,)g Fb(64)p Fv(,)f(64)1230 1275 y Fw(\\ncarc)p Fv(,)h(61,)g
+Fb(63)p Fv(,)f(63,)h(65,)g(66)1230 1335 y Fw(\\ncbar)p Fv(,)f
+Fb(63)p Fv(,)h(65,)g(66)1230 1395 y Fw(\\nccircle)p Fv(,)h
+Fb(65)p Fv(,)e(65,)h(66)1230 1456 y Fw(\\nccoil)p Fv(,)h Fb(71)1230
+1516 y Fw(\\nccurve)p Fv(,)f(61,)g Fb(62)p Fv(,)g(63,)f(65,)h(66)1230
+1576 y Fw(\\ncdiag)p Fv(,)f Fb(63)p Fv(,)h(64\26166)1230 1636
+y Fw(\\ncdiagg)p Fv(,)f Fb(64)p Fv(,)h(66)1230 1696 y Fw(\\ncLine)p
+Fv(,)f Fb(62)p Fv(,)h(65,)g(68)1230 1757 y Fw(\\ncline)p Fv(,)g
+Fb(62)p Fv(,)g(62,)f(65,)h(66,)g(68,)f(69,)h(71)1230 1817 y
+Fw(\\ncloop)p Fv(,)f(62,)h Fb(65)p Fv(,)g(66)1230 1877 y Fw(ncurv)g
+Fv(\(parameter\),)h Fb(61)p Fv(,)e(62,)h(63)1230 1937 y Fw(\\nczigzag)p
+Fv(,)g Fb(71)1230 1997 y Fw(\\newcmykcolor)p Fv(,)h Fb(5)1230
+2057 y Fw(\\newgray)p Fv(,)e Fb(5)1230 2118 y Fw(\\newhsbcolor)p
+Fv(,)g Fb(5)1230 2178 y Fw(\\newpath)p Fv(,)g Fb(36)1230 2238
+y Fw(\\newpsobject)p Fv(,)h Fb(31)p Fv(,)g(31,)g(54)1230 2298
+y Fw(\\newpsstyle)p Fv(,)h Fb(31)p Fv(,)f(31)1230 2358 y Fw(\\newrgbcolor)p
+Fv(,)f Fb(5)1230 2419 y Fw(nodesep)f Fv(\(parameter\),)j Fb(61)p
+Fv(,)f(62\26164,)g(72)1230 2479 y Fw(nodesepA)f Fv(\(parameter\),)i(65)1230
+2539 y Fw(\\NormalCoor)p Fv(,)e Fb(73)1230 2640 y Fw(of)o(fset)i
+Fv(\(parameter\),)g Fb(61)p Fv(,)f(62\26164,)f(67,)h(72)366
+2828 y Fn(INDEX)1427 b(91)p eop
+%%Page: 92 22
+21 bop 366 50 a Fw(\\openshadow)p Fv(,)10 b Fb(38)366 110 y
+Fw(origin)g Fv(\(parameter\),)j Fb(24)p Fv(,)f(33)366 170 y
+Fw(\\ovalnode)p Fv(,)f Fb(60)366 230 y Fw(\\overlaybox)p Fv(,)g
+Fb(73)366 291 y Fw(Ox)h Fv(\(parameter\),)h Fb(49)p Fv(,)e(49,)h(50)366
+351 y Fw(Oy)g Fv(\(parameter\),)h Fb(49)p Fv(,)e(49,)h(50)366
+411 y Fw(oy)g Fv(\(parameter\),)h Fb(49)p Fv(,)e(49)366 513
+y Fw(\\parabola)p Fv(,)f Fb(14)p Fv(,)h(14)366 573 y(parameters:)449
+633 y Fw(Dx)p Fv(,)h Fb(49)p Fv(,)g(49)449 693 y Fw(Dy)p Fv(,)g
+Fb(49)p Fv(,)g(49)449 753 y Fw(Ox)p Fv(,)g Fb(49)p Fv(,)f(49,)h(50)449
+814 y Fw(Oy)p Fv(,)g Fb(49)p Fv(,)f(49,)h(50)449 874 y Fw(angleA)p
+Fv(,)f(63\26165)449 934 y Fw(angleB)p Fv(,)g(63,)g(64)449 994
+y Fw(angle)p Fv(,)f Fb(61)p Fv(,)i(62,)g(63,)g(72)449 1054
+y Fw(arcangleA)p Fv(,)e(63)449 1115 y Fw(arcangleB)p Fv(,)g(63)449
+1175 y Fw(arcangle)p Fv(,)g Fb(61)449 1235 y Fw(arcsepA)p Fv(,)h
+Fb(12)p Fv(,)h(12,)g(13)449 1295 y Fw(arcsepB)p Fv(,)f Fb(12)p
+Fv(,)h(13)449 1355 y Fw(arcsep)p Fv(,)f Fb(13)449 1416 y Fw(armA)p
+Fv(,)g(63\26165)449 1476 y Fw(armB)p Fv(,)g(63\26165)449 1536
+y Fw(arm)p Fv(,)g Fb(61)p Fv(,)h(63)449 1596 y Fw(arrowinset)p
+Fv(,)f Fb(30)p Fv(,)h(30)449 1656 y Fw(arrowlength)p Fv(,)e
+Fb(30)p Fv(,)i(30)449 1716 y Fw(arrowscale)p Fv(,)f Fb(30)p
+Fv(,)h(30)449 1777 y Fw(arrowsize)p Fv(,)f Fb(30)449 1837 y
+Fw(arrows)p Fv(,)g(9,)h(1)n(1,)g(19,)g(20,)f Fb(28)p Fv(,)h(29,)g(48)449
+1897 y Fw(axesstyle)p Fv(,)h Fb(51)449 1957 y Fw(bbllx)p Fv(,)e
+Fb(80)449 2017 y Fw(bblly)p Fv(,)g Fb(80)449 2078 y Fw(bburx)p
+Fv(,)g Fb(80)449 2138 y Fw(bbury)p Fv(,)g Fb(80)449 2198 y
+Fw(bordercolor)p Fv(,)e Fb(25)p Fv(,)j(25)449 2258 y Fw(border)p
+Fv(,)e Fb(25)p Fv(,)h(25,)h(33,)g(62)449 2318 y Fw(boxsep)p
+Fv(,)f Fb(52)p Fv(,)h(53,)g(54)449 2379 y Fw(bracketlength)p
+Fv(,)f Fb(30)449 2439 y Fw(coilarmA)p Fv(,)g(70)449 2499 y
+Fw(coilarmB)p Fv(,)g(70)449 2559 y Fw(coilarm)p Fv(,)g Fb(70)p
+Fv(,)h(70,)g(71)449 2619 y Fw(coilaspect)p Fv(,)g Fb(70)p Fv(,)g(70,)g(71)
+1313 50 y Fw(coilheight)p Fv(,)f Fb(70)p Fv(,)h(70)1313 110
+y Fw(coilinc)p Fv(,)g Fb(70)p Fv(,)g(70)1313 170 y Fw(coilwidth)p
+Fv(,)g Fb(70)p Fv(,)g(70)1313 230 y Fw(cornersize)p Fv(,)f
+Fb(10)p Fv(,)h(10,)g(54)1313 291 y Fw(curvature)p Fv(,)f Fb(14)1313
+351 y Fw(dashed)p Fv(,)g(33)1313 411 y Fw(dash)p Fv(,)g Fb(25)1313
+471 y Fw(dimen)p Fv(,)g Fb(26)1313 531 y Fw(dotangle)p Fv(,)f
+Fb(16)p Fv(,)i(16)1313 592 y Fw(dotscale)p Fv(,)g Fb(16)1313
+652 y Fw(dotsep)p Fv(,)f Fb(25)1313 712 y Fw(dotsize)p Fv(,)h(16,)g
+Fb(30)1313 772 y Fw(dotstyle)p Fv(,)h Fb(16)p Fv(,)e(16)1313
+832 y Fw(dotted)p Fv(,)g(33)1313 892 y Fw(doublecolor)p Fv(,)f(25,)i
+Fb(26)1313 953 y Fw(doubleline)p Fv(,)e Fb(25)p Fv(,)i(25,)f(26,)h(33)1313
+1013 y Fw(doublesep)p Fv(,)e Fb(25)p Fv(,)i(25)1313 1073 y
+Fw(dx)p Fv(,)g Fb(49)p Fv(,)g(49)1313 1133 y Fw(dy)p Fv(,)g(49)1313
+1193 y Fw(\256llcolor)p Fv(,)g(9,)g Fb(27)p Fv(,)f(28,)h(52)1313
+1254 y Fw(\256llstyle)p Fv(,)17 b(9,)e Fb(27)p Fv(,)g(28,)g(32,)g(33,)g(51,)g
+(74,)1396 1314 y(77)1313 1374 y Fw(framearc)p Fv(,)c Fb(10)p
+Fv(,)h(10)1313 1434 y Fw(framesep)p Fv(,)f Fb(52)1313 1494
+y Fw(gradangle)p Fv(,)e Fb(75)1313 1555 y Fw(gradbegin)p Fv(,)g
+Fb(74)p Fv(,)j(75)1313 1615 y Fw(gradend)p Fv(,)e Fb(74)p Fv(,)h(75)1313
+1675 y Fw(gradlines)p Fv(,)f Fb(75)1313 1735 y Fw(gradmidpoint)p
+Fv(,)g Fb(75)1313 1795 y Fw(gridcolor)p Fv(,)g Fb(18)1313 1856
+y Fw(griddots)p Fv(,)h Fb(18)p Fv(,)h(18)1313 1916 y Fw(gridlabelcolor)p
+Fv(,)e Fb(18)1313 1976 y Fw(gridlabels)p Fv(,)h Fb(18)1313
+2036 y Fw(gridwidth)p Fv(,)g Fb(18)1313 2096 y Fw(hatchangle)p
+Fv(,)g Fb(27)p Fv(,)g(27)1313 2156 y Fw(hatchcolor)p Fv(,)g
+Fb(27)1313 2217 y Fw(hatchsep)p Fv(,)h Fb(27)1313 2277 y Fw(hatchwidth)p
+Fv(,)g Fb(27)1313 2337 y Fw(header\256le)p Fv(,)e Fb(81)p Fv(,)i(81)1313
+2397 y Fw(headers)p Fv(,)e Fb(81)p Fv(,)i(81)1313 2457 y Fw(labelsep)p
+Fv(,)f Fb(44)p Fv(,)h(50)1313 2518 y Fw(labels)p Fv(,)f Fb(50)1313
+2578 y Fw(liftpen)p Fv(,)h Fb(35)p Fv(,)f(35,)h(37)366 2828
+y Fn(INDEX)1427 b(92)p eop
+%%Page: 93 23
+22 bop 449 50 a Fw(linearc)p Fv(,)11 b Fb(10)p Fv(,)h(10,)g(19\26121,)g(54,)g
+(63,)g(64,)532 110 y(71)449 170 y Fw(linecolor)p Fv(,)k Fb(8)p
+Fv(,)i(8,)g(9,)g(24,)f(28,)h(32,)g(33,)532 230 y(52)449 291
+y Fw(linestyle)p Fv(,)i Fb(24)p Fv(,)f(25,)h(28,)f(32,)g(33,)h(51,)532
+351 y(55,)11 b(76,)h(77)449 411 y Fw(linetype)p Fv(,)f Fb(33)p
+Fv(,)h(33)449 471 y Fw(linewidth)p Fv(,)h Fb(8)p Fv(,)h(8,)g(1)n(1,)g(16,)g
+(24,)g(28\26130,)532 531 y(32,)d(33)449 592 y Fw(loopsize)p
+Fv(,)g Fb(62)p Fv(,)h(65)449 652 y Fw(ncurv)p Fv(,)f Fb(61)p
+Fv(,)h(62,)g(63)449 712 y Fw(nodesepA)p Fv(,)e(65)449 772 y
+Fw(nodesep)p Fv(,)g Fb(61)p Fv(,)i(62\26164,)f(72)449 832 y
+Fw(of)o(fset)p Fv(,)i Fb(61)p Fv(,)e(62\26164,)h(67,)g(72)449
+892 y Fw(origin)p Fv(,)e Fb(24)p Fv(,)i(33)449 953 y Fw(oy)p
+Fv(,)g Fb(49)p Fv(,)f(49)449 1013 y Fw(plotpoints)p Fv(,)g
+Fb(22)p Fv(,)h(22)449 1073 y Fw(plotstyle)p Fv(,)g Fb(19)p
+Fv(,)g(19,)g(34)449 1133 y Fw(pspicture)p Fv(,)f(41)449 1193
+y Fw(rbracketlength)p Fv(,)f Fb(30)449 1254 y Fw(rectarc)p
+Fv(,)h(54)449 1314 y Fw(runit)p Fv(,)g Fb(7)p Fv(,)h(8)449
+1374 y Fw(shadowangle)p Fv(,)e Fb(26)p Fv(,)i(26)449 1434 y
+Fw(shadowcolor)p Fv(,)f Fb(26)p Fv(,)g(26)449 1494 y Fw(shadowsize)p
+Fv(,)h Fb(26)p Fv(,)g(26,)f(53)449 1555 y Fw(shadow)p Fv(,)g
+Fb(26)p Fv(,)h(26,)g(33)449 1615 y Fw(showorigin)p Fv(,)f Fb(50)449
+1675 y Fw(showpoints)p Fv(,)k Fb(9)p Fv(,)g(12,)g(14\26116,)g(19\26121,)532
+1735 y(33)449 1795 y Fw(style)p Fv(,)d(31)449 1856 y Fw(subgridcolor)p
+Fv(,)e Fb(18)449 1916 y Fw(subgriddiv)p Fv(,)h Fb(18)449 1976
+y Fw(subgriddots)p Fv(,)g Fb(18)449 2036 y Fw(subgridwidth)p
+Fv(,)g Fb(18)449 2096 y Fw(swapaxes)p Fv(,)h Fb(24)p Fv(,)g(33)449
+2156 y Fw(tbarsize)p Fv(,)f(16,)h Fb(30)449 2217 y Fw(ticksize)p
+Fv(,)h Fb(50)449 2277 y Fw(tickstyle)p Fv(,)h Fb(50)p Fv(,)d(50)449
+2337 y Fw(ticks)p Fv(,)i Fb(50)449 2397 y Fw(unit)p Fv(,)e
+Fb(7)p Fv(,)h(7,)g(19,)g(72)449 2457 y Fw(xunit)p Fv(,)g Fb(7)p
+Fv(,)g(8,)f(17,)h(18,)g(72)449 2518 y Fw(yunit)p Fv(,)g Fb(7)p
+Fv(,)g(7,)f(8,)h(17,)g(18,)g(72)366 2578 y Fw(\\parametricplot)p
+Fv(,)f Fb(22)p Fv(,)g(22,)h(23)366 2638 y Fw(\\pcangle)p Fv(,)f
+Fb(66)1230 50 y Fw(\\pcarc)p Fv(,)h Fb(65)1230 110 y Fw(\\pcbar)p
+Fv(,)f Fb(65)1230 170 y Fw(\\pccoil)p Fv(,)i Fb(71)1230 230
+y Fw(\\pccurve)p Fv(,)f(61,)g Fb(65)1230 291 y Fw(\\pcdiag)p
+Fv(,)f Fb(65)1230 351 y Fw(\\pcline)p Fv(,)h Fb(65)p Fv(,)g(67,)f(71)1230
+411 y Fw(\\pcloop)p Fv(,)g(62,)h Fb(66)1230 471 y Fw(\\pczigzag)p
+Fv(,)g Fb(71)1230 531 y Fw(\\plot\256le)p Fv(,)g(20)1230 592
+y Fw(plotpoints)g Fv(\(parameter\),)h Fb(22)p Fv(,)e(22)1230
+652 y Fw(plotstyle)i Fv(\(parameter\),)g Fb(19)p Fv(,)e(19,)h(34)1230
+712 y Fw(\\pnode)p Fv(,)f Fb(60)1230 772 y Fw(\\Polar)p Fv(,)g
+Fb(72)p Fv(,)h(72)1230 832 y Fw(\\psaddtolength)p Fv(,)f Fb(7)1230
+892 y Fw(\\psarc)p Fv(,)h Fb(12)p Fv(,)g(12,)f(13,)h(61)1230
+953 y Fw(\\psarcn)p Fv(,)g Fb(13)p Fv(,)f(13)1230 1013 y Fw(\\psaxes)p
+Fv(,)h(17,)g Fb(48)p Fv(,)g(49\26151)1230 1073 y Fw(\\psbezier)p
+Fv(,)f Fb(13)p Fv(,)h(13,)g(34,)g(35)1230 1133 y Fw(\\psborder)p
+Fv(,)e(25)1230 1193 y Fw(\\psccurve)p Fv(,)j Fb(15)p Fv(,)e(19)1230
+1254 y Fw(\\pscharclip)p Fv(,)h Fb(78)p Fv(,)g(78)1230 1314
+y Fw(\\pscharpath)p Fv(,)f Fb(77)p Fv(,)h(78)1230 1374 y Fw(\\pscircle)p
+Fv(,)h Fb(1)m(1)p Fv(,)f(26)1230 1434 y Fw(\\pscircle*)p Fv(,)g(1)n(1)1230
+1494 y Fw(\\pscirclebox)p Fv(,)g(52,)g Fb(53)p Fv(,)g(53,)g(60)1230
+1555 y Fw(\\psclip)p Fv(,)h Fb(54)p Fv(,)e(54,)h(55,)g(78)1230
+1615 y Fw(\\psCoil)p Fv(,)h Fb(70)p Fv(,)e(70,)h(71)1230 1675
+y Fw(\\pscoil)p Fv(,)h Fb(70)p Fv(,)e(70,)h(71)1230 1735 y
+Fw(\\pscurve)p Fv(,)g Fb(15)p Fv(,)g(15,)g(19,)f(34,)h(37)1230
+1795 y Fw(\\pscustom)p Fv(,)k(13,)f Fb(32)p Fv(,)g(32\26134,)f(36,)h(37,)g
+(39,)1396 1856 y(46,)d(54,)f(61)1230 1916 y Fw(\\psdblframebox)p
+Fv(,)g Fb(53)p Fv(,)h(60)1230 1976 y Fw(\\psdots)p Fv(,)g Fb(15)p
+Fv(,)g(19,)g(34)1230 2036 y Fw(\\psecurve)p Fv(,)g Fb(15)p
+Fv(,)g(19)1230 2096 y Fw(\\psellipse)p Fv(,)g Fb(12)p Fv(,)g(26)1230
+2156 y Fw(\\ps\256ll)p Fv(,)h(32)1230 2217 y Fw(\\psframe)p
+Fv(,)f(9,)f(10,)h Fb(1)m(1)p Fv(,)g(1)n(1,)g(26,)g(51,)g(52)1230
+2277 y Fw(\\psframebox)p Fv(,)f Fb(52)p Fv(,)h(52\26154,)g(60)1230
+2337 y Fw(\\psgrid)p Fv(,)f Fb(17)p Fv(,)h(17\26119,)g(34,)f(48,)h(78,)g(79)
+1230 2397 y Fw(\\pshatchcolor)p Fv(,)g(27)1230 2457 y Fw(\\pslabelsep)p
+Fv(,)f Fb(44)p Fv(,)h(50,)g(68)1230 2518 y Fw(\\pslbrace)p
+Fv(,)f Fb(87)1230 2578 y Fw(\\psline)p Fv(,)17 b(7,)g Fb(10)p
+Fv(,)g(10,)f(1)n(1,)i(19,)e(22,)h(31,)g(34,)1396 2638 y(51,)12
+b(65,)f(86)366 2828 y Fn(INDEX)1427 b(93)p eop
+%%Page: 94 24
+23 bop 366 50 a Fw(\\pslinecolor)p Fv(,)11 b(8)366 110 y Fw(\\pslinewidth)p
+Fv(,)h(8)366 170 y Fw(\\pslongbox)p Fv(,)f Fb(83)p Fv(,)h(84)366
+230 y Fw(\\psmathboxfalse)p Fv(,)g Fb(83)366 291 y Fw(\\psmathboxtrue)p
+Fv(,)f Fb(83)366 351 y Fw(\\psovalbox)p Fv(,)h(52,)f Fb(54)p
+Fv(,)h(60)366 411 y Fw(\\psoverlay)p Fv(,)g Fb(73)p Fv(,)f(74)366
+471 y Fw(\\pspicture)p Fv(,)h(17,)f Fb(41)p Fv(,)h(41,)g(42,)f(54,)h(78)366
+531 y Fw(pspicture)f Fv(\(parameter\),)i(41)366 592 y Fw(\\psplot)p
+Fv(,)f Fb(21)p Fv(,)g(21\26123)366 652 y Fw(\\pspolygon)p Fv(,)f(10,)h
+Fb(1)m(1)p Fv(,)g(19,)g(28)366 712 y Fw(\\psrbrace)p Fv(,)f
+Fb(87)366 772 y Fw(\\psrunit)p Fv(,)g(8)366 832 y Fw(\\psset)p
+Fv(,)h(5,)g Fb(6)p Fv(,)g(6,)g(1)n(1,)g(41)366 892 y Fw(\\pssetlength)p
+Fv(,)g Fb(7)366 953 y Fw(\\psshadowbox)p Fv(,)g Fb(53)p Fv(,)f(60)366
+1013 y Fw(\\pstextpath)p Fv(,)h Fb(76)p Fv(,)g(76,)g(77)366
+1073 y Fw(\\pstheader)p Fv(,)e(76)366 1133 y Fw(\\PST)n(ricksEPS)p
+Fv(,)k(79,)e(80)366 1193 y Fw(\\PST)n(ricksOf)o(f)p Fv(,)i
+Fb(85)366 1254 y Fw(\\pstroke)p Fv(,)e(32)366 1314 y Fw(\\pstrotate)p
+Fv(,)g(46)366 1374 y Fw(\\PSTtoEPS)p Fv(,)h(20,)f Fb(80)p Fv(,)g(80)366
+1434 y Fw(\\pstunit)p Fv(,)g(32)366 1494 y Fw(\\pstV)n(erb)p
+Fv(,)f(5,)h(42,)g(46,)g(55,)f(69,)h(74)366 1555 y Fw(\\pstverb)p
+Fv(,)g(32)366 1615 y Fw(\\pstverbscale)p Fv(,)g(42,)g(55,)g(69,)f(74)366
+1675 y Fw(\\psunit)p Fv(,)h(8,)g(77)366 1735 y Fw(\\psverbboxfalse)p
+Fv(,)g Fb(84)366 1795 y Fw(\\psverbboxtrue)p Fv(,)f(4,)g Fb(84)p
+Fv(,)h(85)366 1856 y Fw(\\pswedge)p Fv(,)f Fb(12)p Fv(,)h(26)366
+1916 y Fw(\\psxlabel)p Fv(,)g Fb(51)366 1976 y Fw(\\psxunit)p
+Fv(,)g(8,)g(19)366 2036 y Fw(\\psylabel)p Fv(,)g Fb(51)366
+2096 y Fw(\\psyunit)p Fv(,)g(8,)g(19)366 2156 y Fw(\\pszigzag)p
+Fv(,)g Fb(70)p Fv(,)g(70,)f(71)366 2217 y Fw(\\putoverlaybox)p
+Fv(,)g Fb(74)366 2318 y Fw(\\qdisk)p Fv(,)h Fb(1)m(1)p Fv(,)g(34)366
+2379 y Fw(\\qline)p Fv(,)f Fb(10)p Fv(,)h(34)366 2480 y Fw(\\radians)p
+Fv(,)f Fb(8)366 2540 y Fw(rbracketlength)f Fv(\(parameter\),)j
+Fb(30)366 2601 y Fw(\\rcoor)p Fv(,)e Fb(40)1230 50 y Fw(\\rcurveto)p
+Fv(,)h Fb(39)1230 110 y Fw(\\readdata)p Fv(,)e Fb(20)p Fv(,)i(20,)g(21)1230
+170 y Fw(rectarc)g Fv(\(parameter\),)h(54)1230 230 y Fw(\\red)p
+Fv(,)e(4)1230 291 y Fw(\\rlineto)p Fv(,)g Fb(39)1230 351 y
+Fw(\\Rnode)p Fv(,)g Fb(59)p Fv(,)h(60,)g(68)1230 411 y Fw(\\rnode)p
+Fv(,)f Fb(59)p Fv(,)g(59,)h(60,)g(68,)f(69)1230 471 y Fw(\\RnodeRef)p
+Fv(,)h Fb(59)p Fv(,)g(60)1230 531 y Fw(\\rotate)p Fv(,)g Fb(38)1230
+592 y Fw(\\Rotatedown)p Fv(,)g(56)1230 652 y Fw(\\rotatedown)p
+Fv(,)f Fb(56)1230 712 y Fw(\\rotateleft)p Fv(,)h Fb(55)1230
+772 y Fw(\\rotateright)p Fv(,)f Fb(55)1230 832 y Fw(\\Rput)p
+Fv(,)h Fb(45)p Fv(,)g(45,)g(67)1230 892 y Fw(\\rput)p Fv(,)19
+b(41,)g Fb(43)p Fv(,)g(43\26146,)g(53,)g(58,)g(67,)g(71,)1396
+953 y(78,)12 b(80)1230 1013 y Fw(runit)f Fv(\(parameter\),)i
+Fb(7)p Fv(,)f(8)1230 1115 y Fw(\\savedata)p Fv(,)g Fb(20)p
+Fv(,)g(20)1230 1175 y Fw(\\scale)p Fv(,)g Fb(38)1230 1235 y
+Fw(\\scalebox)p Fv(,)g Fb(56)1230 1295 y Fw(\\scaleboxto)p
+Fv(,)g Fb(56)1230 1355 y Fw(\\setcolor)p Fv(,)g Fb(40)1230
+1416 y Fw(shadow)g Fv(\(parameter\),)g Fb(26)p Fv(,)g(26,)g(33)1230
+1476 y Fw(shadowangle)e Fv(\(parameter\),)j Fb(26)p Fv(,)f(26)1230
+1536 y Fw(shadowcolor)f Fv(\(parameter\),)i Fb(26)p Fv(,)f(26)1230
+1596 y Fw(shadowsize)g Fv(\(parameter\),)h Fb(26)p Fv(,)f(26,)g(53)1230
+1656 y Fw(showorigin)f Fv(\(parameter\),)i Fb(50)1230 1716
+y Fw(showpoints)g Fv(\(parameter\),)h Fb(9)p Fv(,)f(12,)g(14\26116,)1396
+1777 y(19\26121,)e(33)1230 1837 y Fw(\\SpecialCoor)p Fv(,)h(7,)f(8,)h
+Fb(72)p Fv(,)g(72,)g(73)1230 1897 y Fw(\\stroke)p Fv(,)g(33,)g
+Fb(36)1230 1957 y Fw(style)h Fv(\(parameter\),)g(31)1230 2017
+y Fw(subgridcolor)d Fv(\(parameter\),)j Fb(18)1230 2078 y Fw(subgriddiv)e
+Fv(\(parameter\),)i Fb(18)1230 2138 y Fw(subgriddots)e Fv(\(parameter\),)i
+Fb(18)1230 2198 y Fw(subgridwidth)e Fv(\(parameter\),)i Fb(18)1230
+2258 y Fw(\\swapaxes)p Fv(,)g Fb(38)1230 2318 y Fw(swapaxes)f
+Fv(\(parameter\),)h Fb(24)p Fv(,)f(33)1230 2420 y Fw(tbarsize)g
+Fv(\(parameter\),)h(16,)e Fb(30)1230 2480 y Fw(\\T)-5 b(eXtoEPS)p
+Fv(,)13 b Fb(79)1230 2540 y Fw(ticks)g Fv(\(parameter\),)g
+Fb(50)1230 2601 y Fw(ticksize)h Fv(\(parameter\),)f Fb(50)366
+2828 y Fn(INDEX)1427 b(94)p eop
+%%Page: 95 25
+24 bop 366 50 a Fw(tickstyle)14 b Fv(\(parameter\),)f Fb(50)p
+Fv(,)e(50)366 110 y Fw(\\TPof)o(fset)p Fv(,)i(77)366 170 y
+Fw(\\translate)p Fv(,)e Fb(38)366 272 y Fw(unit)g Fv(\(parameter\),)i
+Fb(7)p Fv(,)f(7,)g(19,)g(72)366 332 y Fw(\\uput)p Fv(,)f Fb(44)p
+Fv(,)h(44,)g(45,)g(68)366 434 y Fw(xunit)g Fv(\(parameter\),)h
+Fb(7)p Fv(,)f(8,)f(17,)h(18,)g(72)366 535 y Fw(yunit)g Fv(\(parameter\),)h
+Fb(7)p Fv(,)f(7,)f(8,)h(17,)g(18,)g(72)366 2828 y Fn(INDEX)1427
+b(95)p eop
+%%Trailer
+end
+userdict /end-hook known{end-hook}if
+%%EOF
diff --git a/obsolete/graphics/pstricks/doc/src/changes.tex b/obsolete/graphics/pstricks/doc/src/changes.tex
new file mode 100644
index 0000000000..ceb73d350a
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/changes.tex
@@ -0,0 +1,147 @@
+%% BEGIN changes.tex
+%%
+%% Changes listing for PSTricks.
+%% Run with LaTeX, with or without the NFSS.
+%%
+%% Change these for a4 paper:
+\def\paperwidth{8.5in}
+\def\paperheight{11in}
+
+\def\FileVersion{0.94-Beta}
+\def\FileDate{April 16, 1993}
+
+\documentstyle[12pt,fancybox]{article}
+
+%% PAGE PARAMETERS
+
+% Paragraphs are marked by large space rather than indentation:
+\parindent 0pt
+\parskip 6pt plus 1pt minus 1pt
+
+% No headers, 1in top margin
+\topmargin 0pt
+\headheight 0pt
+\headsep 0pt
+
+% Total bottom margin 1in, text height 9in
+\textheight 9in
+\footskip .625in
+
+% Now adjust for different paper size:
+\newdimen\mydim
+\mydim=\paperwidth
+\advance\mydim-8.5in
+\divide\mydim 2
+\advance\oddsidemargin \mydim
+\advance\evensidemargin \mydim
+\mydim=\paperheight
+\advance\mydim-11in
+\divide\mydim 2
+\advance\topmargin \mydim
+
+%% OTHER
+
+\renewcommand{\EveryVerbatimLine}[2]{}
+
+% Short meta (works in verbatim. Can't use < for other purposes.
+\catcode`\<=13 \def<#1>{{\rm\it #1\/}} % <meta> (works in verbatim)
+
+% Short verbatim.
+\catcode`\"=13
+\def"{\verb"}
+
+\catcode`\@=12 % In case I'm using AmS-LaTeX
+
+\begin{document}
+
+\begin{center}
+{\large\bf Changes listing for PSTricks}\\[6pt]
+ Version \FileVersion\\
+ \FileDate\\[6pt]
+ Timothy Van Zandt\\
+ tvz@Princeton.EDU
+\end{center}
+
+ The PSTricks package is still preliminary. The features list
+ and user interface are unlikely to change much in the short term, but
+ the internal code is not stable.
+
+\section{VERSION 0.94 (Beta)}
+
+\subsection{Incompatible changes}
+
+ \begin{enumerate}
+
+ \item "\Rnode" uses the graphics parameters "href" and "vref" to set the
+reference point, rather than having a coordinate argument.
+
+ \end{enumerate}
+
+\subsection{New features}
+
+ \begin{enumerate}
+
+ \item New graphics objects: "\pstriangle", "\psdiamond", "\psdot".
+
+ \item New box frames: "\pstribox", "\psdiabox".
+
+ \item New nodes: "\dotnode", "\dianode", "trinode".
+
+ \item Tree macros!
+
+ \item "\psmatrix": Good for math diagrams and graphs.
+
+ \item Negative nodesep and offset measure distance from center of node.
+
+ \item New node connections: "\ncbox", "\ncarcbox".
+
+ \item New node label puts: "\ncput", "\naput", "\nbput". (These replace
+"\lput", "\mput", "\aput", "\Aput", "\bput" and "\Bput", which are still
+supported.)
+
+ \item New node label puts (especially good for trees): "\thput", "\tvput",
+"\tlput", "\trput", "\taput", "\tbput". (Make "\ncline" obsolete, but this is
+still supported.)
+
+ \item "\nput", for attaching labels to nodes.
+
+ \item New arrow styles: {\catcode`\<=12 "|<->|" and "|<*->|*"}.
+
+ \item New dot styles: "diamond", "diamond*", "oplus", "ominus", "x",
+"asterisk".
+
+ \end{enumerate}
+
+\subsection{Obsolete but supported features}
+
+ \begin{enumerate}
+
+ \item "\lput", "\mput", "\aput", "\Aput", "\bput" and "\Bput".
+
+ \item "\ncline".
+
+ \end{enumerate}
+\subsection{Bug fixes}
+
+ \begin{enumerate}
+
+ \item Fixed "\ncangle" so that it would work properly with non-right angle
+values of "angleA" and "angleB".
+
+ \end{enumerate}
+
+
+\subsection{Other changes}
+
+ \begin{enumerate}
+
+ \item "\OldPsput" and "\NewPsput" are back in "pstricks.tex".
+
+ \item The <num> in "arrowsize=<dim num>", "tbarsize=<dim num>", and
+"dotsize=<dim num>" is optional (default=0).
+
+ \end{enumerate}
+
+
+\end{document}
+%% END changes.tex
diff --git a/obsolete/graphics/pstricks/doc/src/chartest.tex b/obsolete/graphics/pstricks/doc/src/chartest.tex
new file mode 100644
index 0000000000..6c9dc850b9
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/chartest.tex
@@ -0,0 +1,25 @@
+%% BEGIN chartest.tex
+%% PSTricks test file for charpath.tex.
+%% Run with Plain TeX.
+
+\input pstricks
+\input charpath
+
+% phvb should be name of Helvetica-Bold tfm or vf file:
+\font\bighelv=phvb at 70pt
+\bighelv
+
+\vskip 1in
+
+\pscharpath[linestyle=dotted]{Denis Girou}
+
+\vskip 1in
+
+\pscharpath[fillstyle=crosshatch]{Denis Girou}
+
+\vskip 1in
+
+\pscharpath[fillstyle=solid,fillcolor=red]{Denis Girou}
+
+\bye
+%% END chartest.tex
diff --git a/obsolete/graphics/pstricks/doc/src/defaults.pst b/obsolete/graphics/pstricks/doc/src/defaults.pst
new file mode 100644
index 0000000000..95718537a3
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/defaults.pst
@@ -0,0 +1,103 @@
+%% defaults.pst
+%% Created with unix csh commands:
+%% grep ^.psset\@ pstricks.doc > defaults.pst
+%% grep ^.psset\@ pst-node.doc >> defaults.pst
+%% grep ^.psset\@ gradient.tex >> defaults.pst
+%% grep ^.psset\@ pst-coil.doc >> defaults.pst
+%% grep ^.psset\@ pst2eps.tex >> defaults.pst
+%% grep ^.psset\@ pst-plot.tex >> defaults.pst
+%% Input by pst-user.tex
+\psset@swapaxes{false}
+\psset@showpoints{false}
+\psset@border{0pt}
+\psset@bordercolor{white}
+\psset@doubleline{false}
+\psset@doublesep{1.25\pslinewidth}
+\psset@doublecolor{white}
+\psset@shadow{false}
+\psset@shadowsize{3pt}
+\psset@shadowangle{-45}
+\psset@shadowcolor{darkgray}
+\psset@linewidth{.8pt}
+\psset@linecolor{black}
+\psset@dash{5pt 3pt}
+\psset@dotsep{3pt}
+\psset@linestyle{solid}
+\psset@fillcolor{white}
+\psset@hatchwidth{.8pt}
+\psset@hatchsep{4pt}
+\psset@hatchcolor{black}
+\psset@hatchangle{45}
+\psset@fillstyle{none}
+\psset@arrowscale{1}
+\psset@arrowsize{2pt 3}
+\psset@arrowlength{1.4}
+\psset@arrowinset{.4}
+\psset@tbarsize{2pt 5}
+\psset@bracketlength{.15}
+\psset@rbracketlength{.15}
+\psset@arrows{-}
+\psset@liftpen{0}
+\psset@linetype{0}
+\psset@dotstyle{*}
+\psset@curvature{1 .1 0}
+\psset@dotsize{.5pt 2.5}
+\psset@dotscale{1}
+\psset@dotangle{0}
+\psset@linearc{0pt}
+\psset@framearc{0}
+\psset@cornersize{relative}
+\psset@dimen{outer}
+\psset@gridwidth{.8pt}
+\psset@griddots{0}
+\psset@gridcolor{black}
+\psset@subgridwidth{.4pt}
+\psset@subgridcolor{gray}
+\psset@subgriddots{0}
+\psset@subgriddiv{5}
+\psset@gridlabels{10pt}
+\psset@gridlabelcolor{black}
+\psset@framesep{3pt}
+\psset@boxsep{true}
+\psset@arcsep{0}
+\psset@labelsep{5pt}
+\psset@nodesep{0}
+\psset@offset{0}
+\psset@arm{10pt}
+\psset@angle{0}
+\psset@arcangle{8}
+\psset@ncurv{.67}
+\psset@loopsize{1cm}
+\psset@gradbegin{gradbegin}
+\psset@gradend{gradend}
+\psset@gradlines{500}
+\psset@gradmidpoint{.9}
+\psset@gradangle{0}
+\psset@coilwidth{1cm}
+\psset@coilheight{1}
+\psset@coilarm{.5cm}
+\psset@coilaspect{45}
+\psset@coilinc{10}
+\psset@bbllx{-1pt}
+\psset@bblly{-1pt}
+\psset@bburx{1pt}
+\psset@bbury{1pt}
+\psset@headers{none}
+\psset@checkfile{true}
+\psset@makeeps{new}
+\psset@headerfile{}
+\psset@plotstyle{line}
+\psset@plotpoints{50}
+\psset@ticksize{3pt}
+\psset@tickstyle{full}
+\psset@ticks{all}
+\psset@labels{all}
+\psset@Ox{0}
+\psset@Dx{1}
+\psset@dx{0}
+\psset@Oy{0}
+\psset@Dy{1}
+\psset@dy{0}
+\psset@showorigin{true}
+\psset@axesstyle{axes}
+\endinput
diff --git a/obsolete/graphics/pstricks/doc/src/denis1.tex b/obsolete/graphics/pstricks/doc/src/denis1.tex
new file mode 100644
index 0000000000..4e04a115dc
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/denis1.tex
@@ -0,0 +1,42 @@
+%% BEGIN denis1.tex
+% PSTricks sample that combines
+% \pscharpath, \pstextpath, and gradient fillstyle.
+
+% Run with Plain TeX.
+
+% Takes a long time to print.
+
+\hsize 9in
+\vsize 6.5in
+\special{landscape} % works with Rokicki's dvips.
+
+\input pstricks
+\input charpath
+\input textpath
+\input gradient
+
+% phvb should be name of Helvetica-Bold tfm or vf file:
+\font\bighelv=phvb at 5in
+\font\smallhelv=ptmr at 8pt
+
+\newcount\mycount
+\parindent 0pt
+
+\null
+\vfill
+
+\pstextpath(0,-8pt)%
+ {\pscharpath*[linestyle=none,fillstyle=gradient,
+ gradangle=45,gradmidpoint=.5]{\bighelv D G}}%
+ {\smallhelv
+ \mycount=70
+ \loop
+ \advance\mycount -1
+ \ifnum\mycount>0
+ Denis Girou
+ \repeat}
+
+\vfill
+
+\bye
+%% END denis1.tex
diff --git a/obsolete/graphics/pstricks/doc/src/denis2.tex b/obsolete/graphics/pstricks/doc/src/denis2.tex
new file mode 100644
index 0000000000..1fcaf59074
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/denis2.tex
@@ -0,0 +1,36 @@
+%% BEGIN denis2.tex
+% PSTricks sample that combines
+% \pscharpath and \psclip.
+
+% Run with Plain TeX.
+
+\hsize 9in
+\vsize 6.5in
+\special{landscape} % works with Rokicki's dvips.
+
+\input pstricks
+\input charpath
+
+% phvb should be name of Helvetica-Bold tfm or vf file:
+\font\bighelv=phvb at 5.5in
+\font\smallrm=ptmr at 10pt
+
+\newcount\mycount
+\parindent 0pt
+
+\vglue 1in
+
+\pscharclip[linewidth=2pt]{\rput[tl](0,0){\bighelv DG}}
+ \rput[t]{45}(0,0){\vbox{%
+ \hsize 12in
+ \smallrm
+ \mycount=1000
+ \loop
+ \advance\mycount -1
+ \ifnum\mycount>0
+ Denis Girou
+ \repeat}}
+\endpscharclip
+
+\bye
+%% END denis2.tex
diff --git a/obsolete/graphics/pstricks/doc/src/filetest.dat b/obsolete/graphics/pstricks/doc/src/filetest.dat
new file mode 100644
index 0000000000..68945e6e95
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/filetest.dat
@@ -0,0 +1,71 @@
+%% BEGIN filetest.dat
+[
+{{0, 0}, {0.1, 0.489217}, {0.2, 0.914933},
+
+ {0.3, 1.21952}, {0.4, 1.35655}, {0.5, 1.29517},
+
+ {0.6, 1.02301}, {0.7, 0.547479}, {0.8, -0.104732},
+
+ {0.9, -0.889868}, {1., -1.75088}, {1.1, -2.62238},
+
+ {1.2, -3.4364}, {1.3, -4.12831}, {1.4, -4.64256},
+
+ {1.5, -4.93756}, {1.6, -4.98935}, {1.7, -4.7937},
+
+ {1.8, -4.36653}, {1.9, -3.74246}, {2., -2.97178},
+
+ {2.1, -2.11599}, {2.2, -1.24239}, {2.3, -0.418164},
+
+ {2.4, 0.295512}, {2.5, 0.84882}, {2.6, 1.2076},
+
+ {2.7, 1.35627}, {2.8, 1.29903}, {2.9, 1.0593},
+
+ {3., 0.677496}, {3.1, 0.207184}, {3.2, -0.289882},
+
+ {3.3, -0.749475}, {3.4, -1.11083}, {3.5, -1.32228},
+
+ {3.6, -1.34604}, {3.7, -1.16179}, {3.8, -0.768677},
+
+ {3.9, -0.185544}, {4., 0.550574}, {4.1, 1.38761},
+
+ {4.2, 2.263}, {4.3, 3.1091}, {4.4, 3.85919},
+
+ {4.5, 4.45329}, {4.6, 4.84347}, {4.7, 4.99808},
+
+ {4.8, 4.90456}, {4.9, 4.5705}, {5., 4.02303},
+
+ {5.1, 3.30639}, {5.2, 2.47802}, {5.3, 1.60352},
+
+ {5.4, 0.750856}, {5.5, -0.0156125}, {5.6, -0.640751},
+
+ {5.7, -1.08345}, {5.8, -1.32014}, {5.9, -1.34676},
+
+ {6., -1.17893}, {6.1, -0.850365}, {6.2, -0.409711},
+
+ {6.3, 0.084022}, {6.4, 0.566914}, {6.5, 0.97605},
+
+ {6.6, 1.25533}, {6.7, 1.36069}, {6.8, 1.2642},
+
+ {6.9, 0.956782}, {7., 0.449173}, {7.1, -0.228866},
+
+ {7.2, -1.03104}, {7.3, -1.89854}, {7.4, -2.76511},
+
+ {7.5, -3.56294}, {7.6, -4.22854}, {7.7, -4.70839},
+
+ {7.8, -4.96365}, {7.9, -4.97357}, {8., -4.73734},
+
+ {8.1, -4.27417}, {8.2, -3.62157}, {8.3, -2.83204},
+
+ {8.4, -1.96848}, {8.5, -1.09857}, {8.6, -0.288905},
+
+ {8.7, 0.400909}, {8.8, 0.92342}, {8.9, 1.24743},
+
+ {9., 1.36064}, {9.1, 1.27057}, {9.2, 1.00372},
+
+ {9.3, 0.602995}, {9.4, 0.123725}, {9.5, -0.371511},
+
+ {9.6, -0.818656}, {9.7, -1.1581}, {9.8, -1.34019},
+
+ {9.9, -1.32988}, {10., -1.11003}}
+]
+%% END filetest.dat
diff --git a/obsolete/graphics/pstricks/doc/src/filetest.raw b/obsolete/graphics/pstricks/doc/src/filetest.raw
new file mode 100644
index 0000000000..69a459f7e7
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/filetest.raw
@@ -0,0 +1,6 @@
+%% BEGIN filetest.raw
+% test of \rawfile, with testfile.tex
+0 0 moveto
+100 100 lineto
+100 0 lineto
+%% END filetest.raw
diff --git a/obsolete/graphics/pstricks/doc/src/filetest.tex b/obsolete/graphics/pstricks/doc/src/filetest.tex
new file mode 100644
index 0000000000..954fe79bab
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/filetest.tex
@@ -0,0 +1,84 @@
+%% BEGIN filetest.tex
+%
+% This is test file for some of the PSTricks commands that
+% read from and write to files.
+%
+% Run with plain tex.
+%
+% You must have the epsf.tex macros, which are distributed with
+% Rokicki's dvips, and change the reference to \epsf below.
+%
+% This inputs filetest.raw, filetest.dat and filetest.eps.
+% It also write filetest.eps.
+%
+% If using Rokicki's dvips v5.47 or later, try
+%
+% dvips filetest -E-o
+%
+% to create an eps file filetest.ps from the whole picture.
+
+\input pstricks
+\input pst2eps
+\input pst-plot
+\input epsf
+
+\TeXtoEPS % Make an EPS picture out of .dvi file, with dvips -E.
+ \pspicture(-5,-10)(10,10)
+
+ % Test two similar ways to use data from a file:
+ % \fileplot
+ \AltClipMode
+ \psclip{\psframe[linestyle=none](0,-10)(10,10)}
+ \pscustom{%
+ \fileplot{filetest.dat}
+ \gsave
+ \lineto(100,100)
+ \lineto(0,100)
+ \closedshadow
+ \grestore}
+ \endpsclip
+
+ \psaxes(0,0)(-5,-10)(10,10)
+
+ % And \readdata and \dataplot:
+ \readdata\mydata{filetest.dat}
+ \dataplot[plotstyle=dots,swapaxes=true]{\mydata}
+
+ % Save some data:
+
+ \savedata{\total}[
+ {{0,163},{1,187},{2,166},{3,232},{4,237},{5,201},{6,196},{7,203}}]
+ \savedata{\general}[
+ {7,193}{6,182}{5,167}{4,153}{3,129}{2,108}{1,101}{0,104}]
+
+ % Now make an EPS file from the graphics objects:
+ \PSTtoEPS[bbury=5cm,bburx=10.5cm,
+ bblly=2cm,bbllx=0cm,makeeps=all]{filetest.eps}{%
+
+ % Now when I concatenate \total and \general, I get the points that
+ % delineate the boundary for the area you want to fill.
+
+ \psyunit=.02cm
+ \psxunit=1.5cm
+
+ \pscustom[plotstyle=curve,linestyle=none,fillstyle=solid,
+ fillcolor=gray]{\listplot{\general}\listplot[liftpen=1]{\total}}
+ \psset{plotstyle=curve,showpoints=true,dotscale=1.5}
+ \listplot[dotstyle=pentagon*]{\total}
+ \listplot[dotstyle=triangle]{\general}
+ } % end \PSTtoEPS
+
+ % Now use the EPS file just created:
+ \rput[bl](-1,-10){\psdblframebox{\epsffile{filetest.eps}}}
+
+ % Now try inputting raw ps code with \pscustom:
+ \pscustom[shadowsize=5pt,origin={5,4}]{%
+ \file{filetest.raw}
+ \closepath
+ \closedshadow}
+
+ \endpspicture
+\endTeXtoEPS
+
+\bye
+%% END filetest.tex
diff --git a/obsolete/graphics/pstricks/doc/src/pst-code.tex b/obsolete/graphics/pstricks/doc/src/pst-code.tex
new file mode 100644
index 0000000000..d9ac078138
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/pst-code.tex
@@ -0,0 +1,135 @@
+%% BEGIN pst-code.tex
+%%
+%% For printing documented code for PSTricks.
+%%
+%% COPYRIGHT 1993, by Timothy Van Zandt, tvz@Princeton.EDU
+%%
+%% This LaTeX file inputs pstricks.doc and pst-node.doc,
+%% and prints the documented code.
+%%
+%% You must also have Frank Mittelbach's
+%% doc.sty and gind.ist
+%% (available from rusmv1.rus.uni-stuttgart.de), as well as my
+%% tvz-hax.sty, tvz-code.sty and fancybox.sty
+%% (distributed with PSTricks).
+%%
+%% gind.ist is for the index. I.e.,
+%% makeindex -s gind.ist pst-code.idx
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Change these for a4 paper:
+\def\paperwidth{8.5in}
+\def\paperheight{11in}
+
+\documentstyle{tvz-code}
+
+\def\fileversion{0.93a-97}
+\def\filedate{1997/03/25}
+
+% Comment out to suppress generation of .idx file. Speeds things up.
+% \MakeIndex
+
+% Include to suppress checksums for drafts:
+\def\StopEventually#1{\let\Finale\relax}
+
+\makeatletter
+
+%%%%%%%%%%%%%%%%%%% More DoNotIndex for pst-code %%%%%%%%%%%%%%%
+\DoNotIndex{\pst@dima,\pst@dimb,\pst@dimc,\pst@dimd,\pst@dimg,\pst@cnta,%
+\pst@cntb,\pst@cntc,\pst@cntg,\pst@tempa,\pst@tempb,\pst@tempc,\pst@tempd,%
+\pst@tempg,\pst@boxa,\pst@boxg,\if@pst,\@psttrue,\@pstfalse}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\makeatother
+
+\MakeShortVerb\"
+
+\ShortMeta
+
+\def\n#1{{\tt \string#1}}
+
+\newbox\junkbox
+\def\DocInput#1{%
+ \MakePercentIgnore
+ \setbox\junkbox=\hbox\bgroup
+ \input{#1}%
+ \MakePercentComment}
+\let\EndDocPreamble\egroup
+
+\begin{document}
+
+\def\thetitle{PSTricks: Documented Code}
+
+\begin{titlepage}
+
+\let\footnotesize\small
+\let\footnoterule\relax
+\setcounter{page}{0}
+
+\null
+\vfil
+\vskip 25pt
+
+\begin{center}
+
+ {\LARGE\bf PSTricks}:\\[5pt]
+ {\large\bf PostScript macros for Generic TeX}\\[7pt]
+ {\LARGE\bf\em Documented Code}\par
+
+ \vskip 3em
+
+ {\large \lineskip .75em Timothy Van Zandt}%
+ \thanks{%
+ Author's address:
+ Department of Economics, Princeton University,
+ Princeton, NJ 08544-1021, USA. Internet: {\tt tvz@Princeton.EDU}}%
+ \par
+
+ \vskip 1.5em
+
+ {\large \thefiledate\\[2pt] Version \fileversion}\par
+
+\end{center}
+
+\par
+
+\makeatletter\@thanks\makeatother
+
+\vfil
+
+PSTricks is a collection of PostScript macros that is compatible with most
+\TeX\ macro packages, including Plain \TeX\ and \LaTeX. Included are macros
+for color, graphics, rotation and overlays.
+
+This is the documented code. There is also a {\em User's Guide} and a read-me
+file.
+
+\vfil
+\null
+
+\end{titlepage}
+
+\setcounter{footnote}{0}
+\pagenumbering{roman}
+\tableofcontents
+\clearpage
+\pagenumbering{arabic}
+
+\StopEventually{}
+\DocInput{pstricks.doc}
+\Finale
+\clearpage
+
+\StopEventually{}
+\DocInput{pst-node.doc}
+\Finale
+\clearpage
+
+\DeleteShortMeta
+
+\PrintIndex
+
+\end{document}
+
+%% END pst-code.tex
diff --git a/obsolete/graphics/pstricks/doc/src/pst-test.tex b/obsolete/graphics/pstricks/doc/src/pst-test.tex
new file mode 100644
index 0000000000..d140e5cb3f
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/pst-test.tex
@@ -0,0 +1,126 @@
+%%%%%%%%%%%%%%%%%%% pst-test.tex %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Test file for pstricks.tex, v0.93 and maybe later versions.
+%%
+%% Run with Plain TeX.
+%%
+%% PAGE 1: Pure graphics objects. These us \pstunit and \pstverb.
+%%
+\input pstricks
+\input pst-node
+
+\newpsobject{mygrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=7pt}
+\hbox{}\vfill
+
+\pspicture(-1,-1)(9,2)\mygrid
+\psline[linewidth=1.5pt,linestyle=dotted]{**-)}(2.5,1.5)
+\psline[linewidth=2pt,linestyle=dashed,
+ linearc=.5,linecolor=gray]{|->}(3,-.5)(5.5,1.8)(7,-1)
+\qline(9,-1)(8,2)
+\endpspicture
+
+\vfill
+
+\pspicture(-1,-1)(9,2)\mygrid
+\qdisk(0,0){1}
+\pswedge[linecolor=gray,fillstyle=solid]{.8}{0}{70}
+\pscircle[linewidth=2pt,linestyle=dashed](4,.5){1.5}
+\psellipse[fillstyle=crosshatch*,fillcolor=lightgray]
+ (7.5,.5)(1,1.5)
+\endpspicture
+
+\vfill
+
+\pspicture(-1,-1)(9,3)\mygrid
+\parabola*(0,0)(1,3)
+\parabola[xunit=.01]{<->}(900,3)(600,-1)
+\endpspicture
+
+\vfill
+
+\eject
+
+%% PAGE 2: Color (using \pstVerb) and rotation (using \pstVerb and \pstrotate).
+
+\hbox{}\vfill
+
+Here is {\gray some gray text }
+
+\vskip 1cm
+Here is a lightgray line:{\lightgray \hrulefill}
+
+\vskip 1cm
+And a dark gray blob:
+
+{\darkgray \hrule height 1cm width 5 cm }
+\vfill
+
+\centerline{
+\rotateleft{Left} \rotatedown{Down} \rotateright{Right}
+\scalebox{2}{Big} \scalebox{1 -1}{Flip}}
+
+\vfill
+
+\rput[l]{-45}{This runs diagonally down and to the right}
+\rput{45}(2in,0){This runs up to the right}
+
+\vfill
+
+\eject
+
+%% PAGE 3: Nodes and node connections. These use \pstVerb, \pstverbscale,
+%% and maybe \pstrotate.
+
+\null
+\vfill
+
+$$
+\matrix{%
+ &\rnode{a}{A}\cr
+ \noalign{\vskip 2cm}%
+ \rnode{b}{B}\qquad&\rnode{c}{C}\cr}
+\psset{nodesep=3pt}
+\everypsbox{\scriptstyle}
+\ncline{->}{a}{b}\Bput{f}
+\ncline{->}{a}{c}\Aput{g}
+\ncline[linestyle=dotted]{->}{b}{c}\Aput{h}
+$$
+
+\vfill
+
+\vskip 2cm
+
+\cnode*(0,0){3pt}{A}
+\cnode*(4,2){3pt}{B}
+\ncline[nodesep=3pt]{A}{B}
+\mput*{1}
+
+\vfill
+
+\pspicture(0.4,.2)(9.8,6.2)
+ \rput(2,6){\rnode{G}{\psframebox{GOAT}}}
+ \rput(2,.5){\rnode{I}{\psframebox{GOAT}}}
+ \ncangles[angleA=90, angleB=180, nodesepB=3pt, linearc=3pt,
+ armA=2cm]{<-**}{I}{G}
+ \lput*(2.5){Doom}
+ \aput(.5){Zoom}
+ \SpecialCoor
+ \rput{10}(7;30){\rnode{A}{\psframebox{Polar Coor}}}
+ \rput(5;10){\rnode{B}{\psframebox{Polar Coor}}}%
+ \ncline{->}{A}{B}
+ \mput{\pnode{Y}}
+ \cnodeput[linewidth=1.5pt](9.5,6){H}{H}
+ \cnodeput[linewidth=1.5pt](8,1){M}{M}
+ \newpsobject{myarc}{ncarc}{nodesep=3pt,offset=2pt,arrows=->}
+ \myarc{H}{M}
+ \mput*{r}
+ \myarc{M}{H}
+ \mput*{l}
+ \lput(.75){\pnode{Z}}
+ \nccurve[angle=135, ncurv=1.8]{Y}{Z}
+ \aput{:U}{Doom}
+\endpspicture
+
+\vfill
+
+\bye
+%% END pst-test.tex
diff --git a/obsolete/graphics/pstricks/doc/src/pstree.rea b/obsolete/graphics/pstricks/doc/src/pstree.rea
new file mode 100644
index 0000000000..c66fbb2aa0
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/pstree.rea
@@ -0,0 +1,37 @@
+%% BEGIN pstree.readme
+%% April 14, 1993
+%% tvz@Princeton.EDU
+
+This directory contains some new tree macros for PSTricks, plus a few
+other new features (including a matrix macro for graphs and commutatitve
+diagrams). If you ever make trees, then you really should
+try these out.
+
+These will be incorporated into the next release of PSTricks.
+Any comments and improvements in the meantime would be greatly
+appreciated, including better examples.
+
+These macros are unstable, both in that they probably have bugs and
+also in that the interface could change a little. But they are already
+well documented and are very complete.
+
+These have been tested with PSTricks v0.93a. I think they should also
+work with v0.93, but definitely not earlier versions.
+
+The files are:
+
+ pst-beta.tex : Use this instead of pst-node.tex. If you are also
+ using pst-coil.tex or pst-plot.tex, you should
+ input these BEFORE pst-beta.tex.
+
+ psn-beta.pro : This is the PostScript header file that is used by
+ pst-beta.tex (instead of pst-node.pro).
+
+ pst-doc1.ps : The first part of the documentation. Includes revised
+ documentation for the node commands.
+
+ pst-doc2.ps : Second part of the documentation.
+
+ changes.tex : Changes for this beta release.
+
+%% END pstree.readme
diff --git a/obsolete/graphics/pstricks/doc/src/samples.tex b/obsolete/graphics/pstricks/doc/src/samples.tex
new file mode 100644
index 0000000000..2589c15eae
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/samples.tex
@@ -0,0 +1,434 @@
+%% samples.pst : PSTricks samples. Run with LaTeX.
+%% Last edited: 93/03/03
+\documentstyle[12pt,pstricks,pst-node,pst-coil]{article}
+
+\topmargin=-.5in
+\textheight=9in
+\advance\oddsidemargin-.5cm
+\advance\textwidth .5cm
+\let\Ldots\ldots
+\def\ldots{\mbox{$\Ldots$}} % In case we're using AmS-LaTeX.
+\makeatletter
+\def\ps@samples{%
+ \def\@oddhead{\bf PSTricks samples \hfill \thepage}%
+ \def\@oddfoot{}}
+\makeatother
+\pagestyle{samples}
+
+\newbox\sample
+
+\def\example{\setbox\sample\vbox\bgroup}
+\def\endexample{%
+ \egroup
+ \vbox{\vskip 1cm
+ \hbox{\psframebox[boxsep=false,linewidth=2pt,linearc=.5cm,framesep=.5cm,
+ cornersize=absolute]{\box\sample}}
+ \vskip 1cm}}
+\def\rquote#1{{\begin{quote}\vskip-\topsep
+ \raggedright\hskip -2em#1\end{quote}}}
+\def\creator#1{\rquote{{\bf Creator:}\hskip 1em#1}}
+\def\title#1{\rquote{{\bf Description:}\hskip 1em#1}}
+
+\def\N#1{{\tt\string#1}}
+
+\begin{document}
+
+\begin{example}
+ \creator{Gisli Ottarsson \tt <gisli@liapunov.eecs.umich.edu>}
+ \title{Calvin and Hobbes}
+
+ $$
+ \pspicture(-3.,29)(3.,38)
+ \def\anglei{5}
+ \def\angleii{-5}
+ \psset{linewidth=1pt,hatchwidth=0.8pt}
+ \def\tower#1{%
+ \psline[linewidth=2pt](0,0)(0,7)
+ \psset{fillstyle=solid,dimen=middle,linewidth=1.5pt}
+ \cnode(0,2){.5}{A#1}
+ \cnode(0,5){.8}{B#1}
+ \cnode(0,7){.5}{C#1}
+ \psset{linestyle=solid,linewidth=1pt}
+ \psline{->}(0,1)(2,1)
+ \SpecialCoor
+ \rput([angle=90]B#1){\psline{->}(2,0)}
+ \rput([angle=90]C#1){\psline{->}(2,0)}}%
+ \pscustom[linewidth=2pt]{%
+ \psarc(0,0){30}{80}{100}
+ \gsave
+ \psarcn(0,0){29.25}{100}{80}
+ \fill[fillstyle=vlines]
+ \grestore}
+ \rput{\anglei}{\rput(0,30){%
+ \psset{fillcolor=lightgray}
+ \tower{1}}}
+ \rput{\angleii}{\rput(0,30){%
+ \psset{linestyle=dashed}
+ \tower{2}}}
+ \psset{linewidth=1.5pt,coilwidth=.45}
+ \nczigzag{B1}{A2}
+ \aput[.25](.85){$k_{c_3}$}
+ \ncline[linecolor=white,linewidth=.6]{A1}{B2}
+ \nczigzag{A1}{B2}
+ \bput[.3](.85){$k_{c_3}$}
+ \nczigzag{A1}{A2}
+ \bput[.3](.5){$k_{c_1}$}
+ \nczigzag{B1}{B2}
+ \aput[.3](.5){$k_{c_2}$}
+ \endpspicture
+ $$
+\end{example}
+
+\begin{example}
+ \creator{\tt{leecheng@liapunov.eecs.umich.edu}}
+ \title{Dripping faucet model.}
+
+ \psset{unit=.4cm}
+ \begin{center}
+ \begin{pspicture}(0,-2)(31,12)
+ \rput(1.5,0){%
+ \psellipse[linewidth=1pt](8,7)(1,3)
+ \psframe[linecolor=white,fillstyle=solid,fillcolor=white]
+ (6.4,6.5)(8,7.5)
+ \psline[linearc=.3,linewidth=1pt](8,8)(8,7.5)(4,7.5)
+ \psbezier[linewidth=1pt](4,7.5)(3,7.5)(3,6.5)(3,5.5)
+ \psline[linearc=.3,linewidth=1pt](8,6)(8,6.5)(5,6.5)
+ \psbezier[linewidth=1pt](5,6.5)(4,6.5)(4,6.5)(4,5.5)
+ \psline[linewidth=1pt](3,5.5)(4,5.5)
+ \psline[linearc=.3,linewidth=1pt](5,7.5)(5,8)(6,8)(6,7.5)
+ \psframe[linewidth=1pt](5.3,8)(5.7,8.7)
+ \psframe[linewidth=1pt,framearc=1,fillstyle=solid,
+ fillcolor=white](4,8.7)(7,9)
+ \multirput(3.5,4.8)(0,-1){4}{%
+ \psbezier[linewidth=.5pt](0,0)(.25,-.4)(-.25,-.4)(0,0)}
+ \rput[t](5.5,0){Dripping Faucet}}
+ \rput(20,5){%
+ \pspolygon[linecolor=white,fillstyle=vlines,
+ fillcolor=darkgray,hatchsep=.2](1,4.5)(1,4)(4,4)(4,4.5)
+ \psline[linewidth=2pt](1,4)(4,4)
+ \psline[linewidth=1.5pt](2.5,4)(2.5,3.5)(2.9,3.3)(2.1,2.9)
+ (2.9,2.5)(2.1,2.1)(2.9,1.7)(2.1,1.3)(2.5,1.1)(2.5,0.6)
+ \psframe[linecolor=black,linewidth=1.5pt,fillstyle=solid,
+ fillcolor=lightgray](1.8,-1)(3.2,.6)
+ \rput(2.5,-.2){$M$}
+ \psline{<->}(3.7,-.9)(3.7,.5)
+ \psframe[linecolor=black,linewidth=1.5pt,fillstyle=solid,
+ fillcolor=lightgray](1.8,-3.5)(3.2,-1.9)
+ \rput(2.5,-2.7){$m$}
+ \psline{->}(5,1)(5,-1)
+ \rput[l](5.5,0){$g$}
+ \psline{->}(3.7,-2)(3.7,-3.4)
+ \rput[t](2.5,-4){Mathematical Model for}
+ \rput[t](2.5,-5){a Dripping Faucet}
+ \rput(-6,-2){%
+ \psset{linewidth=2pt}
+ \psline(0,.5)(2,.5)
+ \psline(0,-.5)(2,-.5)
+ \psline(1.5,1)(2.5,0)(1.5,-1)}}
+ \psframe[linewidth=2pt,framearc=.05,linecolor=gray](0,-2.5)(31,12)
+ \end{pspicture}
+ \end{center}
+\end{example}
+
+\begin{example}
+ \creator{\tt{Christian Schytt <pierre@diku.dk>}}
+ \title{Primal and dual.}
+
+ \hbox to \hsize{%
+ % DUAL
+ \psset{linewidth=0.5pt}
+ \pspicture(-2,-1)(6,5)
+ \psline{->}(5,0)\psline{->}(0,4)
+ %
+ \qdisk(2,0){2pt}
+ \rput(2,0){\pnode{Z}}
+ \uput[dl](2,0){$c_{ij}$}
+ %
+ \uput[d](5,0){$p_i-p_j$}
+ \uput[r](0,4){\parbox{2cm}{Dual cost \\ of arc $(i,j)$}}
+ \uput[l](0,4){$q_{ij}(p_i-p_j)$}
+ %
+ \rput(.5,1.5){\pnode{U}}
+ \rput(2.5,-1.5){\pnode{V}}
+ \ncline{Z}{U}\mput{\pnode{X}}
+ \ncline{Z}{V}\mput{\pnode{Y}}
+ %
+ \rput[b](2,2){\rnode{A}{Slope: ${}-l_{ij}$}}
+ \ncline{->}{A}{X}
+ \rput[b](0,-0.75){\rnode{B}{Slope: ${}-u_{ij}$}}
+ \ncline{->}{B}{Y}
+ \endpspicture\hfill
+ % PRIMAL
+ \pspicture(0,-1)(6,5)
+ \psline{->}(5,0)\psline{->}(0,4)
+ \qdisk(1.5,0){2pt}
+ \qdisk(3.5,0){2pt}
+ \uput[d](1.5,0){$l_{ij}$}
+ \uput[d](3.5,0){$u_{ij}$}
+ \uput[d](5,0){$f_{ij}$}
+ \uput[r](0,4){\parbox{2cm}{\raggedright Primal cost \\ of arc $(i,j)$}}
+ %
+ \rput(1.5,1){\pnode{A}}
+ \rput(3.5,2){\pnode{B}}
+ \ncline{-}{A}{B}\mput{a\pnode{Y}}
+ %
+ \psline[linestyle=dashed]{-}(1.5,0)(1.5,3)
+ \psline[linestyle=dashed]{-}(3.5,0)(3.5,3)
+ %
+ \rput[l](4,1){\rnode{X}{Slope: $c_{ij}$}}
+ \ncline{->}{X}{Y}
+ \endpspicture
+ }\medskip
+\end{example}
+
+\begin{example}
+ \creator{Gisli Ottarsson \tt <gisli@liapunov.eecs.umich.edu>}
+
+ \begin{center}
+ \psset{unit=1in,linewidth=1pt,hatchwidth=0.8pt}
+ \pspicture(1,0)(5.,3)
+ \psline[linewidth=2pt,arrowscale=1.5]{->}(1.5,2.4)(3.5,2.4)
+ \psellipse[fillcolor=darkgray,fillstyle=solid](1.5,1.5)(.5,1.3)
+ \psellipse[fillcolor=white,fillstyle=solid](1.4,1.5)(.5,1.3)
+ \psline(1.5,2.8)(1.4,2.8)
+ \psline(1.5,0.2)(1.4,0.2)
+ \psline[linewidth=1.5pt,linestyle=dashed](1.3,2.4)(1.7,2.4)
+ \pscircle*(1.3,2.4){3pt}
+ \rput(1.3,2.2){$(r_o,\theta_o)$}
+ \rput(3.3,2.65){$u(r_o,\theta_o)$}
+ \psline[linewidth=2pt,arrowscale=1.5]{|->}(2.5,0.65)(4.5,0.65)
+ \rput(4.5,0.85){$w(x_o)$}
+ \psline{<->}(1.93,1.0)(2.5,.65)
+ \rput(2.2,.65){$x_o$}
+ \pscircle[fillcolor=lightgray,fillstyle=solid](1.93,1.2){0.05}
+ \pspolygon[fillcolor=lightgray,fillstyle=solid,linecolor=lightgray]
+ (1.935,1.24)(3.5,.38)(3.5,.22)(1.935,1.16)
+ \pscircle[fillcolor=lightgray,fillstyle=solid](2.53,0.855){0.058}
+ \pscircle[fillcolor=lightgray,fillstyle=solid,linecolor=lightgray]
+ (2.545,0.845){0.056}
+ \pscircle[fillcolor=gray,fillstyle=solid](3.5,.3){0.08}
+ \psline(1.93,1.245)(3.5,.38)
+ \psline(3.5,.22)(1.92,1.156)
+ \endpspicture
+ \end{center}
+\end{example}
+
+
+\begin{example}
+\creator{tvz}
+\title{Another example of \N\pspolygon. The coordinates where determined
+ using \N\psgrid, after making the table.\label{ex-pspolygon}}
+
+\begin{center}
+ \def\arraystretch{2}\tabcolsep=10pt\small\bf
+ {\em Result is true for values in shaded region:}\\[5pt]
+ \pspolygon[linearc=.4,fillcolor=lightgray,fillstyle=solid]
+ (3,2)(5.9,2)(5.9,0)(7.4,0)(7.4,-2)(1.45,-2)(1.45,0)(3,0)
+ \begin{tabular}{cccccc}
+ X11 & X12 & X13 & X14 & X15 & X16\\
+ X21 & X22 & X23 & X24 & X25 & X26\\
+ X31 & X32 & X33 & X34 & X35 & X36\\
+ X41 & X42 & X43 & X44 & X45 & X46
+\end{tabular}
+\end{center}
+
+\end{example}
+
+
+\begin{example}
+ \creator{tvz}
+ \title{Nodes.\label{ex-nodes1}}
+
+ \begin{center}
+ \begin{pspicture}(0,-1)(8,3)
+ \psset{arrows=->, nodesep=6pt}
+ \rput(3,3){\rnode{A}{Returns to Scale}}
+ \rput(1,1){\rnode{B}{Production}}
+ \rput(5,1){\rnode{C}{Managing}}
+ \rput(3,-1){\rnode{D}{Supervision}}
+ \rput(7,-1){\rnode{E}{Information Processing}}
+ \ncline{A}{B} \ncline{A}{C} \ncline{C}{D} \ncline{C}{E}
+ \end{pspicture}
+ \end{center}
+\end{example}
+
+
+\begin{example}
+ \creator{tvz}
+ \title{Another example of nodes.\label{ex-nodes3}}
+
+ \begin{center}
+ \begin{pspicture}(0,-1)(7.5,1)
+ \pnode{a}
+ \cnodeput(1.5,0){b}{0}
+ \cnodeput(3,0){c}{1}
+ \cnodeput(4.5,0){d}{2}
+ \cnodeput(6,0){e}{3}
+ \scriptsize
+ \psset{arrows=->,nodesep=0}
+ \pslabelsep=3pt
+ \ncline{a}{b}\Aput{start}
+ \ncline{b}{c}\Bput{a}
+ \ncline{c}{d}\Aput{b}
+ \ncline{d}{e}\Aput{b}
+ \psset{arm=.6,linearc=.4,angleA=0,angleB=90}
+ \ncangles{b}{b}\Aput{b}
+ \ncangles{e}{b}\Aput{b}
+ \psset{angleB=-90}
+ \ncangles{c}{c}\Bput{a}
+ \ncangles{d}{c}\Bput{a}
+ \ncangles{e}{c}\Bput{a}
+ \end{pspicture}
+ \end{center}
+\end{example}
+
+\begin{example}
+ \creator{tvz}
+ \title{Nonsense examples of nodes.\label{ex-nodes4}}
+
+ The tempestuous \rnode{E}{Maggie} and her alcoholic husband
+ \rnode{A}{Brick} \ldots
+ \vskip 2cm
+ \cnode*{3pt}{D}\hskip 1em Much Ado about \rnode{B}{Nothing}.
+ \vskip 1in
+ and \rnode{J}{\psframebox{another}} another
+ \rnode{K}{\psframebox{another}} another another \rnode{C}{book}
+ \ncline[linecolor=darkgray,linewidth=1.5pt,nodesep=3pt]{->}{A}{B}
+ \ncline[nodesep=3pt,linestyle=dashed,border=3pt]{->}{C}{E}
+ \ncangle[nodesep=1pt,angleA=-90,angleB=150, armB=3cm]{D}{C}
+ \ncbar[angle=90]{<-oo}{J}{K}
+\end{example}
+
+
+\begin{example}
+ \creator{tvz}
+ \title{More node nonsense.\label{ex-nodes5}}
+
+ \begin{center}
+ \begin{pspicture}(0.4,.2)(9.8,6.2)
+ \rput(2,6){\rnode{G}{\psframebox{GOAT}}}
+ \rput(2,.5){\rnode{I}{\psframebox{GOAT}}}
+ \ncangles[angleA=90, angleB=180, nodesepB=3pt, linearc=3pt,
+ armA=2cm]{<-**}{I}{G}
+ \lput*(2.5){Doom}
+ \bput(.5){Zoom}
+ \SpecialCoor
+ \rput{10}(7;30){\rnode{A}{\psframebox{Polar Coor}}}
+ \rput(5;10){\rnode{B}{\psframebox{Polar Coor}}}
+ \ncline{->}{A}{B}
+ \mput{\pnode{Y}}
+ \cnodeput[linewidth=1.5pt](9.5,6){H}{H}
+ \cnodeput[linewidth=1.5pt](8,1){M}{M}
+ \newpsobject{myarc}{ncarc}{nodesep=3pt,offset=2pt,arrows=->}
+ \myarc{H}{M}\mput*{r}
+ \myarc{M}{H}\mput*{l}\lput(.75){\pnode{Z}}
+ \nccurve[angleA=135, angleB=135, ncurv=1.8]{Z}{Y}\bput{:D}{Doom}
+ \end{pspicture}
+ \end{center}
+\end{example}
+
+\begin{example}
+ \creator{tvz}
+ \title{}
+
+ \[
+ \def\arraystretch{3.5}
+ \arraycolsep .7cm
+ \begin{array}{ccc}
+ \rnode{a}{U}\\
+ & \rnode{b}{X\times_Z Y} & \rnode{c}{X}\\
+ & \rnode{d}{Y} & \rnode{e}{Z}
+ \end{array}
+ \psset{arrows=->,nodesep=3pt}
+ \pslabelsep 3pt
+ \everypsbox{\scriptstyle}
+ \ncLine{a}{b}\Bput{y}
+ \ncLine{a}{c}\Aput{x}
+ \ncLine{b}{d}\Bput{q}
+ \ncLine{b}{c}\Bput{p}
+ \ncLine{c}{e}\Aput{f}
+ \ncLine{d}{e}\Bput{g}
+ \]
+\end{example}
+
+\begin{example}
+ \creator{tvz}
+ \title{Several ways to connect nodes to themselves}
+
+ \def\arrow(#1,#2){\ncline{->}{#1}{#2}}
+ $$
+ \begin{array}{c@{\hskip 1.5cm}c@{\hskip 1.5cm}c}
+ \rnode{a}{\bullet} & \rnode{b}{\bullet} & \rnode{c}{\bullet}\\[1cm]
+ \end{array}
+ \everypsbox{\scriptstyle}
+ \psset{nodesep=5pt,arm=.6,linearc=.4,angleA=0,angleB=90}
+ \ncangles{->}{a}{a}
+ \ncangles{->}{b}{b}
+ \ncangles{->}{c}{c}
+ \arrow(a,b)
+ \arrow(b,c)
+ \ncarc[arcangleA=-30, arcangleB=-30]{->}{a}{c}
+ $$
+ $$
+ \everypsbox{\scriptstyle}
+ \def\cn#1#2{%
+ \cnode*{2pt}{#1}
+ \ncloop[arm=.4,linearc=.39,loopsize=.8,nodesep=5pt,angleB=180]
+ {->}{#1}{#1}
+ \Bput{#2}}
+ \begin{array}{c@{\hskip 1.5cm}c@{\hskip 1.5cm}c}
+ \cn{a}{1} & \cn{b}{2} & \cn{c}{3}\\[1cm]
+ \end{array}
+ \psset{nodesep=5pt,arm=.6,linearc=.4}\arrow(a,b)
+ \arrow(b,c)
+ \ncarc[arcangleA=-30, arcangleB=-30]{->}{a}{c}
+ $$
+ $$
+ \everypsbox{\scriptstyle}
+ \def\cn#1#2{%
+ \cnode*{2pt}{#1}
+ \nccircle[nodesep=5pt]{->}{#1}{.5}
+ \Bput{#2}}
+ \begin{array}{c@{\hskip 1.5cm}c@{\hskip 1.5cm}c}
+ \cn{a}{1} & \cn{b}{2} & \cn{c}{3}\\[1cm]
+ \end{array}
+ \psset{nodesep=5pt,arm=.6,linearc=.4}\arrow(a,b)
+ \arrow(b,c)
+ \ncarc[arcangleA=-30, arcangleB=-30]{->}{a}{c}
+ $$
+\end{example}
+
+\begin{example}
+ \creator{tvz}
+ \title{}
+
+\centerline{%
+ \rnode{a}{\psframebox{\Huge A connection}}%
+ \hskip 1.6cm
+ \rnode{b}{\psframebox{\Huge Unto another}}}
+\ncloop[loopsize=-1cm,arm=.8cm,linearc=.3]{->}{a}{b}
+\end{example}
+
+
+\begin{example}
+ \creator{tvz}
+ \title{}
+
+ \newbox\mybox
+ \setbox\mybox=\hbox{%
+ \psset{unit=4pt}
+ \pspicture(-2.8,0)(2.8,7.75)
+ \psset{linewidth=.1}
+ \psline(-.3,0)(-.3,3)
+ \psline(.3,0)(.3,3)
+ \psline(-2,0)(2,0)
+ \rput{45}(0,2){%
+ \psframe[framearc=.1,fillstyle=solid](0,0)(4,4)
+ \psline[linewidth=.4,linearc=.2](1.5,.4)(.4,2.5)(3.6,1.5)(2.5,3.6)}
+ \psdots[dotstyle=square,dotsize=.4 0](0,7.5)
+ \endpspicture}%
+ \centerline{\copy\mybox\hskip 1pt\copy\mybox}
+\end{example}
+
+\end{document}
+
diff --git a/obsolete/graphics/pstricks/doc/src/tp-test.tex b/obsolete/graphics/pstricks/doc/src/tp-test.tex
new file mode 100644
index 0000000000..9f5b4a1344
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/src/tp-test.tex
@@ -0,0 +1,71 @@
+%% BEGIN tp-test.tex
+%%
+%% LaTeX2e test file for pst-text.sty.
+%%
+%% This file is based on tp-test.tex.
+%%
+%% Changes:
+%% 1. July 97: adapted to LaTeX2e
+%% (St. Klupsch, <steffen@vlsi.informatik.th-darmstadt.de>)
+%%
+
+\documentclass[12pt]{article}
+
+\usepackage{times} %% the text feature works best with Postscript Fonts :-)
+ %% this package is part of the psnfss-System,
+ %% (ftp.dante.de/tex-archive/macros/latex/packages/psnfss)
+ %% don't worry if you don't have the package -
+ %% Place a '%' in front to continue :-)
+
+\usepackage{pstricks,pst-text}
+
+\begin{document}
+
+The first sample shows that math works. I let the line be drawn to make the sample clearer.
+\begin{verbatim}
+ \large
+ \pstextpath[c]%
+ {\pscurve[linecolor=gray](0,1)(4,3)(6,2)(9,0)(12,1)(15,1)}%
+ {$S_\alpha=\Omega(\gamma_\beta)$ is a connected snarf and
+ $B=(\otimes,\rightarrow,\theta)$ is Boolean left subideal.}
+\end{verbatim}
+
+\vskip 3.5cm
+
+\begin{large}
+ \pstextpath[c]%
+ {\pscurve[linecolor=gray](0,1)(4,3)(6,2)(9,0)(12,1)(15,1)}%
+ {$S_\alpha=\Omega(\gamma_\beta)$ is a connected snarf and
+ $B=(\otimes,\rightarrow,\theta)$ is Boolean left subideal.}
+\end{large}
+
+\vskip 1cm
+
+\begin{verbatim}
+ \psset{linestyle=none}
+ \pstextpath[c]{\psarcn(0,0){73pt}{180}{0}}%
+ {Centre National de la}
+ \pstextpath[c]{\psarc(0,0){73pt}{180}{0}}%
+ {Recherche Scientifique}
+\end{verbatim}
+
+\begin{center}
+ \vskip 2cm
+ \Huge
+ \psset{linestyle=none}
+ \pstextpath[c]{\psarcn(0,0){75pt}{180}{0}}%
+ {Centre National de la}
+ \pstextpath[c]{\psarc(0,0){75pt}{180}{0}}%
+ {Recherche Scientifique}
+ \vskip 2cm
+\end{center}
+
+\begin{center}
+ \pstextpath[c](0,0){\psarcn[linestyle=none](0,-6){4}{180}{0}}%
+ {\parbox{3.5in}{In principle, it is possible to use
+ parbox, but let's see what really happens. It seems
+ hard to believe that someone would want to do this.}}
+\end{center}
+\end{document}
+
+%% END tp-test.tex
diff --git a/obsolete/graphics/pstricks/doc/test-pst.pdf b/obsolete/graphics/pstricks/doc/test-pst.pdf
new file mode 100644
index 0000000000..2ac2bd0199
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/test-pst.pdf
Binary files differ
diff --git a/obsolete/graphics/pstricks/doc/test-pst.tex b/obsolete/graphics/pstricks/doc/test-pst.tex
new file mode 100644
index 0000000000..2af57b5daa
--- /dev/null
+++ b/obsolete/graphics/pstricks/doc/test-pst.tex
@@ -0,0 +1,257 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -*- Mode: Latex -*- %%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% test-pst.tex --- Various PSTricks tests, from the PSTricks chapter
+%% of "The LaTeX Graphics Companion" (by Goossens, Rahtz,
+%% Mittelbach, Addison Wesley, 1997)
+%%
+%% Author : Sebastian RAHTZ (Oxford University - GB)
+%% <sebastian.rahtz@computing-services.oxford.ac.uk>
+%% Created the : Tue Feb 3 20:37:47 1998
+%% Last mod. by : Denis GIROU (CNRS/IDRIS - France) <Denis.Girou@idris.fr>
+%% Last mod. the : Wed May 5 20:09:18 1999
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass{article}
+
+\usepackage[latin1]{inputenc} % From LaTeX distribution
+\usepackage{calc} % From LaTeX distribution
+\usepackage{graphicx} % From LaTeX distribution
+\usepackage{ifthen} % From LaTeX distribution
+\usepackage{subfigure} % From CTAN/macros/latex/contrib/supported/subfigure
+\usepackage{pst-all} % From PSTricks
+\usepackage{pst-poly} % From pstricks/contrib/pst-poly
+\usepackage{multido} % From PSTricks
+\input{random.tex} % From CTAN/macros/generic
+
+% Take care that on some non Unix systems, you may have to replace
+% the / character by, for instance, the : one (\input{lgc:#2.inl}})
+\newcommand{\ExampleSubFigure}[2][0.3333]{%
+\subfigure[Example #2]{%
+ \begin{minipage}[t]{#1\textwidth}
+ \parbox[b]{\textwidth}{%
+ \centering
+ \input{lgc/#2.inl}}
+ \end{minipage}}}
+
+\newpsobject{showgrid}{psgrid}{subgriddiv=1,griddots=10,gridlabels=6pt}
+
+% New colors defined
+\definecolor{brown}{rgb}{.65, .16, .16}
+\definecolor{lightblue}{rgb}{.68, .85, .9}
+\definecolor{palegreen}{rgb}{.6, .98, .6}
+\definecolor{pink}{rgb}{1, .75, .8}
+\definecolor{wheat}{rgb}{.96, .87, .7}
+
+% Layout changes
+\textheight=23cm
+\topmargin=-2cm
+\textwidth=16cm
+\oddsidemargin=0cm
+\evensidemargin=0cm
+
+\begin{document}
+
+\title{Test file for the PSTricks 97 distribution:\\
+ most of the PSTricks examples of\\
+ \emph{The \LaTeX{} Graphics Companion}}
+\author{Sebastian \textsc{Rahtz} --- March 1997}
+\date{Version 1.3 (September 9, 1998)}
+\maketitle
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-2-1}%
+ \ExampleSubFigure{4-2-2}%
+ \ExampleSubFigure{4-2-3}
+ \ExampleSubFigure{4-2-4}%
+ \ExampleSubFigure{4-2-5}
+ \caption{Section 2}
+\end{figure}
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-3-1}%
+ \ExampleSubFigure{4-3-2}
+ \caption{Section 3}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-4-1}%
+ \ExampleSubFigure{4-4-2}%
+ \ExampleSubFigure{4-4-3}
+ \ExampleSubFigure{4-4-4}%
+ \ExampleSubFigure{4-4-5}%
+ \ExampleSubFigure{4-4-6}
+ \ExampleSubFigure{4-4-7}%
+ \ExampleSubFigure{4-4-8}%
+ \ExampleSubFigure{4-4-9}
+ \ExampleSubFigure{4-4-10}%
+ \ExampleSubFigure{4-4-11}%
+ \ExampleSubFigure{4-4-12}
+ \caption{Section 4}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-5-1}%
+ \ExampleSubFigure[0.5]{4-5-2}
+ \ExampleSubFigure[0.75]{4-5-3}%
+ \ExampleSubFigure[0.25]{4-5-4}
+ \ExampleSubFigure[0.15]{4-5-5}%
+ \ExampleSubFigure[0.25]{4-5-6}%
+ \ExampleSubFigure[0.2]{4-5-7}%
+ \ExampleSubFigure[0.2]{4-5-8}%
+ \ExampleSubFigure[0.2]{4-5-9}
+ \ExampleSubFigure[0.5]{4-5-10}%
+ \ExampleSubFigure[0.5]{4-5-11}
+ \caption{Section 5-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-5-13}
+ \ExampleSubFigure[1]{4-5-14}
+ \ExampleSubFigure[1]{4-5-16}
+ \caption{Section 5-B}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-6-1}%
+ \ExampleSubFigure{4-6-2}%
+ \ExampleSubFigure{4-6-3}
+ \ExampleSubFigure{4-6-4}%
+ \ExampleSubFigure{4-6-5}%
+ \ExampleSubFigure{4-6-6}
+ \ExampleSubFigure{4-6-7}%
+ \ExampleSubFigure{4-6-8}%
+ \ExampleSubFigure{4-6-9}
+ \ExampleSubFigure{4-6-10}%
+ \ExampleSubFigure{4-6-11}%
+ \ExampleSubFigure{4-6-12}
+ \ExampleSubFigure{4-6-13}%
+ \ExampleSubFigure{4-6-14}%
+ \ExampleSubFigure{4-6-15}
+ \ExampleSubFigure{4-6-16}%
+ \ExampleSubFigure{4-6-17}%
+ \ExampleSubFigure{4-6-18}
+ \caption{Section 6-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure{4-6-19}%
+ \ExampleSubFigure{4-6-20}%
+ \ExampleSubFigure{4-6-21}
+ \ExampleSubFigure{4-6-22}%
+ \ExampleSubFigure{4-6-23}%
+ \ExampleSubFigure{4-6-24}
+ \ExampleSubFigure{4-6-25}
+ \caption{Section 6-B}
+\end{figure}
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-6-26}
+ \ExampleSubFigure{4-6-27}%
+ \ExampleSubFigure{4-6-28}%
+ \ExampleSubFigure{4-6-29}
+ \ExampleSubFigure[0.3333]{4-6-30}%
+ \ExampleSubFigure[0.6667]{4-6-31}
+ \ExampleSubFigure[1]{4-6-32}
+ \caption{Section 6-C}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-6-33}
+ \ExampleSubFigure[0.5]{4-6-34}%
+ \ExampleSubFigure[0.5]{4-6-35}
+ \ExampleSubFigure[0.5]{4-6-36}%
+ \ExampleSubFigure[0.5]{4-6-37}
+ \caption{Section 6-D}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-6-38}
+ \ExampleSubFigure[1]{4-6-39}
+ \ExampleSubFigure[0.5]{4-6-40}%
+ \ExampleSubFigure[0.5]{4-6-41}
+ \caption{Section 6-E}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-6-42}%
+ \ExampleSubFigure[0.5]{4-6-43}
+ \ExampleSubFigure{4-6-44}%
+ \ExampleSubFigure{4-6-45}%
+ \ExampleSubFigure{4-6-46}
+ \caption{Section 6-F}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-7-1}
+ \ExampleSubFigure[1]{4-7-2}
+ \ExampleSubFigure[1]{4-7-4}
+ \caption{Section 7}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-8-1}%
+ \ExampleSubFigure[0.25]{4-8-2}%
+ \ExampleSubFigure[0.25]{4-8-3}
+ \ExampleSubFigure[1]{4-8-4}
+ \caption{Section 8-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-8-5}
+ \caption{Section 8-B}
+\end{figure}
+
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.5]{4-9-1}%
+ \ExampleSubFigure[0.5]{4-9-2}
+ \caption{Section 9}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[0.4]{4-10-1}%
+ \ExampleSubFigure[0.2]{4-10-2}%
+ \ExampleSubFigure[0.2]{4-10-3}%
+ \ExampleSubFigure[0.2]{4-10-4}
+ \ExampleSubFigure[0.4]{4-10-5}%
+ \ExampleSubFigure[0.2]{4-10-6}%
+ \ExampleSubFigure[0.4]{4-10-7}
+ \caption{Section 10-A}
+\end{figure}
+
+\clearpage
+\begin{figure}[!htbp]
+ \centering
+ \ExampleSubFigure[1]{4-10-8}
+ \ExampleSubFigure[1]{4-10-9}
+ \ExampleSubFigure[1]{4-10-10}
+ \caption{Section 10-B}
+\end{figure}
+
+\end{document}