diff options
author | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
---|---|---|
committer | Norbert Preining <norbert@preining.info> | 2019-09-02 13:46:59 +0900 |
commit | e0c6872cf40896c7be36b11dcc744620f10adf1d (patch) | |
tree | 60335e10d2f4354b0674ec22d7b53f0f8abee672 /obsolete/graphics/pstricks/doc |
Initial commit
Diffstat (limited to 'obsolete/graphics/pstricks/doc')
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 Binary files differnew file mode 100644 index 0000000000..aa1ce5ecc1 --- /dev/null +++ b/obsolete/graphics/pstricks/doc/code/pst-code.pdf 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 Binary files differnew file mode 100644 index 0000000000..c4c690ff22 --- /dev/null +++ b/obsolete/graphics/pstricks/doc/images/tiger.eps.gz 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 Binary files differnew file mode 100644 index 0000000000..2ac2bd0199 --- /dev/null +++ b/obsolete/graphics/pstricks/doc/test-pst.pdf 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} |