OSDN Git Service

removed web2c version of PUTeX.
[putex/putex.git] / src / putex / putex / pulatex.ltx
1 %%
2 %% This is file `latex.ltx',
3 %% generated with the docstrip utility.
4 %%
5 %% The original source files were:
6 %%
7 %% ltdirchk.dtx  (with options: `initex,2ekernel,dircheck')
8 %% ltplain.dtx  (with options: `2ekernel')
9 %% ltvers.dtx  (with options: `2ekernel')
10 %% ltdefns.dtx  (with options: `2ekernel')
11 %% ltalloc.dtx  (with options: `2ekernel')
12 %% ltcntrl.dtx  (with options: `2ekernel')
13 %% lterror.dtx  (with options: `2ekernel')
14 %% ltpar.dtx  (with options: `2ekernel')
15 %% ltspace.dtx  (with options: `2ekernel')
16 %% ltlogos.dtx  (with options: `2ekernel')
17 %% ltfiles.dtx  (with options: `2ekernel')
18 %% ltoutenc.dtx  (with options: `2ekernel')
19 %% ltcounts.dtx  (with options: `2ekernel')
20 %% ltlength.dtx  (with options: `2ekernel')
21 %% ltfssbas.dtx  (with options: `2ekernel')
22 %% ltfsstrc.dtx  (with options: `2ekernel')
23 %% ltfsscmp.dtx  (with options: `compat,2ekernel')
24 %% ltfssdcl.dtx  (with options: `compat,2ekernel')
25 %% ltfssini.dtx  (with options: `compat')
26 %% ltfntcmd.dtx  (with options: `2ekernel')
27 %% ltpageno.dtx  (with options: `2ekernel')
28 %% ltxref.dtx  (with options: `2ekernel')
29 %% ltmiscen.dtx  (with options: `2ekernel')
30 %% ltmath.dtx  (with options: `2ekernel')
31 %% ltlists.dtx  (with options: `2ekernel')
32 %% ltboxes.dtx  (with options: `2ekernel')
33 %% lttab.dtx  (with options: `2ekernel')
34 %% ltpictur.dtx  (with options: `2ekernel')
35 %% ltthm.dtx  (with options: `2ekernel')
36 %% ltsect.dtx  (with options: `2ekernel')
37 %% ltfloat.dtx  (with options: `2ekernel')
38 %% ltidxglo.dtx  (with options: `2ekernel')
39 %% ltbibl.dtx  (with options: `2ekernel')
40 %% ltpage.dtx  (with options: `2ekernel')
41 %% ltoutput.dtx  (with options: `2ekernel')
42 %% ltclass.dtx  (with options: `2ekernel')
43 %% ltfinal.dtx  (with options: `2ekernel')
44 %% 
45 %% This is a generated file.
46 %% 
47 %% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
48 %% The LaTeX3 Project and any individual authors listed elsewhere
49 %% in this file.
50 %% 
51 %% This file was generated from file(s) of the LaTeX base system.
52 %% --------------------------------------------------------------
53 %% 
54 %% It may be distributed and/or modified under the
55 %% conditions of the LaTeX Project Public License, either version 1.3
56 %% of this license or (at your option) any later version.
57 %% The latest version of this license is in
58 %%    http://www.latex-project.org/lppl.txt
59 %% and version 1.3 or later is part of all distributions of LaTeX
60 %% version 2003/12/01 or later.
61 %% 
62 %% This file has the LPPL maintenance status "maintained".
63 %% 
64 %% This file may only be distributed together with a copy of the LaTeX
65 %% base system. You may however distribute the LaTeX base system without
66 %% such generated files.
67 %% 
68 %% The list of all files belonging to the LaTeX base distribution is
69 %% given in the file `manifest.txt'. See also `legal.txt' for additional
70 %% information.
71 %% 
72 %% The list of derived (unpacked) files belonging to the distribution
73 %% and covered by LPPL is defined by the unpacking scripts (with
74 %% extension .ins) which are part of the distribution.
75 %%% From File: ltdirchk.dtx
76 \ifnum\catcode`\{=1
77   \errmessage
78   {LaTeX must be made using an initex with no format preloaded}
79 \fi
80 \catcode`\{=1
81 \catcode`\}=2
82 \catcode`\#=6
83 \catcode`\^=7
84 \chardef\active=13
85 \catcode`\@=11
86 \countdef\count@=255
87 \let\bgroup={ \let\egroup=}
88 \ifx\@@input\@undefined\let\@@input\input\fi
89 \ifx\@@end\@undefined\let\@@end\end\fi
90 \chardef\@inputcheck0
91 \chardef\sixt@@n=16
92 \newlinechar`\^^J
93 \def\typeout{\immediate\write17}
94 \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
95   \do\#\do\^\do\_\do\%\do\~}
96 \def\@makeother#1{\catcode`#1=12\relax}
97 \def\space{ }
98 \def\@tempswafalse{\let\if@tempswa\iffalse}
99 \def\@tempswatrue{\let\if@tempswa\iftrue}
100 \let\if@tempswa\iffalse
101 \def\loop#1\repeat{\def\iterate{#1\relax\expandafter\iterate\fi}%
102   \iterate \let\iterate\relax}
103 \let\repeat\fi
104 \def\two@digits#1{\ifnum#1<10 0\fi\number#1}
105 \long\def\@firstoftwo#1#2{#1}
106 \long\def\@secondoftwo#1#2{#2}
107 \def\ProvidesFile#1{%
108   \begingroup
109     \catcode`\ 10 %
110     \ifnum \endlinechar<256 %
111       \ifnum \endlinechar>\m@ne
112         \catcode\endlinechar 10 %
113       \fi
114     \fi
115     \@makeother\/%
116     \@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}}
117 \def\@providesfile#1[#2]{%
118     \wlog{File: #1 #2}%
119     \@addtofilelist{ #2}%
120     \endgroup}
121 \long\def\@addtofilelist#1{}
122 \def\@empty{}
123 \catcode`\%=12
124 \def\@percentchar{%}
125 \catcode`\%=14
126 \let\@currdir\@undefined
127 \let\input@path\@undefined
128 \let\filename@parse\@undefined
129 \def\strip@prefix#1>{}
130 \input texsys.cfg
131 \begingroup
132 \count@\time
133 \divide\count@ 60
134 \count2=-\count@
135 \multiply\count2 60
136 \advance\count2 \time
137 \edef\today{%
138   \the\year/\two@digits{\the\month}/\two@digits{\the\day}:%
139     \two@digits{\the\count@}:\two@digits{\the\count2}}
140 \immediate\openout15=texsys.aux
141 \immediate\write15{\today^^J}
142 \immediate\closeout15 %
143 \def\IfFileExists#1#2#3{%
144   \openin\@inputcheck#1 %
145   \ifeof\@inputcheck
146      #3\relax
147   \else
148     \read\@inputcheck to \reserved@a
149     \ifx\reserved@a\today
150       \typeout{#1 found}#2\relax
151     \else
152       \typeout{BAD: old file \reserved@a (should be \today)}%
153       #3\relax
154     \fi
155   \fi
156   \closein\@inputcheck}
157 \endlinechar=-1
158 \ifx\@currdir\@undefined
159   \IfFileExists{./texsys.aux}{\gdef\@currdir{./}}%
160     {\IfFileExists{[]texsys.aux}{\gdef\@currdir{[]}}%
161       {\IfFileExists{:texsys.aux}{\gdef\@currdir{:}}{}}}
162   \ifx\@currdir\@undefined
163     \global\let\@currdir\@empty
164     \typeout{^^J^^J%
165       !! No syntax for the current directory could be found^^J%
166       }%
167   \fi
168 \else
169   \IfFileExists{\@currdir texsys.aux}{}{%
170     \edef\reserved@a{\errhelp{%
171       texsys.cfg specifies the current directory syntax to be^^J%
172       \meaning\@currdir^^J%
173       but this does not work on this system.^^J%
174       Remove texsys.cfg and restart.}}\reserved@a
175     \errmessage{Bad texsys.cfg file: \noexpand\@currdir}\@@end}
176 \fi
177 \immediate\closeout15 %
178 \endgroup
179 \typeout{^^J^^J%
180          \noexpand\@currdir set to:
181            \expandafter\strip@prefix\meaning\@currdir.^^J%
182          }
183   \typeout{^^J%
184     Assuming \noexpand\openin and \noexpand\input^^J%
185     \ifx\input@path\@undefined
186       have the same search path.^^J%
187     \else
188       have different  search paths.^^J%
189       LaTeX will use the path specified by \noexpand\input@path:^^J%
190     \fi
191     }
192 \ifx\filename@parse\@undefined
193   \def\reserved@a{./}\ifx\@currdir\reserved@a
194     \typeout{^^JDefining UNIX/DOS style filename parser.^^J}
195     \def\filename@parse#1{%
196       \let\filename@area\@empty
197       \expandafter\filename@path#1/\\}
198     \def\filename@path#1/#2\\{%
199       \ifx\\#2\\%
200          \def\reserved@a{\filename@simple#1.\\}%
201       \else
202          \edef\filename@area{\filename@area#1/}%
203          \def\reserved@a{\filename@path#2\\}%
204       \fi
205       \reserved@a}
206   \else\def\reserved@a{[]}\ifx\@currdir\reserved@a
207     \typeout{^^JDefining VMS style filename parser.^^J}
208     \def\filename@parse#1{%
209       \let\filename@area\@empty
210       \expandafter\filename@path#1]\\}
211     \def\filename@path#1]#2\\{%
212       \ifx\\#2\\%
213          \def\reserved@a{\filename@simple#1.\\}%
214       \else
215          \edef\filename@area{\filename@area#1]}%
216          \def\reserved@a{\filename@path#2\\}%
217       \fi
218       \reserved@a}
219   \else\def\reserved@a{:}\ifx\@currdir\reserved@a
220     \typeout{^^JDefining Mac style filename parser.^^J}
221     \def\filename@parse#1{%
222       \let\filename@area\@empty
223       \expandafter\filename@path#1:\\}
224     \def\filename@path#1:#2\\{%
225       \ifx\\#2\\%
226          \def\reserved@a{\filename@simple#1.\\}%
227       \else
228          \edef\filename@area{\filename@area#1:}%
229          \def\reserved@a{\filename@path#2\\}%
230       \fi
231       \reserved@a}
232   \else
233     \typeout{^^JDefining generic filename parser.^^J}
234     \def\filename@parse#1{%
235       \let\filename@area\@empty
236       \expandafter\filename@simple#1.\\}
237   \fi\fi\fi
238   \def\filename@simple#1.#2\\{%
239     \ifx\\#2\\%
240        \let\filename@ext\relax
241     \else
242        \edef\filename@ext{\filename@dot#2\\}%
243     \fi
244     \edef\filename@base{#1}}
245   \def\filename@dot#1.\\{#1}
246 \else
247   \typeout{^^J^^J%
248     \noexpand\filename@parse was defined in texsys.cfg:^^J%
249     \expandafter\strip@prefix\meaning\filename@parse.^^J%
250     }
251 \fi
252 \ifx\@TeXversion\@undefined
253   \ifx\@undefined\inputlineno
254     \def\@TeXversion{2}
255   \else
256    {\catcode`\^^J=\active
257      \def\reserved@a#1#2\@@{\if#1\string^3\fi}
258      \edef\reserved@a{\expandafter\reserved@a\string^^J\@@}
259      \ifx\reserved@a\@empty\else\gdef\@TeXversion{3}\fi}
260   \fi
261 \fi
262 %%% From File: ltplain.dtx
263 %% \CharacterTable
264 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
265 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
266 %%   Digits        \0\1\2\3\4\5\6\7\8\9
267 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
268 %%   Dollar        \$     Percent       \%     Ampersand     \&
269 %%   Acute accent  \'     Left paren    \(     Right paren   \)
270 %%   Asterisk      \*     Plus          \+     Comma         \,
271 %%   Minus         \-     Point         \.     Solidus       \/
272 %%   Colon         \:     Semicolon     \;     Less than     \<
273 %%   Equals        \=     Greater than  \>     Question mark \?
274 %%   Commercial at \@     Left bracket  \[     Backslash     \\
275 %%   Right bracket \]     Circumflex    \^     Underscore    \_
276 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
277 %%   Right brace   \}     Tilde         \~}
278 %%
279 \catcode`\{=1 % left brace is begin-group character
280 \catcode`\}=2 % right brace is end-group character
281 \catcode`\$=3 % dollar sign is math shift
282 \catcode`\&=4 % ampersand is alignment tab
283 \catcode`\#=6 % hash mark is macro parameter character
284 \catcode`\^=7 % circumflex and uparrow are for superscripts
285 \catcode`\_=8 % underline and downarrow are for subscripts
286 \catcode`\^^I=10 % ascii tab is a blank space
287 \chardef\active=13 \catcode`\~=\active % tilde is active
288 \catcode`\^^L=\active \outer\def^^L{\par}% ascii form-feed is \outer\par
289 \message{catcodes,}
290 \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
291   \do\#\do\^\do\_\do\%\do\~}
292 \catcode`@=11
293 \chardef\@ne=1
294 \chardef\tw@=2
295 \chardef\thr@@=3
296 \chardef\sixt@@n=16
297 \chardef\@cclv=255
298 \mathchardef\@cclvi=256
299 \mathchardef\@m=1000
300 \mathchardef\@M=10000
301 \mathchardef\@MM=20000
302 \message{registers,}
303 \count10=22 % allocates \count registers 23, 24, ...
304 \count11=9 % allocates \dimen registers 10, 11, ...
305 \count12=9 % allocates \skip registers 10, 11, ...
306 \count13=9 % allocates \muskip registers 10, 11, ...
307 \count14=9 % allocates \box registers 10, 11, ...
308 \count15=9 % allocates \toks registers 10, 11, ...
309 \count16=-1 % allocates input streams 0, 1, ...
310 \count17=-1 % allocates output streams 0, 1, ...
311 \count18=3 % allocates math families 4, 5, ...
312 \count19=0 % allocates \language codes 1, 2, ...
313 \count20=255 % allocates insertions 254, 253, ...
314 \countdef\insc@unt=20
315 \countdef\allocationnumber=21
316 \countdef\m@ne=22 \m@ne=-1
317 \def\wlog{\immediate\write\m@ne}
318 \countdef\count@=255
319 \dimendef\dimen@=0
320 \dimendef\dimen@i=1 % global only
321 \dimendef\dimen@ii=2
322 \skipdef\skip@=0
323 \toksdef\toks@=0
324 \def\newcount{\alloc@0\count\countdef\insc@unt}
325 \def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
326 \def\newskip{\alloc@2\skip\skipdef\insc@unt}
327 \def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
328 \def\newbox{\alloc@4\box\chardef\insc@unt}
329 \def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
330 \def\newtoks{\alloc@5\toks\toksdef\@cclvi}
331 \def\newread{\alloc@6\read\chardef\sixt@@n}
332 \def\newwrite{\alloc@7\write\chardef\sixt@@n}
333 \def\newlanguage{\alloc@9\language\chardef\@cclvi}
334 \def\alloc@#1#2#3#4#5{\global\advance\count1#1\@ne
335   \ch@ck#1#4#2% make sure there's still room
336   \allocationnumber\count1#1%
337   \global#3#5\allocationnumber
338   \wlog{\string#5=\string#2\the\allocationnumber}}
339 \def\newinsert#1{\global\advance\insc@unt \m@ne
340   \ch@ck0\insc@unt\count
341   \ch@ck1\insc@unt\dimen
342   \ch@ck2\insc@unt\skip
343   \ch@ck4\insc@unt\box
344   \allocationnumber\insc@unt
345   \global\chardef#1\allocationnumber
346   \wlog{\string#1=\string\insert\the\allocationnumber}}
347 \gdef\ch@ck#1#2#3{%
348   \ifnum\count1#1<#2\else
349    \errmessage{No room for a new #3}%
350   \fi}
351 \newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen>
352 \newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow
353 \newdimen\p@ \p@=1pt % this saves macro space and time
354 \newdimen\z@ \z@=0pt % can be used both for 0pt and 0
355 \newskip\z@skip \z@skip=0pt plus0pt minus0pt
356 \newbox\voidb@x % permanently void box register
357 \message{compatibility for TeX 2, }
358 \ifx\@undefined\inputlineno
359   \newcount\inputlineno
360   \inputlineno-1
361   \ifx\@undefined\language
362     \newcount\language
363   \fi
364   \newcount\lefthyphenmin
365   \newcount\righthyphenmin
366   \newcount\errorcontextlines
367   \newcount\holdinginserts
368   \newdimen\emergencystretch
369   \newcount\badness
370   \let\noboundary\relax
371   \newcount\setlanguage
372 \fi
373 \message{parameters,}
374 \pretolerance=100
375 \tolerance=200 % INITEX sets this to 10000
376 \hbadness=1000
377 \vbadness=1000
378 \linepenalty=10
379 \hyphenpenalty=50
380 \exhyphenpenalty=50
381 \binoppenalty=700
382 \relpenalty=500
383 \clubpenalty=150
384 \widowpenalty=150
385 \displaywidowpenalty=50
386 \brokenpenalty=100
387 \predisplaypenalty=10000
388 \doublehyphendemerits=10000
389 \finalhyphendemerits=5000
390 \adjdemerits=10000
391 \tracinglostchars=1
392 \uchyph=1
393 \defaulthyphenchar=`\-
394 \defaultskewchar=-1
395 \delimiterfactor=901
396 \showboxbreadth=-1
397 \showboxdepth=-1
398 \errorcontextlines=-1
399 \hfuzz=0.1pt
400 \vfuzz=0.1pt
401 \overfullrule=5pt
402 \maxdepth=4pt
403 \splitmaxdepth=\maxdimen
404 \boxmaxdepth=\maxdimen
405 \delimitershortfall=5pt
406 \nulldelimiterspace=1.2pt
407 \scriptspace=0.5pt
408 \parindent=20pt
409 \parskip=0pt plus 1pt
410 \abovedisplayskip=12pt plus 3pt minus 9pt
411 \abovedisplayshortskip=0pt plus 3pt
412 \belowdisplayskip=12pt plus 3pt minus 9pt
413 \belowdisplayshortskip=7pt plus 3pt minus 4pt
414 \topskip=10pt
415 \splittopskip=10pt
416 \parfillskip=0pt plus 1fil
417 \newskip\normalbaselineskip \normalbaselineskip=12pt
418 \newskip\normallineskip \normallineskip=1pt
419 \newdimen\normallineskiplimit \normallineskiplimit=0pt
420 \newcount\interfootnotelinepenalty \interfootnotelinepenalty=100
421 \def\magstephalf{1095 }
422 \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or
423                2074\or 2488\fi\relax}
424 \def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m
425   \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
426 \def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000%
427   \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 }
428 \def\normalbaselines{\lineskip\normallineskip
429   \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit}
430 \def\^^M{\ } % control <return> = control <space>
431 \let\^^I\^^M % same for <tab>
432 \def\lq{`}
433 \def\rq{'}
434 \def\lbrack{[}
435 \def\rbrack{]}
436 \def \aa {\r a}
437 \def \AA {\r A}
438 \let\endgraf=\par
439 \let\endline=\cr
440 \def\space{ }
441 \let\empty\@empty
442 \def\null{\hbox{}}
443 \let\bgroup={
444 \let\egroup=}
445 {\catcode`\^^M=\active % these lines must end with %
446   \gdef\obeylines{\catcode`\^^M\active \let^^M\par}%
447   \global\let^^M\par} % this is in case ^^M appears in a \write
448 \def\obeyspaces{\catcode`\ \active}
449 {\obeyspaces\global\let =\space}
450 \long\def \loop #1\repeat{%
451   \def\iterate{#1\relax  % Extra \relax
452                \expandafter\iterate\fi
453                }%
454   \iterate
455   \let\iterate\relax
456 }
457 \let\repeat=\fi
458 \def\nointerlineskip{\prevdepth-\@m\p@}
459 \def\offinterlineskip{\baselineskip-\@m\p@
460   \lineskip\z@ \lineskiplimit\maxdimen}
461 \def\vglue{\afterassignment\vgl@\skip@=}
462 \def\vgl@{\par \dimen@\prevdepth \hrule \@height\z@
463   \nobreak\vskip\skip@ \prevdepth\dimen@}
464 \def\hglue{\afterassignment\hgl@\skip@=}
465 \def\hgl@{\leavevmode \count@\spacefactor \vrule \@width\z@
466   \nobreak\hskip\skip@ \spacefactor\count@}
467 \def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'
468 \def\break{\penalty-\@M}
469 \def\nobreak{\penalty \@M}
470 \def\allowbreak{\penalty \z@}
471 \def\filbreak{\par\vfil\penalty-200\vfilneg}
472 \def\goodbreak{\par\penalty-500 }
473 \def\eject{\par\break}
474 \def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi}
475 \def\smallbreak{\par\ifdim\lastskip<\smallskipamount
476   \removelastskip\penalty-50\smallskip\fi}
477 \def\medbreak{\par\ifdim\lastskip<\medskipamount
478   \removelastskip\penalty-100\medskip\fi}
479 \def\bigbreak{\par\ifdim\lastskip<\bigskipamount
480   \removelastskip\penalty-200\bigskip\fi}
481 \def\m@th{\mathsurround\z@}
482 \def\underbar#1{\underline{\sbox\tw@{#1}\dp\tw@\z@\box\tw@}}
483 \newbox\strutbox
484 \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
485 \def\hidewidth{\hskip\hideskip}
486 \def\narrower{%
487   \advance\leftskip\parindent
488   \advance\rightskip\parindent}
489 \chardef\%=`\%
490 \chardef\&=`\&
491 \chardef\#=`\#
492 \def\leavevmode{\unhbox\voidb@x}
493 \def\mathhexbox#1#2#3{\mbox{$\m@th \mathchar"#1#2#3$}}
494 \def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign
495 \def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
496   \ialign{##\crcr#1\crcr}}}
497 \def\o@lign{\lineskiplimit\z@ \oalign}
498 \def\ooalign{\lineskiplimit-\maxdimen \oalign}
499 \def\sh@ft#1{\dimen@.00#1ex\multiply\dimen@\fontdimen1\font
500   \kern-.0156\dimen@} % compensate for slant in lowered accents
501 \def\hrulefill{\leavevmode\leaders\hrule\hfill\kern\z@}
502 \def\dotfill{%
503   \leavevmode
504   \cleaders \hb@xt@ .44em{\hss.\hss}\hfill
505   \kern\z@}
506 \sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0
507 \def\showoverfull{\tracingonline\@ne}
508 \gdef\loggingoutput{\tracingoutput\@ne
509     \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode}
510 \gdef\showoutput{\loggingoutput\showoverfull}
511 \gdef\loggingall{\tracingcommands\tw@\tracingstats\tw@
512   \tracingpages\@ne\tracinglostchars\@ne
513   \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
514   \errorcontextlines\maxdimen\loggingoutput}
515 \gdef\tracingall{\loggingall\showoverfull}
516 \nonfrenchspacing
517 %%% From File: ltvers.dtx
518 \def\fmtname{LaTeX2e}
519 \edef\fmtversion{2003/12/01}
520 \iftrue
521 \def\reserved@a#1/#2/#3\@nil{%
522   \count@\year
523   \advance\count@-#1\relax
524   \multiply\count@ by 12\relax
525   \advance\count@\month
526   \advance\count@-#2\relax}
527 \expandafter\reserved@a\fmtversion\@nil
528 \ifnum\count@>65
529   \typeout{^^J%
530 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
531 !  You are attempting to make a LaTeX format from a source file^^J%
532 !  That is more than five years old.^^J%
533 !^^J%
534 !  If you enter <return> to scroll past this message then the format^^J%
535 !  will be built, but please consider obtaining newer source files^^J%
536 !  before continuing to build LaTeX.^^J%
537 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
538 }
539    \errhelp{To avoid this error message, obtain new LaTeX sources.}
540    \errmessage{LaTeX source files more than 5 years old!}
541 \fi
542 \let\reserved@a\relax
543 \fi
544 \everyjob{\typeout{\fmtname
545                                      \space<\fmtversion>}}
546 \immediate\write16{\fmtname
547                                      \space<\fmtversion>}
548 %%% From File: ltdefns.dtx
549 \def\two@digits#1{\ifnum#1<10 0\fi\number#1}
550 \def\typeout#1{\begingroup\set@display@protect
551     \immediate\write\@unused{#1}\endgroup}
552 \newlinechar`\^^J
553 \let\@@par=\par
554 \let\@@hyph=\-        % Save original primitive definition
555 \def\-{\discretionary{-}{}{}}
556 \let\@dischyph=\-
557 \let\@@italiccorr=\/
558 \def\@height{height} \def\@depth{depth} \def\@width{width}
559 \def\@minus{minus}
560 \def\@plus{plus}
561 \def\hb@xt@{\hbox to}
562 \message{hacks,}
563 \def\typein{%
564   \let\@typein\relax
565   \@testopt\@xtypein\@typein}
566 \def\@xtypein[#1]#2{%
567   \typeout{#2}%
568   \advance\endlinechar\@M
569   \read\@inputcheck to#1%
570   \advance\endlinechar-\@M
571   \@typein}
572 \def\@namedef#1{\expandafter\def\csname #1\endcsname}
573 \def\@nameuse#1{\csname #1\endcsname}
574 \def\@cons#1#2{\begingroup\let\@elt\relax\xdef#1{#1\@elt #2}\endgroup}
575 \def\@car#1#2\@nil{#1}
576 \def\@cdr#1#2\@nil{#2}
577 \def\@carcube#1#2#3#4\@nil{#1#2#3}
578 \def\@preamblecmds{}
579 \def\@onlypreamble#1{%
580   \expandafter\gdef\expandafter\@preamblecmds\expandafter{%
581        \@preamblecmds\do#1}}
582 \@onlypreamble\@onlypreamble
583 \@onlypreamble\@preamblecmds
584 \def\@star@or@long#1{%
585   \@ifstar
586    {\let\l@ngrel@x\relax#1}%
587    {\let\l@ngrel@x\long#1}}
588
589 \let\l@ngrel@x\relax
590 \def\newcommand{\@star@or@long\new@command}
591 \def\new@command#1{%
592   \@testopt{\@newcommand#1}0}
593 \def\@newcommand#1[#2]{%
594   \kernel@ifnextchar [{\@xargdef#1[#2]}%
595                 {\@argdef#1[#2]}}
596 \long\def\@argdef#1[#2]#3{%
597    \@ifdefinable #1{\@yargdef#1\@ne{#2}{#3}}}
598 \long\def\@xargdef#1[#2][#3]#4{%
599   \@ifdefinable#1{%
600      \expandafter\def\expandafter#1\expandafter{%
601           \expandafter
602           \@protected@testopt
603           \expandafter
604           #1%
605           \csname\string#1\endcsname
606           {#3}}%
607        \expandafter\@yargdef
608           \csname\string#1\endcsname
609            \tw@
610            {#2}%
611            {#4}}}
612 \long\def\@testopt#1#2{%
613   \kernel@ifnextchar[{#1}{#1[{#2}]}}
614 \def\@protected@testopt#1{%%
615   \ifx\protect\@typeset@protect
616     \expandafter\@testopt
617   \else
618     \@x@protect#1%
619   \fi}
620 \long \def \@yargdef #1#2#3{%
621   \ifx#2\tw@
622     \def\reserved@b##11{[####1]}%
623   \else
624     \let\reserved@b\@gobble
625   \fi
626   \expandafter
627     \@yargd@f \expandafter{\number #3}#1%
628 }
629 \long \def \@yargd@f#1#2{%
630   \def \reserved@a ##1#1##2##{%
631     \expandafter\def\expandafter#2\reserved@b ##1#1%
632     }%
633   \l@ngrel@x \reserved@a 0##1##2##3##4##5##6##7##8##9###1%
634 }
635 \long\def\@reargdef#1[#2]{%
636   \@yargdef#1\@ne{#2}}
637 \def\renewcommand{\@star@or@long\renew@command}
638 \def\renew@command#1{%
639   \begingroup \escapechar\m@ne\xdef\@gtempa{{\string#1}}\endgroup
640   \expandafter\@ifundefined\@gtempa
641      {\@latex@error{\noexpand#1undefined}\@ehc}%
642      \relax
643   \let\@ifdefinable\@rc@ifdefinable
644   \new@command#1}
645 \long\def\@ifdefinable #1#2{%
646       \edef\reserved@a{\expandafter\@gobble\string #1}%
647      \@ifundefined\reserved@a
648          {\edef\reserved@b{\expandafter\@carcube \reserved@a xxx\@nil}%
649           \ifx \reserved@b\@qend \@notdefinable\else
650             \ifx \reserved@a\@qrelax \@notdefinable\else
651               #2%
652             \fi
653           \fi}%
654          \@notdefinable}
655 \let\@@ifdefinable\@ifdefinable
656 \long\def\@rc@ifdefinable#1#2{%
657   \let\@ifdefinable\@@ifdefinable
658   #2}
659 \def\newenvironment{\@star@or@long\new@environment}
660 \def\new@environment#1{%
661   \@testopt{\@newenva#1}0}
662 \def\@newenva#1[#2]{%
663    \kernel@ifnextchar [{\@newenvb#1[#2]}{\@newenv{#1}{[#2]}}}
664 \def\@newenvb#1[#2][#3]{\@newenv{#1}{[#2][{#3}]}}
665 \def\renewenvironment{\@star@or@long\renew@environment}
666 \def\renew@environment#1{%
667   \@ifundefined{#1}%
668      {\@latex@error{Environment #1 undefined}\@ehc
669      }\relax
670   \expandafter\let\csname#1\endcsname\relax
671   \expandafter\let\csname end#1\endcsname\relax
672   \new@environment{#1}}
673 \long\def\@newenv#1#2#3#4{%
674   \@ifundefined{#1}%
675     {\expandafter\let\csname#1\expandafter\endcsname
676                          \csname end#1\endcsname}%
677     \relax
678   \expandafter\new@command
679      \csname #1\endcsname#2{#3}%
680      \l@ngrel@x\expandafter\def\csname end#1\endcsname{#4}}
681 \def\newif#1{%
682   \count@\escapechar \escapechar\m@ne
683     \let#1\iffalse
684     \@if#1\iftrue
685     \@if#1\iffalse
686   \escapechar\count@}
687 \def\@if#1#2{%
688   \expandafter\def\csname\expandafter\@gobbletwo\string#1%
689                     \expandafter\@gobbletwo\string#2\endcsname
690                        {\let#1#2}}
691 \def\providecommand{\@star@or@long\provide@command}
692 \def\provide@command#1{%
693   \begingroup
694     \escapechar\m@ne\xdef\@gtempa{{\string#1}}%
695   \endgroup
696   \expandafter\@ifundefined\@gtempa
697     {\def\reserved@a{\new@command#1}}%
698     {\def\reserved@a{\renew@command\reserved@a}}%
699    \reserved@a}%
700 \def\CheckCommand{\@star@or@long\check@command}
701 \@onlypreamble\CheckCommand
702 \def\check@command#1#2#{\@check@c#1{#2}}
703 \@onlypreamble\check@command
704 \long\def\@check@c#1#2#3{%
705   \expandafter\let\csname\string\reserved@a\endcsname\relax
706   \renew@command\reserved@a#2{#3}%
707   \@ifundefined{\string\reserved@a}%
708    {\@check@eq#1\reserved@a}%
709    {\expandafter\@check@eq
710            \csname\string#1\expandafter\endcsname
711            \csname\string\reserved@a\endcsname}}
712 \@onlypreamble\@check@c
713 \def\@check@eq#1#2{%
714   \ifx#1#2\else
715      \@latex@warning@no@line
716                {Command \noexpand#1 has
717                 changed.\MessageBreak
718                 Check if current package is valid}%
719   \fi}
720 \@onlypreamble\@check@eq
721 \long\def \@gobble #1{}
722 \long\def \@gobbletwo #1#2{}
723 \long\def \@gobblefour #1#2#3#4{}
724 \long\def\@firstofone#1{#1}
725 \long\def\@firstoftwo#1#2{#1}
726 \long\def\@secondoftwo#1#2{#2}
727 \let\@iden\@firstofone
728 \long\def\@thirdofthree#1#2#3{#3}
729 \def\@expandtwoargs#1#2#3{%
730 \edef\reserved@a{\noexpand#1{#2}{#3}}\reserved@a}
731 \edef\@backslashchar{\expandafter\@gobble\string\\}
732 \def\@unexpandable@protect{\noexpand\protect\noexpand}
733 \def\DeclareRobustCommand{\@star@or@long\declare@robustcommand}
734 \def\declare@robustcommand#1{%
735    \ifx#1\@undefined\else\ifx#1\relax\else
736       \@latex@info{Redefining \string#1}%
737    \fi\fi
738    \edef\reserved@a{\string#1}%
739    \def\reserved@b{#1}%
740    \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}%
741    \edef#1{%
742       \ifx\reserved@a\reserved@b
743          \noexpand\x@protect
744          \noexpand#1%
745       \fi
746       \noexpand\protect
747       \expandafter\noexpand\csname
748          \expandafter\@gobble\string#1 \endcsname
749    }%
750    \let\@ifdefinable\@rc@ifdefinable
751    \expandafter\new@command\csname
752       \expandafter\@gobble\string#1 \endcsname
753 }
754 \def\x@protect#1{%
755    \ifx\protect\@typeset@protect\else
756       \@x@protect#1%
757    \fi
758 }
759 \def\@x@protect#1\fi#2#3{%
760    \fi\protect#1%
761 }
762 \let\@typeset@protect\relax
763 \def\set@display@protect{\let\protect\string}
764 \def\set@typeset@protect{\let\protect\@typeset@protect}
765 \def\protected@edef{%
766    \let\@@protect\protect
767    \let\protect\@unexpandable@protect
768    \afterassignment\restore@protect
769    \edef
770 }
771 \def\protected@xdef{%
772    \let\@@protect\protect
773    \let\protect\@unexpandable@protect
774    \afterassignment\restore@protect
775    \xdef
776 }
777 \def\unrestored@protected@xdef{%
778    \let\protect\@unexpandable@protect
779    \xdef
780 }
781 \def\restore@protect{\let\protect\@@protect}
782 \set@typeset@protect
783 \def\@ifundefined#1{%
784   \expandafter\ifx\csname#1\endcsname\relax
785     \expandafter\@firstoftwo
786   \else
787     \expandafter\@secondoftwo
788   \fi}
789 \edef\@qend{\expandafter\@cdr\string\end\@nil}
790 \edef\@qrelax{\expandafter\@cdr\string\relax\@nil}
791 \long\def\@ifnextchar#1#2#3{%
792   \let\reserved@d=#1%
793   \def\reserved@a{#2}%
794   \def\reserved@b{#3}%
795   \futurelet\@let@token\@ifnch}
796 \let\kernel@ifnextchar\@ifnextchar
797 \def\@ifnch{%
798   \ifx\@let@token\@sptoken
799     \let\reserved@c\@xifnch
800   \else
801     \ifx\@let@token\reserved@d
802       \let\reserved@c\reserved@a
803     \else
804       \let\reserved@c\reserved@b
805     \fi
806   \fi
807   \reserved@c}
808 \def\:{\let\@sptoken= } \:  % this makes \@sptoken a space token
809 \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}
810
811 \def\makeatletter{\catcode`\@11\relax}
812 \def\makeatother{\catcode`\@12\relax}
813 \def\@ifstar#1{\@ifnextchar *{\@firstoftwo{#1}}}
814 \long\def\@dblarg#1{\kernel@ifnextchar[{#1}{\@xdblarg{#1}}}
815 \long\def\@xdblarg#1#2{#1[{#2}]{#2}}
816 \def\@sanitize{\@makeother\ \@makeother\\\@makeother\$\@makeother\&%
817 \@makeother\#\@makeother\^\@makeother\_\@makeother\%\@makeother\~}
818 \def \@onelevel@sanitize #1{%
819   \edef #1{\expandafter\strip@prefix
820            \meaning #1}%
821 }
822 %%% From File: ltalloc.dtx
823 \chardef\@xxxii=32
824 \mathchardef\@Mi=10001
825 \mathchardef\@Mii=10002
826 \mathchardef\@Miii=10003
827 \mathchardef\@Miv=10004
828 \newcount\@tempcnta
829 \newcount\@tempcntb
830 \newif\if@tempswa
831 \newdimen\@tempdima
832 \newdimen\@tempdimb
833 \newdimen\@tempdimc
834 \newbox\@tempboxa
835 \newskip\@tempskipa
836 \newskip\@tempskipb
837 \newtoks\@temptokena
838 \newskip\@flushglue \@flushglue = 0pt plus 1fil
839 %%% From File: ltcntrl.dtx
840 \message{control,}
841 \long\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax
842      #2\relax}\fi}
843 \long\def\@iwhilenum#1{\ifnum #1\expandafter\@iwhilenum
844          \else\expandafter\@gobble\fi{#1}}
845 \long\def\@whiledim#1\do #2{\ifdim #1\relax#2\@iwhiledim{#1\relax#2}\fi}
846 \long\def\@iwhiledim#1{\ifdim #1\expandafter\@iwhiledim
847         \else\expandafter\@gobble\fi{#1}}
848 \long\def\@whilesw#1\fi#2{#1#2\@iwhilesw{#1#2}\fi\fi}
849 \long\def\@iwhilesw#1\fi{#1\expandafter\@iwhilesw
850          \else\@gobbletwo\fi{#1}\fi}
851 \def\@nnil{\@nil}
852 \def\@empty{}
853 \def\@fornoop#1\@@#2#3{}
854 \long\def\@for#1:=#2\do#3{%
855   \expandafter\def\expandafter\@fortmp\expandafter{#2}%
856   \ifx\@fortmp\@empty \else
857     \expandafter\@forloop#2,\@nil,\@nil\@@#1{#3}\fi}
858 \long\def\@forloop#1,#2,#3\@@#4#5{\def#4{#1}\ifx #4\@nnil \else
859        #5\def#4{#2}\ifx #4\@nnil \else#5\@iforloop #3\@@#4{#5}\fi\fi}
860 \long\def\@iforloop#1,#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
861        \expandafter\@fornoop \else
862       #4\relax\expandafter\@iforloop\fi#2\@@#3{#4}}
863 \def\@tfor#1:={\@tf@r#1 }
864 \long\def\@tf@r#1#2\do#3{\def\@fortmp{#2}\ifx\@fortmp\space\else
865     \@tforloop#2\@nil\@nil\@@#1{#3}\fi}
866 \long\def\@tforloop#1#2\@@#3#4{\def#3{#1}\ifx #3\@nnil
867        \expandafter\@fornoop \else
868       #4\relax\expandafter\@tforloop\fi#2\@@#3{#4}}
869 \long\def\@break@tfor#1\@@#2#3{\fi\fi}
870 \def\@removeelement#1#2#3{%
871   \def\reserved@a##1,#1,##2\reserved@a{##1,##2\reserved@b}%
872   \def\reserved@b##1,\reserved@b##2\reserved@b{%
873     \ifx,##1\@empty\else##1\fi}%
874   \edef#3{%
875     \expandafter\reserved@b\reserved@a,#2,\reserved@b,#1,\reserved@a}}
876 %%% From File: lterror.dtx
877 \expandafter\let\csname ver@autoerr.sty\endcsname\fmtversion
878 \let\MessageBreak\relax
879 \DeclareRobustCommand{\GenericInfo}[2]{%
880    \begingroup
881       \def\MessageBreak{^^J#1}%
882       \set@display@protect
883       \immediate\write\m@ne{#2\on@line.}%
884    \endgroup
885 }
886 \DeclareRobustCommand{\GenericWarning}[2]{%
887    \begingroup
888       \def\MessageBreak{^^J#1}%
889       \set@display@protect
890       \immediate\write\@unused{^^J#2\on@line.^^J}%
891    \endgroup
892 }
893 \bgroup
894 \lccode`\@=`\ %
895 \lccode`\~=`\ %
896 \lccode`\}=`\ %
897 \lccode`\{=`\ %
898 \lccode`\T=`\T%
899 \lccode`\H=`\H%
900 \catcode`\ =11\relax%
901 \lowercase{%
902 \egroup%
903 \dimen@\ifx\@TeXversion\@undefined4\else\@TeXversion\fi\p@%
904 \ifdim\dimen@>3.14\p@%
905 \DeclareRobustCommand{\GenericError}[4]{%
906 \begingroup%
907 \immediate\write\@unused{}%
908 \def\MessageBreak{^^J}%
909 \set@display@protect%
910 \edef%
911 \@err@                                                                 %
912 {{#4}}%
913 \errhelp
914 \@err@                                                                 %
915 \let
916 \@err@                                                                 %
917 \@empty
918 \def\MessageBreak{^^J#1}%
919 \def~{\errmessage{%
920 #2.^^J^^J%
921 #3^^J%
922 Type  H <return>  for immediate help%
923 \@err@                                                                 %
924 }}%
925 ~%
926 \endgroup}%
927 \else%
928 \DeclareRobustCommand{\GenericError}[4]{%
929 \begingroup%
930 \immediate\write\@unused{}%
931 \def\MessageBreak{^^J}%
932 \set@display@protect%
933 \edef%
934 \@err@                                                                 %
935 {{#4}}%
936 \errhelp
937 \@err@                                                                 %
938 \let
939 \@err@                                                                 %
940 \errmessage
941 \def\MessageBreak{^^J#1}%
942 \def~{\typeout{! %
943 #2.^^J^^J%
944 #3^^J%
945 Type  H <return>  for immediate help.}%
946 \@err@                                                                 %
947 {}}%
948 ~%
949 \endgroup}%
950 \fi}%
951 \gdef\PackageError#1#2#3{%
952    \GenericError{%
953       (#1)\@spaces\@spaces\@spaces\@spaces
954    }{%
955       Package #1 Error: #2%
956    }{%
957       See the #1 package documentation for explanation.%
958    }{#3}%
959 }
960 \def\PackageWarning#1#2{%
961    \GenericWarning{%
962       (#1)\@spaces\@spaces\@spaces\@spaces
963    }{%
964       Package #1 Warning: #2%
965    }%
966 }
967 \def\PackageWarningNoLine#1#2{%
968    \PackageWarning{#1}{#2\@gobble}%
969 }
970 \def\PackageInfo#1#2{%
971    \GenericInfo{%
972       (#1) \@spaces\@spaces\@spaces
973    }{%
974       Package #1 Info: #2%
975    }%
976 }
977 \gdef\ClassError#1#2#3{%
978    \GenericError{%
979       (#1) \space\@spaces\@spaces\@spaces
980    }{%
981       Class #1 Error: #2%
982    }{%
983       See the #1 class documentation for explanation.%
984    }{#3}%
985 }
986 \def\ClassWarning#1#2{%
987    \GenericWarning{%
988       (#1) \space\@spaces\@spaces\@spaces
989    }{%
990       Class #1 Warning: #2%
991    }%
992 }
993 \def\ClassWarningNoLine#1#2{%
994    \ClassWarning{#1}{#2\@gobble}%
995 }
996 \def\ClassInfo#1#2{%
997    \GenericInfo{%
998       (#1) \space\space\@spaces\@spaces
999    }{%
1000       Class #1 Info: #2%
1001    }%
1002 }
1003 \gdef\@latex@error#1#2{%
1004    \GenericError{%
1005       \space\space\space\@spaces\@spaces\@spaces
1006    }{%
1007       LaTeX Error: #1%
1008    }{%
1009       See the LaTeX manual or LaTeX Companion for explanation.%
1010    }{#2}%
1011 }
1012 \def\@latex@warning#1{%
1013    \GenericWarning{%
1014       \space\space\space\@spaces\@spaces\@spaces
1015    }{%
1016       LaTeX Warning: #1%
1017    }%
1018 }
1019 \def\@latex@warning@no@line#1{%
1020    \@latex@warning{#1\@gobble}}
1021 \def\@latex@info#1{%
1022    \GenericInfo{%
1023       \@spaces\@spaces\@spaces
1024    }{%
1025       LaTeX Info: #1%
1026    }%
1027 }
1028 \def\@latex@info@no@line#1{%
1029   \@latex@info{#1\@gobble}}
1030 \let\c@errorcontextlines\errorcontextlines
1031 \c@errorcontextlines=-1
1032 \ifnum\inputlineno=\m@ne
1033   \let\on@line\@empty
1034 \else
1035   \def\on@line{ on input line \the\inputlineno}
1036 \fi
1037 \let\@warning\@latex@warning
1038 \let\@@warning\@latex@warning@no@line
1039 \global\let\@latexerr\@latex@error
1040 \def\@spaces{\space\space\space\space}
1041 \gdef\@eha{%
1042   Your command was ignored.\MessageBreak
1043   Type \space I <command> <return> \space to replace it %
1044   with another command,\MessageBreak
1045   or \space <return> \space to continue without it.}
1046 \gdef\@ehb{%
1047   You've lost some text. \space \@ehc}
1048 \gdef\@ehc{%
1049   Try typing \space <return> %
1050   \space to proceed.\MessageBreak
1051   If that doesn't work, type \space X <return> \space to quit.}
1052 \gdef\@ehd{%
1053   You're in trouble here.  \space\@ehc}
1054 \gdef\@notdefinable{%
1055  \@latex@error{%
1056    Command \@backslashchar\reserved@a\space
1057    already defined.\MessageBreak
1058    Or name \@backslashchar\@qend... illegal,
1059    see p.192 of the manual}\@eha}
1060 \gdef\@nolnerr{%
1061   \@latex@error{There's no line here to end}\@eha}
1062 \gdef\@nocounterr#1{%
1063   \@latex@error{No counter '#1' defined}\@eha}
1064 \gdef\@nocnterr{\@nocounterr?}
1065 \gdef\@ctrerr{%
1066   \@latex@error{Counter too large}\@ehb}
1067 \gdef\@nodocument{%
1068   \@latex@error{Missing \protect\begin{document}}\@ehd}
1069 \gdef\@badend#1{%
1070   \@latex@error{\protect\begin{\@currenvir}\@currenvline
1071                      \space ended by \protect\end{#1}}\@eha}
1072 \gdef\@badmath{%
1073   \@latex@error{Bad math environment delimiter}\@eha}
1074 \gdef\@toodeep{%
1075   \@latex@error{Too deeply nested}\@ehd}
1076 \gdef\@badpoptabs{%
1077   \@latex@error{\protect\pushtabs\space and \protect\poptabs
1078       \space don't match}\@ehd}
1079 \gdef\@badtab{%
1080  \@latex@error{Undefined tab position}\@ehd}
1081 \gdef\@preamerr#1{%
1082   \begingroup
1083     \let\protect\relax
1084     \@latex@error{\ifcase #1 Illegal character\or
1085      Missing @-exp\or Missing p-arg\fi\space
1086      in array arg}\@ehd
1087   \endgroup}
1088 \gdef\@badlinearg{%
1089   \@latex@error{%
1090        Bad \protect\line\space or \protect\vector
1091        \space argument}\@ehb}
1092 \gdef\@parmoderr{%
1093   \@latex@error{Not in outer par mode}\@ehb}
1094 \gdef\@fltovf{%
1095   \@latex@error{Too many unprocessed floats}\@ehb}
1096 \gdef\@latexbug{%
1097   \@latex@error{This may be a LaTeX bug}{Call for help}}
1098 \gdef\@noitemerr{%
1099   \@latex@error{Something's wrong--perhaps a missing %
1100       \protect\item}\@ehc}
1101 \gdef\@notprerr{%
1102   \@latex@error{Can be used only in preamble}\@eha}
1103 \gdef\@inmatherr#1{%
1104    \relax
1105    \ifmmode
1106  \@latex@error{Command \protect#1 invalid in math mode}\@ehc
1107    \fi}
1108 %%% From File: ltpar.dtx
1109 \message{par,}
1110 \def\@setpar#1{\def\par{#1}\def\@par{#1}}
1111 \def\@par{\let\par\@@par\par}
1112 \def\@restorepar{\def\par{\@par}}
1113 %%% From File: ltspace.dtx
1114 \message{spacing,}
1115 \def\pagebreak{\@testopt{\@no@pgbk-}4}
1116 \def\nopagebreak{\@testopt\@no@pgbk4}
1117 \def\@no@pgbk #1[#2]{%
1118   \ifvmode
1119     \penalty #1\@getpen{#2}%
1120   \else
1121     \@bsphack
1122     \vadjust{\penalty #1\@getpen{#2}}%
1123     \@esphack
1124   \fi}
1125 \def\linebreak{\@testopt{\@no@lnbk-}4}
1126 \def\nolinebreak{\@testopt\@no@lnbk4}
1127 \def\@no@lnbk #1[#2]{%
1128   \ifvmode
1129     \@nolnerr
1130   \else
1131     \@tempskipa\lastskip
1132     \unskip
1133     \penalty #1\@getpen{#2}%
1134     \ifdim\@tempskipa>\z@
1135       \hskip\@tempskipa
1136       \ignorespaces
1137     \fi
1138   \fi}
1139 \def\samepage{\interlinepenalty\@M
1140    \postdisplaypenalty\@M
1141    \interdisplaylinepenalty\@M
1142    \@beginparpenalty\@M
1143    \@endparpenalty\@M
1144    \@itempenalty\@M
1145    \@secpenalty\@M
1146    \interfootnotelinepenalty\@M}
1147 \DeclareRobustCommand\\{%
1148   \let \reserved@e \relax
1149   \let \reserved@f \relax
1150   \@ifstar{\let \reserved@e \vadjust \let \reserved@f \nobreak
1151              \@xnewline}%
1152           \@xnewline}
1153 \expandafter\let\expandafter\@normalcr
1154      \csname\expandafter\@gobble\string\\ \endcsname
1155 \DeclareRobustCommand\newline{\@normalcr\relax}
1156 \def\@xnewline{\@ifnextchar[% ] bracket matching
1157                   \@newline
1158                  {\@gnewline\relax}}
1159 \def\@newline[#1]{\let \reserved@e \vadjust
1160                    \@gnewline {\vskip #1}}
1161 \def\@gnewline #1{%
1162   \ifvmode
1163     \@nolnerr
1164   \else
1165     \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break
1166   \fi}
1167 \def\@getpen#1{\ifcase #1 \z@ \or \@lowpenalty\or
1168          \@medpenalty \or \@highpenalty
1169          \else \@M \fi}
1170 \def\@nobreakfalse{\global\let\if@nobreak\iffalse}
1171 \def\@nobreaktrue {\global\let\if@nobreak\iftrue}
1172 \@nobreakfalse
1173 \newdimen\@savsk
1174 \newcount\@savsf
1175 \def\@bsphack{%
1176   \relax
1177   \ifhmode
1178     \@savsk\lastskip
1179     \@savsf\spacefactor
1180   \fi}
1181 \def\@esphack{%
1182   \relax
1183   \ifhmode
1184     \spacefactor\@savsf
1185     \ifdim\@savsk>\z@
1186       \ignorespaces
1187     \fi
1188   \fi}
1189 \def\@Esphack{%
1190   \relax
1191   \ifhmode
1192     \spacefactor\@savsf
1193     \ifdim\@savsk>\z@
1194       \@ignoretrue
1195       \ignorespaces
1196     \fi
1197    \fi}
1198 \def\@xaddvskip{%
1199   \ifdim\lastskip<\@tempskipb
1200     \vskip-\lastskip
1201     \vskip\@tempskipb
1202   \else
1203     \ifdim\@tempskipb<\z@
1204       \ifdim\lastskip<\z@
1205       \else
1206         \advance\@tempskipb\lastskip
1207         \vskip-\lastskip
1208         \vskip \@tempskipb
1209       \fi
1210     \fi
1211   \fi}
1212 \def\addvspace#1{%
1213   \ifvmode
1214      \if@minipage\else
1215        \ifdim \lastskip =\z@
1216          \vskip #1\relax
1217        \else
1218        \@tempskipb#1\relax
1219          \@xaddvskip
1220        \fi
1221      \fi
1222   \else
1223     \@noitemerr
1224   \fi}
1225 \def\addpenalty#1{%
1226   \ifvmode
1227     \if@minipage
1228     \else
1229       \if@nobreak
1230       \else
1231         \ifdim\lastskip=\z@
1232           \penalty#1\relax
1233         \else
1234           \@tempskipb\lastskip
1235           \vskip -\lastskip
1236           \penalty#1%
1237           \vskip\@tempskipb
1238         \fi
1239       \fi
1240     \fi
1241   \else
1242     \@noitemerr
1243   \fi}
1244 \DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}
1245 \def\@vspace #1{%
1246   \ifvmode
1247     \vskip #1
1248     \vskip\z@skip
1249    \else
1250      \@bsphack
1251      \vadjust{\@restorepar
1252               \vskip #1
1253               \vskip\z@skip
1254               }%
1255      \@esphack
1256    \fi}
1257 \def\@vspacer#1{%
1258   \ifvmode
1259     \dimen@\prevdepth
1260     \hrule \@height\z@
1261     \nobreak
1262     \vskip #1
1263     \vskip\z@skip
1264     \prevdepth\dimen@
1265   \else
1266     \@bsphack
1267     \vadjust{\@restorepar
1268              \hrule \@height\z@
1269              \nobreak
1270              \vskip #1
1271              \vskip\z@skip}%
1272     \@esphack
1273   \fi}
1274 \def\smallskip{\vspace\smallskipamount}
1275 \def\medskip{\vspace\medskipamount}
1276 \def\bigskip{\vspace\bigskipamount}
1277 \newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt
1278 \newskip\medskipamount   \medskipamount  =6pt plus 2pt minus 2pt
1279 \newskip\bigskipamount   \bigskipamount =12pt plus 4pt minus 4pt
1280 \DeclareRobustCommand{\nobreakdashes}{%
1281   \leavevmode
1282   \toks@{}%
1283   \def\reserved@a##1{\toks@\expandafter{\the\toks@-}%
1284                      \futurelet\@let@token \reserved@b}%
1285   \def\reserved@b   {\ifx\@let@token -%
1286                         \expandafter\reserved@a
1287                      \else
1288                        \setbox\z@ \hbox{\the\toks@\nobreak}%
1289                        \unhbox\z@
1290                        \spacefactor\sfcode`\-
1291                      \fi}%
1292   \futurelet\@let@token \reserved@b
1293 }
1294 \DeclareRobustCommand{\nobreakspace}{%
1295    \leavevmode\nobreak\ }
1296 \catcode `\~=13
1297 \def~{\nobreakspace{}}
1298 \expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname
1299 \DeclareRobustCommand{\,}{%
1300    \relax\ifmmode\mskip\thinmuskip\else\thinspace\fi
1301 }
1302 \def\@{\spacefactor\@m}
1303 \DeclareRobustCommand\hspace{\@ifstar\@hspacer\@hspace}
1304 \def\@hspace#1{\hskip #1\relax}
1305 \def\@hspacer#1{\vrule \@width\z@\nobreak
1306                 \hskip #1\hskip \z@skip}
1307 \newskip\fill
1308 \fill = 0pt plus 1fill
1309 \def\stretch#1{\z@ \@plus #1fill\relax}
1310 \def\thinspace{\kern .16667em }
1311 \def\negthinspace{\kern-.16667em }
1312 \def\enspace{\kern.5em }
1313 \def\enskip{\hskip.5em\relax}
1314 \def\quad{\hskip1em\relax}
1315 \def\qquad{\hskip2em\relax}
1316 {\catcode`\^^M=13 \gdef\obeycr{\catcode`\^^M13 \def^^M{\\\relax}%
1317     \@gobblecr}%
1318 {\catcode`\^^M=13 \gdef\@gobblecr{\@ifnextchar
1319 \@gobble\ignorespaces}}
1320 \gdef\restorecr{\catcode`\^^M5 }}
1321 %%% From File: ltlogos.dtx
1322 \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX\@}
1323 \DeclareRobustCommand{\LaTeX}{L\kern-.36em%
1324         {\sbox\z@ T%
1325          \vbox to\ht\z@{\hbox{\check@mathfonts
1326                               \fontsize\sf@size\z@
1327                               \math@fontsfalse\selectfont
1328                               A}%
1329                         \vss}%
1330         }%
1331         \kern-.15em%
1332         \TeX}
1333 \DeclareRobustCommand{\LaTeXe}{\mbox{\m@th
1334   \if b\expandafter\@car\f@series\@nil\boldmath\fi
1335   \LaTeX\kern.15em2$_{\textstyle\varepsilon}$}}
1336 %%% From File: ltfiles.dtx
1337 \message{files,}
1338 \newread\@inputcheck
1339 \newwrite\@unused
1340 \newwrite\@mainaux
1341 \newwrite\@partaux
1342 \newif\if@filesw \@fileswtrue
1343 \newif\if@partsw \@partswfalse
1344 \newcount\@clubpenalty
1345 \@clubpenalty \clubpenalty
1346 \def\document{\endgroup
1347   \ifx\@unusedoptionlist\@empty\else
1348     \@latex@warning@no@line{Unused global option(s):^^J%
1349             \@spaces[\@unusedoptionlist]}%
1350   \fi
1351   \@colht\textheight
1352   \@colroom\textheight \vsize\textheight
1353   \columnwidth\textwidth
1354   \@clubpenalty\clubpenalty
1355   \if@twocolumn
1356     \advance\columnwidth -\columnsep
1357     \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
1358   \fi
1359   \hsize\columnwidth \linewidth\hsize
1360   \begingroup\@floatplacement\@dblfloatplacement
1361     \makeatletter\let\@writefile\@gobbletwo
1362     \global \let \@multiplelabels \relax
1363     \@input{\jobname.aux}%
1364   \endgroup
1365   \if@filesw
1366     \immediate\openout\@mainaux\jobname.aux
1367     \immediate\write\@mainaux{\relax}%
1368   \fi
1369   \process@table
1370   \let\glb@currsize\@empty  %% Force math initialization.
1371   \normalsize
1372   \everypar{}%
1373   \ifx\normalsfcodes\@empty
1374     \ifnum\sfcode`\.=\@m
1375       \let\normalsfcodes\frenchspacing
1376     \else
1377       \let\normalsfcodes\nonfrenchspacing
1378     \fi
1379   \fi
1380   \@noskipsecfalse
1381   \let \@refundefined \relax
1382   \let\AtBeginDocument\@firstofone
1383   \@begindocumenthook
1384   \ifdim\topskip<1sp\global\topskip 1sp\relax\fi
1385   \global\@maxdepth\maxdepth
1386   \global\let\@begindocumenthook\@undefined
1387   \ifx\@listfiles\@undefined
1388     \global\let\@filelist\relax
1389     \global\let\@addtofilelist\@gobble
1390   \fi
1391   \gdef\do##1{\global\let ##1\@notprerr}%
1392   \@preamblecmds
1393   \global\let \@nodocument \relax
1394   \global\let\do\noexpand
1395   \ignorespaces}
1396 \@onlypreamble\document
1397 \let\normalsfcodes\@empty
1398 \def\nofiles{%
1399   \@fileswfalse
1400   \typeout{No auxiliary output files.^^J}%
1401   \long\def\protected@write##1##2##3%
1402     {\write\m@ne{}\if@nobreak\ifvmode\nobreak\fi\fi}%
1403   \let\makeindex\relax
1404   \let\makeglossary\relax}
1405 \@onlypreamble\nofiles
1406 \long\def \protected@write#1#2#3{%
1407       \begingroup
1408        \let\thepage\relax
1409        #2%
1410        \let\protect\@unexpandable@protect
1411        \edef\reserved@a{\write#1{#3}}%
1412        \reserved@a
1413       \endgroup
1414       \if@nobreak\ifvmode\nobreak\fi\fi
1415 }
1416 \let\@auxout=\@mainaux
1417 \def\includeonly#1{%
1418   \@partswtrue
1419   \edef\@partlist{\zap@space#1 \@empty}}
1420 \@onlypreamble\includeonly
1421 \def\include#1{\relax
1422   \ifnum\@auxout=\@partaux
1423     \@latex@error{\string\include\space cannot be nested}\@eha
1424   \else \@include#1 \fi}
1425 \def\@include#1 {%
1426   \clearpage
1427   \if@filesw
1428     \immediate\write\@mainaux{\string\@input{#1.aux}}%
1429   \fi
1430   \@tempswatrue
1431   \if@partsw
1432     \@tempswafalse
1433     \edef\reserved@b{#1}%
1434     \@for\reserved@a:=\@partlist\do
1435       {\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
1436   \fi
1437   \if@tempswa
1438     \let\@auxout\@partaux
1439     \if@filesw
1440       \immediate\openout\@partaux #1.aux
1441       \immediate\write\@partaux{\relax}%
1442     \fi
1443     \@input@{#1.tex}%
1444     \clearpage
1445     \@writeckpt{#1}%
1446     \if@filesw
1447       \immediate\closeout\@partaux
1448     \fi
1449   \else
1450     \deadcycles\z@
1451     \@nameuse{cp@#1}%
1452   \fi
1453   \let\@auxout\@mainaux}
1454 \def\@writeckpt#1{%
1455   \if@filesw
1456     \immediate\write\@partaux{\string\@setckpt{#1}\@charlb}%
1457     {\let\@elt\@wckptelt \cl@@ckpt}%
1458     \immediate\write\@partaux{\@charrb}%
1459   \fi}
1460 \def\@wckptelt#1{%
1461   \immediate\write\@partaux{%
1462     \string\setcounter{#1}{\the\@nameuse{c@#1}}}}
1463 \def\@setckpt#1{\global\@namedef{cp@#1}}
1464 {\catcode`[=1 \catcode`]=2
1465 \catcode`{=11 \catcode`}=11
1466 \gdef\@charlb[{]
1467 \gdef\@charrb[}]
1468 ]% }brace matching
1469 \long\def \IfFileExists#1#2#3{%
1470   \openin\@inputcheck#1 %
1471   \ifeof\@inputcheck
1472     \ifx\input@path\@undefined
1473       \def\reserved@a{#3}%
1474     \else
1475       \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}%
1476     \fi
1477   \else
1478     \closein\@inputcheck
1479     \edef\@filef@und{#1 }%
1480     \def\reserved@a{#2}%
1481   \fi
1482   \reserved@a}
1483 \long\def\@iffileonpath#1{%
1484   \let\reserved@a\@secondoftwo
1485   \expandafter\@tfor\expandafter\reserved@b\expandafter
1486              :\expandafter=\input@path\do{%
1487     \openin\@inputcheck\reserved@b#1 %
1488     \ifeof\@inputcheck\else
1489       \edef\@filef@und{\reserved@b#1 }%
1490       \let\reserved@a\@firstoftwo%
1491       \closein\@inputcheck
1492       \@break@tfor
1493     \fi}%
1494   \reserved@a}
1495 \long\def \InputIfFileExists#1#2{%
1496   \IfFileExists{#1}%
1497     {#2\@addtofilelist{#1}\@@input \@filef@und}}
1498 \def\input{\@ifnextchar\bgroup\@iinput\@@input}
1499 \def\@iinput#1{%
1500   \InputIfFileExists{#1}{}%
1501   {\filename@parse{#1}%
1502    \edef\reserved@a{\noexpand\@missingfileerror
1503      {\filename@area\filename@base}%
1504      {\ifx\filename@ext\relax tex\else\filename@ext\fi}}%
1505    \reserved@a}}
1506 \def\@input#1{%
1507   \IfFileExists{#1}{\@@input\@filef@und}{\typeout{No file #1.}}}
1508 \def\@input@#1{\InputIfFileExists{#1}{}{\typeout{No file #1.}}}
1509 \gdef\@missingfileerror#1#2{%
1510      \typeout{^^J! LaTeX Error: File `#1.#2' not found.^^J^^J%
1511       Type X to quit or <RETURN> to proceed,^^J%
1512       or enter new name. (Default extension: #2)^^J}%
1513      \message{Enter file name: }%
1514       {\endlinechar\m@ne
1515        \global\read\m@ne to\@gtempa}%
1516     \ifx\@gtempa\@empty
1517     \else
1518       \def\reserved@a{x}\ifx\reserved@a\@gtempa\batchmode\@@end\fi
1519       \def\reserved@a{X}\ifx\reserved@a\@gtempa\batchmode\@@end\fi
1520       \filename@parse\@gtempa
1521       \edef\filename@ext{%
1522         \ifx\filename@ext\relax#2\else\filename@ext\fi}%
1523      \edef\reserved@a{%
1524        \noexpand\InputIfFileExists
1525          {\filename@area\filename@base.\filename@ext}%
1526          {}%
1527          {\noexpand\@missingfileerror
1528             {\filename@area\filename@base}{\filename@ext}}}%
1529       \reserved@a
1530     \fi}
1531 \def\@obsoletefile#1#2{%
1532    \@latex@warning@no@line{inputting `#1' instead of obsolete `#2'}}
1533 \@onlypreamble\@obsoletefile
1534 \let\@filelist\@gobble
1535 \def\listfiles{%
1536   \let\listfiles\relax
1537   \def\@listfiles##1##2##3##4##5##6##7##8##9\@@{%
1538      \def\reserved@d{\\}%
1539      \@tfor\reserved@c:=##1##2##3##4##5##6##7##8\do{%
1540        \ifx\reserved@c\reserved@d
1541          \edef\filename@area{ \filename@area}%
1542        \fi}}%
1543   \def\@dofilelist{%
1544      \typeout{^^J *File List*}%
1545      \@for\@currname:=\@filelist\do{%
1546        \filename@parse\@currname
1547        \edef\reserved@a{%
1548           \filename@base.%
1549           \ifx\filename@ext\relax tex\else\filename@ext\fi}%
1550        \expandafter\let\expandafter\reserved@b
1551                               \csname ver@\reserved@a\endcsname
1552        \expandafter\expandafter\expandafter\@listfiles\expandafter
1553              \filename@area\filename@base\\\\\\\\\\\\\\\\\\\@@
1554        \typeout{%
1555          \filename@area\reserved@a
1556          \ifx\reserved@b\relax\else\@spaces\reserved@b\fi}}%
1557      \typeout{ ***********^^J}}}
1558 \@onlypreamble\listfiles
1559 \let\@dofilelist\relax
1560 %%% From File: ltoutenc.dtx
1561 \message{font encodings,}
1562 \def\DeclareTextCommand{%
1563    \@dec@text@cmd\newcommand}
1564 \def\ProvideTextCommand{%
1565    \@dec@text@cmd\providecommand}
1566 \def\@dec@text@cmd#1#2#3{%
1567    \expandafter\def\expandafter#2%
1568       \expandafter{%
1569          \csname#3-cmd\expandafter\endcsname
1570          \expandafter#2%
1571          \csname#3\string#2\endcsname
1572       }%
1573    \let\@ifdefinable\@rc@ifdefinable
1574    \expandafter#1\csname#3\string#2\endcsname}
1575 \def\chardef@text@cmd{%
1576    \let\@ifdefinable\@@ifdefinable
1577    \chardef
1578   }
1579 \def\DeclareTextSymbol#1#2#3{%
1580    \@dec@text@cmd\chardef@text@cmd#1{#2}#3\relax
1581   }
1582 \@onlypreamble\DeclareTextCommand
1583 \@onlypreamble\DeclareTextSymbol
1584 \def\@current@cmd#1{%
1585    \ifx\protect\@typeset@protect
1586       \@inmathwarn#1%
1587    \else
1588       \noexpand#1\expandafter\@gobble
1589    \fi}
1590 \def\@changed@cmd#1#2{%
1591    \ifx\protect\@typeset@protect
1592       \@inmathwarn#1%
1593       \expandafter\ifx\csname\cf@encoding\string#1\endcsname\relax
1594          \expandafter\ifx\csname ?\string#1\endcsname\relax
1595             \expandafter\def\csname ?\string#1\endcsname{%
1596                \TextSymbolUnavailable#1%
1597             }%
1598          \fi
1599          \global\expandafter\let
1600                \csname\cf@encoding \string#1\expandafter\endcsname
1601                \csname ?\string#1\endcsname
1602       \fi
1603       \csname\cf@encoding\string#1%
1604          \expandafter\endcsname
1605    \else
1606       \noexpand#1%
1607    \fi}
1608 \gdef\TextSymbolUnavailable#1{%
1609    \@latex@error{%
1610       Command \protect#1 unavailable in encoding \cf@encoding%
1611    }\@eha}
1612 \def\@inmathwarn#1{%
1613    \ifmmode
1614       \@latex@warning{Command \protect#1 invalid in math mode}%
1615    \fi}
1616 \def\DeclareTextCommandDefault#1{%
1617    \DeclareTextCommand#1?}
1618 \def\ProvideTextCommandDefault#1{%
1619    \ProvideTextCommand#1?}
1620 \@onlypreamble\DeclareTextCommandDefault
1621 \expandafter\let\csname?-cmd\endcsname\@changed@cmd
1622 \def\DeclareTextAccent#1#2#3{%
1623    \DeclareTextCommand#1{#2}{\add@accent{#3}}}
1624 \@onlypreamble\DeclareTextAccent
1625 \def\add@accent#1#2{\hmode@bgroup
1626    \let\hmode@start@before@group\@firstofone
1627    \setbox\@tempboxa\hbox{#2%
1628       \global\mathchardef\accent@spacefactor\spacefactor}%
1629    \accent#1 #2\egroup\spacefactor\accent@spacefactor}
1630 \let\accent@spacefactor\relax
1631 \def\hmode@bgroup{\leavevmode\bgroup}
1632 \def\DeclareTextCompositeCommand#1#2#3#4{%
1633   \expandafter\let\expandafter\reserved@a\csname#2\string#1\endcsname
1634   \expandafter\expandafter\expandafter\ifx
1635   \expandafter\@car\reserved@a\relax\relax\@nil \@text@composite \else
1636       \edef\reserved@b##1{%
1637          \def\expandafter\noexpand
1638             \csname#2\string#1\endcsname####1{%
1639             \noexpand\@text@composite
1640                \expandafter\noexpand\csname#2\string#1\endcsname
1641                ####1\noexpand\@empty\noexpand\@text@composite
1642                {##1}}}%
1643       \expandafter\reserved@b\expandafter{\reserved@a{##1}}%
1644    \fi
1645    \expandafter\def\csname\expandafter\string\csname
1646       #2\endcsname\string#1-\string#3\endcsname{#4}}
1647 \@onlypreamble\DeclareTextCompositeCommand
1648 \def\@text@composite#1#2#3\@text@composite{%
1649    \expandafter\@text@composite@x
1650       \csname\string#1-\string#2\endcsname}
1651 \def\@text@composite@x#1{%
1652    \ifx#1\relax
1653       \expandafter\@secondoftwo
1654    \else
1655       \expandafter\@firstoftwo
1656    \fi
1657    #1}
1658 \catcode\z@=11\relax
1659 \def\DeclareTextComposite#1#2#3#4{%
1660    \def\reserved@a{\DeclareTextCompositeCommand#1{#2}{#3}}%
1661    \bgroup
1662       \lccode\z@#4%
1663       \lowercase{%
1664    \egroup
1665       \reserved@a ^^@}}
1666 \catcode\z@=15\relax
1667 \@onlypreamble\DeclareTextComposite
1668 \def\UseTextAccent#1#2#3{%
1669   \hmode@start@before@group
1670    {%
1671     \let\hmode@start@before@group\@firstofone
1672     \let\@curr@enc\cf@encoding
1673     \@use@text@encoding{#1}%
1674     #2{\@use@text@encoding\@curr@enc#3}%
1675    }}
1676 \def\UseTextSymbol#1#2{%
1677        \hmode@start@before@group
1678        {%
1679           \def\@wrong@font@char{\MessageBreak
1680              for \noexpand\symbol`\string#2'}%
1681           \@use@text@encoding{#1}%
1682           #2%
1683        }%
1684     }
1685 \def\@use@text@encoding#1{%
1686    \edef\f@encoding{#1}%
1687    \xdef\font@name{%
1688       \csname\curr@fontshape/\f@size\endcsname}%
1689    \pickup@font
1690    \font@name
1691    \@@enc@update}
1692 \let\hmode@start@before@group\leavevmode
1693 \def\DeclareTextSymbolDefault#1#2{%
1694    \DeclareTextCommandDefault#1{\UseTextSymbol{#2}#1}}
1695 \def\DeclareTextAccentDefault#1#2{%
1696    \DeclareTextCommandDefault#1{\UseTextAccent{#2}#1}}
1697 \@onlypreamble\DeclareTextSymbolDefault
1698 \@onlypreamble\DeclareTextAccentDefault
1699 \def\UndeclareTextCommand#1#2{%
1700   \expandafter\ifx\csname#2\string#1\endcsname\relax
1701   \else
1702      \global\expandafter\let\csname#2\string#1\endcsname
1703             \@undefined
1704      \expandafter\expandafter\expandafter
1705      \ifx\expandafter\@thirdofthree#1\@undefined
1706        \expandafter\gdef\expandafter#1\expandafter
1707           {\csname ?-cmd\expandafter\endcsname\expandafter
1708            #1\csname?\string#1\endcsname}%
1709      \fi
1710  \fi
1711 }
1712 \@onlypreamble\UndeclareTextCommand
1713 \def\@tabacckludge#1{\expandafter\@changed@cmd
1714                                  \csname\string#1\endcsname\relax}
1715 \let\a=\@tabacckludge
1716 \DeclareTextAccentDefault{\"}{OT1}
1717 \DeclareTextAccentDefault{\'}{OT1}
1718 \DeclareTextAccentDefault{\.}{OT1}
1719 \DeclareTextAccentDefault{\=}{OT1}
1720 \DeclareTextAccentDefault{\H}{OT1}
1721 \DeclareTextAccentDefault{\^}{OT1}
1722 \DeclareTextAccentDefault{\`}{OT1}
1723 \DeclareTextAccentDefault{\b}{OT1}
1724 \DeclareTextAccentDefault{\c}{OT1}
1725 \DeclareTextAccentDefault{\d}{OT1}
1726 \DeclareTextAccentDefault{\r}{OT1}
1727 \DeclareTextAccentDefault{\u}{OT1}
1728 \DeclareTextAccentDefault{\v}{OT1}
1729 \DeclareTextAccentDefault{\~}{OT1}
1730 \DeclareTextSymbolDefault{\AE}{OT1}
1731 \DeclareTextSymbolDefault{\L}{OT1}
1732 \DeclareTextSymbolDefault{\OE}{OT1}
1733 \DeclareTextSymbolDefault{\O}{OT1}
1734 \DeclareTextSymbolDefault{\ae}{OT1}
1735 \DeclareTextSymbolDefault{\i}{OT1}
1736 \DeclareTextSymbolDefault{\j}{OT1}
1737 \DeclareTextSymbolDefault{\l}{OT1}
1738 \DeclareTextSymbolDefault{\oe}{OT1}
1739 \DeclareTextSymbolDefault{\o}{OT1}
1740 \DeclareTextSymbolDefault{\ss}{OT1}
1741 \DeclareTextSymbolDefault{\textdollar}{OT1}
1742 \DeclareTextSymbolDefault{\textemdash}{OT1}
1743 \DeclareTextSymbolDefault{\textendash}{OT1}
1744 \DeclareTextSymbolDefault{\textexclamdown}{OT1}
1745 \DeclareTextSymbolDefault{\textquestiondown}{OT1}
1746 \DeclareTextSymbolDefault{\textquotedblleft}{OT1}
1747 \DeclareTextSymbolDefault{\textquotedblright}{OT1}
1748 \DeclareTextSymbolDefault{\textquoteleft}{OT1}
1749 \DeclareTextSymbolDefault{\textquoteright}{OT1}
1750 \DeclareTextSymbolDefault{\textsterling}{OT1}
1751 \DeclareTextSymbolDefault{\textasteriskcentered}{OMS}
1752 \DeclareTextSymbolDefault{\textbackslash}{OMS}
1753 \DeclareTextSymbolDefault{\textbar}{OMS}
1754 \DeclareTextSymbolDefault{\textbardbl}{OMS}
1755 \DeclareTextSymbolDefault{\textbraceleft}{OMS}
1756 \DeclareTextSymbolDefault{\textbraceright}{OMS}
1757 \DeclareTextSymbolDefault{\textbullet}{OMS}
1758 \DeclareTextSymbolDefault{\textdaggerdbl}{OMS}
1759 \DeclareTextSymbolDefault{\textdagger}{OMS}
1760 \DeclareTextSymbolDefault{\textparagraph}{OMS}
1761 \DeclareTextSymbolDefault{\textperiodcentered}{OMS}
1762 \DeclareTextSymbolDefault{\textsection}{OMS}
1763 \DeclareTextAccentDefault{\textcircled}{OMS}
1764 \DeclareTextSymbolDefault{\textless}{OML}
1765 \DeclareTextSymbolDefault{\textgreater}{OML}
1766 \DeclareTextAccentDefault{\t}{OML}
1767 \DeclareTextCommandDefault{\textcopyright}{\textcircled{c}}
1768 \DeclareTextCommandDefault{\textasciicircum}{\^{}}
1769 \DeclareTextCommandDefault{\textasciitilde}{\~{}}
1770 \DeclareTextCommandDefault{\textcompwordmark}{\leavevmode\kern\z@}
1771 \DeclareTextCommandDefault{\textunderscore}{%
1772   \leavevmode \kern.06em\vbox{\hrule\@width.3em}}
1773 \DeclareTextCommandDefault{\textvisiblespace}{%
1774    \mbox{\kern.06em\vrule \@height.3ex}%
1775    \vbox{\hrule \@width.3em}%
1776    \hbox{\vrule \@height.3ex}}
1777 \DeclareTextCommandDefault{\textellipsis}{%
1778    .\kern\fontdimen3\font
1779    .\kern\fontdimen3\font
1780    .\kern\fontdimen3\font}
1781 \DeclareTextCommandDefault{\textregistered}{\textcircled{%
1782       \check@mathfonts\fontsize\sf@size\z@\math@fontsfalse\selectfont R}}
1783 \DeclareTextCommandDefault{\texttrademark}{\textsuperscript{TM}}
1784 \DeclareTextCommandDefault{\SS}{SS}
1785 \DeclareTextCommandDefault{\textordfeminine}{\textsuperscript{a}}
1786 \DeclareTextCommandDefault{\textordmasculine}{\textsuperscript{o}}
1787 \DeclareRobustCommand{\$}{\ifmmode\mathdollar\else\textdollar\fi}
1788 \DeclareRobustCommand{\{}{\ifmmode\lbrace\else\textbraceleft\fi}
1789 \DeclareRobustCommand{\}}{\ifmmode\rbrace\else\textbraceright\fi}
1790 \DeclareRobustCommand{\P}{\ifmmode\mathparagraph\else\textparagraph\fi}
1791 \DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}
1792 \DeclareRobustCommand{\dag}{\ifmmode{\dagger}\else\textdagger\fi}
1793 \DeclareRobustCommand{\ddag}{\ifmmode{\ddagger}\else\textdaggerdbl\fi}
1794 \DeclareRobustCommand{\_}{%
1795    \ifmmode\nfss@text{\textunderscore}\else\textunderscore\fi}
1796 \DeclareRobustCommand{\copyright}{%
1797    \ifmmode{\nfss@text{\textcopyright}}\else\textcopyright\fi}
1798 \DeclareRobustCommand{\pounds}{%
1799    \ifmmode\mathsterling\else\textsterling\fi}
1800 \DeclareRobustCommand{\dots}{%
1801    \ifmmode\mathellipsis\else\textellipsis\fi}
1802 \let\ldots\dots
1803 %%% From File: ltcounts.dtx
1804 \def\setcounter#1#2{%
1805   \@ifundefined{c@#1}%
1806     {\@nocounterr{#1}}%
1807     {\global\csname c@#1\endcsname#2\relax}}
1808 \def\addtocounter#1#2{%
1809   \@ifundefined{c@#1}%
1810     {\@nocounterr{#1}}%
1811     {\global\advance\csname c@#1\endcsname #2\relax}}
1812 \def\newcounter#1{%
1813   \expandafter\@ifdefinable \csname c@#1\endcsname
1814     {\@definecounter{#1}}%
1815   \@ifnextchar[{\@newctr{#1}}{}}
1816 \def\value#1{\csname c@#1\endcsname}
1817 \def\@newctr#1[#2]{%
1818   \@ifundefined{c@#2}{\@nocounterr{#2}}{\@addtoreset{#1}{#2}}}
1819 \def\stepcounter#1{%
1820   \addtocounter{#1}\@ne
1821   \begingroup
1822     \let\@elt\@stpelt
1823     \csname cl@#1\endcsname
1824   \endgroup}
1825 \def\@stpelt#1{\global\csname c@#1\endcsname \z@}
1826 \def\cl@@ckpt{\@elt{page}}
1827 \def\@definecounter#1{\expandafter\newcount\csname c@#1\endcsname
1828      \setcounter{#1}\z@
1829      \global\expandafter\let\csname cl@#1\endcsname\@empty
1830      \@addtoreset{#1}{@ckpt}%
1831      \global\expandafter\let\csname p@#1\endcsname\@empty
1832      \expandafter
1833      \gdef\csname the#1\expandafter\endcsname\expandafter
1834           {\expandafter\@arabic\csname c@#1\endcsname}}
1835 \def\@addtoreset#1#2{\expandafter\@cons\csname cl@#2\endcsname {{#1}}}
1836 \def\arabic#1{\expandafter\@arabic\csname c@#1\endcsname}
1837 \def\roman#1{\expandafter\@roman\csname c@#1\endcsname}
1838 \def\Roman#1{\expandafter\@Roman\csname c@#1\endcsname}
1839 \def\alph#1{\expandafter\@alph\csname c@#1\endcsname}
1840 \def\Alph#1{\expandafter\@Alph\csname c@#1\endcsname}
1841 \def\fnsymbol#1{\expandafter\@fnsymbol\csname c@#1\endcsname}
1842 \def\@arabic#1{\number #1}  %% changed 29 Apr 86
1843 \def\@roman#1{\romannumeral #1}
1844
1845 \def\@Roman#1{\expandafter\@slowromancap\romannumeral #1@}
1846 \def\@slowromancap#1{\ifx @#1% then terminate
1847      \else
1848        \if i#1I\else\if v#1V\else\if x#1X\else\if l#1L\else\if
1849        c#1C\else\if d#1D\else \if m#1M\else#1\fi\fi\fi\fi\fi\fi\fi
1850        \expandafter\@slowromancap
1851      \fi
1852 }
1853 \def\@alph#1{%
1854   \ifcase#1\or a\or b\or c\or d\or e\or f\or g\or h\or i\or j\or
1855    k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or
1856     y\or z\else\@ctrerr\fi}
1857 \def\@Alph#1{%
1858   \ifcase#1\or A\or B\or C\or D\or E\or F\or G\or H\or I\or J\or
1859    K\or L\or M\or N\or O\or P\or Q\or R\or S\or T\or U\or V\or W\or X\or
1860     Y\or Z\else\@ctrerr\fi}
1861 \def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
1862    \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger
1863    \or \ddagger\ddagger \else\@ctrerr\fi}}
1864 %%% From File: ltlength.dtx
1865 \message{lengths,}
1866 \def\newlength#1{\@ifdefinable#1{\newskip#1}}
1867 \def\setlength#1#2{#1#2\relax}
1868 \def\addtolength#1#2{\advance#1 #2\relax}
1869 \def\@settodim#1#2#3{\setbox\@tempboxa\hbox{{#3}}#2#1\@tempboxa
1870        \setbox\@tempboxa\box\voidb@x}
1871 \def\settoheight{\@settodim\ht}
1872 \def\settodepth {\@settodim\dp}
1873 \def\settowidth {\@settodim\wd}
1874 \def\@settopoint#1{\divide#1\p@\multiply#1\p@}
1875 %%% From File: ltfssbas.dtx
1876 %% Copyright (C) 1989-2002 Frank Mittelbach and Rainer Sch\"opf
1877 \expandafter\let\csname ver@autofss1.sty\endcsname\fmtversion
1878 \def\@nomath#1{\relax\ifmmode
1879    \@font@warning{Command \noexpand#1invalid in math mode}\fi}
1880 \gdef\no@alphabet@error#1{\relax \ifmmode
1881     \@latex@error{Math\space alphabet\space identifier\space
1882           \noexpand#1is\space undefined\space in\space math\space
1883            version\space `\math@version'}%
1884         {Your\space requested\space math\space alphabet\space
1885          is\space undefined\space in\space the\space current\space
1886           math\space version.^^JCheck\space the\space spelling\space
1887           or\space use\space the\space \noexpand\SetMathAlphabet\space
1888           command.}
1889      \fi}
1890 \def\new@mathgroup{\alloc@8\mathgroup\chardef\sixt@@n}
1891 \let\mathgroup\fam
1892 \let\newfam\new@mathgroup
1893 \@onlypreamble\new@mathgroup
1894 \def\DeclareFontShape{\begingroup
1895    \nfss@catcodes
1896    \expandafter\endgroup
1897    \DeclareFontShape@}
1898 \def\DeclareFontShape@#1#2#3#4#5#6{%
1899    \expandafter\ifx\csname #1+#2\endcsname\relax
1900      \@latex@error{Font family `#1+#2' unknown}\@eha
1901    \else
1902      \expandafter
1903        \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
1904                                    \csname #5\endcsname}%
1905      \def\reserved@a{#6}%
1906      \global
1907      \expandafter\let\csname#5\expandafter\endcsname
1908         \ifx\reserved@a\@empty
1909           \@empty
1910         \else
1911           \reserved@a
1912         \fi
1913    \fi
1914   }
1915 \def\DeclareFixedFont#1#2#3#4#5#6{%
1916    \begingroup
1917       \math@fontsfalse
1918       \every@math@size{}%
1919       \fontsize{#6}\z@
1920       \usefont{#2}{#3}{#4}{#5}%
1921       \global\expandafter\let\expandafter#1\the\font
1922    \endgroup
1923   }
1924 \def\do@subst@correction{%
1925        \xdef\subst@correction{%
1926           \font@name
1927           \global\expandafter\font
1928             \csname \curr@fontshape/\f@size\endcsname
1929             \noexpand\fontname\font
1930            \relax}%
1931        \aftergroup\subst@correction
1932 }
1933 \def\DeclareFontFamily#1#2#3{%
1934  \@ifundefined{T@#1}%
1935     {%
1936      \@latex@error{Encoding scheme  `#1' unknown}\@eha
1937     }%
1938     {%
1939      \def\reserved@a{#3}%
1940      \global
1941      \expandafter\let\csname #1+#2\expandafter\endcsname
1942             \ifx \reserved@a\@empty
1943               \@empty
1944             \else \reserved@a
1945             \fi
1946     }%
1947 }
1948 \let\cdp@list\@empty
1949 \@onlypreamble\cdp@list
1950 \let\cdp@elt\relax
1951 \@onlypreamble\cdp@elt
1952 \def\DeclareFontEncoding{%
1953    \begingroup
1954    \nfss@catcodes
1955    \expandafter\endgroup
1956    \DeclareFontEncoding@}
1957 \@onlypreamble\DeclareFontEncoding
1958 \def\DeclareFontEncoding@#1#2#3{%
1959   \expandafter
1960   \ifx\csname T@#1\endcsname\relax
1961      \def\cdp@elt{\noexpand\cdp@elt}%
1962      \xdef\cdp@list{\cdp@list\cdp@elt{#1}%
1963                     {\default@family}{\default@series}%
1964                     {\default@shape}}%
1965      \expandafter\let\csname#1-cmd\endcsname\@changed@cmd
1966   \else
1967      \@font@info{Redeclaring font encoding #1}%
1968   \fi
1969   \global\@namedef{T@#1}{#2}%
1970   \global\@namedef{M@#1}{\default@M#3}%
1971   \xdef\LastDeclaredEncoding{#1}%
1972   }
1973 \@onlypreamble\DeclareFontEncoding@
1974 \def\LastDeclaredEncoding{}
1975 \def\DeclareFontSubstitution#1#2#3#4{%
1976   \expandafter
1977   \ifx\csname T@#1\endcsname\relax
1978     \@latex@error{Encoding scheme  `#1' unknown}\@eha
1979   \else
1980     \begingroup
1981        \edef\reserved@a{#1}%
1982        \toks@{}%
1983        \def\cdp@elt##1##2##3##4{%
1984           \def\reserved@b{##1}%
1985           \ifx\reserved@a\reserved@b
1986              \addto@hook\toks@{\cdp@elt{##1}{#2}{#3}{#4}}%
1987           \else
1988              \addto@hook\toks@{\cdp@elt{##1}{##2}{##3}{##4}}%
1989           \fi}%
1990         \cdp@list
1991         \xdef\cdp@list{\the\toks@}%
1992     \endgroup
1993     \global
1994     \@namedef{D@#1}{%
1995            \def\default@family{#2}%
1996            \def\default@series{#3}%
1997            \def\default@shape{#4}%
1998            }%
1999   \fi
2000  }
2001 \@onlypreamble\DeclareFontSubstitution
2002 \def\DeclareFontEncodingDefaults#1#2{%
2003   \ifx\relax#1\else
2004     \ifx\default@T\@empty\else
2005       \@font@info{Overwriting encoding scheme text defaults}%
2006     \fi
2007     \gdef\default@T{#1}%
2008   \fi
2009   \ifx\relax#2\else
2010     \ifx\default@M\@empty\else
2011       \@font@info{Overwriting encoding scheme math defaults}%
2012     \fi
2013     \gdef\default@M{#2}%
2014   \fi
2015 }
2016 \@onlypreamble\DeclareFontEncodingDefaults
2017 \let\default@T\@empty
2018 \let\default@M\@empty
2019 \def\DeclarePreloadSizes#1#2#3#4#5{%
2020  \@ifundefined{T@#1}%
2021    {\@latex@error{Encoding scheme  `#1' unknown}\@eha}%
2022    {%
2023    \begingroup
2024     \def\reserved@f##1,{%
2025         \if>##1>%
2026           \let\reserved@f\relax
2027         \else
2028           \xdef\font@name{\csname#1/#2/#3/#4/##1\endcsname}%
2029           \pickup@font
2030           \global\expandafter\let\font@name\relax
2031         \fi
2032         \reserved@f}%
2033      \reserved@f#5,,%
2034    \endgroup
2035    }%
2036 }
2037 \@onlypreamble\DeclarePreloadSizes
2038 \newif\ifmath@fonts \math@fontstrue
2039 \def\DeclareMathSizes{%
2040   \@ifstar{\@DeclareMathSizes\math@fontsfalse}%
2041           {\@DeclareMathSizes{}}}
2042 \@onlypreamble\DeclareMathSizes
2043 \def\@DeclareMathSizes#1#2#3#4#5{%
2044     \@defaultunits\dimen@#2pt\relax\@nnil
2045     \if$#3$%
2046       \expandafter \let
2047         \csname S@\strip@pt\dimen@\endcsname
2048         \math@fontsfalse
2049     \else
2050       \expandafter \gdef
2051       \csname S@\strip@pt\dimen@\endcsname
2052             {\gdef\tf@size{#3}\gdef\sf@size{#4}%
2053                              \gdef\ssf@size{#5}%
2054              #1%
2055                              }%
2056     \fi}
2057 \@onlypreamble\@DeclareMathSizes
2058 \DeclareRobustCommand\fontencoding[1]{%
2059     \expandafter\ifx\csname T@#1\endcsname\relax
2060       \@latex@error{Encoding scheme `#1' unknown}\@eha
2061     \else
2062       \edef\f@encoding{#1}%
2063       \ifx\cf@encoding\f@encoding
2064         \let\enc@update\relax
2065       \else
2066         \let\enc@update\@@enc@update
2067       \fi
2068     \fi
2069 }
2070 \def\@@enc@update{%
2071           \expandafter
2072           \let
2073             \csname\cf@encoding -cmd\endcsname
2074             \@changed@cmd
2075           \expandafter
2076           \let
2077             \csname\f@encoding-cmd\endcsname
2078             \@current@cmd
2079         \default@T
2080         \csname T@\f@encoding\endcsname
2081         \csname D@\f@encoding\endcsname
2082         \let\enc@update\relax
2083         \let\cf@encoding\f@encoding
2084 }
2085 \let\enc@update\relax
2086 \DeclareRobustCommand\fontfamily[1]{\edef\f@family{#1}}
2087 \DeclareRobustCommand\fontseries[1]{\edef\f@series{#1}}
2088 \DeclareRobustCommand\fontshape [1]{\edef\f@shape{#1}}
2089 \def\usefont#1#2#3#4{\fontencoding{#1}\fontfamily{#2}%
2090              \fontseries{#3}\fontshape{#4}\selectfont
2091              \ignorespaces}
2092 \DeclareRobustCommand\linespread[1]
2093    {\set@fontsize{#1}\f@size\f@baselineskip}
2094 \DeclareRobustCommand\fontsize[2]
2095    {\set@fontsize\baselinestretch{#1}{#2}}
2096 \let\f@family\@empty
2097 \let\f@series\@empty
2098 \let\f@shape\@empty
2099 \let\f@size\@empty
2100 \let\f@baselineskip\@empty
2101 \let\f@linespread\@empty
2102 \let\f@encoding\@empty
2103 \let\cf@encoding\@empty
2104 \def\@defaultunits{\afterassignment\remove@to@nnil}
2105 \begingroup
2106   \catcode`P=12
2107   \catcode`T=12
2108   \lowercase{
2109     \def\x{\def\rem@pt##1.##2PT{##1\ifnum##2>\z@.##2\fi}}}
2110   \expandafter\endgroup\x
2111 \def\strip@pt{\expandafter\rem@pt\the}
2112 \DeclareRobustCommand\mathversion[1]
2113          {\@nomath\mathversion
2114           \expandafter\ifx\csname mv@#1\endcsname\relax
2115           \@latex@error{Math version `#1' is not defined}\@eha\else
2116           \edef\math@version{#1}%
2117           \gdef\glb@currsize{}%
2118           \aftergroup\glb@settings
2119           \fi}
2120 \let\frozen@everymath\everymath
2121 \let\frozen@everydisplay\everydisplay
2122 \newtoks\everymath
2123 \newtoks\everydisplay
2124 \frozen@everymath = {\check@mathfonts
2125                      \the\everymath}
2126 \frozen@everydisplay = {\check@mathfonts
2127                         \the\everydisplay}
2128 \let\curr@math@size\@empty
2129 \def\pickup@font{%
2130     \expandafter \ifx \font@name \relax
2131        \define@newfont
2132     \fi}
2133 {\catcode`\/=12
2134 \gdef\split@name#1/#2/#3/#4/#5\@nil{\def\f@encoding{#1}%
2135                                     \def\f@family{#2}%
2136                                     \def\f@series{#3}%
2137                                     \def\f@shape{#4}%
2138                                     \def\f@size{#5}}}
2139 \def\curr@fontshape{\f@encoding/\f@family/\f@series/\f@shape}
2140 \def\define@newfont{%
2141   \begingroup
2142     \let\typeout\@font@info
2143     \escapechar\m@ne
2144     \expandafter\expandafter\expandafter
2145        \split@name\expandafter\string\font@name\@nil
2146       \try@load@fontshape % try always
2147     \expandafter\ifx
2148        \csname\curr@fontshape\endcsname \relax
2149       \wrong@fontshape\else
2150       \extract@font\fi
2151   \endgroup}
2152 \def\try@load@fontshape{%
2153    \expandafter
2154    \ifx\csname \f@encoding+\f@family\endcsname\relax
2155      \@font@info{Try loading font information for
2156                    \f@encoding+\f@family}%
2157     \global\expandafter\let
2158        \csname\f@encoding+\f@family\endcsname\@empty
2159      \nfss@catcodes
2160      \let\nfss@catcodes\relax
2161      \edef\reserved@a{%
2162        \lowercase{%
2163          \noexpand\InputIfFileExists{\f@encoding\f@family.fd}}}%
2164      \reserved@a\relax
2165           {\@input@{\f@encoding\f@family.fd}}%
2166    \fi}
2167 \def\nfss@catcodes{%
2168      \makeatletter
2169      \catcode`\ 9%
2170      \catcode`\^^I9%
2171      \catcode`\^^M9%
2172      \catcode`\\\z@
2173      \catcode`\{\@ne
2174      \catcode`\}\tw@
2175      \catcode`\#6%
2176      \catcode`\^7%
2177      \catcode`\%14%
2178    \@makeother\<%
2179    \@makeother\>%
2180    \@makeother\*%
2181    \@makeother\.%
2182    \@makeother\-%
2183    \@makeother\/%
2184    \@makeother\[%
2185    \@makeother\]%
2186    \@makeother\`%
2187    \@makeother\'%
2188    \@makeother\"%
2189 }
2190 \def\DeclareErrorFont#1#2#3#4#5{%
2191       \xdef\error@fontshape{%
2192           \noexpand\expandafter\noexpand\split@name\noexpand\string
2193           \expandafter\noexpand\csname#1/#2/#3/#4/#5\endcsname
2194           \noexpand\@nil}%
2195       \gdef\default@family{#2}%
2196       \gdef\default@series{#3}%
2197       \gdef\default@shape{#4}%
2198       \global\let\f@family\default@family
2199       \global\let\f@series\default@series
2200       \global\let\f@shape\default@shape
2201       \gdef\f@size{#5}%
2202       \gdef\f@baselineskip{#5pt}%
2203 }
2204 \@onlypreamble\DeclareErrorFont
2205 \def\wrong@fontshape{%
2206     \csname D@\f@encoding\endcsname      % install defaults if in math
2207     \edef\reserved@a{\csname\curr@fontshape\endcsname}%
2208   \ifx\last@fontshape\reserved@a
2209      \errmessage{Corrupted NFSS tables}%
2210      \error@fontshape
2211   \else
2212     \let\f@shape\default@shape
2213     \expandafter\ifx\csname\curr@fontshape\endcsname\relax
2214        \let\f@series\default@series
2215         \expandafter
2216           \ifx\csname\curr@fontshape\endcsname\relax
2217            \let\f@family\default@family
2218         \fi \fi
2219   \fi
2220      \@font@warning{Font shape `\expandafter\string\reserved@a'
2221                      \expandafter\@gobble\string\@undefined\MessageBreak
2222                    using `\curr@fontshape' instead\@wrong@font@char}%
2223     \global\let\last@fontshape\reserved@a
2224     \gdef\@defaultsubs{%
2225       \@font@warning{Some font shapes were not available, defaults
2226                       substituted.\@gobbletwo}}%
2227     \global\expandafter\expandafter\expandafter\let
2228        \expandafter\reserved@a
2229            \csname\curr@fontshape\endcsname
2230     \xdef\font@name{%
2231       \csname\curr@fontshape/\f@size\endcsname}%
2232     \pickup@font}
2233 \let\@wrong@font@char\@empty
2234 \let\@defaultsubs\relax
2235 \def\strip@prefix#1>{}
2236 \let\install@mathalphabet\gdef
2237 \let\math@fonts\@empty
2238 \def\extract@alph@from@version#1#2#3{%
2239      \def\reserved@a##1\install@mathalphabet#3##2##3\@nil{%
2240          \def\reserved@b{##2}%
2241          \def\reserved@c####1{\gdef#1{##1####1##3}}}%
2242      \expandafter\reserved@a#1\@nil
2243      \def\reserved@a\select@group#3##1##2\@nil{%
2244         \reserved@c{%
2245            \getanddefine@fonts{#2}##2%
2246            \install@mathalphabet#3{%
2247               \relax\ifmmode \else \non@alpherr#3\fi
2248               \use@mathgroup##1{#2}}}%
2249        \gdef#3{\relax\ifmmode \else \non@alpherr#3\fi
2250                \use@mathgroup##1{#2}}}%
2251      \expandafter\reserved@a\reserved@b\@nil
2252      }
2253 \let\math@bgroup\bgroup
2254 \def\math@egroup#1{#1\egroup}
2255 \gdef\calculate@math@sizes{%
2256   \@font@info{Calculating\space math\space sizes\space for\space
2257               size\space <\f@size>}%
2258   \dimen@\f@size \p@
2259   \@tempdimb \defaultscriptratio \dimen@
2260   \dimen@ \defaultscriptscriptratio \dimen@
2261   \expandafter\xdef\csname S@\f@size\endcsname{%
2262     \gdef\noexpand\tf@size{\f@size}%
2263     \gdef\noexpand\sf@size{\strip@pt\@tempdimb}%
2264     \gdef\noexpand\ssf@size{\strip@pt\dimen@}%
2265     \noexpand\math@fontstrue}}
2266 \def\defaultscriptratio{.7}
2267 \def\defaultscriptscriptratio{.5}
2268 \ifx\noaccents@\@undefined
2269   \let\noaccents@\@empty
2270 \fi
2271 \gdef\showhyphens#1{%
2272   \setbox0\vbox{%
2273     \color@begingroup
2274     \everypar{}%
2275     \parfillskip\z@skip\hsize\maxdimen
2276     \normalfont
2277     \pretolerance\m@ne\tolerance\m@ne\hbadness\z@\showboxdepth\z@\ #1%
2278     \color@endgroup}}
2279 \long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
2280  \def\@vpt{5}
2281  \def\@vipt{6}
2282  \def\@viipt{7}
2283  \def\@viiipt{8}
2284  \def\@ixpt{9}
2285  \def\@xpt{10}
2286  \def\@xipt{10.95}
2287  \def\@xiipt{12}
2288  \def\@xivpt{14.4}
2289  \def\@xviipt{17.28}
2290  \def\@xxpt{20.74}
2291  \def\@xxvpt{24.88}
2292 %%% From File: ltfsstrc.dtx
2293 %% Copyright (C) 1989-97 by Frank Mittelbach and Rainer Sch\"opf.
2294 %% Copyright (C) 1994-97 by LaTeX3 project. All rights reserved.
2295 \def\tracingfonts{%
2296   \@font@warning{Command \noexpand\tracingfonts
2297            not provided.\MessageBreak
2298            Use the `tracefnt' package.\MessageBreak Command found:}%
2299        \count@}
2300 \def\@font@info#1{%
2301          \GenericInfo{(Font)\@spaces\@spaces\@spaces\space\space}%
2302                      {LaTeX Font Info: \space\space\space#1}}%
2303 \def\@font@warning#1{%
2304          \GenericWarning{(Font)\@spaces\@spaces\@spaces\space\space}%
2305                         {LaTeX Font Warning: #1}}%
2306 \def\extract@font{%
2307    \get@external@font
2308    \global\expandafter\font\font@name\external@font\relax
2309     \font@name \relax
2310     \csname \f@encoding+\f@family\endcsname
2311     \csname\curr@fontshape\endcsname
2312     \relax
2313        }
2314 \def\get@external@font{%
2315    \let\external@font\@empty
2316    \edef\font@info{\expandafter\expandafter\expandafter\string
2317         \csname \curr@fontshape \endcsname}%
2318    \try@size@range
2319    \ifx\external@font\@empty
2320       \try@size@substitution
2321       \ifx\external@font\@empty
2322          \@latex@error{Font \expandafter \string\font@name\space
2323                      not found}\@eha
2324          \error@fontshape
2325          \get@external@font
2326    \fi\fi
2327 }
2328 \DeclareRobustCommand\selectfont
2329         {%
2330     \ifx\f@linespread\baselinestretch \else
2331       \set@fontsize\baselinestretch\f@size\f@baselineskip \fi
2332     \xdef\font@name{%
2333       \csname\curr@fontshape/\f@size\endcsname}%
2334     \pickup@font
2335     \font@name
2336     \size@update
2337     \enc@update
2338     }
2339 \def\set@fontsize#1#2#3{%
2340     \@defaultunits\@tempdimb#2pt\relax\@nnil
2341     \edef\f@size{\strip@pt\@tempdimb}%
2342     \@defaultunits\@tempskipa#3pt\relax\@nnil
2343     \edef\f@baselineskip{\the\@tempskipa}%
2344     \edef\f@linespread{#1}%
2345     \let\baselinestretch\f@linespread
2346       \def\size@update{%
2347         \baselineskip\f@baselineskip\relax
2348         \baselineskip\f@linespread\baselineskip
2349         \normalbaselineskip\baselineskip
2350         \setbox\strutbox\hbox{%
2351           \vrule\@height.7\baselineskip
2352                 \@depth.3\baselineskip
2353                 \@width\z@}%
2354         \let\size@update\relax}%
2355   }
2356 \let\size@update\relax
2357 \def\glb@settings{%
2358      \expandafter\ifx\csname S@\f@size\endcsname\relax
2359        \calculate@math@sizes
2360      \fi
2361      \csname S@\f@size\endcsname
2362      \ifmath@fonts
2363        \begingroup
2364          \escapechar\m@ne
2365          \csname mv@\math@version \endcsname
2366          \globaldefs\@ne
2367          \math@fonts
2368          \let \glb@currsize \f@size
2369        \endgroup
2370         \the\every@math@size
2371      \fi
2372 }
2373 \def\baselinestretch{1}
2374 \newtoks\every@math@size
2375 \every@math@size={}
2376 \def\check@mathfonts{%
2377   \ifx \glb@currsize \f@size
2378   \else
2379      \glb@settings
2380      \init@restore@glb@settings
2381   \fi
2382   \let\curr@math@size\f@size
2383   \def\init@restore@glb@settings{\aftergroup\restglb@settings}%
2384 }
2385 \let\init@restore@glb@settings\relax
2386 \def\restglb@settings{%
2387       \begingroup
2388         \let\f@size\curr@math@size
2389         \ifx\glb@currsize \f@size
2390         \else
2391           \glb@settings
2392         \fi
2393       \endgroup
2394 }
2395 \def\use@mathgroup#1#2{\relax\ifmmode
2396      \math@bgroup
2397          \expandafter\ifx\csname M@\f@encoding\endcsname#1\else
2398          #1\fi
2399          \mathgroup#2\relax
2400      \expandafter\math@egroup\fi}%
2401 \def\getanddefine@fonts#1#2{%
2402   \xdef\font@name{\csname \string#2/\tf@size\endcsname}%
2403   \pickup@font \let\textfont@name\font@name
2404   \xdef\font@name{\csname \string#2/\sf@size\endcsname}%
2405   \pickup@font \let\scriptfont@name\font@name
2406   \xdef\font@name{\csname \string#2/\ssf@size\endcsname}%
2407   \pickup@font
2408   \edef\math@fonts{\math@fonts
2409                \textfont#1\textfont@name
2410                \scriptfont#1\scriptfont@name
2411                \scriptscriptfont#1\font@name}%
2412     }
2413 \def\ifnot@nil#1{\def\reserved@a{#1}%
2414   \ifx\reserved@a\@nnil \expandafter\@gobble
2415   \else \expandafter\@firstofone\fi}
2416 \def\remove@to@nnil#1\@nnil{}
2417 \def\remove@angles#1>{\set@simple@size@args}
2418 \def\remove@star#1*{#1}
2419 \def\extract@sizefn#1*#2\@nil{%
2420   \if>#2>\set@size@funct@args#1\@nil
2421          \let\sizefn@info\@empty
2422   \else\expandafter\set@size@funct@args\remove@star#2\@nil
2423        \def\sizefn@info{#1}\fi
2424   }
2425 \def\try@simple@size{%
2426     \def\reserved@a{\def\extract@fontinfo####1}%
2427     \expandafter\reserved@a\expandafter<\f@size>##2<##3\@nnil{%
2428           \ifnot@nil{##2}%
2429             {\set@simple@size@args##2<##3\@nnil
2430              \execute@size@function\sizefn@info
2431             }}%
2432     \expandafter\expandafter
2433     \expandafter\extract@fontinfo\expandafter\font@info
2434     \expandafter<\f@size>\@nil<\@nnil
2435 }
2436 \def\set@simple@size@args#1<{%
2437           \if<#1<%
2438             \expandafter\remove@angles
2439           \else
2440             \extract@sizefn#1*\@nil
2441             \expandafter\remove@to@nnil
2442           \fi}
2443 \def\extract@rangefontinfo#1<#2>{%
2444        \is@range#2->\@nil#2>}
2445 \def\is@range#1-#2\@nil{%
2446    \if>#2\expandafter\check@single\else
2447       \expandafter\check@range\fi}
2448 \def\check@range#1-#2>#3<#4\@nnil{%
2449   \ifnot@nil{#3}{%
2450      \def\reserved@f{\extract@rangefontinfo<#4\@nnil}%
2451      \upper@bound0#2\p@
2452      \ifdim\upper@bound=\z@ \upper@bound\maxdimen\fi
2453      \ifdim \f@size \p@<\upper@bound
2454        \lower@bound0#1\p@
2455        \ifdim \f@size \p@<\lower@bound
2456         \else
2457           \set@simple@size@args#3<#4\@nnil
2458           \execute@size@function\sizefn@info
2459          \ifx\external@font\@empty
2460          \else
2461            \let\reserved@f\@empty
2462          \fi
2463        \fi
2464      \fi
2465      \reserved@f}}
2466 \newdimen\lower@bound
2467 \newdimen\upper@bound
2468 \def\check@single#1>#2<#3\@nnil{%
2469      \def\reserved@f{\extract@rangefontinfo<#3\@nnil}%
2470      \ifdim \f@size \p@=#1\p@
2471         \set@simple@size@args#2<#3\@nnil
2472         \execute@size@function\sizefn@info
2473         \ifx\external@font\@empty
2474         \else
2475           \let\reserved@f\@empty
2476         \fi
2477      \fi
2478      \reserved@f}
2479 \def\set@size@funct@args{\@ifnextchar[%
2480   \set@size@funct@args@{\set@size@funct@args@[]}}
2481 \def\set@size@funct@args@[#1]#2\@nil{%
2482   \def\mandatory@arg{#2}%
2483   \def\optional@arg{#1}}
2484 \def\DeclareSizeFunction#1#2{\@namedef{s@fct@#1}{#2}}
2485 \@onlypreamble\DeclareSizeFunction
2486 \def\execute@size@function#1{%    %%% could be added to autoload as well
2487       \csname s@fct@#1\endcsname
2488 }
2489 \def\try@size@range{%
2490     \expandafter\extract@rangefontinfo\font@info <-*>\@nil<\@nnil
2491 }
2492 \gdef\try@size@substitution{%
2493   \@tempdimb \maxdimen
2494   \let \best@size \@empty
2495   \expandafter \try@simples \font@info <\number\@M>\@nil<\@nnil
2496 }
2497 \def\font@submax{0pt}
2498 \def\fontsubfuzz{.4pt}
2499 \gdef\try@simples#1<#2>{%
2500   \tryif@simple#2->\tryif@simple}
2501 \gdef\tryif@simple#1-#2\tryif@simple{%
2502   \let \reserved@f \try@simples
2503   \if>#2%
2504     \dimen@ #1\p@
2505     \ifdim \dimen@<\@M\p@
2506       \ifdim \f@size\p@<\dimen@
2507         \@tempdimc \dimen@
2508         \advance\@tempdimc -\f@size\p@
2509       \else
2510         \@tempdimc \f@size\p@
2511         \advance\@tempdimc -\dimen@
2512       \fi
2513       \ifdim \@tempdimc<\@tempdimb
2514         \@tempdimb \@tempdimc
2515         \def \best@size{#1}%
2516       \fi
2517     \else
2518   \ifx \external@font\@empty
2519     \ifx \best@size\@empty
2520     \else
2521       \ifdim \@tempdimb>\font@submax \relax
2522         \xdef \font@submax {\the\@tempdimb}%
2523       \fi
2524       \let \f@user@size \f@size
2525       \let \f@size \best@size
2526       \ifdim \@tempdimb>\fontsubfuzz\relax
2527         \@font@warning{Font\space shape\space
2528             `\curr@fontshape'\space in\space size\space
2529              <\f@user@size>\space not\space available\MessageBreak
2530              size\space <\f@size>\space substituted}%
2531       \fi
2532       \try@simple@size
2533       \do@subst@correction
2534     \fi
2535  \fi
2536       \let \reserved@f \remove@to@nnil
2537     \fi
2538   \fi
2539   \reserved@f}
2540 \DeclareSizeFunction{}{\empty@sfcnt\@font@warning}
2541 \DeclareSizeFunction{s}{\empty@sfcnt\@font@info}
2542 \def\empty@sfcnt#1{%
2543       \@tempdimb \f@size\p@
2544       \ifx\optional@arg\@empty
2545       \else
2546         \@tempdimb \optional@arg\@tempdimb
2547         #1{Font\space shape\space `\curr@fontshape'\space
2548            will\space be\MessageBreak
2549            scaled\space to\space size\space \the\@tempdimb}%
2550       \fi
2551       \edef\external@font{\mandatory@arg\space at\the\@tempdimb}}
2552 \DeclareSizeFunction{gen}{\gen@sfcnt\@font@warning}
2553 \DeclareSizeFunction{sgen}{\gen@sfcnt\@font@info}
2554 \def\gen@sfcnt{%
2555       \edef\mandatory@arg{\mandatory@arg\f@size}%
2556       \empty@sfcnt}
2557 \DeclareSizeFunction{genb}{\genb@sfcnt\@font@warning}
2558 \DeclareSizeFunction{sgenb}{\genb@sfcnt\@font@info}
2559 \def\genb@sfcnt{%
2560     \edef\mandatory@arg{\mandatory@arg\expandafter\genb@x\f@size..\@@}%
2561     \empty@sfcnt}
2562 \def\genb@x#1.#2.#3\@@{\two@digits{#1}\genb@y#200\@@}
2563 \def\genb@y#1#2#3\@@{#1#2}
2564 \DeclareSizeFunction{sub}{\sub@sfcnt\@font@warning}
2565 \DeclareSizeFunction{ssub}{\sub@sfcnt\@font@info}
2566 \def\sub@sfcnt#1{%
2567     \edef\mandatory@arg{\f@encoding/\mandatory@arg}%
2568     \begingroup
2569      \expandafter\split@name\mandatory@arg/\@nil
2570      \try@load@fontshape
2571     \endgroup
2572     \let\f@user@size\f@size
2573     \expandafter
2574     \ifx\csname\mandatory@arg\endcsname\relax
2575       \errmessage{No\space declaration\space for\space
2576                   shape\space \mandatory@arg}%
2577       \error@fontshape
2578     \else
2579       #1{Font\space shape\space `\curr@fontshape'\space in\space
2580          size\space <\f@size>\space not\space available\MessageBreak
2581          Font\space shape\space `\mandatory@arg'\space tried\space
2582          instead}%
2583       \expandafter\split@name\mandatory@arg/\@nil
2584     \fi
2585     \edef\f@size{\f@user@size}%
2586     \get@external@font
2587     \do@subst@correction
2588 }
2589 \DeclareSizeFunction{subf}{\subf@sfcnt\@font@warning}
2590 \DeclareSizeFunction{ssubf}{\subf@sfcnt\@font@info}
2591 \def\subf@sfcnt#1{%
2592       #1{Font\space shape\space `\curr@fontshape'\space in\space
2593          size\space \f@size\space not\space available\MessageBreak
2594         external\space font\space `\mandatory@arg'\space used}%
2595       \empty@sfcnt#1%
2596       }
2597 \DeclareSizeFunction{fixed}{\fixed@sfcnt\@font@warning}
2598 \DeclareSizeFunction{sfixed}{\fixed@sfcnt\@font@info}
2599 \def\fixed@sfcnt#1{%
2600   \ifx\optional@arg\@empty
2601     \let\external@font\mandatory@arg
2602   \else
2603     \edef\external@font{\mandatory@arg\space at\optional@arg pt}%
2604   \fi
2605   #1{External\space font\space `\external@font'\space loaded\space
2606      for\space size\MessageBreak
2607      <\f@size>}%
2608 }
2609 %%% From File: ltfsscmp.dtx
2610 %% Copyright (C) 1989-1995 Frank Mittelbach and Rainer Sch\"opf,
2611 %% all rights reserved.
2612 \gdef\new@fontshape#1#2#3#4{%
2613      \warn@rel@i\new@fontshape\DeclareFontShape
2614      \expandafter\scan@fontshape\@gobble#4<\@nil><<%
2615      \DeclareFontShape U{#1}{#2}{#3}\reserved@f}
2616 \@onlypreamble\new@fontshape
2617 \gdef\warn@rel@i#1#2{%
2618  \@font@warning{***  NFSS release 1 command
2619                \noexpand#1found\MessageBreak
2620    ***  Update by using release 2 command
2621         \string#2.\MessageBreak
2622    ***  Recovery is probably possible}%
2623 }
2624 \@onlypreamble\warn@rel@i
2625 \gdef\scan@fontshape{%
2626   \let\reserved@f\@empty
2627   \let\reserved@e\@empty %        holds last info
2628   \scan@@fontshape
2629 }
2630 \@onlypreamble\scan@fontshape
2631 \gdef\scan@@fontshape#1>#2#3<{%
2632   \ifx\@nil#1%
2633     \edef\reserved@f{\reserved@f\reserved@e}%
2634   \else
2635     \def\reserved@b{#1}%       nick names
2636     \def\reserved@c{#3}%
2637     \in@{ at}{#3}%
2638     \ifin@
2639       \in@{pt}{#3}%  not a proof but a good chance
2640       \ifin@
2641         \def\reserved@a##1 at##2pt##3\@nil{%
2642            \def\reserved@b{##2}%
2643            \def\reserved@c{##1}%
2644            }%
2645         \reserved@a#3\@nil
2646       \fi
2647     \fi
2648     \ifnum 0<0#2
2649       \edef\reserved@d{subf*\reserved@c}%
2650       \ifcase #2\or
2651       \or
2652       \else
2653         \errmessage{*** What's this? NFSS release 0? ***}%
2654       \fi
2655     \else
2656       \edef\reserved@d{#2\reserved@c}%
2657     \fi
2658     \ifx\reserved@d\reserved@e
2659       \edef\reserved@f{\reserved@f<\reserved@b>}%
2660     \else
2661       \edef\reserved@f{\reserved@f\reserved@e<\reserved@b>}%add old info
2662       \let\reserved@e\reserved@d
2663     \fi
2664     \expandafter\scan@@fontshape
2665   \fi
2666 }
2667 \@onlypreamble\scan@@fontshape
2668 \gdef\subst@fontshape#1#2#3#4#5#6{%
2669      \warn@rel@i\subst@fontshape\DeclareFontShape
2670      \DeclareFontShape{U}{#1}{#2}{#3}{<->sub*#4/#5/#6}{}}
2671 \@onlypreamble\subst@fontshape
2672 \gdef\extra@def#1#2#3{%
2673      \warn@rel@i\extra@def\DeclareFontFamily
2674      \DeclareFontFamily{U}{#1}{}%
2675 }
2676 \@onlypreamble\extra@def
2677 \gdef\default@mextra{%
2678   \warn@rel@i\default@mextra\DeclareFontEncodingDefaults
2679   \DeclareFontEncodingDefaults\relax
2680 }
2681 \@onlypreamble\default@mextra
2682 \gdef\preload@sizes{%
2683      \warn@rel@i\preload@sizes\DeclarePreloadSizes
2684      \DeclarePreloadSizes U%
2685 }
2686 \@onlypreamble\preload@sizes
2687 \gdef\err@rel@i#1#2{%
2688   \@latex@error{***  NFSS release 1 command \noexpand#1found%
2689           ^^J***  Recovery not possible. Use \string#2}%
2690        {The new release of NFSS doesn't support the
2691         \noexpand#1command^^Jany longer.
2692         Please upgrade your file to the syntax of NFSS
2693         release 2^^Jusing the \noexpand#2command.}%
2694   \batchmode\input.\relax
2695 }
2696 \@onlypreamble\err@rel@i
2697 \gdef\newmathalphabet{%
2698   \if@no@font@opt
2699     \@latex@error{*** NFSS release 1 command
2700                     \noexpand\newmathalphabet found%
2701      ^^J \space*** Automatic recovery not possible.%
2702      ^^J \space*** TYPE H for Help%
2703               }%
2704        {Please look at the file usrguide.tex for hints on
2705         how to resolve this problem.}%
2706   \else
2707      \warn@rel@i\newmathalphabet\DeclareMathAlphabet
2708   \fi
2709   \@ifstar\newmathalphabet@@@
2710           \newmathalphabet@@}
2711 \gdef\newmathalphabet@@#1{\DeclareMathAlphabet#1{U}{}{}{}}
2712 \gdef\newmathalphabet@@@#1#2#3#4{%
2713        \DeclareMathAlphabet{#1}{U}{#2}{#3}{#4}}
2714 \@onlypreamble\newmathalphabet
2715 \@onlypreamble\newmathalphabet@@
2716 \@onlypreamble\newmathalphabet@@@
2717 \global\let\if@no@font@opt\iftrue
2718 \gdef\@no@font@optfalse{\let\if@no@font@opt\iffalse}
2719 \gdef\define@mathalphabet{%
2720       \err@rel@i\define@mathalphabet\DeclareMathAlphabet
2721 }
2722 \@onlypreamble\define@mathalphabet
2723 \gdef\define@mathgroup{%
2724       \err@rel@i\define@mathgroup\DeclareSymbolFont
2725 }
2726 \@onlypreamble\define@mathgroup
2727 \def\addtoversion#1#2{%
2728   \warn@rel@i\addtoversion\SetMathAlphabet
2729   \SetMathAlphabet#2{#1}{U}}
2730 \@onlypreamble\addtoversion
2731 %%% From File: ltfssdcl.dtx
2732 %% Copyright (C) 1989-1998 Frank Mittelbach and Rainer Sch\"opf,
2733 %% all rights reserved.
2734 \def\in@#1#2{%
2735  \def\in@@##1#1##2##3\in@@{%
2736   \ifx\in@##2\in@false\else\in@true\fi}%
2737  \in@@#2#1\in@\in@@}
2738 \newif\ifin@
2739 \let\version@list=\@empty
2740 \@onlypreamble\version@list
2741 \let\version@elt\relax
2742 \@onlypreamble\version@elt
2743 \let\alpha@list\@empty
2744 \@onlypreamble\alpha@list
2745 \let\alpha@elt\relax
2746 \@onlypreamble\alpha@elt
2747 \count18=-1
2748 \def\select@group#1#2#3#4{%
2749  \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
2750  {%
2751  \ifmmode
2752   \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n
2753      \begingroup
2754        \escapechar\m@ne
2755        \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
2756        \globaldefs\@ne  \math@fonts
2757      \endgroup
2758      \init@restore@version
2759      \xdef#1{\noexpand\use@mathgroup\noexpand#2%
2760              {\number\csname c@mv@\math@version\endcsname}}%
2761      \global\advance\csname c@mv@\math@version\endcsname\@ne
2762    \else
2763      \let#1\relax
2764      \@latex@error{Too many math alphabets used in
2765                    version \math@version}%
2766         \@eha
2767    \fi
2768  \else \expandafter\non@alpherr\fi
2769  #1{#4}%
2770  }%
2771 }
2772 \@onlypreamble\restore@mathversion
2773 \def\init@restore@version{%
2774         \global\let\init@restore@version\relax
2775         \xdef\restore@mathversion
2776              {\expandafter\noexpand\csname mv@\math@version\endcsname
2777               \global\csname c@mv@\math@version\endcsname
2778               \number\csname c@mv@\math@version\endcsname\relax}%
2779         \aftergroup\dorestore@version
2780 }
2781 \@onlypreamble\init@restore@version
2782 \gdef\non@alpherr#1{\@latex@error{%
2783     \expandafter\@firstoftwo\string#1 allowed only in math mode}\@ehd}
2784 \def\dorestore@version
2785  {\ifmmode
2786     \aftergroup\dorestore@version
2787   \else
2788     \gdef\init@restore@version{%
2789         \global\let\init@restore@version\relax
2790         \xdef\restore@mathversion
2791              {\expandafter\noexpand\csname mv@\math@version\endcsname
2792               \global\csname c@mv@\math@version\endcsname
2793               \number\csname c@mv@\math@version\endcsname\relax}%
2794         \aftergroup\dorestore@version
2795     }%
2796     \begingroup
2797       \let\getanddefine@fonts\@gobbletwo
2798       \restore@mathversion
2799     \endgroup
2800   \fi}%
2801 \@onlypreamble\dorestore@version
2802 \def\document@select@group#1#2#3#4{%
2803  \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
2804  {%
2805  \ifmmode
2806    \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n
2807      \begingroup
2808        \escapechar\m@ne
2809        \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
2810        \globaldefs\@ne  \math@fonts
2811      \endgroup
2812      \expandafter\extract@alph@from@version
2813          \csname mv@\math@version\expandafter\endcsname
2814          \expandafter{\number\csname
2815                        c@mv@\math@version\endcsname}%
2816           #1%
2817      \global\advance\csname c@mv@\math@version\endcsname\@ne
2818    \else
2819      \let#1\relax
2820      \@latex@error{Too many math alphabets used
2821                    in version \math@version}%
2822         \@eha
2823   \fi
2824  \else \expandafter\non@alpherr\fi
2825  #1{#4}%
2826  }%
2827 }
2828 \def\process@table{%
2829     \def\cdp@elt##1##2##3##4{%
2830         \@font@info{Checking defaults for
2831                   ##1/##2/##3/##4}%
2832         \expandafter
2833         \ifx\csname##1/##2/##3/##4\endcsname\relax
2834           \begingroup
2835            \def\f@encoding{##1}\def\f@family{##2}%
2836            \try@load@fontshape
2837           \endgroup
2838         \fi
2839         \expandafter
2840         \ifx\csname##1/##2/##3/##4\endcsname\relax
2841              \@latex@error{This NFSS system isn't set up properly}%
2842                        {For encoding scheme ##1 the defaults
2843                         ##2/##3/##4 do not form a valid font shape}%
2844         \else
2845              \@font@info{... okay}%
2846         \fi}%
2847     \cdp@list
2848     \begingroup
2849        \escapechar\m@ne
2850        \error@fontshape
2851        \expandafter\ifx\csname \curr@fontshape\endcsname\relax
2852           \begingroup
2853             \try@load@fontshape
2854            \endgroup
2855        \fi
2856        \expandafter\ifx\csname \curr@fontshape\endcsname\relax
2857          \@latex@error{This NFSS system isn't set up properly}%
2858             {The system maintainer forgot to specify a suitable
2859              substitution
2860              font shape using the \noexpand\DeclareErrorFont
2861              command}%
2862        \fi
2863     \endgroup
2864     \let\select@group\document@select@group
2865     \fontencoding{\encodingdefault}%
2866     \fontfamily{\familydefault}%
2867     \fontseries{\seriesdefault}%
2868     \fontshape{\shapedefault}%
2869  \everyjob{}%
2870 }
2871 \@onlypreamble\process@table
2872 \def\DeclareMathVersion#1{%
2873   \expandafter\new@mathversion\csname mv@#1\endcsname}
2874 \@onlypreamble\DeclareMathVersion
2875 \def\new@mathversion#1{%
2876   \expandafter\in@\expandafter#1\expandafter{\version@list}%
2877   \ifin@
2878     \@font@info{Redeclaring math version
2879                `\expandafter\@gobblefour\string#1'}%
2880   \else
2881     \global\expandafter\newcount\csname c@\expandafter
2882                                 \@gobble\string#1\endcsname
2883     \def\version@elt{\noexpand\version@elt\noexpand}%
2884     \edef\version@list{\version@list\version@elt#1}%
2885   \fi
2886   \toks@{}%
2887   \count@\z@
2888   \def\group@elt##1##2{%
2889        \advance\count@\@ne
2890        \addto@hook\toks@{\getanddefine@fonts##1##2}%
2891        }%
2892   \group@list
2893   \global\csname c@\expandafter\@gobble\string#1\endcsname\count@
2894   \def\alpha@elt##1##2##3{%
2895        \ifx##2\no@alphabet@error
2896          \toks@\expandafter{\the\toks@\install@mathalphabet##1%
2897              {\no@alphabet@error##1}}%
2898        \else
2899          \toks@\expandafter{\the\toks@\install@mathalphabet##1%
2900              {\select@group##1##2##3}}%
2901        \fi
2902           }%
2903   \alpha@list
2904   \xdef#1{\the\toks@}%
2905 }
2906 \@onlypreamble\new@mathversion
2907 \def\DeclareSymbolFont#1#2#3#4#5{%
2908  \@tempswafalse
2909  \edef\reserved@b{#2}%
2910  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
2911       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
2912  \cdp@list
2913  \if@tempswa
2914    \@ifundefined{sym#1}{%
2915       \expandafter\new@mathgroup\csname sym#1\endcsname
2916       \expandafter\new@symbolfont\csname sym#1\endcsname
2917                         {#2}{#3}{#4}{#5}}%
2918      {%
2919       \@font@info{Redeclaring symbol font `#1'}%
2920       \def\group@elt##1##2{%
2921            \noexpand\group@elt\noexpand##1%
2922            \expandafter\ifx\csname sym#1\endcsname##1%
2923              \expandafter\noexpand\csname#2/#3/#4/#5\endcsname
2924            \else
2925                \noexpand##2%
2926            \fi}%
2927       \xdef\group@list{\group@list}%
2928       \def\version@elt##1{%
2929           \expandafter
2930           \SetSymbolFont@\expandafter##1\csname#2/#3/#4/#5\expandafter
2931               \endcsname \csname sym#1\endcsname
2932           }%
2933       \version@list
2934      }%
2935   \else
2936     \@latex@error{Encoding scheme  `#2' unknown}\@eha
2937   \fi
2938   }
2939 \@onlypreamble\DeclareSymbolFont
2940 \let\group@list\@empty
2941 \@onlypreamble\group@list
2942 \let\group@elt\relax
2943 \@onlypreamble\group@elt
2944 \def\new@symbolfont#1#2#3#4#5{%
2945     \toks@\expandafter{\group@list}%
2946     \edef\group@list{\the\toks@\noexpand\group@elt\noexpand#1%
2947                      \expandafter\noexpand\csname#2/#3/#4/#5\endcsname}%
2948     \def\version@elt##1{\toks@\expandafter{##1}%
2949                    \edef##1{\the\toks@\noexpand\getanddefine@fonts
2950                    #1\expandafter\noexpand\csname#2/#3/#4/#5\endcsname}%
2951                   \global\advance\csname c@\expandafter
2952                                  \@gobble\string##1\endcsname\@ne
2953                  }%
2954     \version@list
2955 }
2956 \@onlypreamble\new@symbolfont
2957 \def\SetSymbolFont#1#2#3#4#5#6{%
2958  \@tempswafalse
2959  \edef\reserved@b{#3}%
2960  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
2961       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
2962  \cdp@list
2963  \if@tempswa
2964   \expandafter\SetSymbolFont@
2965     \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter
2966     \endcsname \csname sym#1\endcsname
2967  \else
2968   \@latex@error{Encoding scheme  `#3' unknown}\@eha
2969  \fi
2970 }
2971 \@onlypreamble\SetSymbolFont
2972 \def\SetSymbolFont@#1#2#3{%
2973   \expandafter\in@\expandafter#1\expandafter{\version@list}%
2974   \ifin@
2975     \expandafter\in@\expandafter#3\expandafter{\group@list}%
2976     \ifin@
2977       \begingroup
2978         \expandafter\get@cdp\string#2\@nil\reserved@a
2979         \toks@{}%
2980         \def\install@mathalphabet##1##2{%
2981              \addto@hook\toks@{\install@mathalphabet##1{##2}}%
2982             }%
2983         \def\getanddefine@fonts##1##2{%
2984           \ifnum##1=#3%
2985              \addto@hook\toks@{\getanddefine@fonts#3#2}%
2986              \expandafter\get@cdp\string##2\@nil\reserved@b
2987              \ifx\reserved@a\reserved@b\else
2988                 \@font@warning{Encoding `\reserved@b' has changed
2989                     to `\reserved@a' for symbol font\MessageBreak
2990                    `\expandafter\@gobblefour\string#3' in the
2991                     math version `\expandafter
2992                     \@gobblefour\string#1'}%
2993              \fi
2994              \@font@info{%
2995                 Overwriting symbol font
2996                 `\expandafter\@gobblefour\string#3' in
2997                  version `\expandafter
2998                 \@gobblefour\string#1'\MessageBreak
2999                 \@spaces \expandafter\@gobble\string##2 -->
3000                          \expandafter\@gobble\string#2}%
3001           \else
3002              \addto@hook\toks@{\getanddefine@fonts##1##2}%
3003           \fi}%
3004          #1%
3005          \xdef#1{\the\toks@}%
3006       \endgroup
3007     \else
3008        \@latex@error{Symbol font `\expandafter\@gobblefour\string#3'
3009                   not defined}\@eha
3010     \fi
3011   \else
3012     \@latex@error{Math version `\expandafter\@gobblefour\string#1'
3013        is not
3014        defined}{You probably mispelled the name of the math
3015        version.^^JOr you have to specify an additional package.}%
3016   \fi
3017 }
3018 \@onlypreamble\SetSymbolFont@
3019 \def\get@cdp#1#2/#3\@nil#4{\def#4{#2}}
3020 \@onlypreamble\get@cdp
3021 \def\DeclareMathAlphabet#1#2#3#4#5{%
3022  \@tempswafalse
3023  \edef\reserved@b{#2}%
3024  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
3025       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
3026  \cdp@list
3027  \if@tempswa
3028    \expandafter\ifx
3029    \csname\expandafter\@gobble\string#1\endcsname
3030    \relax
3031       \new@mathalphabet#1{#2}{#3}{#4}{#5}%
3032    \else
3033      \edef\reserved@a{\noexpand\in@{\string\select@group}%
3034          {\expandafter\meaning\csname @\expandafter
3035           \@gobble\string#1\endcsname}}%
3036      \reserved@a
3037      \ifin@
3038        \@font@info{Redeclaring math alphabet \string#1}%
3039        \def\version@elt##1{%
3040          \expandafter\SetMathAlphabet@\expandafter
3041             ##1\csname#2/#3/#4/#5\expandafter\endcsname
3042             \csname M@#2\expandafter\endcsname
3043             \csname @\expandafter\@gobble\string#1\endcsname#1}%
3044        \version@list
3045      \else
3046        \edef\reserved@a{\noexpand\in@{\string\use@mathgroup}%
3047          {\expandafter\meaning\csname @\expandafter
3048           \@gobble\string#1\endcsname}}%
3049        \reserved@a
3050        \ifin@
3051          \@font@info{Redeclaring math alphabet \string#1}%
3052          \new@mathalphabet#1{#2}{#3}{#4}{#5}%
3053        \else
3054          \@latex@error{Command `\string#1' already defined}\@eha
3055        \fi
3056      \fi
3057   \fi
3058  \else
3059   \@latex@error{Encoding scheme  `#2' unknown}\@eha
3060  \fi
3061   }
3062 \@onlypreamble\DeclareMathAlphabet
3063 \def\new@mathalphabet#1#2#3#4#5{%
3064     \toks@\expandafter{\alpha@list}%
3065     \edef#1{\expandafter\noexpand\csname @\expandafter
3066             \@gobble\string#1\endcsname
3067             \if/#5/%
3068                \noexpand\no@alphabet@error
3069                \noexpand\no@alphabet@error
3070             \else
3071                \expandafter\noexpand\csname M@#2\endcsname
3072                \expandafter\noexpand\csname#2/#3/#4/#5\endcsname
3073             \fi
3074            }%
3075     \toks2\expandafter{#1}%
3076     \edef\alpha@list{\the\toks@\noexpand\alpha@elt\the\toks2}%
3077     \def\version@elt##1{\toks@\expandafter{##1}%
3078                    \edef##1{\the\toks@\install@mathalphabet
3079                             \expandafter\noexpand
3080                             \csname @\expandafter\@gobble
3081                                \string#1\endcsname
3082                            {\if/#5/%
3083                              \noexpand\no@alphabet@error
3084                              \noexpand#1%
3085                             \else
3086                              \noexpand\select@group\the\toks2
3087                             \fi}}%
3088                  }%
3089     \version@list
3090     \expandafter\edef\csname @\expandafter\@gobble
3091                 \string#1\endcsname{\if/#5/%
3092               \noexpand\no@alphabet@error
3093               \noexpand#1%
3094             \else
3095               \noexpand\select@group\the\toks2
3096             \fi}%
3097     \edef#1{\noexpand\protect
3098             \expandafter\noexpand\csname @\expandafter
3099             \@gobble\string#1\endcsname}%
3100 }
3101 \@onlypreamble\new@mathalphabet
3102 \def\SetMathAlphabet#1#2#3#4#5#6{%
3103  \@tempswafalse
3104  \edef\reserved@b{#3}%
3105  \def\cdp@elt##1##2##3##4{\def\reserved@c{##1}%
3106       \ifx\reserved@b\reserved@c \@tempswatrue\fi}%
3107  \cdp@list
3108  \if@tempswa
3109   \expandafter\SetMathAlphabet@
3110     \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter
3111     \endcsname \csname M@#3\expandafter\endcsname
3112     \csname @\expandafter\@gobble\string#1\endcsname#1%
3113  \else
3114   \@latex@error{Encoding scheme  `#3' unknown}\@eha
3115  \fi
3116 }
3117 \@onlypreamble\SetMathAlphabet
3118 \def\SetMathAlphabet@#1#2#3#4#5{%
3119   \expandafter\in@\expandafter#1\expandafter{\version@list}%
3120   \ifin@
3121     \expandafter\in@\expandafter#4\expandafter{\alpha@list}%
3122     \ifin@
3123       \begingroup
3124         \toks@{}%
3125         \def\getanddefine@fonts##1##2{%
3126              \addto@hook\toks@{\getanddefine@fonts##1##2}%
3127             }%
3128         \def\reserved@c##1##2##3##4{%                % for message below
3129             \expandafter\@gobble\string##4}%
3130         \def\install@mathalphabet##1##2{%
3131           \ifx##1#4%
3132              \addto@hook\toks@
3133                 {\install@mathalphabet#4{\select@group#4#3#2}}%
3134              \@font@info{Overwriting math alphabet
3135                 `\string#5' in version `\expandafter
3136                  \@gobblefour\string#1'\MessageBreak
3137                  \@spaces \reserved@c##2 -->
3138                         \expandafter\@gobble\string#2}%
3139           \else
3140              \addto@hook\toks@{\install@mathalphabet##1{##2}}%
3141           \fi
3142           }%
3143         #1%
3144         \xdef#1{\the\toks@}%
3145       \endgroup
3146     \else
3147        \edef\reserved@a{%
3148          \noexpand\in@{\string\use@mathgroup}{\meaning#4}}%
3149        \reserved@a
3150        \ifin@
3151          \def\reserved@b##1\use@mathgroup##2##3{%
3152              \def\reserved@b{##3}\def\reserved@c{##2}}%
3153          \expandafter\reserved@b#4%
3154          \begingroup
3155            \def\install@mathalphabet##1##2{%
3156                \addto@hook\toks@{\install@mathalphabet##1{##2}}%
3157                }%
3158             \def\getanddefine@fonts##1##2{%
3159               \addto@hook\toks@{\getanddefine@fonts##1##2}%
3160               \ifnum##1=\reserved@b
3161                  \expandafter
3162                  \addto@hook\expandafter\toks@
3163                  \expandafter{\expandafter\install@mathalphabet
3164                  \expandafter#4\expandafter
3165                        {\expandafter\select@group\expandafter
3166                          #4\reserved@c##2}}%
3167               \fi
3168                       }%
3169            \def\version@elt##1{%
3170                \toks@{}%
3171                ##1%
3172                \xdef##1{\the\toks@}%
3173               }%
3174            \version@list
3175          \endgroup
3176          \expandafter\gdef\expandafter\alpha@list\expandafter
3177              {\alpha@list
3178               \alpha@elt #4\no@alphabet@error \no@alphabet@error}%
3179          \gdef#4{\no@alphabet@error #5}% fake things :-)
3180          \SetMathAlphabet@{#1}{#2}{#3}#4#5%
3181        \else
3182          \@latex@error{Command `\string#5' not defined as a
3183                        math alphabet}%
3184             {Use \noexpand\DeclareMathAlphabet to define it.}%
3185        \fi
3186     \fi
3187   \else
3188     \@latex@error{Math version `\expandafter\@gobblefour\string#1'
3189        is not
3190        defined}{You probably mispelled the name of the math
3191        version.^^JOr you have to specify an additional package.}%
3192   \fi
3193 }
3194 \@onlypreamble\SetMathAlphabet@
3195 \def\DeclareMathAccent#1#2#3#4{%
3196   \expandafter\in@\csname sym#3\expandafter\endcsname
3197      \expandafter{\group@list}%
3198   \ifin@
3199     \begingroup
3200       \count\z@=#4\relax
3201       \count\tw@\count\z@
3202       \divide\count\z@\sixt@@n
3203       \count@\count\z@
3204       \multiply\count@\sixt@@n
3205       \advance\count\tw@-\count@
3206       \if\relax\noexpand#1% is command?
3207         \edef\reserved@a{\noexpand\in@{\string\mathaccent}{\meaning#1}}%
3208         \reserved@a
3209         \ifin@
3210           \expandafter\set@mathaccent
3211              \csname sym#3\endcsname#1#2%
3212              {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3213           \@font@info{Redeclaring math accent \string#1}%
3214         \else
3215           \expandafter\ifx
3216           \csname\expandafter\@gobble\string#1\endcsname
3217           \relax
3218             \expandafter\set@mathaccent
3219                \csname sym#3\endcsname#1#2%
3220                {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3221           \else
3222             \@latex@error{Command `\string#1' already defined}\@eha
3223           \fi
3224         \fi
3225       \else
3226        \@latex@error{Not a command name: `\noexpand#1'}\@eha
3227       \fi
3228     \endgroup
3229   \else
3230     \@latex@error{Symbol font `#3' is not defined}\@eha
3231   \fi
3232 }
3233 \@onlypreamble\DeclareMathAccent
3234 \def\set@mathaccent#1#2#3#4{%
3235   \xdef#2{\mathaccent"\mathchar@type#3\hexnumber@#1#4\relax}}
3236 \@onlypreamble\set@mathaccent
3237 \def\DeclareMathSymbol#1#2#3#4{%
3238   \expandafter\in@\csname sym#3\expandafter\endcsname
3239      \expandafter{\group@list}%
3240   \ifin@
3241     \begingroup
3242       \count\z@=#4\relax
3243       \count\tw@\count\z@
3244       \divide\count\z@\sixt@@n
3245       \count@\count\z@
3246       \multiply\count@\sixt@@n
3247       \advance\count\tw@-\count@
3248       \if\relax\noexpand#1% is command?
3249         \edef\reserved@a{\noexpand\in@{\string\mathchar}{\meaning#1}}%
3250         \reserved@a
3251         \ifin@
3252           \expandafter\set@mathsymbol
3253              \csname sym#3\endcsname#1#2%
3254              {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3255           \@font@info{Redeclaring math symbol \string#1}%
3256         \else
3257             \expandafter\ifx
3258             \csname\expandafter\@gobble\string#1\endcsname
3259             \relax
3260             \expandafter\set@mathsymbol
3261                \csname sym#3\endcsname#1#2%
3262                {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3263           \else
3264             \@latex@error{Command `\string#1' already defined}\@eha
3265           \fi
3266         \fi
3267       \else
3268         \expandafter\set@mathchar
3269           \csname sym#3\endcsname#1#2
3270           {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3271       \fi
3272     \endgroup
3273   \else
3274     \@latex@error{Symbol font `#3' is not defined}\@eha
3275   \fi
3276 }
3277 \@onlypreamble\DeclareMathSymbol
3278 \def\set@mathchar#1#2#3#4{%
3279   \global\mathcode`#2="\mathchar@type#3\hexnumber@#1#4\relax}
3280 \@onlypreamble\set@mathchar
3281 \def\set@mathsymbol#1#2#3#4{%
3282   \global\mathchardef#2"\mathchar@type#3\hexnumber@#1#4\relax}
3283 \@onlypreamble\set@mathsymbol
3284 \def\DeclareMathDelimiter#1{%
3285   \if\relax\noexpand#1%
3286     \expandafter\@DeclareMathDelimiter
3287   \else
3288     \expandafter\@xxDeclareMathDelimiter
3289   \fi
3290   #1}
3291 \@onlypreamble\DeclareMathDelimiter
3292 \def\@xxDeclareMathDelimiter#1#2#3#4{%
3293    \begingroup
3294     \let\mathalpha\mathord
3295     \ifnum7=\mathchar@type{#2}%
3296       \endgroup
3297       \expandafter\@firstofone
3298     \else
3299       \endgroup
3300       \DeclareMathSymbol#1{#2}{#3}{#4}%
3301       \expandafter\@firstoftwo
3302     \fi
3303     {\@xDeclareMathDelimiter#1}{#2}{#3}{#4}}
3304 \@onlypreamble\@xxDeclareMathDelimiter
3305 \def\@DeclareMathDelimiter#1#2#3#4#5#6{%
3306   \expandafter\in@\csname sym#3\expandafter\endcsname
3307      \expandafter{\group@list}%
3308   \ifin@
3309     \expandafter\in@\csname sym#5\expandafter\endcsname
3310        \expandafter{\group@list}%
3311     \ifin@
3312       \begingroup
3313         \count\z@=#4\relax
3314         \count\tw@\count\z@
3315         \divide\count\z@\sixt@@n
3316         \count@\count\z@
3317         \multiply\count@\sixt@@n
3318         \advance\count\tw@-\count@
3319         \edef\reserved@c{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3320       %
3321         \count\z@=#6\relax
3322         \count\tw@\count\z@
3323         \divide\count\z@\sixt@@n
3324         \count@\count\z@
3325         \multiply\count@\sixt@@n
3326         \advance\count\tw@-\count@
3327         \edef\reserved@d{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3328       %
3329         \edef\reserved@a{\noexpand\in@{\string\delimiter}{\meaning#1}}%
3330         \reserved@a
3331         \ifin@
3332           \expandafter\set@mathdelimiter
3333              \csname sym#3\expandafter\endcsname
3334              \csname sym#5\endcsname#1#2%
3335              \reserved@c\reserved@d
3336           \@font@info{Redeclaring math delimiter \string#1}%
3337         \else
3338             \expandafter\ifx
3339             \csname\expandafter\@gobble\string#1\endcsname
3340             \relax
3341             \expandafter\set@mathdelimiter
3342               \csname sym#3\expandafter\endcsname
3343               \csname sym#5\endcsname#1#2%
3344               \reserved@c\reserved@d
3345           \else
3346             \@latex@error{Command `\string#1' already defined}\@eha
3347           \fi
3348         \fi
3349       \endgroup
3350     \else
3351       \@latex@error{Symbol font `#5' is not defined}\@eha
3352     \fi
3353   \else
3354     \@latex@error{Symbol font `#3' is not defined}\@eha
3355   \fi
3356 }
3357 \@onlypreamble\@DeclareMathDelimiter
3358 \def\@xDeclareMathDelimiter#1#2#3#4#5{%
3359   \expandafter\in@\csname sym#2\expandafter\endcsname
3360      \expandafter{\group@list}%
3361   \ifin@
3362     \expandafter\in@\csname sym#4\expandafter\endcsname
3363        \expandafter{\group@list}%
3364     \ifin@
3365       \begingroup
3366         \count\z@=#3\relax
3367         \count\tw@\count\z@
3368         \divide\count\z@\sixt@@n
3369         \count@\count\z@
3370         \multiply\count@\sixt@@n
3371         \advance\count\tw@-\count@
3372         \edef\reserved@c{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3373       %
3374         \count\z@=#5\relax
3375         \count\tw@\count\z@
3376         \divide\count\z@\sixt@@n
3377         \count@\count\z@
3378         \multiply\count@\sixt@@n
3379         \advance\count\tw@-\count@
3380         \edef\reserved@d{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3381         \expandafter\set@@mathdelimiter
3382            \csname sym#2\expandafter\endcsname\csname sym#4\endcsname#1%
3383            \reserved@c\reserved@d
3384       \endgroup
3385     \else
3386       \@latex@error{Symbol font `#4' is not defined}\@eha
3387     \fi
3388   \else
3389     \@latex@error{Symbol font `#2' is not defined}\@eha
3390   \fi
3391 }
3392 \@onlypreamble\@xDeclareMathDelimiter
3393 \def\set@mathdelimiter#1#2#3#4#5#6{%
3394   \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5%
3395                                      \hexnumber@#2#6 }}
3396 \@onlypreamble\set@mathdelimiter
3397 \def\set@@mathdelimiter#1#2#3#4#5{%
3398   \global\delcode`#3="\hexnumber@#1#4\hexnumber@#2#5\relax}
3399 \@onlypreamble\set@@mathdelimiter
3400 \def\DeclareMathRadical#1#2#3#4#5{%
3401   \expandafter\ifx
3402        \csname\expandafter\@gobble\string#1\endcsname
3403        \relax
3404      \let#1\radical
3405   \fi
3406   \edef\reserved@a{\noexpand\in@{\string\radical}{\meaning#1}}%
3407   \reserved@a
3408   \ifin@
3409     \expandafter\in@\csname sym#2\expandafter\endcsname
3410        \expandafter{\group@list}%
3411     \ifin@
3412       \expandafter\in@\csname sym#4\expandafter\endcsname
3413          \expandafter{\group@list}%
3414       \ifin@
3415         \begingroup
3416           \count\z@=#3\relax
3417           \count\tw@\count\z@
3418           \divide\count\z@\sixt@@n
3419           \count@\count\z@
3420           \multiply\count@\sixt@@n
3421           \advance\count\tw@-\count@
3422           \edef\reserved@c{%
3423             \hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3424           \count\z@=#5\relax
3425           \count\tw@\count\z@
3426           \divide\count\z@\sixt@@n
3427           \count@\count\z@
3428           \multiply\count@\sixt@@n
3429           \advance\count\tw@-\count@
3430           \edef\reserved@d{%
3431             \hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3432           \xdef#1{\radical"\expandafter\hexnumber@
3433                                 \csname sym#2\endcsname\reserved@c
3434                              \expandafter\hexnumber@
3435                                 \csname sym#4\endcsname\reserved@d
3436                   \relax}%
3437         \endgroup
3438       \else
3439         \@latex@error{Symbol font `#4' is not defined}\@eha
3440       \fi
3441     \else
3442       \@latex@error{Symbol font `#2' is not defined}\@eha
3443     \fi
3444   \else
3445     \@latex@error{Command `\string#1' already defined}\@eha
3446   \fi
3447 }
3448 \@onlypreamble\DeclareMathRadical
3449 \let\mathalpha\relax
3450 \def\mathchar@type#1{%
3451   \ifodd 2#11 #1\else             % is this non-negative number?
3452     \ifx#1\mathord 0\else
3453      \ifx#1\mathop   1\else
3454        \ifx#1\mathbin 2\else
3455          \ifx#1\mathrel 3\else
3456            \ifx#1\mathopen 4\else
3457              \ifx#1\mathclose 5\else
3458                \ifx#1\mathpunct 6\else
3459                    7%             % anything else is variable ord
3460                \fi
3461              \fi
3462            \fi
3463          \fi
3464        \fi
3465      \fi
3466     \fi
3467   \fi}
3468 \@onlypreamble\mathchar@type
3469 \def\DeclareSymbolFontAlphabet#1#2{%
3470    \expandafter\DeclareSymbolFontAlphabet@
3471      \csname @\expandafter\@gobble\string#1\endcsname{#2}#1}
3472 \@onlypreamble\DeclareSymbolFontAlphabet
3473 \def\DeclareSymbolFontAlphabet@#1#2#3{%
3474     \@tempswatrue
3475   \expandafter\in@\csname sym#2\expandafter\endcsname
3476      \expandafter{\group@list}%
3477   \ifin@
3478     \expandafter\in@\expandafter#1\expandafter{\alpha@list}%
3479     \ifin@
3480       \@font@info{Redeclaring math alphabet \string#3}%
3481       \toks@{}%
3482       \def\alpha@elt##1##2##3{%
3483           \ifx##1#1\else\addto@hook\toks@{\alpha@elt##1##2##3}\fi}%
3484       \alpha@list
3485       \xdef\alpha@list{\the\toks@}%
3486       \def\version@elt##1{%
3487           \begingroup
3488             \toks@{}%
3489             \def\getanddefine@fonts####1####2{%
3490                \addto@hook\toks@{\getanddefine@fonts####1####2}}%
3491             \def\install@mathalphabet####1####2{%
3492                \ifx####1#1\else
3493                  \addto@hook\toks@{\install@mathalphabet
3494                                     ####1{####2}}\fi}%
3495             ##1%
3496             \xdef##1{\the\toks@}%
3497           \endgroup
3498           }%
3499       \version@list
3500     \else
3501       \expandafter\ifx
3502       \csname\expandafter\@gobble\string#1\endcsname
3503       \relax
3504       \else
3505         \edef\reserved@a{%
3506           \noexpand\in@{\string\use@mathgroup}{\meaning#1}}%
3507         \reserved@a
3508         \ifin@
3509           \@font@info{Redeclaring math alphabet \string#3}%
3510         \else
3511           \@tempswafalse
3512           \@latex@error{Command `\string#3' already defined}\@eha
3513         \fi
3514       \fi
3515     \fi
3516    \else
3517      \@tempswafalse
3518      \@latex@error{Unknown symbol font `#2'}\@eha
3519    \fi
3520    \if@tempswa
3521      \def\group@elt##1##2{%
3522         \expandafter\ifx\csname sym#2\endcsname##1%
3523         \expandafter\reserved@a\string##2\@nil
3524         \fi}%
3525      \def\reserved@a##1##2/##3\@nil{%
3526         \def\reserved@a{##2}}%
3527      \group@list
3528      \toks@{\relax\ifmmode \else \non@alpherr#1\fi}%
3529      \edef#1{\the\toks@
3530              \noexpand\use@mathgroup
3531              \expandafter\noexpand\csname M@\reserved@a\endcsname
3532              \csname sym#2\endcsname}%
3533      \def#3{\protect#1}%
3534    \fi
3535 }
3536 \@onlypreamble\DeclareSymbolFontAlphabet@
3537 %%% From File: ltfssini.dtx
3538 %% Copyright (C) 1989-2001 Frank Mittelbach and Rainer Sch\"opf,
3539 %% all rights reserved.
3540 \DeclareMathVersion{normal}
3541 \DeclareMathVersion{bold}
3542 \DeclareRobustCommand\rmfamily
3543         {\not@math@alphabet\rmfamily\mathrm
3544          \fontfamily\rmdefault\selectfont}
3545 \DeclareRobustCommand\sffamily
3546         {\not@math@alphabet\sffamily\mathsf
3547          \fontfamily\sfdefault\selectfont}
3548 \DeclareRobustCommand\ttfamily
3549         {\not@math@alphabet\ttfamily\mathtt
3550          \fontfamily\ttdefault\selectfont}
3551 \DeclareRobustCommand\bfseries
3552         {\not@math@alphabet\bfseries\mathbf
3553          \fontseries\bfdefault\selectfont}
3554 \DeclareRobustCommand\mdseries
3555         {\not@math@alphabet\mdseries\relax
3556          \fontseries\mddefault\selectfont}
3557 \DeclareRobustCommand\upshape
3558         {\not@math@alphabet\upshape\relax
3559          \fontshape\updefault\selectfont}
3560 \DeclareRobustCommand\slshape
3561         {\not@math@alphabet\slshape\relax
3562          \fontshape\sldefault\selectfont}
3563 \DeclareRobustCommand\scshape
3564         {\not@math@alphabet\scshape\relax
3565          \fontshape\scdefault\selectfont}
3566 \DeclareRobustCommand\itshape
3567         {\not@math@alphabet\itshape\mathit
3568          \fontshape\itdefault\selectfont}
3569 \DeclareRobustCommand\em
3570         {\@nomath\em \ifdim \fontdimen\@ne\font >\z@
3571                        \upshape \else \itshape \fi}
3572 \def\not@math@alphabet#1#2{%
3573    \relax
3574    \ifmmode
3575      \@latex@error{Command \noexpand#1invalid in math mode}%
3576         {%
3577          Please
3578          \ifx#2\relax
3579             define a new math alphabet^^J%
3580             if you want to use a special font in math mode%
3581           \else
3582             use the math alphabet \noexpand#2instead of
3583             the #1command%
3584          \fi
3585          .
3586         }%
3587    \fi}
3588 \def\boldmath{\@nomath\boldmath
3589               \mathversion{bold}}
3590 \def\unboldmath{\@nomath\unboldmath
3591               \mathversion{normal}}
3592 \def\math@version{normal}
3593 \def\newfont#1#2{\@ifdefinable#1{\font#1=#2\relax}}
3594 \def\symbol#1{\char #1\relax}
3595 \def\@setfontsize#1#2#3{\@nomath#1%
3596     \ifx\protect\@typeset@protect
3597       \let\@currsize#1%
3598     \fi
3599     \fontsize{#2}{#3}\selectfont}
3600 \def\@setsize#1#2#3#4{\@setfontsize#1{#4}{#2}}
3601 \def\oldstylenums#1{%
3602    \begingroup
3603     \spaceskip\fontdimen\tw@\font
3604     \usefont{OML}{\rmdefault}{\f@series}{it}%
3605     \mathgroup\symletters #1%
3606    \endgroup
3607 }
3608 \def\hexnumber@#1{\ifcase\number#1
3609  0\or 1\or 2\or 3\or 4\or 5\or 6\or 7\or 8\or
3610  9\or A\or B\or C\or D\or E\or F\fi}
3611 \def\nfss@text#1{{\mbox{#1}}}
3612 \DeclareRobustCommand\normalfont
3613                  {\usefont\encodingdefault
3614                           \familydefault
3615                           \seriesdefault
3616                           \shapedefault
3617                   \relax}
3618 \let\reset@font\normalfont
3619 \def\not@base#1{\@latex@error
3620   {Command \noexpand#1not provided in base LaTeX2e}%
3621   {Load the latexsym or the amsfonts package to
3622    define this symbol}}
3623 \def\mho{\not@base\mho}
3624 \def\Join{\not@base\Join}
3625 \def\Box{\not@base\Box}
3626 \def\Diamond{\not@base\Diamond}
3627 \def\leadsto{\not@base\leadsto}
3628 \def\sqsubset{\not@base\sqsubset}
3629 \def\sqsupset{\not@base\sqsupset}
3630 \def\lhd{\not@base\lhd}
3631 \def\unlhd{\not@base\unlhd}
3632 \def\rhd{\not@base\rhd}
3633 \def\unrhd{\not@base\unrhd}
3634 \DeclareErrorFont{OT1}{cmr}{m}{n}{10}  %% don't modify this setting
3635                                        %% overwrite it in fontdef.cfg
3636                                        %% if necessary
3637 \ifnum\inputlineno=\m@ne
3638 \InputIfFileExists{fonttext.cfg}
3639            {\typeout{====================================^^J%
3640                      ^^J%
3641                       Local config file fonttext.cfg used^^J%
3642                      ^^J%
3643                      ====================================}%
3644              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3645             }
3646            {\typeout{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
3647                      !^^J%
3648                      ! You MUST use a fonttext.cfg file!^^J%
3649                      ! As you are still using TeX2!!!!!^^J%
3650                      !^^J%
3651                      ! See the documentation file tex2.txt^^J%
3652                      !^^J%
3653                      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}%
3654                     \batchmode \@@end}
3655 \else
3656 \InputIfFileExists{fonttext.cfg}
3657            {\typeout{====================================^^J%
3658                      ^^J%
3659                       Local config file fonttext.cfg used^^J%
3660                      ^^J%
3661                      ====================================}%
3662              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3663             }
3664            {\input{fonttext.ltx}}
3665 \fi
3666 \let\@addtofilelist\@gobble
3667 \InputIfFileExists{fontmath.cfg}
3668            {\typeout{====================================^^J%
3669                      ^^J%
3670                       Local config file fontmath.cfg used^^J%
3671                      ^^J%
3672                      ====================================}%
3673              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3674             }
3675            {\input{fontmath.ltx}}
3676 \let\@addtofilelist\@gobble
3677 \InputIfFileExists{preload.cfg}
3678            {\typeout{====================================^^J%
3679                      ^^J%
3680                       Local config file preload.cfg used^^J%
3681                      ^^J%
3682                      =====================================}%
3683              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3684             }
3685            {\input{preload.ltx}}
3686 \let\@addtofilelist\@gobble
3687 \let\@acci\' \let\@accii\` \let\@acciii\=
3688 %%% From File: ltfntcmd.dtx
3689 %%
3690 %% \CharacterTable
3691 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
3692 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
3693 %%   Digits        \0\1\2\3\4\5\6\7\8\9
3694 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
3695 %%   Dollar        \$     Percent       \%     Ampersand     \&
3696 %%   Acute accent  \'     Left paren    \(     Right paren   \)
3697 %%   Asterisk      \*     Plus          \+     Comma         \,
3698 %%   Minus         \-     Point         \.     Solidus       \/
3699 %%   Colon         \:     Semicolon     \;     Less than     \<
3700 %%   Equals        \=     Greater than  \>     Question mark \?
3701 %%   Commercial at \@     Left bracket  \[     Backslash     \\
3702 %%   Right bracket \]     Circumflex    \^     Underscore    \_
3703 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
3704 %%   Right brace   \}     Tilde         \~}
3705 \def \DeclareTextFontCommand #1#2{%
3706   \DeclareRobustCommand#1[1]{%
3707     \ifmmode
3708       \nfss@text{#2##1}%
3709     \else
3710       \hmode@bgroup
3711        \text@command{##1}%
3712        #2\check@icl ##1\check@icr
3713        \expandafter
3714       \egroup
3715     \fi
3716                        }%
3717 }
3718 \DeclareTextFontCommand{\textrm}{\rmfamily}
3719 \DeclareTextFontCommand{\textsf}{\sffamily}
3720 \DeclareTextFontCommand{\texttt}{\ttfamily}
3721 \DeclareTextFontCommand{\textnormal}{\normalfont}
3722 \DeclareTextFontCommand{\textbf}{\bfseries}
3723 \DeclareTextFontCommand{\textmd}{\mdseries}
3724 \DeclareTextFontCommand{\textit}{\itshape}
3725 \DeclareTextFontCommand{\textsl}{\slshape}
3726 \DeclareTextFontCommand{\textsc}{\scshape}
3727 \DeclareTextFontCommand{\textup}{\upshape}
3728 \DeclareTextFontCommand{\emph}{\em}
3729 \let \nocorr \relax
3730 \let \check@icl \@empty
3731 \let \check@icr \@empty
3732 \def \text@command #1{%
3733   \def \reserved@a {#1}%
3734   \ifx \reserved@a \@empty
3735     \let \check@icl \@empty
3736     \let \check@icr \@empty
3737   \else
3738     \ifx \reserved@a \space
3739       \let \check@icl \@empty
3740       \let \check@icr \@empty
3741     \else
3742       \check@nocorr@ #1\nocorr\@nil
3743     \fi
3744   \fi
3745 }
3746 \def \check@nocorr@ #1#2\nocorr#3\@nil {%
3747   \let \check@icl \maybe@ic
3748   \def \check@icr {\ifvmode \else \aftergroup \maybe@ic \fi}%
3749   \def \reserved@a {\nocorr}%
3750   \def \reserved@b {#1}%
3751   \def \reserved@c {#3}%
3752   \ifx \reserved@a \reserved@b
3753     \ifx \reserved@c \@empty
3754       \let \check@icl \@empty
3755     \else
3756       \let \check@icl \@empty
3757       \let \check@icr \@empty
3758     \fi
3759   \else
3760     \ifx \reserved@c \@empty
3761     \else
3762       \let \check@icr \@empty
3763     \fi
3764   \fi
3765 }
3766 \def \maybe@ic {\futurelet\@let@token\maybe@ic@}
3767 \def \maybe@ic@ {%
3768   \ifdim  \fontdimen\@ne\font>\z@
3769   \else
3770     \@tempswatrue
3771     \expandafter\@tfor\expandafter\reserved@a\expandafter:\expandafter=%
3772         \nocorrlist
3773     \do \t@st@ic
3774     \if@tempswa \sw@slant \fi
3775   \fi
3776 }
3777 \def \t@st@ic {%
3778   \expandafter\let\expandafter\reserved@b\expandafter=\reserved@a\relax
3779   \ifx\reserved@b\@let@token
3780     \@tempswafalse
3781     \@break@tfor
3782   \fi
3783 }
3784 \def \sw@slant {%
3785   \ifdim \lastskip=\z@
3786     \fix@penalty
3787   \else
3788     \skip@ \lastskip
3789     \unskip
3790     \fix@penalty
3791     \hskip \skip@
3792   \fi
3793 }
3794 \def \fix@penalty {%
3795   \ifnum \lastpenalty=\z@
3796     \@@italiccorr
3797   \else
3798     \count@ \lastpenalty
3799     \unpenalty
3800     \@@italiccorr
3801     \penalty \count@
3802   \fi
3803 }
3804 \def \nocorrlist {,.}
3805 \ifx \nfss@text\@undefined
3806   \def \nfss@text {\leavevmode\hbox}
3807 \fi
3808 \def \DeclareOldFontCommand #1#2#3{%
3809   \DeclareRobustCommand #1{\@fontswitch {#2}{#3}}%
3810 }
3811 \def \@fontswitch #1#2{%
3812   \ifmmode
3813      \let \math@bgroup \relax
3814      \def \math@egroup {\let \math@bgroup \@@math@bgroup
3815                         \let \math@egroup \@@math@egroup}%
3816      #2\relax
3817   \else
3818      #1%
3819   \fi
3820 }
3821 \let \@@math@bgroup \math@bgroup
3822 \let \@@math@egroup \math@egroup
3823 \@onlypreamble \DeclareTextFontCommand
3824 \@onlypreamble \DeclareOldFontCommand
3825 \def\normalsize{%
3826   \@latex@error {The font size command \protect\normalsize\space
3827               is not defined:\MessageBreak
3828               there is probably something wrong with
3829               the class file}\@eha
3830 }
3831 %%% From File: ltpageno.dtx
3832 \message{page nos.,}
3833 \countdef\c@page=0 \c@page=1
3834 \def\cl@page{}
3835 \def\pagenumbering#1{%
3836   \global\c@page \@ne \gdef\thepage{\csname @#1\endcsname
3837    \c@page}}
3838 %%% From File: ltxref.dtx
3839 \message{x-ref,}
3840 \def\G@refundefinedtrue{%
3841   \gdef\@refundefined{%
3842     \@latex@warning@no@line{There were undefined references}}}
3843 \let\@refundefined\relax
3844 \def\@setref#1#2#3{%
3845   \ifx#1\relax
3846    \protect\G@refundefinedtrue
3847    \nfss@text{\reset@font\bfseries ??}%
3848    \@latex@warning{Reference `#3' on page \thepage \space
3849              undefined}%
3850   \else
3851    \expandafter#2#1\null
3852   \fi}
3853 \def\ref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
3854 \def\pageref#1{\expandafter\@setref\csname r@#1\endcsname
3855                                    \@secondoftwo{#1}}
3856 \def\@newl@bel#1#2#3{{%
3857   \@ifundefined{#1@#2}%
3858     \relax
3859     {\gdef \@multiplelabels {%
3860        \@latex@warning@no@line{There were multiply-defined labels}}%
3861      \@latex@warning@no@line{Label `#2' multiply defined}}%
3862   \global\@namedef{#1@#2}{#3}}}
3863 \def\newlabel{\@newl@bel r}
3864 \@onlypreamble\@newl@bel
3865 \let \@multiplelabels \relax
3866 \def\label#1{\@bsphack
3867   \protected@write\@auxout{}%
3868          {\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
3869   \@esphack}
3870 \def\refstepcounter#1{\stepcounter{#1}%
3871     \protected@edef\@currentlabel
3872        {\csname p@#1\endcsname\csname the#1\endcsname}%
3873 }
3874 \def\@currentlabel{}
3875 %%% From File: ltmiscen.dtx
3876 \message{environments,}
3877 \def\@currenvir{document}
3878 \def\@ignorefalse{\global\let\if@ignore\iffalse}
3879 \def\@ignoretrue {\global\let\if@ignore\iftrue}
3880 \@ignorefalse
3881 \let\ignorespacesafterend\@ignoretrue
3882 \def\enddocument{%
3883    \let\AtEndDocument\@firstofone
3884    \@enddocumenthook
3885    \@checkend{document}%
3886    \clearpage
3887    \begingroup
3888      \if@filesw
3889        \immediate\closeout\@mainaux
3890        \let\@setckpt\@gobbletwo
3891        \let\@newl@bel\@testdef
3892        \@tempswafalse
3893        \makeatletter \input\jobname.aux
3894      \fi
3895      \@dofilelist
3896      \ifdim \font@submax >\fontsubfuzz\relax
3897        \@font@warning{Size substitutions with differences\MessageBreak
3898                   up to \font@submax\space have occurred.\@gobbletwo}%
3899      \fi
3900      \@defaultsubs
3901      \@refundefined
3902      \if@filesw
3903        \ifx \@multiplelabels \relax
3904          \if@tempswa
3905            \@latex@warning@no@line{Label(s) may have changed.
3906                Rerun to get cross-references right}%
3907          \fi
3908        \else
3909          \@multiplelabels
3910        \fi
3911      \fi
3912    \endgroup
3913    \deadcycles\z@\@@end}
3914 \def\@testdef #1#2#3{%
3915   \def\reserved@a{#3}\expandafter \ifx \csname #1@#2\endcsname
3916  \reserved@a  \else \@tempswatrue \fi}
3917 \long\def\@writefile#1#2{%
3918   \@ifundefined{tf@#1}\relax
3919     {\@temptokena{#2}%
3920      \immediate\write\csname tf@#1\endcsname{\the\@temptokena}%
3921     }%
3922 }
3923 \def\stop{\clearpage\deadcycles\z@\let\par\@@par\@@end}
3924 \everypar{\@nodocument} %% To get an error if text appears before the
3925 \nullfont               %% \begin{document}
3926 \def\begin#1{%
3927   \@ifundefined{#1}%
3928     {\def\reserved@a{\@latex@error{Environment #1 undefined}\@eha}}%
3929     {\def\reserved@a{\def\@currenvir{#1}%
3930      \edef\@currenvline{\on@line}%
3931      \csname #1\endcsname}}%
3932   \@ignorefalse
3933   \begingroup\@endpefalse\reserved@a}
3934 \def\end#1{%
3935   \csname end#1\endcsname\@checkend{#1}%
3936   \expandafter\endgroup\if@endpe\@doendpe\fi
3937   \if@ignore\@ignorefalse\ignorespaces\fi}
3938 \def\@checkend#1{\def\reserved@a{#1}\ifx
3939       \reserved@a\@currenvir \else\@badend{#1}\fi}
3940 \let\@currenvline\@empty
3941 \message{center,}
3942 \def\@centercr{\ifhmode \unskip\else \@nolnerr\fi
3943        \par\@ifstar{\nobreak\@xcentercr}\@xcentercr}
3944 \def\@xcentercr{\addvspace{-\parskip}\@ifnextchar
3945     [\@icentercr\ignorespaces}
3946 \def\@icentercr[#1]{\vskip #1\ignorespaces}
3947 \def\center{\trivlist \centering\item\relax}
3948 \def\endcenter{\endtrivlist}
3949 \def\centering{%
3950   \let\\\@centercr
3951   \rightskip\@flushglue\leftskip\@flushglue
3952   \parindent\z@\parfillskip\z@skip}
3953 \newskip\@rightskip \@rightskip \z@skip
3954 \def\flushleft{\trivlist \raggedright\item\relax}
3955 \def\endflushleft{\endtrivlist}
3956 \def\raggedright{%
3957   \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip
3958   \leftskip\z@skip
3959   \parindent\z@}
3960 \def\flushright{\trivlist \raggedleft\item\relax}
3961 \def\endflushright{\endtrivlist}
3962 \def\raggedleft{%
3963   \let\\\@centercr
3964   \rightskip\z@skip\leftskip\@flushglue
3965   \parindent\z@\parfillskip\z@skip}
3966 \message{verbatim,}
3967 {\catcode`\ =\active%
3968 \gdef\@vobeyspaces{\catcode`\ \active\let \@xobeysp}}
3969 \begingroup \catcode `|=0 \catcode `[= 1
3970 \catcode`]=2 \catcode `\{=12 \catcode `\}=12
3971 \catcode`\\=12 |gdef|@xverbatim#1\end{verbatim}[#1|end[verbatim]]
3972 |gdef|@sxverbatim#1\end{verbatim*}[#1|end[verbatim*]]
3973 |endgroup
3974 \def\@verbatim{\trivlist \item\relax
3975   \if@minipage\else\vskip\parskip\fi
3976   \leftskip\@totalleftmargin\rightskip\z@skip
3977   \parindent\z@\parfillskip\@flushglue\parskip\z@skip
3978   \@@par
3979   \@tempswafalse \puxXspace1 %%PULATEX
3980   \def\par{%
3981     \if@tempswa
3982       \leavevmode \null \@@par\penalty\interlinepenalty
3983     \else
3984       \@tempswatrue
3985       \ifhmode\@@par\penalty\interlinepenalty\fi
3986     \fi}%
3987   \let\do\@makeother \dospecials
3988   \obeylines \verbatim@font \@noligs
3989   \hyphenchar\font\m@ne
3990   \everypar \expandafter{\the\everypar \unpenalty}%
3991 }
3992 \def\verbatim{\@verbatim \frenchspacing\@vobeyspaces \@xverbatim}
3993 \def\endverbatim{\if@newlist \leavevmode\fi\endtrivlist}
3994 \def\verbatim@font{\normalfont\ttfamily}
3995 \@namedef{verbatim*}{\@verbatim\@sxverbatim}
3996 \expandafter\let\csname endverbatim*\endcsname =\endverbatim
3997 \def\@makeother#1{\catcode`#112\relax}
3998 \let\verb@balance@group\@empty
3999 \def\verb@egroup{\global\let\verb@balance@group\@empty\egroup}
4000 \begingroup
4001   \obeylines%
4002   \gdef\verb@eol@error{\obeylines%
4003     \def^^M{\verb@egroup\@latex@error{%
4004             \noexpand\verb ended by end of line}\@ehc}}%
4005 \endgroup
4006 \def\verb{\relax\ifmmode\hbox\else\leavevmode\null\fi
4007   \bgroup \puxXspace1 %%PULATEX
4008     \verb@eol@error \let\do\@makeother \dospecials
4009     \verbatim@font\@noligs
4010     \@ifstar\@sverb\@verb}
4011 \def\@sverb#1{%
4012   \catcode`#1\active
4013   \lccode`\~`#1%
4014   \gdef\verb@balance@group{\verb@egroup
4015      \@latex@error{\noexpand\verb illegal in command argument}\@ehc}%
4016   \aftergroup\verb@balance@group
4017   \lowercase{\let~\verb@egroup}}%
4018 \def\@verb{\@vobeyspaces \frenchspacing \@sverb}
4019 \def\verbatim@nolig@list{\do\`\do\<\do\>\do\,\do\'\do\-}
4020 \def\do@noligs#1{%
4021   \catcode`#1\active
4022   \begingroup
4023      \lccode`\~`#1\relax
4024      \lowercase{\endgroup\def~{\leavevmode\kern\z@\char`#1}}}
4025 \def\@noligs{\let\do\do@noligs \verbatim@nolig@list}
4026 %%% From File: ltmath.dtx
4027 \message{math definitions,}
4028 %% \CharacterTable
4029 %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
4030 %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
4031 %%   Digits        \0\1\2\3\4\5\6\7\8\9
4032 %%   Exclamation   \!     Double quote  \"     Hash (number) \#
4033 %%   Dollar        \$     Percent       \%     Ampersand     \&
4034 %%   Acute accent  \'     Left paren    \(     Right paren   \)
4035 %%   Asterisk      \*     Plus          \+     Comma         \,
4036 %%   Minus         \-     Point         \.     Solidus       \/
4037 %%   Colon         \:     Semicolon     \;     Less than     \<
4038 %%   Equals        \=     Greater than  \>     Question mark \?
4039 %%   Commercial at \@     Left bracket  \[     Backslash     \\
4040 %%   Right bracket \]     Circumflex    \^     Underscore    \_
4041 %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
4042 %%   Right brace   \}     Tilde         \~}
4043 %%
4044 \def\log{\mathop{\operator@font log}\nolimits}
4045 \def\lg{\mathop{\operator@font lg}\nolimits}
4046 \def\ln{\mathop{\operator@font ln}\nolimits}
4047 \def\lim{\mathop{\operator@font lim}}
4048 \def\limsup{\mathop{\operator@font lim\,sup}}
4049 \def\liminf{\mathop{\operator@font lim\,inf}}
4050 \def\sin{\mathop{\operator@font sin}\nolimits}
4051 \def\arcsin{\mathop{\operator@font arcsin}\nolimits}
4052 \def\sinh{\mathop{\operator@font sinh}\nolimits}
4053 \def\cos{\mathop{\operator@font cos}\nolimits}
4054 \def\arccos{\mathop{\operator@font arccos}\nolimits}
4055 \def\cosh{\mathop{\operator@font cosh}\nolimits}
4056 \def\tan{\mathop{\operator@font tan}\nolimits}
4057 \def\arctan{\mathop{\operator@font arctan}\nolimits}
4058 \def\tanh{\mathop{\operator@font tanh}\nolimits}
4059 \def\cot{\mathop{\operator@font cot}\nolimits}
4060 \def\coth{\mathop{\operator@font coth}\nolimits}
4061 \def\sec{\mathop{\operator@font sec}\nolimits}
4062 \def\csc{\mathop{\operator@font csc}\nolimits}
4063 \def\max{\mathop{\operator@font max}}
4064 \def\min{\mathop{\operator@font min}}
4065 \def\sup{\mathop{\operator@font sup}}
4066 \def\inf{\mathop{\operator@font inf}}
4067 \def\arg{\mathop{\operator@font arg}\nolimits}
4068 \def\ker{\mathop{\operator@font ker}\nolimits}
4069 \def\dim{\mathop{\operator@font dim}\nolimits}
4070 \def\hom{\mathop{\operator@font hom}\nolimits}
4071 \def\det{\mathop{\operator@font det}}
4072 \def\exp{\mathop{\operator@font exp}\nolimits}
4073 \def\Pr{\mathop{\operator@font Pr}}
4074 \def\gcd{\mathop{\operator@font gcd}}
4075 \def\deg{\mathop{\operator@font deg}\nolimits}
4076 \def\bmod{%
4077   \nonscript\mskip-\medmuskip\mkern5mu%
4078   \mathbin{\operator@font mod}\penalty900\mkern5mu%
4079   \nonscript\mskip-\medmuskip}
4080 \def\pmod#1{%
4081   \allowbreak\mkern18mu({\operator@font mod}\,\,#1)}
4082 \def\bigl{\mathopen\big}
4083 \def\bigm{\mathrel\big}
4084 \def\bigr{\mathclose\big}
4085 \def\Bigl{\mathopen\Big}
4086 \def\Bigm{\mathrel\Big}
4087 \def\Bigr{\mathclose\Big}
4088 \def\biggl{\mathopen\bigg}
4089 \def\biggm{\mathrel\bigg}
4090 \def\biggr{\mathclose\bigg}
4091 \def\Biggl{\mathopen\Bigg}
4092 \def\Biggm{\mathrel\Bigg}
4093 \def\Biggr{\mathclose\Bigg}
4094 \newdimen\jot
4095 \jot=3pt
4096 \newcount\interdisplaylinepenalty
4097 \interdisplaylinepenalty=100
4098 \def\choose{\atopwithdelims()}
4099 \def\brack{\atopwithdelims[]}
4100 \def\brace{\atopwithdelims\{\}}
4101 \def\mathpalette#1#2{%
4102   \mathchoice
4103     {#1\displaystyle{#2}}%
4104     {#1\textstyle{#2}}%
4105     {#1\scriptstyle{#2}}%
4106     {#1\scriptscriptstyle{#2}}}
4107 \newbox\rootbox
4108 \def\root#1\of{%
4109   \setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}%
4110   \mathpalette\r@@t}
4111 \def\r@@t#1#2{%
4112   \setbox\z@\hbox{$\m@th#1\sqrtsign{#2}$}%
4113   \dimen@\ht\z@ \advance\dimen@-\dp\z@
4114   \mkern5mu\raise.6\dimen@\copy\rootbox
4115   \mkern-10mu\box\z@}
4116 \newif\ifv@
4117 \newif\ifh@
4118 \def\vphantom{\v@true\h@false\ph@nt}
4119 \def\hphantom{\v@false\h@true\ph@nt}
4120 \def\phantom{\v@true\h@true\ph@nt}
4121 \def\ph@nt{%
4122   \ifmmode
4123     \expandafter\mathpalette\expandafter\mathph@nt
4124   \else
4125     \expandafter\makeph@nt
4126   \fi}
4127 \def\makeph@nt#1{%
4128   \setbox\z@\hbox{\color@begingroup#1\color@endgroup}\finph@nt}
4129 \def\mathph@nt#1#2{%
4130   \setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt}
4131 \def\finph@nt{%
4132   \setbox\tw@\null
4133   \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
4134   \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
4135 \def\mathstrut{\vphantom(}
4136 \def\smash{%
4137   \relax % \relax, in case this comes first in \halign
4138   \ifmmode
4139     \expandafter\mathpalette\expandafter\mathsm@sh
4140   \else
4141     \expandafter\makesm@sh
4142   \fi}
4143 \def\makesm@sh#1{%
4144   \setbox\z@\hbox{\color@begingroup#1\color@endgroup}\finsm@sh}
4145 \def\mathsm@sh#1#2{%
4146   \setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh}
4147 \def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}
4148 \def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}}
4149 \def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th
4150     \ialign{$##\hfil$&\quad{##}\hfil\crcr#1\crcr}}\right.}
4151 \def\matrix#1{\null\,\vcenter{\normalbaselines\m@th
4152     \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
4153       \mathstrut\crcr\noalign{\kern-\baselineskip}
4154       #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
4155 \def\pmatrix#1{\left(\matrix{#1}\right)}
4156 \def\bordermatrix#1{\begingroup \m@th
4157   \@tempdima 8.75\p@
4158   \setbox\z@\vbox{%
4159     \def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%
4160     \ialign{$##$\hfil\kern2\p@\kern\@tempdima&\thinspace\hfil$##$\hfil
4161       &&\quad\hfil$##$\hfil\crcr
4162       \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
4163       #1\crcr\omit\strut\cr}}%
4164   \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
4165   \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
4166   \setbox\tw@\hbox{$\kern\wd\@ne\kern-\@tempdima\left(\kern-\wd\@ne
4167     \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%
4168     \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%
4169   \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}
4170 \def\openup{\afterassignment\@penup\dimen@}
4171 \def\@penup{\advance\lineskip\dimen@
4172   \advance\baselineskip\dimen@
4173   \advance\lineskiplimit\dimen@}
4174 \newif\ifdt@p
4175 \def\displ@y{\global\dt@ptrue\openup\jot\m@th
4176   \everycr{\noalign{\ifdt@p \global\dt@pfalse \ifdim\prevdepth>-1000\p@
4177       \vskip-\lineskiplimit \vskip\normallineskiplimit \fi
4178       \else \penalty\interdisplaylinepenalty \fi}}}
4179 \def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y
4180 \def\displaylines#1{\displ@y \tabskip\z@skip
4181   \halign{\hb@xt@\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr
4182     #1\crcr}}
4183 \let\sp=^
4184 \let\sb=_
4185 \def\>{\mskip\medmuskip}
4186 \def\;{\mskip\thickmuskip}
4187 \def\!{\mskip-\thinmuskip}
4188 \def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}
4189 \let\:=\>
4190 \def\active@math@prime{^\bgroup\prim@s}
4191 {\catcode`\'=\active \global\let'\active@math@prime}
4192 \def\prim@s{%
4193   \prime\futurelet\@let@token\pr@m@s}
4194 \def\pr@m@s{%
4195   \ifx'\@let@token
4196     \expandafter\pr@@@s
4197   \else
4198     \ifx^\@let@token
4199       \expandafter\expandafter\expandafter\pr@@@t
4200     \else
4201       \egroup
4202     \fi
4203   \fi}
4204 \def\pr@@@s#1{\prim@s}
4205 \def\pr@@@t#1#2{#2\egroup}
4206 {\catcode`\_=\active \gdef_{\_}} % _ in math is
4207                                  % either subscript or \_
4208 \def\({\relax\ifmmode\@badmath\else$\fi}
4209 \def\){\relax\ifmmode\ifinner$\else\@badmath\fi\else \@badmath\fi}
4210 \def\[{%
4211    \relax\ifmmode
4212       \@badmath
4213    \else
4214       \ifvmode
4215          \nointerlineskip
4216          \makebox[.6\linewidth]%
4217       \fi
4218       $$%%$$ BRACE MATCH HACK
4219    \fi
4220 }
4221 \def\]{%
4222    \relax\ifmmode
4223       \ifinner
4224          \@badmath
4225       \else
4226          $$%%$$ BRACE MATCH HACK
4227       \fi
4228    \else
4229       \@badmath
4230    \fi
4231    \ignorespaces
4232 }
4233 \let\math=\(
4234 \let\endmath=\)
4235 \def\displaymath{\[}
4236 \def\enddisplaymath{\]\@ignoretrue}
4237 \@definecounter{equation}
4238 \def\equation{$$\refstepcounter{equation}}
4239 \def\endequation{\eqno \hbox{\@eqnnum}$$\@ignoretrue}
4240 \def\@eqnnum{{\normalfont \normalcolor (\theequation)}}
4241 \def\stackrel#1#2{\mathrel{\mathop{#2}\limits^{#1}}}
4242 \def\frac#1#2{{\begingroup#1\endgroup\over#2}}
4243 \DeclareRobustCommand\sqrt{\@ifnextchar[\@sqrt\sqrtsign}
4244 \def\@sqrt[#1]{\root #1\of}
4245 \newcount\@eqcnt
4246 \newcount\@eqpen
4247 \newif\if@eqnsw\@eqnswtrue
4248 \newskip\@centering
4249 \@centering = 0pt plus 1000pt
4250 \def\eqnarray{%
4251    \stepcounter{equation}%
4252    \def\@currentlabel{\p@equation\theequation}%
4253    \global\@eqnswtrue
4254    \m@th
4255    \global\@eqcnt\z@
4256    \tabskip\@centering
4257    \let\\\@eqncr
4258    $$\everycr{}\halign to\displaywidth\bgroup
4259        \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
4260       &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
4261       &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
4262          $\displaystyle{##}$\hfil\tabskip\@centering
4263       &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
4264          \tabskip\z@skip
4265       \cr
4266 }
4267 \def\endeqnarray{%
4268       \@@eqncr
4269       \egroup
4270       \global\advance\c@equation\m@ne
4271    $$\@ignoretrue
4272 }
4273 \let\@eqnsel=\relax
4274 \def\nonumber{\global\@eqnswfalse}
4275 \def\@eqncr{%
4276    {\ifnum0=`}\fi
4277    \@ifstar{%
4278       \global\@eqpen\@M\@yeqncr
4279    }{%
4280       \global\@eqpen\interdisplaylinepenalty \@yeqncr
4281    }%
4282 }
4283 \def\@yeqncr{\@testopt\@xeqncr\z@skip}
4284 \def\@xeqncr[#1]{%
4285    \ifnum0=`{\fi}%
4286    \@@eqncr
4287    \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}%
4288 }
4289 \def\@@eqncr{\let\reserved@a\relax
4290     \ifcase\@eqcnt \def\reserved@a{& & &}\or \def\reserved@a{& &}%
4291      \or \def\reserved@a{&}\else
4292        \let\reserved@a\@empty
4293        \@latex@error{Too many columns in eqnarray environment}\@ehc\fi
4294      \reserved@a \if@eqnsw\@eqnnum\stepcounter{equation}\fi
4295      \global\@eqnswtrue\global\@eqcnt\z@\cr}
4296 \let\@seqncr=\@eqncr
4297 \@namedef{eqnarray*}{\def\@eqncr{\nonumber\@seqncr}\eqnarray}
4298 \@namedef{endeqnarray*}{\nonumber\endeqnarray}
4299 \def\lefteqn#1{\rlap{$\displaystyle #1$}}
4300 \DeclareRobustCommand{\ensuremath}{%
4301   \ifmmode
4302     \expandafter\@firstofone
4303   \else
4304     \expandafter\@ensuredmath
4305   \fi}
4306 \long\def\@ensuredmath#1{$\relax#1$}
4307 %%% From File: ltlists.dtx
4308 \newskip\topsep
4309 \newskip\partopsep
4310 \newskip\itemsep
4311 \newskip\parsep
4312 \newskip\@topsep
4313 \newskip\@topsepadd
4314 \newskip\@outerparskip
4315 \newdimen\leftmargin
4316 \newdimen\rightmargin
4317 \newdimen\listparindent
4318 \newdimen\itemindent
4319 \newdimen\labelwidth
4320 \newdimen\labelsep
4321 \newdimen\linewidth
4322 \newdimen\@totalleftmargin \@totalleftmargin=\z@
4323 \newdimen\leftmargini
4324 \newdimen\leftmarginii
4325 \newdimen\leftmarginiii
4326 \newdimen\leftmarginiv
4327 \newdimen\leftmarginv
4328 \newdimen\leftmarginvi
4329 \newcount\@listdepth \@listdepth=0
4330 \newcount\@itempenalty
4331 \newcount\@beginparpenalty
4332 \newcount\@endparpenalty
4333 \newbox\@labels
4334 \newif\if@inlabel \@inlabelfalse
4335 \newif\if@newlist   \@newlistfalse
4336 \newif\if@noparitem \@noparitemfalse
4337 \newif\if@noparlist \@noparlistfalse
4338 \newif\if@noitemarg \@noitemargfalse
4339 \newif\if@nmbrlist  \@nmbrlistfalse
4340 \def\list#1#2{%
4341   \ifnum \@listdepth >5\relax
4342     \@toodeep
4343   \else
4344     \global\advance\@listdepth\@ne
4345   \fi
4346   \rightmargin\z@
4347   \listparindent\z@
4348   \itemindent\z@
4349   \csname @list\romannumeral\the\@listdepth\endcsname
4350   \def\@itemlabel{#1}%
4351   \let\makelabel\@mklab
4352   \@nmbrlistfalse
4353   #2\relax
4354   \@trivlist
4355   \parskip\parsep
4356   \parindent\listparindent
4357   \advance\linewidth -\rightmargin
4358   \advance\linewidth -\leftmargin
4359   \advance\@totalleftmargin \leftmargin
4360   \parshape \@ne \@totalleftmargin \linewidth
4361   \ignorespaces}
4362 \newcount\par@deathcycles
4363 \def\@trivlist{%
4364   \if@noskipsec \leavevmode \fi
4365   \@topsepadd \topsep
4366   \ifvmode
4367     \advance\@topsepadd \partopsep
4368   \else
4369     \unskip \par
4370   \fi
4371   \if@inlabel
4372     \@noparitemtrue
4373     \@noparlisttrue
4374   \else
4375     \if@newlist \@noitemerr \fi
4376     \@noparlistfalse
4377     \@topsep \@topsepadd
4378   \fi
4379   \advance\@topsep \parskip
4380   \leftskip \z@skip
4381   \rightskip \@rightskip
4382   \parfillskip \@flushglue
4383   \par@deathcycles \z@
4384   \@setpar{\if@newlist
4385              \advance\par@deathcycles \@ne
4386              \ifnum \par@deathcycles >\@m
4387                \@noitemerr
4388                {\@@par}%
4389              \fi
4390            \else
4391              {\@@par}%
4392            \fi}%
4393   \global \@newlisttrue
4394   \@outerparskip \parskip}
4395 \def\trivlist{%
4396   \parsep\parskip
4397   \@nmbrlistfalse
4398   \@trivlist
4399   \labelwidth\z@
4400   \leftmargin\z@
4401   \itemindent\z@
4402   \let\@itemlabel\@empty
4403   \def\makelabel##1{##1}}
4404 \def\endlist{%
4405   \global\advance\@listdepth\m@ne
4406   \endtrivlist}
4407 \def\endtrivlist{%
4408   \if@inlabel
4409     \leavevmode
4410     \global \@inlabelfalse
4411   \fi
4412   \if@newlist
4413     \@noitemerr
4414     \global \@newlistfalse
4415   \fi
4416   \ifhmode\unskip \par
4417   \else
4418     \@inmatherr{\end{\@currenvir}}%
4419   \fi
4420   \if@noparlist \else
4421     \ifdim\lastskip >\z@
4422       \@tempskipa\lastskip \vskip -\lastskip
4423       \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
4424       \vskip\@tempskipa
4425     \fi
4426     \@endparenv
4427   \fi
4428 }
4429 \def\@endparenv{%
4430   \addpenalty\@endparpenalty\addvspace\@topsepadd\@endpetrue}
4431 \def\@doendpe{\@endpetrue
4432      \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar
4433                {{\setbox\z@\lastbox}\everypar{}\@endpefalse}}
4434 \newif\if@endpe
4435 \@endpefalse
4436 \def\@mklab#1{\hfil #1}
4437 \def\item{%
4438   \@inmatherr\item
4439   \@ifnextchar [\@item{\@noitemargtrue \@item[\@itemlabel]}}
4440 \def\@donoparitem{%
4441   \@noparitemfalse
4442   \global\setbox\@labels\hbox{\hskip -\leftmargin
4443                                \unhbox\@labels
4444                                 \hskip \leftmargin}%
4445   \if@minipage\else
4446     \@tempskipa\lastskip
4447     \vskip -\lastskip
4448     \advance\@tempskipa\@outerparskip
4449     \advance\@tempskipa -\parskip
4450     \vskip\@tempskipa
4451   \fi}
4452 \def\@item[#1]{%
4453   \if@noparitem
4454     \@donoparitem
4455   \else
4456     \if@inlabel
4457       \indent \par
4458     \fi
4459     \ifhmode
4460       \unskip\unskip \par
4461     \fi
4462     \if@newlist
4463       \if@nobreak
4464         \@nbitem
4465       \else
4466         \addpenalty\@beginparpenalty
4467         \addvspace\@topsep
4468         \addvspace{-\parskip}%
4469       \fi
4470     \else
4471       \addpenalty\@itempenalty
4472       \addvspace\itemsep
4473     \fi
4474     \global\@inlabeltrue
4475   \fi
4476   \everypar{%
4477     \@minipagefalse
4478     \global\@newlistfalse
4479     \if@inlabel
4480       \global\@inlabelfalse
4481       {\setbox\z@\lastbox
4482        \ifvoid\z@
4483          \kern-\itemindent
4484        \fi}%
4485       \box\@labels
4486       \penalty\z@
4487     \fi
4488     \if@nobreak
4489       \@nobreakfalse
4490       \clubpenalty \@M
4491     \else
4492       \clubpenalty \@clubpenalty
4493       \everypar{}%
4494     \fi}%
4495   \if@noitemarg
4496     \@noitemargfalse
4497     \if@nmbrlist
4498       \refstepcounter\@listctr
4499     \fi
4500   \fi
4501   \sbox\@tempboxa{\makelabel{#1}}%
4502   \global\setbox\@labels\hbox{%
4503     \unhbox\@labels
4504     \hskip \itemindent
4505     \hskip -\labelwidth
4506     \hskip -\labelsep
4507     \ifdim \wd\@tempboxa >\labelwidth
4508       \box\@tempboxa
4509     \else
4510       \hbox to\labelwidth {\unhbox\@tempboxa}%
4511     \fi
4512     \hskip \labelsep}%
4513   \ignorespaces}
4514 \def\makelabel#1{%
4515   \@latex@error{Lonely \string\item--perhaps a missing
4516         list environment}\@ehc}
4517 \def\@nbitem{%
4518   \@tempskipa\@outerparskip
4519   \advance\@tempskipa -\parskip
4520   \addvspace\@tempskipa}
4521 \def\usecounter#1{\@nmbrlisttrue\def\@listctr{#1}\setcounter{#1}\z@}
4522 \newcount\@enumdepth \@enumdepth = 0
4523 \@definecounter{enumi}
4524 \@definecounter{enumii}
4525 \@definecounter{enumiii}
4526 \@definecounter{enumiv}
4527 \def\enumerate{%
4528   \ifnum \@enumdepth >\thr@@\@toodeep\else
4529     \advance\@enumdepth\@ne
4530     \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
4531       \expandafter
4532       \list
4533         \csname label\@enumctr\endcsname
4534         {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
4535   \fi}
4536 \let\endenumerate =\endlist
4537 \newcount\@itemdepth \@itemdepth = 0
4538 \def\itemize{%
4539   \ifnum \@itemdepth >\thr@@\@toodeep\else
4540     \advance\@itemdepth\@ne
4541     \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
4542     \expandafter
4543     \list
4544       \csname\@itemitem\endcsname
4545       {\def\makelabel##1{\hss\llap{##1}}}%
4546   \fi}
4547 \let\enditemize =\endlist
4548 %%% From File: ltboxes.dtx
4549 \message{boxes,}
4550 \def\makebox{%
4551   \leavevmode
4552   \@ifnextchar(%)
4553     \@makepicbox
4554     {\@ifnextchar[\@makebox\mbox}}
4555 \long\def\mbox#1{\leavevmode\hbox{#1}}
4556 \def\@makebox[#1]{%
4557   \@ifnextchar [{\@imakebox[#1]}{\@imakebox[#1][c]}}
4558 \long\def\@begin@tempboxa#1#2{%
4559    \begingroup
4560      \setbox\@tempboxa#1{\color@begingroup#2\color@endgroup}%
4561      \def\width{\wd\@tempboxa}%
4562      \def\height{\ht\@tempboxa}%
4563      \def\depth{\dp\@tempboxa}%
4564      \let\totalheight\@ovri
4565      \totalheight\height
4566      \advance\totalheight\depth}
4567 \let\@end@tempboxa\endgroup
4568 \def\bm@c{\hss\unhbox\@tempboxa\hss}
4569 \def\bm@l{\unhbox\@tempboxa\hss}\let\bm@t\bm@l
4570 \def\bm@r{\hss\unhbox\@tempboxa}\let\bm@b\bm@r
4571 \def\bm@s{\unhbox\@tempboxa}
4572 \long\def\@imakebox[#1][#2]#3{%
4573   \@begin@tempboxa\hbox{#3}%
4574     \setlength\@tempdima{#1}%       support calc
4575     \hb@xt@\@tempdima{\csname bm@#2\endcsname}%
4576   \@end@tempboxa}
4577 \def\@makepicbox(#1,#2){%
4578   \@ifnextchar[{\@imakepicbox(#1,#2)}{\@imakepicbox(#1,#2)[]}}
4579 \long\def\@imakepicbox(#1,#2)[#3]#4{%
4580   \vbox to#2\unitlength
4581    {\let\mb@b\vss \let\mb@l\hss\let\mb@r\hss
4582     \let\mb@t\vss
4583     \@tfor\reserved@a :=#3\do{%
4584       \if s\reserved@a
4585         \let\mb@l\relax\let\mb@r\relax
4586       \else
4587         \expandafter\let\csname mb@\reserved@a\endcsname\relax
4588       \fi}%
4589     \mb@t
4590     \hb@xt@ #1\unitlength{\mb@l #4\mb@r}%
4591     \mb@b
4592     \kern\z@}}
4593 \let\set@color\relax
4594 \let\color@begingroup\relax
4595 \let\color@endgroup\relax
4596 \let\color@setgroup\relax
4597 \let\normalcolor\relax
4598 \let\color@hbox\relax
4599 \let\color@vbox\relax
4600 \let\color@endbox\relax
4601 \def\newsavebox#1{\@ifdefinable{#1}{\newbox#1}}
4602 \def\savebox#1{%
4603   \@ifnextchar(%)
4604     {\@savepicbox#1}{\@ifnextchar[{\@savebox#1}{\sbox#1}}}
4605 \long\def\sbox#1#2{\setbox#1\hbox{%
4606   \color@setgroup#2\color@endgroup}}
4607 \def\@savebox#1[#2]{%
4608   \@ifnextchar [{\@isavebox#1[#2]}{\@isavebox#1[#2][c]}}
4609 \long\def\@isavebox#1[#2][#3]#4{%
4610   \sbox#1{\@imakebox[#2][#3]{#4}}}
4611 \def\@savepicbox#1(#2,#3){%
4612   \@ifnextchar[%]
4613     {\@isavepicbox#1(#2,#3)}{\@isavepicbox#1(#2,#3)[]}}
4614 \long\def\@isavepicbox#1(#2,#3)[#4]#5{%
4615   \sbox#1{\@imakepicbox(#2,#3)[#4]{#5}}}
4616 \def\lrbox#1{%
4617   \edef\reserved@a{%
4618     \endgroup
4619     \setbox#1\hbox{%
4620       \begingroup\aftergroup}%
4621         \def\noexpand\@currenvir{\@currenvir}%
4622         \def\noexpand\@currenvline{\on@line}}%
4623   \reserved@a
4624     \@endpefalse
4625     \color@setgroup
4626       \ignorespaces}
4627 \def\endlrbox{\unskip\color@endgroup}
4628 \def\usebox#1{\leavevmode\copy #1\relax}
4629 \long\def\frame#1{%
4630   \leavevmode
4631   \hbox{%
4632     \hskip-\@wholewidth
4633     \vbox{%
4634       \vskip-\@wholewidth
4635       \hrule \@height\@wholewidth
4636       \hbox{%
4637         \vrule\@width\@wholewidth
4638         #1%
4639         \vrule\@width\@wholewidth}%
4640       \hrule\@height\@wholewidth
4641       \vskip-\@wholewidth}%
4642     \hskip-\@wholewidth}}
4643 \newdimen\fboxrule
4644 \newdimen\fboxsep
4645 \long\def\fbox#1{%
4646   \leavevmode
4647   \setbox\@tempboxa\hbox{%
4648     \color@begingroup
4649       \kern\fboxsep{#1}\kern\fboxsep
4650     \color@endgroup}%
4651   \@frameb@x\relax}
4652 \def\framebox{%
4653   \@ifnextchar(%)
4654     \@framepicbox{\@ifnextchar[\@framebox\fbox}}
4655 \def\@framebox[#1]{%
4656   \@ifnextchar[%]
4657     {\@iframebox[#1]}%
4658     {\@iframebox[#1][c]}}
4659 \long\def\@iframebox[#1][#2]#3{%
4660   \leavevmode
4661   \@begin@tempboxa\hbox{#3}%
4662     \setlength\@tempdima{#1}%
4663     \setbox\@tempboxa\hb@xt@\@tempdima
4664          {\kern\fboxsep\csname bm@#2\endcsname\kern\fboxsep}%
4665     \@frameb@x{\kern-\fboxrule}%
4666   \@end@tempboxa}
4667 \def\@frameb@x#1{%
4668   \@tempdima\fboxrule
4669   \advance\@tempdima\fboxsep
4670   \advance\@tempdima\dp\@tempboxa
4671   \hbox{%
4672     \lower\@tempdima\hbox{%
4673       \vbox{%
4674         \hrule\@height\fboxrule
4675         \hbox{%
4676           \vrule\@width\fboxrule
4677           #1%
4678           \vbox{%
4679             \vskip\fboxsep
4680             \box\@tempboxa
4681             \vskip\fboxsep}%
4682           #1%
4683           \vrule\@width\fboxrule}%
4684         \hrule\@height\fboxrule}%
4685                           }%
4686         }%
4687 }
4688 \def\@framepicbox(#1,#2){%
4689   \@ifnextchar[{\@iframepicbox(#1,#2)}{\@iframepicbox(#1,#2)[]}}
4690 \long\def\@iframepicbox(#1,#2)[#3]#4{%
4691   \frame{\@imakepicbox(#1,#2)[#3]{#4}}}
4692 \def\parbox{%
4693   \@ifnextchar[%]
4694     \@iparbox
4695     {\@iiiparbox c\relax[s]}}
4696 \def\@iparbox[#1]{%
4697   \@ifnextchar[%]
4698     {\@iiparbox{#1}}%
4699     {\@iiiparbox{#1}\relax[s]}}
4700 \def\@iiparbox#1[#2]{%
4701   \@ifnextchar[%]
4702     {\@iiiparbox{#1}{#2}}%
4703     {\@iiiparbox{#1}{#2}[#1]}}
4704 \let\@parboxto\@empty
4705 \long\def\@iiiparbox#1#2[#3]#4#5{%
4706   \leavevmode
4707   \@pboxswfalse
4708   \setlength\@tempdima{#4}%
4709   \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
4710     \ifx\relax#2\else
4711       \setlength\@tempdimb{#2}%
4712       \def\@parboxto{to\@tempdimb}%
4713     \fi
4714     \if#1b\vbox
4715     \else\if #1t\vtop
4716     \else\ifmmode\vcenter
4717     \else\@pboxswtrue $\vcenter
4718     \fi\fi\fi
4719     \@parboxto{\let\hss\vss\let\unhbox\unvbox
4720        \csname bm@#3\endcsname}%
4721     \if@pboxsw \m@th$\fi
4722   \@end@tempboxa}
4723 \def\@arrayparboxrestore{%
4724   \let\if@nobreak\iffalse
4725   \let\if@noskipsec\iffalse
4726   \let\par\@@par
4727   \let\-\@dischyph
4728   \let\'\@acci\let\`\@accii\let\=\@acciii
4729   \parindent\z@ \parskip\z@skip
4730   \everypar{}%
4731   \linewidth\hsize
4732   \@totalleftmargin\z@
4733   \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
4734   \parfillskip\@flushglue \lineskip\normallineskip
4735   \baselineskip\normalbaselineskip
4736   \sloppy}
4737 \def\@parboxrestore{\@arrayparboxrestore\let\\\@normalcr}
4738 \def\@minipagefalse{\global\let\if@minipage\iffalse}
4739 \def\@minipagetrue {\global\let\if@minipage\iftrue}
4740 \@minipagefalse
4741 \def\minipage{%
4742   \@ifnextchar[%]
4743     \@iminipage
4744     {\@iiiminipage c\relax[s]}}
4745 \def\@iminipage[#1]{%
4746   \@ifnextchar[%]
4747     {\@iiminipage{#1}}%
4748     {\@iiiminipage{#1}\relax[s]}}
4749 \def\@iiminipage#1[#2]{%
4750   \@ifnextchar[%]
4751     {\@iiiminipage{#1}{#2}}%
4752     {\@iiiminipage{#1}{#2}[#1]}}
4753 \def\@iiiminipage#1#2[#3]#4{%
4754   \leavevmode
4755   \@pboxswfalse
4756   \setlength\@tempdima{#4}%
4757   \def\@mpargs{{#1}{#2}[#3]{#4}}%
4758   \setbox\@tempboxa\vbox\bgroup
4759     \color@begingroup
4760       \hsize\@tempdima
4761       \textwidth\hsize \columnwidth\hsize
4762       \@parboxrestore
4763       \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
4764       \let\@footnotetext\@mpfootnotetext
4765       \let\@listdepth\@mplistdepth \@mplistdepth\z@
4766       \@minipagerestore
4767       \@setminipage}
4768  \let\@minipagerestore=\relax
4769 \def\endminipage{%
4770     \par
4771     \unskip
4772     \ifvoid\@mpfootins\else
4773       \vskip\skip\@mpfootins
4774       \normalcolor
4775       \footnoterule
4776       \unvbox\@mpfootins
4777     \fi
4778     \@minipagefalse   %% added 24 May 89
4779   \color@endgroup
4780   \egroup
4781   \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
4782 \newcount\@mplistdepth
4783 \newinsert\@mpfootins
4784 \long\def\@mpfootnotetext#1{%
4785   \global\setbox\@mpfootins\vbox{%
4786     \unvbox\@mpfootins
4787     \reset@font\footnotesize
4788     \hsize\columnwidth
4789     \@parboxrestore
4790     \protected@edef\@currentlabel
4791          {\csname p@mpfootnote\endcsname\@thefnmark}%
4792     \color@begingroup
4793       \@makefntext{%
4794         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
4795     \color@endgroup}}
4796 \newif\if@pboxsw
4797 \def\rule{\@ifnextchar[\@rule{\@rule[\z@]}}
4798  \def\@rule[#1]#2#3{%
4799    \leavevmode
4800    \hbox{%
4801      \setlength\@tempdima{#1}%
4802      \setlength\@tempdimb{#2}%
4803      \setlength\@tempdimc{#3}%
4804      \advance\@tempdimc\@tempdima
4805      \vrule\@width\@tempdimb\@height\@tempdimc\@depth-\@tempdima}}
4806 \let\@@underline\underline
4807 \def\underline#1{%
4808   \relax
4809   \ifmmode\@@underline{#1}%
4810   \else $\@@underline{\hbox{#1}}\m@th$\relax\fi}
4811 \def\raisebox#1{%
4812   \leavevmode
4813   \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}}
4814 \def\@rsbox#1[#2]{%
4815   \@ifnextchar[{\@iirsbox{#1}[#2]}{\@irsbox{#1}[#2]}}
4816 \long\def\@irsbox#1[#2]#3{%
4817   \@begin@tempboxa\hbox{#3}%
4818     \setlength\@tempdima{#1}%
4819     \ifx\\#2\\\else\setlength\@tempdimb{#2}\fi
4820     \setbox\@tempboxa\hbox{\raise\@tempdima\box\@tempboxa}%
4821     \ifx\\#2\\\else\ht\@tempboxa\@tempdimb\fi
4822     \box\@tempboxa
4823   \@end@tempboxa}
4824 \long\def\@iirsbox#1[#2][#3]#4{%
4825   \@begin@tempboxa\hbox{#4}%
4826     \setlength\@tempdima{#1}%
4827     \setlength\@tempdimb{#2}%
4828     \setlength\dimen@{#3}%
4829     \setbox\@tempboxa\hbox{\raise\@tempdima\box\@tempboxa}%
4830     \ht\@tempboxa\@tempdimb
4831     \dp\@tempboxa\dimen@
4832     \box\@tempboxa
4833   \@end@tempboxa}
4834 \def\@finalstrut#1{%
4835   \unskip\ifhmode\nobreak\fi\vrule\@width\z@\@height\z@\@depth\dp#1}
4836 \def\@@line{\hb@xt@\hsize}
4837 \def\leftline#1{\@@line{#1\hss}}
4838 \def\rightline#1{\@@line{\hss#1}}
4839 \def\centerline#1{\@@line{\hss#1\hss}}
4840 \def\rlap#1{\hb@xt@\z@{#1\hss}}
4841 \def\llap#1{\hb@xt@\z@{\hss#1}}
4842 %%% From File: lttab.dtx
4843 \expandafter\let\csname ver@autotabg.sty\endcsname\fmtversion
4844 \newdimen\@gtempa
4845 \chardef\@firsttab=\the\allocationnumber
4846 \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
4847 \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
4848 \newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa\newdimen\@gtempa
4849 \newdimen\@gtempa
4850 \chardef\@maxtab=\the\allocationnumber
4851 \dimen\@firsttab=0pt
4852 \newcount\@nxttabmar
4853 \newcount\@curtabmar
4854 \newcount\@curtab
4855 \newcount\@hightab
4856 \newcount\@tabpush
4857 \newbox\@curline
4858 \newbox\@curfield
4859 \newbox\@tabfbox
4860 \newif\if@rjfield
4861 \gdef\@startline{%
4862      \ifnum \@nxttabmar >\@hightab
4863        \@badtab
4864        \global\@nxttabmar \@hightab
4865      \fi
4866      \global\@curtabmar \@nxttabmar
4867      \global\@curtab \@curtabmar
4868      \global\setbox\@curline \hbox {}%
4869      \@startfield
4870      \strut}
4871 \gdef\@stopline{%
4872   \unskip
4873   \@stopfield
4874   \if@rjfield
4875     \global\@rjfieldfalse
4876     \@tempdima\@totalleftmargin
4877     \advance\@tempdima\linewidth
4878     \hb@xt@\@tempdima{%
4879       \@itemfudge\hskip\dimen\@curtabmar
4880       \box\@curline
4881       \hfil
4882       \box\@curfield}%
4883   \else
4884     \@addfield
4885     \hbox{\@itemfudge\hskip\dimen\@curtabmar\box\@curline}%
4886   \fi}
4887 \gdef\@startfield{%
4888   \global\setbox\@curfield\hbox\bgroup\color@begingroup}
4889 \gdef\@stopfield{%
4890   \color@endgroup\egroup}
4891 \gdef\@contfield{%
4892   \global\setbox\@curfield\hbox\bgroup\color@begingroup
4893   \unhbox\@curfield}
4894 \gdef\@addfield{\global\setbox\@curline\hbox{\unhbox
4895      \@curline\unhbox\@curfield}}
4896 \gdef\@ifatmargin{\ifdim \wd\@curline =\z@}
4897 \gdef\@tabcr{\@stopline \@ifstar{\penalty \@M \@xtabcr}\@xtabcr}
4898 \gdef\@xtabcr{\@ifnextchar[\@itabcr{\@startline\ignorespaces}}
4899 \gdef\@itabcr[#1]{\vskip #1\@startline\ignorespaces}
4900 \gdef\kill{\@stopfield\@startline\ignorespaces}
4901 \gdef\tabbing{\lineskip \z@skip\let\>\@rtab\let\<\@ltab\let\=\@settab
4902      \let\+\@tabplus\let\-\@tabminus\let\`\@tabrj\let\'\@tablab
4903      \let\\=\@tabcr
4904      \@hightab\@firsttab
4905      \global\@nxttabmar\@firsttab
4906      \dimen\@firsttab\@totalleftmargin
4907      \global\@tabpush\z@ \global\@rjfieldfalse
4908      \trivlist \item\relax
4909      \if@minipage\else\vskip\parskip\fi
4910      \setbox\@tabfbox\hbox{%
4911        \rlap{\hskip\@totalleftmargin\indent\the\everypar}}%
4912      \def\@itemfudge{\box\@tabfbox}%
4913      \@startline\ignorespaces}
4914 \gdef\endtabbing{%
4915   \@stopline\ifnum\@tabpush >\z@ \@badpoptabs \fi\endtrivlist}
4916 \gdef\@rtab{\@stopfield\@addfield\ifnum \@curtab<\@hightab
4917       \global\advance\@curtab \@ne \else\@badtab\fi
4918       \@tempdima\dimen\@curtab
4919       \advance\@tempdima -\dimen\@curtabmar
4920       \advance\@tempdima -\wd\@curline
4921       \global\setbox\@curline\hbox{\unhbox\@curline\hskip\@tempdima}%
4922       \@startfield\ignorespaces}
4923 \gdef\@settab{\@stopfield\@addfield
4924   \ifnum \@curtab <\@maxtab
4925     \ifnum\@curtab =\@hightab
4926       \advance\@hightab \@ne
4927     \fi
4928     \global\advance\@curtab \@ne
4929   \else
4930     \@latex@error{Tab overflow}\@ehd
4931   \fi
4932   \dimen\@curtab \dimen\@curtabmar
4933   \advance\dimen\@curtab \wd\@curline
4934   \@startfield
4935   \ignorespaces}
4936 \gdef\@ltab{\@ifatmargin\ifnum\@curtabmar >\@firsttab
4937       \global\advance\@curtab \m@ne \global\advance\@curtabmar\m@ne\else
4938       \@badtab\fi\else
4939       \@latex@error{\string\<\space in mid line}\@ehd\fi\ignorespaces}
4940 \gdef\@tabplus{%
4941   \ifnum\@nxttabmar<\@hightab
4942     \global\advance\@nxttabmar\@ne
4943   \else
4944     \@badtab
4945   \fi
4946   \ignorespaces}
4947 \gdef\@tabminus{%
4948   \ifnum\@nxttabmar>\@firsttab
4949     \global\advance\@nxttabmar\m@ne
4950   \else
4951     \@badtab
4952   \fi
4953   \ignorespaces}
4954 \gdef\@tabrj{%
4955   \@stopfield\@addfield\global\@rjfieldtrue\@startfield\ignorespaces}
4956 \gdef\@tablab{%
4957   \@stopfield
4958   \global\setbox\@curline\hbox{%
4959     \box\@curline
4960     \hskip-\wd\@curfield \hskip-\tabbingsep
4961     \box\@curfield
4962     \hskip\tabbingsep}%
4963   \@startfield
4964   \ignorespaces}
4965 \gdef\pushtabs{%
4966   \@stopfield\@addfield\global\advance\@tabpush \@ne \begingroup
4967        \@contfield}
4968 \gdef\poptabs{\@stopfield\@addfield
4969   \ifnum \@tabpush >\z@
4970     \endgroup
4971     \global\advance\@tabpush \m@ne
4972     \ifnum \@curtab >\@hightab
4973       \global \@curtab \@hightab
4974       \@badtab
4975     \fi
4976   \else
4977     \@badpoptabs
4978   \fi
4979   \@contfield}
4980 \newdimen\tabbingsep
4981 \def\extracolsep#1{\tabskip #1\relax}
4982 \def\array{\let\@acol\@arrayacol \let\@classz\@arrayclassz
4983  \let\@classiv\@arrayclassiv
4984  \let\\\@arraycr\let\@halignto\@empty\@tabarray}
4985 \def\endarray{\crcr\egroup\egroup}
4986 \def\endtabular{\crcr\egroup\egroup $\egroup}
4987 \expandafter \let \csname endtabular*\endcsname = \endtabular
4988 \def\tabular{\let\@halignto\@empty\@tabular}
4989 \@namedef{tabular*}#1{%
4990  \setlength\dimen@{#1}%
4991    \edef\@halignto{to\the\dimen@}\@tabular}
4992 \def\@tabular{\leavevmode \hbox \bgroup $\let\@acol\@tabacol
4993    \let\@classz\@tabclassz
4994    \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
4995 \def\@tabarray{\m@th\@ifnextchar[\@array{\@array[c]}}
4996 \def\@array[#1]#2{%
4997   \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
4998   \bgroup
4999   \setbox\@arstrutbox\hbox{%
5000     \vrule \@height\arraystretch\ht\strutbox
5001            \@depth\arraystretch \dp\strutbox
5002            \@width\z@}%
5003   \@mkpream{#2}%
5004   \edef\@preamble{%
5005     \ialign \noexpand\@halignto
5006       \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}%
5007   \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
5008   \let\tabularnewline\\%
5009     \let\par\@empty
5010     \let\@sharp##%
5011     \set@typeset@protect
5012     \lineskip\z@skip\baselineskip\z@skip
5013     \ifhmode \@preamerr\z@ \@@par\fi
5014     \@preamble}
5015 \def\@arraycr{%
5016   ${\ifnum0=`}\fi\@ifstar\@xarraycr\@xarraycr}
5017 \def\@xarraycr{\@ifnextchar[\@argarraycr{\ifnum0=`{\fi}${}\cr}}
5018 \def\@argarraycr[#1]{%
5019   \ifnum0=`{\fi}${}\ifdim #1>\z@ \@xargarraycr{#1}\else
5020    \@yargarraycr{#1}\fi}
5021 \let\tabularnewline\relax
5022 \def\@tabularcr{%
5023   {\ifnum0=`}\fi\@ifstar\@xtabularcr\@xtabularcr}
5024 \def\@xtabularcr{\@ifnextchar[\@argtabularcr{\ifnum0=`{\fi}\cr}}
5025 \def\@argtabularcr[#1]{%
5026   \ifnum0=`{\fi}%
5027     \ifdim #1>\z@
5028       \unskip\@xargarraycr{#1}%
5029     \else
5030       \@yargarraycr{#1}%
5031     \fi}
5032 \def\@xargarraycr#1{\@tempdima #1\advance\@tempdima \dp \@arstrutbox
5033    \vrule \@height\z@ \@depth\@tempdima \@width\z@ \cr}
5034 \def\@yargarraycr#1{\cr\noalign{\vskip #1}}
5035 \long\def\multicolumn#1#2#3{\multispan{#1}\begingroup
5036   \@mkpream{#2}%
5037   \def\@sharp{#3}\set@typeset@protect
5038   \let\@startpbox\@@startpbox\let\@endpbox\@@endpbox
5039   \@arstrut \@preamble\hbox{}\endgroup\ignorespaces}
5040 \def\@xexnoop #1\@@{}
5041 \def\@expast#1{\@xexpast #1*0x\@@}
5042 \def\@xexpast#1*#2#3#4\@@{%
5043   \edef\reserved@a{#1}%
5044   \@tempcnta#2\relax
5045   \ifnum\@tempcnta>\z@
5046     \@whilenum\@tempcnta>\z@\do
5047        {\edef\reserved@a{\reserved@a#3}\advance\@tempcnta \m@ne}%
5048     \let\reserved@b\@xexpast
5049   \else
5050     \let\reserved@b\@xexnoop
5051   \fi
5052   \expandafter\reserved@b\reserved@a #4\@@}
5053 \newif\if@firstamp
5054 \def\@addamp{%
5055   \if@firstamp
5056     \@firstampfalse
5057   \else
5058     \edef\@preamble{\@preamble &}%
5059   \fi}
5060 \def\@arrayacol{\edef\@preamble{\@preamble \hskip \arraycolsep}}
5061 \def\@tabacol{\edef\@preamble{\@preamble \hskip \tabcolsep}}
5062 \def\@ampacol{\@addamp \@acol}
5063 \def\@acolampacol{\@acol\@addamp\@acol}
5064 \def\@mkpream#1{\@firstamptrue\@lastchclass6
5065   \let\@preamble\@empty
5066   \let\protect\@unexpandable@protect
5067   \let\@sharp\relax
5068   \let\@startpbox\relax\let\@endpbox\relax
5069   \@expast{#1}%
5070   \expandafter\@tfor \expandafter
5071     \@nextchar \expandafter:\expandafter=\reserved@a\do
5072        {\@testpach\@nextchar
5073     \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii
5074       \or \@classiv \or\@classv \fi\@lastchclass\@chclass}%
5075   \ifcase \@lastchclass \@acol
5076       \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi}
5077 \def\@arrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
5078    \or \or \@addamp \or
5079    \@acolampacol \or \@firstampfalse \@acol \fi
5080 \edef\@preamble{\@preamble
5081   \ifcase \@chnum
5082      \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil
5083     \or \hfil$\relax\@sharp$\fi}}
5084 \def\@tabclassz{%
5085   \ifcase\@lastchclass
5086     \@acolampacol
5087   \or
5088     \@ampacol
5089   \or
5090   \or
5091   \or
5092     \@addamp
5093   \or
5094     \@acolampacol
5095   \or
5096     \@firstampfalse\@acol
5097   \fi
5098   \edef\@preamble{%
5099     \@preamble{%
5100       \ifcase\@chnum
5101         \hfil\ignorespaces\@sharp\unskip\hfil
5102       \or
5103         \hskip1sp\ignorespaces\@sharp\unskip\hfil
5104       \or
5105         \hfil\hskip1sp\ignorespaces\@sharp\unskip
5106       \fi}}}
5107 \def\@classi{%
5108   \ifcase\@lastchclass
5109     \@acol\@arrayrule
5110   \or
5111     \@addtopreamble{\hskip \doublerulesep}\@arrayrule
5112   \or
5113   \or
5114   \or
5115     \@arrayrule
5116   \or
5117     \@acol\@arrayrule
5118   \or
5119     \@arrayrule
5120   \fi}
5121 \def\@classii{%
5122   \ifcase\@lastchclass
5123   \or
5124     \@addtopreamble{\hskip .5\arrayrulewidth}%
5125   \fi}
5126 \def\@classiii{\ifcase \@lastchclass \@acolampacol \or
5127    \@addamp\@acol \or
5128    \or \or \@addamp \or
5129    \@acolampacol \or \@ampacol \fi}
5130 \def\@tabclassiv{\@addtopreamble\@nextchar}
5131 \def\@arrayclassiv{\@addtopreamble{$\@nextchar$}}
5132 \def\@classv{\@addtopreamble{\@startpbox{\@nextchar}\ignorespaces
5133 \@sharp\@endpbox}}
5134 \def\@addtopreamble#1{\edef\@preamble{\@preamble #1}}
5135 \newcount\@chclass
5136 \newcount\@lastchclass
5137 \newcount\@chnum
5138 \newdimen\arraycolsep
5139 \newdimen\tabcolsep
5140 \newdimen\arrayrulewidth
5141 \newdimen\doublerulesep
5142 \def\arraystretch{1}    % Default value.
5143 \newbox\@arstrutbox
5144 \def\@arstrut{%
5145   \relax\ifmmode\copy\@arstrutbox\else\unhcopy\@arstrutbox\fi}
5146 \def\@arrayrule{\@addtopreamble{\hskip -.5\arrayrulewidth
5147    \vrule \@width \arrayrulewidth\hskip -.5\arrayrulewidth}}
5148 \def\@testpach#1{\@chclass \ifnum \@lastchclass=\tw@ 4 \else
5149     \ifnum \@lastchclass=3 5 \else
5150      \z@ \if #1c\@chnum \z@ \else
5151                               \if #1l\@chnum \@ne \else
5152                               \if #1r\@chnum \tw@ \else
5153           \@chclass \if #1|\@ne \else
5154                     \if #1@\tw@ \else
5155                     \if #1p3 \else \z@ \@preamerr 0\fi
5156   \fi  \fi  \fi  \fi  \fi  \fi
5157 \fi}
5158 \def\hline{%
5159   \noalign{\ifnum0=`}\fi\hrule \@height \arrayrulewidth \futurelet
5160    \reserved@a\@xhline}
5161 \def\@xhline{\ifx\reserved@a\hline
5162                \vskip\doublerulesep
5163                \vskip-\arrayrulewidth
5164              \fi
5165       \ifnum0=`{\fi}}
5166 \def\vline{\vrule \@width \arrayrulewidth}
5167 \def\cline#1{\@cline#1\@nil}
5168 \def\@cline#1-#2\@nil{%
5169   \omit
5170   \@multicnt#1%
5171   \advance\@multispan\m@ne
5172   \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
5173   \@multicnt#2%
5174   \advance\@multicnt-#1%
5175   \advance\@multispan\@ne
5176   \leaders\hrule\@height\arrayrulewidth\hfill
5177   \cr
5178   \noalign{\vskip-\arrayrulewidth}}
5179 \def\multispan{\omit\@multispan}
5180 \def\@multispan#1{%
5181   \@multicnt#1\relax
5182   \loop\ifnum\@multicnt>\@ne \sp@n\repeat}
5183 \def\sp@n{\span\omit\advance\@multicnt\m@ne}
5184
5185 \def\@startpbox#1{\vtop\bgroup \setlength\hsize{#1}\@arrayparboxrestore}
5186 \def\@endpbox{\@finalstrut\@arstrutbox\par\egroup\hfil}
5187 \let\@@startpbox=\@startpbox
5188 \let\@@endpbox=\@endpbox
5189 %%% From File: ltpictur.dtx
5190 \expandafter\let\csname ver@autopict.sty\endcsname\fmtversion
5191 \newdimen\@wholewidth
5192 \newdimen\@halfwidth
5193 \newdimen\unitlength \unitlength =1pt
5194 \newbox\@picbox
5195 \newdimen\@picht
5196 \long\gdef\picture#1{\pictur@#1}
5197 \gdef\pictur@(#1){%
5198   \@ifnextchar({\@picture(#1)}{\@picture(#1)(0,0)}}
5199 \gdef\@picture(#1,#2)(#3,#4){%
5200   \@picht#2\unitlength
5201   \setbox\@picbox\hb@xt@#1\unitlength\bgroup
5202     \hskip -#3\unitlength
5203     \lower #4\unitlength\hbox\bgroup
5204       \ignorespaces}
5205 \gdef\endpicture{%
5206   \egroup\hss\egroup
5207     \ht\@picbox\@picht\dp\@picbox\z@
5208     \mbox{\box\@picbox}}
5209 \long\gdef\put(#1,#2)#3{%
5210   \@killglue\raise#2\unitlength
5211   \hb@xt@\z@{\kern#1\unitlength #3\hss}%
5212   \ignorespaces}
5213 \gdef\multiput(#1,#2)#3{%
5214   \@xdim #1\unitlength
5215   \@ydim #2\unitlength
5216    \@multiput(}
5217 \long\gdef\@multiput(#1,#2)#3#4{%
5218   \@killglue\@multicnt #3\relax
5219   \@whilenum \@multicnt >\z@\do
5220     {\raise\@ydim\hb@xt@\z@{\kern\@xdim #4\hss}%
5221      \advance\@multicnt\m@ne
5222      \advance\@xdim#1\unitlength\advance\@ydim#2\unitlength}%
5223   \ignorespaces}
5224 \gdef\@killglue{\unskip\@whiledim \lastskip >\z@\do{\unskip}}
5225 \gdef\thinlines{\let\@linefnt\tenln \let\@circlefnt\tencirc
5226   \@wholewidth\fontdimen8\tenln \@halfwidth .5\@wholewidth}
5227 \gdef\thicklines{\let\@linefnt\tenlnw \let\@circlefnt\tencircw
5228   \@wholewidth\fontdimen8\tenlnw \@halfwidth .5\@wholewidth}
5229 \gdef\linethickness#1{\@wholewidth #1\relax \@halfwidth .5\@wholewidth}
5230 \gdef\shortstack{\@ifnextchar[\@shortstack{\@shortstack[c]}}
5231 \gdef\@shortstack[#1]{%
5232   \leavevmode
5233   \vbox\bgroup
5234     \baselineskip-\p@\lineskip 3\p@
5235     \let\mb@l\hss\let\mb@r\hss
5236     \expandafter\let\csname mb@#1\endcsname\relax
5237     \let\\\@stackcr
5238     \@ishortstack}
5239 \gdef\@ishortstack#1{\ialign{\mb@l {##}\unskip\mb@r\cr #1\crcr}\egroup}
5240 \gdef\@stackcr{\@ifstar\@ixstackcr\@ixstackcr}
5241 \gdef\@ixstackcr{\@ifnextchar[\@istackcr{\cr\ignorespaces}}
5242 \gdef\@istackcr[#1]{\cr\noalign{\vskip #1}\ignorespaces}
5243 \newif\if@negarg
5244 \gdef\line(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
5245   \@linelen #3\unitlength
5246   \ifdim\@linelen<\z@\@badlinearg\else
5247     \ifnum\@xarg =\z@ \@vline
5248       \else \ifnum\@yarg =\z@ \@hline \else \@sline\fi
5249     \fi
5250   \fi}
5251 \gdef\@sline{%
5252   \ifnum\@xarg<\z@ \@negargtrue \@xarg -\@xarg \@yyarg -\@yarg
5253   \else \@negargfalse \@yyarg \@yarg \fi
5254 \ifnum \@yyarg >\z@ \@tempcnta\@yyarg \else \@tempcnta -\@yyarg \fi
5255 \ifnum\@tempcnta>6 \@badlinearg\@tempcnta\z@ \fi
5256 \ifnum\@xarg>6 \@badlinearg\@xarg \@ne \fi
5257 \setbox\@linechar\hbox{\@linefnt\@getlinechar(\@xarg,\@yyarg)}%
5258 \ifdim\wd\@linechar=\z@
5259    \setbox\@linechar\hbox{.}%
5260    \@badlinearg
5261 \fi
5262 \ifnum \@yarg >\z@ \let\@upordown\raise \@clnht\z@
5263    \else\let\@upordown\lower \@clnht \ht\@linechar\fi
5264 \@clnwd \wd\@linechar
5265 \if@negarg
5266   \hskip -\wd\@linechar \def\reserved@a{\hskip -2\wd\@linechar}%
5267 \else
5268      \let\reserved@a\relax
5269 \fi
5270 \@whiledim \@clnwd <\@linelen \do
5271   {\@upordown\@clnht\copy\@linechar
5272    \reserved@a
5273    \advance\@clnht \ht\@linechar
5274    \advance\@clnwd \wd\@linechar}%
5275 \advance\@clnht -\ht\@linechar
5276 \advance\@clnwd -\wd\@linechar
5277 \@tempdima\@linelen\advance\@tempdima -\@clnwd
5278 \@tempdimb\@tempdima\advance\@tempdimb -\wd\@linechar
5279 \if@negarg \hskip -\@tempdimb \else \hskip \@tempdimb \fi
5280 \multiply\@tempdima \@m
5281 \@tempcnta \@tempdima
5282 \@tempdima \wd\@linechar \divide\@tempcnta \@tempdima
5283 \@tempdima \ht\@linechar \multiply\@tempdima \@tempcnta
5284 \divide\@tempdima \@m
5285 \advance\@clnht \@tempdima
5286 \ifdim \@linelen <\wd\@linechar
5287    \hskip \wd\@linechar
5288    \ifdim \@linelen = \z@
5289    \else
5290      \@picture@warn
5291    \fi
5292    \else\@upordown\@clnht\copy\@linechar\fi}
5293 \gdef\@hline{\ifnum \@xarg <\z@ \hskip -\@linelen \fi
5294 \vrule \@height \@halfwidth \@depth \@halfwidth \@width \@linelen
5295 \ifnum \@xarg <\z@ \hskip -\@linelen \fi}
5296 \gdef\@getlinechar(#1,#2){\@tempcnta#1\relax\multiply\@tempcnta 8%
5297   \advance\@tempcnta -9\ifnum #2>\z@ \advance\@tempcnta #2\relax\else
5298   \advance\@tempcnta -#2\relax\advance\@tempcnta 64 \fi
5299   \char\@tempcnta}
5300 \gdef\vector(#1,#2)#3{\@xarg #1\relax \@yarg #2\relax
5301   \@tempcnta \ifnum\@xarg<\z@ -\@xarg\else\@xarg\fi
5302   \ifnum\@tempcnta<5\relax
5303   \@linelen #3\unitlength
5304   \ifdim\@linelen<\z@\@badlinearg\else
5305     \ifnum\@xarg =\z@ \@vvector
5306       \else \ifnum\@yarg =\z@ \@hvector \else \@svector\fi
5307     \fi
5308   \fi
5309   \else\@badlinearg\fi}
5310 \gdef\@hvector{\@hline\hb@xt@\z@{\@linefnt
5311  \ifnum \@xarg <\z@ \@getlarrow(1,0)\hss\else
5312     \hss\@getrarrow(1,0)\fi}}
5313 \gdef\@vvector{\ifnum \@yarg <\z@ \@downvector \else \@upvector \fi}
5314 \gdef\@svector{\@sline
5315   \@tempcnta\@yarg \ifnum\@tempcnta <\z@ \@tempcnta -\@tempcnta\fi
5316   \ifnum\@tempcnta <5%
5317     \hskip -\wd\@linechar
5318     \@upordown\@clnht \hbox{\@linefnt  \if@negarg
5319     \@getlarrow(\@xarg,\@yyarg)\else \@getrarrow(\@xarg,\@yyarg)\fi}%
5320   \else\@badlinearg\fi}
5321 \gdef\@getlarrow(#1,#2){\ifnum #2=\z@ \@tempcnta 27 % '33
5322   \else
5323   \@tempcnta #1\relax\multiply\@tempcnta \sixt@@n
5324   \advance\@tempcnta -9 \@tempcntb #2\relax\multiply\@tempcntb \tw@
5325   \ifnum \@tempcntb >\z@ \advance\@tempcnta \@tempcntb
5326   \else\advance\@tempcnta -\@tempcntb\advance\@tempcnta 64
5327   \fi\fi\char\@tempcnta}
5328 \gdef\@getrarrow(#1,#2){\@tempcntb #2\relax
5329 \ifnum\@tempcntb <\z@ \@tempcntb -\@tempcntb\relax\fi
5330 \ifcase \@tempcntb\relax \@tempcnta 45  % '55
5331 \or
5332 \ifnum #1<\thr@@ \@tempcnta #1\relax\multiply\@tempcnta
5333 24\advance\@tempcnta -6 \else \ifnum #1=\thr@@ \@tempcnta 49
5334 \else\@tempcnta 58 \fi\fi\or
5335 \ifnum #1<\thr@@ \@tempcnta=#1\relax\multiply\@tempcnta
5336 24\advance\@tempcnta -\thr@@ \else \@tempcnta 51 \fi\or
5337 \@tempcnta #1\relax\multiply\@tempcnta
5338 \sixt@@n \advance\@tempcnta -\tw@ \else
5339 \@tempcnta #1\relax\multiply\@tempcnta
5340 \sixt@@n \advance\@tempcnta 7 \fi\ifnum #2<\z@ \advance\@tempcnta 64 \fi
5341 \char\@tempcnta}
5342 \gdef\@vline{\ifnum \@yarg <\z@ \@downline \else \@upline\fi}
5343 \gdef\@upline{%
5344   \hb@xt@\z@{\hskip -\@halfwidth \vrule \@width \@wholewidth
5345    \@height \@linelen \@depth \z@\hss}}
5346 \gdef\@downline{%
5347   \hb@xt@\z@{\hskip -\@halfwidth \vrule \@width \@wholewidth
5348    \@height \z@ \@depth \@linelen \hss}}
5349 \gdef\@upvector{\@upline\setbox\@tempboxa\hbox{\@linefnt\char 54}%  % '66
5350   \raise \@linelen \hb@xt@\z@{\lower \ht\@tempboxa\box\@tempboxa\hss}}
5351 \gdef\@downvector{\@downline\lower \@linelen
5352       \hb@xt@\z@{\@linefnt\char 63  % '77
5353       \hss}}
5354 \gdef\dashbox#1(#2,#3){\leavevmode\hb@xt@\z@{\baselineskip \z@skip
5355 \lineskip \z@skip
5356 \@dashdim #2\unitlength
5357 \@dashcnt \@dashdim \advance\@dashcnt 200
5358 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
5359 \ifodd\@dashcnt\@dashdim \z@
5360 \advance\@dashcnt \@ne \divide\@dashcnt \tw@
5361 \else \divide\@dashdim \tw@ \divide\@dashcnt \tw@
5362 \advance\@dashcnt \m@ne
5363 \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
5364 \@width \@dashdim}\put(0,0){\copy\@dashbox}%
5365 \put(0,#3){\copy\@dashbox}%
5366 \put(#2,0){\hskip-\@dashdim\copy\@dashbox}%
5367 \put(#2,#3){\hskip-\@dashdim\box\@dashbox}%
5368 \multiply\@dashdim \thr@@
5369 \fi
5370 \setbox\@dashbox \hbox{\vrule \@height \@halfwidth \@depth \@halfwidth
5371 \@width #1\unitlength\hskip #1\unitlength}\@tempcnta\z@
5372 \put(0,0){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
5373 \do{\copy\@dashbox\advance\@tempcnta \@ne }}\@tempcnta\z@
5374 \put(0,#3){\hskip\@dashdim \@whilenum \@tempcnta <\@dashcnt
5375 \do{\copy\@dashbox\advance\@tempcnta \@ne }}%
5376 \@dashdim #3\unitlength
5377 \@dashcnt \@dashdim \advance\@dashcnt 200
5378 \@dashdim #1\unitlength\divide\@dashcnt \@dashdim
5379 \ifodd\@dashcnt \@dashdim \z@
5380 \advance\@dashcnt \@ne \divide\@dashcnt \tw@
5381 \else
5382 \divide\@dashdim \tw@ \divide\@dashcnt \tw@
5383 \advance\@dashcnt \m@ne
5384 \setbox\@dashbox\hbox{\hskip -\@halfwidth
5385 \vrule \@width \@wholewidth
5386 \@height \@dashdim}\put(0,0){\copy\@dashbox}%
5387 \put(#2,0){\copy\@dashbox}%
5388 \put(0,#3){\lower\@dashdim\copy\@dashbox}%
5389 \put(#2,#3){\lower\@dashdim\copy\@dashbox}%
5390 \multiply\@dashdim \thr@@
5391 \fi
5392 \setbox\@dashbox\hbox{\vrule \@width \@wholewidth
5393 \@height #1\unitlength}\@tempcnta\z@
5394 \put(0,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta <\@dashcnt
5395 \do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
5396 \vskip\@dashdim}}\@tempcnta\z@
5397 \put(#2,0){\hskip -\@halfwidth \vbox{\@whilenum \@tempcnta<\@dashcnt
5398 \do{\vskip #1\unitlength\copy\@dashbox\advance\@tempcnta \@ne }%
5399 \vskip\@dashdim}}}\@makepicbox(#2,#3)}
5400 \newif\if@ovt
5401 \newif\if@ovb
5402 \newif\if@ovl
5403 \newif\if@ovr
5404 \newdimen\@ovxx
5405 \newdimen\@ovyy
5406 \newdimen\@ovdx
5407 \newdimen\@ovdy
5408 \newdimen\@ovro
5409 \newdimen\@ovri
5410 \gdef\@getcirc#1{\@tempdima #1\relax \advance\@tempdima 2\p@
5411   \@tempcnta\@tempdima
5412   \@tempdima 4\p@ \divide\@tempcnta\@tempdima
5413   \ifnum \@tempcnta >10\relax
5414       \@picture@warn
5415       \@tempcnta 10\relax
5416   \fi
5417   \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne
5418     \else \@picture@warn \fi
5419   \multiply\@tempcnta 4\relax
5420   \setbox \@tempboxa \hbox{\@circlefnt
5421   \char \@tempcnta}\@tempdima \wd \@tempboxa}
5422 \def\@picture@warn{\@latex@warning{%
5423      \string\oval, \string\circle, or \string\line\space
5424      size unavailable}}
5425 \gdef\@put#1#2#3{\raise #2\hb@xt@\z@{\hskip #1#3\hss}}
5426 \gdef\oval(#1,#2){\@ifnextchar[{\@oval(#1,#2)}{\@oval(#1,#2)[]}}
5427 \gdef\@oval(#1,#2)[#3]{\begingroup\boxmaxdepth \maxdimen
5428   \@ovttrue \@ovbtrue \@ovltrue \@ovrtrue
5429   \@tfor\reserved@a :=#3\do{\csname @ov\reserved@a false\endcsname}%
5430   \@ovxx
5431   #1\unitlength \@ovyy #2\unitlength
5432   \@tempdimb \ifdim \@ovyy >\@ovxx \@ovxx\else \@ovyy \fi
5433   \advance \@tempdimb -2\p@
5434   \@getcirc \@tempdimb
5435   \@ovro \ht\@tempboxa \@ovri \dp\@tempboxa
5436   \@ovdx\@ovxx \advance\@ovdx -\@tempdima \divide\@ovdx \tw@
5437   \@ovdy\@ovyy \advance\@ovdy -\@tempdima \divide\@ovdy \tw@
5438   \@circlefnt \setbox\@tempboxa
5439   \hbox{\if@ovr \@ovvert32\kern -\@tempdima \fi
5440   \if@ovl \kern \@ovxx \@ovvert01\kern -\@tempdima \kern -\@ovxx \fi
5441   \if@ovt \@ovhorz \kern -\@ovxx \fi
5442   \if@ovb \raise \@ovyy \@ovhorz \fi}\advance\@ovdx\@ovro
5443   \advance\@ovdy\@ovro \ht\@tempboxa\z@ \dp\@tempboxa\z@
5444   \@put{-\@ovdx}{-\@ovdy}{\box\@tempboxa}%
5445   \endgroup}
5446 \gdef\@ovvert#1#2{\vbox to\@ovyy{%
5447     \if@ovb \@tempcntb \@tempcnta \advance \@tempcntb #1\relax
5448       \kern -\@ovro \hbox{\char \@tempcntb}\nointerlineskip
5449     \else \kern \@ovri \kern \@ovdy \fi
5450     \leaders\vrule \@width \@wholewidth\vfil \nointerlineskip
5451     \if@ovt \@tempcntb \@tempcnta \advance \@tempcntb #2\relax
5452       \hbox{\char \@tempcntb}%
5453     \else \kern \@ovdy \kern \@ovro \fi}}
5454 \gdef\@ovhorz{\hb@xt@\@ovxx{\kern \@ovro
5455     \if@ovr \else \kern \@ovdx \fi
5456     \leaders \hrule \@height \@wholewidth \hfil
5457     \if@ovl \else \kern \@ovdx \fi
5458     \kern \@ovri}}
5459 \gdef\circle{\@inmatherr\circle\@ifstar\@dot\@circle}
5460 \gdef\@circle#1{%
5461   \begingroup \boxmaxdepth \maxdimen \@tempdimb #1\unitlength
5462    \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb
5463       \@ovro\ht\@tempboxa
5464      \setbox\@tempboxa\hbox{\@circlefnt
5465       \advance\@tempcnta\tw@ \char \@tempcnta
5466       \advance\@tempcnta\m@ne \char \@tempcnta \kern -2\@tempdima
5467       \advance\@tempcnta\tw@
5468       \raise \@tempdima \hbox{\char\@tempcnta}\raise \@tempdima
5469         \box\@tempboxa}\ht\@tempboxa\z@ \dp\@tempboxa\z@
5470       \@put{-\@ovro}{-\@ovro}{\box\@tempboxa}%
5471    \else  \@circ\@tempdimb{96}\fi\endgroup}
5472 \gdef\@dot#1{\@tempdimb #1\unitlength \@circ\@tempdimb{112}}
5473 \gdef\@circ#1#2{\@tempdima #1\relax \advance\@tempdima .5\p@
5474    \@tempcnta\@tempdima \@tempdima \p@
5475    \divide\@tempcnta\@tempdima
5476    \ifnum\@tempcnta >15\relax \@tempcnta 15\relax \fi
5477    \ifnum \@tempcnta >\z@ \advance\@tempcnta\m@ne\fi
5478    \advance\@tempcnta #2\relax
5479    \@circlefnt \char\@tempcnta}
5480 \newcount\@xarg
5481 \newcount\@yarg
5482 \newcount\@yyarg
5483 \newcount\@multicnt
5484 \newdimen\@xdim
5485 \newdimen\@ydim
5486 \newbox\@linechar
5487 \newdimen\@linelen
5488 \newdimen\@clnwd
5489 \newdimen\@clnht
5490 \newdimen\@dashdim
5491 \newbox\@dashbox
5492 \newcount\@dashcnt
5493 \let\@linefnt\tenln
5494 \let\@circlefnt\tencirc
5495 \@wholewidth\fontdimen8\tenln
5496 \@halfwidth .5\@wholewidth
5497 \gdef\qbeziermax{500}
5498 \newcommand\qbezier[2][0]{\bezier{#1}#2}
5499 \gdef\bezier#1)#2(#3)#4({\@bezier#1)(#3)(}
5500 \gdef\@bezier#1(#2,#3)(#4,#5)(#6,#7){%
5501   \ifnum #1=\z@
5502       \@ovxx #4\unitlength
5503         \advance\@ovxx -#2\unitlength
5504         \ifdim \@ovxx<\z@ \@ovxx -\@ovxx \fi
5505       \@ovdx #6\unitlength
5506         \advance\@ovdx -#4\unitlength
5507         \ifdim \@ovdx<\z@ \@ovdx -\@ovdx \fi
5508         \ifdim \@ovxx<\@ovdx \@ovxx \@ovdx \fi
5509       \@ovyy #5\unitlength
5510         \advance\@ovyy -#3\unitlength
5511         \ifdim \@ovyy<\z@ \@ovyy -\@ovyy \fi
5512       \@ovdy #7\unitlength
5513         \advance\@ovdy -#5\unitlength
5514         \ifdim \@ovdy<\z@  \@ovdy -\@ovdy \fi
5515         \ifdim \@ovyy<\@ovdy \@ovyy  \@ovdy \fi
5516       \@multicnt
5517          \ifdim \@ovxx>\@ovyy \@ovxx \else \@ovyy \fi
5518       \@ovxx .5\@halfwidth \divide\@multicnt\@ovxx
5519       \ifnum \qbeziermax<\@multicnt \@multicnt\qbeziermax\relax \fi
5520   \else \@multicnt#1\relax \fi
5521   \@tempcnta\@multicnt \advance\@tempcnta\@ne
5522   \@ovdx #4\unitlength \advance\@ovdx -#2\unitlength
5523       \multiply\@ovdx \tw@
5524   \@ovxx #6\unitlength \advance\@ovxx -#2\unitlength
5525       \advance\@ovxx -\@ovdx \divide\@ovxx\@multicnt
5526   \@ovdy #5\unitlength \advance\@ovdy -#3\unitlength
5527        \multiply\@ovdy \tw@
5528   \@ovyy #7\unitlength \advance\@ovyy -#3\unitlength
5529       \advance\@ovyy -\@ovdy \divide\@ovyy\@multicnt
5530   \setbox\@tempboxa\hbox{%
5531             \hskip -\@halfwidth
5532             \vrule \@height\@halfwidth
5533                    \@depth \@halfwidth
5534                    \@width \@wholewidth}%
5535    \put(#2,#3){%
5536      \count@\z@
5537      \@whilenum{\count@<\@tempcnta}\do
5538         {\@xdim\count@\@ovxx
5539            \advance\@xdim\@ovdx
5540            \divide\@xdim\@multicnt
5541            \multiply\@xdim\count@
5542          \@ydim\count@\@ovyy
5543             \advance\@ydim\@ovdy
5544             \divide\@ydim\@multicnt
5545             \multiply\@ydim\count@
5546          \raise \@ydim
5547             \hb@xt@\z@{\kern\@xdim
5548                         \unhcopy\@tempboxa\hss}%
5549          \advance\count@\@ne}}}
5550 %%% From File: ltthm.dtx
5551 \def\newtheorem#1{%
5552   \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
5553 \def\@nthm#1#2{%
5554   \@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
5555 \def\@xnthm#1#2[#3]{%
5556   \expandafter\@ifdefinable\csname #1\endcsname
5557     {\@definecounter{#1}\@newctr{#1}[#3]%
5558      \expandafter\xdef\csname the#1\endcsname{%
5559        \expandafter\noexpand\csname the#3\endcsname \@thmcountersep
5560           \@thmcounter{#1}}%
5561      \global\@namedef{#1}{\@thm{#1}{#2}}%
5562      \global\@namedef{end#1}{\@endtheorem}}}
5563 \def\@ynthm#1#2{%
5564   \expandafter\@ifdefinable\csname #1\endcsname
5565     {\@definecounter{#1}%
5566      \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
5567      \global\@namedef{#1}{\@thm{#1}{#2}}%
5568      \global\@namedef{end#1}{\@endtheorem}}}
5569 \def\@othm#1[#2]#3{%
5570   \@ifundefined{c@#2}{\@nocounterr{#2}}%
5571     {\expandafter\@ifdefinable\csname #1\endcsname
5572     {\global\@namedef{the#1}{\@nameuse{the#2}}%
5573   \global\@namedef{#1}{\@thm{#2}{#3}}%
5574   \global\@namedef{end#1}{\@endtheorem}}}}
5575 \def\@thm#1#2{%
5576   \refstepcounter{#1}%
5577   \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
5578 \def\@xthm#1#2{%
5579   \@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}
5580 \def\@ythm#1#2[#3]{%
5581   \@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
5582 \def\@thmcounter#1{\noexpand\arabic{#1}}
5583 \def\@thmcountersep{.}
5584 \def\@begintheorem#1#2{\trivlist
5585    \item[\hskip \labelsep{\bfseries #1\ #2}]\itshape}
5586 \def\@opargbegintheorem#1#2#3{\trivlist
5587       \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\itshape}
5588 \def\@endtheorem{\endtrivlist}
5589 %%% From File: ltsect.dtx
5590 \message{title,}
5591 \def\title#1{\gdef\@title{#1}}
5592 \def\@title{\@latex@error{No \noexpand\title given}\@ehc}
5593 \def\author#1{\gdef\@author{#1}}
5594 \def\@author{\@latex@warning@no@line{No \noexpand\author given}}
5595 \def\date#1{\gdef\@date{#1}}
5596 \gdef\@date{\today}
5597 \def\thanks#1{\footnotemark
5598     \protected@xdef\@thanks{\@thanks
5599         \protect\footnotetext[\the\c@footnote]{#1}}%
5600 }
5601 \let\@thanks\@empty
5602 \def\and{%                  % \begin{tabular}
5603   \end{tabular}%
5604   \hskip 1em \@plus.17fil%
5605   \begin{tabular}[t]{c}}%   % \end{tabular}
5606 \message{sectioning,}
5607 \newcount\@secpenalty
5608 \@secpenalty = -300
5609 \newif\if@noskipsec \@noskipsectrue
5610 \def\@startsection#1#2#3#4#5#6{%
5611   \if@noskipsec \leavevmode \fi
5612   \par
5613   \@tempskipa #4\relax
5614   \@afterindenttrue
5615   \ifdim \@tempskipa <\z@
5616     \@tempskipa -\@tempskipa \@afterindentfalse
5617   \fi
5618   \if@nobreak
5619     \everypar{}%
5620   \else
5621     \addpenalty\@secpenalty\addvspace\@tempskipa
5622   \fi
5623   \@ifstar
5624     {\@ssect{#3}{#4}{#5}{#6}}%
5625     {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
5626 \def\@sect#1#2#3#4#5#6[#7]#8{%
5627   \ifnum #2>\c@secnumdepth
5628     \let\@svsec\@empty
5629   \else
5630     \refstepcounter{#1}%
5631     \protected@edef\@svsec{\@seccntformat{#1}\relax}%
5632   \fi
5633   \@tempskipa #5\relax
5634   \ifdim \@tempskipa>\z@
5635     \begingroup
5636       #6{%
5637         \@hangfrom{\hskip #3\relax\@svsec}%
5638           \interlinepenalty \@M #8\@@par}%
5639     \endgroup
5640     \csname #1mark\endcsname{#7}%
5641     \addcontentsline{toc}{#1}{%
5642       \ifnum #2>\c@secnumdepth \else
5643         \protect\numberline{\csname the#1\endcsname}%
5644       \fi
5645       #7}%
5646   \else
5647     \def\@svsechd{%
5648       #6{\hskip #3\relax
5649       \@svsec #8}%
5650       \csname #1mark\endcsname{#7}%
5651       \addcontentsline{toc}{#1}{%
5652         \ifnum #2>\c@secnumdepth \else
5653           \protect\numberline{\csname the#1\endcsname}%
5654         \fi
5655         #7}}%
5656   \fi
5657   \@xsect{#5}}
5658 \def\@xsect#1{%
5659   \@tempskipa #1\relax
5660   \ifdim \@tempskipa>\z@
5661     \par \nobreak
5662     \vskip \@tempskipa
5663     \@afterheading
5664   \else
5665     \@nobreakfalse
5666     \global\@noskipsectrue
5667     \everypar{%
5668       \if@noskipsec
5669         \global\@noskipsecfalse
5670        {\setbox\z@\lastbox}%
5671         \clubpenalty\@M
5672         \begingroup \@svsechd \endgroup
5673         \unskip
5674         \@tempskipa #1\relax
5675         \hskip -\@tempskipa
5676       \else
5677         \clubpenalty \@clubpenalty
5678         \everypar{}%
5679       \fi}%
5680   \fi
5681   \ignorespaces}
5682 \def\@seccntformat#1{\csname the#1\endcsname\quad}
5683 \def\@ssect#1#2#3#4#5{%
5684   \@tempskipa #3\relax
5685   \ifdim \@tempskipa>\z@
5686     \begingroup
5687       #4{%
5688         \@hangfrom{\hskip #1}%
5689           \interlinepenalty \@M #5\@@par}%
5690     \endgroup
5691   \else
5692     \def\@svsechd{#4{\hskip #1\relax #5}}%
5693   \fi
5694   \@xsect{#3}}
5695 \newif\if@afterindent \@afterindenttrue
5696 \def\@afterheading{%
5697   \@nobreaktrue
5698   \everypar{%
5699     \if@nobreak
5700       \@nobreakfalse
5701       \clubpenalty \@M
5702       \if@afterindent \else
5703         {\setbox\z@\lastbox}%
5704       \fi
5705     \else
5706       \clubpenalty \@clubpenalty
5707       \everypar{}%
5708     \fi}}
5709 \def\@hangfrom#1{\setbox\@tempboxa\hbox{{#1}}%
5710       \hangindent \wd\@tempboxa\noindent\box\@tempboxa}
5711 \newcount\c@secnumdepth
5712 \newcount\c@tocdepth
5713 \def\secdef#1#2{\@ifstar{#2}{\@dblarg{#1}}}
5714 \let\sectionmark\@gobble
5715 \let\subsectionmark\@gobble
5716 \let\subsubsectionmark\@gobble
5717 \let\paragraphmark\@gobble
5718 \let\subparagraphmark\@gobble
5719 \message{contents,}
5720 \def\@starttoc#1{%
5721   \begingroup
5722     \makeatletter
5723     \@input{\jobname.#1}%
5724     \if@filesw
5725       \expandafter\newwrite\csname tf@#1\endcsname
5726       \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
5727     \fi
5728     \@nobreakfalse
5729   \endgroup}
5730 \def\addcontentsline#1#2#3{%
5731   \addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}}}
5732 \long\def\addtocontents#1#2{%
5733   \protected@write\@auxout
5734       {\let\label\@gobble \let\index\@gobble \let\glossary\@gobble}%
5735       {\string\@writefile{#1}{#2}}}
5736 \def\contentsline#1{\csname l@#1\endcsname}
5737 \def\@dottedtocline#1#2#3#4#5{%
5738   \ifnum #1>\c@tocdepth \else
5739     \vskip \z@ \@plus.2\p@
5740     {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
5741      \parindent #2\relax\@afterindenttrue
5742      \interlinepenalty\@M
5743      \leavevmode
5744      \@tempdima #3\relax
5745      \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
5746      {#4}\nobreak
5747      \leaders\hbox{$\m@th
5748         \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
5749         mu$}\hfill
5750      \nobreak
5751      \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
5752      \par}%
5753   \fi}
5754 \def\numberline#1{\hb@xt@\@tempdima{#1\hfil}}
5755 %%% From File: ltfloat.dtx
5756 \message{floats,}
5757 \newcount\@floatpenalty
5758 \def\caption{%
5759    \ifx\@captype\@undefined
5760      \@latex@error{\noexpand\caption outside float}\@ehd
5761      \expandafter\@gobble
5762    \else
5763      \refstepcounter\@captype
5764      \expandafter\@firstofone
5765    \fi
5766    {\@dblarg{\@caption\@captype}}%
5767 }
5768 \long\def\@caption#1[#2]#3{%
5769   \par
5770   \addcontentsline{\csname ext@#1\endcsname}{#1}%
5771     {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
5772   \begingroup
5773     \@parboxrestore
5774     \if@minipage
5775       \@setminipage
5776     \fi
5777     \normalsize
5778     \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
5779   \endgroup}
5780 \def\@float#1{%
5781   \@ifnextchar[%
5782     {\@xfloat{#1}}%
5783     {\edef\reserved@a{\noexpand\@xfloat{#1}[\csname fps@#1\endcsname]}%
5784      \reserved@a}}
5785 \def\@dblfloat{%
5786   \if@twocolumn\let\reserved@a\@dbflt\else\let\reserved@a\@float\fi
5787   \reserved@a}
5788 \def\@xfloat #1[#2]{%
5789   \@nodocument
5790   \def \@captype {#1}%
5791    \def \@fps {#2}%
5792    \@onelevel@sanitize \@fps
5793    \def \reserved@b {!}%
5794    \ifx \reserved@b \@fps
5795      \@fpsadddefault
5796    \else
5797      \ifx \@fps \@empty
5798        \@fpsadddefault
5799      \fi
5800    \fi
5801    \ifhmode
5802      \@bsphack
5803      \@floatpenalty -\@Mii
5804    \else
5805      \@floatpenalty-\@Miii
5806    \fi
5807   \ifinner
5808      \@parmoderr\@floatpenalty\z@
5809   \else
5810     \@next\@currbox\@freelist
5811       {%
5812        \@tempcnta \sixt@@n
5813        \expandafter \@tfor \expandafter \reserved@a
5814          \expandafter :\expandafter =\@fps
5815          \do
5816           {%
5817            \if \reserved@a h%
5818              \ifodd \@tempcnta
5819              \else
5820                \advance \@tempcnta \@ne
5821              \fi
5822            \fi
5823            \if \reserved@a t%
5824              \@setfpsbit \tw@
5825            \fi
5826            \if \reserved@a b%
5827              \@setfpsbit 4%
5828            \fi
5829            \if \reserved@a p%
5830              \@setfpsbit 8%
5831            \fi
5832            \if \reserved@a !%
5833              \ifnum \@tempcnta>15
5834                \advance\@tempcnta -\sixt@@n\relax
5835              \fi
5836            \fi
5837            }%
5838        \@tempcntb \csname ftype@\@captype \endcsname
5839        \multiply \@tempcntb \@xxxii
5840        \advance \@tempcnta \@tempcntb
5841        \global \count\@currbox \@tempcnta
5842        }%
5843     \@fltovf
5844   \fi
5845   \global \setbox\@currbox
5846     \color@vbox
5847       \normalcolor
5848       \vbox \bgroup
5849         \hsize\columnwidth
5850         \@parboxrestore
5851         \@floatboxreset
5852 }
5853 \def \@floatboxreset {%
5854         \reset@font
5855         \normalsize
5856         \@setminipage
5857 }
5858 \def \@setnobreak{%
5859   \if@nobreak
5860     \let\outer@nobreak\@nobreaktrue
5861     \@nobreakfalse
5862   \fi
5863 }
5864 \def \@setminipage{%
5865   \@minipagetrue
5866   \everypar{\@minipagefalse\everypar{}}%
5867 }
5868 \def\end@float{%
5869   \@endfloatbox
5870   \ifnum\@floatpenalty <\z@
5871     \@largefloatcheck
5872     \@cons\@currlist\@currbox
5873     \ifnum\@floatpenalty <-\@Mii
5874       \penalty -\@Miv
5875       \@tempdima\prevdepth
5876       \vbox{}%
5877       \prevdepth\@tempdima
5878       \penalty\@floatpenalty
5879     \else
5880       \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
5881     \fi
5882   \fi
5883 }
5884 \def\end@dblfloat{%
5885 \if@twocolumn
5886   \@endfloatbox
5887   \ifnum\@floatpenalty <\z@
5888     \@largefloatcheck
5889     \@cons\@dbldeferlist\@currbox
5890   \fi
5891     \ifnum \@floatpenalty =-\@Mii \@Esphack\fi
5892 \else
5893   \end@float
5894 \fi
5895 }
5896 \def \@endfloatbox{%
5897       \par\vskip\z@skip      %% \par\vskip\z@ added 15 Dec 87
5898       \@minipagefalse
5899       \outer@nobreak
5900     \egroup                  %% end of vbox
5901   \color@endbox
5902 }
5903 \let\outer@nobreak\@empty
5904 \def \@largefloatcheck{%
5905   \ifdim \ht\@currbox>\textheight
5906     \@tempdima -\textheight
5907     \advance \@tempdima \ht\@currbox
5908     \@latex@warning {Float too large for page by \the\@tempdima}%
5909     \ht\@currbox \textheight
5910   \fi
5911 }
5912 \def\@dbflt#1{\@ifnextchar[{\@xdblfloat{#1}}{\@xdblfloat{#1}[tp]}}
5913 \def\@xdblfloat#1[#2]{%
5914   \@xfloat{#1}[#2]\hsize\textwidth\linewidth\textwidth}
5915 \def\@floatplacement{\global\@topnum\c@topnumber
5916     % Textpage bit, global:
5917    \global\@toproom \topfraction\@colht
5918    \global\@botnum  \c@bottomnumber
5919    \global\@botroom \bottomfraction\@colht
5920    \global\@colnum  \c@totalnumber
5921     % Floatpage bit, local:
5922    \@fpmin   \floatpagefraction\@colht}
5923 \def \@dblfloatplacement {%
5924   \global \@dbltopnum \c@dbltopnumber
5925   \global \@dbltoproom \dbltopfraction\@colht
5926   \@textmin \@colht
5927   \advance \@textmin -\@dbltoproom
5928   \@fpmin \dblfloatpagefraction\textheight
5929   \@fptop \@dblfptop
5930   \@fpsep \@dblfpsep
5931   \@fpbot \@dblfpbot
5932 }
5933 \def\marginpar{%
5934   \ifhmode
5935     \@bsphack
5936     \@floatpenalty -\@Mii
5937   \else
5938     \@floatpenalty-\@Miii
5939   \fi
5940   \ifinner
5941     \@parmoderr
5942     \@floatpenalty\z@
5943   \else
5944     \@next\@currbox\@freelist{}{}%
5945     \@next\@marbox\@freelist{\global\count\@marbox\m@ne}%
5946        {\@floatpenalty\z@
5947         \@fltovf\def\@currbox{\@tempboxa}\def\@marbox{\@tempboxa}}%
5948   \fi
5949   \@ifnextchar [\@xmpar\@ympar}
5950 \long\def\@xmpar[#1]#2{%
5951   \@savemarbox\@marbox{#1}%
5952   \@savemarbox\@currbox{#2}%
5953   \@xympar}
5954 \long\def\@ympar#1{%
5955   \@savemarbox\@marbox{#1}%
5956   \global\setbox\@currbox\copy\@marbox
5957   \@xympar}
5958 \long\def \@savemarbox #1#2{%
5959   \global\setbox #1%
5960     \color@vbox
5961       \vtop{%
5962         \hsize\marginparwidth
5963         \@parboxrestore
5964         \@marginparreset
5965         #2%
5966         \@minipagefalse
5967         \outer@nobreak
5968         }%
5969     \color@endbox
5970 }
5971 \def \@marginparreset {%
5972         \reset@font
5973         \normalsize
5974         \@setminipage
5975 }
5976 \def \@xympar{%
5977   \ifnum\@floatpenalty <\z@\@cons\@currlist\@marbox\fi
5978   \setbox\@tempboxa
5979     \color@vbox
5980       \vbox \bgroup
5981   \end@float
5982   \@ignorefalse
5983   \@esphack
5984 }
5985 \def\reversemarginpar{\global\@mparbottom\z@ \@reversemargintrue}
5986 \def\normalmarginpar{\global\@mparbottom\z@ \@reversemarginfalse}
5987 \message{footnotes,}
5988 \newinsert\footins
5989 \skip\footins=\bigskipamount % space added when footnote is present
5990 \count\footins=1000 % footnote magnification factor (1 to 1)
5991 \dimen\footins=8in % maximum footnotes per page
5992 \def\footnoterule{\kern-3\p@
5993   \hrule \@width 2in \kern 2.6\p@} % the \hrule is .4pt high
5994 \@definecounter{footnote}
5995 \def\thefootnote{\@arabic\c@footnote}
5996 \@definecounter{mpfootnote}
5997 \def\thempfootnote{{\itshape\@alph\c@mpfootnote}}
5998 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
5999 \DeclareRobustCommand*\textsuperscript[1]{%
6000   \@textsuperscript{\selectfont#1}}
6001 \def\@textsuperscript#1{%
6002   {\m@th\ensuremath{^{\mbox{\fontsize\sf@size\z@#1}}}}}
6003 \newdimen\footnotesep
6004 \def\footnote{\@ifnextchar[\@xfootnote{\stepcounter\@mpfn
6005      \protected@xdef\@thefnmark{\thempfn}%
6006      \@footnotemark\@footnotetext}}
6007 \def\@xfootnote[#1]{%
6008    \begingroup
6009      \csname c@\@mpfn\endcsname #1\relax
6010      \unrestored@protected@xdef\@thefnmark{\thempfn}%
6011    \endgroup
6012    \@footnotemark\@footnotetext}
6013 \long\def\@footnotetext#1{\insert\footins{%
6014     \reset@font\footnotesize
6015     \interlinepenalty\interfootnotelinepenalty
6016     \splittopskip\footnotesep
6017     \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
6018     \hsize\columnwidth \@parboxrestore
6019     \protected@edef\@currentlabel{%
6020        \csname p@footnote\endcsname\@thefnmark
6021     }%
6022     \color@begingroup
6023       \@makefntext{%
6024         \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
6025     \color@endgroup}}%
6026 \def\footnotemark{%
6027    \@ifnextchar[\@xfootnotemark
6028      {\stepcounter{footnote}%
6029       \protected@xdef\@thefnmark{\thefootnote}%
6030       \@footnotemark}}
6031 \def\@xfootnotemark[#1]{%
6032    \begingroup
6033       \c@footnote #1\relax
6034       \unrestored@protected@xdef\@thefnmark{\thefootnote}%
6035    \endgroup
6036    \@footnotemark}
6037 \def\@footnotemark{%
6038   \leavevmode
6039   \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
6040   \@makefnmark
6041   \ifhmode\spacefactor\@x@sf\fi
6042   \relax}
6043 \def\footnotetext{%
6044      \@ifnextchar [\@xfootnotenext
6045        {\protected@xdef\@thefnmark{\thempfn}%
6046     \@footnotetext}}
6047 \def\@xfootnotenext[#1]{%
6048   \begingroup
6049      \csname c@\@mpfn\endcsname #1\relax
6050      \unrestored@protected@xdef\@thefnmark{\thempfn}%
6051   \endgroup
6052   \@footnotetext}
6053 \def\@mpfn{footnote}
6054 \def\thempfn{\thefootnote}
6055 %%% From File: ltidxglo.dtx
6056 \message{index,}
6057 \def\makeindex{%
6058   \newwrite\@indexfile
6059   \immediate\openout\@indexfile=\jobname.idx
6060   \def\index{\@bsphack\begingroup
6061              \@sanitize
6062              \@wrindex}\typeout
6063     {Writing index file \jobname.idx}%
6064   \let\makeindex\@empty
6065 }
6066 \@onlypreamble\makeindex
6067 \def\@wrindex#1{%
6068    \protected@write\@indexfile{}%
6069       {\string\indexentry{#1}{\thepage}}%
6070  \endgroup
6071  \@esphack}
6072 \def\index{\@bsphack\begingroup \@sanitize\@index}
6073 \def\@index#1{\endgroup\@esphack}
6074 \def\makeglossary{%
6075   \newwrite\@glossaryfile
6076   \immediate\openout\@glossaryfile=\jobname.glo
6077   \def\glossary{\@bsphack\begingroup
6078                 \@sanitize
6079                 \@wrglossary}\typeout
6080     {Writing glossary file \jobname.glo }%
6081   \let\makeglossary\@empty
6082 }
6083 \@onlypreamble\makeglossary
6084 \def\@wrglossary#1{%
6085    \protected@write\@glossaryfile{}%
6086       {\string\glossaryentry{#1}{\thepage}}%
6087  \endgroup
6088  \@esphack}
6089 \def\glossary{\@bsphack\begingroup\@sanitize\@index}
6090 %%% From File: ltbibl.dtx
6091 \message{bibliography,}
6092 \def\bibitem{\@ifnextchar[\@lbibitem\@bibitem}
6093 \def\@lbibitem[#1]#2{\item[\@biblabel{#1}\hfill]\if@filesw
6094       {\let\protect\noexpand
6095        \immediate
6096        \write\@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces}
6097 \def\@bibitem#1{\item\if@filesw \immediate\write\@auxout
6098        {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}
6099 \def\bibcite{\@newl@bel b}
6100 \let\citation\@gobble
6101 \DeclareRobustCommand\cite{%
6102   \@ifnextchar [{\@tempswatrue\@citex}{\@tempswafalse\@citex[]}}
6103 \def\@citex[#1]#2{\leavevmode
6104   \let\@citea\@empty
6105   \@cite{\@for\@citeb:=#2\do
6106     {\@citea\def\@citea{,\penalty\@m\ }%
6107      \edef\@citeb{\expandafter\@firstofone\@citeb\@empty}%
6108      \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
6109      \@ifundefined{b@\@citeb}{\hbox{\reset@font\bfseries ?}%
6110        \G@refundefinedtrue
6111        \@latex@warning
6112          {Citation `\@citeb' on page \thepage \space undefined}}%
6113        {\@cite@ofmt{\csname b@\@citeb\endcsname}}}}{#1}}
6114 \let\bibdata=\@gobble
6115 \let\bibstyle=\@gobble
6116 \def\bibliography#1{%
6117   \if@filesw
6118     \immediate\write\@auxout{\string\bibdata{#1}}%
6119   \fi
6120   \@input@{\jobname.bbl}}
6121 \def\bibliographystyle#1{%
6122   \ifx\@begindocumenthook\@undefined\else
6123     \expandafter\AtBeginDocument
6124   \fi
6125     {\if@filesw
6126        \immediate\write\@auxout{\string\bibstyle{#1}}%
6127      \fi}}
6128 \def\nocite#1{\@bsphack
6129   \ifx\@onlypreamble\document
6130     \@for\@citeb:=#1\do{%
6131       \edef\@citeb{\expandafter\@firstofone\@citeb}%
6132       \if@filesw\immediate\write\@auxout{\string\citation{\@citeb}}\fi
6133       \@ifundefined{b@\@citeb}{\G@refundefinedtrue
6134           \@latex@warning{Citation `\@citeb' undefined}}{}}%
6135   \else
6136     \@latex@error{Cannot be used in preamble}\@eha
6137     % \AtBeginDocument{\nocite{#1}}
6138   \fi
6139   \@esphack}
6140 \expandafter\let\csname b@*\endcsname\@empty
6141 \def\@cite#1#2{[{#1\if@tempswa , #2\fi}]}
6142 \let\@cite@ofmt\hbox
6143 \def\@biblabel#1{[#1]}
6144 %%% From File: ltpage.dtx
6145 \def\pagestyle#1{%
6146   \@ifundefined{ps@#1}%
6147     \undefinedpagestyle
6148     {\@nameuse{ps@#1}}}
6149 \def\thispagestyle#1{%
6150   \@ifundefined{ps@#1}%
6151     \undefinedpagestyle
6152     {\global\@specialpagetrue\gdef\@specialstyle{#1}}}
6153 \def\ps@empty{%
6154   \let\@mkboth\@gobbletwo\let\@oddhead\@empty\let\@oddfoot\@empty
6155   \let\@evenhead\@empty\let\@evenfoot\@empty}
6156 \def\ps@plain{\let\@mkboth\@gobbletwo
6157      \let\@oddhead\@empty\def\@oddfoot{\reset@font\hfil\thepage
6158      \hfil}\let\@evenhead\@empty\let\@evenfoot\@oddfoot}
6159 \let\@leftmark\@firstoftwo
6160 \let\@rightmark\@secondoftwo
6161 \def\markboth#1#2{%
6162   \begingroup
6163     \let\label\relax \let\index\relax \let\glossary\relax
6164     \unrestored@protected@xdef\@themark {{#1}{#2}}%
6165     \@temptokena \expandafter{\@themark}%
6166     \mark{\the\@temptokena}%
6167   \endgroup
6168   \if@nobreak\ifvmode\nobreak\fi\fi}
6169 \def\markright#1{%
6170   \begingroup
6171     \let\label\relax \let\index\relax \let\glossary\relax
6172     \expandafter\@markright\@themark {#1}%
6173     \@temptokena \expandafter{\@themark}%
6174     \mark{\the\@temptokena}%
6175   \endgroup
6176   \if@nobreak\ifvmode\nobreak\fi\fi}
6177 \def\@markright#1#2#3{\@temptokena {#1}%
6178   \unrestored@protected@xdef\@themark{{\the\@temptokena}{#3}}}
6179 \def\leftmark{\expandafter\@leftmark\botmark\@empty\@empty}
6180 \def\rightmark{\expandafter\@rightmark\firstmark\@empty\@empty}
6181 \def\@themark{{}{}}
6182 \def\raggedbottom{%
6183   \def\@textbottom{\vskip \z@ \@plus.0001fil}\let\@texttop\relax}
6184 \def\flushbottom{%
6185   \let\@textbottom\relax \let\@texttop\relax}
6186 \def\sloppy{%
6187   \tolerance 9999%
6188   \emergencystretch 3em%
6189   \hfuzz .5\p@
6190   \vfuzz\hfuzz}
6191 \def\sloppypar{\par\sloppy}
6192 \def\endsloppypar{\par}
6193 \def\fussy{%
6194   \emergencystretch\z@
6195   \tolerance 200%
6196   \hfuzz .1\p@
6197   \vfuzz\hfuzz}
6198 \overfullrule 0pt
6199 %%% From File: ltoutput.dtx
6200 \expandafter\let\csname ver@autoout1.sty\endcsname\fmtversion
6201 \message{output,}
6202 \maxdeadcycles = 100
6203 \let\@elt\relax
6204 \def\@next#1#2#3#4{\ifx#2\@empty #4\else
6205    \expandafter\@xnext #2\@@#1#2#3\fi}
6206 \def\@xnext \@elt #1#2\@@#3#4{\def#3{#1}\gdef#4{#2}}
6207 \def\@testfalse{\global\let\if@test\iffalse}
6208 \def\@testtrue {\global\let\if@test\iftrue}
6209 \@testfalse
6210 \def\@bitor#1#2{\@testfalse {\let\@elt\@xbitor
6211    \@tempcnta #1\relax #2}}
6212 \def\@xbitor #1{\@tempcntb \count#1
6213    \ifnum \@tempcnta =\z@
6214    \else
6215      \divide\@tempcntb\@tempcnta
6216      \ifodd\@tempcntb \@testtrue\fi
6217    \fi}
6218 \newinsert\bx@A
6219 \newinsert\bx@B
6220 \newinsert\bx@C
6221 \newinsert\bx@D
6222 \newinsert\bx@E
6223 \newinsert\bx@F
6224 \newinsert\bx@G
6225 \newinsert\bx@H
6226 \newinsert\bx@I
6227 \newinsert\bx@J
6228 \newinsert\bx@K
6229 \newinsert\bx@L
6230 \newinsert\bx@M
6231 \newinsert\bx@N
6232 \newinsert\bx@O
6233 \newinsert\bx@P
6234 \newinsert\bx@Q
6235 \newinsert\bx@R
6236 \gdef\@freelist{\@elt\bx@A\@elt\bx@B\@elt\bx@C\@elt\bx@D\@elt\bx@E
6237                \@elt\bx@F\@elt\bx@G\@elt\bx@H\@elt\bx@I\@elt\bx@J
6238                 \@elt\bx@K\@elt\bx@L\@elt\bx@M\@elt\bx@N
6239                 \@elt\bx@O\@elt\bx@P\@elt\bx@Q\@elt\bx@R}
6240 \gdef\@toplist{}
6241 \gdef\@botlist{}
6242 \gdef\@midlist{}
6243 \gdef\@currlist{}
6244 \gdef\@deferlist{}
6245 \gdef\@dbltoplist{}
6246 \gdef\@dbldeferlist{}
6247 \newdimen\topmargin
6248 \newdimen\oddsidemargin
6249 \newdimen\evensidemargin
6250 \let\@themargin=\oddsidemargin
6251 \newdimen\headheight
6252 \newdimen\headsep
6253 \newdimen\footskip
6254 \newdimen\textheight
6255 \newdimen\textwidth
6256 \newdimen\columnwidth
6257 \newdimen\columnsep
6258 \newdimen\columnseprule
6259 \newdimen\marginparwidth
6260 \newdimen\marginparsep
6261 \newdimen\marginparpush
6262 \newbox\@begindvibox
6263 \def \AtBeginDvi #1{%
6264   \global \setbox \@begindvibox
6265     \vbox{\unvbox \@begindvibox #1}%
6266 }
6267 \newdimen\@maxdepth
6268 \@maxdepth = \maxdepth
6269 \newdimen\paperheight
6270 \newdimen\paperwidth
6271 \newif \if@insert
6272 \newif \if@fcolmade
6273 \newif \if@specialpage \@specialpagefalse
6274 \newif \if@firstcolumn \@firstcolumntrue
6275 \newif \if@twocolumn   \@twocolumnfalse
6276 \newif \if@twoside     \@twosidefalse
6277 \newif \if@reversemargin \@reversemarginfalse
6278 \newif \if@mparswitch  \@mparswitchfalse
6279 \newcount \col@number
6280 \col@number \@ne
6281 \newcount\@topnum
6282 \newdimen\@toproom
6283 \newcount\@dbltopnum
6284 \newdimen\@dbltoproom
6285 \newcount\@botnum
6286 \newdimen\@botroom
6287 \newcount\@colnum
6288 \newdimen\@textmin
6289 \newdimen\@fpmin
6290 \newdimen\@colht
6291 \newdimen\@colroom
6292 \newdimen\@pageht
6293 \newdimen\@pagedp
6294 \newdimen\@mparbottom \@mparbottom\z@
6295 \newcount\@currtype
6296 \newbox\@outputbox
6297 \newbox\@leftcolumn
6298 \newbox\@holdpg
6299 \def\@thehead{\@oddhead} % initialization
6300 \def\@thefoot{\@oddfoot}
6301 \def\clearpage{%
6302   \ifvmode
6303     \ifnum \@dbltopnum =\m@ne
6304       \ifdim \pagetotal <\topskip
6305         \hbox{}%
6306       \fi
6307     \fi
6308   \fi
6309   \newpage
6310   \write\m@ne{}%
6311   \vbox{}%
6312   \penalty -\@Mi
6313 }
6314 \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
6315     \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
6316 \def\onecolumn{%
6317   \clearpage
6318   \global\columnwidth\textwidth
6319   \global\hsize\columnwidth
6320   \global\linewidth\columnwidth
6321   \global\@twocolumnfalse
6322   \col@number \@ne
6323   \@floatplacement}
6324 \def \newpage {%
6325   \if@noskipsec
6326     \ifx \@nodocument\relax
6327       \leavevmode
6328       \global \@noskipsecfalse
6329     \fi
6330   \fi
6331   \if@inlabel
6332     \leavevmode
6333     \global \@inlabelfalse
6334   \fi
6335   \if@nobreak \@nobreakfalse \everypar{}\fi
6336   \par
6337   \vfil
6338   \penalty -\@M}
6339 \def \@emptycol {\vbox{}\penalty -\@M}
6340 \def \twocolumn {%
6341   \clearpage
6342   \global\columnwidth\textwidth
6343   \global\advance\columnwidth-\columnsep
6344   \global\divide\columnwidth\tw@
6345   \global\hsize\columnwidth
6346   \global\linewidth\columnwidth
6347   \global\@twocolumntrue
6348   \global\@firstcolumntrue
6349   \col@number \tw@
6350   \@ifnextchar [\@topnewpage\@floatplacement
6351 }
6352 \long\def \@topnewpage [#1]{%
6353   \@nodocument
6354   \@next\@currbox\@freelist{}{}%
6355   \global \setbox\@currbox
6356     \color@vbox
6357       \normalcolor
6358       \vbox {%
6359         \hsize\textwidth
6360         \@parboxrestore
6361         \col@number \@ne
6362         #1%
6363         \vskip -\dbltextfloatsep
6364              }%
6365     \color@endbox
6366   \ifdim \ht\@currbox>\textheight
6367     \ht\@currbox \textheight
6368   \fi
6369   \global \count\@currbox \tw@
6370   \@tempdima -\ht\@currbox
6371   \advance \@tempdima -\dbltextfloatsep
6372   \global \advance \@colht \@tempdima
6373   \ifx \@dbltoplist \@empty
6374   \else
6375     \@latexerr{Float(s) lost}\@ehb
6376     \let \@dbltoplist \@empty
6377   \fi
6378   \@cons \@dbltoplist \@currbox
6379   \global \@dbltopnum \m@ne
6380   \ifdim \@colht<2.5\baselineskip
6381     \@latex@warning@no@line {Optional argument of \noexpand\twocolumn
6382                 too tall on page \thepage}%
6383     \@emptycol
6384     \if@firstcolumn
6385     \else
6386       \@emptycol
6387     \fi
6388   \else
6389     \global \vsize \@colht
6390     \global \@colroom \@colht
6391     \@floatplacement
6392   \fi
6393 }
6394 \output {%
6395   \let \par \@@par
6396   \ifnum \outputpenalty<-\@M
6397     \@specialoutput
6398   \else
6399     \@makecol
6400     \@opcol
6401     \@startcolumn
6402     \@whilesw \if@fcolmade \fi
6403       {%
6404        \@opcol\@startcolumn}%
6405   \fi
6406   \ifnum \outputpenalty>-\@Miv
6407     \ifdim \@colroom<1.5\baselineskip
6408       \ifdim \@colroom<\textheight
6409         \@latex@warning@no@line {Text page \thepage\space
6410                                contains only floats}%
6411         \@emptycol
6412       \else
6413         \global \vsize \@colroom
6414       \fi
6415     \else
6416       \global \vsize \@colroom
6417     \fi
6418   \else
6419     \global \vsize \maxdimen
6420   \fi
6421 }
6422 \gdef\@specialoutput{%
6423    \ifnum \outputpenalty>-\@Mii
6424      \@doclearpage
6425    \else
6426      \ifnum \outputpenalty<-\@Miii
6427        \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi
6428        \global \setbox\@holdpg \vbox {\unvbox\@cclv}%
6429      \else
6430        \global \setbox\@holdpg \vbox{%
6431                       \unvbox\@holdpg
6432                       \unvbox\@cclv
6433                       \setbox\@tempboxa \lastbox
6434                       \unskip
6435                                      }%
6436        \@pagedp \dp\@holdpg
6437        \@pageht \ht\@holdpg
6438        \unvbox \@holdpg
6439        \@next\@currbox\@currlist{%
6440          \ifnum \count\@currbox>\z@
6441            \advance \@pageht \@pagedp
6442            \ifvoid\footins \else
6443              \advance \@pageht \ht\footins
6444              \advance \@pageht \skip\footins
6445              \advance \@pageht \dp\footins
6446            \fi
6447            \ifvbox \@kludgeins
6448              \ifdim \wd\@kludgeins=\z@
6449                \advance \@pageht \ht\@kludgeins
6450              \fi
6451            \fi
6452            \@reinserts
6453            \@addtocurcol
6454          \else
6455            \@reinserts
6456            \@addmarginpar
6457          \fi
6458          }\@latexbug
6459        \ifnum \outputpenalty<\z@
6460          \if@nobreak
6461            \nobreak
6462          \else
6463            \addpenalty \interlinepenalty
6464          \fi
6465        \fi
6466      \fi
6467    \fi
6468 }
6469 \def \@doclearpage {%
6470      \ifvoid\footins
6471        \ifvbox\@kludgeins
6472          {\setbox \@tempboxa \box \@kludgeins}%
6473        \fi
6474        \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa
6475        \setbox\@tempboxa\box\@cclv
6476        \xdef\@deferlist{\@toplist\@botlist\@deferlist}%
6477        \global \let \@toplist \@empty
6478        \global \let \@botlist \@empty
6479        \global \@colroom \@colht
6480        \ifx \@currlist\@empty
6481        \else
6482           \@latexerr{Float(s) lost}\@ehb
6483           \global \let \@currlist \@empty
6484        \fi
6485        \@makefcolumn\@deferlist
6486        \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
6487        \if@twocolumn
6488          \if@firstcolumn
6489            \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}%
6490            \global \let \@dbltoplist \@empty
6491            \global \@colht \textheight
6492            \begingroup
6493               \@dblfloatplacement
6494               \@makefcolumn\@dbldeferlist
6495               \@whilesw\if@fcolmade \fi{\@outputpage
6496                                         \@makefcolumn\@dbldeferlist}%
6497            \endgroup
6498          \else
6499            \vbox{}\clearpage
6500          \fi
6501        \fi
6502      \else
6503        \setbox\@cclv\vbox{\box\@cclv\vfil}%
6504        \@makecol\@opcol
6505        \clearpage
6506      \fi
6507 }
6508 \def \@opcol {%
6509   \if@twocolumn
6510     \@outputdblcol
6511   \else
6512     \@outputpage
6513   \fi
6514   \global \@mparbottom \z@ \global \@textfloatsheight \z@
6515   \@floatplacement
6516 }
6517 \gdef \@makecol {%
6518    \ifvoid\footins
6519      \setbox\@outputbox \box\@cclv
6520    \else
6521      \setbox\@outputbox \vbox {%
6522        \boxmaxdepth \@maxdepth
6523        \@tempdima\dp\@cclv
6524        \unvbox \@cclv
6525        \vskip \skip\footins
6526        \color@begingroup
6527          \normalcolor
6528          \footnoterule
6529          \unvbox \footins
6530        \color@endgroup
6531        }%
6532    \fi
6533    \let\@elt\relax
6534    \xdef\@freelist{\@freelist\@midlist}%
6535    \global \let \@midlist \@empty
6536    \@combinefloats
6537    \ifvbox\@kludgeins
6538      \@makespecialcolbox
6539    \else
6540      \setbox\@outputbox \vbox to\@colht {%
6541        \@texttop
6542        \dimen@ \dp\@outputbox
6543        \unvbox \@outputbox
6544        \vskip -\dimen@
6545        \@textbottom
6546        }%
6547    \fi
6548    \global \maxdepth \@maxdepth
6549 }
6550 \gdef \@reinserts{%
6551   \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi
6552   \ifvbox\@kludgeins\insert\@kludgeins
6553                       {\unvbox\@kludgeins}\fi
6554 }
6555 \gdef \@makespecialcolbox {%
6556    \setbox\@outputbox \vbox {%
6557      \@texttop
6558      \dimen@ \dp\@outputbox
6559      \unvbox\@outputbox
6560      \vskip-\dimen@
6561      }%
6562    \@tempdima \@colht
6563    \ifdim \wd\@kludgeins>\z@
6564      \advance \@tempdima -\ht\@outputbox
6565      \advance \@tempdima \pageshrink
6566      \setbox\@outputbox \vbox to \@colht {%
6567        \unvbox\@outputbox
6568        \vskip \@tempdima
6569        \@textbottom
6570        }%
6571    \else
6572      \advance \@tempdima -\ht\@kludgeins
6573      \setbox \@outputbox \vbox to \@colht {%
6574        \vbox to \@tempdima {%
6575          \unvbox\@outputbox
6576          \@textbottom}%
6577        \vss}%
6578    \fi
6579    {\setbox \@tempboxa \box \@kludgeins}%
6580 }
6581 \let \@texttop \relax
6582 \let \@textbottom \relax
6583 \def\@activechar@info #1{%
6584       \@latex@info@no@line {Active #1 character found while
6585                             output routine is active
6586                             \MessageBreak
6587                             This may be a bug in a package file
6588                             you are using}%
6589 }
6590 \begingroup
6591 \obeylines\obeyspaces%
6592 \catcode`\'\active%
6593 \gdef\@resetactivechars{%
6594 \def^^M{\@activechar@info{EOL}\space}%
6595 \def {\@activechar@info{space}\space}%
6596 \let'\active@math@prime}%
6597 \endgroup
6598 \def\@outputpage{%
6599 \begingroup           % the \endgroup is put in by \aftergroup
6600   \let \protect \noexpand
6601   \@resetactivechars
6602   \global\let\@@if@newlist\if@newlist
6603   \global\@newlistfalse
6604   \@parboxrestore
6605   \shipout \vbox{%
6606     \set@typeset@protect
6607     \aftergroup \endgroup
6608     \aftergroup \set@typeset@protect
6609                                 % correct? or just restore by ending
6610                                 % the group?
6611   \if@specialpage
6612     \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
6613   \fi
6614   \if@twoside
6615     \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
6616          \let\@themargin\oddsidemargin
6617     \else \let\@thehead\@evenhead
6618        \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
6619     \fi
6620   \fi
6621   \reset@font
6622   \normalsize
6623   \normalsfcodes
6624   \let\label\@gobble
6625   \let\index\@gobble
6626   \let\glossary\@gobble
6627   \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
6628     \@begindvi
6629     \vskip \topmargin
6630     \moveright\@themargin \vbox {%
6631       \setbox\@tempboxa \vbox to\headheight{%
6632         \vfil
6633         \color@hbox
6634           \normalcolor
6635           \hb@xt@\textwidth{\@thehead}%
6636         \color@endbox
6637         }%                        %% 22 Feb 87
6638       \dp\@tempboxa \z@
6639       \box\@tempboxa
6640       \vskip \headsep
6641       \box\@outputbox
6642       \baselineskip \footskip
6643       \color@hbox
6644         \normalcolor
6645         \hb@xt@\textwidth{\@thefoot}%
6646       \color@endbox
6647       }%
6648     }%
6649   \global\let\if@newlist\@@if@newlist
6650   \global \@colht \textheight
6651   \stepcounter{page}%
6652   \let\firstmark\botmark
6653 }
6654 \def \@begindvi{%
6655   \unvbox \@begindvibox
6656   \global\let \@begindvi \@empty
6657 }
6658 \def \@combinefloats {%
6659     \ifx \@toplist\@empty \else \@cflt \fi
6660     \ifx \@botlist\@empty \else \@cflb \fi
6661 }
6662 \def \@cflt{%
6663     \let \@elt \@comflelt
6664     \setbox\@tempboxa \vbox{}%
6665     \@toplist
6666     \setbox\@outputbox \vbox{%
6667                              \boxmaxdepth \maxdepth
6668                              \unvbox\@tempboxa
6669                              \vskip -\floatsep
6670                              \topfigrule
6671                              \vskip \textfloatsep
6672                              \unvbox\@outputbox
6673                              }%
6674     \let\@elt\relax
6675     \xdef\@freelist{\@freelist\@toplist}%
6676     \global\let\@toplist\@empty
6677 }
6678 \def \@cflb {%
6679     \let\@elt\@comflelt
6680     \setbox\@tempboxa \vbox{}%
6681     \@botlist
6682     \setbox\@outputbox \vbox{%
6683                              \unvbox\@outputbox
6684                              \vskip \textfloatsep
6685                              \botfigrule
6686                              \unvbox\@tempboxa
6687                              \vskip -\floatsep
6688                              }%
6689     \let\@elt\relax
6690     \xdef\@freelist{\@freelist\@botlist}%
6691     \global \let \@botlist\@empty
6692 }
6693 \def\@comflelt#1{\setbox\@tempboxa
6694       \vbox{\unvbox\@tempboxa\box #1\vskip\floatsep}}
6695 \def\@comdblflelt#1{\setbox\@tempboxa
6696       \vbox{\unvbox\@tempboxa\box #1\vskip\dblfloatsep}}
6697 \def \@combinedblfloats{%
6698   \ifx \@dbltoplist \@empty
6699   \else
6700     \setbox\@tempboxa \vbox{}%
6701     \let \@elt \@comdblflelt
6702     \@dbltoplist
6703     \let \@elt \relax
6704     \xdef \@freelist {\@freelist\@dbltoplist}%
6705     \global\let \@dbltoplist \@empty
6706     \setbox\@outputbox \vbox to\textheight
6707       {%\boxmaxdepth\maxdepth   %% probably not needed, CAR
6708        \unvbox\@tempboxa\vskip-\dblfloatsep
6709        \ifnum \@dbltopnum>\m@ne
6710          \dblfigrule
6711        \fi
6712        \vskip \dbltextfloatsep
6713        \box\@outputbox
6714        }%
6715   \fi
6716 }
6717 \def \@startcolumn {%
6718   \global \@colroom \@colht
6719   \@tryfcolumn \@deferlist
6720   \if@fcolmade
6721   \else
6722     \begingroup
6723       \let \reserved@b \@deferlist
6724       \global \let \@deferlist \@empty
6725       \let \@elt \@scolelt
6726       \reserved@b
6727     \endgroup
6728   \fi
6729 }
6730 \def \@startdblcolumn {%
6731   \@tryfcolumn \@dbldeferlist
6732   \if@fcolmade
6733   \else
6734     \begingroup
6735       \let \reserved@b \@dbldeferlist
6736       \global \let \@dbldeferlist \@empty
6737       \let \@elt \@sdblcolelt
6738       \reserved@b
6739     \endgroup
6740   \fi
6741 }
6742 \def \@tryfcolumn #1{%
6743   \global \@fcolmadefalse
6744   \ifx #1\@empty
6745   \else
6746     \xdef\@trylist{#1}%
6747     \global \let \@failedlist \@empty
6748     \begingroup
6749       \let \@elt \@xtryfc \@trylist
6750     \endgroup
6751     \if@fcolmade
6752       \@vtryfc #1%
6753     \fi
6754   \fi
6755 }
6756 \def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}
6757 \def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}
6758 \def\@vtryfc #1{%
6759   \global\setbox\@outputbox\vbox{}%
6760   \let\@elt\@wtryfc
6761   \@flsucceed
6762   \global\setbox\@outputbox \vbox to\@colht{%
6763     \vskip \@fptop
6764     \vskip -\@fpsep
6765     \unvbox \@outputbox
6766     \vskip \@fpbot}%
6767   \let\@elt\relax
6768   \xdef #1{\@failedlist\@flfail}%
6769   \xdef\@freelist{\@freelist\@flsucceed}}
6770 \def\@wtryfc #1{%
6771   \global\setbox\@outputbox\vbox{%
6772     \unvbox\@outputbox
6773     \vskip\@fpsep
6774     \box #1}}
6775 \def\@xtryfc #1{%
6776   \@next\reserved@a\@trylist{}{}%
6777   \@currtype \count #1%
6778   \divide\@currtype\@xxxii
6779   \multiply\@currtype\@xxxii
6780   \@bitor \@currtype \@failedlist
6781   \@testfp #1%
6782   \ifdim \ht #1>\@colht
6783     \@testtrue
6784   \fi
6785   \if@test
6786     \@cons\@failedlist #1%
6787   \else
6788     \@ytryfc #1%
6789   \fi}
6790 \def\@ytryfc #1{%
6791   \begingroup
6792     \gdef\@flsucceed{\@elt #1}%
6793     \global\let\@flfail\@empty
6794     \@tempdima\ht #1%
6795     \let\@elt\@ztryfc
6796     \@trylist
6797     \ifdim \@tempdima >\@fpmin
6798       \global\@fcolmadetrue
6799     \else
6800       \@cons\@failedlist #1%
6801     \fi
6802   \endgroup
6803   \if@fcolmade
6804     \let\@elt\@gobble
6805   \fi}
6806 \def\@ztryfc #1{%
6807   \@tempcnta \count#1%
6808   \divide\@tempcnta\@xxxii
6809   \multiply\@tempcnta\@xxxii
6810   \@bitor \@tempcnta {\@failedlist \@flfail}%
6811   \@testfp #1%
6812   \@tempdimb\@tempdima
6813   \advance\@tempdimb \ht#1%
6814   \advance\@tempdimb\@fpsep
6815   \ifdim \@tempdimb >\@colht
6816     \@testtrue
6817   \fi
6818   \if@test
6819     \@cons\@flfail #1%
6820   \else
6821     \@cons\@flsucceed #1%
6822     \@tempdima\@tempdimb
6823   \fi}
6824 \def \@addtobot {%
6825    \@getfpsbit 4\relax
6826    \ifodd \@tempcnta
6827      \@flsetnum \@botnum
6828      \ifnum \@botnum>\z@
6829        \@tempswafalse
6830        \@flcheckspace \@botroom \@botlist
6831        \if@tempswa
6832          \global \maxdepth \z@
6833          \@flupdates \@botnum \@botroom \@botlist
6834          \@inserttrue
6835        \fi
6836      \fi
6837    \fi
6838 }
6839 \def \@addtotoporbot {%
6840    \@getfpsbit \tw@
6841    \ifodd \@tempcnta
6842      \@flsetnum \@topnum
6843      \ifnum \@topnum>\z@
6844        \@tempswafalse
6845        \@flcheckspace \@toproom \@toplist
6846        \if@tempswa
6847          \@bitor\@currtype{\@midlist\@botlist}%
6848          \if@test
6849          \else
6850           \@flupdates \@topnum \@toproom \@toplist
6851           \@inserttrue
6852          \fi
6853        \fi
6854      \fi
6855    \fi
6856    \if@insert
6857    \else
6858      \@addtobot
6859    \fi
6860 }
6861 \def \@addtocurcol {%
6862    \@insertfalse
6863    \@setfloattypecounts
6864    \ifnum \@fpstype=8
6865    \else
6866      \ifnum \@fpstype=24
6867      \else
6868        \@flsettextmin
6869        \advance \@textmin \@textfloatsheight
6870        \@reqcolroom \@pageht
6871        \ifdim \@textmin>\@reqcolroom
6872          \@reqcolroom \@textmin
6873        \fi
6874        \advance \@reqcolroom \ht\@currbox
6875        \ifdim \@colroom>\@reqcolroom
6876          \@flsetnum \@colnum
6877          \ifnum \@colnum>\z@
6878            \@bitor\@currtype\@deferlist
6879            \if@test
6880            \else
6881              \@bitor\@currtype\@botlist
6882              \if@test
6883                \@addtobot
6884              \else
6885                \ifodd \count\@currbox
6886                  \advance \@reqcolroom \intextsep
6887                  \ifdim \@colroom>\@reqcolroom
6888                    \global \advance \@colnum \m@ne
6889                    \global \advance \@textfloatsheight \ht\@currbox
6890                    \global \advance \@textfloatsheight 2\intextsep
6891                    \@cons \@midlist \@currbox
6892                    \if@nobreak
6893                      \nobreak
6894                      \@nobreakfalse
6895                      \everypar{}%
6896                    \else
6897                      \addpenalty \interlinepenalty
6898                    \fi
6899                    \vskip \intextsep
6900                    \box\@currbox
6901                    \penalty\interlinepenalty
6902                    \vskip\intextsep
6903                    \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
6904                    \outputpenalty \z@
6905                    \@inserttrue
6906                  \fi
6907                \fi
6908                \if@insert
6909                \else
6910                  \@addtotoporbot
6911                \fi
6912              \fi
6913            \fi
6914          \fi
6915        \fi
6916      \fi
6917    \fi
6918    \if@insert
6919    \else
6920      \@resethfps
6921      \@cons\@deferlist\@currbox
6922    \fi
6923 }
6924 \def\@addtonextcol{%
6925   \begingroup
6926    \@insertfalse
6927    \@setfloattypecounts
6928    \ifnum \@fpstype=8
6929    \else
6930      \ifnum \@fpstype=24
6931      \else
6932        \@flsettextmin
6933        \@reqcolroom \ht\@currbox
6934        \advance \@reqcolroom \@textmin
6935        \ifdim \@colroom>\@reqcolroom
6936          \@flsetnum \@colnum
6937          \ifnum\@colnum>\z@
6938             \@bitor\@currtype\@deferlist
6939             \if@test
6940             \else
6941               \@addtotoporbot
6942             \fi
6943          \fi
6944        \fi
6945      \fi
6946    \fi
6947    \if@insert
6948    \else
6949      \@cons\@deferlist\@currbox
6950    \fi
6951   \endgroup
6952 }
6953 \def\@addtodblcol{%
6954   \begingroup
6955    \@insertfalse
6956    \@setfloattypecounts
6957    \@getfpsbit \tw@
6958    \ifodd\@tempcnta
6959      \@flsetnum \@dbltopnum
6960      \ifnum \@dbltopnum>\z@
6961        \@tempswafalse
6962        \ifdim \@dbltoproom>\ht\@currbox
6963          \@tempswatrue
6964        \else
6965          \ifnum \@fpstype<\sixt@@n
6966            \advance \@dbltoproom \@textmin
6967            \ifdim \@dbltoproom>\ht\@currbox
6968              \@tempswatrue
6969            \fi
6970            \advance \@dbltoproom -\@textmin
6971          \fi
6972        \fi
6973        \if@tempswa
6974            \@bitor \@currtype \@dbldeferlist
6975            \if@test
6976            \else
6977               \@tempdima -\ht\@currbox
6978               \advance\@tempdima
6979                 -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
6980                                           \dblfloatsep \fi
6981               \global \advance \@dbltoproom \@tempdima
6982               \global \advance \@colht \@tempdima
6983               \global \advance \@dbltopnum \m@ne
6984               \@cons \@dbltoplist \@currbox
6985               \@inserttrue
6986            \fi
6987        \fi
6988      \fi
6989    \fi
6990    \if@insert
6991    \else
6992      \@cons\@dbldeferlist\@currbox
6993    \fi
6994   \endgroup
6995 }
6996 \def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox
6997     \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
6998     \if@twocolumn
6999         \if@firstcolumn \@tempcnta\m@ne \fi
7000     \else
7001       \if@mparswitch
7002          \ifodd\c@page \else\@tempcnta\m@ne \fi
7003       \fi
7004       \if@reversemargin \@tempcnta -\@tempcnta \fi
7005     \fi
7006     \ifnum\@tempcnta <\z@  \global\setbox\@marbox\box\@currbox \fi
7007     \@tempdima\@mparbottom
7008     \advance\@tempdima -\@pageht
7009     \advance\@tempdima\ht\@marbox
7010     \ifdim\@tempdima >\z@
7011       \@latex@warning@no@line {Marginpar on page \thepage\space moved}%
7012     \else
7013       \@tempdima\z@
7014     \fi
7015     \global\@mparbottom\@pageht
7016     \global\advance\@mparbottom\@tempdima
7017     \global\advance\@mparbottom\dp\@marbox
7018     \global\advance\@mparbottom\marginparpush
7019     \advance\@tempdima -\ht\@marbox
7020     \global\setbox \@marbox
7021                    \vbox {\vskip \@tempdima
7022                           \box \@marbox}%
7023     \global \ht\@marbox \z@
7024     \global \dp\@marbox \z@
7025     \kern -\@pagedp
7026     \nointerlineskip
7027     \hb@xt@\columnwidth
7028       {\ifnum \@tempcnta >\z@
7029           \hskip\columnwidth \hskip\marginparsep
7030        \else
7031           \hskip -\marginparsep \hskip -\marginparwidth
7032        \fi
7033        \box\@marbox \hss}%
7034     \nointerlineskip
7035     \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}}
7036 \newinsert \@kludgeins
7037 \global\dimen\@kludgeins \maxdimen
7038 \global\count\@kludgeins 1000
7039 \gdef \enlargethispage {%
7040    \@ifstar
7041      {%
7042       \@enlargepage{\hbox{\kern\p@}}}%
7043      {%
7044       \@enlargepage\@empty}%
7045 }
7046 \gdef\@enlargepage#1#2{%
7047    \@tempskipa#2\relax
7048    \ifdim \@tempskipa>.5\maxdimen
7049      \@latexerr{Suggested\space extra\space height\space
7050                 (\the\@tempskipa)\space dangerously\space
7051                 large}\@eha
7052    \else
7053      \ifdim \vsize<.5\maxdimen
7054        \@bsphack
7055          \insert\@kludgeins{#1\vskip-\@tempskipa}%
7056        \@esphack
7057      \else
7058        \@latexerr{Page\space height\space already\space
7059                   too\space large}\@eha
7060      \fi
7061    \fi
7062 }
7063 \def \suppressfloats {%
7064    \@ifnextchar [%
7065      \@flstop
7066     {\global \@colnum \z@}%
7067 }
7068 \def \@flstop [#1]{%
7069    \if t#1%
7070      \global \@topnum \z@
7071    \fi
7072    \if b#1%
7073      \global \@botnum \z@
7074    \fi
7075 }
7076 \newcount \@fpstype
7077 \newdimen \@reqcolroom
7078 \newdimen \@textfloatsheight
7079 \def \@fpsadddefault {%
7080    \edef \@fps {\@fps\csname fps@\@captype \endcsname}%
7081    \@latex@warning {%
7082      No positions in optional float specifier.\MessageBreak
7083      Default added (so using `\@fps')}%
7084 }
7085 \def \@setfloattypecounts {%
7086   \@currtype \count\@currbox
7087   \@fpstype \count\@currbox
7088   \divide\@currtype\@xxxii \multiply\@currtype\@xxxii
7089   \advance \@fpstype -\@currtype
7090 }
7091 \def \@getfpsbit {%
7092    \@boxfpsbit \@currbox
7093 }
7094 \def \@boxfpsbit #1#2{%
7095    \@tempcnta \count#1%
7096    \divide \@tempcnta #2\relax
7097 }
7098 \def \@testfp #1{%
7099    \@boxfpsbit #18\relax % Really `#1 8' for human readers!
7100    \ifodd \@tempcnta
7101    \else
7102      \@testtrue
7103    \fi
7104 }
7105 \def \@setfpsbit #1{%
7106    \@tempcntb \@tempcnta
7107    \divide \@tempcntb #1\relax
7108    \ifodd \@tempcntb
7109    \else
7110      \advance \@tempcnta #1\relax
7111    \fi
7112 }
7113 \def \@resethfps {%
7114    \let\reserved@a\@empty
7115    \ifnum \@fpstype=\@ne
7116       \def \reserved@a {!}%
7117       \@fpstype 17
7118    \fi
7119    \ifnum \@fpstype=17
7120      \global \advance \count\@currbox \tw@
7121      \@latex@warning@no@line {%
7122        `\reserved@a h' float specifier changed to `\reserved@a ht'}%
7123    \fi
7124 }
7125 \def \@flsetnum #1{%
7126    \ifnum \@fpstype<\sixt@@n
7127      \ifnum #1=\z@
7128        #1\@ne
7129      \fi
7130    \fi
7131 }
7132 \def \@flsettextmin {%
7133    \ifnum \@fpstype<\sixt@@n
7134      \@textmin \z@
7135    \else
7136      \@textmin \textfraction\@colht
7137    \fi
7138 }
7139 \def \@flcheckspace #1#2{%
7140    \advance \@reqcolroom
7141      \ifx #2\@empty \textfloatsep \else \floatsep \fi
7142    \ifdim \@colroom>\@reqcolroom
7143      \ifdim #1>\ht\@currbox
7144        \@tempswatrue
7145      \else
7146        \ifnum \@fpstype<\sixt@@n
7147          \@tempswatrue
7148        \fi
7149      \fi
7150    \fi
7151 }
7152 \def \@flupdates #1#2#3{%
7153    \global \advance #1\m@ne
7154    \global \advance \@colnum \m@ne
7155    \@tempdima -\ht\@currbox
7156    \advance \@tempdima
7157      -\ifx #3\@empty \textfloatsep \else \floatsep \fi
7158    \global \advance #2\@tempdima
7159    \global \advance \@colroom \@tempdima
7160    \@cons #3\@currbox
7161 }
7162 \def\@makefcolumn #1{%
7163   \begingroup
7164     \@fpmin \z@
7165     \let \@testfp \@gobble
7166     \@tryfcolumn #1%
7167   \endgroup
7168 }
7169 \def\@outputdblcol{%
7170   \if@firstcolumn
7171     \global \@firstcolumnfalse
7172     \global \setbox\@leftcolumn \box\@outputbox
7173   \else
7174     \global \@firstcolumntrue
7175     \setbox\@outputbox \vbox {%
7176                          \hb@xt@\textwidth {%
7177                            \hb@xt@\columnwidth {%
7178                              \box\@leftcolumn \hss}%
7179                            \hfil
7180                            {\normalcolor\vrule \@width\columnseprule}%
7181                            \hfil
7182                            \hb@xt@\columnwidth {%
7183                              \box\@outputbox \hss}%
7184                                              }%
7185                               }%
7186     \@combinedblfloats
7187     \@outputpage
7188     \begingroup
7189       \@dblfloatplacement
7190       \@startdblcolumn
7191       \@whilesw\if@fcolmade \fi
7192         {\@outputpage
7193          \@startdblcolumn}%
7194     \endgroup
7195   \fi
7196 }
7197 \newcount\c@topnumber
7198 \setcounter{topnumber}{2}
7199 \newcommand\topfraction{.7}
7200 \newcount\c@bottomnumber
7201 \setcounter{bottomnumber}{1}
7202 \newcommand\bottomfraction{.3}
7203 \newcount\c@totalnumber
7204 \setcounter{totalnumber}{3}
7205 \newcommand\textfraction{.2}
7206 \newcommand\floatpagefraction{.5}
7207 \newcount\c@dbltopnumber
7208 \setcounter{dbltopnumber}{2}
7209 \newcommand\dbltopfraction{.7}
7210 \newcommand\dblfloatpagefraction{.5}
7211 \newskip\floatsep
7212 \newskip\textfloatsep
7213 \newskip\intextsep
7214 \setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
7215 \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
7216 \setlength\intextsep   {12\p@ \@plus 2\p@ \@minus 2\p@}
7217 \newskip\dblfloatsep
7218 \newskip\dbltextfloatsep
7219 \setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
7220 \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
7221 \newskip\@fptop
7222 \newskip\@fpsep
7223 \newskip\@fpbot
7224 \setlength\@fptop{0\p@ \@plus 1fil}
7225 \setlength\@fpsep{8\p@ \@plus 2fil}
7226 \setlength\@fpbot{0\p@ \@plus 1fil}
7227 \newskip\@dblfptop
7228 \newskip\@dblfpsep
7229 \newskip\@dblfpbot
7230 \setlength\@dblfptop{0\p@ \@plus 1fil}
7231 \setlength\@dblfpsep{8\p@ \@plus 2fil}
7232 \setlength\@dblfpbot{0\p@ \@plus 1fil}
7233 \let\topfigrule=\relax
7234 \let\botfigrule=\relax
7235 \let\dblfigrule=\relax
7236 %%% From File: ltclass.dtx
7237 \newif\if@compatibility
7238 \def\@documentclasshook{%
7239    \ifx\@normalsize\@undefined
7240       \let\@normalsize\normalsize
7241    \fi
7242 }
7243 \let\@declaredoptions\@empty
7244 \let\@classoptionslist\relax
7245 \@onlypreamble\@classoptionslist
7246 \let\@unusedoptionlist\@empty
7247 \@onlypreamble\@unusedoptionlist
7248 \let\CurrentOption\@empty
7249 \let\@currname\@empty
7250 \global\let\@currext=\@empty
7251 \def\@clsextension{cls}
7252 \def\@pkgextension{sty}
7253 \@onlypreamble\@clsextension
7254 \@onlypreamble\@pkgextension
7255 \def\@pushfilename{%
7256   \xdef\@currnamestack{%
7257     {\@currname}%
7258     {\@currext}%
7259     {\the\catcode`\@}%
7260     \@currnamestack}}
7261 \@onlypreamble\@pushfilename
7262 \def\@popfilename{\expandafter\@p@pfilename\@currnamestack\@nil}
7263 \@onlypreamble\@popfilename
7264 \def\@p@pfilename#1#2#3#4\@nil{%
7265   \gdef\@currname{#1}%
7266   \gdef\@currext{#2}%
7267   \catcode`\@#3\relax
7268   \gdef\@currnamestack{#4}}
7269 \@onlypreamble\@p@pfilename
7270 \gdef\@currnamestack{}
7271 \@onlypreamble\@currnamestack
7272 \def\@ptionlist#1{%
7273   \@ifundefined{opt@#1}\@empty{\csname opt@#1\endcsname}}
7274 \@onlypreamble\@ptionlist
7275 \def\@ifpackageloaded{\@ifl@aded\@pkgextension}
7276 \def\@ifclassloaded{\@ifl@aded\@clsextension}
7277 \@onlypreamble\@ifpackageloaded
7278 \@onlypreamble\@ifclassloaded
7279 \def\@ifl@aded#1#2{%
7280   \expandafter\ifx\csname ver@#2.#1\endcsname\relax
7281     \expandafter\@secondoftwo
7282   \else
7283     \expandafter\@firstoftwo
7284   \fi}
7285 \@onlypreamble\@ifl@aded
7286 \def\@ifpackagelater{\@ifl@ter\@pkgextension}
7287 \def\@ifclasslater{\@ifl@ter\@clsextension}
7288 \@onlypreamble\@ifpackagelater
7289 \@onlypreamble\@ifclasslater
7290 \def\@ifl@ter#1#2{%
7291   \expandafter\@ifl@t@r
7292     \csname ver@#2.#1\endcsname}
7293 \@onlypreamble\@ifl@ter
7294 \def\@ifl@t@r#1#2{%
7295   \ifnum\expandafter\@parse@version#1//00\@nil<%
7296         \expandafter\@parse@version#2//00\@nil
7297     \expandafter\@secondoftwo
7298   \else
7299     \expandafter\@firstoftwo
7300   \fi}
7301 \@onlypreamble\@ifl@t@r
7302 \def\@parse@version#1/#2/#3#4#5\@nil{#1#2#3#4 }
7303 \@onlypreamble\@parse@version
7304 \def\@ifpackagewith{\@if@ptions\@pkgextension}
7305 \def\@ifclasswith{\@if@ptions\@clsextension}
7306 \@onlypreamble\@ifpackagewith
7307 \@onlypreamble\@ifclasswith
7308 \def\@if@ptions#1#2{%
7309   \@expandtwoargs\@if@pti@ns{\@ptionlist{#2.#1}}}
7310 \@onlypreamble\@if@ptions
7311 \def\@if@pti@ns#1#2{%
7312   \let\reserved@a\@firstoftwo
7313   \@for\reserved@b:=#2\do{%
7314     \expandafter\in@\expandafter{\expandafter,\reserved@b,}{,#1,}%
7315     \ifin@\else\let\reserved@a\@secondoftwo\fi}%
7316   \reserved@a}
7317 \@onlypreamble\@if@pti@ns
7318 \def\ProvidesPackage#1{%
7319   \xdef\@gtempa{#1}%
7320   \ifx\@gtempa\@currname\else
7321     \@latex@warning@no@line{You have requested
7322       \@cls@pkg\space`\@currname',\MessageBreak
7323        but the \@cls@pkg\space provides `#1'}%
7324   \fi
7325   \@ifnextchar[\@pr@videpackage{\@pr@videpackage[]}}%]
7326 \@onlypreamble\ProvidesPackage
7327 \def\@pr@videpackage[#1]{%
7328   \expandafter\xdef\csname ver@\@currname.\@currext\endcsname{#1}%
7329   \ifx\@currext\@clsextension
7330     \typeout{Document Class: \@gtempa\space#1}%
7331   \else
7332     \wlog{Package: \@gtempa\space#1}%
7333   \fi}
7334 \@onlypreamble\@pr@videpackage
7335 \let\ProvidesClass\ProvidesPackage
7336 \@onlypreamble\ProvidesClass
7337 \def\ProvidesFile#1{%
7338   \begingroup
7339     \catcode`\ 10 %
7340     \ifnum \endlinechar<256 %
7341       \ifnum \endlinechar>\m@ne
7342         \catcode\endlinechar 10 %
7343       \fi
7344     \fi
7345     \@makeother\/%
7346     \@makeother\&%
7347     \kernel@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}}
7348 \def\@pass@ptions#1#2#3{%
7349   \expandafter\xdef\csname opt@#3.#1\endcsname{%
7350     \@ifundefined{opt@#3.#1}\@empty
7351       {\csname opt@#3.#1\endcsname,}%
7352     \zap@space#2 \@empty}}
7353 \@onlypreamble\@pass@ptions
7354 \def\PassOptionsToPackage{\@pass@ptions\@pkgextension}
7355 \def\PassOptionsToClass{\@pass@ptions\@clsextension}
7356 \@onlypreamble\PassOptionsToPackage
7357 \@onlypreamble\PassOptionsToClass
7358 \def\DeclareOption{%
7359   \let\@fileswith@pti@ns\@badrequireerror
7360   \@ifstar\@defdefault@ds\@declareoption}
7361 \long\def\@declareoption#1#2{%
7362    \xdef\@declaredoptions{\@declaredoptions,#1}%
7363    \toks@{#2}%
7364    \expandafter\edef\csname ds@#1\endcsname{\the\toks@}}
7365 \long\def\@defdefault@ds#1{%
7366   \toks@{#1}%
7367   \edef\default@ds{\the\toks@}}
7368 \@onlypreamble\DeclareOption
7369 \@onlypreamble\@declareoption
7370 \@onlypreamble\@defdefault@ds
7371 \def\OptionNotUsed{%
7372   \ifx\@currext\@clsextension
7373     \xdef\@unusedoptionlist{%
7374       \ifx\@unusedoptionlist\@empty\else\@unusedoptionlist,\fi
7375       \CurrentOption}%
7376   \fi}
7377 \@onlypreamble\OptionNotUsed
7378 \def\ProcessOptions{%
7379   \let\ds@\@empty
7380   \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
7381   \@ifstar\@xprocess@ptions\@process@ptions}
7382 \@onlypreamble\ProcessOptions
7383 \def\@process@ptions{%
7384   \@for\CurrentOption:=\@declaredoptions\do{%
7385     \ifx\CurrentOption\@empty\else
7386       \@expandtwoargs\in@{,\CurrentOption,}{%
7387          ,\ifx\@currext\@clsextension\else\@classoptionslist,\fi
7388          \@curroptions,}%
7389       \ifin@
7390         \@use@ption
7391         \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
7392       \fi
7393     \fi}%
7394   \@process@pti@ns}
7395 \@onlypreamble\@process@ptions
7396 \def\@xprocess@ptions{%
7397   \ifx\@currext\@clsextension\else
7398     \@for\CurrentOption:=\@classoptionslist\do{%
7399       \ifx\CurrentOption\@empty\else
7400         \@expandtwoargs\in@{,\CurrentOption,}{,\@declaredoptions,}%
7401         \ifin@
7402           \@use@ption
7403           \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
7404         \fi
7405       \fi}%
7406   \fi
7407   \@process@pti@ns}
7408 \@onlypreamble\@xprocess@ptions
7409 \def\@process@pti@ns{%
7410   \@for\CurrentOption:=\@curroptions\do{%
7411     \@ifundefined{ds@\CurrentOption}%
7412       {\@use@ption
7413        \default@ds}%
7414       \@use@ption}%
7415   \@for\CurrentOption:=\@declaredoptions\do{%
7416     \expandafter\let\csname ds@\CurrentOption\endcsname\relax}%
7417   \let\CurrentOption\@empty
7418   \let\@fileswith@pti@ns\@@fileswith@pti@ns
7419   \AtEndOfPackage{\let\@unprocessedoptions\relax}}
7420 \@onlypreamble\@process@pti@ns
7421 \def\@options{\ProcessOptions*}
7422 \@onlypreamble\@options
7423 \def\@use@ption{%
7424   \@expandtwoargs\@removeelement\CurrentOption
7425   \@unusedoptionlist\@unusedoptionlist
7426   \csname ds@\CurrentOption\endcsname}
7427 \@onlypreamble\@use@ption
7428 \def\ExecuteOptions#1{%
7429   \def\reserved@a##1\@nil{%
7430     \@for\CurrentOption:=#1\do{\csname ds@\CurrentOption\endcsname}%
7431     \edef\CurrentOption{##1}}%
7432   \expandafter\reserved@a\CurrentOption\@nil}
7433 \@onlypreamble\ExecuteOptions
7434 \def\documentclass{%
7435   \let\documentclass\@twoclasseserror
7436   \if@compatibility\else\let\usepackage\RequirePackage\fi
7437   \@fileswithoptions\@clsextension}
7438 \@onlypreamble\documentclass
7439 \def\documentstyle{%
7440   \makeatletter\input{latex209.def}\makeatother
7441   \documentclass}
7442 \@onlypreamble\documentstyle
7443 \def\RequirePackage{%
7444   \@fileswithoptions\@pkgextension}
7445 \@onlypreamble\RequirePackage
7446 \def\LoadClass{%
7447   \ifx\@currext\@pkgextension
7448      \@latex@error
7449       {\noexpand\LoadClass in package file}%
7450       {You may only use \noexpand\LoadClass in a class file.}%
7451   \fi
7452   \@fileswithoptions\@clsextension}
7453 \@onlypreamble\LoadClass
7454 \def\@loadwithoptions#1#2#3{%
7455   \expandafter\let\csname opt@#3.#1\expandafter\endcsname
7456        \csname opt@\@currname.\@currext\endcsname
7457    #2{#3}}
7458 \@onlypreamble\@loadwithoptions
7459 \def\LoadClassWithOptions{%
7460   \@loadwithoptions\@clsextension\LoadClass}
7461 \@onlypreamble\LoadClassWithOptions
7462 \def\RequirePackageWithOptions{%
7463   \AtEndOfPackage{\let\@unprocessedoptions\relax}%
7464   \@loadwithoptions\@pkgextension\RequirePackage}
7465 \@onlypreamble\RequirePackageWithOptions
7466 \def\usepackage#1#{%
7467   \@latex@error
7468     {\noexpand \usepackage before \string\documentclass}%
7469     {\noexpand \usepackage may only appear in the document
7470       preamble, i.e.,\MessageBreak
7471       between \noexpand\documentclass and
7472       \string\begin{document}.}%
7473   \@gobble}
7474 \@onlypreamble\usepackage
7475 \def\NeedsTeXFormat#1{%
7476   \def\reserved@a{#1}%
7477   \ifx\reserved@a\fmtname
7478     \expandafter\@needsformat
7479   \else
7480      \@latex@error{This file needs format `\reserved@a'%
7481        \MessageBreak but this is `\fmtname'}{%
7482        The current input file will not be processed
7483        further,\MessageBreak
7484        because it was written for some other flavor of
7485        TeX.\MessageBreak\@ehd}%
7486      \endinput \fi}
7487 \@onlypreamble\NeedsTeXFormat
7488 \def\@needsformat{%
7489   \@ifnextchar[%]
7490     \@needsf@rmat
7491     {}}
7492 \@onlypreamble\@needsformat
7493 \def\@needsf@rmat[#1]{%
7494     \@ifl@t@r\fmtversion{#1}{}%
7495     {\@latex@warning@no@line
7496         {You have requested release `#1' of LaTeX,\MessageBreak
7497          but only release `\fmtversion' is available}}}
7498 \@onlypreamble\@needsf@rmat
7499 \def\zap@space#1 #2{%
7500   #1%
7501   \ifx#2\@empty\else\expandafter\zap@space\fi
7502   #2}
7503 \def\@fileswithoptions#1{%
7504   \@ifnextchar[%]
7505     {\@fileswith@ptions#1}%
7506     {\@fileswith@ptions#1[]}}
7507 \@onlypreamble\@fileswithoptions
7508 \def\@fileswith@ptions#1[#2]#3{%
7509   \@ifnextchar[%]
7510   {\@fileswith@pti@ns#1[#2]#3}%
7511   {\@fileswith@pti@ns#1[#2]#3[]}}
7512 \@onlypreamble\@fileswith@ptions
7513 \def\@fileswith@pti@ns#1[#2]#3[#4]{%
7514   \ifx#1\@clsextension
7515     \ifx\@classoptionslist\relax
7516       \xdef\@classoptionslist{\zap@space#2 \@empty}%
7517       \def\reserved@a{%
7518         \@onefilewithoptions#3[#2][#4]#1%
7519         \@documentclasshook}%
7520     \else
7521       \def\reserved@a{%
7522         \@onefilewithoptions#3[#2][#4]#1}%
7523     \fi
7524   \else
7525     \def\reserved@b##1,{%
7526       \ifx\@nil##1\relax\else
7527         \ifx\relax##1\relax\else
7528          \noexpand\@onefilewithoptions##1[#2][#4]\noexpand\@pkgextension
7529         \fi
7530         \expandafter\reserved@b
7531       \fi}%
7532       \edef\reserved@a{\zap@space#3 \@empty}%
7533       \edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nil,}%
7534   \fi
7535   \reserved@a}
7536 \@onlypreamble\@fileswith@pti@ns
7537 \def\@onefilewithoptions#1[#2][#3]#4{%
7538   \@pushfilename
7539   \xdef\@currname{#1}%
7540   \global\let\@currext#4%
7541   \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
7542   \let\CurrentOption\@empty
7543   \@reset@ptions
7544   \makeatletter
7545   \def\reserved@a{%
7546     \@ifl@aded\@currext{#1}%
7547       {\@if@ptions\@currext{#1}{#2}{}%
7548         {\@latex@error
7549             {Option clash for \@cls@pkg\space #1}%
7550             {The package #1 has already been loaded
7551              with options:\MessageBreak
7552              \space\space[\@ptionlist{#1.\@currext}]\MessageBreak
7553              There has now been an attempt to load it
7554               with options\MessageBreak
7555              \space\space[#2]\MessageBreak
7556              Adding the global options:\MessageBreak
7557              \space\space
7558                   \@ptionlist{#1.\@currext},#2\MessageBreak
7559              to your \noexpand\documentclass declaration may fix this.%
7560              \MessageBreak
7561              Try typing \space <return> \space to proceed.}}}%
7562       {\@pass@ptions\@currext{#2}{#1}%
7563        \global\expandafter
7564        \let\csname ver@\@currname.\@currext\endcsname\@empty
7565        \InputIfFileExists
7566          {\@currname.\@currext}%
7567          {}%
7568          {\@missingfileerror\@currname\@currext}%
7569     \let\@unprocessedoptions\@@unprocessedoptions
7570     \csname\@currname.\@currext-h@@k\endcsname
7571     \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
7572               \@undefined
7573     \@unprocessedoptions}
7574     \@ifl@ter\@currext{#1}{#3}{}%
7575       {\@latex@warning@no@line
7576          {You have requested,\on@line,
7577           version\MessageBreak
7578             `#3' of \@cls@pkg\space #1,\MessageBreak
7579           but only version\MessageBreak
7580            `\csname ver@#1.\@currext\endcsname'\MessageBreak
7581           is available}}%
7582     \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
7583     \@popfilename
7584     \@reset@ptions}%
7585   \reserved@a}
7586 \@onlypreamble\@onefilewithoptions
7587 \let\@@fileswith@pti@ns\@fileswith@pti@ns
7588 \@onlypreamble\@@fileswith@pti@ns
7589 \def\@reset@ptions{%
7590   \global\ifx\@currext\@clsextension
7591     \let\default@ds\OptionNotUsed
7592    \else
7593     \let\default@ds\@unknownoptionerror
7594   \fi
7595   \global\let\ds@\@empty
7596   \global\let\@declaredoptions\@empty}
7597 \@onlypreamble\@reset@ptions
7598 \ifx\@begindocumenthook\@undefined
7599   \let\@begindocumenthook\@empty
7600 \fi
7601 \let\@enddocumenthook\@empty
7602 \long\def\g@addto@macro#1#2{%
7603   \begingroup
7604     \toks@\expandafter{#1#2}%
7605     \xdef#1{\the\toks@}%
7606   \endgroup}
7607 \def\AtEndOfPackage{%
7608   \expandafter\g@addto@macro\csname\@currname.\@currext-h@@k\endcsname}
7609 \let\AtEndOfClass\AtEndOfPackage
7610 \@onlypreamble\AtEndOfPackage
7611 \@onlypreamble\AtEndOfClass
7612 \def\AtBeginDocument{\g@addto@macro\@begindocumenthook}
7613 \def\AtEndDocument{\g@addto@macro\@enddocumenthook}
7614 \@onlypreamble\AtBeginDocument
7615 \def\@cls@pkg{%
7616   \ifx\@currext\@clsextension
7617     document class%
7618   \else
7619     package%
7620   \fi}
7621 \@onlypreamble\@cls@pkg
7622 \def\@unknownoptionerror{%
7623   \@latex@error
7624     {Unknown option `\CurrentOption' for \@cls@pkg\space`\@currname'}%
7625     {The option `\CurrentOption' was not declared in
7626      \@cls@pkg\space`\@currname', perhaps you\MessageBreak
7627       misspelled its name.
7628      Try typing \space <return>
7629      \space to proceed.}}
7630 \@onlypreamble\@unknownoptionerror
7631 \def\@@unprocessedoptions{%
7632   \ifx\@currext\@pkgextension
7633     \edef\@curroptions{\@ptionlist{\@currname.\@currext}}%
7634     \@for\CurrentOption:=\@curroptions\do{%
7635         \ifx\CurrentOption\@empty\else\@unknownoptionerror\fi}%
7636   \fi}
7637 \@onlypreamble\@unprocessedoptions
7638 \@onlypreamble\@@unprocessedoptions
7639 \def\@badrequireerror#1[#2]#3[#4]{%
7640   \@latex@error
7641     {\noexpand\RequirePackage or \noexpand\LoadClass
7642          in Options Section}%
7643     {The \@cls@pkg\space `\@currname' is defective.\MessageBreak
7644      It attempts to load `#3' in the options section, i.e.,\MessageBreak
7645      between \noexpand\DeclareOption and \string\ProcessOptions.}}
7646 \@onlypreamble\@badrequireerror
7647 \def\@twoloadclasserror{%
7648   \@latex@error
7649     {Two \noexpand\LoadClass commands}%
7650     {You may only use one \noexpand\LoadClass in a class file}}
7651 \@onlypreamble\@twoloadclasserror
7652 \def\@twoclasseserror#1#{%
7653   \@latex@error
7654     {Two \noexpand\documentclass or \noexpand\documentstyle commands}%
7655     {The document may only declare one class.}\@gobble}
7656 \@onlypreamble\@twoclasseserror
7657 \def\two@digits#1{\ifnum#1<10 0\fi\number#1}
7658 \begingroup%
7659 \catcode`\*=11 %
7660 \catcode`\^^M\active%
7661 \catcode`\^^L\active\let^^L\relax%
7662 \catcode`\^^I\active%
7663 \gdef\filecontents{\@tempswatrue\filec@ntents}%
7664 \gdef\filecontents*{\@tempswafalse\filec@ntents}%
7665 \gdef\filec@ntents#1{%
7666   \openin\@inputcheck#1 %
7667   \ifeof\@inputcheck%
7668     \@latex@warning@no@line%
7669         {Writing file `\@currdir#1'}%
7670     \chardef\reserved@c15 %
7671     \ch@ck7\reserved@c\write%
7672     \immediate\openout\reserved@c#1\relax%
7673   \else%
7674     \closein\@inputcheck%
7675     \@latex@warning@no@line%
7676             {File `#1' already exists on the system.\MessageBreak%
7677              Not generating it from this source}%
7678     \let\write\@gobbletwo%
7679     \let\closeout\@gobble%
7680   \fi%
7681   \if@tempswa%
7682     \immediate\write\reserved@c{%
7683       \@percentchar\@percentchar\space%
7684           \expandafter\@gobble\string\LaTeX2e file `#1'^^J%
7685       \@percentchar\@percentchar\space  generated by the %
7686         `\@currenvir' \expandafter\@gobblefour\string\newenvironment^^J%
7687       \@percentchar\@percentchar\space from source `\jobname' on %
7688          \number\year/\two@digits\month/\two@digits\day.^^J%
7689       \@percentchar\@percentchar}%
7690   \fi%
7691   \let\do\@makeother\dospecials%
7692   \edef\E{\@backslashchar end\string{\@currenvir\string}}%
7693   \edef\reserved@b{%
7694     \def\noexpand\reserved@b%
7695          ####1\E####2\E####3\relax}%
7696   \reserved@b{%
7697     \ifx\relax##3\relax%
7698       \immediate\write\reserved@c{##1}%
7699     \else%
7700       \edef^^M{\noexpand\end{\@currenvir}}%
7701       \ifx\relax##1\relax%
7702       \else%
7703           \@latex@warning{Writing text `##1' before %
7704              \string\end{\@currenvir}\MessageBreak as last line of #1}%
7705         \immediate\write\reserved@c{##1}%
7706       \fi%
7707       \ifx\relax##2\relax%
7708       \else%
7709          \@latex@warning{%
7710            Ignoring text `##2' after \string\end{\@currenvir}}%
7711       \fi%
7712     \fi%
7713     ^^M}%
7714   \catcode`\^^L\active%
7715   \let\L\@undefined%
7716   \def^^L{\@ifundefined L^^J^^J^^J}%
7717   \catcode`\^^I\active%
7718   \let\I\@undefined%
7719   \def^^I{\@ifundefined I\space\space}%
7720   \catcode`\^^M\active%
7721   \edef^^M##1^^M{%
7722     \noexpand\reserved@b##1\E\E\relax}}%
7723 \endgroup%
7724 \begingroup
7725 \catcode`|=\catcode`\%
7726 \catcode`\%=12
7727 \catcode`\*=11
7728 \gdef\@percentchar{%}
7729 \gdef\endfilecontents{|
7730   \immediate\closeout\reserved@c
7731   \def\T##1##2##3{|
7732   \ifx##1\@undefined\else
7733     \@latex@warning@no@line{##2 has been converted to Blank ##3e}|
7734   \fi}|
7735   \T\L{Form Feed}{Lin}|
7736   \T\I{Tab}{Spac}|
7737   \immediate\write\@unused{}}
7738 \global\let\endfilecontents*\endfilecontents
7739 \@onlypreamble\filecontents
7740 \@onlypreamble\endfilecontents
7741 \@onlypreamble\filecontents*
7742 \@onlypreamble\endfilecontents*
7743 \endgroup
7744 \@onlypreamble\filec@ntents
7745 %%% From File: ltfinal.dtx
7746 \tracingstats1
7747 \newcount\@lowpenalty
7748 \newcount\@medpenalty
7749 \newcount\@highpenalty
7750 \unitlength = 1pt
7751 \fboxsep = 3pt
7752 \fboxrule = .4pt
7753 \@maxdepth       = \maxdepth
7754 \vsize = 1000pt
7755 \@colroom = \vsize
7756 \@colht = \vsize
7757 \textheight=.5\maxdimen
7758 \textwidth=\textheight
7759 \ps@empty
7760 \def\reserved@a#1#2{%
7761    \@tempcnta#1\relax
7762    \@tempcntb#2\relax
7763    \reserved@b
7764 }
7765 \def\reserved@b{%
7766    \ifnum\@tempcnta>\@tempcntb\else
7767       \reserved@c\@tempcnta
7768       \advance\@tempcnta\@ne
7769       \expandafter\reserved@b
7770    \fi
7771 }
7772 \def\reserved@c#1{%
7773    \count@=#1\advance\count@ by -"20
7774    \uccode#1=\count@
7775    \lccode#1=#1
7776 }
7777 \reserved@a{`\a}{`\z}
7778 \ifnum\inputlineno=\m@ne\else
7779   \reserved@a{"A0}{"BC}
7780   \reserved@a{"E0}{"FF}
7781 \fi
7782 \def\reserved@c#1{%
7783    \count@=#1\advance\count@ by "20
7784    \uccode#1=#1
7785    \lccode#1=\count@
7786    \sfcode#1=999
7787 }
7788 \reserved@a{`\A}{`\Z}
7789 \ifnum\inputlineno=\m@ne\else
7790   \reserved@a{"80}{"9C}
7791   \reserved@a{"C0}{"DF}
7792 \fi
7793 \uccode`\^^Y=`\I     % dotless i
7794 \lccode`\^^Y=`\^^Y   % dotless i
7795 \uccode`\^^Z=`\J     % dotless j, ae in OT1
7796 \lccode`\^^Z=`\^^Z   % dotless j, ae in OT1
7797 \ifnum\inputlineno=\m@ne\else
7798   \lccode`\^^9d=`\i    % dotted I
7799   \uccode`\^^9d=`\^^9d % dotted I
7800   \lccode`\^^9e=`\^^9e % d-bar
7801   \uccode`\^^9e=`\^^d0 % d-bar
7802 \fi
7803 \lccode`\^^[=`\^^[   % oe in OT1
7804 \lccode`\- =`\-   % default hyphen char
7805 \lccode 127=127   % alternate hyphen char
7806 \lccode 23 =23    % textcompwordmark in T1
7807 \InputIfFileExists{hyphen.cfg}
7808            {\typeout{===========================================^^J%
7809                       Local configuration file hyphen.cfg used^^J%
7810                      ===========================================}%
7811              \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
7812            }
7813            {\input{hyphen.ltx}}
7814 \let\@addtofilelist\@gobble
7815 \ifdim \font@submax >\z@
7816    \@font@warning{Size substitutions with differences\MessageBreak
7817                  up to \font@submax\space have occurred.\MessageBreak
7818                 \MessageBreak
7819                 Please check the transcript file
7820                 carefully\MessageBreak
7821                 and redo the format generation if necessary!
7822                 \@gobbletwo}%
7823    \errhelp{Only stopped, to give you time to
7824             read the above message.}
7825    \errmessage{}
7826 \def\font@submax{0pt}
7827 \fi
7828 \def\reserved@a#1#2{%
7829    \@tempcnta#1\relax
7830    \@tempcntb#2\relax
7831    \reserved@b
7832 }
7833 \def\reserved@b{%
7834    \ifnum\@tempcnta>\@tempcntb\else
7835       \reserved@c\@tempcnta
7836       \advance\@tempcnta\@ne
7837       \expandafter\reserved@b
7838    \fi
7839 }
7840 \catcode`\ =10
7841 \catcode`\#=6
7842 \catcode`\$=3
7843 \catcode`\%=14
7844 \catcode`\&=4
7845 \catcode`\\=0
7846 \catcode`\^=7
7847 \catcode`\_=8
7848 \catcode`\{=1
7849 \catcode`\}=2
7850 \catcode`\~=13
7851 \catcode`\@=11
7852 \catcode`\^^I=10
7853 \catcode`\^^J=12
7854 \catcode`\^^L=13
7855 \catcode`\^^M=5
7856 \def\reserved@c#1{\catcode#1=12\relax}
7857 \reserved@c{`\!}
7858 \reserved@c{`\"}
7859 \reserved@a{`\'}{`\?}
7860 \reserved@c{`\[}
7861 \reserved@c{`\]}
7862 \reserved@c{`\`}
7863 \reserved@c{`\|}
7864 \def\reserved@c#1{\catcode#1=11\relax}
7865 \reserved@a{`\A}{`\Z}
7866 \reserved@a{`\a}{`\z}
7867 \def\reserved@c#1{\catcode#1=15\relax}
7868 \reserved@a{0}{`\^^H}
7869 \reserved@c{`\^^K}
7870 \reserved@a{`\^^N}{31}
7871   \catcode"7F=15
7872 \def\reserved@c#1{%
7873    \count@=#1\advance\count@ by -"20
7874    \uccode#1=\count@
7875    \lccode#1=#1
7876 }
7877 \reserved@a{`\a}{`\z}
7878 \ifnum\inputlineno=\m@ne\else
7879   \reserved@a{"A0}{"BC}
7880   \reserved@a{"E0}{"FF}
7881 \fi
7882 \def\reserved@c#1{%
7883    \count@=#1\advance\count@ by "20
7884    \uccode#1=#1
7885    \lccode#1=\count@
7886    \sfcode#1=999
7887 }
7888 \reserved@a{`\A}{`\Z}
7889 \ifnum\inputlineno=\m@ne\else
7890   \reserved@a{"80}{"9C}
7891   \reserved@a{"C0}{"DF}
7892 \fi
7893 \uccode`\^^Y=`\I     % dotless i
7894 \lccode`\^^Y=`\^^Y   % dotless i
7895 \uccode`\^^Z=`\J     % dotless j, ae in OT1
7896 \lccode`\^^Z=`\^^Z   % dotless j, ae in OT1
7897 \ifnum\inputlineno=\m@ne\else
7898   \lccode`\^^9d=`\i    % dotted I
7899   \uccode`\^^9d=`\^^9d % dotted I
7900   \lccode`\^^9e=`\^^9e % d-bar
7901   \uccode`\^^9e=`\^^d0 % d-bar
7902 \fi
7903 \lccode`\^^[=`\^^[   % oe in OT1
7904 \DeclareRobustCommand{\MakeUppercase}[1]{{%
7905       \def\i{I}\def\j{J}%
7906       \def\reserved@a##1##2{\let##1##2\reserved@a}%
7907       \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
7908       \protected@edef\reserved@a{\uppercase{#1}}%
7909       \reserved@a
7910    }}
7911 \DeclareRobustCommand{\MakeLowercase}[1]{{%
7912       \def\reserved@a##1##2{\let##2##1\reserved@a}%
7913       \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
7914       \protected@edef\reserved@a{\lowercase{#1}}%
7915       \reserved@a
7916    }}
7917 \def\@uclclist{\oe\OE\o\O\ae\AE
7918       \dh\DH\dj\DJ\l\L\ng\NG\ss\SS\th\TH}
7919 \protected@edef\MakeUppercase#1{\MakeUppercase{#1}}
7920 \protected@edef\MakeLowercase#1{\MakeLowercase{#1}}
7921 \IfFileExists{ltpatch.ltx}
7922   {\typeout{=================================^^J%
7923              Applying patch file ltpatch.ltx^^J%
7924             =================================}
7925    \def\fmtversion@topatch{unknown}
7926    \input{ltpatch.ltx}
7927    \ifx\fmtversion\fmtversion@topatch
7928       \ifx\patch@level\@undefined
7929         \typeout{^^J^^J^^J%
7930          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
7931          !! Patch file `ltpatch.ltx' not suitable for this^^J%
7932          !! version of LaTeX.^^J^^J%
7933          !! Please check if initex found an old patch file:^^J%
7934          !! --- if so, rename it or delete it, and redo the^^J%
7935          !! initex run.^^J%
7936          !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
7937         \batchmode \@@end
7938       \else
7939         \def\fmtversion@topatch{0}%
7940         \ifx\fmtversion@topatch\patch@level\else
7941           \def\reserved@a\typeout##1##2\reserved@a{%
7942                  \typeout{##1 patch level \patch@level}##2}
7943           \everyjob\expandafter\expandafter\expandafter{%
7944              \expandafter\reserved@a\the\everyjob\reserved@a}
7945           \let\reserved@a\relax
7946           \the\everyjob
7947         \fi
7948       \fi
7949    \else
7950       \typeout{^^J^^J^^J%
7951      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
7952      !! Patch file `ltpatch.ltx' (for version <\fmtversion@topatch>)^^J%
7953      !! is not suitable for version <\fmtversion> of LaTeX.^^J^^J%
7954      !! Please check if initex found an old patch file:^^J%
7955      !! --- if so, rename it or delete it, and redo the^^J%
7956      !!     initex run.^^J%
7957      !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
7958        \batchmode \@@end
7959    \fi
7960    \let\fmtversion@topatch\relax
7961   }{}
7962 \let\reserved@a\@filelist
7963 \let\reserved@b=\@undefined
7964 \let\reserved@c=\@undefined
7965 \let\reserved@d=\@undefined
7966 \let\reserved@e=\@undefined
7967 \let\reserved@f=\@undefined
7968 \toks0{}
7969 \toks2{}
7970 \toks4{}
7971 \toks6{}
7972 \toks8{}
7973 \errhelp{}
7974 \def\@providesfile#1[#2]{%
7975     \wlog{File: #1 #2}%
7976     \expandafter\xdef\csname ver@#1\endcsname{#2}%
7977   \endgroup}
7978 \let\@filelist\@gobble
7979 \def\@addtofilelist#1{\xdef\@filelist{\@filelist,#1}}%
7980 \makeatother
7981 \errorstopmode
7982 \dump
7983 \endinput
7984 %%
7985 %% End of file `latex.ltx'.