%% $Id: pst-news13.tex 165 2015-07-26 07:27:55Z 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}