summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/plain/gustlib/roundbox.tex
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/plain/gustlib/roundbox.tex')
-rw-r--r--Master/texmf-dist/tex/plain/gustlib/roundbox.tex233
1 files changed, 233 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/plain/gustlib/roundbox.tex b/Master/texmf-dist/tex/plain/gustlib/roundbox.tex
new file mode 100644
index 00000000000..f512bf01786
--- /dev/null
+++ b/Master/texmf-dist/tex/plain/gustlib/roundbox.tex
@@ -0,0 +1,233 @@
+% FILE ROUNDBOX.TEX, version 1.1 (14.VIII.1990)
+% ------------------------------------------------------------------------
+% AUTHOR:
+% Garry Glendown (see in TUGboat Vol. 10 (1989) no.3 pp.386--387)
+% ------------------------------------------------------------------------
+% MODIFICATOR:
+% B. Jackowski, Tatrza\'nska 6/1, 80-331 Gda\'nsk, POLAND
+%
+% Modification includes shadow boxes, possibility of defining outer
+% sizes (vertical and horizontal), and possibility of choosing various
+% set of corners.
+% ``Degenerated'' roundboxes (rectangles) are also available,
+% although because of round-off errors (or BJ errors?) they don't
+% look nice sometimes.
+% ------------------------------------------------------------------------
+% USAGE:
+% 1) thin frame (.4pt):
+% \roundbox <outer size(s)> {<text>}
+% \shadowbox <outer size(s)> {<text>}
+% 2) thick frame (.85pt) --- see remark 4:
+% \Roundbox <outer size(s)> {<text>}
+% \Shadowbox <outer size(s)> {<text>}
+% Outer size is optional and can have the form either `height <dimen>' or
+% `width <dimen>', or both---the order does not matter. This convention
+% is identical to that of `\hrule' and `\vrule'. You can even specify
+% depth; however, it is ignored.
+%
+% Usage of these commands can be preceeded by fixing an appropriate set
+% of corners:
+% \setcorners <number>
+% where
+% -1 <= <number> <= 7
+% and
+% size of corner = 2*(1+<number>)pt for <number> >= 0.
+%
+%
+% REMARKS:
+% 1. <outer size(s)> is/are optional and MUST NOT appear in braces.
+% 2. Errors in this parameter are not checked, hence odd results may occur.
+% 3. I made some names longer and add \@ as a letter, otherwise they
+% might interfere.
+% 4. Thick corners are said to have line thickness 0.8pt, however the
+% corrected value 0.85pt yields better results (for 300dpi fonts).
+% 5. Shadows do not change the size of the box (my shadow does not increase
+% my weight).
+% 6. I'm not very happy about the elegancy of the code. I hope that some day
+% I or somebody else will improve it.
+% 7. Is it reasonable to employ also scaled circle fonts?
+% ------------------------------------------------------------------------
+%
+\catcode`\@=11
+%
+% ------------------------------------------------------------------------
+% DECLARATIONS
+% ------------------------------------------------------------------------
+%
+\newbox\t@mpb@x
+\newdimen\t@mpwd
+\newdimen\t@mpht
+\newdimen\t@mpth
+%
+\newdimen\xt@mpwd % used for making
+\newdimen\xt@mpht % shadows instead
+\newdimen\xt@mpdp % of phantoms
+%
+\newdimen\c@rnwd % width of corner (first --- doubled, finally --- true)
+\newdimen\c@frwd % doubled width of corner + width of frame
+\newdimen\c@rnsh % corner shift
+\newdimen\sh@dsh % shadow shift
+%
+% ------------------------------------------------------------------------
+% QUARTER CIRCLES:
+% ------------------------------------------------------------------------
+%\font\circle=circle10 \font\circlew=circlew10
+\font\circle=lcircle1 \font\circlew=lcirclew
+% ------------------------------------------------------------------------
+\newcount\cornern@
+\def\@vailcorn{\immediate
+ \write16{! AVAILABLE CORNER SETS: -1,0,1,2,...,9 --- 4th set assumed}%
+ \cornern@=4}
+\def\s@tc@rn@rs{%
+ \ifnum\cornern@<-1\@vailcorn\fi
+ \ifnum\cornern@>9\@vailcorn\fi
+ \ifnum\cornern@=-1
+ % degenerated corner set;
+ % in fact, only the width of \luq@tr is important, the corners are
+ % not drawn, simply the rules are longer.
+ \def\Ph@ntc@rn{\vbox to 0.8pt{\vss\hbox to 1.6pt{}}}%
+ \def\ph@ntc@rn{\vbox to 0.4pt{\vss\hbox to 0.8pt{}}}%
+ \def\luq@tr{\ifx\cf\circlew \Ph@ntc@rn \else \ph@ntc@rn \fi}%
+ \else
+ \multiply\cornern@4
+ \edef\ruq@tr{{\noexpand\cf\char\the\cornern@}}% right upper qtr
+ \advance\cornern@ 1
+ \edef\rlq@tr{{\noexpand\cf\char\the\cornern@}}% left upper qtr
+ \advance\cornern@ 1
+ \edef\llq@tr{{\noexpand\cf\char\the\cornern@}}% left lower qtr
+ \advance\cornern@ 1
+ \edef\luq@tr{{\noexpand\cf\char\the\cornern@}}% left upper qtr
+ \fi}
+\def\setcorners{\afterassignment\s@tc@rn@rs \cornern@ = }
+\setcorners 4 % G. Glendown preferred set no 2
+% ------------------------------------------------------------------------
+% ROUND BOXES:
+% ------------------------------------------------------------------------
+%
+\def\RB@x#1#2{% #1 - rule thickness, #2 - text
+% known:
+% \t@mpwd \t@mpht
+ \t@mpth=#1\relax
+ \setbox\t@mpb@x=\hbox{\luq@tr}\c@rnwd=\wd\t@mpb@x
+ \ifdim\c@rnwd=\z@ \c@rnwd=2\t@mpth\fi
+ \c@frwd=\t@mpth % \c@frwd is globally copied to \sh@dsh in
+ % \s(S)hadowB@x
+ \advance \c@frwd \c@rnwd
+ \c@rnsh=-\t@mpth\advance \c@rnsh \c@rnwd
+ \setbox\t@mpb@x=\hbox{#2}%
+ \xt@mpht=\ht\t@mpb@x % pha
+ \xt@mpwd=\wd\t@mpb@x % nt
+ \xt@mpdp=\dp\t@mpb@x % om...
+ \setbox\t@mpb@x=\hbox \ifdim\t@mpwd<\c@frwd
+ spread \c@rnwd
+ \else
+ to \t@mpwd
+ \fi
+ {\hss\box\t@mpb@x\hss}%
+ \advance\t@mpht-\c@frwd \ifdim\t@mpht<\z@ \t@mpht=\z@\fi
+ \setbox\t@mpb@x=\hbox to \wd\t@mpb@x{\vrule width\t@mpth\hss
+ \vbox \ifdim\t@mpht>\z@ to \t@mpht\fi
+ {\vss\box\t@mpb@x\vss}%
+ \hss\vrule width\t@mpth}%
+ \c@rnwd=0.5\c@rnwd
+ \t@mpwd=\wd\t@mpb@x
+ \vbox spread -\c@rnsh{%
+ \offinterlineskip
+ \vss
+ \hbox to \t@mpwd{\ifnum\cornern@=-1 \else
+ \hbox to \c@rnwd{\luq@tr\hss}%
+ \fi
+ \leaders\hrule height\t@mpth\hfil
+ \ifnum\cornern@=-1 \else
+ \hbox to \c@rnwd{\hss\ruq@tr\kern-\c@rnsh}%
+ \fi}
+ \box\t@mpb@x
+ \hbox to \t@mpwd{\ifnum\cornern@=-1 \else
+ \hbox to \c@rnwd{\llq@tr\hss}%
+ \fi
+ \leaders\hrule height\t@mpth\hfil
+ \ifnum\cornern@=-1 \else
+ \hbox to \c@rnwd{\hss\rlq@tr\kern-\c@rnsh}%
+ \fi}
+ \vss
+ }%
+ }% end \def\RB@x
+%
+\def\roundbox#1#{\setbox\t@mpb@x=\hbox{\vrule #1}% Attention! trick!
+ \t@mpwd=\wd\t@mpb@x \t@mpht=\ht\t@mpb@x
+ \roundB@x}
+\def\roundB@x#1{\font\cf=lcircle1 \RB@x{.4pt}{#1}}
+%
+\def\Roundbox#1#{\setbox\t@mpb@x=\hbox{\vrule #1}% Attention! trick!
+ \t@mpwd=\wd\t@mpb@x \t@mpht=\ht\t@mpb@x
+ \RoundB@x}
+\def\RoundB@x#1{\font\cf=lcirclew \RB@x{.85pt}{#1}}
+%
+% ------------------------------------------------------------------------
+% SHADOW BOXES:
+% ------------------------------------------------------------------------
+%
+\def\RShB@x#1{% #1 - rule thickness
+% known:
+% \t@mpwd \t@mpht
+% \xt@mpwd \xt@mpht \xt@mpdp
+ \t@mpth=#1\relax
+ \setbox\t@mpb@x=\hbox{\luq@tr}\c@rnwd=\wd\t@mpb@x
+ \ifdim\c@rnwd=\z@ \c@rnwd=2\t@mpth\fi
+ \c@frwd=\t@mpth % \c@frwd is globally copied to \sh@dsh in
+ % \s(S)hadowB@x
+ \advance \c@frwd \c@rnwd
+ \c@rnsh=-\t@mpth\advance \c@rnsh \c@rnwd
+ \setbox\t@mpb@x=\hbox \ifdim\t@mpwd<\c@frwd
+ spread \c@rnwd
+ \else
+ to \t@mpwd
+ \fi
+ {\hss\vrule width \z@ height\xt@mpht depth\xt@mpdp
+ \hskip\xt@mpwd\hss}%
+ \setbox\t@mpb@x=\vbox \ifdim\t@mpht>\z@ to \t@mpht\fi
+ {\vss\box\t@mpb@x\vss}%
+ \c@rnwd=0.5\c@rnwd
+ \t@mpwd=\wd\t@mpb@x
+ \setbox\t@mpb@x=\hbox to \t@mpwd{\vbox \ifnum\cornern@=-1 spread\c@rnwd \fi
+ {\vss\box\t@mpb@x}\hss\vrule width\t@mpth}%
+ \vbox spread -\c@rnsh{%
+ \offinterlineskip
+ \vss
+ \hbox to \t@mpwd{\hfil
+ \ifnum\cornern@=-1 \else
+ \hbox to \c@rnwd{\hss\ruq@tr\kern-\c@rnsh}%
+ \fi}
+ \box\t@mpb@x
+ \hbox to \t@mpwd{\ifnum\cornern@=-1 \else
+ \hbox to \c@rnwd{\llq@tr\hss}%
+ \fi
+ \leaders\hrule height\t@mpth\hfil
+ \ifnum\cornern@=-1 \else
+ \hbox to \c@rnwd{\hss\rlq@tr\kern-\c@rnsh}%
+ \fi}
+ \vss
+ }%
+ }% end \def\RShB@x
+%
+\def\shadowbox#1#{\def\p@r@m{#1}\shadowB@x}
+\def\shadowB@x#1{\vbox{\hbox{\roundbox\p@r@m{#1}\global\sh@dsh\c@frwd
+ \kern-\t@mpwd \kern0.5\sh@dsh \lower0.5\sh@dsh
+ \hbox{\font\cf=lcircle1 \RShB@x{.4pt}}%
+ \kern-0.5\sh@dsh} \kern-0.5\sh@dsh}}
+%
+\def\Shadowbox#1#{\def\p@r@m{#1}\ShadowB@x}
+\def\ShadowB@x#1{\vbox{\hbox{\Roundbox\p@r@m{#1}\global\sh@dsh\c@frwd
+ \kern-\t@mpwd \kern0.5\sh@dsh \lower0.5\sh@dsh
+ \hbox{\font\cf=lcirclew \RShB@x{.85pt}}%
+ \kern-0.5\sh@dsh} \kern-0.5\sh@dsh}}
+%
+% ------------------------------------------------------------------------
+%
+\catcode`\@=12
+%
+% ------------------------------------------------------------------------
+\endinput
+% ------------------------------------------------------------------------
+% END OF ROUNDBOX.TEX
+% ------------------------------------------------------------------------