%% $Id: pst-news13.tex 856 2013-12-09 10:34:40Z herbert $
\documentclass[11pt,english,BCOR10mm,DIV12,bibliography=totoc,parskip=false,smallheadings
    headexclude,footexclude,oneside]{pst-doc}
\listfiles
\let\Lfile\LFile
\usepackage[utf8]{inputenc}
\usepackage{pst-node}
\let\pstnodeFV\fileversion
\let\pstnodeFD\filedate
\usepackage{pst-plot}
\usepackage{xkvview}
\renewcommand\bgImage{\psscalebox{15}{\color{blue!20}2013}}
\def\textat{\char064}
\lstset{explpreset={pos=l,width=-99pt,overhang=0pt,hsep=\columnsep,vsep=\bigskipamount,rframe={}},
    escapechar=?}
\begin{document}

%\psset{PstDebug=1}
\title{\texttt{News -- 2013}\\ \Large new macros and bugfixes for the
basic package \nxLFile{pstricks}}
\author{Herbert Voß}
\date{\today}

\maketitle

\clearpage
\tableofcontents

\clearpage
\part{\texttt{pstricks} -- package}

%--------------------------------------------------------------------------------------
\section{\texttt{pstricks.sty}}
%--------------------------------------------------------------------------------------

There are new optional arguments \Lkeyword{monochrome} and \Lkeyword{grayscale} to convert \emph{all} RGB and CMYK colors
into black and white or grayscale. The equations are:

\subsection{RGB to gray}
\[ \text{gray} = 0.07 \text{red} + 0.71 \text{green} + 0.21 \text{blue} \]

\subsection{CMYK to gray}
\begin{align*} 
    c &= c  (1 - k) + k\\
    m &= m  (1 - k) + k\\
    y &= y  (1 - k) + k\\
    r, g, b &= (1 - c), (1 - m), (1 - y)\\
  \text{gray} &= 0.299 r + 0.587 g + 0.114 b
\end{align*}

This change will be global and effects also all other color setting!
See section~\vref{subsec:monochrome} for a local change of the color output.

%--------------------------------------------------------------------------------------
\section{\texttt{pstricks.tex} (\pstricksFV -- \pstricksFD)}
%--------------------------------------------------------------------------------------
There is a new optional argument \Lkeyword{pgffunctions} for the environment \Lenv{pspicture}.
With this option one can force the loading of the special pgf PostScript function
which in some cases are missing, when using the package \LPack{auto-pst-pdf} and another
package which uses pgf macros.

\lstinline|\begin{pspicture}[pgffunctions,...](...)(...)|

\subsection{labelsep}
The \Lkeyword{labelsep} is the first -- optional -- argument of \Lcs{uput}. 
It is now possible to use the PostScript notation for this \emph{length}, eg \verb|{! 45 sin 3 mul}|.
Then the unit which is active when \Lcs{uput} is active is used. With a unit the PS notation
ist not allowed and leads to an error!


\subsection{Customization}

\Lcs{pscustom} now knows the PostScript function \Lcs{reversepath}:

\begin{LTXexample}[width=5cm]
\begin{pspicture}(5,3)
  \pnode(5;30){A}
  \psline(A)(0,0)(5;0)
  \pscustom[fillstyle=vlines]{%
    \psarcAB(A)(0,0)(2,0)
    \reversepath
    \psarcAB(A)(0,0)(4,0)}
\end{pspicture}
\end{LTXexample}


\subsection{Coordinates}
\subsubsection{Postscript mode}
A preceeding \verb|!| in coordinates will interpret the following expressing in Postfix notation.
The expression is automatically translated from user into screen coordinates. With a double \verb|!!|
this can be omitted and the Postscript expression will not be translated. This is useful in some
special cases:

\begin{LTXexample}[width=5cm]
\begin{pspicture}[showgrid](2,2)(5,5)
\pscustom{
  \psarc(3,3){1}{0}{90}
  \rmoveto(.5;-90)
  \psarc[liftpen=2](!!CP){.5}{90}{180}}
\end{pspicture}
\end{LTXexample}

\verb|CP| is the internal abbreviation for the Postscript function \texttt{currentpoint}.


\subsubsection{Algebraic mode}
Additionally to the special pair of coordinates \verb|(*x f(x))| where $x$ must be a value in
PostScript notation and $f(x)$ in algebraic noatation, there is now a \verb|(**{f(y), y})| 
which is vice versa, $f(y)$ in algebraic and $y$ in PostScript notation. And there is also
a \verb|(+{x}, {f(x)})|, where both expressions must be in algebraic notation and \verb|{x}| must expand to a value
or an expression which uses known system or user defined PostScript functions.


