\catcode`\@=11 \def\Figureproofing{\figproofing@true} \def\noFigureproofing{\figproofing@false} \def\Hbyw#1{\global\Hby@true\hbyw\vsize{#1}} \def\hbyw#1#2{% \hbox{% \ifHby@ \else \iffigproofing@ \setbox\z@\vbox{\hrule\width5\p@}\ht\z@\z@ \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}% \kern-.4\p@\rlap{\copy\z@}\raise#1\hbox{\rlap{\copy\z@}}% \fi \fi \vbox to#1{\hbox to#2{}\vfil}% \ifHby@ \else \iffigproofing@ \vbox to#1{\hrule\height5\p@\width.4\p@\vfil\hrule\height5\p@\width.4\p@}% \kern-.4\p@\llap{\copy\z@}\raise#1\hbox{\llap{\boxz@}}% \fi \fi}} \def\island@@@P{\csname\exxx@\islandtype@ @P\endcsname} \def\island@@@Q{\csname\exxx@\islandtype@ @Q\endcsname} \def\island@@@S{\csname\exxx@\islandtype@ @S\endcsname} \def\island@@@N{\csname\exxx@\islandtype@ @N\endcsname} \def\island@@@F{\csname\exxx@\islandtype@ @F\endcsname} \def\island@@@C{\csname island@C\islandclass@\endcsname} \def\island{% \ifplace@ \DN@{\let\islandclass@\empty\def\islandtype@{\island}\FN@\island@}% \else \long\DN@##1\endisland{\Err@{\noexpand\island must be used after some type of \string\...place}}% \fi \next@} \def\island@{\ifx\next\c\let\next@\island@c\else \DN@{\FN@\island@@}\fi\next@} \def\island@@{\ifcat\bgroup\noexpand\next\let\next@\island@@@\else \DN@{\Err@{\noexpand\island must be followed by a {prefix} for \string\caption's}}\fi\next@} \def\island@@@#1{\def\captionprefix@{#1}\captioncount@\z@ \global\setbox\islandbox@\vbox\bgroup} \def\island@c\c#1{% \ifplace@ \DN@{\def\islandclass@{#1}% \expandafter\ifx\csname island@C#1\endcsname\relax \expandafter\newcount@\csname island@C#1\endcsname \global\csname island@C#1\endcsname\z@\fi \FNSS@\island@c@}% \else \DN@{\edef\next@{\long\def\noexpand\next@########1\expandafter\noexpand \csname end\exxx@\islandtype@\endcsname{\noexpand\Err@{\noexpand\noexpand \expandafter\noexpand \islandtype@ must be used after some type of \noexpand\string \noexpand\...place}}}\next@\next@}% \fi \next@} \def\island@c@{% \ifcat\bgroup\noexpand\next \let\next@\island@c@@ \else \DN@{\Err@{\noexpand\island\string\c{\expandafter\string\islandclass@} must be followed by a {prefix} for \string\caption's}}% \fi\next@} \def\island@c@@#1{\def\captionprefix@{#1}% \captioncount@\z@\global\setbox\islandbox@\vbox\bgroup} \def\caption{% \ifnum\captioncount@=\z@ \ifnopunct@ \DN@{\egroup\nopunct@true}% \else \let\next@\egroup \fi \else \let\next@\relax \fi \next@ \advance\captioncount@\@ne \FN@\caption@} \def\caption@{\ifx\next"\expandafter\caption@q\else\expandafter\caption@@\fi} \def\caption@q"#1"{\quoted@true {\noexpands@ \let\pre\island@@@P\let\post\island@@@Q \let\style\island@@@S\let\numstyle\island@@@N \Qlabel@{#1}\let\style\relax\xdef\Qlabel@@@@{#1}}% \finishcaption@} \def\caption@@{\quoted@false \global\advance\island@@@C\@ne {\noexpands@ \xdef\Thelabel@@@{\number\island@@@C}% \xdefThelabel@\island@@@N \xdef\Thelabel@@@@{\island@@@P\Thelabel@\island@@@Q}% \xdefThelabel@@\island@@@S \xdef\Thepref@{\Thelabel@@@@}}% \finishcaption@} \long\def\widerthanisland@#1#2#3{\test@true\setbox\z@\vbox{\hsize\maxdimen \noindent@@\captionformat@{#1}{#2}{#3}\par\setboxzl@}% \ifdim\wdz@=\z@ \global\setbox\captionbox@\hbox{\noset@\unlabel@ \captionformat@{#1}{#2}{#3}}% \ifdim\wd\captionbox@>\wd\islandbox@\else\test@false\fi \fi} \long\def\captionformat@@#1#2#3{\widerthanisland@{#1}{#2}{#3}% \iftest@ \global\setbox\captionbox@\vbox{\hsize\wd\islandbox@ \vskip-\parskip\noindent@@\noset@\unlabel@ \captionformat@{#1}{#2}{#3}\par}% \else \global\setbox\captionbox@ \hbox to\wd\islandbox@{\hfil\box\captionbox@\hfil}% \fi} \long\def\finishcaption@#1{\def\entry@{#1}% {\locallabel@ \captionformat@@ {\expandafter\ignorespaces\captionprefix@\unskip}% {\ifx\thelabel@@\empty\unskip\else\thelabel@@\fi}% {\ignorespaces#1\unskip}% \ifnum\captioncount@=\@ne \global\setbox\islandbox@\vbox{\ticwrite@\vbox{\box\islandbox@}}% \global\setbox\Captionbox@\vbox{\box\captionbox@}% \else \global\setbox\islandbox@\vbox{\unvbox\islandbox@\setboxzl@ \ticwrite@\boxz@}% \global\setbox\Captionbox@\vbox{\unvbox\Captionbox@ \smallskip\box\captionbox@}% \fi}% \nopunct@false\nospace@false} \def\Sixtic@{\ifx\macdef@\empty\else \DN@##1##2\next@{\def\macdef@{##1##2}}% \expandafter\next@\macdef@\next@ \edef\next@ {\noexpand\six@\tic@\macdef@ \space\space\space\space\space\space\space\space\space\space\space\space \noexpand\six@}% \next@\let\macdef@\relax\fi} \def\ticwrite@{% \iftoc@ {\noexpands@\let\style\relax \DN@{\island}% \edef\next@{\write\tic@{% \ifnopunct@\noexpand\noexpand\noexpand\nopunct\fi \ifx\islandtype@\next@\noexpand\noexpand\noexpand\island \noexpand\string\noexpand\c{\islandclass@}{\captionprefix@}% {\QorThelabel@@@@}\else\noexpand\noexpand\expandafter\noexpand \islandtype@{\QorThelabel@@@@}}\fi}% \next@}% \expandafter\unmacro@\meaning\entry@\unmacro@ \Sixtic@ \write\tic@{\noexpand\Page{\number\pageno}{\page@N}{\page@P}{\page@Q}^^J}% \fi} \def\Htrim@#1{% \ifHby@ \dimen@\vsize \ifnum\captioncount@=\z@ \else \advance\dimen@-\ht\Captionbox@ \advance\dimen@-#1% \fi \global\Hby@false \dimen@ii\wd\islandbox@ \global\setbox\islandbox@\vbox {\unvbox\islandbox@\setboxzl@ \vbox to\z@{\vss\boxz@}\nointerlineskip\hbyw\dimen@\dimen@ii}% \global\Hby@true \fi} \def\iclasstest@#1{\DN@{#1}\ifx\next@\islandclass@ \test@true\else\test@false\fi} \def\endisland{\ifnum\captioncount@=\z@\expandafter\egroup\fi \ifdata@ \else \iclasstest@{T}% \iftest@ {\rm\global\skipi@-\dp\strutbox}\global\advance\skipi@\bigskipamount \Htrim@\skipi@ \global\setbox\islandbox@\vbox {\ifnum\captioncount@=\z@\else \box\Captionbox@ \nointerlineskip \vskip\skipi@\fi \box\islandbox@}% \else {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount \Htrim@\skipi@ \global\setbox\islandbox@\vbox {\box\islandbox@ \ifnum\captioncount@=\z@\else \nointerlineskip \vskip\skipi@ \box\Captionbox@ \fi}% \fi \ifHby@ \else \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@ \ifdim\dimen@>\vsize \DN@{\island}% \Err@{% \ifx\islandtype@\next@\noexpand\island\else \expandafter\noexpand\islandtype@\fi \ifnum\captioncount@=\z@\else with \noexpand\caption\fi is larger than page}% \ht\islandbox@=\vsize \fi \fi \fi \global\Hby@false\island@true} \def\newisland#1\c#2#3{\define#1{}% \iftoc@\immediate\write\tic@{\noexpand\newisland\noexpand#1% \string\c{#2}{#3}^^J}\fi \expandafter\def\csname\exstring@#1@S\endcsname{\island@S}% \expandafter\def\csname\exstring@#1@N\endcsname{\island@N}% \expandafter\def\csname\exstring@#1@P\endcsname{\island@P}% \expandafter\def\csname\exstring@#1@Q\endcsname{\island@Q}% \expandafter\def\csname\exstring@#1@F\endcsname{\island@F}% \expandafter\def\csname end\exstring@#1\endcsname{\endisland}% \expandafter \ifx\csname island@C#2\endcsname\relax \expandafter\newcount@\csname island@C#2\endcsname \global\csname island@C#2\endcsname\z@ \fi \edef\next@{\noexpand\expandafter\noexpand\let\noexpand \csname\exstring@#1@C\noexpand\endcsname \csname island@C#2\endcsname}% \next@ \def#1{\def\islandtype@{#1}\island@c\c{#2}{#3}}} \newisland\Figure\c{F}{Figure} \newisland\Table\c{T}{Table} \long\def\islandpairdata#1#2{{\data@true \place@true #1% \global\setbox\islandboxi\box\islandbox@ \global\setbox\captionboxi\box\Captionbox@ #2% \global\setbox\islandboxii\box\islandbox@ \global\setbox\captionboxii\box\Captionbox@ }} \long\def\islandpairbox#1#2{\islandpairdata{#1}{#2}% \dimen@\ht\captionboxi \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi \ifdim\dimen@>\z@ \ifdim\ht\captionboxi<\dimen@ \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi \ifdim\ht\captionboxii<\dimen@ \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi \fi \global\setbox\islandbox@\vbox {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}% \ifdim\dimen@>\z@\nointerlineskip {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount \vskip\skipi@ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}\fi}} \long\def\islandpairboxa#1#2{\islandpairdata{#1}{#2}% \dimen@\ht\captionboxi \ifdim\ht\captionboxii>\dimen@\dimen@\ht\captionboxii\fi \ifdim\dimen@>\z@ \ifdim\ht\captionboxi<\dimen@ \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi \ifdim\ht\captionboxii<\dimen@ \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi \fi \dimen@ii\ht\islandboxi \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi \ifdim\dimen@ii>\z@ \ifdim\ht\islandboxi<\dimen@ii \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi \ifdim\ht\islandboxii<\dimen@ii \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi \fi \global\setbox\islandbox@\vbox{\ifdim\dimen@>\z@ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil}% \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% \global\advance\skipi@\bigskipamount\vskip\skipi@\fi \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil}}} \long\def\islandtripledata#1#2#3{{\data@true\place@true #1% \global\setbox\islandboxi\box\islandbox@ \global\setbox\captionboxi\box\Captionbox@ #2% \global\setbox\islandboxii\box\islandbox@ \global\setbox\captionboxii\box\Captionbox@ #3% \global\setbox\islandboxiii\box\islandbox@ \global\setbox\captionboxiii\box\Captionbox@ }} \long\def\islandtriplebox#1#2#3{\islandtripledata{#1}{#2}{#3}% \dimen@\ht\captionboxi \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi \ifdim\dimen@>\z@ \ifdim\ht\captionboxi<\dimen@ \global\setbox\captionboxi\vbox to\dimen@{\unvbox\captionboxi\vfil}\fi \ifdim\ht\captionboxii<\dimen@ \global\setbox\captionboxii\vbox to\dimen@{\unvbox\captionboxii\vfil}\fi \ifdim\ht\captionboxiii<\dimen@ \global\setbox\captionboxiii\vbox to\dimen@{\unvbox\captionboxiii\vfil}\fi \fi \global\setbox\islandbox@\vbox {\hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil \box\islandboxiii\hfil}% \ifdim\dimen@>\z@\nointerlineskip {\rm\global\skipi@\dp\strutbox}\global\advance\skipi@\medskipamount \vskip\skipi@ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil \box\captionboxiii\hfil}\fi}} \def\islandtripleboxa#1#2#3{\islandtripledata{#1}{#2}{#3}% \dimen@\ht\captionboxi \ifdim\ht\captionboxii>\dimen@ \dimen@\ht\captionboxii\fi \ifdim\ht\captionboxiii>\dimen@ \dimen@\ht\captionboxiii\fi \ifdim\dimen@>\z@ \ifdim\ht\captionboxi<\dimen@ \global\setbox\captionboxi\vbox to\dimen@{\vfil\unvbox\captionboxi}\fi \ifdim\ht\captionboxii<\dimen@ \global\setbox\captionboxii\vbox to\dimen@{\vfil\unvbox\captionboxii}\fi \ifdim\ht\captionboxiii<\dimen@ \global\setbox\captionboxiii\vbox to\dimen@{\vfil\unvbox\captionboxiii}\fi \fi \dimen@ii\ht\islandboxi \ifdim\ht\islandboxii>\dimen@ii \dimen@ii\ht\islandboxii\fi \ifdim\ht\islandboxiii>\dimen@ii \dimen@ii\ht\islandboxiii\fi \ifdim\dimen@ii>\z@ \ifdim\ht\islandboxi<\dimen@ii \global\setbox\islandboxi\vbox to\dimen@ii{\box\islandboxi\vfil}\fi \ifdim\ht\islandboxii<\dimen@ii \global\setbox\islandboxii\vbox to\dimen@ii{\box\islandboxii\vfil}\fi \ifdim\ht\islandboxiii<\dimen@ii \global\setbox\islandboxiii\vbox to\dimen@ii{\box\islandboxiii\vfil}\fi \fi \global\setbox\islandbox@\vbox {\ifdim\dimen@>\z@ \hbox to\hsize{\hfil\box\captionboxi\hfil\box\captionboxii\hfil \box\captionboxiii\hfil}% \nointerlineskip{\rm\global\skipi@-\dp\strutbox}% \global\advance\skipi@\bigskipamount\vskip\skipi@\fi \hbox to\hsize{\hfil\box\islandboxi\hfil\box\islandboxii\hfil \box\islandboxiii\hfil}}} \def\Figurepair#1\and#2\endFigurepair{\island@true \islandpairbox{\Figure#1\endFigure}{\Figure#2\endFigure}} \def\Figuretriple#1\and#2\and#3\endFiguretriple{\island@true \islandtriplebox{\Figure#1\endFigure}{\Figure#2\endFigure}% {\Figure#3\endFigure}} \def\Tablepair#1\and#2\endTablepair{\island@true \islandpairboxa{\Table#1\endTable}{\Table#2\endTable}} \def\Tabletriple#1\and#2\and#3\endTabletriple{\island@true \islandtripleboxa{\Table#1\endTable}{\Table#2\endTable}% {\Table#3\endTable}} \def\place#1{\place@true\island@false #1% \ifisland@ \box\islandbox@ \else \Err@{Whoa ... there's no \string\Figure, \string\Table, etc., here}% \fi \place@false} \def\storedim@{\global\setbox\topinsdims@ \vbox{\hbox to\dimen@{}\unvbox\topinsdims@}} \def\advancedimtopins@{% \ifnum\pageno=\@ne \else \advance\dimen@\dimen\topins \global\dimen\topins\dimen@ \fi} \def\Par{\par\global\csname Parprev1\endcsname\prevdepth \global\Parcount@\@ne \global\Par@true\global\let\Parlist@\empty \global\setbox\Parbox@\vbox\bgroup\break} \def\place@#1#2{% \ifisland@ \ifhmode \ifPar@ \ifnum\Parcount@>5 \Err@{Only 5 \string\place's allowed per \string\Par...\noexpand\endPar paragraph}% \else \expandafter\expandafter\expandafter \global\expandafter\setbox \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@ \global\advance\Parcount@\@ne \xdef\Parlist@{\Parlist@#1}% \fi \else \vadjust{#2}% \fi \else #2% \fi \else \Err@{Whoa ... there's no \string\Figure, \string\Table, etc., here}% \fi \place@false} \long\def\Aplace#1{\prevanish@ \place@true\island@false #1% \place@ a\Aplace@ \postvanish@} \long\def\AAplace#1{\prevanish@\place@true\island@false #1% \place@ A\AAplace@ \postvanish@} \def\AAplace@{\AA@true\Aplace@\AA@false} \def\Aplace@{\allowbreak \dimen@=\ht\islandbox@ \advance\dimen@\abovebotfigskip \ht\islandbox@\dimen@ \advance\dimen@\dp\islandbox@ \storedim@ \ifAA@ \xdef\AAlist@{\AAlist@1}% \advancedimtopins@ \else \xdef\AAlist@{\AAlist@0}% \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi \fi \insert\topins{\penalty\z@\splittopskip\z@\floatingpenalty\z@ \box\islandbox@}% \global\advance\topinscount@\@ne} \long\def\Bplace#1{\prevanish@\place@true\island@false #1% \place@ b\Bplace@ \postvanish@} \def\Bplace@{\allowbreak \ifnum\topinscount@=\z@ \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% \dimen@-\skip\topins \ht\z@\dimen@ \storedim@ \advancedimtopins@ \insert\topins{\boxz@}% \global\advance\topinscount@\@ne \xdef\AAlist@{\AAlist@0}% \fi \dimen@\ht\islandbox@ \advance\dimen@\abovebotfigskip \ht\islandbox@\dimen@ \advance\dimen@\dp\islandbox@ \storedim@ \xdef\AAlist@{\AAlist@0}% \ifnum\topinscount@>\@ne\else\advancedimtopins@\fi \insert\topins{\penalty\z@\splittopskip\z@ \floatingpenalty\z@ \box\islandbox@}% \global\advance\topinscount@\@ne} \def\Place@#1#2{% \ifisland@ \ifhmode \ifPar@ \ifnum\Parcount@>5 \Err@{Only 5 \string\place's allowed per \string\Par...\noexpand\endPar paragraph}% \else \expandafter\expandafter\expandafter\global\expandafter\setbox \csname Parfigbox\number\Parcount@\endcsname\box\islandbox@ \global\advance\Parcount@\@ne \xdef\Parlist@{\Parlist@#1}% \vadjust{\break}% \fi \else \Err@{\noexpand#2allowed only in a \string\Par...\noexpand\endPar paragraph}% \fi \else #2% \fi \else \Err@{Who ... there's no \string\Figure, \string\Table, etc., here}% \fi \place@false} \long\def\Cplace#1{\prevanish@\place@true\island@false #1% \Place@ c\Cplace@ \postvanish@} \def\Cplace@{\allowbreak \ifnum\topinscount@>\z@\else \global\C@true\global\Cdim@\pagetotal\fi \Aplace@} \long\def\Mplace#1{\prevanish@\place@true\island@false #1% \Place@ m\Mplace@ \postvanish@} \long\def\MXplace#1{\prevanish@\place@true\island@false #1% \Place@ M\MXplace@ \postvanish@} \def\MXplace@{\MX@true\Mplace@\MX@false} \def\Mplace@{\allowbreak \dimen@\ht\islandbox@\advance\dimen@\dp\islandbox@ \ifdim\pagetotal=\z@\else \ifdim\lastskip<\abovebotfigskip\advance\dimen@\abovebotfigskip \advance\dimen@-\lastskip\fi \fi \advance\dimen@\pagetotal \ifdim\dimen@>\pagegoal \Aplace@ \else \nointerlineskip \ifdim\lastskip<\abovebotfigskip\removelastskip\vskip\abovebotfigskip\fi \setbox\z@\vbox{\unvbox\islandbox@ \breakisland@}% \printisland@ \ifnum\topinscount@=\z@ \setbox\z@\vbox{\vbox to-\belowtopfigskip{}}% \dimen@-\skip\topins \ht\z@\dimen@ \storedim@ \advancedimtopins@ \insert\topins{\boxz@}% \global\advance\topinscount@\@ne \xdef\AAlist@{\AAlist@0}% \fi \ifMX@ \ifnum\topinscount@=\@ne \setbox\z@\vbox{\vbox to-\abovebotfigskip{}}% \ht\z@\z@ \dimen@\z@ \storedim@ \advancedimtopins@ \insert\topins{\boxz@}% \global\advance\topinscount@\@ne \xdef\AAlist@{\AAlist@0}% \fi \fi \nointerlineskip \vskip\belowtopfigskip \fi} \def\endPar{\egroup \count@\@ne {\vbadness\@M\vfuzz\maxdimen\splitmaxdepth\maxdimen\splittopskip\ht\strutbox \setbox\z@\vsplit\Parbox@ to\ht\Parbox@ \loop \ifnum\count@<\Parcount@ \expandafter\expandafter\expandafter\global\expandafter\setbox \csname Parbox\number\count@\endcsname\vsplit\Parbox@ to\ht\Parbox@ \count@@\count@\advance\count@@\@ne \global\csname Parprev\number\count@@\endcsname \dp\csname Parbox\number\count@\endcsname \advance\count@\@ne \repeat}% \vskip\parskip \count@\@ne \def\nextv@##1##2\nextv@{\DN@{##1}\gdef\Parlist@{##2}}% \loop \ifnum\count@<\Parcount@ \dimen@\csname Parprev\number\count@\endcsname \advance\dimen@\ht\strutbox \ifdim\dimen@<\baselineskip \advance\dimen@-\baselineskip\vskip-\dimen@ \else \vskip\lineskip \fi \unvbox\csname Parbox\number\count@\endcsname \global\setbox\islandbox@\box\csname Parfigbox\number\count@\endcsname \expandafter\nextv@\Parlist@\nextv@ \if a\next@\Aplace@\else \if A\next@\AAplace@\else \if b\next@\Bplace@\else \if c\next@\Cplace@\else \if m\next@\Mplace@\else \if M\next@\MXplace@\fi\fi\fi\fi\fi\fi \advance\count@\@ne \repeat \global\Par@false \ifvoid\Parbox@ \prevdepth\csname Parprev\number\count@\endcsname \else \dimen@\csname Parprev\number\count@\endcsname\advance\dimen@\ht\strutbox \ifdim\dimen@<\baselineskip \advance\dimen@-\baselineskip\vskip-\dimen@ \else \vskip\lineskip \fi \dimen@\dp\Parbox@ \unvbox\Parbox@ \prevdepth\dimen@ \fi} \catcode`\@=\active