Home

PSTricks: User's Guide

image

Contents

1. 106 npos parameter 71 71 ADU E EEEE 74 75 94 nrot parameter 70 offset parameter 67 70 79 105 offsetA parameter 67 75 85 offsetB parameter 67 openshadow 38 origin parameter 24 33 outer parameter 14 ovalnode 59 59 76 INDEX Voverlaybox 106 Ox parameter 48 49 Oy parameter 48 49 parabola 14 14 parameters py m 48 49 Dy 2552 9 tost Set 48 49 ON 48 49 OEE 48 49 angleA 62 64 66 angleB 62 64 66 angle 62 66 105 arcangleA 62 67 arcangleB 62 arcangle 62 arcsepA 13 13 14 arcsepB 13 13 14 arCSOD ote etm ee 13 14 armA 62 65 90 91 amb 62 63 65 aM ME 62 62 68 arrowinset 29 30 arrowlength 29 30 arrowscale 30 30 armowsize 29 arrows 8 10 20 28 28 29 48 axesstyle 50 DDO sessi enisi mind 96 DDN P 96 eel E 112 eel mM 112 DDI casse d s tarea 96 elle 96 IEN coepere eene 112 elle cce teretes 112 bordercolor 25 25 border 25 25 33 68 boxdepth 66 boxheight 66 boxsep 51 52 53 boxsize e 66 66 bracketlength 30 coila
2. 17 30 thislevelsep 99 100 thistreefit 99 thistreenodesize 99 thistreesep 99 ticksize suuuuuu 50 tickstyle 50 50 Ee eegen bah EU 49 tnidepthi sce 96 tnheight 95 95 96 UE 95 insep mn 95 95 96 tnyref 0000 96 96 POS dawned E EN 73 93 treefit 87 87 88 treeflip 87 93 treemode 86 86 87 treenodesize 88 88 treesep 87 87 88 trimode 53 unit 6 6 7 19 105 Vref e 59 59 96 MDG KEE 96 MODI ect 96 Ae EE 96 XDDIE ee bain 96 xunit 7 7 18 19 105 WO cocco eo Re IARGE 96 yunit 7 7 18 19 105 parametricplot 22 23 INDEX Wcangle sssuusse 69 Wcangles 69 Can 69 pcarcbox rererere 69 Wcbar 0 cece eee 69 PCDOX i ves sean sees eae 69 el ee 104 OCCURVE T 69 Wcdiag 0 eee 69 pcdiagg 69 Wcline 69 70 79 104 PCIOOP 2 eee 69 PCZIOZAD ees 104 plotpoints parameter 23 23 plotstyle parameter 20 20 34 pnode 59 59 76 Polar 104 104 105 psaddtolength 7 psarc 12 13 14 60 psarcn 0000 13 13 pSaxeS 18 47 48 50 psbezier 14 14 34 35 psborder 25 psccurve 16 19 pscharclip 110 1
3. 61 66 framesize 60 nodesep 61 61 68 75 99 gangle 11 105 gradangle 107 DOS srete aga aars 71 71 gradbegin 107 107 te GEET 70 gradend 107 107 offsetA 67 75 85 gradlines 107 offsetB 08 67 gradmidpoint 107 offset 67 70 79 105 gridcolor 18 Origin ness de 24 33 griddots 18 19 outer 0 eee ee eee 14 gridlabelcolor 19 plotpoints 23 23 gridlabels 19 plotstyle 20 20 34 gridwidth 18 pspicture 41 hatchangle 21 27 radius irise es ceed 59 76 78 hatchcolor 27 rbracketlength 30 hatchsep 27 I6ClarC io ssepe PERI 53 hatchwidth 27 Mv ORC 70 83 headerfile 112 113 TOU m ERECTO 75 headers 113 113 rowsep seeeeeee 78 INDEX 124 unt T shadowangle 26 26 shadowcolor 26 26 shadowsize 26 26 52 shadow 26 26 33 shortput 72 72 74 76 93 SHOWDDOX i45 perd 97 showorigin 49 showpoints 9 13 16 20 22 33 Siy B semences 31 subgridcolor 19 subgriddiv 19 subgriddots 19 subgridwidth 19 SWapaxes 24 33 tbarsize
4. Figure 1 The tree nodes Tree Nodes 84 pstree nodesepB 8pt Tcircle X TR tilde tilde X TR x TR y X T y Compare with this example which uses Vir pstree nodesepB 3pt Tcircle X Tr tilde tilde X Tr x Tr y O nF WN e There is also a null tree node Vin Itis meant to be just a place holder Look at the tree in Figure page 84 The bottom row has a node missing in the middle Tn was used for this missing node There is also a special tree node that doesn t have a normal version and that can t be used as the root node of a whole tree Tfan par This draws a triangle whose base is fansize dim Default 1cm and whose opposite corner is the predecessor node adjusted by the value of nodesepA and offsetA For example 1 pstree dotstyle oplus dotsize 8pt nodesep 2pt Tcircle 11 2 Tdot 3 pstree Tfan Tdot IN 4 pstree Tdot Tfan linestyle dashed Tree Nodes 85 39 Tree orientation Trees can grow down up right or left depending on the treemode D U R L Default D parameter Here is what the previous example looks like when it grows to the right pstree dotstyle oplus dotsize 8pt nodesep 2pt treemode R Tcircle 11 Tdot pstree Tfan Tdot pstree Tdot Tfan linestyle dashed AO d Ww N e You can change the treemode in the middle of the tree For example here is a tree that grows up and that has a
5. psline linewidth 5cm psline linewidth 5cm C C Az w N GC cccc CC Almost all the open curves let you include the arrows parameters as an optional argument enclosed in curly braces and before any other arguments except the optional parameters argument E g instead of psline arrows lt linestyle dotted 3 4 you can write psline linestyle dotted lt 3 4 The exceptions are a few streamlined macros that do not support the use of arrows these all begin with q The size of these line terminators is controlled by the following parame ters In the description of the parameters the width always refers to the dimension perpendicular to the line and length refers to a dimension in the direction of the line arrowsize dim num Default 1 5pt 2 The width of arrowheads is dim plus num times linewidth if the optional num is inclued See the diagram below arrowlength num Default 1 4 Length of arrowheads as a fraction of the width as shown below arrowinset num Default 4 Size of inset for arrowheads as a fraction of the length as shown below Arrowheads and such 29 length inset width arrowsize dim num width numx linewidth dim1 length arrowlength x width inset arrowinset x height tbarsize dim num Default 2pt 5 The width of a t bar square bracket or rounded bracket is dim plus num times linewidth if th
6. skiplevel Tfan pstree Tc 3pt TC skiplevels 2 pstree Tc 3pt TC TC TC endskiplevels pstree Tc 3pt TC TC o 0 A O t BR wu H He The profile at the missing levels is the same as at the first non missing level You can adjust this with the bounding box parameters You get greatest control if you use nested skiplevel commands instead of skiplevels Marge psset radius 6pt dotsize 4pt pstree thislevelsep 0 edge none levelsep 2 5cm Tn pstree TR Player 1 pstree TR Player 2 TR Player 3 psset edge ncline pstree pstree treemode R TC Tdot 0 0 0 MNH pstree TC name A L Tdot 10 10 10 I o 0 A O t BR ou H ro 10 pstree TC name C _ r n Tdot 3 8 4 c 12 Tdot 8 3 4 _ d 13 pstree TC name B _ R Tdot 10 10 0 I 15 pstree TC name D _ r ie Tdot 4 8 3 c 17 Tdot 0 5 0 d is ncbox linearc 3 boxsize 3 linestyle dashed nodesep 4 A B 19 ncarcbox linearc 3 boxsize 3 linestyle dashed 2 arcangle 25 nodesep 4 D C Details 98 Player 1 Player 2 Player 3 10 10 10 3 8 4 8 3 4 4 8 3 0 5 0 45 The scope of parameter changes edge is the only parameter which when set in a tree node s parameter argument affects the drawing of the node connection e g if you want to change the nodesep your edge has to inclu
7. Y Y K J J2 The scope of parameter changes 100 X Filling and Tiling 46 Overview i Filling and Tiling 101 X Three Dimensional Graphics 47 Overview i Three Dimensional Graphics 102 X Special Tricks 48 Coils and zigzags The file pst coil tex pst coil sty and optionally the header file pst coil pro defines the following graphics objects for coils and zigzags pscoil par arrows x0 yO x1 y W sCoil par angle1 angle2 pszigzag par arrows x0 yO x1 vil These graphics objects use the following parameters coilwidth dim Default 1cm coilheight num Default 1 coilarm dim Default 5cm coilaspect angle Default 45 coilinc angle Default 10 All coil and zigzag objects draw a coil or zigzag whose width diameter is coilwidth and with the distance along the axes for each period 360 degrees equal to coilheight x coilwidth Both pscoil and psCoil draw a 3D coil projected onto the xz axes The center of the 3D coil lies on the yz plane at angle pcoilaspect to the z axis The coil is drawn with PostScript s lineto joining points that lie at angle coilinc from each other along the coil Hence increasing coilinc makes the curve smoother but the printing slower pszigzag does not use the coilaspect and coilinc parameters pscoil and pszigzag connect x0 yO and x1 yf starting and ending with straight line segments of length coilarmA and coilarmB
8. 7 7 105 edge none ssn 92 Miabox esee ko oe RERO 60 dianode 60 e ciet ea RED EFE 39 dimen parameter 14 26 DontKillGlue 41 dotangle parameter 17 dotnode 60 76 dotscale parameter 17 dotsep parameter 25 dotsize parameter 17 30 dotstyle parameter 16 dotted parameter 33 doublecolor parameter 25 25 doubleline parameter 25 25 33 doublesep parameter 121 Dx parameter 48 49 dx parameter 48 49 Dy parameter 48 49 dy parameter 48 49 edge parameter 91 92 99 emnode parameter 77 endoverlaybox 106 endpscharclip 110 110 endpsclip 54 54 55 110 endpsmatrix 76 79 endpspicture 41 endpsTree 06 82 endTeXtoEPS 111 everypSbox 115 fansize parameter 85 MING isses o RAE 39 fileplot 20 20 21 KU 32 33 36 fillcolor parameter 8 17 27 27 51 fillstyle parameter 8 27 27 32 33 50 107 109 Mnode 60 60 76 framearc parameter 10 10 framesep parameter 51 framesize parameter 60 gangle parameter gradangle parameter gradbegin parameter 107 107 gradend parameter gradlines
9. Tf par Tdot par Tr par stuff TR par stuff Tcircle par stuff TCircle par stuff Toval par stuff VTdia par stuff Ttri par stuff The syntax of a tree node is the same as of its corresponding normal node except that e There is always an optional argument for setting graphics parameters even if the original node did not have one e There is no argument for specifying the name of the node e There is never a coordinate argument for positioning the node and e To set the reference point with Tr set the ref parameter Figure 1 gives a reminder of what the nodes look like The difference between Tr and TR variants of rnode and Rnode respec tively is important with trees Usually you want to use TR with vertical trees because the baselines of the text in the nodes line up horizontally For example Tree Nodes 83 small psset armB 1cm levelsep 3cm treesep 3mm angleB 90 angleA 90 nodesepA 3pt def s 1 1 tt string 1 def b 1 1 tt string 1 def psedge 1 2 ncangle 2 1 psTree treenodesize 1cm Toval Tree nodes s Tp Tc 5 tt string Tc s TC psTree levelsep 4cm armB 2cm Tp edge ncline 12 p Tcircle Cm A O t BR o H ro eo 13 s Tdot 14 TCircle radius 1 2 tt string T Circle 15 Tn 16 b Toval 17 b Ttri 18 b Tdia i9 endpsTree 20 elt 21 b Tr 2 b TR 23 endpsTree Tree nodes
10. psset nodesep 3pt ncline root A naput above ncline root B ncput on 10 ncline root C 11 nbput below Cm A O0 t BR o H naput and nbput use the same algorithm as uput for displacing the la bels and the distance beteen the line and labels is labelsep at least if the lines are straight ncput uses the same system as rput for setting the reference point You change the reference point by setting the ref ref Default c parameter Rotation is also controlled by a graphics parameter nrot rot Default 0 rot can be in any of the forms suitable for rput and you can also use the form angle The angle is then measured with respect to the node connection E g if the angle is U then the label runs parallel to the node connection Since the label can include other put commands you really have a lot of control over the label position The next example illustrates the use lt angle gt the offset parameter and pcline 1 pspolygon 0 0 4 2 4 0 2 pcline offset 1 2pt 0 0 4 2 3 ncput nrot U Length Here is a repeat of an earlier example now using lt angle gt Node connections labels 70 on cnode 0 0 5cm root cnode 3 1 5 4pt A cnode 3 0 4pt B cnode 3 1 5 4pt C psset nodesep 3pt nrot U ncline root A naput above ncline root B ncput on 10 ncline root C 11 nbput below o 0 A DH
11. pstree root successors psTree root successors endpsTree These do the same thing but just have different syntax psTree is the Jong version These macros make a box that encloses all the nodes and whose baseline passes through the center of the root Most of the nodes described in Section 30 has a variant for use within a tree These variants are called tree nodes and are described in Section Trees and tree nodes are called tree objects The root of a tree should be a single tree object and the successors should be one or more tree objects Here is an example with only nodes 1 pstree radius 3pt Toval root TC TC TC TC There is no difference between a terminal node and a root node other than their position in the pstree command Here is an example where a tree is included in the list of successors and hence becomes subtree Unless you have a computer program that generates the coordinates P TATEX purists can write begin ps Tree and end psTree instead Trees 82 1 pstree radius 3pt Tp VIC 3 pstree TC TC TC 4 TC 38 Tree Nodes For most nodes described in Section 30 there is a variant for use in trees called a tree node In each case the name of the tree node is formed by omitting node from the end of the name and adding T at the beginning For example ovalnode becomes Toval Here is the list of such tree nodes Tp par Te par dim TC par
12. PSTricks contains an environment that tries to get around these two prob lems TeXtoEPS stuff endTeXtoEPS This is all that should appear in your document but headers and whatever that would normally be added by output routines are ignored dvips will again try to find a tight bounding box but it will treat stuff as if there was a frame around it Thus the bounding box will be sure to include stuff but might be larger if there is output outside the boundaries of this box If the bounding box still isn t right then you will have to edit the BoundingBox lix lly urx ury Exporting EPS files 111 specification in the EPS file by hand If your goal is to make an EPS file for inclusion in other documents then dvips E is the way to go However it can also be useful to generate an EPS file from PSTricks graphics objects and include it in the same document rather than just including the PSTricks graphics directly because TEX gets involved with processing the PSTricks graphics only when the EPS file is initially created or updated Hence you can edit your file and preview the graphics without having to process all the PSTricks graphics each time you correct a typo This speed up can be significant with complex graphics such as pslistplot s with a lot of data To create an EPS file from PSTricks graphics objects use PSTtoEPS par file graphics objects The file is created immediately and hence you can include
13. ovalnode B Node B Lu Nn e ncdiag angleA 90 angleB 90 arm 5 linearc 2 A B You can also set one or both of the arms to zero length For example if you set arm 0 the nodes are connected by a straight line but you get to determine where the line connects whereas the connection point is determined automatically by ncline Compare this use of ncdiag with ncline in the following example Rather than using a true arc ncarc actually draws a bezier curve When connecting two circular nodes using the default parameter values the curve will be indistinguishable from a true arc However ncarc is more flexible than an arc and works right connecting nodes of different shapes and sizes You can set arcangleA and arcangleB separately and you can control the curvature with the ncurv parameter which is described on page Node connections 62 rput r 4 1 ovalnode R Root cnodeput 1 2 A XX 3 cnodeput 1 0 B YY ncdiag angleB 180 arm O lt A R ncline lt B R Note that in this example the default value angleA 0 is used ncdiagg par arrows nodeA nodeB ncdiagg is similar to ncdiag but only the arm for node A is drawn The end of this arm is then connected directly to node B Compare ncdiagg with ncdiag when armB 0 ncdiagg H cnode 0 0 1 2pt a rput l 3 1 rnode b H rput l 3 1 rnode c T ncdiagg angleA 180 armA 1 5 nodesepA pt b a ncdiag
14. rput refpoint rotation x y stuff refpoint determines the reference point of stuff and this reference point is translated to x y By default the reference point is the center of the box This can be changed by including one or two of the following in the optional refpoint argument Horizontal Vertical Left t Top r Right b Bottom B Baseline Visually here is where the reference point is set of the various combinations the dashed line is the baseline tl t tr l r BI Br bl b br There are numerous examples of rput in this documentation but for now here is a simple one 1 rput b 90 1 0 Here is a marginal note Placing and rotating whatever 43 1 1 One common use of a macro such as Wput is to put labels on things PSTricks has a variant of Wput that is especially designed for labels uput abelsep refangle rotation x y stuff This places stuff distance labelsep from x y in the direction refangle The default value of abelsep is the dimension register pslabelsep You can also change this be setting the labelsep dim Default 5pt parameter but remember that uput does have an optional argument for setting parameters Here is a simple example 1 qdisk 1 1 1 pt 2 uput 45 1 1 1 1 Here is a more interesting example where uput is used to make a pie chart psset unit 1 2cm pspicture 2 2 2 2 2 2 2 2 pswedgeffillstyle solid fillcolor gray 2
15. 79 80 rput 41 42 43 43 46 52 57 58 70 75 80 104 110 112 runit parameter d d savedata 21 21 scale 0 0 0 ccc eee eee eee 37 setcolor 40 shadow parameter 26 26 33 shadowangle parameter 26 26 shadowcolor parameter 26 26 shadowsize parameter 26 26 52 shortput parameter 72 72 74 76 93 showbbox parameter showorigin parameter 126 showpoints parameter 9 13 16 20 22 33 skiplevel 97 98 skiplevels 97 98 SpecialCoor 7 8 104 105 106 stroke 32 33 36 style parameter 31 subgridcolor parameter 19 subgriddiv parameter 19 subgriddots parameter 19 subgridwidth parameter 19 SWapaXeS 20 eee eee ee 37 swapaxes parameter 24 33 taput 73 73 74 93 tbarsize parameter 17 30 Xbp t ise 73 73 74 93 VIC 83 ATO oues ende 83 NT GitGle Jeter eee 83 Heite ER 83 e ee aie ee esr 83 LEE ERE 83 TeXtoEPS 111 Nf eei 83 Mian sesssssssseeesseseee 85 thislevelsep parameter 99 100 thistreefit parameter thistreenodesize parameter 99 thistreesep parameter 99 KA 13 73 ticks parameter 49 ticksize parameter 50 tickstyle parameter 50 50 Wout 73 73 74 93 Mi MP 85 85 tndepth parameter 96 tnheight p
16. The background color in the solid vlines hlines and crosshatch styles hatchwidth dim Default 8pt Width of lines hatchsep dim Default 4pt Width of space between the lines hatchcolor co or Default black Color of lines Saved in pshatchcolor hatchangle rot Default 45 Rotation of the lines in degrees For example if hatchangle is set to 45 the vlines style draws lines that run NW SE and the hlines style draws lines that run SW NE and the crosshatch style draws both Here is an example of the vlines and related fill styles Y ospolygon fillstyle2vlines 0 0 0 3 4 0 Y ospolygonf fillstylezhlines 0 0 4 3 4 0 W ospolygon fillstylescrosshatch fillcolor black hatchcolor white hatchwidth 1 2pt hatchsep 1 8pt hatchangle 0 0 3 2 1 5 4 3 Uu e Ww N ra Each of the pure graphics objects except those beginning with q has a starred version that produces a solid object of color linecolor It automat ically sets linewidth to zero fillcolor to linecolor fillstyle to solid and linestyle to none gt PSTricks adjusts the lines relative to the resolution so that they all have the same width and the same intervening space Otherwise the checkered pattern in this example would be noticeably uneven even on 300 dpi devices This adjustment is resolution dependent and may involve adjustments to the hatchangle when this is not initially a multiple of 45 degrees Fill styles 27 15 Arrowheads an
17. U Hypotenuse Wput abelsep angle pos stuff This is like aput but stuff is positioned below the node connection There is also an obsolete command Lput for putting labels next to node connections The syntax is Lput abelsep refpoint rotation pos stuff It is a combination of Rput and Iput equivalent to lput pos Rput abelsep refpoint rotation 0 0 stuff Mput is a short version of Lput with no lt rotation gt or lt pos gt argument Lput and Mput remain part of PSTricks only for backwards compatibility Obsolete put commands 80 It is fairly common to want to use the default position and rotation with these node connections but you have to include at least one of these argu ments Therefore PSTricks contains some variants mput refpoint stuff VAput abelsep stuff WBput abelsep stuff of Nput aput and bput respectively that have no angle or positioning argument For example cnode 0 0 3pt A cnode 4 2 3pt B 3 ncline nodesep 3pt A B mput 1 Row Nye Here is another Label i pcline lt gt 0 0 4 2 2 Aput Label Obsolete put commands 81 VI Trees 37 Overview The node and node connections are perfect tools for making trees but posi tioning the nodes using rput would be rather tedious The file pstree tex pstree sty contains a high level interface for making trees The tree commands are
18. node is set by the href parameter When labels are positioned on the left or right the right or left edge of the label is positioned distance tnsep from the node The vertical point that is aligned with the center of the node is set by tnyref num Default When you leave this empty vref is used instead Recall that vref gives the vertical distance from the baseline Otherwise the tnyref parameter works like the yref parameter giving the fraction of the distance from the bottom to the top of the label 44 Details PSTricks does a pretty good job of positioning the nodes and creating a box whose size is close to the true bounding box of the tree However PSTricks does not take into account the node connections or labels when calculating the bounding boxes except the tree node labels If for this or other reasons you want to fine tune the bounding box of the nodes you can set the following parameters bbl dim Default bbr dim Default bbh dim Default bbd dim Default xbbl dim Default xbbr dim Default xbbh dim Default xbbd dim Default The x versions increase the bounding box by dim and the others set the bounding box to dim There is one parameter for each direction from the center of the node left right height and depth These parameters affect trees and nodes and subtrees that switch directions but not subtrees that go in the same direction as their parent tree such Details 96 left r
19. resp Set ting coilarm is the same as setting coilarmA and coilarmB Here is an example of pscoil 1 pscoil coilarm 5cm linewidth 1 5pt coilwidth 5cm lt 4 2 Special Tricks 103 Here is an example of pszigzag AAAS 1 pszigzag coilarm 5 linearc 1 lt gt 4 0 Note that pszigzag uses the linearc parameters and that the beginning and ending segments may be longer than coilarm to take up slack psCoil just draws the coil horizontally from angle1 to angle2 Use rput to rotate and translate the coil if desired psCoil does not use the coilarm parameter For example with coilaspect 0 we get a sine curve 1 psCoil coilaspect 0 coilheight 1 33 2 coilwidthz 75 linewidth 1 5pt 0 1440 pst coil tex also contains coil and zigzag node connections You must also pst node load pst node tex pst node sty to use these The node connections are nccoil par arrows nodeA nodeB nczigzag par arrows nodeAM nodeB W ccoil par arrows x1 y1 x2 y2 pezigzag par arrows x1 y 1 x2 y2 The end points are chosen the same as for ncline and pcline and other wise these commands work like pscoil and pszigzag For example 1 cnode 5 5 5 A 2 cnodeffillstyle solid fillcolor lightgray 3 5 2 5 5 B 3 nccoil coilwidth 3 lt gt A B 49 Special coordinates The command SpecialCoor enables a special feature that lets you specify coordinates in a variety o
20. stuff ovalnode par name stuff This is a variant of psovalbox that gives the node the shape of an ellipse Here is an example with circlenode and ovalnode 1 circlenode A Circle and ovalnode B Oval o and Ova ncbar angle 90 A B Nodes 59 dianode par name stuff This is like diabox trinode par name stuff This is like tribox 1 dotnode dotstyle triangle dotscale 2 1 0 0 A 2 dotnode dotstyle 3 2 B 3 ncline nodesep 3pt A B a a O 1 rput tl 0 3 dianode A Diamond 2 rput br 4 0 trinode trimode L B Triangle 3 nccurve angleA 135 angleB 90 A B dotnode par x y name This is a variant of psdot For example Mnode par x y name The f stands for frame This is like but easier than putting a ps frame in an rnode 1 fnode A 2 fnode framesize 1 5pt 2 2 B 3 ncline nodesep 3pt A B There are two differences between fnode and psframe e There is a single optional coordinate argument that gives the center of the frame e The width and height of the frame are set by the framesizezdim1 dim2 Default 10pt parameter If you omit dim2 you get a square frame 31 Node connections All the node connection commands begin with nc and they all have the same syntax The node connections can be used with pscustom The beginning of the node con nection is attached to the curr
21. they are composite objects rather than pure graphics objects In addi tion to the graphics parameters for psframe these macros use the follow ing parameters framesepzdim Default 3pt Distance between each side of a frame and the enclosed box boxsep true false Default true When true the box that is produced is the size of the frame or what ever that is drawn around the object When false the box that is produced is the size of whatever is inside and so the frame is trans parent to TEX This parameter only applies to psframebox pscir clebox and psovalbox Here are the three box framing macros psframebox par stuff A simple frame perhaps with rounded corners is drawn using ps frame The option is of particular interest It generates a solid frame whose color is fillcolor rather than linecolor as with the closed graphics objects Recall that the default value of fillcolor is white and so this has the effect of blotting out whatever is behind the box For example 1 pspolygonffillcolor gray fillstyle crosshatch 0 0 3 0 3 rput 2 1 psframebox framearc 3 Label psdbliframebox par stuff This draws a double frame It is just a variant of psframebox de fined by Text Tricks 51 newpsobject psdblframebox psframebox doublesep pslinewidth For example psdblframebox linewidth 1 5pt parbox c 6cm raggedright A double frame is drawn with the ga
22. 0 5 2 1 1 0 0 5 fill fillstyle solid fillcolor gray grestore pscurve linewidth 1 5pt 4 1 3 0 5 2 1 1 0 0 5 A Dw ROO H Note how I had to repeat the second pscurve I could have repeated it within pscustom with liftpen 2 because I wanted to draw a line between the two curves to enclose the region but I didn t want this line to be stroked The next set of commands modify the coordinate system translate coor Translate coordinate system by x y This shifts everything that comes later by x y but doesn t affect what has already been drawn scale num7 num2 Scale the coordinate system in both directions by num7 or horizon tally by num and vertically by num2 rotate angle Rotate the coordinate system by angle swapaxes Switch the x and y coordinates This is equivalent to Safe tricks 37 rotate 90 scale 1 1 scale nv o oe msave Save the current coordinate system You can then restore it with mrestore You can have nested msave mrestore pairs msave and mrestore do not have to be properly nested with respect to TEX groups or gsave and grestore However remember that gsave and grestorealso affect the coordinate system msave mrestore lets you change the coordinate system while drawing part of a path and then restore the old coordinate system without destroying the path gsave grestore on the other hand affect the path and all other componme
23. 75 a ncline 2 2 2 1 b ncline 3 2 2 1 4 c ncarc arcangle 40 border 3pt 3 2 1 2 _ npos 3 d npos 7 e ncarc arcangle 12 1 2 2 1 f ncarc arcangle 12 2 1 1 2 g Note that a node is made only for the non empty entries You can also specify a node for the empty entries by setting the emnode type Default none parameter You can change parameters for a single entry by starting this entry with the parameter changes enclosed in square brackets Note that the changes affect the way the node is made but not contents of the entry use psset for this purpose For example psmatrix colsep 1cm A mnodescircle X If you want your entry to begin with a that is not meant to indicate param eter changes the precede it by You can assign your own name to a node by setting the name name Default parameter at the beginning of the entry as described above You can still refer to the node by lt row gt lt col gt but here are a few reasons for giving your own name to a node e The name may be easier to keep track of Mathematical diagrams and graphs 77 Unlike the lt row gt lt col gt names the names you give remain valid even when you add extra rows or columns to your matrix The names remain valid even when you start a new psmatrix that reuses the lt row gt lt col gt names Here a few more things you should know The baselines of the nodes pass through the cente
24. BR wu H He The position on the node connection is set by the npos num Default parameter roughly according to the following scheme Each node connec tion has potentially one or more segments including the arms and con necting lines A number npos between 0 and 1 picks a point on the first segment from node A to B fraction npos from the beginning to the end of the segment a number between 1 and 2 picks a number on the second segment and so on Each node connection has its own default value of npos If you leave the npos parameter value empty e g npos then the default is substituted This is the default mode Here are the details for each node connection Connection Segments Range Default ncline 1 0 lt poss 1 0 5 nccurve 1 0 lt poss 1 0 5 ncarc 1 0 lt poss 1 0 5 ncbar 3 0 lt poss 3 1 5 ncdiag 3 0 lt poss 3 1 5 ncdiagg 2 0 lt pos lt 2 0 5 ncangle 3 0 lt pos lt 3 1 5 ncangles 4 0X poss 4 1 5 ncloop 5 0 lt poss 5 2 5 nccircle 1 0 lt poss 1 0 5 ncbox 4 0X poss 4 0 5 ncarcbox 4 0X poss 4 0 5 Here is an example Node connections labels 71 Node A de A Noea 4 rput tl 0 3 rnode A psframebox Node A rput br 3 5 0 ovalnode B Node B 3 ncangles angleA 90 arm 4cm linearc 15 A B ncput d nbput nrot D npos 2 5 par With ncbox and ncarcbox the segments run counterclockwise starting with the lower side of the box Hence with nbput the label ends up out
25. DU AU x div 3 i Nosplot linewidth 1 5pt 0H 4 n Wsaxes 4 4 3 x x mul 3 div sub Driver notes The clipping macros use pstverbscale and pstVerb Don t be surprised if PSTricks s clipping does not work or causes problem it is never ro bust endpsclip uses initclip This can interfere with other clipping operations and especially if the TEX document is converted to an Encapsulated PostScript file The command AltClipMode causes psclip and endpsclip to use gsave and grestore instead This bothers some drivers especially if psclip and endp sclip do not end up on the same page 29 Rotation and scaling boxes There are versions of the standard box rotation macros rotateleft stuff rotateright stuff rotatedown stuff stuff is put in an hbox and then rotated or scaled leaving the appropriate amount of spaces Here are a few uninteresting examples SG 1 LargeWofseries rotateleft Left rotatedown Down rotateright Right em There are also two box scaling macros W sscalebox num1 num2 stuff If you give two numbers in the first argument num1 is used to scale horizontally and num2 is used to scale vertically If you give just one number the box is scaled by the same in both directions You can t scale by zero but negative numbers are OK and have the effect of flipping the box around the axis You never know when you need to do something like id psscalebox 1 1 this Rotation and scaling
26. angleA 180 armA 1 5 armB 0 nodesepA 3pt c a ncdiag T You can use ncdiagg with armA 0 if you want a straight line that joins to node A at the angle you specify and to node B at an angle that is determined automatically ncbar par arrows nodeA nodeB This node connection consists of a line with arms dropping down at right angles to meet two nodes at an angle angleA Each arm is at least of length armA or armB but one may be need to be longer rnode A Connect some rnode B words Connect some words ncbar nodesep 3pt angle 90 lt A B w Nn e ncbar nodesep 3pt angle 70 A B Generally the whole line has three straight segments ncangle par arrows nodeA nodeB Now we get to a more complicated node connection ncangle typ ically draws three line segments like ncdiag However rather than fixing the length of arm A we adjust arm A so that the line joining the two arms meets arm A at a right angle For example 1 rput tl 0 3 rnode A psframebox Node A 2 rput br 4 0 ovalnode B Node B 3 ncangle angleA 90 angleB 90 armB 1cm A B Node connections 63 Now watch what happens when we change angleA 1 rput tl 0 3 rnode A psframebox Node A 2 rput br 4 0 ovalnode B Node B 3 ncangle angleA 70 angleB 90 armB 1cm linewidth 1 2pt A B ncangle is also a good way to join nodes by a right angle with just two line segments as in this
27. boxes 55 W sscaleboxto x y stuff This time the first argument is a Cartesian coordinate and the box is scaled to have width x and height plus depth y If one of the dimensions is 0 the box is scaled by the same amount in both direc tions For example L dll lon 1 psscaleboxto 4 2 Big and long Question How do Democrats organize a firing squad UU fe or e ur 398 Ady ISI IoMsuy PSTricks defines LR box environments for all these box rotation and scal ing commands U ROO Hr pslongbox Rotateleft rotateleft pslongbox Rotateright rotateright pslongbox Rotatedown rotatedown pslongbox Scalebox psscalebox pslongbox Scaleboxto psscaleboxto Here is an example where we Rotatedown for the answers to exercises vu do W N e Question How do Democrats organize a firing squad begin Rotatedown parbox hsize Answer First they get in a circle ldots nss end Rotatedown See the documentation of the fancybox package for tips on rotating a BIEX table or figure environment and other boxes Rotation and scaling boxes 56 VII Nodes and Node Connections All the commands described in this part are contained in the file pst node tex pst node sty The node and node connection macros let you connect information and place labels without knowing the exact position of what you are connecting or of where the lines should connect These macros are useful for making gra
28. coordinates or control points of the object Section 9 describes how to change the dot style The parameter value is stored in the conditional Vfshowpoints Basic graphics parameters 9 Basic graphics objects 6 Lines and polygons The objects in this section also use the following parameters linearczdim Default Opt The radius of arcs drawn at the corners of lines by the psline and pspolygon graphics objects dim should be positive framearc num Default 0 In the psframe and the related box framing macros the radius of rounded corners is set by default to one half num times the width or height of the frame whichever is less num should be between 0 and 1 cornersize relative absolute Default relative If cornersize is relative then the framearc parameter determines the radius of the rounded corners for psframe as described above and hence the radius depends on the size of the frame If corner size is absolute then the linearc parameter determines the radius of the rounded corners for psframe and hence the radius is of constant size Now here are the lines and polygons psline par arrows x0 yO x1 y1 xn yn This draws a line through the list of coordinates For example 1 pslineflinewidth 2pt linearc 25 gt 4 2 0 1 2 0 Wline coorO coor1 This is a streamlined version of psline that does not pay attention to the arrows parameter and that can only draw a single line segm
29. d ur u dr dl Wput b r t b br tr r Some people prefer Rput s convention for specifying the position of stuff over uput s Repetition 45 multirput refooint angle xO yO x1 y1 int stuff is a variant of rput that puts down int copies starting at x0 yO and ad vancing by x1 yf each time x0 yO and x1 y are always interpreted as Cartesian coordinates For example an idi 1 multirput 5 0 3 1 12 x If you want copies of pure graphics it is more efficient to use multips angle x0 yO x1 y1 int graphics graphics can be one or more of the pure graphics objects described in Part II or pscustom Note that multips has the same syntax as multirput except that there is no refpoint argument since the graphics are zero di mensional anyway Also unlike multirput the coordinates can be of any type An Overfull box warning indicates that the graphics argument contains extraneous output or space For example 1 def zigzag psline 0 0 5 1 1 5 1 2 0 NVV VAAN 2 psset unit 25 linewidth 1 5pt 3 multips 0 0 2 0 8 zigzag PSTricks can heavily benefit of a much more general loop macro called multido You must input the file multido tex or multido sty See the docu mentation multido doc for details Here is a sample of what you can do begin pspicture 3 4 3 4 3 4 3 4 newgray mygray 0 Initialize mygray for benefit psset fillstyle solid fillcolor
30. false At the introductory iJ At the introductory price of price 6f 13 99 it pays 2 sovalbox boxsep false linecolor2darkgray N 13 99 to act now s it pays to act now psdiabox par stuff psdiabox draws a diamond 1 psdiabox shadowstrue Large textbf Happy pstribox par stuff pstribox draws a triangle Begin 1 pstribox trimode R framesep 5pt Large textbf Begin The triangle points in the direction trimodez U D R L Default U If you include the optional then an equilateral triangle is drawn otherwise you get the minimum area isosceles triangle 1 pstribox trimode U Huge Begin Begin You can define variants of these box framing macros using the newpsob ject command If you want to control the final size of the frame independently of the ma terial inside nest stuff in something like IATEX s makebox command Framed boxes 53 28 Clipping One of the best new plays I have seen all year cool po etic ironic proclaimed The Guardian upon the London pre this extraordi The command clipbox dim stuff puts stuff in an hbox and then clips around the boundary of the box at a distance dim from the box the default is Opt The pspicture environment also lets you clip the picture to the boundary The command psclip graphics endpsclip sets the clipping path to the path drawn by the graphics object s until the endpsclip command is reache
31. is behind stuff This is useful for positioning text on top of something else arg refers to other arguments that vary from one put command to another The optional rotation is the angle by which stuff should be rotated this arguments works pretty much the same for all put commands and is de scribed further below The lt coor gt argument is the coordinate for posi tioning stuff but what this really means is different for each put command The lt coor gt argument is shown to be obligatory but you can actually omit it if you include the rotation argument The rotation argument should be an angle as described in Section 4 but the angle can be preceded by an This causes all the rotations except the box rotations described in Section 29 within which the rput command is be nested to be undone before setting the angle of rotation This is mainly use ful for getting a piece of text right side up when it is nested inside rotations For example Placing and rotating whatever 42 stuff Here is a marginal note rput 34 psframe 1 0 2 1 Lu NY e rput br 0 2 1 emph stuff There are also some letter abbreviations for the command angles These indicate which way is up Letter Short for Equiv to Letter Short for Equiv to U Up 0 N North 0 L Left 90 W West 90 D Down 180 S South 180 R Right 270 E East 270 This section describes just a two of the PSTricks put commands The most basic one command is
32. is named wrap wrap lt infile gt outfile awk BEGIN N 78 Max line length o 0 A O t BR WN ro if length 0 lt N 10 print 11 else 12 currlength 0 13 for i 2 1 i lt NF i f 14 if currlength currlength length i 1 gt N 15 printf printf currlength length i 16 17 else 18 printf V 96s 19 printf Troubleshooting 119 3 Thecolor commands cause extraneous vertical space to be inserted For example this can happen if you start a IATEX parbox or a p column with a color command The solution usually is to precede the color com mand with leavevmode 4 The color commands interfere with other color macros use Try putting the command altcolormode at the beginning of your docu ment This may or may not help Be extra careful that the scope of color commands does not extend across pages This is generally a less robust color scheme 5 How do I stop floats from being the same color as surrounding ma terial That s easy Just put an explicit color command at the beginning of the float e g black 6 When I use some color command in box macros or with setbox the colors get all screwed up If mybox is a box register and you write reen Ho Hum setbox mybox hbox Foo bar blue fee fum Hi Ho ved Diddley dee box mybox hum dee do Bw Ne then when mybox is inserted the current color is red and so Foo bar comes out red rather
33. is used in this User s Guide to remind you that you must input a file before using the macros it contains For most PSTricks macros even if you misuse them you will not get PostScript errors in the output However it is recommended that you re solve any TEX errors before attempting to print your document A few PSTricks macros pass on PostScript errors without warning Use these with care especially if you are using a networked printer because PostScript er rors can cause a printer to bomb Such macros are pointed out in strong terms using a warning like this one Welcome to PSTricks 1 Warning Use macros that do not check for PostScript errors with care PostScript errors can cause a printer to bomb Keep in mind the following typographical conventions in this User s Guide e All literal input characters i e those that should appear verbatim in your input file appear in upright Helvetica and Helvetica Bold fonts e Meta arguments for which you are supposed to substitute a value e g angle appear in slanted Helvetica Oblique and Helvetica BoldOblique fonts e The main entry for a macro or parameter that states its syntax ap pears in a large bold font except for the optional arguments which are in medium weight This is how you can recognize the optional arguments e References to PSTricks commands and parameters within paragraphs are set in Helvetica Bold Welcome to PSTricks 2 The Essentials 1 Argument
34. it as you please with def or IATEX s venewcommand For example here I use ncdiag with armA 0 to get all the node connec tions to emanate from the same point in the predecessor STEX users can instead type renewcommand psedge ncdiag armA 0 angleB 180 armB 1cm Edges 90 def psedge ncdiaglarmA 0 angleB 180 armB 1cm pstree treemode R levelsep 3 5cm framesep 2pt Tc 6pt small Tcircle K Tcircle L Tcircle M Tcircle N Bow Ne Q Du Here is an example with ncdiagg Note the use of a negative armA value so that the corners of the edges are vertically aligned even though the nodes have different sizes def psedge 1 2 ncdiagg angleA 180 armA 3cm nodesep 4pt 2 1 Or renewcommand psedge 2 pstree treemode R levelsep 5cm Tc 3pt Tr z_1 leq y Tr z_1 lt y leq z_2 Tr z_2 lt y leq x Tr x lt y o 0 A O t BR Q0 N na Another way to define psedge is with the edge command Default ncline parameter Be sure to enclose the value in braces if it contains commas or other parameter delimiters This gets messy if your command is long and you can t use arguments like in the preceding example but for simple changes it is useful For example if I want to switch between a few node Edges 91 X gt lt Z connections frequently I might define a command for each node connec tion and then u
35. it in the same document after the PSTtoEPS command and as many times as you want Unlike with dvips E only pure graphics objects are processed e g rput commands have no effect PSTtoEPS cannot calculate the bounding box of the EPS file You have to specify it yourself by setting the following parameters bbilx dim Default Opt bblly dim Default Opt bburx dim Default Opt bbury dim Default Opt Note that if the EPS file is only to be included in a PSTricks picture with rput you might as well leave the default bounding box PSTricksEPS also uses the following parameters makeepsznone new all all Default new This parameter determines which PSTtoEPS commands just skip over their arguments and which create files as follows none No files are created new Only those files not found anywhere on the system are created all All files are created all All files are created but you are asked for approval before exist ing files are deleted headerfile files Default This parameter is for specifying PostScript header files that are to be included in the EPS file The argument should contain one or more 7 See the preceding section on importing EPS files Exporting EPS files 112 file names separated by commas If you have more than one file however the entire list must be enclosed in braces headers none all user Default none When none no header files are included When all the header files used by PS
36. just sets both arcsepA and arcsepB These parameters make it easy to draw two intersecting lines and then use psarc with arrows to indicate the angle between them For example SpecialCoor psline linewidth 2pt 4 50 0 0 4 10 w NY ro psarc arcsepB 2pt gt 3 10 50 psarcn par arrows x y radius angleA angleB This is like psare but the arc is drawn clockwise You can achieve the same effect using psare by switching angleA and angleB and the arrows psellipticarc par arrows x0 y0 x1 y1 angleA angleB This draws an elliptic from angleA to angleB going counter clock wise with x0 y0 the center of the ellipse and x1 and y1 the hori zontal and vertical radii respectively For example 1 psellipticarc showpoints true arrowscale 2 gt 5 0 1 5 1 215 0 However with pscustom graphics object described in Part IV Wsarcn is not redundant Arcs circles and ellipses 13 See how showpoints true draws a dashed line from the center to the arc this is useful when composing pictures Like psarc psellipticarc use the arcsep arcsepA arcsepB pa rameters Unlike psarc psellipticarcuse the dimen inner middle outer parameter W sellipticarcn par arrows x0 yO x1 y 11 angleAM angleB This is like psellipticarc but the arc is drawn clockwise You can achieve the same effect using psellipticarc by switching angleA and angleB and the arrows 8 Curves W s
37. mygray of this line SpecialCoor degrees 1 1 multido n 0 0 1 11 newgray mygray n psset fillcolor mygray rput n pswedge 3 05 05 uput 3 2 n 0 0 small n end pspicture Cm A O t BR WN ro Repetition 46 0 9 0 8 All of these loop macros can be nested 26 Axes The axes command described in this section is defined in pst plot tex pst plot sty which you must input first pst plot tex in turn will automat ically input multido tex which is used for putting the labels on the axes The macro for making axes is psaxes par arrows x0 yO x1 y 1 x2 y2 The coordinates must be Cartesian coordinates They work the same way as with psgrid That is if we imagine that the axes are enclosed in a rectangle x1 y1 and x2 y2 are opposing corners of the rectangle Le the x axis extends from x1 to x2 and the y axis extends from y1 to y2 The axes intersect at x0 y0 For example 1 psaxes linewidth 1 2pt labels none 2 ticks none 2 1 0 0 4 3 If xO yO is omitted then the origin is x1 y1 If both x0 yO and x1 vi are omitted 0 0 is used as the default For example when the axes enclose a single orthont only X2 y2 is needed Axes 47 1 mE 1 psaxes gt 4 2 0 0 1 2 3 Labels numbers are put next to the axes on the same side as x7 and y1 Thus if we enclose a different orthont the numbers end u
38. of the EPS file If you need to determine the bounding box of an EPS file then you can try of the automatic bounding box calculating programs such as bbfig distributed with Rokicki s dvips However all such programs are eas ily fooled the only sure way to determine the bounding box is visually psgrid is a good tool for this 55 Exporting EPS files You must load pst eps tex or pst eps sty to use the PSTricks macros de scribed in this section If you want to export an EPS file that contains both graphics and text then you need to be using a DVI to PS driver that suports such a feature If you just want to export pure graphics then you can use the PSTricksEPS command Both of these options are described in this section Newer versions of Rokicki s dvips support an E option for creating EPS files from TEX dvi files E g dvipsfoo dvi E ofoo eps Your document should be a single page dvips will find a tight bounding box that just encloses the printed characters on the page This works best with outline PostScript fonts so that the EPS file is scalable and resolution independent There are two inconvenient aspects of this method You may want a differ ent bounding box than the one calculated by dvips in particular dvips ig nores all the PostScript generated by PSTricks when calculating the bound ing box and you may have to go out of your way to turn off any headers and footers that would be added by output routines
39. on any side of the node left right above or below set tnposz r a b Default 1 psframebox 2 pstree Tc 3pt tnpos a tndepth Opt radius 4pt root 3 TC tnpos l h 4 TC tnpos r i When you leave the argument empty which is the default PSTricks chooses the label position is automatically To change the distance between the node and the label set tnsep dim Default When you leave the argument empty which is the default PSTricks uses the value of labelsep When the value is negative the distance is measured from the center of the node When labels are positioned below a node the label is given a minimum height of tnheight dim Default ht strutbox Thus if you add labels to several nodes that are horizontally aligned and if either these nodes have the same depth or tnsep is negative and if the height of each of the labels is no more than tnheight then the labels will also be aligned by their baselines The default is ht strutbox which in most Edge and node labels 95 TEX formats is the height of a typical line of text in the current font Note that the value of tnheight is not evaluated until it is used The positioning is similar for labels that go below a node The label is given a minimum depth of tndepthzdim Default dp strutbox For labels positioned above or below the horizontal reference point of the label i e the point in the label directly above or below the center of the
40. short version of Lput with no lt rotation gt or lt pos gt argument Lput and Mput remain part of PSTricks only for backwards compatibility Here are the node label commands lput refpoint rotation pos stuff The stands for label Here is an example illustrating the use of the optional star and lt angle gt with Iput as well as the use of the offset parameter with pcline Obsolete put commands 79 pspolygon 0 0 4 2 4 0 pcline offset 1 2pt 0 0 4 2 ves Lu H e lput U Length Remember that with the put commands you can omit the coordinate if you include the angle of rotation You are likely to use this feature with the node label commands With Mput and rput you have a lot of control over the position of the label E g label pcline 0 0 4 2 2 lput U rput r N 0 4 label puts the label upright on the page with right side located 4 cen timeters above the position 5 of the node connection above if the node connection points to the right However the aput and bput commands described below handle the most common cases without rput 7 Vaput abelsep angle pos stuff stuff is positioned distance pslabelsep above the node connection given the convention that node connections point to the right aput is a node connection variant of uput For example ge pspolygon 0 0 4 2 4 0 eS 2 pcline linestyle none 0 0 4 2 3 aput
41. than green which was the color in effect when the box was set The command that returns from blue to the current color green when the box is set is executed after the hbox is closed which means that Hi Ho is green but hum dee do is still blue This odd behavior is due to the fact that TEX does not support color in ternally the way it supports font commands The first thing to do is to explicitly bracket any color commands inside the box Second be sure that the current color is black when setting the box Third make other explicit color changes where necessary if you still have problems The color scheme invoked by altcolormode is slightly better behaved if you follow the first two rules Note that various box macros use setbox and so these anomalies can arise unexpectedly Troubleshooting 120 Index AltClipMode 55 110 altcolormode 120 120 angle parameter 62 66 105 angleA parameter 62 64 66 angleB parameter 62 64 66 Wout 81 NADU aere oc 80 80 81 arcangle parameter 62 arcangleA parameter 62 67 arcangleB parameter 62 arcsep parameter 13 14 arcsepA parameter 13 13 14 arcsepB parameter 13 13 14 arm parameter 62 62 68 armA parameter 62 65 90 91 armB parameter 62 63 65 arrowinset parameter 29 30 arrowlength parameter 29 30 AITOWS 39 arrows
42. the math style com mands automatically inserted at the beginning of each LR box using the everypsbox commands command 8 If you would like to define an LR box environment name from an LR box command cmd use pslongbox name cmd For example after pslongbox MyFrame psframebox you can write MyFrame lt stuff gt endMyFrame instead of psframebox lt stuff gt Also IATEX users can write begin MyFrame lt stuff gt end MyFrame It is up to you to be sure that cmd is a PSTricks LR box command if it isn t nasty errors can arise Environments like have nice properties e The syntax is clearer when stuff is long e Itis easier to build composite LR box commands For example here is a framed minipage environment for IATEX pslongbox MyFrame psframebox newenvironment fminipage MyFrame begin minipage end minipage endMyFrame Az LA LA e You include verbatim text and other catcode tricks in stuff 8This is a token register Boxes 115 The rest of this section elaborates on the inclusion of verbatim text in LR box environments and commands for those who are interested fancybox sty also contains some nice verbatim macros and tricks some of which are use ful for LR box commands The reason that you cannot normally include verbatim text in an LR box commands argument is that TEX reads the whole argument befo
43. won t happen naturally if the nodes are of different size as you can see in this example Node connections 67 Huge cnode 1 3 4pt a rput B 0 0 Rnode b H rput B 2 0 Rnode c a psset angleA 90 armA 1 nodesepA 3pt ncdiagg b a ncdiagg c a YN 0 t Fw Ye If you set the nodesep or arm parameter to a negative value PSTricks will measure the distance to the beginning of the node connection or to the end of the arm relative to the center of the node rather than relative to the boundary of the node or the beginning of the arm Here is how we fix the previous example Huge cnode 1 3 4pt a rput B 0 0 Rnode b H rput B 2 0 Rnode c a 1 psset angleA 90 armA 1 YnodesepA 12pt ncdiagg b a ncdiagg c a A t Fw YK Note also the use of Rnode One more parameter trick By using the border parameter you can create the impression that one node connection passes over another The node connection commands make interesting drawing tools as well as an alternative to psline for connecting two points There are variants of the node connection commands for this purpose Each begins with pc for point connection rather than nc E g pcarc lt gt 3 4 6 9 gives the same result as pnode 3 4 A pnode 6 9 B pcarc lt gt A B w H e Only nccircle does not have a pc variant Node connections 68 Command Corresponds to p
44. 0 70 pswedgeffillstyle solid fillcolor lightgray 2 70 200 pswedgeffillstyle solid fillcolor darkgray 2 200 360 SpecialCoor psset framesep 1 5pt rput 1 2 35 psframebox small 9 0M uput 2 2 45 0 0 Oreos ml rput 1 2 135 psframebox small 16 7M u uput 2 2 135 0 0 Heath 12 rput 1 2 280 psframebox small 23 1M 13 Wput 2 2 280 0 0 MV amp M 14 endpspicture o 0 A DH BR wu I Placing and rotating whatever 44 M amp M You can use the following abbreviations for refangle which indicate the direction the angle points Letter Short for Equiv to Letter Short for Equiv to r right 0 ur up right 45 u up 90 ul up left 135 left 180 dl down left 225 d down 270 dr down right 315 The first example could thus have been written 1 1 1 qdisk 1 1 1 pt d 2 uput ur 1 1 1 1 Driver notes The rotation macros use pstVerb and pstrotate 25 Repetition The macro Using the abbreviations when applicable is more efficient There is an obsolete command Rput that has the same syntax as uput and that works almost the same way except the refangle argument has the syntax of rput s refpoint argu ment and it gives the point in stuff that should be aligned with x y E g qdisk 4 0 2pt 5 Rput ti 4 0 x y x y Here is the equivalence between uput s refangle abbreviations and Rput s refpoint ab breviations uput r u
45. 1 pslineflinestyle dotted dotsep 2pt 4 1 border dim Default Opt A positive value draws a border of width dim and color bordercolor on each side of the curve This is useful for giving the impression that one line passes on top of another The value is saved in the dimension register psborder bordercolor co or Default white See border above For example psline 0 0 1 8 3 psline border 2pt gt 0 3 1 8 0 3 psframe linecolor gray 2 0 4 3 psline linecolor white linewidth 1 5pt lt gt 2 2 0 3 8 3 psellipseflinecolor white linewidth 1 bot bordercolor gray border 2pt 3 1 5 7 1 4 doubleline true false Default false When true a double line is drawn separated by a space that is doublesep wide and of color doublecolor This doesn t work as expected with the dashed linestyle and some arrows look funny as well doublesep dim Default 1 25 pslinewidth See doubleline above doublecolor co or Default white See doubleline above Here is an example of double lines 1 psline doubleline true linearc 5 2 doublesep 1 5pt gt 0 0 3 1 4 0 Line styles 25 shadowztrue false Default false When true a shadow is drawn at a distance shadowsize from the original curve in the direction shadowangle and of color shadowcolor shadowsize dim Default 3pt See shadow above shadowangle angle Default 45 See shadow above shadowcolorzcolor Default darkgray
46. 10 pscharpath 109 110 pscircle 00 12 26 Wscircle 0 12 pscirclebox 51 52 52 59 psclip 54 54 55 110 psCoil 103 103 104 pscoil 103 103 104 pscurve 15 16 19 34 37 pscustom 13 14 32 32 34 36 37 39 46 54 60 psdblframebox 51 psdiabox 53 53 psdiamond 11 11 psdot 16 60 psdots 16 19 33 WMsecurve e 16 19 Wsedge eee eee 91 psellipse 12 26 psellipticarc 13 14 psellipticarcn 14 14 125 psframe 8 10 11 11 26 50 51 60 psframebox 51 51 53 psgrid 17 17 19 33 47 110 111 pshatchcolor 27 pshlabel 50 Wslabelsep 44 50 80 Wslbrace 0000e 118 Wsline 7 10 10 11 19 22 31 34 50 68 118 pslinecolor 05 8 pslinewidth 8 pslongbox 115 116 psmathboxfalse 114 psmathboxtrue 114 psmatrix 57 75 75 76 78 79 psovalbox 51 53 59 psoverlay 106 106 pspicture 18 41 41 42 54 57 110 pspicture parameter 41 Wsplot 22 22 23 pspolygon 10 11 19 20 psrbrace 118 KL EE 7 psscalebox 55 psscaleboxto 56 psse
47. See shadow above Here is an example of the shadow feature which should look familiar 1 spolygon linearcz2pt shadow true shadowangle 45 2 xunit 1 1 1 55 1 5 8 5 8 65 3 2 65 2 5 1 5 1 55 Here is another graphics parameter that is related to lines but that applies only to the closed graphics objects psframe pscircle psellipse and pswedge dimen outer inner middle Default outer It determines whether the dimensions refer to the inside outside or middle of the boundary The difference is noticeable when the linewidth is large psset linewidth 25cm psframe dimen inner 0 0 2 1 psframe dimen middle 0 2 2 3 psframe dimen outer 3 0 4 3 Bw H ro 3 4 With pswedge this only affects the radius the origin always lies in the middle the boundary The right setting of this parameter depends on how you want to align other objects 14 Fill styles The next group of graphics parameters determine how closed regions are filled Even open curves can be filled this does not affect how the curve is painted Fill styles 26 fillstylez style Default none Valid styles are none solid vlines vlines hlines hlines crosshatch and crosshatch vlines hlines and crosshatch draw a pattern of lines according to the four parameters list below that are prefixed with hatch The versions also fill the background as in the solid style fillcolor co or Default white
48. This segment connects to arm B the way arm A connects to arm B with ncline that is two more segments are drawn which join the first segment and each other at right angles and then join arm B For example 1 rnode a psframebox Huge A loop ncloop angleB 180 loopsize 1 arm 5 linearc 2 gt a a In this example node A and node B are the same node You can do this with all the node connections but it doesn t always make sense Here is an example where ncloop connects two different nodes parbox 3cm rnode A psframebox large textbf Begin Wspace 1cm Mspace Vill rnode B psframebox large textbf End ncloop angleA 180 loopsize 9 arm 5 linearc 2 gt A B loopsize Un e 0 N e The next two node connections are a little different from the rest WMiccurve par arrows nodeA nodeB nccurve draws a bezier curve between the nodes 1 rput bl 0 0 rnode A psframebox Node A 2 rput tr 4 3 ovalnode B Node B s nccurve angleB 1 80 A B Node connections 65 back You specify the angle at which the curve joins the nodes by setting the angle and angleA and angleB parameter The distance to the control points is set with the ncurv num Default 67 and ncurvA and ncurvB parameter A lower number gives a tighter curve The distance between the beginning of the arc and the first control point is one half ncurvA times the distance between the two e
49. Tricks plus the header files specified by the headerfile parameter are included When user only the header files specified by the headerfile parameter are included If the EPS file is to be included in a TEX document that uses the same PSTricks macros and hence loads the relevant PSTricks header files anyway in particular if the EPS file is to be included in the same document then headers should be none or user Exporting EPS files 113 Help A Boxes Many of the PSTricks macros have an argument for text that is processed in restricted horizontal mode in IATEX parlance LR mode and then trans formed in some way This is always the macro s last argument and it is written lt stuff gt in this User s Guide Examples are the framing rotating scaling positioning and node macros I will call these LR box macros and use framing as the leading example in the discussion below In restricted horizontal mode the input consisting of regular characters and boxes is made into one long or short line There is no line breaking nor can there be vertical mode material such as an entire displayed equation However the fact that you can include another box means that this isn t really a restriction For one thing alignment environments such as halign or IATEX s tabular are just boxes and thus present no problem Picture environments and the box macros themselves are also just boxes Actually there isn t a single PSTricks command t
50. alCoor lets you use polar coordinates in the form r a where r is the radius a dimension and ais the angle see below You can still use Cartesian coordinates For a complete description of SpecialCoor see Section 49 The unit parameter actually sets the following three parameters xunit dim Default 1cm yunit dim Default 1cm runit dim Default 1cm These are the default units for x coordinates y coordinates and all other coordinates respectively By setting these independently you can scale the x and y dimensions in Cartesian coordinate unevenly After changing yunit to 1pt the two psline s below are equivalent psset yunit 1pt psline Ocm 20pt 5cm 80pt psline 0 20 5 80 w Nn e The values of the runit xunit and yunit parameters are stored in the di mension registers psunit also psrunit psxunit and psyunit Angles in polar coordinates and other arguments should be a number giv ing the angle in degrees by default You can also change the units used for angles with the command degrees num num should be the number of units in a circle For example you might use degrees 100 to make a pie chart when you know the shares in percentages degrees without the argument is the same as degrees 360 Dimensions coordinates and angles 7 The command radians is short for degrees 6 28319 SpecialCoor lets you specify angles in other ways as we
51. arameter 95 95 96 tnpos parameter 95 tnsep parameter 95 95 96 tnyref parameter 96 96 Toval er Drm 83 Io 83 HES EE 109 tpos parameter 73 05 H qs 83 l ET 83 83 85 INDEX translate 37 treefit parameter 87 87 88 treeflip parameter 87 93 treemode parameter 86 86 87 treenodesize parameter 88 88 treesep parameter 87 87 88 MEIDOX c dodo hoe bota 60 trimode parameter 53 trinode 60 trput 73 73 74 93 MSDaCO os rest eerte 89 Mp A Sn epson 83 MVDU ecce mee 73 73 unit parameter 6 6 7 19 105 uput 44 44 45 70 75 80 vref parameter 59 59 96 xbbd parameter 96 xbbh parameter 96 xbbl parameter 96 xbbr parameter 96 xunit parameter 7 7 18 19 105 yref parameter yunit parameter 7 7 18 19 105 127
52. atureznum1 num2 num3 Default 1 10 You have to just play around with this parameter to get what you want Individual values outside the range 1 to 1 are either ignored or are for entertainment only Below is an explanation of what each number does A B and C refer to three consecutive points Lower values of num1 make the curve tighter Lower values of num2 tighten the curve where the angle ABC is greater than 45 degrees and loosen the curve elsewhere num3 determines the slope at each point If num3 0 then the curve is perpendicular at B to the bisection of ABC If num3 1 then the curve at B is parallel to the line AC With this value and only this value scaling the coordinates causes the curve to scale propor tionately However positive values can look better with irregularly spaced coordinates Values less than 1 or greater than 2 are con verted to 1 and 2 respectively Here are the three curve interpolation macros W scurve par arrows x1 vi xn yn This interpolates an open curve through the points For example 1 pscurve showpoints true lt gt 0 1 3 0 7 1 8 2 3 3 0 5 4 1 6 0 4 0 4 Note the use of showpoints true to see the points This is helpful when constructing a curve Curves 15 W securve par arrows x1 y1 xn yn This is like pscurve but the curve is not extended to the first and last points This gets around the problem of trying to determine how the curve s
53. ay want to use the PSTtoEPS command described on page 112 This will also reduce TEX s memory requirements Wataplot par commands dataplot is also for plotting lists of data generated by other pro grams but you first have to retrieve the data with one of the following commands savedata command data readdata command file data or the data in file should conform to the rules described above for the data in fileplot with savedata the data must be delimited by TL and with readdata bracketing the data with speeds things up You can concatenate and reuse lists as in readdata foo foo data readdata bar bar data dataplot foo bar dataplot origin 0 1 bar Rw Ne The readdata and dataplot combination is faster than fileplot if you reuse the data fileplot uses less of TEX s memory than read data and dataplot if you are also use PSTtoEPS Here is a plot of Integral sin x The data was generated by Mathe matica with Table x N SinIntegral x x 0 20 and then copied to this document 1 psset xunit 2cm yunit 1 5cm savedata mydata 0 0 1 0 946083 2 1 60541 3 1 84865 4 1 7582 5 1 54993 6 1 42469 7 1 4546 8 1 57419 9 1 66504 10 1 65835 11 1 57831 12 1 50497 13 1 49936 14 1 55621 15 1 61819 16 1 6313 17 1 59014 18 1 53661 19 1 51863 20 1 54824 dataplo
54. bels using rudimentary fixed point arithmetic and it will come up with the wrong answer unless Ox and Dx or Oy and Dy have the same number of digits to the right of the decimal The only exception is that Ox or Oy can always be an integer even if Dx or Dy is not The converse does not work however Note that psaxes s first coordinate argument determines the physical po sition of the origin but it doesn t affect the label at the origin E g if the origin is at 1 1 the origin is still labeled O along each axis unless you explicitly change Ox and Oy For example 1 psaxes Ox 2 2 0 2 3 2 The ticks and labels use a few other parameters as well labels all x y none Default all To specify whether labels appear on both axes the x axis the y axis or neither showorigin true false Default true If true then labels are placed at the origin as long as the label doesn t end up on one of the axes If false the labels are never placed at the origin ticks all x y none Default all To specify whether ticks appear on both axes the x axis the y axis or neither Bor example Ox 1 0 and Dx 1 4 is okay as is Ox 1 and Dx 1 4 but Ox 1 4 and Dx 1 or Ox 1 4 and Dx 1 15 is not okay If you get this wrong PSTricks won t com plain but you won t get the right labels either Axes 49 tickstylezfull top bottom Default full For example if tickstyle top then the ticks are only on the side of the axes away f
55. bezier par arrows x0 yO x1 y 1 x2 y2 x3 y3 psbezier draws a bezier curve with the four control points The curve starts at the first coordinate tangent to the line connecting to the second coordinate It ends at the last coordinate tangent to the line connecting to the third coordinate The second and third coor dinates in addition to determining the tangency of the curve at the endpoints also pull the curve towards themselves For example 1 psbezier linewidth 2pt showpoints true gt 0 0 1 4 2 1 4 3 5 showpoints true puts dots in all the control points and connects them by dashed lines which is useful when adjusting your bezier curve W arabola par arrows x0 yO x1 y1 Starting at XO yO parabola draws the parabola that passes through x0 yO and whose maximum or minimum is x1 y1 For example However with pscustom graphics object described in Part IV Wsellipticarcn is not redundant Curves 14 parabola 1 1 2 3 psset xunit 01 parabola lt gt 400 3 200 0 w nn e The next three graphics objects interpolate an open or closed curve through the given points The curve at each interior point is perpendicular to the line bisecting the angle ABC where B is the interior point and A and C are the neighboring points Scaling the coordinates does not cause the curve to scale proportionately The curvature is controlled by the following parameter curv
56. cline arrows x1 y1 x2 y2 ncline pccurve arrows x1 y1 x2 y2 nccurve pcarc arrows x1 y1 x2 y2 ncarc pcbar arrows x1 y1 x2 y2 ncbar pcdiag arrows x1 y1 x2 y2 ncdiag pcdiagg arrows x1 y1 x2 y2 ncdiagg pcangle arrows x1 y 1 x2 y2 ncangle pcangles arrows x1 y1 x2 y2 ncangles pcloop arrows x1 y1 x2 y2 ncloop pcbox x7 y1 x2 y2 ncbox pcarcbox x7 y1 x2 y2 ncarcbox 32 Node connections labels Now we come to the commands for attaching labels to the node connec tions The label command must come right after the node connection to which the label is to be attached You can attach more than one label to a node connection and a label can include more nodes The node label commands must end up on the same TEX page as the node connection to which the label corresponds There are two groups of connection labels which differ in how they select the point on the node connection In this section we describe the first group ncput par stuff naput par stuff nbput par stuff These three command differ in where the labels end up with respect to the line ncput on the line naput above the line nbput below the line using the convention that node connections go from left to right Here is an example Node connections labels 69 Lee cnode 0 0 5cm root cnode 3 1 5 4pt A cnode 3 0 4pt B cnode 3 1 5 4pt C
57. collide with someone else s definitions if there are multiple authors contributing to the document Safest Create a dictionary named TDict for your scratch computations Be sure to remove it from the dictionary stack at the end of any code you insert in an argument E g Including PostScript code 118 TDict 10 dict def TDict begin your code end D Troubleshooting 1 Why does the document bomb in the printer when the first item in a IATEX file is a float When the first item in a BIEX file is a float special s in the preamble are discarded In particular the special for including PSTricks s header file is lost The workaround is to but something before the float or to include the header file by a command line option with your dvi to ps driver 2 lconverted a dvi file to PostScript and then mailed it to a colleague It prints fine for me but bombs on her printer Here is the most likely but not the only cause of this problem The PostScript files you get when using PSTricks can contain long lines This should be acceptable to any proper PostScript interpreter but the lines can get chopped when mailing the file There is no way to fix this in PSTricks but you can make a point of wrapping the lines of your PostScript files when mailing them E g on UNIX you can use uuencode and uudecode or you can use the following AWK script to wrap the lines bin sh This script wraps all lines Usage if script
58. com mands that you can use in pscustom for drawing paths Some of these the open curves can also draw arrows pscustom fills and strokes the path at the end and for special effects you can fill and stroke the path along the way using Mill and stroke see below Driver notes pscustom uses pstverb and pstunit There are system dependent limits on how long the argument of special can be You may run into this limit using pscustom because all the PostScript code accumulated by pscustom is the argument of a single special command 18 Parameters You need to keep the separation between drawing stroking and filling paths in mind when setting graphics parameters The linewidth and linecolor parameters affect the drawing of arrows but since the path commands do not stroke or fill the paths these parameters and the linestyle fillstyle and related parameters do not have any other effect except that in some cases Custom graphics 32 linewidth is used in some calculations when drawing the path pscus tom and Mill make use of fillstyle and related parameters and pscustom and stroke make use of plinestyle and related parameters For example if you include psline linewidth 2pt linecolor blue fillstyle vlines lt 3 3 4 0 in pscustom then the changes to linewidth and linecolor will affect the size and color of the arrow but not of the line when it is stroked and the change to fillstyle will have no effect a
59. d psclip and endpsclip must be properly nested with respect to TEX grouping Only pure graphics those described in Part II and pscustom are permitted An Overfull hbox warning indi cates that the graphics argument contains extraneous output or space Note that the graphics objects otherwise act as usual and the psclip does not otherwise affect the surrounded text Here is an example parbox 4 5cm psclip psccurve linestyle none 3 2 0 3 1 5 2 3 2 4 3 1 5 6 3 2 8 1 5 8 2 3 2 One of the best new plays have seen all year cool poetic ironic Ndots proclaimed emph The Guardian upon the London premiere of this extraordinary play about a Czech director and his actress wife confronting exile in America vspace 1cm endpsclip oe u o t e La N If you don t want the outline to be painted you need to include linestyleznone in the parameter changes You can actually include more than one graphics object in the argument in which case the clipping path is set to the inter section of the paths psclip can be a useful tool in picture environments For example here it is used to shade the region between two curves Clipping 54 1 psclip 2 Wscustom linestyle2none 96 3 psplot 5 4 2 x div 4 lineto 4 4 zl pscustom linestyle none 6 7 8 psplot 0 3 38 x x mul 3 div sub lineto 0 0 psframe linecolor gray 0 0 4 4 9 endpsclip 10 psplot linewidth 1 orl
60. d such Lines and other open curves can be terminated with various arrowheads t bars or circles The arrows style Default parameter determines what you get It can have the following values which are pretty intuitive Value Example Name None lt gt lt _ Arrowheads gt lt 0 Reverse arrowheads lt lt Double arrowheads Double reverse arrowheads 1 4 T bars flush to endpoints FH T bars centered on endpoints lt gt kl T bars and arrowheads lt gt kl T bars and arrowheads flush E 4 Square brackets Rounded brackets o o 9 9 Circles centered on endpoints b i 7 ve Disks centered on endpoints 00 00 9 Circles flush to endpoints eg Disks flush to endpoints C C Extended rounded ends cc cc Flush round ends C C Extended square ends You can also mix and match E g gt and gt are all valid values of the arrows parameter Well perhaps the c cc and C arrows are not so obvious c and C correspond to setting PostScript s linecap to 1 and 2 respectively cc is like c but adjusted so that the line flush to the endpoint These arrows styles are noticeable when the linewidth is thick This is TEX s version of WYSIWYG Arrowheads and such 28 psline linewidth 5cm 0 0 x psline linewidth 5cm c c CC
61. de the parameter change or you have to set it before the node As noted at the beginning of this section parameter changes made with pstree affect all subtrees However there are variants of some of these parameters for making local changes i e changes that affects only the cur rent level thistreesep dim Default thistreenodesize dim Default thistreefit tight loose Default thislevelsep dim Default For example pstree thislevelsep 5cm thistreesep 2cm radius 2pt Tc 3pt pstree TC TC TC v N e pstree TC TC TC There are some things you may want set uniformly across a level in the tree such as the levelsep At level n the command pstreehook lt roman n gt The scope of parameter changes 99 e g pstreehookii is executed if it is defined the root node of the whole tree is level 0 the successor tree objects and the node connections from the root node to these successors is level 1 etc In the following example the levelsep is changed for level 2 without having to set the thislevelsep parameter for each of the three subtrees that make of level 2 Y def pstreehookiii psset thislevelsep 3cm pstree treemode R levelsep 1cm radius 2pt Tc 4pt pstree TC pstree TC Tr X_1 Tr X_2 pstree TC Tr Y_1 Tr Y_2 pstree TC pstree TC Tr K_1 Tr K_2 pstree TC Tr J_1 Tr J_2 m N o 0 A O u BR wu I y X
62. e below to draw closed curves Open The open graphics objects are the most useful commands for draw ing paths with pscustom By piecing together several open curves you can draw arbitrary paths The rest of this section pertains to the open graphics objects By default the open curves draw a straight line between the current point if it exists and the beginning of the curve except when the curve begins with an arrow For example psarc 0 0 1 5 5 85 psarcn gt 0 0 3 85 5 Also the following curves make use of the current point if it exists as a first coordinate psline and pscurve The plot commands with the line or curve plotstyle psbezier if you only include three coordinates For example 1 pscustom linewidth 1 5pt 2 psplot plotstyle curve 67 4 2 x div al psline 4 3 We ll see later how to make that one more interesting Here is another example The closed objects never use the current point as an coordinate but typically they will close any existing paths and they might draw a line between the currentpoint and the closed curved Graphics objects 34 Wsline linearc 2 0 2 0 0 2 2 1 psbezier gt 2 2 3 3 1 0 4 3 However you can control how the open curves treat the current point with the liftpenz0 1 2 Default 0 parameter If liftpen 0 you get the default behavior described above For example 1 pscustom linewidth 2pt fillst
63. e divisions E g if the value of these is 1pt and then you type psgrid 0 0 10in 10in you will get a grid with 723 main divisions and 3615 subdivisions Ac tually psgrid allows at most 500 divisions or subdivisions to limit the damage done by this kind of mistake Probably you want to set unit to Bin or 1in as in psgrid unit 5in 0 0 20 20 11 Plots The plotting commands described in this part are defined in pst plot tex pst plot sty which you must load first The psdots psline pspolygon pscurve psecurve and psccurve graphics objects let you plot data in a variety of ways However first you Plots 19 have to generate the data and enter it as coordinate pairs x y The plotting macros in this section give you other ways to get and use the data Section 26 tells you how to generate axes To parameter plotstyle style Default line determines what kind of plot you get Valid styles are dots line polygon curve ecurve ccurve E g if the plotstyle is polygon then the macro becomes a variant of the pspolygon object You can use arrows with the plot styles that are open curves but there is no optional argument for specifying the arrows You have to use the arrows parameter instead Warning No PostScript error checking is provided for the data arguments Read Appendix C before including PostScript code in the arguments There are system dependent limits on the am
64. e optional num is included linewidth plus dim bracketlength num Default 15 The height of a square bracket is num times its width rbracketlengthz num Default 15 The height of a round bracket is num times its width arrowscale arrowscale num1 num2 Default 1 Imagine that arrows and such point down This scales the width of the arrows by num1 and the length height by num2 If you only in clude one number the arrows are scaled the same in both directions Changing arrowscale can give you special effects not possible by changing the parameters described above E g you can change the width of lines used to draw brackets The size of dots is controlled by the dotsize parameter 16 Custom styles You can define customized versions of any macro that has parameter changes as an optional first argument using the newpsobject command newpsobject name object part value7 as in Custom styles 30 newpsobject myline psline linecolor green linestyle dotted newpsobject mygrid psgrid subgriddiv 1 griddots 10 gridlabels 7pt n w The first argument is the name of the new command you want to define The second argument is the name of the graphics object Note that both of these arguments are given without the backslash The third argument is the special parameter values that you want to set With the above examples the commands myline and mygrid work just like the graphics obj
65. e two nodes with an arc cnodeput 0 0 A X cnodeput 3 2 B Y psset nodesep 3pt ncarc gt A B ncarc gt B A vu e v N e 16When a node name cannot be found on the same page as the node connection command you get either no node connection or a nonsense node connection However TEX will not report any errors Node connections 61 The angle between the arc and the line between the two nodes is arcangle angle Default 8 ncline and ncarc both determine the angle at which the node connections join by the relative position of the two nodes With the next group of node connections you specify one or both of the angles in absolute terms by setting the angle angle Default 0 and angleA and angleB parameter You also specify the length of the line segment where the node connection joins at one or both of the ends the arms by setting the arm dim Default 10pt and armA and armB parameter These node connections all consist of several line segments including the arms The value of linearc is used for rounding the corners Here they are starting with the simplest one ncdiag par arrows nodeA nodeB An arm is drawn at each node joining at angle angleA or angleB and with a length of armA or armB Then the two arms are con nected by a straight line so that the whole line has three line seg ments For example rput tl 0 3 rnode A psframebox Node A rput br 4 0
66. ect psline it is based on and you can even reset the parameters that you set when defining myline as in myline linecolor gray dotsep 2pt 5 6 Another way to define custom graphics parameter configurations is with the Wewpsstyle name par1zvaluef command You can then set the style graphics parameter to name rather than setting the parameters given in the second argument of newpsstyle For example newpsstyle mystyle linecolor green linestyle dotted psline style mystyle 5 6 N Custom styles 31 Custom graphics 17 The basics PSTricks contains a large palette of graphics objects but sometimes you need something special For example you might want to shade the region between two curves The W scustom par commands command lets you roll you own graphics object Let s review how PostScript handles graphics A path is a line in the math ematical sense rather than the visual sense A path can have several discon nected segments and it can be open or closed PostScript has various oper ators for making paths The end of the path is called the current point but if there is no path then there is no current point To turn the path into some thing visual PostScript can fill the region enclosed by the path that is what fillstyle and such are about and stroke the path that is what linestyle and such are about At the beginning of pscustom there is no path There are various
67. ect when pstextpath occurs not inside the text argument More things you might want to know e Like with rput and the graphics objects it is up to you to leave space for pstextpath e Results are unpredictable if text is wider than length of path e pstextpath leaves the typesetting to TEX It just intercepts the show operator to remap the coordinate system 53 Stroking and filling character paths The file pst char tex pst char sty defines the command pscharpath par text It strokes and fills the text character paths using the PSTricks linestyle and fillstyle Stroking and filling character paths 109 The restrictions on DVI to PS drivers listed on page 108 for pstextpath apply to pscharpath Furthermore only outline PostScript fonts are af fected Sample input and output files chartest tex and chartest ps are distributed with PSTricks With the optional the character path is not removed from the PostScript environment at the end This is mainly for special hacks For example you can use pscharpath in the first argument of pstextpath and thus typeset text along the character path of some other text See the sample file denis1 tex However you cannot combine pscharpath and pstextpath in any other way E g you cannot typeset character outlines along a path and then fill and stroke the outlines with pscharpath The command W scharclip par text endpscharclip works just like pscharpath b
68. ent Note that both coordinates are obligatory and there is no optional Basic graphics objects 10 argument for setting parameters use psset if you need to change the linewidth or whatever For example 1 qline 0 0 2 1 pspolygon par x0 y0 x1 y1 x2 y2 xn yn This is similar to psline but it draws a closed path For example W sframe par xO yO x1 y1 psframe draws a rectangle with opposing corners x0 y0 and x1 y1 For example 1 psframeflinewidth 2pt framearc 3 fillstyle solid 2 fillcolor lightgray 4 2 3 sframe linecolor2white 1 5 2 1 5 b 1 2 3 a W sdiamond par x0 yO x1 vil psdiamond draws a diamond centered at x0 y0 and with the half width and height equal to x7 and y1 respectively 1 psdiamond framearc 3 fillstyle solid 2 fillcolor lightgray 2 1 1 5 1 The diamond is rotated about the center by gangle gangle Default 0 pstriangle par x0 yO x1 y 1 Wstriangle draws an isosceles triangle with the base centered at x0 yO and with width base and height equal to x7 and y1 re spectively 1 pstriangle gangle 10 2 5 4 1 Lines and polygons 11 7 Arcs circles and ellipses W scircle par x0 yO radius This draws a circle whose center is at x0 yO and that has radius radius For example 1 pscircle linewidth 2pt 5 5 1 5 qdisk coon radius This is a streamlined version of pscircle Note that
69. ent point by a straight line as with psarc See page 104 if you want to use the nodes as coordinates in other PSTricks macros Node connections 60 nodeconnection par arrows nodeA nodeB A line of some sort is drawn from nodeA to nodeB Some of the node con nection commands are a little confusing but with a little experimentation you will figure them out and you will be amazed at the things you can do When we refer to the A and B nodes below we are referring only to the order in which the names are given as arguments to the node connection macros IP The node connections use many of the usual graphics parameters plus a few special ones Let s start with one that applies to all the node connec tions nodesep dim Default Opt nodesep is the border around the nodes that is added for the purpose of determining where to connect the lines For this and other node connection parameters you can set different values for the two ends of the node connection Set the parameter nodesepA for the first node and set nodesepB for the second node The first two node connections draw a line or arc directly between the two nodes ncline par arrows nodeA nodeB This draws a straight line between the nodes For example Idea 2 1 rput bl 0 0 rnode A ldea 1 2 rput tr 4 3 rnode B ldea 2 3 ncline nodesep 3pt lt gt A B Idea 1 ncarc par arrows nodeA nodeB This connects th
70. er after a PSTricks macro should not be a or Otherwise PSTricks might think that the or is actually part of the macro You can always get around this by inserting a pair of braces somewhere between the macro and the or The Essentials 3 2 Color The grayscales black darkgray gray lightgray and white and the colors red green blue cyan magenta and yellow are predefined in PS Tricks This means that these names can be used with the graphics objects that are described in later sections This also means that the command gray or Wed etc can be used much like Wm or Nt as in gray This stuff should be gray The commands gray red etc can be nested like the font commands as well There are a few important ways in which the color commands differ from the font commands 1 The color commands can be used in and out of math mode there are no restrictions other than proper TEX grouping 2 The color commands affect whatever is in their scope e g lines not simply characters 3 The scope of the color commands does not extend across pages 4 The color commands are not as robust as font commands when used inside box macros See page 120 for details You can avoid most problems by explicitly grouping color commands e g enclosing the scope in braces whenever these are in the argument of another command You can define or redefine additional colors and grayscales with the follow ing co
71. es before PSTricks gets the spacing right trees Compare the following example def psedge 1 2 ncdiagg nodesep 3pt angleA 180 armA 0 2 1 pstree treemode R levelsep 1cm Tr George Alexander Kopf VII pstree Tr Barry Santos Tr James Kyle Tr Ann Ada pstree Tr Terri Maloney Tr Uwe Kopf Tr Vera Kan OA d W N e Spacing between the root and successors 89 __ James Kyle Barry Santos Ann Ada George Alexander Kopf VII icc umet Uwe Kopf Terri Maloney Vera Kan with this one were the spacing between levels is fixed def psedge 1 2 ncdiagg nodesep 3pt angleA 180 armA 0 2 1 pstree treemode R levelsep 3cm Tr George Alexander Kopf VII pstree Tr Barry Santos Tr James Kyle Tr Ann Ada pstree Tr Terri Maloney Tr Uwe Kopf Tr Vera Kan vu e a N e __ James Kyle Barry Santos Ann Ada George Alexander Kopf VII how __ Uwe Kopf Terri Maloney Vera Kan 42 Edges Right after you use a tree node command pssucc is equal to the name of the node and pspred is equal to the name of the node s predecessor Therefore you can draw a line between the node and its predecessor by inserting for example ncline pspred pssucc To save you the trouble of doing this for every node each tree node executes psedge pspred pssucc The default definition of psedge is ncline but you can redefine
72. example rput tl 0 2 rnode A psframebox Node A rput br 4 0 ovalnode B Node_ B Lu N e ncangle angleB 90 armB 0 linearc 5 A B ncangles par arrows nodeA nodeB ncangles is similar to ncangle but the length of arm A is fixed by he armA parameter Arm A is connected to arm B by two line segments that eet arm A and each other at right angles The angle at which they join arm B and the length of the connecting segments depends on the positions of the two arms ncangles generally draws a total of four line segments For example rput tl 0 4 rnode A psframebox Node A rput br 4 0 ovalnode B Node B w Nn e ncangles angleA 90 armA 1cm armB 5cm linearc 15 A B Let s see what happens to the previous example when we change angleB Hence there is one more angle than ncangle and hence the s in ncangles Node connections 64 rput tl 0 4 rnode A psframebox Node A rput br 4 0 ovalnode B Node B ncangles angleA 90 angleB 135 armA 1cm armB 5cm linearc 15 A B Row Ne ncloop par arrows nodeA nodeB ncloop is also in the same family as ncangle and ncangles but now typically 5 line segments are drawn Hence ncloop can reach around to opposite sides of the nodes The lengths of the arms are fixed by armA and armB Starting at arm A ncloop makes a 90 degree turn to the left drawing a segment of length loopsize dim Default 1cm
73. f ways in addition to the usual Cartesian coordinates Processing is slightly There is an obsolete command Polar that causes coordinates in the form lt r gt lt a gt to be interpreted as polar coordinates The use of Polar is not recommended because it Special coordinates 104 slower and less robust which is why this feature is available on demand rather than by default but you probably won t notice the difference Here are the coordinates you can use x y The usual Cartesian coordinate E g 3 4 r a Polar coordinate with radius r and angle a The default unit for r is unit E g 3 110 node The center of node E g A par node The position relative to node determined using the angle nodesep and offset parameters E g angle 45 A ps Raw PostScript code ps should expand to a coordinate pair The units xunit and yunit are used For example if I want to use a polar coordinate 3 110 that is scaled along with xunit and yunit I can write IB 110 cos mul 3 110 sin mul coor coor2 The x coordinate from coor and the y coordinate from coor2 coor and coor2 can be any other coordinates for use with SpecialCoor For example A 1in 30 SpecialCoor also lets you specify angles in several ways num A number as usual with units given by the degrees command coor A coordinate indicating where the angle points to Be sure to in clude the in addition to whate
74. hat cannot be put directly in the argument of an LR box macro However entire paragraphs or other vertical mode material such as displayed equations need to be nested in a Wbox or IATEX parbox or minipage IATEX users should see fancybox sty and its documentation fancybox doc for extensive tips and trick for using LR box commands The PSTricks LR box macros have some features that are not found in most other LR box macros such as the standard IATEX LR box commands With IEX LR box commands the contents is always processed in text mode even when the box occurs in math mode PSTricks on the other hand preserves math mode and attempts to preserve the math style as well TEX has four math styles text display script and scriptscript Gen erally if the box macro occurs in displayed math but not in sub or su perscript math the contents are processed in display style and otherwise the contents are processed in text style even here the PSTricks macros can make mistakes but through no fault of their own If you don t get the right style explicitly include a textstyle displaystyle scriptstyle or scriptscriptstyle command at the beginning of the box macro s argument In case you want your PSTricks LR box commands to treat math in the same as your other LR box commands you can switch this feature on and off with the commands psmathboxtrue Help 114 psmathboxfalse You can have commands such as but not restricted to
75. he distance between successors For example ternary trees look nice when they are symmetric as in the following example 1 pstree nodesepB 8pt treenodesize 85 Tc 3pt 2 TR x y 3 TR x_1 y_1 Al TR x_ 11 y_ 11 Compare with this example where the spacing varies with the size of the nodes When all the terminal nodes are on the same level and the intermediate nodes are not wider than the base of their corresponding subtrees then there is no difference between the two methods The distance between successors 88 1 pstree nodesepB 8pt Tc 3pt TR x y TR x_1 y_1 e Ww N TR x_ 11 y_ 11 Finally if all else fails you can adjust the distance between two successors by inserting tspace dim between them 1 pstree Tc 3pt zl Tdia foo 3 Mspace 0 5 4 Toval and sl Ttri bar 41 Spacing between the root and successors The distance between the center lines of the tree levels is levelsep dim Default 2cm If you want the spacing between levels to vary with the size of the levels use the convention Then levelsep is the distance between the bottom of one level and the top of the next level or between the sides of the two levels for horizontal trees Note PSTricks has to write some information to your aux file if using BIEX or to jobname pst otherwise in order to calculate the spacing You have to run your input file a few tim
76. he nodes using nput However pstree won t take these labels into account when calculating the bounding boxes There is a special node label option for trees that does keep track of the bounding boxes par stuff Call this a tree node label Put a tree node label right after the node to which it applies before any node connection labels but node connection labels including the short forms can follow a tree node label The label is positioned directly below the node in vertical trees and similarly in other trees For example 1 pstree radius 2pt Tc 3pt nput 45 pssucc root TC h TC i TC j NTC k Note that there is no long form for this tree node label However you can change the single character used to delimit the label with Edge and node labels 94 root MakeShortTnput char7 If you find it confusing to use a single character you can also use a com mand sequence E g MakeShortTnput tnput You can have multiple labels but each successive label is positioned relative to the bounding box that includes the previous labels Thus the order in which the labels are placed makes a difference and not all combinations will produce satisfactory results You will probably find that the tree node label works well for terminal nodes without your intervention However you can control the tree node labels be setting several parameters To position the label
77. hese macros are called picture objects If you create a picture this way you will probably want to give the whole picture a certain size You can do this by putting the picture objects in a pspicture environment as in W spicture baseline xO yO x1 y 1 picture objects endpspicture The picture objects are put in a box whose lower left hand corner is at x0 yO by default 0 0 and whose upper right hand corner is at x1 y By default the baseline is set at the bottom of the box but the optional argument lt baseline gt sets the baseline fraction baseline from the bottom Thus baseline is a number generally but not necessarily between 0 and 1 If you include this argument but leave it empty then the baseline passes through the origin Normally the picture objects can extend outside the boundaries of the box However if you include the anything outside the boundaries is clipped Besides picture objects you can put anything in a pspicture that does not take up space E g you can put in font declarations and use psset and you can put in braces for grouping PSTricks will alert you if you include something that does take up space IATEX users can type when PSTricks picture objects are included in a pspicture environment they gob ble up any spaces that follow and any preceding spaces as well making it less likely that extraneous space gets inserted PSTricks objects always ignore spaces that foll
78. hould join the first and last points The e has something to do with endpoints For example 1 psecurve showpoints true 125 8 25 4 5 2 2 1 1 2 5 4 25 8 125 psccurve par arrows x1 y1 xn yn This interpolates a closed curve through the points c stands for closed For example 1 psccurve showpoints true 2 5 0 3 5 1 3 5 0 5 1 9 Dots The graphics objects psdot par x1 y1 W sdots par x1 y 1 x2 y2 xn yn put a dot at each coordinate What a dot is depends on the value of the dotstyle style Default parameter This also determines the dots you get when showpoints true The dot styles are also pretty intuitive Dots 16 Style Example S Style Example id e o o o o o 0 square SR M UM M o Bsquare 2744 8 O Po square m a m m m TFT diamond 9 9 9 99 ui D B Qoa damont 8 triangle 4 A A A Btriangle 4 triangle A dE A asterisk Basterisk oplus times pentagon 9999 o Do og d Bpentagon B je We ae i pentagon Except for diamond the center of dot styles with a hollow center is colored fillcolor Here are the parameters for changing the size and orientation of the dots dotsizezdim num Default 2pt 2 The diameter of a circle or disc is dim plus num times linewidth if the optional num is included The size of the other do
79. ica generally uses lineto to connect the points in its plots The default minimum number of plot points for Mathematica is 25 but unlike psplot and parametricplot Mathemat ica increases the sampling frequency on sections of the curve with greater fluctuation Plots 23 More graphics parameters The graphics parameters described in this part are common to all or most of the graphics objects 12 Coordinate systems The following manipulations of the coordinate system apply only to pure graphics objects A simple way to move the origin of the coordinate system to x y is with the origin coor Default Opt Opt This is the one time that coordinates must be enclosed in curly brackets rather than parentheses A simple way to switch swap the axes is with the swapaxes true Default false parameter E g you might change your mind on the orientation of a plot after generating the data 13 Line styles The following graphics parameters in addition to linewidth and linecolor determine how the lines are drawn whether they be open or closed curves linestyle style Default solid Valid styles are none solid dashed and dotted dashzdim1 dim2 Default 5pt 3pt The black white dash pattern for the dashed line style For example More graphics parameters 24 7 Wi 1 wsellipse linestyle dashed dash 3pt 2pt 2 1 2 1 dotsep dim Default 3pt The distance between dots in the dotted line style For example
80. ically or horizontally just like the nodes This can look nice at least if the slopes of the node connections are not too different 1 pstree radius 2pt Tp psset tpos 6 VIC tlput k pstree Tc 3pt tlput labelsep 3pt r VIC tlput j VIC trput i TC trput m M Dn WF oO H Within trees the tpos parameter measures this distance from the predeces sor to the successor whatever the orientation of the true Outside of trees it measures the distance from the top to bottom or left to right nodes PSTricks also sets shortput tab within trees This is a special shortput option that should not be used outside of trees It implements the following abbreviations which depend of the orientation of the true Short for Char Vert Horiz Mlput taput trput tbput The scheme is reversed if treeflip true Edge and node labels 93 root 1 psset tpos 6 pstree treemode R thistreesep 1cm thislevelsep 3cm radius 2pt Tc 3pt pstree treemode U xbbr 20pt Tc 3pt above TC left TC _ right TC above TC _ below 0 A O t AR oa H You can change the character abbreviations with WakeShortTab char1 char2 The n put commands can also give good results 1 psset npos 6 nrot U 2 pstree treemode R thistreesep 1cm thislevelsep 3cm Tc 3pt Tc 3pt naput above Tc 2pt naput above Tc 2pt nbput below nn BR w You can put labels on t
81. ight subtrees have a profile rather than a bounding box and should be adjusted by changing the bounding boxes of the constituent nodes Save any fiddling with the bounding box until you are otherwise finished with the tree You can see the bounding boxes by setting the showbbox true false Default false parameter to true To see the bounding boxes of all the nodes in a tree you have to set this parameter before the tree In the following example the labels stick out of the bounding box psset tpos 6 showbbox true pstree treemode U Tc 5pt TR foo left TR bar _ right e Ww N e Here is how we fix it psset tpos 6 showbbox true pstree treemode U xbbl 8pt xbbr 14pt Tc 5pt H TR foo left TR bar _ right Row o2 Now we can frame the tree 1 psframebox fillstyle solid fillcolor lightgray framesep 1 4pt linearc 1 4pt cornersize absolute linewidth 1 5pt psset tpos 6 border 1 pt nodesepB 3pt pstree treemode U xbbl 8pt xbbr 1 4pt Tc fillcolor white fillstyle solid 5pt TR foo left TR bar _ right M Dw BF ww We would have gotten the same result by changing the bounding box of the two terminal nodes To skip levels use Wkiplevel par nodes or subtrees skiplevels par int nodes or subtrees endskiplevels These are kind of like subtrees but with no root node Details 97 pstree treemode R levelsep 1 8 radius 2pt Tc 3pt
82. ile read me pst that comes with the PSTricks package Even if PSTricks has already been in stalled for you give read me pst a look over This User s Guide verges on being a reference manual meaning that it is not designed to be read linearly Here is a recommended strategy Fin ish reading this brief overview of the features in PSTricks Then thumb through the entire User s Guide to get your own overview Return to Part I Essentials and read it carefully Refer to the remaining sections as the need arises When you cannot figure out how to do something or when trouble arises check out the appendices Help You just might be lucky enough to find a solution There is also a IATEX file samples pst of samples that is dis tributed with PSTricks Look to this file for further inspiration This documentation is written with IATEX Some examples use IATEX spe cific constructs and some don t However there is nothing BIEX specific about any of the macros nor is there anything that does not work with BIEX This package has been tested with Plain TEX IATEX and ConTpxt and should work with other TEX macro packages as well The main macro file is pstricks tex pstricks sty Each of the PSTricks macro files comes with a tex extension and a sty extension these are equivalent but the sty extension means that you can include the file name as a IATEX package There are numerous supplementary macro files A file like the one above and the left
83. ipt and perhaps pretty strange looking with any dvi driver 3 How can improve the rendering of halftones This can be an important consideration when you have a halftone in the background and text on top You can try putting pstverb 106 45 dup mul exch dup mul add 1 0 exch sub setscreen before the halftone or in a header as in headers and footers not as in PostScript header files if you want it to have an effect on every page setscreen is a device dependent operator 4 What special characters can be active with PSTricks C Including PostScript code To learn about the PostScript language consult Adobe s PostScript Lan guage Tutorial and Cookbook the Blue Book or Henry McGilton and Mary Campione s PostScript by Example 1992 Both are published by Addison Wesley You may find that the Appendix of the Blue Book plus an understanding of how the stack works is all you need to write simple code for computing numbers e g to specify coordinates or plots using PostScript You may want to define TEX macros for including PostScript fragments in various places All TEX macros are expanded before being passed on to PostScript It is not always clear what this means For example suppose you write SpecialCoor def mydata 23 43 psline 47 mydata add Wsline 47 mydata add psline 47 mydata add psline 47 mydata add O nF a H ro Including PostScript code 117 You wil
84. ith nodesep Here is how I used nput to mark an angle in a previous example rput br 4 0 ovalnode B Node B rput tl 0 3 rnode A psframebox Node A nput labelsep 0 70 A psarcn 0 0 4cm 0 70 uput 4cm 35 0 0 texttt angleA ncangle angleA 70 angleB 90 armB 1cm linewidth 1 2pt A B ncput nrot U npos 1 psframe dimen middle 0 0 35 35 YN DW BF V Ye 35 Mathematical diagrams and graphs For some applications such as mathematical diagrams and graphs it is useful to arrange nodes on a grid You can do this with alignment environ ments such as TEX s halignprimitive IATEX s tabular environment and AMS TEX s matrix but PSTricks contains its own alignment environment that is especially adapted for this purpose psmatrix endpsmatrix Here is an example A Je 2 psmatrix colsep 1cm rowsep 1cm 3 amp AN B E C 4 B amp E amp C 5 amp D amp e endpsmatrix D B As an alignment environment psmatrix is similar to AMS TEX s matrix There is no argument for specifying the columns Instead you can just use as many columns as you need The entries are horizontally centered Rows are ended by V psmatrix can be used in or out of math mode Not to be confused with the nput parameter Mathematical diagrams and graphs 75 KN Our first example wasn t very interesting because we didn t make use of the nodes Actually each entry is a node The name of the n
85. ks coordinates to a pair of numbers us ing pt units and insert them in the PostScript code rcoor x7 y1 x2 y2 xn yn Like coor but insert the coordinates in reverse order Mile file This is like code but the raw PostScript is copied verbatim except comments delimited by 96 from file arrows arrows This defines the PostScript operators ArrowA and ArrowB so that x2 y2 x1 y1 ArrowA x2 y2 x1 y1 ArrowB v e each draws an arrow head with the tip at x1 y and pointing from X2 y2 ArrowA leaves the current point at end of the arrowhead where a connect line should start and leaves x2 y2 on the stack ArrowB does not change the current point but leaves x2 y2 x1 vil For hackers only 39 on the stack where x7 y7 is the point where a connecting line should join To give an idea of how this work the following is roughly how PSTricks draws a bezier curve with arrows at the end 1 pscustom arrows gt code 80 140 5 5 ArrowA 30 30 110 75 ArrowB curveto nu e Ww N setcolor color Set the color to color For hackers only 40 Picture Tools 23 Pictures The graphics objects and rput and its variants do not change TRX s current point i e they create a 0 dimensional box If you string several of these together and any other 0 dimensional objects they share the same coordi nate system and so you can create a picture For this reason t
86. l get a PostScript error in each of the psline commands To see what the argument is expanding to try use TEX s edef and show E g def mydata 23 43 edefitemp 47 mydata add show temp edefitemp 47 mydata add show temp edefitemp 47 mydata add show temp edefitemp 47 mydata add show temp Cm A O t BR o H ro TEX expands the code assigns its value to temp and then displays the value of femp on your console Hit return to procede You fill find that the four samples expand respectively to 47 23 43add 47 23 43 add 47 23 48 penalty M add 47 23 43 add Row N e All you really wanted was a space between the 43 and add The command space will do the trick W sline 47 mydata space add You can include balance braces these will be passed on verbatim to PostScript However to include an unbalanced left or right brace you have to use respectively pslbrace psrbrace Don t bother trying V or X Whenever you insert PostScript code in a PSTricks argument the dictio nary on the top of the dictionary stack is tx Q Dict which is PSTrick s main dictionary If you want to define you own variables you have two options Simplest Always include a in the variable names because PSTricks never uses in its variables names You are at a risk of overflow ing the tx Q Dict dictionary depending on your PostScript interpreter You are also more likely to
87. leecheng PSTricks PostScript macros for Generic TeX MI Mathematical Model for Dripping Faucet a Dripping Faucet User s Guide Timothy Van Zandt 10 December 2007 Version 1 5 Author s address Department of Economics and Political Science INSEAD Boulevard de Constance 77305 Fontainebleau Cedex France Internet lt tvz econ insead fr gt Documentation edited and repacked at December 23 2007 by Rolf Niepraschk niepraschk gmx de and Herbert Vo voss pstricks de 10 11 12 13 14 15 16 17 18 19 20 Contents Welcome to PSTricks Part I The Essentials Arguments and delimiters Color Setting graphics parameters Dimensions coordinates and angles Basic graphics parameters Part II Basic graphics objects Lines and polygons Arcs circles and ellipses Curves Dots Grids Plots Part III More graphics parameters Coordinate systems Line styles Fill styles Arrowheads and such Custom styles Part IV Custom graphics The basics Parameters Graphics objects Safe tricks Table of contents 10 10 12 14 16 17 19 24 24 24 26 28 30 32 32 32 33 36 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 Pretty safe tricks For hackers only Part V Picture Tools Pictures Placing and rotating whatever Repetition Axes Part VI Text Tricks Framed boxes Clipping Rotation and scaling boxe
88. linestyle dashed c d toput b 2 ncline b d trput s 13 S On the left is the diagram with tlput trput tbput and Rnode as shown in the code On the right is the same diagram but with naput nbput and rnode These do not have a rotation argument or parameter However you can rotate stuff in 90 degree increments using box rotations e g rotateleft If you set shortput tablr then you can use the following single character abbreviations for the t put commands Char Short for taput _ Mbput lt tlput trput You can change the character abbreviations with MakeShortTablr char1 char2 char3 char4 The t put commands including an example of shortput tablr will be shown further when we get to mathematical diagrams and trees Driver notes The node macros use pstVerb and pstverbscale 34 Attaching labels to nodes The command nput par refangle name stuff Attaching labels to nodes 74 affixes stuff to node name It is positioned distance labelsep from the node in the direction refangle from the center of the node The algorithm is the same as for uput If you want to rotate the node set the rot rot Default 0 parameter where rot is a rotation that would be valid for wput The posi tion of the label also takes into account the offsetA parameter If labelsep is negative then the distance is from the center of the node rather than from the boundary as w
89. ll 5 Basic graphics parameters The width and color of lines is set by the parameters linewidth dim Default 8pt linecolorzcolor Default black The linewidth is stored in the dimension register pslinewidth and the linecolor is stored in the command pslinecolor The regions delimited by open and closed curves can be filled as deter mined by the parameters fillstylezstyle fillcolor co or When fillstyle none the regions are not filled When fillstyle solid the regions are filled with fillcolor Other fillstyle s are described in Section 14 The graphics objects all have a starred version e g psframe which draws a solid object whose color is linecolor For example gt psellipse 1 5 1 5 Open curves can have arrows according to the arrowS arrows parameter If arrows you get no arrows If arrowS lt gt you get arrows on both ends of the curve You can also set arrowS gt and arrowSs lt if you just want an arrow on the end or beginning of the curve respec tively With the open curves you can also specify the arrows as an optional argument enclosed in brackets This should come after the optional pa rameters argument E g Basic graphics parameters 8 d 1 psline linewidth 2pt lt 2 1 Other arrow styles are described in Section 15 If you set the showpoints true false Default false parameter to true then most of the graphics objects will put dots at the appropriate
90. mmands In each case numi is a number between 0 and 1 Spaces are used as delimiters don t add any extraneous spaces in the arguments newgray color num num is the gray scale specification to be set by PostScript s setgray operator 0 is black and 1 is white For example newgray darkgray 25 However this is not necessary with the PSTricks LR box commands expect when psverbboxtrue is in effect See Section A Color 4 newrgbcolor color num1 num2 num3 num num2 num3 is a red green blue specification to be set by PostScript s setrgbcolor operator For example newrgbcolor green O 1 0 newhsbcolor co or num1 num2 num3 num num2 num3 is an hue saturation brightness specification to be set by PostScript s sethsbcolor operator For example newhsbcolor mycolor 3 7 9 newcmykcolor color num1 num2 num3 num4 numi num2 num3 num4 is a cyan magenta yellow black specifica tion to be set by PostScript s newcmykcolor operator For example newcmykcolor hercolor 5 1 0 5 For defining new colors the rbg model is a sure thing hsb is not recom mended cmyk is not supported by all Level 1 implementations of PostScript although it is best for color printing For more information on color models and color specifications consult the PostScript Language Reference Man ual 2nd Edition Red Book and a color guide Driver notes The command p
91. ndpoints nccircle par arrows node radius nccircle draws a circle or part of a circle that if complete would pass through the center of the node counterclockwise at an angle of angleA rnode A textbf back nccircle nodesep 3pt gt A 7cm w nn e kern 5pt nccircle can only connect a node to itself it is the only node con nection with this property nccircle is also special because it has an additional argument for specifying the radius of the circle The last two node connections are also special Rather than connecting the nodes with an open curve they enclose the nodes in a box or curved box You can think of them as variants of ncline and ncarc In both cases the half the width of the box is boxsizezdim Default 4cm You have to set this yourself to the right size so that the nodes fit inside the box The boxsize parameter actually sets the boxheight and boxdepth parameters The ends of the boxes extend beyond the nodes by nodesepA and nodesepB ncbox par nodeA nodeB ncbox encloses the nodes in a box with straight sides For example N d H 7 Idea2 P4 rput bl 5 0 rnode A Idea 1 rput tr 3 5 2 rnode B ldea 2 ncbox nodesep 5cm boxsize 6 linearc 2 linestyle dashed A B Az Lu N Node connections 66 ncarcbox par nodeA nodeB ncarcbox encloses the nodes in a curved box that is arcangleA away from the line connecting the two
92. nodes rput bl 5 0 rnode A 1 rput tr 3 5 2 rnode B 2 ncarcbox nodesep 2cm boxsize 4 linearc 4 arcangle 50 lt gt A B e v N e The arc is drawn counterclockwise from node A to node B There is one other node connection parameter that applies to all the node connections except ncarcbox offset dim Default Opt You can also set offsetA and offsetB independently This shifts the point where the connection joins up by dim given the convention that connec tions go from left to right There are two main uses for this parameter First it lets you make two parallel lines with ncline as in the following example cnodeput 0 0 A X cnodeput 3 2 B Y psset nodesep 3pt offset 4pt arrows gt ncline A B ncline B A OA d 00 N e Second it lets you join a node connection to a rectangular node at a right angle without limiting yourself to positions that lie directly above below or to either side of the center of the node This is useful for example if you are making several connections to the same node as in the following example 1 rnode A Word1 and rnode B Word2 and rnode C Word3 Word1 and Word2 and Word3 2 ncbar offsetB 4pt angleA 90 nodesep 3pt gt A B 3 ncbar offsetA 4pt angleA 90 nodesep 3pt gt B C Sometimes you might be aligning several nodes such as in a tree and you want to ends or the arms of the node connections to line up This
93. nts of the graphics state mrestore See above And now here are a few shadow tricks openshadow par Strokes a replica of the current path using the various shadow pa rameters closedshadow par Makes a shadow of the region enclosed by the current path as if it were opaque regions movepath coor Moves the path by x y Use gsave grestore if you don t want to lose the original path 21 Pretty safe tricks The next group of commands are safe as long as there is a current point lineto coor This is a quick version of psline lt coor gt rlineto coor This is like Mineto but x y is interpreted relative to the current point curveto x7 y1 x2 y2 x3 y3 This is a quick version of psbezier x1 y 1 x2 y2 x3 y3 Pretty safe tricks 38 Wcurveto x1 y7 X2 y2 x3 y3 This is like curveto but x1 y1 x2 y2 and x3 y3 are inter preted relative to the current point 22 For hackers only For PostScript hackers there are a few more commands Be sure to read Appendix C before using these Needless to say Warning Misuse of the commands in this section can cause PostScript errors The PostScript environment in effect with pscustom has one unit equal to one TEX pt code code Insert the raw PostScript code dim dim Convert the PSTricks dimension to the number of pt s and inserts it in the PostScript code coor x7 y 1 x2 y2 xn yn Convert one or more PSTric
94. ode in row row and column col is lt row gt lt col gt with no spaces Let s see some node connections psmatrix colsep 1cm amp X Y amp Z endpsmatrix everypsbox scriptstyle psset nodesep 3pt arrows gt ncline 1 2 2 1 tlout f 10 ncline 1 2 2 2 ii trput g 12 ncline linestyle dotted 2 1 2 2 13 tbput h o 0 A O t BR o H ro You can include the node connections inside the psmatrix in the last en try and right before endpsmatrix One advantage to doing this is that shortput tab is the default within a psmatrix begin psmatrix U amp X times_Z Y amp X amp Y amp Z psset arrows gt nodesep 3pt everypsbox scriptstyle ncline 1 1 2 2 y ncline doubleline true linestyle dashed 1 1 2 3 4 x ncline 2 22 3 ncline 2 3 ncline 3 2 3 end psmatrix You can change the kind of nodes that are made by setting the mnode type Default R parameter Valid types are R r C f p circle oval dia tri dot and none standing for Rnode rnode Cnode fnode pnode circlen ode ovalnode dotnode and no node respectively Note that for circles you use mnode C and set the radius with the radius parameter For example Mathematical diagrams and graphs 76 psmatrix mnodescircle colsep 1 amp A B amp E amp C amp D amp endpsmatrix psset shortput nab arrows gt labelsep 3pt small ncline 2 2 2 3 npos
95. ons tvput par stuff tlput par stuff trput par stuff thput par stuff taput par stuff tbput par stuff The difference between these commands and the n put commands is that these find the position as an intermediate point between the centers of the nodes either in the horizontal or vertical direction These are good for trees and mathematical diagrams where it can sometimes be nice to have the labels be horizontally or vertically aligned The t stands for tree You specify the position by setting the tpos num Default 5 parameter tvput tlput and trput find the position that lies fraction tpos in the ver tical direction from the upper node to the lower node thput taput and tbput find the position that lies fraction tpos in the horizontal direction from the left node to the right node Then the commands put the label on or next to the line as follows Command Direction Placement tvput vertical middle tlput vertical left trput vertical right thput horizontal middle taput horizontal above tbput horizontal below Here is an example iN 2 setlength arraycolsep 1 1cm al begin array cc 4 Rnodef a X A amp Rnode b A 1 5cm Node connection labels II 73 5 Rnode c x amp Rnode d tilde X el end array 7 psset nodesep 5pt arrows gt s everypsbox scriptstyle al ncline a c tlput r ml ncline a b taput u 1 ncline
96. osition objects in the picture The main grid divisions are numbered with the numbers drawn next to the vertical line at xO away from x2 and next to the horizontal line at x7 away from y2 x1 y7 can be any corner of the grid as long as x2 y2 is the opposing corner you can position the labels on any side you want For example compare 1 psgrid 0 0 4 1 1 psgrid 4 1 0 0 The following parameters apply only to psgrid gridwidth dim Default 8pt The width of grid lines gridcolor color Default black The color of grid lines griddots num Default 0 If num is positive the grid lines are dotted with num dots per divi sion Grids 18 gridlabelszdim Default 10pt The size of the numbers used to mark the grid gridlabelcolor color Default black The color of the grid numbers subgriddiv int Default 5 The number of grid subdivisions subgridwidth dim Default 4pt The width of subgrid lines subgridcolor color Default gray The color of subgrid lines subgriddots num Default 0 Like griddots but for subdivisions Here is a familiar looking grid which illustrates some of the parameters ee ee ee een 1 psgrid subgriddiv 1 griddots 10 gridlabels 7pt 1 1 3 1 Note that the values of xunit and yunit are important parameters for ps grid because they determine the spacing of th
97. ount of data TEX and PostScript can handle You are much less likely to exceed the PostScript limits when you use the line polygon or dots plot style with showpoints false linearc Opt and no ar rows Note that the lists of data generated or used by the plot commands cannot contain units The values of psxunit and psyunit are used as the unit fileplot par file fileplot is the simplest of the plotting functions to use You just need a file that contains a list of coordinates without units such as generated by Mathematica or other mathematical packages The data can be delimited by curly braces TL parentheses commas and or white space Bracketing all the data with square brackets will significantly speed up the rate at which the data is read but there are system dependent limits on how much data TEX can read like this in one chunk The must go at the beginning of a line The file should not contain anything else not even endinput except for comments marked with fileplot only recognizes the line polygon and dots plot styles and it ignores the arrows linearc and showpoints parameters The list plot command described below can also plot data from file without these restrictions and with faster TEX processing However you are less likely to exceed PostScript s memory or operand stack limits with fileplot Plots 20 If you find that it takes TEX a long time to process your Mileplot command you m
98. ow If you also want them to try to neutralize preceding space when used outside the pspicture en vironment e g in a STEX picture environment then use the command KillGlue The command DontKillGlue turns this behavior back off Picture Tools 41 begin pspicture vend pspicture You can use PSTricks picture objects in a IATEX picture environment and you can use IATEX picture objects in a PSTricks pspicture environment However the pspicture environment makes IATEX s picture environment obsolete and has a few small advantages over the latter Note that the argu ments of the pspicture environment work differently from the arguments of IATEX s picture environment i e the right way versus the wrong way Driver notes The clipping option uses pstVerb and pstverbscale 24 Placing and rotating whatever PSTricks contains several commands for positioning and rotating an HR mode argument All of these commands end in put and bear some similar ity to LIES e put command but with additional capabilities Like IATEX s put and unlike the box rotation macros described in Section 29 these com mands do not take up any space They can be used inside and outside pspicture environments Most of the PSTricks put commands are of the form Wut arg lt rotation gt lt coor gt lt stuff gt With the optional argument stuff is first put in a psframebox boxsep false stuff thereby blotting out whatever
99. p between lines equal to texttt doublesep Lu Nn e A double frame is drawn with the gap between lines equal to doublesep psshadowbox par stuff This draws a single frame with a shadow Great Idea 1 psshadowbox textbf Great Idea You can get the shadow with psframebox just be setting the shad owsize parameter but with psframebox the dimensions of the box won t reflect the shadow which may be what you want Wscirclebox par stuff This draws a circle With boxsep true the size of the box is close to but may be larger than the size of the circle For example You are 1 pscirclebox begin tabular c You are here end tabular here is distributed with cput par fangle x y stuff This combines the functions of pscirclebox and Wput It is like rput angle x0 y0 pscirclebox par stuff but it is more efficient Unlike the rput command there is no ar gument for changing the reference point it is always the center of the box Instead there is an optional argument for changing graphics parameters For example 1 cput doubleline true 1 5 large K 1 Framed boxes 52 psovalbox par stuff This draws an ellipse If you want an oval with square sides and rounded corners then use psframebox with a positive value for rectarc or linearc depending on whether cornersize is relative or absolute Here is an example that uses boxsep
100. p in the right place 1 1 psaxes gt 4 2 Also if you set the arrows parameter the first arrow is used for the tips at X1 and yf while the second arrow is used for the tips at x2 and y2 Thus in the preceding examples the arrowheads ended up in the right place too When the axes don t just enclose an orthont that is when the origin is not at a corner there is some discretion as to where the numbers should go The rules for positioning the numbers and arrows described above still apply and so you can position the numbers as you please by switching y1 and y2 or XT and x2 For example compare 2 jl 1 psaxes lt gt 0 0 2 5 0 2 5 2 5 2 1 0 1 2 with what we get when x1 and x2 are switched 2 1 1 psaxes lt gt 0 0 2 5 0 2 5 2 5 2 1 0 1 2 psaxes puts the ticks and numbers on the axes at regular intervals using the following parameters Including a first arrow in these examples would have had no effect because arrows are never drawn at the origin Axes 48 Horitontal Vertical Dflt Description Oxznum Oyznum O Label at origin Dxznum Dyznum 1 Label increment dxzdim dyzdim Opt Dist btwn labels When dx is 0 Dx psxunit is used instead and similarly for dy Hence the default values of Opt for dx and dy are not as peculiar as they seem You have to be very careful when setting Ox Dx Oy and Dy to non integer values multido tex increments the la
101. parameter 8 10 20 28 28 29 48 arrowscale parameter 30 30 arrowsize parameter 29 axesstyle parameter 50 bbd parameter bbh parameter bbl parameter 96 bbllx parameter 112 bblly parameter 112 bbr parameter 96 bburx parameter 112 bbury parameter 112 VE E 120 lge 120 border parameter 25 25 33 68 bordercolor parameter 25 25 boxdepth parameter 66 boxheight parameter boxsep parameter boxsize parameter ABDUL ee ee E ar 81 Ee e 80 80 81 bracketlength parameter 30 INDEX Cartesian 105 105 circlenode 59 59 76 clipbox 54 closedshadow 38 closepath 34 36 36 Cnode 000 59 76 cnode 59 59 78 cnodeput e 59 ode 39 39 coilarm parameter 103 103 104 coilarmA parameter 103 coilarmB parameter coilaspect parameter 103 103 104 coilheight parameter 103 103 coilinc parameter 103 103 coilwidth parameter 103 103 colsep parameter 78 Woor REN 39 39 cornersize parameter 10 10 53 Keel EEN 52 59 curvature parameter 15 curvetO 38 39 dash parameter 24 dashed parameter 33 dataplot 21 21 22 degrees n
102. parameter gradmidpoint parameter el A grestore 36 37 37 38 gridcolor parameter 18 griddots parameter 18 19 gridlabelcolor parameter 19 gridlabels parameter 19 gridwidth parameter 18 save n n 36 36 38 hatchangle parameter 27 27 hatchcolor parameter 27 hatchsep parameter 27 hatchwidth parameter 27 INDEX headerfile parameter 112 113 headers parameter 113 113 href parameter 59 59 96 inner parameter 14 NRG cect EE 41 labels parameter 49 labelsep parameter 44 50 70 75 95 levelsep parameter 89 89 99 100 liftpen parameter 45 33 37 linearc parameter 10 10 20 22 53 62 104 linecolor parameter 8 8 24 27 3233 51 linestyle parameter 24 25 27 32 50 54 109 lineto 38 38 linetype parameter 33 35 linewidth parameter 8 8 11 17 24 27 30 32 33 listplot 20 21 21 22 loopsize parameter 65 KE EE 79 79 80 80 lDul isse ceret canons 79 79 81 makeeps parameter 112 MakeShortNab 72 72 MakeShortTab 94 MakeShortTablr 74 MakeShortTnput 95 mcol parameter 78 middle parameter 14 mnode parameter 76 76 78 mnodesize parameter 78 move
103. path 0 38 mMovetoO 0 cee 36 36 Mput 79 79 80 80 MDDUL cederet ertt 81 mrestore 38 38 MSAVE 2 eee eee eee 38 38 multicolumn 79 multido 00 46 50 multips 46 46 50 multirout 46 46 122 multispan 79 name parameter 77 92 naput 69 69 70 72 74 nbput 69 69 70 72 74 ncangle 63 63 65 69 71 ncangles 64 64 65 69 71 nearc 61 62 66 69 71 ncarcbox 67 67 69 71 72 ncbar 63 69 71 ncbox 66 66 69 71 72 nccircle 66 66 68 71 e Le IR 104 necurve 65 65 69 71 ncdiag 62 62 63 69 71 90 ncdiagg 63 63 69 71 91 ncline 61 62 65 67 69 71 104 ncloop 65 65 69 71 ncput 69 69 70 93 ncurv parameter 62 66 ncurvA parameter 66 ncurvB parameter 66 NCZIQZAG one 104 newemykcolor 4 5 newgray 4 newhsbcolor 6 5 newpath lseueseuessss 36 newpsobject 30 30 53 newpsstyle 31 31 newrgbcolor 06 5 nodealign parameter 78 nodesep parameter 61 61 68 75 99 105 nodesepA parameter 61 66 85 nodesepB parameter 61 66 NormalCoor
104. phs and trees mathematical diagrams linguistic syntax diagrams and connecting ideas of any kind They are the trickiest tricks in PSTricks The node and node connection macros let you connect information and place labels without knowing the exact position of what you are connecting or where the lines should connect These macros are useful for making graphs and trees mathematical diagrams linguistic syntax diagrams and connecting ideas of any kind They are the trickiest tricks in PSTricks There are three components to the node macros Node definitions The node definitions let you assign a name and shape to an object See Section 30 Node connections The node connections connect two nodes identified by their names See Section 31 Node labels The node label commands let you affix labels to the node con nections See Section 32 You can use these macros just about anywhere The best way to position them depends on the application For greatest flexibility you can use the nodes in a pspicture positioning and rotating them with wput You can also use them in alignment environments pst node tex contains a spe cial alignment environment psmatrix which is designed for positioning nodes in a grid such as in mathematical diagrams and some graphs ps matrix is described in Section 35 pst node tex also contains high level macros for trees These are described in Part VIII But don t restrict yourself to these more obvious use
105. r PostScript consumption For others PSTricks stores the value in a form that you would expect In the latter case this User s Guide will mention the name of the command where the value is stored This is so that you can use the value to set other parameters E g psset linecolor psfillcolor doublesep 5 pslinewidth However even for these parameters PSTricks may do some processing and error checking and you should always set them using psset or as optional parameter changes rather than redefining the command where the value is stored 4 Dimensions coordinates and angles Whenever an argument of a PSTricks macro is a dimension the unit is optional The default unit is set by the unit dim Default 1cm parameter For example with the default value of 1cm the following are equivalent psset linewidth 5cm psset linewidth 5 N By never explicitly giving units you can scale graphics by changing the value of unit Dimensions coordinates and angles 6 You can use the default coordinate when setting non PSTricks dimensions as well using the commands W ssetlength cmd dim psaddtolength cmd dim where cmd is a dimension register in IATEX parlance a length and dim is a length with optional unit These are analogous to IATEX s setlength and addtolength Coordinate pairs have the form x y The origin of the coordinate system is at TEX s currentpoint The command Speci
106. re process ing the catcode changes at which point it is too late to change the category codes If this is all Greek to you then just try this IATEX example to see the problem psframebox verb foo bar The LR box environments defined with pslongbox do not have this prob lem because stuff is not processed as an argument Thus this works pslongbox MyFrame psframebox MyFrame verb foo bar endMyFrame N foo bar The commands psverbboxtrue psverbboxfalse switch into and out of respectively a special PSTricks mode that lets you include verbatim text in any LR box command For example psverbboxtrue psframebox verb foo bar n foo bar However this is not as robust You must explicitly group color commands in stuff and LR box commands that usually ignore spaces that follow lt stuff gt might not do so when psverbboxtrue is in effect B Tips and More Tricks 1 How dol rotate frame this or that with TEX See fancybox sty and its documentation Incidentally many foreign language macros such as greek tex use catcode tricks which can cause problems in LR box macros Tips and More Tricks 116 2 How can suppress the PostScript so that can use my document with a non PostScript dvi driver Put the command PSTricksOff at the beginning of your document You should then be able to print or preview drafts of your document minus the PostScr
107. rmA 103 coilarmB 103 coilarm 103 103 104 coilaspect 103 103 104 123 coilheight 103 103 bref 59 59 96 coiling 103 103 Inner 14 coilwidth 103 103 labelsep 44 50 70 75 95 colsep ioo ee s 78 labels esce ee 49 cornersize 10 10 53 levelsep 89 89 99 100 curvature 15 liftpen 35 35 37 dashed 33 linearc 10 10 20 22 53 62 CASI ege ee eem 24 104 dim n ico R4 14 26 linecolor 8 8 24 27 32 33 dotangle 17 51 dotscale 17 linestyle 24 25 27 32 50 54 dotsep 005 25 109 dotsize 17 30 linetype 33 33 dotstyle 16 linewidth 8 8 11 17 24 dotted 33 27 30 32 33 doublecolor 25 25 loopsize 06 65 doubleline 25 25 33 makeeps 112 doublesep 25 25 MCOl See Zeeche 78 KN 48 49 iie o EE 14 o P 48 49 mnodesize 78 edge 91 92 99 mnode 776 76 78 emnode 77 name slsseeeses as 77 92 fansize 00 0 eee 85 NGUVA geseis 66 fillcolor 8 17 27 2 91 NCU B erregte eenaa 66 fillstyle 8 27 27 32 33 50 NOUIV ENEE EE 62 66 107 109 nodealign 78 framearc 10 10 nodesepA 61 66 85 framesep 51 nodesepB
108. rom the labels If tickstyle bottom the ticks are on the same side as the labels full gives ticks extending on both sides ticksize dim Default 3pt Ticks extend aim above and or below the axis The distance between ticks and labels is pslabelsep which you can change with the labelsep parameter The labels are set in the current font ome of the examples above were preceded by small so that the labels would be smaller You can do fancy things with the labels by redefining the commands pshlabel psviabel E g if you want change the font of the horizontal labels but not the vertical labels try something like def pshlabel 1 small 1 You can choose to have a frame instead of axes or no axes at all but you still get the ticks and labels with the parameter axesstyle axes frame none Default axes The usual linestyle fillstyle and related paremeters apply For example 1 psaxes Dx 5 dx 1 tickstyle top axesstyle frame 3 3 The psaxes macro is pretty flexible but PSTricks contains some other tools for making axes from scratch E g you can use psline and psframe to draw axes and frames respectively multido to generate labels see the documentation for multido tex and multips to make ticks Axes 50 V Text Tricks 27 Framed boxes The macros for framing boxes take their argument put it in an nbox and put a PostScript frame around it They are analogous to IATgX s Mbox Thus
109. rs of the nodes psmatrix achieves this by setting the nodealign true false Default false parameter to true You can also set this parameter outside of psma trix when you want this kind of alignment You can left or right justify the nodes by setting the mcolz r c Default c parameter l r and c stand for left right and center respectively The space between rows and columns is set by the rowsep dim Default 1 5cm colsep dim Default 1 5cm parameters If you want all the nodes to have a fixed width set mnodesize dim Default 1pt to a positive value If psmatrix is used in math mode all the entries are set in math mode but you can switch a single entry out of math mode by starting and ending the entry with The radius of the c mnode corresponding to cnode is set by the radius parameter Like in IATEX you can end a row with lt dim gt to insert an extra space dim between rows The command psrowhookii is executed if defined at the beginning of every entry in row ii row 2 and the command pscolhookv is executed at athe beginning of every entry in column v etc You can use these hooks for example to change the spacing between two columns or to use a special mnode for all the entries in a particular row An entry can itself be a node You might do this if you want an entry to have two shapes Mathematical diagrams and graphs 78 If you want an entry to stretch across several int column
110. s For example Nodes and Node Connections 57 1 rnodef A 2 Marbox 4cm vaggedright made the file symbol a node Now can draw an 4 arrow so that you know what am talking about H what I am talking about s ncarc nodesep 8pt A Hfile I made the file symbol a node Now I can draw an arrow so that you know 30 Nodes Nodes have a name a boundary and a center Warning The name is for refering to the node when making node connections and labels You specify the name as an ar gument to the node commands The name must contain only letters and numbers and must begin with a letter Bad node names can cause PostScript errors The center of a node is where node connections point to The boundary is for determining where to connect a node connection The various nodes differ in how they determine the center and boundary They also differ in what kind of visable object they create Here are the nodes rnode refpoint name stuff rnode puts stuff in a box The center of the node is refpoint which you can specify the same way as for rput Rnode par name stuff Rnode also makes a box but the center is set differently If you align rnode s by their baseline differences in the height and depth of the nodes can cause connecting lines to be not quite parallel such as in the following example Large Bit rnode A sp hskip 2cm rnode B Bit ncline A B Sp w Nn e Wi
111. s Part VII Nodes and Node Connections Nodes Node connections Node connections labels I Node connection labels I Attaching labels to nodes Mathematical diagrams and graphs Obsolete put commands Part VIII Trees Overview Tree Nodes Tree orientation The distance between successors Spacing between the root and successors Edges Edge and node labels Table of contents 38 39 41 41 42 45 47 51 51 54 55 57 58 60 69 73 74 75 79 82 82 83 86 87 89 90 93 44 45 46 47 48 49 50 51 52 53 54 D o D gt Details The scope of parameter changes Part IX Filling and Tiling Overview Part X Three Dimensional Graphics Overview Part XI Special Tricks Coils and zigzags Special coordinates Overlays The gradient fill style Typesetting text along a path Stroking and filling character paths Importing EPS files Exporting EPS files Help Boxes Tips and More Tricks Including PostScript code Troubleshooting Table of contents 96 99 101 101 102 102 103 103 104 106 107 108 109 110 111 114 114 116 117 119 Welcome to PSTricks PSTricks is a collection of PostScript based TEX macros that is compatible with most TEX macro packages including Plain TEX IATgX and ConTpxt PSTricks gives you color graphics rotation trees and overlays PSTricks puts the icing PostScript on your cake TEX To install PSTricks follow the instructions in the f
112. s use the psspan int at the end of the entry This is like Plain TEX s multispan or IATEX s multicolumn but the template for the current column the first column that is spanned is still used If you want wipe out the template as well use multispan lt int gt at the beginning of the entry instead If you just want to wipe out the template use vomit before the entry psmatrix can be nested but then all node connections and other ref erences to the nodes in the lt row gt lt col gt form for the nested matrix must go inside the psmatrix This is how PSTricks decides which matrix you are referring to It is still neatest to put all the node con nections towards the end just be sure to put them before endpsma trix Be careful also not to refer to a node until it actually appears The whole matrix can itself go inside a node and node connections can be made as usual This is not the same as connecting nodes from two different psmatrix s To do this you must give the nodes names and refer to them by these names 36 Obsolete put commands This is old documentation but these commands will continue to be sup ported There is also an obsolete command Lput for putting labels next to node connections The syntax is Itisa WX put abelsep refpoint rotation pos stuff combination of Rput and Iput equivalent to lput pos Rput abe lsep refpoint rotation 0 0 stuff Mput is a
113. s and delimiters Here is some nitty gritty about arguments and delimiters that is really im portant to know The PSTricks macros use the following delimiters Curly braces arg Brackets only for optional arguments arg Parentheses and commas for coordinates x y and for parameters part vall Spaces and commas are also used as delimiters within arguments but in this case the argument is expanded before looking for the delimiters Always use a period rather than a comma to denote the decimal point so that PSTricks doesn t mistake the comma for a delimiter The easiest mistake to make with the PSTricks macros is to mess up the delimiters This may generate complaints from TEX or PSTricks about bad arguments or other unilluminating errors such as the following Use of get coor doesn t match its definition Paragraph ended before pst addcoor was complete Forbidden control sequence found while scanning use of check arrow File ended while scanning use of Wput Delimiters are generally the first thing to check when you get errors with a PSTricks macro Since PSTricks macros can have many arguments it is useful to know that you can leave a space or new line between any arguments except between arguments enclosed in curly braces If you need to insert a new line between arguments enclosed in curly braces put a comment character at the end of the line As a general rule the first non space charact
114. s and then connecting the points with psline Here are plots of sin x cos a 2 and sin zx psset xunit 1 2pt psplot linecolor gray linewidth 1 5pt plotstyle curve 0 90 x sin dup mul psplot plotpoints 100 0 90 x sin x 2 div 2 exp cos mul psline lt gt 0 1 0 1 psline gt 100 0 parametricplot par tminHtmax H function This is for a parametric plot of x t y t function is the PostScript code for calculating the pair x t y t For example TELE parametricplot plotstyle dots plotpoints 13 D ai 2 6 6 1 2 t exp 1 2 t neg exp NR AA EE z i aoe sea nah ee M plots 13 points from the hyperbola zu 1 starting with 1 26 1 29 and ending with 1 29 1 26 Plots 22 Here is a parametric plot of sin t sin 2t psset xunit 1 7cm parametricplot linewidth 1 2pt plotstyle ccurve O 360 t sin t 2 mul sin psline lt gt 0 1 2 0 1 2 psline lt gt 1 2 0 1 2 0 Ww ROO N e The number of points that the psplot and parametricplot commands calculate is set by the plotpointsz int Default 50 parameter Using curve or its variants instead of line and increasing the value of plotpoints are two ways to get a smoother curve Both ways in crease the imaging time Which is better depends on the complexity of the computation Note that all PostScript lines are ultimately rendered as a series perhaps short line segments Mathemat
115. se the edge parameter 1 def dedge ncline linestyle dashed 2 pstree treemode U radius 2pt Tc 8pt s TC edge dedge pstree Tc 3pt TC edge dedge VIC v e TC You can also set edge none to suppress the node connection If you want to draw a node connection between two nodes that are not direct predecessor and successor you have to give the nodes a name that you can refer to using the name parameter For example here I connect two nodes on the same level 1 pstree nodesep 3pt radius 2pt Toval nature 2 pstree Tc names top 3pt TC TC 3 pstree Tc name bot 3pt TC TC 4 ncline linestyle dashed top bot We conclude with the more examples 1 def psedge nccurve angleB 180 nodesepB 3pt 2 pstree treemode R treesep 1 5 levelsep 3 5 s Toval root Tr X Vrr Y Tr Z pstree nodesepB 3pt arrows gt xbbl 15pt xbbr 15pt levelsep 2 5cm Tdia root TR edge ncbar angle 180 x TR y TR edge ncbar z YN Dw Fw YK Edges 92 psset armB 1cm levelsep 3cm treesep 1cm angleB 90 angleA 90 arrows lt nodesepA 3pt def psedge 1 2 ncangle 2 1 pstree radius 2pt Ttri root TC TC VIC TC Bow H 43 Edge and node labels Right after a node an edge has typically been drawn and you can attach labels using ncput tlput etc With tlput trput taput and tbput you can align the labels vert
116. side the box and with naput the label ends up inside the box E age rput bl 5 0 rnode A 1 i S rput tr 3 5 2 rnode B 2 4 ncarcbox nodesep 2cm boxsize 4 linearc 4 p p arcangle 50 linestyle dashed lt gt A B ria 2 nbput nrot U set N l 27 nbput npos 2 II ee a SE ee If you set the parameter shortput none nab tablir tab Default none to nab then immediately following a node connection or another node con nection label you can use instead of naput and _ instead of nbput cnode 0 0 5cm root cnode 3 1 5 4pt A cnode 3 1 5 4pt C psset nodesep 3pt shortput nab ncline root A x ncline root C _ y You can still have parameter changes with the short and _ forms Another example is given on page 76 If you have set shortputznab and then you want to use a true or _ character right after a node connection you must precede the or by so that PSTricks does not convert it to naput or nbput You can change the characters that you use for the short form with the WakeShortNab char1 char2 command P You can also use MakeShortNab if you want to use and _ with non standard cate gory codes Just invoke the command after you have made your catcode changes Node connections labels 72 The shortput tablr and shortputztab options are described on pages 74 and respectively 33 Node connection labels Il Now the second group of node connecti
117. stVerb must be defined 3 Setting graphics parameters PSTricks uses a key value system of graphics parameters to customize the macros that generate graphics e g lines and circles or graphics com bined with text e g framed boxes You can change the default values of parameters with the command psset as in psset fillcolor yellow psset linecolor blue framearc 3 dash 3pt 6pt N The general syntax is psset par1 value1 par2 value2 As illustrated in the examples above spaces are used as delimiters for some of the values Additional spaces are allowed only following the comma that separates par value pairs which is thus a good place to start a new line if there are many parameter changes E g the first example is acceptable but the second is not Setting graphics parameters 5 psset fillcolor yellow linecolor blue psset fillcolor yellow linecolor blue n o oe The parameters are described throughout this User s Guide as they are needed Nearly every macro that makes use of graphics parameters allows you to include changes as an optional first argument enclosed in square brackets For example psline linecolor green linestyle dotted 8 7 draws a dotted green line It is roughly equivalent to psset linecolor green linestyle dotted psline 8 7 For many parameters PSTricks processes the value and stores it in a pe culiar form ready fo
118. stuff end overlaybox The material for overlay string should go within the scope of the command psoverlay string string can be any string after expansion Anything not in the scope of any psoverlay command goes on overlay main and material within the scope of psoverlay all goes on all the overlays psoverlay commands can be nested and can be used in math mode The command putoverlaybox string then prints overlay string Here is an example 1 overlaybox 2 psoverlay all al Msframebox framearcz 15 linewidth 1 5pt 96 4 psoverlay main Overlays 106 parbox 3 5cm raggedright Foam Cups Damage Environment psoverlay one Less than Paper Cups Study Says endoverlaybox vo 00 A O u putoverlaybox main nspace 5in putoverlaybox one Foam Cups Damage Environment Study Says Less than Paper Cups Driver notes Overlays use pstVerb and pstverbscale 51 The gradient fill style The file pst grad tex pst grad sty along with the PostScript header file pst grad pst grad pro defines the gradient fillstyle for gradiated shading This fillstyle uses the following parameters gradbeginzcolor Default gradbegin The starting and ending color gradend color Default gradend The color at the midpoint gradlines int Default 500 The number of lines More lines means finer gradiation but slower printing gradmidpoint num Default 9 The position of
119. subtree which grows to the left footnotesize W stree treemode U dotstyle otimes dotsize 8pt nodesep 2pt Tdot pstree treemode L Tdot Tcircle 1 Tcircle 2 pstree Tdot Tcircle 3 Tcircle 4 A e ww N e Since you can change a tree s orientation it can make sense to include a tree treeB as a root node of treeA This makes a single logical tree whose root is the root of treeB and that has successors going off in different directions depending on whether they appear as a successor to treeA or to treeB 8 e 1 pstree pstree treemode L Tcircle root Tr B On a semi related theme note that any node that creates an LR box can contain a tree However nested trees of this kind are not related in any way to the rest of the tree Here is an example Tree orientation 86 p a eG psTree Tcircle 1 2 pstree treesep 0 4 levelsep 0 6 3 nodesepB 6pt Tdot 4 TR a TR b s WC e WC 7 endpsTree When the tree grows up or down the successors are lined up from left to right in the order they appear in pstree When the tree grows to the left or right the successors are lined up from top to bottom As an afterthought you might want to flip the order of the nodes The treeflip true false Default false let s you do this For example footnotesize pstree treemode U dotstyle otimes dotsize 8pt nodesep 2pt treeflip true Tdot pstree treemode R Tdo
120. t 5 5 0 1 12 4 77 Wssetlength 7 psshadowbox 52 ADSSDAalT tette et ertet 79 pstextpath 108 109 109 Wstheader 108 3DSIT6Q S oe et 82 pstree 82 82 87 94 99 Wstriangle 11 11 Wstribox 53 33 PSTricksEPS 111 112 PSTricksOff 117 pstrotate 008 45 PSTtoEPS 21 112 112 Je DE eet ee eds 32 WstVerb 5 42 45 55 74 107 Wstverb 32 pstverbscale 42 55 74 107 Wsunit 08 7 109 INDEX psverbboxfalse 116 psverbboxtrue 4 116 116 Wsvlabel 0 50 pswedge 12 26 psxunit 005 7 20 psyunit 05 7 20 pszigzag 103 103 104 putoverlaybox 106 ie e up ES 12 33 qline 10 33 radians 8 radius parameter 59 76 78 rbracketlength parameter 30 WCOOF oo kee ee cece ee eee 39 Ac rveto isses 39 Weaddata 21 21 22 rectarc parameter 24 MOGI RR 4 ref parameter 70 83 rlineto 38 Rnode 58 58 59 68 74 76 rnode 58 58 60 74 76 rot parameter 75 Motale isses reete 37 Rotatedown 56 rotatedown 55 rotateleft 55 74 rotateright 55 rowsep parameter 78 Rput 45 45
121. t Tcircle 1 Tcircle 2 pstree Tdot Tcircle 3 Tcircle 4 OA e W N e Note that I still have to go back and change the treemode of the subtree that used to grow to the left 40 The distance between successors The distance between successors is treesep dim Default 75cm The rest of this section describes ways to fine tune the spacing between SUCCESSOTS You can change the method for calculating the distance between subtrees by setting the treefit tight loose Default tight parameter Here are the two methods tight When treefit tight which is the default treesep is the minimum distance between each of the levels of the subtrees The distance between successors 87 T1 yi 111 HAN loose When treefitzloose treesep is the distance between the subtrees bounding boxes Except when you have large intermediate nodes the effect 1s that the horizontal distance or vertical distance for hor izontal trees between all the terminal nodes is the same even when they are on different levels 4 Compare With treefit loose trees take up more space but sometimes the structure of the tree is emphasized Sometimes you want the spacing between the centers of the nodes to be regular even though the nodes have different sizes If you set treenodesize dim Default 1pt to a non negative value then PSTricks sets the width or height depth for vertical trees to treenodesize for the purpose of calculating t
122. t all The shadow border doubleline and showpoints parameters are dis abled in pscustom and the origin and swapaxes parameters only affect pscustom itself but there are commands described below that let you achieve these special effects The dashed and dotted line styles need to know something about the path in order to adjust the dash or dot pattern appropriately You can give this information by setting the linetype int Default 0 parameter If the path contains more than one disconnected segment there is no appropriate way to adjust the dash or dot pattern and you might as well leave the default value of linetype Here are the values for simple paths Value Type of path 0 Open curve without arrows 1 Open curve with an arrow at the beginning 2 Open curve with an arrow at the end 3 Open curve with an arrow at both ends 1 Closed curve with no particular symmetry n gt l Closed curve with n symmetric segments 19 Graphics objects You can use most of the graphics objects in pscustom These draw paths and making arrows but do not fill and stroke the paths There are three types of graphics objects Special Special graphics objects include psgrid psdots qline and qdisk You cannot use special graphics objects in pscustom Graphics objects 33 Closed You are allowed to use closed graphics objects in pscustom but their effect is unpredictable Usually you would use the open curves plus closepath se
123. t plotstyle curve showpoints true dotstyle triangle mydata 10 psline lt gt 0 2 0 0 20 0 0 A O t E WN Ne listplot par list listplot is yet another way of plotting lists of data This time list should be a list of data coordinate pairs delimited only by white space list is first expanded by TEX and then by PostScript This means that ist might be a PostScript program that leaves on the Plots 21 stack a list of data but you can also include data that has been re trieved with veaddata and dataplot However when using the line polygon or dots plotstyles with showpoints false linearc Opt and no arrows dataplot is much less likely than listplot to ex ceed PostScript s memory or stack limits In the preceding example these restrictions were not satisfied and so the example is equivalent to when listplot is used listplot plotstyle curve showpoints true dotstyle triangle mydata Az LA N psplot par min Hr H function psplot can be used to plot a function f x if you know a little PostScript function should be the PostScript code for calculating f x Note that you must use x as the dependent variable PostScript is not designed for scientific computation but psplot is good for graphing simple functions right from within TEX E g psplot plotpoints 200 0 720 x sin plots sin x from 0 to 720 degrees by calculating sin x roughly every 3 6 degree
124. t want to stroke it twice e g to add a border Here is an example that makes a double line and adds a border this example is kept so simple that it doesn t need pscustom at all 1 psline 0 3 4 0 2 pscustom linecolor white linewidth 1 5pt 31 Wsline 0 0 4 3 stroke linewidth 5 pslinewidth vu p stroke linewidth 3 pslinewidth linecolor black d Mill par This fills the region non destructively pscustom automatically fills the region as well gsave This saves the current graphics state i e the path color line width coordinate system etc grestore restores the graphics state gsave and grestore must be used in pairs properly nested with respect to TEX groups You can have have nested gsave grestore pairs Note that the path is automatically closed when the region is filled Use closepath if you also want to close the boundary Safe tricks 36 grestore See above Here is an example that fixes an earlier example using gsave and grestore 1 psline lt gt 0 3 0 0 4 0 2 pscustom linewidth 1 5pt psplot plotstyle curve 67 4 2 x div gsave psline 4 3 fill fillstyle solid fillcolor gray grestore a DW BR w Observe how the line added by psline 4 3 is never stroked because it is nested in gsave and grestore Here is another example 1 pscustom linewidth 1 5pt pscurve 0 2 1 2 5 2 1 5 4 3 gsave pscurve liftpen 1 4 1 3
125. tScript rendering with pst text tex is slow Because of all this no samples are shown here However there is a test file tp test tex and PostScript output tp test ps that are distributed with PSTricks Here is the command Typesetting text along a path 108 W stextpath pos x y graphics object text text is placed along the path from beginning to end defined by the PSTricks graphics object This object otherwise behaves normally Set linestyleznone if you don t want it to appear text can only contain characters No TeX rules no PSTricks and no other special s These things don t cause errors they just don t work right Math mode is OK but math operators that are built from several characters e g large integral signs may break Entire boxes e g parbox are OK too but this is mainly for amusement pos is either justify on beginning of path c center on path r justify on end of path The default is l lt x gt lt y gt is an offset Characters are shifted distance x along path and are shifted up by y Up means with respect to the path at whatever point on the path corresponding to the middle of the character lt x gt lt y gt must be Cartesian coordinates Both coordinates use psunit as the default The default coordinate is 0 TPoffset where TPoffset a command whose default value is 7ex This value leads to good spacing of the characters Remember that ex units are for the font in eff
126. th Rnode the center is determined relative to the baseline Large Sp Bit Rnode A sp hskip 2cm Rnode B Bit ou nN e ncline A B You can usually get by without fiddling with the center of the node but to modify it you set the Nodes 58 href num Default 0 vref dim Default 7ex parameters In the horizontal direction the center is located fraction href from the center to the edge E g if href 1 the center is on the left edge of the box In the vertical direction the center is located distance vref from the baseline The vref parameter is evaluated each time Rnode is used so that you can use ex units to have the distance adjust itself to the size of the current font but without being sensitive to differences in the size of letters within the current font pnode x y name This creates a zero dimensional node at x y cnode par x y L radius 4 name This draws a circle Here is an example with node and cnode Cnode par x y name This is like cnode but the radius is the value of radius dim Default 25cm This is convenient when you want many circle nodes of the same radius circlenode par name stuff This is a variant of pscirclebox that gives the node the shape of the circle cnodeput par angle x y name stuff This is a variant of cput that gives the node the shape of the circle That is it is like rput angle x y circlenode name
127. the midpoint as a fraction of the distance from top to bottom num should be between 0 and 1 gradangle angle Default 0 The image is rotated by angle gradbegin and gradend should preferably be rgb colors but grays and cmyk colors should also work The definitions of the colors gradbegin and gradend are The gradient fill style 107 WMewrgbcolor gradbeginMO 1 95 newrgbcolor gradend 0 1 1 n o oe Here are two ways to change the gradient colors newrgbcolor gradbegin 1 4 0 and psset gradbegin blue Try this example psframeffillstyle gradient gradangle 45 10 20 52 Typesetting text along a path The file pst text tex pst text sty defines the command pstextpath for type setting text along a path It is a remarkable trick but there are some caveats e pst text tex only works with certain DVI to PS drivers Here is what is currently known It works with Rokicki s dvips Does not work means that it has no effect for better or for worse This may work with other drivers The requirement is that the driver only use PostScript s show operator unbound and un loaded to show characters e You must also have installed the PostScript header file pst text pro and pstheader must be properly defined in pstricks con for your driver e Like other PSTricks that involve rotating text this works best with PostScript outline fonts e Pos
128. the two ar guments are obligatory and there is no parameters arguments To change the color of the disks you have to use psset e 1 psset linecolor gray 2 qdisk 2 3 4pt pswedge par x0 y0 radius angle1 angle2 This draws a wedge whose center is at x0 y0 that has radius ra dius and that extends counterclockwise from angle to angle2 The angles must be specified in degrees For example 1 pswedge linecolor gray linewidth 2pt fillstyle solid 2 0 70 psellipse par x0 yO x1 y1 x0 yO is the center of the ellipse and x7 and y1 are the horizontal and vertical radii respectively For example 1 psellipsef fillcolor lightgray 5 0 1 5 1 psarc par arrows x y radius angleA angleB This draws an arc from angleA to angleB going counter clockwise for a circle of radius radius and centered at x y You must include either the arrows argument or the x y argument For example Arcs circles and ellipses 12 1 psarc showpoints true 1 5 1 5 1 5 215 0 See how showpoints true draws a dashed line from the center to the arc this is useful when composing pictures psarc also uses the parameters arcsepA dim Default Opt angleA is adjusted so that the arc would just touch a line of width dim that extended from the center of the arc in the direc tion of angleA arcsepB dim Default Opt This is like arcsepA but angleB is adjusted arcsepzdim Default 0 This
129. ts styles is similar except for the size of the dot style which is set by the tbarsize parameter described on page dotscale num1 num2 Default 1 The dots are scaled horizontally by num1 and vertically by num2 If you only include num1 the arrows are scaled by num7 in both directions dotangle angle Default 0 After setting the size and scaling the dots the dots are rotated by angle 10 Grids PSTricks has a powerful macro for making grids and graph paper psgrid x0 y0 x1 y1 x2 y2 psgrid draws a grid with opposing corners x1 yf and x2 y2 The in tervals are numbered with the numbers positioned at x0 and y0 The coor dinates are always interpreted as Cartesian coordinates For example Grids 17 1 psgrid 0 0 1 1 3 2 Note that the coordinates and label positioning work the same as with psaxes The main grid divisions occur on multiples of xunit and yunit Subdivi sions are allowed as well Generally the coordinates would be given as integers without units If the x0 yO coordinate is omitted x7 y1 is used The default for x7 y1 is 0 0 If you don t give any coordinates at all then the coordinates of the current pspicture environment are used or a 10x10 grid is drawn Thus you can include a psgrid command without coordinates in a pspicture environment to get a grid that will help you p
130. ut it also sets the clipping path to the char acter path You may want to position this clipping path using Wput inside pscharclip s argument Like psclip and endpsclip pscharclip and endpscharclip should come on the same page and should be properly nested with respect to TEX groups unless VAltClipMode is in effect The file denis2 tex contains a sample of pscharclip 54 Importing EPS files PSTricks does not come with any facility for including Encapsulated PostScript files because there are other very good and well tested macros for exactly that specially the graphicx package for IATEX usable also with TEX What PSTricks is good for is embellishing your EPS picture You can in clude an EPS file in in the argument of rput as in rput 3 3 epsfbox myfile eps and hence you can include an EPS file in the pspicture environment Turn on psgrid and you can find the coordinates for whatever graphics or text you want to add This works even when the picture has a weird bounding box because with the arguments to pspicture you control the bounding box from TEX s point of view This isn t always the best way to work with an EPS file however If the PostScript file s bounding box is the size you want the resulting picture to be after your additions then try hbox picture objects includegraphics file eps Importing EPS files 110 This will put all your picture objects at the lower left corner
131. ver other delimiters the angle argu ment uses For example the following are two ways to draw an arc of 8 inch radius from 0 to 135 degrees SpecialCoor psarc 0 0 8in 0 135 w nn e psarc 0 0 8in O 1 1 does not allow one to mix Cartesian and polar coordinates the way SpecialCoor does and because it is not as apparent when examining an input file whether e g 3 2 is a Cartesian or polar coordinate The command for undoing Polar is Cartesian It has an optional argument for setting the default units Le Cartesian x y has the effect of psset xunit x yunit y Cartesian can be used for this purpose without using Polar Special coordinates 105 lps Raw PostScript code ps should expand to a number The same units are used as with num The command NormalCoor disables the SpecialCoor features 50 Overlays Overlays are mainly of interest for making slides and the overlay macros described in this section are mainly of interest to TEX macro writers who want to implement overlays in a slide macro package For example the seminar sty package a IATEX style for notes and slides uses PS Tricks to implement overlays Overlays are made by creating an hbox and then outputting the box several times printing different material in the box each time The box is created by the commands Voverlaybox stuff endoverlaybox IATEX users can instead write begin overlaybox
132. yle solid fillcolor gray zl pscurve 0 2 1 2 5 2 1 5 4 3 3 pscurve 4 1 3 0 5 2 1 1 0 0 5 If liftpen 1 the curves do not use the current point as the first coordinate except psbezier but you can avoid this by explicitly including the first coordinate as an argument For example 1 pscustom linewidth 2pt fillstyle solid fillcolor gray 2 pscurve 0 2 1 2 5 2 1 5 4 3 al Wscurve liftpen 1 4 1 3 0 5 2 1 1 0 0 5 If liftpen 2 the curves do not use the current point as the first coordinate and they do not draw a line between the current point and the beginning of the curve For example pscurve 0 2 1 2 5 2 1 5 4 3 pscurve liftpen 2 4 1 3 0 5 2 1 1 0 0 5 Later we will use the second example to fill the region between the two curves and then draw the curves Graphics objects 35 20 Safetricks The commands described under this heading which can only be used in pscustom do not run a risk of PostScript errors assuming your document compiles without TEX errors Let s start with some path fill and stroke commands newpath Clear the path and the current point moveto coor This moves the current point to x y closepath This closes the path joining the beginning and end of each piece there may be more than one piece if you use moveto stroke par This strokes the path non destructively pscustom automatically strokes the path but you migh

Download Pdf Manuals

image

Related Search

Related Contents

G700 Maintenance Manual R3  Valvole di controllo autoazionate 1261-R e 1261  常滑市立図書館 指定管理者仕様書  VAC Pump - Apex Medical  539 05 00 Rev1 Folheto de Instruções Secador  ASUS C7477 User's Manual  

Copyright © All rights reserved.
Failed to retrieve file