summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r--Master/texmf-dist/doc/generic/pstricks-add/Changes9
-rw-r--r--Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.pdfbin1674528 -> 1757547 bytes
-rw-r--r--Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.tex373
3 files changed, 362 insertions, 20 deletions
diff --git a/Master/texmf-dist/doc/generic/pstricks-add/Changes b/Master/texmf-dist/doc/generic/pstricks-add/Changes
index 5d2e60bd6e1..ed170bb49aa 100644
--- a/Master/texmf-dist/doc/generic/pstricks-add/Changes
+++ b/Master/texmf-dist/doc/generic/pstricks-add/Changes
@@ -1,4 +1,4 @@
-%% $Id: Changes 259 2010-01-17 09:51:50Z herbert $
+%% $Id: Changes 345 2010-06-10 16:07:44Z herbert $
%%
pstricks-add.pro -----------
0.23 2009-12-20 - add RGBtoGRAY and WavelengthToGRAY
@@ -39,6 +39,7 @@ pstricks-add.sty ----------- (hv)
pstricks-add.tex ----------- (Dominik Rodriguez/hv)
+ v 3.40 2010-03-12 - add macros for ticks on curves (ms)
v 3.39 2010-03-12 - fixed bug with algebraic option in \psplotTangent
v 3.38 2009-12-13 - moved \Pst@algebraic into the base pstricks.tex
- add SAveFinalState for plots
@@ -250,9 +251,3 @@ pstricks-add.tex ----------- (Dominik Rodriguez/hv)
v 2.17 2004-10-14 new multiple arrows
-pst-fp.tex ----------- (hv)
- v 0.05 2010-01-17 add \pst@Int
- add \pst@int
- v 0.04 2009-11-24 add \pstFPadd
- v 0.03 2009-11-14 add \pstFPmul
- v 0.02 2009-04-02 initial version
diff --git a/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.pdf b/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.pdf
index f1ae117aca7..2934d0dd2f2 100644
--- a/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.pdf
+++ b/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.tex b/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.tex
index 40c4a4df325..9b2809aba56 100644
--- a/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.tex
+++ b/Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.tex
@@ -1,4 +1,4 @@
-%% $Id: pstricks-add-doc.tex 298 2010-03-13 08:46:53Z herbert $
+%% $Id: pstricks-add-doc.tex 345 2010-06-10 16:07:44Z herbert $
\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
headexclude,footexclude,oneside]{pst-doc}
\listfiles
@@ -47,15 +47,10 @@
\end{pspicture}}
\begin{document}
-\title{\texttt{pstricks-add}\\additionals Macros for \texttt{pstricks}%
-%\thanks{%
-% This document was written with \texttt{Kile: 1.7 (Qt: 3.1.1; KDE: 3.3;}
-% \url{http://sourceforge.net/projects/kile/}) and the PDF output
-% was build with VTeX/Free (\url{http://www.micropress-inc.com/linux})}
-\\
+\title{\texttt{pstricks-add}\\additionals Macros for \texttt{pstricks}\\
\small v.\pstricksaddFV}
-\docauthor{Herbert Vo\ss}
-\author{Dominique Rodriguez\\Herbert Vo\ss}
+%\docauthor{Herbert Vo\ss}
+\author{Dominique Rodriguez\\Michael Sharpe\\Herbert Vo\ss}
\date{\today}
\maketitle
@@ -1729,7 +1724,7 @@ Impossible to draw, but let's try!
\clearpage
-\subsection{A really complecated function}
+\subsection{A really complicated function}
Just appreciate the difference between the normal behavior and the plotting with the
\Lkeyword{varStep} option. The function is:
@@ -1783,7 +1778,7 @@ Just appreciate the difference between the normal behavior and the plotting with
\clearpage
-\subsection{Using \nxLcs{parametricplot}}
+\subsection{Using \nxLcs{psparametricplot}}
\begin{BDef}
\Lcs{parametricplot}\OptArgs\Largb{t0}\Largb{t1}\OptArg{PS commands}\Largb{x(t) y(t)}
@@ -3266,7 +3261,7 @@ matrix data, which is saved as /dotmatrix [...] in the file \LFile{pstricks-add-
\end{LTXexample}
\egroup
-
+\clearpage
%--------------------------------------------------------------------------------------
\section{Dashed Lines}
%--------------------------------------------------------------------------------------
@@ -4034,11 +4029,363 @@ taken into account by the scaling value.
+\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 {\tt x,y} which
+should increase along the curve, or it can be an function whose increment is a specified
+positive function of {\tt x, y, dx, dy, ds} where the last term is the arc-length element
+that you could specify alternately as {\tt dx dup mul dy dup mul add sqrt}.
+% start new material
+In addition, a new command \Lcs{Put} is proposed, expanding as necessary to \Lcs{rput} or \Lcs{uput}. Its syntax is
+
+\begin{BDef}
+\LcsStar{Put}\OptArgs\Largb{<ref>}\Largr{<position>}\Largb{<stuff>}
+\end{BDef}
+where the optional {\tt *} blanks the background, the optional \OptArgs\ may be used to specify a
+rotation (eg, \Lkeyword{rot}=45), and \Lkeyword{ref} takes one of two forms: (a) a {\tt refpt}
+such as {tt Bl}, in which case \Lcs{rput} is called; (b) a polar form of offset (eg,
+\verb|7pt;30|, or \verb|;(P)| in which \Ldim{pslabelsep} is substituted for the radius),
+in which case \Lcs{uput} is called.
+
+
+\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 {\tt Pt} is the root name
+given to the data arrays. PostScript arrays will be created with the following names: {\tt Pt.X, Pt.Y}
+for the coordinates of the vertices, {\tt PtDelta.X, PtDelta.Y} for the increments between the
+vertices (using, eg, {\tt PtDelta.X[2]=Pt.X[2]-Pt.X[1]}) and {\tt PtNormal.X, PtNormal.Y} for
+a vector normal to {\tt PtDelta.X, PtDelta.Y} in the visual, not mathematical, sense.
+(Both senses are the same if the scales on the axes are identical.) The {\tt 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 {\tt unitratio} provides the ratio of
+the unit on the y axis to that on x axis, and {\tt unitratiosq} is its square. All of
+these PostScript objects are stored in the main {\tt pstricks} dictionary \Lps{tx@Dict}
+which should be automatically made available when using many {\tt pstricks} macros.
+If {\tt 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 {\tt Pt}. The next argument,
+{\tt 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 {\tt 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 {\tt 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, {\tt PtTickN.X, PtTickN.Y} of the normals
+at these nodes are stored in the dictionary {\tt TDict}. More importantly, the tangent and
+normal vectors at {\tt PtTick0} etc are constructed as nodes with names {\tt 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 {\tt -4pt 4pt})
+ and \Lkeyword{tickwidth} (default value \verb|.5\linewidth|.) With the default settings, ticks
+ are drawn perpendicular the the curve extending {\tt 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 {\tt Ds=2} and {\tt 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 {\tt 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 {\tt 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}
+% ticks at s=0.5,1.5 (increment function =1)
+\uput[-135](PTick0){$s=0.5$}%
+\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 {\tt 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)
+%\traceon
+\multido{\i=0+3}{3}{\Put[rot=(PTangent\i)]{7pt;(PNormal\i)}(PTick\i){PTick\i}}%
+%\traceoff
+%\uput[-135](PTick1){$s=3$}%
+\end{pspicture}
+\end{LTXexample}
+
+\clearpage
+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)}%
+%\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)
+%\uput[-135](PTick1){$s=3$}%
+\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 {\tt x} and {\tt y}, and must leave exactly one real value on the stack as a result of
+substituting specific values for {\tt x} and {\tt 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 {\tt x}, {\tt y}, {\tt dx}, {\tt dy}, {\tt ds} (where {\tt ds}
+is defined to be the arc-length element {\tt 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 {\tt 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 \texttt{pstricks} package.
+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.