<html><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div></div><div><br></div><div>Best,</div><div>Ziggy<br><div apple-content-edited="true"> <span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0; "><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; "><br class="Apple-interchange-newline">Zbigniew Nitecki</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Department of Mathematics</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Tufts University</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Medford, MA 02155</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; font: normal normal normal 12px/normal Helvetica; min-height: 14px; "><br></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">telephones:</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Office<span class="Apple-converted-space"><span class="Apple-converted-tab">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span></span></span>(617)627-3843</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Dept.<span class="Apple-converted-space"><span class="Apple-converted-tab">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span></span></span>(617)627-3234</font></p><p style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; "><font face="Helvetica" size="3" style="font: normal normal normal 12px/normal Helvetica; ">Dept. fax<span class="Apple-converted-space"><span class="Apple-converted-tab">&nbsp; &nbsp;<span class="Apple-converted-space">&nbsp;</span></span></span>(617)627-3966</font></p><a href="http://www.tufts.edu/~znitecki/">http://www.tufts.edu/~znitecki/</a></span> </div><br><div><blockquote type="cite"><font class="Apple-style-span" color="#000000"><br></font>here it comes ...<br><br>thanks<br>Herbert<br>\svnInfo $Id: ch11-Custom.tex 180 2008-09-20 08:27:54Z herbert $<br><br>\CurrentIndexPackage{pstricks}<br>% ---------------------------------------------------------------------------------------<br>\chapter{Custom styles and objects}\label{chap:custom}<br>% ---------------------------------------------------------------------------------------<br>\PST\ allows to define own new styles\index{style} for assistance and new macros<br>which allow arbitrary area borders\index{area border} for filling and<br>\Index{clipping}.<br><br>% ---------------------------------------------------------------------------------------<br>\section{Custom styles}\label{sec:custom:anwenderstile}<br>% ---------------------------------------------------------------------------------------<br>If certain combinations of parameters (\aref{sec:parameter}) are often used<br>repeatedly, one may define special styles for them.<br><br>\begin{BDef}<br>\Lmcs{newpsstyle}\Largb{name}\Largb{list of parameters} \qquad<br>\Lmcs{addtopsstyle}\Largb{name}\Largb{list of parameters}<br>\end{BDef}<br><br>This new style can be passed on to a macro by using the keyword \Lkeyword{style}<br>when passing the parameters. Another useful application can be found in<br>chapter~\vref{sec:fill:transparenteFarben}.<br><br><br>\ExtendExampleWidth{-3}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{newpsstyle}\xLcs{psframe}\xLcs{pscircle}}<br>\newpsstyle{TransparentMagenta}{%<br> &nbsp;fillstyle=vlines,hatchcolor=magenta,<br> &nbsp;hatchwidth=0.1\pslinewidth,hatchsep=1\pslinewidth}<br>\begin{pspicture}(3,3)<br> &nbsp;\psframe[fillstyle=solid,fillcolor=cyan](0.75,0.75)(3,3)<br> &nbsp;\pscircle[style=TransparentMagenta](1,1){1}<br>\end{pspicture}<br>\end{Example}<br>\NormalExampleWidth<br><br>\clearpage<br><br><br>%\ExtendExampleWidth{-3}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{newpsstyle}\xLcs{psframe}\xLcs{pscircle}}<br>\newpsstyle{Fiber}{linewidth=2pt}<br>\begin{pspicture}(4,5)<br> &nbsp;&nbsp;\psline[style=Fiber](0,0)(4,1)<br> &nbsp;&nbsp;\addtopsstyle{Fiber}{linecolor=green}<br> &nbsp;&nbsp;\psline[style=Fiber](0,1)(4,2)<br> &nbsp;&nbsp;\addtopsstyle{Fiber}{linestyle=dotted}<br> &nbsp;&nbsp;\psline[style=Fiber](0,2)(4,3)<br> &nbsp;&nbsp;\addtopsstyle{Fiber}{}<br> &nbsp;&nbsp;\psline[style=Fiber](0,3)(4,4)<br> &nbsp;&nbsp;\addtopsstyle{Fibber}{linecolor=red}<br> &nbsp;&nbsp;\psline[style=Fibber](0,4)(4,5)<br>\end{pspicture}<br>\end{Example}<br>\NormalExampleWidth<br><br><br><br>% ---------------------------------------------------------------------------------------<br>\section{Custom objects}\label{sec:custom:newobject}<br>% ---------------------------------------------------------------------------------------<br>The styles described in the previous section may also be assigned to a special<br>macro, which makes the application even easier. In the example below the new<br>macro \verb+\dashedV+ is assigned a special style; the macro is based on the<br>object \Lmcs{psline}.<br><br>\begin{BDef}<br>\Lmcs{newpsobject}\Largb{name}\Largb{name of object}\Largb{list of parameters}<br>\end{BDef}<br><br>%\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}<br>\newpsobject{LineA}{psline}{linewidth=1.5pt}<br>\newpsobject{LineB}{LineA}{linestyle=dashed,<br> &nbsp;dash=3pt 1.5pt}<br>\newpsobject{LineC}{LineB}{dash=5pt 2pt}<br>\newpsobject{LineD}{LineB}{dash=5pt 1pt 1pt 1pt}<br>\newpsobject{LineE}{LineB}{dash=2pt 1pt}}<br>\begin{Example}{\xLcs{newpsobject}\xLenv{pspicture}\xLkeyword{linecolor}\xLkeyword{dash}}<br>\begin{pspicture}[showgrid=true](4,4)<br>\LineA(0,0)(4,0)\LineB(0,1)(4,1)\LineC(0,2)(4,2)<br>\LineD(0,3)(4,3)\LineE(0,4)(4,4)<br>\end{pspicture}<br>\end{Example}<br><br>% ---------------------------------------------------------------------------------------<br>\section{\nxLcs{pscustom}}\label{sec:pscustom}<br>% ---------------------------------------------------------------------------------------<br>\PST\ offers many ways of creating graphical objects. Nevertheless cases may<br>occur where none of the existing macros satisfies one's needs. In all these<br>cases \Lmcs{pscustom} can be of great help; the starred version fills the<br>background with the current line colour as usual.<br><br>\begin{BDef}<br>\LmcsStar{pscustom}\OptArgs\Largb{arbitrary code}\\<br>%\Lmcs{pscustom*}\OptArgs\Largb{arbitrary code}<br>\end{BDef}<br><br>\clearpage<br><br><br>\Lcs{pscustom} expects that an arbitrary closed path\index{path!closed} is created through<br>\Index{polylines} or \Index{polycurves} of whatever form. \Lcs{pscustom} starts<br>a new path; the last closing braces terminates it.<br>The closed path may then be filled or tiled arbitrarily with a \Index{colour} or<br>\Index{pattern} through the filling function. One does not necessarily have to<br>create line or curve segments which connect to each other. Usually they are<br>automatically amended by \Lcs{pscustom} with lines to result in a closed<br>polycurve.<br><br>\index{tiling}\index{PostScript!macros}<br>\PST\ provides special \PS\ commands which are used frequently by \PST\ itself<br>as special \PST\ compatible versions. The advantage is that no additional use of<br>the \Lcs[]{special} command is necessary. These additional macros can<br>\textbf{only} be used in connection with \Lcs{pscustom}. All of them are<br>described below.<br><br>\index{PostScript!commands}<br>The macros listed in this section influence the \PS\ output virtually without<br>any control by \PST\ and should therefore only be used with at least basic<br>knowledge of \PS\ as a programming language. Because of the \PS-specific code<br>the current scale does not apply for the macros listed here. Only the common<br>\PS\ unit \Index{bp} (\Index{big points}) or \Index{pt} is valid.<br><br>\DANGER<br>The macro \Lcs{pscustom} uses \Lcs{pstverb} ($\rightarrow$\vref{sec:pstverb})<br>and \Lcs{pstunit} &nbsp;($\rightarrow$\vref{sec:massstab}) which write<br>\Lcs[]{special} into the \DVI\ file. The length of the argument is<br>system-specific; problems may arise when putting many small polycurves together<br>within \Lcs{pscustom} because these are all arguments of a single<br>\Lcs[]{special} command.<br><br>\DANGER<br>All \PST\ objects which are defined through<br>\Lcs{begin@SpecialObj}\ldots\Lcs{end@SpecialObj} may not appear within the<br>argument of \Lcs{pscustom}. \PST\ will output a corresponding error message in<br>this case.<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{Parameters}<br>% ---------------------------------------------------------------------------------------<br>Because \Lcs{pscustom} refers to a \textbf{single} closed<br>path\index{path!closed} there can only be parameters referring to this path. The<br>next example executes \Lcs{psline} outwith and within \Lcs{pscustom}. As can<br>be seen easily from the coordinates, \Lcs{psline} within \Lcs{pscustom}<br>should fill the lower triangle; this does not happen though because the<br>so-called fill parameters \Lkeyword{linewidth}, \Lkeyword{linecolor}, and<br>\Lkeyword{fillstyle} have no effect within \Lcs{pscustom}. There are some<br>exceptions, for example putting arrows. This will be pointed out separately in<br>the examples below.<br><br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example*}{\xLcs{psline}\xLcs{pscustom}\xLkeyword{linecolor}\xLkeyword{fillstyle}}<br>\begin{pspicture}[showgrid=true](3,3)<br> \psline[linewidth=2pt,linecolor=blue,fillstyle=vlines](0,1)(2,3)(0,3)<br> \pscustom{\psline[linewidth=2pt,linecolor=blue,fillstyle=hlines](1,0)(3,2)(3,0)}<br>\end{pspicture}\qquad<br>\begin{pspicture}[showgrid=true](3,3)<br> \psline[linewidth=2pt,linecolor=blue,fillstyle=vlines](0,1)(2,3)(0,3)<br> \pscustom[linewidth=2pt,linecolor=blue,fillstyle=hlines]{\psline(1,0)(3,2)(3,0)}<br>\end{pspicture}<br>\end{Example*}<br><br>As can be seen from the example above, the specification of parameters within<br>\Lcs{pscustom} (left example) does not have any effect on the figure; in<br>contrast to the correct example where the parameters are specified through the<br>optional argument of \Lcs{pscustom}. It is therefore advisable to not use any<br>parameters with the macros within \Lcs{pscustom} as a rule.<br><br><br>The line styles \Lkeyval{dashed} and \Lkeyval{dotted} can be a problem because<br>they do not know anything about an existing path at the beginning. In these<br>cases \Lcs{pscustom} should be given the \Index{line style} listed in<br>table~\vref{tab:linetype} as a parameter.<br><br><br><br>\danger<br>The following parameters are \textbf{not} available within the \Lcs{pscustom}<br>macro -- \Lkeyword{shadow}, \Lkeyword{border}, \Lkeyword{doubleline},<br>\Lkeyword{showpoints}.<br>The parameters \Lkeyword{origin} and \Lkeyword{swapaxes} only affect<br>\Lcs{pscustom} itself.<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{Open and closed curves}\label{subsec:Offene-und-geschlossene-Kurven}<br>% ---------------------------------------------------------------------------------------<br>\PST\ distinguishes between \Index{closed curve}s and \Index{open curve}s. As<br>\Lcs{pscustom} is used itself to create closed polylines and polycurves, it<br>makes little sense to use closed curves within \Lcs{pscustom}.<br><br>The actual primary focus of \Lcs{pscustom} is connecting open lines and curves.<br>In principle there will always be a direct line drawn from the end of the line/curve<br>drawn last to the start of the next line or curve if it defines an \textbf{end<br>arrow}. This can be seen clearly in the following example where in the first<br>curve a connection from the first \Index{arc}\index{circle!arc} to the second<br>one because it has an end arrow.<br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{psline}\xLcs{pscustom}\xLkeyword{linecolor}\xLkeyword{showgrid}}<br>\begin{pspicture}[showgrid=true](3,3)<br> \psset{linewidth=1.5pt,arrowscale=2}<br> \pscustom[linecolor=red]{%<br> &nbsp;\psarc(0,0){2}{5}{85}\psarcn{->}(0,0){3}{85}{5}}<br> \pscustom[linecolor=blue]{%<br> &nbsp;\psarc(0,0){0.5}{5}{85}\psarcn{&lt;-}(0,0){1.5}{85}{5}}<br>\end{pspicture}<br>\end{Example}<br>\NormalExampleWidth<br><br>The above example assumes that the arrow is defined locally because it is only<br>valid for a single polycurve here.<br><br>\danger<br>The macros \Lcs{psline}, \Lcs{pscurve}, and \Lcs{psbezier} start at the current<br>point when their parameters are ,,incomplete``{}. It will always be set to the<br>coordinate origin by \PST\ outwith \Lcs{pscustom} for \Lcs{psline} and<br>\Lcs{psbezier}. In the following example this behaviour results in a polyline<br>whereas without \Lcs{pscustom} two independent lines starting at the coordinate<br>origin are drawn and nothing for \Lcs{pscurve} because if less than three<br>coordinate pairs are specified here, no curve is drawn.<br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{psline}\xLcs{pscustom}\xLkeyword{linecolor}\xLkeyword{linewidth}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\psline(1,3)\psline(2,0)<br> &nbsp;&nbsp;&nbsp;\pscurve(2.5,2)(3,0)<br> &nbsp;&nbsp;&nbsp;\psline(1,1)(1,0)}<br>\end{pspicture}<br>\end{Example}<br><br><br>\danger<br>The following graphical objects are \textbf{not} available within \Lcs{pscustom}<br>-- \Lcs{psgrid}, \Lcs{psdots}, \Lcs{qline}, \Lcs{qdisk}.<br>Closed lines or curves should \textbf{not} be part of \Lcs{pscustom}; unexpected<br>side effects may occur.<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLkeyval{liftpen}}\label{subsec:custom:liftpen}<br>% ---------------------------------------------------------------------------------------<br>The parameter \Lkeyword{liftpen} is an exceptional tool to control the<br>connection of several partial lines or curves within \Lcs{pscustom}.<br><br>\begin{table}[htb]<br>\caption{Meaning of the \texttt{liftpen} parameter}\label{tab:liftpen}<br>\begin{tabularx}{\linewidth}{@{}lX@{}}<br>\emph{value} &amp; \emph{meaning}\\\hline<br>$0$ &amp; If a new polyline or polycurve does not start at the current point, a line<br>is drawn from the current point to the starting point of the line or curve<br>(default behaviour). If there is a line or curve with incomplete coordinates<br>they are amended by the current point.\\<br>$1$ &amp; The current point is not taken into account when the specification of<br>coordinates is incomplete; instead the coordinate origin is taken (only for<br>\Lcs{psline} and \Lcs{psbezier}).\\<br>$2$ &amp; Single polylines or polycurves are treated as individual units; they do<br>not use the current point as starting point (with incomplete coordinates) and no<br>line is drawn from the current point to the starting point of the next object.\\<br>\end{tabularx}<br>\end{table}<br><br>The next example is formally equivalent to the previous one; the difference is<br>that the \Lcs{psline} macros now have \Lkeyword{liftpen}\=\relax1 as parameter<br>and therefore the second line does not use the end point of the first curve as<br>current point, but the coordinate origin. No \Lcs{pscurve} is drawn in this<br>case because for this curve the incomplete coordinates (at least three pairs)<br>are not amended with \Lkeyword{liftpen}\=\relax1. This affects the current<br>point which remains at $(2,0)$; therefore the connecting line to the new<br>starting point $(1,1)$ of the last \Lcs{psline} command starts from there.<br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{psline}\xLcs{pscustom}\xLkeyword{linecolor}\xLkeyword{liftpen}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\psline(1,3)\psline[liftpen=1](2,0)<br> &nbsp;&nbsp;&nbsp;\pscurve[liftpen=1](2.5,2)(3,0)<br> &nbsp;&nbsp;&nbsp;\psline(1,1)(1,0)}<br> &nbsp;\psline[linestyle=dashed](1,3)(2,0)<br> &nbsp;\pscurve[linestyle=dashed](2,0)(2.5,2)(3,0)<br> &nbsp;\psline[linestyle=dashed](3,0)(1,1)<br>\end{pspicture}<br>\end{Example}<br><br>The same example with complete coordinates for \Lcs{pscurve} yields:-<br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{psline}\xLcs{pscustom}\xLkeyword{linecolor}\xLkeyword{liftpen}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\psline(1,3)\psline[liftpen=1](2,0)<br> &nbsp;&nbsp;&nbsp;\pscurve[liftpen=1](2,0)(2.5,2)(3,0)<br> &nbsp;&nbsp;&nbsp;\psline(1,1)(1,0)}<br> &nbsp;\psline[linestyle=dashed](1,3)(2,0)<br>\end{pspicture}<br>\end{Example}<br><br>To illustrate this slightly complicated matter further, another example will be<br>given which compares the behaviour for the different values of<br>\Lkeyword{liftpen}.<br><br>\setlength\ExampleWidth{\linewidth}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example*}{\xLcs{pscurve}\xLcs{pscustom}\xLcs[pst-plot]{psplot}\xLkeyword{linecolor}\xLkeyword{fillstyle}}<br>\begin{pspicture}[showgrid=true](3,3)<br>\pscustom[fillcolor=lightgray,fillstyle=solid]{%<br> &nbsp;\psplot{0}{2.6}{x RadtoDeg 2 mul sin 2 add} <br> &nbsp;\pscurve(3,1)(2,0)(1,1)(0,0)}<br>\end{pspicture}\quad<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[fillcolor=lightgray,fillstyle=solid]{%<br> &nbsp;&nbsp;&nbsp;\psplot{0}{2.6}{x RadtoDeg 2 mul sin 2 add} <br> &nbsp;&nbsp;&nbsp;\pscurve[liftpen=1](3,1)(2,0)(1,1)(0,0)}<br>\end{pspicture}\quad<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[fillcolor=lightgray,fillstyle=solid]{%<br> &nbsp;&nbsp;&nbsp;\psplot{0}{2.6}{x RadtoDeg 2 mul sin 2 add} <br> &nbsp;&nbsp;&nbsp;\pscurve[liftpen=2](3,1)(2,0)(1,1)(0,0)}<br>\end{pspicture}<br>\end{Example*}<br>\NormalExampleWidth<br><br><br>The left example (\Lkeyword{liftpen}\=\relax0) uses the end point of the first<br>curve (\Lcs[pst-plot]{psplot}) as starting point of the next curve<br>(\Lcs{pscurve}). The example in the middle (\Lkeyword{liftpen}\=\relax1) does<br>\textbf{not} use the end point of the first curve (\Lcs[pst-plot]{psplot}) as<br>the starting point of the next curve (\Lcs{pscurve}); a connecting line from the<br>end point of the first curve to the starting point of the second curve is drawn<br>however. The right example (\Lkeyword{liftpen}\=\relax2) neither the end point<br>of the first curve (\Lcs[pst-plot]{psplot}) is used as the starting point of the<br>second curve (\Lcs{pscurve}), nor a connecting line is drawn; two individual<br>units are created.<br><br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{moveto}}<br>% ---------------------------------------------------------------------------------------<br>Moves the \Index{current point}\index{point!current} to the new coordinates<br>$(x,y)$ without drawing a line.<br><br>\begin{BDef}<br>\Lmcs{moveto}\Largra{x,y}<br>\end{BDef}<br><br>\ExtendExampleWidth{-3}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}<br>\SpecialCoor}<br>\begin{Example}{\xLcs{moveto}\xLcs{pscustom}\xLcs[pst-plot]{psplot}\xLkeyword{linecolor}\xLkeyword{linewidth}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180 mul 1.57 div sin 2 add}<br> &nbsp;&nbsp;&nbsp;\moveto(1.5,1.5)\pscurve(3,1)(2,0)(1,1)(0,0)}<br> &nbsp;\psline[linestyle=dotted]{->}%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(! 3 dup 180 mul 1.57 div sin 2 add)(1.5,1.5)<br>\end{pspicture}<br>\end{Example}<br>\NormalExampleWidth<br><br>\iffalse<br>\bigskip<br>\begin{leftbar}<br>\begin{tabular}{l@{$\,\rightarrow\,$}l}<br> &nbsp;&nbsp;&nbsp;\verb+\psplot+ &amp; chapter~\vref{chap:pst-plot} \\<br> &nbsp;&nbsp;&nbsp;\verb+\pscurve+ &amp; section~\vref{sec:pscurve} \\<br>\end{tabular}<br>\end{leftbar}<br>\fi<br><br>\enlargethispage{3ex}%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{newpath}}<br>% ---------------------------------------------------------------------------------------<br>Its use is completely identical to the \PS\ command \Lps{newpath}. The current<br>path is deleted and a new one started; all information about the old path is<br>lost. In the following example the first curve is not drawn for this reason.<br><br>\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{pscurve}\xLcs{pscustom}\xLcs{newpath}\xLkeyword{linecolor}\xLkeyword{fillstyle}}<br>\begin{pspicture}[showgrid=true](3,2)<br> \pscustom[fillcolor=lightgray,fillstyle=solid]{%<br> &nbsp;\psplot{0}{3}{x 180 mul 1.57 div sin 2 add}<br> &nbsp;\newpath<br> &nbsp;\pscurve(3,1)(2,0)(1,1)(0,0) }<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>\clearpage<br><br><br>\iffalse<br>\begin{leftbar}<br>\begin{tabular}{l@{$\,\rightarrow\,$}l}<br> &nbsp;&nbsp;&nbsp;\verb+\psplot+ &amp; chapter~\vref{chap:pst-plot} \\<br> &nbsp;&nbsp;&nbsp;\verb+\pscurve+ &amp; section~\vref{sec:pscurve} \\<br>\end{tabular}<br>\end{leftbar}<br>\fi<br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{closepath}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{closepath} is the counterpart to \Lcs{newpath} and its use is completely<br>identical to the \PS\ command \Lps{closepath} as well. The current path is<br>closed by connecting the starting point and the end point. When using<br>\Lcs{moveto} many different parts may exist; they are all treated separately.<br>The starting point is made the current point; after that all information about<br>the old path is lost.<br><br>The following example determines the starting point $(0,2)$ as the new current<br>point after the application of \Lcs{closepath}; the next curve looks completely<br>different because it uses this point as starting point.<br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{closepath}\xLcs{pscustom}\xLcs[pst-plot]{psplot}\xLkeyword{linecolor}\xLkeyword{fillstyle}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[fillcolor=lightgray,<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;fillstyle=solid]{%<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180 mul 1.57 div sin 2 add}<br> &nbsp;&nbsp;&nbsp;\closepath<br> &nbsp;&nbsp;&nbsp;\pscurve(3,1)(2,0)(1,1)(0,0)}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{stroke}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{stroke} makes it possible to pass special parameters to single parts within<br>the \Lcs{pscustom} macro and to draw the previously created polyline or<br>polycurve.<br><br>\begin{BDef}<br>\Lmcs{stroke}\OptArgs<br>\end{BDef}<br><br>\Lcs{stroke} does not replace the \Lcs{stroke} caused by \PST\ itself in the<br>\PS\ code at the end of a macro. This means that one has to choose at least a<br>larger \Index{line width} to avoid overwriting. The next example illustrates how<br>to create special lines from several colours in an easy manner.<br><br>%\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{stroke}\xLcs{pscustom}\xLcs[pst-plot]{psplot}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linecolor=white]{%<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180 mul 1.57 div sin <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.5 mul 1.5 add}<br> &nbsp;&nbsp;&nbsp;\stroke[linecolor=red,linewidth=7pt]<br> &nbsp;&nbsp;&nbsp;\stroke[linecolor=blue,linewidth=4pt]<br> &nbsp;&nbsp;&nbsp;\stroke[linecolor=green,linewidth=2pt]}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{fill}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{fill}, analogous to \Lcs{stroke}, makes it possible to pass special<br>parameters to single parts within the \Lcs{pscustom} macro and to draw the<br>polyline or polycurve created previously.<br><br>\begin{BDef}<br>\Lmcs{fill}\OptArgs<br>\end{BDef}<br><br>\Lcs{fill} does not replace the \Lcs{fill} caused by \PST\ in the \PS\ code at<br>the end of a macro. As \Lcs{pscustom} fills the area with the current fill<br>colour and fill style at the end anyway, possible applications of \Lcs{fill} are<br>limited.<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{gsave} and \nxLcs{grestore}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{gsave} makes it possible to save the current \PS\ stack referring to the<br>graphical output (path specifications, colour, line width, coordinate origin,<br>etc.). \Lcs{grestore} restores all these values.<br>%<br>%\Lmcs{gsave}\\<br>%\Lmcs{grestore}<br>%<br>The next example fills an area with \Lcs{gsave}/\Lcs{grestore} without making<br>the borders visible through lines.<br><br><br>\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{gsave}\xLcs{pscustom}\xLcs{grestore}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom{%<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sin 1.5 mul 1.5 add}<br> &nbsp;&nbsp;&nbsp;\gsave<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\psline(3,3)(0,3)% is _not_ drawn<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\fill[fillcolor=lightgray,fillstyle=solid]<br> &nbsp;&nbsp;&nbsp;\grestore }<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pst-plot}\SpecialCoor}<br>\begin{Example}{\xLcs{gsave}\xLcs{pscustom}\xLcs{grestore}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pstVerb{/rad {180.0 mul 2 div} def}<br> &nbsp;\pscustom[plotpoints=200]{%<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x rad sin 1.5 add}<br> &nbsp;&nbsp;&nbsp;\gsave<br> &nbsp;&nbsp;&nbsp;\psline(! 3 dup rad sin 1.5 add)%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(!3 dup rad sin neg 1.5 add)<br> &nbsp;&nbsp;&nbsp;\psplot{3}{0}{x rad sin neg 1.5 add}<br> &nbsp;&nbsp;&nbsp;\fill[fillcolor=lightgray,fillstyle=solid]<br> &nbsp;&nbsp;&nbsp;\grestore<br> &nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{3}{0}{x rad sin neg 1.5 add}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>\danger<br>The macros \Lcs{gsave} and \Lcs{grestore} may only appear \textbf{in pairs}, but<br>arbitrarily nested.<br><br><br>\iffalse<br>\medskip<br>\begin{leftbar}<br>\begin{tabular}{l@{$\,\rightarrow\,$}l}<br> &nbsp;&nbsp;&nbsp;\verb+\psplot+ &amp; chapter~\vref{chap:pst-plot} \\<br> &nbsp;&nbsp;&nbsp;\verb+\pstVerb+ &amp; section~\vref{sec:pstverb} \\<br>\end{tabular}<br>\end{leftbar}<br>\fi<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{translate}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{translate} moves the coordinate origin to $(x,y)$ for all subsequent<br>graphical operations.<br><br>\begin{BDef}<br>\Lmcs{translate}\Largra{$x,y$}<br>\end{BDef}<br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{translate}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{0}{3}{x 180.0 mul 1.5 div sin}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{scale}}<br>% ---------------------------------------------------------------------------------------<br>In contrast with other length assignments, \Lmcs{scale} only takes dimensionless<br>values which are internally assumed to have unit \verb+pt+.<br><br>\begin{BDef}<br>\Lmcs{scale}\Largb{value1 \OptArg{value2}}<br>\end{BDef}<br><br>Scales the \Lcs{pscustom} object with \Larg{value1} horizontally and with<br>\Larg{value2} vertically; if no second value is specified, the object is scaled<br>proportionally with \Larg{value1}. As can be seen from the example, negative<br>values are possible as well; this corresponds to scaling and subsequent<br>mirroring.<br><br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{scale}\xLcs{pscustom}\xLcs{translate}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\scale{1 0.5}<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\scale{1 -0.5}<br> &nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{0}{3}{x 180.0 mul 1.5 div sin}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{rotate}}<br>% ---------------------------------------------------------------------------------------<br><br>\begin{BDef}<br>\Lmcs{rotate}\Largb{angle in degrees}<br>\end{BDef}<br><br>Rotates the \Lcs{pscustom} object by the specified angle which has to be<br>specified in degrees to be compliant with \PS.<br><br><br>\clearpage<br><br><br>\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{rotate}\xLcs{pscustom}\xLcs{translate}}<br>\begin{pspicture}[showgrid=true](3,4)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{0}{3}{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\rotate{30}<br> &nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{0}{3}{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x 180.0 mul 1.5 div sin}<br> &nbsp;}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{swapaxes}}<br>% ---------------------------------------------------------------------------------------<br>An example for this has been given already in<br>chapter~\vref{chap:koordinatensystem}; only it was a parameter there. In any<br>case only the $x$-$y$ axes are swapped, which is equivalent to<br>\Lcs{rotate}\Largb{$-90$} \Lcs{scale}\Largb{$-1\mkern10mu 1$}.<br>%<br>%\begin{Xverbatim}{\xLcs{scale}\xLcs{rotate}}<br>%\rotate{-90} \scale{-1 1}<br>%\end{Xverbatim}<br><br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{swapaxes}\xLcs{pscustom}\xLcs{translate}}<br>\begin{pspicture}[showgrid=true](3,4)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\translate(2,0)<br> &nbsp;&nbsp;&nbsp;\swapaxes<br> &nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{0}{3}%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{x 180.0 mul 1.5 div sin}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{msave} and \nxLcs{mrestore}}<br>% ---------------------------------------------------------------------------------------<br>These commands can be used to save and restore the currently valid coordinate<br>system. In contrast to \Lcs{gsave} and \Lcs{grestore} all other parameters such<br>as line type, line width, etc.\ are not affected by this.<br><br><br>%<br>%\Lmcs{msave}\\<br>%\Lmcs{mrestore}<br><br>%The current version of \PST\ contains a bug here; the following example will<br>%only compile with the package \verb+pstricks-add+ without errors.<br>The example draws the first sine function with the coordinate origin at<br>\Lcs{translate}\Largrfix{0,1.5}; after that the state of the coordinate system<br>is saved, a new origin is set with \Lcs{translate}\Largrfix{1,2}, and another<br>sine function is drawn. Based on the current origin \Largrfix{0,1.5} a<br>\Lcs{translate}\Largrfix{1,2} corresponds to the absolute coordinates $(0,3.5)$.<br>Afterwards the old state is restored with the macro \Lcs{mrestore}; the<br>coordinate origin is at \Largrfix{0,1.5} again and the following cosine function<br>refers to it again.\index{coordinate origin}\index{coordinate system}<br><br>\clearpage<br><br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{msave}\xLcs{pscustom}\xLcs{mrestore}}<br>\begin{pspicture}[showgrid=true](3,4)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\translate(0,1.5)<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}%<br> &nbsp;&nbsp;&nbsp;\msave<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\translate(1,2) \scale{1 0.5}<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{-1}{2}%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\mrestore<br> &nbsp;&nbsp;&nbsp;\psplot[liftpen=2]{0}{3}%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{x 180.0 mul 0.5 div cos}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>\danger<br>The macros \Lcs{msave} and \Lcs{mrestore} may only occur \textbf{in pairs}, but<br>can be arbitrarily nested with themselves or with \Lcs{gsave} and<br>\Lcs{grestore}. The nesting has to be balanced pairwise though.<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{openshadow}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{openshadow} creates a copy of the current path using the specified<br>shadow-parameters. In contrast to \Lcs{closedshadow} the original path is not<br>filled with a colour by default; it stays "`open"'. Filling it can be done by<br>the user though.<br><br>\begin{BDef}<br>\Lmcs{openshadow}\OptArgs<br>\end{BDef}<br><br><br>%\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{openshadow}\xLcs{pscustom}\xLcs{translate}}<br>\begin{pspicture}[showgrid=true](3,4)<br> &nbsp;\pscustom{%<br> &nbsp;&nbsp;&nbsp;\translate(0,3)<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\openshadow[shadowsize=6pt]}<br> &nbsp;\pscustom[fillcolor=black!20,fillstyle=solid]{%<br> &nbsp;&nbsp;&nbsp;\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\openshadow[shadowsize=6pt]}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{closedshadow}}\label{subsubsec:Custom:closedshadow}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{closedshadow} creates a shadow of the ares surrounded by the current path<br>as if it was a non-transparent environment.<br><br>\begin{BDef}<br>\Lmcs{closedshadow}\OptArgs<br>\end{BDef}<br><br>\clearpage<br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{closedshadow}\xLcs{pscustom}\xLcs{translate}}<br>\begin{pspicture}(3,2)<br> &nbsp;\pscustom{\translate(0,1)<br> &nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;\closedshadow[shadowsize=6pt]}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>One has to keep in mind how the shadow is created. \PST\ simply copies the<br>closed path, translates it corresponding to the specifications of<br>\Lkeyword{shadowsize} and \Lkeyword{shadowangle}, fills it with<br>\Lkeyword{shadowcolor}, and fills the old path again with \Lkeyword{fillcolor}, which<br>is set to \LColor{white} by default. If the second filling is suppressed<br>(corresponds to \Lcs{openshadow}), it results in the complete shadow copy shown<br>in the following example, in contrast to the correct result next to it on the<br>right.<br><br><br>\SetPreambleCommands{\setlength\parindent{0pt}<br>\usepackage{pstricks}<br>\def\Hut{%<br> \pscustom[fillstyle=none,shadowcolor=lightgray,fillcolor=red]{<br> &nbsp;\psbezier(0,0)(1,1)(1,-1)(2,0)<br> &nbsp;\psbezier(3,1)(1,1)(2,2)<br> &nbsp;\closepath <br> &nbsp;\closedshadow[shadowsize=10pt,fillcolor=white,shadowangle=30]}}}<br>\begin{Escape}{\xLcs{closedshadow}\xLcs{pscustom}\xLcs{closepath}}<br>\begin{pspicture}[showgrid=true](0,-0.25)(5,2)<br> &nbsp;\makeatletter<br> &nbsp;\bgroup<br> &nbsp;\def\pst@closedshadow{%<br> &nbsp;&nbsp;&nbsp;\addto@pscode{%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gsave<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\psk@shadowsize \psk@shadowangle \tx@PtoC<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\tx@Shadow<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\pst@usecolor\psshadowcolor<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gsave fill grestore<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stroke grestore<br>% &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gsave<br>% &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\pst@usecolor\psfillcolor<br>% &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;gsave fill grestore<br>% &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stroke<br>% &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;grestore%<br> &nbsp;}}<br> &nbsp;\Hut\egroup<br> &nbsp;\makeatother<br> &nbsp;\rput(2.5,0){\Hut}<br>\end{pspicture}<br>\end{Escape}<br>\NormalExampleWidth<br><br><br>When specifying a \Lkeyword{fillcolor} with the options of \Lcs{pscustom} which<br>is different from \LColor{white}, one has to pass the right fill colour to the<br>macro \Lcs{closedshadow} as well.<br><br><br>\ExtendExampleWidth{-3}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{closedshadow}\xLcs{pscustom}\xLcs{psbezier}\xLkeyword{shadowsize}\xLkeyword{shadowangle}}<br>\begin{pspicture}(0,-0.25)(2.5,2)<br>\pscustom[shadowcolor=black!30,fillcolor=red]{%<br> &nbsp;\psbezier(0,0)(1,1)(1,-1)(2,0)\psbezier(3,1)(1,1)(2,2)<br> &nbsp;\closepath <br> &nbsp;\closedshadow[shadowsize=10pt,shadowangle=30]}<br>\end{pspicture}\\[10pt]<br>\begin{pspicture}(0,-0.25)(2.5,2)<br>\pscustom[shadowcolor=black!30,fillcolor=red]{%<br> &nbsp;\psbezier(0,0)(1,1)(1,-1)(2,0)\psbezier(3,1)(1,1)(2,2)<br> &nbsp;\closepath <br> &nbsp;\closedshadow[shadowsize=10pt,shadowangle=30,<br> &nbsp;&nbsp;&nbsp;fillcolor=white]}<br>\end{pspicture}<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{movepath}}<br>% ---------------------------------------------------------------------------------------<br>Translates the current path by \Largr{$dx,dy$}; after that, it is lost.<br>\Lcs{gsave} and \Lcs{grestore} can be used to save and restore the original path<br>however.<br><br>\begin{BDef}<br>\Lmcs{movepath}\Largr{$dx,dy$}<br>\end{BDef}<br><br><br>%\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks,pst-plot}}<br>\begin{Example}{\xLcs{movepath}\xLcs{pscustom}\xLcs{translate}}<br>\begin{pspicture}[showgrid=true](4,3)<br> &nbsp;\pscustom[fillcolor=black!10,<br> &nbsp;&nbsp;&nbsp;fillstyle=solid]{%<br> &nbsp;&nbsp;&nbsp;&nbsp;\translate(0,1.5)<br> &nbsp;&nbsp;&nbsp;&nbsp;\psplot{0}{3}{x 180.0 mul 1.5 div sin}<br> &nbsp;&nbsp;&nbsp;&nbsp;\movepath(1,0.5)}<br> \psline[linestyle=dashed]{*->}(0,1.5)(1,2)<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{lineto}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{lineto} corresponds to \Lcs{psline}\Largr{\CAny} in principle, but always<br>draws a line to \Largr{\CAny} starting from the current point (which therefore<br>has to exist).<br><br>\begin{BDef}<br>\Lmcs{lineto}\Largr{\CAny}<br>\end{BDef}<br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{lineto}\xLcs{pscustom}}<br>\begin{pspicture}[showgrid=true](2,2)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\psline(0,0)(1,2)\lineto(2,0)}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{rlineto}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{rlineto} corresponds to \Lcs{lineto}\Largr{\CAny} in principle; only it is<br>a relative translation from the current point.<br><br>\begin{BDef}<br>\Lmcs{rlineto}\Largr{$dx,dy$}<br>\end{BDef}<br><br>%\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{rlineto}\xLcs{pscustom}}<br>\begin{pspicture}[showgrid=true](2,2)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;\psline(0,0)(1,2)\rlineto(1,-2)}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{curveto}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{curveto} corresponds to \Lcs{psbezier}\Largrai\Largraii\Largraiii in<br>principle; the current point is assumed to be the first one.<br><br>\begin{BDef}<br>\Lmcs{curveto}\Largrai\Largraii\Largraiii<br>\end{BDef}<br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{curveto}\xLcs{pscustom}\xLcs{moveto}}<br>\begin{pspicture}[showgrid=true](3,2)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\moveto(0.5,0)\curveto(1,2)(2,0)(3,2)}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{rcurveto}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{rcurveto} corresponds to \Lcs{curveto}\Largrai\Largraii\Largraiii in<br>principle, only \textbf{all} are assumed to be coordinates relative to the<br>current point.<br><br><br>\begin{BDef}<br>\Lmcs{rcurveto}\Largr{$dx_1,dy_1$}\Largr{$dx_2,dy_2$}\Largr{$dx_3,dy_3$}<br>\end{BDef}<br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{rcurveto}\xLcs{pscustom}\xLcs{moveto}}<br>\begin{pspicture}[showgrid=true](3,2)<br> &nbsp;\pscustom[linewidth=1.5pt]{%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\moveto(0.5,0)<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\rcurveto(0.5,2)(1.5,0)(2.5,2)}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{code}}\label{subsubsec:custom:code}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{code} inserts the \PS\ code given as parameter directly into the \PS\<br>output. This macro is identical to \Lcs{addto@pscode} and should be preferred<br>over using \Lcs[]{special} in \textbf{all} cases. Another example for \Lcs{code}<br>can be found in section~\vref{subsec:pstplot:listplot}.<br><br>\begin{BDef}<br>\Lmcs{code}\Largb{PostScript code}<br>\end{BDef}<br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{code}\xLcs{pscustom}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom{%<br> &nbsp;&nbsp;&nbsp;\code{%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;newpath<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;20 20 moveto 0 50 rlineto <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;50 0 rlineto 0 -50 rlineto<br> &nbsp;&nbsp;&nbsp;&nbsp;-50 0 rlineto closepath <br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 setlinejoin 7.5 setlinewidth stroke}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{dim}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{dim} converts the current \PST\ unit to \verb+pt+, such that one can do<br>calculations in the units specified by the \nxLenv{pspicture} environment, and<br>puts the result on the \PS\ stack.<br><br>\begin{BDef}<br>\Lmcs{dim}\Largb{value unit}<br>\end{BDef}<br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{dim}\xLcs{pscustom}\xLcs{code}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom{%<br> &nbsp;&nbsp;&nbsp;\code{newpath}<br> &nbsp;&nbsp;&nbsp;\dim{0cm}\dim{-2cm} \dim{2cm}\dim{0cm}<br> &nbsp;&nbsp;&nbsp;\dim{0cm}\dim{2cm} &nbsp;\dim{0.5cm}\dim{0.5cm}<br> &nbsp;&nbsp;&nbsp;\code{<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;moveto rlineto rlineto rlineto closepath<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 setlinejoin 7.5 setlinewidth<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;stroke}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{coor}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{coor} converts the specified coordinates from the \PST\ unit to \verb+pt+,<br>such that one can do calculations in the units specified by the<br>\nxLenv{pspicture} environment, and puts the result on the \PS\ stack. Using<br>\Lcs{coor} with several coordinates has a clear advantage over using \Lcs{dim}.<br>\Lcs{coor} internally uses the macro \Lcs{pst@@getcoor}\Largb{\#1} which is<br>called recursively when more than one coordinate pair is supplied.<br><br>\begin{BDef}<br>\Lmcs{coor}\Largrai\Largraii\ldots\Largran<br>\end{BDef}<br><br><br>\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{coor}\xLcs{pscustom}\xLcs{code}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom[linecolor=red]{%<br> &nbsp;&nbsp;&nbsp;\code{newpath}\coor(0,-2)(2,0)(0,2)(0.5,0.5)<br> &nbsp;&nbsp;&nbsp;\code{ moveto rlineto rlineto rlineto<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closepath<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 setlinejoin 7.5 setlinewidth stroke}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{rcoor}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{rcoor} is in principle identical to \Lcs{coor} except that the<br>\Index{coordinates} are put on the stack in reverse order (\Index{reverse<br>coor}).<br><br>\begin{BDef}<br>\Lmcs{rcoor}\Largrai\Largraii\ldots\Largran<br>\end{BDef}<br><br>\clearpage<br><br><br>\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{rccor}\xLcs{pscustom}\xLcs{code}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom{%<br> &nbsp;&nbsp;&nbsp;\code{newpath}\rcoor(0.5,0.5)(0,2)(2,0)(0,-2)<br> &nbsp;&nbsp;&nbsp;\code{ moveto rlineto rlineto rlineto<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closepath<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 setlinejoin 7.5 setlinewidth stroke}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{file}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{file} inserts the contents of a file without any expansion as \PS\ code.<br>Only comment lines starting with "`\verb+%+"' are ignored.<br><br>\begin{BDef}<br>\Lmcs{file}\Largb{filename}<br>\end{BDef}<br><br>The following example reads the contents of the file \Lfile[demo]{file.ps}<br>previously written with \Lenv[]{filecontents} and executes the corresponding<br>commands.<br><br><br>\iffalse<br>\begin{Xverbatim}{}<br>% file "file.ps", &nbsp;demo for \file &nbsp;hv 2007-01-01<br>newpath<br>20 20 moveto 0 50 rlineto 50 0 rlineto 0 -50 rlineto -50 0 rlineto<br>closepath <br>2 setlinejoin 7.5 setlinewidth stroke<br>% end<br>\end{Xverbatim}<br>%\lstinputlisting[caption={Contents of the file \texttt{file.ps}}]{file.ps}<br>\fi<br><br>\ExtendExampleWidth{-2}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}<br>\begin{filecontents*}{file.ps}<br>% file "file.ps", &nbsp;demo for \file &nbsp;hv 2007-01-01<br>newpath 20 &nbsp;20 moveto &nbsp;&nbsp;0 50 rlineto 50 0 rlineto <br> 0 -50 rlineto -50 0 rlineto closepath <br>2 setlinejoin 7.5 setlinewidth stroke<br>\end{filecontents*}}<br>\begin{Example}{\xLcs{file}\xLcs{pscustom}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom{\file{data/file.ps}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{arrows}}<br>% ---------------------------------------------------------------------------------------<br>\Lmcs{arrows} defines the type of the beginning and the end of the line or curve<br>to insert.\index{PostScript!ArrowA}\index{PostScript!ArrowB}<br><br><br>\begin{BDef}<br>\Lmcs{arrows}\Largb{arrow type}<br>\end{BDef}<br><br>Internally the two \PS\ procedures \Lps{ArrowA} and \xLps{ArrowB} are used;<br>parameters are to be given as follows:-<br>%<br>\begin{Xverbatim}{\xLps{ArrowA}\xLps{ArrowB}}<br>x2 y2 x1 y1 ArrowA<br>x2 y2 x1 y1 ArrowB<br>\end{Xverbatim}<br>% &nbsp;<br>Both draw an arrow from \Largr{\Coord2} to \Largr{\Coord1}. \Lps{ArrowA} sets<br>the current point to the end of the arrow and leaves \Largr{\Coord2} on the<br>stack. \Lps{ArrowB} on the other hand does not change the current point, but<br>leaves the four values \nxLps{x2 y2 x1' z1'} on the stack, where<br>\Largr{$x_1^{\prime},y_1^{\prime}$} is the point where a line or curve connects.<br><br>%\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{pscustom}\xLcs{arrows}\xLcs{code}}<br>\SpecialCoor<br>\begin{pspicture}[showgrid=true](4,3)<br> \pscustom[linewidth=1.5pt]{%<br> &nbsp;\arrows{|->}<br> &nbsp;\code{%<br> &nbsp;&nbsp;&nbsp;&nbsp;80 140 5 5 ArrowA &nbsp;&nbsp;&nbsp;% 80 140 on the stack<br> &nbsp;&nbsp;&nbsp;&nbsp;30 -30 110 75 ArrowB % 30 -30 105.41 68.986<br> &nbsp;&nbsp;&nbsp;&nbsp;curveto}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;% curve for three points<br> &nbsp;&nbsp;\psline[linestyle=dashed]%<br> &nbsp;&nbsp;&nbsp;(5pt,5pt)(80pt,140pt)(30pt,-30pt)(110pt,75pt)<br> \uput[0](80pt,140pt){(80pt,140pt)}<br> \uput[0](30pt,-30pt){(30pt,-30pt)}<br>\end{pspicture}<br>\end{Example}<br>\NormalExampleWidth<br><br><br><br>% ---------------------------------------------------------------------------------------<br>\subsection{\nxLcs{setcolor}}<br>% ---------------------------------------------------------------------------------------<br>\Lcs{setcolor} sets the current colour and uses \Lcs{pst@usecolor} internally.<br>%The current version of \PST\ has a bug; this macro is only available when using<br>%\verb+pstricks-add+.<br><br>\begin{BDef}<br>\Lmcs{setcolor}\Largb{colour name}<br>\end{BDef}<br><br>%\ExtendExampleWidth{-1}<br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{pscustom}\xLcs{setcolor}\xLcs{code}\xLcs{rcoor}}<br>\begin{pspicture}[showgrid=true](3,3)<br> &nbsp;\pscustom{%<br> &nbsp;&nbsp;&nbsp;\code{newpath}<br> &nbsp;&nbsp;&nbsp;\rcoor(0.5,0.5)(0,2)(2,0)(0,-2)<br> &nbsp;&nbsp;&nbsp;\setcolor{red}<br> &nbsp;&nbsp;&nbsp;\code{ moveto rlineto rlineto rlineto<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;closepath<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2 setlinejoin 7.5 setlinewidth stroke}}<br>\end{pspicture} &nbsp;<br>\end{Example}<br>\NormalExampleWidth<br><br><br>\NormalExampleWidth<br>\endinput<br><br>\vfill<br>\bgroup<br>\SetPreambleCommands{\usepackage{pst-plot,pst-tree}<br>\SpecialCoor<br>\def\drawseg#1#2{% Michael Sharpe<br>\pscustom{%<br> &nbsp;\translate(#1,#2)<br> &nbsp;\rotate{(\dirseg{#1}{#2})} &nbsp;% Vector in direction of field at x=#1,y=#2<br>\psline(-.25,0)(.25,0)}}<br>%<br>\def\dirseg#1#2{-#2,#1}} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;% Default direction field ($y'=-x/y$)}<br>\begin{Escape}{}<br>\begin{pspicture}(-6,-6)(6,6)<br> &nbsp;\psaxes{->}(0,0)(-5.5,-5.5)(5.5,5.5)<br> &nbsp;\psset{arrows=->}<br> &nbsp;\multido{\n=-5+1}{11}{%<br> &nbsp;&nbsp;&nbsp;\multido{\N=-5+1}{11}{%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ifnum\N=0 \ifnum\n=0 \else\drawseg{\n}{\N}\fi<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\else\drawseg{\n}{\N}\fi}}<br>\end{pspicture}<br><br>\iffalse<br>\def\dirseg#1#2{#2,#1} &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;% Direction field example ($y'=x/y$)<br>\begin{pspicture}(-6,-6)(6,6)<br> &nbsp;\psaxes{&lt;->}(0,0)(-6,-6)(6,6)<br> &nbsp;\psset{arrows=->}<br> &nbsp;\multido{\n=-5+1}{11}{%<br> &nbsp;&nbsp;&nbsp;\multido{\N=-5+1}{11}{%<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ifnum\N=0<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\ifnum\n=0<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\else<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\drawseg{\n}{\N}<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\fi<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\else<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\drawseg{\n}{\N}<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;\fi}}<br>\end{pspicture}<br>\fi<br>\end{Escape}<br>\captionof{figure}{Vector field -- application of \nxLcs{translate} and \nxLcs{rotate} (\Author{Michael Sharpe})}<br>\egroup<br><br><br><br><br><br>\NormalExampleWidth<br>\endinput<br><br>\SetHiddenPreambleCommands{\setlength\parindent{0pt}}<br>\SetPreambleCommands{\usepackage{pstricks}}<br>\begin{Example}{\xLcs{}}<br>\end{Example}<br><span>&lt;chap11.pdf></span>_______________________________________________<br>PSTricks mailing list<br><a href="mailto:PSTricks@tug.org">PSTricks@tug.org</a><br>http://tug.org/mailman/listinfo/pstricks<br></blockquote></div><br></div></body></html>