home *** CD-ROM | disk | FTP | other *** search
/ Meeting Pearls 3 / Meeting_Pearls_III.iso / Pearls / texmf / inputs / latex / unpacked / latex.ltx < prev    next >
Encoding:
Text File  |  1995-06-21  |  229.6 KB  |  7,339 lines

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