source: Backup NB/Talks/MEMPHYSetal/LAGUNA/EU I3/PhysicsLatex/Laguna-before-xarchiv/revtex4.cls @ 416

Last change on this file since 416 was 416, checked in by campagne, 16 years ago
File size: 150.5 KB
Line 
1%%
2%% This is file `revtex4.cls',
3%% generated with the docstrip utility.
4%%
5%% The original source files were:
6%%
7%% revtex4.dtx  (with options: `class-pre')
8%% ltxutil.dtx  (with options: `ltxutil-krn')
9%% ltxgrid.dtx  (with options: `ltxgrid-krn')
10%% textcase.dtx  (with options: `package')
11%% revtex4.dtx  (with options: `class-pst')
12%%
13%% This file is part of the APS files in the REVTeX 4 distribution.
14%% For the version number, search on the string
15%% Original version by David Carlisle
16%% Modified by Arthur Ogawa (mailto:ogawa@teleport.com)
17%%
18%% Copyright (c) 1999 The American Physical Society.
19%% http://publish.aps.org/revtex4/
20%% mailto:revtex4@aps.org
21%%
22%% See the REVTeX 4 README file for restrictions and more information.
23%%
24\NeedsTeXFormat{LaTeX2e}[1996/12/01]
25\ProvidesClass{revtex4}
26          [2001/08/03 v4.0 (http://publish.aps.org/revtex4/ for documentation)]%FileInfo
27\def\class@name{revtex4}%
28\GenericInfo{}{\space
29 Copyright (c) 2001 The American Physical Society.^^J
30 mailto:revtex@aps.org^^J
31 Licensed under the LPPL:^^Jhttp://www.ctan.org/tex-archive/macros/latex/base/lppl.txt^^J
32 Arthur Ogawa <ogawa@teleport.com>^^J
33 Based on work by David Carlisle <david@dcarlisle.demon.co.uk>%
34 \@gobble
35}%
36\if@compatibility
37  \edef\reserved@a{\errhelp{%
38   Change your \string\documentstyle\space statement to
39   \string\documentclass\space and rerun.
40  }}\reserved@a
41  \errmessage{You cannot run \class@name\space in compatability mode}%
42  \expandafter\@@end
43\fi
44\let\DeclareOption@latex\DeclareOption
45\let\DeclareOption\@gobbletwo
46\let\ProcessOptions@latex\ProcessOptions
47\let\ProcessOptions\@empty
48\let\ProvidesPackage@latex\ProvidesPackage
49\def\ProvidesPackage#1[#2]{%
50 \class@info{Incorporating package #1 [#2].}%
51}%
52\typeout{%
53 ltxutil: portions licensed from W. E. Baxter (web@superscript.com)%
54}%
55\def\class@err#1{\ClassError{\class@name}{#1}\@eha}%
56\def\class@warn#1{\ClassWarningNoLine{\class@name}{#1}}%
57\def\class@info#1{\ClassInfo{\class@name}{#1}}%
58\def\obsolete@command#1{%
59 \class@warn@end{Command \string#1\space is obsolete.^^JPlease remove from your document}%
60 \global\let#1\@empty
61 #1%
62}%
63\def\replace@command#1#2{%
64 \class@warn@end{Command \string#1\space is obsolete;^^JUse \string#2\space instead}%
65 \global\let#1#2%
66 #1%
67}%
68\def\replace@environment#1#2{%
69 \class@warn@end{Environment #1 is obsolete;^^JUse #2 instead}%
70 \glet@environment{#1}{#2}%
71 \@nameuse{#1}%
72}%
73\def\incompatible@package#1{%
74 \@ifpackageloaded{#1}{%
75  \def\@tempa{I cannot continue. You must remove the \string\usepackage\ statement that caused that package to be loaded.}%
76  \ClassError{\class@name}{The #1 package cannot be used with \class@name}%
77  \@tempa\stop
78 }{%
79  \class@info{#1 was not loaded (OK!)}%
80 }%
81}%
82\def\class@warn@end#1{%
83 \gappdef\class@enddocumenthook{\class@warn{#1}}%
84}%
85\AtEndOfClass{%
86 \@ifxundefined\class@name{\def\class@name{Generic Class}}{}%
87}%
88\def\t@{to}%
89\dimendef\dimen@iii\thr@@
90\def\halignt@{\halign\t@}%
91\chardef\f@ur=4\relax
92\chardef\cat@letter=11\relax
93\chardef\other=12\relax
94\def\let@environment#1#2{%
95 \expandafter\let
96 \csname#1\expandafter\endcsname\csname#2\endcsname
97 \expandafter\let
98 \csname end#1\expandafter\endcsname\csname end#2\endcsname
99}%
100\def\glet@environment#1#2{%
101 \global\expandafter\let
102 \csname#1\expandafter\endcsname\csname#2\endcsname
103 \global\expandafter\let
104 \csname end#1\expandafter\endcsname\csname end#2\endcsname
105}%
106\newcommand\tracingplain{%
107 \tracingonline\z@\tracingcommands\z@\tracingstats\z@
108 \tracingpages\z@\tracingoutput\z@\tracinglostchars\@ne
109 \tracingmacros\z@\tracingparagraphs\z@\tracingrestores\z@
110 \showboxbreadth5\showboxdepth3\relax %\errorstopmode
111 }%
112\newcommand\traceoutput{%
113 \appdef\@resetactivechars{\showoutput}%
114}%
115\newcommand\say[1]{\typeout{<\noexpand#1=\meaning#1>}}%
116\newcommand\saythe[1]{\typeout{<\noexpand#1=\the#1>}}%
117\def\fullinterlineskip{\prevdepth\z@}%
118\countdef\count@i\@ne
119\countdef\count@ii\tw@
120\long\def\prepdef#1#2{%
121 \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}%
122 \toks@ii{#2}%
123 \edef#1{\the\toks@ii\the\toks@}%
124}%
125\long\def\appdef#1#2{%
126 \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}%
127 \toks@ii{#2}%
128 \edef#1{\the\toks@\the\toks@ii}%
129}%
130\long\def\gappdef#1#2{%
131 \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}%
132 \toks@ii{#2}%
133 \global\edef#1{\the\toks@\the\toks@ii}%
134}%
135\long\def\appdef@val#1#2{%
136 \appdef#1{{#2}}%
137}%
138\long\def\appdef@e#1#2{%
139 \expandafter\appdef
140 \expandafter#1%
141 \expandafter{#2}%
142}%
143\long\def\appdef@eval#1#2{%
144 \expandafter\appdef@val
145 \expandafter#1%
146 \expandafter{#2}%
147}%
148\toksdef\toks@ii=\tw@
149\long\def\@ifxundefined#1{\@ifx{\undefined#1}}%
150\long\def\@ifnotrelax#1#2#3{\@ifx{\relax#1}{#3}{#2}}%
151\long\def\@argswap#1#2{#2#1}%
152\long\def\@argswap@val#1#2{#2{#1}}%
153\def\@ifxundefined@cs#1{\expandafter\@ifx\expandafter{\csname#1\endcsname\relax}}%
154\def\@boolean#1#2{%
155  \long\def#1{%
156    #2% \if<something>
157      \expandafter\true@sw
158    \else
159      \expandafter\false@sw
160    \fi
161  }%
162}%
163\def\@boole@def#1#{\@boolean{#1}}% Implicit #2
164\def\@booleantrue#1{\let#1\true@sw}%
165\def\@booleanfalse#1{\let#1\false@sw}%
166\@boole@def\@ifx#1{\ifx#1}%
167\@boole@def\@ifx@empty#1{\ifx\@empty#1}%
168\@boole@def\@if@empty#1{\if!#1!}%
169\def\@if@sw#1#2{#1\expandafter\true@sw\else\expandafter\false@sw#2}%
170\@boole@def\@ifdim#1{\ifdim#1}%
171\@boole@def\@ifeof#1{\ifeof#1}%
172\@boole@def\@ifhbox#1{\ifhbox#1}%
173\@boole@def\@ifhmode{\ifhmode}%
174\@boole@def\@ifinner{\ifinner}%
175\@boole@def\@ifmmode{\ifmmode}%
176\@boole@def\@ifnum#1{\ifnum#1}%
177\@boole@def\@ifodd#1{\ifodd#1}%
178\@boole@def\@ifvbox#1{\ifvbox#1}%
179\@boole@def\@ifvmode{\ifvmode}%
180\@boole@def\@ifvoid#1{\ifvoid#1}%
181\long\def\true@sw#1#2{#1}%
182\long\def\false@sw#1#2{#2}%
183\long\def\loopuntil#1{#1{}{\loopuntil{#1}}}%
184\long\def\loopwhile#1{#1{\loopwhile{#1}}{}}%
185\def\@provide#1{%
186 \@ifx{\undefined#1}{\true@sw}{\@ifx{\relax#1}{\true@sw}{\false@sw}}%
187 {\def#1}{\def\j@nk}%
188}%
189\prepdef\document{%
190 \endgroup
191 \init@documenthook
192 \set@typesize@hook
193 \normalsize
194 \set@pica@hook
195 \true@sw{}%
196}%
197\def\init@documenthook{}%
198\AtBeginDocument{%
199 \class@documenthook
200}%
201\AtEndDocument{%
202 \class@enddocumenthook
203}%
204\def\class@documenthook{}%
205\def\class@enddocumenthook{}%
206\def\set@typesize@hook{}%
207\def\set@pica@hook{}%
208\def\enddocument{%
209 \@enddocumenthook
210 \@checkend{document}%
211 \clear@document
212 \check@aux
213 \deadcycles\z@
214 \@@end
215}%
216\def\clear@document{\clearpage}%
217\def\check@aux{\do@check@aux}%
218\def\do@check@aux{%
219 \@if@sw\if@filesw\fi{%
220  \immediate\closeout\@mainaux
221  \let\@setckpt\@gobbletwo
222  \let\@newl@bel\@testdef
223  \@tempswafalse
224  \makeatletter
225  \input\jobname.aux\relax
226 }{}%
227 \@dofilelist
228 \@ifdim{\font@submax >\fontsubfuzz\relax}{%
229  \@font@warning{%
230   Size substitutions with differences\MessageBreak
231   up to \font@submax\space have occured.\@gobbletwo
232  }%
233 }{}%
234 \@defaultsubs
235 \@refundefined
236 \@if@sw\if@filesw\fi{%
237  \@ifx{\@multiplelabels\relax}{%
238   \@if@sw\if@tempswa\fi{%
239    \@latex@warning@no@line{%
240     Label(s) may have changed.
241     Rerun to get cross-references right
242    }%
243   }{}%
244  }{%
245    \@multiplelabels
246  }%
247 }{}%
248}%
249\def\flushing{%
250  \let\\\@normalcr
251  \leftskip\z@skip
252  \rightskip\z@skip
253  \@rightskip\z@skip
254  \parfillskip\@flushglue
255}%
256\def\eqnarray@LaTeX{%
257   \stepcounter{equation}%
258   \def\@currentlabel{\p@equation\theequation}%
259   \global\@eqnswtrue
260   \m@th
261   \global\@eqcnt\z@
262   \tabskip\@centering
263   \let\\\@eqncr
264   $$\everycr{}\halign\t@\displaywidth\bgroup
265       \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
266      &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
267      &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
268         $\displaystyle{##}$\hfil\tabskip\@centering
269      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
270         \tabskip\z@skip
271      \cr
272}
273\long\def\eqnarray@fleqn@fixed{%
274 \stepcounter{equation}\def\@currentlabel{\p@equation\theequation}%
275 \global\@eqnswtrue\m@th\global\@eqcnt\z@
276 \tabskip\mathindent
277 \let\\=\@eqncr
278 \setlength\abovedisplayskip{\topsep}%
279 \ifvmode\addtolength\abovedisplayskip{\partopsep}\fi
280 \addtolength\abovedisplayskip{\parskip}%
281 \setlength\belowdisplayskip{\abovedisplayskip}%
282 \setlength\belowdisplayshortskip{\abovedisplayskip}%
283 \setlength\abovedisplayshortskip{\abovedisplayskip}%
284 $$%
285 \everycr{}%
286 \halignt@\linewidth\bgroup
287  \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
288  &\global\@eqcnt\@ne
289   \hskip\tw@\eqncolsep
290   \hfil${{}##{}}$\hfil
291  &\global\@eqcnt\tw@
292   \hskip\tw@\eqncolsep
293   $\displaystyle{##}$\hfil\tabskip\@centering
294  &\global\@eqcnt\thr@@\hb@xt@\z@\bgroup\hss##\egroup
295   \tabskip\z@skip
296  \cr
297}%
298\@ifx{\eqnarray\eqnarray@LaTeX}{%
299 \class@info{Repairing broken LaTeX eqnarray}%
300 \let\eqnarray\eqnarray@fleqn@fixed
301 \newlength\eqncolsep
302 \setlength\eqncolsep\z@
303 \let\eqnarray@LaTeX\relax
304 \let\eqnarray@fleqn@fixed\relax
305}{}%
306\def\mathindent{\@centering}%
307\def\set@eqnarray@skips{}%
308\def\footnote{%
309 \@ifnextchar[\@xfootnote{\@yfootnote\@footnotetext}%
310}%
311\def\footnotemark{%
312 \@ifnextchar[\@xfootnotemark{\@yfootnote}%
313}%
314\def\@xfootnote[#1]{%
315 \@xfootnotemark[#1]%
316 \@footnotetext
317}%
318\def\@xfootnotemark@ltx[#1]{%
319 \begingroup
320   \csname c@\@mpfn\endcsname #1\relax
321   \unrestored@protected@xdef\@thefnmark{\thempfn}%
322 \endgroup
323 \H@@footnotemark
324}%
325\def\@yfootnote{%
326 \stepcounter\@mpfn
327 \protected@xdef\@thefnmark{\thempfn}%
328 \H@@footnotemark
329}%
330\appdef\class@documenthook{%
331 \@ifxundefined\H@@footnotemark{%
332  \let\H@@footnotemark\@footnotemark
333 }{}%
334 \let\@xfootnotemark\@xfootnotemark@ltx
335}%
336\long\def\@footnotetext{%
337 \insert\footins\bgroup
338  \make@footnotetext
339}%
340\long\def\@mpfootnotetext{%
341 \minipagefootnote@pick
342  \make@footnotetext
343}%
344\def\make@footnotetext#1{%
345  \reset@font\footnotesize
346  \interlinepenalty\interfootnotelinepenalty
347  \splittopskip\footnotesep
348  \splitmaxdepth\dp\strutbox
349  \set@footnotewidth
350  \@parboxrestore
351  \protected@edef\@currentlabel{%
352   \csname p@footnote\endcsname\@thefnmark
353  }%
354  \color@begingroup
355   \@makefntext{%
356    \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox
357   }%
358  \color@endgroup
359 \minipagefootnote@drop
360}%
361\def\set@footnotewidth{%
362 \hsize\columnwidth
363 \linewidth\hsize
364}%
365\def\set@footnotewidth@ii{%
366 \hsize\textwidth
367 \advance\hsize\columnsep
368 \divide\hsize\tw@
369 \advance\hsize-\columnsep
370 \linewidth\hsize
371}%
372\def\addtocontents#1#2{%
373 \protected@write\@auxout{%
374  \let \label \@gobble \let \index \@gobble \let \glossary \@gobble
375  \def\({\string\(}%
376  \def\){\string\)}%
377  \def\\{\string\\}%
378 }{\string \@writefile {#1}{#2}}%
379}%
380\def\addcontentsline#1#2#3{%
381 \addtocontents{#1}{%
382  \protect\contentsline{#2}{#3}{\thepage}{}%
383 }%
384}%
385\def\contentsline#1#2#3#4{%
386 \csname l@#1\endcsname{#2}{#3}%
387}%
388\def\label#1{%
389 \@bsphack
390  \protected@write\@auxout{}{%
391   \string\newlabel{#1}{{\@currentlabel}{\thepage}{}{}{}}%
392  }%
393 \@esphack
394}%
395\appdef\class@documenthook{%
396 \prepdef\caption{\minipagefootnote@here}%
397}%
398\def\minipagefootnote@init{%
399 \setbox\@mpfootins\box\voidb@x
400}%
401\def\minipagefootnote@pick{%
402 \global\setbox\@mpfootins\vbox\bgroup
403  \unvbox\@mpfootins
404}%
405\def\minipagefootnote@drop{%
406 \egroup
407}%
408\def\minipagefootnote@here{%
409    \par
410    \@ifvoid\@mpfootins{}{%
411      \vskip\skip\@mpfootins
412      \fullinterlineskip
413      \@ifinner{%
414       \vtop{\unvcopy\@mpfootins}%
415       {\setbox\z@\lastbox}%
416      }{}%
417      \unvbox\@mpfootins
418    }%
419}%
420\def\minipagefootnote@foot{%
421 \@ifvoid\@mpfootins{}{%
422  \insert\footins\bgroup\unvbox\@mpfootins\egroup
423 }%
424}%
425\def\endminipage{%
426    \par
427    \unskip
428    \minipagefootnote@here
429    \@minipagefalse   %% added 24 May 89
430  \color@endgroup
431  \egroup
432  \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}%
433}%
434\let\@xfloat@LaTeX\@xfloat
435\def\@xfloat#1[#2]{%
436  \@xfloat@prep
437  \@nameuse{fp@proc@#2}%
438  \@ifxundefined\floats@sw{\global\@booleantrue\floats@sw}{}%
439  \floats@sw{\@xfloat@LaTeX{#1}[#2]}{\@xfloat@anchored{#1}[]}%
440}%
441\def\@xfloat@prep{%
442  \let\footnote\footnote@latex
443  \def\@mpfn{mpfootnote}%
444  \def\thempfn{\thempfootnote}%
445  \c@mpfootnote\z@
446  \let\@footnotetext\@mpfootnotetext
447  \let\H@@footnotetext\@mpfootnotetext
448  \let\@makefntext\@mpmakefntext
449}%
450\appdef\class@documenthook{%
451 \let\footnote@latex\footnote
452}%
453\def\@xfloat@anchored#1[#2]{%
454 \def\@captype{#1}%
455 \begin@float@pagebreak
456  \let\end@float\end@float@anchored
457  \let\end@dblfloat\end@float@anchored
458        \hsize\columnwidth
459        \@parboxrestore
460        \@floatboxreset
461  \minipagefootnote@init
462}%
463\def\end@float@anchored{%
464  \minipagefootnote@here
465  \par\vskip\z@skip      %% \par\vskip\z@ added 15 Dec 87
466 \par
467 \end@float@pagebreak
468}%
469\def\begin@float@pagebreak{\par\addvspace\intextsep}%
470\def\end@float@pagebreak{\par\addvspace\intextsep}%
471\def\@mpmakefntext#1{%
472 \parindent=1em
473 \noindent
474 \hb@xt@1em{\hss\@makefnmark}%
475 #1%
476}%
477\def\do@if@floats#1#2{%
478 \@ifxundefined\floats@sw{\global\@booleantrue\floats@sw}{}%
479 \floats@sw{}{%
480  \expandafter\newwrite
481              \csname#1write\endcsname
482  \expandafter\def
483              \csname#1@stream\endcsname{\jobname#2}%
484  \expandafter\immediate
485  \expandafter\openout
486              \csname#1write\endcsname
487              \csname#1@stream\endcsname\relax
488  \@ifxundefined\@float@LaTeX{%
489   \let\@float@LaTeX\@float
490   \let\@dblfloat@LaTeX\@dblfloat
491   \let\@float\write@float
492   \let\@dblfloat\write@floats
493  }{}%
494  \let@environment{#1@float}{#1}%
495  \let@environment{#1@floats}{#1*}%
496  \@ifxundefined@cs{#1@write}{}{%
497   \let@environment{#1}{#1@write}%
498  }%
499 }%
500}%
501\def\triggerpar{\leavevmode\@@par}%
502\def\oneapage{\def\begin@float@pagebreak{\newpage}\def\end@float@pagebreak{\newpage}}%
503\def\print@float#1#2{%
504 \@ifxundefined@cs{#1write}{}{%
505  \begingroup
506   \@booleanfalse\floats@sw
507   #2%
508   \raggedbottom
509   \def\array@default{v}% floats must
510   \let\@float\@float@LaTeX
511   \let\@dblfloat\@dblfloat@LaTeX
512   \let\trigger@float@par\triggerpar
513   \let@environment{#1}{#1@float}%
514   \let@environment{#1*}{#1@floats}%
515   \expandafter\prepdef\csname#1\endcsname{\trigger@float@par}%
516   \expandafter\prepdef\csname#1*\endcsname{\trigger@float@par}%
517   \@namedef{fps@#1}{h!}%
518   \expandafter\immediate
519   \expandafter\closeout
520               \csname#1write\endcsname
521   \everypar{%
522    \global\let\trigger@float@par\relax
523    \global\everypar{}\setbox\z@\lastbox
524    \@ifxundefined@cs{#1sname}{}{%
525     \begin@float@pagebreak
526     \expandafter\section
527     \expandafter*%
528     \expandafter{%
529                  \csname#1sname\endcsname
530                 }%
531    }%
532   }%
533   \input{\csname#1@stream\endcsname}%
534  \endgroup
535  \global\expandafter\let\csname#1write\endcsname\relax
536 }%
537}%
538\def\write@float#1{\write@@float{#1}{#1}}%
539\def\endwrite@float{\@Esphack}%
540\def\write@floats#1{\write@@float{#1*}{#1}}%
541\def\endwrite@floats{\@Esphack}%
542\def\write@@float#1#2{%
543  \ifhmode
544     \@bsphack
545  \fi
546  \chardef\@tempc\csname#2write\endcsname
547  \toks@{\begin{#1}}%
548  \def\@tempb{#1}%
549  \expandafter\let\csname end#1\endcsname\endwrite@float
550  \catcode`\^^M\active
551  \@makeother\{\@makeother\}\@makeother\%
552  \write@floatline
553}%
554\begingroup
555 \catcode`\[\the\catcode`\{\catcode`\]\the\catcode`\}\@makeother\{\@makeother\}%
556 \gdef\float@end@tag#1\end{#2}#3\@nul[%
557  \def\@tempa[#2]%
558  \@ifx[\@tempa\@tempb][\end[#2]][\write@floatline]%
559 ]%
560 \obeylines%
561 \gdef\write@floatline#1^^M[%
562  \begingroup%
563   \newlinechar`\^^M%
564   \toks@\expandafter[\the\toks@#1]\immediate\write\@tempc[\the\toks@]%
565  \endgroup%
566  \toks@[]%
567  \float@end@tag#1\end{}\@nul%
568 ]%
569\endgroup
570\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi}
571\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or
572  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
573  y\or z\or aa\or bb\or cc\or dd\or ee\or ff\or gg\or hh\or ii\or jj\or
574  kk\or ll\or mm\or nn\or oo\or pp\or qq\or rr\or ss\or tt\or uu\or
575  vv\or ww\or xx\or yy\or zz\else\@ctrerr\fi}
576\def\@startsection#1#2#3#4#5#6{%
577 \@startsection@hook
578 \if@noskipsec \leavevmode \fi
579 \par
580 \@tempskipa #4\relax
581 \@afterindenttrue
582 \ifdim \@tempskipa <\z@
583  \@tempskipa -\@tempskipa \@afterindentfalse
584 \fi
585 \if@nobreak
586  \everypar{}%
587 \else
588  \addpenalty\@secpenalty\addvspace\@tempskipa
589 \fi
590 \@ifstar
591  {\@dblarg{\@ssect@ltx{#1}{#2}{#3}{#4}{#5}{#6}}}%
592  {\@dblarg{\@sect@ltx {#1}{#2}{#3}{#4}{#5}{#6}}}%
593}%
594\def\@startsection@hook{}%
595\class@info
596  {Repairing broken LateX \string\@sect}%
597\def\@sect@ltx#1#2#3#4#5#6[#7]#8{%
598  \@ifnum{#2>\c@secnumdepth}{%
599    \def\H@svsec{\phantomsection}%
600    \let\@svsec\@empty
601  }{%
602    \H@refstepcounter{#1}%
603    \def\H@svsec{%
604     \phantomsection
605    }%
606    \protected@edef\@svsec{{#1}}%
607    \@ifundefined{@#1cntformat}{%
608     \prepdef\@svsec\@seccntformat
609    }{%
610     \expandafter\prepdef
611     \expandafter\@svsec
612                 \csname @#1cntformat\endcsname
613    }%
614  }%
615  \@tempskipa #5\relax
616  \@ifdim{\@tempskipa>\z@}{%
617    \begingroup
618      \interlinepenalty \@M
619      #6{%
620       \@ifundefined{@hangfrom@#1}{\@hang@from}{\csname @hangfrom@#1\endcsname}%
621       {\hskip#3\relax\H@svsec}{\@svsec}{#8}%
622      }%
623      \@@par
624    \endgroup
625    \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}%
626    \addcontentsline{toc}{#1}{%
627      \@ifnum{#2>\c@secnumdepth}{%
628       \protect\numberline{}%
629      }{%
630       \protect\numberline{\csname the#1\endcsname}%
631      }%
632      #8}%
633  }{%
634    \def\@svsechd{%
635      #6{%
636       \@ifundefined{@runin@to@#1}{\@runin@to}{\csname @runin@to@#1\endcsname}%
637       {\hskip#3\relax\H@svsec}{\@svsec}{#8}%
638      }%
639      \@ifundefined{#1mark}{\@gobble}{\csname #1mark\endcsname}{#7}%
640      \addcontentsline{toc}{#1}{%
641        \@ifnum{#2>\c@secnumdepth}{%
642         \protect\numberline{}%
643        }{%
644         \protect\numberline{\csname the#1\endcsname}%
645        }%
646        #8}%
647    }%
648  }%
649  \@xsect{#5}%
650}%
651\def\@hang@from#1#2#3{\@hangfrom{#1#2}#3}%
652\def\@runin@to #1#2#3{#1#2#3}%
653\def\@ssect@ltx#1#2#3#4#5#6[#7]#8{%
654  \def\H@svsec{\phantomsection}%
655  \@tempskipa #5\relax
656  \@ifdim{\@tempskipa>\z@}{%
657    \begingroup
658      \interlinepenalty \@M
659      #6{%
660       \@ifundefined{@hangfroms@#1}{\@hang@froms}{\csname @hangfroms@#1\endcsname}%
661       {\hskip#3\relax\H@svsec}{#8}%
662      }%
663      \@@par
664    \endgroup
665    \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}%
666    \addcontentsline{toc}{#1}{\protect\numberline{}#8}%
667  }{%
668    \def\@svsechd{%
669      #6{%
670       \@ifundefined{@runin@tos@#1}{\@runin@tos}{\csname @runin@tos@#1\endcsname}%
671       {\hskip#3\relax\H@svsec}{#8}%
672      }%
673      \@ifundefined{#1smark}{\@gobble}{\csname #1smark\endcsname}{#7}%
674      \addcontentsline{toc}{#1}{\protect\numberline{}#8}%
675    }%
676  }%
677  \@xsect{#5}%
678}%
679\def\@hang@froms#1#2{#1#2}%
680\def\@runin@tos #1#2{#1#2}%
681\appdef\init@documenthook{%
682 \providecommand\phantomsection{}%
683 \providecommand\hyper@anchor[1]{}%
684 \providecommand\hyper@last{}%
685 \providecommand\Hy@raisedlink[1]{#1}%
686 \providecommand\hyper@anchorstart[1]{}%
687 \providecommand\hyper@anchorend{}%
688 \providecommand\hyper@linkstart[2]{}%
689 \providecommand\hyper@linkend{}%
690}%
691\let\H@refstepcounter\refstepcounter
692\def\sec@upcase#1{\relax{#1}}%
693\appdef\class@documenthook{%
694 \@ifpackageloaded{array}{\switch@array}{\switch@tabular}%
695 \prepdef\endtabular{\endtabular@hook}%
696 \@provide\endtabular@hook{}%
697 \prepdef\endarray{\endarray@hook}%
698 \@provide\endarray@hook{}%
699 \providecommand\array@hook{}%
700 \prepdef\@tabular{\tabular@hook}%
701 \@provide\tabular@hook{}%
702}%
703\def\switch@tabular{%
704 \let\@array@sw\@array@sw@array
705 \@ifx{\@array\@array@LaTeX}{%
706  \@ifx{\multicolumn\multicolumn@LaTeX}{%
707   \@ifx{\@tabular\@tabular@LaTeX}{%
708    \@ifx{\@tabarray\@tabarray@LaTeX}{%
709     \@ifx{\array\array@LaTeX}{%
710      \@ifx{\endarray\endarray@LaTeX}{%
711       \@ifx{\endtabular\endtabular@LaTeX}{%
712        \@ifx{\@mkpream\@mkpream@LaTeX}{%
713         \@ifx{\@addamp\@addamp@LaTeX}{%
714          \@ifx{\@arrayacol\@arrayacol@LaTeX}{%
715           \@ifx{\@tabacol\@tabacol@LaTeX}{%
716            \@ifx{\@arrayclassz\@arrayclassz@LaTeX}{%
717             \@ifx{\@tabclassiv\@tabclassiv@LaTeX}{%
718              \@ifx{\@arrayclassiv\@arrayclassiv@LaTeX}{%
719               \@ifx{\@tabclassz\@tabclassz@LaTeX}{%
720                \@ifx{\@classv\@classv@LaTeX}{%
721                 \@ifx{\hline\hline@LaTeX}{%
722                  \@ifx{\@tabularcr\@tabularcr@LaTeX}{%
723                   \@ifx{\@xtabularcr\@xtabularcr@LaTeX}{%
724                    \@ifx{\@xargarraycr\@xargarraycr@LaTeX}{%
725                     \@ifx{\@yargarraycr\@yargarraycr@LaTeX}{%
726                      \true@sw
727                     }{%
728                      \false@sw
729                     }%
730                    }{%
731                     \false@sw
732                    }%
733                   }{%
734                    \false@sw
735                   }%
736                  }{%
737                   \false@sw
738                  }%
739                 }{%
740                  \false@sw
741                 }%
742                }{%
743                 \false@sw
744                }%
745               }{%
746                \false@sw
747               }%
748              }{%
749               \false@sw
750              }%
751             }{%
752              \false@sw
753             }%
754            }{%
755             \false@sw
756            }%
757           }{%
758            \false@sw
759           }%
760          }{%
761           \false@sw
762          }%
763         }{%
764          \false@sw
765         }%
766        }{%
767         \false@sw
768        }%
769       }{%
770        \false@sw
771       }%
772      }{%
773       \false@sw
774      }%
775     }{%
776      \false@sw
777     }%
778    }{%
779     \false@sw
780    }%
781   }{%
782    \false@sw
783   }%
784  }{%
785   \false@sw
786  }%
787 }{%
788  \false@sw
789 }%
790 {%
791  \class@info{Patching LaTeX tabular.}%
792 }{%
793  \class@info{Unrecognized LaTeX tabular. Please update this document class! (Proceeding with fingers crossed.)}%
794 }%
795 \let\@array\@array@ltx
796 \let\multicolumn\multicolumn@ltx
797 \let\@tabular\@tabular@ltx
798 \let\@tabarray\@tabarray@ltx
799 \let\array\array@ltx
800 \let\endarray\endarray@ltx
801 \let\endtabular\endtabular@ltx
802 \let\@mkpream\@mkpream@ltx
803 \let\@addamp\@addamp@ltx
804 \let\@arrayacol\@arrayacol@ltx
805 \let\@tabacol\@tabacol@ltx
806 \let\@arrayclassz\@arrayclassz@ltx
807 \let\@tabclassiv\@tabclassiv@ltx
808 \let\@arrayclassiv\@arrayclassiv@ltx
809 \let\@tabclassz\@tabclassz@ltx
810 \let\@classv\@classv@ltx
811 \let\hline\hline@ltx
812 \let\@tabularcr\@tabularcr@ltx
813 \let\@xtabularcr\@xtabularcr@ltx
814 \let\@xargarraycr\@xargarraycr@ltx
815 \let\@yargarraycr\@yargarraycr@ltx
816}%
817\def\switch@array{%
818 \let\@array@sw\@array@sw@LaTeX
819 \@ifx{\@array\@array@array}{%
820  \@ifx{\@tabular\@tabular@array}{%
821   \@ifx{\@tabarray\@tabarray@array}{%
822    \@ifx{\array\array@array}{%
823     \@ifx{\endarray\endarray@array}{%
824      \@ifx{\endtabular\endtabular@array}{%
825       \@ifx{\@mkpream\@mkpream@array}{%
826        \@ifx{\@classx\@classx@array}{%
827         \@ifx{\insert@column\insert@column@array}{%
828          \@ifx{\@arraycr\@arraycr@array}{%
829           \@ifx{\@xarraycr\@xarraycr@array}{%
830            \@ifx{\@xargarraycr\@xargarraycr@array}{%
831             \@ifx{\@yargarraycr\@yargarraycr@array}{%
832              \true@sw
833         }{%
834          \false@sw
835         }%
836         }{%
837          \false@sw
838         }%
839         }{%
840          \false@sw
841         }%
842         }{%
843          \false@sw
844         }%
845         }{%
846          \false@sw
847         }%
848        }{%
849         \false@sw
850        }%
851       }{%
852        \false@sw
853       }%
854      }{%
855       \false@sw
856      }%
857     }{%
858      \false@sw
859     }%
860    }{%
861     \false@sw
862    }%
863   }{%
864    \false@sw
865   }%
866  }{%
867   \false@sw
868  }%
869 }{%
870  \false@sw
871 }{%
872  \class@info{Patching array package.}%
873 }{%
874  \class@info{Unrecognized array package. Please update this document class! (Proceeding with fingers crossed.)}%
875 }%
876 \let\@array    \@array@array@new
877 \let\@@array   \@array % Cosi fan tutti
878 \let\@tabular  \@tabular@array@new
879 \let\@tabarray \@tabarray@array@new
880 \let\array     \array@array@new
881 \let\endarray  \endarray@array@new
882 \let\endtabular\endtabular@array@new
883 \let\@mkpream  \@mkpream@array@new
884 \let\@classx   \@classx@array@new
885 \let\@arrayacol\@arrayacol@ltx
886 \let\@tabacol  \@tabacol@ltx
887 \let\insert@column\insert@column@array@new
888 \expandafter\let\csname endtabular*\endcsname\endtabular % Cosi fan tutti
889 \let\@arraycr  \@arraycr@new
890 \let\@xarraycr \@xarraycr@new
891 \let\@xargarraycr\@xargarraycr@new
892 \let\@yargarraycr\@yargarraycr@new
893}%
894\def\@array@sw@LaTeX{\@ifx{\\\@tabularcr}}%
895\def\@array@sw@array{\@ifx{\d@llarbegin\begingroup}}%
896\def\@tabular@LaTeX{%
897 \leavevmode
898 \hbox\bgroup$%
899  \let\@acol\@tabacol
900  \let\@classz\@tabclassz
901  \let\@classiv\@tabclassiv
902  \let\\\@tabularcr
903  \@tabarray
904}%
905\def\@tabular@ltx{%
906  \let\@acoll\@tabacoll
907  \let\@acolr\@tabacolr
908  \let\@acol\@tabacol
909  \let\@classz\@tabclassz
910  \let\@classiv\@tabclassiv
911  \let\\\@tabularcr
912  \@tabarray
913}%
914\def\@tabular@array{%
915 \leavevmode
916 \hbox\bgroup$%
917  \col@sep\tabcolsep
918  \let\d@llarbegin\begingroup
919  \let\d@llarend\endgroup
920  \@tabarray
921}%
922\def\@tabular@array@new{%
923  \let\@acoll\@tabacoll
924  \let\@acolr\@tabacolr
925  \let\@acol\@tabacol
926  \let\col@sep\@undefined
927  \let\d@llarbegin\begingroup
928  \let\d@llarend\endgroup
929  \@tabarray
930}%
931\def\@tabarray@LaTeX{%
932 \m@th\@ifnextchar[\@array{\@array[c]}%
933}%
934\def\@tabarray@ltx{%
935 \m@th\@ifnextchar[\@array{\expandafter\@array\expandafter[\array@default]}%
936}%
937\def\@tabarray@array{%
938 \@ifnextchar[{\@@array}{\@@array[c]}%
939}%
940\def\@tabarray@array@new{%
941 \@ifnextchar[{\@@array}{\expandafter\@@array\expandafter[\array@default]}%
942}%
943\newcount\intertabularlinepenalty
944\intertabularlinepenalty=100
945\newcount\@tbpen
946\appdef\samepage{\intertabularlinepenalty\@M}%
947\def\@tabularcr@LaTeX{{\ifnum 0=`}\fi \@ifstar \@xtabularcr \@xtabularcr}%
948\def\@tabularcr@ltx{{\ifnum 0=`}\fi \@ifstar {\global \@tbpen \@M \@xtabularcr }{\global \@tbpen \intertabularlinepenalty \@xtabularcr }}%
949\def\@xtabularcr@LaTeX{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr }}%
950\def\@xtabularcr@ltx{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr \noalign {\penalty \@tbpen }}}%
951\def\@xargarraycr@LaTeX#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr}%
952\def\@xargarraycr@ltx#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr \noalign {\penalty \@tbpen }}%
953\def\@yargarraycr@LaTeX#1{\cr \noalign {\vskip #1}}%
954\def\@yargarraycr@ltx#1{\cr \noalign {\penalty \@tbpen \vskip #1}}%
955\def\@arraycr@array{%
956 \relax
957 \iffalse{\fi\ifnum 0=`}\fi
958 \@ifstar \@xarraycr \@xarraycr
959}%
960\def\@arraycr@new{%
961 \relax
962 \iffalse{\fi\ifnum 0=`}\fi
963 \@ifstar {\global \@tbpen \@M \@xarraycr }{\global \@tbpen \intertabularlinepenalty \@xarraycr }%
964}%
965\def\@xarraycr@array{%
966 \@ifnextchar [%]
967 \@argarraycr {\ifnum 0=`{}\fi\cr}%
968}%
969\def\@xarraycr@new{%
970 \@ifnextchar [%]
971 \@argarraycr {\ifnum 0=`{}\fi\cr \noalign {\penalty \@tbpen }}%
972}%
973\def\@xargarraycr@array#1{%
974 \unskip
975 \@tempdima #1\advance\@tempdima \dp\@arstrutbox
976 \vrule \@depth\@tempdima \@width\z@
977 \cr
978}%
979\def\@xargarraycr@new#1{%
980 \unskip
981 \@tempdima #1\advance\@tempdima \dp\@arstrutbox
982 \vrule \@depth\@tempdima \@width\z@
983 \cr
984 \noalign {\penalty \@tbpen }%
985}%
986\def\@yargarraycr@array#1{%
987 \cr
988 \noalign{\vskip #1}%
989}%
990\def\@yargarraycr@new#1{%
991 \cr
992 \noalign{\penalty \@tbpen \vskip #1}%
993}%
994\def\array@LaTeX{%
995 \let\@acol\@arrayacol
996 \let\@classz\@arrayclassz
997 \let\@classiv\@arrayclassiv
998 \let\\\@arraycr
999 \let\@halignto\@empty
1000 \@tabarray
1001}%
1002\def\array@ltx{%
1003 \@ifmmode{}{\@badmath$}%
1004 \let\@acoll\@arrayacol
1005 \let\@acolr\@arrayacol
1006 \let\@acol\@arrayacol
1007 \let\@classz\@arrayclassz
1008 \let\@classiv\@arrayclassiv
1009 \let\\\@arraycr
1010 \let\@halignto\@empty
1011 \@tabarray
1012}%
1013\def\array@array{%
1014 \col@sep\arraycolsep
1015 \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\gdef\@halignto{}%
1016 \@tabarray
1017}
1018\def\array@array@new{%
1019 \@ifmmode{}{\@badmath$}%
1020 \let\@acoll\@arrayacol
1021 \let\@acolr\@arrayacol
1022 \let\@acol\@arrayacol
1023\let\col@sep\@undefined
1024 \def\d@llarbegin{$}%
1025 \let\d@llarend\d@llarbegin
1026 \gdef\@halignto{}%
1027 \@tabarray
1028}%
1029\def\@array@LaTeX[#1]#2{%
1030  \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi
1031  \bgroup
1032  \setbox\@arstrutbox\hbox{%
1033    \vrule \@height\arraystretch\ht\strutbox
1034           \@depth\arraystretch \dp\strutbox
1035           \@width\z@}%
1036  \@mkpream{#2}%
1037  \edef\@preamble{%
1038    \ialign \noexpand\@halignto
1039      \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}%
1040  \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox
1041  \let\tabularnewline\\%
1042    \let\par\@empty
1043    \let\@sharp##%
1044    \set@typeset@protect
1045    \lineskip\z@skip\baselineskip\z@skip
1046    \ifhmode \@preamerr\z@ \@@par\fi
1047    \@preamble
1048}%
1049\def\@array@ltx[#1]#2{%
1050 \@nameuse{@array@align@#1}%
1051  \set@arstrutbox
1052  \@mkpream{#2}%
1053  \prepdef\@preamble{%
1054    \tabskip\tabmid@skip
1055    \@arstrut
1056  }%
1057  \appdef\@preamble{%
1058    \tabskip\tabright@skip
1059    \cr
1060    \array@row@pre
1061  }%
1062  \let\tabularnewline\\%
1063  \let\par\@empty
1064  \let\@sharp##%
1065  \set@typeset@protect
1066  \lineskip\z@skip\baselineskip\z@skip
1067  \tabskip\tableft@skip\relax
1068  \ifhmode \@preamerr\z@ \@@par\fi
1069  \everycr{}%
1070  \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble
1071}%
1072\def\set@arstrutbox{%
1073  \setbox\@arstrutbox\hbox{%
1074    \vrule \@height\arraystretch\ht\strutbox
1075           \@depth\arraystretch \dp\strutbox
1076           \@width\z@
1077  }%
1078}%
1079\def\@array@array[#1]#2{%
1080  \@tempdima \ht \strutbox
1081  \advance \@tempdima by\extrarowheight
1082  \setbox \@arstrutbox \hbox{\vrule
1083             \@height \arraystretch \@tempdima
1084             \@depth \arraystretch \dp \strutbox
1085             \@width \z@}%
1086  \begingroup
1087  \@mkpream{#2}%
1088  \xdef\@preamble{\noexpand \ialign \@halignto
1089                  \bgroup \@arstrut \@preamble
1090                          \tabskip \z@ \cr}%
1091  \endgroup
1092  \@arrayleft
1093  \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
1094  \bgroup
1095  \let \@sharp ##\let \protect \relax
1096  \lineskip \z@
1097  \baselineskip \z@
1098  \m@th
1099  \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble
1100}%
1101\def\@array@array@new[#1]#2{%
1102  \@tempdima\ht\strutbox
1103  \advance\@tempdima by\extrarowheight
1104  \setbox\@arstrutbox\hbox{%
1105   \vrule \@height\arraystretch\@tempdima
1106          \@depth \arraystretch\dp\strutbox
1107          \@width \z@
1108  }%
1109  \begingroup
1110   \@mkpream{#2}%
1111   \xdef\@preamble{\@preamble}%
1112  \endgroup
1113  \prepdef\@preamble{%
1114   \tabskip\tabmid@skip
1115    \@arstrut
1116  }%
1117  \appdef\@preamble{%
1118   \tabskip\tabright@skip
1119   \cr
1120   \array@row@pre
1121  }%
1122  \@arrayleft
1123  \@nameuse{@array@align@#1}%
1124  \m@th
1125  \let\\\@arraycr
1126  \let\tabularnewline\\%
1127  \let\par\@empty
1128  \let\@sharp##%
1129  \set@typeset@protect
1130  \lineskip\z@\baselineskip\z@
1131  \tabskip\tableft@skip
1132  \everycr{}%
1133  \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble
1134}%
1135\def\endarray@LaTeX{%
1136 \crcr\egroup\egroup
1137}%
1138\def\endarray@ltx{%
1139 \crcr\array@row@pst\egroup\egroup
1140}%
1141\def\endarray@array{%
1142 \crcr \egroup \egroup \@arrayright \gdef\@preamble{}%
1143}%
1144\def\endarray@array@new{%
1145 \crcr\array@row@pst\egroup\egroup % Same as \endarray@ltx
1146 \@arrayright
1147 \global\let\@preamble\@empty
1148}%
1149\def\endtabular@LaTeX{%
1150 \crcr\egroup\egroup $\egroup
1151}%
1152\def\endtabular@ltx{%
1153 \endarray
1154}%
1155\def\endtabular@array{%
1156 \endarray $\egroup
1157}%
1158\def\endtabular@array@new{%
1159 \endarray
1160}%
1161\@namedef{endtabular*}{\endtabular}%
1162\long\def\multicolumn@LaTeX#1#2#3{%
1163 \multispan{#1}\begingroup
1164  \@mkpream{#2}%
1165  \def\@sharp{#3}\set@typeset@protect
1166  \let\@startpbox\@@startpbox\let\@endpbox\@@endpbox
1167  \@arstrut \@preamble\hbox{}\endgroup\ignorespaces
1168}%
1169\long\def\multicolumn@ltx#1#2#3{%
1170 \multispan{#1}%
1171 \begingroup
1172  \@mkpream{#2}%
1173  \def\@sharp{#3}%
1174  \set@typeset@protect
1175 %\let\@startpbox\@@startpbox\let\@endpbox\@@endpbox
1176  \@arstrut
1177  \@preamble
1178  \hbox{}%
1179 \endgroup
1180 \ignorespaces
1181}%
1182\def\@array@align@t{\leavevmode\vtop\bgroup}%
1183\def\@array@align@b{\leavevmode\vbox\bgroup}%
1184\def\@array@align@c{\leavevmode\@ifmmode{\vcenter\bgroup}{$\vcenter\bgroup\aftergroup$\aftergroup\relax}}%
1185\def\@array@align@v{%
1186 \@ifmmode{%
1187  \@badmath
1188  \vcenter\bgroup
1189 }{%
1190  \@ifinner{%
1191   $\vcenter\bgroup\aftergroup$
1192  }{%
1193   \@@par\bgroup
1194  }%
1195 }%
1196}%
1197\def\array@default{c}%
1198\def\array@row@rst{%
1199 \let\@array@align@v\@array@align@c
1200}%
1201\def\array@row@pre{}%
1202\def\array@row@pst{}%
1203\newcommand\toprule{\tab@rule{\column@font}{\column@fil}{\frstrut}}%
1204\newcommand\colrule{\unskip\lrstrut\\\tab@rule{\body@font}{}{\frstrut}}%
1205\newcommand\botrule{\unskip\lrstrut\\\noalign{\hline@rule}{}}%
1206\def\hline@LaTeX{%
1207 \noalign{\ifnum0=`}\fi\hrule \@height \arrayrulewidth \futurelet
1208   \reserved@a\@xhline
1209}%
1210\def\hline@ltx{%
1211 \noalign{%
1212  \ifnum0=`}\fi
1213  \hline@rule
1214  \futurelet\reserved@a\@xhline
1215 % \noalign ended in \@xhline
1216}%
1217\def\@xhline@unneeded{%
1218 \say\reserved@a
1219 \ifx\reserved@a\hline
1220  \vskip\doublerulesep
1221  \vskip-\arrayrulewidth
1222 \fi
1223 \ifnum0=`{\fi}%
1224}%
1225\def\tab@rule#1#2#3{%
1226 \crcr
1227 \noalign{%
1228  \hline@rule
1229  \gdef\@arstrut@hook{%
1230   \global\let\@arstrut@hook\@empty
1231   #3%
1232  }%
1233  \gdef\cell@font{#1}%
1234  \gdef\cell@fil{#2}%
1235 }%
1236}%
1237\def\column@font{}%
1238\def\column@fil{}%
1239\def\body@font{}%
1240\def\cell@font{}%
1241\def\frstrut{}%
1242\def\lrstrut{}%
1243\def\@arstrut@hline{%
1244 \relax
1245 \@ifmmode{\copy}{\unhcopy}\@arstrutbox@hline
1246 \@arstrut@hook
1247}%
1248\let\@arstrut@org\@arstrut
1249\def\@arstrut@hook{%
1250 \global\let\@arstrut\@arstrut@org
1251}%
1252\newbox\@arstrutbox@hline
1253\appdef\set@arstrutbox{%
1254  \setbox\@arstrutbox@hline\hbox{%
1255    \setbox\z@\hbox{$0^{0}_{}$}%
1256    \dimen@\ht\z@\advance\dimen@\@arstrut@hline@clnc
1257    \@ifdim{\dimen@<\arraystretch\ht\strutbox}{\dimen@=\arraystretch\ht\strutbox}{}%
1258    \vrule \@height\dimen@
1259           \@depth\arraystretch \dp\strutbox
1260           \@width\z@
1261  }%
1262}%
1263\def\hline@rule{%
1264 \hrule \@height \arrayrulewidth
1265 \global\let\@arstrut\@arstrut@hline
1266}%
1267\def\@arstrut@hline@clnc{2\p@}% % Klootch: magic number
1268\def\tableft@skip{\z@skip}%
1269\def\tabmid@skip{\z@skip}%\@flushglue
1270\def\tabright@skip{\z@skip}%
1271\def\tableftsep{\tabcolsep}%
1272\def\tabmidsep{\tabcolsep}%
1273\def\tabrightsep{\tabcolsep}%
1274\def\cell@fil{}%
1275\def\pbox@hook{}%
1276\appdef\@arstrut{\@arstrut@hook}%
1277\let\@arstrut@hook\@empty
1278\def\@addtopreamble{\appdef\@preamble}%
1279\def\@mkpream@LaTeX#1{%
1280  \@firstamptrue\@lastchclass6
1281  \let\@preamble\@empty
1282  \let\protect\@unexpandable@protect
1283  \let\@sharp\relax
1284  \let\@startpbox\relax\let\@endpbox\relax
1285  \@expast{#1}%
1286  \expandafter\@tfor \expandafter
1287    \@nextchar \expandafter:\expandafter=\reserved@a\do
1288       {\@testpach\@nextchar
1289    \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii
1290      \or \@classiv \or\@classv \fi\@lastchclass\@chclass}%
1291  \ifcase \@lastchclass \@acol
1292      \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi
1293}%
1294\def\@mkpream@ltx#1{%
1295 \@firstamptrue
1296 \@lastchclass6
1297 \let\@preamble\@empty
1298 \let\protect\@unexpandable@protect
1299 \let\@sharp\relax
1300 \@expast{#1}%
1301 \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\reserved@a
1302 \do{%
1303  \expandafter\@testpach\expandafter{\@nextchar}%
1304  \ifcase\@chclass
1305   \@classz
1306  \or
1307   \@classi
1308  \or
1309   \@classii
1310  \or
1311   \@classiii
1312  \or
1313   \@classiv
1314  \or
1315   \@classv
1316  \fi
1317  \@lastchclass\@chclass
1318 }%
1319 \ifcase\@lastchclass
1320  \@acolr % right-hand column
1321 \or
1322 \or
1323  \@preamerr\@ne
1324 \or
1325  \@preamerr\tw@
1326 \or
1327 \or
1328  \@acolr % right-hand column
1329 \fi
1330}%
1331\def\insert@column@array{%
1332   \the@toks \the \@tempcnta
1333   \ignorespaces \@sharp \unskip
1334   \the@toks \the \count@ \relax
1335}%
1336\def\insert@column@array@new{%
1337 \the@toks\the\@tempcnta
1338 \array@row@rst\cell@font
1339 \ignorespaces\@sharp\unskip
1340 \the@toks\the\count@
1341 \relax
1342}%
1343\def\@mkpream@relax{%
1344 \let\tableftsep\relax
1345 \let\tabmidsep\relax
1346 \let\tabrightsep\relax
1347 \let\array@row@rst\relax
1348 \let\cell@font\relax
1349 \let\@startpbox\relax
1350}%
1351\def\@mkpream@array#1{%
1352   \gdef\@preamble{}\@lastchclass 4 \@firstamptrue
1353   \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
1354   \@temptokena{#1}\@tempswatrue
1355   \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
1356   \count@\m@ne
1357   \let\the@toks\relax
1358   \prepnext@tok
1359   \expandafter \@tfor \expandafter \@nextchar
1360    \expandafter :\expandafter =\the\@temptokena \do
1361   {\@testpach
1362   \ifcase \@chclass \@classz \or \@classi \or \@classii
1363     \or \save@decl \or \or \@classv \or \@classvi
1364     \or \@classvii \or \@classviii
1365     \or \@classx
1366     \or \@classx \fi
1367   \@lastchclass\@chclass}%
1368   \ifcase\@lastchclass
1369   \@acol \or
1370   \or
1371   \@acol \or
1372   \@preamerr \thr@@ \or
1373   \@preamerr \tw@ \@addtopreamble\@sharp \or
1374   \or
1375   \else  \@preamerr \@ne \fi
1376   \def\the@toks{\the\toks}%
1377}%
1378\def\@mkpream@array@new#1{%
1379 \gdef\@preamble{}%
1380 \@lastchclass\f@ur
1381 \@firstamptrue
1382 \let\@sharp\relax
1383 \@mkpream@relax
1384 \@temptokena{#1}\@tempswatrue
1385 \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}%
1386 \count@\m@ne
1387 \let\the@toks\relax
1388 \prepnext@tok
1389 \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\the\@temptokena
1390 \do{%
1391  \@testpach
1392  \ifcase\@chclass
1393   \@classz
1394  \or
1395   \@classi
1396  \or
1397   \@classii
1398  \or
1399   \save@decl
1400  \or
1401  \or
1402   \@classv
1403  \or
1404   \@classvi
1405  \or
1406   \@classvii
1407  \or
1408   \@classviii
1409  \or
1410   \@classx
1411  \or
1412   \@classx
1413  \fi
1414  \@lastchclass\@chclass
1415 }%
1416 \ifcase\@lastchclass
1417  \@acolr % right-hand column
1418 \or
1419 \or
1420  \@acolr % right-hand column
1421 \or
1422  \@preamerr\thr@@
1423 \or
1424  \@preamerr\tw@\@addtopreamble\@sharp
1425 \or
1426 \or
1427 \else
1428  \@preamerr\@ne
1429 \fi
1430 \def\the@toks{\the\toks}%
1431}%
1432\def\@addamp@LaTeX{%
1433  \if@firstamp\@firstampfalse\else\edef\@preamble{\@preamble &}\fi
1434}%
1435\def\@addamp@ltx{%
1436 \if@firstamp\@firstampfalse\else\@addtopreamble{&}\fi
1437}%
1438\def\@arrayacol@LaTeX{%
1439 \edef\@preamble{\@preamble \hskip \arraycolsep}%
1440}%
1441\def\@arrayacol@ltx{%
1442 \@addtopreamble{\hskip\arraycolsep}%
1443}%
1444\def\@tabacoll{%
1445 \@addtopreamble{\hskip\tableftsep\relax}%
1446}%
1447\def\@tabacol@LaTeX{%
1448 \edef\@preamble{\@preamble \hskip \tabcolsep}%
1449}%
1450\def\@tabacol@ltx{%
1451 \@addtopreamble{\hskip\tabmidsep\relax}%
1452}%
1453\def\@tabacolr{%
1454 \@addtopreamble{\hskip\tabrightsep\relax}%
1455}%
1456\def\@arrayclassz@LaTeX{%
1457 \ifcase \@lastchclass \@acolampacol \or \@ampacol \or
1458   \or \or \@addamp \or
1459   \@acolampacol \or \@firstampfalse \@acol \fi
1460 \edef\@preamble{\@preamble
1461  \ifcase \@chnum
1462     \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil
1463    \or \hfil$\relax\@sharp$\fi}%
1464}%
1465\def\@arrayclassz@ltx{%
1466 \ifcase\@lastchclass
1467  \@acolampacol
1468 \or
1469  \@ampacol
1470 \or
1471 \or
1472 \or
1473  \@addamp
1474 \or
1475  \@acolampacol
1476 \or
1477  \@firstampfalse\@acoll
1478 \fi
1479 \ifcase\@chnum
1480  \@addtopreamble{%
1481   \hfil\array@row@rst$\relax\@sharp$\hfil
1482  }%
1483 \or
1484  \@addtopreamble{%
1485   \array@row@rst$\relax\@sharp$\hfil
1486  }%
1487 \or
1488  \@addtopreamble{%
1489   \hfil\array@row@rst$\relax\@sharp$%
1490  }%
1491 \fi
1492}%
1493\def\@tabclassz@LaTeX{%
1494  \ifcase\@lastchclass
1495    \@acolampacol
1496  \or
1497    \@ampacol
1498  \or
1499  \or
1500  \or
1501    \@addamp
1502  \or
1503    \@acolampacol
1504  \or
1505    \@firstampfalse\@acol
1506  \fi
1507  \edef\@preamble{%
1508    \@preamble{%
1509      \ifcase\@chnum
1510        \hfil\ignorespaces\@sharp\unskip\hfil
1511      \or
1512        \hskip1sp\ignorespaces\@sharp\unskip\hfil
1513      \or
1514        \hfil\hskip1sp\ignorespaces\@sharp\unskip
1515      \fi}}%
1516}%
1517\def\@tabclassz@ltx{%
1518 \ifcase\@lastchclass
1519  \@acolampacol
1520 \or
1521  \@ampacol
1522 \or
1523 \or
1524 \or
1525  \@addamp
1526 \or
1527  \@acolampacol
1528 \or
1529  \@firstampfalse\@acoll
1530 \fi
1531 \ifcase\@chnum
1532  \@addtopreamble{%
1533   {\hfil\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}%
1534  }%
1535 \or
1536  \@addtopreamble{%
1537   {\cell@fil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}%
1538  }%
1539 \or
1540  \@addtopreamble{%
1541   {\hfil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\cell@fil}%
1542  }%
1543 \fi
1544}%
1545\def\@tabclassiv@LaTeX{%
1546 \@addtopreamble\@nextchar
1547}%
1548\def\@tabclassiv@ltx{%
1549 \expandafter\@addtopreamble\expandafter{\@nextchar}%
1550}%
1551\def\@arrayclassiv@LaTeX{%
1552 \@addtopreamble{$\@nextchar$}%
1553}%
1554\def\@arrayclassiv@ltx{%
1555 \expandafter\@addtopreamble\expandafter{\expandafter$\@nextchar$}%
1556}%
1557\def\@classv@LaTeX{%
1558 \@addtopreamble{\@startpbox{\@nextchar}\ignorespaces
1559 \@sharp\@endpbox}%
1560}%
1561\def\@classv@ltx{%
1562 \expandafter\@addtopreamble
1563 \expandafter{%
1564 \expandafter \@startpbox
1565 \expandafter {\@nextchar}%
1566 \pbox@hook\array@row@rst\cell@font\ignorespaces\@sharp\@endpbox
1567 }%
1568}%
1569\def\@classx@array{%
1570  \ifcase \@lastchclass
1571  \@acolampacol \or
1572  \@addamp \@acol \or
1573  \@acolampacol \or
1574  \or
1575  \@acol \@firstampfalse \or
1576  \@addamp
1577  \fi
1578}%
1579\def\@classx@array@new{%
1580 \ifcase \@lastchclass
1581  \@acolampacol
1582 \or
1583  \@addamp \@acol
1584 \or
1585  \@acolampacol
1586 \or
1587 \or
1588  \@firstampfalse\@acoll
1589 \or
1590  \@addamp
1591 \fi
1592}%
1593\def\@xbitor@LaTeX #1{\@tempcntb \count#1
1594   \ifnum \@tempcnta =\z@
1595   \else
1596     \divide\@tempcntb\@tempcnta
1597     \ifodd\@tempcntb \@testtrue\fi
1598   \fi}%
1599\def\@xbitor@ltx#1{%
1600 \@tempcntb\count#1%
1601 \@ifnum{\@tempcnta=\z@}{}{%
1602  \divide\@tempcntb\@tempcnta
1603  \@ifodd\@tempcntb{\@testtrue}{}%
1604 }%
1605}%
1606\@ifx{\@xbitor\@xbitor@LaTeX}{%
1607  \class@info{Repairing broken LaTeX \string\@xbitor}%
1608}{%
1609  \class@info{Unrecognized LaTeX \string\@xbitor. Please update this document class! (Proceeding with fingers crossed.)}%
1610}%
1611\let\@xbitor\@xbitor@ltx
1612\newcommand*\@gobble@opt@one[2][]{}%
1613\def\@starttoc#1{%
1614  \begingroup
1615    \toc@pre
1616    \makeatletter
1617    \@input{\jobname.#1}%
1618    \if@filesw
1619      \expandafter\newwrite\csname tf@#1\endcsname
1620      \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
1621    \fi
1622    \@nobreakfalse
1623    \toc@post
1624  \endgroup
1625}%
1626\def\toc@pre{}%
1627\def\toc@post{}%
1628\def\toc@@font{}%{\footnotesize\rmfamily}%
1629\def\@dotsep{\z@}%{5.5pt}%
1630\let\tocdim@section       \leftmargini
1631\let\tocdim@subsection    \leftmarginii
1632\let\tocdim@subsubsection \leftmarginiii
1633\let\tocdim@paragraph     \leftmarginiv
1634\let\tocdim@appendix      \leftmarginv
1635\let\tocdim@pagenum       \leftmarginvi
1636\def\toc@pre@auto{%
1637  \toc@@font
1638  \@tempdima\z@
1639  \toc@setindent\@tempdima{section}%
1640  \toc@setindent\@tempdima{subsection}%
1641  \toc@setindent\@tempdima{subsubsection}%
1642  \toc@setindent\@tempdima{paragraph}%
1643  \toc@letdimen{appendix}%
1644  \toc@letdimen{pagenum}%
1645}%
1646\def\toc@post@auto{%
1647  \if@filesw
1648   \begingroup
1649    \toc@writedimen{section}%
1650    \toc@writedimen{subsection}%
1651    \toc@writedimen{subsubsection}%
1652    \toc@writedimen{paragraph}%
1653    \toc@writedimen{appendix}%
1654    \toc@writedimen{pagenum}%
1655   \endgroup
1656  \fi
1657}%
1658\def\toc@setindent#1#2{%
1659 \csname tocdim@#2\endcsname\tocdim@min\relax
1660 \@ifundefined{tocmax@#2}{\@namedef{tocmax@#2}{\z@}}{}%
1661 \advance#1\@nameuse{tocmax@#2}\relax
1662 \expandafter\edef\csname tocleft@#2\endcsname{\the#1}%
1663}%
1664\def\toc@letdimen#1{%
1665 \csname tocdim@#1\endcsname\tocdim@min\relax
1666 \@ifundefined{tocmax@#1}{\@namedef{tocmax@#1}{\z@}}{}%
1667 \expandafter\let\csname tocleft@#1\expandafter\endcsname\csname tocmax@#1\endcsname
1668}%
1669\def\toc@writedimen#1{%
1670 \immediate\write\@auxout{%
1671  \gdef\expandafter\string\csname tocmax@#1\endcsname{%
1672   \expandafter\the\csname tocdim@#1\endcsname
1673  }%
1674 }%
1675}%
1676\def\l@@sections#1#2#3#4{%
1677 % #1 - superior section
1678 % #2 - this section
1679 % #3 - content, including possible \numberline
1680 % #4 - page number
1681 \begingroup
1682  \everypar{}%
1683  \set@tocdim@pagenum{#4}%
1684  \global\@tempdima\csname tocdim@#2\endcsname
1685  \leftskip\csname tocleft@#2\endcsname\relax
1686  \dimen@\csname tocleft@#1\endcsname\relax
1687  \parindent-\leftskip\advance\parindent\dimen@
1688  \rightskip\tocleft@pagenum plus 1fil\relax
1689  \skip@\parfillskip\parfillskip\z@
1690  \let\numberline\numberline@@sections
1691  \@nameuse{l@f@#2}%
1692  \ignorespaces#3\unskip\nobreak\hskip\skip@
1693  \hb@xt@\rightskip{\hfil\unhbox\@tempboxa}\hskip-\rightskip\hskip\z@skip
1694  \par
1695  \expandafter\aftergroup\csname tocdim@#2\endcsname\expandafter
1696 \endgroup\the\@tempdima\relax
1697}%
1698\def\set@tocdim@pagenum#1{%
1699 \setbox\@tempboxa\hbox{\ignorespaces#1}%
1700 \@ifdim{\tocdim@pagenum<\wd\z@}{\global\tocdim@pagenum\wd\z@}{}%
1701}%
1702\def\numberline@@sections#1{%
1703 \leavevmode\hb@xt@-\parindent{%
1704  \hfil
1705  \@if@empty{#1}{}{%
1706   \setbox\z@\hbox{#1.\kern\@dotsep}%
1707   \@ifdim{\@tempdima<\wd\z@}{\global\@tempdima\wd\z@}{}%
1708   \unhbox\z@
1709  }%
1710 }%
1711 \ignorespaces
1712}%
1713\def\tocdim@min{\z@}%
1714\def\list#1#2{%
1715  \ifnum \@listdepth >5\relax
1716    \@toodeep
1717  \else
1718    \global\advance\@listdepth\@ne
1719  \fi
1720  \rightmargin\z@
1721  \listparindent\z@
1722  \itemindent\z@
1723  \csname @list\romannumeral\the\@listdepth\endcsname
1724  \def\@itemlabel{#1}%
1725  \let\makelabel\@mklab
1726  \@nmbrlistfalse
1727  #2\relax
1728  \@trivlist
1729  \parskip\parsep
1730  \set@listindent
1731  \ignorespaces
1732}%
1733\def\set@listindent@parshape{%
1734 \parindent\listparindent
1735 \advance\@totalleftmargin\leftmargin
1736 \advance\linewidth-\rightmargin
1737 \advance\linewidth-\leftmargin
1738 \parshape\@ne\@totalleftmargin\linewidth
1739}%
1740\def\set@listindent@{%
1741 \parindent\listparindent
1742 \advance\@totalleftmargin\leftmargin
1743 \advance\rightskip\rightmargin
1744 \advance\leftskip\@totalleftmargin
1745}%
1746\let\set@listindent\set@listindent@parshape
1747\typeout{%
1748 ltxgrid: portions licensed from W. E. Baxter (web@superscript.com)%
1749}%
1750\newcounter{linecount}
1751\def\lineloop#1{%
1752 \loop
1753 \ifnum\c@linecount<#1\relax
1754  \global\advance\c@linecount\@ne
1755  \par
1756  \hb@xt@\hsize{%
1757   \ifnum\c@linecount<100 0\fi\ifnum\c@linecount<10 0\fi\number\c@linecount
1758   \vrule depth2.5\p@
1759   \leaders\hrule\hfil
1760  }%
1761  \penalty\interlinepenalty
1762 \repeat
1763}%
1764\let\@@mark\mark
1765\let\@@topmark\topmark
1766\let\@@firstmark\firstmark
1767\let\@@botmark\botmark
1768\let\@@splitfirstmark\splitfirstmark
1769\let\@@splitbotmark\splitbotmark
1770\def\@themark{{}{}{}{}}%
1771\def\nul@mark{{}{}{}{}\@@nul}%
1772\def\set@mark@netw@#1#2#3#4#5#6#7{\gdef#1{{#6}{#7}{#4}{#5}}\do@mark}%
1773\def\set@marktw@#1#2#3#4#5#6{\gdef#1{{#2}{#6}{#4}{#5}}\do@mark}%
1774\def\set@markthr@@#1#2#3#4#5#6{\gdef#1{{#2}{#3}{#6}{#5}}\do@mark}%
1775\def\get@mark@@ne#1#2#3#4#5\@@nul{#1}%
1776\def\get@mark@tw@#1#2#3#4#5\@@nul{#2}%
1777\def\get@mark@thr@@#1#2#3#4#5\@@nul{#3}%
1778\def\get@mark@f@ur#1#2#3#4#5\@@nul{#4}%
1779\def\mark@netw@{\expandafter\set@mark@netw@\expandafter\@themark\@themark}%
1780\def\marktw@{\expandafter\set@marktw@\expandafter\@themark\@themark}%
1781\def\markthr@@{\expandafter\set@markthr@@\expandafter\@themark\@themark}%
1782\def\do@mark{\do@@mark\@themark\nobreak@mark}%
1783\def\do@@mark#1{%
1784 \begingroup
1785  \let@mark
1786  \@@mark{#1}%
1787 \endgroup
1788}%
1789\def\let@mark{%
1790 \let\protect\@unexpandable@protect
1791 \let\label\relax
1792 \let\index\relax
1793 \let\glossary\relax
1794}%
1795\def\nobreak@mark{%
1796 \@if@sw\if@nobreak\fi{\@ifvmode{\nobreak}{}}{}%
1797}%
1798\def\mark@envir{\markthr@@}%
1799\def\bot@envir{%
1800 \expandafter\expandafter
1801 \expandafter\get@mark@thr@@
1802 \expandafter\@@botmark
1803             \nul@mark
1804}%
1805\def\markboth{\mark@netw@}%
1806\def\markright{\marktw@}%
1807\def\leftmark{%
1808 \expandafter\expandafter
1809 \expandafter\get@mark@@ne
1810 \expandafter\saved@@botmark
1811             \nul@mark
1812}%
1813\def\rightmark{%
1814 \expandafter\expandafter
1815 \expandafter\get@mark@tw@
1816 \expandafter\saved@@firstmark
1817             \nul@mark
1818}%
1819\let\primitive@output\output
1820\long\def\@tempa#1\@@nil{#1}%
1821\toks@
1822\expandafter\expandafter
1823\expandafter{%
1824\expandafter \@tempa
1825             \the\output
1826             \@@nil
1827             }%
1828\newtoks\output
1829\output\expandafter{\the\toks@}%
1830\primitive@output{\dispatch@output}%
1831\def\dispatch@output{%
1832 \let\par\@@par
1833 \expandafter\let\expandafter\@tempa\csname output@\the\outputpenalty\endcsname
1834 \outputdebug@sw{%
1835  \saythe\badness
1836  \saythe\outputpenalty
1837  \saythe\holdinginserts
1838  \say\thepagegrid
1839  \saythe\pagegrid@col
1840  \saythe\pagegrid@cur
1841 %\say\bot@envir
1842  \saythe\insertpenalties
1843 %\say\@@topmark
1844 %\say\saved@@topmark
1845 %\say\@@firstmark
1846 %\say\saved@@firstmark
1847  \say\@@botmark
1848 %\say\saved@@botmark
1849  \saythe\pagegoal
1850  \saythe\pagetotal
1851  \saythe{\badness\@cclv}%
1852  \expandafter\@ifx\expandafter{\csname output@-\the\execute@message@pen\endcsname\@tempa}{%
1853   \say\@message@saved
1854  }{%
1855   \expandafter\say\csname output@\the\outputpenalty\endcsname
1856  }%
1857  \say\@toplist
1858  \say\@botlist
1859  \say\@dbltoplist
1860  \say\@deferlist
1861  {\tracingall\scrollmode
1862   \showbox\@cclv
1863   \showbox\@cclv@saved
1864   \showbox\pagesofar
1865   \showbox\footbox
1866   \showbox\footins@saved
1867   \showbox\footins
1868   \showlists
1869  }%
1870 }{}%
1871 \@ifnotrelax\@tempa{\@tempa}{\the\output}%
1872}%
1873\@ifxundefined{\outputdebug@sw}{%
1874 \@booleanfalse\outputdebug@sw
1875}{}%
1876\output={\toggle@insert\output@holding\output@moving}%
1877\def\output@holding{%
1878\csname output@init@\bot@envir\endcsname
1879\@if@exceed@pagegoal{\unvcopy\@cclv}{%
1880  \setbox\z@\vbox{\unvcopy\@cclv}%
1881\outputdebug@sw{{\tracingall\scrollmode\showbox\z@}}{}%
1882\dimen@\ht\@cclv\advance\dimen@-\ht\z@
1883\dead@cycle@repair\dimen@
1884}{%
1885\dead@cycle
1886}%
1887}%
1888\def\@if@exceed@pagegoal#1{%
1889 \begingroup
1890  \setbox\z@\vbox{#1}%
1891 \dimen@\ht\z@\advance\dimen@\dp\z@
1892  \outputdebug@sw{\saythe\dimen@}{}%
1893  \@ifdim{\dimen@>\pagegoal}{%
1894  \setbox\z@\vbox{\@@mark{}\unvbox\z@}%
1895   \splittopskip\topskip
1896   \splitmaxdepth\maxdepth
1897   \vbadness\@M
1898   \vfuzz\maxdimen
1899   \setbox\tw@\vsplit\z@ to\pagegoal
1900  \outputdebug@sw{{\tracingall\scrollmode\showbox\tw@\showbox\z@}}{}%
1901  \setbox\tw@\vbox{\unvbox\tw@}%
1902  \@ifdim{\ht\tw@=\z@}{%
1903   \ltxgrid@info{Found overly large chunk while preparing to move insertions. Attempting repairs}%
1904    \aftergroup\true@sw
1905  }{%
1906    \aftergroup\false@sw
1907  }%
1908 }{%
1909 \aftergroup\false@sw
1910 }%
1911\endgroup
1912}%
1913%% \item
1914%%  Put down the same interrupts as for the non-trivial case above.
1915\def\output@moving{%
1916 \set@top@firstmark
1917 \@ifnum{\outputpenalty=\do@newpage@pen}{%
1918  \setbox\@cclv\vbox{%
1919   \unvbox\@cclv
1920   \setbox\z@\lastbox
1921   \@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}%
1922  }%
1923 }{}%
1924 \@cclv@nontrivial@sw{%
1925  \csname output@prep@\bot@envir \endcsname
1926  \@makecol\csname output@column@\thepagegrid\endcsname
1927  \protect@penalty\do@startcolumn@pen
1928  \clearpage@sw{%
1929   \protect@penalty\do@endpage@pen
1930  }{}%
1931  \csname output@post@\bot@envir \endcsname
1932 }{%
1933  {\setbox\z@\box\@cclv}%
1934 }%
1935 \set@colroom
1936 \global\@mparbottom\z@
1937 \global\@textfloatsheight\z@ %FIXME: this legacy LaTeX variable is set, but never queried!
1938}%
1939\def\@cclv@nontrivial@sw{%
1940\@ifx@empty\@toplist{%
1941\@ifx@empty\@botlist{%
1942\@ifvoid\footins{%
1943 \@ifvoid\@cclv{%
1944  \false@sw
1945 }{%
1946\setbox\z@\vbox{\unvcopy\@cclv}%
1947\@ifdim{\ht\z@=\topskip}{%
1948\setbox\z@\vbox{%
1949\unvbox\z@
1950\setbox\z@\lastbox\dimen@\lastskip\unskip
1951\@ifdim{\ht\z@=\ht\@protection@box}{%
1952\advance\dimen@\ht\z@
1953\@ifdim{\dimen@=\topskip}{%
1954\aftergroup\true@sw
1955}{%
1956\aftergroup\false@sw
1957}%
1958}{%
1959\aftergroup\false@sw
1960}%
1961}%
1962{%
1963\false@sw % Normal for \clearpage
1964}{%
1965\true@sw
1966}%
1967}{%
1968\@ifdim{\ht\z@=\z@}{%
1969\ltxgrid@info{Found trivial column. Discarding it}%
1970\outputdebug@sw{{\tracingall\scrollmode\showbox\@cclv}}{}%
1971\false@sw
1972}{%
1973\true@sw
1974}%
1975}%
1976 }%
1977}{%
1978\true@sw
1979}%
1980}{%
1981\true@sw
1982}%
1983}{%
1984\true@sw
1985}%
1986}%
1987\def\protect@penalty#1{\protection@box\penalty-#1\relax}%
1988\newbox\@protection@box
1989\setbox\@protection@box\vbox to1986sp{\vfil}%
1990\def\protection@box{\nointerlineskip\copy\@protection@box}%
1991\def\dead@cycle@repair#1{%
1992\expandafter\do@@mark
1993\expandafter{%
1994\@@botmark
1995}%
1996\unvbox\@cclv
1997\nointerlineskip
1998\vbox to#1{\vss}%
1999\@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
2000}%
2001\def\dead@cycle@repair@protected#1{%
2002\expandafter\do@@mark
2003\expandafter{%
2004\@@botmark
2005}%
2006\begingroup
2007  \unvbox\@cclv
2008  \setbox\z@\lastbox % Remove protection box
2009 \nointerlineskip
2010  \advance#1-\ht\@protection@box
2011 \vbox to#1{\vss}%
2012  \protection@box % Reinsert protection box
2013 \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
2014\endgroup
2015}%
2016\def\dead@cycle{%
2017 \expandafter\do@@mark
2018 \expandafter{%
2019              \@@botmark
2020             }%
2021 \unvbox\@cclv
2022 \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}%
2023}%
2024\def\output@init@document{%
2025 \@ifvoid\footbox{}{%
2026  \global\advance\vsize-\ht\footbox
2027  \global\advance\vsize-\dp\footbox
2028 }%
2029}%
2030\def\output@prep@document{%
2031 \@ifvoid\footbox{}{%
2032  \setbox\footins\vbox{\unvbox\footbox\unvbox\footins}%
2033 }%
2034}%
2035\def\output@post@document{}%
2036\let\@opcol\@undefined
2037\def\@makecol{%
2038 \setbox\@outputbox\vbox{%
2039  \boxmaxdepth\@maxdepth
2040  \@tempdima\dp\@cclv
2041  \unvbox\@cclv
2042  \vskip-\@tempdima
2043 }%
2044 \xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty
2045 \@combinefloats
2046 \@combineinserts\@outputbox\footins
2047  \set@adj@colht\dimen@
2048  \count@\vbadness
2049  \vbadness\@M
2050  \setbox\@outputbox\vbox to\dimen@{%
2051   \@texttop
2052   \dimen@\dp\@outputbox
2053   \unvbox\@outputbox
2054   \vskip-\dimen@
2055   \@textbottom
2056  }%
2057  \vbadness\count@
2058 \global\maxdepth\@maxdepth
2059}%
2060\let\@makespecialcolbox\@undefined
2061\def\@combineinserts#1#2{%
2062 \setbox#1\vbox{%
2063  \unvbox#1%
2064  \vbox{%
2065   \@ifvoid#2{}{%
2066    \vskip\skip\footins
2067    \color@begingroup
2068    \normalcolor
2069    \footnoterule
2070    \nointerlineskip
2071    \box#2%
2072    \color@endgroup
2073   }{}%
2074  }%
2075 }%
2076}%
2077\appdef\@floatplacement{%
2078 \global\@fpmin\@fpmin
2079}%
2080\mathchardef\pagebreak@pen=\@M
2081\expandafter\let\csname output@-\the\pagebreak@pen\endcsname\relax
2082\mathchardef\do@startcolumn@pen=10005
2083\@namedef{output@-\the\do@startcolumn@pen}{\do@startcolumn}%
2084\def\do@startcolumn{%
2085 \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}%
2086 \clearpage@sw{\@clearfloatplacement}{\@floatplacement}%
2087 \set@colroom
2088 \@booleanfalse\pfloat@avail@sw
2089 \begingroup
2090  \@colht\@colroom
2091  \@booleanfalse\float@avail@sw
2092  \@tryfcolumn\test@colfloat
2093  \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
2094 \endgroup
2095 \fcolmade@sw{%
2096  \setbox\@cclv\vbox{\unvbox\@outputbox\unvbox\@cclv}%
2097  \outputpenalty-\pagebreak@pen % ask for a return visit, this time with insertions and all.
2098  \dead@cycle
2099 }{%
2100  \begingroup
2101   \let\@elt\@scolelt
2102   \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
2103  \endgroup
2104  \clearpage@sw{%
2105   \outputpenalty\@M
2106  }{%
2107   \outputpenalty\do@newpage@pen
2108  }%
2109  \dead@cycle
2110 }%
2111 \check@deferlist@stuck\do@startcolumn
2112 \set@vsize
2113}%
2114\def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}%
2115\def\test@colfloat#1{%
2116 \csname @floatselect@sw@\thepagegrid\endcsname#1{}{\@testtrue}%
2117 \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
2118}%
2119\def\@addtonextcol{%
2120 \begingroup
2121  \@insertfalse
2122  \@setfloattypecounts
2123  \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
2124   \@ifnum{\@fpstype=8 }{}{%
2125     \@ifnum{\@fpstype=24 }{}{%
2126       \@flsettextmin
2127       \@reqcolroom \ht\@currbox
2128       \advance \@reqcolroom \@textmin
2129       \advance \@reqcolroom \vsize % take into account split insertions
2130       \advance \@reqcolroom -\pagegoal
2131       \@ifdim{\@colroom>\@reqcolroom}{%
2132         \@flsetnum \@colnum
2133         \@ifnum{\@colnum>\z@}{%
2134            \@bitor\@currtype\@deferlist
2135            \@if@sw\if@test\fi{}{%
2136              \@addtotoporbot
2137            }%
2138         }{}%
2139       }{}%
2140     }%
2141   }%
2142  }{}%
2143  \@if@sw\if@insert\fi{}{%
2144    \@cons\@deferlist\@currbox
2145  }%
2146 \endgroup
2147}%
2148\mathchardef\do@startpage@pen=10006
2149\@namedef{output@-\the\do@startpage@pen}{\do@startpage}%
2150\def\do@startpage{%
2151 \setbox\@cclv\vbox{\unvbox\@cclv\setbox\z@\lastbox\unskip}%
2152 \clearpage@sw{\@clearfloatplacement}{\@dblfloatplacement}%
2153 \set@colht
2154 \@booleanfalse\pfloat@avail@sw
2155 \begingroup
2156  \@booleanfalse\float@avail@sw
2157  \@tryfcolumn\test@dblfloat
2158  \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}%
2159 \endgroup
2160 \fcolmade@sw{%
2161  \global\setbox\pagesofar\vbox{\unvbox\pagesofar\unvbox\@outputbox}%
2162  \@combinepage
2163  \@combinedblfloats
2164  \@outputpage
2165  \global\pagegrid@cur\@ne
2166  \protect@penalty\do@startpage@pen
2167 }{%
2168  \begingroup
2169   \@booleanfalse\float@avail@sw
2170   \let\@elt\@sdblcolelt
2171   \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b
2172  \endgroup
2173  \@ifdim{\@colht=\textheight}{% No luck...
2174   \pfloat@avail@sw{% ...but a float *was* available!
2175    \forcefloats@sw{%
2176     \ltxgrid@warn{Forced dequeueing of floats stalled}%
2177    }{%
2178     \ltxgrid@warn{Dequeueing of floats stalled}%
2179    }%
2180   }{}%
2181  }{}%
2182  \outputpenalty\@M
2183  \dead@cycle
2184 }%
2185 \check@deferlist@stuck\do@startpage
2186 \set@colht
2187}%
2188\def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}%
2189\def\test@dblfloat#1{%
2190 \@if@notdblfloat{#1}{\@testtrue}{}%
2191 \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}%
2192}%
2193\def\@if@notdblfloat#1{\@ifdim{\wd#1<\textwidth}}%
2194\@booleanfalse\forcefloats@sw
2195\def\@addtodblcol{%
2196 \begingroup
2197  \@if@notdblfloat{\@currbox}{%
2198   \false@sw
2199  }{%
2200   \@setfloattypecounts
2201   \@getfpsbit \tw@
2202   \@bitor \@currtype \@deferlist
2203   \@if@sw\if@test\fi{%
2204    \false@sw
2205   }{%
2206    \@ifodd\@tempcnta{%
2207     \aftergroup\@booleantrue\aftergroup\float@avail@sw
2208     \@flsetnum \@dbltopnum
2209     \@ifnum{\@dbltopnum>\z@}{%
2210       \@ifdim{\@dbltoproom>\ht\@currbox}{%
2211        \true@sw
2212       }{%
2213        \@ifnum{\@fpstype<\sixt@@n}{%
2214         \begingroup
2215          \advance \@dbltoproom \@textmin
2216          \@ifdim{\@dbltoproom>\ht\@currbox}{%
2217           \endgroup\true@sw
2218          }{%
2219           \endgroup\false@sw
2220          }%
2221        }{%
2222         \false@sw
2223        }%
2224       }%
2225     }{%
2226      \false@sw
2227     }%
2228    }{%
2229     \false@sw
2230    }%
2231   }%
2232  }%
2233  {%
2234   \@tempdima -\ht\@currbox
2235   \advance\@tempdima
2236    -\@ifx{\@dbltoplist\@empty}{\dbltextfloatsep}{\dblfloatsep}%
2237   \global \advance \@dbltoproom \@tempdima
2238   \global \advance \@colht \@tempdima
2239   \global \advance \@dbltopnum \m@ne
2240   \@cons \@dbltoplist \@currbox
2241  }{%
2242   \@cons \@deferlist \@currbox
2243  }%
2244 \endgroup
2245}%
2246\def\@tryfcolumn#1{%
2247  \global\@booleanfalse\fcolmade@sw
2248  \@ifx@empty\@deferlist{}{%
2249    \global\let\@trylist\@deferlist
2250    \global\let\@failedlist\@empty
2251    \begingroup
2252      \dimen@\vsize\advance\dimen@-\pagegoal\@ifdim{\dimen@>\z@}{%
2253       \advance\@fpmin-\dimen@
2254      }{}%
2255      \def\@elt{\@xtryfc#1}\@trylist
2256    \endgroup
2257    \fcolmade@sw{%
2258      \global\setbox\@outputbox\vbox{\vskip \@fptop}%
2259      \let \@elt \@wtryfc \@flsucceed
2260      \global\setbox\@outputbox\vbox{\unvbox\@outputbox
2261        \unskip \vskip \@fpbot
2262      }%
2263      \let \@elt \relax
2264      \xdef\@deferlist{\@failedlist\@flfail}%
2265      \xdef\@freelist{\@freelist\@flsucceed}%
2266    }{}%
2267  }%
2268}%
2269\def\@wtryfc #1{%
2270  \global\setbox\@outputbox\vbox{\unvbox\@outputbox
2271    \box #1\vskip\@fpsep
2272  }%
2273}%
2274\def\@xtryfc#1#2{%
2275  \@next\reserved@a\@trylist{}{}% trim \@trylist. Ugly!
2276  \@currtype \count #2%
2277  \divide\@currtype\@xxxii\multiply\@currtype\@xxxii
2278  \@bitor \@currtype \@failedlist
2279  \@testfp #2%
2280  #1#2%
2281  \@ifdim{\ht #2>\@colht   }{\@testtrue}{}%
2282  \@if@sw\if@test\fi{%
2283   \@cons\@failedlist #2%
2284  }{%
2285   \begingroup
2286     \gdef\@flsucceed{\@elt #2}%
2287     \global\let\@flfail\@empty
2288     \@tempdima\ht #2%
2289     \def \@elt {\@ztryfc#1}\@trylist
2290     \@ifdim{\@tempdima >\@fpmin}{%
2291       \global\@booleantrue\fcolmade@sw
2292     }{%
2293       \@cons\@failedlist #2%
2294     }%
2295   \endgroup
2296   \fcolmade@sw{%
2297     \let \@elt \@gobble
2298   }{}%
2299  }%
2300}%
2301\def\@ztryfc #1#2{%
2302  \@tempcnta \count#2%
2303  \divide\@tempcnta\@xxxii\multiply\@tempcnta\@xxxii
2304  \@bitor \@tempcnta {\@failedlist \@flfail}%
2305  \@testfp #2%
2306  #1#2%
2307  \@tempdimb\@tempdima
2308  \advance\@tempdimb \ht#2\advance\@tempdimb\@fpsep
2309  \@ifdim{\@tempdimb >\@colht}{%
2310    \@testtrue
2311  }{}%
2312  \@if@sw\if@test\fi{%
2313    \@cons\@flfail #2%
2314  }{%
2315    \@cons\@flsucceed #2%
2316    \@tempdima\@tempdimb
2317  }%
2318}%
2319\def\newpage@prep{%
2320  \if@noskipsec
2321    \ifx \@nodocument\relax
2322      \leavevmode
2323      \global \@noskipsecfalse
2324    \fi
2325  \fi
2326  \if@inlabel
2327    \leavevmode
2328    \global \@inlabelfalse
2329  \fi
2330  \if@nobreak \@nobreakfalse \everypar{}\fi
2331  \par
2332}%
2333\def \newpage {%
2334 \newpage@prep
2335 \do@output@MVL{%
2336  \vfil
2337  \penalty-\pagebreak@pen
2338 }%
2339}%
2340\def\clearpage{%
2341 \newpage@prep
2342 \do@output@MVL{%
2343  \vfil
2344  \penalty-\pagebreak@pen
2345  \global\@booleantrue\clearpage@sw
2346  \protect@penalty\do@startcolumn@pen
2347  \protect@penalty\do@endpage@pen
2348 }%
2349 \do@output@MVL{%
2350  \global\@booleanfalse\clearpage@sw
2351 }%
2352}%
2353\def\cleardoublepage{%
2354 \clearpage
2355 \@if@sw\if@twoside\fi{%
2356  \@ifodd\c@page{}{%
2357   \null\clearpage
2358  }%
2359 }{}%
2360}%
2361\@booleanfalse\clearpage@sw
2362\mathchardef\do@endpage@pen=10007
2363\@namedef{output@-\the\do@endpage@pen}{%
2364 \csname end@column@\thepagegrid\endcsname
2365}%
2366\mathchardef\do@newpage@pen=10001
2367\expandafter\let\csname output@-\the\do@newpage@pen\endcsname\relax
2368\def\@clearfloatplacement{%
2369 \global\@topnum     \maxdimen % \c@topnumber
2370 \global\@toproom    \maxdimen % \topfraction\@colht
2371 \global\@botnum     \maxdimen % \c@bottomnumber
2372 \global\@botroom    \maxdimen % \bottomfraction\@colht
2373 \global\@colnum     \maxdimen % \c@totalnumber
2374 \global\@dbltopnum  \maxdimen % \c@dbltopnumber
2375 \global\@dbltoproom \maxdimen % \dbltopfraction\@colht
2376 \global\@textmin    \z@       % \@colht\advance \@textmin -\@dbltoproom
2377 \global\@fpmin      \z@       % \dblfloatpagefraction\textheight
2378 \let\@testfp\@gobble
2379 \appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}%
2380}%
2381\let\@doclearpage\@undefined
2382\let\@makefcolumn\@undefined
2383\def\clr@top@firstmark{%
2384 \global\let\saved@@topmark\@undefined
2385 \global\let\saved@@firstmark\@empty
2386 \global\let\saved@@botmark\@empty
2387}%
2388\clr@top@firstmark
2389\def\set@top@firstmark{%
2390 \@ifxundefined\saved@@topmark{\expandafter\gdef\expandafter\saved@@topmark\expandafter{\@@topmark}}{}%
2391 \@if@empty\saved@@firstmark{\expandafter\gdef\expandafter\saved@@firstmark\expandafter{\@@firstmark}}{}%
2392 \@if@empty\@@botmark{}{\expandafter\gdef\expandafter\saved@@botmark\expandafter{\@@botmark}}%
2393}%
2394\appdef\@outputpage{%
2395 \clr@top@firstmark
2396}%
2397\def\@float#1{%
2398 \@ifnextchar[{%}]{%Brace-matching klootch
2399  \@yfloat\width@float{#1}%
2400 }{%
2401  \@ifxundefined@cs{fps@#1}{%
2402   \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@\endcsname]}\reserved@a
2403  }{%
2404   \edef\reserved@a{\noexpand\@yfloat\noexpand\width@float{#1}[\csname fps@#1\endcsname]}\reserved@a
2405  }%
2406 }%
2407}%
2408\def\@dblfloat#1{%
2409 \@ifnum{\pagegrid@col=\@ne}{%
2410  \@float{#1}%
2411 }{%
2412  \@ifnextchar[{%}]{%Brace-matching klootch
2413   \@yfloat\widthd@float{#1}%
2414  }{%
2415   \@ifxundefined@cs{fpsd@#1}{%
2416    \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@\endcsname]}\reserved@a
2417   }{%
2418    \edef\reserved@a{\noexpand\@yfloat\noexpand\widthd@float{#1}[\csname fpsd@#1\endcsname]}\reserved@a
2419   }%
2420  }%
2421 }%
2422}%
2423\def\@yfloat#1#2[#3]{%
2424 \@xfloat{#2}[#3]%
2425 \hsize#1\linewidth\hsize
2426 \minipagefootnote@init
2427}%
2428\def\fps@{tbp}%
2429\def\fpsd@{tp}%
2430\def\width@float{\columnwidth}%
2431\def\widthd@float{\textwidth}%
2432\def\end@float{%
2433 \end@@float{%
2434  \check@currbox@count
2435 }%
2436}%
2437\def\end@dblfloat{%
2438 \@ifnum{\pagegrid@col=\@ne}{%
2439  \end@float
2440 }{%
2441  \end@@float{%
2442   \@boxfpsbit\@currbox{1}\@ifodd\@tempcnta{\global\advance\count\@currbox\m@ne}{}%
2443   \@boxfpsbit\@currbox{4}\@ifodd\@tempcnta{\global\advance\count\@currbox-4\relax}{}%
2444   \global\wd\@currbox\textwidth % Klootch
2445   \check@currbox@count
2446  }%
2447 }%
2448}%
2449\def\end@@float#1{%
2450 \minipagefootnote@here
2451 \@endfloatbox
2452 #1%
2453 \@ifnum{\@floatpenalty <\z@}{%
2454  \@largefloatcheck
2455  \@cons\@currlist\@currbox
2456  \@ifnum{\@floatpenalty <-\@Mii}{%
2457   \do@output@cclv{\@add@float}%
2458  }{%
2459   \vadjust{\do@output@cclv{\@add@float}}%
2460   \@Esphack
2461  }%
2462 }{}%
2463}%
2464\def\check@currbox@count{%
2465 \@ifnum{\count\@currbox>\z@}{%
2466\count@\count\@currbox\divide\count@\sixt@@n\multiply\count@\sixt@@n
2467\@tempcnta\count\@currbox\advance\@tempcnta-\count@
2468\@ifnum{\@tempcnta=\z@}{%
2469   \ltxgrid@warn{Float cannot be placed}%
2470}{}%
2471 }{%
2472  % Is a \marginpar
2473 }%
2474}%
2475\providecommand\minipagefootnote@init{}%
2476\providecommand\minipagefootnote@here{}%
2477\let\@specialoutput\@undefined
2478\def\@add@float{%
2479 \@pageht\ht\@cclv\@pagedp\dp\@cclv
2480 \unvbox\@cclv
2481 \@next\@currbox\@currlist{%
2482  \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{%
2483   \@ifnum{\count\@currbox>\z@}{%
2484    \advance \@pageht \@pagedp
2485    \advance \@pageht \vsize \advance \@pageht -\pagegoal % do not assume \holdinginserts is cleared!
2486    \@addtocurcol % Commit an h float
2487  }{%
2488   \@addmarginpar
2489  }%
2490  }{%
2491   \@resethfps
2492   \@cons\@deferlist\@currbox
2493  }%
2494 }{\@latexbug}%
2495 \@ifnum{\outputpenalty<\z@}{%
2496  \@if@sw\if@nobreak\fi{%
2497   \nobreak
2498  }{%
2499   \addpenalty \interlinepenalty
2500  }%
2501 }{}%
2502 \set@vsize
2503}%
2504\let\@reinserts\@undefined
2505\def \@addtocurcol {%
2506   \@insertfalse
2507   \@setfloattypecounts
2508   \ifnum \@fpstype=8
2509   \else
2510     \ifnum \@fpstype=24
2511     \else
2512       \@flsettextmin
2513       \advance \@textmin \@textfloatsheight
2514       \@reqcolroom \@pageht
2515       \ifdim \@textmin>\@reqcolroom
2516         \@reqcolroom \@textmin
2517       \fi
2518       \advance \@reqcolroom \ht\@currbox
2519       \ifdim \@colroom>\@reqcolroom
2520         \@flsetnum \@colnum
2521         \ifnum \@colnum>\z@
2522           \@bitor\@currtype\@deferlist
2523           \if@test
2524           \else
2525             \@bitor\@currtype\@botlist
2526             \if@test
2527               \@addtobot
2528             \else
2529               \ifodd \count\@currbox
2530                 \advance \@reqcolroom \intextsep
2531                 \ifdim \@colroom>\@reqcolroom
2532                   \global \advance \@colnum \m@ne
2533                   \global \advance \@textfloatsheight \ht\@currbox
2534                   \global \advance \@textfloatsheight 2\intextsep
2535                   \@cons \@midlist \@currbox
2536                   \if@nobreak
2537                     \nobreak
2538                     \@nobreakfalse
2539                     \everypar{}%
2540                   \else
2541                     \addpenalty \interlinepenalty
2542                   \fi
2543                   \vskip \intextsep
2544                   \unvbox\@currbox %AO
2545                   \penalty\interlinepenalty
2546                   \vskip\intextsep
2547                   \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi
2548                   \outputpenalty \z@
2549                   \@inserttrue
2550                 \fi
2551               \fi
2552               \if@insert
2553               \else
2554                 \@addtotoporbot
2555               \fi
2556             \fi
2557           \fi
2558         \fi
2559       \fi
2560     \fi
2561   \fi
2562   \if@insert
2563   \else
2564     \@resethfps
2565     \@cons\@deferlist\@currbox
2566   \fi
2567}%
2568\@twocolumnfalse
2569\let\@twocolumntrue\@twocolumnfalse
2570\def\@addmarginpar{%
2571 \@next\@marbox\@currlist{%
2572  \@cons\@freelist\@marbox\@cons\@freelist\@currbox
2573 }\@latexbug
2574 \setbox\@marbox\hb@xt@\columnwidth{%
2575  \csname @addmarginpar@\thepagegrid\endcsname{%
2576   \hskip-\marginparsep\hskip-\marginparwidth
2577   \box\@currbox
2578  }{%
2579   \hskip\columnwidth\hskip\marginparsep
2580   \box\@marbox
2581  }%
2582  \hss
2583 }%
2584 \setbox\z@\box\@currbox
2585    \@tempdima\@mparbottom
2586    \advance\@tempdima -\@pageht
2587    \advance\@tempdima\ht\@marbox
2588 \@ifdim{\@tempdima >\z@}{%
2589   \@latex@warning@no@line {Marginpar on page \thepage\space moved}%
2590 }{%
2591   \@tempdima\z@
2592 }%
2593    \global\@mparbottom\@pageht
2594    \global\advance\@mparbottom\@tempdima
2595    \global\advance\@mparbottom\dp\@marbox
2596    \global\advance\@mparbottom\marginparpush
2597    \advance\@tempdima -\ht\@marbox
2598    \global\setbox \@marbox
2599                   \vbox {\vskip \@tempdima
2600                          \box \@marbox}%
2601    \global \ht\@marbox \z@
2602    \global \dp\@marbox \z@
2603    \kern -\@pagedp
2604    \nointerlineskip
2605  \box\@marbox
2606    \nointerlineskip
2607    \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}%
2608}%
2609\newenvironment{turnpage}{%
2610 \def\width@float{\textheight}%
2611 \def\widthd@float{\textheight}%
2612 \appdef\@endfloatbox{%
2613  \@ifxundefined\@currbox{%
2614   \ltxgrid@warn{Cannot rotate! Not a float}%
2615  }{%
2616   \setbox\@currbox\vbox to\textwidth{\vfil\unvbox\@currbox\vfil}%
2617   \global\setbox\@currbox\vbox{\rotatebox{90}{\box\@currbox}}%
2618  }%
2619 }%
2620}{%
2621}%
2622\def\rotatebox@dummy#1#2{%
2623 \ltxgrid@warn{You must load the graphics or graphicx package in order to use the turnpage environment}%
2624 #2%
2625}%
2626\AtBeginDocument{%
2627 \@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}%
2628}%
2629\@namedef{output@-1073741824}{%"40000000
2630 \deadcycles\z@
2631 \setbox\z@\box\@cclv
2632}%
2633\mathchardef\save@column@pen=10016
2634\@namedef{output@-\the\save@column@pen}{\save@column}%
2635\let \@cclv@saved \@holdpg
2636\let \@holdpg \@undefined
2637\def\save@column{%
2638 \@ifvoid\@cclv@saved{%
2639\set@top@firstmark
2640\global\@topmark@saved\expandafter{\@@topmark}%
2641 }{}%
2642\global\setbox\@cclv@saved\vbox{%
2643  \@ifvoid\@cclv@saved{}{%
2644 \unvbox\@cclv@saved
2645 \marry@baselines
2646}%
2647\unvbox\@cclv
2648\lose@breaks
2649\setbox\z@\lastbox
2650}%
2651}%
2652\newtoks\@topmark@saved
2653\def\prep@cclv{%
2654 \setbox\z@\box\@cclv
2655 \setbox\@cclv\box\@cclv@saved
2656 \vbadness\@M
2657}%
2658\mathchardef\save@column@insert@pen=10017
2659\@namedef{output@-\the\save@column@insert@pen}{\toggle@insert\savecolumn@holding\savecolumn@moving}%
2660\def\savecolumn@holding{%
2661\@if@exceed@pagegoal{\unvcopy\@cclv\setbox\z@\lastbox}{%
2662  \setbox\z@\vbox{\unvcopy\@cclv\setbox\z@\lastbox}%
2663  \outputdebug@sw{{\tracingall\scrollmode\showbox\z@}}{}%
2664\dimen@\ht\@cclv\advance\dimen@-\ht\z@
2665\dead@cycle@repair@protected\dimen@
2666}{%
2667\dead@cycle
2668}%
2669}%
2670\def\savecolumn@moving{%
2671 \@cclv@nontrivial@sw{%
2672  \save@column
2673 }{%
2674  {\setbox\z@\box\@cclv}%
2675 }%
2676\@ifvoid\footins{}{%
2677\outputdebug@sw{{\tracingall\scrollmode\showbox\footins}}{}%
2678\global\setbox\footins@saved\vbox{\unvbox\footins@saved\marry@baselines\unvbox\footins}%
2679\protect@penalty\save@column@insert@pen
2680}%
2681}%
2682\newbox\footins@saved
2683\mathchardef\save@message@pen=10018
2684\@namedef{output@-\the\save@message@pen}{\save@message}%
2685\def\save@message{%
2686 \setbox\z@\box\@cclv %FIXME: what if \box\@cclv is not empty?
2687 \toks@\expandafter{\@@firstmark}%
2688 \expandafter\gdef\expandafter\@message@saved\expandafter{\the\toks@}%
2689 \expandafter\do@@mark\expandafter{\the\@topmark@saved}%
2690}%
2691\gdef\@message@saved{}%
2692\mathchardef\execute@message@pen=10019
2693\@namedef{output@-\the\execute@message@pen}{\@message@saved}%
2694\def\execute@message{%
2695 \@execute@message\save@column@pen %Implicit #2
2696}%
2697\def\execute@message@insert#1{%
2698 \@execute@message\save@column@insert@pen{\setbox\footins\box\footins@saved#1}%
2699}%
2700\long\def\@execute@message#1#2{%
2701 \begingroup
2702  \dimen@\prevdepth\@ifdim{\dimen@<\z@}{\dimen@\z@}{}%
2703  \setbox\z@\vbox{%
2704   \protect@penalty#1%
2705   \protection@box
2706   \toks@{\prep@cclv#2}%
2707   \@@mark{\the\toks@}%
2708   \penalty-\save@message@pen
2709   \setbox\z@\null\dp\z@\dimen@\ht\z@-\dimen@
2710   \nointerlineskip\box\z@
2711   \penalty-\execute@message@pen
2712  }\unvbox\z@
2713 \endgroup
2714}%
2715\def\do@output@cclv{\execute@message}%
2716\def\do@output@MVL#1{%
2717 \@ifvmode{%
2718  \begingroup\execute@message{\unvbox\@cclv#1}\endgroup
2719 }{%
2720  \@ifhmode{%
2721   \vadjust{\execute@message{\unvbox\@cclv#1}}%
2722  }{%
2723   \@latexerr{\string\do@output@MVL\space cannot be executed in this mode!}\@eha
2724  }%
2725 }%
2726}%
2727\def\lose@breaks{%
2728 \loopwhile{%
2729  \count@\lastpenalty
2730  \@ifnum{\count@=\@M}{% 10000 is a TeX magic number!
2731   \unpenalty\true@sw
2732  }{%
2733   \false@sw
2734  }%
2735 }%
2736}%
2737\def\removestuff{\do@output@MVL{\unskip\unpenalty}}%
2738\def\removephantombox{%
2739 \vadjust{%
2740  \execute@message{%
2741   \unvbox\@cclv
2742   \setbox\z@\lastbox
2743   \unskip
2744   \unskip
2745   \unpenalty
2746   \penalty\predisplaypenalty
2747   \vskip\abovedisplayskip
2748  }%
2749 }%
2750}%
2751\def\addstuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@addstuff{#1}{#2}}}\@tempa}%
2752\def\@addstuff#1#2{%
2753 \skip@\lastskip\unskip
2754 \count@\lastpenalty\unpenalty
2755 \@if@empty{#1}{}{\penalty#1\relax}%
2756 \@ifnum{\count@=\z@}{}{\penalty\count@}%
2757 \vskip\skip@
2758 \@if@empty{#2}{}{\vskip#2\relax}%
2759}%
2760\def\replacestuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@replacestuff{#1}{#2}}}\@tempa}%
2761\def\@replacestuff#1#2{%
2762 \skip@\lastskip\unskip
2763 \count@\lastpenalty\unpenalty
2764 \@if@empty{#1}{}{%
2765 \@ifnum{\count@>\@M}{}{%
2766   \@ifnum{\count@=\z@}{\count@=#1\relax}{%
2767    \@ifnum{\count@<#1\relax}{}{%
2768     \count@=#1\relax
2769    }%
2770   }%
2771 }%
2772 }%
2773 \@ifnum{\count@=\z@}{}{\penalty\count@}%
2774 \@if@empty{#2}{}{%
2775  \@tempskipa#2\relax
2776  \@ifdim{\z@>\@tempskipa}{%
2777   \advance\skip@-\@tempskipa
2778  }{%
2779   \@ifdim{\skip@>\@tempskipa}{}{%
2780    \skip@\@tempskipa
2781   }%
2782  }%
2783 }%
2784 \vskip\skip@
2785}%
2786\def\move@insertions{\global\holdinginserts\z@}%
2787\def\hold@insertions{\global\holdinginserts\@ne}%
2788\hold@insertions
2789\def\move@insert@sw{\@ifnum{\holdinginserts=\z@}}%
2790\def\toggle@insert#1#2{%
2791 \@ifnum{\holdinginserts=\z@}{\hold@insertions#2}{\move@insertions#1}%
2792}%
2793\def\do@columngrid#1#2{%
2794 \par
2795 \expandafter\let\expandafter\@tempa\csname open@column@#1\endcsname
2796 \@ifx{\relax\@tempa}{%
2797  \ltxgrid@warn{Unknown page grid #1. No action taken}%
2798 }{%
2799  \do@output@MVL{\start@column{#1}{#2}}%
2800 }%
2801}%
2802\def\start@column#1#2{%
2803 \def\@tempa{#1}\@ifx{\@tempa\thepagegrid}{%
2804  \ltxgrid@info{Already in page grid \thepagegrid. No action taken}%
2805 }{%
2806  \expandafter\execute@message@insert
2807  \expandafter{%
2808               \csname shut@column@\thepagegrid\expandafter\endcsname
2809               \csname open@column@#1\endcsname{#2}%
2810               \set@vsize
2811             }%
2812 }%
2813}%
2814\def\thepagegrid{one}%
2815\newbox\pagesofar
2816\newbox\footbox
2817\newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}%
2818\let\onecolumn\@undefined
2819\def\open@column@one#1{%
2820 \unvbox\pagesofar
2821 \gdef\thepagegrid{one}%
2822 \global\pagegrid@col#1%
2823 \global\pagegrid@cur\@ne
2824 \set@colht
2825 \set@column@hsize\pagegrid@col
2826}%
2827\def\shut@column@one{%
2828 \@makecol
2829 \global\setbox\pagesofar\vbox{\unvbox\@outputbox\recover@footins}%
2830 \set@colht
2831}%
2832\def\float@column@one{%
2833 \@makecol
2834 \@outputpage
2835}%
2836\def\end@column@one{%
2837 \unvbox\@cclv\setbox\z@\lastbox
2838 \protect@penalty\do@newpage@pen
2839}%
2840\def\output@column@one{%
2841 \@outputpage
2842}%
2843\def\@addmarginpar@one{%
2844 \@if@sw\if@mparswitch\fi{%
2845  \@ifodd\c@page{\false@sw}{\true@sw}%
2846 }{\false@sw}{%
2847  \@if@sw\if@reversemargin\fi{\false@sw}{\true@sw}%
2848 }{%
2849  \@if@sw\if@reversemargin\fi{\true@sw}{\false@sw}%
2850 }%
2851}%
2852\def\@floatselect@sw@one#1{\true@sw}%
2853\def\onecolumngrid@push{%
2854 \do@output@MVL{%
2855  \@ifnum{\pagegrid@col=\@ne}{%
2856   \global\let\restorecolumngrid\@empty
2857  }{%
2858   \xdef\restorecolumngrid{%
2859    \noexpand\start@column{\thepagegrid}{\the\pagegrid@col}%
2860   }%
2861   \start@column{one}{\@ne}%
2862  }%
2863 }%
2864}%
2865\def\onecolumngrid@pop{%
2866 \do@output@MVL{\restorecolumngrid}%
2867}%
2868\newcommand\twocolumngrid{\do@columngrid{mlt}{\tw@}}%
2869\let\twocolumn\@undefined
2870\let\@topnewpage\@undefined
2871\def\open@column@mlt#1{%
2872 \gdef\thepagegrid{mlt}%
2873 \global\pagegrid@col#1%
2874 \global\pagegrid@cur\@ne
2875 \set@column@hsize\pagegrid@col
2876 \set@colht
2877}%
2878\def\shut@column@mlt{%
2879 \@cclv@nontrivial@sw{%
2880\@makecol
2881\@ifnum{\pagegrid@cur<\pagegrid@col}{%
2882\expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
2883\global\advance\pagegrid@cur\@ne
2884}{}%
2885 }{%
2886  {\setbox\z@\box\@cclv}%
2887 }%
2888\@ifnum{\pagegrid@cur>\@ne}{%
2889\csname balance@\the\pagegrid@col\endcsname
2890\grid@column{}%
2891\@combinepage
2892\@combinedblfloats
2893\global\setbox\pagesofar\box\@outputbox
2894 }{}%
2895 \set@colht
2896}%
2897\def\float@column@mlt{%
2898  \@combinepage
2899  \@combinedblfloats
2900  \@outputpage
2901  \global\pagegrid@cur\@ne
2902  \protect@penalty\do@startpage@pen
2903}%
2904\def\end@column@mlt{%
2905 \@ifx@empty\@toplist{%
2906  \@ifx@empty\@botlist{%
2907   \@ifx@empty\@dbltoplist{%
2908    \@ifx@empty\@deferlist{%
2909     \@ifnum{\pagegrid@cur=\@ne}{%
2910      \false@sw
2911     }{%
2912      \true@sw
2913     }%
2914    }{%
2915     \true@sw
2916    }%
2917   }{%
2918    \true@sw
2919   }%
2920  }{%
2921   \true@sw
2922  }%
2923 }{%
2924  \true@sw
2925 }%
2926 % true = kick out a column and try again
2927 {%
2928  \@cclv@nontrivial@sw{%
2929   \unvbox\@cclv\setbox\z@\lastbox
2930  }{%
2931   \unvbox\@cclv\setbox\z@\lastbox\unskip\null
2932  }%
2933  \protect@penalty\do@newpage@pen
2934  \protect@penalty\do@endpage@pen
2935 }{%
2936  \unvbox\@cclv\setbox\z@\lastbox
2937 }%
2938}%
2939\def\output@column@mlt{%
2940 \@ifnum{\pagegrid@cur<\pagegrid@col}{%
2941  \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox
2942  \global\advance\pagegrid@cur\@ne
2943 }{%
2944  \set@adj@colht\dimen@
2945  \grid@column{}%{\dimen@}%
2946  \@combinepage
2947  \@combinedblfloats
2948  \@outputpage
2949  \global\pagegrid@cur\@ne
2950  \protect@penalty\do@startpage@pen
2951 }%
2952}%
2953\let\@outputdblcol\@undefined
2954\def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}%
2955\def\@addmarginpar@mlt{% emits a boolean
2956 \@ifnum{\pagegrid@cur=\@ne}%
2957}%
2958\let\pagegrid@cur\col@number
2959\let\col@number\@undefined
2960\newcount\pagegrid@col
2961\pagegrid@cur\@ne
2962\expandafter\let\csname col@\the\pagegrid@cur\endcsname\@leftcolumn
2963\let\@leftcolumn\@undefined
2964\pagegrid@col\tw@
2965\def\pagegrid@init{%
2966 \advance\pagegrid@cur\@ne
2967 \@ifnum{\pagegrid@cur<\pagegrid@col}{%
2968  \csname newbox\expandafter\endcsname\csname col@\the\pagegrid@cur\endcsname
2969  \pagegrid@init
2970 }{%
2971 }%
2972}%
2973\appdef\class@documenthook{%
2974 \pagegrid@init
2975}%
2976\def\grid@column#1{%
2977 \global\setbox\@outputbox\vbox{%
2978  \hb@xt@\textwidth{%
2979   \vrule\@height\z@\@width\z@\@if@empty{#1}{}{\@depth#1}%
2980   \pagegrid@cur\@ne
2981   \append@column
2982   \box@column\@outputbox
2983  }%
2984  \vskip\z@skip % FIXME: page depth!
2985 }%
2986}%
2987\def\append@column{%
2988 \@ifnum{\pagegrid@cur<\pagegrid@col}{%
2989  \expandafter\box@column\csname col@\the\pagegrid@cur\endcsname
2990  \hfil
2991  \vrule \@width\columnseprule
2992  \hfil
2993  \advance\pagegrid@cur\@ne
2994  \append@column
2995 }{%
2996 }%
2997}%
2998\def\box@column#1{%
2999 \raise\topskip
3000 \hb@xt@\columnwidth{%
3001  \dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}%
3002  \count@\vbadness\vbadness\@M
3003  \dimen@ii\vfuzz\vfuzz\maxdimen
3004  \outputdebug@sw{\saythe\@colht\saythe\dimen@}{}%
3005  \vtop to\dimen@
3006  {\hrule\@height\z@
3007   \unvbox#1%
3008   \raggedcolumn@skip
3009  }%
3010  \vfuzz\dimen@ii
3011  \vbadness\count@
3012  \hss
3013 }%
3014}%
3015\def\marry@baselines{%
3016 \vskip\marry@skip\relax
3017}%
3018\gdef\marry@skip{\z@skip}%
3019\def\set@marry@skip{%
3020\begingroup
3021  \skip@\baselineskip\advance\skip@-\topskip
3022  \@ifdim{\skip@>\z@}{%
3023   \xdef\marry@skip{\the\skip@}%
3024  }{}%
3025 \endgroup
3026}%
3027\AtBeginDocument{%
3028 \@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}%
3029}%
3030\def\raggedcolumn@skip{%
3031 \vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax
3032}%
3033\def\@combinepage{%
3034 \@ifvoid\pagesofar{}{%
3035  \setbox\@outputbox\vbox{%
3036   \unvbox\pagesofar
3037   \marry@baselines
3038   \unvbox\@outputbox
3039  }%
3040 }%
3041 \@ifvoid\footbox{}{%
3042  \setbox\@outputbox\vbox{%
3043   \unvbox\@outputbox
3044   \marry@baselines
3045   \unvbox\footbox
3046  }%
3047 }%
3048}%
3049\def\@combinedblfloats{%
3050 \@ifx@empty\@dbltoplist{}{%
3051  \setbox\@tempboxa\vbox{}%
3052  \let\@elt\@comdblflelt\@dbltoplist
3053  \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}%
3054  \global\let\@dbltoplist\@empty
3055  \setbox\@outputbox\vbox{%
3056   %\boxmaxdepth\maxdepth   %% probably not needed, CAR
3057   \unvbox\@tempboxa\unskip
3058   \@ifnum{\@dbltopnum>\m@ne}{\dblfigrule}{}%FIXME: how is \@dbltopnum maintained?
3059   \vskip\dbltextfloatsep
3060   \unvbox\@outputbox
3061  }%
3062 }%
3063}%
3064\def\set@column@hsize#1{%
3065 \pagegrid@col#1%
3066 \global\columnwidth\textwidth
3067 \global\advance\columnwidth\columnsep
3068 \global\divide\columnwidth\pagegrid@col
3069 \global\advance\columnwidth-\columnsep
3070 \global\hsize\columnwidth
3071 \global\linewidth\columnwidth
3072 \skip@\baselineskip\advance\skip@-\topskip
3073 \@ifnum{\pagegrid@col>\@ne}{\set@marry@skip}{}%
3074}%
3075\def\set@colht{%
3076 \set@adj@textheight\@colht
3077 \global\let\enlarge@colroom\@empty
3078 \set@colroom
3079}%
3080\def\set@adj@textheight#1{%
3081 #1\textheight
3082 \def\@elt{\adj@page#1}%
3083 \@booleantrue\firsttime@sw\@dbltoplist
3084 \let\@elt\relax
3085 \global#1#1\relax
3086 \outputdebug@sw{\saythe#1}{}%
3087}%
3088\def\set@colroom{%
3089 \set@adj@colht\@colroom
3090 \@if@empty\enlarge@colroom{}{%
3091  \global\advance\@colroom\enlarge@colroom\relax
3092 }%
3093 \outputdebug@sw{\saythe\@colroom}{}%
3094 \@ifdim{\@colroom>\topskip}{}{%
3095  \ltxgrid@info{Not enough room: \string\@colroom=\the\@colroom; increasing to \the\topskip}%
3096  \@colroom\topskip
3097 }%
3098 \global\@colroom\@colroom
3099 \set@vsize
3100}%
3101\def\set@vsize{%
3102 \global\vsize\@colroom
3103 \outputdebug@sw{\saythe\vsize}{}%
3104}%
3105\def\set@adj@colht#1{%
3106 #1\@colht
3107 \@ifvoid\pagesofar{}{%
3108  \advance#1-\ht\pagesofar\advance#1-\dp\pagesofar
3109 }%
3110 \@ifvoid\footbox{}{%
3111  \advance#1-\ht\footbox\advance#1-\dp\footbox
3112 }%
3113 \def\@elt{\adj@column#1}%
3114 \@booleantrue\firsttime@sw\@toplist
3115 \@booleantrue\firsttime@sw\@botlist
3116 \let\@elt\relax
3117 \outputdebug@sw{\saythe#1}{}%
3118}%
3119\def\adj@column#1#2{%
3120 \advance#1-\ht#2%
3121 \advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}%
3122}%
3123\def\adj@page#1#2{%
3124 \advance#1-\ht#2%
3125 \advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}%
3126}%
3127\appdef\@outputpage{%
3128 \set@colht          % FIXME: needed?
3129 \@floatplacement    % FIXME: needed?
3130 \@dblfloatplacement % FIXME: needed?
3131}%
3132\@namedef{balance@2}{%
3133 \expandafter\balance@two\csname col@1\endcsname\@outputbox
3134 % Avoid a bug by preventing a restore when leaving this group
3135 \global\setbox\csname col@1\endcsname\box\csname col@1\endcsname
3136 \@ifvoid\footbox{}{%
3137  \global\setbox\footbox\vbox{%
3138   \setbox\z@\box\@tempboxa
3139   \let\recover@footins\relax
3140   \balance@two\footbox\@tempboxa
3141   \hb@xt@\textwidth{\box\footbox\hfil\box\@tempboxa}%
3142  }%
3143 }%
3144}%
3145\def\balance@two#1#2{%
3146\outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}%
3147 \setbox\@ne\vbox{%
3148  \@ifvoid#1{}{%
3149   \unvcopy#1\recover@footins
3150   \@ifvoid#2{}{\marry@baselines}%
3151  }%
3152  \@ifvoid#2{}{%
3153   \unvcopy#2\recover@footins
3154  }%
3155 }%
3156 \dimen@\ht\@ne\divide\dimen@\tw@
3157 \dimen@i\dimen@
3158 \vbadness\@M
3159 \vfuzz\maxdimen
3160 \loopwhile{%
3161  \dimen@i=.5\dimen@i
3162  \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
3163  \setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@
3164  \setbox\z@ \vbox{%
3165   \unvcopy\z@
3166   \setbox\z@\vbox{\unvbox\z@ \setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax
3167  }%
3168  \setbox\tw@\vbox{%
3169   \unvcopy\tw@
3170   \setbox\z@\vbox{\unvbox\tw@\setbox\z@\lastbox\aftergroup\vskip\aftergroup-\expandafter}\the\dp\z@\relax
3171  }%
3172  \dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@
3173  \@ifdim{\dimen@i>.5\p@}{%
3174   \advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i
3175   \true@sw
3176  }{%
3177   \@ifdim{\dimen@ii<\z@}{%
3178    \advance\dimen@\tw@\dimen@i
3179    \true@sw
3180   }{%
3181    \false@sw
3182   }%
3183  }%
3184 }%
3185 \outputdebug@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}%
3186\@ifdim{\ht\z@=\z@}{%
3187\@ifdim{\ht\tw@=\z@}{%
3188\true@sw
3189}{%
3190\false@sw
3191}%
3192}{%
3193\true@sw
3194}%
3195{%
3196}{%
3197\ltxgrid@info{Unsatifactorily balanced columns: giving up}%
3198\setbox\tw@\box#1%
3199\setbox\z@ \box#2%
3200}%
3201 \setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}%
3202 \setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}%
3203 \set@colroom
3204\dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}%
3205\@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}%
3206 \outputdebug@sw{\saythe{\ht\z@}\saythe{\ht\tw@}\saythe\@colroom\saythe\dimen@}{}%
3207\setbox#1\vbox to\dimen@{\unvbox\tw@\unskip\raggedcolumn@skip}%
3208\setbox#2\vbox to\dimen@{\unvbox\z@ \unskip\raggedcolumn@skip}%
3209\outputdebug@sw{{\tracingall\scrollmode\showbox#1\showbox#2}}{}%
3210}%
3211\def\recover@footins{%
3212 \skip\z@ \lastskip\unskip
3213 \skip\@ne\lastskip\unskip
3214 \setbox\z@\lastbox
3215 \@ifvbox\z@{%
3216\setbox\z@\vbox{%
3217\unvbox\z@
3218\setbox\z@\lastbox
3219\@ifvoid\z@{}{%
3220\global\setbox\footbox\vbox{%
3221 \unvbox\footbox
3222     \@ifvbox\z@{%
3223   \unvbox\z@
3224  }{%
3225   \box\z@
3226  }%
3227}%
3228}%
3229}%
3230 }{}%
3231 \outputdebug@sw{{\tracingall\scrollmode\showbox\footbox}}{}%
3232}%
3233\prepdef\@begindocumenthook{%
3234 \open@column@one\@ne
3235 \set@colht
3236 \@floatplacement
3237 \@dblfloatplacement
3238}%
3239\def\longtable@longtable{%
3240 \par
3241 \ifx\multicols\@undefined\else\ifnum\col@number>\@ne\@twocolumntrue\fi\fi
3242 \if@twocolumn\LT@err{longtable not in 1-column mode}\@ehc\fi
3243 \begingroup
3244 \@ifnextchar[\LT@array{\LT@array[x]}%
3245}%
3246\def\longtable@new{%
3247 \par
3248  \@ifnextchar[\LT@array{\LT@array[x]}%
3249}%
3250\def\endlongtable@longtable{%
3251  \crcr
3252  \noalign{%
3253    \let\LT@entry\LT@entry@chop
3254    \xdef\LT@save@row{\LT@save@row}}%
3255  \LT@echunk
3256  \LT@start
3257  \unvbox\z@
3258  \LT@get@widths
3259  \if@filesw
3260    {\let\LT@entry\LT@entry@write\immediate\write\@auxout{%
3261      \gdef\expandafter\noexpand
3262        \csname LT@\romannumeral\c@LT@tables\endcsname
3263          {\LT@save@row}}}%
3264  \fi
3265  \ifx\LT@save@row\LT@@save@row
3266  \else
3267    \LT@warn{Column \@width s have changed\MessageBreak
3268             in table \thetable}%
3269    \LT@final@warn
3270  \fi
3271  \endgraf\penalty -\LT@end@pen
3272  \endgroup
3273  \global\@mparbottom\z@
3274  \pagegoal\vsize
3275  \endgraf\penalty\z@\addvspace\LTpost
3276  \ifvoid\footins\else\insert\footins{}\fi
3277}%
3278\def\endlongtable@new{%
3279  \crcr
3280  \noalign{%
3281   \let\LT@entry\LT@entry@chop
3282   \xdef\LT@save@row{\LT@save@row}%
3283  }%
3284  \LT@echunk
3285  \LT@start
3286  \unvbox\z@
3287  \LT@get@widths
3288  \@if@sw\if@filesw\fi{%
3289   {%
3290    \let\LT@entry\LT@entry@write
3291    \immediate\write\@auxout{%
3292     \gdef\expandafter\noexpand\csname LT@\romannumeral\c@LT@tables\endcsname
3293     {\LT@save@row}%
3294    }%
3295   }%
3296  }{}%
3297  \@ifx\LT@save@row\LT@@save@row{}{%
3298   \LT@warn{%
3299    Column \@width s have changed\MessageBreak in table \thetable
3300   }\LT@final@warn
3301  }%
3302  \endgraf
3303  \nobreak
3304  \box\@ifvoid\LT@lastfoot{\LT@foot}{\LT@lastfoot}%
3305 \global\@mparbottom\z@
3306 \endgraf
3307 \LT@post
3308}%
3309\def\LT@start@longtable{%
3310 \let\LT@start\endgraf
3311 \endgraf
3312 \penalty\z@
3313 \vskip\LTpre
3314 \dimen@\pagetotal
3315 \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
3316 \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi
3317 \advance\dimen@ \ht\LT@foot
3318 \dimen@ii\vfuzz\vfuzz\maxdimen
3319   \setbox\tw@\copy\z@
3320   \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox
3321   \setbox\tw@\vbox{\unvbox\tw@}%
3322 \vfuzz\dimen@ii
3323 \advance\dimen@ \ht
3324       \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi
3325 \advance\dimen@\dp
3326       \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi
3327 \advance\dimen@ -\pagegoal
3328 \ifdim \dimen@>\z@\vfil\break\fi
3329     \global\@colroom\@colht
3330 \ifvoid\LT@foot\else
3331   \advance\vsize-\ht\LT@foot
3332   \global\advance\@colroom-\ht\LT@foot
3333   \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@
3334   \maxdepth\z@
3335 \fi
3336 \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi
3337 \output{\LT@output}%
3338}%
3339\def\LT@start@new{%
3340 \let\LT@start\endgraf
3341 \endgraf
3342 \markthr@@{}%
3343 \LT@pre
3344 \@ifvoid\LT@firsthead{\LT@top}{\box\LT@firsthead\nobreak}%
3345 \mark@envir{longtable}%
3346}%
3347\def\LT@end@hd@ft@longtable#1{%
3348 \LT@echunk
3349 \ifx\LT@start\endgraf
3350  \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
3351 \fi
3352 \setbox#1\box\z@
3353 \LT@get@widths\LT@bchunk
3354}%
3355\def\LT@end@hd@ft@new#1{%
3356 \LT@echunk
3357 \@ifx{\LT@start\endgraf}{%
3358  \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}%
3359 }%
3360 \global\setbox#1\box\z@
3361 \LT@get@widths
3362 \LT@bchunk
3363}%
3364\def\LT@array@longtable[#1]#2{%
3365  \refstepcounter{table}\stepcounter{LT@tables}%
3366  \if l#1%
3367    \LTleft\z@ \LTright\fill
3368  \else\if r#1%
3369    \LTleft\fill \LTright\z@
3370  \else\if c#1%
3371    \LTleft\fill \LTright\fill
3372  \fi\fi\fi
3373  \let\LT@mcol\multicolumn
3374  \let\LT@@tabarray\@tabarray
3375  \let\LT@@hl\hline
3376  \def\@tabarray{%
3377    \let\hline\LT@@hl
3378    \LT@@tabarray}%
3379  \let\\\LT@tabularcr\let\tabularnewline\\%
3380  \def\newpage{\noalign{\break}}%
3381  \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
3382  \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
3383  \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption
3384  \@tempdima\ht\strutbox
3385  \let\@endpbox\LT@endpbox
3386  \ifx\extrarowheight\@undefined
3387    \let\@acol\@tabacol
3388    \let\@classz\@tabclassz \let\@classiv\@tabclassiv
3389    \def\@startpbox{\vtop\LT@startpbox}%
3390    \let\@@startpbox\@startpbox
3391    \let\@@endpbox\@endpbox
3392    \let\LT@LL@FM@cr\@tabularcr
3393  \else
3394    \advance\@tempdima\extrarowheight
3395    \col@sep\tabcolsep
3396    \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr
3397  \fi
3398  \setbox\@arstrutbox\hbox{\vrule
3399    \@height \arraystretch \@tempdima
3400    \@depth \arraystretch \dp \strutbox
3401    \@width \z@}%
3402  \let\@sharp##\let\protect\relax
3403   \begingroup
3404    \@mkpream{#2}%
3405    \xdef\LT@bchunk{%
3406       \global\advance\c@LT@chunks\@ne
3407       \global\LT@rows\z@\setbox\z@\vbox\bgroup
3408       \LT@setprevdepth
3409       \tabskip\LTleft\halign to\hsize\bgroup
3410      \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}%
3411  \endgroup
3412  \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
3413  \LT@make@row
3414  \m@th\let\par\@empty
3415  \everycr{}\lineskip\z@\baselineskip\z@
3416  \LT@bchunk
3417}%
3418\def\LT@LR@l{\LTleft\z@   \LTright\fill}%
3419\def\LT@LR@r{\LTleft\fill \LTright\z@  }%
3420\def\LT@LR@c{\LTleft\fill \LTright\fill}%
3421\def\LT@array@new[#1]#2{%
3422 \refstepcounter{table}\stepcounter{LT@tables}%
3423 \table@hook
3424 \LTleft\fill \LTright\fill
3425 \csname LT@LR@#1\endcsname
3426 \let\LT@mcol\multicolumn
3427 \let\LT@@hl\hline
3428 \prepdef\@tabarray{\let\hline\LT@@hl}%
3429 \let\\\LT@tabularcr
3430 \let\tabularnewline\\%
3431 \def\newpage{\noalign{\break}}%
3432 \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}%
3433 \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}%
3434 \let\hline\LT@hline
3435 \let\kill\LT@kill
3436 \let\caption\LT@caption
3437 \@tempdima\ht\strutbox
3438 \let\@endpbox\LT@endpbox
3439 \@ifxundefined\extrarowheight{%
3440  \let\@acol\@tabacol
3441  \let\@classz\@tabclassz
3442  \let\@classiv\@tabclassiv
3443  \def\@startpbox{\vtop\LT@startpbox}%
3444  \let\@@startpbox\@startpbox
3445  \let\@@endpbox\@endpbox
3446  \let\LT@LL@FM@cr\@tabularcr
3447 }{%
3448  \advance\@tempdima\extrarowheight
3449  \col@sep\tabcolsep
3450  \let\@startpbox\LT@startpbox
3451  \let\LT@LL@FM@cr\@arraycr
3452 }%
3453 \let\@acoll\@tabacoll
3454 \let\@acolr\@tabacolr
3455 \let\@acol\@tabacol
3456 \setbox\@arstrutbox\hbox{%
3457  \vrule
3458  \@height \arraystretch \@tempdima
3459  \@depth \arraystretch \dp \strutbox
3460  \@width \z@
3461 }%
3462 \let\@sharp##%
3463 \let\protect\relax
3464 \begingroup
3465  \@mkpream{#2}%
3466  \@mkpream@relax
3467  \edef\@preamble{\@preamble}%
3468  \prepdef\@preamble{%
3469   \global\advance\c@LT@chunks\@ne
3470   \global\LT@rows\z@
3471   \setbox\z@\vbox\bgroup
3472    \LT@setprevdepth
3473    \tabskip\LTleft
3474    \halign to\hsize\bgroup
3475     \tabskip\z@
3476     \@arstrut
3477  }%
3478  \appdef\@preamble{%
3479     \tabskip\LTright
3480     \cr
3481  }%
3482  \global\let\LT@bchunk\@preamble
3483 \endgroup
3484 \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols
3485 \LT@make@row
3486 \m@th
3487 \let\par\@empty
3488 \everycr{}%
3489 \lineskip\z@
3490 \baselineskip\z@
3491 \LT@bchunk
3492}%
3493\appdef\table@hook{}%
3494%% Note that it is not enough to define the environment itself; we also have to create the corresponding
3495%% \cmd\output\ routine procedures, which provide for continued footers and headers
3496%% (the very feature of \env{longtable} requiring support in the output routine).
3497%% This same consideration would arise in defining any syntactic extension to \env{longtable}, because
3498%% the environment name itself is exposed in the output routine.
3499\def\switch@longtable{%
3500 \@ifpackageloaded{longtable}{%
3501  \@ifx{\longtable\longtable@longtable}{%
3502   \@ifx{\endlongtable\endlongtable@longtable}{%
3503    \@ifx{\LT@start\LT@start@longtable}{%
3504     \@ifx{\LT@end@hd@ft\LT@end@hd@ft@longtable}{%
3505      \@ifx{\LT@array\LT@array@longtable}{%
3506       \true@sw
3507      }{\false@sw}%
3508     }{\false@sw}%
3509    }{\false@sw}%
3510   }{\false@sw}%
3511  }{\false@sw}%
3512  {%
3513   \class@info{Patching longtable package}%
3514  }{%
3515   \class@info{Patching unrecognized longtable package. (Proceeding with fingers crossed)}%
3516  }%
3517  \let\longtable\longtable@new
3518  \let\endlongtable\endlongtable@new
3519  \let\LT@start\LT@start@new
3520  \let\LT@end@hd@ft\LT@end@hd@ft@new
3521  \let\LT@array\LT@array@new
3522  \newenvironment{longtable*}{%
3523   \onecolumngrid@push
3524   \longtable
3525  }{%
3526   \endlongtable
3527   \onecolumngrid@pop
3528  }%
3529 }{}%
3530}%
3531\def\LT@pre{\penalty\z@\vskip\LTpre}%
3532\def\LT@bot{\nobreak\copy\LT@foot\vfil}%
3533\def\LT@top{\copy\LT@head\nobreak}%
3534\def\LT@post{\penalty\z@\addvspace\LTpost\mark@envir{\curr@envir}}%
3535\def\LT@adj{%
3536 \setbox\z@\vbox{\null}\dimen@-\ht\z@
3537 \setbox\z@\vbox{\unvbox\z@\LT@bot}\advance\dimen@\ht\z@
3538 \global\advance\vsize-\dimen@
3539}%
3540\def\output@init@longtable{\LT@adj}%
3541\def\output@prep@longtable{\setbox\@cclv\vbox{\unvbox\@cclv\LT@bot}}%
3542\def\output@post@longtable{\LT@top}%
3543\let\output@init@theindex\@empty
3544\let\output@prep@theindex\@empty
3545\def\output@post@theindex{%
3546 \@ifodd\c@page{}{%
3547  \@ifnum{\pagegrid@cur=\@ne}{% we have the leftmost column of a verso page
3548   % insert the current top-level continued head
3549  }%
3550 }%
3551}%
3552\def\check@aux{\do@output@MVL{\do@check@aux}}%
3553\def\check@deferlist@stuck#1{%
3554 \@ifx{\@deferlist@postshipout\@empty}{}{%
3555  \@ifx{\@deferlist@postshipout\@deferlist}{%
3556   \@fltstk
3557   \clearpage@sw{%
3558    \ltxgrid@warn{Deferred float stuck during \string\clearpage\space processing}%
3559   }{%
3560    \force@deferlist@stuck#1%
3561   }%
3562  }{%
3563   %Successfully committed float(s)
3564  }%
3565  \global\let\@deferlist@postshipout\@empty
3566 }%
3567}%
3568\def\@fltstk{%
3569 \@latex@warning{A float is stuck (cannot be placed without \string\clearpage)}%
3570}%
3571\appdef\@outputpage{%
3572 \global\let\@deferlist@postshipout\@deferlist
3573}%
3574\def\@next#1#2{%
3575 \@ifx{#2\@empty}{\false@sw}{%
3576  \expandafter\@xnext#2\@@#1#2%
3577  \true@sw
3578 }%
3579}%
3580\def\@xnext\@elt#1#2\@@#3#4{%
3581 \def#3{#1}%
3582 \gdef#4{#2}%
3583 \def\@tempa{#4}\def\@tempb{\@freelist}%
3584 \@ifx{\@tempa\@tempb}{%
3585  \@ifx{#4\@empty}{%
3586   \force@deferlist@empty%{Float register pool exhausted}%
3587  }{}%
3588 }{}%
3589}%
3590\def\force@deferlist@stuck#1{%
3591\force@deferlist@sw{%
3592  \@booleantrue\clearpage@sw
3593  \@booleantrue\forcefloats@sw
3594  #1%
3595}{%
3596}%
3597}%
3598\def\force@deferlist@empty{%
3599 \force@deferlist@sw{%
3600  \penalty-\pagebreak@pen
3601  \protect@penalty\do@forcecolumn@pen
3602 }{%
3603 }%
3604}%
3605\@booleanfalse\force@deferlist@sw
3606\mathchardef\do@forcecolumn@pen=10009
3607\@namedef{output@-\the\do@forcecolumn@pen}{\do@forcecolumn}%
3608\def\do@forcecolumn{%
3609 \@booleantrue\clearpage@sw
3610 \@booleantrue\forcefloats@sw
3611 \do@startcolumn
3612}%
3613\def\enlargethispage{%
3614\@ifstar{%
3615\@enlargethispage{}%
3616}{%
3617\@enlargethispage{}%
3618}%
3619}%
3620\def\@enlargethispage#1#2{%
3621 \begingroup
3622  \dimen@#2\relax
3623  \edef\@tempa{#1}%
3624  \edef\@tempa{\noexpand\@@enlargethispage{\@tempa}{\the\dimen@}}%
3625  \expandafter\do@output@MVL\expandafter{\@tempa}%
3626 \endgroup
3627}%
3628\def\@@enlargethispage#1#2{%
3629 \def\@tempa{one}%
3630 \@ifx{\thepagegrid\@tempa}{%
3631  \true@sw
3632 }{%
3633  \def\@tempa{mlt}%
3634  \@ifx{\thepagegrid\@tempa}{%
3635   \@ifnum{\pagegrid@cur=\@ne}{% OK to adjust this page
3636    \gdef\enlarge@colroom{#2}%
3637    \true@sw
3638   }{% Can only adjust this column; give up
3639    \ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}%
3640    \false@sw
3641   }%
3642  }{% Unknown page grid
3643   \ltxgrid@warn{Unable to enlarge a page of this kind.}%
3644   \false@sw
3645  }%
3646 }%
3647 {%
3648  \class@info{Enlarging page \thepage\space by #2}%
3649  \global\advance\@colroom#2\relax
3650  \set@vsize
3651 }{%
3652  % Could not adjust this page
3653 }%
3654}%
3655\let\enlarge@colroom\@empty
3656\let\@kludgeins\@undefined
3657\@booleantrue\textheight@sw
3658\prepdef\@outputpage{%
3659 \textheight@sw{%
3660  \count@\vbadness\vbadness\@M
3661  \dimen@\vfuzz\vfuzz\maxdimen
3662  \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}%
3663  \vfuzz\dimen@
3664  \vbadness\count@
3665 }{}%
3666}%
3667\def\ltxgrid@info{%
3668 \ltxgrid@info@sw{\class@info}{\@gobble}%
3669}%
3670\@booleanfalse\ltxgrid@info@sw
3671\def\ltxgrid@warn{%
3672 \ltxgrid@warn@sw{\class@warn}{\@gobble}%
3673}%
3674\@booleantrue\ltxgrid@warn@sw
3675%% Source File: textcase.dtx
3676%% Copyright 1997 1998 David Carlisle
3677%%
3678%% This file may be distributed under the terms of the LPPL.
3679%% See 00readme.txt for details.
3680\NeedsTeXFormat{LaTeX2e}
3681\ProvidesPackage{textcase}
3682       [1998/11/12 v0.06 Text only upper/lower case changing (DPC)]
3683\def\@uclcnotmath#1#2#3#4{\begingroup
3684      #1%
3685      \def\({$}\let\)\(%
3686      \def\NoCaseChange##1{\noexpand\NoCaseChange{\noexpand##1}}%
3687      \@nonchangecase\label
3688      \@nonchangecase\ref
3689      \@nonchangecase\ensuremath
3690      \def\cite##1##{\toks@{\noexpand\cite##1}\@citex}%
3691      \def\@citex##1{\NoCaseChange{\the\toks@{##1}}}%
3692      \def\reserved@a##1##2{\let#2\reserved@a}%
3693      \expandafter\reserved@a\@uclclist\reserved@b{\reserved@b\@gobble}%
3694      \protected@edef\reserved@a{\endgroup
3695          \noexpand\@skipmath#3#4$\valign$}%
3696      \reserved@a}
3697\def\@nonchangecase#1{\def#1##1{\NoCaseChange{#1{##1}}}}
3698\let\NoCaseChange\@firstofone
3699\def\@skipmath#1#2$#3${%
3700  \@skip@nonchangecase#1#2\NoCaseChange\valign
3701  \ifx\valign#3%
3702  \else
3703    $#3$%
3704    \expandafter\@skipmath\expandafter#1%
3705  \fi}
3706\def\@skip@nonchangecase#1#2\NoCaseChange#3{%
3707  #1{#2}%
3708  \ifx\valign#3%
3709  \else
3710    #3%
3711    \expandafter\@skip@nonchangecase\expandafter#1%
3712  \fi}
3713\DeclareRobustCommand\MakeTextUppercase{%
3714  \@uclcnotmath{\def\i{I}\def\j{J}}{##1##2}\uppercase}
3715\protected@edef\MakeTextUppercase#1{\MakeTextUppercase{#1}}
3716\DeclareRobustCommand\MakeTextLowercase{%
3717  \@uclcnotmath{}{##2##1}\lowercase}
3718\protected@edef\MakeTextLowercase#1{\MakeTextLowercase{#1}}
3719\DeclareOption{overload}{%
3720  \expandafter\let\csname MakeUppercase \expandafter\endcsname
3721                  \csname MakeTextUppercase \endcsname
3722  \expandafter\let\csname MakeLowercase \expandafter\endcsname
3723                  \csname MakeTextLowercase \endcsname}
3724\ProcessOptions
3725\let\ProvidesPackage\ProvidesPackage@latex
3726\let\ProcessOptions\ProcessOptions@latex
3727\let\DeclareOption\DeclareOption@latex
3728\expandafter
3729\let\csname MakeUppercase \expandafter\endcsname
3730    \csname MakeTextUppercase \endcsname
3731\expandafter
3732\let\csname MakeLowercase \expandafter\endcsname
3733    \csname MakeTextLowercase \endcsname
3734\appdef\class@documenthook{%
3735 \switch@longtable
3736}%
3737\appdef\class@documenthook{%
3738 \expandafter\@ifnotrelax\csname boldmath \endcsname{}{%
3739  \expandafter\let\csname boldmath \endcsname\boldmath
3740  \expandafter\def\expandafter\boldmath\expandafter{\expandafter\protect\csname boldmath \endcsname}%
3741 }%
3742}%
3743\appdef\class@documenthook{%
3744 \class@inithook
3745}%
3746\def\class@inithook{}%
3747\appdef\class@inithook{%
3748 \@ifxundefined\twocolumn@sw{\@booleanfalse\twocolumn@sw}{}%
3749}%
3750\appdef\class@inithook{%
3751 \@ifxundefined\footinbib@sw{\@booleanfalse\footinbib@sw}{}%
3752}%
3753\appdef\class@inithook{%
3754 \@ifxundefined\preprintsty@sw{\@booleanfalse\preprintsty@sw}{}%
3755}%
3756\appdef\class@inithook{%
3757 \@ifxundefined\preprint@sw{\@booleanfalse\preprint@sw}{}%
3758 \preprintsty@sw{\@booleantrue\preprint@sw}{}%
3759}%
3760\appdef\class@inithook{%
3761 \@ifxundefined\galley@sw{\@booleanfalse\galley@sw}{}%
3762}%
3763\appdef\class@inithook{%
3764 \@ifxundefined\showPACS@sw{\@booleanfalse\showPACS@sw}{}%
3765 \@ifxundefined\showKEYS@sw{\@booleanfalse\showKEYS@sw}{}%
3766}%
3767\appdef\class@inithook{%
3768 \@ifxundefined\twoside@sw{\@booleanfalse\twoside@sw}{}%
3769 \twoside@sw{\@twosidetrue}{\@twosidefalse}%
3770}%
3771\appdef\class@inithook{%
3772 \@ifxundefined\draft@sw{\@booleanfalse\draft@sw}{}%
3773 \draft@sw{\overfullrule 5\p@}{\overfullrule\z@}%
3774}%
3775\appdef\class@inithook{%
3776 \@ifxundefined\tightenlines@sw{\@booleanfalse\tightenlines@sw}{}%
3777}%
3778\appdef\class@inithook{%
3779 \@ifxundefined\lengthcheck@sw{\@booleanfalse\lengthcheck@sw}{}%
3780}%
3781\appdef\class@inithook{%
3782 \@ifxundefined\eqsecnum@sw{\@booleanfalse\eqsecnum@sw}{}%
3783 \eqsecnum@sw{%
3784  \@addtoreset{equation}{section}%
3785  \def\theequation@prefix{\arabic{section}.}%
3786 }{}%
3787}%
3788\appdef\class@inithook{%
3789 \@ifxundefined\byrevtex@sw{\@booleanfalse\byrevtex@sw}{}%
3790}%
3791\DeclareOption{checkin}{%
3792  \@booleantrue\dateinRH@sw
3793  \@booleantrue\preprintsty@sw
3794  \def\@pointsize{12}%
3795  \@booleantrue\showPACS@sw
3796  \@booleantrue\showKEYS@sw
3797  \def\fp@proc@h{\allow@breaking@tables}%
3798  \def\fp@proc@H{\allow@breaking@tables}%
3799}%
3800\@booleanfalse\dateinRH@sw
3801\def\checkindate{\dateinRH@sw{{\tiny(\today)}}{}}%
3802\def\allow@breaking@tables{%
3803 \def\array@default{v}% tabular can break over pages
3804 \@booleanfalse\floats@sw % table can break over pages
3805}%
3806\DeclareOption{preprint}{%
3807  \@booleantrue\preprintsty@sw
3808  \def\@pointsize{12}%
3809}%
3810\DeclareOption{manuscript}{%
3811 \class@warn{Document class option manuscript is obsolete; use preprint instead}%
3812 \ExecuteOptions{preprint}%
3813}%
3814\DeclareOption{showpacs}{%
3815  \@booleantrue\showPACS@sw
3816}%
3817\DeclareOption{noshowpacs}{%
3818  \@booleanfalse\showPACS@sw
3819}%
3820\DeclareOption{showkeys}{%
3821  \@booleantrue\showKEYS@sw
3822}%
3823\DeclareOption{noshowkeys}{%
3824  \@booleanfalse\showKEYS@sw
3825}%
3826\DeclareOption{balancelastpage}{%
3827  \@booleantrue\balancelastpage@sw
3828}%
3829\DeclareOption{nobalancelastpage}{%
3830  \@booleanfalse\balancelastpage@sw
3831}%
3832\appdef\class@inithook{%
3833 \@ifxundefined\balancelastpage@sw{%
3834  \@booleantrue\balancelastpage@sw
3835 }{}%
3836}%
3837\DeclareOption{nopreprintnumbers}{\@booleanfalse\preprint@sw}%
3838\DeclareOption{preprintnumbers}{\@booleantrue\preprint@sw}%
3839\DeclareOption{hyperref}{%
3840 \class@warn{Class option "hyperref" is no longer supported.^^JEmploy \string\usepackage{hyperref} instead}%
3841}%
3842\DeclareOption{10pt}{\def\@pointsize{10}}
3843\DeclareOption{11pt}{\def\@pointsize{11}}
3844\DeclareOption{12pt}{\def\@pointsize{12}}
3845\DeclareOption{a4paper}
3846   {\setlength\paperheight {297mm}%
3847    \setlength\paperwidth  {210mm}}
3848\DeclareOption{a5paper}
3849   {\setlength\paperheight {210mm}%
3850    \setlength\paperwidth  {148mm}}
3851\DeclareOption{b5paper}
3852   {\setlength\paperheight {250mm}%
3853    \setlength\paperwidth  {176mm}}
3854\DeclareOption{letterpaper}
3855   {\setlength\paperheight {11in}%
3856    \setlength\paperwidth  {8.5in}}
3857\DeclareOption{legalpaper}
3858   {\setlength\paperheight {14in}%
3859    \setlength\paperwidth  {8.5in}}
3860\DeclareOption{executivepaper}
3861   {\setlength\paperheight {10.5in}%
3862    \setlength\paperwidth  {7.25in}}
3863\DeclareOption{landscape}
3864   {\setlength\@tempdima   {\paperheight}%
3865    \setlength\paperheight {\paperwidth}%
3866    \setlength\paperwidth  {\@tempdima}}
3867\DeclareOption{bibnotes}{\@booleantrue\bibnotes@sw}%
3868\DeclareOption{nobibnotes}{\@booleanfalse\bibnotes@sw}%
3869\appdef\class@enddocumenthook{\auto@bib}%
3870\appdef\class@inithook{%
3871 \@ifxundefined\bibnotes@sw{\@booleanfalse\bibnotes@sw}{}%
3872 \bibnotes@sw{%
3873  \let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote
3874 }{%
3875  \let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote
3876 }%
3877}%
3878\DeclareOption{footinbib}{\@booleantrue\footinbib@sw}
3879\DeclareOption{nofootinbib}{\@booleanfalse\footinbib@sw}
3880\DeclareOption{altaffilletter}{\@booleantrue\altaffilletter@sw}%
3881\DeclareOption{altaffilsymbol}{\@booleanfalse\altaffilletter@sw}%
3882\appdef\class@inithook{%
3883 \@ifxundefined\altaffilletter@sw{\@booleanfalse\altaffilletter@sw}{}%
3884}%
3885\DeclareOption{superbib}{%
3886 \def\place@bibnumber{\place@bibnumber@sup}%
3887}%
3888\DeclareOption{citeautoscript}{%
3889 \@booleantrue\citeautoscript@sw
3890}%
3891\@booleanfalse\citeautoscript@sw
3892\DeclareOption{twoside}{\@booleantrue\twoside@sw \@mparswitchfalse}
3893\DeclareOption{oneside}{\@booleanfalse\twoside@sw\@mparswitchtrue}
3894\AtEndOfClass{%
3895 \def\clear@document{%
3896  \close@column
3897 }%
3898 \appdef\class@inithook{%
3899  \@ifxundefined\close@column{%
3900   \let\close@column\close@column@default
3901  }{}%
3902 }%
3903}%
3904\DeclareOption{twocolumn}{%
3905  \@booleantrue\twocolumn@sw
3906}%
3907\DeclareOption{onecolumn}{%
3908  \@booleanfalse\twocolumn@sw
3909}%
3910\DeclareOption{galley}{%
3911  \ExecuteOptions{onecolumn}%
3912  \@booleantrue\galley@sw
3913  \appdef\set@pica@hook{%
3914    \advance\textwidth-\columnsep
3915    \textwidth.5\textwidth
3916  }%
3917}%
3918\DeclareOption{raggedbottom}{\@booleantrue\raggedcolumn@sw}
3919\DeclareOption{flushbottom}{\@booleanfalse\raggedcolumn@sw}
3920\DeclareOption{tightenlines}{\@booleantrue\tightenlines@sw}
3921\DeclareOption{lengthcheck}{%
3922 \@booleantrue\lengthcheck@sw
3923 \@booleantrue\twoside@sw
3924 \@booleantrue\twocolumn@sw
3925}%
3926\DeclareOption{draft}{%
3927 \@booleantrue\draft@sw
3928}%
3929\DeclareOption{final}{%
3930 \@booleanfalse\draft@sw
3931}%
3932\DeclareOption{eqsecnum}{\@booleantrue\eqsecnum@sw}
3933\DeclareOption{secnumarabic}{\@booleantrue\secnumarabic@sw}
3934\DeclareOption{fleqn}{\input{fleqn.clo}}
3935\DeclareOption{floats}{\@booleantrue\floats@sw\@booleanfalse\floatp@sw}
3936\DeclareOption{endfloats}{\@booleanfalse\floats@sw\@booleanfalse\floatp@sw}
3937\DeclareOption{endfloats*}{\@booleanfalse\floats@sw\@booleantrue\floatp@sw}
3938\appdef\class@inithook{%
3939 \@ifxundefined\floats@sw{\@booleantrue\floats@sw}{}%
3940 \@ifxundefined\floatp@sw{\@booleantrue\floatp@sw}{}%
3941}%
3942\DeclareOption{titlepage}{\@booleantrue\titlepage@sw}
3943\DeclareOption{notitlepage}{\@booleanfalse\titlepage@sw}
3944\appdef\defaults@hook{%
3945 \@ifxundefined\titlepage@sw{\@booleanfalse\titlepage@sw}{}%
3946}%
3947\def\change@society#1{%
3948 \def\@tempa{#1}%
3949 \@ifxundefined\@society{}{%
3950  \@ifx{\@tempa\@society}{}{%
3951   \class@warn{Conflicting society \@tempa<>\@society.}%
3952  }%
3953 }%
3954 \let\@society\@tempa
3955}%
3956\DeclareOption{aps}{\change@society{aps}\def\@journal{}}%
3957\DeclareOption{pra}{\change@society{aps}\def\@journal{pra}}%
3958\DeclareOption{prb}{\change@society{aps}\def\@journal{prb}}%
3959\DeclareOption{prc}{\change@society{aps}\def\@journal{prc}}%
3960\DeclareOption{prd}{\change@society{aps}\def\@journal{prd}}%
3961\DeclareOption{pre}{\change@society{aps}\def\@journal{pre}}%
3962\DeclareOption{prl}{\change@society{aps}\def\@journal{prl}}%
3963\DeclareOption{prstab}{\change@society{aps}\def\@journal{prstab}}%
3964\DeclareOption{rmp}{\change@society{aps}\def\@journal{rmp}}%
3965\DeclareOption{osa}{\change@society{osa}\def\@journal{}}%
3966\DeclareOption{osameet}{\change@society{osa}\def\@journal{osameet}}%
3967\DeclareOption{opex}{\change@society{osa}\def\@journal{opex}}%
3968\DeclareOption{tops}{\change@society{osa}\def\@journal{tops}}%
3969\DeclareOption{josa}{\change@society{osa}\def\@journal{josa}}%
3970\DeclareOption{amsfonts}{%
3971  \def\class@amsfonts{\RequirePackage{amsfonts}}%
3972}%
3973\DeclareOption{noamsfonts}{%
3974  \let\class@amsfonts\@empty
3975}%
3976\AtEndOfClass{%
3977 \@ifxundefined\class@amsfonts{}{\class@amsfonts}%
3978}%
3979\DeclareOption{amssymb}{%
3980  \def\class@amssymb{\RequirePackage{amssymb}}%
3981}%
3982\DeclareOption{noamssymb}{%
3983  \let\class@amssymb\@empty
3984}%
3985\AtEndOfClass{%
3986 \@ifxundefined\class@amssymb{}{\class@amssymb}%
3987}%
3988\DeclareOption{amsmath}{%
3989  \def\class@amsmath{\RequirePackage{amsmath}[\ver@amsmath@prefer]}%
3990}%
3991\DeclareOption{noamsmath}{%
3992  \let\class@amsmath\@empty
3993}%
3994\AtEndOfClass{%
3995 \preserve@LaTeX
3996 \@ifxundefined\class@amsmath{}{\class@amsmath}%
3997 \appdef\class@enddocumenthook{\test@amsmath@ver}%
3998}%
3999\appdef\preserve@LaTeX{%
4000 \let\@ifl@aded@LaTeX\@ifl@aded
4001 \let\@ifpackageloaded@LaTeX\@ifpackageloaded
4002 \let\@pkgextension@LaTeX\@pkgextension
4003 \let\@ifpackagelater@LaTeX\@ifpackagelater
4004 \let\@ifl@ter@LaTeX\@ifl@ter
4005 \let\@ifl@t@r@LaTeX\@ifl@t@r
4006 \let\@parse@version@LaTeX\@parse@version
4007}%
4008\appdef\restore@LaTeX{%
4009 \let\@ifl@aded\@ifl@aded@LaTeX
4010 \let\@ifpackageloaded\@ifpackageloaded@LaTeX
4011 \let\@pkgextension\@pkgextension@LaTeX
4012 \let\@ifpackagelater\@ifpackagelater@LaTeX
4013 \let\@ifl@ter\@ifl@ter@LaTeX
4014 \let\@ifl@t@r\@ifl@t@r@LaTeX
4015 \let\@parse@version\@parse@version@LaTeX
4016}%
4017\def\test@amsmath@ver{%
4018 \begingroup
4019  \restore@LaTeX
4020  \@ifpackageloaded{amsmath}{%
4021   \@ifpackagelater{amsmath}{\ver@amsmath@prefer}{}{%
4022     \class@warn{%
4023      You have loaded amsmath, version "\csname ver@amsmath.sty\endcsname",\MessageBreak
4024      but this class requires version "\ver@amsmath@prefer", or later.\MessageBreak
4025      Please update your LaTeX installation.
4026     }%
4027   }%
4028  }{%
4029  }%
4030 \endgroup
4031}%
4032\def\ver@amsmath@prefer{2000/01/15 v2.05 AMS math features}%
4033\DeclareOption{groupedaddress}{\clo@groupedaddress}%
4034\def\clo@groupedaddress{%
4035 \@booleantrue\groupauthors@sw
4036 \@booleantrue\@affils@sw
4037 \@booleanfalse\runinaddress@sw
4038}%
4039\appdef\class@inithook{%
4040 \@ifxundefined\groupauthors@sw{\clo@groupedaddress}{}%
4041}%
4042\DeclareOption{unsortedaddress}{\clo@unsortedaddress}%
4043\def\clo@unsortedaddress{%
4044 \@booleantrue\groupauthors@sw
4045 \@booleanfalse\@affils@sw
4046 \@booleanfalse\runinaddress@sw
4047}%
4048\DeclareOption{runinaddress}{\clo@runinaddress}%
4049\def\clo@runinaddress{%
4050 \@booleantrue\groupauthors@sw
4051 \@booleantrue\@affils@sw
4052 \@booleantrue\runinaddress@sw
4053}%
4054\DeclareOption{superscriptaddress}{\clo@superscriptaddress}%
4055\def\clo@superscriptaddress{%
4056 \@booleanfalse\groupauthors@sw
4057 \@booleantrue\@affils@sw
4058 \@booleanfalse\runinaddress@sw
4059}%
4060\DeclareOption{byrevtex}{\@booleantrue\byrevtex@sw}%
4061\DeclareOption{floatfix}{\@booleantrue\force@deferlist@sw}%
4062\DeclareOption{nofloatfix}{\@booleanfalse\force@deferlist@sw}%
4063\appdef\class@inithook{%
4064 \@ifxundefined\force@deferlist@sw{\@booleanfalse\force@deferlist@sw}{}%
4065}%
4066\gdef\@fltovf{%
4067 \@latex@error{%
4068  Too many unprocessed floats%
4069  \force@deferlist@sw{}{; try class option [floatfix]}%
4070 }\@ehb
4071}%
4072\def\@fltstk{%
4073 \@latex@warning{%
4074  A float is stuck (cannot be placed)%
4075  \force@deferlist@sw{}{; try class option [floatfix]}%
4076 }%
4077}%
4078\DeclareOption{ltxgridinfo}{\@booleantrue\ltxgrid@info@sw}%
4079\DeclareOption{outputdebug}{\@booleantrue\outputdebug@sw}%
4080\DeclareOption{raggedfooter}{\@booleanfalse\textheight@sw}%
4081\DeclareOption{noraggedfooter}{\@booleantrue\textheight@sw}%
4082\DeclareOption{newabstract}{\@booleanfalse\oldabstract@sw}%
4083\DeclareOption{oldabstract}{\@booleantrue \oldabstract@sw}%
4084\appdef\class@inithook{%
4085 \@ifxundefined\oldabstract@sw{\@booleanfalse\oldabstract@sw}{}%
4086 \oldabstract@sw{%
4087  \let@environment{abstract}{abstract-old}%
4088 }{}%
4089}%
4090\DeclareOption*{%
4091 \IfFileExists{\CurrentOption\substyle@ext}{%
4092  \expandafter\change@society\expandafter{\CurrentOption}%
4093 }{%
4094  \OptionNotUsed
4095 }%
4096}%
4097\def\substyle@ext{.rtx}%
4098\AtEndOfClass{%
4099 \@ifxundefined\@society{%
4100  \class@warn{No Society specified, using generic APS style}%
4101  \def\@society{aps}\def\@journal{}%
4102 }{}%
4103 \expandafter\input\expandafter{\@society\substyle@ext}%
4104}%
4105\ExecuteOptions{10pt}
4106\ProcessOptions\relax
4107  \def\ps@headings{%
4108      \let\@oddfoot\@empty\let\@evenfoot\@empty
4109      \def\@evenhead{\thepage\hfil\slshape\leftmark}%
4110      \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
4111      \let\@mkboth\markboth
4112    \def\sectionmark##1{%
4113      \markboth {\MakeUppercase{%
4114        \ifnum \c@secnumdepth >\z@
4115          \thesection\quad
4116        \fi
4117        ##1}}{}}%
4118    \def\subsectionmark##1{%
4119      \markright {%
4120        \ifnum \c@secnumdepth >\@ne
4121          \thesubsection\quad
4122        \fi
4123        ##1}}}%
4124\def\ps@myheadings{%
4125    \let\@oddfoot\@empty\let\@evenfoot\@empty
4126    \def\@evenhead{\thepage\hfil\slshape\leftmark}%
4127    \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
4128    \let\@mkboth\@gobbletwo
4129    \let\sectionmark\@gobble
4130    \let\subsectionmark\@gobble
4131    }%
4132\def\ps@article{%
4133    \@provide\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}%
4134    \@provide\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}%
4135    \@provide\@oddfoot{}%
4136    \@provide\@evenfoot{}%
4137    \let\@mkboth\markboth
4138  \let\sectionmark\@gobble
4139  \let\subsectionmark\@gobble
4140}%
4141\def\ps@article@final{%
4142    \@provide\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}%
4143    \@provide\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}%
4144    \@provide\@oddfoot{}%
4145    \@provide\@evenfoot{}%
4146    \let\@mkboth\markboth
4147    \def\sectionmark##1{%
4148      \markboth{%
4149       \MakeTextUppercase{%
4150        \@ifnum{\c@secnumdepth >\z@}{\thesection\hskip 1em\relax}{}%
4151         ##1%
4152       }%
4153       }{}%
4154    }%
4155    \def\subsectionmark##1{%
4156      \markright {%
4157        \@ifnum{\c@secnumdepth >\@ne}{\thesubsection\hskip 1em\relax}{}%
4158         ##1%
4159      }%
4160    }%
4161}%
4162\appdef\class@inithook{%
4163}%
4164\def\heading@cr{\unskip\space\ignorespaces}%
4165\def\ps@preprint{%
4166  \@provide\@oddfoot{\hfil\thepage\quad\checkindate\hfil}%
4167  \@provide\@evenfoot{\hfil\thepage\quad\checkindate\hfil}%
4168  \@provide\@oddhead{}%
4169  \@provide\@evenhead{}%
4170  \let\@mkboth\@gobbletwo
4171  \let\sectionmark\@gobble
4172  \let\subsectionmark\@gobble
4173}%
4174\let\@oddhead\@undefined
4175\let\@evenhead\@undefined
4176\let\@oddfoot\@undefined
4177\let\@evenfoot\@undefined
4178\AtEndOfClass{%
4179 \appdef\class@documenthook{%
4180  \@provide\@oddhead{}%
4181  \@provide\@evenhead{}%
4182  \@provide\@oddfoot{}%
4183  \@provide\@evenfoot{}%
4184 }%
4185}%
4186\def\lastpage@putlabel{%
4187 \if@filesw
4188  \begingroup
4189    \advance\c@page\m@ne
4190    \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}%
4191  \endgroup
4192 \fi
4193}%
4194\AtEndOfClass{%
4195 \appdef\clear@document{%
4196  \clearpage
4197  \lastpage@putlabel
4198 }%
4199}%
4200\RequirePackage{url}%
4201\appdef\class@inithook{%
4202 \incompatible@package{cite}%
4203 \incompatible@package{multicol}%
4204}%
4205\renewcommand\title[2][]{%
4206 \def\@title{#2}%
4207 \def\@shorttitle{#1}%
4208 \let\@AF@join\@title@join
4209}%
4210\appdef\class@inithook{%
4211 \def\@title{\class@warn{No title}}%
4212 \let\@shorttitle\@empty
4213 \let\@title@aux\@title@aux@cleared
4214}%
4215\def\@title@join{\expandafter\@title@join@\@title@aux}%
4216\def\@title@join@#1#2{%
4217 \def\@title@aux{{\@join{\@separator}{#1}{#2}}}%
4218}%
4219\def\@title@aux@cleared{{}}%
4220\newcounter{affil}
4221\renewcommand\author{% implicit #1
4222 \@author@def{}% implicit #2
4223}%
4224\def\collaboration{% implicit #1
4225 \groupauthors@sw{%
4226  \class@warn{%
4227   \string\collaboration\space is only allowed with superscriptaddress option.
4228   Use superscriptaddress in place of groupedaddress, unsortedaddress, or runinaddress%
4229  }%
4230 }{}%
4231 \@author@def{\@booleantrue\collaboration@sw}% implicit #2
4232}%
4233\def\@author@cleared{{}{}}%
4234\def\@author@init{%
4235 \let\@author\@author@cleared
4236}%
4237\def\@authorclear@sw{\@ifx{\@author\@author@cleared}}%
4238\appdef\class@inithook{%
4239 \@author@init
4240}%
4241\def\@author@def#1#2{%
4242 \move@AU\move@AF\move@AUAF
4243 \let\@AF@join\@author@join
4244 #1%
4245 \def\@author{{#2}{}}%
4246}%
4247\def\@author@join@#1#2#3{%
4248  \def\@author{{#1}{\@join{\@separator}{#2}{#3}}}%
4249}%
4250\def\@author@join{\expandafter\@author@join@\@author}%
4251\def\@author@gobble#1#2{}%
4252\def\move@AU{%
4253 \@authorclear@sw{}{%
4254  \collaboration@sw{%
4255    \expandafter\appdef
4256    \expandafter\AU@grp
4257    \expandafter{%
4258    \expandafter \CO@opr
4259                 \@author
4260                }%
4261  }{%
4262    \expandafter\appdef
4263    \expandafter\AU@grp
4264    \expandafter{%
4265    \expandafter \AU@opr
4266                 \@author
4267                }%
4268  }%
4269 }%
4270 \@author@init
4271 \@booleanfalse\collaboration@sw
4272}%
4273\def\@author@finish{%
4274 \move@AU\move@AF
4275 \@ifx{\AU@grp\@empty}{}{%
4276  \@ifx{\AF@grp\@empty}{%
4277   \begingroup
4278    \let\href\@secondoftwo
4279    \let\AU@opr\@firstoftwo
4280    \let\CO@opr\@firstoftwo
4281    \class@warn{Assuming \string\noaffiliation\space for \AU@grp}%
4282   \endgroup
4283   \begingroup\@affiliation{\blankaffiliation}%\endgroup in \@affiliation
4284   \move@AF
4285  }{}%
4286 }%
4287 \move@AUAF
4288}%
4289\def\@join#1#2#3{%
4290  \@if@empty{#2}{#3}{#2#1#3}%
4291}%
4292\def\@separator{;\space}%
4293\let\surname\@firstofone
4294\let\firstname\@firstofone
4295\let\AU@grp\@empty
4296\renewcommand\and{\class@err{\protect\and\space is not supported}}
4297\def\cat@comma@active{\catcode`\,\active}%
4298{\cat@comma@active\gdef,{\active@comma}}%
4299\def\active@comma{,\penalty-300\relax}%
4300\newcommand\affiliation{%
4301 \move@AU\move@AF
4302 \begingroup
4303  \cat@comma@active
4304  \@affiliation
4305}%
4306\def\@affiliation#1{%
4307 \endgroup
4308 \let\@AF@join\@affil@join
4309 \@affil@def{#1}%
4310}%
4311\newcommand\noaffiliation{%
4312  \move@AU\move@AF
4313  \begingroup\@affiliation{\blankaffiliation}%
4314}%
4315\def\blankaffiliation{}%
4316\def\@affil@cleared{{}{}}%
4317\def\@affil@init{%
4318 \let\@affil\@affil@cleared
4319}%
4320\def\@affilclear@sw{\@ifx{\@affil\@affil@cleared}}%
4321\appdef\class@inithook{%
4322 \@affil@init
4323}%
4324\def\@affil@def#1{\def\@affil{{#1}{}}}%
4325\def\@affil@join@#1#2#3{%
4326  \def\@affil{{#1}{\@join{\@separator}{#2}{#3}}}%
4327}%
4328\def\@affil@join{\expandafter\@affil@join@\@affil}%
4329\def\move@AF{%
4330 \@affilclear@sw{}{%
4331  \@booleanfalse\temp@sw
4332  \let\@tempd\@empty
4333  \@affils@sw{%
4334    \expandafter\@firstoftwodef\expandafter\@tempa\@affil
4335    \def\AFF@opr{\@affil@match\@tempa}%
4336    \@AFF@list
4337  }{}\temp@sw
4338  {%
4339   \expandafter\@secondoftwodef\expandafter\@tempb\@affil
4340   \@ifx{\@tempb\@empty}{}{%
4341    \@ifx{\@tempb\@tempd}{}{%
4342     \class@warn{%
4343      Ancillary information for \@tempa\space must not be different!
4344      Please put it on the first instance%
4345     }%
4346    }%
4347   }%
4348   \appdef@eval\AF@grp\@tempc
4349  }%
4350  {%
4351    \@if@empty{\expandafter\@firstoftwo\@affil}{%
4352\edef\@tempc{\z@}%
4353    }{%
4354\stepcounter{affil}%
4355\edef\@tempc{\theaffil}%
4356    }%
4357\appdef     \@AFF@list{\AFF@opr}%
4358\appdef@eval\@AFF@list\@tempc
4359\appdef@e   \@AFF@list{\@affil}%
4360\appdef@eval\AF@grp\@tempc
4361  }%
4362  \@affil@init
4363 }%
4364}%
4365\def\@firstoftwodef#1#2#3{%
4366 \def#1{#2}%
4367}%
4368\def\@secondoftwodef#1#2#3{%
4369 \def#1{#3}%
4370}%
4371\def\move@AUAF{%
4372 \@ifx{\AF@grp\@empty}%
4373 {}{%
4374    \appdef     \@AAC@list{\AF@opr}%
4375    \appdef@eval\@AAC@list{\AF@grp}%
4376    \appdef@e   \@AAC@list{\AU@grp}%
4377    \@ifx{\@empty\AU@grp}{}{%
4378     \@ifx{\@empty\AF@grp}{}{%
4379      \@booleanfalse\temp@sw
4380      \def\AFS@opr{\x@match\AF@grp}%
4381      \@AFG@list
4382      \temp@sw{}{%
4383        \appdef     \@AFG@list{\AFS@opr}%
4384        \appdef@eval\@AFG@list{\AF@grp}%
4385      }%
4386     }%
4387    }%
4388    \let\AU@grp\@empty
4389    \let\AF@grp\@empty
4390 }%
4391}%
4392\appdef\class@inithook{%
4393 \let\@AAC@list\@empty
4394}%
4395\appdef\class@inithook{%
4396 \let\@AFG@list\@empty
4397}%
4398\appdef\class@inithook{%
4399 \let\@AFF@list\@empty
4400}%
4401\let\AF@grp\@empty
4402\def\@affil@match#1#2#3#4{%
4403 \temp@sw{}{%
4404  \def\@tempifx{#3}%
4405  \@ifx{\@tempifx#1}{%
4406    \@booleantrue\temp@sw
4407    \def\@tempc{#2}%
4408    \def\@tempd{#4}%
4409  }{%
4410  }%
4411 }%
4412}%
4413\appdef\class@inithook{%
4414 \let\@AF@join\@AF@join@error
4415}%
4416\def\@AF@join@error#1{%
4417 \class@warn{%
4418  \string\email, \string\homepage, \string\thanks, or \string\altaffiliation\space
4419  appears in wrong context.
4420 }%
4421}%
4422\def\sanitize@url{%
4423 \@makeother\%%
4424 \@makeother\~%
4425 \@makeother\_%
4426}%
4427\newcommand*\email[1][Electronic address: ]{\begingroup\sanitize@url\@email{#1}}%
4428\def\@email#1#2{%
4429 \endgroup
4430 \@AF@join{#1\href{mailto:#2}{#2}}%
4431}%
4432\newcommand*\homepage[1][URL:~]{\begingroup\sanitize@url\@homepage{#1}}%
4433\def\@homepage#1#2{%
4434 \endgroup
4435 \@AF@join{#1\url{#2}}%
4436}%
4437\appdef\class@documenthook{%
4438 \providecommand\url{\texttt}%
4439 \providecommand\href[2]{\url{#2}}%
4440}%
4441\def\thanks{% implicit #1
4442  \@AF@join
4443}%
4444\newcommand*\altaffiliation[2][]{%
4445  \@AF@join{#1#2}%
4446}%
4447\def\set@listcomma@list#1{%
4448  \expandafter\@reset@ac\expandafter#1#1{0}\@reset@ac{%
4449   \let\@listcomma\relax
4450  }{%
4451   \let\@listcomma\@listcomma@comma
4452  }%
4453}%
4454\def\set@listcomma@count#1{%
4455\@ifnum{#1=\tw@}{%
4456\let\@listcomma\relax
4457}{%
4458\let\@listcomma\@listcomma@comma
4459}%
4460}%
4461\def\@reset@ac#1#2#3\@reset@ac{%
4462  \def#1{#3}%
4463  \@tempcnta#2\relax
4464  \@ifnum{#2=\tw@}%
4465}%
4466\def\@listand{\@ifnum{\@tempcnta=\tw@}{\andname\space}{}}%
4467\def\@listcomma@comma{\@ifnum{\@tempcnta>\@ne}{,}{}}%
4468\def\@listcomma@comma@UK{\@ifnum{\@tempcnta>\tw@}{,}{}}%
4469\def\@collaboration@err#1#2{%
4470}%
4471\def\doauthor#1#2#3{%
4472  \ignorespaces#1\unskip\@listcomma
4473  \def\@tempifx{#3}%
4474  \@ifx{\@tempifx\@empty}{%
4475   \def\@tempifx{#2}%
4476   \@ifx{\@tempifx\@empty}{}{\frontmatter@footnote{#2}}%
4477  }{%
4478   #3%
4479   \def\@tempifx{#2}%
4480   \@ifx{\@tempifx\@empty}{}{\comma@space\frontmatter@footnote{#2}}%
4481  }%
4482  \space \@listand
4483}%
4484\def\@thanks{\comma@space\footnote}
4485\def\x@match#1#2{%
4486 \temp@sw{}{%
4487  \def\@tempifx{#2}%
4488  \@ifx{\@tempifx#1}{%
4489    \@booleantrue\temp@sw
4490  }{%
4491  }%
4492 }%
4493}%
4494\def\y@match#1#2#3{%
4495 \temp@sw{}{%
4496  \def\@tempifx{#3}%
4497  \@ifx{\@tempifx#1}{%
4498    \@booleantrue\temp@sw
4499    \def\@tempb{#2}%
4500  }{%
4501  }%
4502 }%
4503}%
4504\def\frontmatter@footnote#1{%
4505 \begingroup
4506  \@booleanfalse\temp@sw
4507  \def\@tempa{#1}%
4508  \let\@tempb\@empty
4509  \def\@TBN@opr{\y@match\@tempa}%
4510  \@FMN@list
4511  \temp@sw{%
4512   \expandafter\frontmatter@footnotemark
4513   \expandafter{\@tempb}%
4514  }{%
4515   \stepcounter\@mpfn
4516   \protected@xdef\@tempb{\the\csname c@\@mpfn\endcsname}%
4517   \expandafter\frontmatter@footnotemark
4518   \expandafter{\@tempb}%
4519   \expandafter\g@addto@macro
4520   \expandafter\@FMN@list
4521   \expandafter{%
4522   \expandafter \@TBN@opr
4523   \expandafter {\@tempb}{#1}%
4524               }%
4525  }%
4526 \endgroup
4527}%
4528\appdef\class@inithook{%
4529 \global\let\@FMN@list\@empty
4530}%
4531\def\frontmatter@footnotemark#1{%
4532 \leavevmode
4533 \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi
4534  \begingroup
4535   \hyper@linkstart {link}{frontmatter@#1}%
4536    \csname c@\@mpfn\endcsname#1\relax
4537    \def\@thefnmark{\thempfn}%
4538    \@makefnmark
4539   \hyper@linkend
4540  \endgroup
4541 \ifhmode\spacefactor\@x@sf\fi
4542 \relax
4543}%
4544\def\keywords#1{%
4545  \aftermaketitle@chk{\keywords}%
4546  \gdef\@keywords{#1}%
4547}%
4548\def\@keywords{}%
4549\renewcommand*\date[2][\Dated@name]{\def\@date{#1#2}}%
4550\def\@date{}%
4551\newcommand*\received[2][\Received@name]{\def\@received{#1#2}}%
4552\def\@received{}%
4553\newcommand*\revised[2][\Revised@name]{\def\@revised{#1#2}}%
4554\def\@revised{}%
4555\newcommand*\accepted[2][\Accepted@name]{\def\@accepted{#1#2}}%
4556\def\@accepted{}%
4557\newcommand*\published[2][\Published@name]{\def\@published{#1#2}}%
4558\def\@published{}%
4559\def\pacs#1{%
4560  \aftermaketitle@chk{\pacs}%
4561  \gdef\@pacs{#1}%
4562}%
4563\def\@pacs{}%{\class@warn{No PACS numbers}}%
4564\def\preprint#1{\gappdef\@preprint{\preprint{#1}}}%
4565\let\@preprint\@empty
4566\newbox\absbox
4567\newenvironment{abstract}{%
4568  \aftermaketitle@chk{\begin{abstract}}%
4569  \global\setbox\absbox\vbox\bgroup
4570   \color@begingroup
4571   \columnwidth\textwidth
4572   \hsize\columnwidth
4573   \@parboxrestore
4574   \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@
4575   \let\@footnotetext\frontmatter@footnotetext
4576   \minipagefootnote@init
4577   \let\@listdepth\@mplistdepth \@mplistdepth\z@
4578   \@minipagerestore
4579   \@setminipage
4580    \frontmatter@abstractheading
4581    \frontmatter@abstractfont
4582    \let\footnote\mini@note
4583}{%
4584    \par
4585    \unskip
4586    \minipagefootnote@here
4587    \@minipagefalse   %% added 24 May 89
4588    \color@endgroup
4589  \egroup
4590}%
4591\long\def\frontmatter@footnotetext#1{%
4592  \minipagefootnote@pick
4593    \reset@font\footnotesize
4594    \interlinepenalty \interfootnotelinepenalty
4595    \splittopskip \footnotesep
4596    \splitmaxdepth \dp \strutbox
4597    \set@footnotewidth
4598    \@parboxrestore
4599    \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}%
4600    \color@begingroup
4601      \frontmatter@makefntext{%
4602        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox
4603      }%
4604    \color@endgroup
4605  \minipagefootnote@drop
4606}%
4607\def\frontmatter@abstractheading{%
4608 \begingroup
4609  \centering\large
4610  \abstractname
4611  \par
4612 \endgroup
4613}%
4614\def\frontmatter@abstractfont{}%
4615\def\frontmatter@abstractwidth{\textwidth}
4616\def\frontmatter@abstract@produce{%
4617  \par
4618  \preprintsty@sw{%
4619   \do@output@MVL{%
4620    \vskip\frontmatter@preabstractspace
4621    \vskip200\p@\@plus1fil
4622    \penalty-200\relax
4623    \vskip-200\p@\@plus-1fil
4624   }%
4625  }{%
4626   \addvspace{\frontmatter@preabstractspace}%
4627  }%
4628   \begingroup
4629    \dimen@\baselineskip
4630    \setbox\z@\vtop{\unvcopy\absbox}%
4631    \advance\dimen@-\ht\z@\advance\dimen@-\prevdepth
4632    \@ifdim{\dimen@>\z@}{\vskip\dimen@}{}%
4633   \endgroup
4634   \unvbox\absbox
4635  \@ifx{\@empty\mini@notes}{}{\mini@notes\par}%
4636  \addvspace\frontmatter@postabstractspace
4637}%
4638\def\frontmatter@preabstractspace{.5\baselineskip}
4639\def\frontmatter@postabstractspace{.5\baselineskip}
4640\newenvironment{titlepage}{%
4641      \twocolumn@sw{\onecolumngrid}{\newpage}%
4642      \thispagestyle{titlepage}%
4643      \setcounter{page}\@ne
4644}{%
4645     \twocolumn@sw{\twocolumngrid}{\newpage}%
4646     \twoside@sw{}{%
4647        \setcounter{page}\@ne
4648     }%
4649}%
4650\def\maketitle{%
4651  \@author@finish
4652  \title@column\titleblock@produce
4653  \suppressfloats[t]%
4654  \let\and\relax
4655  \let\affiliation\@gobble
4656  \let\author\@gobble
4657  \let\@AAC@list\@empty
4658  \let\@AFF@list\@empty
4659  \let\@AFG@list\@empty
4660  \let\@AF@join\@AF@join@error
4661  \let\email\@gobble
4662  \let\@address\@empty
4663  \let\maketitle\relax
4664  \let\thanks\@gobble
4665  \titlepage@sw{%
4666   \vfil
4667   \clearpage
4668  }{}%
4669}%
4670\def\titleblock@produce{%
4671 \begingroup
4672  \let\footnote\footnote@latex
4673  \let\@makefnmark\@makefnmark@latex
4674  \let\@footnotemark\@footnotemark@latex
4675  \let\thefootnote\frontmatter@thefootnote
4676  \global\c@footnote\z@
4677  \let\@makefnmark\frontmatter@makefnmark
4678  \frontmatter@setup
4679  \thispagestyle{titlepage}\label{FirstPage}%
4680  \frontmatter@title@produce
4681  \groupauthors@sw{%
4682   \frontmatter@author@produce@group
4683  }{%
4684   \frontmatter@author@produce@script
4685  }%
4686  \frontmatter@RRAPformat{%
4687   \expandafter\produce@RRAP\expandafter{\@date}%
4688   \expandafter\produce@RRAP\expandafter{\@received}%
4689   \expandafter\produce@RRAP\expandafter{\@revised}%
4690   \expandafter\produce@RRAP\expandafter{\@accepted}%
4691   \expandafter\produce@RRAP\expandafter{\@published}%
4692  }%
4693  \frontmatter@abstract@produce
4694  \@pacs@produce\@pacs
4695  \@keywords@produce\@keywords
4696  \par
4697  \frontmatter@finalspace
4698 \endgroup
4699}%
4700\def\frontmatter@title@produce{%
4701 \begingroup
4702  \frontmatter@title@above
4703  \frontmatter@title@format
4704  \@title
4705  \@ifx{\@title@aux\@title@aux@cleared}{}{%
4706   \expandafter\frontmatter@footnote\expandafter{\@title@aux}%
4707  }%
4708  \par
4709%% \class@warn{Unused short title ignored}%
4710  \frontmatter@title@below
4711 \endgroup
4712}%
4713\appdef\let@mark{\let\\\relax}%
4714\def\frontmatter@title@above{}%
4715\def\frontmatter@title@format{}%
4716\def\frontmatter@title@below{\addvspace{\baselineskip}}%
4717\def\frontmatter@author@produce@script{%
4718  \begingroup
4719    \let\@author@present\@author@present@script
4720    \let\AU@temp\@empty
4721    \@tempcnta\z@
4722    \let\AF@opr \@gobble
4723    \def\AU@opr{\@author@count\@tempcnta}%
4724    \def\CO@opr{\@collaboration@count\AU@temp\@tempcnta}%
4725    \@AAC@list
4726    \expandafter\CO@opr\@author@cleared
4727    \begingroup
4728\frontmatter@authorformat
4729\let\AF@opr \@affilID@def
4730\let\AU@opr \@author@present
4731\def\CO@opr{\@collaboration@present\AU@temp}%
4732\set@listcomma@list\AU@temp
4733\@AAC@list
4734\unskip\unskip
4735\par
4736\endgroup
4737    \begingroup
4738\frontmatter@above@affiliation@script
4739\let\AFF@opr \@affil@script
4740     \@AFF@list
4741\frontmatter@footnote@produce
4742\par
4743\endgroup
4744  \endgroup
4745}%
4746\def\@author@count#1{\advance#1\@ne\@author@gobble}%
4747\def\@collaboration@present#1#2#3{%
4748 \par
4749 \begingroup
4750  \frontmatter@collaboration@above
4751  \@author@present{(\ignorespaces#2\unskip)}{#3}%
4752  \par
4753 \endgroup
4754 \set@listcomma@list#1%
4755}%
4756\def\frontmatter@collaboration@above{}%
4757\def\@collaboration@count#1#2{%
4758 \appdef@eval#1{\the#2}#2\z@
4759 \@author@gobble
4760}%
4761\def\@affilID@def{\def\@affilID@temp}%
4762\let\@affilID@temp\@empty
4763\def\affil@script#1#2#3{%
4764 \def\@tempifx{#1}\@ifx{\@tempifx\@tempa}{%
4765  \@if@empty{#2}{}{%
4766   \par
4767   \begingroup
4768    \textsuperscript{\normalfont#1}%
4769    #2%
4770    \@if@empty{#3}{}{\frontmatter@footnote{#3}}%
4771    \par
4772   \endgroup
4773  }%
4774 }{}%
4775}%
4776\def\@affil@script#1#2#3{%
4777 \@ifnum{#1=\z@}{}{%
4778  \par
4779  \begingroup
4780   \frontmatter@affiliationfont
4781   \textsuperscript{#1}%
4782   #2%
4783   \@if@empty{#3}{}{\frontmatter@footnote{#3}}%
4784   \par
4785  \endgroup
4786 }%
4787}%
4788\def\@author@present@script#1#2{%
4789 \begingroup
4790  \gdef\comma@space{\textsuperscript{,\,}}%
4791 \doauthor{#1}{#2}{%
4792  \let\@tempa\@empty
4793  \expandafter\@affil@present@script\@affilID@temp\relax
4794 }%
4795 \endgroup
4796 \advance\@tempcnta\m@ne
4797}%
4798\def\@affilcomma#1#2{%
4799 \@ifx{\z@#1}{%
4800  \@ifx{\relax#2}{}{%
4801   \@affilcomma{#2}%
4802  }%
4803 }{%
4804  #1%
4805  \@ifx{\relax#2}{}{%
4806   \@ifx{\z@#2}{%
4807    \@affilcomma
4808   }{%
4809    ,\,\@affilcomma{#2}%
4810   }%
4811  }%
4812 }%
4813}%
4814\def\@affil@present@script#1{%
4815 \@ifx{\relax#1}{%
4816  \@ifx{\@tempa\@empty}{}{%
4817   \textsuperscript{\expandafter\@affilcomma\@tempa\relax\relax}%
4818  }%
4819 }{%
4820  \@ifx{\z@#1}{}{\appdef\@tempa{{#1}}}%
4821  \@affil@present@script
4822 }%
4823}%
4824\@provide\@author@parskip{\z@skip}%
4825\def\frontmatter@author@produce@group{%
4826  \begingroup
4827    \let\@author@present\@author@present@group
4828    \frontmatter@authorformat
4829    \let\AFS@opr \affils@present@group
4830    \let\@listcomma\relax
4831    \@AFG@list
4832    \frontmatter@footnote@produce
4833    \par
4834  \endgroup
4835  \frontmatter@authorbelow
4836}%
4837\@provide\frontmatter@authorbelow{}%
4838\def\affils@present@group#1{%
4839 \begingroup
4840   \def\AF@temp{#1}%               % 0B13
4841   \@tempcnta\z@
4842   \let\AU@opr \undefined          % 0B13
4843   \let\CO@opr \undefined          % 0B13
4844   \def\AF@opr{\@affilID@count\AF@temp\@tempcnta}% 0B13
4845   \@AAC@list
4846   \@ifnum{\@tempcnta=\z@}{}{%
4847    \begingroup
4848     \frontmatter@above@affilgroup
4849     \set@listcomma@count\@tempcnta
4850     \let\AU@opr \undefined          % 0B13
4851     \let\CO@opr \undefined          % 0B13
4852     \def\AF@opr{\@affilID@match\AF@temp}%
4853     \@AAC@list
4854    \endgroup
4855    \begingroup
4856     \par
4857     \frontmatter@above@affiliation
4858     \frontmatter@affiliationfont
4859     \let\\\frontmatter@addressnewline
4860     \@tempcnta\z@
4861     \@tfor\AF@temp:=#1\do{%
4862      \expandafter\@ifx\expandafter{\z@\AF@temp}{}{%
4863       \advance\@tempcnta\@ne
4864      }%
4865     }%
4866     \@ifnum{\@tempcnta=\tw@}{%
4867      \let\@listcomma\relax
4868     }{}%
4869     \def\after@address{\@listcomma\ \@listand}%
4870     \runinaddress@sw{%
4871     }{%
4872      \tightenlines@sw{%
4873      }{%
4874       \parskip\z@ %space between affilations in grouped mode
4875      }%
4876      \appdef\after@address\par
4877     }%
4878     \let\AFF@opr \@affil@group
4879     \do@affil@fromgroup\@AFF@list#1\relax
4880    \endgroup
4881   }%
4882   \par
4883 \endgroup
4884}%
4885\def\@affilID@count#1#2#3{%
4886  \def\@tempifx{#3}%
4887  \@ifx{\@tempifx#1}{%
4888    \def\AU@opr{\@author@count#2}%
4889  }{%
4890    \let\AU@opr \@author@gobble
4891  }%
4892  \let\CO@opr \@collaboration@err
4893}%
4894\def\@affilID@match#1#2{%
4895 \def\@tempifx{#2}%
4896 \@ifx{\@tempifx#1}{%
4897   \let\AU@opr \@author@present
4898 }{%
4899   \let\AU@opr \@author@gobble
4900 }%
4901  \let\CO@opr \@collaboration@err
4902}%
4903\def\do@affil@fromgroup#1#2{%
4904  \@ifx{\relax#2}{}{%
4905\count@#2\relax
4906\@ifnum{\count@=\z@}{}{#1}%
4907    \do@affil@fromgroup#1%
4908  }%
4909}%
4910\def\@affil@group#1#2#3{%
4911  \@ifnum{\count@=#1\relax}{%
4912    \@ifx{#2\blankaffiliation}{}{%
4913#2%
4914\@if@empty{#3}{}{%
4915\frontmatter@footnote{#3}%
4916}%
4917\after@address
4918    }%
4919    \advance\@tempcnta\m@ne
4920  }{}%
4921}%
4922\def\@author@present@group#1#2{%
4923  \gdef\comma@space{\gdef\comma@space{\textsuperscript{,\,}}}%
4924  \doauthor{#1}{#2}{}%
4925  \advance\@tempcnta\m@ne
4926}%
4927\def\@pacs@produce#1{%
4928 \showPACS@sw{%
4929  \begingroup
4930   \frontmatter@PACS@format
4931   \@pacs@name#1\par
4932  \endgroup
4933 }{%
4934  \@if@empty{#1}{}{%
4935   \class@warn{\PACS@warn}%
4936  }%
4937 }%
4938}%
4939\def\PACS@warn{If you want your PACS to appear in your output, use document class option showpacs}%
4940\def\@keywords@produce#1{%
4941 \showKEYS@sw{%
4942  \begingroup
4943   \frontmatter@keys@format
4944   \@keys@name#1\par
4945  \endgroup
4946 }{%
4947  \@if@empty{#1}{}{%
4948   \class@warn{If you want your keywords to appear in your output, use document class option showkeys}%
4949  }%
4950 }%
4951}%
4952\def\frontmatter@footnote@produce@footnote{%
4953 \let\@TBN@opr\present@FM@footnote
4954 \@FMN@list
4955 \global\let\@FMN@list\@empty
4956}%
4957\def\present@FM@footnote#1#2{%
4958 \begingroup
4959  \csname c@\@mpfn\endcsname#1\relax
4960  \def\@thefnmark{\thempfn}%
4961  \frontmatter@footnotetext{#2}%
4962 \endgroup
4963}%
4964\def\frontmatter@footnote@produce@endnote{%
4965}%
4966\def\frontmatter@thefootnote{%
4967 \altaffilletter@sw{\@alph}{\@fnsymbol}\c@footnote
4968}%
4969\def\frontmatter@makefnmark{%
4970 \@textsuperscript{%
4971  \normalfont\@thefnmark
4972 }%
4973}%
4974\long\def\frontmatter@makefntext#1{%
4975 \parindent 1em
4976 \noindent
4977 \Hy@raisedlink{\hyper@anchorstart{frontmatter@\the\c@footnote}\hyper@anchorend}%
4978 \@makefnmark
4979 #1%
4980}%
4981\def\frontmatter@setup{}%
4982\def\frontmatter@RRAPformat#1{%
4983 \removelastskip
4984 \begingroup
4985  \frontmatter@RRAP@format
4986  #1\par
4987 \endgroup
4988}%
4989\def\punct@RRAP{; }%
4990\def\produce@RRAP#1{%
4991  \@if@empty{#1}{}{%
4992   \@ifvmode{\leavevmode}{\unskip\punct@RRAP\ignorespaces}%
4993   #1%
4994  }%
4995}%
4996\def\frontmatter@authorformat{}%
4997\def\frontmatter@above@affilgroup{}%
4998\def\frontmatter@above@affiliation{}%
4999\def\frontmatter@above@affiliation@script{}%
5000\def\frontmatter@affiliationfont{}%
5001\def\frontmatter@RRAP@format{}%
5002\def\frontmatter@PACS@format{}%
5003\def\frontmatter@keys@format{}%
5004\def\frontmatter@finalspace{\addvspace{18\p@}}
5005\def\frontmatter@addressnewline{%
5006  \@ifhmode{\skip@\lastskip\unskip\unpenalty\break\hskip\skip@}{}%
5007  % was: \vskip-.5ex
5008}%
5009\def\frontmatter@preabstractspace{5.5\p@}
5010\def\frontmatter@postabstractspace{6.5\p@}
5011\def\aftermaketitle@chk#1{%
5012  \@ifx{\maketitle\relax}{%
5013    \class@err{\protect#1 must be used before \protect\maketitle}%
5014  }{}%
5015}%
5016\def\ps@titlepage{\ps@empty}%
5017\def\volumeyear#1{\gdef\@volumeyear{#1}}%
5018\def\@volumeyear{}%
5019\def\volumenumber#1{\gdef\@volumenumber{#1}}%
5020\def\@volumenumber{}%
5021\def\issuenumber#1{\gdef\@issuenumber{#1}}%
5022\def\@issuenumber{}%
5023\def\eid#1{\gdef\@eid{#1}}%
5024\def\@eid{}%
5025\def\startpage#1{\gdef\@startpage{#1}\c@page#1\relax}%
5026\def\@startpage{\pageref{FirstPage}}%
5027\def\endpage#1{\gdef\@endpage{#1}}%
5028\def\@endpage{\pageref{LastPage}}%
5029\def\print@toc#1{%
5030 \begingroup
5031  \expandafter\section
5032  \expandafter*%
5033  \expandafter{%
5034              \csname#1name\endcsname
5035              }%
5036  \let\appendix\appendix@toc
5037  \@starttoc{#1}%
5038 \endgroup
5039}%
5040\def\appendix@toc{}%
5041\def\labelenumi{\theenumi.}
5042\def\theenumi{\arabic{enumi}}
5043\def\labelenumii{(\theenumii)}
5044\def\theenumii{\alph{enumii}}
5045\def\p@enumii{\theenumi}
5046\def\labelenumiii{\theenumiii.}
5047\def\theenumiii{\roman{enumiii}}
5048\def\p@enumiii{\theenumi(\theenumii)}
5049\def\labelenumiv{\theenumiv.}
5050\def\theenumiv{\Alph{enumiv}}
5051\def\p@enumiv{\p@enumiii\theenumiii}
5052\def\labelitemi{\textbullet}
5053\def\labelitemii{\normalfont\bfseries\textendash}
5054\def\labelitemiii{\textasteriskcentered}
5055\def\labelitemiv{\textperiodcentered}
5056\pagenumbering{arabic}
5057\setcounter{topnumber}{2}
5058\def\topfraction{.9}
5059\setcounter{bottomnumber}{1}
5060\def\bottomfraction{.9}
5061\setcounter{totalnumber}{3}
5062\def\textfraction{.1}
5063\def\floatpagefraction{.9}
5064\setcounter{dbltopnumber}{2}
5065\def\dbltopfraction{.9}
5066\def\dblfloatpagefraction{.9}
5067\newenvironment{verse}{%
5068  \let\\=\@centercr
5069  \list{}{%
5070    \itemsep\z@ \itemindent -1.5em\listparindent \itemindent
5071    \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]%
5072}{%
5073 \endlist
5074}%
5075\newenvironment{quotation}{%
5076  \list{}{%
5077    \listparindent 1.5em
5078    \itemindent\listparindent
5079    \rightmargin\leftmargin \parsep \z@ \@plus\p@}\item[]%
5080}{%
5081 \endlist
5082}%
5083\newenvironment{quote}{%
5084  \list{}{%
5085  \rightmargin\leftmargin}\item[]%
5086}{%
5087 \endlist
5088}%
5089\def\descriptionlabel#1{%
5090  \hspace\labelsep \normalfont\bfseries #1%
5091}%
5092\newenvironment{description}{%
5093 \list{}{%
5094    \labelwidth\z@ \itemindent-\leftmargin
5095    \let\makelabel\descriptionlabel
5096 }%
5097}{%
5098 \endlist
5099}%
5100\newcounter{part}
5101\newcounter{section}
5102\newcounter{subsection}[section]
5103\newcounter{subsubsection}[subsection]
5104\newcounter{paragraph}[subsubsection]
5105\newcounter{subparagraph}[paragraph]
5106\def\thepart          {\Roman{part}} %
5107\def\thesection       {\Roman{section}}
5108\def\p@section        {}
5109\def\thesubsection    {\Alph{subsection}}
5110\def\p@subsection     {\thesection\,}
5111\def\thesubsubsection {\arabic{subsubsection}}
5112\def\p@subsubsection  {\thesection\,\thesubsection\,}
5113\def\theparagraph     {\alph{paragraph}}
5114\def\p@paragraph      {\thesection\,\thesubsection\,\thesubsubsection\,}
5115\def\thesubparagraph  {\arabic{subparagraph}}
5116\def\p@subparagraph   {\thesection\,\thesubsection\,\thesubsubsection\,\theparagraph\,}
5117\newenvironment{acknowledgments}{%
5118 \acknowledgments@sw{%
5119  \section*{\acknowledgmentsname}%
5120 }{%
5121  \par
5122 \phantomsection
5123  \addcontentsline{toc}{section}{\protect\numberline{}\acknowledgmentsname}%
5124 }%
5125}{%
5126 \par
5127}%
5128\@booleantrue\acknowledgments@sw
5129\newenvironment{acknowledgements}{%
5130 \replace@environment{acknowledgements}{acknowledgments}%
5131}{%
5132 \endacknowledgments
5133}%
5134\def\part{\par
5135   \addvspace{4ex}%
5136   \@afterindentfalse
5137   \secdef\@part\@spart}%
5138\def\@part[#1]#2{%
5139 \@ifnum{\c@secnumdepth >\m@ne}{%
5140        \refstepcounter{part}%
5141        \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
5142 }{%
5143      \addcontentsline{toc}{part}{#1}%
5144 }%
5145 \begingroup
5146    \parindent \z@ \raggedright
5147    \interlinepenalty\@M
5148    \@ifnum{\c@secnumdepth >\m@ne}{%
5149      \Large \bf \partname~\thepart%
5150      \par\nobreak
5151    }{}%
5152    \huge \bf
5153    #2%
5154    \markboth{}{}\par
5155 \endgroup
5156   \nobreak
5157   \vskip 3ex
5158   \@afterheading
5159}%
5160\def\@spart#1{{\parindent \z@ \raggedright
5161    \interlinepenalty\@M
5162    \huge \bf
5163    #1\par}
5164    \nobreak
5165    \vskip 3ex
5166    \@afterheading}
5167\def\section{%
5168  \@startsection
5169    {section}%
5170    {1}%
5171    {\z@}%
5172    {0.8cm \@plus1ex \@minus .2ex}%
5173    {0.5cm}%
5174    {\normalfont\small\bfseries}%
5175}%
5176\def\subsection{%
5177  \@startsection
5178    {subsection}%
5179    {2}%
5180    {\z@}%
5181    {.8cm \@plus1ex \@minus .2ex}%
5182    {.5cm}%
5183    {\normalfont\small\bfseries}%
5184}%
5185\def\subsubsection{%
5186  \@startsection
5187    {subsubsection}%
5188    {3}%
5189    {\z@}%
5190    {.8cm \@plus1ex \@minus .2ex}%
5191    {.5cm}%
5192    {\normalfont\small\itshape}%
5193}%
5194\def\paragraph{%
5195  \@startsection
5196    {paragraph}%
5197    {4}%
5198    {\parindent}%
5199    {\z@}%
5200    {-1em}%
5201    {\normalfont\normalsize\itshape}%
5202}%
5203\def\subparagraph{%
5204  \@startsection
5205    {subparagraph}%
5206    {5}%
5207    {\parindent}%
5208    {3.25ex \@plus1ex \@minus .2ex}%
5209    {-1em}%
5210    {\normalfont\normalsize\bfseries}%
5211}%
5212\def\theequation{%
5213 \theequation@prefix\arabic{equation}%
5214}%
5215\def\theequation@prefix{}%
5216\AtEndOfClass{%
5217 \expandafter\input\expandafter{\@pointsize pt\substyle@ext}%
5218}%
5219\setcounter{secnumdepth}{4}
5220\lineskip 1pt
5221\normallineskip 1pt
5222\def\baselinestretch{1}%
5223\@lowpenalty   51
5224\@medpenalty  151
5225\@highpenalty 301
5226\@beginparpenalty -\@lowpenalty
5227\@endparpenalty   -\@lowpenalty
5228\@itempenalty     -\@lowpenalty
5229\arraycolsep 3pt
5230\tabcolsep 2pt
5231\arrayrulewidth .4pt
5232\doublerulesep 2pt
5233\skip\@mpfootins = 0pt
5234\fboxsep  = 3.0pt
5235\fboxrule = 0.4pt
5236\newenvironment{figure}
5237               {\@float{figure}}
5238               {\end@float}
5239\newenvironment{figure*}
5240               {\@dblfloat{figure}}
5241               {\end@dblfloat}
5242\newlength\abovecaptionskip
5243\newlength\belowcaptionskip
5244\setlength\abovecaptionskip{10\p@}
5245\setlength\belowcaptionskip{2\p@}
5246\long\def\@makecaption#1#2{%
5247  \par
5248  \vskip\abovecaptionskip
5249  \begingroup
5250   \small\rmfamily
5251   \sbox\@tempboxa{%
5252    \let\\\heading@cr
5253    #1: #2%
5254   }%
5255   \@ifdim{\wd\@tempboxa >\hsize}{%
5256    \begingroup
5257     \samepage
5258     \flushing
5259     \let\footnote\@footnotemark@gobble
5260     #1: #2\par
5261    \endgroup
5262   }{%
5263     \global \@minipagefalse
5264     \hb@xt@\hsize{\hfil\unhbox\@tempboxa\hfil}%
5265   }%
5266  \endgroup
5267  \vskip\belowcaptionskip
5268}%
5269\def\@footnotemark@gobble{%
5270 \@footnotemark
5271 \@ifnextchar[{\@gobble@opt@i}{\@gobble}%
5272}%
5273\def\@gobble@opt@i[#1]#2{}%
5274\def\@mpmakefntext#1{%
5275 \flushing
5276 \parindent=1em
5277 \noindent
5278 \hb@xt@1em{\hss\@makefnmark}%
5279 #1%
5280}%
5281\newcounter{figure}
5282\renewcommand \thefigure {\@arabic\c@figure}
5283\def\fps@figure{tbp}
5284\def\ftype@figure{1}
5285\def\ext@figure{lof}
5286\def\fnum@figure{\figurename~\thefigure}
5287\appdef\class@documenthook{%
5288 \do@if@floats{figure}{.fgx}%
5289}%
5290\appdef\class@enddocumenthook{%
5291 \printfigures\relax
5292}%
5293\newcommand\printfigures{%
5294 \@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}%
5295 {%
5296  \print@float{figure}{\oneapage}%
5297 }{%
5298  \print@float{figure}{}%
5299 }%
5300}%
5301\appdef\@xfloat@prep{%
5302 \appdef\@parboxrestore{\centering}%
5303 \let\@makefnmark\@makefnmark@latex
5304 \let\@footnotemark\@footnotemark@latex
5305}%
5306\newenvironment{table}
5307               {\@float{table}}
5308               {\end@float}
5309\newenvironment{table*}
5310               {\@dblfloat{table}}
5311               {\end@dblfloat}
5312\newcounter{table}
5313\renewcommand\thetable{\@Roman\c@table}
5314\def\fps@table{tbp}
5315\def\ftype@table{2}
5316\def\ext@table{lot}
5317\def\fnum@table{\tablename~\thetable}
5318\def\table@hook{\small}%
5319\def\squeezetable{\def\table@hook{\scriptsize}}%
5320\appdef\@floatboxreset{\table@hook}%
5321\appdef\class@documenthook{%
5322 \floats@sw{}{%
5323  \let@environment{longtable@float}{longtable}%
5324  \let@environment{longtable}{longtable@write}%
5325  \let@environment{longtable*@float}{longtable*}%
5326  \let@environment{longtable*}{longtable*@write}%
5327  \let@environment{turnpage@float}{turnpage}%
5328  \let@environment{turnpage}{turnpage@write}%
5329 }%
5330 \do@if@floats{table}{.tbx}%
5331}%
5332\appdef\class@enddocumenthook{%
5333 \printtables\relax
5334}%
5335\newenvironment{longtable@write}{%
5336 \write@@float{longtable}{table}%
5337}{%
5338 \endwrite@float
5339}%
5340\newenvironment{longtable*@write}{%
5341 \write@@float{longtable*}{table}%
5342}{%
5343 \endwrite@float
5344}%
5345\newenvironment{turnpage@write}{%
5346 \immediate\write\tablewrite{\string\begin{turnpage}}%
5347}{%
5348 \immediate\write\tablewrite{\string\end{turnpage}}%
5349}%
5350\newcommand\printtables{%
5351 \begingroup
5352  \let@environment{longtable}{longtable@float}%
5353  \let@environment{longtable*}{longtable*@float}%
5354  \let@environment{turnpage}{turnpage@anchored}%
5355  \prepdef\longtable{\trigger@float@par}%
5356  \expandafter\prepdef\csname longtable*\endcsname{\trigger@float@par}%
5357  \expandafter\prepdef\csname table@floats\endcsname{%
5358   \onecolumngrid@push
5359  }%
5360  \expandafter\appdef\csname endtable@floats\endcsname{%
5361   \onecolumngrid@pop
5362  }%
5363  \@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}%
5364  {%
5365   \print@float{table}{\oneapage}%
5366  }{%
5367   \print@float{table}{}%
5368  }%
5369 \endgroup
5370}%
5371\newenvironment{turnpage@anchored}{%
5372 \onecolumngrid@push
5373 \setbox\z@\vbox to\textwidth\bgroup
5374  \columnwidth\textheight
5375}{%
5376  \vfil
5377 \egroup
5378 \rotatebox{90}{\box\z@}%
5379 \onecolumngrid@pop
5380}%
5381\def\endtabular@hook{}%
5382\appdef\class@documenthook{%
5383 \@ifpackageloaded{dcolumn}{%
5384  \newcolumntype{d}{D{.}{.}{-1}}%
5385 }{}%
5386}%
5387\def\toprule{\hline\hline}%
5388\def\colrule{\hline}%
5389\def\botrule{\hline\hline}%
5390\newenvironment{ruledtabular}{%
5391 \def\array@default{v}%
5392 \appdef\tabular@hook{\def\@halignto{to\hsize}}%
5393 \let\tableft@skip@default\tableft@skip
5394 \let\tableft@skip\tableft@skip@float
5395 \let\tabmid@skip@default\tabmid@skip
5396 \let\tabmid@skip\tabmid@skip@float
5397 \let\tabright@skip@default\tabright@skip
5398 \let\tabright@skip\tabright@skip@float
5399 \let\array@row@pre@default\array@row@pre
5400 \let\array@row@pre\array@row@pre@float
5401 \let\array@row@pst@default\array@row@pst
5402 \let\array@row@pst\array@row@pst@float
5403 \appdef\array@row@rst{%
5404  \let\array@row@pre\array@row@pre@default
5405  \let\array@row@pst\array@row@pst@default
5406  \let\tableft@skip\tableft@skip@default
5407  \let\tabmid@skip\tabmid@skip@default
5408  \let\tabright@skip\tabright@skip@default
5409  \appdef\tabular@hook{\let\@halignto\@empty}%
5410 }%
5411}{%
5412}%
5413\def\@makefntext#1{%
5414  \def\baselinestretch{1}%
5415  \reset@font\footnotesize
5416  \parindent 1em%
5417  \noindent
5418  \hb@xt@1.8em{%
5419   \Hy@raisedlink{\hyper@anchorstart{footnote@\the\c@footnote}\hyper@anchorend}%
5420   \hss\@makefnmark
5421  }%
5422  #1\par
5423}%
5424\newenvironment{thebibliography}{}{}%
5425\let\@listi\@empty
5426\RequirePackage[sort&compress]{natbib}[1999/05/28 7.0]%
5427\let\NAT@thebibliography\thebibliography
5428\let\NAT@endthebibliography\endthebibliography
5429\let\bibliographystyle@latex\bibliographystyle
5430\renewcommand\NAT@citesuper[3]{%
5431 \ifNAT@swa
5432  \leavevmode
5433  \unskip
5434  \textsuperscript{#1}%
5435  \if*#3*\else\ (#3)\fi
5436 \else
5437  #1%
5438 \fi
5439 \endgroup
5440}%
5441\def\@makefnmark@cite{\begingroup\NAT@swatrue\@cite{{\@thefnmark}}{}{}}%
5442\let\bibliographystyle@latex\bibliographystyle
5443\def\bibliographystyle{\def\@bibstyle}%
5444\def\bibsection{%
5445 \@ifx@empty\refname{%
5446  \par
5447 }{%
5448  \let\@hangfroms@section\@hang@froms
5449  \section*{\refname}%
5450  \@nobreaktrue
5451 }%
5452}%
5453\let\NATx@bibsetnum\NAT@bibsetnum
5454\def\NAT@bibsetnum#1{%
5455 \setlength{\topsep}{\z@}%
5456 \NATx@bibsetnum{\ref{LastBibItem}}%
5457}%
5458\let\NATx@bibsetup\NAT@bibsetup
5459\def\NAT@bibsetup{%
5460 \setlength{\labelwidth}{\z@}%
5461 \setlength{\labelsep}{\z@}%
5462 \setlength{\itemindent}{\z@}%
5463 \setlength{\listparindent}{\z@}%
5464 \setlength{\topsep}{\z@}%
5465 \setlength{\parsep}{\z@}%
5466 \NATx@bibsetup
5467}%
5468\let\bibpreamble\@empty
5469\def\newblock{\ }%
5470\let\NATx@bibnumfmt\bibnumfmt
5471\def\bibnumfmt{\place@bibnumber}%
5472\AtEndOfClass{%
5473 \appdef\class@documenthook{%
5474  \@ifxundefined\place@bibnumber{%
5475   \let\place@bibnumber\NATx@bibnumfmt
5476  }{}%
5477 }%
5478}%
5479\let\NAT@citeyear\citeyear
5480\def\NAT@onlinecite#1{%
5481 \begingroup
5482  \let\@cite\NAT@citenum
5483  \let\NAT@mbox\mbox
5484  \let\citeyear\NAT@citeyear
5485  \def\NAT@space{ }%
5486  \cite{#1}%
5487 \endgroup
5488}%
5489\appdef\class@inithook{%
5490 \@ifxundefined\@onlinecite{\def\@onlinecite{\citealp}}{}%
5491 \@ifxundefined\@textcite{\def\@textcite{\citet}}{}%
5492}%
5493\DeclareRobustCommand\onlinecite{\@onlinecite}%
5494\DeclareRobustCommand\textcite{\@textcite}%
5495\renewenvironment{thebibliography}[1]{%
5496 \NAT@thebibliography{#1}%
5497 \@clubpenalty\clubpenalty
5498 \let\@TBN@opr\present@bibnote
5499 \@FMN@list
5500}{%
5501 \@endnotesinbib
5502 \edef\@currentlabel{\arabic{NAT@ctr}}%
5503 \label{LastBibItem}%
5504 \NAT@endthebibliography
5505 \global\let\auto@bib\@empty
5506}%
5507\def\present@bibnote#1#2{%
5508 \item[%
5509  \textsuperscript{%
5510   \normalfont
5511   \Hy@raisedlink{\hyper@anchorstart{frontmatter@#1}\hyper@anchorend}%
5512   \begingroup
5513    \c@footnote#1\relax
5514    \frontmatter@thefootnote
5515   \endgroup
5516  }%
5517 ]#2\par
5518}%
5519\def\place@bibnumber@sup#1{\textsuperscript{#1}}%
5520\def\place@bibnumber@inl#1{[#1]}%
5521%% \begin{macro}{\@cite}
5522%% \begin{macro}{\nocite}
5523%% For the sake of Bib\TeX, we must execute the \cmd\bibliographystyle\ command
5524%% (putting a \cmd\bibstyle\ command into the auxiliary file)
5525%% somewhere before the first \cmd\cite\ command (or any other like command),
5526%% which puts a \cmd\citation\ command into the auxiliary file.
5527%%
5528%% Therefore, we headpatch the two procedures in \classname{natbib} that can result in
5529%% the appearance in the auxiliary file of a \cmd\citation\ command.
5530%% These two procedures are \cmd\@cite\ and \cmd\nocite.
5531%%
5532%% Not!
5533\def\write@bibliographystyle{%
5534 \@ifxundefined\@bibstyle{}{%
5535  \expandafter\bibliographystyle@latex\expandafter{\@bibstyle}%
5536 }%
5537 \global\let\write@bibliographystyle\relax
5538}%
5539\AtEndDocument{\write@bibliographystyle}%
5540%% \end{macro}
5541%% \end{macro}
5542\def\super@cite[#1][#2]#3{%
5543 \leavevmode
5544 \skip@\lastskip
5545 \unskip
5546 \begingroup
5547  \def\@tempa{[#1][#2]{#3}}%
5548  \super@cite@
5549}%
5550\def\super@cite@{%
5551 \futurelet\@let@token\super@cite@@
5552}%
5553\long\def\super@cite@@#1{%
5554 \@ifx{\@let@token\@sptoken}{%
5555  \aftergroup\@sptoken\false@sw
5556 }{%
5557  \@ifx{\@let@token.}{\true@sw}{%
5558   \@ifx{\@let@token,}{\true@sw}{%
5559    \@ifx{\@let@token'}{\true@sw}{%
5560     \@ifx{\@let@token)}{\true@sw}{%
5561      \false@sw
5562     }%
5563    }%
5564   }%
5565  }%
5566 }%
5567 {%
5568  #1%
5569  \super@cite@
5570 }{%
5571  \expandafter\@citex@NAT\@tempa\endgroup
5572  #1%
5573 }%
5574}%
5575\AtBeginDocument{%
5576 \citeautoscript@sw{%
5577  \@ifx{\place@bibnumber\place@bibnumber@sup}{%
5578   \let\@citex@NAT\@citex\let\@citex\super@cite
5579  }{}%
5580 }{}%
5581}%
5582\@ifx{\chapter\relax}{\let\chapter\@undefined}{}%
5583\def\mini@note{\save@note\mini@notes}%Implicit #1
5584\def\save@note#1#2{%
5585  \stepcounter{footnote}%
5586  \protected@xdef\@thefnmark{\the\c@footnote}%
5587  \@footnotemark
5588  \expandafter\g@addto@macro
5589  \expandafter#1%
5590  \expandafter{%
5591  \expandafter \@@footnotetext
5592  \expandafter {\@thefnmark}{#2}%
5593              }%
5594}%
5595\long\def\@@footnotetext#1{\def\@thefnmark{#1}\@footnotetext}%
5596\let\mini@notes\@empty
5597\def\endnote{%
5598 \begingroup
5599  \aftergroup\@footnotemark
5600  \aftergroup\@endnotetext
5601  \@ifnextchar[{%
5602   \@xendnote
5603  }{%
5604   \stepcounter{footnote}%
5605   \protected@xdef\@tempa{\thefootnote}%
5606   \expandafter\@xendnote\expandafter[\@tempa]%
5607 }%
5608}%
5609\def\@xendnote[#1]{%
5610  \begingroup
5611   \c@footnote#1\relax
5612   \unrestored@protected@xdef\@thefnmark{endnote\thefootnote}%
5613  \endgroup
5614 \endgroup
5615}%
5616\def\@endnotemark{%
5617 \expandafter\cite\expandafter{\@thefnmark}%
5618}%
5619\def\endnote@ext{.end}%
5620\long\def\@endnotetext#1{%
5621  \@ifxundefined\@endnoteout{%
5622    \newwrite\@endnoteout
5623    \gdef\endnote@stream{\jobname\endnote@ext}%
5624    \immediate\openout\@endnoteout\endnote@stream\relax
5625  }{}%
5626  \begingroup
5627    \let\label\relax \let\index\relax \let\glossary\relax
5628    \let\cite \relax \let\ref  \relax \let\pageref \relax
5629    \let\(    \relax \let\)    \relax \let\\    \relax
5630    \let \protect \@unexpandable@protect
5631    \newlinechar`\^^M%
5632    \immediate\write\@endnoteout{\string\@doendnote{\@thefnmark}{#1}}%
5633  \endgroup
5634}%
5635\def\endnotetext{%
5636  \@ifnextchar[{%
5637   \@xendnotenext
5638  }{%
5639   \protected@xdef\@thefnmark{\thefootnote}%
5640   \@endnotetext
5641  }%
5642}%
5643\def\@xendnotenext[#1]{%
5644  \begingroup
5645     \c@footnote#1\relax
5646     \unrestored@protected@xdef\@thefnmark{\thefootnote}%
5647  \endgroup
5648  \@endnotetext
5649}%
5650\def\printendnotes{%
5651 \@ifx{\@endnoteout\@undefined}{}{%
5652  \begingroup
5653   \c@secnumdepth-\maxdimen
5654   \section{%
5655    \notesname
5656   }%
5657   \immediate\closeout\@endnoteout
5658   \global\let\@endnoteout\@undefined
5659   \begin{enumerate}%
5660   \makeatletter
5661   \input{\endnote@stream}%
5662   \end{enumerate}%
5663  \endgroup
5664 }%
5665}%
5666\appdef\class@enddocumenthook{%
5667 \printendnotes
5668}%
5669\mathchardef\firstnote@num\z@
5670\appdef\class@documenthook{%
5671 \global\c@footnote\firstnote@num
5672 \appdef\maketitle{\global\c@footnote\firstnote@num}%
5673}%
5674\def\set@firstnote#1{%
5675 \@ifnum{\firstnote@num=#1\relax}{}{%
5676  \class@warn@end{Endnote numbers changed: rerun LaTeX}%
5677 }%
5678 \immediate\write\@mainaux{%
5679   \global\chardef\string\firstnote@num#1\relax
5680 }%
5681}%
5682\def\@endnotesinbib{%
5683 \set@firstnote\z@
5684}%
5685\def\@endnotesinbibliography{%
5686 \expandafter\set@firstnote\expandafter{\the\c@NAT@ctr}%
5687 \@ifx{\@endnoteout\@undefined}{}{%
5688  \immediate\closeout\@endnoteout
5689  \global\let\@endnoteout\@undefined
5690  \makeatletter
5691  \input{\endnote@stream}%
5692 }%
5693}%
5694\appdef\class@documenthook{%
5695 \let\@makefnmark@latex\@makefnmark
5696 \let\@footnotemark@latex\@footnotemark
5697 \footinbib@sw{%
5698  \let\footnote\endnote
5699  \let\@footnotemark\@endnotemark
5700  \let\@makefnmark\@makefnmark@cite
5701  \let\@endnotesinbib\@endnotesinbibliography
5702  \appdef\class@enddocumenthook{\auto@bib}%
5703  \let\printendnotes\relax
5704 }{}%
5705}%
5706\def\auto@bib{%
5707 \@ifx@empty\@FMN@list{%
5708  \@ifxundefined\@endnoteout{%
5709   \false@sw
5710  }{%
5711   \true@sw
5712  }%
5713 }{%
5714  \true@sw
5715 }{%
5716  \begin{thebibliography}{}\end{thebibliography}%
5717 }%
5718}%
5719\def\@doendnote#1#2{\bibitem{#1}#2}
5720\appdef\class@documenthook{%
5721\@ifxundefined\@evenhead{%
5722\@ifxundefined\@oddhead{%
5723\@ifxundefined\@oddfoot{%
5724\@ifxundefined\@evenfoot{%
5725\preprintsty@sw{%
5726\ps@preprint
5727}{%
5728\ps@article
5729}%
5730}{}%
5731}{}%
5732}{}%
5733}{}%
5734 \pagenumbering{arabic}%
5735 \normalsize
5736 \tabbingsep \labelsep
5737 \leftmargin\leftmargini
5738 \labelwidth\leftmargin\advance\labelwidth-\labelsep
5739 \let\@listi\@listI
5740 \@listi
5741 \def\curr@envir{document}%
5742 \mark@envir{\curr@envir}%
5743 \twocolumn@sw{%
5744  \open@column@mlt\tw@
5745  \set@colht
5746  \@floatplacement
5747  \@dblfloatplacement
5748  \sloppy
5749  \@booleanfalse\raggedcolumn@sw
5750  \let\set@listindent\set@listindent@
5751 }{%
5752  \open@column@one\@ne
5753  \set@colht
5754  \@floatplacement
5755  \@dblfloatplacement
5756  \sloppy
5757  \let\set@listindent\set@listindent@parshape
5758 }%
5759}%
5760\def\appendix{%
5761 \par
5762 \setcounter{section}\z@
5763 \setcounter{subsection}\z@
5764 \setcounter{subsubsection}\z@
5765 \def\thesubsection{\arabic{subsection}}%
5766 \def\thesubsubsection{\alph{subsubsection}}%
5767 \@addtoreset{equation}{section}%
5768 \def\theequation@prefix{\thesection}%
5769 \addtocontents{toc}{\protect\appendix}%
5770 \@ifstar{%
5771  \def\thesection{\unskip}%
5772  \def\theequation@prefix{A.}%
5773 }{%
5774  \def\thesection{\Alph{section}}%
5775 }%
5776}%
5777\def\title@column@default#1{%
5778 \minipagefootnote@init
5779 #1%
5780 \minipagefootnote@foot
5781}%
5782\def\close@column@default{%
5783 \newpage
5784}%
5785\def\galley@outdent{\rightmargin-\columnwidth\advance\rightmargin-\columnsep}%
5786\let\widetext@outdent\@empty
5787\newenvironment{widetext@galley}{%
5788  \list{}{%
5789    \topsep        \z@skip
5790    \listparindent \parindent
5791    \itemindent    \parindent
5792    \leftmargin    \z@
5793    \parsep        \z@\@plus\p@
5794    \widetext@outdent
5795    \relax
5796  }%
5797  \item\relax
5798}{
5799  \endlist
5800}%
5801\def\title@column@grid#1{%
5802 \minipagefootnote@init
5803  \onecolumngrid
5804  \begingroup
5805   \let\@footnotetext\frontmatter@footnotetext
5806   \let\set@footnotewidth\set@footnotewidth@ii
5807   #1%
5808  \endgroup
5809  \twocolumngrid
5810 \minipagefootnote@foot
5811}%
5812\def\close@column@grid{%
5813 \balancelastpage@sw{%
5814  \onecolumngrid
5815 }{}%
5816}%
5817\newenvironment{widetext@grid}{%
5818  \par\ignorespaces
5819  \setbox\widetext@top\vbox{%
5820   \vskip15\p@
5821   \hb@xt@\hsize{%
5822    \leaders\hrule\hfil
5823    \vrule\@height6\p@
5824   }%
5825   \vskip6\p@
5826  }%
5827  \setbox\widetext@bot\hb@xt@\hsize{%
5828    \vrule\@depth6\p@
5829    \leaders\hrule\hfil
5830  }%
5831  \onecolumngrid
5832  \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top
5833  \cleaders\box\widetext@top\vskip\dimen@
5834  \let\set@footnotewidth\set@footnotewidth@ii
5835}{%
5836  \par
5837  \setbox\widetext@bot\vbox{%
5838   \hb@xt@\hsize{\hfil\box\widetext@bot}%
5839   \vskip14\p@
5840  }%
5841  \dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot
5842  \cleaders\box\widetext@bot\vskip\dimen@
5843  \twocolumngrid\global\@ignoretrue
5844  \@endpetrue
5845}%
5846\newbox\widetext@top
5847\newbox\widetext@bot
5848\appdef\class@documenthook{%
5849 \twocolumn@sw{%
5850  \let@environment{widetext}{widetext@grid}%
5851  \let\title@column\title@column@grid
5852  \let\close@column\close@column@grid
5853 }{%
5854  \let@environment{widetext}{widetext@galley}%
5855  \preprintsty@sw{%
5856  }{%
5857   \galley@sw{%
5858    \let\widetext@outdent\galley@outdent
5859   }{%
5860   }%
5861  }%
5862 }%
5863}%
5864\appdef\class@inithook{%
5865 \@ifxundefined\title@column{%
5866  \let\title@column\title@column@default
5867 }{}%
5868}%
5869\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
5870\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
5871\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
5872\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
5873\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
5874\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
5875\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
5876\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
5877\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
5878\def\today{\ifcase\month\or
5879  January\or February\or March\or April\or May\or June\or
5880  July\or August\or September\or October\or November\or December\fi
5881  \space\number\day, \number\year}
5882\def\notesname{Notes}
5883\def\partname{Part}
5884\def\tocname{Contents}
5885\def\lofname{List of Figures}
5886\def\lotname{List of Tables}
5887\def\refname{References}
5888\def\indexname{Index}
5889\def\figurename{FIG.}
5890\def\figuresname{Figures}%
5891\def\tablename{TABLE}
5892\def\tablesname{Tables}%
5893\def\abstractname{Abstract}
5894\def\appendixesname{Appendixes}%
5895\def\appendixname{Appendix}%
5896\def\acknowledgmentsname{Acknowledgments}
5897\def\journalname{??}
5898\def\copyrightname{??}
5899\def\andname{and}
5900\def\@pacs@name{PACS numbers: }%
5901\def\@keys@name{Keywords: }%
5902\def\ppname{pp}
5903\def\numbername{number}
5904\def\volumename{volume}
5905\def\Dated@name{Dated: }%
5906\def\Received@name{Received }%
5907\def\Revised@name{Revised }%
5908\def\Accepted@name{Accepted }%
5909\def\Published@name{Published }%
5910\def\address{\replace@command\address\affiliation}%
5911\def\altaddress{\replace@command\altaddress\altaffiliation}%
5912\newenvironment{references}{%
5913 \class@warn@end{The references environment is not supported; use thebibliography instead.}
5914 \gdef\references{\thebibliography{}}\references
5915}{%
5916 \endthebibliography
5917}%
5918\def\draft{%
5919 \class@warn@end{Command \string\draft\space is obsolete;^^JInvoke option draft instead.}%
5920 \@booleantrue\draft@sw
5921}%
5922\def\tighten{%
5923 \class@warn@end{Command \string\tighten\space is obsolete;^^JInvoke option tightenlines instead.}%
5924 \@booleantrue\tightenlines@sw
5925}%
5926\def\tableline{%
5927 \noalign{%
5928  \class@warn@end{Command \string\tableline\space is obsolete;^^JUse \string\colrule\space instead.}%
5929  \global\let\tableline\colrule
5930 }%
5931 \tableline
5932}%
5933\def\case{\replace@command\case\frac}%
5934\def\slantfrac{\replace@command\slantfrac\frac}%
5935\def\tablenote{\replace@command\tablenote\footnote}%
5936\def\tablenotemark{\replace@command\tablenotemark\footnotemark}%
5937\def\tablenotetext{\replace@command\tablenotetext\footnotetext}%
5938\DeclareRobustCommand\REV@text[1]{%
5939 \relax
5940 \ifmmode
5941  \mathchoice
5942   {\hbox{{\everymath{\displaystyle     }#1}}}%
5943   {\hbox{{\everymath{\textstyle        }#1}}}%
5944   {\hbox{{\everymath{\scriptstyle      }\let\f@size\sf@size\selectfont#1}}}%
5945   {\hbox{{\everymath{\scriptscriptstyle}\let\f@size\ssf@size\selectfont#1}}}%
5946  \glb@settings
5947 \else
5948  \mbox{#1}%
5949 \fi
5950}%
5951\DeclareRobustCommand\REV@bbox[1]{%
5952 \relax
5953 \ifmmode
5954  \mathchoice
5955   {\hbox{{\everymath{\displaystyle     }\boldmath$#1$}}}%
5956   {\hbox{{\everymath{\textstyle        }\boldmath$#1$}}}%
5957   {\hbox{{\everymath{\scriptstyle      }\boldmath$#1$}}}%
5958   {\hbox{{\everymath{\scriptscriptstyle}\boldmath$#1$}}}%
5959  \glb@settings
5960 \else
5961  \mbox{#1}%
5962 \fi
5963}%
5964\DeclareRobustCommand\REV@bm[1]{%
5965 \class@warn@end{To use \string\bm, please load the bm package!}%
5966 \global\let\bm\relax
5967}%
5968\def\FL{\obsolete@command\FL}%
5969\def\FR{\obsolete@command\FR}%
5970\def\narrowtext{\obsolete@command\narrowtext}%
5971\def\mediumtext{\obsolete@command\mediumtext}%
5972\newenvironment{quasitable}{%
5973 \let@environment{tabular}{longtable}%
5974}{%
5975}%
5976\appdef\class@inithook{%
5977 \@ifxundefined\text{\let\text\REV@text}{}%
5978 \@ifxundefined\bm{\let\bm\REV@bm}{}%
5979 \providecommand\bibinfo[2]{#2}%
5980 \providecommand\eprint[2][]{#2}%
5981 \providecommand\url[1]{#1}%
5982}%
5983\def\bbox#1{%
5984 \class@warn@end{\string\bbox\space is obsolete,^^Jload the bm package and use \string\bm\space instead.}%
5985 \global\let\bbox\relax
5986}%
5987\newenvironment{mathletters}{%
5988 \class@warn@end{Environment {mathletters} is obsolete;^^Jload the amsmath package and use {subequations}!}%
5989 \global\let\mathletters\@empty
5990}{%
5991}%
5992\def\eqnum#1{%
5993 \class@warn@end{\string\eqnum\space is obsolete, load the amsmath package and use \string\tag!}%
5994 \global\let\eqnum\@gobble
5995}%
5996\RequirePackage{revsymb}%
5997\appdef\class@inithook{\revsymb@inithook}%
5998\AtEndOfClass{%
5999 \InputIfFileExists{\jobname.rty}{}{}%
6000}%
6001\AtEndOfClass{%
6002 \@ifxundefined\secnumarabic@sw{\@booleanfalse\secnumarabic@sw}{}%
6003 \secnumarabic@sw{%
6004  \def\p@section        {}%
6005  \def\thesection       {\arabic{section}}%
6006  \def\p@subsection     {}%
6007  \def\thesubsection    {\thesection.\arabic{subsection}}%
6008  \def\p@subsubsection  {}%
6009  \def\thesubsubsection {\thesubsection.\arabic{subsubsection}}%
6010 }{}%
6011}%
6012\AtEndOfClass{%
6013 \appdef\class@documenthook{%
6014  \defaults@hook
6015 }%
6016}%
6017\@ifxundefined\defaults@hook{\let\defaults@hook\@empty}{}%
6018\endinput
6019%%
6020%% End of file `revtex4.cls'.
Note: See TracBrowser for help on using the repository browser.