From b77be621f0a8f5fa4c5ccb00365e5578dd3dbd7f Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 27 Mar 2017 21:43:48 +0000 Subject: rputover (27mar17) git-svn-id: svn://tug.org/texlive/trunk@43624 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/doc/latex/rputover/README.txt | 7 + Master/texmf-dist/doc/latex/rputover/rputover.pdf | Bin 0 -> 35254 bytes Master/texmf-dist/doc/latex/rputover/rputover.tex | 237 ++++++++++++++++++++++ Master/texmf-dist/tex/latex/rputover/rputover.sty | 70 +++++++ 4 files changed, 314 insertions(+) create mode 100644 Master/texmf-dist/doc/latex/rputover/README.txt create mode 100644 Master/texmf-dist/doc/latex/rputover/rputover.pdf create mode 100644 Master/texmf-dist/doc/latex/rputover/rputover.tex create mode 100644 Master/texmf-dist/tex/latex/rputover/rputover.sty (limited to 'Master/texmf-dist') diff --git a/Master/texmf-dist/doc/latex/rputover/README.txt b/Master/texmf-dist/doc/latex/rputover/README.txt new file mode 100644 index 00000000000..6b97dc6c12b --- /dev/null +++ b/Master/texmf-dist/doc/latex/rputover/README.txt @@ -0,0 +1,7 @@ +Package purpose: To allow a PSTricks user to easily place text over objects without obscuring background colors. + +Author: Martin J. Osborne (https://www.economics.utoronto.ca/osborne/; email address = . @ utoronto.ca) + +License: LPPL1.3 + +Documentation: rputover.pdf. \ No newline at end of file diff --git a/Master/texmf-dist/doc/latex/rputover/rputover.pdf b/Master/texmf-dist/doc/latex/rputover/rputover.pdf new file mode 100644 index 00000000000..7fd6d29d537 Binary files /dev/null and b/Master/texmf-dist/doc/latex/rputover/rputover.pdf differ diff --git a/Master/texmf-dist/doc/latex/rputover/rputover.tex b/Master/texmf-dist/doc/latex/rputover/rputover.tex new file mode 100644 index 00000000000..13d153e4e4f --- /dev/null +++ b/Master/texmf-dist/doc/latex/rputover/rputover.tex @@ -0,0 +1,237 @@ +% +% +% +\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} +% diff --git a/Master/texmf-dist/tex/latex/rputover/rputover.sty b/Master/texmf-dist/tex/latex/rputover/rputover.sty new file mode 100644 index 00000000000..bfaf166f888 --- /dev/null +++ b/Master/texmf-dist/tex/latex/rputover/rputover.sty @@ -0,0 +1,70 @@ +% rputover.sty +% Version 1.0 +% Martin J. Osborne, 2017.3.25 +% Based partially on the answer of Werner at +% http://tex.stackexchange.com/questions/353748/is-there-a-variant-of-rput-in-pstricks-that-preserves-background-fill-colors +% Released under the LaTeX project public license 1.3 + +\RequirePackage{pst-node} + +\newcounter{rpo@pstfiglabel} +\newcounter{rpo@coverable} +\newlength{\rpo@fboxrule} +\setlength{\rpo@fboxrule}{\fboxrule} + +\def\rputover{% + \fboxrule=0pt + \@ifnextchar[% + {\@ifnextchar({\@putoveron}{\@putoveror}}% + {\@ifnextchar({\@putovernn}{\@putovernr}}% +}% + +\def\@putoveror[#1]#2(#3,#4)#5{% + \rput[#1]{#2}(#3,#4){\psDefBoxNodes{label\therpo@pstfiglabel}{\fbox{#5}}}% + \stepcounter{rpo@pstfiglabel}% + \setlength{\fboxrule}{\rpo@fboxrule}% +}% + +\def\@putoveron[#1](#2,#3)#4{% + \rput[#1](#2,#3){\psDefBoxNodes{label\therpo@pstfiglabel}{\fbox{#4}}}% + \stepcounter{rpo@pstfiglabel}% + \setlength{\fboxrule}{\rpo@fboxrule}% +}% + +\def\@putovernr#1(#2,#3)#4{% + \rput{#1}(#2,#3){\psDefBoxNodes{label\therpo@pstfiglabel}{\fbox{#4}}}% + \stepcounter{rpo@pstfiglabel}% + \setlength{\fboxrule}{\rpo@fboxrule}% +}% + +\def\@putovernn(#1,#2)#3{% + \rput(#1,#2){\psDefBoxNodes{label\therpo@pstfiglabel}{\fbox{#3}}}% + \stepcounter{rpo@pstfiglabel}% + \setlength{\fboxrule}{\rpo@fboxrule}% +}% + +% Optional argument of \coverable is intended to be the region (x0,y0)(x1,y1) with +% respect to which the reverse clip is done. The default, (-\maxdimen,-\maxdimen)(\maxdimen,\maxdimen), +% seems to work fine, so the possibility of specifying the region manually doesn't seem to be necessary (or useful). +\def\coverable{% + \@ifnextchar[{\@coverableo}{\@coverablen}% +}% + +\def\@coverableo[(#1,#2)(#3,#4)]#5{\@coverableg{#1}{#2}{#3}{#4}{#5}} +\def\@coverablen#1{\@coverableg{-\maxdimen}{-\maxdimen}{\maxdimen}{\maxdimen}{#1}} + +\def\@coverableg#1#2#3#4#5{% + \psclip{% + \pscustom[linestyle=none]{% + \loop% + \psline[liftpen=2](label\therpo@coverable:bl)(label\therpo@coverable:br)(label\therpo@coverable:tr)(label\therpo@coverable:tl)(label\therpo@coverable:bl)% + \stepcounter{rpo@coverable}% + \ifnum\value{rpo@coverable}<\value{rpo@pstfiglabel}% + \repeat% + \psline[liftpen=2](#1,#2)(#1,#4)(#3,#4)(#3,#2)% + }% + }% + #5 + \endpsclip% +} + -- cgit v1.2.3