%
% see pstricks.tex for license and copyright
%
%% The \??put macros -----------
%
% \setbox#2=\hbox{\pst@Verb{% check for empty #1
% (#1) /strAngle ED strAngle length 0 eq { 0 }{ #1 } ifelse
% %\ifPSTlualatex neg \fi
% \tx@RotBegin}\box#2\pst@Verb{\tx@RotEnd}}%
\def\psput@cartesian#1{%
\hbox to \z@{\kern\pst@dimg{\vbox to \z@{\vss\box#1\vskip\pst@dimh}\hss}}%
}
\def\psput@special#1{%
\hbox{%
\pst@Verb{{ \pst@coor \pstnodescale } \tx@PutCoor \tx@PutBegin }% 20150911 hv
\box#1%
\pst@Verb{ \tx@PutEnd }%
}%
}
\def\tx@PutCoor{PutCoor }
\def\tx@PutBegin{PutBegin }
\def\tx@PutEnd{PutEnd }
\def\rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\rput@i}{\rput@ii}}}
\def\rput@i[#1]{%
\test@for@options#1=\@nil
\ifnum\the\pst@cntm=\z@
\addto@par{ref={#1}}%
\else
\expandafter\addto@par\expandafter{#1}%
\fi
\rput@ii
}
\def\test@for@options#1=#2\@nil{%
\if$#2$% #2 is empty -> old syntax
\pst@cntm=\z@
\else % something like foo=bar
\pst@cntm=\@ne
\fi
}
\def\rput@ii{\@ifnextchar({\rput@iv}{\rput@iii}}
\def\rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\rput@iv}{\rput@iv(\z@,\z@)}}
\def\rput@iv(#1){\pst@killglue\pst@makebox{\rput@v{#1}}}
\def\rput@v#1{%
\begingroup
\use@par
\if@star\pst@starbox\fi
\pst@makesmall\pst@hbox
\ifx\psk@rot\@empty\else\pst@rotate{ ps@rot \ifPSTlualatex neg \fi }\pst@hbox\fi% (MJS)
% \pst@rotate\psk@rot\pst@hbox%
\psput@{#1}\pst@hbox%
\endgroup
\ignorespaces}
%
\def\multirput{%
\def\pst@par{}%
\pst@ifstar{\@ifnextchar[{\multirput@i}{\multirput@ii}}}
\def\multirput@i[#1]{\addto@par{ref={#1}}\multirput@ii}
\def\multirput@ii{\@ifnextchar({\multirput@iv}{\multirput@iii}}
\def\multirput@iii#1{\addto@par{rot={#1}}\multirput@iv}
\def\multirput@iv(#1){%
\@ifnextchar({\multirput@v(#1)}{\multirput@v(\z@,\z@)(#1)}}
\def\multirput@v(#1,#2)(#3,#4)#5{%
\pst@makebox{\multirput@vi(#1,#2)(#3,#4){#5}}}
\def\multirput@vi(#1,#2)(#3,#4)#5{%
\pst@killglue%
\global\psLoopIndex=\@ne\relax
\begingroup
\use@par
\if@star\pst@starbox\fi
\pst@makesmall\pst@hbox
\ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS)
% \pst@rotate\psk@rot\pst@hbox
\pssetxlength\pst@dima{#1}%
\pssetylength\pst@dimb{#2}%
\pssetxlength\pst@dimc{#3}%
\pssetylength\pst@dimd{#4}%
\pst@cntg=#5\relax
\leavevmode
\loop
\vbox to \z@{%
\vss
\hbox to \z@{\kern\pst@dima\copy\pst@hbox\hss}%
\vskip\pst@dimb%
}%
\ifnum\pst@cntg>\psLoopIndex
\advance\pst@dima\pst@dimc
\advance\pst@dimb\pst@dimd
\global\advance\psLoopIndex by \@ne
\repeat
\endgroup
\ignorespaces%
}
%
\newif\if@fixedradius
\def\cput{\def\pst@par{}\pst@object{cput}}
\def\cput@i{\@fixedradiusfalse\cput@ii}
\def\cput@ii{\pst@killglue\@ifnextchar({\cput@iv}{\cput@iii}}
\def\cput@iii#1{%
\addto@par{rot={#1}}%
\@ifnextchar({\cput@iv}{\cput@iv(\z@,\z@)}%
}
\def\cput@iv(#1){\pst@makebox{\cput@v{#1}}}
\def\cput@v#1{%
\begingroup
\use@par
\setbox\pst@hbox=\hbox{%
\psboxsepfalse
\if@fixedradius\psCirclebox@ii\else\pscirclebox@ii\fi%
}%
\pst@@makesmall\pst@hbox
\ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS)
% \pst@rotate\psk@rot\pst@hbox
\psput@{#1}\pst@hbox
\endgroup
\ignorespaces%
}
%
\def\Cput{\def\pst@par{}\pst@object{Cput}}
\def\Cput@i{\@fixedradiustrue\cput@ii}
\newdimen\pslabelsep
\define@key[psset]{pstricks}{labelsep}[5pt]{%
\pssetlength\pslabelsep{#1}%
\ifx\PSTplotLoaded\endinput% Set labels for pst-plot, if laoded
\let\psxlabelsep\pslabelsep%
\let\psylabelsep\pslabelsep%
\fi}
\psset[pstricks]{labelsep=5pt}
%
\define@key[psset]{pstricks}{refangle}[0]{\pst@expandafter\psset@@refangle{#1}\@nil}
\def\psset@@refangle#1\@nil{%
\def\next##1@#1=##2"##3@##4\@nil{%
\ifx\relax##2%
\pst@getangle{#1}\psk@refangle
\def\psk@uputref{}%
\else
\def\psk@refangle{##2 }%
\def\psk@uputref{##3}%
\fi}%
\expandafter\next\pst@refangletable @#1=\relax"@\@nil%
\pst@Verb{ gsave STV CP T /ps@refangle \psk@refangle\space def grestore }%ADDED (MJS)
}
%
\def\pst@refangletable{%
@r=0"20%
@u=90"02%
@l=180"10%
@d=-90"01%
@ur=45"22%
@ul=135"12%
@dr=-135"21%
@dl=-45"11}
\psset[pstricks]{refangle=0}
% DG/SR modification begin - Mar. 24, 1999 - Patch 10
%\def\uput{\def\pst@par{}\@ifnextchar[{\uput@ii}{\uput@i}}
\def\uput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\uput@ii}{\uput@i}}}
% DG/SR modification end
\def\uput@i#1{\addto@par{labelsep=#1}\uput@ii}
%
\def\uput@ii[#1]{%
\addto@par{refangle={#1}}%
\@ifnextchar({\uput@iv}{\uput@iii}}
%
\def\uput@iii#1{%
\addto@par{rot={#1}}%
\@ifnextchar({\uput@iv}{\uput@iv(\z@,\z@)}}
%
\def\uput@iv(#1){\pst@killglue\pst@makebox{\uput@v{#1}}}
%
\def\uput@v#1{%
\begingroup
\use@par
\if@star\pst@starbox\fi
\pstCheckCoorType{#1}% needed for \uput@vii
\uput@vi
\psput@{#1}\pst@hbox
\endgroup
\ignorespaces}
%
\def\uput@vi{%
\ifx\psk@uputref\@empty\uput@vii\tx@UUput{}%
\else
\ifx\psk@rot\@empty\expandafter\uput@viii\psk@uputref
\else\uput@vii\tx@UUput{}\fi
\fi}
%
\def\uput@vii#1#2{%
\edef\pst@coor{%
\ifPst@SpecialLength\pst@SpecialLength\else\pst@number\pslabelsep\fi
% \pst@number\pslabelsep % \ifdim\pslabelsep<\z@ neg \fi
#2%
\pst@number{\wd\pst@hbox}%
\pst@number{\ht\pst@hbox}%
\pst@number{\dp\pst@hbox}%
\ifnum\pst@C@@rType=7
ps@refangle % CHANGED (MJS) FROM \psk@refangle\space
\ifx\psk@rot\@empty\else ps@rot\space sub \fi
\else
\psk@refangle\space
\ifx\psk@rot\@empty\else \psk@rot\space sub \fi
\fi
\tx@Uput #1}%
%\show\pst@coor
\setbox\pst@hbox=\hbox to\z@{\hss\vbox to\z@{\vss\box\pst@hbox\vss}\hss}%
\setbox\pst@hbox=\psput@special\pst@hbox
\ifPSTlualatex
\ifnum\pst@C@@rType=7
\ifx\psk@rot\@empty\else\pst@rotate{ps@rot neg}\pst@hbox\fi% CHANGED FROM \psk@rot (MJS)
\else
\ifx\psk@rot\@empty\else\pst@rotate{\psk@rot\space neg}\pst@hbox\fi%
\fi
\else
\ifnum\pst@C@@rType=7
\ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% CHANGED FROM \psk@rot (MJS)
\else
\ifx\psk@rot\@empty\else\pst@rotate{\psk@rot}\pst@hbox\fi%
\fi
\fi
}
%
%
\def\uput@viii#1#2{%
\ifnum#1>\z@\relax\ifnum#2>\z@\relax\pslabelsep=.707\pslabelsep\fi\fi
\setbox\pst@hbox=\vbox to\z@{%
\ifnum#2=1\relax\vskip\pslabelsep\else\vss\fi
\hbox to\z@{%
\ifnum#1=2\relax\hskip\pslabelsep \else\hss\fi
\box\pst@hbox%
\ifnum#1=1\relax\hskip\pslabelsep\else\hss\fi}%
\ifnum#2=2\relax\vskip\pslabelsep\else\vss\fi}}
%
\def\tx@Uput{Uput }
\def\tx@UUput{UUput }
%
\def\Rput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\Rput@ii}{\Rput@i}}}
\def\Rput@i#1{\addto@par{labelsep=#1}\Rput@ii}
\def\Rput@ii[#1]{\addto@par{ref={#1}}\@ifnextchar({\Rput@iv}{\Rput@iii}}
\def\Rput@iii#1{\addto@par{rot={#1}}\@ifnextchar({\Rput@iv}{\Rput@iv(\z@,\z@)}}
\def\Rput@iv(#1){\pst@killglue\pst@makebox{\Rput@v{#1}}}
\def\Rput@v#1{%
\begingroup
\use@par
\if@star\pst@starbox\fi
\Rput@vi
\pst@makesmall\pst@hbox
\ifx\psk@rot\@empty\else\pst@rotate{ps@rot }\pst@hbox\fi% (MJS)
% \pst@rotate\psk@rot\pst@hbox
\psput@{#1}\pst@hbox
\endgroup
\ignorespaces}
%
\def\Rput@vi{%
\pst@dimg=\dp\pst@hbox
\advance\pst@dimg\pslabelsep
\dp\pst@hbox=\pst@dimg
\pst@dimg=\ht\pst@hbox
\advance\pst@dimg\pslabelsep
\ht\pst@hbox=\pst@dimg
\setbox\pst@hbox\hbox{\kern\pslabelsep\box\pst@hbox\kern\pslabelsep}}%
%
\def\oldpsput{\def\pst@par{}\pst@ifstar{\@ifnextchar[{\oldpsput@i}{\oldpsput@ii}}}
\def\oldpsput@i[#1]{\addto@par{ref={#1}}\oldpsput@ii}
\def\oldpsput@ii{\@ifnextchar<{\oldpsput@iii}{\oldpsput@iv}}
\def\oldpsput@iii<#1>{\rput@iii{#1}}
\def\OldPsput{\let\psput\oldpsput}
\def\NewPsput{\let\psput\rput}
%