diff options
author | Karl Berry <karl@freefriends.org> | 2010-06-12 00:11:41 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-06-12 00:11:41 +0000 |
commit | 3ca859b7c25a23c6fa253978191197782df3d799 (patch) | |
tree | 7f38b43de274e72138f80c27f917ef50b05578f1 /Master/texmf-dist/doc/generic/pstricks-add | |
parent | b3ba42c57f43aa4acf39c30b4fc092ffdbf63269 (diff) |
pstricks-add 3.40 (11jun10)
git-svn-id: svn://tug.org/texlive/trunk@18900 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/generic/pstricks-add')
-rw-r--r-- | Master/texmf-dist/doc/generic/pstricks-add/Changes | 9 | ||||
-rw-r--r-- | Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.pdf | bin | 1674528 -> 1757547 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/generic/pstricks-add/pstricks-add-doc.tex | 373 |
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 Binary files differindex 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 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. |