summaryrefslogtreecommitdiff
path: root/graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex
Initial commit
Diffstat (limited to 'graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex')
-rw-r--r--graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex4878
1 files changed, 4878 insertions, 0 deletions
diff --git a/graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex b/graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex
new file mode 100644
index 0000000000..ad9e06287c
--- /dev/null
+++ b/graphics/pstricks/contrib/pstricks-add/doc/pstricks-add-doc.tex
@@ -0,0 +1,4878 @@
+%% $Id: pstricks-add-doc.tex 887 2018-12-29 13:17:59Z herbert $
+%
+\documentclass[11pt,english,BCOR=10mm,DIV=12,bibliography=totoc,parskip=false,headings=small,
+ headinclude=false,footinclude=false,oneside]{pst-doc}
+\listfiles
+\usepackage{biblatex}
+\addbibresource{pstricks-add-doc.bib}
+\makeatletter
+%\RequirePackage{ltxcmds}[2010/01/28]
+%\@ifpackagelater{ltxcmds}{2010/03/09}{}{%
+% \def\ltx@pkgextension{sty}%
+%}
+\makeatother
+
+\usepackage{siunitx}
+\sisetup{add-decimal-zero,
+ round-mode=places,
+ round-precision=2,
+ output-decimal-marker={,},
+ detect-all}
+
+
+
+%\input{data/pstricks-add-doc.data}
+
+\usepackage[utf8]{inputenc}
+%\usepackage{pstricks-add}
+%\let\pstricksaddFV\fileversion
+\usepackage{pst-eucl,pst-fun,pst-func,multirow}
+\usepackage{pifont,pst-func}
+\let\belowcaptionskip\abovecaptionskip
+%
+\def\textat{\char064}%
+\newdimen\fullWidth
+\makeatletter
+\renewcommand*\l@section{\@dottedtocline{1}{2em}{2.3em}}
+\renewcommand*\l@subsection{\@dottedtocline{2}{3.8em}{3.2em}}
+\renewcommand*\l@subsubsection{\@dottedtocline{3}{7.0em}{4.1em}}
+\renewcommand*\l@paragraph{\@dottedtocline{4}{10em}{5em}}
+\makeatother
+\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
+ escapechar=§}
+
+\def\bgImage{\includegraphics{data/olympic}}
+
+\iffalse
+\psset{unit=1.5}
+\begin{pspicture}(-3,-3.25)(3,3)
+\psChart[userColor={red!30,green!30,blue!40,gray,cyan!50,
+ magenta!60,cyan},chartSep=30pt,shadow=true,shadowsize=5pt]{34.5,17.2,20.7,15.5,5.2,6.9}{6}{2}
+\psset{nodesepA=5pt,nodesepB=-10pt}
+\ncline{psChartO1}{psChart1}\nput{0}{psChartO1}{1000 (34.5\%)}
+\ncline{psChartO2}{psChart2}\nput{150}{psChartO2}{500 (17.2\%)}
+\ncline{psChartO3}{psChart3}\nput{-90}{psChartO3}{600 (20.7\%)}
+\ncline{psChartO4}{psChart4}\nput{0}{psChartO4}{450 (15.5\%)}
+\ncline{psChartO5}{psChart5}\nput{0}{psChartO5}{150 (5.2\%)}
+\ncline{psChartO6}{psChart6}\nput{0}{psChartO6}{200 (6.9\%)}
+\bfseries%
+\rput(psChartI1){Taxes}\rput(psChartI2){Rent}\rput(psChartI3){Bills}
+\rput(psChartI4){Car}\rput(psChartI5){Gas}\rput(psChartI6){Food}
+\end{pspicture}}
+\fi
+
+
+\begin{document}
+\title{\texttt{pstricks-add}\\additionals Macros for \texttt{pstricks}\\
+ \small v.\pstricksaddFV}
+%\docauthor{Herbert Vo\ss}
+\author{Dominique Rodriguez\\Michael Sharpe\\Herbert Voß}
+\date{\today}
+
+\maketitle
+
+\fullWidth=\linewidth
+\advance\fullWidth by \marginparsep
+\advance\fullWidth by \marginparwidth
+
+
+\begin{abstract}
+This version of \verb+pstricks-add+ needs \verb+pstricks.tex+
+version >1.04 from June 2004, otherwise the additional macros may
+not work as expected. The ellipsis material and the option
+\verb+asolid+ (renamed to \verb+eofill+) are
+\index{fillstyle!eofill@\texttt{eofill}} now part of the new
+\verb+pstricks.tex+ package, available on CTAN. \LPack{pstricks-add} will for ever be
+an experimental and dynamical package, try it at your own risk.
+
+\begin{itemize}
+\item It is important to load \LPack{pstricks-add} as the \textbf{last} PSTricks related package, otherwise
+a lot of the macros won't work in the expected way.
+\item \LPack{pstricks-add} uses the extended version of the keyval package. So be sure that
+you have installed \LPack{pst-xkey} which is part of the
+\LPack{xkeyval}-package, and that all packages that use the old
+keyval interface are loaded \textbf{before} the
+\LPack{xkeyval}.
+\item the option \Lkeyword{tickstyle} from \LPack{pst-plot} is no longer supported; use \Lkeyword{ticksize} instead.
+\item the option \Lkeyword{xyLabel} is no longer supported; use the option \Lkeyword{labelFontSize} instead.
+\item if \LPack{pstricks-add} is loaded together with the package \LPack{pst-func} then \Lkeyword{InsideArrow}
+ of the \Lcs{psbezier} macro doesn't work!
+\end{itemize}
+
+\vfill
+\noindent
+Thanks to:
+%Hendri Adriaens;
+Stefano Baroni;
+Martin Chicoine;
+Gerry Coombes;
+Ulrich Dirr;
+Christophe Fourey;
+Hubert G\"a\ss lein;
+J\"urgen Gilg;
+Denis Girou;
+Pablo Gonzáles;
+Peter Hutnick;
+Christophe Jorssen;
+Uwe Kern;
+Friedrich Lenk;
+Manuel Luque;
+Jens-Uwe Morawski;
+Tobias N\"ahring;
+Rolf Niepraschk;
+Alan Ristow;
+Christine R\"omer;
+Arnaud Schmittbuhl;
+John Smith;
+Timothy Van Zandt
+\end{abstract}
+
+\clearpage
+\tableofcontents
+
+
+\clearpage
+
+\section{\nxLcs{psGetSlope} and \nxLcs{psGetDistance}}
+%--------------------------------------------------------------------------------------
+
+\begin{BDef}
+\Lcs{psGetSlope}\coord1\coord2\Lcs{\Larga{macro}}\\
+\Lcs{psGetDistance}\coord1\coord2\Lcs{\Larga{macro}}
+\end{BDef}
+
+\begin{LTXexample}[width=4cm]
+\psGetSlope(-2,1)(3,1)\SlopeVal \SlopeVal \quad
+\psGetDistance(-2,1)(3,1)\DVal \DVal\\
+\psGetSlope(-2,1)(-3,-1)\SlopeVal \SlopeVal\quad
+\psGetDistance(-2,1)(-3,-1)\DVal \DVal\\
+\psGetSlope(-2,0)(3,-1)\SlopeVal \SlopeVal\quad
+\psGetDistance(-2,0)(3,-1)\DVal \DVal\\
+\psGetSlope(-2111,-12)(3,1)\SlopeVal \SlopeVal\quad
+%\psGetDistance(-2111,-12)(3,1)\DVal ==> Overflow!
+\end{LTXexample}
+
+
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{"`Handmade"' lines :-)}
+%--------------------------------------------------------------------------------------
+
+\begin{BDef}
+\Lcs{pslineByHand}\OptArgs\coord1\coord2\coord3 \ldots
+\end{BDef}
+
+\begin{LTXexample}[width=0.4\linewidth]
+\begin{pspicture}(4,6)
+\psset{unit=2cm}
+ \pslineByHand[linecolor=red](0,0)(0,2)(2,2)(2,0)(0,0)(2,2)(1,3)(0,2)(2,0)
+\end{pspicture}
+\end{LTXexample}
+
+\iffalse
+ \pslineByHand( 1.20, 1.50)( 1.20, 1.51)( 1.20, 1.53)( 1.20, 1.54)( 1.19, 1.55)( 1.19, 1.56)
+ ( 1.19, 1.57)( 1.18, 1.59)( 1.18, 1.60)( 1.17, 1.61)( 1.16, 1.62)( 1.15, 1.63)( 1.15, 1.64)
+ ( 1.14, 1.65)( 1.13, 1.65)( 1.12, 1.66)( 1.11, 1.67)( 1.10, 1.68)( 1.09, 1.68)( 1.07, 1.69)
+ ( 1.06, 1.69)( 1.05, 1.69)( 1.04, 1.70)( 1.03, 1.70)( 1.01, 1.70)( 1.00, 1.70)( 0.99, 1.70)
+ ( 0.97, 1.70)( 0.96, 1.70)( 0.95, 1.69)( 0.94, 1.69)( 0.93, 1.69)( 0.91, 1.68)( 0.90, 1.68)
+ ( 0.89, 1.67)( 0.88, 1.66)( 0.87, 1.65)( 0.86, 1.65)( 0.85, 1.64)( 0.85, 1.63)( 0.84, 1.62)
+ ( 0.83, 1.61)( 0.82, 1.60)( 0.82, 1.59)( 0.81, 1.57)( 0.81, 1.56)( 0.81, 1.55)( 0.80, 1.54)
+ ( 0.80, 1.53)( 0.80, 1.51)( 0.80, 1.50)( 0.80, 1.49)( 0.80, 1.47)( 0.80, 1.46)( 0.81, 1.45)
+ ( 0.81, 1.44)( 0.81, 1.43)( 0.82, 1.41)( 0.82, 1.40)( 0.83, 1.39)( 0.84, 1.38)( 0.85, 1.37)
+ ( 0.85, 1.36)( 0.86, 1.35)( 0.87, 1.35)( 0.88, 1.34)( 0.89, 1.33)( 0.90, 1.32)( 0.91, 1.32)
+ ( 0.93, 1.31)( 0.94, 1.31)( 0.95, 1.31)( 0.96, 1.30)( 0.97, 1.30)( 0.99, 1.30)( 1.00, 1.30)
+ ( 1.01, 1.30)( 1.03, 1.30)( 1.04, 1.30)( 1.05, 1.31)( 1.06, 1.31)( 1.07, 1.31)( 1.09, 1.32)
+ ( 1.10, 1.32)( 1.11, 1.33)( 1.12, 1.34)( 1.13, 1.35)( 1.14, 1.35)( 1.15, 1.36)( 1.15, 1.37)
+ ( 1.16, 1.38)( 1.17, 1.39)( 1.18, 1.40)( 1.18, 1.41)( 1.19, 1.43)( 1.19, 1.44)( 1.19, 1.45)
+ ( 1.20, 1.46)( 1.20, 1.47)( 1.20, 1.49)( 1.20, 1.50)
+\fi
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,3)
+\multido{\rA=0.00+0.25}{12}{\pslineByHand[linecolor=blue](0,\rA)(\linewidth,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+The amplitude and the width can be changed by the optional arguments \Lkeyword{varsteptol} and
+\Lkeyword{VarStepEpsilon}. Both are preset to \verb+VarStepEpsilon=2,varsteptol=0.8+.
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(\linewidth,3)
+\multido{\rA=0.00+0.25}{12}{%
+ \pslineByHand[linecolor=blue,VarStepEpsilon=4,varsteptol=2](0,\rA)(\linewidth,\rA)}
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{rmultiput}: a multiple \nxLcs{rput}}
+%--------------------------------------------------------------------------------------
+\verb+PSTricks+ already has a \Lcs{multirput}, which puts a box n
+times with a difference of $dx$ and $dy$ relative to each other.
+It is not possible to put it with a different distance from one
+point to the next. This is possible with \Lcs{rmultiput}:
+
+\begin{BDef}
+\LcsStar{rmultiput}\OptArgs\Largb{any material}\coord1\coord2\ldots\Largr{\coord{n}}
+\end{BDef}
+
+\begin{LTXexample}[width=6.2cm]
+\psset{unit=0.75}
+\begin{pspicture}(-4,-4)(4,4)
+\rmultiput[rot=45]{\red\psscalebox{3}{\ding{250}}}%
+ (-2,-4)(-2,-3)(-3,-3)(-2,-1)(0,0)(1,2)(1.5,3)(3,3)
+\rmultiput[rot=90,ref=lC]{\blue\psscalebox{2}{\ding{253}}}%
+ (-2,2.5)(-2,2.5)(-3,2.5)(-2,1)(1,-2)(1.5,-3)(3,-3)
+\psgrid[subgriddiv=0,gridcolor=lightgray]
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psVector}: Drawing relative vector lines}
+%--------------------------------------------------------------------------------------
+
+The new macros \Lcs{psStartPoint} and \Lcs{psVector} allow to draw a series of
+vectors which start point refers to the endpoint of the last drawn vector. The
+coordinates of the endpoint are \emph{always} interpreted relative to the last
+the vector. The first vector refers to the coordinates set by \Lcs{psStartPoint}.
+With the boolean argument one can draw the horizontal angle of the vector.
+
+\begin{BDef}
+\Lcs{psVector}\OptArgs\OptArg*{\texttt{<startpoint>}}\coord1\coord2\ldots\Largr{\coord{n}}\\
+\Lcs{psStartPoint}\OptArg{node basename}\Largr{$x$,$y$}
+\end{BDef}
+
+If the optional argument in angle braces is given then it will be the start point
+for the current vector and the next ones, until a new start point is defined or a
+new optional argument is used.
+
+The style of the angle arc is saved in \Lkeyval{psMarkAngleStyle} and the style
+for the horizontal line in \Lkeyval{psMarkAngleLineStyle} and preset to
+
+\begin{lstlisting}
+\newpsstyle{psMarkAngleStyle}{arrows=->,arrowsize=4pt}
+\newpsstyle{psMarkAngleLineStyle}{linestyle=dotted}
+\end{lstlisting}
+
+
+ \begin{pspicture}[showgrid](10,10)
+ \psVector<1,1>(3;30)(4;60)\nbput{$V_2$}
+ \psVector[linecolor=red](3;10)\nbput{$V_3$}
+ \psVector[linestyle=dashed](4;110)\nbput{$V_4$}
+ \psStartPoint(1,1)\psset{markAngle}
+ \psVector[linestyle=dashed](4;110)\ncput*{$V_1$}
+ \psVector[linecolor=red](3;10)\ncput*{$V_2$}
+ \psVector(4;60)(3;30)\ncput*{$V_4$}
+ \end{pspicture}
+
+\begin{lstlisting}
+ \begin{pspicture}[showgrid](10,10)
+ \psVector<1,1>(3;30)(4;60)\nbput{$V_2$}
+ \psVector[linecolor=red](3;10)\nbput{$V_3$}
+ \psVector[linestyle=dashed](4;110)\nbput{$V_4$}
+ \psset{markAngle}
+ \psVector[linestyle=dashed]<1,1>(4;110)\ncput*{$V_1$}
+ \psVector[linecolor=red](3;10)\ncput*{$V_2$}
+ \psVector(4;60)(3;30)\ncput*{$V_4$}
+ \end{pspicture}
+\end{lstlisting}
+
+All end points of the vectors are saved in node names with the preset name \verb=Vector#=,
+where \# is the consecutive number of the nodes. \verb=Vector0= ist the starting point of
+the first \Lcs{psVector}. With the macro \Lcs{psStartPoint} one can set the starting point and
+with optional argument the name of the nodes. \verb=Vector3= is the default node name of
+the endpoint of the third vector or the name of the starting point of the forth vector.
+
+
+\begin{pspicture}[showgrid,linewidth=1pt](10,10.4)
+ \psStartPoint[A](1,1)% nodes have the base name A
+ \psVector(3;30)(4;60)\psVector[linecolor=red](3;10)
+ \psVector[linestyle=dashed](4;110)\nbput{$V_3$}
+ \psline{->}(A0)(A4)
+ \psStartPoint[B](1,1)\psset{markAngle}% nodes have the base name B
+ \psVector[linestyle=dashed](4;110)\naput{$V_1$}
+ \psVector[linecolor=red](3;10)\ncput*{$V_2$}
+ \psVector(4;60)(3;30)
+ \psline[arrows=-D>,arrowscale=2,linewidth=1.5pt,linecolor=red](B2)(A2)
+ \psline[arrows=-D>,arrowscale=2,linewidth=1.5pt,linecolor=blue](A3)(B3)
+ \multido{\iA=0+1}{5}{\uput[0](A\iA){A\iA}\uput[180](B\iA){B\iA}}
+\end{pspicture}
+
+\begin{lstlisting}
+\begin{pspicture}[showgrid,linewidth=1pt](10,10.4)
+ \psStartPoint[A](1,1)% nodes have the base name A
+ \psVector(3;30)(4;60)\psVector[linecolor=red](3;10)
+ \psVector[linestyle=dashed](4;110)\nbput{$V_3$}
+ \psline{->}(A0)(A4)
+ \psStartPoint[B](1,1)\psset{markAngle}% nodes have the base name B
+ \psVector[linestyle=dashed](4;110)\naput{$V_1$}
+ \psVector[linecolor=red](3;10)\ncput*{$V_2$}
+ \psVector(4;60)(3;30)
+ \psline[arrows=-D>,arrowscale=2,linewidth=1.5pt,linecolor=red](B2)(A2)
+ \psline[arrows=-D>,arrowscale=2,linewidth=1.5pt,linecolor=blue](A3)(B3)
+ \multido{\iA=0+1}{5}{\uput[0](A\iA){A\iA}\uput[180](B\iA){B\iA}}
+ \end{pspicture}
+\end{lstlisting}
+
+\clearpage
+
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psCircleTangents}: Calculating tangent lines of circles}
+%--------------------------------------------------------------------------------------
+
+The macro calculates the points on a circle where tangent lines from another
+point or another circle are drawn.
+
+\begin{BDef}
+\Lcs{psCircleTangents}\Largr{$x1,y1$}\Largr{$x2,y2$}\Largb{Radius}\\
+\Lcs{psCircleTangents}\Largr{$x1,y1$}\Largb{Radius}\Largr{$x2,y2$}\Largb{Radius}
+\end{BDef}
+
+In the first case the coordinates of a point and the center and the radius
+of a circle must be given. The names of the calculates node names are \verb=CircleT1=
+and \verb=CircleT2=.
+
+\bigskip
+\begin{pspicture}[showgrid](0,3)(10,10)
+\psdot(2,4)\pscircle(7,7){2}
+\psCircleTangents(2,4)(7,7){2}
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(CircleT1)
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(CircleT2)
+\psdots(CircleT1)(CircleT2)
+\uput[-80](CircleT1){T1}\uput[115](CircleT2){T2}
+\end{pspicture}
+
+
+\begin{lstlisting}
+\begin{pspicture}[showgrid](0,3)(10,10)
+\psdot(2,4)\pscircle(7,7){2}
+\psCircleTangents(2,4)(7,7){2}
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(CircleT1)
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(CircleT2)
+\psdots(CircleT1)(CircleT2)
+\uput[-80](CircleT1){T1}\uput[115](CircleT2){T2}
+\end{pspicture}
+\end{lstlisting}
+
+\bigskip
+When using the other variant of the macro two circles must be given. The macro then defines
+ten nodes, named \verb=CircleTC1= and \verb=CircleTC2= for the two intersection points,
+ \verb=CircleTO1=, \verb=CircleTO2=, \verb=CircleTO3=, and \verb=CircleTO4= for the four
+ nodes of the outer tangent lines and
+ \verb=CircleTI1=, \verb=CircleTI2=, \verb=CircleTI3=, and \verb=CircleTI4= for the
+ four nodes of the inner tangent lines.
+
+\bigskip
+\begin{pspicture}[showgrid](-2,-2)(10,10)
+\pscircle(1,1){1}\pscircle(7,7){3}
+\psCircleTangents(1,1){1}(7,7){3}
+\pcline[nodesep=-1cm,linecolor=blue](CircleTO1)(CircleTO2)
+\pcline[nodesep=-1cm,linecolor=blue](CircleTO3)(CircleTO4)
+\pcline[nodesep=-1cm,linecolor=red](CircleTI1)(CircleTI2)
+\pcline[nodesep=-1cm,linecolor=red](CircleTI3)(CircleTI4)
+\psdots(CircleTC1)(CircleTC2)%
+ (CircleTO1)(CircleTO2)(CircleTO3)(CircleTO4)%
+ (CircleTI1)(CircleTI2)(CircleTI3)(CircleTI4)%
+\uput[0](CircleTC1){TC1}\uput[0](CircleTC2){TC2}
+\uput[-80](CircleTI1){TI1}\uput[115](CircleTI2){TI2}
+\uput[150](CircleTI3){TI3}\uput[-45](CircleTI4){TI4}
+\uput[-80](CircleTO1){TO1}\uput[150](CircleTO2){TO2}
+\uput[150](CircleTO3){TO3}\uput[-45](CircleTO4){TO4}
+\end{pspicture}
+
+\bigskip
+\begin{lstlisting}
+\begin{pspicture}[showgrid](-2,-2)(10,10)
+\pscircle(1,1){1}\pscircle(7,7){3}
+\psCircleTangents(1,1){1}(7,7){3}
+\pcline[nodesep=-1cm,linecolor=blue](CircleTO1)(CircleTO2)
+\pcline[nodesep=-1cm,linecolor=blue](CircleTO3)(CircleTO4)
+\pcline[nodesep=-1cm,linecolor=red](CircleTI1)(CircleTI2)
+\pcline[nodesep=-1cm,linecolor=red](CircleTI3)(CircleTI4)
+\psdots(CircleTC1)\psdots(CircleTC2)%
+ (CircleTO1)(CircleTO2)(CircleTO3)(CircleTO4)%
+ (CircleTI1)(CircleTI2)(CircleTI3)(CircleTI4)%
+\uput[0](CircleTC1){TC1}\uput[0](CircleTC2){TC2}
+\uput[-80](CircleTI1){TI1}\uput[115](CircleTI2){TI2}
+\uput[150](CircleTI3){TI3}\uput[-45](CircleTI4){TI4}
+\uput[-80](CircleTO1){TO1}\uput[150](CircleTO2){TO2}
+\uput[150](CircleTO3){TO3}\uput[-45](CircleTO4){TO4}
+\end{pspicture}
+\end{lstlisting}
+
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psEllipseTangents}: Calculating tangent lines of an ellipse}
+%--------------------------------------------------------------------------------------
+
+The macro calculates the two points on an ellipse where tangent lines from an outside point
+ are drawn.
+
+\begin{BDef}
+\Lcs{psEllipseTangents}\Largr{$x_0,y_0$}\Largr{$a,b$}\Largr{$x_p,y_p$}\\
+\end{BDef}
+
+The first two pairs of coordinates are the same as the ones for the default ellipse.
+The names of the calculates node names are \verb=EllipseT1=
+and \verb=EllipseT2=.
+
+\bigskip
+\begin{pspicture}[showgrid](0,3)(10,10)
+\psdot(2,4)\psellipse(7,7)(3,1.5)
+\psEllipseTangents(7,7)(3,1.5)(2,4)
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(EllipseT1)
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(EllipseT2)
+\psdots(EllipseT1)(EllipseT2)
+\uput[-80](EllipseT1){T1}\uput[115](EllipseT2){T2}
+\end{pspicture}
+
+
+\begin{lstlisting}
+\begin{pspicture}[showgrid](0,3)(10,10)
+\psdot(2,4)\psellipse(7,7)(3,1.5)
+\psEllipseTangents(7,7)(3,1.5)(2,4)
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(EllipseT1)
+\pcline[nodesep=-1cm,linecolor=blue](2,4)(EllipseT2)
+\psdots(EllipseT1)(EllipseT2)
+\uput[-80](EllipseT1){T1}\uput[115](EllipseT2){T2}
+\end{pspicture}
+\end{lstlisting}
+
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psrotate}: Rotating objects}
+%--------------------------------------------------------------------------------------
+\Lcs{rput} also has an optional argument for rotating objects, but
+it always depends on the \Lcs{rput} coordinates. With
+\Lcs{psrotate} the rotating center can be placed anywhere. The
+rotation is done with \verb+\pscustom+, all optional arguments are
+only valid if they are part of the \verb+\pscustom+ macro.
+
+\begin{BDef}
+\Lcs{psrotate}\OptArgs\Largr{$x,y$}\Largb{rot angle}\Largb{object}
+\end{BDef}
+
+\begin{LTXexample}[width=0.4\linewidth]
+\psset{unit=0.75}
+\begin{pspicture}(-0.5,-3.5)(8.5,4.5)
+ \psaxes{->}(0,0)(-0.5,-3)(8.5,4.5)
+ \psdots[linecolor=red,dotscale=1.5](2,1)
+ \psarc[linecolor=red,linewidth=0.4pt,showpoints=true]
+ {->}(2,1){3}{0}{60}
+ \pspolygon[linecolor=green,linewidth=1pt](2,1)(5,1.1)(6,-1)(2,-2)
+ \psrotate(2,1){60}{%
+ \pspolygon[linecolor=blue,linewidth=1pt](2,1)(5,1.1)(6,-1)(2,-2)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}(-1,-1)(3,6)
+\def\canne{% Idea by Manuel Luque
+ \psgrid[subgriddiv=0](-1,0)(1,5)
+ \pscustom[linewidth=2mm]{\psline(0,4)\psarcn(0.3,4){0.3}{180}{360}}%
+ \pscircle*(0.6,4){0.1}\pstriangle*(0,0)(0.2,-0.3)}
+\def\Object{}
+ \canne
+ \psrotate(0.3,4){45}{\psset{linecolor=red!50}\canne}
+ \psrotate(0.3,4){90}{\psset{linecolor=blue!50}\canne}
+ \psrotate(0.3,4){360}{\psset{linecolor=cyan!50}\canne}
+ \psdot[linecolor=red](0.3,4)
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(0,-6)(15,5)
+\def\majorette{\psline[linewidth=0.5mm](0,2)% Idea by Manuel Luque
+ \pscircle[fillstyle=solid]{0.1}
+ \pscircle[fillstyle=solid](0,2){0.1}}
+ \psaxes[linewidth=0.5pt]{->}(0,0)(0,-5)(15,5)
+ \pstVerb{/V0 10 def /Alpha 45 def}% vitesse initiale, angle de lancement
+ \multido{\nT=0.0+0.05,\iA=0+40}{41}{%
+ \pstVerb{/nT \nT\space def}%
+ \rput(!V0 Alpha cos mul nT mul -9.81 2 div nT dup mul mul V0 Alpha sin mul nT mul add){%
+ \psrotate(0,1){\iA}{\majorette\psdot[linecolor=red](0,1)\psdot[linecolor=green](0,2)}}}
+ \parametricplot[linecolor=red]{0}{2}{% trajectoire du milieu
+ V0 Alpha cos mul t mul -9.81 2 div t dup mul mul V0 Alpha sin mul t mul add 1 add}
+ \parametricplot[linecolor=green,plotpoints=360]{0}{2}{% d'une extremite
+ V0 Alpha cos mul t mul 800 t mul sin sub % x(t)
+ -9.81 2 div t dup mul mul V0 Alpha sin mul t mul add 1 add 800 t mul cos add }%y(t)
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psComment}: comments to a graphic}
+%--------------------------------------------------------------------------------------
+
+\begin{BDef}
+\LcsStar{psComment}\OptArgs\OptArg*{\Largb{arrows}}\coord0\coord1\Largb{Text}\OptArg{line macro}\OptArg{put macro}
+\end{BDef}
+
+By default the macro uses the \Lcs{ncline} macro to draw a line from the first to the
+second point, it can be changed with the first additional optional argument. The label is
+put by default with \Lcs{rput}, which can be changed with the last optional argument.
+If this is used, then the line macro has also be defined, eg \verb+\psComment(A)(B){text}[\ncarc][\ncput}+
+At least, leave the argument empty.
+
+
+\begin{LTXexample}[pos=t,wide]
+\SpecialCoor\newpsstyle{weiss}{fillstyle=solid,fillcolor=white}
+\footnotesize\psset{unit=0.5cm,dimen=middle}
+\begin{pspicture}(-12,-4)(6,10)
+\psframe*[linecolor=black!20](-5,-3)(5,7) \psframe*[linecolor=black!40](-5,3)(5,6)
+\pscircle(-8.19,5.51){0.2}
+\psframe[fillcolor=white,fillstyle=solid](-5.8,3.6)(4.3,5.8)
+\psframe(-8.98,3.14)(-5.8,6.32)
+\multido{\rA=-4.1+1.3}{5}{\rput(\rA,-2.4){\psframe[style=weiss](1.1,6)
+ \psline(0,0)(1.1,0.5)(0,1)(1.1,1.6)(0,2.2)(1.1,2.7)(0,3.2)(1.1,3.2)}}
+\pspolygon*(-4.1,3.7)(-4.1,3)(-3,3)(-3.01,3.7)(-3.54,4.19)
+\pspolygon*(1.09,3.7)(1.1,3)(2.2,3)(2.18,3.7)(1.65,4.24)
+\pspolygon*(-2.78,3.7)(-2.8,3)(-1.7,3)(-1.71,3.7)(-2.27,4.04)
+\pspolygon*(-1.51,3.7)(-1.5,3)(-0.4,3)(-0.41,3.7)(-1.02,4.17)
+\pspolygon*(-0.21,3.7)(-0.2,3)(0.9,3)(0.89,3.7)(0.3,4.04)
+\psline(-5,3.83)(-4.15,3.86)(-3.5,4.3)(-2.85,3.81)(-2.22,4.21)(-1.6,3.86)(-0.99,4.33)
+ (-0.28,3.83)(0.35,4.19)(0.97,3.83)(1.65,4.39)(2.2,4.01)(3.57,4.89)(2.41,5.8)
+ \psline(-5,5.8)(-5.78,5.8) \psline(-5.78,5.47)(2.85,5.47)
+ \psline(-5.8,3.52)(-5,3.5) \psline(3.57,4.89)(-5.8,4.89)
+ \psComment*[ref=r]{->}(-8.14,1.19)(-4.31,3.27){Mantelstift}
+ \psComment*[ref=r]{->}(-8.17,-0.56)(-4.37,1.59){Kernstift}[\ncarc]
+ \psComment*[ref=r]{->}(-7.91,-2.24)(-4.44,-0.23){Feder}[\ncarc]
+ \psComment[npos=-0.1]{->}(-3.48,8.72)(-1.33,5.46){Nur f\"ur Profil}
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psChart}: a pie chart}
+%--------------------------------------------------------------------------------------
+
+\begin{BDef}
+\Lcs{psChart}\OptArgs\Largb{comma separated value list}\Largb{comma separated value list}\Largb{radius}
+\end{BDef}
+
+The special optional arguments for the \Lcs{psChart} macro are as follows:
+
+\noindent
+\begin{tabularx}{\linewidth}{@{}>{\ttfamily}lX>{\ttfamily}l@{}}
+\textrm{\emph{name}} & \textrm{\emph{description}} & \textrm{\emph{default}}\\\hline
+\Lkeyword{chartSep} & distance from the pie chart center to an outraged pie piece & 10pt\\
+\Lkeyword{chartColor} & gray or colored pie (values are: \texttt{gray} or \texttt{color})& gray\\
+\Lkeyword{userColor} & a comma separated list of user defined colors for the pie & \{\}\\
+\Lkeyword{chartNodeI}& the position of the inner node, relative to the radius & 0.75\\
+\Lkeyword{chartNodeO}& the position of the outer node, relative to the radius & 1.5
+\end{tabularx}
+
+\bigskip
+The first mandatory argument is the list of the values and may not be empty. The second
+one is a list of outraged pieces, numbered consecutively from 1 to up the total number
+of values. The list of user defined colors must be enclosed in braces!
+
+The macro \Lcs{psChart} defines for every value three nodes at the half angle and
+in distances from 0.75, 1, and 1.25 times of the radius from the origin. The nodes
+are named as \verb+psChartI?+, \verb+psChart?+, and \verb+psChartO?+, where ? is the number of
+the pie. The letter I leads to the inner node and the letter O to the outer node.
+The distance can be changed with the optional arguments \Lkeyword{chartNodeI} and
+\Lkeyword{chartNodeO} in the usual way with \verb+\psset{chartNodeI=...,chartNodeO=...}+.
+
+The other one is the node on the circle line.
+The origin is by default \texttt{(0,0)}. Moving the pie to another position can be done as
+usual with the \Lcs{rput}-macro. The used colors are named internally as \Lkeyword{chartFillColor?}
+and can be used by the user for coloring lines or text.
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}(-3,-3)(3,3)
+\psChart{ 23, 29, 3, 26, 28, 14 }{}{2}
+\multido{\iA=1+1}{6}{%
+ \psdot(psChart\iA)\psdot(psChartI\iA)\psdot(psChartO\iA)%
+ \psline[linestyle=dashed,linecolor=white](psChart\iA)
+ \psline[linestyle=dashed](psChart\iA)(psChartO\iA)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}(-3,-3)(3,3)
+\psChart[chartColor=color]{45,90}{1}{2}
+\ncline[linecolor=-chartFillColor1,
+ nodesepB=-20pt]{psChartO1}{psChart1}
+\rput[l](psChartO1){%
+ \textcolor{chartFillColor1}{pie no 1}}
+\ncline[linecolor=-chartFillColor2,
+ nodesepB=-20pt]{psChartO2}{psChart2}
+\rput[lt](psChartO2){%
+ \textcolor{chartFillColor2}{pie no 2}}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=7.5cm]
+\psframebox[fillcolor=black!20,
+ fillstyle=solid]{%
+\begin{pspicture}(-3.5,-3.5)(4.25,3.5)
+\psChart[chartColor=color]%
+ {23, 29, 3, 26, 28, 14, 17, 4, 9}{}{2}
+\multido{\iA=1+1}{9}{%
+ \ncline[linecolor=-chartFillColor\iA,
+ nodesepB=-10pt]{psChartO\iA}{psChart\iA}
+ \rput[l](psChartO\iA){%
+ \textcolor{chartFillColor\iA}{pie no \iA}}}
+\end{pspicture}}
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}(-3,-3)(3,3)
+\psChart[userColor={red!30,green!30,
+ blue!40,gray,magenta!60,cyan}]%
+ { 23, 29, 3, 26, 28, 14 }{1,4}{2}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm]
+\begin{pspicture}(-3,-2.5)(3,2.5)
+\psChart{ 23, 29, 3, 26, 28, 14 }{}{2}
+\multido{\iA=1+1}{6}{\rput*(psChartI\iA){\iA}}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+
+%\begin{LTXexample}[pos=t]
+\psset{unit=1.5}
+\begin{pspicture}(-3,-3)(3,3)
+\psChart[userColor={red!30,green!30,blue!40,gray,cyan!50,
+ magenta!60,cyan},chartSep=30pt,shadow=true,shadowsize=5pt]{34.5,17.2,20.7,15.5,5.2,6.9}{6}{2}
+\psset{nodesepA=5pt,nodesepB=-10pt}
+\ncline{psChartO1}{psChart1}\nput{0}{psChartO1}{1000 (34.5\%)}
+\ncline{psChartO2}{psChart2}\nput{150}{psChartO2}{500 (17.2\%)}
+\ncline{psChartO3}{psChart3}\nput{-90}{psChartO3}{600 (20.7\%)}
+\ncline{psChartO4}{psChart4}\nput{0}{psChartO4}{450 (15.5\%)}
+\ncline{psChartO5}{psChart5}\nput{0}{psChartO5}{150 (5.2\%)}
+\ncline{psChartO6}{psChart6}\nput{0}{psChartO6}{200 (6.9\%)}
+\bfseries%
+\rput(psChartI1){Taxes}\rput(psChartI2){Rent}\rput(psChartI3){Bills}
+\rput(psChartI4){Car}\rput(psChartI5){Gas}\rput(psChartI6){Food}
+\end{pspicture}
+%\end{LTXexample}
+\psset{unit=1cm}
+
+\begin{lstlisting}
+\psset{unit=1.5}
+\begin{pspicture}(-3,-3)(3,3)
+\psChart[userColor={red!30,green!30,blue!40,gray,cyan!50,
+ magenta!60,cyan},chartSep=30pt,shadow=true,shadowsize=5pt]{34.5,17.2,20.7,15.5,5.2,6.9}{6}{2}
+\psset{nodesepA=5pt,nodesepB=-10pt}
+\ncline{psChartO1}{psChart1}\nput{0}{psChartO1}{1000 (34.5\%)}
+\ncline{psChartO2}{psChart2}\nput{150}{psChartO2}{500 (17.2\%)}
+\ncline{psChartO3}{psChart3}\nput{-90}{psChartO3}{600 (20.7\%)}
+\ncline{psChartO4}{psChart4}\nput{0}{psChartO4}{450 (15.5\%)}
+\ncline{psChartO5}{psChart5}\nput{0}{psChartO5}{150 (5.2\%)}
+\ncline{psChartO6}{psChart6}\nput{0}{psChartO6}{200 (6.9\%)}
+\bfseries%
+\rput(psChartI1){Taxes}\rput(psChartI2){Rent}\rput(psChartI3){Bills}
+\rput(psChartI4){Car}\rput(psChartI5){Gas}\rput(psChartI6){Food}
+\end{pspicture}
+\end{lstlisting}
+
+
+The linecolor of the pies is by default identical to the fillcolor. If you want another line color
+for all pies then use the optional argument \Lkeyword{uselinecolor}. In this case the current
+setting of \Lkeyword{linecolor} is taken into account:
+
+
+%\begin{LTXexample}[pos=t]
+\psset{unit=1.5}
+\begin{pspicture}(-3,-3)(3,3)
+\psChart[chartSep=30pt,shadow=true,shadowsize=5pt,
+ uselinecolor,linecolor=black!20]{34.5,17.2,20.7,15.5,5.2,6.9}{6}{2}
+\psset{nodesepA=5pt,nodesepB=-10pt}
+\ncline{psChartO1}{psChart1}\nput{0}{psChartO1}{1000 (34.5\%)}
+\ncline{psChartO2}{psChart2}\nput{150}{psChartO2}{500 (17.2\%)}
+\ncline{psChartO3}{psChart3}\nput{-90}{psChartO3}{600 (20.7\%)}
+\ncline{psChartO4}{psChart4}\nput{0}{psChartO4}{450 (15.5\%)}
+\ncline{psChartO5}{psChart5}\nput{0}{psChartO5}{150 (5.2\%)}
+\ncline{psChartO6}{psChart6}\nput{0}{psChartO6}{200 (6.9\%)}
+\bfseries\color{white}%
+\rput(psChartI1){Taxes}\rput(psChartI2){Rent}\rput(psChartI3){Bills}
+\rput(psChartI4){Car}\rput(psChartI5){Gas}\rput(psChartI6){Food}
+\end{pspicture}
+%\end{LTXexample}
+\psset{unit=1cm}
+
+\begin{lstlisting}
+\psset{unit=1.5}
+\begin{pspicture}(-3,-3)(3,3)
+\psChart[chartSep=30pt,shadow=true,shadowsize=5pt,
+ uselinecolor,linecolor=black!20]{34.5,17.2,20.7,15.5,5.2,6.9}{6}{2}
+\psset{nodesepA=5pt,nodesepB=-10pt}
+\ncline{psChartO1}{psChart1}\nput{0}{psChartO1}{1000 (34.5\%)}
+\ncline{psChartO2}{psChart2}\nput{150}{psChartO2}{500 (17.2\%)}
+\ncline{psChartO3}{psChart3}\nput{-90}{psChartO3}{600 (20.7\%)}
+\ncline{psChartO4}{psChart4}\nput{0}{psChartO4}{450 (15.5\%)}
+\ncline{psChartO5}{psChart5}\nput{0}{psChartO5}{150 (5.2\%)}
+\ncline{psChartO6}{psChart6}\nput{0}{psChartO6}{200 (6.9\%)}
+\bfseries\color{white}%
+\rput(psChartI1){Taxes}\rput(psChartI2){Rent}\rput(psChartI3){Bills}
+\rput(psChartI4){Car}\rput(psChartI5){Gas}\rput(psChartI6){Food}
+\end{pspicture}
+\end{lstlisting}
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psHomothetie}: central dilatation}
+%--------------------------------------------------------------------------------------
+
+\begin{BDef}
+\Lcs{psHomothetie}\OptArgs\Largr{center}\Largb{factor}\Largb{object}
+\end{BDef}
+
+\begin{LTXexample}[width=9cm]
+\begin{pspicture}[showgrid=true](-5,-4)(4,8)
+\psBill% needs package pst-fun
+\psHomothetie[linecolor=blue](4,-3){2}{\psBill}
+\psdots[dotsize=3pt,linecolor=red](4,-3)
+\psplot[linestyle=dashed,linecolor=red]{-5}{4}%
+ [ /m -3 -0.85 sub 4 0.6 sub div def ]
+ { m x mul m 4 mul sub 3 sub }%
+\psHomothetie[linecolor=green](4,-3){-0.2}{\psBill}
+\end{pspicture}
+\end{LTXexample}
+
+%\pstVerb{ /m -3 -0.85 sub 4 0.6 sub div def }
+
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psbrace}}
+%--------------------------------------------------------------------------------------
+\begin{BDef}
+\LcsStar{psbrace}\OptArgs\Largr{A}\Largr{B}\Largb{text}
+\end{BDef}
+
+Additional to all other available options from \LPack{pstricks} or the other
+related packages, there are two new option, named \Lkeyword{braceWidth} and
+\Lkeyword{bracePos}. All important ones are shown in the following graphics
+and table.
+
+\begin{center}
+\begin{pspicture}[showgrid=true](10,5)
+ \psbrace[braceWidth=1cm,braceWidthInner=1cm,
+ braceWidthOuter=1cm,bracePos=0.6,fillcolor=white,
+ nodesepA=10mm,nodesepB=10mm](0,5)(10,5){\fbox{Label}}
+\pcline{<->}(3,3)(3,4)\ncput*{\footnotesize\ttfamily braceWidth}
+\pcline{<->}(3,4)(3,5)\ncput*{\footnotesize\ttfamily braceWidthInner}
+\pcline{<->}(3,2)(3,3)\ncput*{\footnotesize\ttfamily braceWidthOuter}
+\pcline{<->}(6,1)(6,2)\ncput{\footnotesize\ttfamily nodesepB}
+\pcline{<->}(6,1)(7,1)\ncput*{\footnotesize\ttfamily A}
+\pcline{<->}(0,0.5)(6,0.5)\ncput*{\footnotesize\ttfamily bracePos}
+\psdot[dotscale=2](0,5)\uput[0](0,5){\textbf{A}}
+\psdot[dotscale=2](10,5)\uput[180](10,5){\textbf{B}}
+\end{pspicture}
+\end{center}
+
+A positive value for \Lkeyword{nodesepA} and \Lkeyword{nodesepB} shifts the label to the upper right
+and a negative value to the lower left. This does not depends on
+the value for the rotating of the label!
+
+\begin{center}
+\begin{tabular}{@{}l|l@{}}
+name & meaning\\\hline
+\Lkeyword{braceWidth} & default is \Lcs{pslinewidth}\\
+\Lkeyword{braceWidthInner} & default is \verb+10\pslinewidth+\\
+\Lkeyword{braceWidthOuter} & default is \verb+10\pslinewidth+\\
+\Lkeyword{bracePos} & relative position (default is $0.5$)\\
+\Lkeyword{nodesepA} & x-separation (default is $0pt$)\\
+\Lkeyword{nodesepB} & y-separation (default is $0pt$)\\
+\Lkeyword{rot} & additional rotating for the text (default is $0$)\\
+\Lkeyword{ref} & reference point for the text (default is c)\\
+\Lkeyword{fillcolor} & default is black
+\end{tabular}
+\end{center}
+
+By default the text is written perpendicular to the brace line and
+can be changed with the \LPack{pstricks} option \Lkeyword{rot}=\ldots\ The
+text parameter can take any object and may also be empty. The
+reference point can be any value of the combination of \Lkeyval{l}
+(left) or \Lkeyval{r} (right) and \Lkeyval{b} (bottom) or \Lkeyval{B}
+(Baseline) or \Lkeyval{C} (center) or \Lkeyval{t} (top), where the
+default is \Lkeyval{c}, the center of the object.
+
+
+
+\begin{LTXexample}[width=4.5cm]
+\begin{pspicture}(4,4)
+\psgrid[subgriddiv=0,griddots=10]
+\pnode(0,0){A}
+\pnode(4,4){B}
+\psbrace[linecolor=red,ref=lC](A)(B){Text I}
+\psbrace*[linecolor=blue,ref=lC](3,4)(0,1){Text II}
+\psbrace[fillcolor=white](3,0)(3,4){III}
+\end{pspicture}
+\end{LTXexample}
+
+\bigskip
+The option \Lcs{specialCoor} is enabled, so that all types of coordinates
+are possible, (nodename), ($x,y$), ($nodeA|nodeB$), \ldots
+The star version fills the inner of the \Index{brace} with the current linecolor.
+With the fillcolor \verb+white+ or any other background color the brace can
+be "`unfilled"'.
+
+\begin{LTXexample}
+\begin{pspicture}(8,2.5)
+\psbrace(0,0)(0,2){\fbox{Text}}%
+\psbrace[nodesepA=10pt](2,0)(2,2){\fbox{Text}}
+\psbrace[ref=lC](4,0)(4,2){\fbox{Text}}
+\psbrace[ref=lt,rot=90,nodesepB=-15pt](6,0)(6,2){\fbox{Text}}
+\psbrace[ref=lt,rot=90,nodesepA=-5pt,nodesepB=15pt](8,2)(8,0){\fbox{Text}}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}
+\def\someMath{$\int\limits_1^{\infty}\frac{1}{x^2}\,dx=1$}
+\begin{pspicture}(8,2.5)
+\psbrace[ref=lC](0,0)(0,2){\someMath}%
+\psbrace[rot=90](2,0)(2,2){\someMath}
+\psbrace[ref=lC](4,0)(4,2){\someMath}
+\psbrace[ref=lt,rot=90,nodesepB=-30pt](6,0)(6,2){\someMath}
+\psbrace[ref=lt,rot=90,nodesepB=30pt](8,2)(8,0){\someMath}
+\end{pspicture}
+\end{LTXexample}
+
+%$
+
+\begin{LTXexample}
+\begin{pspicture}(\linewidth,5)
+\psbrace(0,0.5)(\linewidth,0.5){\fbox{Text}}%
+\psbrace[bracePos=0.25,nodesepB=10pt,rot=90](0,2)(\linewidth,2){\fbox{Text}}
+\psbrace[ref=lC,nodesepA=-3.5cm,nodesepB=15pt,rot=90](0,4)(\linewidth,4){%
+ \fbox{some very, very long wonderful Text}}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[width=8cm]
+\psset{unit=0.8}
+\begin{pspicture}(10,11)
+\psgrid[subgriddiv=0,griddots=10]
+\pnode(0,0){A}
+\pnode(4,6){B}
+\psbrace[ref=lC](A)(B){One}
+\psbrace[rot=180,nodesepA=-5pt,ref=rb](B)(A){Two}
+\psbrace[linecolor=blue,bracePos=0.25,ref=lB](8,1)(1,7){Three}
+\psbrace[braceWidth=-1mm,rot=180,ref=rB](8,1)(1,7){Four}
+\psbrace*[linearc=0.5,fillstyle=none,linewidth=1pt,braceWidth=1.5pt,
+ bracePos=0.25,ref=lC](8,1)(8,9){A}
+\psbrace(4,9)(6,9){}
+\psbrace(6,9)(6,7){}
+\psbrace(6,7)(4,7){}
+\psbrace(4,7)(4,9){}
+\psset{linecolor=red}
+\psbrace*[ref=lb](7,10)(3,10){I}
+\psbrace*[ref=lb,bracePos=0.75](3,10)(3,6){II}
+\psbrace*[ref=lb](3,6)(7,6){III}
+\psbrace*[ref=lb](7,6)(7,10){IV}
+\end{pspicture}
+\end{LTXexample}
+
+%$
+
+\begin{LTXexample}[width=5cm]
+\[
+\begin{pmatrix}
+ \Rnode[vref=2ex]{A}{~1} \\
+ & \ddots \\
+ && \Rnode[href=2]{B}{1} \\
+ &&& \Rnode[vref=2ex]{C}{0} \\
+ &&&& \ddots \\
+ &&&&& \Rnode[href=2]{D}{0}~ \\
+\end{pmatrix}
+\]
+\psbrace[rot=-90,nodesepB=-0.5,nodesepA=-0.2](B)(A){\small n times}
+\psbrace[rot=-90,nodesepB=-0.5,nodesepA=-0.2](D)(C){\small n times}
+\end{LTXexample}
+
+
+\clearpage
+It is also possible to put a vertical brace around a
+default paragraph. This works by setting two invisible nodes at
+the beginning and the end of the paragraph. Indentation is
+possible with a minipage.
+
+\small
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\noindent\rnode{A}{}
+
+\vspace*{-1ex}
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\vspace*{-2ex}\noindent\rnode{B}{}\psbrace*[linecolor=red](A)(B){}
+
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\medskip\hfill\begin{minipage}{0.95\linewidth}
+\noindent\rnode{A}{}
+
+\vspace*{-1ex}
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\vspace*{-2ex}
+\noindent\rnode{B}{}\psbrace[linecolor=red](A)(B){}
+\end{minipage}
+
+\normalsize
+
+\begin{lstlisting}
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\noindent\rnode{A}{}
+
+\vspace*{-1ex}
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\vspace*{-2ex}\noindent\rnode{B}{}\psbrace[linecolor=red](A)(B){}
+
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\medskip\hfill\begin{minipage}{0.95\linewidth}
+\noindent\rnode{A}{}
+
+\vspace*{-1ex}
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+Some nonsense text, which is nothing more than nonsense.
+
+\vspace*{-2ex}\noindent\rnode{B}{}\psbrace[linecolor=red](A)(B){}
+\end{minipage}
+\end{lstlisting}
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{Contour plots}
+%--------------------------------------------------------------------------------------
+Contour plots are 2D-images but representing 3D data. The color is the representation of
+the z coordinate.
+It is only possible to plot data files which must have the following
+structure:
+\begin{verbatim}
+/contourdata [[
+x y z
+x y z
+][
+x y z
+...
+][
+...
+] def
+\end{verbatim}
+it is an PostScript array of array. The Perl script \url{http://tug.org/pstricks/pst-plot/3D/MakeData.pl}
+allows to plot a file of the 3D-data of a mathematical function $z=f(x,y)$ and the Perl script
+\url{http://tug.org/pstricks/pst-plot/3D/PrepareData.pl} prepares the data file
+into the above structure for using it with the example file.
+
+\begin{LTXexample}[pos=t]
+\psset{unit=1.75cm}
+\begin{pspicture}[showgrid](-3,-3)(3,3)
+\pstContour[colored]{data/contourN.data}
+\end{pspicture}
+\end{LTXexample}
+
+\emph{Important} is the option \verb|-dNOSAFER| for the \texttt{ps2pdf} run, otherwise Ghostscript
+didn't allow the run of external data files. Important optional arguments are
+\Lkeyword{colored}, \Lkeyword{colorOffset}, and \Lkeyword{colSteps}.
+
+%--------------------------------------------------------------------------------------
+\section{Random dots}
+%--------------------------------------------------------------------------------------
+The syntax of the new macro \Lcs{psRandom} is:
+
+\begin{BDef}
+\Lcs{psRandom}\OptArgs\Largb{}\\
+\Lcs{psRandom}\OptArgs\OptArg*{\Largr{$x_{Min},y_{Min}$}}\OptArg*{\Largr{$x_{Max},y_{Max}$}}\Largb{clip path} %$ \\
+\Lcs{psRandomPointArea}\OptArgs\Largb{No dots}\Largb{function}\\
+%\psRandom[<option>](<xMax,yMax>){<clip path>}
+%\psRandom[<option>](<xMin,yMin>)(<xMax,yMax>){<clip path>}
+\end{BDef}
+
+
+\subsection{Simple random dots}
+
+
+If there is no area for the dots defined, then \verb+(0,0)(1,1)+ in the current
+scale setting is used for placing the dots. If there is only one \Largr{$x_{Max},y_{Max}$} %$
+defined, then \verb+(0,0)+ is used for the other point.
+This area should be greater than the clipping
+path to be sure that the dots are placed over the full area. The clipping path can
+be everything. If no clipping path is given, then the frame \verb+(0,0)(1,1)+
+in user coordinates is used. The new options are:
+
+\begin{center}
+\begin{tabular}{@{}l|l|l@{}}
+name & default\\\hline
+\Lkeyword{randomPoints} & \verb|1000| & number of random dots\tabularnewline
+\Lkeyword{randInit} & \verb|rrand| & initial value for the generator\tabularnewline
+\Lkeyword{color} & \false & random color\tabularnewline
+\end{tabular}
+\end{center}
+
+
+\begin{LTXexample}[width=0.3\linewidth]
+\psset{unit=5cm}
+\begin{pspicture}(1,1)
+ \psRandom[dotsize=1pt,fillstyle=solid](1,1){\pscircle(0.5,0.5){0.5}}
+\end{pspicture}
+\begin{pspicture}(1,1)
+ \psRandom[randInit=42,dotsize=2pt,randomPoints=5000,color,%
+ fillstyle=solid](1,1){\pscircle(0.5,0.5){0.5}}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=0.4\linewidth]
+\psset{unit=5cm}
+\begin{pspicture}(1,1)
+ \psRandom[randomPoints=200,dotsize=8pt,dotstyle=+]{}
+\end{pspicture}
+\begin{pspicture}(1.5,1)
+ \psRandom[dotsize=5pt,color](0,0)(1.5,0.8){\psellipse(0.75,0.4)(0.75,0.4)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}
+\psset{unit=2.5cm}
+\begin{pspicture}(0,-1)(3,1)
+ \psRandom[dotsize=4pt,dotstyle=o,linecolor=blue,fillcolor=red,%
+ fillstyle=solid,randomPoints=1000]%
+ (0,-1)(3,1){\psplot{0}{3.14}{ x 114 mul sin }}
+\end{pspicture}
+\end{LTXexample}
+
+\psset{unit=1cm}
+
+
+\subsection{Simple random dots devided by a function}
+
+The predefined colors are blue (lower part) and red (upper part).
+\begin{LTXexample}[pos=t]
+\psset{unit=6cm}
+\begin{pspicture}(-0.2,-0.1)(1.1,1.2)
+\psaxes[linewidth=1.25pt,Dx=0.2,Dy=0.2,
+ labelFontSize=\scriptstyle,ticksize=0 1,subticks=2,
+ subticksize=1,tickwidth=1pt,tickcolor=black!30,subtickcolor=black!20](0,0)(1,1)%
+\psRandomPointArea[radius=1.5pt,countDots,algebraic,
+ fillcolorA=black,fillcolorB=green]{30}{sqrt(1-x^2)}%
+\psplot[plotpoints=200]{0}{1}{1 x dup mul sub sqrt}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t]
+\psset{unit=6cm}
+\begin{pspicture}(-0.2,-0.1)(1.1,1.2)
+\psaxes[linewidth=1.25pt,Dx=0.2,Dy=0.2,
+ labelFontSize=\scriptstyle,ticksize=0 1,subticks=2,
+ subticksize=1,tickwidth=1pt,tickcolor=black!30,subtickcolor=black!20](0,0)(1,1)%
+\psRandomPointArea[algebraic]{300}{-4*(x^2-x)}%
+\psplot[plotpoints=200,algebraic]{0}{1}{-4*(x^2-x)}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\clearpage
+ %--------------------------------------------------------------------------------------
+\section{\nxLcs{psDice}}
+ %--------------------------------------------------------------------------------------
+\Lcs{psdice} creates the view of a dice. The number on the dice is the only parameter.
+The optional parameters, like the color can be used as usual. The macro is a box of
+dimension zero and is placed
+at the current point. Use the \Lcs{rput} macro to place it anywhere. The optional
+argument \Lkeyword{unit} can be used to scale the dice. the default size of
+the dice $1\mathrm{cm}\times1\mathrm{cm}$.
+
+\begin{center}
+\begin{pspicture}(-1,-1)(8,9)
+\multido{\iA=1+1}{6}{%
+ \rput(\iA,7.5){\Huge\psdice[unit=0.75,linecolor=red!80]{\iA}}
+ \rput(! -0.5 7 \iA\space sub){\Huge\psdice[unit=0.75,linecolor=blue!70]{\iA}}%
+ \multido{\iB=1+1}{6}{%
+ \rput(! \iA\space 7 \iB\space sub){%
+ \rnode[c]{p\iA\iB}{\makebox[1em][l]{\strut\psPrintValue[fontscale=12]{\iA\space \iB\space add}}}%
+}}}
+\ncbox[linearc=0.35,nodesep=0.2,linestyle=dotted]{p11}{p66}
+\ncbox[linearc=0.35,nodesep=0.2,linestyle=dashed]{p15}{p51}
+\rput{90}(-1.5,3.5){1. dice}
+\rput{0}(3.5,8.5){2. dice}
+\psline[linewidth=1.5pt](0.25,0.5)(0.25,8)
+\psline[linewidth=1.5pt](-1,6.75)(6.5,6.75)
+\end{pspicture}
+\end{center}
+
+\begin{lstlisting}
+\begin{pspicture}(-1,-1)(8,8)
+\multido{\iA=1+1}{6}{%
+ \rput(\iA,7.5){\Huge\psdice[unit=0.75,linecolor=red!80]{\iA}}
+ \rput(! -0.5 7 \iA\space sub){\Huge\psdice[unit=0.75,linecolor=blue!70]{\iA}}%
+ \multido{\iB=1+1}{6}{%
+ \rput(! \iA\space 7 \iB\space sub){%
+ \rnode[c]{p\iA\iB}{\makebox[1em][l]{\strut\psPrintValue[fontscale=12]{\iA\space \iB\space add}}}%
+}}}
+\ncbox[linearc=0.35,nodesep=0.2,linestyle=dotted]{p11}{p66}
+\ncbox[linearc=0.35,nodesep=0.2,linestyle=dashed]{p15}{p51}
+\rput{90}(-1.5,3.5){1. dice}
+\rput{0}(3.5,8.5){2. dice}
+\psline[linewidth=1.5pt](0.25,0.5)(0.25,8)
+\psline[linewidth=1.5pt](-1,6.75)(6.5,6.75)
+\end{pspicture}
+\end{lstlisting}
+
+
+\clearpage
+\section{Olympic Rings}
+The colors for the Rings are defined as \LColor{OlympicBlue}, \LColor{OlympicRed}, \LColor{OlympicGreen},
+and \LColor{OlympicYellow} and can be overwritten by the user. The only valid optional argument
+is \Lkeyword{psscale} for scaling.
+
+\begin{BDef}
+\Lcs{psOlympicRings}\OptArgs\coord1
+\end{BDef}
+
+\resetOptions
+\psset{unit=1cm,doubleline=false,linearc=0,psscale=1}
+
+\includegraphics{data/olympic}
+
+\begin{lstlisting}
+\begin{pspicture}(-4.5,-3)(4.5,1.5)
+\psOlympicRings(0,0)
+\psOlympicRings[psscale=0.2](1.5,-1.5)
+\psOlympicRings[psscale=0.2](-1.5,-1.5)
+\psOlympicRings[psscale=0.2](0,0.5)
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psFormatInt}}
+%--------------------------------------------------------------------------------------
+There exist some packages and a lot of code to format an integer like $1\,000\,000$
+or $1,234,567$ (in Europe $1.234.567$). But all packages expect a real number as
+argument and cannot handle macros as an argument. For this case \LPack{pstricks-add}
+has a macro \Lcs{psFormatInt} which can handle both:
+
+\begin{LTXexample}[width=3cm]
+\psFormatInt{1234567}\\
+\psFormatInt[intSeparator={,}]{1234567}\\
+\psFormatInt[intSeparator=.]{1234567}\\
+\psFormatInt[intSeparator=$\cdot$]{1234567}\\
+\def\temp{965432}
+\psFormatInt{\temp}
+\end{LTXexample}
+
+With the option \Lkeyword{intSeparator} the symbol can be changed to any any non-number character.
+
+
+\clearpage
+
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psRelLine}}
+%--------------------------------------------------------------------------------------
+With this macro it is possible to plot lines relative to a given one. Parameter are
+the angle and the length factor:
+
+\begin{BDef}
+\Lcs{psRelLine}\Largr{P0}\Largr{P1}\Largb{length factor}\Largb{<end node name>}\\
+\Lcs{psRelLine}\OptArg{\Largb{arrows}}\Largr{P0}\Largr{P1}\Largb{length factor}\Largb{end node name}\\
+\Lcs{psRelLine}\OptArgs\Largr{P0}\Largr{P1}\Largb{length factor}\Largb{end node name}\\
+\Lcs{psRelLine}\OptArgs\OptArg{\Largb{arrows}}\Largr{P0}\Largr{P1}\Largb{length factor}\Largb{end node name}
+\end{BDef}
+
+The length factor relates to the distance $\overline{P_0P_1}$ and
+the end node name must be a valid nodename and shouldn't contain
+any of the special PostScript characters. There are two valid
+options which are described in the foregoing section for
+\Lcs{psRelNode}.
+
+The following two figures show the same, the first one with a scaling different to $1:1$,
+this is the reason why the end points are on an ellipse and not on a circle like in the
+second figure.
+
+\begin{LTXexample}[width=5cm]
+\psset{yunit=2,xunit=1}
+\begin{pspicture}(-2,-2)(3,2)
+\psgrid[subgriddiv=2,subgriddots=10,gridcolor=lightgray]
+\pnode(-1,0){A}\pnode(3,2){B}
+\psline[linecolor=red](A)(B)
+\psRelLine[linecolor=blue,angle=30](-1,0)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=blue,angle=-30](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=magenta,angle=90](-1,0)(3,2){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=magenta,angle=-90](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=5cm]
+\begin{pspicture}(-2,-2)(3,2)
+\psgrid[subgriddiv=2,subgriddots=10,gridcolor=lightgray]
+\pnode(-1,0){A}\pnode(3,2){B}
+\psline[linecolor=red](A)(B)
+\psarc[linestyle=dashed](A){2.23}{-90}{135}
+\psRelLine[linecolor=blue,angle=30](-1,0)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=blue,angle=-30](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=magenta,angle=90](-1,0)(3,2){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=magenta,angle=-90](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\end{pspicture}
+\end{LTXexample}
+
+\medskip
+The following figure has also a different scaling, but has set the
+option \Lkeyword{trueAngle}, all angles refer to "what you see".
+
+\begin{LTXexample}[width=6.5cm]
+\psset{yunit=2,xunit=1}
+\begin{pspicture}(-3,-1)(3,2)\psgrid[subgridcolor=lightgray]
+\pnode(-1,0){A}\pnode(3,2){B}
+\psline[linecolor=red](A)(B)
+\psarc(A){2.83}{-45}{135}
+\psRelLine[linecolor=blue,angle=30,trueAngle](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=blue,angle=-30,trueAngle](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=magenta,angle=90,trueAngle](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\psRelLine[linecolor=magenta,angle=-90,trueAngle](A)(B){0.5}{EndNode}
+\qdisk(EndNode){2pt}
+\end{pspicture}
+\end{LTXexample}
+
+\medskip
+Two examples using \verb+\multido+ to show the behaviour of the
+options \verb+trueAngle+ and \verb+angle+.
+
+\medskip
+\begin{LTXexample}[width=8cm]
+\psset{yunit=4,xunit=2}
+\begin{pspicture}(-1,0)(3,2)\psgrid[subgridcolor=lightgray]
+\pnode(-1,0){A}\pnode(1,1){B}
+\psline[linecolor=red](A)(3,2)
+\multido{\iA=0+10}{36}{%
+ \psRelLine[linecolor=blue,angle=\iA](B)(A){-0.5}{EndNode}
+ \qdisk(EndNode){2pt}
+}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=8cm]
+\psset{yunit=4,xunit=2}
+\begin{pspicture}(-1,0)(3,2)\psgrid[subgridcolor=lightgray]
+\pnode(-1,0){A}\pnode(1,1){B}
+\psline[linecolor=red](A)(3,2)
+\multido{\iA=0+10}{36}{%
+ \psRelLine[linecolor=magenta,angle=\iA,trueAngle]{->}(B)(A){-0.5}{EndNode}
+}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{center}
+\bgroup
+\psset{xunit=0.75\linewidth,yunit=0.75\linewidth,trueAngle}%
+\begin{pspicture}(1,0.6)%\psgrid
+ \pnode(.3,.35){Vk} \pnode(.375,.35){D} \pnode(0,.4){DST1} \pnode(1,.18){DST2}
+ \pnode(0,.1){A1} \pnode(1,.31){A1}
+ { \psset{linewidth=.02,linestyle=dashed,linecolor=gray}%
+ \pcline(DST1)(DST2) % <- Druckseitentangente
+ \pcline(A2)(A1) % <- Anstr\"omrichtung
+ \lput*{:U}{\small Anstr\"omrichtung $v_{\infty}$} }%
+ \psIntersectionPoint(A1)(A2)(DST1)(DST2){Hk}
+ \pscurve(Hk)(.4,.38)(Vk)(.36,.33)(.5,.32)(Hk)
+ \psParallelLine[linecolor=red!75!green,arrows=->,arrowscale=2](Vk)(Hk)(D){.1}{FtE}
+ \psRelLine[linecolor=red!75!green,arrows=->,arrowscale=2,angle=90](D)(FtE){4}{Fn}% why "4"?
+ \psParallelLine[linestyle=dashed](D)(FtE)(Fn){.1}{Fnr1}
+ \psRelLine[linestyle=dashed,angle=90](FtE)(D){-4}{Fnr2} % why "-4"?
+ \psline[linewidth=1.5pt,arrows=->,arrowscale=2](D)(Fnr2)
+ \psIntersectionPoint(D)([nodesep=2]D)(Fnr1)([offset=-4]Fnr1){Fh}
+ \psIntersectionPoint(D)([offset=2]D)(Fnr1)([nodesep=4]Fnr1){Fv}
+ \psline[linecolor=blue,arrows=->,arrowscale=2](D)(Fh)
+ \psline[linecolor=blue,arrows=->,arrowscale=2](D)(Fv)
+ \psline[linestyle=dotted](Fh)(Fnr1) \psline[linestyle=dotted](Fv)(Fnr1)
+ \uput{.1}[0](Fh){\blue $F_{H}$} \uput{.1}[180](Fv){\blue $F_{V}$}
+ \uput{.1}[-45](Fnr1){$F_{R}$} \uput{.1}[90](Fn){\color{red!75!green}$F_{N}$}
+ \uput{.25}[-90](FtE){\color{red!75!green}$F_{T}$}
+\end{pspicture}
+\egroup
+\end{center}
+\begin{lstlisting}
+\psset{xunit=0.75\linewidth,yunit=0.75\linewidth,trueAngle}%
+\end{center}
+\begin{pspicture}(1,0.6)%\psgrid
+ \pnode(.3,.35){Vk} \pnode(.375,.35){D} \pnode(0,.4){DST1} \pnode(1,.18){DST2}
+ \pnode(0,.1){A1} \pnode(1,.31){A1}
+ { \psset{linewidth=.02,linestyle=dashed,linecolor=gray}%
+ \pcline(DST1)(DST2) % <- Druckseitentangente
+ \pcline(A2)(A1) % <- Anstr"omrichtung
+ \lput*{:U}{\small Anstr"omrichtung $v_{\infty}$} }%
+ \psIntersectionPoint(A1)(A2)(DST1)(DST2){Hk}
+ \pscurve(Hk)(.4,.38)(Vk)(.36,.33)(.5,.32)(Hk)
+ \psParallelLine[linecolor=red!75!green,arrows=->,arrowscale=2](Vk)(Hk)(D){.1}{FtE}
+ \psRelLine[linecolor=red!75!green,arrows=->,arrowscale=2,angle=90](D)(FtE){4}{Fn}% why "4"?
+ \psParallelLine[linestyle=dashed](D)(FtE)(Fn){.1}{Fnr1}
+ \psRelLine[linestyle=dashed,angle=90](FtE)(D){-4}{Fnr2} % why "-4"?
+ \psline[linewidth=1.5pt,arrows=->,arrowscale=2](D)(Fnr2)
+ \psIntersectionPoint(D)([nodesep=2]D)(Fnr1)([offset=-4]Fnr1){Fh}
+ \psIntersectionPoint(D)([offset=2]D)(Fnr1)([nodesep=4]Fnr1){Fv}
+ \psline[linecolor=blue,arrows=->,arrowscale=2](D)(Fh)
+ \psline[linecolor=blue,arrows=->,arrowscale=2](D)(Fv)
+ \psline[linestyle=dotted](Fh)(Fnr1) \psline[linestyle=dotted](Fv)(Fnr1)
+ \uput{.1}[0](Fh){\blue $F_{H}$} \uput{.1}[180](Fv){\blue $F_{V}$}
+ \uput{.1}[-45](Fnr1){$F_{R}$} \uput{.1}[90](Fn){\color{red!75!green}$F_{N}$}
+ \uput{.25}[-90](FtE){\color{red!75!green}$F_{T}$}
+\end{pspicture}
+\end{lstlisting}
+
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psParallelLine}}
+%--------------------------------------------------------------------------------------
+With this macro it is possible to plot lines relative to a given one, which is parallel.
+There is no special parameter here.
+
+\begin{lstlisting}[style=syntax]
+\psParallelLine(<P0>)(<P1>)(<P2>){<length>}{<end node name>}
+\psParallelLine{<arrows>}(<P0>)(<P1>)(<P2>){<length>}{<end node name>}
+\psParallelLine[<options>](<P0>)(<P1>)(<P2>){<length>}{<end node name>}
+\psParallelLine[<options>]{<arrows>}(<P0>)(<P1>)(<P2>){<length>}{<end node name>}
+\end{lstlisting}
+
+The line starts at $P_2$, is parallel to $\overline{P_0P_1}$ and
+the length of this parallel line depends on the length factor. The
+end node name must be a valid nodename and shouldn't contain any
+of the special PostScript characters.
+
+\begin{LTXexample}
+\begin{pspicture*}(-5,-4)(5,3.5)
+ \psgrid[subgriddiv=0,griddots=5]
+ \pnode(2,-2){FF}\qdisk(FF){1.5pt}
+ \pnode(-5,5){A}\pnode(0,0){O}
+ \multido{\nCountA=-2.4+0.4}{9}{%
+ \psParallelLine[linecolor=red](O)(A)(0,\nCountA){9}{P1}
+ \psline[linecolor=red](0,\nCountA)(FF)
+ \psRelLine[linecolor=red](0,\nCountA)(FF){9}{P2}
+ }
+ \psline[linecolor=blue](A)(FF)
+ \psRelLine[linecolor=blue](A)(FF){5}{END1}
+ \psline[linewidth=2pt,arrows=->](2,0)(FF)
+\end{pspicture*}
+\end{LTXexample}
+
+the following example was created by Patrice Mégret.
+
+\psset{unit=1cm}
+\newcommand\pmsc[1]{\ensuremath{\underline{#1}}}
+\newcommand\pmIc{\pmsc{I}}
+\newcommand\pmUc{\pmsc{U}}
+\newcommand\pmEc{\pmsc{E}}
+\begin{pspicture}[showgrid=true](-5,-2)(3,8)
+\psStartPoint[I](0,0)
+\psVector[linewidth=1.5pt,linecolor=red](1.5;235)\ncput*{$\pmIc_2$}%I_2
+\psStartPoint[U](0,0)
+\psVector[linewidth=1.5pt](2;90)\ncput*{$\pmUc_2$}%U_2
+\psParallelLine[linewidth=1.5pt,arrows=->](0,0)(I1)(U1){-0.3}{NUa}\nbput{\tiny $-R_2\pmIc_2$}%-R_2.I_2
+\psRelLine[linewidth=1.5pt,arrows=->,angle=90](NUa)(U1){-5}{NUb}\nbput{\tiny $-j\omega L_{\sigma2}\pmIc_2$} %$
+\pcline[linewidth=3.5pt,arrows=->](0,0)(NUb)\naput{$\pmEc_2$}%E_2
+\psParallelLine[linewidth=1.5pt,arrows=->,linecolor=blue](0,0)(NUb)(0,0){1.428}{NUc}\nbput[npos=0.8]{$\pmEc_1$}%E_1 (m=0.7)
+\psRelLine[linewidth=1.5pt,arrows=->,angle=-85,linecolor=orange](0,0)(NUc){0.2}{NIm1}\nbput{\tiny $\pmIc_{m1}$}%I_m1
+\psParallelLine[linewidth=1.5pt,arrows=->,linecolor=orange](0,0)(I1)(NIm1){-0.7}{NI1}\nbput{\tiny $-m\pmIc_2$}%m.I_2
+\pcline[linewidth=1.5pt,arrows=->,linecolor=orange](0,0)(NI1)\naput{\tiny $\pmIc_{1}$}%I_1
+\psParallelLine[linewidth=1.5pt,arrows=->,linecolor=blue](0,0)(NI1)(NUc){0.2}{NUd}\nbput{\tiny $R_1\pmIc_1$}%R_1 I_1
+\psRelLine[linewidth=1.5pt,arrows=->,angle=90,linecolor=blue](NUd)(NUc){-5}{NUe}\nbput{\tiny $j\omega L_{\sigma1}\pmIc_1$}%-j\omega I_2
+\pcline[linewidth=1.5pt,arrows=->,linecolor=blue](0,0)(NUe)\naput{$\pmUc_{1}$}%I_1
+\end{pspicture}
+
+%$
+
+
+\begin{lstlisting}[basicstyle=\footnotesize\ttfamily]
+\newcommand\pmsc[1]{\ensuremath{\underline{#1}}}
+\newcommand\pmIc{\pmsc{I}}
+\newcommand\pmUc{\pmsc{U}}
+\newcommand\pmEc{\pmsc{E}}
+\begin{pspicture}[showgrid=true](-5,-2)(3,8)
+\psStartPoint[I](0,0)
+\psVector[linewidth=1.5pt,linecolor=red](1.5;235)\ncput*{$\pmIc_2$}%I_2
+\psStartPoint[U](0,0)
+\psVector[linewidth=1.5pt](2;90)\ncput*{$\pmUc_2$}%U_2
+\psParallelLine[linewidth=1.5pt,arrows=->](0,0)(I1)(U1){-0.3}{NUa}\nbput{\tiny $-R_2\pmIc_2$}
+\psRelLine[linewidth=1.5pt,arrows=->,angle=90](NUa)(U1){-5}{NUb}%
+ \nbput{\tiny $-j\omega L_{\sigma2}\pmIc_2$}%-j\omega I_2
+\pcline[linewidth=3.5pt,arrows=->](0,0)(NUb)\naput{$\pmEc_2$}%E_2
+\psParallelLine[linewidth=1.5pt,arrows=->,linecolor=blue](0,0)(NUb)(0,0){1.428}{NUc}%
+ \nbput[npos=0.8]{$\pmEc_1$}%E_1 (m=0.7)
+\psRelLine[linewidth=1.5pt,arrows=->,angle=-85,linecolor=orange](0,0)(NUc){0.2}{NIm1}
+ \nbput{\tiny $\pmIc_{m1}$}%I_m1
+\psParallelLine[linewidth=1.5pt,arrows=->,linecolor=orange](0,0)(I1)(NIm1){-0.7}{NI1}
+ \nbput{\tiny $-m\pmIc_2$}%m.I_2
+\pcline[linewidth=1.5pt,arrows=->,linecolor=orange](0,0)(NI1)\naput{\tiny $\pmIc_{1}$}%I_1
+\psParallelLine[linewidth=1.5pt,arrows=->,linecolor=blue](0,0)(NI1)(NUc){0.2}{NUd}
+ \nbput{\tiny $R_1\pmIc_1$}%R_1 I_1
+\psRelLine[linewidth=1.5pt,arrows=->,angle=90,linecolor=blue](NUd)(NUc){-5}{NUe}
+ \nbput{\tiny $j\omega L_{\sigma1}\pmIc_1$}%-j\omega I_2
+\pcline[linewidth=1.5pt,arrows=->,linecolor=blue](0,0)(NUe)\naput{$\pmUc_{1}$}%I_1
+\end{pspicture}
+\end{lstlisting}
+
+%$
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psIntersectionPoint}}
+%--------------------------------------------------------------------------------------
+This macro calculates the intersection point of two lines, given by the four coordinates.
+There is no special parameter here.
+\begin{lstlisting}[style=syntax]
+\psIntersectionPoint(<P0>)(<P1>)(<P2>)(<P3>){<node name>}
+\end{lstlisting}
+
+\begin{LTXexample}[width=5.5cm]
+\psset{unit=0.5cm}
+\begin{pspicture}(-5,-4)(5,5)
+ \psaxes[labelFontSize=\scriptstyle,
+ dx=2,Dx=2,dy=2,Dy=2]{->}(0,0)(-5,-4)(5,5)
+ \psline[linecolor=red,linewidth=2pt](-5,-1)(5,5)
+ \psline[linecolor=blue,linewidth=2pt](-5,3)(5,-4)
+ \qdisk(-5,-1){2pt}\uput[-90](-5,-1){A}
+ \qdisk(5,5){2pt}\uput[-90](5,5){B}
+ \qdisk(-5,3){2pt}\uput[-90](-5,3){C}
+ \qdisk(5,-4){2pt}\uput[-90](5,-4){D}
+ \psIntersectionPoint(-5,-1)(5,5)(-5,3)(5,-4){IP}
+ \qdisk(IP){3pt}\uput{0.3}[90](IP){IP}
+ \psline[linestyle=dashed](IP|0,0)(IP)(0,0|IP)
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+
+%--------------------------------------------------------------------------------------
+\section[\nxLcs{psCancel}]{\nxLcs{psCancel}\footnotemark}
+%--------------------------------------------------------------------------------------
+\footnotetext{Thanks to by Stefano Baroni} This macro works like
+the \Lcs{cancel} macro from the package of the same name but it
+allows as argument any contents, not only letters but also a
+complex graphic.
+
+\begin{BDef}
+\LcsStar{psCancel}\OptArgs\Largb{contents}%
+\end{BDef}
+
+All optional arguments for lines and boxes are valid and can be
+used in the usual way. The star option fills the underlying box
+rectangle with the linecolor. This can be transparent if
+\Lkeyword{opacity} is set to a value less than 1. This can be used
+in presentation to strike out words, equations, and graphic
+objects. Lines can also be transparent when the option
+\Lkeyword{strokeopacity} is used.
+
+\begingroup
+\psCancel{A} \psCancel[linecolor=red]{Tikz :-)} \quad
+\psCancel[linecolor=blue,doubleline=true]{%
+ \readdata{\data}{data/demo1.data}
+ \psset{shift=*,xAxisLabel=x-Axis,yAxisLabel=y-Axis,llx=-13mm,lly=-7mm,
+ xAxisLabelPos={c,-1},yAxisLabelPos={-7,c}}
+ \pstScalePoints(1,0.00000001){}{}
+ \begin{psgraph}[axesstyle=frame,xticksize=0 7.5,yticksize=0 25,subticksize=1,
+ ylabelFactor=\cdot 10^8,Dx=5,Dy=1,xsubticks=2](0,0)(25,7.5){5.5cm}{5cm}
+ \listplot[linecolor=red, linewidth=2pt, showpoints=true]{\data}
+ \end{psgraph}} \qquad% end of Cancel
+\psCancel[linewidth=3pt,linecolor=red,
+ strokeopacity=0.5]{\tabular[b]{c}first line\\second line\endtabular}\quad
+\psCancel*[linecolor=red!50,opacity=0.5]{\tabular[b]{c}first line\\second line\endtabular}
+
+
+\psCancel*[linecolor=blue!30,opacity=0.5]{%
+ \readdata{\data}{data/demo1.data}
+ \psset{shift=*,xAxisLabel=x-Axis,yAxisLabel=y-Axis,llx=-15mm,lly=-7mm,urx=1mm,
+ xAxisLabelPos={c,-1},yAxisLabelPos={-7,c}}
+ \pstScalePoints(1,0.00000001){}{}
+ \begin{psgraph}[axesstyle=frame,xticksize=0 7.5,yticksize=0 25,subticksize=1,
+ ylabelFactor=\cdot 10^8,Dx=5,Dy=1,xsubticks=2](0,0)(25,7.5){5.5cm}{5cm}
+ \listplot[linecolor=red, linewidth=2pt, showpoints=true]{\data}
+ \end{psgraph}} \quad% end of Cancel
+\psCancel[linewidth=4pt,strokeopacity=0.5]{\parbox{8cm}{\[
+ \binom{x_R}{y_R} = \underbrace{r\vphantom{\binom{A}{B}}}_{\text{Scaling}}\cdot
+ \underbrace{\begin{pmatrix}
+ \sin\gamma & -\cos\gamma \\
+ \cos \gamma & \sin \gamma \\
+ \end{pmatrix}}_{\text{Rotation}} \binom{x_K}{y_K} +
+ \underbrace{\binom{t_x}{t_y}}_{\text{Translation}} \]} }% end of psCancel
+\endgroup
+
+\bigskip
+\begin{lstlisting}
+\psCancel{A} \psCancel[linecolor=red]{Tikz :-)} \quad
+\psCancel[linecolor=blue,doubleline=true]{%
+ \readdata{\data}{data/demo1.data}
+ \psset{shift=*,xAxisLabel=x-Axis,yAxisLabel=y-Axis,llx=-13mm,lly=-7mm,
+ xAxisLabelPos={c,-1},yAxisLabelPos={-7,c}}
+ \pstScalePoints(1,0.00000001){}{}
+ \begin{psgraph}[axesstyle=frame,xticksize=0 7.5,yticksize=0 25,subticksize=1,
+ ylabelFactor=\cdot 10^8,Dx=5,Dy=1,xsubticks=2](0,0)(25,7.5){5.5cm}{5cm}
+ \listplot[linecolor=red, linewidth=2pt, showpoints=true]{\data}
+ \end{psgraph}} \qquad% end of Cancel
+\psCancel[linewidth=3pt,linecolor=red,
+ strokeopacity=0.5]{\tabular[b]{c}first line\\second line\endtabular}\quad
+\psCancel*[linecolor=red!50,opacity=0.5]{\tabular[b]{c}first line\\second line\endtabular}
+\quad
+\psCancel*[linecolor=blue!30,opacity=0.5]{%
+ \readdata{\data}{data/demo1.data}
+ \psset{shift=*,xAxisLabel=x-Axis,yAxisLabel=y-Axis,llx=-15mm,lly=-7mm,urx=1mm,
+ xAxisLabelPos={c,-1},yAxisLabelPos={-7,c}}
+ \pstScalePoints(1,0.00000001){}{}
+ \begin{psgraph}[axesstyle=frame,xticksize=0 7.5,yticksize=0 25,subticksize=1,
+ ylabelFactor=\cdot 10^8,Dx=5,Dy=1,xsubticks=2](0,0)(25,7.5){5.5cm}{5cm}
+ \listplot[linecolor=red, linewidth=2pt, showpoints=true]{\data}
+ \end{psgraph}} \quad% end of Cancel
+\psCancel[linewidth=4pt,strokeopacity=0.5]{\parbox{8cm}{\[
+ \binom{x_R}{y_R} = \underbrace{r\vphantom{\binom{A}{B}}}_{\text{Scaling}}\cdot
+ \underbrace{\begin{pmatrix}
+ \sin\gamma & -\cos\gamma \\
+ \cos \gamma & \sin \gamma \\
+ \end{pmatrix}}_{\text{Rotation}} \binom{x_K}{y_K} +
+ \underbrace{\binom{t_x}{t_y}}_{\text{Translation}} \]} }% end of psCancel
+\end{lstlisting}
+
+The optional argument \Lkeyword{cancelType} allows to define the lines for the non star version.
+Possible values are \Lkeyval{x} for a cross, \Lkeyval{s} for a slash, and \Lkeyval{b}
+for a backslash. It is also possible to use the long words for the \Lkeyval{slash} and the \Lkeyval{backslash}.
+An empty value is always assumed as a \Lkeyval{x}. The uppercase keys maybe used in presentations where it make sense
+to have thesame box size before ander after something is cancelled by lines.
+
+\begin{LTXexample}[pos=t,wide]
+\psset{linewidth=3pt,strokeopacity=0.4}
+\psCancel{\tabular[b]{c}first line\\second line\endtabular} \quad
+\psCancel[cancelType=x]{\tabular[b]{c}first line\\second line\endtabular}\quad
+\psCancel[cancelType=s]{\tabular[b]{c}first line\\second line\endtabular}\quad
+\psCancel[cancelType=b]{\tabular[b]{c}first line\\second line\endtabular}\\
+\psCancel[cancelType=X]{\tabular[b]{@{}c@{}}first line\\second line\endtabular}\quad
+\psCancel[cancelType=S]{\tabular[b]{@{}c@{}}first line\\second line\endtabular}\quad
+\psCancel[cancelType=B]{\tabular[b]{@{}c@{}}first line\\second line\endtabular}
+\end{LTXexample}
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\section{\nxLcs{psStep}}
+%--------------------------------------------------------------------------------------
+\Lcs{psStep} calculates a step function for the upper or lower
+sum or the max/min of the \Index{Riemann} integral definition of a given
+function. The available option is
+
+\Lkeyset{StepType=lower}|\Lkeyval{upper}|\Lkeyval{Riemann}|\Lkeyval{infimum}|\Lkeyval{supremum} or alternative
+\Lkeyset{StepType=l}|\Lkeyval{u}|\Lkeyval{R}|\Lkeyval{i}|\Lkeyval{s}
+
+with \Lkeyword{lower} as the default setting. The syntax of the function is
+
+\begin{BDef}
+\Lcs{psStep}\OptArgs\Largr{$x1,x2$}\Largb{n}\Largb{function}
+\end{BDef}
+
+%$
+
+
+
+
+
+(x1,x2) is the given interval for the step wise calculated
+function, n is the number of the rectangles and \Larg{function} is
+the mathematical function in postfix or algebraic notation (with
+\Lkeyword{algebraic}).
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(-0.5,-0.5)(10,3)
+ \psaxes[labelFontSize=\scriptstyle]{->}(10,3)
+ \psplot[plotpoints=100,linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)}
+ \psStep[linecolor=magenta,StepType=upper,fillstyle=hlines](0,9){9}{x sqrt}
+ \psStep[linecolor=blue,fillstyle=vlines](0,9){9}{x sqrt }
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{plotpoints=200}
+\begin{pspicture}(-0.5,-2.25)(10,3)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)
+ \psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}
+ \psStep[algebraic,linecolor=magenta,StepType=upper](0,9){20}{sqrt(x)*sin(x)}
+ \psStep[linecolor=blue,linestyle=dashed](0,9){20}{x sqrt x RadtoDeg sin mul}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{yunit=1.25cm,plotpoints=200}
+\begin{pspicture}(-0.5,-1.5)(10,1.5)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-1.5)(10,1.5)
+ \psStep[algebraic,StepType=Riemann,fillstyle=solid,fillcolor=black!10](0,10){50}%
+ {sqrt(x)*cos(x)*sin(x)}
+ \psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*cos(x)*sin(x)}
+\end{pspicture}
+\end{LTXexample}
+
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{yunit=1.25cm,plotpoints=200}
+\begin{pspicture}(-0.5,-1.5)(10,1.5)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-1.5)(10,1.5)
+ \psStep[algebraic,StepType=infimum,fillstyle=solid,fillcolor=black!10](0,10){50}%
+ {sqrt(x)*cos(x)*sin(x)}
+ \psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*cos(x)*sin(x)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{yunit=1.25cm,plotpoints=200}
+\begin{pspicture}(-0.5,-1.5)(10,1.5)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-1.5)(10,1.5)
+ \psStep[algebraic,StepType=supremum,fillstyle=solid,fillcolor=black!10](0,10){50}%
+ {sqrt(x)*cos(x)*sin(x)}
+ \psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*cos(x)*sin(x)}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{unit=1.5cm,plotpoints=200}
+\begin{pspicture}[plotpoints=200](-0.5,-3)(10,2.5)
+ \psStep[algebraic,fillstyle=solid,fillcolor=yellow](0.001,9.5){40}{2*sqrt(x)*cos(ln(x))*sin(x)}
+ \psStep[algebraic,StepType=Riemann,fillstyle=solid,fillcolor=blue](0.001,9.5){40}{2*sqrt(x)*cos(ln(x))*sin(x)}
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.75)(10,2.5)
+ \psplot[algebraic,linecolor=white]{0.001}{9.75}{2*sqrt(x)*cos(ln(x))*sin(x)}
+ \uput[90](6,1.2){$f(x)=2\cdot\sqrt{x}\cdot\cos{(\ln{x})}\cdot\sin{x}$}
+\end{pspicture}
+\end{LTXexample}
+
+
+There is also an optional argument \Lkeyword{noVerticalLines} which suppresses all
+vertical lines of the step function in the output.
+
+\iffalse
+
+
+
+\definecolor{BeigeTS}{rgb}{0.98,0.95,0.87}
+\definecolor{CornBlauTS}{rgb}{0.39,0.59,0.93}
+\definecolor{SandBraun}{rgb}{0.96,0.64,0.38}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{yunit=1.25cm,arrowinset=0.02,arrowlength=2,linewidth=0.5pt,saveNodeCoors,NodeCoorPrefix=n,PrintCoord}
+\def\funkf{2*sqrt(x)*cos(ln(x))*sin(x)}
+\begin{pspicture}[plotpoints=500,algebraic,fontscale=5,markZeros,dotscale=0.7](-0.5,-3)(10,2.5)
+\psStep[fillstyle=solid,fillcolor=BeigeTS,opacity=0.7,linewidth=0.3pt,linecolor=SandBraun!50](0.001,9.5){40}{\funkf}
+\psStep[StepType=Riemann,fillstyle=solid,opacity=0.3,fillcolor=CornBlauTS,linecolor=CornBlauTS,linewidth=0.3pt]%
+(0.001,9.5){40}{\funkf}
+\psaxes[labelFontSize=\scriptstyle,ticksize=-0.1 0]{->}(0,0)(0,-2.75)(10,2.5)
+\psplot[linecolor=BeigeTS!60,linewidth=0.8pt]{0.001}{9.75}{\funkf}
+\psplotTangent[linecolor=blue, Derive={Derive(1,\funkf)}]{1.29}{1.5}{\funkf}
+\uput[90](6,1.2){$f(x)=2\cdot\sqrt{x}\cdot\cos{(\ln{x})}\cdot\sin{x}$}
+\psZero[xShift=-0.2,yShift=0.15,linecolor=blue!50!black!90,ydecimals=0,postString={1},Newton](0.5,1){\funkf}{0}{N1}
+\psZero[xShift=-0.05,yShift=0.15,linecolor=blue!50!black!90,ydecimals=0,postString={2}](2,4){\funkf}{0}{N2}
+\psZero[xShift=-0.45,yShift=0.15,linecolor=blue!50!black!90,ydecimals=0,postString={3}](4,6){\funkf}{0}{N3}
+\psZero[xShift=-0.45,yShift=0.15,linecolor=blue!50!black!90,ydecimals=0,postString={4}](6,7){\funkf}{0}{N4}
+\psZero[xShift=-0.45,yShift=0.15,linecolor=blue!50!black!90,ydecimals=0,postString={5}](9,11){\funkf}{0}{N5}
+\psZero[xShift=-1.15,yShift=0,linecolor=blue!50!black!90,PtName={M},postString={m=1}](0.5,2){Derive(1,\funkf)-1+\funkf}{\funkf}{M}
+\pcline{->}(0.5,-1)(M)
+\nbput[nrot=:U,labelsep=0.01]{\scriptsize Steigung ist hier \psPrintValueNew[PSfont=Palatino-Roman,decimals=0,round=true,fontscale=7]{nMx,{Derive(1,\funkf)}}}
+%\psdot[linecolor=green,strokeopacity=0.8](*{nMx} {\funkf})
+\uput[90](*{nMx} {\funkf}){$m=$\psPrintValueNew[PSfont=Palatino-Roman,decimals=0,round=true,fontscale=8]{nMx,{Derive(1,\funkf)}}}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\begin{pspicture}(-0.5,-1.5)(10.2,1.5)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-1.5)(10.2,1.5)
+ \psplot[linewidth=.6pt,algebraic]{0}{10}{sqrt(x)*cos(x)*sin(x)}
+ \psStep[algebraic,StepType=infimum,fillstyle=solid,opacity=0.3,fillcolor=green!50!black!30,linecolor=green,linewidth=0.1pt,strokeopacity=0.8](0,10){50}%
+ {sqrt(x)*cos(x)*sin(x)}
+\end{pspicture}
+
+
+\psset{yunit=1.25cm,plotpoints=500}
+\begin{pspicture}(-0.5,-1.5)(10,1.5)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-1.5)(10,1.5)
+ \psStep[algebraic,StepType=supremum,fillstyle=solid,opacity=0.3,fillcolor=green!50!black!30,linecolor=green,linewidth=0.1pt](0,10){50}%
+ {sqrt(x)*cos(x)*sin(x)}
+ \psplot[linewidth=.5pt,algebraic]{0}{10}{sqrt(x)*cos(x)*sin(x)}
+\end{pspicture}
+
+
+
+\begin{pspicture}(-0.5,-0.5)(10,3)
+ \psaxes[labelFontSize=\scriptstyle]{->}(10,3)
+ \psplot[plotpoints=500,linewidth=.5pt,algebraic]{0}{10}{sqrt(x)}
+ \psStep[linecolor=green,StepType=upper,fillstyle=solid,opacity=0.3,fillcolor=green!50!black!60,linewidth=0.3pt](0,9){9}{x sqrt}
+ \psStep[linecolor=BeigeTS,StepType=lower,fillstyle=hlines,hatchcolor=BeigeTS,hatchwidth=0.3pt,hatchsep=1.2pt,linewidth=0.3pt](0,9){9}{x sqrt }
+\end{pspicture}
+
+
+
+\psset{plotpoints=500}
+\begin{pspicture}(-0.5,-2.25)(10,3)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)
+ \psplot[linewidth=0.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}
+ \psStep[algebraic,linecolor=SandBraun,linewidth=0.4pt,StepType=upper](0,9){20}{sqrt(x)*sin(x)}
+ \psStep[linecolor=CornBlauTS,linewidth=0.4pt,linestyle=dashed,dash=1.6pt 1.6pt](0,9){20}{x sqrt x RadtoDeg sin mul}
+\end{pspicture}
+
+
+
+\psset{yunit=1.25cm,plotpoints=500}
+\begin{pspicture}(-0.5,-1.5)(10,1.5)
+ \psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-1.5)(10,1.5)
+ \psStep[algebraic,StepType=Riemann,fillstyle=solid,opacity=0.3,fillcolor=CornBlauTS,linecolor=CornBlauTS,linewidth=0.2pt](0,10){50}%
+ {sqrt(x)*cos(x)*sin(x)}
+ \psplot[linewidth=.5pt,algebraic]{0}{10}{sqrt(x)*cos(x)*sin(x)}
+\end{pspicture}
+
+\fi
+
+
+
+
+With setting the optional argument \Lkeyword{saveSumValue}
+it is possible to calculate the area under the rectangles. The value is calculated on PostScript level and then
+later saved in a macro \Lcs{pstAreaA},
+for the next call of \Lcs{psStep} in the macro \Lcs{pstAreaB} and so on. The values are calculated
+on PostScript level, the reason why two \LaTeX\ runs are needed. for every \Lcs{psStep} there will
+be an external file \verb|\jobname-area#.tex| which has the definition of the macros \nxLcs{pstArea?}.
+In this documentation the following \Lcs{psStep} is the 10th call of this function, the reason
+why we have to choose \Lcs{pstAreaJ} and so on:
+
+\clearpage
+
+%\begin{LTXexample}[pos=t,preset=\centering]
+\psset{plotpoints=200}%
+\begin{pspicture}(-0.5,-2.25)(10,3)
+\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)%
+\psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}%
+\psset{linewidth=0.5pt}%
+\psStep[algebraic,linecolor=magenta,StepType=upper,saveSumValue](0,9){20}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2.5){\textcolor{magenta}{Uppersum: \pstAreaJ}}%
+\psStep[algebraic,linecolor=blue,saveSumValue](0,9){20}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2){\textcolor{blue}{Lowersum: \pstAreaK}}%
+\end{pspicture}
+%\end{LTXexample}
+
+\begin{lstlisting}
+\psset{plotpoints=200}%
+\begin{pspicture}(-0.5,-2.25)(10,3)
+\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)%
+\psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}%
+\psset{linewidth=0.5pt}%
+\psStep[algebraic,linecolor=magenta,StepType=upper,saveSumValue](0,9){20}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2.5){\textcolor{magenta}{Uppersum: \pstAreaJ}}%
+\psStep[algebraic,linecolor=blue,saveSumValue](0,9){20}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2){\textcolor{blue}{Lowersum: \pstAreaK}}%
+\end{pspicture}
+\end{lstlisting}
+
+
+%\begin{LTXexample}[pos=t,preset=\centering]
+\psset{plotpoints=200}%
+\begin{pspicture}(-0.5,-2.25)(10,3)
+\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)%
+\psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}%
+\psset{linewidth=0.1pt}%
+\psStep[algebraic,linecolor=magenta,StepType=upper,saveSumValue](0,9){100}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2.5){\textcolor{magenta}{Uppersum: \pstAreaL}}%
+\psStep[algebraic,linecolor=blue,saveSumValue](0,9){100}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2){\textcolor{blue}{Lowersum: \pstAreaM}}%
+\end{pspicture}
+%\end{LTXexample}
+
+\begin{lstlisting}
+\psset{plotpoints=200}%
+\begin{pspicture}(-0.5,-2.25)(10,3)
+\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)%
+\psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}%
+\psset{linewidth=0.1pt}%
+\psStep[algebraic,linecolor=magenta,StepType=upper,saveSumValue](0,9){100}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2.5){\textcolor{magenta}{Uppersum: \pstAreaL}}%
+\psStep[algebraic,linecolor=blue,saveSumValue](0,9){100}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2){\textcolor{blue}{Lowersum: \pstAreaM}}%
+\end{pspicture}
+\end{lstlisting}
+%--------------------------------------------------------------------------------------
+
+
+The values for the Riemann sum can also be calculatet on \LaTeX\ level, but it needs
+the package xparse and fp from the new \LaTeX3 kernel. It is not available for running \TeX.
+
+\begin{BDef}
+\Lcs{psRiemannSum}\Largr{$x_0,x_1$}\Largb{n}\Largb{f(\#1)}
+\end{BDef}
+
+The variable name in the last argument must be \#1!
+After using the above macro the following four macros are defined:
+
+\begin{BDef}
+\Lcs{psLeftSumValue}\\
+\Lcs{psRightSumValue}\\
+\Lcs{psMiddleSumValue}\\
+\Lcs{psDiffSumValue}
+\end{BDef}
+
+They all sum up the Riemann sum for the rectangle of width $dx$ and the height of the left, right
+or middle value of the function $f(x)$. \Lcs{psDiffSumValue} sums up the absolute value of rextangles
+in difference to the other three macros which takes a negative area into account.
+
+%\begin{LTXexample}[pos=t,preset=\centering]
+\psset{plotpoints=200}%
+\begin{pspicture}(-0.5,-2.25)(10,3)
+\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)%
+\psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}%
+\psset{linewidth=0.1pt}%
+\psRiemannSum(0,9){18}{sqrt(#1)*sin(#1)}
+\psStep[algebraic,linecolor=magenta,StepType=upper,saveSumValue](0,9){18}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2.5){\textcolor{magenta}{Uppersum: \psRightSumValue}}%
+\psStep[algebraic,linecolor=blue,saveSumValue](0,9){18}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2){\textcolor{blue}{Lowersum: \psLeftSumValue}}%
+\end{pspicture}
+%\end{LTXexample}
+
+\begin{lstlisting}
+\psset{plotpoints=200}%
+\begin{pspicture}(-0.5,-2.25)(10,3)
+\psaxes[labelFontSize=\scriptstyle]{->}(0,0)(0,-2.25)(10,3)%
+\psplot[linewidth=1.5pt,algebraic]{0}{10}{sqrt(x)*sin(x)}%
+\psset{linewidth=0.1pt}%
+\psRiemannSum(0,9){18}
+\psStep[algebraic,linecolor=magenta,StepType=upper,saveSumValue](0,9){18}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2.5){\textcolor{magenta}{Uppersum: \psRightSumValue}}%
+\psStep[algebraic,linecolor=blue,saveSumValue](0,9){18}{sqrt(x)*sin(x)}%
+\rput[l](0.2,2){\textcolor{blue}{Lowersum: \psLeftSumValue}}%
+\end{pspicture}
+\end{lstlisting}
+
+
+With package \texttt{siunitx} it is possible to round the values:
+
+\begin{lstlisting}
+\usepackage{siunitx}
+\sisetup{add-decimal-zero,
+ round-mode=places,
+ round-precision=2,
+ output-decimal-marker={,},
+ detect-all}
+[...]
+\psRiemannSum(0,9){18}{sqrt(#1)*sin(#1)}%
+\num{\psLeftSumValue}\\
+\num{\psRightSumValue}\\
+\num{\psMiddleSumValue}\\
+\num{\psDiffSumValue}
+\end{lstlisting}
+
+\psRiemannSum(0,9){18}{sqrt(#1)*sin(#1)}%
+\num{\psLeftSumValue}\\
+\num{\psRightSumValue}\\
+\num{\psMiddleSumValue}\\
+\num{\psDiffSumValue}
+
+
+\clearpage
+
+
+
+
+
+
+\section{Tangent lines}
+There are two macros for plotting a tangent line or the tangent normal line.
+The first one is \Lcs{psTangentLine} which expects three pairs of coordinates,
+a $x$ and a $dx$ value. The second one is \Lcs{psplotTangent} which expects
+a function for the curve. \xLkeyword{Tnormal}
+
+\subsection{\nxLcs{psTangentLine} and option \nxLkeyword{Tnormal}}
+
+\begin{BDef}
+\Lcs{psTangentLine}\OptArgs\coord1\coord2\coord3\Largb{x}\Largb{dx}
+\end{BDef}
+
+\begin{LTXexample}[width=0.45\linewidth,wide]
+\psset{unit=2cm}
+\begin{pspicture}[showgrid=true](1,-1)(4,1)
+ \pscurve[showpoints=true]
+ (2.1,-0.2)(2.5,0.2)(3.2,0.235)(3.8,-0.2)
+ \psTangentLine[Tnormal,arrows=->,
+ linecolor=red](2.5,0.2)(3.2,0.235)%
+ (3.8,-0.2){3}{0.1}
+ \psTangentLine[arrows=<->,
+ linecolor=blue](2.5,0.2)(3.2,0.235)%
+ (3.8,-0.2){3}{0.5}
+\end{pspicture}
+\end{LTXexample}
+
+In special cases one has to use \Lkeyword{curvature}\verb+=1 1 1+ for the macro \Lcs{pscurve}
+to get the same equation for the curve as \Lcs{psplotTangentLine} does.
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\psset{unit=2cm}
+\begin{pspicture}[showgrid=true](2,-1)(6,2)
+\pscurve[showpoints=true,
+ curvature=1 1 1](2.1,-0.2)(2.5,0.2)(3.2,0.235)(5.8,2)
+\pscurve[showpoints=true,linecolor=green,
+ curvature=1 1 1](2.5,0.2)(3.2,0.235)(5.8,2)
+\psTangentLine[Tnormal,arrows=->,linecolor=red](2.5,0.2)(3.2,0.235)(5.8,2){4.6}{0.6}
+\psTangentLine[arrows=<->,linecolor=blue](2.5,0.2)(3.2,0.235)(5.8,2){4.5}{0.6}
+\end{pspicture}
+\end{LTXexample}
+
+
+The end points are saved as nodes \verb=OCurve=, \verb=ETangent=, and \verb=ENormal=. They can
+be used in the default ways for nodes:
+
+\begin{LTXexample}[pos=t,preset=\centering,wide]
+\psset{yunit=4cm,xunit=2cm,arrowscale=2}
+\begin{pspicture}(0.1,-0.3)(4,1)
+\pscurve[showpoints=true](2.1,-0.2)(2.5,0.2)(3.2,0.4)(3.8,-0.2)
+\psTangentLine[Tnormal,arrows=->,linecolor=red](2.5,0.2)(3.2,0.4)(3.8,-0.2){3.5}{0.5}
+\psTangentLine[arrows=->,linecolor=blue](2.5,0.2)(3.2,0.4)(3.8,-0.2){3.5}{0.5}
+\pcline[linestyle=dashed]{->}(OCurve)(ETangent|OCurve)\naput{$v_x$}
+\pcline[linestyle=dashed]{->}(ETangent|OCurve)(ETangent)\naput{$v_y$}% double coordinate (x,y|x,y)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\subsection{\nxLcs{psplotTangent} and option \nxLkeyword{Tnormal}}
+%--------------------------------------------------------------------------------------
+There is an additional option, named \Lkeyword{Derive} for an
+alternative function (see following example) to calculate the
+slope of the tangent. This will be in general the first
+derivative, but can also be any other function. If this option is
+different to to the default value \Lkeyset{Derive=default}, then this
+function is taken to calculate the slope. For the other cases,
+\LPack{pstricks-add} builds a secant with -0.00005<x<0.00005,
+calculates the slope and takes this for the tangent. This may be
+problematic in some cases of special functions or $x$ values, then
+it may be appropriate to use the Derive option.
+
+\begin{BDef}
+\LcsStar{psplotTangent}\OptArgs\Largb{x}\Largb{dx}\Largb{function}
+\end{BDef}
+
+
+
+The macro expects three parameters:
+
+\begin{description}
+\item[$x$]: the $x$ value of the function for which the tangent should be calculated
+\item[$dx$]: the $dx$ to both sides of the $x$ value
+\item[$f(x)$]: the function in infix (with option \Lkeyword{algebraic}) or the default
+postfix (PostScript) notation
+\end{description}
+
+The following examples show the use of the algebraic option together with the Derive option.
+Remember that using the \Lkeyword{algebraic} option implies that the angles have to be in the
+radian unit!
+
+\begin{center}
+\bgroup
+\def\F{x RadtoDeg dup dup cos exch 2 mul cos add exch 3 mul cos add}
+\def\Fp{x RadtoDeg dup dup sin exch 2 mul sin 2 mul add exch 3 mul sin 3 mul add neg}
+\psset{plotpoints=1001}
+\begin{pspicture}(-7.5,-2.5)(7.5,4)%X\psgrid
+ \psaxes{->}(0,0)(-7.5,-2)(7.5,3.5)
+ \psplot[linewidth=3\pslinewidth]{-7}{7}{\F}
+ \psset{linecolor=red, arrows=<->, arrowscale=2}
+ \multido{\n=-7+1}{8}{\psplotTangent{\n}{1}{\F}}
+ \psset{linecolor=magenta, arrows=<->, arrowscale=2}%
+ \multido{\n=0+1}{8}{\psplotTangent[linecolor=blue, Derive=\Fp]{\n}{1}{\F}}
+\end{pspicture}
+\egroup
+\end{center}
+
+
+\begin{lstlisting}
+\def\F{x RadtoDeg dup dup cos exch 2 mul cos add exch 3 mul cos add}
+\def\Fp{x RadtoDeg dup dup sin exch 2 mul sin 2 mul add exch 3 mul sin 3 mul add neg}
+\psset{plotpoints=1001}
+\begin{pspicture}(-7.5,-2.5)(7.5,4)%X\psgrid
+ \psaxes{->}(0,0)(-7.5,-2)(7.5,3.5)
+ \psplot[linewidth=3\pslinewidth]{-7}{7}{\F}
+ \psset{linecolor=red, arrows=<->, arrowscale=2}
+ \multido{\n=-7+1}{8}{\psplotTangent{\n}{1}{\F}}
+ \psset{linecolor=magenta, arrows=<->, arrowscale=2}%
+ \multido{\n=0+1}{8}{\psplotTangent[linecolor=blue, §\ON§Derive=\Fp§\OFF§]{\n}{1}{\F}}
+\end{pspicture}
+\end{lstlisting}
+
+The star version plots only the tangent line in the positive $x$-direction:
+
+\begin{center}
+\bgroup
+\def\Falg{cos(x)+cos(2*x)+cos(3*x)} \def\Fpalg{-sin(x)-2*sin(2*x)-3*sin(3*x)}
+\begin{pspicture}(-7.5,-2.5)(7.5,4)%\psgrid
+ \psaxes{->}(0,0)(-7.5,-2)(7.5,3.5)
+ \psplot[linewidth=1.5pt,algebraic,plotpoints=500]{-7.5}{7.5}{\Falg}
+ \multido{\n=-7+1}{8}{\psplotTangent*[linecolor=red,arrows=->,arrowscale=2,algebraic]{\n}{1}{\Falg}}
+ \multido{\n=0+1}{8}{\psplotTangent*[linecolor=magenta,%
+ arrows=->,arrowscale=2,algebraic,Derive={\Fpalg}]{\n}{1}{\Falg}}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\def\Falg{cos(x)+cos(2*x)+cos(3*x)} \def\Fpalg{-sin(x)-2*sin(2*x)-3*sin(3*x)}
+\begin{pspicture}(-7.5,-2.5)(7.5,4)%\psgrid
+ \psaxes{->}(0,0)(-7.5,-2)(7.5,3.5)
+ \psplot[linewidth=1.5pt,algebraic,plotpoints=500]{-7.5}{7.5}{\Falg}
+ \multido{\n=-7+1}{8}{\psplotTangent*[linecolor=red,arrows=->,arrowscale=2,algebraic]{\n}{1}{\Falg}}
+ \multido{\n=0+1}{8}{\psplotTangent*[linecolor=magenta,%
+ arrows=->,arrowscale=2,algebraic,Derive={\Fpalg}]{\n}{1}{\Falg}}
+\end{pspicture}
+\end{lstlisting}
+
+The next example shows the use of the \Lkeyword{Derive} option to draw
+the perpendicular line to the tangent.
+
+\begin{LTXexample}[width=8cm,wide]
+\begin{pspicture}(-0.5,-0.5)(7.25,7.25)
+ \def\Func{10 x div}
+ \psaxes[arrowscale=1.5]{->}(7,7)
+ \psplot[linewidth=2pt,algebraic]{1.5}{5}{10/x}
+ \psplotTangent[linewidth=.5\pslinewidth,linecolor=red,algebraic]{3}{2}{10/x}
+ \psplotTangent[linewidth=.5\pslinewidth,linecolor=blue,algebraic,Derive=(x*x)/10]{3}{2}{10/x}
+ \psline[linestyle=dashed](!0 /x 3 def \Func)(!3 /x 3 def \Func)(3,0)
+\end{pspicture}
+\end{LTXexample}
+
+By setting the optional argument \Lkeyword{Tnormal} one can plot the
+normal of the tangent line. It always starts at the given point.
+
+\begin{LTXexample}[width=8cm,wide]
+\begin{pspicture}(-0.5,-0.5)(7.25,7.25)
+ \def\Func{10 x div}
+ \psaxes[arrowscale=1.5]{->}(7,7)
+ \psplot[linewidth=2pt]{1.5}{5}{\Func}
+ \psplotTangent[linewidth=1.5\pslinewidth,linecolor=red]{3}{2}{\Func}
+ \psplotTangent[linewidth=1.5\pslinewidth,linecolor=blue,Tnormal]{3}{2}{\Func}
+ \psline[linestyle=dashed](!0 /x 3 def \Func)(!3 /x 3 def \Func)(3,0)
+\end{pspicture}
+\end{LTXexample}
+
+
+Let's work with the classical \Index{cardioid}: $r=2(1+\cos(\theta))$ and
+$\displaystyle \frac{d r}{d\theta}=-2\sin(\theta)$. The \Lkeyword{Derive}
+option always expects the $\frac{d r}{d\theta}$ value and uses
+internally the equation for the derivative of implicitly defined
+functions:
+
+\[
+\frac{dy}{dx}=\frac{r^\prime\cdot\sin\theta + x}{r^\prime\cdot\cos\theta - y}
+\]
+where $x=r\cdot\cos\theta$ and $y=r\cdot\sin\theta$
+
+
+\begin{LTXexample}[width=6cm,wide]
+\begin{pspicture}(-1,-3)(5,3)%\psgrid[subgridcolor=lightgray]
+ \psaxes{->}(0,0)(-1,-3)(5,3)
+ \psplot[polarplot,linewidth=3\pslinewidth,linecolor=blue,%
+ plotpoints=500]{0}{360}{1 x cos add 2 mul}
+\end{pspicture}
+\end{LTXexample}
+
+\psset{algebraic=false}
+\begin{LTXexample}[width=6cm,wide]
+\begin{pspicture}(-1,-3)(5,3)%\psgrid[subgridcolor=lightgray]
+ \psaxes{->}(0,0)(-1,-3)(5,3)
+ \psplot[polarplot,linewidth=3\pslinewidth,linecolor=blue,plotpoints=500]{0}{360}{1 x cos add 2 mul}
+ \multido{\n=0+36}{10}{%
+ \psplotTangent[polarplot,linecolor=red,arrows=<->]{\n}{1.5}{1 x cos add 2 mul} }
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=6cm,wide]
+\begin{pspicture}(-1,-3)(5,3)%\psgrid[subgridcolor=lightgray]
+ \psaxes{->}(0,0)(-1,-3)(5,3)
+ \psplot[polarplot,linewidth=3\pslinewidth,linecolor=blue,algebraic,plotpoints=500]{0}{6.289}{2*(1+cos(x))}
+ \multido{\r=0.000+0.314}{21}{%
+ \psplotTangent[polarplot,Derive=-2*sin(x),algebraic,linecolor=red,arrows=<->]{\r}{1.5}{2*(1+cos(x))} }
+\end{pspicture}
+\end{LTXexample}
+
+
+Let's work with a \Index{Lissajou curve}:
+ $\displaystyle\left\{\begin{array}{l}x=3.5\cos(2t)\\y=3.5\sin(6t)\end{array}\right.$
+whose derivative is :
+ $\displaystyle\left\{\begin{array}{l}x=-7\sin(2t)\\y=21\cos(6t)\end{array}\right.$
+
+The parameter must be the letter $t$ instead of $x$ and when using
+the \Lkeyword{algebraic} option you must separate the two equations by
+a \Lnotation{|} (see example).
+
+\begin{LTXexample}[pos=t,wide]
+\def\Lissa{t dup 2 RadtoDeg mul cos 3.5 mul exch 6 mul RadtoDeg sin 3.5 mul}%
+\psset{yunit=0.6}
+\begin{pspicture}(-4,-4)(4,6)
+ \parametricplot[plotpoints=500,linewidth=3\pslinewidth]{0}{3.141592}{\Lissa}
+ \multido{\r=0.000+0.314}{11}{%
+ \psplotTangent[linecolor=red,arrows=<->]{\r}{1.5}{\Lissa} }
+ \multido{\r=0.157+0.314}{11}{%
+ \psplotTangent[linecolor=blue,arrows=<->]{\r}{1.5}{\Lissa} }
+\end{pspicture}\hfill%
+\def\LissaAlg{3.5*cos(2*t)|3.5*sin(6*t)} \def\LissaAlgDer{-7*sin(2*t)|21*cos(6*t)}%
+\begin{pspicture}(-4,-4)(4,6)
+ \parametricplot[algebraic,plotpoints=500,linewidth=3\pslinewidth]{0}{3.141592}{\LissaAlg}
+ \multido{\r=0.000+0.314}{11}{%
+ \psplotTangent[algebraic,linecolor=red,arrows=<->]{\r}{1.5}{\LissaAlg}}
+ \multido{\r=0.157+0.314}{11}{%
+ \psplotTangent[algebraic,linecolor=blue,arrows=<->,
+ Derive=\LissaAlgDer]{\r}{1.5}{\LissaAlg} }
+\end{pspicture}
+\end{LTXexample}
+
+\iffalse
+\begin{LTXexample}[pos=t,wide]
+\psset{yunit=2cm,xunit=1.2cm,plotpoints=500,arrowinset=0.02,arrowlength=2,algebraic}
+\def\funkf{2*sqrt(x)*cos(ln(x))*sin(x)}
+\begin{pspicture}[showgrid](-1,-3)(10,3.2)
+\psaxes[labelFontSize=\scriptstyle,subticks=5,ticksize=-0.1 0,labelsep=0.07]{->}(0,0)(0,-2.75)(10,2.5)
+\psplot{0.001}{9.75}{\funkf}
+\psplotTangent[linecolor=blue,Derive={Derive(1,\funkf)},
+ showpoints,nodesep=0]{0.35}{1.5}{\funkf}
+\psplotTangent[linecolor=blue,Derive={Derive(1,\funkf)},Tnormal,
+ nodesepA=-3,nodesepB=0,strokeopacity=0.4]{0.35}{1.5}{\funkf}
+\psdot[linecolor=cyan](ENormal)
+\psdot[linecolor=cyan](ENormalE)
+\psdot[linecolor=red](OCurve)
+\psdot[linecolor=green](ETangent)
+\psdot[linecolor=green](ETangentE)
+\end{pspicture}
+\end{LTXexample}
+\fi
+
+\clearpage
+\section{Successive derivatives of a function}
+
+The new PostScript function \Lps{Derive} has been added for
+plotting successive derivatives of a function. It must be used
+with the \Lkeyword{algebraic} option. This function has two arguments:
+
+\begin{enumerate}
+\item a positive integer which defines the order of the derivative; obviously $0$ means the
+ function itself!
+\item a function of variable $x$ which can be any function using common operators,
+\end{enumerate}
+
+Do not think that the derivative is approximated, the internal PostScript engine will
+compute the real derivative using a formal derivative engine.
+
+The following diagram contains the plot of the polynomial:
+
+\[ f(x)=\sum_{i=0}^{14}\frac{(-1)^{i}x^{2i}}{i!}=1-\frac{x^2}{2}+\frac{x^4}{4!}-\frac{x^6}{6!}+\frac{x^8}{8!}-
+ \frac{x^{10}}{10!}+\frac{x^{12}}{12!}-\frac{x^{14}}{14!}\]
+
+and of its first 15 derivatives. It is the sequence definition of
+the cosine.
+
+
+\begin{LTXexample}[pos=t,wide,preset=\centering]
+\psset{unit=2}
+\def\getColor#1{\ifcase#1 Tan\or RedOrange\or magenta\or yellow\or green\or Orange\or blue\or
+ DarkOrchid\or BrickRed\or Rhodamine\or OliveGreen\or Goldenrod\or Mahogany\or
+ OrangeRed\or CarnationPink\or RoyalPurple\or Lavender\fi}
+\begin{pspicture}[showgrid=true](0,-1.2)(7,1.5)
+ \psclip{\psframe[linestyle=none](0,-1.1)(7,1.1)}
+ \multido{\in=0+1}{16}{%
+ \psplot[linewidth=1pt,algebraic,linecolor=\getColor{\in}]{0}{7}
+ {Derive(\in,1-x^2/2+x^4/24-x^6/720+x^8/40320-x^10/3628800+x^12/479001600-x^14/87178291200)}}
+ \endpsclip
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[width=3.5cm]
+\begin{pspicture}[shift=-2.5,showgrid=true,linewidth=1pt](0,-2)(3,3)
+ \psplot[algebraic]{.001}{3}{x*ln(x)} % f(x)
+ \psplot[algebraic,linecolor=red]{.05}{3}{Derive(1,x*ln(x))} % f'(x)=1+ln(x)
+\end{pspicture}
+\end{LTXexample}
+
+
+\clearpage
+\section{Variable step for plotting a curve}
+\subsection{Theory}
+
+As you know with the \Lcs{psplot} macro, the curve is plotted
+using a piece-wise linear curve. The step is given by the
+parameter \Lkeyword{plotpoints}. For each step between $x_i$ and
+$x_{i+1}$, the area defined between the curve and its
+approximation (a segment) is majored by this formula :
+
+\begin{minipage}[m]{.5\linewidth}
+\[|\varepsilon|\le\frac{M_2(f)(x_{i+1}-x_i)^3}{12}\]
+
+$M_2(f)$ is a majorant of the second derivative of $f$ in the interval $[x_i;x_{i+1}]$.
+\end{minipage}
+{\psset{unit=1cm, showpoints=false}
+\begin{pspicture}[shift=-2,showgrid=true](0,-1)(6,3)
+ \pscurve(0,0)(1,1)(3,2.2)(5,2)(6,1)\psline(1,1)(5,2)
+ \psline(.5,0)(5.5,0)\psline(1,0)(1,1)\psline(5,0)(5,2)
+ \rput[t](1,-.1){$x_n$}\rput[t](5,-.1){$x_{n+1}$}
+ \psclip{\pscustom{\psecurve(0,0)(1,1)(3,2.2)(5,2)(6,1)\psline(5,2)}}
+ \psframe[fillstyle=solid, fillcolor=gray](0,0)(5,5)
+ \endpsclip
+ \rput*(3,1.8){$\varepsilon$}
+\end{pspicture}}
+
+
+
+The parameter \Lkeyword{VarStep} (\false\ by default) activates
+the variable step algorithm. It is set to a tolerance defined by
+the parameter \Lkeyword{VarStepEpsilon} (\Lkeyval{default} by default,
+accept real value). If this parameter is not set by the user, then
+it is automatically computed using the default first step given by
+the parameter \Lkeyword{plotpoints}. Then, for each step, $f''(x_n)$
+and $f''(x_{n+1})$ are computed and the smaller is used as
+$M_2(f)$, and then the step is approximated. This means that the
+step is constant for second order polynomials.
+
+\subsection{The cosine}
+
+Different value for the tolerance from $0.01$ to $0.000\,1$, a factor $10$ between
+each of them. In black, there is the classic \Lcs{psplot} behavior, and in
+magenta the default variable step behavior.
+
+\begin{center}
+\bgroup
+\psset{algebraic, VarStep=true, unit=2, showpoints=true, linecolor=red}
+\begin{pspicture}(-0,-1)(3.14,2)\psgrid
+ \psplot[VarStepEpsilon=.01]{0}{3.14}{cos(x)}
+ \psplot[VarStepEpsilon=.001]{0}{3.14}{cos(x)+.15}
+ \psplot[VarStepEpsilon=.0001]{0}{3.14}{cos(x)+.3}
+ \psplot[linecolor=magenta]{0}{3.14}{cos(x)+.45}
+ \psplot[VarStep=false, linewidth=2\pslinewidth, linecolor=black]{-0}{3.14}{cos(x)+.6}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{algebraic, VarStep=true, unit=2, showpoints=true, linecolor=red}
+\begin{pspicture}[showgrid=true](-0,-1)(3.14,2)
+ \psplot[VarStepEpsilon=.01]{0}{3.14}{cos(x)}
+ \psplot[VarStepEpsilon=.001]{0}{3.14}{cos(x)+.15}
+ \psplot[VarStepEpsilon=.0001]{0}{3.14}{cos(x)+.3}
+ \psplot[linecolor=magenta]{0}{3.14}{cos(x)+.45}
+ \psplot[VarStep=false,linewidth=1pt,linecolor=black]{-0}{3.14}{cos(x)+.6}
+\end{pspicture}
+\end{lstlisting}
+
+
+\subsection{The Napierian Logarithm}
+
+A really classic example which gives a bad beginning, the tolerance is set to $0.001$.
+
+\begin{center}
+\bgroup
+\psset{algebraic, VarStep=true, linecolor=red, showpoints=true}
+\begin{pspicture}[showgrid=true](0,-5)(16,4)
+ \psplot[VarStep=false, linecolor=black]{.01}{16}{ln(x)+1}
+ \psplot[linecolor=magenta]{.51}{16}{ln(x-1/2)+1/2}
+ \psplot[VarStepEpsilon=.001]{1.01}{16}{ln(x-1)}
+ \psplot[VarStepEpsilon=.01]{1.51}{16}{ln(x-1.5)-100/200}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{algebraic, VarStep=true, linecolor=red, showpoints=true}
+\begin{pspicture}[showgrid=true](0,-5)(16,4)
+ \psplot[VarStep=false, linecolor=black]{.01}{16}{ln(x)+1}
+ \psplot[linecolor=magenta]{.51}{16}{ln(x-1/2)+1/2}
+ \psplot[VarStepEpsilon=.001]{1.01}{16}{ln(x-1)}
+ \psplot[VarStepEpsilon=.01]{1.51}{16}{ln(x-1.5)-100/200}
+\end{pspicture}
+\end{lstlisting}
+
+
+\clearpage
+\subsection{Sine of the inverse of $x$}
+Impossible to draw, but let's try!
+
+\begin{center}
+\bgroup
+\psset{xunit=64,algebraic,VarStep,linecolor=red,showpoints=true,linewidth=1pt}
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStepEpsilon=.0001]{.01}{.25}{sin(1/x)}
+\end{pspicture}\\
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStepEpsilon=.00001]{.01}{.25}{sin(1/x)}
+\end{pspicture}\\
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStepEpsilon=.000001]{.01}{.25}{sin(1/x)}
+\end{pspicture}\\
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStep=false, linecolor=black]{.01}{.25}{sin(1/x)}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{xunit=64,algebraic,VarStep,linecolor=red,showpoints=true,linewidth=1pt}
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStepEpsilon=.0001]{.01}{.25}{sin(1/x)}
+\end{pspicture}\\
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStepEpsilon=.00001]{.01}{.25}{sin(1/x)}
+\end{pspicture}\\
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStepEpsilon=.000001]{.01}{.25}{sin(1/x)}
+\end{pspicture}\\
+\begin{pspicture}[showgrid=true](0,-1)(.5,1)
+ \psplot[VarStep=false, linecolor=black]{.01}{.25}{sin(1/x)}
+\end{pspicture}
+\end{lstlisting}
+
+
+
+
+
+\clearpage
+\subsection{A really complicated function}
+
+Just appreciate the difference between the normal behavior and the plotting with the
+\Lkeyword{varStep} option. The function is:
+
+\[f(x)=x-\frac{x^2}{10}+\ln(x)+\cos(2x)+\sin(x^2)-1\]
+
+\begin{center}
+\bgroup
+\psset{xunit=3, algebraic, VarStep, showpoints=true}
+\begin{pspicture}[showgrid=true](0,-2)(5,6)
+ \psplot[VarStepEpsilon=.0005, linecolor=red]{.1}{5}{x-x^2/10+ln(x)+cos(2*x)+sin(x^2)}
+ \psplot[linecolor=magenta]{.1}{5}{x-x^2/10+ln(x)+cos(2*x)+sin(x^2)+.5}
+ \psplot[VarStep=false]{.1}{5}{x-x^2/10+ln(x)+cos(2*x)+sin(x^2)-1}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{xunit=3, algebraic, VarStep, showpoints=true}
+\begin{pspicture}[showgrid=true](0,-2)(5,6)
+ \psplot[VarStepEpsilon=.0005, linecolor=red]{.1}{5}{x-x^2/10+ln(x)+cos(2*x)+sin(x^2)}
+ \psplot[linecolor=magenta]{.1}{5}{x-x^2/10+ln(x)+cos(2*x)+sin(x^2)+.5}
+ \psplot[VarStep=false]{.1}{5}{x-x^2/10+ln(x)+cos(2*x)+sin(x^2)-1}
+\end{pspicture}
+\end{lstlisting}
+
+
+\clearpage
+\subsection{A hyperbola}
+
+\begin{center}
+\bgroup
+\psset{algebraic, showpoints=true, unit=0.75}
+\begin{pspicture}(-5,-4)(9,6)
+ \psplot[linecolor=black]{-5}{1.8}{(x-1)/(x-2)}
+ \psplot[VarStep=true, VarStepEpsilon=.001, linecolor=red]{2.2}{9}{(x-1)/(x-2)}
+ \psaxes{->}(0,0)(-5,-4)(9,6)
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{algebraic, showpoints=true, unit=0.75}
+\begin{pspicture}(-5,-4)(9,6)
+ \psplot[linecolor=black]{-5}{1.8}{(x-1)/(x-2)}
+ \psplot[VarStep=true, VarStepEpsilon=.001, linecolor=red]{2.2}{9}{(x-1)/(x-2)}
+ \psaxes{->}(0,0)(-5,-4)(9,6)
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\clearpage
+\subsection{Using \nxLcs{psparametricplot}}
+
+\begin{BDef}
+\Lcs{parametricplot}\OptArgs\Largb{t0}\Largb{t1}\OptArg{PS commands}\Largb{x(t) y(t)}
+\end{BDef}
+
+\begin{center}
+\bgroup
+\psset{unit=2.5}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=red,VarStep=true, showpoints=true,
+ VarStepEpsilon=.0001]
+ {-3.14}{3.14}{cos(3*t)|sin(2*t)}
+\end{pspicture}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=blue,VarStep=true, showpoints=false,
+ VarStepEpsilon=.0001]
+ {-3.14}{3.14}{cos(3*t)|sin(2*t)}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{unit=3}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=red,VarStep=true, showpoints=true,
+ VarStepEpsilon=.0001]
+ {-3.14}{3.14}{cos(3*t)|sin(2*t)}
+\end{pspicture}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=blue,VarStep=true, showpoints=false,
+ VarStepEpsilon=.0001]
+ {-3.14}{3.14}{cos(3*t)|sin(2*t)}
+\end{pspicture}
+\end{lstlisting}
+
+
+\begin{center}
+\bgroup
+\psset{unit=2.5}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=red,VarStep=true, showpoints=true,
+ VarStepEpsilon=.0001]
+ {0}{47.115}{cos(5*t)|sin(3*t)}
+\end{pspicture}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=blue,VarStep=true, showpoints=false,
+ VarStepEpsilon=.0001]
+ {0}{47.115}{cos(5*t)|sin(3*t)}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{unit=2.5}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=red,VarStep=true, showpoints=true,
+ VarStepEpsilon=.0001]
+ {0}{47.115}{cos(5*t)|sin(3*t)}
+\end{pspicture}
+\begin{pspicture}[showgrid=true](-1,-1)(1,1)
+\parametricplot[algebraic,linecolor=blue,VarStep=true, showpoints=false,
+ VarStepEpsilon=.0001]
+ {0}{47.115}{cos(5*t)|sin(3*t)}
+\end{pspicture}
+\end{lstlisting}
+
+
+\begin{center}
+\bgroup
+\psset{xunit=.5}
+\begin{pspicture}[showgrid=true](0,0)(12.566,2)
+\parametricplot[algebraic,linecolor=red,VarStep, showpoints=true,
+ VarStepEpsilon=.01]{0}{12.566}{t+cos(-t-Pi/2)|1+sin(-t-Pi/2)}
+\end{pspicture}
+%
+\begin{pspicture}[showgrid=true](0,0)(12.566,2)
+\parametricplot[algebraic,linecolor=blue,VarStep, showpoints=false,
+ VarStepEpsilon=.001]{0}{12.566}{t+cos(-t-Pi/2)|1+sin(-t-Pi/2)}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{xunit=.5}
+\begin{pspicture}[showgrid=true](0,0)(12.566,2)
+\parametricplot[algebraic,linecolor=red,VarStep, showpoints=true,
+ VarStepEpsilon=.01]{0}{12.566}{t+cos(-t-Pi/2)|1+sin(-t-Pi/2)}
+\end{pspicture}
+%
+\begin{pspicture}[showgrid=true](0,0)(12.566,2)
+\parametricplot[algebraic,linecolor=blue,VarStep, showpoints=false,
+ VarStepEpsilon=.001]{0}{12.566}{t+cos(-t-Pi/2)|1+sin(-t-Pi/2)}
+\end{pspicture}
+\end{lstlisting}
+
+
+\section{New math functions and their derivatives}
+
+\subsection{The inverse sine and its derivative}
+
+\begin{center}
+\bgroup
+\psset{unit=1.5}
+\begin{pspicture}[showgrid=true](-1,-2)(1,2)
+ \psplot[linecolor=blue,algebraic]{-1}{1}{asin(x)}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,-2)(1,2)
+ \psplot[linecolor=blue]{-.999}{.999}{asin(x)}
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}[showgrid=true](-1,0)(1,4)
+ \psplot[linecolor=blue]{-.97}{.97}{Derive(1,asin(x))}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.0001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,0)(1,4)
+ \psplot[linecolor=blue]{-.97}{.97}{Derive(1,asin(x))}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{unit=1.5}
+\begin{pspicture}[showgrid=true](-1,-2)(1,2)
+ \psplot[linecolor=blue,algebraic]{-1}{1}{asin(x)}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,-2)(1,2)
+ \psplot[linecolor=blue]{-.999}{.999}{asin(x)}
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}[showgrid=true](-1,0)(1,4)
+ \psplot[linecolor=red]{-.97}{.97}{Derive(1,asin(x))}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.0001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,0)(1,4)
+ \psplot[linecolor=red]{-.97}{.97}{Derive(1,asin(x))}
+\end{pspicture}
+\end{lstlisting}
+
+
+\subsection{The inverse cosine and its derivative}
+
+\begin{center}
+\bgroup
+\psset{unit=1.5}
+\begin{pspicture}[showgrid=true](-1,0)(1,3)
+ \psplot[linecolor=blue,algebraic]{-1}{1}{acos(x)}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,0)(1,3)
+ \psplot[linecolor=blue]{-.999}{.999}{acos(x)}
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}[showgrid=true](-1,-4)(1,-1)
+ \psplot[linecolor=blue]{-.97}{.97}{Derive(1,acos(x))}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.0001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,-4)(1,-1)
+ \psplot[linecolor=blue]{-.97}{.97}{Derive(1,acos(x))}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{unit=1.5}
+\begin{pspicture}[showgrid=true](-1,0)(1,3)
+ \psplot[linecolor=blue,algebraic]{-1}{1}{acos(x)}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,0)(1,3)
+ \psplot[linecolor=blue]{-.999}{.999}{acos(x)}
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}[showgrid=true](-1,-4)(1,-1)
+ \psplot[linecolor=red]{-.97}{.97}{Derive(1,acos(x))}
+\end{pspicture}
+\hspace{1em}
+\psset{algebraic, VarStep, VarStepEpsilon=.0001, showpoints=true}
+\begin{pspicture}[showgrid=true](-1,-4)(1,-1)
+ \psplot[linecolor=red]{-.97}{.97}{Derive(1,acos(x))}
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\subsection{The inverse tangent and its derivative}
+
+\begin{center}
+\bgroup
+\begin{pspicture}[showgrid=true](-4,-2)(4,2)
+\psset{algebraic}
+ \psplot[linecolor=blue,linewidth=1pt]{-4}{4}{atg(x)}
+ \psplot[linecolor=red,VarStep, VarStepEpsilon=.0001, showpoints=true]{-4}{4}{Derive(1,atg(x))}
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}[showgrid=true](-4,-2)(4,2)
+\psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=blue]{-4}{4}{atg(x)}
+ \psplot[linecolor=red]{-4}{4}{Derive(1,atg(x))}
+\end{pspicture}
+\egroup
+\end{center}
+
+
+
+
+
+
+
+\begin{lstlisting}
+\begin{pspicture}[showgrid=true](-4,-2)(4,2)
+\psset{algebraic}
+ \psplot[linecolor=blue,linewidth=1pt]{-4}{4}{atg(x)}
+ \psplot[linecolor=red,VarStep, VarStepEpsilon=.0001, showpoints=true]{-4}{4}{Derive(1,atg(x))}
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}[showgrid=true](-4,-2)(4,2)
+\psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=blue]{-4}{4}{atg(x)}
+ \psplot[linecolor=red]{-4}{4}{Derive(1,atg(x))}
+\end{pspicture}
+\end{lstlisting}
+
+\subsection{Hyperbolic functions}
+
+\begin{center}
+\bgroup
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{sh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{ch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{th(x)}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic, VarStep=true, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{sh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{ch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{th(x)}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{sh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{ch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{th(x)}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic, VarStep=true, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{sh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{ch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{th(x)}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\begin{center}
+\bgroup
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{Derive(1,sh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{Derive(1,ch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{Derive(1,th(x))}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic, VarStep=true, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{Derive(1,sh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{Derive(1,ch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{Derive(1,th(x))}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic,linewidth=1pt}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{Derive(1,sh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{Derive(1,ch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{Derive(1,th(x))}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\hspace{1em}
+\begin{pspicture}(-3,-4)(3,4)
+\psset{algebraic, VarStep=true, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-2}{2}{Derive(1,sh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{-2}{2}{Derive(1,ch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-3}{3}{Derive(1,th(x))}
+ \psaxes{->}(0,0)(-3,-4)(3,4)
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\begin{center}
+\bgroup
+\begin{pspicture}(-7,-3)(7,3)
+\psset{algebraic}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Argsh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{1}{7}{Argch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-.99}{.99}{Argth(x)}
+ \psaxes{->}(0,0)(-7,-3)(7,3)
+\end{pspicture}\\[\baselineskip]
+\begin{pspicture}(-7,-3)(7,3)
+ \psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Argsh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{1.001}{7}{Argch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-.99}{.99}{Argth(x)}
+ \psaxes{->}(0,0)(-7,-3)(7,3)
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\begin{pspicture}(-7,-3)(7,3)
+\psset{algebraic}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Argsh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{1}{7}{Argch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-.99}{.99}{Argth(x)}
+ \psaxes{->}(0,0)(-7,-3)(7,3)
+\end{pspicture}\\[\baselineskip]
+\begin{pspicture}(-7,-3)(7,3)
+ \psset{algebraic, VarStep, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Argsh(x)}
+ \psplot[linecolor=blue,linewidth=1pt]{1.001}{7}{Argch(x)}
+ \psplot[linecolor=green,linewidth=1pt]{-.99}{.99}{Argth(x)}
+ \psaxes{->}(0,0)(-7,-3)(7,3)
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\begin{center}
+\bgroup
+\begin{pspicture}(-7,-0.5)(7,6)
+\psset{algebraic}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Derive(1,Argsh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{1.014}{7}{Derive(1,Argch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-.9}{.9}{Derive(1,Argth(x))}
+ \psaxes{->}(0,0)(-7,0)(7,6)
+\end{pspicture}\\[\baselineskip]
+\begin{pspicture}(-7,-0.5)(7,6)
+\psset{algebraic}
+ \psset{algebraic, VarStep=true, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Derive(1,Argsh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{1.014}{7}{Derive(1,Argch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-.9}{.9}{Derive(1,Argth(x))}
+ \psaxes{->}(0,0)(-7,0)(7,6)
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\begin{pspicture}(-7,-0.5)(7,6)
+\psset{algebraic}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Derive(1,Argsh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{1.014}{7}{Derive(1,Argch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-.9}{.9}{Derive(1,Argth(x))}
+ \psaxes{->}(0,0)(-7,0)(7,6)
+\end{pspicture}\\[\baselineskip]
+\begin{pspicture}(-7,-0.5)(7,6)
+\psset{algebraic}
+ \psset{algebraic, VarStep=true, VarStepEpsilon=.001, showpoints=true}
+ \psplot[linecolor=red,linewidth=1pt]{-7}{7}{Derive(1,Argsh(x))}
+ \psplot[linecolor=blue,linewidth=1pt]{1.014}{7}{Derive(1,Argch(x))}
+ \psplot[linecolor=green,linewidth=1pt]{-.9}{.9}{Derive(1,Argth(x))}
+ \psaxes{->}(0,0)(-7,0)(7,6)
+\end{pspicture}
+\end{lstlisting}
+
+
+\clearpage
+%--------------------------------------------------------------------------------------
+\section[\nxLcs{psplotDiffEqn} -- solving diffential equations]%
+ {\nxLcs{psplotDiffEqn} -- solving diffential equations}
+%--------------------------------------------------------------------------------------
+
+
+ A differential equation of first order is like
+
+\begin{align} y^\prime=f(x,y,y^\prime) \end{align}
+
+
+where $y$ is a function of $x$. We define some vectors $Y=[y, y',
+\cdots , y^{(n-1)}]$ and $Y^\prime=[y^\prime, y^{\prime\prime},
+\cdots , y^{n}]$, depending on the order $n$. The syntax of the
+macro is
+
+\begin{BDef}
+\Lcs{psplotDiffEqn}\OptArgs\Largb{x0}\Largb{x1}\Largb{y0}\Largb{f(x,y,y',...)}
+\end{BDef}
+
+\begin{itemize}\setlength\itemsep{0pt}\setlength\parsep{0pt}\setlength\parskip{0pt}
+\item \verb+options+: the \verb+\psplotDiffEqn+ specific options and all other of PSTricks, which
+make sense;
+\item $x_0$: the start value;
+\item $x_1$: the end value of the definition interval;
+\item $y_0$: the initial values for $y(x_0)\ y'(x_0)\ \ldots$;
+\item $f(x,y,y',...)$: the differential equation, depending to the number of initial values, e.g.:
+ \verb+{0 1}+ for $y_0$ are two initial values, so that we have a differential equation of
+ second order $f(x,y,y')$ and the macro leaves $y\ y'$ on the stack.
+\end{itemize}
+
+The new options are:
+
+
+\begin{itemize}\setlength\itemsep{0pt}\setlength\parsep{0pt}\setlength\parskip{0pt}
+\item \Lkeyword{method}: integration method (\verb+euler+ for order 1 euler method, \verb+rk4+ for
+ 4\textsuperscript{th} order Runge-Kutta method);
+\item \Lkeyword{whichabs}: select the abscissa for plotting the graph, by default it is
+ $x$, but you can specify a number which represent a position in the vector $y$;
+\item \Lkeyword{whichord}: same as precedent for the ordinate, by default $y(0)$;
+\item \Lkeyword{plotfuncx}: describe a ps function for the abscissa, parameter
+ \Lkeyword{whichabs} becomes useless;
+\item \Lkeyword{plotfuncy}: idem for the ordinate;
+\item \Lkeyword{buildvector}: boolean parameter for specifying the input-output of the
+ $f$ description:
+ \begin{description}
+ \item[\texttt{true}] (default): $y$ is put on the stack element by element, $y'$
+ must be given in the same way;
+ \item[\texttt{false}]: $y$ is put on the stack as a vector, $y'$ must be returned
+ in the same way;
+ \end{description}
+
+\item \Lkeyword{algebraic}: algebraic description for $f$, \Lkeyword{buildvector}
+ parameter is useless when activating this option.
+\end{itemize}
+
+
+
+\clearpage
+\subsection{Variable step for differential equations}
+
+A new algorithm has been added for adjusting the step according to the variations of
+the curve. The parameter \Lkeyword{method} has a new possible value : \Lkeyword{varrkiv} to
+activate the \Index{Runge-Kutta} method with variable step, then the parameter
+\Lkeyword{varsteptol} (real value; \verb+.01+ by default) can control the tolerance of
+the algortihm.
+
+\begin{center}
+\bgroup
+\def\Funct{neg}\def\FunctAlg{-y[0]}
+\psset{xunit=1.5, yunit=8, showpoints=true}
+\begin{pspicture}[showgrid=true](0,0)(10,1.2)
+ \psplot[linewidth=6\pslinewidth, linecolor=green, showpoints=false]{0}{10}{Euler x neg exp}
+ \psplotDiffEqn[linecolor=magenta, method=varrkiv, varsteptol=.1, plotpoints=2]{0}{10}{1}{\Funct}
+ \rput(0,.0){\psplotDiffEqn[linecolor=blue, method=varrkiv, varsteptol=.01, plotpoints=2]{0}{10}{1}{\Funct}}
+ \rput(0,.1){\psplotDiffEqn[linecolor=Orange, method=varrkiv, varsteptol=.001, plotpoints=2]{0}{10}{1}{\Funct}}
+ \rput(0,.2){\psplotDiffEqn[linecolor=red, method=varrkiv, varsteptol=.0001, plotpoints=2]{0}{10}{1}{\Funct}}
+ \psset{linewidth=4\pslinewidth,showpoints=false}
+ \rput*(3.3,.9){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](3.3,.9){\small RK ordre 4 : $\varepsilon<10^{-1}$}
+ \rput*(3.3,.8){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](3.3,.8){\small RK ordre 4 : $\varepsilon<10^{-2}$}
+ \rput*(3.3,.7){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](3.3,.7){\small RK ordre 4 : $\varepsilon<10^{-3}$}
+ \rput*(3.3,.6){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](3.3,.6){\small RK ordre 4 : $\varepsilon<10^{-4}$}
+ \rput*(3.3,.5){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](3.3,.5){\small solution exacte}
+\end{pspicture}
+{\captionof{figure}{Equation $y'=-y$ with $y_0=1$.}\label{fig:minusexpvarstep}}
+\egroup
+\end{center}
+
+
+\begin{lstlisting}[wide=true]
+\def\Funct{neg}\def\FunctAlg{-y[0]}
+\psset{xunit=1.5, yunit=8, showpoints=true}
+\begin{pspicture}[showgrid=true](0,0)(10,1.2)
+ \psplot[linewidth=6\pslinewidth, linecolor=green, showpoints=false]{0}{10}{Euler x neg exp}
+ \psplotDiffEqn[linecolor=magenta, method=varrkiv, varsteptol=.1, plotpoints=2]{0}{10}{1}{\Funct}
+ \rput(0,.0){\psplotDiffEqn[linecolor=blue, method=varrkiv, varsteptol=.01, plotpoints=2]{0}{10}{1}{\Funct}}
+ \rput(0,.1){\psplotDiffEqn[linecolor=Orange, method=varrkiv, varsteptol=.001, plotpoints=2]{0}{10}{1}{\Funct}}
+ \rput(0,.2){\psplotDiffEqn[linecolor=red, method=varrkiv, varsteptol=.0001, plotpoints=2]{0}{10}{1}{\Funct}}
+ \psset{linewidth=4\pslinewidth,showpoints=false}
+ \rput*(3.3,.9){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](3.3,.9){\small RK ordre 4 : $\varepsilon<10^{-1}$}
+ \rput*(3.3,.8){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](3.3,.8){\small RK ordre 4 : $\varepsilon<10^{-2}$}
+ \rput*(3.3,.7){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](3.3,.7){\small RK ordre 4 : $\varepsilon<10^{-3}$}
+ \rput*(3.3,.6){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](3.3,.6){\small RK ordre 4 : $\varepsilon<10^{-4}$}
+ \rput*(3.3,.5){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](3.3,.5){\small solution exacte}
+\end{pspicture}
+\end{lstlisting}
+
+
+
+\begin{center}
+\bgroup
+\def\Funct{exch neg}
+\psset{xunit=1.5, yunit=5, method=varrkiv, showpoints=true}%%
+\def\quatrepi{12.5663706144}
+\begin{pspicture}(0,-1)(10,1.3)
+ \psaxes{->}(0,0)(0,-1)(10,1.3)
+ \psplot[linewidth=4\pslinewidth, linecolor=green, algebraic]{0}{10}{cos(x)}
+ \rput(0,.0){\psplotDiffEqn[linecolor=magenta, plotpoints=7, varsteptol=.1]{0}{10}{1 0}{\Funct}}
+ \rput(0,.0){\psplotDiffEqn[linecolor=blue, plotpoints=201, varsteptol=.01]{0}{10}{1 0}{\Funct}}
+ \rput(0,.1){\psplotDiffEqn[linewidth=2\pslinewidth, linecolor=red, varsteptol=.001]{0}{10}{1 0}{\Funct}}
+ \rput(0,.2){\psplotDiffEqn[linecolor=black, varsteptol=.0001]{0}{10}{1 0}{\Funct}}
+ \rput(0,.3){\psplotDiffEqn[linecolor=Orange, varsteptol=.00001]{0}{10}{1 0}{\Funct}}
+ \psset{linewidth=4\pslinewidth,showpoints=false}
+ \rput*(2.3,.9){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](2.3,.9){\small $\varepsilon<10^{-1}$}
+ \rput*(2.3,.8){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](2.3,.8){\small $\varepsilon<10^{-2}$}
+ \rput*(2.3,.7){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](2.3,.7){\small $\varepsilon<10^{-3}$}
+ \rput*(2.3,.6){\psline[linecolor=black](-.75cm,0)}
+ \rput*[l](2.3,.6){\small $\varepsilon<10^{-4}$}
+ \rput*(2.3,.5){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](2.3,.5){\small $\varepsilon<10^{-5}$}
+ \rput*(2.3,.4){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](2.3,.4){\small solution exacte}
+\end{pspicture}
+{\captionof{figure}{Equation $y''=-y$}\label{fig:trigfunc}}
+\egroup
+\end{center}
+
+\begin{lstlisting}[wide=true]
+\def\Funct{exch neg}
+\psset{xunit=1.5, yunit=5, method=varrkiv, showpoints=true}%%
+\def\quatrepi{12.5663706144}
+\begin{pspicture}(0,-1)(10,1.3)
+ \psaxes{->}(0,0)(0,-1)(10,1.3)
+ \psplot[linewidth=4\pslinewidth, linecolor=green, algebraic]{0}{10}{cos(x)}
+ \rput(0,.0){\psplotDiffEqn[linecolor=magenta, plotpoints=7, varsteptol=.1]{0}{10}{1 0}{\Funct}}
+ \rput(0,.0){\psplotDiffEqn[linecolor=blue, plotpoints=201, varsteptol=.01]{0}{10}{1 0}{\Funct}}
+ \rput(0,.1){\psplotDiffEqn[linewidth=2\pslinewidth, linecolor=red, varsteptol=.001]{0}{10}{1 0}{\Funct}}
+ \rput(0,.2){\psplotDiffEqn[linecolor=black, varsteptol=.0001]{0}{10}{1 0}{\Funct}}
+ \rput(0,.3){\psplotDiffEqn[linecolor=Orange, varsteptol=.00001]{0}{10}{1 0}{\Funct}}
+ \psset{linewidth=4\pslinewidth,showpoints=false}
+ \rput*(2.3,.9){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](2.3,.9){\small $\varepsilon<10^{-1}$}
+ \rput*(2.3,.8){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](2.3,.8){\small $\varepsilon<10^{-2}$}
+ \rput*(2.3,.7){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](2.3,.7){\small $\varepsilon<10^{-3}$}
+ \rput*(2.3,.6){\psline[linecolor=black](-.75cm,0)}
+ \rput*[l](2.3,.6){\small $\varepsilon<10^{-4}$}
+ \rput*(2.3,.5){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](2.3,.5){\small $\varepsilon<10^{-5}$}
+ \rput*(2.3,.4){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](2.3,.4){\small solution exacte}
+\end{pspicture}
+\end{lstlisting}
+
+
+
+
+\begin{center}
+\bgroup
+\def\Funct{exch}
+\psset{xunit=4, yunit=1, method=varrkiv, showpoints=true}%%
+\def\quatrepi{12.5663706144}
+\begin{pspicture}(0,-0.5)(3,11)
+ \psaxes{->}(0,0)(3,11)
+ \psplot[linewidth=4\pslinewidth, linecolor=green, algebraic]{0}{3}{ch(x)}
+ \rput(0,.0){\psplotDiffEqn[linecolor=magenta, varsteptol=.1]{0}{3}{1 0}{\Funct}}
+ \rput(0,.3){\psplotDiffEqn[linecolor=blue, varsteptol=.01]{0}{3}{1 0}{\Funct}}
+ \rput(0,.6){\psplotDiffEqn[linecolor=red, varsteptol=.001]{0}{3}{1 0}{\Funct}}
+ \rput(0,.9){\psplotDiffEqn[linecolor=black, varsteptol=.0001]{0}{3}{1 0}{\Funct}}
+ \rput(0,1.2){\psplotDiffEqn[linecolor=Orange, varsteptol=.00001]{0}{3}{1 0}{\Funct}}
+ \psset{linewidth=4\pslinewidth,showpoints=false}
+ \rput*(2.3,.9){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](2.3,.9){\small $\varepsilon<10^{-1}$}
+ \rput*(2.3,.8){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](2.3,.8){\small $\varepsilon<10^{-2}$}
+ \rput*(2.3,.7){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](2.3,.7){\small $\varepsilon<10^{-3}$}
+ \rput*(2.3,.6){\psline[linecolor=black](-.75cm,0)}
+ \rput*[l](2.3,.6){\small $\varepsilon<10^{-4}$}
+ \rput*(2.3,.5){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](2.3,.5){\small $\varepsilon<10^{-5}$}
+ \rput*(2.3,.4){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](2.3,.4){\small solution exacte}
+\end{pspicture}
+\captionof{figure}{Equation $y''=y$}
+\egroup
+\end{center}
+
+\begin{lstlisting}[wide=true]
+\def\Funct{exch}
+\psset{xunit=4, yunit=1, method=varrkiv, showpoints=true}%%
+\def\quatrepi{12.5663706144}
+\begin{pspicture}(0,-0.5)(3,11)
+ \psaxes{->}(0,0)(3,11)
+ \psplot[linewidth=4\pslinewidth, linecolor=green, algebraic]{0}{3}{ch(x)}
+ \rput(0,.0){\psplotDiffEqn[linecolor=magenta, varsteptol=.1]{0}{3}{1 0}{\Funct}}
+ \rput(0,.3){\psplotDiffEqn[linecolor=blue, varsteptol=.01]{0}{3}{1 0}{\Funct}}
+ \rput(0,.6){\psplotDiffEqn[linecolor=red, varsteptol=.001]{0}{3}{1 0}{\Funct}}
+ \rput(0,.9){\psplotDiffEqn[linecolor=black, varsteptol=.0001]{0}{3}{1 0}{\Funct}}
+ \rput(0,1.2){\psplotDiffEqn[linecolor=Orange, varsteptol=.00001]{0}{3}{1 0}{\Funct}}
+ \psset{linewidth=4\pslinewidth,showpoints=false}
+ \rput*(2.3,.9){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](2.3,.9){\small $\varepsilon<10^{-1}$}
+ \rput*(2.3,.8){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](2.3,.8){\small $\varepsilon<10^{-2}$}
+ \rput*(2.3,.7){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](2.3,.7){\small $\varepsilon<10^{-3}$}
+ \rput*(2.3,.6){\psline[linecolor=black](-.75cm,0)}
+ \rput*[l](2.3,.6){\small $\varepsilon<10^{-4}$}
+ \rput*(2.3,.5){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](2.3,.5){\small $\varepsilon<10^{-5}$}
+ \rput*(2.3,.4){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](2.3,.4){\small solution exacte}
+\end{pspicture}
+\end{lstlisting}
+
+
+
+
+\clearpage
+\subsection{Equation of second order}
+
+Here is the traditional simulation of two stars attracting each
+other according to the classical gravitation law in
+$\displaystyle\frac{1}{r^2}$. In 2-Dimensions, the system to be
+solved is composed of four second order differential equations. In
+order to be described, each of them gives two first order
+equations, then we obtain a 8 sized vectorial equation. In the
+following example the masses of the stars are 1 and 20.
+
+\[
+\left\{
+\begin{array}[m]{l}
+ x''_1=\displaystyle\frac{M_2}{r^2}\cos(\theta)\\
+ y''_1=\displaystyle\frac{M_2}{r^2}\sin(\theta)\\
+ x''_2=\displaystyle\frac{M_1}{r^2}\cos(\theta)\\
+ y''_2=\displaystyle\frac{M_1}{r^2}\sin(\theta)\\
+\end{array}
+\right.
+\mbox{ avec }
+\left\{
+\begin{array}[m]{l}
+ r^2=(x_1-x_2)^2+(y_1-y_2)^2\\
+ \cos(\theta)=\displaystyle\frac{(x_1-x_2)}{r}\\
+ \sin(\theta)=\displaystyle\frac{(y_1-y_2)}{r}\\
+\end{array}
+\right.
+\mbox{%
+\begin{pspicture}[shift=-2](5,4)\psset{arrowscale=2}
+ \psframe[linewidth=.75\pslinewidth](5,4)
+ \pstGeonode[PosAngle={-90,90}](1,1){M_1}(4,3){M_2}
+ \pstHomO[HomCoef=.33, PointSymbol=none]{M_1}{M_2}[F_1]
+ \psline[arrows=->](M_1)(F_1)
+ \pstHomO[HomCoef=.33, PointSymbol=none]{M_2}{M_1}[F_2]
+ \psline[arrows=->, arrowscale=2](M_2)(F_2)
+ \pstGeonode[PointSymbol=none, PointName=none](M_2|M_1){A}
+ \psline[linewidth=.5\pslinewidth](M_1)(A)
+ \pstMarkAngle{A}{M_1}{M_2}{$\theta$}
+ \ncline[linewidth=.5\pslinewidth, offset=.5, arrows=<->]{M_1}{M_2}
+ \ncput*{$r$}
+\end{pspicture}}
+\]
+
+\begin{table}[!htbp]
+ \centering\small
+ \begin{tabular}{|l@{}>{\ttfamily}l@{}>{ \ttfamily \%\% }l|}
+ \hline
+ && x1 y1 x'1 y'1 x2 y2 x'2 y'2\\
+ &/yp2 exch def /xp2 exch def /ay2 exch def /ax2 exch def&mise en variables\\
+ &/yp1 exch def /xp1 exch def /ay1 exch def /ax1 exch def&mise en variables\\
+ &/ro2 ax2 ax1 sub dup mul ay2 ay1 sub dup mul add def&calcul de r*r\\
+ &xp1 yp1&\\
+ &ax2 ax1 sub ro2 sqrt div ro2 div&calcul de x''1\\
+ &ay2 ay1 sub ro2 sqrt div ro2 div&calcul de y''1\\
+ &xp2 yp2&\\
+ &3 index -20 mul&calcul de x''2=-20x''1\\
+ &3 index -20 mul&calcul de y''2=-20y''1\\
+ \hline
+ \end{tabular}
+ \caption{\PS source code for the gravitational interaction}\label{intgravcode}
+\end{table}
+
+\begin{table}[!htbp]
+ \centering
+ \small\newcommand{\POW}{\symbol{'136}}
+ \begin{tabular}{|l@{}>{\ttfamily}l@{}>{ \ttfamily \%\% }l|}
+ \hline
+ &y[2]|&y'[0]\\
+ &y[3]|&y'[1]\\
+ &(y[4]-y[0])/((y[4]-y[0])\POW 2+(y[5]-y[1])\POW 2)\POW 1.5|&y'[2]=y''[0]\\
+ &(y[5]-y[1])/((y[4]-y[0])\POW 2+(y[5]-y[1])\POW 2)\POW 1.5|&y'[3]=y''[1]\\
+ &y[6]|&y'[4]\\
+ &y[7]|&y'[5]\\
+ &20*(y[0]-y[4])/((y[4]-y[0])\POW 2+(y[5]-y[1])\POW 2)\POW 1.5|&y'[6]=y''[4]\\
+ &20*(y[1]-y[5])/((y[4]-y[0])\POW 2+(y[5]-y[1])\POW 2)\POW 1.5&y'[7]=y''[5]\\
+ \hline
+ \end{tabular}
+ \caption{Algebraic description for the gravitational interaction}\label{intgravalgcode}
+\end{table}
+
+\newcommand\Grav{%
+ /yp2 exch def /xp2 exch def /ay2 exch def /ax2 exch def
+ /yp1 exch def /xp1 exch def /ay1 exch def /ax1 exch def
+ /ro2 ax2 ax1 sub dup mul ay2 ay1 sub dup mul add def
+ xp1 yp1
+ ax2 ax1 sub ro2 sqrt div ro2 div
+ ay2 ay1 sub ro2 sqrt div ro2 div
+ xp2 yp2
+ 3 index -20 mul
+ 3 index -20 mul}
+\newcommand\GravAlg{%
+ y[2]|y[3]|%
+ (y[4]-y[0])/((y[4]-y[0])^2+(y[5]-y[1])^2)^1.5|%
+ (y[5]-y[1])/((y[4]-y[0])^2+(y[5]-y[1])^2)^1.5|%
+ y[6]|y[7]|%
+ 20*(y[0]-y[4])/((y[4]-y[0])^2+(y[5]-y[1])^2)^1.5|%
+ 20*(y[1]-y[5])/((y[4]-y[0])^2+(y[5]-y[1])^2)^1.5}
+%% 0 1 2 3 4 5 6 7
+%% x1 y1 x'1 y'1 x2 y2 x'2 y'2
+
+
+\begin{LTXexample}[width=5cm,wide]
+\def\InitCond{ 1 1 .1 0 -1 -1 -2 0}
+\begin{pspicture}[shift=-2,showgrid=true](-3,-1.75)(2,1.5)
+ \psplotDiffEqn[whichabs=0, whichord=1, linecolor=blue, method=rk4, plotpoints=100]{0}{3.95}{\InitCond}{\Grav}
+ \psset{showpoints=true,whichabs=4, whichord=5}
+ \psplotDiffEqn[linecolor=black, method=varrkiv, varsteptol=.0001, plotpoints=200]{0}{3.9}{\InitCond}{\Grav}
+\end{pspicture}
+\end{LTXexample}
+\vspace{-2ex}
+{\captionof{figure}{Gravitational interaction: fixed landmark, trajectory of the stars}\label{fig:InterGravRepFix}}
+
+
+
+\bigskip
+\begin{LTXexample}[width=5cm,wide]
+\def\InitCond{ 1 1 .1 0 -1 -1 -2 0}
+\begin{pspicture}[shift=-1.5,showgrid=true](-4,-1.75)(1,1)
+ \psplotDiffEqn[linecolor=red, plotpoints=200,method=varrkiv, varsteptol=.0001, showpoints=true,
+ plotfuncx=y dup 4 get exch 0 get sub,
+ plotfuncy=dup 5 get exch 1 get sub ]{0}{3.9}{\InitCond}{\Grav}
+\end{pspicture}
+\end{LTXexample}
+\vspace{-2ex}
+{\captionof{figure}{Gravitational interaction : landmark defined by one star}\label{fig:IGnewrep}}
+
+
+\begin{center}
+\bgroup
+\def\InitCond{ 1 1 .1 0 -1 -1 -2 0}
+\psset{xunit=2}
+\begin{pspicture}[showgrid=true](0,0)(8,9)
+ \psset{showpoints=true}
+ \psplotDiffEqn[linecolor=red, method=varrkiv, plotpoints=2, varsteptol=.0001,
+ plotfuncy=dup 6 get dup mul exch 7 get dup mul add sqrt]{0}{8}{\InitCond}{\Grav}
+ \psplotDiffEqn[linecolor=blue, method=varrkiv, plotpoints=2, varsteptol=.0001,
+ plotfuncy=dup 2 get dup mul exch 3 get dup mul add sqrt]{0}{8}{\InitCond}{\Grav}
+\end{pspicture}
+\captionof{figure}{Gravitational interaction : speeds of the
+stars} \egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{xunit=2}
+\begin{pspicture}[showgrid=true](0,0)(8,9)
+ \psset{showpoints=true}
+ \psplotDiffEqn[linecolor=red, method=varrkiv, plotpoints=2, varsteptol=.0001,
+ plotfuncy=dup 6 get dup mul exch 7 get dup mul add sqrt]{0}{8}{\InitCond}{\Grav}
+ \psplotDiffEqn[linecolor=blue, method=varrkiv, plotpoints=2, varsteptol=.0001,
+ plotfuncy=dup 2 get dup mul exch 3 get dup mul add sqrt]{0}{8}{\InitCond}{\Grav}
+\end{pspicture}
+\end{lstlisting}
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{Simple equation of first order $y'=y$}
+%--------------------------------------------------------------------------------------
+
+For the initial value $y(0)=1$ we have the solution $y(x)=e^x$. $y$ is always
+on the stack, so we have to do nothing. Using the \Lkeyword{algebraic} option, we write it
+as \verb$y[0]$. The following example shows different solutions depending to the number of plotpoints
+with $y_0=1$:
+
+
+\begin{center}
+\bgroup
+\psset{xunit=4, yunit=.4}
+\begin{pspicture}(3,19)\psgrid[subgriddiv=1]
+ \psplot[linewidth=6\pslinewidth, linecolor=green]{0}{3}{Euler x exp}
+ \psplotDiffEqn[linecolor=magenta,plotpoints=16,algebraic]{0}{3}{1}{y[0]}
+ \psplotDiffEqn[linecolor=blue,plotpoints=151]{0}{3}{1}{}
+ \psplotDiffEqn[linecolor=red,method=rk4,plotpoints=15]{0}{3}{1}{}
+ \psplotDiffEqn[linecolor=Orange,method=rk4,plotpoints=4]{0}{3}{1}{}
+ \psset{linewidth=4\pslinewidth}
+ \rput*(0.35,19){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](0.35,19){\small Euler order 1 $h=0{,}2$}
+ \rput*(0.35,17){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](0.35,17){\small Euler order 1 $h=0{,}02$}
+ \rput*(0.35,15){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](0.35,15){\small RK ordre 4 $h=1$}
+ \rput*(0.35,13){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](0.35,13){\small RK ordre 4 $h=0{,}2$}
+ \rput*(0.35,11){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](0.35,11){\small solution exacte}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{xunit=4, yunit=.4}
+\begin{pspicture}(3,19)\psgrid[subgriddiv=1]
+ \psplot[linewidth=6\pslinewidth, linecolor=green]{0}{3}{Euler x exp}
+ \psplotDiffEqn[linecolor=magenta,plotpoints=16,algebraic]{0}{3}{1}{y[0]}
+ \psplotDiffEqn[linecolor=blue,plotpoints=151]{0}{3}{1}{}
+ \psplotDiffEqn[linecolor=red,method=rk4,plotpoints=15]{0}{3}{1}{}
+ \psplotDiffEqn[linecolor=Orange,method=rk4,plotpoints=4]{0}{3}{1}{}
+ \psset{linewidth=4\pslinewidth}
+ \rput*(0.35,19){\psline[linecolor=magenta](-.75cm,0)}
+ \rput*[l](0.35,19){\small Euler order 1 $h=0{,}2$}
+ \rput*(0.35,17){\psline[linecolor=blue](-.75cm,0)}
+ \rput*[l](0.35,17){\small Euler order 1 $h=0{,}02$}
+ \rput*(0.35,15){\psline[linecolor=Orange](-.75cm,0)}
+ \rput*[l](0.35,15){\small RK ordre 4 $h=1$}
+ \rput*(0.35,13){\psline[linecolor=red](-.75cm,0)}
+ \rput*[l](0.35,13){\small RK ordre 4 $h=0{,}2$}
+ \rput*(0.35,11){\psline[linecolor=green](-.75cm,0)}
+ \rput*[l](0.35,11){\small solution exacte}
+\end{pspicture}
+\end{lstlisting}
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{$y'=\displaystyle\frac{2-ty}{4-t^2}$}% $
+%--------------------------------------------------------------------------------------
+
+For the initial value $y(0)=1$ the exact solution is
+$y(x)=\displaystyle\frac{t+\sqrt{4-t^2}}{2}$. The function $f$
+described in PostScript code is like (y is still on the stack):
+\begin{lstlisting}[style=syntax]
+x %% y x
+mul %% x*y
+2 exch sub %% 2-x*y
+4 x dup mul %% 2-x*y 4 x^2
+sub %% 2-x*y 4-x^2
+div %% (2-x*y)/(4-x^2)
+\end{lstlisting}
+\noindent
+The following example uses $y_0=1$.
+
+\begin{lstlisting}[style=syntax]
+\newcommand{\InitCond}{1}
+\newcommand{\Func}{x mul 2 exch sub 4 x dup mul sub div}
+\newcommand{\FuncAlg}{(2-x*y[0])/(4-x^2)}
+\end{lstlisting}
+
+\begin{center}
+\bgroup
+\psset{xunit=6.4, yunit=9.6, showpoints=false}
+\begin{pspicture}(0,1)(2,1.5) \psgrid[griddots=10](0,1)(2,1.5)
+ { \psset{linewidth=4\pslinewidth,linecolor=lightgray}
+ \psplot{0}{1.8}{x dup dup mul 4 exch sub sqrt add 2 div}
+ \psplot{1.8}{2}{x dup dup mul 4 exch sub sqrt add 2 div} }
+ \def\InitCond{1}
+ \def\Func{x mul 2 exch sub 4 x dup mul sub div}
+ \psplotDiffEqn[linecolor=magenta, plotpoints=20]{0}{1.9}{\InitCond}{\Func}
+ \psplotDiffEqn[linecolor=blue, plotpoints=191]{0}{1.9}{\InitCond}{\Func}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11,%
+ algebraic]{0}{1.9}{\InitCond}{(2-x*y[0])/(4-x^2)}
+ \psplotDiffEqn[linecolor=Orange, method=rk4, plotpoints=21,%
+ algebraic]{0}{1.9}{\InitCond}{(2-x*y[0])/(4-x^2)}
+ \psset{linewidth=4\pslinewidth}\small
+ \rput*(0,1.4){\psline[linecolor=magenta](-.75cm,0)}\rput*[l](0,1.4){Euler order 1 $h=0{,}1$}
+ \rput*(0,1.35){\psline[linecolor=blue](-.75cm,0)}\rput*[l](0,1.35){Euler order 1 $h=0{,}01$}
+ \rput*(0,1.3){\psline[linecolor=Orange](-.75cm,0)}\rput*[l](0,1.3){RK order 4 $h=0{,}19$}
+ \rput*(0,1.25){\psline[linecolor=red](-.75cm,0)}\rput*[l](0,1.25){RK order 4 $h=0{,}095$}
+ \rput*(0,1.2){\psline[linecolor=lightgray](-.75cm,0)}\rput*[l](0,1.2){exactly}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}[xrightmargin=-1cm,xleftmargin=-1cm]
+\psset{xunit=6.4, yunit=9.6, showpoints=false}
+\begin{pspicture}(0,1)(2,1.7) \psgrid[subgriddiv=5]
+ { \psset{linewidth=4\pslinewidth,linecolor=lightgray}
+ \psplot{0}{1.8}{x dup dup mul 4 exch sub sqrt add 2 div}
+ \psplot{1.8}{2}{x dup dup mul 4 exch sub sqrt add 2 div} }
+ \def\InitCond{1}
+ \def\Func{x mul 2 exch sub 4 x dup mul sub div}
+ \psplotDiffEqn[linecolor=magenta, plotpoints=20]{0}{1.9}{\InitCond}{\Func}
+ \psplotDiffEqn[linecolor=blue, plotpoints=191]{0}{1.9}{\InitCond}{\Func}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11,%
+ algebraic]{0}{1.9}{\InitCond}{(2-x*y[0])/(4-x^2)}
+ \psplotDiffEqn[linecolor=Orange, method=rk4, plotpoints=21,%
+ algebraic]{0}{1.9}{\InitCond}{(2-x*y[0])/(4-x^2)}
+ \psset{linewidth=4\pslinewidth}
+ \rput*(0.3,1.6){\psline[linecolor=magenta](-.75cm,0)}\rput*[l](0.3,1.6){\small Euler order 1 $h=0{,}1$}
+ \rput*(0.3,1.55){\psline[linecolor=blue](-.75cm,0)}\rput*[l](0.3,1.55){\small Euler order 1 $h=0{,}01$}
+ \rput*(0.3,1.5){\psline[linecolor=Orange](-.75cm,0)}\rput*[l](0.3,1.5){\small RK order 4 $h=0{,}19$}
+ \rput*(0.3,1.45){\psline[linecolor=red](-.75cm,0)}\rput*[l](0.3,1.45){\small RK order 4 $h=0{,}095$}
+ \rput*(0.3,1.4){\psline[linecolor=lightgray](-.75cm,0)}\rput*[l](0.3,1.4){\small exactly}
+\end{pspicture}
+\end{lstlisting}
+
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{$y'=-2xy$}
+%--------------------------------------------------------------------------------------
+
+For $y(-1)=\frac{1}{e}$ we get $y(x)=e^{-x^2}$.
+
+\begin{center}
+\bgroup
+\psset{unit=4}
+\begin{pspicture}(-1,0)(3,1.1)\psgrid
+ \psplot[linewidth=4\pslinewidth,linecolor=gray]{-1}{3}{Euler x dup mul neg exp}
+ \psset{plotpoints=9}
+ \psplotDiffEqn[linecolor=cyan]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psplotDiffEqn[linecolor=yellow, method=rk4]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psset{plotpoints=21}
+ \psplotDiffEqn[linecolor=blue]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psplotDiffEqn[linecolor=Orange, method=rk4]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psset{linewidth=2\pslinewidth}
+ \rput*(2,1){\psline[linecolor=Orange](-0.25,0)}
+ \rput*[l](2,1){RK}
+ \rput*(2,.9){\psline[linecolor=blue](-0.25,0)}
+ \rput*[l](2,.9){\textsc{Euler}-1}
+ \rput*(2,.8){\psline[linecolor=gray](-0.25,0)}
+ \rput*[l](2,.8){solution}
+\end{pspicture}
+\egroup
+\end{center}
+
+
+\begin{lstlisting}
+\psset{unit=4}
+\begin{pspicture}(-1,0)(3,1.1)\psgrid
+ \psplot[linewidth=4\pslinewidth,linecolor=gray]{-1}{3}{Euler x dup mul neg exp}
+ \psset{plotpoints=9}
+ \psplotDiffEqn[linecolor=cyan]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psplotDiffEqn[linecolor=yellow, method=rk4]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psset{plotpoints=21}
+ \psplotDiffEqn[linecolor=blue]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psplotDiffEqn[linecolor=Orange, method=rk4]{-1}{3}{1 Euler div}{x -2 mul mul}
+ \psset{linewidth=2\pslinewidth}
+ \rput*(2,1){\psline[linecolor=Orange](-0.25,0)}
+ \rput*[l](2,1){RK}
+ \rput*(2,.9){\psline[linecolor=blue](-0.25,0)}
+ \rput*[l](2,.9){\textsc{Euler}-1}
+ \rput*(2,.8){\psline[linecolor=gray](-0.25,0)}
+ \rput*[l](2,.8){solution}
+\end{pspicture}
+\end{lstlisting}
+
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{Spiral of Cornu}
+%--------------------------------------------------------------------------------------
+
+The integrals of \Index{Fresnel}:
+\begin{align} x & =\int^t_0\cos\frac{\pi t^2}{2}\mathrm{d}t \\
+ y & =\int^t_0\sin\frac{\pi t^2}{2}\mathrm{d}t \\
+\intertext{with}
+ \dot{x} &= \cos\frac{\pi t^2}{2} \\
+ \dot{y} & =\sin\frac{\pi t^2}{2}
+ \end{align}
+
+\begin{lstlisting}
+\psset{unit=8}
+\begin{pspicture}(1,1)\psgrid[subgriddiv=5]
+ \psplotDiffEqn[whichabs=0,whichord=1,linecolor=red,method=rk4,algebraic,%
+ plotpoints=500,showpoints=true]{0}{10}{0 0}{cos(Pi*x^2/2)|sin(Pi*x^2/2)}
+\end{pspicture}
+\end{lstlisting}
+
+
+\begin{center}
+\bgroup
+\psset{unit=8}
+\begin{pspicture}(1,1)\psgrid[subgriddiv=5]
+ \psplotDiffEqn[whichabs=0,whichord=1,linecolor=red,method=rk4,algebraic,%
+ plotpoints=500,showpoints=true]{0}{10}{0 0}{cos(Pi*x^2/2)|sin(Pi*x^2/2)}
+\end{pspicture}
+\egroup
+\end{center}
+
+
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{Lotka-Volterra}
+%--------------------------------------------------------------------------------------
+
+The Lotka-Volterra model describes interactions between two species in an ecosystem, a
+predator and a prey. This represents our first multi-species model. Since we are considering
+two species, the model will involve two equations, one which describes how the prey
+population changes and the second which describes how the predator population changes.
+
+For concreteness let us assume that the prey in our model are rabbits, and that the
+predators are foxes. If we let $R(t)$ and $F(t)$ represent the number of rabbits and
+foxes, respectively, that are alive at time t, then the Lotka-Volterra model is:
+%
+\begin{align}
+\dot R &= a\cdot R - b\cdot R\cdot F\\
+\dot F &= e\cdot b\cdot R\cdot F - c\cdot F
+\end{align}
+%
+where the parameters are defined by:
+\begin{description}
+\item[a] is the natural growth rate of rabbits in the absence of predation,
+\item[c] is the natural death rate of foxes in the absence of food (rabbits),
+\item[b] is the death rate per encounter of rabbits due to predation,
+\item[e] is the efficiency of turning predated rabbits into foxes.
+\end{description}
+
+The Stella model representing the \Index{Lotka-Volterra} model will be slightly more complex than the
+single species models we've dealt with before. The main difference is that our model will have
+two stocks (reservoirs), one for each species. Each species will have its own birth and death
+rates. In addition, the Lotka-Volterra model involves four parameters rather than two. All told,
+the Stella representation of the Lotka-Volterra model will use two stocks, four flows, four
+converters and many connectors.
+
+\bgroup
+\begin{center}
+\def\InitCond{ 0 10 10}%% xa ya xl
+\def\Faiglelapin{\Vaigle*(y[2]-y[0])/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vaigle*y[1]/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vlapin}
+\def\Vlapin{1} \def\Vaigle{1.6}
+\psset{unit=.7,subgriddiv=0,gridcolor=lightgray,method=adams,algebraic,%
+ plotpoints=20,showpoints=true}
+\begin{pspicture}[showgrid=true](-3,-3)(10,10)
+ \psplotDiffEqn[plotfuncy=pop 0,whichabs=2,linecolor=red]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[whichabs=0,whichord=1,linecolor=black,method=rk4]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[whichabs=0,whichord=1,linecolor=blue]{0}{10}{\InitCond}{\Faiglelapin}
+\end{pspicture}
+\end{center}
+
+\begin{lstlisting}[label={fig:aiglelapin},xrightmargin=-1.5cm]
+\def\InitCond{ 0 10 10}%% xa ya xl
+\def\Faiglelapin{\Vaigle*(y[2]-y[0])/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vaigle*y[1]/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vlapin}
+\def\Vlapin{1} \def\Vaigle{1.6}
+\psset{unit=.7,subgriddiv=0,gridcolor=lightgray,method=adams,algebraic,%
+ plotpoints=20,showpoints=true}
+\begin{pspicture}[showgrid=true](-3,-3)(10,10)
+ \psplotDiffEqn[plotfuncy=pop 0,whichabs=2,linecolor=red]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[whichabs=0,whichord=1,linecolor=black,method=rk4]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[whichabs=0,whichord=1,linecolor=blue]{0}{10}{\InitCond}{\Faiglelapin}
+\end{pspicture}
+\end{lstlisting}
+
+
+\begin{center}
+\def\InitCond{ 0 10 10}%% xa ya xl
+\def\Faiglelapin{\Vaigle*(y[2]-y[0])/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vaigle*y[1]/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vlapin}
+\def\Vlapin{1} \def\Vaigle{1.6}
+\psset{unit=.7,subgriddiv=0,gridcolor=lightgray,method=adams,algebraic,%
+ plotpoints=20,showpoints=true}
+\begin{pspicture}[showgrid=true](0,-0.25)(10,14)
+ \psplotDiffEqn[plotfuncy=dup 1 get dup mul exch dup 0 get exch 2 get sub dup
+ mul add sqrt,linecolor=red,method=rk4]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[plotfuncy=dup 1 get dup mul exch dup 0 get exch 2 get sub dup
+ mul add sqrt,linecolor=blue]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[plotfuncy=pop Func aload pop pop dup mul exch dup mul add sqrt,
+ linecolor=yellow]{0}{10}{\InitCond}{\Faiglelapin}
+\end{pspicture}
+\end{center}
+\egroup
+
+\begin{lstlisting}[label={fig:aiglelapin2},xrightmargin=-1.5cm]
+\def\InitCond{ 0 10 10}%% xa ya xl
+\def\Faiglelapin{\Vaigle*(y[2]-y[0])/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vaigle*y[1]/sqrt(y[1]^2+(y[2]-y[0])^2)|%
+ -\Vlapin}
+\def\Vlapin{1} \def\Vaigle{1.6}
+\psset{unit=.7,subgriddiv=0,gridcolor=lightgray,method=adams,algebraic,%
+ plotpoints=20,showpoints=true}
+\begin{pspicture}[showgrid=true](10,12)
+ \psplotDiffEqn[plotfuncy=dup 1 get dup mul exch dup 0 get exch 2 get sub dup
+ mul add sqrt,linecolor=red,method=rk4]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[plotfuncy=dup 1 get dup mul exch dup 0 get exch 2 get sub dup
+ mul add sqrt,linecolor=blue]{0}{10}{\InitCond}{\Faiglelapin}
+ \psplotDiffEqn[plotfuncy=pop Func aload pop pop dup mul exch dup mul add sqrt,
+ linecolor=yellow]{0}{10}{\InitCond}{\Faiglelapin}
+\end{pspicture}
+\end{lstlisting}
+
+
+%--------------------------------------------------------------------------------------
+\subsubsection{$y''=y$}
+%--------------------------------------------------------------------------------------
+
+Beginning with the initial equation $\displaystyle y(x)=Ae^x+Be^{-x}$ we get the hyperbolic
+trigonometrical functions.
+
+\begin{center}
+\bgroup
+\def\Funct{exch} \psset{xunit=5cm, yunit=0.75cm}
+\begin{pspicture}(0,-0.25)(2,7)\psgrid[subgriddiv=1,griddots=10]
+ \psplot[linewidth=4\pslinewidth, linecolor=green]{0}{2}{Euler x exp} %%e^x
+ \psplotDiffEqn[linecolor=magenta, plotpoints=11]{0}{2}{1 1}{\Funct}
+ \psplotDiffEqn[linecolor=blue, plotpoints=101]{0}{2}{1 1}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11]{0}{2}{1 1}{\Funct}
+ \psplot[linewidth=4\pslinewidth, linecolor=green]{0}{2}{Euler dup x exp %%ch(x)
+ exch x neg exp add 2 div}
+ \psplotDiffEqn[linecolor=magenta, plotpoints=11]{0}{2}{1 0}{\Funct}
+ \psplotDiffEqn[linecolor=blue, plotpoints=101]{0}{2}{1 0}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11]{0}{2}{1 0}{\Funct}
+ \psplot[linewidth=4\pslinewidth, linecolor=green]{0}{2}{Euler dup x exp
+ exch x neg exp sub 2 div} %%sh(x)
+ \psplotDiffEqn[linecolor=magenta, plotpoints=11]{0}{2}{0 1}{\Funct}
+ \psplotDiffEqn[linecolor=blue, plotpoints=101]{0}{2}{0 1}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11]{0}{2}{0 1}{\Funct}
+ \rput*(1.3,.9){\psline[linecolor=magenta](-.75cm,0)}\rput*[l](1.3,.9){\small\textsc{Euler} order 1 $h=1$}
+ \rput*(1.3,.8){\psline[linecolor=blue](-.75cm,0)}\rput*[l](1.3,.8){\small\textsc{Euler} order 1 $h=0{,}1$}
+ \rput*(1.3,.7){\psline[linecolor=red](-.75cm,0)}\rput*[l](1.3,.7){\small RK order 4 $h=1$}
+ \rput*(1.3,.6){\psline[linecolor=green](-.75cm,0)}\rput*[l](1.3,.6){\small exact solution}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}[label={fig:minusexp},xrightmargin=-1.5cm]
+\def\Funct{exch} \psset{xunit=5cm, yunit=0.75cm}
+\begin{pspicture}(0,-0.25)(2,7)\psgrid[subgriddiv=1,griddots=10]
+ \psplot[linewidth=4\pslinewidth, linecolor=green]{0}{2}{Euler x exp} %%e^x
+ \psplotDiffEqn[linecolor=magenta, plotpoints=11]{0}{2}{1 1}{\Funct}
+ \psplotDiffEqn[linecolor=blue, plotpoints=101]{0}{2}{1 1}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11]{0}{2}{1 1}{\Funct}
+ \psplot[linewidth=4\pslinewidth, linecolor=green]{0}{2}{Euler dup x exp %%ch(x)
+ exch x neg exp add 2 div}
+ \psplotDiffEqn[linecolor=magenta, plotpoints=11]{0}{2}{1 0}{\Funct}
+ \psplotDiffEqn[linecolor=blue, plotpoints=101]{0}{2}{1 0}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11]{0}{2}{1 0}{\Funct}
+ \psplot[linewidth=4\pslinewidth, linecolor=green]{0}{2}{Euler dup x exp
+ exch x neg exp sub 2 div} %%sh(x)
+ \psplotDiffEqn[linecolor=magenta, plotpoints=11]{0}{2}{0 1}{\Funct}
+ \psplotDiffEqn[linecolor=blue, plotpoints=101]{0}{2}{0 1}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=11]{0}{2}{0 1}{\Funct}
+ \rput*(1.3,.9){\psline[linecolor=magenta](-.75cm,0)}\rput*[l](1.3,.9){\small\textsc{Euler} order 1 $h=1$}
+ \rput*(1.3,.8){\psline[linecolor=blue](-.75cm,0)}\rput*[l](1.3,.8){\small\textsc{Euler} order 1 $h=0{,}1$}
+ \rput*(1.3,.7){\psline[linecolor=red](-.75cm,0)}\rput*[l](1.3,.7){\small RK order 4 $h=1$}
+ \rput*(1.3,.6){\psline[linecolor=green](-.75cm,0)}\rput*[l](1.3,.6){\small exact solution}
+\end{pspicture}
+\end{lstlisting}
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{$y''=-y$}
+%--------------------------------------------------------------------------------------
+\begin{center}
+\bgroup
+\def\Funct{exch neg}
+\psset{xunit=1, yunit=4}
+\def\quatrepi{12.5663706144}%%4pi=12.5663706144
+\begin{pspicture}(0,-1.25)(\quatrepi,1.25)\psgrid[subgriddiv=1,griddots=10]
+ \psplot[linewidth=4\pslinewidth,linecolor=green]{0}{\quatrepi}{x RadtoDeg cos}%%cos(x)
+ \psplotDiffEqn[linecolor=blue, plotpoints=201]{0}{3.1415926}{1 0}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=31]{0}{\quatrepi}{1 0}{\Funct}
+ \psplot[linewidth=4\pslinewidth,linecolor=green]{0}{\quatrepi}{x RadtoDeg sin} %%sin(x)
+ \psplotDiffEqn[linecolor=blue,plotpoints=201]{0}{3.1415926}{0 1}{\Funct}
+ \psplotDiffEqn[linecolor=red,method=rk4, plotpoints=31]{0}{\quatrepi}{0 1}{\Funct}
+ \rput*(3.3,.9){\psline[linecolor=magenta](-.75cm,0)}\rput*[l](3.3,.9){\small Euler order 1 $h=1$}
+ \rput*(3.3,.8){\psline[linecolor=blue](-.75cm,0)}\rput*[l](3.3,.8){\small Euler order 1 $h=0{,}1$}
+ \rput*(3.3,.7){\psline[linecolor=red](-.75cm,0)}\rput*[l](3.3,.7){\small RK order 4 $h=1$}
+ \rput*(3.3,.6){\psline[linecolor=green](-.75cm,0)}\rput*[l](3.3,.6){\small exact solution}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}[label={fig:minusexp2}]
+\def\Funct{exch neg}
+\psset{xunit=1, yunit=4}
+\def\quatrepi{12.5663706144}%%4pi=12.5663706144
+\begin{pspicture}(0,-1.25)(\quatrepi,1.25)\psgrid[subgriddiv=1,griddots=10]
+ \psplot[linewidth=4\pslinewidth,linecolor=green]{0}{\quatrepi}{x RadtoDeg cos}%%cos(x)
+ \psplotDiffEqn[linecolor=blue, plotpoints=201]{0}{3.1415926}{1 0}{\Funct}
+ \psplotDiffEqn[linecolor=red, method=rk4, plotpoints=31]{0}{\quatrepi}{1 0}{\Funct}
+ \psplot[linewidth=4\pslinewidth,linecolor=green]{0}{\quatrepi}{x RadtoDeg sin} %%sin(x)
+ \psplotDiffEqn[linecolor=blue,plotpoints=201]{0}{3.1415926}{0 1}{\Funct}
+ \psplotDiffEqn[linecolor=red,method=rk4, plotpoints=31]{0}{\quatrepi}{0 1}{\Funct}
+ \rput*(3.3,.9){\psline[linecolor=magenta](-.75cm,0)}\rput*[l](3.3,.9){\small Euler order 1 $h=1$}
+ \rput*(3.3,.8){\psline[linecolor=blue](-.75cm,0)}\rput*[l](3.3,.8){\small Euler order 1 $h=0{,}1$}
+ \rput*(3.3,.7){\psline[linecolor=red](-.75cm,0)}\rput*[l](3.3,.7){\small RK order 4 $h=1$}
+ \rput*(3.3,.6){\psline[linecolor=green](-.75cm,0)}\rput*[l](3.3,.6){\small exact solution}
+\end{pspicture}
+\end{lstlisting}
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{The mechanical pendulum: $y''=-\frac{g}{l}\sin(y)$}% $
+%--------------------------------------------------------------------------------------
+
+For small \Index{oscillation}s $\sin(y)\simeq y$:
+
+\[ y(x)=y_0\cos\left(\sqrt{\frac{g}{l}}x\right) \]
+
+The function $f$ is written in PostScript code:
+
+\begin{lstlisting}[style=syntax]
+exch RadtoDeg sin -9.8 mul %% y' -gsin(y)
+\end{lstlisting}
+
+
+
+\begin{center}
+\bgroup
+\def\Func{y[1]|-9.8*sin(y[0])}
+\psset{yunit=2,xunit=4,algebraic,linewidth=1.5pt}
+\begin{pspicture}(0,-2.25)(3,2.25)
+ \psaxes{->}(0,0)(0,-2)(3,2)
+ \psplot[linewidth=3\pslinewidth, linecolor=Orange]{0}{3}{.1*cos(sqrt(9.8)*x)}
+ \psset{method=rk4,plotpoints=50,linecolor=blue}
+ \psplotDiffEqn{0}{3}{.1 0}{\Func}
+ \psplot[linewidth=3\pslinewidth,linecolor=Orange]{0}{3}{.25*cos(sqrt(9.8)*x)}
+ \psplotDiffEqn{0}{3}{.25 0}{\Func}
+ \psplotDiffEqn{0}{3}{.5 0}{\Func}
+ \psplotDiffEqn{0}{3}{1 0}{\Func}
+ \psplotDiffEqn[plotpoints=100]{0}{3}{Pi 2 div 0}{\Func}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}[label=fig:second]
+\def\Func{y[1]|-9.8*sin(y[0])}
+\psset{yunit=2,xunit=4,algebraic,linewidth=1.5pt}
+\begin{pspicture}(0,-2.25)(3,2.25)
+ \psaxes{->}(0,0)(0,-2)(3,2)
+ \psplot[linewidth=3\pslinewidth, linecolor=Orange]{0}{3}{.1*cos(sqrt(9.8)*x)}
+ \psset{method=rk4,plotpoints=50,linecolor=blue}
+ \psplotDiffEqn{0}{3}{.1 0}{\Func}
+ \psplot[linewidth=3\pslinewidth,linecolor=Orange]{0}{3}{.25*cos(sqrt(9.8)*x)}
+ \psplotDiffEqn{0}{3}{.25 0}{\Func}
+ \psplotDiffEqn{0}{3}{.5 0}{\Func}
+ \psplotDiffEqn{0}{3}{1 0}{\Func}
+ \psplotDiffEqn[plotpoints=100]{0}{3}{Pi 2 div 0}{\Func}
+\end{pspicture}
+\end{lstlisting}
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\subsubsection{$y''=-\frac{y'}{4}-2y$}% $
+%--------------------------------------------------------------------------------------
+
+For $y_0=5$ and $y'_0=0$ the solution is:
+
+\[
+5e^{-\frac{x}{8}}\left(\cos\left(\omega x\right)+\frac{\sin(\omega x)}{8\omega}\right)
+\mbox{ avec } \omega=\frac{\sqrt{127}}{8}
+\]
+
+\begin{center}
+\bgroup
+\psset{xunit=.6,yunit=0.8,plotpoints=500}
+\begin{pspicture}(0,-4.25)(26,5.25)
+ \psaxes{->}(0,0)(0,-4)(26,5)
+ \psplot[plotpoints=200,linewidth=4\pslinewidth,linecolor=gray]{0}{26}{%
+ Euler x -8 div exp x 127 sqrt 8 div mul RadtoDeg dup cos 5 mul exch sin 127 sqrt div 5 mul add mul}
+ \psplotDiffEqn[linecolor=red,linewidth=5\pslinewidth]{0}{26}{5 0}
+ {dup 3 1 roll -4 div exch 2 mul sub}
+ \psplotDiffEqn[linecolor=black,algebraic]{0}{26}{5 0} {y[1]|-y[1]/4-2*y[0]}
+ \psset{method=rk4, plotpoints=50}
+ \psplotDiffEqn[linecolor=blue,linewidth=5\pslinewidth]{0}{26}{5 0}{%
+ dup 3 1 roll -4 div exch 2 mul sub}
+ \psplotDiffEqn[linecolor=black,algebraic]{0}{26}{5 0}{y[1]|-y[1]/4-2*y[0]}
+\end{pspicture}
+\egroup
+\end{center}
+
+\begin{lstlisting}
+\psset{xunit=.6,yunit=0.8,plotpoints=500}
+\begin{pspicture}(0,-4.25)(26,5.25)
+ \psaxes{->}(0,0)(0,-4)(26,5)
+ \psplot[plotpoints=200,linewidth=4\pslinewidth,linecolor=gray]{0}{26}{%
+ Euler x -8 div exp x 127 sqrt 8 div mul RadtoDeg dup cos 5 mul exch sin 127 sqrt div 5 mul add mul}
+ \psplotDiffEqn[linecolor=red,linewidth=5\pslinewidth]{0}{26}{5 0}
+ {dup 3 1 roll -4 div exch 2 mul sub}
+ \psplotDiffEqn[linecolor=black,algebraic]{0}{26}{5 0} {y[1]|-y[1]/4-2*y[0]}
+ \psset{method=rk4, plotpoints=50}
+ \psplotDiffEqn[linecolor=blue,linewidth=5\pslinewidth]{0}{26}{5 0}{%
+ dup 3 1 roll -4 div exch 2 mul sub}
+ \psplotDiffEqn[linecolor=black,algebraic]{0}{26}{5 0}{y[1]|-y[1]/4-2*y[0]}
+\end{pspicture}
+\end{lstlisting}
+
+
+\clearpage
+\subsection{Save final state of a equation}
+With the macros \Lcs{BeginSaveFinalState} and \Lcs{EndSaveFinalState} the
+end values of a differential equation
+can be saved and then used with the optional argument \Lkeyword{GetFinalState}
+as starting values for another equation.
+
+\begin{lstlisting}
+\psset{unit=10cm,linewidth=2pt}
+\begin{pspicture}(1,1)\psgrid[subgridcolor=black!20,subgriddiv=20]
+\BeginSaveFinalState
+ \psplotDiffEqn[
+ whichabs=0,whichord=1,linecolor=red,method=rk4,
+ plotpoints=10,showpoints=true]{0}{1}{0 0}{
+ pop pop
+ x dup mul 2 div 180 mul cos %% dx/dt
+ x dup mul 2 div 180 mul sin %% dy/dt
+ }
+ \psplotDiffEqn[GetFinalState,
+ whichabs=0,whichord=1,linecolor=blue,method=rk4,%FinalState,
+ plotpoints=10,showpoints=true]{1}{2}{0 0}{
+ pop pop
+ x dup mul 2 div 180 mul cos %% dx/dt
+ x dup mul 2 div 180 mul sin %% dy/dt
+ }
+ \psplotDiffEqn[GetFinalState,
+ whichabs=0,whichord=1,linecolor=cyan,method=rk4,%FinalState,
+ plotpoints=19,showpoints=true]{2}{3}{0 0 }{
+ pop pop
+ x dup mul 2 div 180 mul cos %% dx/dt
+ x dup mul 2 div 180 mul sin %% dy/dt
+ }
+\EndSaveFinalState
+\end{pspicture}
+\end{lstlisting}
+
+
+\bigskip
+\begin{center}
+\psset{unit=6cm,linewidth=2pt}
+\begin{pspicture}(1,1)\psgrid[subgridcolor=black!20,subgriddiv=20]
+\BeginSaveFinalState
+ \psplotDiffEqn[
+ whichabs=0,whichord=1,linecolor=red,method=rk4,
+ plotpoints=10,showpoints=true]{0}{1}{0 0}{
+ pop pop
+ x dup mul 2 div 180 mul cos %% dx/dt
+ x dup mul 2 div 180 mul sin %% dy/dt
+ }
+ \psplotDiffEqn[GetFinalState,
+ whichabs=0,whichord=1,linecolor=blue,method=rk4,%FinalState,
+ plotpoints=10,showpoints=true]{1}{2}{0 0}{
+ pop pop
+ x dup mul 2 div 180 mul cos %% dx/dt
+ x dup mul 2 div 180 mul sin %% dy/dt
+ }
+ \psplotDiffEqn[GetFinalState,
+ whichabs=0,whichord=1,linecolor=cyan,method=rk4,%FinalState,
+ plotpoints=19,showpoints=true]{2}{3}{0 0 }{
+ pop pop
+ x dup mul 2 div 180 mul cos %% dx/dt
+ x dup mul 2 div 180 mul sin %% dy/dt
+ }
+\EndSaveFinalState
+\end{pspicture}
+\end{center}
+
+\psset{unit=1cm,linewidth=0.75pt}
+
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\section{\nxLcs{psMatrixPlot}}\label{sec:psMatrix}
+%--------------------------------------------------------------------------------------
+
+This macro allows you to visualize a matrix. The datafile must be
+defined as a PostScript matrix named \Lps{dotmatrix}:
+\begin{lstlisting}[style=syntax]
+/dotmatrix [ % <------------ important line
+0 1 1 0 0 0 0 1 1 1
+0 1 1 0 1 1 1 0 1 0
+1 0 1 1 0 0 0 1 1 0
+0 0 1 0 0 0 0 0 1 1
+1 1 1 1 1 0 1 0 0 1
+0 0 1 1 0 1 0 1 1 1
+1 0 0 0 1 1 0 0 0 1
+0 0 0 1 1 1 0 1 1 0
+1 1 0 0 0 0 1 0 0 1
+1 0 1 0 0 1 1 1 0 0
+] def % <------------ important line
+\end{lstlisting}
+
+Only the value 0 is important, in which case nothing happens, and
+for all other cases a dot is printed. The syntax of the macro is:
+
+\begin{BDef}
+\Lcs{psMatrixPlot}\OptArgs\Largb{rows}\Largb{columns}\Largb{data file}
+\end{BDef}
+
+The \Index{matrix} is scanned line by line from the the first one to the
+last. In general it appears as a bottom-to-top version of the
+above listed matrix, the first row $0\,1\,1\,0\,0\,0\,0\,1\,1\,1$
+is the first plotted line ($y=1$). With the option
+\Lkeyword{ChangeOrder}=\true\ it looks exactly like the above view.
+
+\bgroup
+\begin{center}
+\psscalebox{0.6}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+ \psaxes{->}(11,11)
+ \psMatrixPlot[dotsize=1.1cm,dotstyle=square*,linecolor=magenta]%
+ {10}{10}{data/matrix.data}
+ \psMatrixPlot[dotsize=.5cm,dotstyle=o,ChangeOrder]{10}{10}{data/matrix.data}
+\end{pspicture}}\quad
+\psscalebox{0.6}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+ \psaxes[ticksize=-5pt 0]{->}(11,11)
+ \psMatrixPlot[dotsize=1.1cm,dotstyle=square*,linecolor=magenta,XYoffset=-0.5]%
+ {10}{10}{data/matrix.data}
+ \psMatrixPlot[dotsize=.5cm,dotstyle=o,ChangeOrder,XYoffset=-0.5]{10}{10}{data/matrix.data}
+\end{pspicture}}
+\end{center}
+
+\begin{lstlisting}
+\psscalebox{0.6}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+ \psaxes[ticksize=-5pt 0]{->}(11,11)
+ \psMatrixPlot[dotsize=1.1cm,dotstyle=square*,linecolor=magenta]%
+ {10}{10}{data/matrix.data}
+ \psMatrixPlot[dotsize=.5cm,dotstyle=o,ChangeOrder]{10}{10}{data/matrix.data}
+\end{pspicture}}\quad
+\psscalebox{0.6}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+ \psaxes{->}(11,11)
+ \psMatrixPlot[dotsize=1.1cm,dotstyle=square*,linecolor=magenta,XYoffset=-0.5]%
+ {10}{10}{data/matrix.data}
+ \psMatrixPlot[dotsize=.5cm,dotstyle=o,ChangeOrder,XYoffset=-0.5]{10}{10}{data/matrix.data}
+\end{pspicture}}
+\end{lstlisting}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(-0.5,-0.75)(11,11)
+ \psaxes[ticksize=-5pt 0]{->}(11,11)
+ \psMatrixPlot[dotscale=3,dotstyle=*,linecolor=blue]{10}{8}{data/matrix.data}
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+With the \Lkeyword{colorType}=1 the data is printed as continous color
+in the range of the wavelength. The smallest value of the data array
+is set to red and the biggest value is set to violett. All other values
+are substituted by the corresponding color of the wavlength.
+\Lkeyword{colorType}=2 ist the same, but vice versa
+with the color, from violet to red. \Lkeyword{colorType}=3 is the grayscale
+image and \Lkeyword{colorType}=4 the same invers.
+
+The following examples use a 200$\times$200
+matrix data, which is saved as /dotmatrix [...] in the file \LFile{pstricks-add-doc.dat}.
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(10,10)
+ \psMatrixPlot[colorType=1,xStep=0.05,yStep=0.05]{200}{200}{data/dotmatrix.data}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(10,10)
+ \psMatrixPlot[colorType=2,xStep=0.05,yStep=0.05]{200}{200}{data/dotmatrix.data}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(10,10)
+ \psMatrixPlot[colorType=3,xStep=0.05,yStep=0.05]{200}{200}{data/dotmatrix.data}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(10,10)
+ \psMatrixPlot[colorType=4,xStep=0.05,yStep=0.05]{200}{200}{data/dotmatrix.data}
+\end{pspicture}
+\end{LTXexample}
+\egroup
+
+\clearpage
+With the \Lkeyword{colorType}=5 the color setting can be user defined by the
+optional argument \Lkeyword{colorTypeDef}. On the stack is the current value
+which can be used for the setting but must be left on the stack when everything
+is finished. The following example prints the 0 as color white, the value 1 as
+black and all other values depending to the corresponding gray value.
+
+
+\begin{center}
+\psscalebox{0.7}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+\psaxes[ticksize=-5pt 0]{->}(11,11)
+\psMatrixPlot[
+ colorType=5,
+ colorTypeDef={
+ dup /value exch def % save value and leave one on the stack
+ value Min sub dMaxMin div neg 1 add 300 mul 400 add \pswavelengthToGRAY
+ value 0 eq \pslbrace 1 \psrbrace if %
+ value 1 eq \pslbrace 0 \psrbrace if
+ setgray
+ },
+ dotsize=1.1cm,xStep=1,yStep=1,dotstyle=square*]{10}{10}{data/matrix1.data}
+\end{pspicture}}
+\end{center}
+
+
+\begin{lstlisting}
+\begin{filecontents}{data/matrix1.data}
+/dotmatrix [ % <------------ important line
+3 0 0 0 0 0 0 0 1 2
+0 0 0 0 0 0 0 1 2 1
+8 0 0 0 0 0 1 2 1 0
+0 0 0 0 0 1 2 1 0 0
+0 0 0 0 1 2 1 0 0 0
+9 0 0 1 2 1 3 0 0 0
+0 0 1 2 1 4 0 0 0 0
+0 1 2 1 5 0 0 0 0 0
+1 2 1 6 0 0 0 0 0 0
+2 1 7 0 0 0 0 0 0 3
+] def % <------------ important line
+\end{filecontents}
+\psscalebox{0.7}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+\psaxes[ticksize=-5pt 0]{->}(11,11)
+\psMatrixPlot[
+ colorType=5,
+ colorTypeDef={
+ dup /value exch def % save value and leave one on the stack
+ value Min sub dMaxMin div neg 1 add 300 mul 400 add \pswavelengthToGRAY
+ value 0 eq \pslbrace 1 \psrbrace if %
+ value 1 eq \pslbrace 0 \psrbrace if
+ setgray
+ },
+ dotsize=1.1cm,xStep=1,yStep=1,dotstyle=square*]{10}{10}{data/matrix1.data}
+\end{pspicture}}
+\end{lstlisting}
+
+
+\Lps{if} statements in the color definition must be enclosed with \Lcs{pslbrace} and \Lcs{psrbrace}
+when they are parentheses used in PostScript. In the above example the color definition should be
+modified when the matrix is a real big one, in such a case a nested \Lps{ifelse} makes more sense:
+
+\begin{lstlisting}
+ colorTypeDef={
+ dup /value exch def
+ value 0 eq
+ \pslbrace 1 setgray \psrbrace
+ \pslbrace value 1 eq
+ \pslbrace 0 setgray \psrbrace
+ \pslbrace Min sub dMaxMin div neg 1 add 300 mul 400 add
+ \pswavelengthToGRAY setgray \psrbrace ifelse
+ \psrbrace ifelse
+ },
+\end{lstlisting}
+
+Replace the \Lcs{pslbrace} and \Lcs{psrbrace} with \{ and \} if it maybe confusing to read:
+
+\begin{lstlisting}
+ dup /value exch def
+ value 0 eq
+ { 1 setgray }
+ { value 1 eq
+ { 0 setgray }
+ { Min sub dMaxMin div neg 1 add 300 mul 400 add
+ \pswavelengthToGRAY setgray } ifelse
+ } ifelse
+\end{lstlisting}
+
+Another possibility is to define the color procedure onside the data file, where
+it \emph{must} be named \Lps{colorTypeDef}. If such a definition exists, the one from
+the optional argument \Lkeyword{colorTypeDef} will be ignored. There can be no
+\TeX-specific code inside this definition because it is read on PostScript level,
+the reason why \Lcs{pswavelengthToGRAY} cannot be used.
+
+\begin{center}
+\psscalebox{0.7}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+\psaxes[ticksize=-5pt 0]{->}(11,11)
+\psMatrixPlot[
+ colorType=5,dotsize=1.1cm,xStep=1,yStep=1,dotstyle=square*]{10}{10}{data/matrix2.data}
+\end{pspicture}}
+\end{center}
+
+\begin{lstlisting}
+\begin{filecontents}{data/matrix2.data}
+/colorTypeDef {
+ dup /value exch def
+ value 0 eq
+ { 1 setgray }
+ { value 1 eq
+ { 0 setgray }
+ { Min sub dMaxMin div neg 1 add 300 mul 400 add
+% \pswavelengthToRGB not possible
+ tx@addDict begin wavelengthToRGB Red Green Blue end
+ setrgbcolor
+ } ifelse
+ } ifelse
+} def
+/dotmatrix [ % <------------ important line
+3 0 0 0 0 0 0 0 1 2
+0 0 0 0 0 0 0 1 2 1
+8 0 0 0 0 0 1 2 1 0
+0 0 0 0 0 1 2 1 0 0
+0 0 0 0 1 2 1 0 0 0
+9 0 0 1 2 1 3 0 0 0
+0 0 1 2 1 4 0 0 0 0
+0 1 2 1 5 0 0 0 0 0
+1 2 1 6 0 0 0 0 0 0
+2 1 7 0 0 0 0 0 0 3
+] def % <------------ important line
+\end{filecontents}
+\psscalebox{0.7}{%
+\begin{pspicture}(-0.5,-0.75)(11,11)
+\psaxes[ticksize=-5pt 0]{->}(11,11)
+\psMatrixPlot[colorType=5,dotsize=1.1cm,xStep=1,yStep=1,
+ dotstyle=square*]{10}{10}{data/matrix1.data}
+\end{pspicture}}
+\end{lstlisting}
+
+
+
+%--------------------------------------------------------------------------------------
+\section{Dashed Lines}
+%--------------------------------------------------------------------------------------
+Tobias Nähring has implemented an enhanced feature for dashed
+lines. The number of arguments is no longer limited.
+
+\begin{BDef}
+\Lkeyword{dash}=value1\OptArg*{unit} value2\OptArg*{unit} \ldots
+\end{BDef}
+
+\begin{LTXexample}[width=0.4\linewidth]
+\psset{linewidth=2.5pt,unit=0.6}
+\begin{pspicture}(-5,-4)(5,4)
+ \psgrid[subgriddiv=0,griddots=10,gridlabels=0pt]
+ \psset{linestyle=dashed}
+ \pscurve[dash=5mm 1mm 1mm 1mm,linewidth=0.1](-5,4)(-4,3)(-3,4)(-2,3)
+ \psline[dash=5mm 1mm 1mm 1mm 1mm 1mm 1mm 1mm 1mm 1mm](-5,0.9)(5,0.9)
+ \psccurve[linestyle=solid](0,0)(1,0)(1,1)(0,1)
+ \psccurve[linestyle=dashed,dash=5mm 2mm 0.1 0.2,linetype=0](0,0)(-2.5,0)(-2.5,-2.5)(0,-2.5)
+ \pscurve[dash=3mm 3mm 1mm 1mm,linecolor=red,linewidth=2pt](5,-4)(5,2)(4.5,3.5)(3,4)(-5,4)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\section{Ticks and other marks along a curve}
+\subsection{Quick overview}
+
+The macros described below allow you to place tick and other marks along an arbitrary
+parametric curve with placement rules similar to those used by \Lcs{psaxes} in
+the \LPack{pst-plot} package. You have to define a metric function along the curve to
+govern tick placement. That function can be a specified function of \texttt{x,y} which
+should increase along the curve, or it can be an function whose increment is a specified
+positive function of \texttt{x, y, dx, dy, ds} where the last term is the arc-length element
+that you could specify alternately as \texttt{dx dup mul dy dup mul add sqrt}.
+% start new material
+
+
+In addition, a new command \Lcs{Put} is proposed, expanding as appropriate to \Lcs{rput} or \Lcs{uput}. Its syntax is
+
+\begin{BDef}
+\LcsStar{Put}\OptArgs\OptArg*{\Largb{<ref>}}\Largr{<position>}\Largb{<stuff>}
+\end{BDef}
+
+where the optional \texttt{*} blanks the background, the optional \OptArgs\ may be used to specify a rotation
+using any form acceptable to \Lcs{SpecialCoor} (eg, \nxLkeyword{rot=45} or \Lkeyword{rot}\verb|={(1,1)}|
+or \Lkeyword{rot}\verb|=(P)|, and \Larg{ref} takes one of
+two forms: \verb=(a)= a refpt such as \texttt{Bl}, in which case \Lcs{rput} is called; (b) a polar form of offset
+(eg, \verb=7pt;30=, or \verb=;(P)= --- in the latter case, \Ldim{pslabelsep} is substituted for the missing
+radius), in which case a modified form of \Lcs{uput} is called. The idea of \Lcs{Put} is to allow \texttt{position},
+\texttt{ref} and \texttt{rot} to be specified in any of the forms acceptable to \Lcs{SpecialCoor} and to do so with
+the same output no matter what form is used. The cost of this consistency is that \Lcs{Put} can lead to results
+that differ from \Lcs{uput} in some special cases.
+
+
+\subsection{Details}
+Suppose you have drawn a parametric curve using \Lcs{psparametricplot}, and you wish to
+indicate some points on the curve using tick-marks like those on the axes. This is a
+two-step process, the first of which serves to define at the PostScript level a
+number of data arrays containing information about the curve. Those arrays are used
+in the second step to compute tick positions and draw the ticks. The first step is
+to run the macro \Lcs{pscurvepoints}. For example,
+
+\begin{verbatim}
+\pscurvepoints[plotpoints=20]{0}{6}{t t t mul 12 div}{Pt}%
+\end{verbatim}
+makes a virtual (ie, data only---nothing is rendered) polyline with 20 vertices approximating
+the curve $x(t)=t, y(t)=t^2/12$, $0\le t\le 6$. The last argument \texttt{Pt} is the root name
+given to the data arrays. PostScript arrays will be created with the following names: \texttt{Pt.X, Pt.Y}
+for the coordinates of the vertices, \texttt{PtDelta.X, PtDelta.Y} for the increments between the
+vertices (using, eg, \texttt{PtDelta.X[2]=Pt.X[2]-Pt.X[1]}) and \texttt{PtNormal.X, PtNormal.Y} for
+a vector normal to \texttt{PtDelta.X, PtDelta.Y} in the visual, not mathematical, sense.
+(Both senses are the same if the scales on the axes are identical.) The \texttt{Normal} is
+always constructed so as to point ``upward'' (ie, to your left) as you traverse the curve
+in the positive direction. The PostScript variable \texttt{unitratio} provides the ratio of
+the unit on the y axis to that on x axis, and \texttt{unitratiosq} is its square. All of
+these PostScript objects are stored in the main \texttt{pstricks} dictionary \Lps{tx@Dict}
+which should be automatically made available when using many \texttt{pstricks} macros.
+If \texttt{gs} returns you an error message like
+\begin{verbatim}
+Error: /undefined in Pt.X
+\end{verbatim}
+then you may need to enclose the offending PostScript code within a block of the form
+\begin{verbatim}
+tx@Dict begin ... end
+\end{verbatim}
+so that the dictionary is made available.
+
+With this preparation, the main tick-making macro may be run. For example,
+\begin{verbatim}
+\pspolylineticks{Pt}{ dx dy add 3 div }{1}{2}%
+\end{verbatim}
+looks for data arrays made using \Lcs{pscurvepoints} with the root name \texttt{Pt}. The next argument,
+\texttt{dx dy add 3 div}, specifies the (PostScript) function of increments that should be used to
+construct the metric. If the keyword \verb|metricInitValue| is defined, eg, with
+\Lcs{psset}\Largb{\Lkeyword{metricInitValue}=2.5}, it is used as the initial value of the metric,
+otherwise it is defined to be 0. In the previous example, the increment function is always
+positive, and care should be taken to guarantee this is so or the results will not be meaningful.
+(If we wanted to use arc-length, the function would have been \texttt{ds}, assuming equal scales on
+the axes.) The last two arguments determine the index of the first tick and the number of ticks.
+Tick numbering begins with index 0, so the example says to drop the first tick and draw the
+next 2 ticks. In this example, where all keywords take their default values, ticks are
+potentially located at values on the curve where the metric takes a positive integer value.
+In the arc-length example, the tick with index 0 is at the beginning of the curve, and subsequent
+ticks are at unit distance, measured along the curve. At each index where a tick is drawn, a
+\Lcs{pnode} is created: In this example, you create nodes \texttt{PtTick1, PtTick2} on the curve
+where the ticks are located. This is handy for placing labels using, eg, \Lcs{Put}. In
+addition, PostScript data arrays (in this example, \texttt{PtTickN.X, PtTickN.Y} of the normals
+at these nodes are stored in the dictionary \texttt{TDict}. More importantly, the tangent and
+normal vectors at \texttt{PtTick0} etc are constructed as nodes with names \texttt{PtTangent0, PtNormal0}
+etc. See the last example below for typical usage.
+
+The shape of the ticks is governed by the keywords \Lkeyword{ticksize} (default value \texttt{-4pt 4pt})
+ and \Lkeyword{tickwidth} (default value \verb|.5\linewidth|.) With the default settings, ticks
+ are drawn perpendicular the the curve extending \texttt{4pt} to each side. The line
+\begin{verbatim}
+\pspolylineticks[ticksize=-6pt 6pt]{Pt}{ dx dy add 3 div }{1}{2}%
+\end{verbatim}
+would draw longer ticks than the default.
+
+Placement of the ticks is governed by the keywords \Lkeyword{Ds} and \Lkeyword{Os}, whose meaning for the
+curve is similar to (but not the same as) the meanings of \Lkeyword{Dx} and \Lkeyword{Ox} with respect to the x axis.
+That is, if \texttt{Ds=2} and \texttt{Os=0}, ticks will be drawn where the metric takes
+values 0, 2, 4 and so on. More generally, ticks are placed where the metric takes
+value \texttt{Os, Os+Ds, Os+2*Ds,...}, as long as those positions are on the curve. If \Lkeyword{Os}
+has an empty value as a result, say, of \verb|\psset{Os=}|, then \Lkeyword{Os} is set internally
+to the initial metric value. If \Lkeyword{Ds} has an empty value, it is set internally to the
+final metric value less the initial metric value, divided by 10.
+
+To draw major and minor ticks requires two passes---one to draw the minor ticks and then one to draw the major ticks.
+
+Note that a ticks may be placed at arbitrary metric values on the curve by running the macro once for each point, like:
+\begin{verbatim}
+\pspolylineticks[ticksize=-6pt 6pt,Os=1.3]{Pt}{ dx dy add 3 div }{0}{1}%
+\pspolylineticks[ticksize=-6pt 6pt,Os=2.4]{Pt}{ dx dy add 3 div }{0}{1}%
+\end{verbatim}
+
+You may also dispense entirely with the tick and use the macro to generate a node sequence
+that can be used to place other graphic objects. For example:
+\begin{verbatim}
+\pspolylineticks[ticksize=0pt 0pt]{Pt}{ dx dy add 3 div }{0}{3}%
+%This defines nodes PtTick0..PtTick2
+\multido{\iA=0+1}{3}{\psdot(PtTick\iA)}
+\end{verbatim}
+
+
+There is another way to define a metric function without using increments. If the keywork \Lkeyword{metricFunction} is set to \true,
+then the function you present as an argument to \Lcs{pspolylineticks} must be a function of
+$x$ and $y$ only, and must be designed to increase along the curve. It is useful only in
+those cases where, in essence, the increment function can be explicitly integrated.
+For example, in the elliptical motion of planets and comets around the sun, it is not hard
+to integrate the area function explicitly, and this provides a convenient metric, being proportional to time elapsed.
+
+There is some useful information left in the log by these macros.
+They report the starting and ending values of the metric function,
+the the range of indices for the Tick related arrays.
+
+\subsection{Examples}
+The examples in this section make use of very recent (as of May, 2010) versions
+of \LPack{pstricks} and related packages.
+%If the \texttt{pst-grapha} package is not available on CTAN, download it from
+%\begin{verbatim}
+%http://math.ucsd.edu/~msharpe/pst-grapha.dmg
+%\end{verbatim}
+
+The first couple of examples are constructed entirely by hand, and have no interest
+other than to illustrate what is going on under the surface in the simplest case.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,4)
+\psline[showpoints=true](1,2)(4,0)(9,3)%
+\uput[180](1,2){$s=0$}%
+\uput[-90](4,0){$s=1$}%
+\uput[0](9,3){$s=2$}%
+\makeatletter% need to use macro names containing @
+\pstVerb{tx@Dict begin %the pstricks dictionary
+% declare arrays of length 3 (indices 0,1,2) to hold points, differences and normals
+/unitratiosq 1 def % yunit=xunit
+/P.X [ 1 4 9 ] def %array of x coords
+/P.Y [ 2 0 3 ] def %array of y coords
+/PDelta.X [ 0 3 5 ] def % 3=4-1, 5=9-4, 0 never used
+/PDelta.Y [ 0 -2 3 ] def % -2=0-2, 3=3-0, 0 never used
+% normal to (3,-2) is (2,3), normal to (5,3) is (-3,5)
+/PNormal.X [ 2 2 -3 ] def % index 0 =index 1
+/PNormal.Y [ 3 3 5 ] def % index 0 = index 1
+end }
+\def\Ppointcount{2}
+\makeatother % make ticks using metric function with values 0,1,2
+\pspolylineticks[Os=.5,Ds=1]{P}{1}{0}{2}
+\uput[-135](PTick0){$s=0.5$}% % ticks at s=0.5,1.5 (increment function =1)
+\uput[-45](PTick1){$s=1.5$}%
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+Now the same data, but with arc-length as metric. We change the last few lines:
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,4)
+\psline[showpoints=true](1,2)(4,0)(9,3)%
+%\uput[180](1,2){$s=0$}%
+%\uput[-90](4,0){$s=1$}%
+%\uput[0](9,3){$s=2$}%
+\makeatletter% need to use macro names containing @
+\pstVerb{tx@Dict begin %the pstricks dictionary
+% declare arrays of length 3 (indices 0,1,2) to hold points,
+% differences and normals
+/unitratiosq 1 def % yunit=xunit
+/P.X [ 1 4 9 ] def %array of x coords
+/P.Y [ 2 0 3 ] def %array of y coords
+/PDelta.X [ 0 3 5 ] def % 3=4-1, 5=9-4, 0 never used
+/PDelta.Y [ 0 -2 3 ] def % -2=0-2, 3=3-0, 0 never used
+% normal to (3,-2) is (2,3), normal to (5,3) is (-3,5)
+/PNormal.X [ 2 2 -3 ] def % index 0 =index 1
+/PNormal.Y [ 3 3 5 ] def % index 0 = index 1
+end }
+\def\Ppointcount{2}
+\makeatother
+% make ticks using metric function arc-length
+\pspolylineticks[Os=1,Ds=1]{P}{ ds }{0}{9}
+% ticks at s=1,2... (increment function = distance)
+\uput[-135](PTick0){$s=1$}%
+\uput[-135](PTick1){$s=2$}%
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\clearpage
+Once again the same data, but with metric equal to the x coordinate. Change the last few lines to:
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,4)
+\psline[showpoints=true](1,2)(4,0)(9,3)%
+%\uput[180](1,2){$s=0$}%
+%\uput[-90](4,0){$s=1$}%
+%\uput[0](9,3){$s=2$}%
+\makeatletter% need to use macro names containing @
+\pstVerb{tx@Dict begin %the pstricks dictionary
+% declare arrays of length 3 (indices 0,1,2) to hold points,
+% differences and normals
+/unitratiosq 1 def % yunit=xunit
+/P.X [ 1 4 9 ] def %array of x coords
+/P.Y [ 2 0 3 ] def %array of y coords
+/PDelta.X [ 0 3 5 ] def % 3=4-1, 5=9-4, 0 never used
+/PDelta.Y [ 0 -2 3 ] def % -2=0-2, 3=3-0, 0 never used
+% normal to (3,-2) is (2,3), normal to (5,3) is (-3,5)
+/PNormal.X [ 2 2 -3 ] def % index 0 =index 1
+/PNormal.Y [ 3 3 5 ] def % index 0 = index 1
+end }
+\def\Ppointcount{2}
+\makeatother
+% make ticks using metric function arc-length
+\pspolylineticks[metricFunction,Os=1,Ds=2]{P}{ x }{0}{5}
+% ticks at x=1,3,... , start at tick index 0, draw 5 ticks
+% the tick at s=1 has index 0
+% ticks at s=1,2... (increment function = distance)
+\uput[-135](PTick0){$s=1$}%
+\uput[-135](PTick1){$s=3$}%
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+
+\clearpage
+The next example is a smooth path where subticks are drawn first, followed by major ticks.
+The metric is arc-length with initial value $s=1$.
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,4)
+%\parametricplot[algebraic]{0}{9}{(t^2)/9 | 4*Ex(-t)*(1+t+(t^{2})/2+(t^{3})/6)}
+\psparametricplot[algebraic]{0}{9}{t^2/9 | sin(t)+1}%
+\pscurvepoints{0}{9}{(t^2)/9 | sin(t)+1}{P}%
+% make ticks using arc-length metric
+\pspolylineticks[metricInitValue=1,ticksize=-2pt 2pt,Os=1,Ds=.2]{P}{ ds }{1}{56}%
+\pspolylineticks[metricInitValue=1,Os=1,Ds=2]{P}{ ds }{0}{6}%
+\multido{\iA=1+1,\iB=3+2}{5}{\Put{6pt;(PNormal\iA)}(PTick\iA){\tiny \iB}}
+%\nodexn{(PTick\iA)+(10pt;{(PNormal\iA)})}{Q}\rput(Q){\tiny \iB}}%
+%\multido{\iA=1+1,\iB=3+2}{5}{\uput{6pt}[{(PNormal\iA)}](PTick\iA){\iB}}%
+% ticks at x=1,3,... , start at tick index 0, draw 5 ticks
+% the tick at s=1 has index 0
+% ticks at s=1,2... (increment function = distance)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\clearpage
+Suppose for the next example that we have an ellipse $x^2/a^2+y^2/b^2=1$ ($a>b$) with
+eccentricity $\epsilon=(1-b^2/a^2)^{1/2}$. With planetary motion in mind, a natural metric
+for the ellipse is the area swept out by the radial line from the focus $(\epsilon a,0)$
+starting from $(a,0)$ around to an arbitrary location $(x,y)$, where $y>0$, as this quantity
+is proportional to the time elapsed since perihelion. A routine calculation gives the following formula:
+\[A=\frac{ab}{2}\arccos\bigg(\frac{x}{a}\bigg)-\frac{\epsilon a y}{2}.\]
+Remembering that PostScript's \texttt{acos} gives its result in degrees, not radians, we have the
+following, drawn for the case $a=4$, $b=3$.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-4.5,-.5)(4.5,3.5)
+\pstVerb{ /smajor 4 def /sminor 3 def % define semimajor, semiminor
+/ecc 1 sminor smajor div dup mul sub sqrt def % compute eccentricity
+/ab smajor sminor mul 2 div def %first coeff
+/ea smajor ecc mul 2 div def }% second coeff
+\psparametricplot[algebraic]{0}{3.142}{smajor*cos(t) | sminor*sin(t)}%
+\pscurvepoints{0}{3.142}{smajor*cos(t) | sminor*sin(t)}{P}%
+\pspolylineticks[metricFunction,Ds=2,ticksize=-1.5pt 0]{P}{ ab x smajor div acos %
+180 div PI mul mul ea y mul sub }{1}{9}%
+\pnode(! ecc smajor mul 0){S}% focus
+\psline[linecolor=lightgray](S)(!smajor 0)%
+\multido{\i=1+1}{9}{\psline[linecolor=lightgray](S)(PTick\i)}
+\psdot(S)
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\clearpage
+The next examples works without visible ticks, using the macros to construct nodes at which other objects will be placed.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,4)
+\psparametricplot[algebraic]{0}{9}{t| 3*Ex(-t)*(1+t+t^2/2+t^3/6)}
+\pscurvepoints{0}{9}{t| 3*Ex(-t)*(1+t+t^2/2+t^3/6)}{P}%
+\pspolylineticks[Os=1,Ds=1,ticksize=0 0]{P}{ ds }{0}{9}%
+\multido{\i=0+1}{9}{\psdot[dotscale=1.5,dotstyle=o](PTick\i)}%
+% ticks at s=1,2,... , start at tick index 0, set 9 ticks
+% the tick at s=1 has index 0
+% ticks at s=1,2... (increment function = distance)
+\multido{\i=0+3}{3}{\Put[rot=(PTangent\i)]{7pt;(PNormal\i)}(PTick\i){PTick\i}}%
+\uput[-135](PTick1){$s=2$}%
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+This variant also has no visible ticks, but makes a color gradient along the curve based on arc-length from the start.
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,4)
+\psparametricplot[plotpoints=200,linecolor=white]{0}{360}{ t cos 1 add 4 mul t 1 add 20 div ln 2 div 1 add }
+\pscurvepoints[plotpoints=200]{0}{360}{ t cos 1 add 4 mul t 1 add 20 div ln 2 div 1 add }{P}%
+\pspolylineticks[Os=0,Ds=.2,ticksize=0 0]{P}{ ds }{0}{90}%
+\definecolorseries{ctest}{hsb}{last}{green}{violet}
+\resetcolorseries[88]{ctest}%
+\multido{\iA=0+1,\iB=1+1}{87}{\psline[linewidth=2pt,linecolor=ctest!![\iB](PTick\iA)(PTick\iB)}%
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+Here is a another variant of this technique which allows arrows to be placed at locations
+on the curve where the metric takes particular values.
+
+
+
+
+\begin{LTXexample}[pos=t]
+\begin{pspicture}(-1,-1)(10,4.5)
+\psparametricplot[plotpoints=100]{0}{360}{t cos 1 add 5 mul t sin 1 add 2 mul}
+\pscurvepoints[plotpoints=100]{0}{360}{t cos 1 add 5 mul t sin 1 add 2 mul}{P}%
+\pspolylineticks[Os=0,Ds=2.3,ticksize=0 0]{P}{ ds }{0}{10}% distance
+\multido{\i=0+1}{10}{\psrline[arrows=->,arrowscale=1.5](PTick\i)(2pt;{(PTangent\i)})}%
+\end{pspicture}
+\end{LTXexample}
+
+\section{Troubleshooting}
+If you get PostScript errors when you process your file, the most likely culprit is the
+function you specified to define the metric. There are some things to look out for:
+\begin{itemize}
+\item If \Lkeyword{metricFunction}, the function you specify in PostScript code must
+involve only \texttt{x} and \texttt{y}, and must leave exactly one real value on the stack as a result of
+substituting specific values for \texttt{x} and \texttt{y}. The function must be strictly increasing on the curve.
+\item If \Lkeyword{metricFunction}=\false (the default), the function you specify in PostScript
+code must involve only the variables \texttt{x}, \texttt{y}, \texttt{dx}, \texttt{dy}, \texttt{ds} (where \texttt{ds}
+is defined to be the arc-length element \texttt{dx dup mul dy dup mul add sqrt}, and must leave exactly
+one strictly positive real value on the stack when specific values are substituted for those variables.
+The constant function \texttt{1} gives equal weight to each segment in the curve, so in effect it gives
+you the original parametrization, up to a constant factor.
+\item If the function you specify in \Lcs{parametricplot} and \Lcs{pscurvepoints} is \Lkeyword{algebraic},
+make sure you follow precisely the syntax it understands. In complex cases, PostScript may be the safer solution.
+\item It is unwise to use a different resolution for \Lcs{psparametricplot} and \Lcs{pscurvepoints}.
+The default value of \Lkeyword{plotpoints}=50 is marginal except for modest curve segments, and 200 should
+suffice for most smooth curves.
+\end{itemize}
+
+
+%--------------------------------------------------------------------------------------
+\section{Transparent colors}
+%--------------------------------------------------------------------------------------
+
+Transparency is now part of the main \LPack{pstricks} package.
+But pay attention, the names and syntax have changed and you need
+to run \Lprog{ps2pdf} with the option
+\Loption{-dCompatibilityLevel}=1.4.
+
+
+%--------------------------------------------------------------------------------------
+\section{,,Manipulating transparent colors''}
+%--------------------------------------------------------------------------------------
+
+\LPack{pstricks-add} supports real transparency and a simulated one with hatch lines:
+\begin{lstlisting}
+\def\defineTColor{\@ifnextchar[{\defineTColor@i}{\defineTColor@i[]}}
+\def\defineTColor@i[#1]#2#3{% transparency "Colors"
+ \newpsstyle{#2}{%
+ fillstyle=vlines,hatchwidth=0.1\pslinewidth,
+ hatchsep=1\pslinewidth,hatchcolor=#3,#1%
+ }%
+}
+\defineTColor{TRed}{red}
+\defineTColor{TGreen}{green}
+\defineTColor{TBlue}{blue}
+\end{lstlisting}
+
+There are three predefined "'transparent"` colors \verb+TRed+,
+\verb+TGreen+, \verb+TBlue+. They are used as \PST{} styles and
+not as colors:
+
+
+
+
+\bgroup
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(-3,-5)(5,5)
+\psframe(-1,-3)(5,5) % objet de base
+\psrotate(2,-2){15}{%
+ \psframe[style=TRed](-1,-3)(5,5)}
+\psrotate(2,-2){30}{%
+ \psframe[style=TGreen](-1,-3)(5,5)}
+\psrotate(2,-2){45}{%
+ \psframe[style=TBlue](-1,-3)(5,5)}
+\psframe[linewidth=3pt](-1,-3)(5,5)
+\psdots[dotstyle=+,dotangle=45,dotscale=3](2,-2) % centre de la rotation
+\end{pspicture}
+\end{LTXexample}
+\egroup
+
+%--------------------------------------------------------------------------------------
+\section{Calculated colors}
+%--------------------------------------------------------------------------------------
+The \verb+xcolor+ package (version 2.6) has a new feature for defining colors:
+\begin{lstlisting}[style=syntax]
+ \definecolor[ps]{<name>}{<model>}{< PS code >}
+\end{lstlisting}
+
+\verb+model+ can be one of the color models, which \PS will
+understand, e.g. \verb+rgb+. With this definition the color is
+calculated on the \PS side.
+\begin{LTXexample}[pos=t,preset=\centering]
+\definecolor[ps]{bl}{rgb}{tx@addDict begin Red Green Blue end}%
+\psset{unit=1bp}
+\begin{pspicture}(0,-30)(400,100)
+\multido{\iLAMBDA=0+1}{400}{%
+ \pstVerb{
+ \iLAMBDA\space 379 add dup /lambda exch def
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \psline[linecolor=bl](\iLAMBDA,0)(\iLAMBDA,100)%
+}
+\psaxes[yAxis=false,Ox=350,dx=50bp,Dx=50]{->}(-29,-10)(420,100)
+\uput[-90](420,-10){$\lambda$[\textsf{nm}]}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\begin{center}
+\newcommand{\Touch}{%
+\psframe[linestyle=none,fillstyle=solid,fillcolor=bl,dimen=middle](0.1,0.75)}
+\definecolor[ps]{bl}{rgb}{tx@addDict begin Red Green Blue end}%
+% Echelle 1cm <-> 40 nm
+% 1 nm <-> 0.025 cm
+\psframebox[fillstyle=solid,fillcolor=black]{%
+\begin{pspicture}(-1,-0.5)(12,1.5)
+\multido{\iLAMBDA=380+2}{200}{%
+ \pstVerb{
+ /lambda \iLAMBDA\space def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! lambda 0.025 mul 9.5 sub 0){\Touch}
+}
+\multido{\n=0+1,\iDiv=380+40}{11}{%
+ \psline[linecolor=white](\n,0.1)(\n,-0.1)
+ \uput[270](\n,0){\textbf{\white\iDiv}}}
+ \psline[linecolor=white]{->}(11,0)
+ \uput[270](11,0){\textbf{\white$\lambda$(nm)}}
+\end{pspicture}}
+
+\psframebox[fillstyle=solid,fillcolor=black]{%
+\begin{pspicture}(-1,-0.5)(12,1)
+ \pstVerb{
+ /lambda 656 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 656 0.025 mul 9.5 sub 0){\Touch}
+ \pstVerb{
+ /lambda 486 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 486 0.025 mul 9.5 sub 0){\Touch}
+ \pstVerb{
+ /lambda 434 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 434 0.025 mul 9.5 sub 0){\Touch}
+ \pstVerb{
+ /lambda 410 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 410 0.025 mul 9.5 sub 0){\Touch}
+\multido{\n=0+1,\iDiv=380+40}{11}{%
+ \psline[linecolor=white](\n,0.1)(\n,-0.1)
+ \uput[270](\n,0){\textbf{\white\iDiv}}}
+ \psline[linecolor=white]{->}(11,0)
+ \uput[270](11,0){\textbf{\white$\lambda$(nm)}}
+\end{pspicture}}
+
+\Index{Spectrum} of \Index{hydrogen} emission (Manuel Luque)
+\end{center}
+
+\begin{lstlisting}
+\newcommand\Touch{%
+\psframe[linestyle=none,fillstyle=solid,fillcolor=bl,dimen=middle](0.1,0.75)}
+\definecolor[ps]{bl}{rgb}{tx@addDict begin Red Green Blue end}%
+% Echelle 1cm <-> 40 nm
+% 1 nm <-> 0.025 cm
+\psframebox[fillstyle=solid,fillcolor=black]{%
+\begin{pspicture}(-1,-0.5)(12,1.5)
+\multido{\iLAMBDA=380+2}{200}{%
+ \pstVerb{
+ /lambda \iLAMBDA\space def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! lambda 0.025 mul 9.5 sub 0){\Touch}
+}
+\multido{\n=0+1,\iDiv=380+40}{11}{%
+ \psline[linecolor=white](\n,0.1)(\n,-0.1)
+ \uput[270](\n,0){\textbf{\white\iDiv}}}
+ \psline[linecolor=white]{->}(11,0)
+ \uput[270](11,0){\textbf{\white$\lambda$(nm)}}
+\end{pspicture}}
+
+\psframebox[fillstyle=solid,fillcolor=black]{%
+\begin{pspicture}(-1,-0.5)(12,1)
+ \pstVerb{
+ /lambda 656 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 656 0.025 mul 9.5 sub 0){\Touch}
+ \pstVerb{
+ /lambda 486 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 486 0.025 mul 9.5 sub 0){\Touch}
+ \pstVerb{
+ /lambda 434 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 434 0.025 mul 9.5 sub 0){\Touch}
+ \pstVerb{
+ /lambda 410 def
+ lambda
+ tx@addDict begin wavelengthToRGB end
+ }%
+ \rput(! 410 0.025 mul 9.5 sub 0){\Touch}
+\multido{\n=0+1,\iDiv=380+40}{11}{%
+ \psline[linecolor=white](\n,0.1)(\n,-0.1)
+ \uput[270](\n,0){\textbf{\white\iDiv}}}
+ \psline[linecolor=white]{->}(11,0)
+ \uput[270](11,0){\textbf{\white$\lambda$(nm)}}
+\end{pspicture}}
+
+Spectrum of hydrogen emission (Manuel Luque)
+\end{lstlisting}
+
+
+
+
+%--------------------------------------------------------------------------------------
+\section{Gouraud shading}
+%--------------------------------------------------------------------------------------
+\begin{quotation}
+\Index{Gouraud} shading is a method used in computer graphics to simulate the differing effects of
+light and colour across the surface of an object. In practice, Gouraud shading is used to
+achieve smooth lighting on low-polygon surfaces without the heavy computational requirements
+of calculating lighting for each pixel. The technique was first presented by Henri Gouraud in 1971.\\
+~\hfill{\small \url{http://www.wikipedia.org}}
+\end{quotation}
+
+PostScript level 3 supports this kind of shading and it can only
+be seen with Acroread 7 or later. The syntax is easy:
+
+\begin{lstlisting}[style=syntax]
+ \psGTriangle(x1,y1)(x2,y2)(x3,y3){color1}{color2}{color3}
+\end{lstlisting}
+
+\psset{unit=0.75cm}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(0,-.25)(10,10)
+ \psGTriangle(0,0)(5,10)(10,0){red}{green}{blue}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(0,-.25)(10,10)
+ \psGTriangle*(0,0)(9,10)(10,3){black}{white!50}{red!50!green!95}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(0,-.25)(10,10)
+ \psGTriangle*(0,0)(5,10)(10,0){-red!100!green!84!blue!86}
+ {-red!80!green!100!blue!40}
+ {-red!60!green!30!blue!100}
+\end{pspicture}
+\end{LTXexample}
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\definecolor{rose}{rgb}{1.00, 0.84, 0.88}
+\definecolor{vertpommepasmure}{rgb}{0.80, 1.0, 0.40}
+\definecolor{fushia}{rgb}{0.60, 0.30, 1.0}
+\begin{pspicture}(0,-.25)(10,10)
+ \psGTriangle(0,0)(5,10)(10,0){rose}{vertpommepasmure}{fushia}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+
+\section{\Lcs{psCallout}}
+
+\begin{BDef}
+\Lcs{psCallout}\OptArgs\Largr{$x_0,y_0$}\Largb{Text}
+\end{BDef}
+
+Possible parameter are:
+
+\begin{description}
+ \item[tipAngle] The angle of the tip depending to the horizontal line.
+ \item[tipLength] The length of the tip from the coordinates to the box.
+ \item[tipWidth] The width of the tip end.
+ \item[tipPos] Relative position of the tip end to the width of the box.
+\end{description}
+
+
+
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(-5.5,-1)(4,5.5)
+\psaxes[labels=none,ticks=none]{->}(0,0)(-5,-1)(3.5,5)[$x$,-90][$y$,0]
+\psyTick(1){1}\uput[225](0,0){0}
+\psplot[algebraic,,yMaxValue=4.5,linecolor=red,linewidth=1.5pt]{-2.5}{3}{Euler^(-(x))}
+\psCallout(1,0.5){\scriptsize $f(x)=e^{-x}$}
+\psCallout[tipAngle=90](1,1.6){\scriptsize $f(x)=e^{-x}$}
+\psCallout[tipLength=10mm](1,3){$f(x)=e^{-x}$}
+\psCallout[tipLength=10mm,tipAngle=120,tipPos=0.8](-1,1){$f(x)=e^{-x}$}
+\psCallout[tipAngle=120,fillcolor=red!40,fillstyle=solid](-4,3){%
+ \shortstack{Some math\\$f(x)=e^{-x}$}}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+
+\begin{LTXexample}[pos=t,preset=\centering]
+\begin{pspicture}(-5.5,-1)(4,5.5)
+\psaxes[labels=none,ticks=none]{->}(0,0)(-5,-1)(3.5,5)[$x$,-90][$y$,0]
+\psyTick(1){1}\uput[225](0,0){0}
+\psplot[algebraic,,yMaxValue=4.5,linecolor=red,linewidth=1.5pt]{-2.5}{3}{Euler^(-(x))}
+\psset{linearc=0.4}%
+\psCallout(1,0.5){\scriptsize $f(x)=e^{-x}$}
+\psCallout[tipAngle=90](1,1.6){\scriptsize $f(x)=e^{-x}$}
+\psCallout[tipLength=10mm](1,3){$f(x)=e^{-x}$}
+\psCallout[tipLength=10mm,tipAngle=120,tipPos=0.8](-1,1){$f(x)=e^{-x}$}
+\psCallout[tipAngle=120,fillcolor=red!40,fillstyle=solid](-4,3){%
+ \shortstack{Some math\\$f(x)=e^{-x}$}}
+\end{pspicture}
+\end{LTXexample}
+
+
+
+\section{Internal color macros}
+The internal macros \Lcs{pswavelengthToRGB} and \Lcs{pswavelengthToRGB} can be used for own purposed.
+They are defines as follows:
+
+\begin{lstlisting}
+\def\pswavelengthToGRAY{ tx@addDict begin wavelengthToGRAY end }
+\def\pswavelengthToRGB{ tx@addDict begin wavelengthToRGB Red Green Blue end }
+\end{lstlisting}
+
+both macros leave the value(s) on the stack which then can be used for further
+manipulating or setting the color with \Lps{setgray} or \Lps{setrgbcolor}.
+For an example see Section~\ref{sec:psMatrix}.
+
+
+
+
+\appendix
+
+
+%--------------------------------------------------------------------------------------
+\clearpage
+\section{\nxLcs{resetOptions}}
+%--------------------------------------------------------------------------------------
+
+Sometimes it is difficult to know what options, which are changed
+inside a long document, are different to the default ones. With
+this macro all options belonging to \LPack{pst-plot} can be reset.
+This refers to all options of the packages \LPack{pstricks},
+\LPack{pst-plot} and \LPack{pst-node}.
+
+
+
+%--------------------------------------------------------------------------------------
+\section{PostScript}
+%--------------------------------------------------------------------------------------
+
+\Index{PostScript} uses the stack system and the LIFO system, "'Last In, First Out"`.
+
+\newlength{\Li}\settowidth{\Li}{Function}
+\begin{table}[htbp]
+\caption{Some primitive PostScript macros}\label{tab:primpost}
+\centering
+\ttfamily
+ \begin{tabular}{@{} l | r@{ $\rightarrow$ } l @{}}\hline
+ \multirow{2}{\Li}{\normalfont\emph{Function}} & \multicolumn{2}{ c }{\normalfont\emph{Meaning}}\\
+ &\normalfont\emph{on stack before} & \normalfont\emph{after}\\\hline
+ \Lps{add} & $x\quad y$&$x+y$\\
+ \Lps{sub} & $x\quad y$&$x-y$\\
+ \Lps{mul} & $x\quad y$&$x\times y$\\
+ \Lps{div} & $x\quad y$&$x\div y$\\
+ \Lps{sqrt} & $x$&$\sqrt{x}$\\
+ \Lps{abs} & $x$&$|x|$\\
+ \Lps{neg} & $x$&$-x$\\
+ \Lps{cos} & $x$&$\cos(x)$ ($x$ in degrees)\\
+ \Lps{sin} & $x$&$\sin(x)$ ($x$ in degrees)\\
+ \Lps{tan} & $x$&$\tan(x)$ ($x$ in degrees)\\
+ \Lps{atan} & $y\quad x$&$\angle{(\vec{Ox};\vec{OM})}$ (in degrees of $M(x,y)$)\\
+ \Lps{ln} & $x$&$\ln(x)$\\
+ \Lps{log} & $x$&$\log(x)$\\
+ \Lps{array} & $n$&\normalfont$v$ (of dimension $n$)\\
+ \Lps{aload} & $v$&$x_1\quad x_2\quad \cdots\quad x_n\quad v$\\
+ \Lps{astore} & $x_1\quad x_2\quad \cdots\quad x_n\quad v$ & $[v]$\\
+ \Lps{pop} & $x$ & --\\
+ \Lps{dup} & $x$ & $x\quad x$ \\\hline
+% \Lps{roll} & $x_1\quad x_2\quad \cdots\quad x_n\quad n p$ &\\\hline
+ \end{tabular}
+\end{table}
+
+
+\clearpage
+\section{List of all optional arguments for \texttt{pstricks-add}}
+
+\xkvview{family=pstricks-add,columns={key,type,default}}
+
+
+\nocite{*}
+\bgroup
+\RaggedRight
+\printbibliography
+\egroup
+
+\printindex
+
+
+
+
+\end{document}
+