2 %% This is file `latex.ltx',
3 %% generated with the docstrip utility.
5 %% The original source files were:
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')
45 %% This is a generated file.
47 %% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004
48 %% The LaTeX3 Project and any individual authors listed elsewhere
51 %% This file was generated from file(s) of the LaTeX base system.
52 %% --------------------------------------------------------------
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.
62 %% This file has the LPPL maintenance status "maintained".
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.
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
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
78 {LaTeX must be made using an initex with no format preloaded}
87 \let\bgroup={ \let\egroup=}
88 \ifx\@@input\@undefined\let\@@input\input\fi
89 \ifx\@@end\@undefined\let\@@end\end\fi
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}
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}
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{%
110 \ifnum \endlinechar<256 %
111 \ifnum \endlinechar>\m@ne
112 \catcode\endlinechar 10 %
116 \@ifnextchar[{\@providesfile{#1}}{\@providesfile{#1}[]}}
117 \def\@providesfile#1[#2]{%
119 \@addtofilelist{ #2}%
121 \long\def\@addtofilelist#1{}
126 \let\@currdir\@undefined
127 \let\input@path\@undefined
128 \let\filename@parse\@undefined
129 \def\strip@prefix#1>{}
136 \advance\count2 \time
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 %
148 \read\@inputcheck to \reserved@a
149 \ifx\reserved@a\today
150 \typeout{#1 found}#2\relax
152 \typeout{BAD: old file \reserved@a (should be \today)}%
156 \closein\@inputcheck}
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
165 !! No syntax for the current directory could be found^^J%
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}
177 \immediate\closeout15 %
180 \noexpand\@currdir set to:
181 \expandafter\strip@prefix\meaning\@currdir.^^J%
184 Assuming \noexpand\openin and \noexpand\input^^J%
185 \ifx\input@path\@undefined
186 have the same search path.^^J%
188 have different search paths.^^J%
189 LaTeX will use the path specified by \noexpand\input@path:^^J%
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\\{%
200 \def\reserved@a{\filename@simple#1.\\}%
202 \edef\filename@area{\filename@area#1/}%
203 \def\reserved@a{\filename@path#2\\}%
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\\{%
213 \def\reserved@a{\filename@simple#1.\\}%
215 \edef\filename@area{\filename@area#1]}%
216 \def\reserved@a{\filename@path#2\\}%
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\\{%
226 \def\reserved@a{\filename@simple#1.\\}%
228 \edef\filename@area{\filename@area#1:}%
229 \def\reserved@a{\filename@path#2\\}%
233 \typeout{^^JDefining generic filename parser.^^J}
234 \def\filename@parse#1{%
235 \let\filename@area\@empty
236 \expandafter\filename@simple#1.\\}
238 \def\filename@simple#1.#2\\{%
240 \let\filename@ext\relax
242 \edef\filename@ext{\filename@dot#2\\}%
244 \edef\filename@base{#1}}
245 \def\filename@dot#1.\\{#1}
248 \noexpand\filename@parse was defined in texsys.cfg:^^J%
249 \expandafter\strip@prefix\meaning\filename@parse.^^J%
252 \ifx\@TeXversion\@undefined
253 \ifx\@undefined\inputlineno
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}
262 %%% From File: ltplain.dtx
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 \~}
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
290 \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
291 \do\#\do\^\do\_\do\%\do\~}
298 \mathchardef\@cclvi=256
300 \mathchardef\@M=10000
301 \mathchardef\@MM=20000
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}
320 \dimendef\dimen@i=1 % global only
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
344 \allocationnumber\insc@unt
345 \global\chardef#1\allocationnumber
346 \wlog{\string#1=\string\insert\the\allocationnumber}}
348 \ifnum\count1#1<#2\else
349 \errmessage{No room for a new #3}%
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
361 \ifx\@undefined\language
364 \newcount\lefthyphenmin
365 \newcount\righthyphenmin
366 \newcount\errorcontextlines
367 \newcount\holdinginserts
368 \newdimen\emergencystretch
370 \let\noboundary\relax
371 \newcount\setlanguage
373 \message{parameters,}
375 \tolerance=200 % INITEX sets this to 10000
385 \displaywidowpenalty=50
387 \predisplaypenalty=10000
388 \doublehyphendemerits=10000
389 \finalhyphendemerits=5000
393 \defaulthyphenchar=`\-
398 \errorcontextlines=-1
403 \splitmaxdepth=\maxdimen
404 \boxmaxdepth=\maxdimen
405 \delimitershortfall=5pt
406 \nulldelimiterspace=1.2pt
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
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>
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
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@}}
484 \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
485 \def\hidewidth{\hskip\hideskip}
487 \advance\leftskip\parindent
488 \advance\rightskip\parindent}
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@}
504 \cleaders \hb@xt@ .44em{\hss.\hss}\hfill
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}
517 %%% From File: ltvers.dtx
518 \def\fmtname{LaTeX2e}
519 \edef\fmtversion{2003/12/01}
521 \def\reserved@a#1/#2/#3\@nil{%
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
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%
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%
539 \errhelp{To avoid this error message, obtain new LaTeX sources.}
540 \errmessage{LaTeX source files more than 5 years old!}
542 \let\reserved@a\relax
544 \everyjob{\typeout{\fmtname
545 \space<\fmtversion>}}
546 \immediate\write16{\fmtname
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}
554 \let\@@hyph=\- % Save original primitive definition
555 \def\-{\discretionary{-}{}{}}
558 \def\@height{height} \def\@depth{depth} \def\@width{width}
561 \def\hb@xt@{\hbox to}
565 \@testopt\@xtypein\@typein}
566 \def\@xtypein[#1]#2{%
568 \advance\endlinechar\@M
569 \read\@inputcheck to#1%
570 \advance\endlinechar-\@M
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}
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{%
586 {\let\l@ngrel@x\relax#1}%
587 {\let\l@ngrel@x\long#1}}
590 \def\newcommand{\@star@or@long\new@command}
592 \@testopt{\@newcommand#1}0}
593 \def\@newcommand#1[#2]{%
594 \kernel@ifnextchar [{\@xargdef#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{%
600 \expandafter\def\expandafter#1\expandafter{%
605 \csname\string#1\endcsname
607 \expandafter\@yargdef
608 \csname\string#1\endcsname
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
620 \long \def \@yargdef #1#2#3{%
622 \def\reserved@b##11{[####1]}%
624 \let\reserved@b\@gobble
627 \@yargd@f \expandafter{\number #3}#1%
629 \long \def \@yargd@f#1#2{%
630 \def \reserved@a ##1#1##2##{%
631 \expandafter\def\expandafter#2\reserved@b ##1#1%
633 \l@ngrel@x \reserved@a 0##1##2##3##4##5##6##7##8##9###1%
635 \long\def\@reargdef#1[#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}%
643 \let\@ifdefinable\@rc@ifdefinable
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
655 \let\@@ifdefinable\@ifdefinable
656 \long\def\@rc@ifdefinable#1#2{%
657 \let\@ifdefinable\@@ifdefinable
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{%
668 {\@latex@error{Environment #1 undefined}\@ehc
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{%
675 {\expandafter\let\csname#1\expandafter\endcsname
676 \csname end#1\endcsname}%
678 \expandafter\new@command
679 \csname #1\endcsname#2{#3}%
680 \l@ngrel@x\expandafter\def\csname end#1\endcsname{#4}}
682 \count@\escapechar \escapechar\m@ne
688 \expandafter\def\csname\expandafter\@gobbletwo\string#1%
689 \expandafter\@gobbletwo\string#2\endcsname
691 \def\providecommand{\@star@or@long\provide@command}
692 \def\provide@command#1{%
694 \escapechar\m@ne\xdef\@gtempa{{\string#1}}%
696 \expandafter\@ifundefined\@gtempa
697 {\def\reserved@a{\new@command#1}}%
698 {\def\reserved@a{\renew@command\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
715 \@latex@warning@no@line
716 {Command \noexpand#1 has
717 changed.\MessageBreak
718 Check if current package is valid}%
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}%
738 \edef\reserved@a{\string#1}%
740 \edef\reserved@b{\expandafter\strip@prefix\meaning\reserved@b}%
742 \ifx\reserved@a\reserved@b
747 \expandafter\noexpand\csname
748 \expandafter\@gobble\string#1 \endcsname
750 \let\@ifdefinable\@rc@ifdefinable
751 \expandafter\new@command\csname
752 \expandafter\@gobble\string#1 \endcsname
755 \ifx\protect\@typeset@protect\else
759 \def\@x@protect#1\fi#2#3{%
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
771 \def\protected@xdef{%
772 \let\@@protect\protect
773 \let\protect\@unexpandable@protect
774 \afterassignment\restore@protect
777 \def\unrestored@protected@xdef{%
778 \let\protect\@unexpandable@protect
781 \def\restore@protect{\let\protect\@@protect}
783 \def\@ifundefined#1{%
784 \expandafter\ifx\csname#1\endcsname\relax
785 \expandafter\@firstoftwo
787 \expandafter\@secondoftwo
789 \edef\@qend{\expandafter\@cdr\string\end\@nil}
790 \edef\@qrelax{\expandafter\@cdr\string\relax\@nil}
791 \long\def\@ifnextchar#1#2#3{%
795 \futurelet\@let@token\@ifnch}
796 \let\kernel@ifnextchar\@ifnextchar
798 \ifx\@let@token\@sptoken
799 \let\reserved@c\@xifnch
801 \ifx\@let@token\reserved@d
802 \let\reserved@c\reserved@a
804 \let\reserved@c\reserved@b
808 \def\:{\let\@sptoken= } \: % this makes \@sptoken a space token
809 \def\:{\@xifnch} \expandafter\def\: {\futurelet\@let@token\@ifnch}
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
822 %%% From File: ltalloc.dtx
824 \mathchardef\@Mi=10001
825 \mathchardef\@Mii=10002
826 \mathchardef\@Miii=10003
827 \mathchardef\@Miv=10004
838 \newskip\@flushglue \@flushglue = 0pt plus 1fil
839 %%% From File: ltcntrl.dtx
841 \long\def\@whilenum#1\do #2{\ifnum #1\relax #2\relax\@iwhilenum{#1\relax
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}
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}%
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]{%
881 \def\MessageBreak{^^J#1}%
883 \immediate\write\m@ne{#2\on@line.}%
886 \DeclareRobustCommand{\GenericWarning}[2]{%
888 \def\MessageBreak{^^J#1}%
890 \immediate\write\@unused{^^J#2\on@line.^^J}%
900 \catcode`\ =11\relax%
903 \dimen@\ifx\@TeXversion\@undefined4\else\@TeXversion\fi\p@%
904 \ifdim\dimen@>3.14\p@%
905 \DeclareRobustCommand{\GenericError}[4]{%
907 \immediate\write\@unused{}%
908 \def\MessageBreak{^^J}%
909 \set@display@protect%
918 \def\MessageBreak{^^J#1}%
922 Type H <return> for immediate help%
928 \DeclareRobustCommand{\GenericError}[4]{%
930 \immediate\write\@unused{}%
931 \def\MessageBreak{^^J}%
932 \set@display@protect%
941 \def\MessageBreak{^^J#1}%
945 Type H <return> for immediate help.}%
951 \gdef\PackageError#1#2#3{%
953 (#1)\@spaces\@spaces\@spaces\@spaces
955 Package #1 Error: #2%
957 See the #1 package documentation for explanation.%
960 \def\PackageWarning#1#2{%
962 (#1)\@spaces\@spaces\@spaces\@spaces
964 Package #1 Warning: #2%
967 \def\PackageWarningNoLine#1#2{%
968 \PackageWarning{#1}{#2\@gobble}%
970 \def\PackageInfo#1#2{%
972 (#1) \@spaces\@spaces\@spaces
977 \gdef\ClassError#1#2#3{%
979 (#1) \space\@spaces\@spaces\@spaces
983 See the #1 class documentation for explanation.%
986 \def\ClassWarning#1#2{%
988 (#1) \space\@spaces\@spaces\@spaces
990 Class #1 Warning: #2%
993 \def\ClassWarningNoLine#1#2{%
994 \ClassWarning{#1}{#2\@gobble}%
998 (#1) \space\space\@spaces\@spaces
1003 \gdef\@latex@error#1#2{%
1005 \space\space\space\@spaces\@spaces\@spaces
1009 See the LaTeX manual or LaTeX Companion for explanation.%
1012 \def\@latex@warning#1{%
1014 \space\space\space\@spaces\@spaces\@spaces
1019 \def\@latex@warning@no@line#1{%
1020 \@latex@warning{#1\@gobble}}
1021 \def\@latex@info#1{%
1023 \@spaces\@spaces\@spaces
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
1035 \def\on@line{ on input line \the\inputlineno}
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}
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.}
1047 You've lost some text. \space \@ehc}
1049 Try typing \space <return> %
1050 \space to proceed.\MessageBreak
1051 If that doesn't work, type \space X <return> \space to quit.}
1053 You're in trouble here. \space\@ehc}
1054 \gdef\@notdefinable{%
1056 Command \@backslashchar\reserved@a\space
1057 already defined.\MessageBreak
1058 Or name \@backslashchar\@qend... illegal,
1059 see p.192 of the manual}\@eha}
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?}
1066 \@latex@error{Counter too large}\@ehb}
1068 \@latex@error{Missing \protect\begin{document}}\@ehd}
1070 \@latex@error{\protect\begin{\@currenvir}\@currenvline
1071 \space ended by \protect\end{#1}}\@eha}
1073 \@latex@error{Bad math environment delimiter}\@eha}
1075 \@latex@error{Too deeply nested}\@ehd}
1077 \@latex@error{\protect\pushtabs\space and \protect\poptabs
1078 \space don't match}\@ehd}
1080 \@latex@error{Undefined tab position}\@ehd}
1084 \@latex@error{\ifcase #1 Illegal character\or
1085 Missing @-exp\or Missing p-arg\fi\space
1090 Bad \protect\line\space or \protect\vector
1091 \space argument}\@ehb}
1093 \@latex@error{Not in outer par mode}\@ehb}
1095 \@latex@error{Too many unprocessed floats}\@ehb}
1097 \@latex@error{This may be a LaTeX bug}{Call for help}}
1099 \@latex@error{Something's wrong--perhaps a missing %
1100 \protect\item}\@ehc}
1102 \@latex@error{Can be used only in preamble}\@eha}
1103 \gdef\@inmatherr#1{%
1106 \@latex@error{Command \protect#1 invalid in math mode}\@ehc
1108 %%% From File: ltpar.dtx
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
1115 \def\pagebreak{\@testopt{\@no@pgbk-}4}
1116 \def\nopagebreak{\@testopt\@no@pgbk4}
1117 \def\@no@pgbk #1[#2]{%
1119 \penalty #1\@getpen{#2}%
1122 \vadjust{\penalty #1\@getpen{#2}}%
1125 \def\linebreak{\@testopt{\@no@lnbk-}4}
1126 \def\nolinebreak{\@testopt\@no@lnbk4}
1127 \def\@no@lnbk #1[#2]{%
1131 \@tempskipa\lastskip
1133 \penalty #1\@getpen{#2}%
1134 \ifdim\@tempskipa>\z@
1139 \def\samepage{\interlinepenalty\@M
1140 \postdisplaypenalty\@M
1141 \interdisplaylinepenalty\@M
1142 \@beginparpenalty\@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
1153 \expandafter\let\expandafter\@normalcr
1154 \csname\expandafter\@gobble\string\\ \endcsname
1155 \DeclareRobustCommand\newline{\@normalcr\relax}
1156 \def\@xnewline{\@ifnextchar[% ] bracket matching
1159 \def\@newline[#1]{\let \reserved@e \vadjust
1160 \@gnewline {\vskip #1}}
1165 \unskip \reserved@e {\reserved@f#1}\nobreak \hfil \break
1167 \def\@getpen#1{\ifcase #1 \z@ \or \@lowpenalty\or
1168 \@medpenalty \or \@highpenalty
1170 \def\@nobreakfalse{\global\let\if@nobreak\iffalse}
1171 \def\@nobreaktrue {\global\let\if@nobreak\iftrue}
1199 \ifdim\lastskip<\@tempskipb
1203 \ifdim\@tempskipb<\z@
1206 \advance\@tempskipb\lastskip
1215 \ifdim \lastskip =\z@
1234 \@tempskipb\lastskip
1244 \DeclareRobustCommand\vspace{\@ifstar\@vspacer\@vspace}
1251 \vadjust{\@restorepar
1267 \vadjust{\@restorepar
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}{%
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
1288 \setbox\z@ \hbox{\the\toks@\nobreak}%
1290 \spacefactor\sfcode`\-
1292 \futurelet\@let@token \reserved@b
1294 \DeclareRobustCommand{\nobreakspace}{%
1295 \leavevmode\nobreak\ }
1297 \def~{\nobreakspace{}}
1298 \expandafter\let\expandafter\@xobeysp\csname nobreakspace \endcsname
1299 \DeclareRobustCommand{\,}{%
1300 \relax\ifmmode\mskip\thinmuskip\else\thinspace\fi
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}
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}%
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%
1325 \vbox to\ht\z@{\hbox{\check@mathfonts
1326 \fontsize\sf@size\z@
1327 \math@fontsfalse\selectfont
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
1338 \newread\@inputcheck
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]}%
1352 \@colroom\textheight \vsize\textheight
1353 \columnwidth\textwidth
1354 \@clubpenalty\clubpenalty
1356 \advance\columnwidth -\columnsep
1357 \divide\columnwidth\tw@ \hsize\columnwidth \@firstcolumntrue
1359 \hsize\columnwidth \linewidth\hsize
1360 \begingroup\@floatplacement\@dblfloatplacement
1361 \makeatletter\let\@writefile\@gobbletwo
1362 \global \let \@multiplelabels \relax
1363 \@input{\jobname.aux}%
1366 \immediate\openout\@mainaux\jobname.aux
1367 \immediate\write\@mainaux{\relax}%
1370 \let\glb@currsize\@empty %% Force math initialization.
1373 \ifx\normalsfcodes\@empty
1374 \ifnum\sfcode`\.=\@m
1375 \let\normalsfcodes\frenchspacing
1377 \let\normalsfcodes\nonfrenchspacing
1381 \let \@refundefined \relax
1382 \let\AtBeginDocument\@firstofone
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
1391 \gdef\do##1{\global\let ##1\@notprerr}%
1393 \global\let \@nodocument \relax
1394 \global\let\do\noexpand
1396 \@onlypreamble\document
1397 \let\normalsfcodes\@empty
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{%
1410 \let\protect\@unexpandable@protect
1411 \edef\reserved@a{\write#1{#3}}%
1414 \if@nobreak\ifvmode\nobreak\fi\fi
1416 \let\@auxout=\@mainaux
1417 \def\includeonly#1{%
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}
1428 \immediate\write\@mainaux{\string\@input{#1.aux}}%
1433 \edef\reserved@b{#1}%
1434 \@for\reserved@a:=\@partlist\do
1435 {\ifx\reserved@a\reserved@b\@tempswatrue\fi}%
1438 \let\@auxout\@partaux
1440 \immediate\openout\@partaux #1.aux
1441 \immediate\write\@partaux{\relax}%
1447 \immediate\closeout\@partaux
1453 \let\@auxout\@mainaux}
1456 \immediate\write\@partaux{\string\@setckpt{#1}\@charlb}%
1457 {\let\@elt\@wckptelt \cl@@ckpt}%
1458 \immediate\write\@partaux{\@charrb}%
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
1469 \long\def \IfFileExists#1#2#3{%
1470 \openin\@inputcheck#1 %
1472 \ifx\input@path\@undefined
1473 \def\reserved@a{#3}%
1475 \def\reserved@a{\@iffileonpath{#1}{#2}{#3}}%
1478 \closein\@inputcheck
1479 \edef\@filef@und{#1 }%
1480 \def\reserved@a{#2}%
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
1495 \long\def \InputIfFileExists#1#2{%
1497 {#2\@addtofilelist{#1}\@@input \@filef@und}}
1498 \def\input{\@ifnextchar\bgroup\@iinput\@@input}
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}}%
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: }%
1515 \global\read\m@ne to\@gtempa}%
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}%
1524 \noexpand\InputIfFileExists
1525 {\filename@area\filename@base.\filename@ext}%
1527 {\noexpand\@missingfileerror
1528 {\filename@area\filename@base}{\filename@ext}}}%
1531 \def\@obsoletefile#1#2{%
1532 \@latex@warning@no@line{inputting `#1' instead of obsolete `#2'}}
1533 \@onlypreamble\@obsoletefile
1534 \let\@filelist\@gobble
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}%
1544 \typeout{^^J *File List*}%
1545 \@for\@currname:=\@filelist\do{%
1546 \filename@parse\@currname
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\\\\\\\\\\\\\\\\\\\@@
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%
1569 \csname#3-cmd\expandafter\endcsname
1571 \csname#3\string#2\endcsname
1573 \let\@ifdefinable\@rc@ifdefinable
1574 \expandafter#1\csname#3\string#2\endcsname}
1575 \def\chardef@text@cmd{%
1576 \let\@ifdefinable\@@ifdefinable
1579 \def\DeclareTextSymbol#1#2#3{%
1580 \@dec@text@cmd\chardef@text@cmd#1{#2}#3\relax
1582 \@onlypreamble\DeclareTextCommand
1583 \@onlypreamble\DeclareTextSymbol
1584 \def\@current@cmd#1{%
1585 \ifx\protect\@typeset@protect
1588 \noexpand#1\expandafter\@gobble
1590 \def\@changed@cmd#1#2{%
1591 \ifx\protect\@typeset@protect
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%
1599 \global\expandafter\let
1600 \csname\cf@encoding \string#1\expandafter\endcsname
1601 \csname ?\string#1\endcsname
1603 \csname\cf@encoding\string#1%
1604 \expandafter\endcsname
1608 \gdef\TextSymbolUnavailable#1{%
1610 Command \protect#1 unavailable in encoding \cf@encoding%
1612 \def\@inmathwarn#1{%
1614 \@latex@warning{Command \protect#1 invalid in math mode}%
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
1643 \expandafter\reserved@b\expandafter{\reserved@a{##1}}%
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{%
1653 \expandafter\@secondoftwo
1655 \expandafter\@firstoftwo
1658 \catcode\z@=11\relax
1659 \def\DeclareTextComposite#1#2#3#4{%
1660 \def\reserved@a{\DeclareTextCompositeCommand#1{#2}{#3}}%
1666 \catcode\z@=15\relax
1667 \@onlypreamble\DeclareTextComposite
1668 \def\UseTextAccent#1#2#3{%
1669 \hmode@start@before@group
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}%
1676 \def\UseTextSymbol#1#2{%
1677 \hmode@start@before@group
1679 \def\@wrong@font@char{\MessageBreak
1680 for \noexpand\symbol`\string#2'}%
1681 \@use@text@encoding{#1}%
1685 \def\@use@text@encoding#1{%
1686 \edef\f@encoding{#1}%
1688 \csname\curr@fontshape/\f@size\endcsname}%
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
1702 \global\expandafter\let\csname#2\string#1\endcsname
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}%
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}
1803 %%% From File: ltcounts.dtx
1804 \def\setcounter#1#2{%
1805 \@ifundefined{c@#1}%
1807 {\global\csname c@#1\endcsname#2\relax}}
1808 \def\addtocounter#1#2{%
1809 \@ifundefined{c@#1}%
1811 {\global\advance\csname c@#1\endcsname #2\relax}}
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
1823 \csname cl@#1\endcsname
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
1829 \global\expandafter\let\csname cl@#1\endcsname\@empty
1830 \@addtoreset{#1}{@ckpt}%
1831 \global\expandafter\let\csname p@#1\endcsname\@empty
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}
1845 \def\@Roman#1{\expandafter\@slowromancap\romannumeral #1@}
1846 \def\@slowromancap#1{\ifx @#1% then terminate
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
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}
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
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
1890 \def\new@mathgroup{\alloc@8\mathgroup\chardef\sixt@@n}
1892 \let\newfam\new@mathgroup
1893 \@onlypreamble\new@mathgroup
1894 \def\DeclareFontShape{\begingroup
1896 \expandafter\endgroup
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
1903 \xdef\csname#1/#2/#3/#4\endcsname{\expandafter\noexpand
1904 \csname #5\endcsname}%
1905 \def\reserved@a{#6}%
1907 \expandafter\let\csname#5\expandafter\endcsname
1908 \ifx\reserved@a\@empty
1915 \def\DeclareFixedFont#1#2#3#4#5#6{%
1920 \usefont{#2}{#3}{#4}{#5}%
1921 \global\expandafter\let\expandafter#1\the\font
1924 \def\do@subst@correction{%
1925 \xdef\subst@correction{%
1927 \global\expandafter\font
1928 \csname \curr@fontshape/\f@size\endcsname
1929 \noexpand\fontname\font
1931 \aftergroup\subst@correction
1933 \def\DeclareFontFamily#1#2#3{%
1934 \@ifundefined{T@#1}%
1936 \@latex@error{Encoding scheme `#1' unknown}\@eha
1939 \def\reserved@a{#3}%
1941 \expandafter\let\csname #1+#2\expandafter\endcsname
1942 \ifx \reserved@a\@empty
1948 \let\cdp@list\@empty
1949 \@onlypreamble\cdp@list
1951 \@onlypreamble\cdp@elt
1952 \def\DeclareFontEncoding{%
1955 \expandafter\endgroup
1956 \DeclareFontEncoding@}
1957 \@onlypreamble\DeclareFontEncoding
1958 \def\DeclareFontEncoding@#1#2#3{%
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}%
1965 \expandafter\let\csname#1-cmd\endcsname\@changed@cmd
1967 \@font@info{Redeclaring font encoding #1}%
1969 \global\@namedef{T@#1}{#2}%
1970 \global\@namedef{M@#1}{\default@M#3}%
1971 \xdef\LastDeclaredEncoding{#1}%
1973 \@onlypreamble\DeclareFontEncoding@
1974 \def\LastDeclaredEncoding{}
1975 \def\DeclareFontSubstitution#1#2#3#4{%
1977 \ifx\csname T@#1\endcsname\relax
1978 \@latex@error{Encoding scheme `#1' unknown}\@eha
1981 \edef\reserved@a{#1}%
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}}%
1988 \addto@hook\toks@{\cdp@elt{##1}{##2}{##3}{##4}}%
1991 \xdef\cdp@list{\the\toks@}%
1995 \def\default@family{#2}%
1996 \def\default@series{#3}%
1997 \def\default@shape{#4}%
2001 \@onlypreamble\DeclareFontSubstitution
2002 \def\DeclareFontEncodingDefaults#1#2{%
2004 \ifx\default@T\@empty\else
2005 \@font@info{Overwriting encoding scheme text defaults}%
2007 \gdef\default@T{#1}%
2010 \ifx\default@M\@empty\else
2011 \@font@info{Overwriting encoding scheme math defaults}%
2013 \gdef\default@M{#2}%
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}%
2024 \def\reserved@f##1,{%
2026 \let\reserved@f\relax
2028 \xdef\font@name{\csname#1/#2/#3/#4/##1\endcsname}%
2030 \global\expandafter\let\font@name\relax
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
2047 \csname S@\strip@pt\dimen@\endcsname
2051 \csname S@\strip@pt\dimen@\endcsname
2052 {\gdef\tf@size{#3}\gdef\sf@size{#4}%
2057 \@onlypreamble\@DeclareMathSizes
2058 \DeclareRobustCommand\fontencoding[1]{%
2059 \expandafter\ifx\csname T@#1\endcsname\relax
2060 \@latex@error{Encoding scheme `#1' unknown}\@eha
2062 \edef\f@encoding{#1}%
2063 \ifx\cf@encoding\f@encoding
2064 \let\enc@update\relax
2066 \let\enc@update\@@enc@update
2073 \csname\cf@encoding -cmd\endcsname
2077 \csname\f@encoding-cmd\endcsname
2080 \csname T@\f@encoding\endcsname
2081 \csname D@\f@encoding\endcsname
2082 \let\enc@update\relax
2083 \let\cf@encoding\f@encoding
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
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
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}
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
2120 \let\frozen@everymath\everymath
2121 \let\frozen@everydisplay\everydisplay
2123 \newtoks\everydisplay
2124 \frozen@everymath = {\check@mathfonts
2126 \frozen@everydisplay = {\check@mathfonts
2128 \let\curr@math@size\@empty
2130 \expandafter \ifx \font@name \relax
2134 \gdef\split@name#1/#2/#3/#4/#5\@nil{\def\f@encoding{#1}%
2139 \def\curr@fontshape{\f@encoding/\f@family/\f@series/\f@shape}
2140 \def\define@newfont{%
2142 \let\typeout\@font@info
2144 \expandafter\expandafter\expandafter
2145 \split@name\expandafter\string\font@name\@nil
2146 \try@load@fontshape % try always
2148 \csname\curr@fontshape\endcsname \relax
2149 \wrong@fontshape\else
2152 \def\try@load@fontshape{%
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
2160 \let\nfss@catcodes\relax
2163 \noexpand\InputIfFileExists{\f@encoding\f@family.fd}}}%
2165 {\@input@{\f@encoding\f@family.fd}}%
2167 \def\nfss@catcodes{%
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
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
2202 \gdef\f@baselineskip{#5pt}%
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}%
2212 \let\f@shape\default@shape
2213 \expandafter\ifx\csname\curr@fontshape\endcsname\relax
2214 \let\f@series\default@series
2216 \ifx\csname\curr@fontshape\endcsname\relax
2217 \let\f@family\default@family
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
2231 \csname\curr@fontshape/\f@size\endcsname}%
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{%
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
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>}%
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
2271 \gdef\showhyphens#1{%
2275 \parfillskip\z@skip\hsize\maxdimen
2277 \pretolerance\m@ne\tolerance\m@ne\hbadness\z@\showboxdepth\z@\ #1%
2279 \long\def\addto@hook#1#2{#1\expandafter{\the#1#2}}
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.
2296 \@font@warning{Command \noexpand\tracingfonts
2297 not provided.\MessageBreak
2298 Use the `tracefnt' package.\MessageBreak Command found:}%
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}}%
2308 \global\expandafter\font\font@name\external@font\relax
2310 \csname \f@encoding+\f@family\endcsname
2311 \csname\curr@fontshape\endcsname
2314 \def\get@external@font{%
2315 \let\external@font\@empty
2316 \edef\font@info{\expandafter\expandafter\expandafter\string
2317 \csname \curr@fontshape \endcsname}%
2319 \ifx\external@font\@empty
2320 \try@size@substitution
2321 \ifx\external@font\@empty
2322 \@latex@error{Font \expandafter \string\font@name\space
2328 \DeclareRobustCommand\selectfont
2330 \ifx\f@linespread\baselinestretch \else
2331 \set@fontsize\baselinestretch\f@size\f@baselineskip \fi
2333 \csname\curr@fontshape/\f@size\endcsname}%
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
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
2354 \let\size@update\relax}%
2356 \let\size@update\relax
2358 \expandafter\ifx\csname S@\f@size\endcsname\relax
2359 \calculate@math@sizes
2361 \csname S@\f@size\endcsname
2365 \csname mv@\math@version \endcsname
2368 \let \glb@currsize \f@size
2370 \the\every@math@size
2373 \def\baselinestretch{1}
2374 \newtoks\every@math@size
2376 \def\check@mathfonts{%
2377 \ifx \glb@currsize \f@size
2380 \init@restore@glb@settings
2382 \let\curr@math@size\f@size
2383 \def\init@restore@glb@settings{\aftergroup\restglb@settings}%
2385 \let\init@restore@glb@settings\relax
2386 \def\restglb@settings{%
2388 \let\f@size\curr@math@size
2389 \ifx\glb@currsize \f@size
2395 \def\use@mathgroup#1#2{\relax\ifmmode
2397 \expandafter\ifx\csname M@\f@encoding\endcsname#1\else
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}%
2408 \edef\math@fonts{\math@fonts
2409 \textfont#1\textfont@name
2410 \scriptfont#1\scriptfont@name
2411 \scriptscriptfont#1\font@name}%
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
2425 \def\try@simple@size{%
2426 \def\reserved@a{\def\extract@fontinfo####1}%
2427 \expandafter\reserved@a\expandafter<\f@size>##2<##3\@nnil{%
2429 {\set@simple@size@args##2<##3\@nnil
2430 \execute@size@function\sizefn@info
2432 \expandafter\expandafter
2433 \expandafter\extract@fontinfo\expandafter\font@info
2434 \expandafter<\f@size>\@nil<\@nnil
2436 \def\set@simple@size@args#1<{%
2438 \expandafter\remove@angles
2440 \extract@sizefn#1*\@nil
2441 \expandafter\remove@to@nnil
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{%
2450 \def\reserved@f{\extract@rangefontinfo<#4\@nnil}%
2452 \ifdim\upper@bound=\z@ \upper@bound\maxdimen\fi
2453 \ifdim \f@size \p@<\upper@bound
2455 \ifdim \f@size \p@<\lower@bound
2457 \set@simple@size@args#3<#4\@nnil
2458 \execute@size@function\sizefn@info
2459 \ifx\external@font\@empty
2461 \let\reserved@f\@empty
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
2475 \let\reserved@f\@empty
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
2489 \def\try@size@range{%
2490 \expandafter\extract@rangefontinfo\font@info <-*>\@nil<\@nnil
2492 \gdef\try@size@substitution{%
2493 \@tempdimb \maxdimen
2494 \let \best@size \@empty
2495 \expandafter \try@simples \font@info <\number\@M>\@nil<\@nnil
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
2505 \ifdim \dimen@<\@M\p@
2506 \ifdim \f@size\p@<\dimen@
2508 \advance\@tempdimc -\f@size\p@
2510 \@tempdimc \f@size\p@
2511 \advance\@tempdimc -\dimen@
2513 \ifdim \@tempdimc<\@tempdimb
2514 \@tempdimb \@tempdimc
2515 \def \best@size{#1}%
2518 \ifx \external@font\@empty
2519 \ifx \best@size\@empty
2521 \ifdim \@tempdimb>\font@submax \relax
2522 \xdef \font@submax {\the\@tempdimb}%
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}%
2533 \do@subst@correction
2536 \let \reserved@f \remove@to@nnil
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
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}%
2551 \edef\external@font{\mandatory@arg\space at\the\@tempdimb}}
2552 \DeclareSizeFunction{gen}{\gen@sfcnt\@font@warning}
2553 \DeclareSizeFunction{sgen}{\gen@sfcnt\@font@info}
2555 \edef\mandatory@arg{\mandatory@arg\f@size}%
2557 \DeclareSizeFunction{genb}{\genb@sfcnt\@font@warning}
2558 \DeclareSizeFunction{sgenb}{\genb@sfcnt\@font@info}
2560 \edef\mandatory@arg{\mandatory@arg\expandafter\genb@x\f@size..\@@}%
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}
2567 \edef\mandatory@arg{\f@encoding/\mandatory@arg}%
2569 \expandafter\split@name\mandatory@arg/\@nil
2572 \let\f@user@size\f@size
2574 \ifx\csname\mandatory@arg\endcsname\relax
2575 \errmessage{No\space declaration\space for\space
2576 shape\space \mandatory@arg}%
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
2583 \expandafter\split@name\mandatory@arg/\@nil
2585 \edef\f@size{\f@user@size}%
2587 \do@subst@correction
2589 \DeclareSizeFunction{subf}{\subf@sfcnt\@font@warning}
2590 \DeclareSizeFunction{ssubf}{\subf@sfcnt\@font@info}
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}%
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
2603 \edef\external@font{\mandatory@arg\space at\optional@arg pt}%
2605 #1{External\space font\space `\external@font'\space loaded\space
2606 for\space size\MessageBreak
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}%
2624 \@onlypreamble\warn@rel@i
2625 \gdef\scan@fontshape{%
2626 \let\reserved@f\@empty
2627 \let\reserved@e\@empty % holds last info
2630 \@onlypreamble\scan@fontshape
2631 \gdef\scan@@fontshape#1>#2#3<{%
2633 \edef\reserved@f{\reserved@f\reserved@e}%
2635 \def\reserved@b{#1}% nick names
2636 \def\reserved@c{#3}%
2639 \in@{pt}{#3}% not a proof but a good chance
2641 \def\reserved@a##1 at##2pt##3\@nil{%
2642 \def\reserved@b{##2}%
2643 \def\reserved@c{##1}%
2649 \edef\reserved@d{subf*\reserved@c}%
2653 \errmessage{*** What's this? NFSS release 0? ***}%
2656 \edef\reserved@d{#2\reserved@c}%
2658 \ifx\reserved@d\reserved@e
2659 \edef\reserved@f{\reserved@f<\reserved@b>}%
2661 \edef\reserved@f{\reserved@f\reserved@e<\reserved@b>}%add old info
2662 \let\reserved@e\reserved@d
2664 \expandafter\scan@@fontshape
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}{}%
2676 \@onlypreamble\extra@def
2677 \gdef\default@mextra{%
2678 \warn@rel@i\default@mextra\DeclareFontEncodingDefaults
2679 \DeclareFontEncodingDefaults\relax
2681 \@onlypreamble\default@mextra
2682 \gdef\preload@sizes{%
2683 \warn@rel@i\preload@sizes\DeclarePreloadSizes
2684 \DeclarePreloadSizes U%
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
2696 \@onlypreamble\err@rel@i
2697 \gdef\newmathalphabet{%
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%
2704 {Please look at the file usrguide.tex for hints on
2705 how to resolve this problem.}%
2707 \warn@rel@i\newmathalphabet\DeclareMathAlphabet
2709 \@ifstar\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
2722 \@onlypreamble\define@mathalphabet
2723 \gdef\define@mathgroup{%
2724 \err@rel@i\define@mathgroup\DeclareSymbolFont
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.
2735 \def\in@@##1#1##2##3\in@@{%
2736 \ifx\in@##2\in@false\else\in@true\fi}%
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
2748 \def\select@group#1#2#3#4{%
2749 \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
2752 \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n
2755 \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
2756 \globaldefs\@ne \math@fonts
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
2764 \@latex@error{Too many math alphabets used in
2765 version \math@version}%
2768 \else \expandafter\non@alpherr\fi
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
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
2786 \aftergroup\dorestore@version
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
2797 \let\getanddefine@fonts\@gobbletwo
2798 \restore@mathversion
2801 \@onlypreamble\dorestore@version
2802 \def\document@select@group#1#2#3#4{%
2803 \ifx\math@bgroup\bgroup\else\relax\expandafter\@firstofone\fi
2806 \ifnum\csname c@mv@\math@version\endcsname<\sixt@@n
2809 \getanddefine@fonts{\csname c@mv@\math@version\endcsname}#3%
2810 \globaldefs\@ne \math@fonts
2812 \expandafter\extract@alph@from@version
2813 \csname mv@\math@version\expandafter\endcsname
2814 \expandafter{\number\csname
2815 c@mv@\math@version\endcsname}%
2817 \global\advance\csname c@mv@\math@version\endcsname\@ne
2820 \@latex@error{Too many math alphabets used
2821 in version \math@version}%
2824 \else \expandafter\non@alpherr\fi
2828 \def\process@table{%
2829 \def\cdp@elt##1##2##3##4{%
2830 \@font@info{Checking defaults for
2833 \ifx\csname##1/##2/##3/##4\endcsname\relax
2835 \def\f@encoding{##1}\def\f@family{##2}%
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}%
2845 \@font@info{... okay}%
2851 \expandafter\ifx\csname \curr@fontshape\endcsname\relax
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
2860 font shape using the \noexpand\DeclareErrorFont
2864 \let\select@group\document@select@group
2865 \fontencoding{\encodingdefault}%
2866 \fontfamily{\familydefault}%
2867 \fontseries{\seriesdefault}%
2868 \fontshape{\shapedefault}%
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}%
2878 \@font@info{Redeclaring math version
2879 `\expandafter\@gobblefour\string#1'}%
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}%
2888 \def\group@elt##1##2{%
2890 \addto@hook\toks@{\getanddefine@fonts##1##2}%
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}}%
2899 \toks@\expandafter{\the\toks@\install@mathalphabet##1%
2900 {\select@group##1##2##3}}%
2904 \xdef#1{\the\toks@}%
2906 \@onlypreamble\new@mathversion
2907 \def\DeclareSymbolFont#1#2#3#4#5{%
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}%
2914 \@ifundefined{sym#1}{%
2915 \expandafter\new@mathgroup\csname sym#1\endcsname
2916 \expandafter\new@symbolfont\csname sym#1\endcsname
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
2927 \xdef\group@list{\group@list}%
2928 \def\version@elt##1{%
2930 \SetSymbolFont@\expandafter##1\csname#2/#3/#4/#5\expandafter
2931 \endcsname \csname sym#1\endcsname
2936 \@latex@error{Encoding scheme `#2' unknown}\@eha
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
2956 \@onlypreamble\new@symbolfont
2957 \def\SetSymbolFont#1#2#3#4#5#6{%
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}%
2964 \expandafter\SetSymbolFont@
2965 \csname mv@#2\expandafter\endcsname\csname#3/#4/#5/#6\expandafter
2966 \endcsname \csname sym#1\endcsname
2968 \@latex@error{Encoding scheme `#3' unknown}\@eha
2971 \@onlypreamble\SetSymbolFont
2972 \def\SetSymbolFont@#1#2#3{%
2973 \expandafter\in@\expandafter#1\expandafter{\version@list}%
2975 \expandafter\in@\expandafter#3\expandafter{\group@list}%
2978 \expandafter\get@cdp\string#2\@nil\reserved@a
2980 \def\install@mathalphabet##1##2{%
2981 \addto@hook\toks@{\install@mathalphabet##1{##2}}%
2983 \def\getanddefine@fonts##1##2{%
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'}%
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}%
3002 \addto@hook\toks@{\getanddefine@fonts##1##2}%
3005 \xdef#1{\the\toks@}%
3008 \@latex@error{Symbol font `\expandafter\@gobblefour\string#3'
3012 \@latex@error{Math version `\expandafter\@gobblefour\string#1'
3014 defined}{You probably mispelled the name of the math
3015 version.^^JOr you have to specify an additional package.}%
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{%
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}%
3029 \csname\expandafter\@gobble\string#1\endcsname
3031 \new@mathalphabet#1{#2}{#3}{#4}{#5}%
3033 \edef\reserved@a{\noexpand\in@{\string\select@group}%
3034 {\expandafter\meaning\csname @\expandafter
3035 \@gobble\string#1\endcsname}}%
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}%
3046 \edef\reserved@a{\noexpand\in@{\string\use@mathgroup}%
3047 {\expandafter\meaning\csname @\expandafter
3048 \@gobble\string#1\endcsname}}%
3051 \@font@info{Redeclaring math alphabet \string#1}%
3052 \new@mathalphabet#1{#2}{#3}{#4}{#5}%
3054 \@latex@error{Command `\string#1' already defined}\@eha
3059 \@latex@error{Encoding scheme `#2' unknown}\@eha
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
3068 \noexpand\no@alphabet@error
3069 \noexpand\no@alphabet@error
3071 \expandafter\noexpand\csname M@#2\endcsname
3072 \expandafter\noexpand\csname#2/#3/#4/#5\endcsname
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
3083 \noexpand\no@alphabet@error
3086 \noexpand\select@group\the\toks2
3090 \expandafter\edef\csname @\expandafter\@gobble
3091 \string#1\endcsname{\if/#5/%
3092 \noexpand\no@alphabet@error
3095 \noexpand\select@group\the\toks2
3097 \edef#1{\noexpand\protect
3098 \expandafter\noexpand\csname @\expandafter
3099 \@gobble\string#1\endcsname}%
3101 \@onlypreamble\new@mathalphabet
3102 \def\SetMathAlphabet#1#2#3#4#5#6{%
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}%
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%
3114 \@latex@error{Encoding scheme `#3' unknown}\@eha
3117 \@onlypreamble\SetMathAlphabet
3118 \def\SetMathAlphabet@#1#2#3#4#5{%
3119 \expandafter\in@\expandafter#1\expandafter{\version@list}%
3121 \expandafter\in@\expandafter#4\expandafter{\alpha@list}%
3125 \def\getanddefine@fonts##1##2{%
3126 \addto@hook\toks@{\getanddefine@fonts##1##2}%
3128 \def\reserved@c##1##2##3##4{% % for message below
3129 \expandafter\@gobble\string##4}%
3130 \def\install@mathalphabet##1##2{%
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}%
3140 \addto@hook\toks@{\install@mathalphabet##1{##2}}%
3144 \xdef#1{\the\toks@}%
3148 \noexpand\in@{\string\use@mathgroup}{\meaning#4}}%
3151 \def\reserved@b##1\use@mathgroup##2##3{%
3152 \def\reserved@b{##3}\def\reserved@c{##2}}%
3153 \expandafter\reserved@b#4%
3155 \def\install@mathalphabet##1##2{%
3156 \addto@hook\toks@{\install@mathalphabet##1{##2}}%
3158 \def\getanddefine@fonts##1##2{%
3159 \addto@hook\toks@{\getanddefine@fonts##1##2}%
3160 \ifnum##1=\reserved@b
3162 \addto@hook\expandafter\toks@
3163 \expandafter{\expandafter\install@mathalphabet
3164 \expandafter#4\expandafter
3165 {\expandafter\select@group\expandafter
3169 \def\version@elt##1{%
3172 \xdef##1{\the\toks@}%
3176 \expandafter\gdef\expandafter\alpha@list\expandafter
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%
3182 \@latex@error{Command `\string#5' not defined as a
3184 {Use \noexpand\DeclareMathAlphabet to define it.}%
3188 \@latex@error{Math version `\expandafter\@gobblefour\string#1'
3190 defined}{You probably mispelled the name of the math
3191 version.^^JOr you have to specify an additional package.}%
3194 \@onlypreamble\SetMathAlphabet@
3195 \def\DeclareMathAccent#1#2#3#4{%
3196 \expandafter\in@\csname sym#3\expandafter\endcsname
3197 \expandafter{\group@list}%
3202 \divide\count\z@\sixt@@n
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}}%
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}%
3216 \csname\expandafter\@gobble\string#1\endcsname
3218 \expandafter\set@mathaccent
3219 \csname sym#3\endcsname#1#2%
3220 {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3222 \@latex@error{Command `\string#1' already defined}\@eha
3226 \@latex@error{Not a command name: `\noexpand#1'}\@eha
3230 \@latex@error{Symbol font `#3' is not defined}\@eha
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}%
3244 \divide\count\z@\sixt@@n
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}}%
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}%
3258 \csname\expandafter\@gobble\string#1\endcsname
3260 \expandafter\set@mathsymbol
3261 \csname sym#3\endcsname#1#2%
3262 {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3264 \@latex@error{Command `\string#1' already defined}\@eha
3268 \expandafter\set@mathchar
3269 \csname sym#3\endcsname#1#2
3270 {\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3274 \@latex@error{Symbol font `#3' is not defined}\@eha
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
3288 \expandafter\@xxDeclareMathDelimiter
3291 \@onlypreamble\DeclareMathDelimiter
3292 \def\@xxDeclareMathDelimiter#1#2#3#4{%
3294 \let\mathalpha\mathord
3295 \ifnum7=\mathchar@type{#2}%
3297 \expandafter\@firstofone
3300 \DeclareMathSymbol#1{#2}{#3}{#4}%
3301 \expandafter\@firstoftwo
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}%
3309 \expandafter\in@\csname sym#5\expandafter\endcsname
3310 \expandafter{\group@list}%
3315 \divide\count\z@\sixt@@n
3317 \multiply\count@\sixt@@n
3318 \advance\count\tw@-\count@
3319 \edef\reserved@c{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3323 \divide\count\z@\sixt@@n
3325 \multiply\count@\sixt@@n
3326 \advance\count\tw@-\count@
3327 \edef\reserved@d{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3329 \edef\reserved@a{\noexpand\in@{\string\delimiter}{\meaning#1}}%
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}%
3339 \csname\expandafter\@gobble\string#1\endcsname
3341 \expandafter\set@mathdelimiter
3342 \csname sym#3\expandafter\endcsname
3343 \csname sym#5\endcsname#1#2%
3344 \reserved@c\reserved@d
3346 \@latex@error{Command `\string#1' already defined}\@eha
3351 \@latex@error{Symbol font `#5' is not defined}\@eha
3354 \@latex@error{Symbol font `#3' is not defined}\@eha
3357 \@onlypreamble\@DeclareMathDelimiter
3358 \def\@xDeclareMathDelimiter#1#2#3#4#5{%
3359 \expandafter\in@\csname sym#2\expandafter\endcsname
3360 \expandafter{\group@list}%
3362 \expandafter\in@\csname sym#4\expandafter\endcsname
3363 \expandafter{\group@list}%
3368 \divide\count\z@\sixt@@n
3370 \multiply\count@\sixt@@n
3371 \advance\count\tw@-\count@
3372 \edef\reserved@c{\hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3376 \divide\count\z@\sixt@@n
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
3386 \@latex@error{Symbol font `#4' is not defined}\@eha
3389 \@latex@error{Symbol font `#2' is not defined}\@eha
3392 \@onlypreamble\@xDeclareMathDelimiter
3393 \def\set@mathdelimiter#1#2#3#4#5#6{%
3394 \xdef#3{\delimiter"\mathchar@type#4\hexnumber@#1#5%
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{%
3402 \csname\expandafter\@gobble\string#1\endcsname
3406 \edef\reserved@a{\noexpand\in@{\string\radical}{\meaning#1}}%
3409 \expandafter\in@\csname sym#2\expandafter\endcsname
3410 \expandafter{\group@list}%
3412 \expandafter\in@\csname sym#4\expandafter\endcsname
3413 \expandafter{\group@list}%
3418 \divide\count\z@\sixt@@n
3420 \multiply\count@\sixt@@n
3421 \advance\count\tw@-\count@
3423 \hexnumber@{\count\z@}\hexnumber@{\count\tw@}}%
3426 \divide\count\z@\sixt@@n
3428 \multiply\count@\sixt@@n
3429 \advance\count\tw@-\count@
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
3439 \@latex@error{Symbol font `#4' is not defined}\@eha
3442 \@latex@error{Symbol font `#2' is not defined}\@eha
3445 \@latex@error{Command `\string#1' already defined}\@eha
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
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{%
3475 \expandafter\in@\csname sym#2\expandafter\endcsname
3476 \expandafter{\group@list}%
3478 \expandafter\in@\expandafter#1\expandafter{\alpha@list}%
3480 \@font@info{Redeclaring math alphabet \string#3}%
3482 \def\alpha@elt##1##2##3{%
3483 \ifx##1#1\else\addto@hook\toks@{\alpha@elt##1##2##3}\fi}%
3485 \xdef\alpha@list{\the\toks@}%
3486 \def\version@elt##1{%
3489 \def\getanddefine@fonts####1####2{%
3490 \addto@hook\toks@{\getanddefine@fonts####1####2}}%
3491 \def\install@mathalphabet####1####2{%
3493 \addto@hook\toks@{\install@mathalphabet
3496 \xdef##1{\the\toks@}%
3502 \csname\expandafter\@gobble\string#1\endcsname
3506 \noexpand\in@{\string\use@mathgroup}{\meaning#1}}%
3509 \@font@info{Redeclaring math alphabet \string#3}%
3512 \@latex@error{Command `\string#3' already defined}\@eha
3518 \@latex@error{Unknown symbol font `#2'}\@eha
3521 \def\group@elt##1##2{%
3522 \expandafter\ifx\csname sym#2\endcsname##1%
3523 \expandafter\reserved@a\string##2\@nil
3525 \def\reserved@a##1##2/##3\@nil{%
3526 \def\reserved@a{##2}}%
3528 \toks@{\relax\ifmmode \else \non@alpherr#1\fi}%
3530 \noexpand\use@mathgroup
3531 \expandafter\noexpand\csname M@\reserved@a\endcsname
3532 \csname sym#2\endcsname}%
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{%
3575 \@latex@error{Command \noexpand#1invalid in math mode}%
3579 define a new math alphabet^^J%
3580 if you want to use a special font in math mode%
3582 use the math alphabet \noexpand#2instead of
3588 \def\boldmath{\@nomath\boldmath
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
3599 \fontsize{#2}{#3}\selectfont}
3600 \def\@setsize#1#2#3#4{\@setfontsize#1{#4}{#2}}
3601 \def\oldstylenums#1{%
3603 \spaceskip\fontdimen\tw@\font
3604 \usefont{OML}{\rmdefault}{\f@series}{it}%
3605 \mathgroup\symletters #1%
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
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
3637 \ifnum\inputlineno=\m@ne
3638 \InputIfFileExists{fonttext.cfg}
3639 {\typeout{====================================^^J%
3641 Local config file fonttext.cfg used^^J%
3643 ====================================}%
3644 \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3646 {\typeout{!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J%
3648 ! You MUST use a fonttext.cfg file!^^J%
3649 ! As you are still using TeX2!!!!!^^J%
3651 ! See the documentation file tex2.txt^^J%
3653 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!}%
3656 \InputIfFileExists{fonttext.cfg}
3657 {\typeout{====================================^^J%
3659 Local config file fonttext.cfg used^^J%
3661 ====================================}%
3662 \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3664 {\input{fonttext.ltx}}
3666 \let\@addtofilelist\@gobble
3667 \InputIfFileExists{fontmath.cfg}
3668 {\typeout{====================================^^J%
3670 Local config file fontmath.cfg used^^J%
3672 ====================================}%
3673 \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3675 {\input{fontmath.ltx}}
3676 \let\@addtofilelist\@gobble
3677 \InputIfFileExists{preload.cfg}
3678 {\typeout{====================================^^J%
3680 Local config file preload.cfg used^^J%
3682 =====================================}%
3683 \def\@addtofilelist##1{\xdef\@filelist{\@filelist,##1}}%
3685 {\input{preload.ltx}}
3686 \let\@addtofilelist\@gobble
3687 \let\@acci\' \let\@accii\` \let\@acciii\=
3688 %%% From File: ltfntcmd.dtx
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]{%
3712 #2\check@icl ##1\check@icr
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}
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
3738 \ifx \reserved@a \space
3739 \let \check@icl \@empty
3740 \let \check@icr \@empty
3742 \check@nocorr@ #1\nocorr\@nil
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
3756 \let \check@icl \@empty
3757 \let \check@icr \@empty
3760 \ifx \reserved@c \@empty
3762 \let \check@icr \@empty
3766 \def \maybe@ic {\futurelet\@let@token\maybe@ic@}
3768 \ifdim \fontdimen\@ne\font>\z@
3771 \expandafter\@tfor\expandafter\reserved@a\expandafter:\expandafter=%
3774 \if@tempswa \sw@slant \fi
3778 \expandafter\let\expandafter\reserved@b\expandafter=\reserved@a\relax
3779 \ifx\reserved@b\@let@token
3785 \ifdim \lastskip=\z@
3794 \def \fix@penalty {%
3795 \ifnum \lastpenalty=\z@
3798 \count@ \lastpenalty
3804 \def \nocorrlist {,.}
3805 \ifx \nfss@text\@undefined
3806 \def \nfss@text {\leavevmode\hbox}
3808 \def \DeclareOldFontCommand #1#2#3{%
3809 \DeclareRobustCommand #1{\@fontswitch {#2}{#3}}%
3811 \def \@fontswitch #1#2{%
3813 \let \math@bgroup \relax
3814 \def \math@egroup {\let \math@bgroup \@@math@bgroup
3815 \let \math@egroup \@@math@egroup}%
3821 \let \@@math@bgroup \math@bgroup
3822 \let \@@math@egroup \math@egroup
3823 \@onlypreamble \DeclareTextFontCommand
3824 \@onlypreamble \DeclareOldFontCommand
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
3831 %%% From File: ltpageno.dtx
3832 \message{page nos.,}
3833 \countdef\c@page=0 \c@page=1
3835 \def\pagenumbering#1{%
3836 \global\c@page \@ne \gdef\thepage{\csname @#1\endcsname
3838 %%% From File: ltxref.dtx
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{%
3846 \protect\G@refundefinedtrue
3847 \nfss@text{\reset@font\bfseries ??}%
3848 \@latex@warning{Reference `#3' on page \thepage \space
3851 \expandafter#2#1\null
3853 \def\ref#1{\expandafter\@setref\csname r@#1\endcsname\@firstoftwo{#1}}
3854 \def\pageref#1{\expandafter\@setref\csname r@#1\endcsname
3856 \def\@newl@bel#1#2#3{{%
3857 \@ifundefined{#1@#2}%
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}}}%
3870 \def\refstepcounter#1{\stepcounter{#1}%
3871 \protected@edef\@currentlabel
3872 {\csname p@#1\endcsname\csname the#1\endcsname}%
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}
3881 \let\ignorespacesafterend\@ignoretrue
3883 \let\AtEndDocument\@firstofone
3885 \@checkend{document}%
3889 \immediate\closeout\@mainaux
3890 \let\@setckpt\@gobbletwo
3891 \let\@newl@bel\@testdef
3893 \makeatletter \input\jobname.aux
3896 \ifdim \font@submax >\fontsubfuzz\relax
3897 \@font@warning{Size substitutions with differences\MessageBreak
3898 up to \font@submax\space have occurred.\@gobbletwo}%
3903 \ifx \@multiplelabels \relax
3905 \@latex@warning@no@line{Label(s) may have changed.
3906 Rerun to get cross-references right}%
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
3920 \immediate\write\csname tf@#1\endcsname{\the\@temptokena}%
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}
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}}%
3933 \begingroup\@endpefalse\reserved@a}
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
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}
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}
3957 \let\\\@centercr\@rightskip\@flushglue \rightskip\@rightskip
3960 \def\flushright{\trivlist \raggedleft\item\relax}
3961 \def\endflushright{\endtrivlist}
3964 \rightskip\z@skip\leftskip\@flushglue
3965 \parindent\z@\parfillskip\z@skip}
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*]]
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
3979 \@tempswafalse \puxXspace1 %%PULATEX
3982 \leavevmode \null \@@par\penalty\interlinepenalty
3985 \ifhmode\@@par\penalty\interlinepenalty\fi
3987 \let\do\@makeother \dospecials
3988 \obeylines \verbatim@font \@noligs
3989 \hyphenchar\font\m@ne
3990 \everypar \expandafter{\the\everypar \unpenalty}%
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}
4002 \gdef\verb@eol@error{\obeylines%
4003 \def^^M{\verb@egroup\@latex@error{%
4004 \noexpand\verb ended by end of line}\@ehc}}%
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}
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\-}
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,}
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 \~}
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}
4077 \nonscript\mskip-\medmuskip\mkern5mu%
4078 \mathbin{\operator@font mod}\penalty900\mkern5mu%
4079 \nonscript\mskip-\medmuskip}
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}
4096 \newcount\interdisplaylinepenalty
4097 \interdisplaylinepenalty=100
4098 \def\choose{\atopwithdelims()}
4099 \def\brack{\atopwithdelims[]}
4100 \def\brace{\atopwithdelims\{\}}
4101 \def\mathpalette#1#2{%
4103 {#1\displaystyle{#2}}%
4105 {#1\scriptstyle{#2}}%
4106 {#1\scriptscriptstyle{#2}}}
4109 \setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}%
4112 \setbox\z@\hbox{$\m@th#1\sqrtsign{#2}$}%
4113 \dimen@\ht\z@ \advance\dimen@-\dp\z@
4114 \mkern5mu\raise.6\dimen@\copy\rootbox
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}
4123 \expandafter\mathpalette\expandafter\mathph@nt
4125 \expandafter\makeph@nt
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}
4133 \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
4134 \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
4135 \def\mathstrut{\vphantom(}
4137 \relax % \relax, in case this comes first in \halign
4139 \expandafter\mathpalette\expandafter\mathsm@sh
4141 \expandafter\makesm@sh
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
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@}
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
4185 \def\>{\mskip\medmuskip}
4186 \def\;{\mskip\thickmuskip}
4187 \def\!{\mskip-\thinmuskip}
4188 \def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}
4190 \def\active@math@prime{^\bgroup\prim@s}
4191 {\catcode`\'=\active \global\let'\active@math@prime}
4193 \prime\futurelet\@let@token\pr@m@s}
4199 \expandafter\expandafter\expandafter\pr@@@t
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}
4216 \makebox[.6\linewidth]%
4218 $$%%$$ BRACE MATCH HACK
4226 $$%%$$ BRACE MATCH HACK
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}
4247 \newif\if@eqnsw\@eqnswtrue
4249 \@centering = 0pt plus 1000pt
4251 \stepcounter{equation}%
4252 \def\@currentlabel{\p@equation\theequation}%
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
4270 \global\advance\c@equation\m@ne
4274 \def\nonumber{\global\@eqnswfalse}
4278 \global\@eqpen\@M\@yeqncr
4280 \global\@eqpen\interdisplaylinepenalty \@yeqncr
4283 \def\@yeqncr{\@testopt\@xeqncr\z@skip}
4287 \noalign{\penalty\@eqpen\vskip\jot\vskip #1\relax}%
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}{%
4302 \expandafter\@firstofone
4304 \expandafter\@ensuredmath
4306 \long\def\@ensuredmath#1{$\relax#1$}
4307 %%% From File: ltlists.dtx
4314 \newskip\@outerparskip
4315 \newdimen\leftmargin
4316 \newdimen\rightmargin
4317 \newdimen\listparindent
4318 \newdimen\itemindent
4319 \newdimen\labelwidth
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
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
4341 \ifnum \@listdepth >5\relax
4344 \global\advance\@listdepth\@ne
4349 \csname @list\romannumeral\the\@listdepth\endcsname
4350 \def\@itemlabel{#1}%
4351 \let\makelabel\@mklab
4356 \parindent\listparindent
4357 \advance\linewidth -\rightmargin
4358 \advance\linewidth -\leftmargin
4359 \advance\@totalleftmargin \leftmargin
4360 \parshape \@ne \@totalleftmargin \linewidth
4362 \newcount\par@deathcycles
4364 \if@noskipsec \leavevmode \fi
4367 \advance\@topsepadd \partopsep
4375 \if@newlist \@noitemerr \fi
4377 \@topsep \@topsepadd
4379 \advance\@topsep \parskip
4381 \rightskip \@rightskip
4382 \parfillskip \@flushglue
4383 \par@deathcycles \z@
4384 \@setpar{\if@newlist
4385 \advance\par@deathcycles \@ne
4386 \ifnum \par@deathcycles >\@m
4393 \global \@newlisttrue
4394 \@outerparskip \parskip}
4402 \let\@itemlabel\@empty
4403 \def\makelabel##1{##1}}
4405 \global\advance\@listdepth\m@ne
4410 \global \@inlabelfalse
4414 \global \@newlistfalse
4416 \ifhmode\unskip \par
4418 \@inmatherr{\end{\@currenvir}}%
4421 \ifdim\lastskip >\z@
4422 \@tempskipa\lastskip \vskip -\lastskip
4423 \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
4430 \addpenalty\@endparpenalty\addvspace\@topsepadd\@endpetrue}
4431 \def\@doendpe{\@endpetrue
4432 \def\par{\@restorepar\everypar{}\par\@endpefalse}\everypar
4433 {{\setbox\z@\lastbox}\everypar{}\@endpefalse}}
4436 \def\@mklab#1{\hfil #1}
4439 \@ifnextchar [\@item{\@noitemargtrue \@item[\@itemlabel]}}
4442 \global\setbox\@labels\hbox{\hskip -\leftmargin
4444 \hskip \leftmargin}%
4446 \@tempskipa\lastskip
4448 \advance\@tempskipa\@outerparskip
4449 \advance\@tempskipa -\parskip
4466 \addpenalty\@beginparpenalty
4468 \addvspace{-\parskip}%
4471 \addpenalty\@itempenalty
4474 \global\@inlabeltrue
4478 \global\@newlistfalse
4480 \global\@inlabelfalse
4492 \clubpenalty \@clubpenalty
4498 \refstepcounter\@listctr
4501 \sbox\@tempboxa{\makelabel{#1}}%
4502 \global\setbox\@labels\hbox{%
4507 \ifdim \wd\@tempboxa >\labelwidth
4510 \hbox to\labelwidth {\unhbox\@tempboxa}%
4515 \@latex@error{Lonely \string\item--perhaps a missing
4516 list environment}\@ehc}
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}
4528 \ifnum \@enumdepth >\thr@@\@toodeep\else
4529 \advance\@enumdepth\@ne
4530 \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
4533 \csname label\@enumctr\endcsname
4534 {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
4536 \let\endenumerate =\endlist
4537 \newcount\@itemdepth \@itemdepth = 0
4539 \ifnum \@itemdepth >\thr@@\@toodeep\else
4540 \advance\@itemdepth\@ne
4541 \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
4544 \csname\@itemitem\endcsname
4545 {\def\makelabel##1{\hss\llap{##1}}}%
4547 \let\enditemize =\endlist
4548 %%% From File: ltboxes.dtx
4554 {\@ifnextchar[\@makebox\mbox}}
4555 \long\def\mbox#1{\leavevmode\hbox{#1}}
4557 \@ifnextchar [{\@imakebox[#1]}{\@imakebox[#1][c]}}
4558 \long\def\@begin@tempboxa#1#2{%
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
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}%
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
4583 \@tfor\reserved@a :=#3\do{%
4585 \let\mb@l\relax\let\mb@r\relax
4587 \expandafter\let\csname mb@\reserved@a\endcsname\relax
4590 \hb@xt@ #1\unitlength{\mb@l #4\mb@r}%
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}}
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){%
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}}}
4620 \begingroup\aftergroup}%
4621 \def\noexpand\@currenvir{\@currenvir}%
4622 \def\noexpand\@currenvline{\on@line}}%
4627 \def\endlrbox{\unskip\color@endgroup}
4628 \def\usebox#1{\leavevmode\copy #1\relax}
4635 \hrule \@height\@wholewidth
4637 \vrule\@width\@wholewidth
4639 \vrule\@width\@wholewidth}%
4640 \hrule\@height\@wholewidth
4641 \vskip-\@wholewidth}%
4642 \hskip-\@wholewidth}}
4647 \setbox\@tempboxa\hbox{%
4649 \kern\fboxsep{#1}\kern\fboxsep
4654 \@framepicbox{\@ifnextchar[\@framebox\fbox}}
4655 \def\@framebox[#1]{%
4658 {\@iframebox[#1][c]}}
4659 \long\def\@iframebox[#1][#2]#3{%
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}%
4669 \advance\@tempdima\fboxsep
4670 \advance\@tempdima\dp\@tempboxa
4672 \lower\@tempdima\hbox{%
4674 \hrule\@height\fboxrule
4676 \vrule\@width\fboxrule
4683 \vrule\@width\fboxrule}%
4684 \hrule\@height\fboxrule}%
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}}}
4695 {\@iiiparbox c\relax[s]}}
4699 {\@iiiparbox{#1}\relax[s]}}
4700 \def\@iiparbox#1[#2]{%
4702 {\@iiiparbox{#1}{#2}}%
4703 {\@iiiparbox{#1}{#2}[#1]}}
4704 \let\@parboxto\@empty
4705 \long\def\@iiiparbox#1#2[#3]#4#5{%
4708 \setlength\@tempdima{#4}%
4709 \@begin@tempboxa\vbox{\hsize\@tempdima\@parboxrestore#5\@@par}%
4711 \setlength\@tempdimb{#2}%
4712 \def\@parboxto{to\@tempdimb}%
4716 \else\ifmmode\vcenter
4717 \else\@pboxswtrue $\vcenter
4719 \@parboxto{\let\hss\vss\let\unhbox\unvbox
4720 \csname bm@#3\endcsname}%
4721 \if@pboxsw \m@th$\fi
4723 \def\@arrayparboxrestore{%
4724 \let\if@nobreak\iffalse
4725 \let\if@noskipsec\iffalse
4728 \let\'\@acci\let\`\@accii\let\=\@acciii
4729 \parindent\z@ \parskip\z@skip
4732 \@totalleftmargin\z@
4733 \leftskip\z@skip \rightskip\z@skip \@rightskip\z@skip
4734 \parfillskip\@flushglue \lineskip\normallineskip
4735 \baselineskip\normalbaselineskip
4737 \def\@parboxrestore{\@arrayparboxrestore\let\\\@normalcr}
4738 \def\@minipagefalse{\global\let\if@minipage\iffalse}
4739 \def\@minipagetrue {\global\let\if@minipage\iftrue}
4744 {\@iiiminipage c\relax[s]}}
4745 \def\@iminipage[#1]{%
4748 {\@iiiminipage{#1}\relax[s]}}
4749 \def\@iiminipage#1[#2]{%
4751 {\@iiiminipage{#1}{#2}}%
4752 {\@iiiminipage{#1}{#2}[#1]}}
4753 \def\@iiiminipage#1#2[#3]#4{%
4756 \setlength\@tempdima{#4}%
4757 \def\@mpargs{{#1}{#2}[#3]{#4}}%
4758 \setbox\@tempboxa\vbox\bgroup
4761 \textwidth\hsize \columnwidth\hsize
4763 \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
4764 \let\@footnotetext\@mpfootnotetext
4765 \let\@listdepth\@mplistdepth \@mplistdepth\z@
4768 \let\@minipagerestore=\relax
4772 \ifvoid\@mpfootins\else
4773 \vskip\skip\@mpfootins
4778 \@minipagefalse %% added 24 May 89
4781 \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
4782 \newcount\@mplistdepth
4783 \newinsert\@mpfootins
4784 \long\def\@mpfootnotetext#1{%
4785 \global\setbox\@mpfootins\vbox{%
4787 \reset@font\footnotesize
4790 \protected@edef\@currentlabel
4791 {\csname p@mpfootnote\endcsname\@thefnmark}%
4794 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
4797 \def\rule{\@ifnextchar[\@rule{\@rule[\z@]}}
4798 \def\@rule[#1]#2#3{%
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
4809 \ifmmode\@@underline{#1}%
4810 \else $\@@underline{\hbox{#1}}\m@th$\relax\fi}
4813 \@ifnextchar[{\@rsbox{#1}}{\@irsbox{#1}[]}}
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
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@
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
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
4850 \chardef\@maxtab=\the\allocationnumber
4851 \dimen\@firsttab=0pt
4852 \newcount\@nxttabmar
4853 \newcount\@curtabmar
4862 \ifnum \@nxttabmar >\@hightab
4864 \global\@nxttabmar \@hightab
4866 \global\@curtabmar \@nxttabmar
4867 \global\@curtab \@curtabmar
4868 \global\setbox\@curline \hbox {}%
4875 \global\@rjfieldfalse
4876 \@tempdima\@totalleftmargin
4877 \advance\@tempdima\linewidth
4879 \@itemfudge\hskip\dimen\@curtabmar
4885 \hbox{\@itemfudge\hskip\dimen\@curtabmar\box\@curline}%
4888 \global\setbox\@curfield\hbox\bgroup\color@begingroup}
4890 \color@endgroup\egroup}
4892 \global\setbox\@curfield\hbox\bgroup\color@begingroup
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
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}
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
4928 \global\advance\@curtab \@ne
4930 \@latex@error{Tab overflow}\@ehd
4932 \dimen\@curtab \dimen\@curtabmar
4933 \advance\dimen\@curtab \wd\@curline
4936 \gdef\@ltab{\@ifatmargin\ifnum\@curtabmar >\@firsttab
4937 \global\advance\@curtab \m@ne \global\advance\@curtabmar\m@ne\else
4939 \@latex@error{\string\<\space in mid line}\@ehd\fi\ignorespaces}
4941 \ifnum\@nxttabmar<\@hightab
4942 \global\advance\@nxttabmar\@ne
4948 \ifnum\@nxttabmar>\@firsttab
4949 \global\advance\@nxttabmar\m@ne
4955 \@stopfield\@addfield\global\@rjfieldtrue\@startfield\ignorespaces}
4958 \global\setbox\@curline\hbox{%
4960 \hskip-\wd\@curfield \hskip-\tabbingsep
4966 \@stopfield\@addfield\global\advance\@tabpush \@ne \begingroup
4968 \gdef\poptabs{\@stopfield\@addfield
4969 \ifnum \@tabpush >\z@
4971 \global\advance\@tabpush \m@ne
4972 \ifnum \@curtab >\@hightab
4973 \global \@curtab \@hightab
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]}}
4997 \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
4999 \setbox\@arstrutbox\hbox{%
5000 \vrule \@height\arraystretch\ht\strutbox
5001 \@depth\arraystretch \dp\strutbox
5005 \ialign \noexpand\@halignto
5006 \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}%
5007 \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
5008 \let\tabularnewline\\%
5011 \set@typeset@protect
5012 \lineskip\z@skip\baselineskip\z@skip
5013 \ifhmode \@preamerr\z@ \@@par\fi
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
5023 {\ifnum0=`}\fi\@ifstar\@xtabularcr\@xtabularcr}
5024 \def\@xtabularcr{\@ifnextchar[\@argtabularcr{\ifnum0=`{\fi}\cr}}
5025 \def\@argtabularcr[#1]{%
5028 \unskip\@xargarraycr{#1}%
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
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}%
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
5050 \let\reserved@b\@xexnoop
5052 \expandafter\reserved@b\reserved@a #4\@@}
5058 \edef\@preamble{\@preamble &}%
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
5068 \let\@startpbox\relax\let\@endpbox\relax
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
5082 \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil
5083 \or \hfil$\relax\@sharp$\fi}}
5085 \ifcase\@lastchclass
5096 \@firstampfalse\@acol
5101 \hfil\ignorespaces\@sharp\unskip\hfil
5103 \hskip1sp\ignorespaces\@sharp\unskip\hfil
5105 \hfil\hskip1sp\ignorespaces\@sharp\unskip
5108 \ifcase\@lastchclass
5111 \@addtopreamble{\hskip \doublerulesep}\@arrayrule
5122 \ifcase\@lastchclass
5124 \@addtopreamble{\hskip .5\arrayrulewidth}%
5126 \def\@classiii{\ifcase \@lastchclass \@acolampacol \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
5134 \def\@addtopreamble#1{\edef\@preamble{\@preamble #1}}
5136 \newcount\@lastchclass
5138 \newdimen\arraycolsep
5140 \newdimen\arrayrulewidth
5141 \newdimen\doublerulesep
5142 \def\arraystretch{1} % Default value.
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
5155 \if #1p3 \else \z@ \@preamerr 0\fi
5156 \fi \fi \fi \fi \fi \fi
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
5166 \def\vline{\vrule \@width \arrayrulewidth}
5167 \def\cline#1{\@cline#1\@nil}
5168 \def\@cline#1-#2\@nil{%
5171 \advance\@multispan\m@ne
5172 \ifnum\@multicnt=\@ne\@firstofone{&\omit}\fi
5174 \advance\@multicnt-#1%
5175 \advance\@multispan\@ne
5176 \leaders\hrule\@height\arrayrulewidth\hfill
5178 \noalign{\vskip-\arrayrulewidth}}
5179 \def\multispan{\omit\@multispan}
5182 \loop\ifnum\@multicnt>\@ne \sp@n\repeat}
5183 \def\sp@n{\span\omit\advance\@multicnt\m@ne}
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
5196 \long\gdef\picture#1{\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
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}%
5213 \gdef\multiput(#1,#2)#3{%
5214 \@xdim #1\unitlength
5215 \@ydim #2\unitlength
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}%
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]{%
5234 \baselineskip-\p@\lineskip 3\p@
5235 \let\mb@l\hss\let\mb@r\hss
5236 \expandafter\let\csname mb@#1\endcsname\relax
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}
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
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{.}%
5262 \ifnum \@yarg >\z@ \let\@upordown\raise \@clnht\z@
5263 \else\let\@upordown\lower \@clnht \ht\@linechar\fi
5264 \@clnwd \wd\@linechar
5266 \hskip -\wd\@linechar \def\reserved@a{\hskip -2\wd\@linechar}%
5268 \let\reserved@a\relax
5270 \@whiledim \@clnwd <\@linelen \do
5271 {\@upordown\@clnht\copy\@linechar
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@
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
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
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
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
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
5342 \gdef\@vline{\ifnum \@yarg <\z@ \@downline \else \@upline\fi}
5344 \hb@xt@\z@{\hskip -\@halfwidth \vrule \@width \@wholewidth
5345 \@height \@linelen \@depth \z@\hss}}
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
5354 \gdef\dashbox#1(#2,#3){\leavevmode\hb@xt@\z@{\baselineskip \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@@
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@
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@@
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)}
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
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
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}%
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}%
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
5459 \gdef\circle{\@inmatherr\circle\@ifstar\@dot\@circle}
5461 \begingroup \boxmaxdepth \maxdimen \@tempdimb #1\unitlength
5462 \ifdim \@tempdimb >15.5\p@ \@getcirc\@tempdimb
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}
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){%
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
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{%
5532 \vrule \@height\@halfwidth
5534 \@width \@wholewidth}%
5537 \@whilenum{\count@<\@tempcnta}\do
5538 {\@xdim\count@\@ovxx
5539 \advance\@xdim\@ovdx
5540 \divide\@xdim\@multicnt
5541 \multiply\@xdim\count@
5543 \advance\@ydim\@ovdy
5544 \divide\@ydim\@multicnt
5545 \multiply\@ydim\count@
5547 \hb@xt@\z@{\kern\@xdim
5548 \unhcopy\@tempboxa\hss}%
5549 \advance\count@\@ne}}}
5550 %%% From File: ltthm.dtx
5552 \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
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
5561 \global\@namedef{#1}{\@thm{#1}{#2}}%
5562 \global\@namedef{end#1}{\@endtheorem}}}
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}}}}
5576 \refstepcounter{#1}%
5577 \@ifnextchar[{\@ythm{#1}{#2}}{\@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
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}}
5597 \def\thanks#1{\footnotemark
5598 \protected@xdef\@thanks{\@thanks
5599 \protect\footnotetext[\the\c@footnote]{#1}}%
5602 \def\and{% % \begin{tabular}
5604 \hskip 1em \@plus.17fil%
5605 \begin{tabular}[t]{c}}% % \end{tabular}
5606 \message{sectioning,}
5607 \newcount\@secpenalty
5609 \newif\if@noskipsec \@noskipsectrue
5610 \def\@startsection#1#2#3#4#5#6{%
5611 \if@noskipsec \leavevmode \fi
5613 \@tempskipa #4\relax
5615 \ifdim \@tempskipa <\z@
5616 \@tempskipa -\@tempskipa \@afterindentfalse
5621 \addpenalty\@secpenalty\addvspace\@tempskipa
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
5630 \refstepcounter{#1}%
5631 \protected@edef\@svsec{\@seccntformat{#1}\relax}%
5633 \@tempskipa #5\relax
5634 \ifdim \@tempskipa>\z@
5637 \@hangfrom{\hskip #3\relax\@svsec}%
5638 \interlinepenalty \@M #8\@@par}%
5640 \csname #1mark\endcsname{#7}%
5641 \addcontentsline{toc}{#1}{%
5642 \ifnum #2>\c@secnumdepth \else
5643 \protect\numberline{\csname the#1\endcsname}%
5650 \csname #1mark\endcsname{#7}%
5651 \addcontentsline{toc}{#1}{%
5652 \ifnum #2>\c@secnumdepth \else
5653 \protect\numberline{\csname the#1\endcsname}%
5659 \@tempskipa #1\relax
5660 \ifdim \@tempskipa>\z@
5666 \global\@noskipsectrue
5669 \global\@noskipsecfalse
5670 {\setbox\z@\lastbox}%
5672 \begingroup \@svsechd \endgroup
5674 \@tempskipa #1\relax
5677 \clubpenalty \@clubpenalty
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@
5688 \@hangfrom{\hskip #1}%
5689 \interlinepenalty \@M #5\@@par}%
5692 \def\@svsechd{#4{\hskip #1\relax #5}}%
5695 \newif\if@afterindent \@afterindenttrue
5696 \def\@afterheading{%
5702 \if@afterindent \else
5703 {\setbox\z@\lastbox}%
5706 \clubpenalty \@clubpenalty
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
5723 \@input{\jobname.#1}%
5725 \expandafter\newwrite\csname tf@#1\endcsname
5726 \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
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
5745 \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
5747 \leaders\hbox{$\m@th
5748 \mkern \@dotsep mu\hbox{.}\mkern \@dotsep
5751 \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5}%
5754 \def\numberline#1{\hb@xt@\@tempdima{#1\hfil}}
5755 %%% From File: ltfloat.dtx
5757 \newcount\@floatpenalty
5759 \ifx\@captype\@undefined
5760 \@latex@error{\noexpand\caption outside float}\@ehd
5761 \expandafter\@gobble
5763 \refstepcounter\@captype
5764 \expandafter\@firstofone
5766 {\@dblarg{\@caption\@captype}}%
5768 \long\def\@caption#1[#2]#3{%
5770 \addcontentsline{\csname ext@#1\endcsname}{#1}%
5771 {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
5778 \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
5783 {\edef\reserved@a{\noexpand\@xfloat{#1}[\csname fps@#1\endcsname]}%
5786 \if@twocolumn\let\reserved@a\@dbflt\else\let\reserved@a\@float\fi
5788 \def\@xfloat #1[#2]{%
5790 \def \@captype {#1}%
5792 \@onelevel@sanitize \@fps
5793 \def \reserved@b {!}%
5794 \ifx \reserved@b \@fps
5803 \@floatpenalty -\@Mii
5805 \@floatpenalty-\@Miii
5808 \@parmoderr\@floatpenalty\z@
5810 \@next\@currbox\@freelist
5813 \expandafter \@tfor \expandafter \reserved@a
5814 \expandafter :\expandafter =\@fps
5820 \advance \@tempcnta \@ne
5833 \ifnum \@tempcnta>15
5834 \advance\@tempcnta -\sixt@@n\relax
5838 \@tempcntb \csname ftype@\@captype \endcsname
5839 \multiply \@tempcntb \@xxxii
5840 \advance \@tempcnta \@tempcntb
5841 \global \count\@currbox \@tempcnta
5845 \global \setbox\@currbox
5853 \def \@floatboxreset {%
5860 \let\outer@nobreak\@nobreaktrue
5864 \def \@setminipage{%
5866 \everypar{\@minipagefalse\everypar{}}%
5870 \ifnum\@floatpenalty <\z@
5872 \@cons\@currlist\@currbox
5873 \ifnum\@floatpenalty <-\@Mii
5875 \@tempdima\prevdepth
5877 \prevdepth\@tempdima
5878 \penalty\@floatpenalty
5880 \vadjust{\penalty -\@Miv \vbox{}\penalty\@floatpenalty}\@Esphack
5887 \ifnum\@floatpenalty <\z@
5889 \@cons\@dbldeferlist\@currbox
5891 \ifnum \@floatpenalty =-\@Mii \@Esphack\fi
5896 \def \@endfloatbox{%
5897 \par\vskip\z@skip %% \par\vskip\z@ added 15 Dec 87
5900 \egroup %% end of vbox
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
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
5927 \advance \@textmin -\@dbltoproom
5928 \@fpmin \dblfloatpagefraction\textheight
5936 \@floatpenalty -\@Mii
5938 \@floatpenalty-\@Miii
5944 \@next\@currbox\@freelist{}{}%
5945 \@next\@marbox\@freelist{\global\count\@marbox\m@ne}%
5947 \@fltovf\def\@currbox{\@tempboxa}\def\@marbox{\@tempboxa}}%
5949 \@ifnextchar [\@xmpar\@ympar}
5950 \long\def\@xmpar[#1]#2{%
5951 \@savemarbox\@marbox{#1}%
5952 \@savemarbox\@currbox{#2}%
5954 \long\def\@ympar#1{%
5955 \@savemarbox\@marbox{#1}%
5956 \global\setbox\@currbox\copy\@marbox
5958 \long\def \@savemarbox #1#2{%
5962 \hsize\marginparwidth
5971 \def \@marginparreset {%
5977 \ifnum\@floatpenalty <\z@\@cons\@currlist\@marbox\fi
5985 \def\reversemarginpar{\global\@mparbottom\z@ \@reversemargintrue}
5986 \def\normalmarginpar{\global\@mparbottom\z@ \@reversemarginfalse}
5987 \message{footnotes,}
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]{%
6009 \csname c@\@mpfn\endcsname #1\relax
6010 \unrestored@protected@xdef\@thefnmark{\thempfn}%
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
6024 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
6027 \@ifnextchar[\@xfootnotemark
6028 {\stepcounter{footnote}%
6029 \protected@xdef\@thefnmark{\thefootnote}%
6031 \def\@xfootnotemark[#1]{%
6033 \c@footnote #1\relax
6034 \unrestored@protected@xdef\@thefnmark{\thefootnote}%
6037 \def\@footnotemark{%
6039 \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
6041 \ifhmode\spacefactor\@x@sf\fi
6044 \@ifnextchar [\@xfootnotenext
6045 {\protected@xdef\@thefnmark{\thempfn}%
6047 \def\@xfootnotenext[#1]{%
6049 \csname c@\@mpfn\endcsname #1\relax
6050 \unrestored@protected@xdef\@thefnmark{\thempfn}%
6053 \def\@mpfn{footnote}
6054 \def\thempfn{\thefootnote}
6055 %%% From File: ltidxglo.dtx
6058 \newwrite\@indexfile
6059 \immediate\openout\@indexfile=\jobname.idx
6060 \def\index{\@bsphack\begingroup
6063 {Writing index file \jobname.idx}%
6064 \let\makeindex\@empty
6066 \@onlypreamble\makeindex
6068 \protected@write\@indexfile{}%
6069 {\string\indexentry{#1}{\thepage}}%
6072 \def\index{\@bsphack\begingroup \@sanitize\@index}
6073 \def\@index#1{\endgroup\@esphack}
6075 \newwrite\@glossaryfile
6076 \immediate\openout\@glossaryfile=\jobname.glo
6077 \def\glossary{\@bsphack\begingroup
6079 \@wrglossary}\typeout
6080 {Writing glossary file \jobname.glo }%
6081 \let\makeglossary\@empty
6083 \@onlypreamble\makeglossary
6084 \def\@wrglossary#1{%
6085 \protected@write\@glossaryfile{}%
6086 {\string\glossaryentry{#1}{\thepage}}%
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
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
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 ?}%
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{%
6118 \immediate\write\@auxout{\string\bibdata{#1}}%
6120 \@input@{\jobname.bbl}}
6121 \def\bibliographystyle#1{%
6122 \ifx\@begindocumenthook\@undefined\else
6123 \expandafter\AtBeginDocument
6126 \immediate\write\@auxout{\string\bibstyle{#1}}%
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}}{}}%
6136 \@latex@error{Cannot be used in preamble}\@eha
6137 % \AtBeginDocument{\nocite{#1}}
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
6146 \@ifundefined{ps@#1}%
6149 \def\thispagestyle#1{%
6150 \@ifundefined{ps@#1}%
6152 {\global\@specialpagetrue\gdef\@specialstyle{#1}}}
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
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}%
6168 \if@nobreak\ifvmode\nobreak\fi\fi}
6171 \let\label\relax \let\index\relax \let\glossary\relax
6172 \expandafter\@markright\@themark {#1}%
6173 \@temptokena \expandafter{\@themark}%
6174 \mark{\the\@temptokena}%
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}
6183 \def\@textbottom{\vskip \z@ \@plus.0001fil}\let\@texttop\relax}
6185 \let\@textbottom\relax \let\@texttop\relax}
6188 \emergencystretch 3em%
6191 \def\sloppypar{\par\sloppy}
6192 \def\endsloppypar{\par}
6194 \emergencystretch\z@
6199 %%% From File: ltoutput.dtx
6200 \expandafter\let\csname ver@autoout1.sty\endcsname\fmtversion
6202 \maxdeadcycles = 100
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}
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@
6215 \divide\@tempcntb\@tempcnta
6216 \ifodd\@tempcntb \@testtrue\fi
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}
6246 \gdef\@dbldeferlist{}
6248 \newdimen\oddsidemargin
6249 \newdimen\evensidemargin
6250 \let\@themargin=\oddsidemargin
6251 \newdimen\headheight
6254 \newdimen\textheight
6256 \newdimen\columnwidth
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}%
6268 \@maxdepth = \maxdepth
6269 \newdimen\paperheight
6270 \newdimen\paperwidth
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
6283 \newcount\@dbltopnum
6284 \newdimen\@dbltoproom
6294 \newdimen\@mparbottom \@mparbottom\z@
6299 \def\@thehead{\@oddhead} % initialization
6300 \def\@thefoot{\@oddfoot}
6303 \ifnum \@dbltopnum =\m@ne
6304 \ifdim \pagetotal <\topskip
6314 \def\cleardoublepage{\clearpage\if@twoside \ifodd\c@page\else
6315 \hbox{}\newpage\if@twocolumn\hbox{}\newpage\fi\fi\fi}
6318 \global\columnwidth\textwidth
6319 \global\hsize\columnwidth
6320 \global\linewidth\columnwidth
6321 \global\@twocolumnfalse
6326 \ifx \@nodocument\relax
6328 \global \@noskipsecfalse
6333 \global \@inlabelfalse
6335 \if@nobreak \@nobreakfalse \everypar{}\fi
6339 \def \@emptycol {\vbox{}\penalty -\@M}
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
6350 \@ifnextchar [\@topnewpage\@floatplacement
6352 \long\def \@topnewpage [#1]{%
6354 \@next\@currbox\@freelist{}{}%
6355 \global \setbox\@currbox
6363 \vskip -\dbltextfloatsep
6366 \ifdim \ht\@currbox>\textheight
6367 \ht\@currbox \textheight
6369 \global \count\@currbox \tw@
6370 \@tempdima -\ht\@currbox
6371 \advance \@tempdima -\dbltextfloatsep
6372 \global \advance \@colht \@tempdima
6373 \ifx \@dbltoplist \@empty
6375 \@latexerr{Float(s) lost}\@ehb
6376 \let \@dbltoplist \@empty
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}%
6389 \global \vsize \@colht
6390 \global \@colroom \@colht
6396 \ifnum \outputpenalty<-\@M
6402 \@whilesw \if@fcolmade \fi
6404 \@opcol\@startcolumn}%
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}%
6413 \global \vsize \@colroom
6416 \global \vsize \@colroom
6419 \global \vsize \maxdimen
6422 \gdef\@specialoutput{%
6423 \ifnum \outputpenalty>-\@Mii
6426 \ifnum \outputpenalty<-\@Miii
6427 \ifnum \outputpenalty<-\@MM \deadcycles \z@ \fi
6428 \global \setbox\@holdpg \vbox {\unvbox\@cclv}%
6430 \global \setbox\@holdpg \vbox{%
6433 \setbox\@tempboxa \lastbox
6436 \@pagedp \dp\@holdpg
6437 \@pageht \ht\@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
6448 \ifdim \wd\@kludgeins=\z@
6449 \advance \@pageht \ht\@kludgeins
6459 \ifnum \outputpenalty<\z@
6463 \addpenalty \interlinepenalty
6469 \def \@doclearpage {%
6472 {\setbox \@tempboxa \box \@kludgeins}%
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
6482 \@latexerr{Float(s) lost}\@ehb
6483 \global \let \@currlist \@empty
6485 \@makefcolumn\@deferlist
6486 \@whilesw\if@fcolmade \fi{\@opcol\@makefcolumn\@deferlist}%
6489 \xdef\@dbldeferlist{\@dbltoplist\@dbldeferlist}%
6490 \global \let \@dbltoplist \@empty
6491 \global \@colht \textheight
6494 \@makefcolumn\@dbldeferlist
6495 \@whilesw\if@fcolmade \fi{\@outputpage
6496 \@makefcolumn\@dbldeferlist}%
6503 \setbox\@cclv\vbox{\box\@cclv\vfil}%
6514 \global \@mparbottom \z@ \global \@textfloatsheight \z@
6519 \setbox\@outputbox \box\@cclv
6521 \setbox\@outputbox \vbox {%
6522 \boxmaxdepth \@maxdepth
6525 \vskip \skip\footins
6534 \xdef\@freelist{\@freelist\@midlist}%
6535 \global \let \@midlist \@empty
6540 \setbox\@outputbox \vbox to\@colht {%
6542 \dimen@ \dp\@outputbox
6548 \global \maxdepth \@maxdepth
6551 \ifvoid\footins\else\insert\footins{\unvbox\footins}\fi
6552 \ifvbox\@kludgeins\insert\@kludgeins
6553 {\unvbox\@kludgeins}\fi
6555 \gdef \@makespecialcolbox {%
6556 \setbox\@outputbox \vbox {%
6558 \dimen@ \dp\@outputbox
6563 \ifdim \wd\@kludgeins>\z@
6564 \advance \@tempdima -\ht\@outputbox
6565 \advance \@tempdima \pageshrink
6566 \setbox\@outputbox \vbox to \@colht {%
6572 \advance \@tempdima -\ht\@kludgeins
6573 \setbox \@outputbox \vbox to \@colht {%
6574 \vbox to \@tempdima {%
6579 {\setbox \@tempboxa \box \@kludgeins}%
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
6587 This may be a bug in a package file
6591 \obeylines\obeyspaces%
6593 \gdef\@resetactivechars{%
6594 \def^^M{\@activechar@info{EOL}\space}%
6595 \def {\@activechar@info{space}\space}%
6596 \let'\active@math@prime}%
6599 \begingroup % the \endgroup is put in by \aftergroup
6600 \let \protect \noexpand
6602 \global\let\@@if@newlist\if@newlist
6603 \global\@newlistfalse
6606 \set@typeset@protect
6607 \aftergroup \endgroup
6608 \aftergroup \set@typeset@protect
6609 % correct? or just restore by ending
6612 \global\@specialpagefalse\@nameuse{ps@\@specialstyle}%
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
6626 \let\glossary\@gobble
6627 \baselineskip\z@skip \lineskip\z@skip \lineskiplimit\z@
6630 \moveright\@themargin \vbox {%
6631 \setbox\@tempboxa \vbox to\headheight{%
6635 \hb@xt@\textwidth{\@thehead}%
6642 \baselineskip \footskip
6645 \hb@xt@\textwidth{\@thefoot}%
6649 \global\let\if@newlist\@@if@newlist
6650 \global \@colht \textheight
6652 \let\firstmark\botmark
6655 \unvbox \@begindvibox
6656 \global\let \@begindvi \@empty
6658 \def \@combinefloats {%
6659 \ifx \@toplist\@empty \else \@cflt \fi
6660 \ifx \@botlist\@empty \else \@cflb \fi
6663 \let \@elt \@comflelt
6664 \setbox\@tempboxa \vbox{}%
6666 \setbox\@outputbox \vbox{%
6667 \boxmaxdepth \maxdepth
6671 \vskip \textfloatsep
6675 \xdef\@freelist{\@freelist\@toplist}%
6676 \global\let\@toplist\@empty
6680 \setbox\@tempboxa \vbox{}%
6682 \setbox\@outputbox \vbox{%
6684 \vskip \textfloatsep
6690 \xdef\@freelist{\@freelist\@botlist}%
6691 \global \let \@botlist\@empty
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
6700 \setbox\@tempboxa \vbox{}%
6701 \let \@elt \@comdblflelt
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
6712 \vskip \dbltextfloatsep
6717 \def \@startcolumn {%
6718 \global \@colroom \@colht
6719 \@tryfcolumn \@deferlist
6723 \let \reserved@b \@deferlist
6724 \global \let \@deferlist \@empty
6725 \let \@elt \@scolelt
6730 \def \@startdblcolumn {%
6731 \@tryfcolumn \@dbldeferlist
6735 \let \reserved@b \@dbldeferlist
6736 \global \let \@dbldeferlist \@empty
6737 \let \@elt \@sdblcolelt
6742 \def \@tryfcolumn #1{%
6743 \global \@fcolmadefalse
6747 \global \let \@failedlist \@empty
6749 \let \@elt \@xtryfc \@trylist
6756 \def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}
6757 \def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}
6759 \global\setbox\@outputbox\vbox{}%
6762 \global\setbox\@outputbox \vbox to\@colht{%
6768 \xdef #1{\@failedlist\@flfail}%
6769 \xdef\@freelist{\@freelist\@flsucceed}}
6771 \global\setbox\@outputbox\vbox{%
6776 \@next\reserved@a\@trylist{}{}%
6777 \@currtype \count #1%
6778 \divide\@currtype\@xxxii
6779 \multiply\@currtype\@xxxii
6780 \@bitor \@currtype \@failedlist
6782 \ifdim \ht #1>\@colht
6786 \@cons\@failedlist #1%
6792 \gdef\@flsucceed{\@elt #1}%
6793 \global\let\@flfail\@empty
6797 \ifdim \@tempdima >\@fpmin
6798 \global\@fcolmadetrue
6800 \@cons\@failedlist #1%
6807 \@tempcnta \count#1%
6808 \divide\@tempcnta\@xxxii
6809 \multiply\@tempcnta\@xxxii
6810 \@bitor \@tempcnta {\@failedlist \@flfail}%
6812 \@tempdimb\@tempdima
6813 \advance\@tempdimb \ht#1%
6814 \advance\@tempdimb\@fpsep
6815 \ifdim \@tempdimb >\@colht
6821 \@cons\@flsucceed #1%
6822 \@tempdima\@tempdimb
6830 \@flcheckspace \@botroom \@botlist
6832 \global \maxdepth \z@
6833 \@flupdates \@botnum \@botroom \@botlist
6839 \def \@addtotoporbot {%
6845 \@flcheckspace \@toproom \@toplist
6847 \@bitor\@currtype{\@midlist\@botlist}%
6850 \@flupdates \@topnum \@toproom \@toplist
6861 \def \@addtocurcol {%
6863 \@setfloattypecounts
6869 \advance \@textmin \@textfloatsheight
6870 \@reqcolroom \@pageht
6871 \ifdim \@textmin>\@reqcolroom
6872 \@reqcolroom \@textmin
6874 \advance \@reqcolroom \ht\@currbox
6875 \ifdim \@colroom>\@reqcolroom
6878 \@bitor\@currtype\@deferlist
6881 \@bitor\@currtype\@botlist
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
6897 \addpenalty \interlinepenalty
6901 \penalty\interlinepenalty
6903 \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
6921 \@cons\@deferlist\@currbox
6924 \def\@addtonextcol{%
6927 \@setfloattypecounts
6933 \@reqcolroom \ht\@currbox
6934 \advance \@reqcolroom \@textmin
6935 \ifdim \@colroom>\@reqcolroom
6938 \@bitor\@currtype\@deferlist
6949 \@cons\@deferlist\@currbox
6956 \@setfloattypecounts
6959 \@flsetnum \@dbltopnum
6960 \ifnum \@dbltopnum>\z@
6962 \ifdim \@dbltoproom>\ht\@currbox
6965 \ifnum \@fpstype<\sixt@@n
6966 \advance \@dbltoproom \@textmin
6967 \ifdim \@dbltoproom>\ht\@currbox
6970 \advance \@dbltoproom -\@textmin
6974 \@bitor \@currtype \@dbldeferlist
6977 \@tempdima -\ht\@currbox
6979 -\ifx \@dbltoplist\@empty \dbltextfloatsep \else
6981 \global \advance \@dbltoproom \@tempdima
6982 \global \advance \@colht \@tempdima
6983 \global \advance \@dbltopnum \m@ne
6984 \@cons \@dbltoplist \@currbox
6992 \@cons\@dbldeferlist\@currbox
6996 \def\@addmarginpar{\@next\@marbox\@currlist{\@cons\@freelist\@marbox
6997 \@cons\@freelist\@currbox}\@latexbug\@tempcnta\@ne
6999 \if@firstcolumn \@tempcnta\m@ne \fi
7002 \ifodd\c@page \else\@tempcnta\m@ne \fi
7004 \if@reversemargin \@tempcnta -\@tempcnta \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}%
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
7023 \global \ht\@marbox \z@
7024 \global \dp\@marbox \z@
7028 {\ifnum \@tempcnta >\z@
7029 \hskip\columnwidth \hskip\marginparsep
7031 \hskip -\marginparsep \hskip -\marginparwidth
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 {%
7042 \@enlargepage{\hbox{\kern\p@}}}%
7044 \@enlargepage\@empty}%
7046 \gdef\@enlargepage#1#2{%
7048 \ifdim \@tempskipa>.5\maxdimen
7049 \@latexerr{Suggested\space extra\space height\space
7050 (\the\@tempskipa)\space dangerously\space
7053 \ifdim \vsize<.5\maxdimen
7055 \insert\@kludgeins{#1\vskip-\@tempskipa}%
7058 \@latexerr{Page\space height\space already\space
7059 too\space large}\@eha
7063 \def \suppressfloats {%
7066 {\global \@colnum \z@}%
7068 \def \@flstop [#1]{%
7070 \global \@topnum \z@
7073 \global \@botnum \z@
7077 \newdimen \@reqcolroom
7078 \newdimen \@textfloatsheight
7079 \def \@fpsadddefault {%
7080 \edef \@fps {\@fps\csname fps@\@captype \endcsname}%
7082 No positions in optional float specifier.\MessageBreak
7083 Default added (so using `\@fps')}%
7085 \def \@setfloattypecounts {%
7086 \@currtype \count\@currbox
7087 \@fpstype \count\@currbox
7088 \divide\@currtype\@xxxii \multiply\@currtype\@xxxii
7089 \advance \@fpstype -\@currtype
7092 \@boxfpsbit \@currbox
7094 \def \@boxfpsbit #1#2{%
7095 \@tempcnta \count#1%
7096 \divide \@tempcnta #2\relax
7099 \@boxfpsbit #18\relax % Really `#1 8' for human readers!
7105 \def \@setfpsbit #1{%
7106 \@tempcntb \@tempcnta
7107 \divide \@tempcntb #1\relax
7110 \advance \@tempcnta #1\relax
7114 \let\reserved@a\@empty
7115 \ifnum \@fpstype=\@ne
7116 \def \reserved@a {!}%
7120 \global \advance \count\@currbox \tw@
7121 \@latex@warning@no@line {%
7122 `\reserved@a h' float specifier changed to `\reserved@a ht'}%
7125 \def \@flsetnum #1{%
7126 \ifnum \@fpstype<\sixt@@n
7132 \def \@flsettextmin {%
7133 \ifnum \@fpstype<\sixt@@n
7136 \@textmin \textfraction\@colht
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
7146 \ifnum \@fpstype<\sixt@@n
7152 \def \@flupdates #1#2#3{%
7153 \global \advance #1\m@ne
7154 \global \advance \@colnum \m@ne
7155 \@tempdima -\ht\@currbox
7157 -\ifx #3\@empty \textfloatsep \else \floatsep \fi
7158 \global \advance #2\@tempdima
7159 \global \advance \@colroom \@tempdima
7162 \def\@makefcolumn #1{%
7165 \let \@testfp \@gobble
7169 \def\@outputdblcol{%
7171 \global \@firstcolumnfalse
7172 \global \setbox\@leftcolumn \box\@outputbox
7174 \global \@firstcolumntrue
7175 \setbox\@outputbox \vbox {%
7176 \hb@xt@\textwidth {%
7177 \hb@xt@\columnwidth {%
7178 \box\@leftcolumn \hss}%
7180 {\normalcolor\vrule \@width\columnseprule}%
7182 \hb@xt@\columnwidth {%
7183 \box\@outputbox \hss}%
7191 \@whilesw\if@fcolmade \fi
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}
7212 \newskip\textfloatsep
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@}
7224 \setlength\@fptop{0\p@ \@plus 1fil}
7225 \setlength\@fpsep{8\p@ \@plus 2fil}
7226 \setlength\@fpbot{0\p@ \@plus 1fil}
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
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{%
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}%
7268 \gdef\@currnamestack{#4}}
7269 \@onlypreamble\@p@pfilename
7270 \gdef\@currnamestack{}
7271 \@onlypreamble\@currnamestack
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
7283 \expandafter\@firstoftwo
7285 \@onlypreamble\@ifl@aded
7286 \def\@ifpackagelater{\@ifl@ter\@pkgextension}
7287 \def\@ifclasslater{\@ifl@ter\@clsextension}
7288 \@onlypreamble\@ifpackagelater
7289 \@onlypreamble\@ifclasslater
7291 \expandafter\@ifl@t@r
7292 \csname ver@#2.#1\endcsname}
7293 \@onlypreamble\@ifl@ter
7295 \ifnum\expandafter\@parse@version#1//00\@nil<%
7296 \expandafter\@parse@version#2//00\@nil
7297 \expandafter\@secondoftwo
7299 \expandafter\@firstoftwo
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}%
7317 \@onlypreamble\@if@pti@ns
7318 \def\ProvidesPackage#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'}%
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}%
7332 \wlog{Package: \@gtempa\space#1}%
7334 \@onlypreamble\@pr@videpackage
7335 \let\ProvidesClass\ProvidesPackage
7336 \@onlypreamble\ProvidesClass
7337 \def\ProvidesFile#1{%
7340 \ifnum \endlinechar<256 %
7341 \ifnum \endlinechar>\m@ne
7342 \catcode\endlinechar 10 %
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}%
7364 \expandafter\edef\csname ds@#1\endcsname{\the\toks@}}
7365 \long\def\@defdefault@ds#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
7377 \@onlypreamble\OptionNotUsed
7378 \def\ProcessOptions{%
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
7391 \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
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,}%
7403 \expandafter\let\csname ds@\CurrentOption\endcsname\@empty
7408 \@onlypreamble\@xprocess@ptions
7409 \def\@process@pti@ns{%
7410 \@for\CurrentOption:=\@curroptions\do{%
7411 \@ifundefined{ds@\CurrentOption}%
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
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
7442 \@onlypreamble\documentstyle
7443 \def\RequirePackage{%
7444 \@fileswithoptions\@pkgextension}
7445 \@onlypreamble\RequirePackage
7447 \ifx\@currext\@pkgextension
7449 {\noexpand\LoadClass in package file}%
7450 {You may only use \noexpand\LoadClass in a class file.}%
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
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#{%
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}.}%
7474 \@onlypreamble\usepackage
7475 \def\NeedsTeXFormat#1{%
7476 \def\reserved@a{#1}%
7477 \ifx\reserved@a\fmtname
7478 \expandafter\@needsformat
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}%
7487 \@onlypreamble\NeedsTeXFormat
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{%
7501 \ifx#2\@empty\else\expandafter\zap@space\fi
7503 \def\@fileswithoptions#1{%
7505 {\@fileswith@ptions#1}%
7506 {\@fileswith@ptions#1[]}}
7507 \@onlypreamble\@fileswithoptions
7508 \def\@fileswith@ptions#1[#2]#3{%
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}%
7518 \@onefilewithoptions#3[#2][#4]#1%
7519 \@documentclasshook}%
7522 \@onefilewithoptions#3[#2][#4]#1}%
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
7530 \expandafter\reserved@b
7532 \edef\reserved@a{\zap@space#3 \@empty}%
7533 \edef\reserved@a{\expandafter\reserved@b\reserved@a,\@nil,}%
7536 \@onlypreamble\@fileswith@pti@ns
7537 \def\@onefilewithoptions#1[#2][#3]#4{%
7539 \xdef\@currname{#1}%
7540 \global\let\@currext#4%
7541 \expandafter\let\csname\@currname.\@currext-h@@k\endcsname\@empty
7542 \let\CurrentOption\@empty
7546 \@ifl@aded\@currext{#1}%
7547 {\@if@ptions\@currext{#1}{#2}{}%
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
7558 \@ptionlist{#1.\@currext},#2\MessageBreak
7559 to your \noexpand\documentclass declaration may fix this.%
7561 Try typing \space <return> \space to proceed.}}}%
7562 {\@pass@ptions\@currext{#2}{#1}%
7564 \let\csname ver@\@currname.\@currext\endcsname\@empty
7566 {\@currname.\@currext}%
7568 {\@missingfileerror\@currname\@currext}%
7569 \let\@unprocessedoptions\@@unprocessedoptions
7570 \csname\@currname.\@currext-h@@k\endcsname
7571 \expandafter\let\csname\@currname.\@currext-h@@k\endcsname
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
7582 \ifx\@currext\@clsextension\let\LoadClass\@twoloadclasserror\fi
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
7593 \let\default@ds\@unknownoptionerror
7595 \global\let\ds@\@empty
7596 \global\let\@declaredoptions\@empty}
7597 \@onlypreamble\@reset@ptions
7598 \ifx\@begindocumenthook\@undefined
7599 \let\@begindocumenthook\@empty
7601 \let\@enddocumenthook\@empty
7602 \long\def\g@addto@macro#1#2{%
7604 \toks@\expandafter{#1#2}%
7605 \xdef#1{\the\toks@}%
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
7616 \ifx\@currext\@clsextension
7621 \@onlypreamble\@cls@pkg
7622 \def\@unknownoptionerror{%
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}%
7637 \@onlypreamble\@unprocessedoptions
7638 \@onlypreamble\@@unprocessedoptions
7639 \def\@badrequireerror#1[#2]#3[#4]{%
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{%
7649 {Two \noexpand\LoadClass commands}%
7650 {You may only use one \noexpand\LoadClass in a class file}}
7651 \@onlypreamble\@twoloadclasserror
7652 \def\@twoclasseserror#1#{%
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}
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 %
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%
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%
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}%
7691 \let\do\@makeother\dospecials%
7692 \edef\E{\@backslashchar end\string{\@currenvir\string}}%
7694 \def\noexpand\reserved@b%
7695 ####1\E####2\E####3\relax}%
7697 \ifx\relax##3\relax%
7698 \immediate\write\reserved@c{##1}%
7700 \edef^^M{\noexpand\end{\@currenvir}}%
7701 \ifx\relax##1\relax%
7703 \@latex@warning{Writing text `##1' before %
7704 \string\end{\@currenvir}\MessageBreak as last line of #1}%
7705 \immediate\write\reserved@c{##1}%
7707 \ifx\relax##2\relax%
7710 Ignoring text `##2' after \string\end{\@currenvir}}%
7714 \catcode`\^^L\active%
7716 \def^^L{\@ifundefined L^^J^^J^^J}%
7717 \catcode`\^^I\active%
7719 \def^^I{\@ifundefined I\space\space}%
7720 \catcode`\^^M\active%
7722 \noexpand\reserved@b##1\E\E\relax}}%
7725 \catcode`|=\catcode`\%
7728 \gdef\@percentchar{%}
7729 \gdef\endfilecontents{|
7730 \immediate\closeout\reserved@c
7732 \ifx##1\@undefined\else
7733 \@latex@warning@no@line{##2 has been converted to Blank ##3e}|
7735 \T\L{Form Feed}{Lin}|
7737 \immediate\write\@unused{}}
7738 \global\let\endfilecontents*\endfilecontents
7739 \@onlypreamble\filecontents
7740 \@onlypreamble\endfilecontents
7741 \@onlypreamble\filecontents*
7742 \@onlypreamble\endfilecontents*
7744 \@onlypreamble\filec@ntents
7745 %%% From File: ltfinal.dtx
7747 \newcount\@lowpenalty
7748 \newcount\@medpenalty
7749 \newcount\@highpenalty
7753 \@maxdepth = \maxdepth
7757 \textheight=.5\maxdimen
7758 \textwidth=\textheight
7760 \def\reserved@a#1#2{%
7766 \ifnum\@tempcnta>\@tempcntb\else
7767 \reserved@c\@tempcnta
7768 \advance\@tempcnta\@ne
7769 \expandafter\reserved@b
7773 \count@=#1\advance\count@ by -"20
7777 \reserved@a{`\a}{`\z}
7778 \ifnum\inputlineno=\m@ne\else
7779 \reserved@a{"A0}{"BC}
7780 \reserved@a{"E0}{"FF}
7783 \count@=#1\advance\count@ by "20
7788 \reserved@a{`\A}{`\Z}
7789 \ifnum\inputlineno=\m@ne\else
7790 \reserved@a{"80}{"9C}
7791 \reserved@a{"C0}{"DF}
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
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}}%
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
7819 Please check the transcript file
7820 carefully\MessageBreak
7821 and redo the format generation if necessary!
7823 \errhelp{Only stopped, to give you time to
7824 read the above message.}
7826 \def\font@submax{0pt}
7828 \def\reserved@a#1#2{%
7834 \ifnum\@tempcnta>\@tempcntb\else
7835 \reserved@c\@tempcnta
7836 \advance\@tempcnta\@ne
7837 \expandafter\reserved@b
7856 \def\reserved@c#1{\catcode#1=12\relax}
7859 \reserved@a{`\'}{`\?}
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}
7870 \reserved@a{`\^^N}{31}
7873 \count@=#1\advance\count@ by -"20
7877 \reserved@a{`\a}{`\z}
7878 \ifnum\inputlineno=\m@ne\else
7879 \reserved@a{"A0}{"BC}
7880 \reserved@a{"E0}{"FF}
7883 \count@=#1\advance\count@ by "20
7888 \reserved@a{`\A}{`\Z}
7889 \ifnum\inputlineno=\m@ne\else
7890 \reserved@a{"80}{"9C}
7891 \reserved@a{"C0}{"DF}
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
7903 \lccode`\^^[=`\^^[ % oe in OT1
7904 \DeclareRobustCommand{\MakeUppercase}[1]{{%
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}}%
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}}%
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}
7927 \ifx\fmtversion\fmtversion@topatch
7928 \ifx\patch@level\@undefined
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%
7936 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
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
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%
7957 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!^^J}%
7960 \let\fmtversion@topatch\relax
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
7974 \def\@providesfile#1[#2]{%
7976 \expandafter\xdef\csname ver@#1\endcsname{#2}%
7978 \let\@filelist\@gobble
7979 \def\@addtofilelist#1{\xdef\@filelist{\@filelist,#1}}%
7985 %% End of file `latex.ltx'.