\documentclass[11pt]{article} \usepackage[T1]{fontenc} \usepackage[utf8]{inputenc} \usepackage{pst-news} % \begin{document} \title{\texttt{PSTricks -- 2008}\\ new macros and bugfixes for the basic packages \nxLFile{pstricks}, \nxLFile{pst-plot}, \nxLFile{pst-tree},\\ and \nxLFile{pst-node}} \author{Herbert Voß\thanks{% \url{Herbert.Voss@pstricks.de}; \newline thanks to Patrick Drechsler.}} \date{\today} \maketitle \clearpage \tableofcontents \clearpage \part{\texttt{pstricks} -- package} %-------------------------------------------------------------------------------------- \section{\texttt{pstricks.sty}} %-------------------------------------------------------------------------------------- \subsection{Error messages} \begin{itemize} \item Loading the package \LPack{pstricks} by \LaTeX\ will now write a message into the file list of file version and date for the file \LFile{pstricks.pro}. \item A frequently done error is choosing a file name for the document, which is already a name of one PSTricks package, e.\,g. \LFile{pstricks.tex}. The \Index{error message} in the log file was not really helpful. There is now an extended message (example for a dcoument file called \LFile{pstricks.tex}): {\small\begin{verbatim} ! LaTeX Error: `pstricks.tex' is a forbidden name for your document, it is already a name of a package. See the LaTeX manual or LaTeX Companion for explanation. Type H for immediate help. ... l.13 \documentclass {article} ? H Choose another name for your document \end{verbatim} } \end{itemize} \subsection{Optional arguments} \LPack{pstricks} supports \Index{transparent colors} with Ghostscript's \LPS{.setopacityalpha}, \LPS{.setblendmode}, and \LPS{.setshapealpha}. These functions are not known to \Index{V\TeX} or Adobes \Index{Distiller}. The optional argument \Loption{vtex} disables transparencies and \Loption{distiller} overrides the \Index{Ghostscript} functions with the ones from the \Index{Distiller}. \clearpage %-------------------------------------------------------------------------------------- \section{\texttt{pstricks.tex} (\PSTfileversion -- \PSTfiledate)} %-------------------------------------------------------------------------------------- \subsection{Makro \cs{psDEBUG}} \texttt{pstricks.tex} defines the option \texttt{PstDebug=0|1}, which can be used for debugging. The new macro \cs{psDEBUG} makes it easier to write some debugging information into the package files. The macro is only valid, if \texttt{PstDebug=1} is set, otherwise the macro does nothing. \begin{verbatim} \psDEBUG[optional arg]{text} \end{verbatim} \cs{psDEBUG} writes the argument \texttt{text} into the log file. Without an optional argument the word \texttt{pstricks} is used. The following output of the log file \begin{lstlisting} ... : setting ticksize to max LaTeX Font Info: External font `cmex10' loaded for size (Font) <7> on input line 26. LaTeX Font Info: External font `cmex10' loaded for size (Font) <5> on input line 26. : xticksizeC=0.0pt ... \end{lstlisting} was possible with \verb+\psset{PstDebug=1}+\footnote{Can also be used locally for a macro when used as optional argument in the usual way.} and inside of \texttt{pstricks-add} with (only the first for example): \begin{lstlisting} ... \psDEBUG[key:ticksize]{setting ticksize} ... \end{lstlisting} \subsection{Option \texttt{shift}} The optional argument \Lkeyword{shift} can be used for a vertical alignment of the \Lenv{pspicture} box. With \Lkeyword{shift}=\Lkeyval{*}, instead of a value or a length it is possible to center the \Lenv{pspicture} box vertically to the baseline of the current line. \begin{LTXexample}[width=4cm] \usepackage{pstricks} \rule{5mm}{0.5pt}% \psframebox{% \begin{pspicture}[showgrid=true, shift=*](-0.3,-0.4)(3.2,3.3) \psarc[showpoints=true](1,1){2}{-45}{120} \end{pspicture}}\rule{5mm}{0.5pt} \end{LTXexample} \subsection{Option \texttt{gridfont}} By default the \Index{grid label}s were printed always in \Index{Helvetica}. With the new keyword \Lkeyword{gridfont} one can define another \Index{PostScript Font}. Available are at least \medskip {\ttfamily\noindent \Lkeyval{Helvetica} (default) -- \Lkeyval{Helvetica-Narrow} -- \Lkeyval{Times-Roman} -- \Lkeyval{Courier} -- \Lkeyval{AvantGard} --\Lkeyval{NewCenturySchlbk} -- \Lkeyval{Palatino-Roman} -- \Lkeyval{Bookman-Demi} -- \linebreak \Lkeyval{ZapfDingbats} -- \Lkeyval{Symbol}} \begin{LTXexample}[width=4cm] \usepackage{pstricks} \begin{pspicture}[showgrid=true](3,2) \end{pspicture}\\[20pt] \begin{pspicture}(3,2) \psgrid[style=gridstyle,gridfont=AvantGard-Demi] \end{pspicture}\\[20pt] \begin{pspicture}(3,2) \psgrid[style=gridstyle,gridfont=ZapfDingbats] \end{pspicture} \end{LTXexample} \clearpage \subsection{\texttt{linejoin}} Connecting lines can be done in several ways and is controlled on PS level by the \LPS{setlinejoin} command. With this version of PSTricks it is possible to controll this by an optional argument, called \Lkeyword{linejoin}. It is preset to 0 and can take values of 0,1,2. Other values will have no effect. \begin{LTXexample}[width=4cm] \psset{linewidth=3mm,unit=0.8} \begin{pspicture}[showgrid=true](3,2) \psline(0,0)(1,2)(2,0)(3,2) \end{pspicture}\\[10pt] \begin{pspicture}[showgrid=true](4,2) \psline[linejoin=1](0,0)(1,2)(2,0)(3,2)(4,0)% \end{pspicture}\\[10pt] \begin{pspicture}[showgrid=true](3,2) \psline[linejoin=2](0,0)(1,2)(2,0)(3,2)% \end{pspicture} \end{LTXexample} \clearpage \subsection{\texttt{linecap}} The value of \Lkeyword{linecap} determines how the line ends are drawn: \begin{description} \item[0] lines are cut (default) \item[1] lines are ended by a filled semicircle of radius 0.5$\cdot$\Ldim{pslinewidth} \item[2] lines are ended by a filled half square of radius 0.5$\cdot$\Ldim{pslinewidth} \end{description} The following example shows that using \Lkeyword{linecap} for lines is the same than using the \Index{arrow} option. \begin{LTXexample}[width=4cm] \begin{pspicture}[showgrid=true](4,4)% \psset{linewidth=5mm} \psline[arrows=C-C](0,3.75)(4,3.75) \psline[linecap=2](0,3)(4,3) \psline[arrows=c-c](0,2.25)(4,2.25) \psline[linecap=1](0,1.5)(4,1.5) \psline[arrows=-](0,0.75)(4,0.75) \psline(4,0) \end{pspicture} \end{LTXexample} Using this optional argument makes only sense in some special cases, because it is the same as the \Index{arrow type} \Lkeyval{c-c}. But the arrows are not part of the \Index{current path} and \Index{filling} an \Index{open curve} with the \Lkeyword{linecap} option is different to a curve using the \Lkeyval{c-c} arrow. \begin{LTXexample}[width=3cm,wide] \psset{unit=5cm,linewidth=5mm} \begin{pspicture}(-0.2,-0.6)(0.2,0.5)% \def\curve{\pscurve(-.1,.1)(-.15,.15)(0,.2)(.15,.15)(.1,.1)} \rput(0,.2){\psset{arrows=c-c}\curve} \rput(0,-.2){% \psset{fillstyle=solid,fillcolor=red,arrows=c-c} \curve} \rput(0,-.6){% \psset{fillstyle=solid,fillcolor=red,linecap=1} \curve} \end{pspicture} \end{LTXexample} \clearpage \subsection{New arrowtype \texttt{D>} and \texttt{D>D>}} All arrows are drawn as polygons. The new arrow type \Lkeyval{D>} or \Lkeyval{D>}(0,2)(4,2) \psline[arrows=<-D>,arrowlength=2](0,1)(4,1) \psline[arrowinset=0]{}(0,0.25)(4,0.25) \end{pspicture} \end{LTXexample} \clearpage \subsection{Fill style \texttt{penrose}} The valid optional arguments are \texttt{penrose}, \texttt{penrose*}, and \texttt{hatchcolor}. The star version is only seen, if there is a fillcolor or a background different to white. \begin{LTXexample}[pos=t,wide] \begin{pspicture}(3,3) \psframe[fillstyle=penrose](3,3) \end{pspicture} \qquad \begin{pspicture}(3,3) \psframe[fillstyle=penrose,psscale=0.5](3,3) \end{pspicture} \qquad \begin{pspicture}(3,3) \psccurve[fillstyle=penrose*,fillcolor=red!30,hatchcolor=blue](0,1.5)(1.5,3)(3,1.5)(1.5,0) \end{pspicture} \end{LTXexample} \clearpage \subsection{Transparent colors} The package \LPack{pstricks-add} already defined a fillstyle for transparency colors by using the \Index{Ghostscript}'s \Index{blendmode}. It now moves into the main \LPack{pstricks} package, together with another possibility for creating transparent colors. Transparency is only seen with the \Index{PDF} output (version 1.4 or greater), as nearly all PostScript viewer cannot show transparencies. Loading the \LPack{pstricks} package with the option \Loption{vtex}, disables the transparency effekts and everything works as before. \subsubsection{Options \texttt{strokeopacity} and \texttt{opacity}} For the existing fill style \Lkeyval{solid} the new option \Lkeyword{opacity} can be used to get also transparent colors. It is predefined by 1 ($0\ldots1$), which is the old behaviour, no \Index{transpareny}. The option is valid only for PostScripts fill commands. Lines and curves can be transparent with setting the option\index{transparent lines} \Lkeyword{strokeopacity}, which can have a different value than the \Lkeyword{opacity} option. \begin{LTXexample}[width=4cm,wide] \begin{pspicture}[linewidth=1cm](4,4) \psline[linecolor=red](0,0)(4,4) \psline[linecolor=blue,strokeopacity=0.5](0,4)(4,0) \psline[linecolor=green,strokeopacity=0.5](0,3.5)(4,3.5) \psline[linecolor=yellow,strokeopacity=0.5](0,0.5)(4,0.5) \end{pspicture} \end{LTXexample} \begin{LTXexample}[width=4cm,wide] \begin{pspicture}[linewidth=1cm](4,4) \psline[linecolor=red](0,0)(4,4) \pscircle*[opacity=0.5](2,2){2} \psline[linecolor=blue,strokeopacity=0.6](0,4)(4,0) \end{pspicture} \end{LTXexample} \begin{LTXexample}[width=4cm,wide] \begin{pspicture}[linewidth=3mm](4,5.5) \multido{\rA=0.0+0.5}{9}{% \psline[linecolor=red!40](\rA,0)(\rA,5)} \multido{\rA=0.0+0.5,\rB=0.0+0.1}{11}{% \psline[arrows=,linecolor=blue, linewidth=5pt,arrowscale=1.5, strokeopacity=\rB](0,\rA)(4,\rA)} \end{pspicture} \end{LTXexample} \begin{LTXexample}[width=5cm,wide] \begin{pspicture}(5,5) \psset{fillstyle=solid} \psframe[fillcolor=red](0,1)(3,4) \psframe[fillcolor=blue,opacity=0.7](2,2)(5,5) \psframe[fillcolor=green,opacity=0.7](1,0)(4,3) \pscircle[fillcolor=cyan, opacity=0.5](1.5,3.5){1.25} \end{pspicture} \end{LTXexample} \begin{LTXexample}[width=5cm,wide] \begin{pspicture}(5,5) \psset{fillstyle=solid} \psframe[fillcolor=red](0,1)(3,4) \psframe[fillcolor=blue,opacity=0.3](2,2)(5,5) \psframe[fillcolor=green,opacity=0.3](1,0)(4,3) \pscircle[fillcolor=cyan, opacity=0.5](1.5,3.5){1.25} \end{pspicture} \end{LTXexample} \clearpage \subsubsection{Fill style \texttt{shape}} There is now one more \Index{fill style} for \Index{transparent colors}: \Lkeyword{shape} with using the \Lkeyword{shapealpha} value and one of the possible blendmodes: \begin{verbatim} /Normal ->0 /Compatible ->1 /Screen ->2 /Multiply ->3 \end{verbatim} The fill style \Lkeyval{solid} uses \Index{Ghostscript}'s \LPS{.setopacityalpha} function and the new style \Lkeyval{shape} and the \Lkeyword{blendmode} together with \LPS{.setshapealpha}. \Lkeyword{shapealpha} is predefined with 0.6 and both alpha values can be chosen from the range $0\le\alpha\le1$. \begin{pspicture}(5,5)% default blendmode \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{0}} \end{pspicture} \hfill \begin{pspicture}(5,5) \psset{blendmode=1}% type /Compatible \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{1}} \end{pspicture} \begin{pspicture}(5,5) \psset{blendmode=2}% type /Screen \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{2}} \end{pspicture} \hfill \begin{pspicture}(5,5) \psset{blendmode=3}% type /Multiply \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{3}} \end{pspicture} \begin{lstlisting} \begin{pspicture}(5,5)% default blendmode \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{0}} \end{pspicture} \hfill \begin{pspicture}(5,5) \psset{blendmode=1}% type /Compatible \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{1}} \end{pspicture} \begin{pspicture}(5,5) \psset{blendmode=2}% type /Screen \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{2}} \end{pspicture} \hfill \begin{pspicture}(5,5) \psset{blendmode=3}% type /Multiply \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \rput(1.5,3.5){\huge\textbf{3}} \end{pspicture} \end{lstlisting} \iffalse \begin{LTXexample}[width=5cm,wide] \begin{pspicture}(5,5) \psset{blendmode=4}% type /Hardlight \psframe*[linecolor=red](0,1)(3,4) \psframe[fillcolor=blue,fillstyle=shape](2,2)(5,5) \psframe[fillcolor=green,fillstyle=shape](1,0)(4,3) \pscircle[fillcolor=cyan,fillstyle=shape, shapealpha=0.3](1.5,3.5){1.25} \end{pspicture} \end{LTXexample} \fi \clearpage \subsection{\nxLcs{addtopsstyle}} \begin{verbatim} \addtopsstyle{style-name}{settings} \end{verbatim} This macro allows to add some more settings to an existing \Index{style}. If the style is not defined, then \Lcs{addtopsstyle} behaves like the already defined \Lcs{newpsstyle} macro. \begin{LTXexample}[width=5cm,wide] \newpsstyle{Fiber}{linewidth=2pt} \begin{pspicture}(5,5) \psline[style=Fiber](0,0)(5,1) \addtopsstyle{Fiber}{linecolor=green} \psline[style=Fiber](0,1)(5,2) \addtopsstyle{Fiber}{linestyle=dotted} \psline[style=Fiber](0,2)(5,3) \addtopsstyle{Fiber}{} \psline[style=Fiber](0,3)(5,4) \addtopsstyle{Fibber}{linecolor=red} \psline[style=Fibber](0,4)(5,5) \end{pspicture} \end{LTXexample} \clearpage \subsection{\nxLcs{pscircleOA}} \begin{verbatim} \pscircleOA[settings](xO,yO)(xA,yA) \end{verbatim} $(x_0, y_0)$ is the center and $(x_A, y_A)$ a given point of the circle. The radius is calculated by \TeX. \begin{LTXexample}[pos=t] \begin{pspicture}[showgrid=true](-2,0)(8,8) \pscircleOA(6,4)(4,4) \pscircleOA[linecolor=blue](4,6)(4,4) \pscircleOA[linewidth=2pt,linecolor=yellow](3,5)(4,4) \pscircleOA*[opacity=0.3,linecolor=red](2,2)(4,4) \end{pspicture} \end{LTXexample} \subsection{\nxLcs{psTextFrame}} \begin{verbatim} \psTextFrame[settings](x1,y1)(x2,y2){Text} \end{verbatim} The \emph{Text} cannot have a linebreak. In case it is needed, put the \emph{Text} into a \Lenv{minipage} or \Lcs{parbox}, as seen in the following example. The \Lkeyword{ref}-option allows different placing and the \Lkeyword{rot}-option allows the \Index{rotating} of the \emph{Text}. The macro itself first uses the \Lcs{psframe} and the \Lcs{rput} macro with \Index{calculated coordinates}. \begin{LTXexample}[pos=t] \begin{pspicture}[showgrid=true](0,-0.5)(10,10) \psTextFrame[linecolor=lightgray,ref=l](0,0.5)(4,1.5){Hallo} \psTextFrame[linecolor=blue](2,4)(4,7){\color{blue}Hallo} \psTextFrame[linestyle=dashed](9,9)(10,10){\huge H} \psTextFrame*[linecolor=red,linestyle=dashed](7,7)(9,9){\Huge H} \psTextFrame*[linecolor=red!40,ref=lB](7,4)(9,6){\Huge H} \psTextFrame*[linecolor=blue!40,ref=rt](7,1)(9,3){\Huge H} \psTextFrame[linestyle=dashed](4.5,0)(6.5,10){% \parbox{2cm}{\centering Here comes some more text over several lines, which is also horizontally and vertically centered and written in a parbox.}} \psTextFrame*[linecolor=cyan!20,rot=90](.5,2)(1.5,10){% \parbox{8cm}{\centering Here comes some more text over several lines and rotated by 90 degrees.}} \end{pspicture} \end{LTXexample} \subsection{Special coordinates} Additionally to the existing \Index{!-operator} for \Index{PostScript} coordinates, there is new a \Index{*-operator}, which invokes the \Index{algebraic parser} before the coordinates are passed to the default !-operator. The syntax is pretty easy: \verb=( {f(x)})=. In the following example the predefined value of Pi\index{$\pi$} from \LFile{pstricks.pro} is used. The x value and the function must be enclosed in braces when they contain spaces, round braces or sybolic names, like \verb+Pi+ for the x value. \begin{LTXexample}[width=5cm,wide] \SpecialCoor \begin{pspicture}(0,-1)(5,1) \psaxes{->}(0,0)(0,-1)(5,1) \psline(0,0)(*{Pi} {sqrt(abs(cos(x)))}) \psline{<->}(*{Pi} {cos(x)})(*5 {sin(x)*cos(x)}) \end{pspicture} \end{LTXexample} For a macro definition of the algebraic function the \verb+\string+ command has to be used, otherwise \TeX{} expects the math mode in the following example. \begin{LTXexample}[width=4cm,wide] \def\F{\string x^2 } \begin{pspicture}[showgrid=true](2,4) \psline[linecolor=red](*1 {\F} )(*2 {\F} ) \end{pspicture} \end{LTXexample} \subsection{Octogon-Symbol} An octogon symbol was added. \begin{verbatim} \newpsfontdotH{Octogon}[1 0 0 1 0 0]{PSTricksDotFont}{(f)}{(g)} \newpsfontdotH{BoldOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(F)}{(g)} \newpsfontdot{SolidOctogon}[1 0 0 1 0 0]{PSTricksDotFont}{(g)} \end{verbatim} \begin{LTXexample}[width=4cm,wide] \psset{dotscale=4} \begin{pspicture}[showgrid=true](4,4) \psdot[dotstyle=Octogon](1,1) \psdot[dotstyle=BoldOctogon](2,2) \psdot[dotstyle=SolidOctogon](3,3) \end{pspicture} \end{LTXexample} \subsection{Code changes} \begin{verbatim} % hv 2007-10-16 to fix the bug in pst-node with \\[name=...] \def\ps@ifnextchar#1#2#3{% \let\reserved@d= #1% \def\reserved@a{#2}\def\reserved@b{#3}% \futurelet\@let@token\ps@ifnch} \def\ps@ifnch{% \ifx\@let@token\reserved@d \let\reserved@b\reserved@a \fi \reserved@b } \end{verbatim} %-------------------------------------------------------------------------------------- \section{The PostScript header files} \subsection{\texttt{pstricks.pro}} %-------------------------------------------------------------------------------------- \begin{verbatim} /Pyth2 { % Pythagoras, xA yA xB yB 3 -1 roll % xA xB yB yA sub % xA xB yB-yA 3 1 roll % yB-yA xA xB sub % yB-yA xA-xB Pyth } def \end{verbatim} This new PostScript function allows to calculate the distance between two points, given by their coordinates whereas the existing \LPS{/Pyth} does this for two values. \subsection{\texttt{pst-dots.pro}} \verb+pst-dots.pro+ ist the file which defines the so called softfont PSTRocksFontDot, which collects all PSTricks symbols, which are not part of one of the standard PostScript fonts. The octogon symbol is defined as: \begin{verbatim} /OctogonPath { 228 550 moveto 7 { -456 0 rlineto 45 rotate } repeat closepath } def /SolidOctogon { OctogonPath fill } def /Octogon { OctogonPath .89 .89 scale OctogonPath eofill } def /BoldOctogon { OctogonPath .79 .79 scale OctogonPath eofill } def % \end{verbatim} \part{\texttt{pst-node} -- package} \section{\texttt{pst-node.tex} (\NODEfileversion -- \NODEfiledate)} \subsection{Bugfix for \texttt{psmatrix}} A long standing bug with \Lenv{psmatrix} and using the \Lkeyword{name} option is now fixed. The following works as expected: \begin{LTXexample}[width=2cm] \begin{psmatrix}[rowsep=5mm] [name=a]a\\ [name=b]b\\[1cm] [name=c]c\\ \end{psmatrix} \ncline{a}{b} \ncarc{a}{c} \end{LTXexample} An optional argument after \Lcs{\textbackslash} is now scanned in the correct way. \subsection{New option \texttt{pcRef}} There is a new option \Lkeyword{pcRef} for the \Lcs{ncangles} connection\index{node connection}. By default, the reference point for the \Lkeyword{armA} option is the border of the node. This makes it difficult to get horizontically aligned lines for different node images. With \texttt{pcRef=true} the node center is the reference point and the connection is still drawn from the border of the node. The first three images show the default behaviour: \makebox[\linewidth]{% \begin{pspicture}(5,4) \cnode(2.5,3.5){0.2}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=0.5cm} \ncangles{A}{B1} \ncangles{A}{B2} \ncangles{A}{B3} \ncangles{A}{B4} \end{pspicture} % \begin{pspicture}(5,4) \cnode(2.5,3.5){0.4}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=0.5cm} \ncangles{A}{B1} \ncangles{A}{B2} \ncangles{A}{B3} \ncangles{A}{B4} \end{pspicture} % \begin{pspicture}(5,4) \cnode(2.5,3.5){0.8}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=0.5cm} \ncangles{A}{B1} \ncangles{A}{B2} \ncangles{A}{B3} \ncangles{A}{B4} \end{pspicture} } The next three images display the influence of \texttt{pcRef=true}; the horizontal line for the three examples is on the same height: \makebox[\linewidth]{% \begin{pspicture}(5,4) \cnode(2.5,3.5){0.2}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=1cm} \ncangles[pcRef=true]{A}{B1} \ncangles[pcRef=true]{A}{B2} \ncangles[pcRef=true]{A}{B3} \ncangles[pcRef=true]{A}{B4} \end{pspicture} % \begin{pspicture}(5,4) \cnode(2.5,3.5){0.4}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=1cm} \ncangles[pcRef=true]{A}{B1} \ncangles[pcRef=true]{A}{B2} \ncangles[pcRef=true]{A}{B3} \ncangles[pcRef=true]{A}{B4} \end{pspicture} % \begin{pspicture}(5,4) \cnode(2.5,3.5){0.8}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=1cm} \ncangles[pcRef=true]{A}{B1} \ncangles[pcRef=true]{A}{B2} \ncangles[pcRef=true]{A}{B3} \ncangles[pcRef=true]{A}{B4} \end{pspicture} } \begin{lstlisting} \begin{pspicture}(5,4) \cnode(2.5,3.5){0.2}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=1cm} \ncangles[pcRef=true]{A}{B1} \ncangles[pcRef=true]{A}{B2} \ncangles[pcRef=true]{A}{B3} \ncangles[pcRef=true]{A}{B4} \end{pspicture} % \begin{pspicture}(5,4) \cnode(2.5,3.5){0.4}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=1cm} \ncangles[pcRef=true]{A}{B1} \ncangles[pcRef=true]{A}{B2} \ncangles[pcRef=true]{A}{B3} \ncangles[pcRef=true]{A}{B4} \end{pspicture} % \begin{pspicture}(5,4) \cnode(2.5,3.5){0.8}{A} \cnode(0.5,1){0.2}{B1} \cnode(1.5,1){0.4}{B2} \cnode(2.6,1){0.6}{B3} \cnode(4,1){0.8}{B4} \psset{angleB=90,angleA=-90,armA=1cm} \ncangles[pcRef=true]{A}{B1} \ncangles[pcRef=true]{A}{B2} \ncangles[pcRef=true]{A}{B3} \ncangles[pcRef=true]{A}{B4} \end{pspicture} \end{lstlisting} \part{\texttt{pst-plot} -- package} \section{\texttt{pst-plot.tex} (\PLOTfileversion -- \PLOTfiledate)} \iffalse \subsection{Axes} The behaviour of the optional argument \Lkeyword{Dx} changed. Using negative values will now decrease the labels with the correct value of \Lkeyword{Dx}: \psset{xunit=1cm} \begin{LTXexample}[wide,width=6cm] \begin{pspicture}(-0.5,-1)(6,4) \psaxes[Dy=-2, dy=1, Ox=4000, Dx=-1000, dx=1.5]{->}(10,4) \end{pspicture} \end{LTXexample} \vspace{1cm} \begin{pspicture}(-0.5,-1)(10,3) \psaxes[Dy=2, dy=1, Ox=4000, Dx=1000, dx=1.5]{->}(10,3)(0,0) \rput(5,2){Positive values for Dx und Dy} \end{pspicture} \begin{pspicture}(-0.5,-1)(10,3) \psaxes[Dy=-2, dy=1, Ox=4000, Dx=-1000, dx=1.5]{->}(10,3)(0,0) \rput(5,2){Negative values for Dx und Dy} \end{pspicture} \begin{lstlisting} \begin{pspicture}(-0.5,-1)(10,3) \psaxes[Dy=2, dy=1, Ox=4000, Dx=1000, dx=1.5]{->}(10,3)(0,0) \rput(5,2){Positive values for Dx und Dy} \end{pspicture} \begin{pspicture}(-0.5,-1)(10,3) \psaxes[Dy=-2, dy=1, Ox=4000, Dx=-1000, dx=1.5]{->}(10,3)(0,0) \rput(5,2){Negative values for Dx und Dy} \end{pspicture} \end{lstlisting} %\clearpage \fi \subsection{New options \texttt{LineToXAxis} and \texttt{LineToYAxis}} \psset{xunit=0.0333cm,yunit=2.5cm} \begin{pspicture}(0,-1)(400,1) \psline{->}(0,0)(400,0) \psline{->}(0,-1)(0,1) \psplot[plotstyle=LineToXAxis,linestyle=dashed,plotpoints=50, linecolor=red!40, showpoints=true,dotstyle=o,dotsize=0.2]{0}{360}{x sin} \end{pspicture} \begin{lstlisting} \psset{xunit=0.0333cm,yunit=2.5cm} \begin{pspicture}(0,-1)(400,1) \psline{->}(0,0)(400,0) \psline{->}(0,-1)(0,1) \psplot[plotstyle=LineToXAxis,linestyle=dashed,plotpoints=50, linecolor=red!40, showpoints=true,dotstyle=o,dotsize=0.2]{0}{360}{x sin} \end{pspicture} \end{lstlisting} \psset{xunit=0.0333cm,yunit=2.5cm} \begin{pspicture}(0,-1.2)(400,1.4) \psline{->}(0,0)(390,0) \psline{->}(0,-1.1)(0,1.2) \psplot[plotstyle=LineToYAxis,linestyle=dashed,plotpoints=50, linecolor=blue!40, showpoints=true]{0}{360}{x cos} \end{pspicture} \begin{lstlisting} \psset{xunit=0.0333cm,yunit=2.5cm} \begin{pspicture}(0,-1.2)(400,1.4) \psline{->}(0,0)(390,0) \psline{->}(0,-1.1)(0,1.2) \psplot[plotstyle=LineToYAxis,linestyle=dashed,plotpoints=50, linecolor=blue!40, showpoints=true]{0}{360}{x cos} \end{pspicture} \end{lstlisting} \part{\texttt{pst-tree} -- package} \section{\texttt{pst-tree.tex} (\TREEfileversion -- \TREEfiledate)} There was a bug with \texttt{style=...} due to a missing \Lcs{use\textat par} in \Lcs{pstree\textat ii}. \nocite{*} \bibliographystyle{plain} \bibliography{PSTricks} \printindex \end{document}