diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/pmgraph/pmgraph.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/pmgraph/pmgraph.sty | 2094 |
1 files changed, 2094 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/pmgraph/pmgraph.sty b/Master/texmf-dist/tex/latex/pmgraph/pmgraph.sty new file mode 100644 index 00000000000..93b58e33e16 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pmgraph/pmgraph.sty @@ -0,0 +1,2094 @@ +\chardef\oldatcatcode=\catcode`@ +\catcode`@=11 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% PMGRAPH.STY --- intermediate version %% +%% of poor-man-graphics style %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% +% save old LaTeX macro +% + +\let\ltx@thinlines=\thinlines +\let\ltx@thicklines=\thicklines +\let\ltx@@getcirc=\@getcirc +\let\ltx@@circ=\@circ +\let\ltx@vector=\vector +\let\ltx@@svector=\@svector +\let\ltx@@getlarrow=\@getlarrow +\let\ltx@@gerlarrow=\@getrarrow + + + +\newif\ifflag@thicklines + +\newdimen\@dimenA +\newdimen\@dimenB +\newdimen\@dimenC +\newdimen\@dimenD + +% this is \put(x,y) where <x> and <y> are dimensions +\def\@@put#1#2#3{\@killglue\raise#2\hbox to\z@{\hskip #1 #3\hss}} + +% dashed or solid vertical line +\def\vdashline#1{% + \@setdashlength{#1}% + \ifnum \@dashcnt>0 + \setbox\@dashbox\hbox{\vrule height \@dashdim + width \@wholewidth}% + \@tempcnta=0 + \leavevmode + \lower \@dashdim \hbox{\kern -\@halfwidth + \vbox{\@whilenum \@tempcnta<\@dashcnt + \do{\copy\@dashbox \vskip\@tempdimb \advance\@tempcnta by 1}% + }}% + \else + \advance\@tempdima \@halfwidth + \ifdim \@tempdima>0pt + \leavevmode\kern -\@halfwidth + \vrule width \@wholewidth + height \@tempdima + depth \@halfwidth \relax + \fi + \fi +} + +% dashed or solid horizontal line +\def\hdashline#1{% + \@setdashlength{#1}% + \ifnum \@dashcnt>0 + \setbox\@dashbox\hbox{\vrule width \@dashdim + height \@halfwidth + depth \@halfwidth + \hskip \@tempdimb}% + \@tempcnta=0 + \@whilenum \@tempcnta<\@dashcnt + \do{\copy\@dashbox \advance\@tempcnta by 1}% + \else + \advance\@tempdima \@wholewidth + \ifdim \@tempdima>0pt + \leavevmode\kern -\@halfwidth + \vrule width \@tempdima + height \@halfwidth + depth \@halfwidth \relax + \fi + \fi +} + +% length of the line is in \@tempdima +% output : \@dashdim is the dash length, +% \@tempdimb is the dash space +% \@dashcnt is the number of dashes +\def\@setdashlength#1{% + \@dashdim=#1\unitlength + \@tempdimb=0.5\@tempdima \advance\@tempdimb by 0.5\@dashdim + \@dashcnt=\@tempdimb \@tempcnta=\@dashdim + \ifnum \@tempcnta>0 + \divide\@dashcnt by \@tempcnta + \else + \@dashcnt=0 + \fi + \advance\@dashcnt by -1 + \ifnum \@dashcnt>0 + \@tempdimb=-\@dashdim \multiply\@tempdimb by \@dashcnt + \advance\@tempdimb by \@tempdima \advance\@tempdimb by -\@dashdim + \divide\@tempdimb by \@dashcnt + \advance\@dashcnt by 1 + \else + \@tempdimb=0pt\@dashcnt=0 + \fi +} + + +%%% +%%% romb frame commands +%%% + +\def\romb{\@ifnextchar[{\romb@}{\romb@[c]}} +\def\romb@[#1](#2,#3)#4{\csname romb@#1\endcsname(#2,#3){#4}} + +\def\romb@r(#1,#2)#3{% + \put(-#3,0){\romb@c(#1,#2){#3}} +} + +\def\romb@l(#1,#2)#3{% + \put(#3,0){\romb@c(#1,#2){#3}} +} + +\def\romb@c(#1,#2)#3{% + \put(-#3,0){\line(#1,#2){#3}} + \put(-#3,0){\line(#1,-#2){#3}} + \put(#3,0){\line(-#1,#2){#3}} + \put(#3,0){\line(-#1,-#2){#3}} +} + +\def\rombBox{\@ifnextchar[{\@rombBox}{\@rombBox[x]}} +\def\rombBoX{\@ifnextchar[{\@rombBoX}{\@rombBoX[x]}} +\def\rombBOX{\@ifnextchar[{\@rombBOX}{\@rombBOX[x]}} + +\def\@rombBox[#1](#2,#3){% + \leavevmode\hbox to\z@{\baselineskip \z@ \lineskip \z@ + \@HelpRomb{#2}{#3}{0}[#1]% + }\@makepicbox(#2,#3)} + +\def\@rombBoX[#1](#2,#3){% + \leavevmode\hbox to\z@{\baselineskip \z@ \lineskip \z@ + \@HelpRomb{#2}{#3}{0}[#1]% + \@HelpRomb{#2}{#3}{1}[#1]% + }\@makepicbox(#2,#3)} + +\def\@rombBOX[#1](#2,#3){% + \leavevmode\hbox to\z@{\baselineskip \z@ \lineskip \z@ + \@HelpRomb{#2}{#3}{0}[#1]% + \@HelpRomb{#2}{#3}{1}[#1]% + \@HelpRomb{#2}{#3}{2}[#1]% + }\@makepicbox(#2,#3)} + +\def\@HelpRomb#1#2#3[#4]{\@makerombslope + \@dimenA=\@RombL\relax \multiply\@dimenA by #3 \@dimenB=\@dimenA + \multiply\@dimenA by \@xarg \multiply\@dimenB by \@yarg + \@dimenC=-\@dimenA \@dimenD=\@dimenC + \multiply\@dimenA by 2 \@dimenB=\@dimenA + \advance\@dimenA #1\unitlength \advance\@dimenB #2\unitlength + \if x#4 \@romblengthX + \else \if y#4 \@romblengthY + \else \if z#4 \@romblengthZ + \else \@romblengthX + \fi\fi\fi + \@makeromb} + +\def\@makerombslope{% + \@xarg \@RombX\relax \@yarg \@RombY\relax + \ifnum \@xarg<0 \@xarg -\@xarg \fi + \ifnum \@yarg<0 \@yarg -\@yarg \fi + \ifnum \@xarg=0 \xarg 2 \@yarg 1 \fi + \ifnum \@yarg=0 \xarg 2 \@yarg 1 \fi +} + +\def\@romblengthX{\@linelen=0.5\@dimenA} + +\def\@romblengthY{\@linelen=0.5\@dimenB + \divide\@linelen by \@yarg \multiply\@linelen by \@xarg} + +\def\@romblengthZ{\@romblengthY \advance\@linelen by 0.5\@dimenA} + +% it is supposed that \@xarg and \@yarg are set to slope values, +% and \@linelen is equal to the length of the romb side +\def\@makeromb{% + \@makerombhlp \advance\@tempdima by -\@linelen + \@@put{\@tempdima}{\@tempdimb}{\@sline}% + \@yarg=-\@yarg + \@makerombhlp \advance\@tempdima by -\@linelen + \@@put{\@tempdima}{\@tempdimb}{\@sline}% + \@xarg=-\@xarg + \@makerombhlp \advance\@tempdima by \@linelen + \@@put{\@tempdima}{\@tempdimb}{\@sline}% + \@yarg=-\@yarg + \@makerombhlp \advance\@tempdima by \@linelen + \@@put{\@tempdima}{\@tempdimb}{\@sline}% +} + +\def\@makerombhlp{\@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima 0.5\@dimenA \advance\@tempdimb 0.5\@dimenB} + +\def\rombboxstyle(#1,#2,#3){\def\@RombX{#1}% + \def\@RombY{#2}% + \def\@RombL{#3}% + \ignorespaces} + +%%% +%%% rect frame commands +%%% + +\def\frameBox{\@ifnextchar[{\@frameBox}{\@frameBox[]}} +\def\frameBoX{\@ifnextchar[{\@frameBoX}{\@frameBoX[]}} +\def\frameBOX{\@ifnextchar[{\@frameBOX}{\@frameBOX[]}} + +\def\ovalBox{\@ifnextchar[{\@ovalBox}{\@ovalBox[]}} +\def\ovalBoX{\@ifnextchar[{\@ovalBoX}{\@ovalBoX[]}} +\def\ovalBOX{\@ifnextchar[{\@ovalBOX}{\@ovalBOX[]}} + +\def\astroBox{\@ifnextchar[{\@astroBox}{\@astroBox[]}} +\def\astroBoX{\@ifnextchar[{\@astroBoX}{\@astroBoX[]}} +\def\astroBOX{\@ifnextchar[{\@astroBOX}{\@astroBOX[]}} + +\def\parquetBox{\@ifnextchar[{\@parquetBox}{\@parquetBox[]}} +\def\parquetBoX{\@ifnextchar[{\@parquetBoX}{\@parquetBoX[]}} +\def\parquetBOX{\@ifnextchar[{\@parquetBOX}{\@parquetBOX[]}} + +\def\octalBox{\@ifnextchar[{\@octalBox}{\@octalBox[]}} +\def\octalBoX{\@ifnextchar[{\@octalBoX}{\@octalBoX[]}} +\def\octalBOX{\@ifnextchar[{\@octalBOX}{\@octalBOX[]}} + +\def\dashBox#1{\@ifnextchar[{\@dashBox{#1}}{\@dashBox{#1}[]}} +\def\dashBoX#1{\@ifnextchar[{\@dashBoX{#1}}{\@dashBoX{#1}[]}} +\def\dashBOX#1{\@ifnextchar[{\@dashBOX{#1}}{\@dashBOX{#1}[]}} + +\def\userBox#1#2{\@ifnextchar[{\@userBox{#1}{#2}}{\@userBox{#1}{#2}[]}} +\def\userBoX#1#2{\@ifnextchar[{\@userBoX{#1}{#2}}{\@userBoX{#1}{#2}[]}} +\def\userBOX#1#2{\@ifnextchar[{\@userBOX{#1}{#2}}{\@userBOX{#1}{#2}[]}} + +\def\@frameBox[#1](#2,#3){\@makeBox{#2}{#3}{#1}{0}{r}} +\def\@frameBoX[#1](#2,#3){\@makeBoX{#2}{#3}{#1}{0}{r}} +\def\@frameBOX[#1](#2,#3){\@makeBOX{#2}{#3}{#1}{0}{r}} + +\def\@ovalBox[#1](#2,#3){\@makeBox{#2}{#3}{#1}{0}{O}} +\def\@ovalBoX[#1](#2,#3){\@makeBoX{#2}{#3}{#1}{0}{O}} +\def\@ovalBOX[#1](#2,#3){\@makeBOX{#2}{#3}{#1}{0}{O}} + +\def\@astroBox[#1](#2,#3){\@makeBox{#2}{#3}{#1}{0}{A}} +\def\@astroBoX[#1](#2,#3){\@makeBoX{#2}{#3}{#1}{0}{A}} +\def\@astroBOX[#1](#2,#3){\@makeBOX{#2}{#3}{#1}{0}{A}} + +\def\@parquetBox[#1](#2,#3){\@makeBox{#2}{#3}{#1}{0}{P}} +\def\@parquetBoX[#1](#2,#3){\@makeBoX{#2}{#3}{#1}{0}{P}} +\def\@parquetBOX[#1](#2,#3){\@makeBOX{#2}{#3}{#1}{0}{P}} + +\def\@octalBox[#1](#2,#3){\@makeBox{#2}{#3}{#1}{0}{L}} +\def\@octalBoX[#1](#2,#3){\@makeBoX{#2}{#3}{#1}{0}{L}} +\def\@octalBOX[#1](#2,#3){\@makeBOX{#2}{#3}{#1}{0}{L}} + +\def\@dashBox#1[#2](#3,#4){\@makeBox{#3}{#4}{#2}{#1}{r}} +\def\@dashBoX#1[#2](#3,#4){\@makeBoX{#3}{#4}{#2}{#1}{r}} +\def\@dashBOX#1[#2](#3,#4){\@makeBOX{#3}{#4}{#2}{#1}{r}} + +\def\@userBox#1#2[#3](#4,#5){\@makeBox{#4}{#5}{#3}{#2}{#1}} +\def\@userBoX#1#2[#3](#4,#5){\@makeBoX{#4}{#5}{#3}{#2}{#1}} +\def\@userBOX#1#2[#3](#4,#5){\@makeBOX{#4}{#5}{#3}{#2}{#1}} + +% #1 = x, #2 = y +% #3 = shadows +% #4 = dash line (real) +% #5 = frame style (,O,A,C,R,???) +% +\def\@makeBox#1#2#3#4#5{% + \leavevmode\hbox to\z@{\baselineskip \z@ \lineskip \z@ + \@HelpFrame{#1}{#2}{0}{#3}{#4}{#5}% + }\@makepicbox(#1,#2)} +% +\def\@makeBoX#1#2#3#4#5{% + \leavevmode\hbox to\z@{\baselineskip \z@ \lineskip \z@ + \ifdim \framesepH>\z@ + \@HelpFrame{#1}{#2}{0}{}{#4}{#5}% + \@HelpFrame{#1}{#2}{1}{#3}{#4}{#5}% + \else + \@HelpFrame{#1}{#2}{1}{}{#4}{#5}% + \@HelpFrame{#1}{#2}{0}{#3}{#4}{#5}% + \fi}\@makepicbox(#1,#2)} +% +\def\@makeBOX#1#2#3#4#5{% + \leavevmode\hbox to\z@{\baselineskip \z@ \lineskip \z@ + \ifdim \framesepH>\z@ + \@HelpFrame{#1}{#2}{0}{}{#4}{#5}% + \@HelpFrame{#1}{#2}{1}{}{#4}{#5}% + \@HelpFrame{#1}{#2}{2}{#3}{#4}{#5}% + \else + \@HelpFrame{#1}{#2}{2}{}{#4}{#5}% + \@HelpFrame{#1}{#2}{1}{}{#4}{#5}% + \@HelpFrame{#1}{#2}{0}{#3}{#4}{#5}% + \fi}\@makepicbox(#1,#2)} + +\def\@warn@corner{\@warning{Unable to draw corner}} + +% #1 = x, #2 = y +% #3 = multiple frame +% #4 = list of shadows +% #5 = dash/solid line (real) +% #6 = frame corner style (,O,A,C,R,???) +% +\def\@HelpFrame#1#2#3#4#5#6{% + \@tempdima=\framesepH\relax \multiply\@tempdima by #3 + \@dimenA=\framesepXM\@tempdima \@dimenB=\framesepYM\@tempdima + \@dimenC=-\@dimenA \@dimenD=-\@dimenB + \advance\@dimenA by \framesepXP\@tempdima + \advance\@dimenB by \framesepYP\@tempdima + \advance\@dimenA #1\unitlength \advance\@dimenB #2\unitlength + \advance\@dimenA by \frameexpandX\relax + \advance\@dimenB by \frameexpandY\relax + \@@makeframe{#5}{#6}% + \advance\@dimenA by 2\@wholewidth \advance\@dimenB by 2\@wholewidth + \advance\@dimenC by -\@wholewidth \advance\@dimenD by -\@wholewidth + \@setshadowsize + \@tfor \@tempa := #4 \do + {\@negargtrue + \ifdim \@dimenA>0pt \ifdim \@dimenB>0pt + \csname @rectshadow@\@tempa\endcsname{#5}% + \@updateshadowsize + \@negargfalse + \fi\fi + \if@negarg \@warning{Shadow position is wrong}\fi + }% +} + +% in subsequent commands: +% \@dimenA is x-size of the box, +% \@dimenB is y-size of the box +% \@dimenC is x-shift, \@dimenD is y-shift + +% +% standard corner +% +\def\@prepdummy{\@ovxx=0pt \@ovyy=0pt + \@ovdx=0pt \@ovdy=0pt + \@yyarg=0 \@negargtrue} + +\def\@prepframe@R{\@prepdummy} +\def\tl@corner@R{} +\def\tr@corner@R{} +\def\bl@corner@R{} +\def\br@corner@R{} + +% +% Oval corners +% +\def\@prepframe@O{% + \@tempdima=\RoundCorner\relax \@tempdima=2\@tempdima + \@negargtrue + \ifdim \@tempdima>\@dimenA \@negargfalse \fi + \ifdim \@tempdima>\@dimenB \@negargfalse \fi + \if@negarg + \@getcirc\@tempdima \@yyarg=\@tempcnta + \@ovxx=0.5\wd\@tempboxa \@ovyy=\@ovxx + \@tempdima=0.5\ht\@tempboxa \advance\@tempdima by -0.5\dp\@tempboxa + \@ovdx=\@halfwidth \advance\@ovdx by -\@tempdima \@ovdy=\@ovdx + \else + \@warn@corner + \fi +} + +\def\tl@corner@O{\@@TLcircle} +\def\tr@corner@O{\@@TRcircle} +\def\bl@corner@O{\@@BLcircle} +\def\br@corner@O{\@@BRcircle} + +% +% Astro corners +% +\def\@prepframe@A{\@prepframe@O} +\def\tl@corner@A{\@@brcircle} +\def\tr@corner@A{\@@blcircle} +\def\bl@corner@A{\@@trcircle} +\def\br@corner@A{\@@tlcircle} + +% +% Parquet corners +% +\def\@prepframe@P{\@negargtrue + \@tempdima=\RectCorner\relax + \ifdim \@tempdima>0.5\@dimenA \@negargfalse \fi + \ifdim \@tempdima>0.5\@dimenB \@negargfalse \fi + \if@negarg + \@ovxx=\@tempdima \@ovyy=\@tempdima + \@yyarg=0 \@ovdx=\@halfwidth \@ovdy=\@halfwidth + \else + \@warn@corner + \fi +} +\def\tl@corner@P{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\kern \@ovxx \raise -\@ovyy + \hbox{\vdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\kern 0pt \raise -\@ovyy + \hbox{\hdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} +\def\tr@corner@P{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\kern -\@ovxx \raise -\@ovyy + \hbox{\vdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\kern -\@ovxx \raise -\@ovyy + \hbox{\hdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} +\def\bl@corner@P{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\kern \@ovxx \raise 0pt + \hbox{\vdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\kern 0pt \raise \@ovyy + \hbox{\hdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} +\def\br@corner@P{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\kern -\@ovxx \raise 0pt + \hbox{\vdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\kern -\@ovxx \raise \@ovyy + \hbox{\hdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} + +% +% Ordinary corners: init= \def\@prepframe@D{\@prepframe@P} +% +\def\tl@corner@D{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\raise -\@ovyy + \hbox{\vdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\hdashline{\@tempa}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} +\def\tr@corner@D{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\raise -\@ovyy + \hbox{\vdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\kern -\@ovxx + \hbox{\hdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} +\def\bl@corner@D{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\vdashline{\@tempa}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\hdashline{\@tempa}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} +\def\br@corner@D{% + \@tempdima=\@ovyy + \setbox\@tempboxa\hbox{\vdashline{\@tempa}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \@tempdima=\@ovxx + \setbox\@tempboxa\hbox{\kern -\@ovxx + \hbox{\hdashline{\@tempa}}}% + \wd\@tempboxa=0pt \copy\@tempboxa + \setbox\@tempboxa\hbox{}% +} + +% +% Octal corners +% +\def\@prepframe@L{% + \@negargtrue + \ifnum \@RombX>0 \else \@negargfalse \fi + \ifnum \@RombY>0 \else \@negargfalse \fi + \if@negarg + \ifnum \@RombX>\@RombY + \@tempdima=\LineCorner\relax + \@tempdimb=\@tempdima + \multiply\@tempdimb by \@RombY + \divide\@tempdimb by \@RombX + \else + \@tempdimb=\LineCorner\relax + \@tempdima=\@tempdimb + \multiply\@tempdima by \@RombX + \divide\@tempdima by \@RombY + \fi + \ifdim \@tempdima>0.5\@dimenA \@negargfalse \fi + \ifdim \@tempdimb>0.5\@dimenB \@negargfalse \fi + \@ovxx=\@tempdima \@ovyy=\@tempdimb + \ifnum \@RombX>\@RombY + \ifdim \@ovxx<10pt \@negargfalse \fi + \else + \ifdim \@ovyy<10pt \@negargfalse \fi + \fi + \if@negarg + \@ovxx=\@tempdima \@ovyy=\@tempdimb + \@yyarg=0 \@ovdx=\@halfwidth \@ovdy=\@halfwidth + \else + \@warn@corner + \fi + \fi +} + +\def\tl@corner@L{\@xarg=\@RombX \@yarg=\@RombY \@linelen=\@ovxx + \hbox{\raise -\@ovyy \hbox{\@sline}}} +\def\tr@corner@L{\@xarg=-\@RombX \@yarg=\@RombY \@linelen=\@ovxx + \hbox{\raise -\@ovyy \hbox{\@sline}}} +\def\bl@corner@L{\@xarg=\@RombX \@yarg=-\@RombY \@linelen=\@ovxx + \hbox{\raise \@ovyy \hbox{\@sline}}} +\def\br@corner@L{\@xarg=-\@RombX \@yarg=-\@RombY \@linelen=\@ovxx + \hbox{\raise \@ovyy \hbox{\@sline}}} + +% +% Black box corners +% +\def\@prepframe@b{\@prepframe@P\@ovdx=0pt\@ovdy=0pt} +\def\tl@corner@b{\@tempdima=\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=\@ovyy \advance\@tempdimb by \@halfwidth + \kern -\@halfwidth \raise -\@ovyy + \hbox{\vrule height \@tempdimb depth 0pt width \@tempdima}} +\def\tr@corner@b{\@tempdima=\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=\@ovyy \advance\@tempdimb by \@halfwidth + \kern -\@ovxx \raise -\@ovyy + \hbox{\vrule height \@tempdimb depth 0pt width \@tempdima}} +\def\bl@corner@b{\@tempdima=\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=\@ovyy \advance\@tempdimb by \@halfwidth + \kern -\@halfwidth \raise -\@halfwidth + \hbox{\vrule height \@tempdimb depth 0pt width \@tempdima}} +\def\br@corner@b{\@tempdima=\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=\@ovyy \advance\@tempdimb by \@halfwidth + \kern -\@ovxx \raise -\@halfwidth + \hbox{\vrule height \@tempdimb depth 0pt width \@tempdima}} + +% +% 0.75 Black box corners +% +\def\@prepframe@c{\@prepframe@P} +\def\tl@corner@c{\tl@corner@P\tl@corner@cc} +\def\tr@corner@c{\tr@corner@P\tr@corner@cc} +\def\bl@corner@c{\bl@corner@P\bl@corner@cc} +\def\br@corner@c{\br@corner@P\br@corner@cc} + +\def\tl@corner@cc{% + \@tempdima=0.75\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=0.75\@ovyy \advance\@tempdimb by \@halfwidth + \setbox\@tempboxa\hbox{\kern -\@halfwidth \raise -0.75\@ovyy + \hbox{\vrule width \@tempdima depth 0pt height \@tempdimb}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} +\def\tr@corner@cc{% + \@tempdima=0.75\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=0.75\@ovyy \advance\@tempdimb by \@halfwidth + \setbox\@tempboxa\hbox{\kern -0.75\@ovxx \raise -0.75\@ovyy + \hbox{\vrule width \@tempdima depth 0pt height \@tempdimb}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} +\def\bl@corner@cc{% + \@tempdima=0.75\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=0.75\@ovyy \advance\@tempdimb by \@halfwidth + \setbox\@tempboxa\hbox{\kern -\@halfwidth \raise -\@halfwidth + \hbox{\vrule width \@tempdima height \@tempdimb depth 0pt}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} +\def\br@corner@cc{% + \@tempdima=0.75\@ovxx \advance\@tempdima by \@halfwidth + \@tempdimb=0.75\@ovyy \advance\@tempdimb by \@halfwidth + \setbox\@tempboxa\hbox{\kern -0.75\@ovxx \raise -\@halfwidth + \hbox{\vrule width \@tempdima height \@tempdimb depth 0pt}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} + +% +% 0.5 centered black box corners +% +\def\@prepframe@d{\@prepframe@P} +\def\tl@corner@d{\tl@corner@P\tl@corner@D\tl@corner@dd} +\def\tr@corner@d{\tr@corner@P\tr@corner@D\tr@corner@dd} +\def\bl@corner@d{\bl@corner@P\bl@corner@D\bl@corner@dd} +\def\br@corner@d{\br@corner@P\br@corner@D\br@corner@dd} + +\def\@prepframe@e{\@prepframe@P} +\def\tl@corner@e{\tl@corner@D\tl@corner@dd} +\def\tr@corner@e{\tr@corner@D\tr@corner@dd} +\def\bl@corner@e{\bl@corner@D\bl@corner@dd} +\def\br@corner@e{\br@corner@D\br@corner@dd} + +\def\@prepframe@f{\@prepframe@P} +\def\tl@corner@f{\tl@corner@P\tl@corner@dd} +\def\tr@corner@f{\tr@corner@P\tr@corner@dd} +\def\bl@corner@f{\bl@corner@P\bl@corner@dd} +\def\br@corner@f{\br@corner@P\br@corner@dd} + +\def\tl@corner@dd{% + \@tempdima=0.25\@ovxx \advance\@tempdima by 0.5\@halfwidth + \@tempdimb=-0.75\@ovyy \advance\@tempdimb by -0.5\@halfwidth + \setbox\@tempboxa\hbox{\kern \@tempdima \raise \@tempdimb + \hbox{\vrule width 0.5\@ovxx depth 0pt height 0.5\@ovyy}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} +\def\tr@corner@dd{% + \@tempdima=-0.75\@ovxx \advance\@tempdima by -0.5\@halfwidth + \@tempdimb=-0.75\@ovyy \advance\@tempdimb by -0.5\@halfwidth + \setbox\@tempboxa\hbox{\kern \@tempdima \raise \@tempdimb + \hbox{\vrule width 0.5\@ovxx depth 0pt height 0.5\@ovyy}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} +\def\bl@corner@dd{% + \@tempdima=0.25\@ovxx \advance\@tempdima by 0.5\@halfwidth + \@tempdimb=0.25\@ovyy \advance\@tempdimb by 0.5\@halfwidth + \setbox\@tempboxa\hbox{\kern \@tempdima \raise \@tempdimb + \hbox{\vrule width 0.5\@ovxx height 0.5\@ovyy depth 0pt}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} +\def\br@corner@dd{% + \@tempdima=-0.75\@ovxx \advance\@tempdima by -0.5\@halfwidth + \@tempdimb=0.25\@ovyy \advance\@tempdimb by 0.5\@halfwidth + \setbox\@tempboxa\hbox{\kern \@tempdima \raise \@tempdimb + \hbox{\vrule width 0.5\@ovxx height 0.5\@ovyy depth 0pt}}% + \wd\@tempboxa=0pt \copy\@tempboxa +} + +% +% circle blobs at the corners +% +\def\@prepframe@o{\@tempdima=\DiskCorner\relax + \get@Disk\@tempdima + \if@negarg + \@yyarg=\@tempcnta \@ovxx=0.5\wd\@tempboxa + \@ovyy=\@ovxx \@ovdx=\@halfwidth \@ovdy=\@ovdx + \ifdim \@ovxx>0.25\@dimenA \@negargfalse \fi + \ifdim \@ovxx>0.25\@dimenB \@negargfalse \fi + \fi + \if@negarg \else \@warn@corner \fi +} +\def\tl@corner@o{% + \kern \@ovxx \raise -\@ovyy \hbox{\@circlefnt \char\@tempcnta}} +\def\tr@corner@o{% + \kern -\@ovxx \raise -\@ovyy \hbox{\@circlefnt \char\@tempcnta}} +\def\bl@corner@o{% + \kern \@ovxx \raise \@ovyy \hbox{\@circlefnt \char\@tempcnta}} +\def\br@corner@o{% + \kern -\@ovxx \raise \@ovyy \hbox{\@circlefnt \char\@tempcnta}} + +%%% +%%% frame drawing routine +%%% + +\def\@@makeframe#1#2{\@ovxx=0pt \@ovyy=0pt \@ovdx=0pt \@ovdy=0pt + \@yyarg=0 \@negargfalse + \csname @prepframe@#2\endcsname + \if@negarg + \def\@tempa{#1}% + \@tempdima=\@dimenC \advance\@tempdima by -\@halfwidth + \@tempdimb=\@dimenD \advance\@tempdimb by -\@halfwidth + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname bl@corner@#2\endcsname}% + \@tempdima=\@dimenC \advance\@tempdima by \@halfwidth + \advance\@tempdima by \@dimenA + \@tempdimb=\@dimenD \advance\@tempdimb by -\@halfwidth + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname br@corner@#2\endcsname}% + \@tempdima=\@dimenC \advance\@tempdima by -\@halfwidth + \@tempdimb=\@dimenD \advance\@tempdimb by \@halfwidth + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tl@corner@#2\endcsname}% + \@tempdima=\@dimenC \advance\@tempdima by \@halfwidth + \advance\@tempdima by \@dimenA + \@tempdimb=\@dimenD \advance\@tempdimb by \@halfwidth + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tr@corner@#2\endcsname}% + \fi + \@tempdima=\@dimenC \advance\@tempdima by -\@halfwidth + \@tempdimb=\@dimenD \advance\@tempdimb by -\@halfwidth + \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenB \advance\@tempdima by \@wholewidth + \advance\@tempdima by -2\@ovyy + \advance\@tempdima by -2\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \advance\@tempdima by \@halfwidth + \advance\@tempdima by \@dimenA + \@tempdimb=\@dimenD \advance\@tempdimb by -\@halfwidth + \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenB \advance\@tempdima by \@wholewidth + \advance\@tempdima by -2\@ovyy + \advance\@tempdima by -2\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \advance\@tempdima by -\@halfwidth + \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \@tempdimb=\@dimenD \advance\@tempdimb by -\@halfwidth + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@wholewidth + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \hdashline{#1}}% + \@tempdima=\@dimenC \advance\@tempdima by -\@halfwidth + \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \@tempdimb=\@dimenD \advance\@tempdimb by \@halfwidth + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@wholewidth + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \hdashline{#1}}% +} + + +%%% +%%% shadow drawing routines +%%% + +% +% draw shadow corner(s) +% + +\def\@HelpshadowA#1#2{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdimb by \@dimenB \advance\@tempdimb by -\@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tr@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname br@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname bl@corner@#2\endcsname}% +} + +\def\@HelpshadowB#1#2{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX + \advance\@tempdimb by \@dimenB \advance\@tempdimb by \@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tl@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdimb by \@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname br@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdimb by \@dimenB \advance\@tempdimb by \@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tr@corner@#2\endcsname}% +} + +\def\@HelpshadowC#1#2{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by \@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname bl@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by -\@shadowstepX + \advance\@tempdimb by \@dimenB \advance\@tempdimb by \@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tr@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by \@dimenB \advance\@tempdimb by \@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tl@corner@#2\endcsname}% +} + +\def\@HelpshadowD#1#2{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname bl@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowstepX \advance\@tempdima by \@dimenA + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname br@corner@#2\endcsname}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by -\@shadowstepY \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{\@tempcnta=\@yyarg + \csname tl@corner@#2\endcsname}% +} + +% +% draw line shadow frame +% + +\def\@helpshadowA#1{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA + \advance\@tempdimb by \@dimenB \advance\@tempdimb by -\@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeX + \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \hdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenB + \advance\@tempdima by \@shadowsizeY + \advance\@tempdima by -\@shadowstepY + \advance\@tempdima by -2\@ovyy + \advance\@tempdima by -2\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeY + \advance\@tempdima by -\@ovyy + \advance\@tempdima by -\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenA + \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \hdashline{#1}}% +} + +\def\@helpshadowB#1{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeY + \advance\@tempdima by -\@ovyy + \advance\@tempdima by -\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by \@dimenB \advance\@tempdimb by \@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenA + \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \hdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA + \advance\@tempdimb by \@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeX + \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \hdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdimb by \@shadowstepY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenB + \advance\@tempdima by \@shadowsizeY + \advance\@tempdima by -\@shadowstepY + \advance\@tempdima by -2\@ovyy + \advance\@tempdima by -2\@ovdy + \vdashline{#1}}% +} + +\def\@helpshadowC#1{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by \@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeX + \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \hdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by \@shadowstepY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenB + \advance\@tempdima by \@shadowsizeY + \advance\@tempdima by -\@shadowstepY + \advance\@tempdima by -2\@ovyy + \advance\@tempdima by -2\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA \advance\@tempdima by -\@shadowstepX + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeY + \advance\@tempdima by -\@ovyy + \advance\@tempdima by -\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by \@dimenB \advance\@tempdimb by \@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenA + \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \hdashline{#1}}% +} + +\def\@helpshadowD#1{% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenA + \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \hdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowstepX \advance\@tempdima by \@dimenA + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeY + \advance\@tempdima by -\@ovyy + \advance\@tempdima by -\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@dimenB + \advance\@tempdima by \@shadowsizeY + \advance\@tempdima by -\@shadowstepY + \advance\@tempdima by -2\@ovyy + \advance\@tempdima by -2\@ovdy + \vdashline{#1}}% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by -\@shadowstepY \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{\@tempdima=\@shadowsizeX + \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \hdashline{#1}}% +} + +% +% draw solid shadow frame +% + +\def\@helpShadowA#1{% #1 is ignored here + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \@tempdimb=\@shadowsizeY + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \@tempdimb=\@shadowsizeY \advance\@tempdimb by -\@ovyy + \advance\@tempdimb by -\@ovdy + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \advance\@tempdimb by -2\@ovyy + \advance\@tempdimb by -2\@ovdy + \@tempdima=\@shadowsizeX + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \@tempdima=\@shadowsizeX \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \vrule height \@tempdimb width \@tempdima}% +} + +\def\@helpShadowB#1{% #1 is ignored here + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \@tempdimb=\@shadowsizeY + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@shadowstepX + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \@tempdimb=\@shadowsizeY \advance\@tempdimb by -\@ovyy + \advance\@tempdimb by -\@ovdy + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA + \advance\@tempdimb by \@shadowstepY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \advance\@tempdimb by -2\@ovyy + \advance\@tempdimb by -2\@ovdy + \@tempdima=\@shadowsizeX + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by \@dimenA + \advance\@tempdimb by \@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \@tempdima=\@shadowsizeX \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \vrule height \@tempdimb width \@tempdima}% +} + +\def\@helpShadowC#1{% #1 is ignored here + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \@tempdimb=\@shadowsizeY + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by \@dimenB + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \@tempdimb=\@shadowsizeY \advance\@tempdimb by -\@ovyy + \advance\@tempdimb by -\@ovdy + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by \@shadowstepY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \advance\@tempdimb by -2\@ovyy + \advance\@tempdimb by -2\@ovdy + \@tempdima=\@shadowsizeX + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by \@shadowstepY + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \@tempdima=\@shadowsizeX \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \vrule height \@tempdimb width \@tempdima}% +} + + +\def\@helpShadowD#1{% #1 is ignored here + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \advance\@tempdima by -2\@ovxx + \advance\@tempdima by -2\@ovdx + \@tempdimb=\@shadowsizeY + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdima=\@dimenA \advance\@tempdima by \@shadowsizeX + \advance\@tempdima by -\@shadowstepX + \@tempdimb=\@shadowsizeY \advance\@tempdimb by -\@ovyy + \advance\@tempdimb by -\@ovdy + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX + \advance\@tempdimb by -\@shadowsizeY \advance\@tempdimb by \@ovyy + \advance\@tempdimb by \@ovdy + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \advance\@tempdimb by -2\@ovyy + \advance\@tempdimb by -2\@ovdy + \@tempdima=\@shadowsizeX + \vrule height \@tempdimb width \@tempdima}% +% + \@tempdima=\@dimenC \@tempdimb=\@dimenD + \advance\@tempdima by -\@shadowsizeX \advance\@tempdima by \@ovxx + \advance\@tempdima by \@ovdx + \advance\@tempdimb by -\@shadowsizeY + \@@put{\@tempdima}{\@tempdimb}{% + \@tempdimb=\@dimenB \advance\@tempdimb by \@shadowsizeY + \advance\@tempdimb by -\@shadowstepY + \@tempdima=\@shadowsizeX \advance\@tempdima by -\@ovxx + \advance\@tempdima by -\@ovdx + \vrule height \@tempdimb width \@tempdima}% +} + +% +% correct shadow position before drawing +% + +\def\@Help@A{\advance\@dimenC \shadowsepX\relax + \advance\@dimenD -\shadowsepY\relax} +\def\@Help@B{\advance\@dimenC \shadowsepX\relax + \advance\@dimenD \shadowsepY\relax} +\def\@Help@C{\advance\@dimenC -\shadowsepX\relax + \advance\@dimenD \shadowsepY\relax} +\def\@Help@D{\advance\@dimenC -\shadowsepX\relax + \advance\@dimenD -\shadowsepY\relax} +% +% correct shadow position after drawing +% + +\def\@help@A{\advance\@dimenC \shadowstepX\relax + \advance\@dimenC \@halfwidth + \advance\@dimenD -\shadowstepY\relax + \advance\@dimenD -\@halfwidth} +\def\@help@B{\advance\@dimenC \shadowstepX\relax + \advance\@dimenC \@halfwidth + \advance\@dimenD \shadowstepY\relax + \advance\@dimenD \@halfwidth} +\def\@help@C{\advance\@dimenC -\shadowstepX\relax + \advance\@dimenC -\@halfwidth + \advance\@dimenD \shadowstepY\relax + \advance\@dimenD \@halfwidth} +\def\@help@D{\advance\@dimenC -\shadowstepX\relax + \advance\@dimenC -\@halfwidth + \advance\@dimenD -\shadowstepY\relax + \advance\@dimenD -\@halfwidth} + +%% +%% shadow types +%% + +% +% pure rectangle +% + +\def\@rectshadow@R#1{% + \csname @Help@\s@corn\endcsname + \@prepdummy + \csname @helpshadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +\def\@rectshadow@r#1{% + \csname @Help@\s@corn\endcsname + \@prepdummy + \csname @helpShadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +% +% parquet shadows +% + +\def\@prepshadow@P{\@tempdima=\RectCorner\relax + \ifdim \@tempdima>\@shadowsizeX\relax \@negargfalse \fi + \ifdim \@tempdima>\@shadowsizeY\relax \@negargfalse \fi + \@ovxx=\@tempdima \@ovyy=\@tempdima + \@yyarg=0 \@ovdx=\@halfwidth \@ovdy=\@halfwidth +} + +\def\@rectshadow@P#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@P + \if@negarg + \def\@tempa{#1}\csname @Helpshadow\s@corn\endcsname{#1}{P}% + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpshadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +\def\@rectshadow@p#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@P + \if@negarg + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpShadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +\def\@rectshadow@B#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@P + \if@negarg + \def\@tempa{#1}\csname @Helpshadow\s@corn\endcsname{#1}{c}% + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpshadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +\def\@rectshadow@b#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@P + \if@negarg + \def\@tempa{#1}\csname @Helpshadow\s@corn\endcsname{#1}{cc}% + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpShadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +% +% octal shadows +% + +\def\@prepshadow@L{\@negargtrue + \@ovxx=0pt \@ovyy=0pt \@ovdx=0pt \@ovdy=0pt + \ifnum \@RombX>0 \else \@negargfalse \fi + \ifnum \@RombY>0 \else \@negargfalse \fi + \if@negarg + \ifnum \@RombX>\@RombY + \@tempdima=\LineCorner\relax + \@tempdimb=\@tempdima + \multiply\@tempdimb by \@RombY + \divide\@tempdimb by \@RombX + \else + \@tempdimb=\LineCorner\relax + \@tempdima=\@tempdimb + \multiply\@tempdima by \@RombX + \divide\@tempdima by \@RombY + \fi + \ifdim \@tempdima>\@shadowsizeX\relax \@negargfalse \fi + \ifdim \@tempdimb>\@shadowsizeY\relax \@negargfalse \fi + \@ovxx=\@tempdima \@ovyy=\@tempdimb + \ifnum \@RombX>\@RombY + \ifdim \@ovxx<10pt \@negargfalse \fi + \else + \ifdim \@ovyy<10pt \@negargfalse \fi + \fi + \if@negarg + \@ovxx=\@tempdima \@ovyy=\@tempdimb + \@yyarg=0 \@ovdx=\@halfwidth \@ovdy=\@halfwidth + \fi + \fi +} + +\def\@rectshadow@L#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@L + \if@negarg + \csname @Helpshadow\s@corn\endcsname{#1}{L}% + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpshadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +% +% oval shadows +% +\def\@prepshadow@O{\@negargtrue + \@tempdima=\RoundCorner\relax + \ifdim \@tempdima>\@shadowsizeX\relax \@negargfalse \fi + \ifdim \@tempdima>\@shadowsizeY\relax \@negargfalse \fi + \if@negarg \@tempdima=2\@tempdima \@getcirc\@tempdima \fi + \if@negarg + \@ovxx=0.5\wd\@tempboxa \@ovyy=\@ovxx \@yyarg=\@tempcnta + \@tempdima=0.5\ht\@tempboxa + \advance\@tempdima by -0.5\dp\@tempboxa + \@ovdx=\@halfwidth \advance\@ovdx by -\@tempdima + \@ovdy=\@ovdx + \fi +} + +\def\@rectshadow@O#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@O + \if@negarg + \csname @Helpshadow\s@corn\endcsname{#1}{O}% + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpshadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +\def\@prepshadow@o{% + \@tempdima=\DiskCorner\relax + \get@Disk\@tempdima + \if@negarg + \@yyarg=\@tempcnta \@ovxx=0.5\wd\@tempboxa + \@ovyy=\@ovxx \@ovdx=\@halfwidth \@ovdy=\@ovdx + \ifdim 2\@ovxx>\@shadowsizeX\relax \@negargfalse \fi + \ifdim 2\@ovxx>\@shadowsizeY\relax \@negargfalse \fi + \fi +} + +\def\@rectshadow@o#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@o + \if@negarg + \csname @Helpshadow\s@corn\endcsname{#1}{o}% + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpShadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +% +% astro shadows +% + +\def\@prepshadow@A{\@negargtrue + \@tempdima=\RoundCorner\relax + \ifdim \@tempdima>\@shadowsizeX\relax \@negargfalse \fi + \ifdim \@tempdima>\@shadowsizeY\relax \@negargfalse \fi + \if@negarg \@tempdima=2\@tempdima \@getcirc\@tempdima \fi + \if@negarg + \@ovxx=0.5\wd\@tempboxa \@ovyy=\@ovxx \@yyarg=\@tempcnta + \@tempdima=0.5\ht\@tempboxa + \advance\@tempdima by -0.5\dp\@tempboxa + \@ovdx=\@halfwidth \advance\@ovdx by -\@tempdima + \@ovdy=\@ovdx + \fi +} + +\def\@rectshadow@A#1{% + \csname @Help@\s@corn\endcsname + \@prepshadow@A + \if@negarg + \csname @Helpshadow\s@corn\endcsname{#1}{A}% + \else + \@prepdummy + \@warn@corner + \fi + \csname @helpshadow\s@corn\endcsname{#1}% + \csname @help@\s@corn\endcsname} + +% +% set frame/corner parameters +% + +\def\framesep#1{\def\framesepH{#1}% + \def\framesepXM{1.0}\def\framesepYM{1.0}% + \def\framesepXP{1.0}\def\framesepYP{1.0}% + \frameexpand{0pt}% + \ignorespaces} + +\def\frameexpand#1{\def\frameexpandX{#1}% + \def\frameexpandY{#1}% + \ignorespaces} + +\def\shadowsep#1{\def\shadowsepX{#1}% + \def\shadowsepY{#1}% + \ignorespaces} + +\def\shadowsize#1{\def\shadowstepX{#1}\def\shadowstepY{#1}% + \def\shadowsizeX{#1}\def\shadowsizeY{#1}% + \shadowshrink{1.0}\shadowminsize{0pt}% + \ignorespaces} + +\def\shadowminsize#1{\def\shadowminsizeX{#1}% + \def\shadowminsizeY{#1}% + \ignorespaces} + +\def\shadowshrink#1{% + \def\shadowshrinkstepX{#1}\def\shadowshrinkstepY{#1}% + \def\shadowshrinksizeX{#1}\def\shadowshrinksizeY{#1}% + \ignorespaces} + +\def\shadowcorner#1{% + \if A#1\relax \def\s@corn{A}% + \else \if a#1\relax \def\s@corn{A}% + \else \if B#1\relax \def\s@corn{B}% + \else \if b#1\relax \def\s@corn{B}% + \else \if C#1\relax \def\s@corn{C}% + \else \if c#1\relax \def\s@corn{C}% + \else \if D#1\relax \def\s@corn{D}% + \else \if d#1\relax \def\s@corn{D}% + \else \@warning{Illegal shadow corner (#1)}% + \fi\fi\fi\fi\fi\fi\fi\fi + \ignorespaces} + +\def\@setshadowsize{% + \let\@shadowstepX=\shadowstepX + \let\@shadowstepY=\shadowstepY + \let\@shadowsizeX=\shadowsizeX + \let\@shadowsizeY=\shadowsizeY +} + +\def\@updateshadowsize{% + \advance\@dimenA by \@shadowsizeX + \advance\@dimenA by -\@shadowstepX + \advance\@dimenB by \@shadowsizeY + \advance\@dimenB by -\@shadowstepY + \@shrink@size{\@shadowstepX}{\shadowshrinkstepX}% + \@shrink@size{\@shadowstepY}{\shadowshrinkstepY}% + \@shrink@size{\@shadowsizeX}{\shadowshrinksizeX}% + \@shrink@size{\@shadowsizeY}{\shadowshrinksizeY}% + \@tempdima=\@shadowstepX \advance\@tempdima by \shadowminsizeX + \ifdim \@tempdima<\@dimenA \relax \else \@dimenA=0pt \fi + \@tempdima=\@shadowstepY \advance\@tempdima by \shadowminsizeY + \ifdim \@tempdima<\@dimenB \relax \else \@dimenB=0pt \fi +} + +\def\@shrink@size#1#2{% + \@tempdima=#1\relax + \@tempdima=#2\@tempdima\relax + \edef #1{\the\@tempdima}% +} + +%%%%%%% !!!!!!!!!!!!!!!!!!!! %%%%%%%%%%%%% +%%%%%%% These are CIRC macro %%%%%%%%%%%%% +%%%%%%% !!!!!!!!!!!!!!!!!!!! %%%%%%%%%%%%% + +\def\mcircle@scaled{1000} + +\def\define@circlefnt{% + \ifflag@thicklines + \font\m@circlefnt=lcirclew10 scaled \mcircle@scaled + \else + \font\m@circlefnt=lcircle10 scaled \mcircle@scaled + \fi + \let\@circlefnt=\m@circlefnt \ignorespaces} + + +\def\magcircle#1{% + \edef\mcircle@scaled{% + \if 0#1 1000 + \else \if h#1 1095 + \else \if 1#1 1200 + \else \if 2#1 1440 + \else \if 3#1 1728 + \else \if 4#1 2074 + \else \if 5#1 2488 + \else 1000 + \fi\fi\fi\fi\fi\fi\fi + }\define@circlefnt \ignorespaces} + +\def\scaledcircle#1{% + \def\mcircle@scaled{#1}% + \ifnum #1>0 \def\mcircle@scaled{#1}% + \else \def\mcircle@scaled{1000}% + \fi + \define@circlefnt \ignorespaces} + +\def\circle@factor{% + \ifdim \@tempdima>16.383pt + \divide\@tempdima by \mcircle@scaled\relax + \multiply\@tempdima by 1000 + \else + \multiply\@tempdima by 1000 + \divide\@tempdima by \mcircle@scaled\relax + \fi +} + +%%% +%%% These macro are from LaTeX with some corrections +%%% + +% now set thin/thick flag and update circle scaled font +% +\def\thinlines{\flag@thicklinesfalse\define@circlefnt + \let\@linefnt\tenln \let\@circlefnt\tencirc + \@wholewidth\fontdimen8\tenln \@halfwidth .5\@wholewidth} + +% now set thin/thick flag and update circle scaled font +% +\def\thicklines{\flag@thicklinestrue\define@circlefnt + \let\@linefnt\tenlnw \let\@circlefnt\tencircw + \@wholewidth\fontdimen8\tenlnw \@halfwidth .5\@wholewidth} + +% calculate \@tempcnta = oval char code, +% \@tempboxa = base char, +% \@tempdima = diameter. +% it is corrected to scale circle font and to indicate +% diameter error: \@negarg = false if diameter is too small +% +\def\@getcirc#1{\@tempdima #1\relax \circle@factor + \advance\@tempdima 2\p@ \@tempcnta\@tempdima + \@tempdima 4\p@ \divide\@tempcnta\@tempdima + \ifnum \@tempcnta >10\relax \@tempcnta 10\relax\fi + \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne \@negargtrue + \else \@warning{Oval segment is too small}\@negargfalse \fi + \multiply\@tempcnta 4\relax + \setbox \@tempboxa \hbox{\@circlefnt \char \@tempcnta}% + \@tempdima \wd \@tempboxa} + +% this macro draws blobs and disks, +% it is corrected to scale circle font +% +\def\@circ#1#2{\get@circcode{#1}% + \advance\@tempcnta #2\relax + \@circlefnt \char\@tempcnta} + + +%%% +%%% New circle macros +%%% + +% calculate \@tempcnta = blob/circle char code +\def\get@circcode#1{\@tempdima=#1\relax + \circle@factor \@negargfalse + \advance\@tempdima by 0.5pt + \@tempcnta=\@tempdima \@tempdima=1pt + \divide\@tempcnta by \@tempdima + \ifnum \@tempcnta>15\relax \@tempcnta=15\relax \fi + \ifnum \@tempcnta>0\relax \advance\@tempcnta by -1 \@negargtrue \fi +} + +% it calculates \@tempcnta = blob char code +% \@tempboxa = base char, +% \@tempdima = diameter. +\def\get@Disk#1{\get@circcode{#1}% + \advance\@tempcnta by 112 + \setbox\@tempboxa\hbox{\@circlefnt \char\@tempcnta}% +} + + +% it calculates \@tempcnta = circle char code +% \@tempboxa = base char, +% \@tempdima = diameter. +\def\get@Circle#1{\get@circcode{#1}% + \advance\@tempcnta by 96 + \setbox\@tempboxa\hbox{\@circlefnt \char\@tempcnta}% +} + +% +% top right segment: \put(10,10){\trcircle{10}} +\def\trcircle#1{\@trcircle{#1\unitlength}} +\def\@trcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@trcircle} +\def\@@trcircle{\sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdima 0.5\wd \@tempboxa + \@tempdimb 0.5\ht \@tempboxa + \advance \@tempdimb -0.5\dp \@tempboxa + \advance \@tempdima -\@tempdimb + \hbox{\kern \@tempdima + \lower -\@tempdima + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% + } +% +% bottom right segment: \put(10,10){\brcircle{10}} +\def\brcircle#1{\@brcircle{#1\unitlength}} +\def\@brcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@brcircle} +\def\@@brcircle{\advance\@tempcnta 1\relax + \sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdima 0.5\wd \@tempboxa + \@tempdimb 0.5\ht \@tempboxa + \advance \@tempdimb -0.5\dp \@tempboxa + \advance \@tempdima -\@tempdimb + \advance \@tempdimb 0.5\wd \@tempboxa + \hbox{\kern \@tempdima + \lower \@tempdimb + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% + } +% +% bottom left segment: \put(10,10){\blcircle{10}} +\def\blcircle#1{\@blcircle{#1\unitlength}} +\def\@blcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@blcircle} +\def\@@blcircle{\advance\@tempcnta 2\relax + \sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdima 0.5\wd \@tempboxa + \@tempdimb 0.5\ht \@tempboxa + \advance \@tempdimb -0.5\dp \@tempboxa + \advance \@tempdimb \@tempdima + \hbox{\kern -\@tempdimb + \lower \@tempdimb + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% + } +% +% top left segment: \put(10,10){\tlcircle{10}} +\def\tlcircle#1{\@tlcircle{#1\unitlength}} +\def\@tlcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@tlcircle} +\def\@@tlcircle{\advance\@tempcnta 3\relax + \sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdima 0.5\wd \@tempboxa + \@tempdimb 0.5\ht \@tempboxa + \advance \@tempdimb -0.5\dp \@tempboxa + \advance \@tempdimb \@tempdima + \hbox{\kern -\@tempdimb + \lower -\@tempdima + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% + } +% + +\def\TRcircle#1{\@TRcircle{#1\unitlength}} +\def\@TRcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@TRcircle} +\def\@@TRcircle{\sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdimb 0.5\ht\@tempboxa \advance\@tempdimb -0.5\dp\@tempboxa + \hbox{\kern -\@tempdimb + \raise -\@tempdimb + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% +} + +\def\BRcircle#1{\@BRcircle{#1\unitlength}} +\def\@BRcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@BRcircle} +\def\@@BRcircle{\advance\@tempcnta 1\relax + \sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdimb 0.5\ht\@tempboxa \advance\@tempdimb -0.5\dp\@tempboxa + \hbox{\kern -\@tempdimb + \raise -\@tempdimb + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% +} + +\def\BLcircle#1{\@BLcircle{#1\unitlength}} +\def\@BLcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@BLcircle} +\def\@@BLcircle{\advance\@tempcnta 2\relax + \sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdimb 0.5\ht\@tempboxa \advance\@tempdimb -0.5\dp\@tempboxa + \hbox{\kern -\@tempdimb + \raise -\@tempdimb + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% +} + + +\def\TLcircle#1{\@TLcircle{#1\unitlength}} +\def\@TLcircle#1{\@tempdima #1\relax \@getcirc\@tempdima \@@TLcircle} +\def\@@TLcircle{\advance\@tempcnta 3\relax + \sbox{\@tempboxa}{\hbox{\@circlefnt \char \@tempcnta}}% + \@tempdimb 0.5\ht\@tempboxa \advance\@tempdimb -0.5\dp\@tempboxa + \hbox{\kern -\@tempdimb + \raise -\@tempdimb + \hbox{\usebox\@tempboxa}}% + \sbox{\@tempboxa}{}% +} + +%%%%%%% !!!!!!!!!!!!!!!!!!!!!! %%%%%%%%%%%%% +%%%%%%% These are VECTOR macro %%%%%%%%%%%%% +%%%%%%% !!!!!!!!!!!!!!!!!!!!!! %%%%%%%%%%%%% + + +% parameters for vector arrows: +% \if@negarg shows that the arrow is rotated by 180^{\circ} +% \@tempb is the relative position of the point of alignment +% \@tempa is the alignment style: +% e - arrow +% b - backside +% m - middle +% E - above arrow +% B - before backside +\def\Vec@e{\def\@tempa{e}\def\@tempb{1.0}\@negargfalse} +\def\Vec@E{\def\@tempa{b}\def\@tempb{1.0}\@negargtrue} +\def\Vec@b{\def\@tempa{b}\def\@tempb{0.0}\@negargfalse} +\def\Vec@B{\def\@tempa{e}\def\@tempb{0.0}\@negargtrue} +\def\Vec@m{\def\@tempa{m}\def\@tempb{0.5}\@negargfalse} +\def\Vec@M{\def\@tempa{m}\def\@tempb{0.5}\@negargtrue} +\def\Vec@x{\def\@tempa{E}\def\@tempb{1.0}\@negargfalse} +\def\Vec@X{\def\@tempa{B}\def\@tempb{1.0}\@negargtrue} +\def\Vec@z{\def\@tempa{B}\def\@tempb{0.0}\@negargfalse} +\def\Vec@Z{\def\@tempa{E}\def\@tempb{0.0}\@negargtrue} + +\def\VectorStyle[#1]#2#3#4{% + \expandafter\edef\csname Vec@#1\endcsname{% + \def\@tempa{#2}\def\@tempb{#3}% + \if b#4 \@negargtrue \else \@negargfalse \fi + }% +} + +\def\@VecA@e{\@tempdimb 0pt} +\def\@VecA@b{\@tempdimb 4pt} +\def\@VecA@m{\@tempdimb 3pt} +\def\@VecA@E{\@tempdimb -2pt} +\def\@VecA@B{\@tempdimb 6pt} + +\def\VectorShiftStyle[#1]#2{% + \expandafter\edef\csname @VecA@#1\endcsname{\@tempdimb #2\relax}% +} + +\def\Vector{\@ifnextchar[{\@Vector}{\@Vector[e]}} + +\def\@Vector[#1](#2,#3)#4{% + \@put{0pt}{0pt}{\line(#2,#3){#4}}% + \@tfor\@tempa:=#1\do{% + \def\@tempb{x} \csname Vec@\@tempa\endcsname + \if\@tempb x\relax \else +% % \@tempdima is the length factor, + \ifnum #2=\z@ \@tempdima #4\unitlength + \else \ifnum #2<\z@ \@tempdima -#4\unitlength + \else \@tempdima #4\unitlength \fi + \divide\@tempdima#2 + \fi +% % \@tempb contains fraction (0 <= \@tempb <= 1), + \@tempdima \@tempb\@tempdima\relax +% % \@tempa is the alignment type -- set \@tempdimb = shift + \@tempdimb 0pt\relax \csname @VecA@\@tempa\endcsname +% % assign square root value to \@tempa + \@VecSqrt{#2}{#3}% +% % correct alignment shift + \@tempdimb \@tempa\@tempdimb\relax + \if@negarg \advance\@tempdima -\@tempdimb + \else \advance\@tempdima \@tempdimb \fi +% % calculate final value + \@tempdimb \@tempdima\relax + \@tempdima #2\@tempdima\relax + \@tempdimb #3\@tempdimb\relax +% % get character + \if@negarg \@xarg -#2\relax \@yarg -#3\relax + \else \@xarg #2\relax \@yarg #3\relax + \fi + \setbox\@linechar\hbox{\@linefnt + \ifnum \@xarg=0 \ifnum \@yarg>0 \char'66\relax + \else \char'77\relax \fi + \else + \ifnum \@xarg<0 \@getlarrow(-\@xarg,-\@yarg)% + \else \@getrarrow(\@xarg,\@yarg)% + \fi\fi}% +% % this is \put(x,y) + \ifnum \@xarg>0 \advance\@tempdima -\wd\@linechar \fi + \ifnum \@yarg>0 \advance\@tempdimb -\ht\@linechar \fi + \@@put{\@tempdima}{\@tempdimb}{\box\@linechar}% + \fi% + }% enddo \@tfor +} + +% assign square root value to \@tempa +\def\@VecSqrt#1#2{\@xarg #1\relax \@yarg #2\relax + \ifnum\@xarg<0 \@xarg -\@xarg \fi + \ifnum\@yarg<0 \@yarg -\@yarg \fi + \ifnum\@xarg<\@yarg \@yyarg \@xarg \relax \@xarg \@yarg \relax + \@yarg \@yyarg \relax \fi + \edef\@tempa{% + \ifcase \@xarg 0.0 + \or \ifcase \@yarg 1.0 + \else 0.70710678 + \fi + \or \ifcase \@yarg 1.0 + \or 0.44721360 + \else 0.35355339 + \fi + \or \ifcase \@yarg 1.0 + \or 0.31622777 + \or 0.27735010 + \else 0.23570226 + \fi + \or \ifcase \@yarg 1.0 + \or 0.24253563 + \or 0.22360680 + \or 0.20000000 + \else 0.17677670 + \fi + \or \ifcase \@yarg 1.0 + \or 0.19611614 + \or 0.18569534 + \or 0.17149859 + \or 0.15617376 + \else 0.14142136 + \fi + \or \ifcase \@yarg 1.0 + \or 0.16439899 + \or 0.15811388 + \or 0.14907120 + \or 0.13867505 + \or 0.12803688 + \else 0.11785113 + \fi + \else 0.0 + \fi}% +} + +%%% +%%% these are LaTeX macro which are corrected +%%% to suite our purposes +%%% + +\def\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax +\@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi +\ifnum\@tempcnta<7\relax %% corr: 7 instead of 5 +\@linelen #3\unitlength +\ifnum\@xarg =\z@ \@vvector + \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi +\fi +\else\@badlinearg\fi} + + +\def\@svector{% %% corr: \@sline is moved from this place +\@tempcnta\@yarg \ifnum\@tempcnta <\z@ \@tempcnta -\@tempcnta\fi +\ifnum\@tempcnta <7 %% corr: 7 instead of 5 + \@sline %% corr: \@sline is moved to this place +%% original text was: +% \hskip -\wd\@linechar +% \@upordown\@clnht \hbox{\@linefnt \if@negarg +% \@getlarrow(\@xarg,\@yyarg)\else \@getrarrow(\@xarg,\@yyarg)\fi}% +%% corrected text: + \if@negarg \hskip -\wd\@linechar \fi + \ifnum \@yarg>\z@ \advance\@clnht \ht\@linechar \fi + \setbox\@linechar\hbox{\@linefnt \if@negarg \@getlarrow(\@xarg,\@yyarg)% + \else \@getrarrow(\@xarg,\@yyarg)% + \fi}% + \if@negarg \else \hskip -\wd\@linechar \fi + \ifnum \@yarg>\z@ \advance\@clnht -\ht\@linechar \fi + \@upordown\@clnht \copy\@linechar +\else\@badlinearg\fi} + + +%% calculate (\@tempcnta,\@tempcntb) as correct vector slopes +\def\@corrgetarrow#1#2{\@tempcnta #1\relax \@tempcntb #2\relax +\ifnum #2<\z@ \@tempcntb -\@tempcntb \fi +\ifcase \@tempcnta\relax % no action for x=0 + \or \ifnum \@tempcntb>4 \@tempcntb 4 \fi % action for x=1 + \or \ifnum \@tempcntb=5 \@tempcnta 1 \@tempcntb 3 \fi % action for x=2 + \or \ifnum \@tempcntb=5 \@tempcnta 2 \@tempcntb 3 \fi % action for x=3 + \or \ifnum \@tempcntb=5 \@tempcnta 3 \@tempcntb 4 \fi % action for x=4 + \or \ifcase \@tempcntb\relax % 5,0 + \or \@tempcnta 4% 5,1 + \or \@tempcnta 3 \@tempcntb 1 % 5,2 + \or \@tempcnta 3 \@tempcntb 2 % 5,3 + \or \@tempcnta 4 \@tempcntb 3 % 5,4 + \or \@tempcnta 1 \@tempcntb 1 % 5,5 + \or \@tempcnta 3 \@tempcntb 4 % 5,6 + \fi % action for x=5 + \or \ifnum \@tempcntb=1 \@tempcnta 4 \fi % 6,1 + \ifnum \@tempcntb=5 \@tempcnta 4 \@tempcntb 3 \fi % 6,5 + % action for x=6 +\fi +\ifnum #2<\z@ \@tempcntb -\@tempcntb \fi +} + +\def\@getlarrow(#1,#2){%% this macro is corrected +\@corrgetarrow{#1}{#2}% +\ifnum \@tempcntb=\z@ \@tempcnta'33 + \else \multiply\@tempcnta \sixt@@n + \advance\@tempcnta -9 + \multiply\@tempcntb \tw@ + \ifnum \@tempcntb >\z@ \advance\@tempcnta \@tempcntb + \else \advance\@tempcnta -\@tempcntb + \advance\@tempcnta 64 + \fi +\fi +\char\@tempcnta} + +\def\@getrarrow(#1,#2){%% this macro is corrected +\@corrgetarrow{#1}{#2}% +\ifnum\@tempcntb <\z@ \@tempcntb -\@tempcntb\relax\fi +\ifcase \@tempcntb \@tempcnta'55 + \or \ifnum \@tempcnta<\thr@@ \multiply\@tempcnta 24 + \advance\@tempcnta -6 + \else \ifnum \@tempcnta=\thr@@ \@tempcnta 49 + \else\@tempcnta 58 \fi + \fi + \or \ifnum \@tempcnta<\thr@@ \multiply\@tempcnta 24 + \advance\@tempcnta -\thr@@ + \else \@tempcnta 51 \fi + \or \multiply\@tempcnta \sixt@@n + \advance\@tempcnta -\tw@ + \else \multiply\@tempcnta \sixt@@n + \advance\@tempcnta 7 +\fi +\ifnum #2<\z@ \advance\@tempcnta 64 \fi +\char\@tempcnta} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +% The command \pictureunit[percent]{xsize} +% selects the value of \unitlength so that the picture +% which is xsize units in width occupies percent +% width of the paper. By default percent=100 which +% correspond to 90% of the total width of the paper. +% \pictureunit calculates \unitlength corectly also for +% twocolumn mode and inside itemize/enumerate/etc. +% +% Example: +% \pictureunit{75} +% \begin{picture}(120,80) +% ..... +% +% Default percentage value can be changed by +% \renewcommand{\defaultpercent}{50} +% +% Environment mcpicture combines \pictureunit and +% \begin{picture}-\end{picture}. +% +% \begin{Picture}(120,80)(-60,-40) +% ....... +% \end{Picture} +% +% Optional parameter can contain percent width value +% which is used instead of \defaultpercent: +% +% \begin{Picture}[50](120,80)(-60,-40) +% ....... +% \end{Picture} +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\pictureunit{\@ifnextchar[{\mc@scaleunit}{\mc@scaleunit[\defaultpercent]}} + +\def\mc@scaleunit[#1]#2{\@tempdima=0.009\hsize + \@tempdima=#1\@tempdima + \@tempdimb=#2pt + \@divide{\@tempdima}{\@tempdimb}% + {\@tempdima}{\unitlength}% + \unitlength=\@tempdima} + +\newenvironment{Picture}{}{} + +\def\Picture{\@ifnextchar[{\mc@picture}{\mc@picture[\defaultpercent]}} + +\def\mc@picture[#1](#2,#3){% + \mc@scaleunit[#1]{#2}% + \picture(#2,#3)} + +\def\endPicture{\endpicture} + + +% ********************************************************************* +% *** The following macros are taken from PiCTeX with minor changes *** +% ********************************************************************* + +% DIVISION (Does long division of dimension registers) +% ** \@divide{DIVIDEND}{DIVISOR}{RESULT}{default} + +% ** \@divide DIVIDEND [by] DIVISOR [to get] ANSWER +% ** Divides the dimension DIVIDEND by the dimension DIVISOR, placing the +% ** quotient in the dimension register ANSWER. Values are understood to +% ** be in points. E.g. 12.5pt/1.4pt=8.92857pt. +% ** Quotient is accurate to 1/65536pt=2**[-16]pt +% ** |DIVISOR| should be < 2048pt (about 28 inches). +\def\@divide#1#2#3#4{% +\ifdim #2=\z@ #3=#4\relax +\else + \@dimenB=#1% ** dimB holds current remainder (r) + \@dimenC=#2% ** dimC holds divisor (d) + \@dimenD=\@dimenB% ** dimD holds quotient q=r/d for this + \divide \@dimenD \@dimenC% ** step, in units of scaled pts + \@dimenA=\@dimenD% ** dimA eventually holds answer (a) + \multiply\@dimenD \@dimenC% ** r <-- r - dq + \advance\@dimenB -\@dimenD% ** First step complete. Have integer part +% ** of a, and corresponding remainder. + \@dimenD=\@dimenC% ** Temporarily use dimD to hold |d| + \ifdim\@dimenD<\z@ \@dimenD=-\@dimenD + \fi + \ifdim\@dimenD<64pt% ** Branch on the magnitude of |d| + \@divstep[256]\@divstep[256]% + \else +% ** The following code handles divisors d with +% ** (1) .88in = 64pt <= d < 256pt = 3.54in +% ** (2) 3.54in = 256pt <= d < 2048pt = 28.34in +% ** Anything bigger than that may result in an overflow condition. + \ifdim\@dimenD<256pt + \@divstep[64]\@divstep[32]\@divstep[32]% + \else + \@divstep[8]\@divstep[8]\@divstep[8]\@divstep[8]\@divstep[8]% + \@dimenA=2\@dimenA + \fi +% ** For our purposes, we should never even see case (2). + \fi + #3=\@dimenA +\fi\ignorespaces} + + +% ** The following macro does the real long division work. +\def\@divstep[#1]{% ** #1 = "B" + \@dimenB=#1\@dimenB% ** r <-- B*r + \@dimenD=\@dimenB% ** dimD holds quotient q=r/d for this + \divide \@dimenD by \@dimenC% ** step, in units of scaled pts + \@dimenA=#1\@dimenA% ** a <-- B*a + q + \advance\@dimenA by \@dimenD% + \multiply\@dimenD by \@dimenC% ** r <-- r - dq + \advance\@dimenB by -\@dimenD} + +% ************************************************ +% ******** End of PiCTeX division macros ********* +% ************************************************ + + +%%%%%%% !!!!!!!!!!!!!!!!!! %%%%%%%%%%%%% +%%%%%%% Default style data %%%%%%%%%%%%% +%%%%%%% !!!!!!!!!!!!!!!!!! %%%%%%%%%%%%% + +\def\defaultpercent{100} + +\thinlines + +\def\DiskCorner{5pt} +\def\RoundCorner{5pt} +\def\LineCorner{10pt} +\def\RectCorner{5pt} + +\framesep{4pt} +\shadowsep{1pt} +\shadowsize{5pt} +\shadowshrink{1} + +\shadowcorner{A} + +\rombboxstyle(2,1,2pt) + +% +% save updated LaTeX macro +% + + +% +% switch two modes +% + +\let\grf@thinlines=\thinlines +\let\grf@thicklines=\thicklines +\let\grf@@getcirc=\@getcirc +\let\grf@@circ=\@circ +\let\grf@vector=\vector +\let\grf@@svector=\@svector +\let\grf@@getlarrow=\@getlarrow +\let\grf@@gerlarrow=\@getrarrow + + +\def\setlatexmacro{% + \let\thinlines=\ltx@thinlines + \let\thicklines=\ltx@thicklines + \let\@getcirc=\ltx@@getcirc + \let\@circ=\ltx@@circ + \let\vector=\ltx@vector + \let\@svector=\ltx@@svector + \let\@getlarrow=\ltx@@getlarrow + \let\@gerlarrow=\ltx@@getrarrow + \ignorespaces +} + +\def\settestmacro{% + \let\thinlines=\grf@thinlines + \let\thicklines=\grf@thicklines + \let\@getcirc=\grf@@getcirc + \let\@circ=\grf@@circ + \let\vector=\grf@vector + \let\@svector=\grf@@svector + \let\@getlarrow=\grf@@getlarrow + \let\@gerlarrow=\grf@@getrarrow + \ignorespaces +} + +% +\catcode`@=\oldatcatcode +% + |