Home
PSTricks: User's Guide
Contents
1. A subtree s profile varies from level to level pstree has two modes for fitting subtrees together tight With tight fit the subtrees are fit together so that the minimum distance on any level is treesep This is the default Trees 38 loose With loose fit the distance between the subtrees bounding boxes is treesep Except when you have exceptionally large interme diate nodes the effect is that the horizontal distance or vertical distance for horizontal trees between all the terminal nodes is the same You select the mode with the treefit tight loose Default tight parameter treefit tight treefit loose 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 current 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 pstree TC TC TC Trees 39 There are some things you may want set uniformly across a level in the tree such as the levelsep At level n the command pstreehookroman n 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
2. 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 combi nations the dashed line is the baseline Placing and rotating whatever 43 Here is a marginal note 1 1 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 rput b 90 1 0 Here is a marginal note One common use of a macro such as rput is to put labels on things PSTricks has a variant of rput that is especially designed for labels uput abe sep 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 qdisk 1 1 1 pt uput 45 1 1 1 1 Here is a more interesting example where uput is used to make a pie chart PSTricks is distributed with a useful tool for converting data to piecharts piechart sh This is a UNIX sh script written by Denis Girou Placing and rotating whatever 44 psset unit 1 2cm pspicture 2 2 2 2
3. 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 an gleB and with a length of armA or armB Then the two arms are connected by a straight line so that the whole line has three line segments For example rput tl 0 3 rnode A psframebox Node A rput br 4 0 ovalnode B Node B ncdiag angleA 90 angleB 90 arm 5 linearc 2 A B Rather than using a true arc neare actually draws a bezier curve When con necting two circular nodes using the default parameter values the curve will be indistinguishable from a true arc However ncare 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 11 You can also set one or both of the arms to zero length For exam ple if you set arm 0 the nodes are connected by a straight line but you get to determine where the line connects whereas the con nection point is determined automatically by ncline Compare this use of nediag with ncline in the following example rput r 4 1
4. griddots num Default 0 If num is positive the grid lines are dotted with num dots per division gridlabels dim Default 10pt The size of the numbers used to mark the grid gridlabelcolor co or 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 psgrid subgriddiv 1 griddots 10 gridlabels 7pt 1 1 3 1 Note that the values of xunit and yunit are important parameters for psgrid because they determine the spacing of the divisions E g if the value of these is 1pt and then you type psgrid 0 0 10in 10in Grids 18 you will get a grid with 723 main divisions and 3615 subdivisions Actually 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 5in 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 have to generate the data and enter it as coordin
5. 15 Trees This section describes several graphics parameters for pstree Any settings of graphics parameters for pstree affects all of its successors including subtrees but not the root node The treemode R L U D Default parameter controls the direction in which the tree grows R L U and D stand for right left up and down respectively When you change the treemode the treemode of all nested trees changes as well For example here is a tree that grows up and then to the left Trees 36 Al A2 pstree treemode U dotstyle oplus dotsize 6pt nodesep 2pt Tc 3pt pstree treemode L Tc 3pt Tdot Tdot Tdot Tdot When the tree goes up or down the successors are lined up from left to right in the order they appear in pstree s argument When the tree goes 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 A tree can also be root node This is useful when the nested tree goes off in a different direction If treeB is the root node of treeA then the root of treeB is also the root node treeA pstree pstree treemode L Tcircle root Tr B H Tr A1 Tr A2 A node can also contain a tree but that is another story The distance between successors and between levels is given by the treesep dim Default 75cm levelse
6. 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 ncline root C nbput below The position on the node connection is set by the npos num Default Node connections labels 20 parameter roughly according to the following scheme Each node con nection has potentially one or more segments including the arms and connecting 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 sub stituted This is the default mode Here are the details for each node connection Connection Segments Range Default ncline 1 0 lt pos lt 1 0 5 nccurve 1 0 lt pos lt 1 0 5 ncarc 1 0 lt pos lt 1 0 5 ncbar 3 OSposs3 1 5 ncdiag 3 OSposs3 1 5 ncdiagg 2 OSposs2 0 5 ncangle 3 OSposs3 1 5 ncangles 4 OSpos lt 4 1 5 ncloop 5 OSposs5 25 nccircle 1 0 lt pos lt 1 0 5 ncbox 4 OSpos lt 4 0 5 ncarcbox 4 O lt poss4 0 5 Here is an example rput tl 0 3 rnode A psframebox Node A d rput br 3 5 0 ovalnode B Node B ncangles angleA 90 arm 4cm linearc 15 A B ncput d nbput nrot D npos 2 5 par With ncbox and ncarcbox the
7. At the beginning of pscustom there is no path There are various commands 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 psfill and pstroke 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 Custom graphics 32 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 linewidth is used in some calculations when drawing the path pscustom and fill make use of fillstyle and re lated 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
8. pstribox trimode U Huge Begin Begin gt ve 5 Obsolete put commands 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 argument and it gives the point in stuff that should be aligned with x y E g qdisk 4 0 2pt Rput tl 4 0 x y x y Here is the equivalence between uput s refangle abbreviations and Rput s refpoint abbreviations Framed boxes 4 uput r u d ur ul dr dl Rput b r t bl br t rl Some people prefer Rput s convention for specifying the position of stuff over uput s Once upon a time there was psput instead of nput This feature is still supported for backwards compatibility Obsolete put commands 5 I made the file symbol a node Now I can draw an arrow so that you know what I am talking about 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 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 de
9. rput br 4 0 ovalnode B Node B ncdiag angleA 90 angleB 90 arm 5 linearc 2 A B Node B Node connections 63 ncdiagg par arrows nodeA nodeB This 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 The connection typically has two segments The value of linearc is used for rounding the corners cnode 0 0 4pt a rput l 3 1 rnode b H rput I 3 1 rnode c T ncdiagg angleA 180 armA 2cm nodesepA 3pt b a ncdiagg angleA 180 armA 2cm nodesepA Spt c a ncangle par arrows nodeA nodeB The node connection points are determined by angleA and angleB and nodesep and offset Then an arm is drawn for node B using armB This arm is connected to node A by a right angle that also meets node A at angle angleA Generally the whole line has three straight segments but it can have fewer The value of linearc is used for rounding the corners Simple right Here is an example rput tl 0 3 rnode A psframebox Node A rput br 4 0 ovalnode B Node B ncangle angleA 90 angleB 90 arm 4cm linestyle dashed A B ncangles par arrows nodeA nodeB Node B This is similar to ncangle but both armA and armB are used The arms are connected by a right angle that meets arm A at a right angle as well Generally there are four segments hence one more angle than ncangle and hence the s in ncangles The value o
10. you get no arrows If arrows lt gt you get arrows on both ends of the curve You can also set arrows gt and arrows lt if you just want an arrow on the end or beginning of the curve respectively With the open curves you can also specify the arrows as an optional argument enclosed in brackets This should come after the optional parameters argument E g a 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 coordinates or control points of the object Section 9 describes how to change the dot style gt The parameter value is stored in the conditional ifshowpoints Basic graphics parameters 9 Basic graphics objects 6 Lines and polygons The objects in this section also use the following parameters linearc dim 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 frameare parameter determines the radius of the rounded corners for psframe as desc
11. 16 30 TeXtoEPS 79 ticks parameter 50 ticksize parameter 50 94 tickstyle parameter 50 50 TPoffset 77 translate 38 unit parameter 7 7 19 72 uput 44 44 45 68 xunit parameter 7 8 17 18 72 yunit parameter 7 7 8 17 18 72 INDEX 95 1 Dots The graphics objects psdot par x7 y7 psdots par x1 y1 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 Style Example Style Example eee ee square z o a o o o o O 0 0 square E E E E E PRLR E diamond 4 x I E E a diamond o 9 9 0 0 asterisk triangle ali ca i oplus fe See triangle 4 4 4 otimes pentagon 9 9 l l l l l pentagon t e e e 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 dotsize dim 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 dots 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 nu
12. Opt This is like aresepA but ang eB is adjusted Arcs circles and ellipses 12 arcsep dim Default 0 This just sets both arcsepA and arcsepB These parameters make it easy to draw two intersecting lines and then use psare with arrows to indicate the angle between them For example SpecialCoor psline linewidth 2pt 4 50 0 0 4 10 psarc arcsepB 2pt gt 3 10 50 psarcn par arrows x y radius angleA angleB This is like psarc but the arc is drawn clockwise You can achieve the same effect using psare by switching angleA and angleB and the arrows 8 Curves psbezier par arrows x0 y0 x1 y1 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 coordinates in addition to determining the tangency of the curve at the endpoints also pull the curve towards themselves For example psbezier linewidth 2pt showpoints true gt 0 0 1 4 2 1 4 3 5 3However with pscustom graphics object described in Part IV psaren is not redundant Curves 13 showpoints true puts dots in all the control points and connects them by dashed lines which is useful when adjusting your bezier curve parabola par arrows x0 yO x7 y1 Starting at x0 y0 p
13. The gradient fill style Adding color to tables Typesetting text along a path Stroking and filling character paths Importing EPS files Table of contents 36 39 39 41 41 42 46 47 52 52 54 55 58 59 60 66 70 70 71 73 74 75 76 77 78 41 Exporting EPS files Help Boxes Tips and More Tricks Including PostScript code 5 Q W p Troubleshooting Table of contents 79 82 82 85 86 87 Welcome to PSTricks PSTricks is a collection of PostScript based TEX macros that is com patible with most T X macro packages including Plain T X IJEX AMST X and AMS I4I X PSTricks gives you color graphics rota tion trees and overlays PSTricks puts the icing PostScript on your cake TEX To install PSTricks follow the instructions in the file read me pst that comes with the PSTricks package Even if PSTricks has already been installed 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 Finish 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 soluti
14. The node and point connections can be used with pscustom The beginning of the node connection is attached to the current point by a straight line as with psare 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 When 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 The node connections use the following parameters nodesep dim Default 0 The border around the nodes added for the purpose of determining where to connect the lines offset dim Default 0 After the node connection point is calculated it is shift up for nodeA and down for nodeB by dim where up and down assume that the connecting line points to the right from the node arm dim Default 10pt Some node connections start with a segment of length dim before turning somewhere angle angle Default 0 Some node connections let you specify the angle that the node connection should connect to the node arcangle angle Default 8 This applies only to ncarc and is described below ncurv num Default 67 This applies only to nccurve and pecurve and is described below 4See page 71 if you want to use the nodes as coordinates in other PSTricks macros Node connections 61 Idea 1 Idea 2 loopsize dim Defaul
15. coor argument is the coordinate for positioning stuff but what this really means is different for each put command The coor argument is shown to be obligatory but you can actually omit it if you include the rotation argument that follow If you also want them to try to neutralize preceding space when used outside the pspicture environment e g in a IdfgX picture environment then use the command KillGlue The command DontKillGlue turns this behavior back off Placing and rotating whatever 42 stuff 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 useful for getting a piece of text right side up when it is nested inside rotations For example rput 34 psframe 1 0 2 1 rput or 0 2 1 em_ stuff There are also some letter abbreviations for the command angles These indicate which way is up Letter Short for Equiv to Letter Shortfor Equiv to U Up 0 N North 0 L Left 90 Ww 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 rput refooint rotation x y stuff refpoint determines the reference point of stuff and this reference point is translated to x y
16. foo bar foo bar However this is not as robust You must explicitly group color com mands in stuff and LR box commands that usually ignore spaces that follow stuff might not do so when psverbboxtrue is in effect B Tips and More Tricks 1 How do l rotate frame this or that with Idx See fancybox sty and its documentation 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 PostScript 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 Tips and More Tricks 85 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 pub lished by Addison Wesley You may find that the Ap
17. loopsize parameter 62 65 Lput 67 67 lput 62 67 67 68 movepath 38 moveto 36 36 Mput 67 67 mput 68 mrestore 38 38 msave 38 38 multido 47 51 multips 46 46 51 multirput 46 46 ncangle 64 64 66 ncangles 64 64 ncarc 61 63 63 65 66 ncbar 63 65 66 nccircle 65 65 66 nccoil 71 nccurve 61 62 63 65 66 ncdiag 63 64 66 ncdiagg 64 66 ncLine 62 65 68 ncline 62 62 65 66 68 69 71 ncloop 62 65 66 ncurv parameter 61 62 63 nczigzag 71 newcmykcolor 5 newgray 5 newhsbcolor 5 newpath 36 newpsobject 31 31 54 newpsstyle 31 31 newrgbcolor 5 nodesep parameter 61 62 64 72 nodesepA parameter 65 NormalCoor 73 offset parameter 61 62 64 67 72 91 openshadow 38 origin parameter 24 33 ovalnode 60 overlaybox 73 Ox parameter 49 49 50 Oy parameter 49 49 50 oy parameter 49 49 parabola 14 14 parameters Dx 49 49 Dy 49 49 Ox 49 49 50 Oy 49 49 50 angleA 63 65 angleB 63 64 angle 61 62 63 72 arcangleA 63 arcangleB 63 arcangle 61 arcsepA 12 12 13 arcsepB 12 13 arcsep 13 armA 63 65 armB 63 65 arm 61 63 arrowinset 30 30 arrowlength 30 30 arrowscale 30 30 arrowsize 30 arrows 9 11 19 20 28 29 48 axesstyle 51 bbilx 80 bblly 80 bburx 80 bbury 80 bordercolor 25 25 border 25 25 33 62 boxsep 52 53 54 brac
18. psset 5 6 6 11 41 pssetlength 7 psshadowbox 53 60 pstextpath 76 76 77 pstheader 76 PSTricksEPS 79 80 PSTricksOff 85 pstroke 32 pstrotate 46 PSTtoEPS 20 80 80 pstunit 32 pstVerb 5 42 46 55 69 74 pstverb 32 pstverbscale 42 55 69 74 psunit 8 77 psverbboxfalse 84 psverbboxtrue 4 84 85 pswedge 12 26 psxlabel 51 psxunit 8 19 psylabel 51 psyunit 8 19 pszigzag 70 70 71 putoverlaybox 74 adisk 11 34 qline 10 34 radians 8 roracketlength parameter 30 rcoor 40 INDEX rcurveto 39 readdata 20 20 21 rectarc parameter 54 red 4 rlineto 39 Rnode 59 60 68 rnode 59 59 60 68 69 RnodeRef 59 60 rotate 38 Rotatedown 56 rotatedown 56 rotateleft 55 rotateright 55 Rput 45 45 67 rput 41 43 43 46 53 58 67 71 78 80 runit parameter 7 8 savedata 20 20 scale 38 scalebox 56 scaleboxto 56 setcolor 40 shadow parameter 26 26 33 shadowangle parameter 26 26 shadowcolor parameter 26 26 shadowsize parameter 26 26 53 showorigin parameter 50 showpoints parameter 9 12 14 16 19 21 33 SpecialCoor 7 8 72 72 73 stroke 33 36 style parameter 31 subgridcolor parameter 18 subgriddiv parameter 18 subgriddots parameter 18 subgridwidth parameter 18 swapaxes 38 swapaxes parameter 24 33 toarsize parameter
19. units are used as with num The command NormalCoor disables the SpecialCoor features 35 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 IJIpX style for notes and slides uses PSTricks 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 overlaybox stuff endoverlaybox IJIgX users can instead write begin overlaybox lt stuff gt end overlaybox The material for overlay string should go within the scope of the com mand psoverlay string Overlays 73 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 overlaybox psoverlay all psframebox framearc 15 linewidth 1 5pt psoverlay main parbox 3 5cm raggedright Foam Cups Damage Environment psoverlay one Less than Paper Cups Study Says endoverlaybox putoverlaybox main hspace 5in putoverlaybox one Foam Cups Damage
20. 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 plotfile only recognizes the line polygon and dots plot styles and it ignores the arrows linearc and showpoints parameters The listplot command described below can also plot data from file without these restrictions and with faster T X processing However you are less likely to exceed PostScript s memory or operand stack limits with plotfile If you find that it takes TEX a long time to process your plot file command you may want to use the PSTtoEPS command described on page 80 This will also reduce TEX s memory re quirements dataplot par commands Plots 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 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 T
21. 1 2 5 2 1 5 4 3 gsave pscurvelliftoen 1 4 1 3 0 5 2 1 1 0 0 5 fill fillstyle solid fillcolor gray grestore pscurveflinewidth 1 5pt 4 1 3 0 5 2 1 1 0 0 5 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 Safe tricks 37 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 num71 num2 Scale the coordinate system in both directions by num1 or hori zontally 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 rotate 90 scale 1 1 scale 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
22. 1 25 pslinewidth See doubleline above Line styles 25 doublecolor color Default white See doubleline above Here is an example of double lines psline doubleline true linearc 5 doublesep 1 5pt gt 0 0 3 1 4 0 shadowz true 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 shadowcolor color Default darkgray See shadow above Here is an example of the shadow feature which should look familiar pspolygon linearc 2pt shadows true shadowangle 45 C xunit 1 1 1 55 1 5 8 5 8 65 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 Line styles 26 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 Fil
23. 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 The number of points that the psplot and parametricplot commands calculate is set by the plotpoints 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 increase the imaging time Which is better depends on the complexity of the computation Note that all PostScript lines are ultimately rendered Plots 22 as a series perhaps short line segments Mathematica 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 Mathematica 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 af
24. 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 whatever 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 transparent to TEX This parameter only applies to psframebox pscirclebox and psovalbox Here are the three box framing macros psframebox par stuff A simple frame perhaps with rounded corners is drawn using psframe 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 pspolygonffillcolor gray fillstyle crosshatch 0 0 3 0 3 2 2 2 rput 2 1 psframebox framearc 3 Label Text Tricks 52 psdblframebox pa stuff This draws a double frame It is just a variant of psframebox defined by newpsobject psdblframebox psframebox doublesep pslinewidth For example psdblframebox linewidth 1 5pt parbox c 6cm raggedright A double frame is drawn with the gap between lines equal to tt doublesep 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
25. 62 ncarc par arrows nodeA nodeB This is actually a variant of nccurve I e it also connects the nodes with a bezier curve using the nodesep offset and ncurv parameters However the curve connects to node A at an angle arcangleA from the line between A and B and connects to node B at an angle arcangleB from the line between B and A For small equal values of angleA and angleB e g the default value of 8 and with the default value of neurv the curve approximates an arc of a circle ncare is a nice way to connect two nodes with two lines cnodeput 0 0 A X cnodeput 3 2 B Y psset nodesep 3pt ncarc gt A B x ncarc gt B A ncbar par arrows nodeA nodeB First lines are drawn attaching to both nodes at an angle angleA and of lengths armA and armB Then one of the arms is extended so that when the two are connected the finished line contains 3 segments meeting at right angles Generally the whole line has three straight segments The value of linearc is used for rounding the corners c ds rnode A Connect some rnode B words onnet SOME WOTUS ncbar nodesep 3pt angle 90 lt A B ncdiag par arrows nodeA nodeB First the arms are drawn using angle and arm Then they are connected with a straight line Generally the whole line has three straight segments The value of lineare is used for rounding the corners rput tl 0 3 rnode A psframebox Node A
26. Environment Less than Paper Cups Study Says Driver notes Overlays use pstVerb and pstverbscale 36 The gradient fill style The file gradient tex gradient sty along with the PostScript header file gradient pro defines the gradient fillstyle for gradiated shading This fillstyle uses the following parameters gradbegin col or Default gradbegin The starting and ending color gradend color Default gradend The color at the midpoint The gradient fill style 74 gradlines int Default 500 The number of lines More lines means finer gradiation but slower printing gradmidpoint num Default 9 The position of 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 newrgbcolor gradbegin O 1 95 newrgbcolor gradend 0 1 1 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 37 Adding color to tables The file colortab tex colortab sty contains macros that when used with colortab color commands such as those in PSTricks let you color the cells and lines in tables See colortab doc for more information Adding color
27. a polar coordinate 3 110 that is scaled along with xunit and yunit I can write 13 110 cos mul 3 110 sin mul coor1 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 There is an obsolete command Polar that causes coordinates in the form r a to be interpreted as polar coordinates The use of Polar is not recommended because it 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 I e Cartesian lt x gt lt y gt has the effect of psset xunit lt x gt yunit lt y gt Cartesian can be used for this purpose without using Polar Special coordinates 72 coor A coordinate indicating where the angle points to Be sure to include the in addition to whatever other delimiters the angle argument 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 psarc 0 0 8in O 1 1 lps Raw PostScript code ps should expand to a number The same
28. 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 rnode A sp hskip 2cm rnode B Bit ncline A B With Rnode the center is determined relative to the baseline Large Rnode A sp hskip 2cm Rnode B Bit ncline A B You can usually get by without fiddling with the center the center of the node but to modify it you set the 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 Nodes 7 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
29. above For example pscustom linewidth 2pt fillstyle solid fillcolor gray pscurve 0 2 1 2 5 2 1 5 4 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 pscustom linewidth 2pt fillstyle solid fillcolor gray pscurve 0 2 1 2 5 2 1 5 4 3 pscurve 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 Graphics objects 35 pscustom linewidth 2pt fillstyle solid fillcolor gray 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 20 Safe tricks 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 T
30. amp C amp D amp endpsmatrix psset shortput nab arrows gt labelsep 3pt small ncline 2 2 2 3 npos 75 a ncline 2 2 2 1 b ncline 3 2 2 1 c ncarc arcangle 40 border 3pt 3 2 1 2 _ npos 3 d npos 7 e ncarc arcangle 1 2 1 2 2 1 f ncarc arcangle 1 2 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 with 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 Mathematical diagrams and graphs 27 psmatrix colsep 1cm amp mnodescircle X Y amp Z endpsmatrix psset nodesep 3pt arrows gt ncline 1 2 2 1 ncline 1 2 2 2 ncline linestyle dotted 2 1 2 2 If you want your entry to begin with a that is not meant to indicate parameter 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 row col but here are a few reasons for giving your own name to a node e The name may be easier to keep track of e Unlike the row co names the names you give remain valid even when you add extra rows or columns
31. an hbox and then rotated or scaled leaving the appropriate amount of spaces Here are a few uninteresting examples a fa Large bf rotateleft Left rotatedown Down rotateright Right gt Gas There are also two box scaling macros scalebox num1 num2 stuff If you give two numbers in the first argument num 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 scalebox 1 1 this scaleboxto 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 directions For example dl on scaleboxto 4 2 Big and long PSTricks defines LR box environments for all these box rotation and scaling commands pslongbox Rotateleft rotateleft pslongbox Rotateright rotateright pslongbox Rotatedown rotatedown pslongbox Scalebox scalebox pslongbox Scaleboxto scaleboxto Here is an example where we Rotatedown for the answers to exercises Rotation and scaling boxes 56 Question How do Question How do Democrats organize a firing squad Democrats organize a begin Rotatedown i 9 firing squad
32. 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 psline linewidth 5cm 0 0 0 2 psline linewidth 5cm c c 1 0 1 2 psline linewidth 5cm cc cc 2 0 2 2 pslineflinewidth 5cm C C 3 0 3 2 C ce cc 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 Arrowheads and such 29 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 2pt 3 Width of arrowheads as shown below arrowlength num Default 1 4 Length of arrowheads as shown below arrowinset num Default 4 Size of inset for arrowheads as shown below arrowsize dimnum width num x linewidth dim1 length length arrowlength x width inset inset arrowinset x height wid
33. connections point to the right aput is a node connection variant of uput For example pspolygon 0 0 4 2 4 0 pclineflinestyle none 0 0 4 2 aput U Hypotenuse bput abelsep angle pos stuff This is like aput but stuff is positioned below the node connec tion 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 arguments Therefore PSTricks contains some variants 8There is also an obsolete command Lput for putting labels next to node connec tions 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 rotation or pos argument Lput and Mput remain part of PSTricks only for backwards compatibility Obsolete put commands 31 mput refpoint stuff Aput abelsep stuff Bput abelsep stuff of Iput aput and bput respectively that have no angle or positioning argument For example ee cnode 0 0 3pt A i cnode 4 2 3pt B ae ncline nodesep 3pt A B is mput 1 Here is another Label pcline lt gt 0 0 4 2 Aput Label Obsolete put commands 32 Trees 13 Overview The node and node connections are perfect tools for making trees The file pstree tex pstree sty contains a high level interface for positioni
34. for the tips at x1 and y1 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 Including a first arrow in these examples would have had no effect because arrows are never drawn at the origin Axes 48 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 x1 and x2 For example compare psaxes lt gt 0 0 2 5 0 2 5 2 5 with what we get when x7 and x2 are switched psaxes lt gt 0 0 2 5 0 2 5 2 5 psaxes puts the ticks and numbers on the axes at regular intervals using the following parameters Horitontal Vertical Description Ox num_ Oy num Label at origin Dy num Label increment oy dim 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 labels using rudimentary fixed point arithmetic and it will come up with the wrong answer un less Ox and Dx or Oy and Dy have the same number of digits to the right of the decimal The only exception is that
35. 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 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 16 Edges A tree node is really a composite object In addition to creating a new node it also draws a node connection between itself and its predecessor if there is one Edges 40 When a tree node has made the new node the command pssucc is equal to the name of this node and pspred is equal to the name of its predecessor Then the tree node executes psedge pspred pssucc You can define psedge to make whatever node connection you want see Section For example here I use ncdiag with armA 0 to get all the node connections to emanate from the same point in the predecessor def psedge ncdiag armA 0 angleB 180 armB 1cm Or renewcommand psedge pstree treemode R levelsep 3 5cm framesep 2pt Tc 6pt small Tcircle N Tcircle K Tcircle H Tcircle L 0 Q Q Here is another example with ncdiagg Note the use of negative the armA value so that the corners of the edges are vertically aligned even though the nodes have differen
36. ovalnode R Root cnodeput 1 2 A XX cnodeput 1 0 B YY ncdiag angleB 180 arm 0 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 x ncdiag 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 cnode 0 0 12pt a rput l 3 1 rnode b H rput I 8 1 rnode c T ncdiagg angleA 180 armA 1 5 nodesepA 3pt b a ncdiag angleA 180 armA 1 5 armB 0 nodesepA 3pt c a You can use nediagg 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 fs Connect some words C T 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 ncbar nodesep 3pt angle 90 lt A B ncbar nodesep 3pt angle 70 A B Generally the whole line has three straight segments Node connections 12 ncangle par arrows nodeA nodeB Now we get to a more complicated node connection ncangle typically draws three line segments like nediag However rather than fixing the leng
37. parbox hsize Answer First they get in a circle ldots hss 7 Pm e urj98 oyp SI vamsuy end Rotatedown See the documentation of fancybox sty for tips on rotating a I IpX table or figure environment and other boxes Rotation and scaling boxes 57 Vy i i Nodes and Node Connections All the commands described in this part are contained in the file pst pst node f 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 graphs and trees mathematical diagrams linguistic syntax diagrams and connecting ideas of any kind They are the trickiest tricks in PSTricks Although you might use these macros in pictures positioning and rotat ing them with rput you can actually use them anywhere For example I might do something like this in a guide about page styles makeatletter gdefips temp def i oddhead defi evenhead def oddfoot small sf With the myfooters page ovalnode boxsep false A rightmark style the name of the nccurve ncurv 5 angleB 240 angleA 180 nodesep 6pt lt A B current section appears nfil thepage at the bottom of each let evenfoot oddfoot page makeatother thispagestyle temp With the tt myfooters page style the name of the current section appears at the bottom of each rnode B page You can
38. 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 Only nccircle does not have a pc variant Command Corresponds to pcline arrows x7 y1 x2 y2 ncline pecurve arrows x7 y1 x2 y2 nccurve pearc arrows x7 y1 x2 y2 ncarc pebar arrows x7 y1 x2 y2 ncbar pcdiag arrows x7 y1 x2 y2 ncdiag pceangle arrows x7 y1 x2 y2 ncangle pcloop arrows x7 y1 x2 y2 ncloop pcbox x1 y71 x2 y2 ncbox pcarcbox x1 y1 x2 y2 ncarcbox 8 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 Node connections labels 18 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 ncpu
39. psshadowbox bf Great Idea You can get the shadow with psframebox just be setting the shadowsize parameter but with psframebox the dimensions of the box won t reflect the shadow which may be what you want pscirclebox 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 pscirclebox begin tabular c You are here end tabular here cput par fangle x y stuff This combines the functions of pscirclebox and rput It is like rput lt angle gt x0 y0 string pscirclebox lt par gt lt stuff gt but it is more efficient Unlike the rput command there is no argument 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 Framed boxes 53 At the introductory price of 13 99 it pays to act now cput doubleline true 1 5 large K_1 psovalbox pa 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 false At the introductory price of psovalbox boxsep false linecolor darkgray 13 99 it pays to act now You can define variants of these box framing macros using the newp sobject command
40. segments run counterclockwise starting with the lower side of the box Hence with nbput the label ends up outside the box and with naput the label ends up inside the box 5 a Node connections labels 21 I lt x I 1 l 7 I 4 7 Pad yume 11 Pd sega ee rput bl 5 0 rnode A 1 rput tr 3 5 2 rnode B 2 ncarcbox nodesep 2cm boxsize 4 linearc 4 arcangle 50 linestyle dashed lt gt A B nbput nrot U set nbput npos 2 II If you set the parameter shortput none nab tablIr tab Default none to nab then immediately following a node connection or another node connection 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 27 If you have set shortput nab 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 MakeShortNab char1 char2 command The shortput tabIr and shortput tab options are described on pages 24 and respectively 9 Node connection labels Il Now the second group of node connections You can also use
41. 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 radius name ee This draws a circle Here is an example with pnode and cnode cnode 0 1 25 A pnode 3 0 B ncline lt A B Cnode par x y name This is like cnode but the radius is the value of radius dim Default 2pt 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 stuff ovalnode pa 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 circlenode A Circle and ovalnode B Oval ncbar angle 90 A B dianode pa name stuff This is like diabox trinode par name stuff This is like tribox rput tl 0 3 dianode A Diamond rput br 4 0 trinode trimode L B Triangle nccurve angleA 135 angleB 90 A B dotnode par x y name This is a variant of psdot For example dotnode dotstyle triangle dotscale 2 1 0 0 A dotnode dotstyle 3 2 B ncline nodesep 3pt A B a mm O fn
42. text display script and scriptscript Generally if the box macro occurs in displayed math but not in sub or superscript 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 Help 82 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 psmathboxfalse You can have commands such as but not restricted to the math style commands automatically inserted at the beginning of each LR box using the everypsbox commands command 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 IdfgX 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 8This is a token register Boxes 83 e The syntax is clearer when stuff is long e It is easier
43. to build composite LR box commands For example here is a framed minipage environment for I4I X pslongbox MyFrame psframebox newenvironment fminipage MyFrame begin minipage end minipage endMyFrame e You include verbatim text and other catcode tricks in stuff 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 useful 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 before processing 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 IJIEX example to see the problem psframebox verb foo bar The LR box environments defined with pslongbox do not have this problem because stuff is not processed as an argument Thus this works pslongbox MyFrame psframebox MyFrame verb foo bar endMyFrame 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 Incidentally many foreign language macros such as greek tex use catcode tricks which can cause problems in LR box macros Boxes 84 psverbboxtrue psframebox verb
44. to your matrix e The names remain valid even when you start a new psmatrix that reuses the row co names Here a few more things you should know e The baselines of the nodes pass through the centers 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 psmatrix when you want this kind of alignment e You can left or right justify the nodes by setting the mcol r c Default c parameter r and c stand for left right and center respectively e The space between rows and columns is set by the Mathematical diagrams and graphs 28 rowsep dim Default 1 5cm colsep dim Default 1 5cm parameters e If you want all the nodes to have a fixed with 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 e The radius of the c mnode corresponding to cnode is set by the radius dim Default 2pt parameter Like in IJI X you can end a row with dim to insert an extra space dim between rows e The command psrowhookii is executed if defined at the begin ning 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 be tween tw
45. useful for example if you are making several connections to the same node as in the following example rnode A Word1 and rnode B Word2 and rnode C Word3 Word and Word2 and Word3 ncbar offsetB 4pt angleA 90 nodesep 3pt gt A B Lo LO t ncbar offsetA 4pt angleA 90 nodesep 3pt gt HBHC 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 won t happen naturally if the nodes are of different size as you can see in this example 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 H ncdiagg b a a ncdiagg c a 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 Node connections 17 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 1 2pt ncdiagg b a a ncdiagg c a Note also the use of Rnode One more paramter 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
46. 2 2 2 2 pswedgeffillstyle solid fillcolor gray 2 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 rput 1 2 135 psframebox small 16 7M uput 2 2 135 0 0 Heath rput 1 2 280 psframebox small 23 1M uput 2 2 280 0 0 M amp M endpspicture Heath M amp M You can use the following abbreviations for refangle which indicate the direction the angle points OUsing 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 argument and it gives the point in stuff that should be aligned with x y E g qdisk 4 0 2pt r Rput t 4 0 x y x y Here is the equivalence between uput s refangle abbreviations and Rput s refpoint abbreviations uput r u d ur u dr dl Rput b r t b b t r Some people prefer Rput s convention for specifying the position of stuff over uput s Placing and rotating whatever 45 Letter Shortfor 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 qdisk 1 1 1p
47. 3 OSposs3 1 5 ncdiag 3 OSposs3 1 5 ncdiagg 2 0 lt pos lt 2 0 5 ncangle 3 0 lt pos lt 3 1 5 ncloop 5 O lt poss4 2 5 nccircle 1 0 lt pos lt 1 0 5 There is another difference between the node label commands and other put commands In addition to the various ways of specifying the angle Attaching labels to node connections 66 yor of rotation for rput with the node label commands the angle can be of the form ang e In this case the angle is calculated after rotating the coordinate system so that the node connection at the position of the label points to the right from nodes A to B E g if the angle is U then the label runs parallel to the node connection 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 angle with Iput as well as the use of the offset parameter with pcline pspolygon 0 0 4 2 4 0 pcline offset 1 2pt 0 0 4 2 lput U Length Remember that with the put commands you can omit the coor dinate if you include the angle of rotation You are likely to use this feature with the node label commands With Iput and rput you have a lot of control over the position of the label E g pcline 0 0 4 2 lput U rput r N 0 4 label puts the label upright on the page with right side located 4 centimeters above the position 5 of the node connection a
48. 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 IJT X 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 that 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 vbox or dX parbox or minipage IdIpX 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 Idfkx LR box com mands With l ipX 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 T X has four math styles
49. If you want to control the final size of the frame independently of the material inside nest stuff in something like IdT X s makebox command 28 Clipping 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 reached 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 indicates 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 Clipping 54 One of the best new plays I have seen all year cool poetic ironic proclaimed The Guardian upon the Lon a of thir 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 ldots proclaimed em The Guardian upon the London premiere of this extraordinary play about a Czech director and his actress wife confronting exile in America vspace 1c
50. MakeShortNab if you want to use and _ with non standard category codes Just invoke the command after you have made your catcode changes Node connection labels II 22 tvput par stuff tlput par stuff trput par stuff thput par stuff taput par stuff tbput par stuff The difference between between these commands and the n put com mands 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 vertical 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 setlength arraycolsep 1 1cm begin array cc Rnodefa X A amp Rnode b A 1 5cm Rnode c x amp Rnode d tilde X end array Node connection labe
51. Ox or Oy can always be an integer even if Dx or Dy is not The converse does not work however 13For 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 complain but you won t get the right labels either Axes 49 Note that psaxes s first coordinate argument determines the physical position 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 0 along each axis unless you explicitly change Ox and Oy For example 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 tickstyle full top bottom Default full For example if tickstyle top then the ticks are only on the side of the axes away from 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 dim above and or below the axis The distan
52. adjusts the lines so that they all have the same width but the space between them which in this case is black can have varying width Each of the pure graphics objects except those beginning with q has a starred version that produces a solid object of color linecolor It automatically sets linewidth to zero fillcolor to linecolor fillstyle to solid and linestyle to none 15 Arrowheads and 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 gt This is TEX s version of WYSIWYG Arrowheads and such 28 Value Example Name None lt gt lt Arrowheads gt lt lt _ Reverse arrowheads lt lt gt gt lt lt gt Double arrowheads gt gt lt lt gt lt lt Double reverse arrowheads 4 T bars flush to endpoints Tbars centered on endpoints E Square brackets t Rounded brackets o o Circles centered on endpoints _ Disks centered on endpoints 00 00 Circles flush to endpoints _ 3 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
53. ale arrowscale num1 num2 Default Imagine that arrows and such point down This scales the width of the arrows by num and the length height by num2 If you only include 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 3 Lines and polygons psdiamond par x0 y0 x7 y7 psdiamond draws a diamond centered at x0 y0 and with the half width and height equal to x7 and y1 respectively psdiamond framearc 3 fillstyle solid fillcolor lightgray 2 1 1 5 1 The diamond is rotated about the center by gangle gangle Default 0 pstriangle par x0 yO x7 y1 pstriangle draws an isosceles triangle with the base centered at x0 y0 and with width base and height equal to x1 and y1 respectively pstriangle gangle 10 2 5 4 1 Lines and polygons 3 4 Framed boxes psdiabox pa stuff psdiabox draws a diamond psdiabox shadowstrue Large bf Happy pstribox par stuff pstribox draws a triangle Begin pstribox trimode R framesep 5pt Large bf Begin The triangle points in the direction trimode 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
54. arabola draws the parabola that passes through x0 yO and whose maximum or minimum is x1 y1 For example parabola 1 1 2 3 psset xunit 01 parabola lt gt 400 3 200 0 The next three graphics objects interpolate an open or closed curve through the given points The curve at each interior point is perpendic ular 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 curvature num1 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 num 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 proportionately However positive values can look better with irregularly spaced coordinates Values less than 1 or greater than 2 are converted to 1 and 2 r
55. arameter 33 doublecolor parameter 25 26 doubleline parameter 25 25 26 33 doublesep parameter 25 25 Dx parameter 49 49 dx parameter 49 49 Dy parameter 49 49 dy parameter 49 endoverlaybox 73 endpscharclip 78 78 endpsclip 54 54 55 78 endpspicture 41 endTeXtoEPS 79 everypsbox 83 file 40 fileplot 20 20 fill 33 37 fillcolor parameter 9 27 28 52 fillstyle parameter 9 27 28 32 33 51 74 77 framearc parameter 10 10 framenode 60 framesep parameter 52 gradangle parameter 75 gradbegin parameter 74 75 gradend parameter 74 75 gradlines parameter 75 gradmidpoint parameter 75 gray 4 grestore 37 37 38 gridcolor parameter 18 griddots parameter 18 18 gridlabelcolor parameter 18 gridlabels parameter 18 gridwidth parameter 18 gsave 37 37 38 hatchangle parameter 27 27 hatchcolor parameter 27 hatchsep parameter 27 hatchwidth parameter 27 headertile parameter 81 81 headers parameter 1 81 KillGlue 42 labels parameter 50 labelsep parameter 44 50 liftoen parameter 35 35 37 linearc parameter 10 10 19 21 54 63 64 71 linecolor parameter 8 8 9 24 28 32 33 52 linestyle parameter 24 25 28 32 33 51 55 76 77 INDEX lineto 39 39 linetype parameter 33 33 linewidth parameter 8 8 11 16 24 28 30 32 33 listplot 20 21 21
56. arameters 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 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 ncarcbox par nodeA nodeB ncarcbox encloses the nodes in a curved box that is arcangleA away from the line connecting the two 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 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 Node connections 16 You can also set offsetA and offsetB independently This shifts the point where the connection joins up by dim given the convention that connections 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 o cnodeput 0 0 A X cnodeput 3 2 B Y psset nodesep 3pt offset 4pt arrows gt ncline A B x ncline B A 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
57. arameters are stored in the dimension registers psunit also psrunit psxunit and psyunit Angles in polar coordinates and other arguments should be a number giving 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 The command radians is short for degrees 6 2831 9 SpecialCoor lets you specify angles in other ways as well 5 Basic graphics parameters The width and color of lines is set by the parameters linewidth dim Default 8pt linecolor color 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 Basic graphics parameters 8 fillstyle style 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 a psellipse 1 5 1 5 Open curves can have arrows according to the arrows arrows parameter If arrows
58. art a new line if there are many parameter changes E g the first example is acceptable but the second is not psset fillcolor yellow linecolor blue psset fillcolor yellow linecolor blue 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 peculiar form ready for 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 PS Tricks 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 Setting graphics parameters 6 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
59. ate 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 amount 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 arrows 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 Plots 19 fileplot par file plotfile 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 parentheses commas and or white space Bracketing all the data with square brackets
60. 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 89 for details You can avoid most problems by explicitly grouping color commands e g en closing the scope in braces whenever these are in the argument of another command However this is not necessary with the PSTricks LR box commands expect when psverbboxtrue is in effect See Section A Color 4 You can define or redefine additional colors and grayscales with the following commands 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 numis the gray scale specification to be set by PostScript s setgray operator 0 is black and 1 is white For example newgray darkgray 25 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 col
61. bl 0 0 rnode A psframebox Node A rput tr 4 3 ovalnode B Node B nccurve angleB 180 A B 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 neurvA 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 endpoints 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 bf back nccircle nodesep 3pt gt A 7cm kern 5pt nccircle can only connect a node to itself it is the only node connection with this property nccircle is also special because it has an additional argument for specifying the radius of the circle Node connections 15 4 N 7 a 7 Idea2 7 L 7 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 ncare In both cases the half the width of the box is boxsize dim 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 p
62. ble Usually you would use the open curves plus closepath see below to draw closed curves Open The open graphics objects are the most useful commands for drawing 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 pscustom 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 pscustom linewidth 1 5pt psplot plotstyle curve 67 4 2 x div psline 4 3 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 We ll see later how to make that one more interesting Here is another example pscustom pslineflinearc 2 0 2 0 0 2 2 psbezier gt 3 3 1 0 4 3 However you can control how the open curves treat the current point with the liftpen 0 1 2 Default 0 parameter If liftpen 0 you get the default behavior described
63. bove if the node connection points to the right However the aput and bput commands described below handle the most common cases without rput There is also an obsolete command Lput for putting labels next to node connec tions The syntax is Lput lt labelsep gt lt refpoint gt lt rotation gt lt pos gt lt stuff gt It is a combination of Rput and Iput equivalent to lput lt pos gt Rput lt labelsep gt lt refpoint gt lt rotation gt 0 0 lt stuff gt Mput is a short version of Lput with no rotation or pos argument Lput and Mput remain part of PSTricks only for backwards compatibility Attaching labels to node connections 67 aput abelsep angle pos stuff stuff is positioned distance pslabelsep above the node connec tion given the convention that node connections point to the right aput is a node connection variant of uput For example ee pspolygon 0 0 4 2 4 0 ps pcline linestyle none 0 0 4 2 aput U Hypotenuse bput abelsep angle pos stuff This is like aput but stuff is positioned below the node connec tion 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 arguments Therefore PSTricks contains some variants mput refpoint stuff Aput abelsep stuff Bput abelsep stuff of lput aput and bput respectively that have no angle or p
64. ce 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 Axes 50 1 5 1 0 0 5 0 0 psxlabel psylabel E g if you want change the font of the horizontal labels but not the vertical labels try something like def psxlabel 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 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 51 Vy l Text Tricks 27 Framed boxes The macros for framing boxes take their argument put itin an hbox and put a PostScript frame around it They are analogous to I lpX s fbox Thus they are composite objects rather than pure graphics objects In addition to the graphics parameters for psframe these macros use the following parameters framesep dim Default
65. componments 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 parameters 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 Safe tricks 38 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 coor rlineto coor This is like lineto but x y is interpreted relative to the current point curveto Xx7 y1 x2 y2 x3 y3 This is a quick version of psbezier x1 y1 x2 y2 x3 y3 rcurveto x7 y1 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 y1 x2 y2 xn yn Convert one or more PSTrick
66. dinates are always interpreted as Cartesian coordinates For exam ple 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 y0 coordinate is omitted x1 y1 is used The default for x1 y1 is 0 0 If you don t give any coordinates at all then the coordi nates 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 position 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 x1 away from y2 x1 y1 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 P 0 1 2 3 4 and 0 1 2 3 4 0 Grids 17 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
67. e ncbar pcediag par arrows x7 y1 x2 y2 Like ncdiag Node connections 65 pcangle par arrows x1 y1 x2 y2 Like ncangle pcloop par arrows x7 y1 x2 y2 Like ncloop 32 Attaching labels to node connections Now we come to the commands for attaching labels to the node con nections The node 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 The coordinate argument in other PSTricks put commands is a single number in the node label commands pos This number selects a point on the node connection roughly according to the following scheme Each node connection has potentially one or more segments including the arms and connecting lines A number pos between 0 and 1 picks a point on the first segment from node A to B fraction pos 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 the positioning coordinate which is used by some short versions of the label commands Here are the details for each node connection Connection Segments Range Default ncline 1 0 lt pos lt 1 0 5 nccurve 1 0 lt pos lt 1 0 5 ncarc 1 0 lt pos lt 1 0 5 ncbar
68. e linewidth 2pt 5 5 1 5 qdisk coor radius This is a streamlined version of pscircle Note that the two arguments are obligatory and there is no parameters arguments To change the color of the disks you have to use psset Arcs circles and ellipses 11 psset linecolor gray qdisk 2 3 4pt pswedge par x0 y0 radius angle1 angle2 This draws a wedge whose center is at x0 y0 that has radius radius and that extends counterclockwise from angle1 to angle2 The angles must be specified in degrees For example pswedgellinecolor gray linewidth 2pt fillstyle solid 2 0 70 2 psellipse par x0 y0 x1 y7 x0 yO is the center of the ellipse and x7 and y1 are the horizontal and vertical radii respectively For example psellipseffillcolor 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 fora circle of radius radius and centered at x y You must include either the arrows argument or the x y argument For example 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 direction of angleA arcsepB dim Default
69. efault definition of RnodeRef is 0 7ex E g the following are equivalent Rnode 0 6ex stuff def RnodeRef 0 6ex Rnode stuff Rnode is useful when aligning nodes by their baaelines such as in commutative diagrams With rnode horizontal node connections might not be quite horizontal because of differences in the size of letters pnode x y name This creates a zero dimensional node at the point x y default 0 0 cnode par x y radius name This draws a circle and assigns the name to it circlenode pal 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 ovalnode par name stuff This is a variant of psovalbox that gives the node the shape of the ellipse The reason that there is no framenode command is that using psframe box or psshadowbox or psdblframebox in the argument of rnode gives the desired result Node connections All the node connection commands begin with nc and they all have the same syntax lt nodeconnection gt lt par gt lt arrows gt lt nodeA gt lt nodeB gt Node connections 60 A line of some sort is drawn from nodeA to nodeB Some of the node connection commands are a little confusing but with a little experimen tation you will figure them out and you will be amazed at the things you can do
70. espectively Here are the three curve interpolation macros Curves 14 pscurve par arrows x7 y7 xn yn This interpolates an open curve through the points For example pscurve showpoints true lt gt 0 1 3 0 7 1 8 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 psecurve par arrows x7 y7 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 should join the first and last points The e has something to do with endpoints For example psecurve showpoints true 125 8 25 4 5 2 1 1 2 5 4 25 8 125 psccurve par arrows Xx7 y7 xn yn This interpolates a closed curve through the points c stands for closed For example psccurve showpoints true 5 0 3 5 1 3 5 0 5 1 9 Dots The graphics object psdots par x1 y1 x2 y2 xn yn Dots 15 puts 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 Style Example Style Example x 34 gta aias square i fens are le E pap aS S square E pentagon 2 e e triangle pentagon triangle Porot tot As with arrows there
71. ext 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 refooint rotation 0 0 stuff Mput is a short version of Lput with no rotation or pos argument Lput and Mput remain part of PSTricks only for backwards compati bility 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 angle with Iput as well as the use of the offset parameter with pcline a pspolygon 0 0 4 2 4 0 pcline offset 1 2pt 0 0 4 2 lput U Length Obsolete put commands 30 label Remember that with the put commands you can omit the coor dinate if you include the angle of rotation You are likely to use this feature with the node label commands With lput and rput you have a lot of control over the position of the label E g pcline 0 0 4 2 lput U rput r N 0 4 label puts the label upright on the page with right side located 4 centimeters 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 aput abelsep angle pos stuff stuff is positioned distance pslabelsep above the node connec tion given the convention that node
72. f Tdia par stuff Ttri par stuff Rnode is a good choice when you want the baselines of the text in the nodes to line up horizontally pstree nodesepB 3pt Tcircle X TR tildef tilde X TR x TR y Xx y Compare the preceding example with the next one which uses rnode Tree Nodes 34 pstree nodesepB 3pt Tcircle X Tr tilde tilde X Tr x e F Tr y There is also a null tree node Tn It is meant to be just a place holder e pstree nodesep 3pt TC pstree TC TC Tn pstree TC TC e e pstree TC Tn TC Actually if I was going to do this a lot I would define some short cuts defimytree pstree TC def ltree 1 mytree 1 Tn def rtree 1 mytree Tn 1 psset nodesep 3pt mytree Itree TC mytree TC rtree TC 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 Tree Nodes 35 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 pstree Tcircle foo Tfan Tf framesize 4pt pstree Tr psframebox framearc 5 bar Tfan Here is another example illustrating that a Tfan can have successors pstree Tcircle foo pstree Tfan linearc 1 Te 2pt Tfan linestyle dashed
73. f lineare is used for rounding the corners Compare this example with the previous one rput tl 0 3 rnode A psframebox Node A rput br 4 0 ovalnode B Node B ncangles angleA 90 arm 4cm linearc 15 A B Node connections 64 ncloop par arrows nodeA nodeB The first segment is armA then it makes a 90 degree turn to the left drawing a segment of length loopsize The next segment is again at a right angle it connects to armB For example rnode a psframebox Huge A loop ncloop angleB 180 loopsize 1 arm 5 linearc 2 gt a a nccircle par arrows node radius This draws a circle from a node to itself It is the only node connection command of this sort The circle starts at angle an gleA and goes around the node counterclockwise at a distance nodesepA from the node 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 Only ncLine and nccircle do not have pc variants pcline par arrows x7 y1 x2 y2 Like ncline pecurve par arrows Xx7 y1 x2 y2 Like nccurve pearc par arrows x1 y1 x2 y2 Like ncarc pcbar par arrows x1 y1 x2 y2 Lik
74. finitions let you assign a name and shape to an object See Section 6 Node connections The node connections connect two nodes identified by their names See Section 7 Node labels The node label commands let you affix labels to the node connections See Section 8 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 rput You can also use them in alignment environments pst node tex contains a special alignment environment psmatrix which is designed for positioning nodes in a grid such as in mathematical diagrams and some graphs psmatrix is described in Section pst node tex also contains high level macros for trees These are described in Part But don t restrict yourself to these more obvious uses For example rnode A parbox 4cm raggedright made the file symbol a node Now can draw an arrow so that you know what am talking about ncarc nodesep 8pt gt A file Nodes and Node Connections 6 6 Nodes sp Sp Bit Bit Nodes have a name a boundary and a center The name is for refering to the node when making node connections and labels You specify the name as an argument 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
75. 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 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 Edge and node labels 46 tndepth dim 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 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 18 Details Both pstree s root node a
76. gleA parameter 63 arcangleB parameter 63 arcsep parameter 13 arcsepA parameter 12 12 13 arcsepB parameter 12 13 arm parameter 61 63 armA parameter 63 65 armB parameter 63 65 arrowinset parameter 30 30 arrowlength parameter 30 30 arrows 40 arrows parameter 9 11 19 20 28 29 48 arrowscale parameter 30 30 arrowsize parameter 30 axesstyle parameter 51 bblix parameter 80 bblly parameter 80 bburx parameter 80 bbury parameter 80 black 89 blue 89 border parameter 25 25 33 62 bordercolor parameter 25 25 boxsep parameter 52 53 54 Bput 68 bput 67 68 68 bracketlength parameter 30 Cartesian 72 72 circlenode 60 clipbox 54 closedshadow 38 90 closepath 34 36 36 cnode 60 cnodeput 60 code 39 40 coilarm parameter 70 70 71 coilarmA parameter 70 coilarmB parameter 70 coilaspect parameter 70 70 71 coilheight parameter 70 70 coilinc parameter 70 70 coilwidth parameter 70 70 coor 39 40 cornersize parameter 10 10 54 cput 53 60 curvature parameter 14 curveto 39 39 dash parameter 25 dashed parameter 33 dataplot 20 20 21 degrees 8 8 72 dim 39 dimen parameter 26 DontkillGlue 42 dotangle parameter 16 16 dotscale parameter 16 dotsep parameter 25 dotsize parameter 16 30 dotstyle parameter 16 16 dotted p
77. gridwidth 18 swapaxes 24 33 tbarsize 16 30 ticksize 50 tickstyle 50 50 ticks 50 unit 7 7 19 72 xunit 7 8 17 18 72 yunit 7 7 8 17 18 72 parametricplot 22 22 23 pcangle 66 INDEX pcarc 65 pcbar 65 pccoil 71 pccurve 61 65 pcdiag 65 pcline 65 67 71 pcloop 62 66 pezigzag 71 plotfile 20 plotpoints parameter 22 22 plotstyle parameter 19 19 34 pnode 60 Polar 72 72 psaddtolength 7 psarc 12 12 13 61 psarcn 13 13 psaxes 17 48 49 51 psbezier 13 13 34 35 psborder 25 psccurve 15 19 pscharclip 78 78 pscharpath 77 78 pscircle 11 26 pscircle 11 pscirclebox 52 53 53 60 psclip 54 54 55 78 psCoil 70 70 71 pscoil 70 70 71 pscurve 15 15 19 34 37 pscustom 13 32 32 34 36 37 39 46 54 61 psdblframebox 53 60 psdots 15 19 34 psecurve 15 19 psellipse 12 26 psfill 32 psframe 9 10 11 11 26 51 52 psframebox 52 52 54 60 psgrid 17 17 19 34 48 78 79 pshatchcolor 27 pslabelsep 44 50 68 pslbrace 87 psline 7 10 10 11 19 22 31 34 51 65 86 93 pslinecolor 8 pslinewidth 8 pslongbox 83 84 psmathboxfalse 83 psmathboxtrue 83 psovalbox 52 54 60 psoverlay 73 74 pspicture 17 41 41 42 54 78 pspicture parameter 41 psplot 21 21 23 pspolygon 10 11 19 28 psrbrace 87 psrunit 8
78. hat 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 green Ho Hum setbox mybox hbox Foo bar blue fee fum Hi Ho red Diddley dee box mybox hum dee do then when mybox is inserted the current color is red and so Foo bar comes out red rather 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 internally 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 89 Index AltClipMode 55 78 altcolormode 88 89 angle parameter 61 62 63 72 angleA parameter 63 65 angleB parameter 63 64 Aput 68 aput 67 68 68 arcangle parameter 61 arcan
79. he readdata and dataplot combination is faster than fileplot if you reuse the data fileplot uses less of T X s memory than readdata and dataplot if you are also use PSTtoEPS 20 Here is a plot of Integral sin x The data was generated by Mathematica with Table x N SinIntegral x x 0 20 and then copied to this document 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 dataplot plotstyle curve showpoints true dotstyle triangle mydata psline lt gt 0 2 0 0 20 0 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 listis first expanded by TeX and then by PostScript This means that ist might be a PostScript program that leaves on the stack a list of data but you can also include data that has been retrieved with readdata 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 exceed PostScript s memory or stack limits In the preceding example these restrictio
80. his strokes the path non destructively pscustom automati cally strokes the path but you might 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 psline 0 3 4 0 pscustom linecolor white linewidth 1 5pt psline 0 0 4 3 stroke linewidth 5 pslinewidth stroke linewidth 3 pslinewidth linecolor black 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 fill oar 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 T X groups You can have have nested gsave grestore pairs grestore See above Here is an example that fixes an earlier example using gsave and grestore psline lt gt 0 3 0 0 4 0 pscustom linewidth 1 5pt psplot plotstyle curve 67 4 2 x div gsave psline 4 3 fillffillstyle solid fillcolor gray grestore Observe how the line added by psline 4 3 is never stroked be cause it is nested in gsave and grestore Here is another example pscustom linewidth 1 5pt pscurve 0 2
81. ialCoor degrees 1 1 multido n 0 0 1 11 newgray mygray n rput n pswedge 3 05 05 uput 3 2 n 0 0 small n end pspicture 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 auto matically input multido tex which is used for putting the labels on the axes Axes 47 The macro for making axes is psaxes par arrows x0 y0 x1 y1 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 e 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 psaxes linewidth 1 2pt labels none ticks none lt gt 2 1 0 0 4 3 x1 y1 SODE vat If x0 yO is omitted then the origin is x1 y1 If both x0 yO and x17 y1 are omitted 0 0 is used as the default For example when the axes enclose a single orthont only x2 y2 is needed psaxes gt 4 2 0 0 1 2 3 Labels numbers are put next to the axes on the same side as x1 and y1 Thus if we enclose a different orthont the numbers end up in the right place 0 1 2 3 0 psaxes gt 4 2 Also if you set the arrows parameter the first arrow is used
82. int nodes or subtrees endskiplevels These are kind of like subtrees but with no root node pstree treemode R levelsep 1 8 radius 2pt Tc 3pt skiplevel Tfan pstree Tc 3pt TC skiplevels 2 pstree Tc 3pt TC TC TC endskiplevels pstree Tc 3pt TC TO Details 49 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 large 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 N pstree TC name A L Tdot 10 10 10 I pstree TC name C _ r Tdot 3 8 4 c Tdot 8 3 4 _ d pstree TC name B _ R Tdot 10 10 0 i pstree TC name D _ r Tdot 4 8 3 c Tdot 0 5 0 _ d ncbox linearc 3 boxsize 3 linestyle dashed nodesep 4 A B ncarcbox linearc 3 boxsize 3 linestyle dashed arcangle 25 nodesep 4 D C Details 50 Player 1 0 0 0 Player 2 is eee 1 r Player 3 Tra 10 10 10 3 8 4 8 3 4 4 8 3 0 5 0 Details 51
83. is a parameter for scaling the dots dotscale num1 num2 Default 1 The dots are scaled horizontally by num1 and vertically by num2 If you only include one number the arrows are scaled the same in both directions There is also a parameter for rotating the dots dotangle angle Default 0 Thus e g by setting dotangle 45 the dotstyle gives you an x and the square dotstyle gives you a diamond Note that the dots are first scaled and then rotated The unscaled size of the dot style is controlled by the tbarsize parameter and the unscaled size of the remaining dot styles is controlled by the dotsize These are described in Section 15 The radius as determined by the value of dotsize is the radius of solid or open circles The other types of dots are of similar size The dot sizes are allowed to depend on the linewidth because of the showpoints parameter However you can set the dot sizes to an absolute dimension by setting the second number in the dotsize parameter to 0 E g psset dotsize 3pt 0 sets the size of the dots to 3pt independent of the value of linewidth 4The polygons are sized to have the same area as the circles A diamond is just a rotated square Dots 16 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 y1 and x2 y2 The intervals are numbered with the numbers positioned at x0 and yO The coor
84. it is stroked and the change to fillstyle will have no effect at 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 1 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 Graphics objects 33 Special Special graphics objects include psgrid psdots qline and qdisk You cannot use special graphics objects in pscustom Closed You are allowed to use closed graphics objects in pscustom but their effect is unpredicta
85. ketlength 30 coilarmA 70 coilarmB 70 coilarm 70 70 71 coilaspect 70 70 71 INDEX coilheight 70 70 coilinc 70 70 coilwidth 70 70 cornersize 10 10 54 curvature 14 dashed 33 dash 25 dimen 26 dotangle 16 16 dotscale 16 dotsep 25 dotsize 16 30 dotstyle 16 16 dotted 33 doublecolor 25 26 doubleline 25 25 26 33 doublesep 25 25 dx 49 49 dy 49 fillcolor 9 27 28 52 fillstyle 9 27 28 32 33 51 74 77 framearc 10 10 framesep 52 gradangle 75 gradbegin 74 75 gradend 74 75 gradlines 75 gradmidpoint 75 gridcolor 18 griddots 18 18 gridlabelcolor 18 gridlabels 18 gridwidth 18 hatchangle 27 27 hatchcolor 27 hatchsep 27 hatchwidth 27 headerfile 81 81 headers 81 81 labelsep 44 50 labels 50 liftoen 35 35 37 92 linearc 10 10 19 21 54 63 64 71 linecolor 8 8 9 24 28 32 33 52 linestyle 24 25 28 32 33 51 55 76 77 linetype 33 33 linewidth 8 8 11 16 24 28 30 32 33 loopsize 62 65 ncurv 61 62 63 nodesepA 65 nodesep 61 62 64 72 offset 61 62 64 67 72 origin 24 33 oy 49 49 plotpoints 22 22 plotstyle 19 19 34 pspicture 41 rbracketlength 30 rectarc 54 runit 7 8 shadowangle 26 26 shadowcolor 26 26 shadowsize 26 26 53 shadow 26 26 33 showorigin 50 showpoints 9 12 14 16 19 21 33 style 31 subgridcolor 18 subgriddiv 18 subgriddots 18 sub
86. l 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 fillstyle 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 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 color 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 Fill styles 27 pspolygonffillstyle vlines 0 0 0 3 4 0 pspolygonffillstyle hlines 0 0 4 3 4 0 pspolygonffillstyle crosshatch fillcolor black hatchcolor white hatchwidth 1 2pt hatchsep 1 8pt hatchangle 0 0 3 2 1 5 4 3 Don t be surprised if the checkered part of this example the last pspoly gon looks funny on low resolution devices PSTricks
87. leecheng PSTricks PostScript macros for Generic TeX ult e gt fw Mathematical Model for Dripping Faucet a Dripping Faucet User s Guide Timothy Van Zandt 12 March 1993 Version 0 93a Author s address Department of Economics Princeton University Princeton NJ 08544 1021 USA Internet tvz Princeton EDU 10 11 12 13 14 15 16 17 18 19 Contents Welcome to PSTricks PartI 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 Table of contents 10 10 11 13 15 17 19 24 24 24 27 28 31 32 32 32 33 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 Safe tricks 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 boxes Part VII Nodes and Node Connections Nodes Node connections Attaching labels to node connections Part VIII Special Tricks Coils and zigzags Special coordinates Overlays
88. ls II 23 psset nodesep 5pt arrows gt everypsbox scriptstyle ncline a c tlout r ncline a b taput u ncline linestyle dashed c d tbput b ncline b d trput s u X A A X A 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 _ tbput lt tlput gt trput You can change the character abbreviations with MakeShortTabIr 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 10 Attaching labels to nodes The command Attaching labels to nodes 24 nput par refangle name stuff 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 rput The position of the label also takes into acc
89. m endpsclip If you don t want the outline to be painted you need to include linestyle none in the parameter changes You can actually include more than one graph ics object in the argument in which case the clipping path is set to the intersection 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 psclip pscustom linestyle none psplot 5 4 2 x div lineto 4 4 pscustom linestyle none psplot O 3 3 x x mul 3 div sub lineto 0 0 psframe linecolor gray 0 0 4 4 endpsclip psplot linewidth 1 5pt 5 4 2 x div 4 psplotflinewidth 1 5pt O H3 3 x x mul 3 div sub psaxes 4 4 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 robust 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 such as NeXTTeX s TeX View especially if psclip and endpsclip do not end up on the same page 29 Rotation and scaling boxes There are versions of the standard box rotation macros rotateleft stuff Rotation and scaling boxes 55 rotateright stuff rotatedown stuff stuff is put in
90. m 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 tlput taput trput tbput The scheme is reversed if treeflip true psset tpos 6 right pstree treemode R thistreesep 1cm thislevelsep 3cm radius 2pt Tc 8pt pstree treemode U xbbr 20pt Tc 3pt above TC left TC _ right TC above TC _ below left below You can change the character abbreviations with MakeShortTab char1 char2 Edge and node labels 44 The n put commands can also give good results psset npos 6 nrot U pstree treemode R thistreesep 1cm thislevelsep 3cm Tc 3pt Tc 3pt naput above Tc 2pt naput above Tc 2pt nbput below You can put labels on the 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 si
91. m2 If you only include num1 the arrows are scaled by num1 in both directions dotangle angle Default 0 After setting the size and scaling the dots the dots are rotated by angle 2 Arrowheads and such New arrows Value Example Name lt gt _ T bars and arrowheads lt gt __ T bars and arrowheads flush 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 Length of arrowheads as a fraction of the width as shown below arrowinset num Default Size of inset for arrowheads as a fraction of the length as shown below arrowsize dimnum width numx linewidth dim1 length length arrowlength x width inset inset arrowinset x height width tbarsize dim num Default The width of a t bar square bracket or rounded bracket is dim plus num times linewidth if the optional num is included bracketlength num Default The height of a square bracket is num times its width Arrowheads and such 2 rbracketlength num Default The height of a round bracket is num times its width arrowsc
92. milarly in other trees For example root pstree radius 2pt Tc 3pt nput 45 pssucc root TC h TC i TC j TO 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 MakeShortTnput char7 If you find it confusing to use a single character you can also use a command sequence E g MakeShortTnput tnput Edge and node labels 45 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 on any side of the node left right above or below set tnpos r a b Default root psframebox pstree Tc 3pt tnpos a tndepth Opt root TC tnpos l h 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
93. ng the nodes in a tree The main tree macro is pstree root node sub trees and terminal nodes This positions the root node above its successors pstree Toval root TC TC TC TC pstree produces a box that encloses all the nodes and whose baseline passes through the center of the root node For most of the nodes described in Section 6 e g ovalnode there is a variant for use within a tree e g Toval Note that there is no distinction between a terminal node and a root node other than their position in the pstree command A tree when included in the list or successors becomes a subtree pstree Tp TC pstree Tc 3pt TC TC TC Trees 33 pee 14 Tree Nodes For most nodes described in Section 6 you can add strip node from the end of the name and add T add the beginning to obtain a node for use in trees 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 param eters even if the original node did not have one e there is no argument for specifying the name of the node and e there is never a coordinate argument for positioning the node e to set the reference point with Tr set the ref parameter Here is the list of such tree nodes Tp par Te par dim TC par Tf par Tdot par Tr par stuff TR par stuff Tcircle par stuff Toval par stuf
94. ngle 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 pscoiland pszigzag connect x0 y0 and x1 y1 starting and ending with straight line segments of length coilarmA and coilarmB resp Set ting coilarm is the same as setting coilarmA and coilarmB Here is an example of pscoil Special Tricks 70 pscoil coilarm 5cm linewidth 1 5pt coilwidth 5cm lt 4 2 Here is an example of pszigzag AAAS 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 VAAIA psCoil coilaspect 0 coilheight 1 33 coilwidth 75 linewidth 1 5
95. nnect two nodes on the same level Edges 42 pstree nodesep 3pt radius 2pt Toval nature pstree Tc namestop 3pt TC TC a pstree Tc name bot 3pt TC TC ncline linestyle dashed top bot We conclude with the more examples X def psedge nccurve angleB 180 nodesepB 3pt Y pstree treemode R treesep 1 5 levelsep 3 5 Toval root Tr X Tr Y Tr Z N pstree nodesepB 3pt arrows gt xbbl 15pt lt o gt xbbr 15pt levelsep 2 5cm Tdia root TR edge ncbar angle 180 x TR y TR edge ncbar z XY z psset armB 1cm levelsep 3cm treesep 1cm angleB 90 angleA 90 arrows lt nodesepA 3pt defipsedge 1 2 ncangle 2 1 pstree radius 2pt Ttri root TC TC TC TC 17 Edge and node labels Right after a node an edge has typically been drawn and you can attach labels using ncput tlput etc Edge and node labels 43 With tlput trput taput and tbput you can align the labels vertically or horizontally just like the nodes This can look nice at least if the slopes of the node connections are not too different pstree radius 2pt Tp psset tpos 6 TC tlout k pstree Tc 3pt tlput labelsep 3pt r TC tlput j TC trput i TC trput m Within trees the tpos parameter measures this distance from the prede cessor to the successor whatever the orientation of the true Outside of trees it measures the distance fro
96. ns were not satisfied and so the example is equivalent to when listplot is used listplot plotstyle curve showpoints true dotstyle triangle mydata psplot pa XminH max H function Plots psplot can be used to plot a function f x if you know a little PostScript function should be the PostScript code for calculat ing 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 21 plots sin x from 0 to 720 degrees by calculating sin x roughly every 3 6 degrees and then connecting the points with psline Here are plots of sin x cos x 2 and sin x 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 0a tiin Htmax function This is for a parametric plot of x t y 4 function is the PostScript code for calculating the pair x t y For example parametricplot plotstyle dots plotpoints 13 6 6 1 2 t exp 1 2 t neg exp plots 13 points from the hyperbola xy 1 starting with 1 2 1 26 and ending with 1 26 1 2 Here is a parametric plot of sin sin 2 psset xunit 1 7cm parametricplot linewidth 1 2pt plotstyle ccurve 0
97. o columns or to use a special mnode for all the entries in a particular row e An entry can itself be a node You might do this if you want an entry to have two shapes If you want an entry to stretch across several int columns use the psspan int at the end of the entry This is like Plain T X s multispan or IdfRX 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 int at the beginning of the entry instead If you just want to wipe out the template use omit before the entry Mathematical diagrams and graphs 29 e psmatrix can be nested but then all node connections and other references to the nodes in the row co 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 connections towards the end just be sure to put them before endpsmatrix 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 12 Obsolete put commands This is old documentation but these commands will continue to be supported There is also an obsolete command Lput for putting labels n
98. o in the same direction as their parent tree such 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 Here is how we fix it psset tpos 6 showbbox true pstree treemode U xbbl 8pt xbbr 1 4pt Tc 5pt TR foo left TR bar _ right Details 48 Now we can frame the tree psframebox fillstyle solid fillcolor lightgray framesep 1 4pt linearc 1 4pt cornersize absolute linewidth 1 5pt psset tpos 6 border 1pt nodesepB 3pt pstree treemode U xbbl 8pt xbbr 1 4pt Tc fillcolor white fillstyle solid 5pt TR foo left TR bar _ right We would have gotten the same result by changing the bounding box of the two terminal nodes You can also adjust the distance between successors with the tspace dim command pstree Tc 3pt Te 2pt tspace 1cm TR K_4 4 Te 2pt To skip levels use skiplevel par nodes or subtrees skiplevels par
99. ode par x y name The f stands for frame This is like but easier than putting a psframe in an rnode fnode A fnode framesize 1 5pt 2 2 B 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 framesize dim1 dim2 Default 10pt parameter If you omit dim2 you get a square frame 7 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 connection is attached to the current point by a straight line as with psare Node connections 9 nodeconnection par arrows nodeA nodeB A line of some sort is drawn from nodeA to nodeB Some of the node connection commands are a little confusing but with a little experimen tation 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 A 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 connections nodesep dim Default Opt nodesep is the border around the nodes that is added for the purpose of determining where
100. on There is also a I IpX file samples pst of samples that is distributed with PSTricks Look to this file for further inspiration This documentation is written with IJIpX Some examples use IEX specific constructs and some don t However there is nothing dfx specific about any of the macros nor is there anything that does not work with IdI X This package has been tested with Plain TEX dfx AMS IdfgXand AMSTpx 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 IdIRX document style option There are numerous supplementary macro files A file like the one above and the left 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 resolve any TEX errors before attempting to print your document A few PSTricks macros pass on PostScript errors without warning Use Welcome to PSTricks 1 these with care especially if you are using a networked printer because PostScript errors can cause a printer to bomb Such macros are pointed out in strong terms using a warning like this one Warning Use macros that do not check f
101. 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 num1 num2 num3 num4 is a cyan magenta yellow black speci fication 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 recommended 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 Manual 2nd Edition Red Book and a color guide Driver notes The command pstVerb 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 combined with text e g framed boxes You can change the default values of parameters with the command psset as in Setting graphics parameters 5 psset fillcolor yellow psset linecolor blue framearc 3 dash 3pt 6pt 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 st
102. or 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 appears 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 para graphs are set in Helvetica Bold Welcome to PSTricks 2 The Essentials 1 Arguments and delimiters Here is some nitty gritty about arguments and delimiters that is really important 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 parl val 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
103. ositioning argument For example ss cnode 0 0 3pt A ae cnode 4 2 3pt B ncline nodesep 3pt A B soe mput 1 Here is another Label pcline lt gt 0 0 4 2 Aput Label Now we can compare ncline with ncLine and rnode with Rnode First here is a mathematical diagram with ncLine and Rnode Attaching labels to node connections 68 setlength arraycolsep 1cm defitX tilde tilde X begin array cc Rnodef a X A N A amp Rnode b tX a 1 5cm Rnode c X N amp Rnode d LARGE tX N 1 5cm end array psset nodesep 5pt arrows gt everypsbox scriptstyle ncLine a b Aput a ncLine a c Bput r ncLine linestyle dashed c d Bput b ncLine b d Bput s a X A N A gt a Here is the same one but with ncline and rnode instead a X A N A gt X a Driver notes The node macros use pstVerb and pstverbscale Attaching labels to node connections 69 Vi Special Tricks 33 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 y0 x1 y1 psCoil par angle1 angle2 pszigzag par arrows x0 yO x1 y1 These graphics objects use the following parameters coilwidth dim Default 1cm coilheight num Default 1 coilarm dim Default 5cm coilaspect angle Default 45 coilinc a
104. ot 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 is named wrap wrap lt infile gt outfile awk BEGIN N 78 Max line length if length 0 lt N print else currlength 0 for i 1 i lt NF i if currlength currlength length i 1 gt N printf printf currlength length i else printf s printf 3 The color commands cause extraneous vertical space to be inserted For example this can happen if you start a IdTj X parbox or a p column with a color command The solution usually is to precede the color command with leavevmode 4 The color commands interfere with other color macros use Try putting the command altcolormode at the beginning of your document This may or may not help Be extra careful that the scope of Troubleshooting 88 color commands does not extend across pages This is generally a less robust color scheme 5 How do l stop floats from being the same color as surrounding material T
105. ou can use PSTricks picture objects in a IJIpX picture environment and you can use Idf X picture objects in a PSTricks pspicture environment However the pspicture environment makes IdI X s picture environment obsolete and has a few small advantages over the latter Note that the arguments of the pspicture environment work differently from the arguments of I fpX 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 similarity to IIX s put command but with additional capabilities Like IdTxX s put and unlike the box rotation macros described in Section 29 these commands 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 put arg rotation coor stuff With the optional argument stuff is first put in a psframebox boxsep false lt stuff gt thereby blotting out whatever is behind stuff This is useful for posi tioning 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 described further below The
106. ount the offsetA parameter If labelsep is negative then the distance is from the center of the node rather than from the boundary as with 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 tt_ 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 11 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 environments such as T X s halignprimitive I f X s tabular environ ment and AMS TRxX s matrix but PSTricks contains its own alignment environment that is especially adapted for this purpose psmatrix endpsmatrix Here is an example A psmatrix colsep 1cm rowsep 1cm amp A E C B amp E amp CN amp D amp endpsmatrix D TNot to be confused with the nput parameter Mathematical diagrams and graphs 25 Z As an alignment environment psmatrix is similar to AMS T X 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 psmatrix can be used in or out of math mode Our first exam
107. p dim Default 2cm parameters The distance between successors takes into account the size of the nodes but the distance between levels does not at least by default If you include the optional when setting levelsep the level sep is in addition to the size of the nodes However PSTricks needs a second run through TEX without any changes between runs to get the spacing right and it writes to the aux file with I4T X and to the file jobname pst with other macro packages Even then there is no guarantee it will get the spacing right Here are two exaggerated examples that illustrates the difference be tween relative and absolute spacing between levels Trees 37 pstree levelsep 1cm radius 2pt Tc 8pt TC pstree Tc 3pt Te 15pt TC TC psset levelsep 1cm radius 2pt pstree Tc 3pt TC pstree Tc 3pt Te 15pt TC TC If you set the treenodesize dim Default 1pt to a non negative value then PSTricks uses treenodesize as a fixed size of the successors in the direction of their neighbors i e a fixed width for vertical trees and a fixed height depth for horizontal trees For example sometimes it is esthetically pleasing to smooth over small variations in the sizes of the nodes Compare pstree nodesepB 8pt Tc 3pt TR j TR K_4 TR x gt y pstree treenodesize 4cm treesep 3cm nodesepB 8pt Tc 3pt TR j TR K_4 ie es TR Sx gt y
108. parameter For example with the default value of 1cm the following are equivalent psset linewidth 5cm psset linewidth 5 By never explicitly giving units you can scale graphics by changing the value of unit You can use the default coordinate when setting non PSTricks dimen sions as well using the commands pssetlength cmd dim psaddtolength cmd dim where cmd is a dimension register in Idx parlance a length and dim is a length with optional unit These are analogous to IdIRX s setlength and addtolength Coordinate pairs have the form x y The origin of the coordinate system is at TEX s currentpoint The command SpecialCoor lets you use polar coordinates in the form r a where r is the radius a dimension and a is the angle see below You can still use Cartesian coordinates For a complete description of SpecialCoor see Section 34 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 1 pt psline Ocm 20pt 5cm 80pt psline 0 20 5 80 Dimensions coordinates and angles 7 The values of the runit xunit and yunit p
109. pendix 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 T X macros are expanded before being passed on to PostScript It is not always clear what this means For example suppose you write SpecialCoor defimydata 23 43 psline 47 mydata add psline 47 mydata add psline 47 mydata add psline 47 mydata add You will 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 defimydata 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 TEX expands the code assigns its value to temp and then displays the value of temp 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 43 penalty M add 47 23 43 add Including PostScript code 86 All you really wanted was a space between the 43 and add The com mand space will do the trick psline 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
110. ple wasn t very interesting because we didn t make use of the nodes Actually each entry is a node The name of the node in row row and column col is row col 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 s ncline 1 2 2 1 tlput f ncline 1 2 2 2 trput g ncline linestyle dotted 2 1 2 2 tbput h You can include the node connections inside the psmatrix in the last entry 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 x f ncline 2 2 3 2 lt q ncline 2 2 2 3 _ p ncline 2 3 3 3 gt f ncline 3 2 3 3 _ g end psmatrix Mathematical diagrams and graphs 26 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 circlenode ovalnode dotnode and no node respectively Note that for circles you use mnode C and set the radius with the radius parameter For example psmatrix mnodescircle colsep 1 amp A B amp E
111. pt 0 1440 pst coil tex also contains coil and zigzag node connections You must pst node also load pst node tex pst node sty to use these The node connections are nccoil par arrows nodeA nodeB ncezigzag par arrows nodeA nodeB pccoil par arrows x7 y1 x2 y2 pczigzag par arrows x1 y1 x2 y2 The end points are chosen the same as for ncline and peline and oth erwise these commands work like pscoil and pszigzag For example cnode 5 5 5 A cnodeffillstyle solid fillcolor lightgray 3 5 2 5 5 B nccoil coilwidth 3 lt gt A B 34 Special coordinates The command Special coordinates 71 SpecialCoor enables a special feature that lets you specify coordinates in a variety of ways in addition to the usual Cartesian coordinates Processing is slightly 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
112. pt bblly dim Default 1pt bburx dim Default 1pt bbury dim Default 1pt 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 17See the preceding section on importing EPS files Exporting EPS files 80 headerfile file Default s QThis parameter is for specifying PostScript header files that are to be included in the EPS file The argument should contain one or more 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 PSTricks 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 81 Help A Boxes Many of the PSTricks macros have an argument for text that is processed in restricted horizontal mode in I IpX parlance LR mode and then transformed in some way This is always the macro s last argument and it is written stuff in this User s Guide
113. rgument and successors argument are pro cessed as LR boxes and so everything in Appendix including the treatment of math and verbatim text applies except the following Be cause pstree has two arguments you cannot use pslongbox to define a long version of pstree However there is a variant psTree of pstree whose syntax is psTree root node successors endpsTree For example psTree Tc 3pt TC psTree Tc 3pt TC TC endpsTree TC endpsTree IdfRX purists can write begin psTree and end psTree instead 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 Details 47 foo left right 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 direc tions but not subtrees that g
114. ribed above and hence the radius depends on the size of the frame If cornersize is absolute then the lineare 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 y0 x1 y1 xn yn This draws a line through the list of coordinates For example psline linewidth 2pt linearc 25 gt 4 2 0 1 2 0 qline coor0 coor7 Basic graphics objects 10 This is a streamlined version of psline that does not pay attention to the arrows parameter and that can only draw a single line segment Note that both coordinates are obligatory and there is no optional argument for setting parameters use psset if you need to change the linewidth or whatever For example gline 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 pspolygon linewidth 1 5pt 0 2 1 2 pspolygon linearc 2 linecolor darkgray 1 0 1 2 4 0 4 2 psframe par x0 y0 x1 y7 psframe draws a rectangle with opposing corners x0 y0 and x1 y1 For example psframef linewidth 2pt framearc 3 fillstyle solid fillcolor lightgray 4 2 psframe linecolor white 1 5 2 1 5 7 Arcs circles and ellipses pscircle par x0 y0 radius This draws a circle whose center is at x0 y0 and that has radius radius For example pscircl
115. s 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 If using Rokicki s dvips then try epsf tex epsf sty by the man himself What PSTricks is good for is embellishing your EPS picture You can include 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 T X 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 Importing EPS files 78 nbox lt picture objects gt epsfbox lt file eps gt This will put all your picture objects at the lower left corner of the EPS file epsfbox takes care of leaving the right amount of space 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 easily fooled the only sure way to determine the bounding box is visually psgrid is a good tool for this 41 Expor
116. s coordinates to a pair of numbers using pt units and insert them in the PostScript code Pretty safe tricks 39 rcoor x7 y1 x2 y2 xn yn Like coor but insert the coordinates in reverse order file file This is like code but the raw PostScript is copied verbatim except comments delimited by from file arrows arrows This defines the PostScript operators ArrowA and ArrowB so that x2 y2 x1 y1 ArrowA x2 y2 x1 y1 ArrowB each draws an arrow head with the tip at x1 y1 and pointing from x2 y2 ArrowA leaves the current point at end of the arrow head 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 yt on the stack where x1 y1 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 pscustom arrows gt code 80 140 5 5 ArrowA 30 30 110 75 ArrowB curveto 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 O dimensional objects they share the same coordinate system and so you can create a picture For this reason these macros are called picture objects If
117. t uput ur 1 1 1 1 Driver notes The rotation macros use pstVerb and pstrotate 25 Repetition The macro multirput refpoint angle x0 yO x1 y1 int stuff is a variant of rput that puts down int copies starting at x0 y0 and ad vancing by x1 y7 each time x0 y0 and x17 y1 are always interpreted as Cartesian coordinates For example multirput 5 0 3 1 12 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 dimensional anyway Also unlike multirput the coordinates can be of any type An Overfull nbox warning indicates that the graphics argument contains extraneous output or space For example Repetition 46 def zigzag psline 0 0 5 1 1 5 1 2 0 AV AV AV AV AV AVAVAY psset unit 25 linewidth 1 5pt multips 0 0 2 0 8 zigzag PSTricks is distributed with a much more general loop macro called multido You must input the file multido tex or multido sty See the documentation 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 mygray of this line Spec
118. t With the above examples the commands myline and mygrid work just like the graphics object 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 newpsstyle name par1 value7 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 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 pscustom par commands command lets you roll you own graphics object Let s review how PostScript handles graphics A path is a line in the mathematical sense rather than the visual sense A path can have several disconnected segments and it can be open or closed PostScript has various operators 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 something 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
119. t 1cm This applies only the ncloop and pcloop and is described below You can set these parameters separately for the two nodes Just add an A or B to the parameter name E g psset nodesepA 8pt offsetA 5pt offsetB 3pt arm 1cm sets nodesep for the A node but leaves the value for the B node un changed sets offset for the A and B nodes to different values and sets arm for the A and B nodes to the same value Don t forget that by using the border parameter you can create the impression that one node connection passes over another Here is a description of the individual node connection commands ncline par arrows nodeA nodeB This draws a straight line between the nodes Only the offset and nodesep parameters are used rput bl 0 0 rnode A ldea 1 rput tr 4 3 rnode B ldea 2 ncline nodesep 3pt lt gt A B ncLine par arrows nodeA nodeB This is like ncline but the labels with Iput etc are positioned as if the line began and ended at the center of the nodes This is useful if you have multiple parallel lines and you want the labels to line up even though the nodes are of varying size e g in commutative diagrams nccurve par arrows nodeA nodeB This draws a bezier curve between the nodes It uses the nodesep offset angle and ncurv parameters rput bl 0 0 rnode A psframebox Node A rput tr 4 3 ovalnode B Node B nccurve angleB 180 A B Node connections
120. t 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 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 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 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 Node connections 14 loopsize End back parbox 3cm rnode A psframebox large bf Begin vspace 1cm hspace fill rnode B psframebox large bf End ncloop angleA 180 loopsize 9 arm 5 linearc 2 gt A B The next two node connections are a little different from the rest nccurve par arrows nodeA nodeB nccurve draws a bezier curve between the nodes rput
121. t 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 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 ncline root A naput above ncline root B ncput on ncline root C nbput below naput and nbput use the same algorithm as uput for displacing the labels 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 Node connections labels 19 oe T J a on 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 ang e the offset parameter and pcline pspolygon 0 0 4 2 4 0 pcline offset 1 2pt 0 0 4 2 ncput nrot U Length Here is a repeat of an earlier example now using angle cnode 0 0 5cm root cnode 3 1 5 4pt A
122. t sizes defipsedge 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 Edges 41 zisy a lt ySz2 Nees z2 lt ySx O x lt y 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 connections frequently I might define a command for each node connection and then use the edge parameter defidedge ncline linestyle dashed pstree treemode U radius 2pt Tc 3pt TC edge dedge pstree Tc 3pt TC edge dedge TC TC You can also set edge none to suppress the node connection 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 include the parameter change or you have to set it before the node 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 co
123. t 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 lt llx lly urx ury gt 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 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 1
124. ter generating the data 13 Line styles The following graphics parameters in addition to linewidth and line color 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 More graphics parameters 24 dash dim1 dim2 Default 5pt 3pt The black white dash pattern for the dashed line style For example i psellipse linestyle dashed dash 3pt 2pt 2 1 2 1 dotsep dim Default 3pt The distance between dots in the dotted line style For example psline linestyle dotted dotsep 2pt gt gt 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 color Default white See border above For example psline 0 0 1 8 3 psline border 2pt gt 0 3 1 8 0 psframe linecolor gray 2 0 4 3 psline linecolor white linewidth 1 5pt lt gt 2 2 0 3 8 3 psellipse linecolor white linewidth 1 5pt 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
125. ter paths The file charpath tex charpath sty defines the command pscharpath par text It strokes and fills the text character paths using the PSTricks linestyle and fillstyle The restrictions on DVI to PS drivers listed on page 76 for pstextpath apply to pscharpath Furthermore only outline PostScript fonts are affected Stroking and filling character paths 77 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 exam ple 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 pscharclip par text endpscharclip works just like pscharpath but it also sets the clipping path to the character path You may want to position this clipping path using rput inside pscharclip s argument Like psclip and endpsclip pscharclip and endpscharclip should come on the same page and should be prop erly nested with respect to TEX groups unless AltClipMode is in effect The file denis2 tex contains a sample of pscharclip 40 Importing EPS file
126. th tbarsize dim num Default 2pt 5 The width of a t bar square bracket or rounded bracket is num times linewidth plus dim bracketlength num Default 15 The height of a square bracket is num times its width rbracketlength num Default 15 The height of a round bracket is num times its width dotsize dim num Default 5pt 2 5 The diameter of a circle or disc is num times linewidth plus dim arrowscale arrowscale num1 num2 Default 1 Imagine that arrows and such point down This scales the width of the arrows by num and the length height by num2 If you only include 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 Arrowheads and such 30 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 par1 value1 as in newpsobject myline psline linecolor green linestyle dotted newpsobject mygrid psgrid subgriddiv 1 griddots 10 gridlabels 7pt 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 se
127. th of arm A we adjust arm A so that the line joining the two arms meets arm A at a right angle For example rput tl 0 3 rnode A psframebox Node A rput br 4 0 ovalnode B Node B ncangle angleA 90 angleB 90 armB 1cm A B Now watch what happens when we change angleA rput tl 0 3 rnode A psframebox Node A rput br 4 0 ovalnode B Node B ncangle angleA 70 angleB 90 armB 1 cm 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 example rput tl 0 2 rnode A psframebox Node A rput br 4 0 ovalnode B Node B 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 the armA parameter Arm A is connected to arm B by two line segments that meet 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 gt Hence there is one more angle than ncangle and hence the s in ncangles Node connections 13 loopsize SS rput tl 0 4 rnode A psframebox Node A rput br 4 0 ovalnode B Node B ncangles angleA 90 armA 1cm armB 5cm linearc 15 A B Let s see what happens to the previous example when we change angleB rpu
128. therwise behaves normally Set linestyle none 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 Typesetting text along a path 76 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 1 justify on beginning of path c center on path r justify on end of path The default is x y 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 x y 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 effect when pstextpath occurs not inside the fext 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 39 Stroking and filling charac
129. ting EPS files You must load pst2eps tex or pst2eps sty to use the PSTricks macros described 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 fea ture 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 different bounding box than the one calculated by dvips in particular dvips ignores all the PostScript generated by PSTricks when calculating the bounding 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 PSTricks contains an environment that tries to get around these two problems TeXtoEPS stuff endTeXtoEPS Exporting EPS files 79 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 trea
130. 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 nodesepaA 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 Idea 1 rput bl 0 0 rnode A Idea 1 rput tr 4 3 rnode B lIdea 2 ncline nodesep 3pt lt gt A B ncarc par arrows nodeA nodeB This connects the 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 3When 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 10 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 connec tions 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 connec tion joins at one or both of the ends the arms
131. 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 lput 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 The Essentials 3 As a general rule the first non space character 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 2 Color The grayscales black darkgray gray lightgray and white and the colors red green blue cyan magenta and yellow are predefined in PSTricks 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 red etc can be used much like rm or tt as in gray This stuff should
132. to tables 75 38 Typesetting text along a path The file textpath tex textpath sty defines the command pstextpath for typesetting text along a path It is a remarkable trick but there are some caveats e textpath tex only works with certain DVI to PS drivers Here is what is currently known It works with Rokicki s dvips version 5 487 or later at least up to v5 495 It does not work with earlier versions of dvips It does not work with TeX view to preview files with NeXT TeX 3 0 convert the dvi file to a PostScript file with dvips o and use Preview 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 unloaded to show characters e You must also have installed the PostScript header file textpath ps 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 PostScript rendering with textpath 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 pstextpath pos x y graphics object text text is placed along the path from beginning to end defined by the PSTricks graphics object This object o
133. to use respectively pslbrace psrbrace Don t bother trying or Whenever you insert PostScript code in a PSTricks argument the dic tionary on the top of the dictionary stack is tx 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 over flowing the tx Dict dictionary depending on your PostScript in terpreter You are also more likely to collide with someone else s definitions if there are multiple authors contributing to the docu ment 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 TDict 10 dict def TDict begin lt your code gt end D Troubleshooting 1 Why does the document bomb in the printer when the first item in a IEX file is a float When the first item in a IIx 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 Troubleshooting 87 2 converted 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 n
134. use nodes in math mode and in alignment environments as well Here is an example of a commutative diagram Nodes and Node Connections 58 begin array c hskip 1cm c A amp rnode a A 2cm rnode b B amp rnode c C end array 8 psset nodesep 3pt everypsbox scriptstyle ncline gt a b Bput f C ncline gt a c Aput g ncline linestyle dotted gt b c Aput h 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 connections See Section 32 30 Nodes The name of a node must contain only letters and numbers and must begin with a letter Warning Bad node names can cause PostScript errors rnode refpoint name stuff This assigns the name to the node which will have a rectangular shape for the purpose of making connections with the center at the reference point i e node connections will point to the reference point rnode was used in the two examples above Rnode x y name stuff This is like rnode but the reference point is calculated differently It is set to the middle of the box s baseline plus x y If you omit the x y argument command RnodeRef Nodes 59 is substituted The d
135. 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 pspicture baseline x0 y0 x7 y7 picture objects endpspicture The picture objects are put in a box whose lower left hand corner is at x0 y0 by default 0 0 and whose upper right hand corner is at x7 y7 By default the baseline is set at the bottom of the box but the optional argument baseline 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 IdTEX users can type 8When PSTricks picture objects are included in a pspicture environment they gobble 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 Picture Tools 41 begin pspicture end pspicture Y
Download Pdf Manuals
Related Search
Related Contents
Desa FVFM27PR User's Manual soutien au niveau du comportement pour les élèves atteints de tsa Trevi Phablet 4.5S 4GB Black Samsung 32" General display ED32C 4ページ USER MANUAL MANUAL DO USUÁRIO DEFIBRILLATORE FRx HEARTSTART - InCenter Le juge de l`application des peines Copyright © All rights reserved.
Failed to retrieve file