% % % \documentclass[12pt]{article} \usepackage{utopia,pstricks,pst-plot,rputover} \usepackage{url,color,secdot} \definecolor{LinkColor}{rgb}{0, 0, 0.4}% \usepackage[pagebackref,colorlinks,urlcolor=blue,citecolor=LinkColor,% linkcolor=LinkColor,plainpages=false,breaklinks,% bookmarksnumbered,bookmarksopen=true,bookmarksopenlevel=0,% hyperfootnotes=true]{hyperref} \def\sectionautorefname{Section} \usepackage{amsmath} \oddsidemargin0.5in \evensidemargin0.5in \topmargin0in \sectiondot{section} % put period after section number but not in cross- % references to number (e.g. \autoref) \begin{document} \thispagestyle{empty} \vspace*{\fill} \psset{unit=1mm} \hspace*{\fill}% \begin{pspicture}(120,120) \fboxrule=0pt% \fboxsep=5pt% % \pscircle[fillstyle=solid,fillcolor=blue!20,linestyle=none](60,60){60}% % \psset{origin={60,60}}% % \psclip{\pscircle[linestyle=none](0,0){60}}% \pscustom[fillstyle=solid,fillcolor=red!30,linestyle=none]{% \psplot{-60}{60}{x 10 mul cos 12 mul}% \psline[liftpen=1](60,-5)(60,-60)(-60,-60)(-60,-5)% }% \endpsclip% % \rputover(60,57){\shortstack{\large Manual for\\[1mm]\large\texttt{rputover}\\version 1.0}}% \rputover(60,38){\shortstack{Martin J. Osborne\\[1mm]\scriptsize\url{https://www.economics.utoronto.ca/osborne/}\\[1mm]2017.3.26}}% % \coverable{% \psclip{\pscircle[linestyle=none](0,0){60}}% \psline[linewidth=2,linecolor=orange!30](-65,-3.5)(65,-3.5)% \rput{33}(40,-23){\psplot[linecolor=green!30,linewidth=2]{-65}{65}{x 10 mul cos 12 mul}}% % \rput{-30}(-24,37){\psplot[linecolor=green!30,linewidth=1]{-65}{65}{x 10 mul cos 12 mul}} \endpsclip% }% % \end{pspicture}% \hspace*{\fill}% \vspace*{\fill} \newpage \sloppy \section{Introduction} You create a PSTricks figure with regions filled with various colors. \bigskip \hspace*{\fill}% \begin{pspicture}(100,30) \fboxsep=5pt \psframe[fillstyle=solid,fillcolor=blue!20,linestyle=none](0,0)(100,30) \psset{origin={50,15}} \pscustom[fillstyle=solid,fillcolor=red!30,linestyle=none]{% \psplot{-50}{50}{x 15 mul cos 12 mul} \psline[liftpen=1](50,0)(50,-15)(-50,-15)(-50,0) } \end{pspicture}% \hspace*{\fill} \bigskip \noindent You add some lines over the colors. \bigskip \hspace*{\fill}% \begin{pspicture}(100,30) \fboxsep=5pt \psframe[fillstyle=solid,fillcolor=blue!20,linestyle=none](0,0)(100,30) \psset{origin={50,15}} \pscustom[fillstyle=solid,fillcolor=red!30,linestyle=none]{% \psplot{-50}{50}{x 15 mul cos 12 mul} \psline[liftpen=1](50,0)(50,-15)(-50,-15)(-50,0) } \psset{origin={0,0}} \psline[linestyle=dotted,linewidth=0.5](53,0)(53,23)(0,23) \end{pspicture}% \hspace*{\fill} \bigskip \noindent Now you want to add some labels. You'd like these labels to block out the lines. \bigskip \hspace*{\fill}% \begin{pspicture}(100,30) \fboxsep=3pt \psframe[fillstyle=solid,fillcolor=blue!20,linestyle=none](0,0)(100,30) \psset{origin={50,15}} \pscustom[fillstyle=solid,fillcolor=red!30,linestyle=none]{% \psplot{-50}{50}{x 15 mul cos 12 mul} \psline[liftpen=1](50,0)(50,-15)(-50,-15)(-50,0) } \psset{origin={0,0}} \rputover(53,17){label}% \coverable{% \psline[linestyle=dotted,linewidth=0.5](53,0)(53,23)(0,23) } \end{pspicture}% \hspace*{\fill} \bigskip \noindent This style allows you to do that. Why do you need a style? Why not use \verb+\rput*+? That blocks out the lines, but it does so by creating a white rectangle that blocks the colors too. \bigskip \hspace*{\fill}% \begin{pspicture}(100,30) \fboxrule=0pt \fboxsep=3pt \psframe[fillstyle=solid,fillcolor=blue!20,linestyle=none](0,0)(100,30) \psset{origin={50,15}} \pscustom[fillstyle=solid,fillcolor=red!30,linestyle=none]{% \psplot{-50}{50}{x 15 mul cos 12 mul} \psline[liftpen=1](50,0)(50,-15)(-50,-15)(-50,0) } \psset{origin={0,0}} \psline[linestyle=dotted,linewidth=0.5](53,0)(53,23)(0,23) \rput*(53,17){label}% \end{pspicture}% \hspace*{\fill} \bigskip \noindent You could change the background color of that rectangle, but if the rectangle includes regions with two or more colors, this approach can get pretty complicated. This style offers a simple solution. You use \verb+\rputover+ instead of \verb+\rput+ and include all the objects you want to be covered by the text in the argument of \verb+\coverable+, like so: \small \begin{verbatim} \usepackage{pstricks,rputover} ... \begin{pspicture}(100,30) ... \fboxsep=3pt \rputover(53,17){label}% \coverable{% \psline[linestyle=dotted,linewidth=0.5](50,0)(50,23)(0,23) } ... \end{pspicture} \end{verbatim} Note that \begin{itemize} \item \verb+%+ must follow every \verb+\rputover+ statement \item the separation around the label is determined by \verb+\fboxsep+. \end{itemize} The style combines two ideas. The first idea, suggested by the StackExchange user Werner on \href{http://tex.stackexchange.com/questions/353748/is-there-a-variant-of-rput-in-pstricks-that-preserves-background-fill-colors}{this page}, is to use \verb+\psDefBoxNodes+ in \verb+pst-node.sty+ to get the coordinates of the corners of the box occupied by each label. The second idea is to use these coordinates and \verb+\psclip+ to remove the parts of the objects in the argument of \verb+\coverable+ that overlap with the labels. The only subtlety in implementing this second idea is that we want to do a `reverse clip': we want to keep the areas \textit{outside} the labels, not the ones inside. \section{Commands} \verb+\rputover+ has the same syntax as \verb+\rput+. It should be immediately followed by \verb+%+. Example: \verb+\rputover{30}[br](0,10){label}%+. \bigskip \noindent \verb+\coverable+ has a single argument, which consists of all the objects that are to be covered by the objects that are arguments of \verb+\putover+ commands. Example: \verb+\coverable{\psline(25,0)(25,23)(0,23)\pscircle(0,0){5}}+ \section{History} \begin{description} \item[Version 1.0, 2017.3.25] First version \end{description} \end{document} %