summaryrefslogtreecommitdiff
path: root/macros/latex209/contrib/oval
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex209/contrib/oval
Initial commit
Diffstat (limited to 'macros/latex209/contrib/oval')
-rw-r--r--macros/latex209/contrib/oval/newcirc.mf806
-rw-r--r--macros/latex209/contrib/oval/oval.sty113
-rw-r--r--macros/latex209/contrib/oval/ovaltest.tex31
3 files changed, 950 insertions, 0 deletions
diff --git a/macros/latex209/contrib/oval/newcirc.mf b/macros/latex209/contrib/oval/newcirc.mf
new file mode 100644
index 0000000000..eaa0b7a41c
--- /dev/null
+++ b/macros/latex209/contrib/oval/newcirc.mf
@@ -0,0 +1,806 @@
+font_identifier "CIRCLEOV"; font_size 8pt#;
+font_coding_scheme:="LATEX CIRCLE";
+aspect_ratio#:=1;
+mode_setup;
+
+let cmchar=\; % cmchar should precede each character, for testing purposes
+
+thicknessone:=ceiling(0.4pt#*hppp); % the way rules thicknesses are done
+% thickness#:=thickness/hppp; % and let thickness# round to right value
+% NO, I deleted this BAD line! --- DEK, 9 Jul 87
+pickup pencircle scaled thicknessone; nibone:=savepen;
+pickup pencircle scaled 2thicknessone; nibtwo:=savepen;
+pickup pencircle scaled 3thicknessone; nibthree:=savepen;
+pickup pencircle scaled 4thicknessone; nibfour:=savepen;
+
+
+def qbeginchar (expr c, diam_sharp) =
+beginchar(c,.5*diam_sharp,.5*diam_sharp,0);
+enddef;
+
+def upleftchar(expr diam_sharp) =
+draw quartercircle rotated 90 scaled 4diam_sharp shifted (2diam_sharp,0);
+enddef;
+
+def downleftchar(expr diam_sharp) =
+draw quartercircle rotated 180 scaled 4diam_sharp
+ shifted (2diam_sharp,2diam_sharp);
+enddef;
+
+def uprightchar(expr diam_sharp) =
+draw quartercircle scaled 4diam_sharp;
+enddef;
+
+def downrightchar(expr diam_sharp) =
+draw quartercircle rotated 270 scaled 4diam_sharp shifted (0,2diam_sharp);
+enddef;
+
+cmchar "2pt, top left";
+qbeginchar(0,4pt#);
+pickup nibone;
+upleftchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom left";
+qbeginchar(1,4pt#);
+pickup nibone;
+downleftchar(4pt#);
+endchar;
+
+cmchar "2pt, top right";
+qbeginchar(2,4pt#);
+pickup nibone;
+uprightchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom right";
+qbeginchar(3,4pt#);
+pickup nibone;
+downrightchar(4pt#);
+endchar;
+
+cmchar "4pt, top left";
+qbeginchar(4,8pt#);
+pickup nibone;
+upleftchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom left";
+qbeginchar(5,8pt#);
+pickup nibone;
+downleftchar(8pt#);
+endchar;
+
+cmchar "4pt, top right";
+qbeginchar(6,8pt#);
+pickup nibone;
+uprightchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom right";
+qbeginchar(7,8pt#);
+pickup nibone;
+downrightchar(8pt#);
+endchar;
+
+cmchar "6pt, top left";
+qbeginchar(8,12pt#);
+pickup nibone;
+upleftchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom left";
+qbeginchar(9,12pt#);
+pickup nibone;
+downleftchar(12pt#);
+endchar;
+
+cmchar "6pt, top right";
+qbeginchar(10,12pt#);
+pickup nibone;
+uprightchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom right";
+qbeginchar(11,12pt#);
+pickup nibone;
+downrightchar(12pt#);
+endchar;
+
+cmchar "8pt, top left";
+qbeginchar(12,16pt#);
+pickup nibone;
+upleftchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom left";
+qbeginchar(13,16pt#);
+pickup nibone;
+downleftchar(16pt#);
+endchar;
+
+cmchar "8pt, top right";
+qbeginchar(14,16pt#);
+pickup nibone;
+uprightchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom right";
+qbeginchar(15,16pt#);
+pickup nibone;
+downrightchar(16pt#);
+endchar;
+
+cmchar "10pt, top left";
+qbeginchar(16,20pt#);
+pickup nibone;
+upleftchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom left";
+qbeginchar(17,20pt#);
+pickup nibone;
+downleftchar(20pt#);
+endchar;
+
+cmchar "10pt, top right";
+qbeginchar(18,20pt#);
+pickup nibone;
+uprightchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom right";
+qbeginchar(19,20pt#);
+pickup nibone;
+downrightchar(20pt#);
+endchar;
+
+cmchar "12pt, top left";
+qbeginchar(20,24pt#);
+pickup nibone;
+upleftchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom left";
+qbeginchar(21,24pt#);
+pickup nibone;
+downleftchar(24pt#);
+endchar;
+
+cmchar "12pt, top right";
+qbeginchar(22,24pt#);
+pickup nibone;
+uprightchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom right";
+qbeginchar(23,24pt#);
+pickup nibone;
+downrightchar(24pt#);
+endchar;
+
+cmchar "14pt, top left";
+qbeginchar(24,28pt#);
+pickup nibone;
+upleftchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom left";
+qbeginchar(25,28pt#);
+pickup nibone;
+downleftchar(28pt#);
+endchar;
+
+cmchar "14pt, top right";
+qbeginchar(26,28pt#);
+pickup nibone;
+uprightchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom right";
+qbeginchar(27,28pt#);
+pickup nibone;
+downrightchar(28pt#);
+endchar;
+
+cmchar "16pt, top left";
+qbeginchar(28,32pt#);
+pickup nibone;
+upleftchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom left";
+qbeginchar(29,32pt#);
+pickup nibone;
+downleftchar(32pt#);
+endchar;
+
+cmchar "16pt, top right";
+qbeginchar(30,32pt#);
+pickup nibone;
+uprightchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom right";
+qbeginchar(31,32pt#);
+pickup nibone;
+downrightchar(32pt#);
+endchar;
+
+cmchar "2pt, top left";
+qbeginchar(32+0,4pt#);
+pickup nibtwo;
+upleftchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom left";
+qbeginchar(32+1,4pt#);
+pickup nibtwo;
+downleftchar(4pt#);
+endchar;
+
+cmchar "2pt, top right";
+qbeginchar(32+2,4pt#);
+pickup nibtwo;
+uprightchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom right";
+qbeginchar(32+3,4pt#);
+pickup nibtwo;
+downrightchar(4pt#);
+endchar;
+
+cmchar "4pt, top left";
+qbeginchar(32+4,8pt#);
+pickup nibtwo;
+upleftchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom left";
+qbeginchar(32+5,8pt#);
+pickup nibtwo;
+downleftchar(8pt#);
+endchar;
+
+cmchar "4pt, top right";
+qbeginchar(32+6,8pt#);
+pickup nibtwo;
+uprightchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom right";
+qbeginchar(32+7,8pt#);
+pickup nibtwo;
+downrightchar(8pt#);
+endchar;
+
+cmchar "6pt, top left";
+qbeginchar(32+8,12pt#);
+pickup nibtwo;
+upleftchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom left";
+qbeginchar(32+9,12pt#);
+pickup nibtwo;
+downleftchar(12pt#);
+endchar;
+
+cmchar "6pt, top right";
+qbeginchar(32+10,12pt#);
+pickup nibtwo;
+uprightchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom right";
+qbeginchar(32+11,12pt#);
+pickup nibtwo;
+downrightchar(12pt#);
+endchar;
+
+cmchar "8pt, top left";
+qbeginchar(32+12,16pt#);
+pickup nibtwo;
+upleftchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom left";
+qbeginchar(32+13,16pt#);
+pickup nibtwo;
+downleftchar(16pt#);
+endchar;
+
+cmchar "8pt, top right";
+qbeginchar(32+14,16pt#);
+pickup nibtwo;
+uprightchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom right";
+qbeginchar(32+15,16pt#);
+pickup nibtwo;
+downrightchar(16pt#);
+endchar;
+
+cmchar "10pt, top left";
+qbeginchar(32+16,20pt#);
+pickup nibtwo;
+upleftchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom left";
+qbeginchar(32+17,20pt#);
+pickup nibtwo;
+downleftchar(20pt#);
+endchar;
+
+cmchar "10pt, top right";
+qbeginchar(32+18,20pt#);
+pickup nibtwo;
+uprightchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom right";
+qbeginchar(32+19,20pt#);
+pickup nibtwo;
+downrightchar(20pt#);
+endchar;
+
+cmchar "12pt, top left";
+qbeginchar(32+20,24pt#);
+pickup nibtwo;
+upleftchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom left";
+qbeginchar(32+21,24pt#);
+pickup nibtwo;
+downleftchar(24pt#);
+endchar;
+
+cmchar "12pt, top right";
+qbeginchar(32+22,24pt#);
+pickup nibtwo;
+uprightchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom right";
+qbeginchar(32+23,24pt#);
+pickup nibtwo;
+downrightchar(24pt#);
+endchar;
+
+cmchar "14pt, top left";
+qbeginchar(32+24,28pt#);
+pickup nibtwo;
+upleftchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom left";
+qbeginchar(32+25,28pt#);
+pickup nibtwo;
+downleftchar(28pt#);
+endchar;
+
+cmchar "14pt, top right";
+qbeginchar(32+26,28pt#);
+pickup nibtwo;
+uprightchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom right";
+qbeginchar(32+27,28pt#);
+pickup nibtwo;
+downrightchar(28pt#);
+endchar;
+
+cmchar "16pt, top left";
+qbeginchar(32+28,32pt#);
+pickup nibtwo;
+upleftchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom left";
+qbeginchar(32+29,32pt#);
+pickup nibtwo;
+downleftchar(32pt#);
+endchar;
+
+cmchar "16pt, top right";
+qbeginchar(32+30,32pt#);
+pickup nibtwo;
+uprightchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom right";
+qbeginchar(32+31,32pt#);
+pickup nibtwo;
+downrightchar(32pt#);
+endchar;
+
+cmchar "2pt, top left";
+qbeginchar(64+0,4pt#);
+pickup nibthree;
+upleftchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom left";
+qbeginchar(64+1,4pt#);
+pickup nibthree;
+downleftchar(4pt#);
+endchar;
+
+cmchar "2pt, top right";
+qbeginchar(64+2,4pt#);
+pickup nibthree;
+uprightchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom right";
+qbeginchar(64+3,4pt#);
+pickup nibthree;
+downrightchar(4pt#);
+endchar;
+
+cmchar "4pt, top left";
+qbeginchar(64+4,8pt#);
+pickup nibthree;
+upleftchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom left";
+qbeginchar(64+5,8pt#);
+pickup nibthree;
+downleftchar(8pt#);
+endchar;
+
+cmchar "4pt, top right";
+qbeginchar(64+6,8pt#);
+pickup nibthree;
+uprightchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom right";
+qbeginchar(64+7,8pt#);
+pickup nibthree;
+downrightchar(8pt#);
+endchar;
+
+cmchar "6pt, top left";
+qbeginchar(64+8,12pt#);
+pickup nibthree;
+upleftchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom left";
+qbeginchar(64+9,12pt#);
+pickup nibthree;
+downleftchar(12pt#);
+endchar;
+
+cmchar "6pt, top right";
+qbeginchar(64+10,12pt#);
+pickup nibthree;
+uprightchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom right";
+qbeginchar(64+11,12pt#);
+pickup nibthree;
+downrightchar(12pt#);
+endchar;
+
+cmchar "8pt, top left";
+qbeginchar(64+12,16pt#);
+pickup nibthree;
+upleftchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom left";
+qbeginchar(64+13,16pt#);
+pickup nibthree;
+downleftchar(16pt#);
+endchar;
+
+cmchar "8pt, top right";
+qbeginchar(64+14,16pt#);
+pickup nibthree;
+uprightchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom right";
+qbeginchar(64+15,16pt#);
+pickup nibthree;
+downrightchar(16pt#);
+endchar;
+
+cmchar "10pt, top left";
+qbeginchar(64+16,20pt#);
+pickup nibthree;
+upleftchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom left";
+qbeginchar(64+17,20pt#);
+pickup nibthree;
+downleftchar(20pt#);
+endchar;
+
+cmchar "10pt, top right";
+qbeginchar(64+18,20pt#);
+pickup nibthree;
+uprightchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom right";
+qbeginchar(64+19,20pt#);
+pickup nibthree;
+downrightchar(20pt#);
+endchar;
+
+cmchar "12pt, top left";
+qbeginchar(64+20,24pt#);
+pickup nibthree;
+upleftchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom left";
+qbeginchar(64+21,24pt#);
+pickup nibthree;
+downleftchar(24pt#);
+endchar;
+
+cmchar "12pt, top right";
+qbeginchar(64+22,24pt#);
+pickup nibthree;
+uprightchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom right";
+qbeginchar(64+23,24pt#);
+pickup nibthree;
+downrightchar(24pt#);
+endchar;
+
+cmchar "14pt, top left";
+qbeginchar(64+24,28pt#);
+pickup nibthree;
+upleftchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom left";
+qbeginchar(64+25,28pt#);
+pickup nibthree;
+downleftchar(28pt#);
+endchar;
+
+cmchar "14pt, top right";
+qbeginchar(64+26,28pt#);
+pickup nibthree;
+uprightchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom right";
+qbeginchar(64+27,28pt#);
+pickup nibthree;
+downrightchar(28pt#);
+endchar;
+
+cmchar "16pt, top left";
+qbeginchar(64+28,32pt#);
+pickup nibthree;
+upleftchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom left";
+qbeginchar(64+29,32pt#);
+pickup nibthree;
+downleftchar(32pt#);
+endchar;
+
+cmchar "16pt, top right";
+qbeginchar(64+30,32pt#);
+pickup nibthree;
+uprightchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom right";
+qbeginchar(64+31,32pt#);
+pickup nibthree;
+downrightchar(32pt#);
+endchar;
+
+cmchar "2pt, top left";
+qbeginchar(96+0,4pt#);
+pickup nibfour;
+upleftchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom left";
+qbeginchar(96+1,4pt#);
+pickup nibfour;
+downleftchar(4pt#);
+endchar;
+
+cmchar "2pt, top right";
+qbeginchar(96+2,4pt#);
+pickup nibfour;
+uprightchar(4pt#);
+endchar;
+
+cmchar "2pt, bottom right";
+qbeginchar(96+3,4pt#);
+pickup nibfour;
+downrightchar(4pt#);
+endchar;
+
+cmchar "4pt, top left";
+qbeginchar(96+4,8pt#);
+pickup nibfour;
+upleftchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom left";
+qbeginchar(96+5,8pt#);
+pickup nibfour;
+downleftchar(8pt#);
+endchar;
+
+cmchar "4pt, top right";
+qbeginchar(96+6,8pt#);
+pickup nibfour;
+uprightchar(8pt#);
+endchar;
+
+cmchar "4pt, bottom right";
+qbeginchar(96+7,8pt#);
+pickup nibfour;
+downrightchar(8pt#);
+endchar;
+
+cmchar "6pt, top left";
+qbeginchar(96+8,12pt#);
+pickup nibfour;
+upleftchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom left";
+qbeginchar(96+9,12pt#);
+pickup nibfour;
+downleftchar(12pt#);
+endchar;
+
+cmchar "6pt, top right";
+qbeginchar(96+10,12pt#);
+pickup nibfour;
+uprightchar(12pt#);
+endchar;
+
+cmchar "6pt, bottom right";
+qbeginchar(96+11,12pt#);
+pickup nibfour;
+downrightchar(12pt#);
+endchar;
+
+cmchar "8pt, top left";
+qbeginchar(96+12,16pt#);
+pickup nibfour;
+upleftchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom left";
+qbeginchar(96+13,16pt#);
+pickup nibfour;
+downleftchar(16pt#);
+endchar;
+
+cmchar "8pt, top right";
+qbeginchar(96+14,16pt#);
+pickup nibfour;
+uprightchar(16pt#);
+endchar;
+
+cmchar "8pt, bottom right";
+qbeginchar(96+15,16pt#);
+pickup nibfour;
+downrightchar(16pt#);
+endchar;
+
+cmchar "10pt, top left";
+qbeginchar(96+16,20pt#);
+pickup nibfour;
+upleftchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom left";
+qbeginchar(96+17,20pt#);
+pickup nibfour;
+downleftchar(20pt#);
+endchar;
+
+cmchar "10pt, top right";
+qbeginchar(96+18,20pt#);
+pickup nibfour;
+uprightchar(20pt#);
+endchar;
+
+cmchar "10pt, bottom right";
+qbeginchar(96+19,20pt#);
+pickup nibfour;
+downrightchar(20pt#);
+endchar;
+
+cmchar "12pt, top left";
+qbeginchar(96+20,24pt#);
+pickup nibfour;
+upleftchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom left";
+qbeginchar(96+21,24pt#);
+pickup nibfour;
+downleftchar(24pt#);
+endchar;
+
+cmchar "12pt, top right";
+qbeginchar(96+22,24pt#);
+pickup nibfour;
+uprightchar(24pt#);
+endchar;
+
+cmchar "12pt, bottom right";
+qbeginchar(96+23,24pt#);
+pickup nibfour;
+downrightchar(24pt#);
+endchar;
+
+cmchar "14pt, top left";
+qbeginchar(96+24,28pt#);
+pickup nibfour;
+upleftchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom left";
+qbeginchar(96+25,28pt#);
+pickup nibfour;
+downleftchar(28pt#);
+endchar;
+
+cmchar "14pt, top right";
+qbeginchar(96+26,28pt#);
+pickup nibfour;
+uprightchar(28pt#);
+endchar;
+
+cmchar "14pt, bottom right";
+qbeginchar(96+27,28pt#);
+pickup nibfour;
+downrightchar(28pt#);
+endchar;
+
+cmchar "16pt, top left";
+qbeginchar(96+28,32pt#);
+pickup nibfour;
+upleftchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom left";
+qbeginchar(96+29,32pt#);
+pickup nibfour;
+downleftchar(32pt#);
+endchar;
+
+cmchar "16pt, top right";
+qbeginchar(96+30,32pt#);
+pickup nibfour;
+uprightchar(32pt#);
+endchar;
+
+cmchar "16pt, bottom right";
+qbeginchar(96+31,32pt#);
+pickup nibfour;
+downrightchar(32pt#);
+endchar;
+
+bye;
diff --git a/macros/latex209/contrib/oval/oval.sty b/macros/latex209/contrib/oval/oval.sty
new file mode 100644
index 0000000000..2caf622d3a
--- /dev/null
+++ b/macros/latex209/contrib/oval/oval.sty
@@ -0,0 +1,113 @@
+\message{OVAL Boxes (c) by Elmar Schalueck 1991}
+\catcode`\@=11 % Make @ a letter
+\newbox\@tmpbox % to save a box
+\newbox\@cornerbox % to save a corner
+\newdimen\@tmpradius%
+\newdimen\@tmprule%
+\newdimen\@tmpdimadd%
+\newdimen\@tmpsep%
+\newdimen\@tmpdimd % dimen of depth
+\newdimen\@tmpdimh % dimen of height
+\newdimen\@tmpdimw % dimen of width
+\newdimen\@cornerdimw % dimen of width of a corner
+\newdimen\@vboxheight % dimen of height of surrounding box
+\newdimen\@hboxwidth % dimen of width of surrounding box
+\font\@cornerfont = newcirc % font for corners
+\newcount\@tmpchar%
+\newcount\@tmpcount%
+%
+%
+%
+% \@getovalradius calculates the real radius of the corners
+%
+\def\@getovalradius
+{\global\@tmpsep=2pt
+\ifdim\fboxsep>14\@tmpsep\@tmpcount=7\else
+\ifdim\fboxsep>12\@tmpsep\@tmpcount=6\else
+\ifdim\fboxsep>10\@tmpsep\@tmpcount=5\else
+\ifdim\fboxsep>8\@tmpsep\@tmpcount=4\else
+\ifdim\fboxsep>6\@tmpsep\@tmpcount=3\else
+\ifdim\fboxsep>4\@tmpsep\@tmpcount=2\else
+\ifdim\fboxsep>2\@tmpsep\@tmpcount=1\else
+\global\@tmpcount=0\fi\fi\fi\fi\fi\fi\fi
+\global\@tmpchar=4\global\multiply\@tmpchar by\@tmpcount
+\advance\@tmpcount by 1
+\global\multiply\@tmpsep by\@tmpcount}
+%
+%
+% \@gettmprule calculates real line width
+%
+\def\@gettmprule
+{\global\@tmprule=.4pt
+\ifdim\fboxrule>3\@tmprule\@tmpcount=3\else
+\ifdim\fboxrule>2\@tmprule\@tmpcount=2\else
+\ifdim\fboxrule>\@tmprule\@tmpcount=1\else
+\@tmpcount=0\fi\fi\fi
+\advance\@tmpcount by 1
+\global\@tmprule=.4pt\global\multiply\@tmprule by\@tmpcount
+\advance\@tmpcount by -1
+\multiply\@tmpcount by 32
+\global\advance\@tmpchar by\@tmpcount}
+%
+%
+%
+% \ovalbox#1 defines a box with round corners to enclose #1
+%
+\long\def\ovalbox#1{%
+ \leavevmode\setbox\@tmpbox\hbox{#1} % make #1 a box
+ \@getovalradius%
+ \@gettmprule%
+ \setbox\@cornerbox\hbox{\@cornerfont\char\@tmpchar}%
+ \@cornerdimw=\wd\@cornerbox%
+ \@tmpdimd=\dp\@tmpbox % depth of box, i.e. the part beneath
+ % the baseline
+ \@tmpdimh=\ht\@tmpbox % part above baseline
+ \@tmpdimw=\wd\@tmpbox % width of box
+ \advance\@tmpdimh by\@tmpdimd % total height of original box
+ \@hboxwidth=\fboxsep%
+ \advance\@hboxwidth by \fboxsep%
+ \@vboxheight=\@hboxwidth%
+ \advance\@hboxwidth by \@tmpdimw % total width of surrounding box
+ \advance\@vboxheight by \@tmpdimh % total height of surrounding box
+ \advance\@tmpdimd by\fboxsep%
+ \advance\@tmpdimd by\@tmprule % total amount beneath baseline
+ \@tmpdimadd=\fboxsep%
+ \advance\@tmpdimadd by -\@tmpsep%
+ \multiply\@tmpdimadd by 2 % calculate additional length
+ \advance\@tmpdimh by\@tmpdimadd % calculate height of vrule
+ \advance\@tmpdimw by\@tmpdimadd % calculate width of hrule
+ \hbox{\lower\@tmpdimd % put a box beneath baseline
+ \hbox%
+ {\vbox%
+ {\hbox{\@cornerfont \char \@tmpchar}%
+ \nointerlineskip%
+ \global\advance\@tmpchar by 1%
+ \hbox{\hskip-0.5\@tmprule%
+ \vrule height\@tmpdimh width\@tmprule depth0pt}%
+ \nointerlineskip%
+ \hbox{\@cornerfont \char \@tmpchar}%
+ \global\advance\@tmpchar by 1%
+ }\relax%
+ \lower0.5\@tmprule\vbox
+ {\hrule width\@tmpdimw height\@tmprule depth0pt\relax%
+ \vskip\fboxsep%
+ \vskip-0.25\@tmprule%
+ \hbox%
+ {\hskip0.5\@tmpdimadd%
+ \box\@tmpbox\relax % place original box
+ }%
+ \vskip\fboxsep%
+ \hrule width\@tmpdimw height\@tmprule depth0pt\relax%
+ }\relax%
+ \vbox%
+ {\hbox{\@cornerfont \char \@tmpchar}%
+ \nointerlineskip%
+ \global\advance\@tmpchar by 1%
+ \hbox{\hskip\@tmpsep\hskip-0.5\@tmprule%
+ \vrule height\@tmpdimh width\@tmprule depth0pt}%
+ \nointerlineskip%
+ \hbox{\@cornerfont \char \@tmpchar}%
+ }%
+ }}}%
+%
+\catcode`\@=12%
diff --git a/macros/latex209/contrib/oval/ovaltest.tex b/macros/latex209/contrib/oval/ovaltest.tex
new file mode 100644
index 0000000000..b3cc3c4dd1
--- /dev/null
+++ b/macros/latex209/contrib/oval/ovaltest.tex
@@ -0,0 +1,31 @@
+% Description of OVAL.STY
+%
+\documentstyle[oval]{article}
+\pagestyle{empty}
+\begin{document}
+\centering{\Large OVAL.STY - oval boxes}
+\vspace{0.3in}
+
+This is the description of an option that yields similar results as
+the wellknown \verb+\fbox+. It produces a \ovalbox{box} around some
+text with round corners. Because I have choosen to take a picture
+enviroment, some warnings occur during compilation. These may be
+ignored by the user.
+
+
+The following parameters are of some interest.
+\begin{itemize}
+\item \verb+\fboxsep+
+
+\item \verb+\fboxrule+
+
+\end{itemize}
+
+Both values have the same meaning as for the well known {\tt fbox}.
+
+\vspace{.3in}
+
+Have some fun with my macros.
+
+Elmar Schal\"{u}ck elmar@uni-paderborn.de
+\end{document}