\begin{LTXexample}[width=5cm]
\def\f(#1){#1^2} \def\y{2}
\begin{pspicture}[showgrid](5,5)
\pnode(+{sqrt(Pi),1.5*(sin(x)^2+cos(x)^2)}){A} 
\psdot(A) \psline[arrowscale=1.5]{->}(A)
\psline{->}(*2 {x^2})  \psline{->}(**{y^2} 2)
\psline(1,1)(**{\f(y)} 2.2)(2;45)(*2 {\f(x)})
\psline[linecolor=blue]{->}(+{sqrt(2),\f(x)}) 
\psline[linecolor=blue]{->}(+{sqrt(3)},{\f(x)}) 
\psline(+1,x+0.5)
\end{pspicture}
\end{LTXexample}


Important: If the expression contains itself a parenthesis like \verb|)| then the argument must
be inside braces; otherwise \TeX\ will take the first closing parenthesis as clsong delimiter 
for the complete coordinate argument \verb|(...)| which then gives an error.








\subsection{Fillstyle \texttt{dots}}
A fix for the fill style \Lkeyval{dots} to make it work again:

\begin{LTXexample}[width=5cm]
\pspicture(4,3) 
\psframe[fillstyle=dots](4,3) 
\endpspicture 
\end{LTXexample}

\subsection{New macro \nxLcs{psRing}}

\begin{BDef}
\LcsStar{psRing}\OptArgs\Largr{\CAny}\Largb{Inner Radius}\Largb{Outer Radius}
\end{BDef}


\begin{LTXexample}[width=5cm]
\begin{pspicture}[showgrid](4,4)
  \psRing[linecolor=red](2,2){0.3}{0.8}
  \psRing*[opacity=0.5](2,2){1}{2}
\psdot(2,2)
\end{pspicture}
\end{LTXexample}

\subsection{New macros \nxLcs{pssetMonochrome}, \nxLcs{pssetGrayscale},  and \nxLcs{psresetColor}}\label{subsec:monochrome}

\begin{BDef}
\Lcs{pssetMonochrome}\\
\Lcs{pssetGrayscale}\\
\Lcs{psresetColor}
\end{BDef}



\begin{LTXexample}[width=5cm]
\begin{pspicture}[showgrid](4,4)
  \pssetMonochrome%
  \psRing[linecolor=red](2,2){0.3}{0.8}
  \psRing*[linecolor=red!30](2,2){1}{2}
\psresetColor%
\psdot[linecolor=red,dotscale=3](2,2)
\end{pspicture}
\end{LTXexample}

\begin{LTXexample}[width=5cm]
\begin{pspicture}[showgrid](4,4)
  \pssetGrayscale%
  \psRing[linecolor=red](2,2){0.3}{0.8}
  \psRing*[linecolor=red!30](2,2){1}{2}
\psresetColor%
\psdot[linecolor=red,dotscale=3](2,2)
\end{pspicture}
\end{LTXexample}



\section{The PostScript header files}
\subsection{\nxLFile{pstricks.pro}}
%--------------------------------------------------------------------------------------

\clearpage
\part{Other packages}
\section{\texttt{pst-node} -- version \pstnodeFV\ | \pstnodeFD}

\small
\begin{verbatim}
1.29  2013-07-13 - fix bug with missing angle in special node coordinates
                 - fix for fnpnodes (argument must be in {})
                 - fix typo in the documentation
1.28  2013-07-10 - added \pnodes (plural) for multiple node definition
1.27  2013-04-12 - added macro \Lcs{Cnodeput} which takes radius=...
                   into account
1.26  2013-04-09 - added macros \Lcs{psncurve} and \Lcs{psnccurve}
                   for a sequence of nodes created by \Lcs{curvepnodes}
1.25  2012-09-21 - Global node coordinates only with saveNodeCoors
\end{verbatim}

\normalsize


\begin{LTXexample}[pos=t]
\begin{pspicture}[showgrid](0,-0.5)(7,6)
  \pnode(3,3){A}\psdot(A)\uput[-35](A){A}
  \pnode(6,5){B}\psdot(B)\uput[135](B){B}
  \psline[linestyle=dotted](A)\psline[linestyle=dotted](A)(B)
  \pscircle[linestyle=dotted](A){!5 sqrt}
  \pnode([nodesep=2]{B}A){P0}\psdot(P0)
  \pnode([offset=1]{B}A){P1}\psdot(P1)
  \pnode([nodesep=2,offset=1]{B}A){P}\psdot(P)
  \psline(A)([nodesep=2]{B}A) \psline[linestyle=dashed](P0)(P)
  \psline(A)([offset=1]{B}A)  \psline[linestyle=dashed](P1)(P)
  \pnode([nodesep=2,offset=1,angle=135]{B}A){Q}\psdot(Q)
  \psarc[origin={A},arrowscale=2]{->}(A){!5 sqrt}{(P)}{(Q)}
%
  \pnode([nodesep=2,offset=2]{B}A){P}\psdot(P)
  \pnode([nodesep=2,offset=2,angle=135]{B}A){Q}\psdot(Q)
  \psarc[origin={A},arrowscale=2]{->}(A){!8 sqrt}{(P)}{(Q)}
\end{pspicture}
\end{LTXexample}




\clearpage
\nocite{*}
\bibliographystyle{plain}
\bibliography{PSTricks}

\printindex


\end{document}


