1%       PICINS.STY --- Style File zum Einbinden von Bildern
2%       Autor:  J. Bleser, E. Lang
3%       Hochschulrechenzentrum
4%       Technische Hochschule Darmstadt
5%       !!!  Dieses Style-File ist urheberrechtlich geschuetzt  !!!
6%       !!!  Aenderungen nur mit Zustimmung der Autoren         !!!
7\message{Option `picins' Version 3.0  Sep. 1992, TH Darmstadt/HRZ}
8\newbox\@BILD%
9\newbox\@TEXT%
10\newdimen\d@breite%
11\newdimen\d@hoehe%
12\newdimen\d@xoff%
13\newdimen\d@yoff%
14\newdimen\d@shad%
15\newdimen\d@dash%
16\newdimen\d@boxl%
17\newdimen\d@pichskip%
18\newdimen\d@tmp
19\newdimen\d@tmpa
20\newdimen\d@bskip
21\newdimen\hsiz@%
22\newdimen\p@getot@l%
23\newcount\c@breite
24\newcount\c@hoehe
25\newcount\c@xoff
26\newcount\c@yoff
27\newcount\c@pos
28\newcount\c@shad
29\newcount\c@dash
30\newcount\c@boxl
31\newcount\c@zeilen%
32\newcount\@changemode%
33\newcount\c@piccaption%
34\newcount\c@piccaptionpos%
35\newcount\c@picpos
36\newcount\c@whole%
37\newcount\c@half%
38\newcount\c@tmp
39\newcount\c@tmpa
40\newcount\c@tmpb
41\newcount\c@tmpc
42\newcount\c@tmpd
43\newskip\d@leftskip
44\newif\if@list \@listfalse%
45\newif\if@offset%
46
47
48\c@piccaptionpos=1%
49\c@picpos=0
50\d@shad=4pt%
51\d@dash=4pt%
52\d@boxl=10pt%
53\d@pichskip=1em%
54\@changemode=0%
55\def\@captype{figure}%
56\let\old@par=\par%
57
58\def\pichskip#1{\d@pichskip #1\relax}
59
60
61\def\shadowthickness#1{\d@shad #1\relax}
62
63
64\def\dashlength#1{\d@dash #1\relax}
65
66
67\def\boxlength#1{\d@boxl #1\relax}
68
69
70\def\picchangemode{\@changemode=1}%
71\def\nopicchangemode{\@changemode=0}%
72
73
74\def\piccaptionoutside{\c@piccaptionpos=1}%
75\def\piccaptioninside{\c@piccaptionpos=2}%
76\def\piccaptionside{\c@piccaptionpos=3}%
77\def\piccaptiontopside{\c@piccaptionpos=4}%
78
79\def\piccaption{\@ifnextchar [{\@piccaption}{\@piccaption[]}}
80\def\@piccaption[#1]#2{\c@piccaption=1\def\sh@rtf@rm{#1}\def\capti@nt@xt{#2}}
81\def\make@piccaption{%
82 \hsiz@\d@breite%
83 \ifnum\c@piccaptionpos=2%
84   \advance\hsiz@ -2\fboxsep%
85 \fi%
86 \ifnum\c@piccaptionpos>2%
87   \hsiz@\hsize\advance\hsiz@-\d@breite\advance\hsiz@-\d@pichskip%
88 \fi%
89 \setbox\@TEXT=\vbox{\hsize\hsiz@\caption[\sh@rtf@rm]{\capti@nt@xt}}%
90}
91
92
93
94\def\newcaption{\refstepcounter\@captype\@dblarg{\@newcaption\@captype}}
95\long\def\@newcaption#1[#2]#3{%
96  \old@par%
97  \addcontentsline{\csname ext@#1\endcsname }{#1}%
98    {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}
99  \begingroup\@parboxrestore\normalsize%
100    \@newmakecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\old@par%
101  \endgroup%
102}
103\long\def\@newmakecaption#1#2{%
104  \vskip 10pt%
105  \setbox\@tempboxa \hbox {#1: #2}%
106  \ifdim \wd\@tempboxa >\hsize%
107    \setbox0=\hbox{#1: }\dimen0=\hsize\advance\dimen0 by-\wd0
108    \setbox1=\vtop{\hsize=\dimen0 #2}
109    \hbox{\box0 \box1}
110    \par
111  \else \hbox to\hsize {\hfil \box \@tempboxa \hfil}
112  \fi
113}
114
115
116
117
118
119\def\parpic{%
120  \@ifnextchar ({\iparpic}{\iparpic(0pt,0pt)}
121}
122\def\iparpic(#1,#2){%
123  \@ifnextchar ({\@offsettrue\iiparpic(#1,#2)}%
124                {\@offsetfalse\iiparpic(#1,#2)(0pt,0pt)}
125}
126\def\iiparpic(#1,#2)(#3,#4){%
127  \@ifnextchar [{\iiiparpic(#1,#2)(#3,#4)}{\iiiparpic(#1,#2)(#3,#4)[l]}
128}
129\def\iiiparpic(#1,#2)(#3,#4)[#5]{%
130  \@ifnextchar [{\ivparpic(#1,#2)(#3,#4)[#5]}{\ivparpic(#1,#2)(#3,#4)[#5][]}
131}
132\def\ivparpic(#1,#2)(#3,#4)[#5][#6]#7{%
133 \let\par=\old@par\par%
134 \hangindent0pt\hangafter1%
135 \setbox\@BILD=\hbox{#7}%
136 \d@breite=#1\d@breite=\the\d@breite%
137 \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi%
138 \c@breite=\d@breite\divide\c@breite by65536%
139 \multiply\c@piccaption\c@piccaptionpos%
140 \d@hoehe=#2\d@hoehe=\the\d@hoehe%
141 \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi%
142 \c@hoehe=\d@hoehe\divide\c@hoehe by65536%
143 \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536%
144 \d@yoff=\d@hoehe%
145 \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536%
146 \c@pos=1\unitlength1pt%
147 \if@offset%
148   \setbox\@BILD=\hbox{%
149     \begin{picture}(\c@breite,\c@hoehe)%
150       \put(0,0){\makebox(\c@breite,\c@hoehe){}}%
151       \put(\c@xoff,\c@yoff){\box\@BILD}%
152     \end{picture}%
153   }%
154 \else%
155   \setbox\@BILD=\hbox{%
156     \begin{picture}(\c@breite,\c@hoehe)%
157       \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}%
158     \end{picture}%
159   }%
160 \fi%
161 \ifnum\c@piccaption=2%
162   \make@piccaption%
163   \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT%
164   \c@hoehe=\d@hoehe\divide\c@hoehe by65536%
165   \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}%
166                       \hbox{\hspace{\fboxsep}\box\@TEXT}%
167                       \vspace{4pt}}%
168 \fi%
169 \@tfor\@tempa := #5\do{%
170   \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi%
171   \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
172   \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi%
173   \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi%
174   \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
175   \if\@tempa l\c@pos=1\fi%
176   \if\@tempa r\c@pos=2\fi%
177 }%
178 \ifnum\c@piccaption=1%
179   \make@piccaption%
180   \advance\d@hoehe\ht\@TEXT\advance\d@hoehe\dp\@TEXT%
181   \c@hoehe=\d@hoehe\divide\c@hoehe by65536%
182   \setbox\@BILD=\vbox{\box\@BILD\vspace{-5pt}\hbox{\box\@TEXT}\vspace{4pt}}%
183 \fi%
184 \ifodd\count0\c@picpos=0\else\c@picpos=\@changemode\fi%
185 \pagetotal=\the\pagetotal%
186 \d@tmp=\pagegoal\advance\d@tmp by-\pagetotal\advance\d@tmp by-\baselineskip%
187 \ifdim\d@hoehe>\d@tmp%
188   \vskip 0pt plus\d@hoehe\relax\pagebreak[3]\vskip 0pt plus-\d@hoehe\relax%
189   \ifnum\c@picpos=1\c@picpos=0\else\c@picpos=\@changemode\fi%
190 \fi%
191 \ifnum\c@picpos=1\ifnum\c@pos=1\c@pos=2\else\c@pos=1\fi\fi%
192 \ifnum\@listdepth>0
193   \@listtrue\parshape 0%
194   \advance\hsize -\rightmargin%
195   \d@leftskip \leftskip%
196   \leftskip \@totalleftmargin%
197   \if@inlabel\rule{\linewidth}{0pt}\vskip-\baselineskip\relax\fi%
198 \else\@listfalse\medskip%
199 \fi%
200 \if@list\d@tmpa=\linewidth\else\d@tmpa=\hsize\fi%
201 \ifnum\c@piccaption=3%
202   \make@piccaption%
203   \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT%
204   \ifdim\d@hoehe>\d@tmp%
205     \setbox\@TEXT=\vbox to\d@hoehe{\vfill\box\@TEXT\vspace{.2\baselineskip}\vfill}%
206   \else%
207     \setbox\@BILD=\vbox to\d@tmp{\vfill\box\@BILD\vfill}%
208     \d@hoehe\d@tmp%
209   \fi%
210 \fi%
211 \ifnum\c@piccaption=4%
212   \make@piccaption%
213   \d@tmp\ht\@TEXT\advance\d@tmp\dp\@TEXT%
214   \setbox\@TEXT=\vbox to\d@hoehe{\vspace{-10pt}\box\@TEXT\vfil}%
215   \advance\d@hoehe-\d@tmp%
216 \fi%
217 \ifnum\c@pos=1\d@tmpa=0pt%
218   \ifnum\c@piccaption>2%
219      \setbox\@BILD=\hbox{\box\@BILD\hspace{\d@pichskip}\hbox{\box\@TEXT}}%
220   \fi%
221 \else\advance\d@tmpa by-\wd\@BILD\d@breite=-\d@breite%
222   \ifnum\c@piccaption>2%
223      \d@tmpa=0pt%
224      \setbox\@BILD=\hbox{\hbox{\box\@TEXT}\hspace{\d@pichskip}\box\@BILD}%
225   \fi%
226 \fi%
227 \p@getot@l\the\pagetotal%
228 \d@bskip\d@hoehe\advance\d@bskip by\parskip\advance\d@bskip by.3\baselineskip%
229 {\noindent\hspace*{\d@tmpa}\relax%
230  \box\@BILD\nopagebreak\vskip-\d@bskip\relax\nopagebreak}%
231 \d@tmp=-\d@hoehe\divide\d@tmp by\baselineskip%
232 \c@zeilen=\d@tmp\advance\c@zeilen by-1%
233 \ifdim\d@breite<0pt\advance\d@breite by-\d@pichskip%
234 \else\advance\d@breite by\d@pichskip%
235 \fi%
236 \hangindent=\d@breite%
237 \hangafter=\c@zeilen%
238 \let\par=\x@par%
239 \ifnum\c@piccaption=3%
240    \hangindent0pt\hangafter1\let\par=\old@par%
241    \vskip\d@hoehe\vskip.2\baselineskip%
242 \fi%
243 \c@piccaption=0%
244}
245
246
247
248
249\newdimen\ptoti
250\newdimen\ptotii
251\def\x@par{%
252 \ptoti\pagetotal%
253 \old@par%
254 \ptotii\pagetotal%
255 \ifdim\ptoti=\ptotii%
256   \d@tmp\d@hoehe%
257 \else%
258   \d@tmp\baselineskip%
259   \multiply\d@tmp by\prevgraf%
260   \advance\d@tmp by\parskip%
261   \global\advance\d@hoehe by-\d@tmp\d@tmp=\d@hoehe%
262 \fi%
263 \ifdim\d@hoehe>0pt%
264   \divide\d@tmp by\baselineskip\c@zeilen=-\d@tmp\advance\c@zeilen by-1%
265   \c@zeilen=\the\c@zeilen%
266 \else\c@zeilen=0
267 \fi
268 \ifnum\c@zeilen<0\hangafter=\c@zeilen\hangindent=\d@breite%
269 \else\let\par=\old@par%
270   \hangindent 0pt%
271   \leftskip \d@leftskip%
272   \if@list\parshape \@ne \@totalleftmargin \linewidth%
273     \advance\hsize \rightmargin%
274   \fi%
275 \fi%
276}
277
278
279\def\picskip#1{%
280 \let\par=\old@par%
281 \par%
282 \pagetotal\the\pagetotal%
283 \c@tmp=#1\relax%
284 \ifnum\c@tmp=0%
285   \d@tmp\baselineskip\multiply\d@tmp by\prevgraf\advance\d@tmp\parskip%
286   \ifdim\p@getot@l<\pagetotal
287     \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex%
288     \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi%
289   \fi%
290   \ifdim\p@getot@l=\pagetotal%
291     \advance\d@hoehe by-\d@tmp\advance\d@hoehe by1ex%
292     \ifdim\d@hoehe>0pt\vspace*{\d@hoehe}\fi%
293   \fi%
294 \else\hangafter=-\c@tmp\hangindent=\d@breite%
295 \fi%
296 \leftskip \d@leftskip%
297 \if@list\parshape \@ne \@totalleftmargin \linewidth%
298   \advance\hsize \rightmargin%
299 \fi%
300}
301
302
303
304
305
306
307\def\hpic{%
308  \@ifnextchar ({\ihpic}{\ihpic(0pt,0pt)}
309}
310\def\ihpic(#1,#2){%
311  \@ifnextchar ({\@offsettrue\iihpic(#1,#2)}%
312                {\@offsetfalse\iihpic(#1,#2)(0pt,0pt)}
313}
314\def\iihpic(#1,#2)(#3,#4){%
315  \@ifnextchar [{\iiihpic(#1,#2)(#3,#4)}{\iiihpic(#1,#2)(#3,#4)[l]}
316}
317\def\iiihpic(#1,#2)(#3,#4)[#5]{%
318  \@ifnextchar [{\ivhpic(#1,#2)(#3,#4)[#5]}{\ivhpic(#1,#2)(#3,#4)[#5][]}
319}
320\def\ivhpic(#1,#2)(#3,#4)[#5][#6]#7{%
321  \setbox\@BILD=\hbox{#7}%
322  \d@breite=#1\d@breite=\the\d@breite%
323  \ifdim\d@breite=0pt\d@breite=\wd\@BILD\fi%
324  \c@breite=\d@breite\divide\c@breite by65536%
325  \d@hoehe=#2\d@hoehe=\the\d@hoehe%
326  \ifdim\d@hoehe=0pt\d@hoehe=\ht\@BILD\advance\d@hoehe by\dp\@BILD\fi%
327  \c@hoehe=\d@hoehe\divide\c@hoehe by65536%
328  \d@xoff=#3\c@xoff=\d@xoff\divide\c@xoff by65536%
329  \d@yoff=\d@hoehe%
330  \advance\d@yoff by-#4\c@yoff=\d@yoff\divide\c@yoff by65536%
331  \c@pos=0\d@tmpa=\parindent\parindent=0pt\unitlength1pt%
332  \if@offset
333    \setbox\@BILD=\hbox{%
334      \begin{picture}(\c@breite,\c@hoehe)%
335        \put(0,0){\makebox(\c@breite,\c@hoehe){}}%
336        \put(\c@xoff,\c@yoff){\box\@BILD}%
337      \end{picture}%
338    }%
339  \else%
340    \setbox\@BILD=\hbox{%
341      \begin{picture}(\c@breite,\c@hoehe)%
342        \put(0,0){\makebox(\c@breite,\c@hoehe)[#6]{\box\@BILD}}%
343      \end{picture}%
344    }%
345  \fi%
346  \@tfor\@tempa := #5\do{%
347    \if\@tempa f\setbox\@BILD=\hbox{\Rahmen(\c@breite,\c@hoehe){\box\@BILD}}\fi%
348    \if\@tempa s\setbox\@BILD=\hbox{\Schatten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
349    \if\@tempa o\setbox\@BILD=\hbox{\Oval(\c@breite,\c@hoehe){\box\@BILD}}\fi%
350    \if\@tempa d\setbox\@BILD=\hbox{\Strich(\c@breite,\c@hoehe){\box\@BILD}}\fi%
351    \if\@tempa x\setbox\@BILD=\hbox{\Kasten(\c@breite,\c@hoehe){\box\@BILD}}\fi%
352    \if\@tempa t\c@pos=1\fi%
353    \if\@tempa b\c@pos=2\fi%
354  }%
355 \ifnum\c@pos=0\parbox{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi%
356 \ifnum\c@pos=1\parbox[t]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi%
357 \ifnum\c@pos=2\parbox[b]{\d@breite}{\makebox[0cm]{}\\\box\@BILD\smallskip}\fi%
358 \parindent=\d@tmpa%
359}
360
361
362
363
364
365
366\def\Rahmen(#1,#2)#3{%
367  \c@whole=\@wholewidth\divide\c@whole by65536%
368  \c@half=\@halfwidth\divide\c@half by65536%
369  \c@tmpa=#1\advance\c@tmpa by\c@whole\advance\c@tmpa by\c@whole%
370  \c@tmpb=#2\advance\c@tmpb by\c@whole\advance\c@tmpb by\c@whole%
371  \begin{picture}(\c@tmpa,\c@tmpb)%
372    \put(\c@whole,\c@half){\framebox(#1,#2){#3}}%
373  \end{picture}%
374  \global\advance\d@breite by2\@wholewidth%
375  \global\advance\d@hoehe by2\@wholewidth%
376}
377
378
379\def\Schatten(#1,#2)#3{%
380  \c@whole=\@wholewidth\divide\c@whole by65536%
381  \c@half=\@halfwidth\divide\c@half by65536%
382  \c@shad=\d@shad\divide\c@shad by65536%
383  \c@tmp=\c@whole\advance\c@tmp by\c@whole\c@tmpd=\c@tmp%
384  \advance\c@tmp by\c@shad%
385  \advance\c@tmpd by#1%
386  \advance\c@half by\c@shad%
387  \c@tmpa=#1\advance\c@tmpa by\c@tmp%
388  \c@tmpb=#2\advance\c@tmpb by\c@tmp%
389  \begin{picture}(\c@tmpa,\c@tmpb)%
390    \put(\c@whole,\c@half){\framebox(#1,#2){#3}}%
391    \put(\c@shad,0){\rule{\c@tmpd pt}{\c@shad pt}}%
392    \put(\c@tmpd,0){\rule{\c@shad pt}{#2 pt}}%
393  \end{picture}%
394  \global\advance\d@breite by2\@wholewidth\global\advance\d@breite by\d@shad%
395  \global\advance\d@hoehe by2\@wholewidth\global\advance\d@hoehe by\d@shad%
396}
397
398
399\def\Oval(#1,#2)#3{%
400  \@wholewidth=0.4pt%
401  \c@tmpa=\the#1\divide\c@tmpa by2%
402  \c@tmpb=\the#2\divide\c@tmpb by2%
403  \begin{picture}(#1,#2)%
404    \put(\c@tmpa,\c@tmpb){\oval(#1,#2)}%
405    \put(0.4,0.4){#3}%
406  \end{picture}%
407  \global\advance\d@breite by1pt\global\advance\d@hoehe by1pt%
408}
409
410
411\def\Strich(#1,#2)#3{%
412  \c@whole=\@wholewidth\divide\c@whole by65536%
413  \c@half=\@halfwidth\divide\c@half by65536%
414  \c@dash=\d@dash\divide\c@dash by65536%
415  \c@tmp=\c@whole\advance\c@tmp by\c@whole%
416  \c@tmpa=#1\advance\c@tmpa by\c@tmp%
417  \c@tmpb=#2\advance\c@tmpb by\c@tmp%
418  \c@tmpc=#1\advance\c@tmpc by\c@whole%
419  \c@tmpd=#2\advance\c@tmpd by\c@whole%
420  \begin{picture}(\c@tmpa,\c@tmpb)%
421    \put(\c@half,\c@half){\dashbox{\c@dash}(\c@tmpc,\c@tmpd){#3}}%
422  \end{picture}%
423  \global\advance\d@breite by2\@wholewidth%
424  \global\advance\d@hoehe by2\@wholewidth%
425}
426
427
428\def\Kasten(#1,#2)#3{%
429  \@wholewidth=0.4pt%
430  \c@boxl=\d@boxl\divide\c@boxl by65536\c@boxl=\the\c@boxl%
431  \c@tmpa=#1\advance\c@tmpa by\c@boxl%
432  \c@tmpb=#2\advance\c@tmpb by\c@boxl%
433  \c@tmp=#2%
434  \begin{picture}(\c@tmpa,\c@tmpb)%
435    \put(0,\c@boxl){\framebox(#1,#2){#3}}%
436    \put(\c@boxl,0){\line(-1,1){\c@boxl}}%
437    \put(\c@boxl,0){\line(1,0){#1}\line(-1,1){\c@boxl}}%
438    \put(\c@boxl,0){\put(#1,0){\line(0,1){\c@tmp}%
439         \put(0,\c@tmp){\line(-1,1){\c@boxl}}}}%
440  \end{picture}%
441  \global\advance\d@breite by\d@boxl%
442  \global\advance\d@hoehe by\d@boxl%
443}
444
445
446
447
448
449\newbox\env@box%
450\newdimen\d@envdp
451\newcount\c@hsize
452\newcount\c@envdp
453\newdimen\d@envb
454
455\long\def\frameenv{\@ifnextchar [{\@frameenv}{\@frameenv[\textwidth]}}
456\long\def\@frameenv[#1]{%
457 \hsiz@=\textwidth  \textwidth=#1  \d@envb=#1
458 \advance\textwidth by-2\@wholewidth
459 \advance\textwidth by-2\fboxsep
460 \hsize=\textwidth   \linewidth=\textwidth
461 \setbox\env@box=\vbox\bgroup}%
462\def\endframeenv{%
463 \egroup%
464 \hsize=\hsiz@  \textwidth=\hsiz@  \linewidth=\hsiz@
465 \c@breite=\d@envb   \divide\c@breite by65536
466 \advance\d@envb by-2\@wholewidth
467 \c@hsize=\d@envb  \divide\c@hsize by65536%
468 \d@envdp=\dp\env@box  \advance\d@envdp by\ht\env@box%
469 \advance\d@envdp by2\fboxsep%
470 \d@hoehe=\d@envdp   \advance\d@hoehe by2\@wholewidth
471 \c@hoehe=\d@hoehe   \divide\c@hoehe by65536
472 \c@envdp=\d@envdp   \divide\c@envdp by65536%
473 \c@tmp=\@wholewidth \divide\c@tmp by65536
474 \vskip\@wholewidth%
475 \unitlength 1pt\noindent%
476 \begin{picture}(\c@breite,\c@hoehe)(0,0)
477   \put(\c@tmp,\c@tmp){\framebox(\c@hsize,\c@envdp){\box\env@box}}
478 \end{picture}%
479}
480
481
482
483\long\def\shadowenv{\@ifnextchar [{\@shadowenv}{\@shadowenv[\textwidth]}}
484\long\def\@shadowenv[#1]{%
485 \hsiz@=\textwidth  \textwidth=#1  \d@envb=#1
486 \advance\textwidth by-2\@wholewidth
487 \advance\textwidth by-2\fboxsep
488 \advance\textwidth by-\d@shad%
489 \hsize=\textwidth   \linewidth=\textwidth
490 \setbox\env@box=\vbox\bgroup}%
491\def\endshadowenv{%
492 \egroup
493 \hsize=\hsiz@  \textwidth=\hsiz@  \linewidth=\hsiz@
494 \d@tmpa=\d@envb
495 \c@breite=\d@envb   \divide\c@breite by65536
496 \advance\d@envb by-2\@wholewidth  \advance\d@envb by-\d@shad
497 \c@hsize=\d@envb  \divide\c@hsize by65536%
498 \d@envdp=\dp\env@box  \advance\d@envdp by\ht\env@box%
499 \advance\d@envdp by2\fboxsep%
500 \c@envdp=\d@envdp   \divide\c@envdp by65536%
501 \d@hoehe=\d@envdp
502 \advance\d@hoehe by2\@wholewidth  \advance\d@hoehe by\d@shad
503 \c@hoehe=\d@hoehe    \divide\c@hoehe by65536
504 \c@shad =\d@shad     \divide\c@shad  by65536
505 \c@tmp=\@wholewidth  \divide\c@tmp by65536
506 \advance\d@tmpa by-2\d@shad
507 \c@xoff =\d@tmpa     \divide\c@xoff by65536
508 \advance\c@xoff by\c@shad  \advance\c@xoff by-1
509 \advance\d@envdp by\@wholewidth
510 \vskip\@halfwidth
511 \unitlength 1pt\noindent%
512 \begin{picture}(\c@breite,\c@hoehe)(0,0)
513    \put(\c@tmp,\c@shad){\framebox(\c@hsize,\c@envdp){\box\env@box}}
514    \put(\c@shad,0){\rule{\d@tmpa}{\d@shad}}%
515    \put(\c@xoff,0){\rule{\d@shad}{\d@envdp}}%
516 \end{picture}%
517 \vskip\@halfwidth
518}
519
520
521\long\def\dashenv{\@ifnextchar [{\@dashenv}{\@dashenv[\textwidth]}}
522\long\def\@dashenv[#1]{%
523 \hsiz@=\textwidth  \textwidth=#1  \d@envb=#1
524 \advance\textwidth by-2\@wholewidth  \advance\textwidth by-2\fboxsep
525 \hsize=\textwidth   \linewidth=\textwidth
526 \setbox\env@box=\vbox\bgroup}%
527\long\def\enddashenv{%
528 \egroup
529 \hsize=\hsiz@  \textwidth=\hsiz@  \linewidth=\hsiz@
530 \c@breite=\d@envb   \divide\c@breite by65536
531 \advance\d@envb by-\@wholewidth
532 \c@hsize=\d@envb  \divide\c@hsize by65536%
533 \d@envdp=\dp\env@box  \advance\d@envdp by\ht\env@box%
534 \advance\d@envdp by2\fboxsep%
535 \advance\d@envdp by\@wholewidth
536 \d@hoehe=\d@envdp   \advance\d@hoehe by2\@wholewidth
537 \c@hoehe=\d@hoehe   \divide\c@hoehe by65536
538 \c@envdp=\d@envdp   \divide\c@envdp by65536%
539 \c@dash=\d@dash     \divide\c@dash  by65536%
540 \c@whole=\@wholewidth  \divide\c@whole by65536
541 \c@half=\@halfwidth  \divide\c@half by 65536
542 \noindent\unitlength 1pt
543 \begin{picture}(\c@breite,\c@hoehe)(0,0)
544   \put(\c@half,\c@whole){\dashbox{\c@dash}(\c@hsize,\c@envdp){\box\env@box}}
545 \end{picture}%
546}
547
548
549\long\def\ovalenv{\@ifnextchar [{\@ovalenv}{\@ovalenv[\textwidth]}}%
550\long\def\@ovalenv[#1]{%
551 \hsiz@=\textwidth  \textwidth=#1  \d@envb=#1
552 \advance\textwidth by-4\fboxsep
553 \hsize=\textwidth   \linewidth=\textwidth
554 \setbox\env@box=\vbox\bgroup}%
555\long\def\endovalenv{%
556 \egroup
557 \hsize=\hsiz@  \textwidth=\hsiz@  \linewidth=\hsiz@
558 \@wholewidth=0.4pt
559 \c@breite=\d@envb   \divide\c@breite by65536
560 \advance\d@envb by-2\@wholewidth
561 \c@hsize=\d@envb  \divide\c@hsize by65536%
562 \d@envdp=\dp\env@box  \advance\d@envdp by\ht\env@box%
563 \advance\d@envdp by4\fboxsep%
564 \c@envdp=\d@envdp   \divide\c@envdp by65536%
565 \d@hoehe=\d@envdp   \advance\d@hoehe by2\@wholewidth
566 \c@hoehe=\d@hoehe   \divide\c@hoehe by65536
567 \c@tmpa=\c@hsize   \divide\c@tmpa by2%
568 \c@tmpb=\c@envdp   \divide\c@tmpb by2%
569 \d@tmpa=2\fboxsep   \advance\d@tmpa by\@wholewidth
570 \c@xoff=\d@tmpa     \divide\c@xoff  by65536%
571 \advance\d@tmpa by\dp\env@box
572 \c@yoff=\d@tmpa     \divide\c@yoff  by65536%
573 \unitlength 1pt\noindent
574 \begin{picture}(\c@breite,\c@hoehe)(0,0)
575   \put(\c@tmpa,\c@tmpb){\oval(\c@hsize,\c@envdp)}
576   \put(\c@xoff,\c@yoff){\box\env@box}%
577 \end{picture}%
578}
579