Fix zlib usage with TNG
[alexxy/gromacs.git] / manual / picins.sty
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 }