fixing the broken references introduced during my abortive edits yesterday in sydney
\def\currversion{April 15, 2008}
%*****************************************************************%
%* *%
%* Prepared by Amy Hendrickson, TeXnology Inc. *%
%* Copyright (C) 2004 by Amy Hendrickson, TeXnology Inc., *%
%* All rights reserved. *%
%* *%
%* TeXnology Inc.: 617 738-8029 *%
%* amyh@texnology.com *%
%* www.texnology.com *%
%* *%
%* For assistance, please contact the PNAS Editorial Office: *%
%* 202-334-2679 *%
%* pnas@nas.edu *%
%* *%
%*****************************************************************%
\typeout{^^J^^J
Two Column Journal Style for the^^J
Proceedings of the National Academy of Science
^^J
Written by Amy Hendrickson, TeXnology, Inc., 9/04^^J
^^J
This version is dated \currversion^^J^^J}
\ProvidesClass{pnastwo}
\newcommand\@ptsize{}
\newif\if@restonecol
\newif\if@titlepage
\@titlepagefalse
\if@compatibility\else
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}}
\DeclareOption{a5paper}
{\setlength\paperheight {210mm}%
\setlength\paperwidth {148mm}}
\DeclareOption{b5paper}
{\setlength\paperheight {250mm}%
\setlength\paperwidth {176mm}}
\DeclareOption{letterpaper}
{\setlength\paperheight {11in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{legalpaper}
{\setlength\paperheight {14in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{executivepaper}
{\setlength\paperheight {10.5in}%
\setlength\paperwidth {7.25in}}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
\fi
\if@compatibility
\renewcommand\@ptsize{0}
\else
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\fi
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
\if@compatibility\else
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\fi
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\if@compatibility\else
\DeclareOption{final}{\setlength\overfullrule{0pt}}
\fi
\DeclareOption{titlepage}{\@titlepagetrue}
\if@compatibility\else
\DeclareOption{notitlepage}{\@titlepagefalse}
\fi
\if@compatibility\else
\DeclareOption{onecolumn}{\@twocolumnfalse}
\fi
\DeclareOption{twocolumn}{\@twocolumntrue}
\DeclareOption{leqno}{\input{leqno.clo}}
\DeclareOption{fleqn}{\input{fleqn.clo}}
\DeclareOption{openbib}{%
\AtEndOfPackage{%
\renewcommand\@openbib@code{%
\advance\leftmargin\bibindent
\itemindent -\bibindent
\listparindent \itemindent
\parsep \z@
}%
\renewcommand\newblock{\par}}%
}
\ExecuteOptions{letterpaper,twoside,onecolumn,final}
\ProcessOptions
%% size10.clo ==>>
\renewcommand\normalsize{%
\@setfontsize\normalsize\@ixpt\@xpt
\abovedisplayskip 8\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
\belowdisplayskip \abovedisplayskip
\topsep 0\p@
\parsep 0\p@
\let\@listi\@listI}
\normalsize
\topsep 0\p@
\parsep 0\p@
\newcommand\small{%
\@setfontsize\small\@viiipt{9}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
\def\@listi{\leftmargin\leftmargini
\topsep 0\p@
\parsep 0\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand\footnotesize{%
\@setfontsize\footnotesize\@vipt{7}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@
\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
\def\@listi{\leftmargin\leftmargini
\topsep 3\p@ \@plus\p@ \@minus\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand\scriptsize{\@setfontsize\scriptsize\@vpt\@viipt}
\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
\newcommand\large{\@setfontsize\large\@xiipt{14}}
\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
\if@twocolumn
\setlength\parindent{1em}
\else
\setlength\parindent{15\p@}
\fi
\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
\setlength\headheight{12\p@}
\setlength\headsep {25\p@}
\setlength\topskip {10\p@}
\setlength\footskip{20\p@}
\if@compatibility \setlength\maxdepth{4\p@} \else
\setlength\maxdepth{.5\topskip} \fi
\if@compatibility
\if@twocolumn
\setlength\textwidth{410\p@}
\else
\setlength\textwidth{345\p@}
\fi
\else
\setlength\@tempdima{\paperwidth}
\addtolength\@tempdima{-2in}
\setlength\@tempdimb{345\p@}
\if@twocolumn
\ifdim\@tempdima>2\@tempdimb\relax
\setlength\textwidth{2\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
\else
\ifdim\@tempdima>\@tempdimb\relax
\setlength\textwidth{\@tempdimb}
\else
\setlength\textwidth{\@tempdima}
\fi
\fi
\fi
\if@compatibility\else
\@settopoint\textwidth
\fi
\if@compatibility
\setlength\textheight{43\baselineskip}
\else
\setlength\@tempdima{\paperheight}
\addtolength\@tempdima{-2in}
\addtolength\@tempdima{-1.5in}
\divide\@tempdima\baselineskip
\@tempcnta=\@tempdima
\setlength\textheight{\@tempcnta\baselineskip}
\fi
\addtolength\textheight{\topskip}
\if@twocolumn
\setlength\marginparsep {10\p@}
\else
\setlength\marginparsep{11\p@}
\fi
\setlength\marginparpush{5\p@}
\if@compatibility
\if@twoside
\setlength\oddsidemargin {44\p@}
\setlength\evensidemargin {82\p@}
\setlength\marginparwidth {107\p@}
\else
\setlength\oddsidemargin {63\p@}
\setlength\evensidemargin {63\p@}
\setlength\marginparwidth {90\p@}
\fi
\if@twocolumn
\setlength\oddsidemargin {30\p@}
\setlength\evensidemargin {30\p@}
\setlength\marginparwidth {48\p@}
\fi
\else
\if@twoside
\setlength\@tempdima {\paperwidth}
\addtolength\@tempdima {-\textwidth}
\setlength\oddsidemargin {.4\@tempdima}
\addtolength\oddsidemargin {-1in}
\setlength\marginparwidth {.6\@tempdima}
\addtolength\marginparwidth {-\marginparsep}
\addtolength\marginparwidth {-0.4in}
\else
\setlength\@tempdima {\paperwidth}
\addtolength\@tempdima {-\textwidth}
\setlength\oddsidemargin {.5\@tempdima}
\addtolength\oddsidemargin {-1in}
\setlength\marginparwidth {.5\@tempdima}
\addtolength\marginparwidth {-\marginparsep}
\addtolength\marginparwidth {-0.4in}
\addtolength\marginparwidth {-.4in}
\fi
\ifdim \marginparwidth >2in
\setlength\marginparwidth{2in}
\fi
\@settopoint\oddsidemargin
\@settopoint\marginparwidth
\setlength\evensidemargin {\paperwidth}
\addtolength\evensidemargin{-2in}
\addtolength\evensidemargin{-\textwidth}
\addtolength\evensidemargin{-\oddsidemargin}
\@settopoint\evensidemargin
\fi
\if@compatibility
\setlength\topmargin{27pt}
\else
\setlength\topmargin{\paperheight}
\addtolength\topmargin{-2in}
\addtolength\topmargin{-\headheight}
\addtolength\topmargin{-\headsep}
\addtolength\topmargin{-\textheight}
\addtolength\topmargin{-\footskip} % this might be wrong!
\addtolength\topmargin{-.5\topmargin}
\@settopoint\topmargin
\fi
\setlength\footnotesep{6.65\p@}
\setlength{\skip\footins}{19\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\@fptop{0\p@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
\def\@listi{\leftmargin\leftmargini
\parsep 1sp%4\p@ \@plus2\p@ \@minus\p@
\topsep 8\p@ \@plus2\p@ \@minus4\p@
\itemsep1sp%4\p@ \@plus2\p@ \@minus\p@
}
\let\@listI\@listi
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep 4\p@ \@plus2\p@ \@minus\p@
\parsep 2\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep 2\p@ \@plus\p@\@minus\p@
\parsep \z@
\partopsep \p@ \@plus\z@ \@minus\p@
\itemsep \topsep}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv {\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
%% <<== size10.clo
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
\setlength\parskip{0\p@ \@plus \p@}
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\setcounter{topnumber}{2}
\renewcommand\topfraction{.7}
\setcounter{bottomnumber}{1}
\renewcommand\bottomfraction{.3}
\setcounter{totalnumber}{3}
\renewcommand\textfraction{.2}
\renewcommand\floatpagefraction{.5}
\setcounter{dbltopnumber}{2}
\renewcommand\dbltopfraction{.7}
\renewcommand\dblfloatpagefraction{.5}
\newif\iftitlepage
\def\ps@headings{%
\let\@evenhead\relax
\def\@oddhead{\hfill\rlap{\hskip14pt\vtop to 0pt{\vskip-1pt\makesidesquares
\vss}}}%
\def\@oddfoot{{\dospecialaccents%
\iftitlepage\global\titlepagefalse%
\footlinefont
\ifodd\c@page
\hbox to \textwidth{\footlinefont \let\it\footlineit
\theurl\hfill\footlinefont PNAS\hskip6pt \vrule depth 2pt\hskip6pt
{\foliofont\theissuedate}\hskip6pt\vrule\hskip6pt\thevolume\hskip6pt
\vrule\hskip6pt\theissuenumber\hskip6pt \vrule\hskip6pt
\the\c@page{\footlineit--}\expandafter\ifx\csname
lastpage\endcsname\relax ??\else\lastpage\fi}%
\else
\hbox to \textwidth{\footlinefont \let\it\footlineit
{\foliofont\the\c@page{\footlineit--}\expandafter\ifx\csname
lastpage\endcsname\relax ??\else\lastpage\fi}\hskip6pt
\vrule depth 2pt\hskip6pt PNAS\hskip6pt
\vrule\hskip6pt{\foliofont\theissuedate}\hskip6pt\vrule\hskip6pt
\thevolume\hskip6pt\vrule\hskip6pt\theissuenumber\hfill
\theurl}%
\fi\else%
\ifodd\c@page
\hbox to\textwidth{{\let\it\footlineit\footlinefont\thefootlineauthor}\hfill
\footlinefont PNAS\hskip6pt\vrule depth 2pt\hskip6pt{\foliofont\theissuedate}%
\hskip6pt\vrule depth2pt\hskip6pt\thevolume\hskip6pt\vrule depth 2pt\hskip6pt\theissuenumber\hskip6pt\vrule\hskip6pt{\foliofont\the\c@page}}%
\else%
\hbox to\textwidth{\let\it\footlineit\footlinefont{\foliofont \the\c@page}%
\hskip6pt\vrule depth 2pt height 6pt\hskip6pt\theurl\hfill\thefootlineauthor}\fi\fi}}
\let\@evenfoot\@oddfoot
%
\let\@mkboth\markboth
\def\sectionmark##1{%
\markboth {\MakeUppercase{%
\ifnum \c@secnumdepth >\z@
\thesection\quad
\fi
##1}}{}}%
\def\subsectionmark##1{%
\markright {%
\ifnum \c@secnumdepth >\@ne
\thesubsection\quad
\fi
##1}}}
\newcount\affilcount
\newcount\saveaffilcount
\newcount\c@fnaffilcount
\def\affil#1#2{\normalsize\affilfont\ \affilcount=#1
\ifnum\affilcount>\saveaffilcount\global\saveaffilcount\affilcount\fi
\expandafter\ifx\csname affil\the\affilcount\endcsname\relax
\global\advance\c@footnote by1
\expandafter\xdef\csname affilsymb\the\affilcount\endcsname%
{\the\c@footnote}{$^{\@fnsymbol\c@footnote}$}%
\expandafter\gdef\csname affil\the\affilcount\endcsname{#2}\else
$^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$
\fi\authorfont}
\newcommand\maketitle{\par
\global\titlepagetrue
\begingroup
\dospecialaccents
\parindent=0pt
\def\and{ and }
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
\long\def\@makefntext##1{\parindent0pt\noindent
\@textsuperscript{\normalfont\@thefnmark}##1}%
\newpage
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\@thanks
% according to sample, Dec 2007, copyright no longer wanted here
% \renewcommand\thefootnote{}%
% \footnotetext{\vrule height 8pt width0pt\copyright \thecopyrightyear\ by The % National Academy of Sciences of the USA}
\endgroup
\setcounter{footnote}{0}%
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\@contributor\@empty
\global\let\title\relax
\global\let\date\relax
\global\let\and\relax
}
\def\@maketitle{%
\global\firsttimetrue
%% To get equation numbers in square brackets and bold
\gdef\tagform@##1{\maketag@@@{\bf[\hskip1pt\ignorespaces##1\unskip\@@italiccorr\hskip1pt]}}
\gdef\@eqnnum{{\normalfont\bf \normalcolor [\hskip1pt\theequation\hskip1pt]}}
\newpage
\def\\ {\vskip1pt}
\let \footnote \thanks
{\hsize=\textwidth \raggedright
\noindent\huge\baselineskip= 24pt\titlefont \@title \par}%
\vskip6pt
{\normalsize\authorfont
\@author
\par
{\vskip4pt
\raggedright
\affilcount=0
\footnotesize\affilfont
\loop \ifnum\affilcount< \saveaffilcount
\expandafter\ifx\csname affil\the\affilcount\endcsname\relax\else
$^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$%
\csname affil\the\affilcount\endcsname,\fi
\global\advance\affilcount by1
\repeat\ifnum\saveaffilcount=1\else\ and \fi
$^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$%
\expandafter\csname affil\the\affilcount\endcsname
}}%
\vskip 4pt%
{\affilfont \@contributor}%
\par
\vskip 1.5em}
\def\contributor#1{\def\@contributor{#1}}
\let\@contributor\relax
\contributor{Submitted to Proceedings
of the National Academy of Sciences of the United States of America}
\setcounter{secnumdepth}{3}
\newcounter {part}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
\renewcommand \thepart {\@Roman\c@part}
\renewcommand \thesection {\@arabic\c@section}
\renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
\renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
\renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}
\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
\newcommand\part{%
\if@noskipsec \leavevmode \fi
\par
\addvspace{4ex}%
\@afterindentfalse
\secdef\@part\@spart}
\def\@part[#1]#2{%
\ifnum \c@secnumdepth >\m@ne
\refstepcounter{part}%
\addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
\else
\addcontentsline{toc}{part}{#1}%
\fi
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont
\ifnum \c@secnumdepth >\m@ne
\Large\bfseries \partname~\thepart
\par\nobreak
\fi
\huge \bfseries #2%
\markboth{}{}\par}%
\nobreak
\vskip 3ex
\@afterheading}
\def\@spart#1{%
{\parindent \z@ \raggedright
\interlinepenalty \@M
\normalfont
\huge \bfseries #1\par}%
\nobreak
\vskip 3ex
\@afterheading}
\def\@startsection#1#2#3#4#5#6{%
\if@noskipsec \leavevmode \fi
\par
\@tempskipa #4\relax
\@afterindenttrue
\ifdim \@tempskipa <\z@
\@tempskipa -\@tempskipa \@afterindentfalse
\fi
\if@nobreak
\everypar{}%
\else
\addpenalty\@secpenalty\addvspace\@tempskipa
\fi
\@ifstar
{\@ssect{#3}{#4}{#5}{#6}}%
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
\def\@sect#1#2#3#4#5#6[#7]#8{%
\ifnum #2>\c@secnumdepth
\let\@svsec\@empty
\else
\refstepcounter{#1}%
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup
#6{%
\@hangfrom{\hskip #3\relax\@svsec
}%
\interlinepenalty \@M #8\@@par}%
\endgroup
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}%
\fi
#7}%
\else
\def\@svsechd{%
#6{\hskip #3\relax
\@svsec #8\ifnum#2=2.\fi}% <<==
\csname #1mark\endcsname{#7}%
\addcontentsline{toc}{#1}{%
\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}%
\fi
#7}}%
\fi
\@xsect{#5}}
\newcommand\section{\@startsection {section}{1}{\z@}%
{-10pt \@plus -1ex \@minus -.2ex}%
{.5ex }%
{\normalfont\Large\bfseries\sectionfont}}
\newcommand\subsection{\@startsection{subsection}{2}{\z@}%
{10pt\@plus 1ex \@minus .2ex}%
{-0.5ex \@plus .2ex}%
{\normalfont\large\bfseries\subsectionfont}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
{-3.25ex\@plus -1ex \@minus -.2ex}%
{1.5ex \@plus .2ex}%
{\normalfont\normalsize\bfseries}}
\newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
{3.25ex \@plus1ex \@minus.2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{3.25ex \@plus1ex \@minus .2ex}%
{-1em}%
{\normalfont\normalsize\bfseries}}
\setlength\leftmargini {12pt}
\leftmargin \leftmargini
\setlength\leftmarginii {12pt}
\setlength\leftmarginiii {12pt}
\setlength\leftmarginiv {12pt}
\if@twocolumn
\setlength\leftmarginv {.5em}
\setlength\leftmarginvi {.5em}
\else
\setlength\leftmarginv {1em}
\setlength\leftmarginvi {1em}
\fi
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
\renewcommand\theenumi{\@arabic\c@enumi}
\renewcommand\theenumii{\@alph\c@enumii}
\renewcommand\theenumiii{\@roman\c@enumiii}
\renewcommand\theenumiv{\@Alph\c@enumiv}
\newcommand\labelenumi{\theenumi.}
\newcommand\labelenumii{(\theenumii)}
\newcommand\labelenumiii{\theenumiii.}
\newcommand\labelenumiv{\theenumiv.}
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi(\theenumii)}
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
\newcommand\labelitemi{\raise1.5pt\llap{\small\textbullet\hskip2pt}}
\newcommand\labelitemii{\normalfont\bfseries \textendash}
\newcommand\labelitemiii{\textasteriskcentered}
\newcommand\labelitemiv{\textperiodcentered}
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
\newcommand*\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
\def\abstract{\bgroup
\parindent=0pt
\hsize=\columnwidth
\font\it\helveticaboldoblique at 8pt
\font\bf\helveticabold at 8pt
\def\textit##1{{\it ##1}}
\def\textbf##1{{\bf ##1}}
\small
\abstractfont\dospecialaccents}
\def\endabstract{\vskip11pt
\egroup}
\newenvironment{verse}
{\let\\\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item\relax}
{\endlist}
\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item\relax}
{\endlist}
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item\relax}
{\endlist}
\if@compatibility
\newenvironment{titlepage}
{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\setcounter{page}\z@
}%
{\if@restonecol\twocolumn \else \newpage \fi
}
\else
\newenvironment{titlepage}
{%
\if@twocolumn
\@restonecoltrue\onecolumn
\else
\@restonecolfalse\newpage
\fi
\setcounter{page}\@ne
}%
{\if@restonecol\twocolumn \else \newpage \fi
\if@twoside\else
\setcounter{page}\@ne
\fi
}
\fi
\newcommand\appendix{\par
\setcounter{section}{0}%
\setcounter{subsection}{0}%
\gdef\thesection{\@Alph\c@section}}
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\renewcommand \theequation {\@arabic\c@equation}
\newcounter{figure}
\renewcommand \thefigure {\@arabic\c@figure}
\def\fps@figure{tbp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\newenvironment{figure}
{\@float{figure}}
{\end@float}
\newenvironment{figure*}
{\@dblfloat{figure}}
{\end@dblfloat}
\newcounter{table}
\renewcommand\thetable{\@arabic\c@table}
\def\fps@table{tbp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\newenvironment{table}
{\@float{table}}
{\end@float}
\newenvironment{table*}
{\@dblfloat{table}}
{\end@dblfloat}
\newenvironment{xtable}
{\@dblfloat{table}}
{\end@dblfloat}
\newenvironment{xfigure}
{\@dblfloat{figure}}
{\end@dblfloat}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{2\p@}
\setlength\belowcaptionskip{4\p@}
\long\def\@makecaption#1#2{%
\ifx\@captype\xtable
\let\currtabcaption\relax
\gdef\currtabcaption{
\tabnumfont\relax #1. \tabtextfont\relax#2\par
\vskip\belowcaptionskip
}
\else
\vskip\abovecaptionskip
\sbox\@tempboxa{\fignumfont#1.\figtextfont\hskip.5em\relax #2}%
\ifdim \wd\@tempboxa >\hsize
\fignumfont\relax #1.\figtextfont\hskip.5em\relax#2\par
\else
\global \@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\fi
}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
\newcommand\@pnumwidth{1.55em}
\newcommand\@tocrmarg{2.55em}
\newcommand\@dotsep{4.5}
\setcounter{tocdepth}{3}
\newcommand\tableofcontents{%
\section*{\contentsname
\@mkboth{%
\MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
\@starttoc{toc}%
}
\newcommand*\l@part[2]{%
\ifnum \c@tocdepth >-2\relax
\addpenalty\@secpenalty
\addvspace{2.25em \@plus\p@}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
{\leavevmode
\large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
\nobreak
\if@compatibility
\global\@nobreaktrue
\everypar{\global\@nobreakfalse\everypar{}}%
\fi
\endgroup
\fi}
\newcommand*\l@section[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\endgroup
\fi}
\newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
\newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
\newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
\newcommand\listoffigures{%
\section*{\listfigurename
\@mkboth{\MakeUppercase\listfigurename}%
{\MakeUppercase\listfigurename}}%
\@starttoc{lof}%
}
\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\newcommand\listoftables{%
\section*{\listtablename
\@mkboth{%
\MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
\@starttoc{lot}%
}
\let\l@table\l@figure
\newdimen\bibindent
\setlength\bibindent{1.5em}
\newskip\bibskip
\bibskip=0pt plus 3pt
\newenvironment{thebibliography}[1]
{\endgroup\endtwocolumns\vskip24pt\twocolumns\begingroup
\def\@currenvir{thebibliography}
\let\savebibitem\bibitem
\def\bibitem{\vskip\bibskip\savebibitem}
\tiny\baselineskip=8pt\bibfont
\let\it\bibitfont
\let\bf\bibbffont
\let\em\bibitfont
\let\sc\bibfont
\def\textit##1{{\bibitfont ##1}}
\def\textbf##1{{\bibbffont ##1}}
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist
}
\newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
\let\@openbib@code\@empty
\renewcommand\footnoterule{%
\kern-3\p@
\hrule\@width6pc%.4\columnwidth
\kern2.6\p@}
\newcommand\@makefntext[1]{%
\parindent 1em%
\noindent
\hb@xt@1.8em{\hss\@makefnmark}#1}
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\refname{References}
\newcommand\indexname{Index}
\newcommand\figurename{Fig.}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\appendixname{Appendix}
\newcommand\abstractname{Abstract}
\def\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\pagenumbering{arabic}
\if@twoside
\else
\raggedbottom
\fi
\if@twocolumn
\twocolumn
\sloppy
\flushbottom
\else
\onecolumn
\fi
%%%%%%%%%%%%%%%%%
% Additions to article.cls for PNASONE ==>>
%%%%%%%%%%%%%%%%%
\hoffset-.25in
\pagestyle{headings}
\textwidth= 42.5pc
\textheight= 56.5pc
\def\xrelax{\relax}
%%%%%%%%%%
%% Footnotes, endnotes
\newcount\footnum
\newcount\savefootnum
\def\notes{
{\ifnum\footnum=0\else
\savefootnum=\footnum
\footnum=0
\noindent\loop\ifnum\savefootnum>\footnum%
\global\advance\footnum by1\relax%
\csname foot\the\footnum\endcsname\relax%
\expandafter\gdef\csname foot\the\footnum\endcsname{\relax}\relax%
\repeat\global\footnum=0\relax\fi}}
\long\def\endnotes#1{\global\advance\footnum by 1\relax$^{\the\footnum}$%
\long\expandafter\gdef\csname foot\the\footnum\endcsname{%
\vbox{\footnotesize\everypar={\hskip-10pt\everypar={}}
\leftskip=10pt\relax
\noindent\hbox to10pt{\the\footnum.\hfill}{\def\@currentlabel{\the\footnum}%
#1\strut\vskip1sp}}\vskip1pt}}
\def\endnotetext#1{\global\advance\footnum by 1\relax
\long\expandafter\gdef\csname foot\the\footnum\endcsname{%
\vtop{\footnotesize%
\leftskip=12pt\relax\parindent=-12pt
\indent\hbox to12pt{\the\footnum.\hfill}{#1\strut\vskip1sp}}\vskip1pt}}
%\let\footnote\endnotes
\setlength\oddsidemargin {0\p@}
\setlength\evensidemargin {0\p@}
\def\dropcap#1{\setbox1=\hbox{\dropcapfont\uppercase{#1}\hskip1pt}
\hangindent=\wd1
\hangafter-2
\noindent\llap{\vbox to0pt{\vskip-7pt\copy1\vss}}}
%%% Theorem environment %%%%%%%%%
%% added \theoremfont for theorem name and number
\def\@begintheorem#1#2{\trivlist
\item[\hskip \labelsep{\theoremfont #1\ #2.}]\itshape}
\def\@opargbegintheorem#1#2#3{\trivlist
\item[\hskip \labelsep{\theoremfont #1\ #2.\ (#3)}]\itshape}
\def\@endtheorem{\endtrivlist}
%%%%%%
%%Macros for Footline on titlepage
\def\url#1{\def\theurl{#1}}
\def\issuedate#1{\def\theissuedate{#1}}
\def\copyrightyear#1{\def\thecopyrightyear{#1}}
\def\volume#1{\def\thevolume{#1}}
\def\issuenumber#1{\def\theissuenumber{#1}}
\def\footlineauthor#1{\def\thefootlineauthor{\let\it\footlineit#1}}
\ps@headings
%% References
\def\@biblabel#1{#1.}
%%% code to get text in tables to extend all the way to left and right
%%% of table
\def\xtable{table}
\def\@array[#1]#2{\tabletextfont
\setbox\@arstrutbox=\hbox{\vrule
height\arraystretch \ht\strutbox
depth\arraystretch \dp\strutbox
width\z@}\@mkpream{#2}\edef\@preamble{\halign \noexpand\@halignto
\bgroup%
\tabskip\z@\@arstrut\@preamble
\ifx\@captype\xtable\hskip-\tabcolsep\fi%% <==== Changed
\tabskip\z@ \cr}%
\let\@startpbox\@@startpbox \let\@endpbox\@@endpbox%
\if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi%
\bgroup\let\par\relax%
\let\@sharp##\let\protect\relax \lineskip\z@\baselineskip\z@\@preamble}
%% new
\def\new@tabacol{\edef\@preamble{\@preamble\hskip0pt}}
\def\@tabclassz{\ifcase \@lastchclass\@acolampacol%
\or \@ampacol \or
\or \or \@addamp \or \@acolampacol\or \@firstampfalse
\ifx\@captype\xtable \new@tabacol\else\@tabacol \fi%
\fi%
\edef\@preamble{\@preamble%
\ifcase \@chnum%
\hfil\ignorespaces\@sharp\unskip\hfil%
\or \ignorespaces\@sharp\unskip\hfil%
\or \hfil\hskip\z@ \ignorespaces\@sharp\unskip\fi}}
\setcounter{secnumdepth}{0}
\long\def\@makefntext#1{\parindent0pt\noindent
\@textsuperscript{\normalfont\@thefnmark}#1}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% %%
%% LaTeX Style for Multiple Columns with Floating Insertions %%
%% %%
%% Copyright 2004, Amy Hendrickson, TeXnology Inc. %%
%% All rights reserved %%
%% %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%
%%% Double column output routines,
%%% with single and double column insertions,
%%% to be positioned at page or column top, page or column bottom, page
%%% or column center, or full page floating insertion.
%%% This code was originally based on Frank Mittlebach's multicol.sty.
%%% The concept of how to balance columns is due to Donald Knuth. The
%%% way to integrate the changed output routine into the standard LaTeX
%%% output routine is due to Frank.
%%% The method of making the single and double column insertions and the
%%% changes in the output routines to accomodate these features are mine.
%%% A.H., August 2004
%%
\newskip\abovefigcaptionskip
\newskip\abovetabcaptionskip
\newskip\abovetableskip
\newif\ifcentermultiplelines
\newif\ifcentersingleline
\newif\ifcentersingletabline
\newif\iflineabovetabcaption
\newif\iflinebelowtabcaption
\newdimen\belowtabcaptionskip
%% Parameters you can set:
\columnsep=16pt
\newdimen\saveparskip
\saveparskip=\parskip
%%
\newdimen\captionskip %% space between caption and figure or table
\captionskip=0pt
%%%
\newdimen\PushOneColTopFig
\newdimen\PushOneColBotFig
\PushOneColTopFig=5.5pt %% push down from top of text page
\PushOneColBotFig=-4.5pt %
%%
\newdimen\PushOneColTopTab
\newdimen\PushOneColBotTab
\PushOneColTopTab=2.5pt %% push down from top of text page
\PushOneColBotTab=0pt %% push up from bottom of text page
%%
\newdimen\PushTwoColTopFig
\newdimen\PushTwoColBotFig
\PushTwoColTopFig=2.5pt %% push down from top of text page
\PushTwoColBotFig=1.5pt %% push up from bottom of text page
%%
\newdimen\PushTwoColTopTab
\newdimen\PushTwoColBotTab
\PushTwoColTopTab=1.5pt %% push down from top of text page
\PushTwoColBotTab=1.5pt %% push up from bottom of text page
%%
\newskip\intextfloatskip
\intextfloatskip=20pt %% Space between figure or table and text.
%% (Need to subtract 4pt to get what you want)
%% Normal and Appendix Figure and Table Numbers
\def\appthefigure{\Alph{section}\the\c@appfigure\theletter}
\def\appthetable{\Alph{section}\the\c@apptable\theletter}
\def\apptheplate{\Alph{section}\the\c@appplate\theletter}
\newcount\c@appfigure
\newcount\c@apptable
\newcount\c@appplate
%% <=== end of parameters you can set
%% do one column at a time so that we can get single col
%% floats for first col.
%%% New version of \@makecol that includes dbltopins and dblbotins,
%%% insertions that span both columns at the top and bottom of text page.
%%%
\def\new@makecol{\setbox\@outputbox
\vbox{\boxmaxdepth \maxdepth
\ifdim\ht\dbltopins<1pt\else\unvbox\dbltopins\fi
\unvbox\@cclv
\ifdim\ht\dblbotins<1pt\else\unvbox\dblbotins\fi%
\ifvoid\footins\else\vskip\skip\footins\footnoterule\unvbox\footins\fi\vss}
%\global\savefigandtabnumber\figandtabnumber
%\global\advance\savefigandtabnumber by 1 %% Because loop stops one short
%% of the total number of figs
\global\savedblfigandtabnumber\dblfigandtabnumber
\xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
\setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth
\@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox
\vskip-\dimen128\@textbottom}%
\global\maxdepth\@maxdepth}
%%
\let\@makecol\new@makecol %%
%% Default Latex output routine, to return to after balance columns
%% This should make it possible to capture the output routine of
%% any version of 2e as well as 2.09. ==>>
\edef\curroutput{\the\output}
\let\latexoutput\curroutput
%% table* and figure* outside two columns keep default definitions.
\newif\ifnonewpage
\def\nonewpage{\global\nonewpagetrue}
%% Begin twocolumns ==>>
\newdimen\checkforspace
\def\twocolumns{\par \penalty\z@
\checkforspace=\pagegoal
\advance\checkforspace-\pagetotal
\advance\checkforspace-\ht\partialpage
\advance\checkforspace-\dp\partialpage
\advance\checkforspace by -2\ht\dbltopins
\advance\checkforspace by -2\dp\dbltopins
\advance\checkforspace by -2\ht\dblbotins
\advance\checkforspace by -2\dp\dblbotins
\ifdim\checkforspace<36pt\ifnonewpage\else\newpage\fi\fi
\begingroup
%
\expandafter\gdef\csname plate*\endcsname{\twocolplate}
\expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
%
\expandafter\gdef\csname figure*\endcsname{\twocolfig}
\expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
%
\expandafter\gdef\csname table*\endcsname{\twocoltable}
\expandafter\gdef\csname endtable*\endcsname{\endtwocolfloat}
%
\let\figure\onecolfig
\let\plate\onecolplate
\let\table\onecoltable
%
\let\@makecol\new@makecol %%
%% Confines new def of \@makecol to
%% two column material, preserves normal topskip after twocolumns is
%% finished.
%%
\output={\global\setbox\partialpage=\vbox{\unvbox\@cclv}}
\vskip1sp %%
\eject
\vbadness10001 \hbadness5000
\tolerance5000
\parskip \saveparskip %plus .01pt %
%\ifjdraft
%\baselineskip=28pt\fi
\pretolerance\m@ne %keeps TeX from trying to make up paragraph
% without discretionary hyphens
\advance\@colroom-\ht\partialpage
\advance\@colroom-\dp\partialpage
\vsize=\@colroom
% Changed to \@colroom rather than 2\@colroom. Each column is output
% separately so we can find out if there are top or bottom inserts
% in first column.
%%
\hsize\textwidth \advance\hsize-\columnsep
\divide\hsize by 2
\linewidth\hsize %% particular to LaTeX
\columnwidth=\hsize
%% OR, you can substitute these lines:
%\hsize=\mycolumnwidth
%\linewidth=\hsize
%%
%% Output:
% Set output to firstcolout, which checks to see if there are inserts
% then doubles the vsize and send material back into input stream, then
% sets the next output routine to \makeuppage
%
\output={\firstcolout}
\vskip2sp\ignorespaces}
\def\galleycolumns{\par \penalty\z@
\checkforspace=\pagegoal
\advance\checkforspace-\pagetotal
\advance\checkforspace-\ht\partialpage
\advance\checkforspace-\dp\partialpage
\advance\checkforspace by -2\ht\dbltopins
\advance\checkforspace by -2\dp\dbltopins
\advance\checkforspace by -2\ht\dblbotins
\advance\checkforspace by -2\dp\dblbotins
\ifdim\checkforspace<36pt\newpage\fi
\begingroup
\expandafter\gdef\csname plate*\endcsname{\twocolplate}
\expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
%
\expandafter\gdef\csname figure*\endcsname{\twocolfig}
\expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
%
\expandafter\gdef\csname table*\endcsname{\twocoltable}
\expandafter\gdef\csname endtable*\endcsname{\endtwocolfloat}
%
\let\figure\onecolfig
\let\plate\onecolplate
\let\table\onecoltable
%
\global\firstsectionfalse
\hsize=\mycolumnwidth
\linewidth=\mycolumnwidth
\vbadness10001
\hbadness5000
\tolerance5000
\widowpenalty=0 \clubpenalty=0
\parskip \saveparskip %plus .0001pt %
\vskip1sp\ignorespaces}
\def\draftcolumns{\par \penalty\z@
\begingroup
\expandafter\gdef\csname plate*\endcsname{\twocolplate}
\expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
%
\expandafter\gdef\csname figure*\endcsname{\twocolfig}
\expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
%
\expandafter\def\csname table*\endcsname{\twocoltable}
\expandafter\def\csname endtable*\endcsname{\endtwocolfloat}
%
\let\figure\onecolfig
\let\plate\onecolplate
\let\table\onecoltable
%
\marginparsep=4pt
\oddsidemargin-.25in
\evensidemargin-.25in
\advance\textwidth-.5in
\hsize=\textwidth
\linewidth=\textwidth
\vbadness10001 \hbadness5000
\tolerance5000
\parskip \saveparskip
\vskip1sp\ignorespaces}
\newbox\savetopinsert
\newbox\savebotinsert
\newbox\secondsavetopinsert
\newbox\secondsavebotinsert
\newbox\firstcolbox
\newbox\secondcolbox
\newbox\thefirstbox
\newbox\thesecondbox
\newdimen\firstcol
\newdimen\secondcol
\newdimen\checkheight
\newcount\loopnum
\newcount\firstcolsavefignum
\def\firstcolout{%
%% The point of having firstcolout is to find out
%% which figures/tables have been entered in the first column:
\global\firstcolsavefignum=\figandtabnumber
\global\advance\vsize by\@colroom
\topskip=11pt %% ??
\unvbox\@cclv
\penalty\outputpenalty
\global\output={\makeuppage}}
%% This is where the floats and text are put together to make page:
\newif\iffirstpage
\newbox\footnotebox
\newdimen\ColUsed
\newdimen\FigSpace
\newbox\testdblbotins
\def\makeuppage{%
%%
\FigSpace=.9\@colroom %%
\advance\FigSpace by-\ht\testdblbotins
\advance\FigSpace by-\dp\testdblbotins
\advance\FigSpace by-\ht\dbltopins
\advance\FigSpace by-\dp\dbltopins
%
%% Save top inserts from first column: +++
\global\setbox\savetopinsert=\vbox{%
% write top figures and tables into this box
\redefiningtrue
\global\loopnum=0 \global\checkheight=0pt
\loop\ifnum\loopnum<\firstcolsavefignum
%
\expandafter\ifx\csname topfloat\the\loopnum\endcsname\empty
\else
\expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax
\else
\global\advance\checkheight by
\expandafter\csname totalht\the\loopnum\endcsname\relax
\fi\fi
\ifdim\checkheight>\FigSpace \relax
\global\loopnum=10000 % jump out of loop
%
\else
\csname topfloat\the\loopnum\endcsname
\fi
%
\global\advance\loopnum by1
\repeat\relax
}
\ColUsed=\FigSpace %%
\advance\ColUsed by-\ht\savetopinsert
\advance\ColUsed by-\dp\savetopinsert
%%
\global\setbox\savebotinsert=\vbox{%
%% Write bottom figures and tables into this box
\redefiningtrue
\global\loopnum=0
\global\checkheight=0pt
\loop\ifnum\loopnum<\firstcolsavefignum
\expandafter\ifx\csname botfloat\the\loopnum\endcsname\empty
\else
\expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax
\else
\global\advance\checkheight by
\expandafter\csname totalht\the\loopnum\endcsname\relax
\fi\fi
\ifdim\checkheight>\ColUsed
\global\loopnum=10000 % jump out of loop
\else%
\csname botfloat\the\loopnum\endcsname
\global\expandafter\expandafter\let\csname botfloat\the\loopnum\endcsname\relax
%% how come this reset is here and not in similar places????
\fi
%
\global\advance\loopnum by1
\repeat
} %
%
%
\iffirstpage\else
\global\setbox\secondsavetopinsert=\vbox{%
%% Write top figures and tables into this box
%
\global\loopnum=0 \global\checkheight=0pt
\redefiningtrue
\loop\ifnum\loopnum<\figandtabnumber %% ?
%
\expandafter\ifx\csname topfloat\the\loopnum\endcsname\empty
\else
\expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax
\else
\global\advance\checkheight by
\expandafter\csname totalht\the\loopnum\endcsname\relax
\fi\fi
\ifdim\checkheight>\FigSpace
\global\loopnum=10000 % jump out of loop
%
\else%
\csname topfloat\the\loopnum\endcsname
\fi
%
\global\advance\loopnum by1\repeat
%% one more, because it doesn't stop when number is =, only when it
%% is less than.
\global\advance\loopnum by1
\csname topfloat\the\loopnum\endcsname
}
\fi
%
\ColUsed=\FigSpace %%
\advance\ColUsed by-\ht\secondsavetopinsert
\advance\ColUsed by-\dp\secondsavetopinsert
%
\iffirstpage\global\firstpagefalse\else
\global\setbox\secondsavebotinsert=\vbox{%
%% Write bottom figures and tables into this box
%
\redefiningtrue
\global\loopnum=0 \global\checkheight=0pt
\loop\ifnum\loopnum<\figandtabnumber
\expandafter\ifx\csname botfloat\the\loopnum\endcsname\empty
\else
\expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax
\else
\global\advance\checkheight by
\expandafter\csname totalht\the\loopnum\endcsname\relax
\fi\fi
\ifdim\checkheight>\ColUsed
\global\loopnum=10000 % jump out of loop
%
\else%
\csname botfloat\the\loopnum\endcsname
\fi
%
\global\advance\loopnum by1\repeat
%% one more, because it doesn't stop when number is =, only when it
%% is less than.
\global\advance\loopnum by1
\csname botfloat\the\loopnum\endcsname
}
%
\global\dp\secondsavebotinsert=2.5pt
\global\dp\savebotinsert=2.5pt
\fi
%
\splittopskip=\topskip
\splitmaxdepth\maxdepth
\dimen@\@colroom
%% Leave space if there is a two-column wide bottom insertion:
%
\global\setbox\dblbotins=\vbox{%
\hsize=\textwidth
\linewidth=\textwidth
\captionwidth=\widecaptionwidth
\unvbox\dblbotins %% avoid eradicating this if it has anything in it
%% Write dblspan bottom figures and tables into this box
\redefiningtrue
\global\dblloopnum=0
\loop\ifnum\dblloopnum<\savedblfigandtabnumber %%
\csname dblbotfloat\the\dblloopnum\endcsname
\global\advance\dblloopnum by1\repeat
\csname dblbotfloat\the\dblloopnum\endcsname
}
\ifvoid\dblbotins \else
\advance\dimen@-\ht\dblbotins
\advance\dimen@-\dp\dblbotins
\fi
%
%% Leave space if there is a two-column wide top insertion:
\ifvoid\dbltopins\else
\advance\dimen@-\ht\dbltopins
\advance\dimen@-\dp\dbltopins
\fi
%%
%% These changes are made to cut the column size down if we need
%% to fit an insert into the column. This allows the right and
%% left column to have differing amounts of text cut from box 255,
%% called box \@cclv in LaTeX. See \vsplit below.
\firstcol=\dimen@
\ifvoid\savetopinsert\else
\ifdim\ht\savetopinsert>0pt
\advance\firstcol by-\ht\savetopinsert
\advance\firstcol by-\dp\savetopinsert\fi\fi
\ifvoid\savebotinsert\else
\ifdim\ht\savebotinsert>0pt
\advance\firstcol by-\ht\savebotinsert
\advance\firstcol by-\dp\savebotinsert\fi
\fi%
%%% KLUDGE below
\advance\firstcol by-3pt %% We need this to avoid
%% error messages about overfull boxes.
%
\secondcol=\dimen@
%%
\ifvoid\secondsavetopinsert\else
\ifdim\ht\secondsavetopinsert>0pt
\advance\secondcol by-\ht\secondsavetopinsert
\advance\secondcol by-\dp\secondsavetopinsert\fi\fi
\ifvoid\secondsavebotinsert\else
\ifdim\ht\secondsavebotinsert>0pt
\advance\secondcol by-\ht\secondsavebotinsert
\advance\secondcol by-\dp\secondsavebotinsert\fi\fi
\ifvoid\footins\else
\ifdim\ht\footins>0pt
\global\setbox\footnotebox=\vbox{\vskip\skip\footins
\footnoterule\unvbox\footins\vskip1sp}
\advance\secondcol by-\ht\footnotebox
\advance\secondcol by-\dp\footnotebox\fi\fi
%%% KLUDGE below
\advance\secondcol by-3pt %% We need this to avoid
%% error messages about overfull boxes.
%
%% Cutting the amount of text that will fit from box255:
\splittopskip=\topskip %%
\splitmaxdepth\maxdepth
\setbox\thefirstbox \vsplit\@cclv to\firstcol
\setbox\thesecondbox \vsplit\@cclv to\secondcol
%
%% Making a text box that includes the inserts, column to the left:
\setbox\firstcolbox\vbox to\dimen@{%
\ifvoid\savetopinsert\else\unvbox\savetopinsert\fi%
\box\thefirstbox%
\ifvoid\savebotinsert\else\vfill\unvbox\savebotinsert\fi%
}
%
%% Making a text box that includes the inserts, column to the right:
\setbox\secondcolbox\vbox to\dimen@{%
\ifvoid\secondsavetopinsert\else\unvbox\secondsavetopinsert\fi%
\box\thesecondbox%%
\ifvoid\secondsavebotinsert\else\vfill\unvbox\secondsavebotinsert\vskip1sp\fi%
\ifvoid\footnotebox\else\unvbox\footnotebox\fi%
}
% Put back any text material that is not used:
\ifvoid\@cclv \else
\unvbox\@cclv
\penalty\outputpenalty\fi
\setbox\@cclv\vbox{\page@sofar}%
\@makecol\@outputpage
\global\@colroom\@colht
% Changed this so that each column will be output separately,
% so we have a chance to see if there are any insertions in the first
% column.
%
%% Do Page Inserts here, so that if there are any two col top inserts
%% They will be numbered after Page Inserts.
%%
\expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\relax
\else
\expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\empty
\else
\insertpage\fi\fi
%
%** doing this now gets the numbers right.
\global\setbox\dbltopins=\vbox{%
\hsize=\textwidth
\linewidth=\textwidth
\captionwidth=\widecaptionwidth
\unvbox\dbltopins
%% Write dblspan bottom figures and tables into this box
\redefiningtrue %
\global\dblloopnum=0
\loop\ifnum\dblloopnum<\savedblfigandtabnumber
\csname dbltopfloat\the\dblloopnum\endcsname
\global\advance\dblloopnum by1\repeat
\csname dbltopfloat\the\dblloopnum\endcsname%
%Save one for next page?
%\vskip24pt
}
%**
%
%% dblfigandtabnumber rather than savedblfigandtabnumber here
\global\setbox\testdblbotins=\vbox{%
\let\c@figure\bogus
\let\c@table\bogus
\let\c@plate\bogus
\hsize=\textwidth
\linewidth=\textwidth
\captionwidth=\widecaptionwidth
\copy\dblbotins %% avoid eradicating this if it has anything in it
%% Write dblspan bottom figures and tables into this box
\redefiningfalse
\global\dblloopnum=0
\loop\ifnum\dblloopnum<\dblfigandtabnumber %%
\csname dblbotfloat\the\dblloopnum\endcsname
\global\advance\dblloopnum by1\repeat
\csname dblbotfloat\the\dblloopnum\endcsname
}
%
\ifbalancing
\global\balancingfalse
\global\vsize=2\@colroom
\else
\global\vsize\@colroom
\global\advance\vsize -\ht\dbltopins
\global\advance\vsize -\dp\dbltopins
\global\advance\vsize -\ht\testdblbotins
\global\advance\vsize -\dp\testdblbotins
\global\output={\firstcolout}%
\fi
}
\newcount\pageloopnum
\def\secondoutput{{\makeuppage }}
\newbox\endcolsavetopinsert
\newbox\endcolsavebotinsert
\newbox\testpagesize
\newif\ifbalancing
\newdimen\savelastskip
%%+++
\def\endtwocolumns{%
%\par\penalty0
\splittopskip=\topskip
\splitmaxdepth\maxdepth
\setboxesandredefine
\ifdim\ht\endcolsavetopinsert>1pt
\unvbox\endcolsavetopinsert%
\fi
\ifdim\ht\endcolsavebotinsert>1pt
\unvbox\endcolsavebotinsert%
\fi
\par\penalty\z@
\output={\global\setbox\testpagesize=\vbox{%
\unvbox\@cclv\ifdim\savelastskip>0pt \vskip-\savelastskip\fi}}\eject
%%
%% We reset output routine below to \latexoutput
%% since we had to set multicolout to be the global output routine.
%%
\dimen0=\ht\testpagesize
\advance\dimen0 by\dp\testpagesize
\unvbox\testpagesize %%
%% Above needed to see if we have more than one page worth of text.
%%
\advance\dimen0 by \topskip
\ifdim\dimen0>2\@colroom
%\typeout{^^J^^J more than 2 colroom^^J^^J}
%% More than one page of text:
%%
\balancingtrue %% need this to avoid turning on firstcolout output routine.
\global\output={\settwocolboxes\makeuppage
\global\output={\setboxesandredefine
\balance@columns\global\output={\latexoutput}}}
\else
\settwocolboxes
\advance\dimen0 by 2\ht\dbltopins
\advance\dimen0 by 2\dp\dbltopins
\ifdim\dimen0>2\@colroom
%\typeout{^^J^^J Second more than 2 colroom^^J^^J}
%%
\balancingtrue %% need this to avoid turning on firstcolout output routine.
\global\output={\makeuppage
\global\output={\balance@columns\global\output={\latexoutput}}}
\else
%\typeout{^^J^^J NOT more than 2 colroom^^J^^J}
\balancingtrue %% need this to avoid turning on firstcolout output routine.
\global\output={\balance@columns\global\output={\latexoutput}}\fi\fi
\par
\eject
\endgroup
\par\penalty\z@\relax
\hsize=\textwidth
}
%% to get rid of spurious error message when triple col is used:
%\def\@checkend#1{\def\reserved@a{#1}\ifx
% \reserved@a\@currenvir \else\iftriplecol
%\else\@badend{#1}\fi\fi}
\def\endgalley{\vskip1sp\endgroup\newpage
\vspace*{1in}
\unvbox\figinsert}
\def\enddraft{\vskip1sp\endgroup
\ifdim\ht\figinsert <2pt\else
\newpage
\vspace*{1in}
\unvbox\figinsert\fi}
\def\setboxesandredefine{%
\global\setbox\dbltopins=\vbox{%
\hsize=\textwidth
\linewidth=\textwidth
\captionwidth=\widecaptionwidth
\unvbox\dbltopins
%% Write dblspan bottom figures and tables into this box
\redefiningtrue %
\global\dblloopnum=0
\loop\ifnum\dblloopnum<\dblfigandtabnumber
\csname dbltopfloat\the\dblloopnum\endcsname
\global\advance\dblloopnum by1\repeat
\csname dbltopfloat\the\dblloopnum\endcsname%
% %Save one for next page?
\vskip3pt%% kludge
\vskip-\intextfloatskip
}
%
\global\setbox\endcolsavetopinsert=\vbox{%
%% dropping figures and tables into this box
\loopnum=0
\redefiningtrue
\loop\ifnum\loopnum<\figandtabnumber
\csname topfloat\the\loopnum\endcsname
\global\advance\loopnum by1\repeat
\csname topfloat\the\loopnum\endcsname%
}
%
\global\setbox\endcolsavebotinsert=\vbox{%
%% drop figures and tables into this box
\global\loopnum=0
\redefiningtrue
\loop\ifnum\loopnum<\figandtabnumber
\csname botfloat\the\loopnum\endcsname
\global\advance\loopnum by1\repeat
\csname botfloat\the\loopnum\endcsname}
%
\global\setbox\dblbotins=\vbox{%
\hsize=\textwidth
\linewidth=\textwidth
\captionwidth=\widecaptionwidth
\unvbox\dblbotins %% avoid eradicating this if it has anything in it
% Write dblspan bottom figures and tables into this box
\redefiningtrue
\global\dblloopnum=0
\loop\ifnum\dblloopnum<\dblfigandtabnumber %%
\csname dblbotfloat\the\dblloopnum\endcsname
\global\advance\dblloopnum by1\repeat
\csname dblbotfloat\the\dblloopnum\endcsname}%
}%% end of setboxes and redefine
\def\settwocolboxes{%
\global\setbox\dbltopins=\vbox{%
\hsize=\textwidth
\linewidth=\textwidth
\captionwidth=\widecaptionwidth
\unvbox\dbltopins
% Write dblspan bottom figures and tables into this box
\redefiningtrue %
\global\dblloopnum=0
\loop\ifnum\dblloopnum<\dblfigandtabnumber
\csname dbltopfloat\the\dblloopnum\endcsname
\global\advance\dblloopnum by1\repeat
\csname dbltopfloat\the\dblloopnum\endcsname%
%
%\global\setbox\dblbotins=\vbox
\hsize=\textwidth
\linewidth=\textwidth
\captionwidth=\widecaptionwidth
\unvbox\dblbotins %% avoid eradicating this if it has anything in it
% Write dblspan bottom figures and tables into this box
\redefiningtrue
\global\dblloopnum=0
\loop\ifnum\dblloopnum<\dblfigandtabnumber %%
\csname dblbotfloat\the\dblloopnum\endcsname
\global\advance\dblloopnum by1\repeat
\csname dblbotfloat\the\dblloopnum\endcsname%
\vskip\intextfloatskip%% new++
}}
\def\setonecolboxesandredefine{%
\global\setbox\endcolsavetopinsert=\vbox{%
%% dropping figures and tables into this box
\loopnum=0
\redefiningtrue
\loop\ifnum\loopnum<\figandtabnumber
\csname topfloat\the\loopnum\endcsname
\expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax\else
\vskip12pt\goodbreak\fi
\global\advance\loopnum by1\repeat
\csname topfloat\the\loopnum\endcsname%
}
%
\global\setbox\endcolsavebotinsert=\vbox{%
%% drop figures and tables into this box
\global\loopnum=0
\redefiningtrue
\loop\ifnum\loopnum<\figandtabnumber
\csname botfloat\the\loopnum\endcsname
% we don't want a space here because it is at the bottom of a column:
%\expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax\else
%\vskip12pt\goodbreak\fi
\global\advance\loopnum by1\repeat
\csname botfloat\the\loopnum\endcsname%
}
%
}%% end of setonecol boxes and redefine
\newbox\partialpage
\def\process@cols#1#2{\count@#1\relax
\loop #2%
\advance\count@\tw@
\ifnum\count@<4
\repeat}
%%% Version for balanced column output.
%% this version to get topskip right on balanced page at end of article.
\def\Bpage@sofar{
\unvbox\partialpage
%% major kludge! but it works ==>>
\null
\vskip-\topskip
\vskip-12pt
%% <<==
\process@cols\z@{\wd\count@\hsize}%
\hbox to\textwidth{%
\process@cols\tw@{\box\count@
\hss\vrule\@width\columnseprule\hss}%
\box\z@}}
%%% AH: Version for two column output. %%
\def\page@sofar{\unvbox\partialpage
\wd\firstcolbox\hsize
\wd\secondcolbox\hsize
\hbox to\textwidth{%
\box\firstcolbox
\hss\vrule\@width\columnseprule\hss
\box\secondcolbox}%%
}
%% Variant on \@outputpage to use for floating page insert:
\def\insertpage{\begingroup\catcode`\ =10
\let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
\if@twoside
\ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
\let\@themargin\oddsidemargin
\else \let\@thehead\@evenhead
\let\@thefoot\@evenfoot \let\@themargin\evensidemargin
\fi\fi
\shipout
\vbox{\normalsize \baselineskip\z@ \lineskip\z@
\let\par\@@par %%
\vskip \topmargin \moveright\@themargin
\vbox{\setbox\@tempboxa
\vbox to\headheight{\vfil \hbox to\textwidth
{\let\label\@gobble \let\index\@gobble
\@thehead}} %%
\dp\@tempboxa\z@
\box\@tempboxa
\vskip \headsep
%% change from \@outputpage below
\vbox to\textheight{\vfil
\hsize=\textwidth
\linewidth=\textwidth
\csname pagefloat\the\pageloopnum \endcsname
}
\baselineskip\footskip
\hbox to\textwidth{\let\label\@gobble
\let\index\@gobble %%
\@thefoot}}}\global\@colht\textheight
\endgroup\stepcounter{page}\let\firstmark\botmark
\global\advance\pageloopnum by1
\expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\relax\else%
\insertpage\fi%
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\balance@columns{% can't throw in figs here because we
% aren't doing eject, so they will be lost
\ifdim\ht\dbltopins>1pt
\advance\@colroom-\ht\dbltopins
\advance\@colroom-\dp\dbltopins
\advance\@colroom-\baselineskip
\fi
\ifdim\ht\dblbotins>1pt
\advance\@colroom-\ht\dblbotins
\advance\@colroom-\dp\dblbotins
\fi
\setbox\z@\vbox{\unvbox\@cclv}
\dimen@\ht\z@
%\advance\dimen@\dp\z@
\advance\dimen@ 2\topskip
\advance\dimen@-2\baselineskip %% ?? was 2\baselineskip, 4 gives better
%topskip
\divide\dimen@2%
%
{\vbadness\@M
\splittopskip=\topskip
\loop{\process@cols\@ne{\global\setbox\count@
\box\voidb@x}}%
\global\setbox\@ne\copy\z@
{\process@cols\thr@@{\global\setbox\count@
\vsplit\@ne to\dimen@}}%
\ifdim\ht\@ne >\ht\thr@@
\global\advance\dimen@\p@
\repeat}
%
\dimen@\ht\thr@@
\process@cols\z@{\@tempcnta\count@
\advance\@tempcnta\@ne
\setbox\count@\vtop to\dimen@ %%
{\unvbox\@tempcnta}}%
\global\vsize\@colroom
\global\advance\vsize\ht\partialpage
\Bpage@sofar}
\@ifundefined{emergencystretch}
{\newdimen\emergencystretch}{}
\emergencystretch 1pt
\def\setemergencystretch#1#2{%
\emergencystretch 4pt
\multiply\emergencystretch#1}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Figure and table captions in two column text and spanning both
%%% columns.
%%%%%%%%%%%%%%%%%%%%%%%%%
%% Single column inserts:
\let\savecaption\caption
\let\xsavecaption\savecaption
\def\onecolfig{\ifvmode\else\unskip\fi
\global\captypefigtrue
\global\captypeplatefalse
\@ifnextchar[\lookforposition{\lookforposition[e]}}
\def\onecolplate{\ifvmode\else\unskip\fi
\global\advance\c@plate -1\relax
\global\captypeplatetrue
\global\captypefigfalse
\@ifnextchar[\lookforposition{\lookforposition[e]}}
\def\onecoltable{\ifvmode\else\unskip\vskip1pt\fi\tabletextsize
\global\captypefigfalse
\global\captypeplatefalse
\@ifnextchar[\lookforposition{\lookforposition[e]}
}
%% This is used in case we get more than one letter, i.e.,
%% \begin{figure}[htp]. This macro picks up only the first letter.
\def\defone#1#2*{\def\one{#1}}
\newcount\figandtabnumber
\newbox\figandtabbox
\newif\ifcaptypefig
\newif\ifcaptypeplate
\long\def\catchcaption#1{%
\ifcaptypefig%
\expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
\def\@captype{figure}\savecaption{#1}}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
\def\@captype{plate}\savecaption{#1}}%
\else
\expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
\def\@captype{table}\savecaption{#1}}%
\fi\fi}
\long\def\dblcatchcaption#1{%
\ifcaptypefig%
\expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{figure}\savecaption{#1}}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{plate}\savecaption{#1}}%
\else
\expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{table}\savecaption{#1}}%
\fi\fi}
\long\def\pcatchcaption#1{%
\ifcaptypefig%
\expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
\def\@captype{figure}\savecaption{#1}}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
\def\@captype{plate}\savecaption{#1}}%
\else
\expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
\def\@captype{table}\savecaption{#1}}%
\fi\fi}
%%%
\long\def\catchletteredcaption#1#2{%
\ifcaptypefig%
\expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
\def\@captype{figure}\letteredcaption{#1}{#2}}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
\def\@captype{plate}\letteredcaption{#1}{#2}}%
\else
\expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
\def\@captype{table}\letteredcaption{#1}{#2}}%
\fi\fi}
\long\def\dblcatchletteredcaption#1#2{%
\ifcaptypefig%
\expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{figure}%
\letteredcaption{#1}{#2}}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{plate}%
\letteredcaption{#1}{#2}}%
\else
\expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{table}%
\letteredcaption{#1}{#2}}%
\fi\fi}
\long\def\pcatchletteredcaption#1#2{%
\ifcaptypefig%
\expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
\def\@captype{figure}%
\letteredcaption{#1}{#2}}%
\else%
\ifcaptypeplate%
\expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
\def\@captype{plate}%
\letteredcaption{#1}{#2}}%
\else
\expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
\def\@captype{table}%
\letteredcaption{#1}{#2}}%
\fi\fi}
%%%
\long\def\catchcontinuedcaption{%
\ifcaptypefig%
\expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
\def\@captype{figure}\continuedcaption}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
\def\@captype{plate}\continuedcaption}%
\else
\expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
\def\@captype{table}\continuedcaption}%
\fi\fi}
\long\def\dblcatchcontinuedcaption{%
\ifcaptypefig%
\expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{figure}\continuedcaption}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{plate}\continuedcaption}%
\else
\expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{table}\continuedcaption}%
\fi\fi}
\long\def\pcatchcontinuedcaption{%
\ifcaptypefig%
\expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
\def\@captype{figure}\continuedcaption}%
\else%
\ifcaptypeplate
\expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
\def\@captype{plate}\continuedcaption}%
\else
\expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
\def\@captype{table}\continuedcaption}%
\fi\fi}
%%%
\long\def\catchletteredcontinuedcaption#1{%
\ifcaptypefig%
\expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
\def\@captype{figure}\letteredcontinuedcaption{#1}}%
\else%
\ifcaptypeplate%
\expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
\def\@captype{plate}\letteredcontinuedcaption{#1}}%
\else
\expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
\def\@captype{table}\letteredcontinuedcaption{#1}}%
\fi\fi}
\long\def\dblcatchletteredcontinuedcaption#1{%
\ifcaptypefig%
\expandafter%
\gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{figure}\letteredcontinuedcaption{#1}}%
\else%
\ifcaptypeplate
\expandafter%
\gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{plate}\letteredcontinuedcaption{#1}}%
\else
\expandafter%
\gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
\def\@captype{table}\letteredcontinuedcaption{#1}}%
\fi\fi}
\long\def\pcatchletteredcontinuedcaption#1{%
\ifcaptypefig%
\expandafter%
\gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
\def\@captype{figure}\letteredcontinuedcaption{#1}}%
\else%
\ifcaptypeplate%
\expandafter%
\gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
\def\@captype{plate}\letteredcontinuedcaption{#1}}%
\else
\expandafter%
\gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
\def\@captype{table}\letteredcontinuedcaption{#1}}%
\fi\fi}
%%%
\newcount\pagefloatnumber
\let\savelabel\label
\def\catchlabel#1{%
\expandafter\gdef\csname label\the\figandtabnumber\endcsname{\savelabel{#1}}}
\def\pcatchlabel#1{%
\expandafter\gdef\csname plabel\the\pagefloatnumber\endcsname{\savelabel{#1}}}
\def\dblcatchlabel#1{\expandafter%
\gdef\csname dbllabel\the\dblfigandtabnumber\endcsname{\savelabel{#1}}}
%%
\def\startonecolfloat{%
\expandafter\newbox\csname figandtabbox\the\figandtabnumber\endcsname%
\global\setbox\csname figandtabbox\the\figandtabnumber\endcsname=
\vbox\bgroup%
\ifcaptypefig\else
\ifcaptypeplate\def\@captype{plate}
\else
\def\@captype{table}\centering\tabletextsize\fi\fi%
\let\continuedcaption\catchcontinuedcaption
\let\letteredcaption\catchletteredcaption
\let\letteredcontinuedcaption\catchletteredcontinuedcaption
\let\caption\catchcaption
\let\label\catchlabel}
\def\xtopfloat{topfloat}
\def\xbotfloat{botfloat}
\newif\ifredefining
\newbox\sizeoffloat
\def\endonecolfloat{%
%\ifcaptypefig\else%
%\ifnobottomtabline\global\nobottomtablinefalse\vskip-6.5pt\else
%\vskip2pt
%\thetablelines\fi\fi%
%
\egroup%
\DonormalEndcol%
%% make room in column for this insert:
\setbox\sizeoffloat=\vbox{\let\unvbox\copy
\let\c@table\bogus
\let\c@figure\bogus
\redefiningfalse \loopnum=\figandtabnumber
\expandafter\csname \toporbotfloat\the\figandtabnumber\endcsname}%
%%
\expandafter\xdef\csname totalht\the\figandtabnumber\endcsname{%
\the\ht\sizeoffloat}% <=== use before \sizeoffloat is unboxed
\global\advance\figandtabnumber by1\relax}
\newcount\bogus
\def\DonormalEndcol{%
%% top float ==>
\ifx\toporbotfloat\xtopfloat%
%% figure ==>
\ifcaptypefig%
\expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
\vbox{\vskip\PushOneColTopFig%
\unvbox\csname figandtabbox\the\loopnum\endcsname%
\vskip\abovefigcaptionskip%
\csname caption\the\loopnum\endcsname%
\csname letteredcaption\the\loopnum\endcsname%
\csname continuedcaption\the\loopnum\endcsname%
\csname letteredcontcaption\the\loopnum\endcsname}%
\vskip\intextfloatskip%%
\vskip-4pt %% probably an artifact of topskip??
\ifredefining%
\csname label\the\loopnum\endcsname%
\expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}%
\else%
%% plate ==>
\ifcaptypeplate%
\expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
\vbox{\vskip\PushOneColTopFig%
\unvbox\csname figandtabbox\the\loopnum\endcsname
\vskip\abovefigcaptionskip
\csname caption\the\loopnum\endcsname
\csname letteredcaption\the\loopnum\endcsname
\csname continuedcaption\the\loopnum\endcsname
\csname letteredcontcaption\the\loopnum\endcsname}
\vskip\intextfloatskip %%
\vskip-4pt %% probably an artifact of topskip??
\ifredefining
\csname label\the\loopnum\endcsname
\expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}%
%
\else% table ==>
\expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
\vbox{\vskip\PushOneColTopTab %%
\csname caption\the\loopnum\endcsname
\csname letteredcaption\the\loopnum\endcsname
\csname continuedcaption\the\loopnum\endcsname
\csname letteredcontcaption\the\loopnum\endcsname
\vskip\captionskip
\unvbox\csname figandtabbox\the\loopnum\endcsname
}\vskip\intextfloatskip %% why don't we need this?
\vskip-10pt
\ifredefining
\csname label\the\loopnum\endcsname
\expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}
\fi\fi%
%
\else% bottom float
%
\ifcaptypefig
\expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
\vskip\intextfloatskip
\vbox{\unvbox\csname figandtabbox\the\loopnum\endcsname
\vskip\abovefigcaptionskip
\csname caption\the\loopnum\endcsname
\csname letteredcaption\the\loopnum\endcsname%
\csname continuedcaption\the\loopnum\endcsname%
\csname letteredcontcaption\the\loopnum\endcsname%
\vskip\PushOneColBotFig%%
}%
\ifredefining%
%\xdef\@currentlabel{\thefigure}%
\csname label\the\loopnum\endcsname
\expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
\else
\ifcaptypeplate
\expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
\vskip\intextfloatskip
\vbox{\unvbox\csname figandtabbox\the\loopnum\endcsname
\vskip\abovefigcaptionskip
\csname caption\the\loopnum\endcsname
\csname letteredcaption\the\loopnum\endcsname%
\csname continuedcaption\the\loopnum\endcsname%
\csname letteredcontcaption\the\loopnum\endcsname%
\vskip\PushOneColBotFig%%
}%
\ifredefining%
%\xdef\@currentlabel{\thefigure}%
\csname label\the\loopnum\endcsname
\expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
\else% TABLE
\expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
\vskip\intextfloatskip
\vbox{\csname caption\the\loopnum\endcsname
\csname letteredcaption\the\loopnum\endcsname
\csname continuedcaption\the\loopnum\endcsname
\csname letteredcontcaption\the\loopnum\endcsname%
\vskip.5\intextfloatskip
\unvbox\csname figandtabbox\the\loopnum\endcsname%
\vskip\PushOneColBotTab
}%
\ifredefining%
\csname label\the\loopnum\endcsname
\expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
\fi\fi\fi}
%
\def\startpagefloat{%
\expandafter\newbox\csname pagebox\the\pagefloatnumber\endcsname%
\global\setbox\csname pagebox\the\pagefloatnumber\endcsname=\vbox\bgroup%
\hsize=\textwidth%
\linewidth=\textwidth%
\captionwidth=\widecaptionwidth
\let\label\pcatchlabel\ifcaptypefig\else\centering\fi%
\let\caption\pcatchcaption \let\letteredcaption\pcatchletteredcaption
\let\continuedcaption\pcatchcontinuedcaption
\let\letteredcontinuedcaption\pcatchletteredcontinuedcaption
}
\def\endpagefloat{\egroup
\DoNormalPage
\global\advance\pagefloatnumber by1
}
\def\DoNormalPage{\ifcaptypefig
%
\expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
\vbox{\hsize=\textwidth
\linewidth=\textwidth
\twocolfigortabtrue
\captionwidth=\widecaptionwidth
\unvbox\csname pagebox\the\pageloopnum\endcsname
\vskip\captionskip
\csname pcaption\the\pageloopnum\endcsname
\csname pletteredcaption\the\pageloopnum\endcsname
\csname pcontinuedcaption\the\pageloopnum\endcsname
\csname pletteredcontcaption\the\pageloopnum\endcsname
} \vskip\intextfloatskip %%
\xdef\@currentlabel{\thefigure}%
\csname plabel\the\pageloopnum\endcsname
\expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}%
\else
\ifcaptypeplate
\expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
\vbox{\hsize=\textwidth
\linewidth=\textwidth
\twocolfigortabtrue
\captionwidth=\widecaptionwidth
\unvbox\csname pagebox\the\pageloopnum\endcsname
\vskip\captionskip
\csname pcaption\the\pageloopnum\endcsname
\csname pletteredcaption\the\pageloopnum\endcsname
\csname pcontinuedcaption\the\pageloopnum\endcsname
\csname pletteredcontcaption\the\pageloopnum\endcsname
} \vskip\intextfloatskip %%
\xdef\@currentlabel{\thefigure}%
\csname plabel\the\pageloopnum\endcsname
\expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}%
\else
\expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
\vbox{%%
\hsize=\textwidth
\linewidth=\textwidth
\iflandscapetable
\dimen0=\textheight
\advance\dimen0 by-\textwidth
\hsize=\textheight
\linewidth=\textheight\fi%
\csname pcaption\the\pageloopnum\endcsname
\csname pletteredcaption\the\pageloopnum\endcsname
\csname pcontinuedcaption\the\pageloopnum\endcsname
\csname pletteredcontcaption\the\pageloopnum\endcsname
\vskip\intextfloatskip
\unvbox\csname pagebox\the\pageloopnum\endcsname}
\vskip\intextfloatskip %%
\csname plabel\the\pageloopnum\endcsname
\expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}\fi\fi}
\newif\iffirstfighere
\global\firstfigheretrue
\newif\iffirsttabhere
\global\firsttabheretrue
\def\dofigmessage{\iffirstfighere\global\firstfigherefalse
\typeout{^^J
========================================================================
^^J
C A R E F U L !!!!!^^J
^^J
You have used \string\begin{figure}[h]\space !^^J
If there are any figures that appear earlier on the page^^J
they may be numbered incorrectly.^^J
^^J
Please check this and every other page on which you have used ^^J
\string\begin{figure}[h]\space !^^J
^^J
========================================================================
^^J}
\else
\typeout{^^J^^J
C A R E F U L !! \string\begin{figure}[h] used on this page !^^J^^J}
\fi}
\def\dotabmessage{\iffirsttabhere\global\firsttabherefalse
\typeout{^^J
========================================================================
^^J
C A R E F U L !!!!!^^J
^^J
You have used \string\begin{table}[h]\space !^^J
If there are any tables that appear earlier on the page^^J
they may be numbered incorrectly.^^J
^^J
Please check this and every other page on which you have used ^^J
\string\begin{table}[h]\space !^^J
^^J
========================================================================
^^J}
\else
\typeout{^^J^^J
C A R E F U L !! \string\begin{table}[h] used on this page !^^J^^J}
\fi}
\def\lookforposition[#1]{\defone#1*%
\let\go\startonecolfloat
\let\endtable\endonecolfloat
\let\endfigure\endonecolfloat
\let\endplate\endonecolfloat
\ifgalley
\if\one p \def\one{s}
\else
\def\one{i}\fi
%\else\ifappendon\def\one{h}\fi
\fi%
\ifjdraft
\expandafter\ifx\csname setkeys\endcsname\relax\else
\setkeys{Gin}{draft=false}\fi
\if\one p \def\one{s}
\else
\def\one{i}\fi
\else%\ifappendon\def\one{h}\fi
\fi%
\if\one h
\ifcaptypeplate\else
\ifcaptypefig
\dofigmessage
\else
\dotabmessage
\fi\fi%
\let\go\doonecolfighere
\let\endtable\endonecolfighere
\let\endfigure\endonecolfighere
\let\endplate\endonecolfighere
\else%
\if\one t%
\gdef\toporbotfloat{topfloat}%
\else%
\if\one b%
\gdef\toporbotfloat{botfloat}%
\else%
\if\one p%
\let\go\startpagefloat%
\let\endtable\endpagefloat%
\let\endfigure\endpagefloat%
\let\endplate\endpagefloat%
\else%
\if\one e% for either
\ifdim\pagetotal>.6\pagegoal%
\gdef\toporbotfloat{botfloat}%
\else%
\gdef\toporbotfloat{topfloat}%
\fi%
\else%
\if\one i% for galley mode
\let\go\dofiginsert%
\let\endtable\endfiginsert%
\let\endfigure\endfiginsert%
\let\endplate\endfiginsert%
\else%
\if\one s% for special galley mode, for [p]
\let\go\dodblfiginsert%
\let\endtable\endspfiginsert%
\let\endfigure\endspfiginsert%
\let\endplate\endspfiginsert%
\else%
\doerr%
\ifdim\pagetotal>.5\pagegoal%
\gdef\toporbotfloat{botfloat}%
\else%
\gdef\toporbotfloat{topfloat}%
\fi%
\fi\fi\fi\fi\fi\fi\fi\go}
\newinsert\figinsert
\skip\figinsert=0pt % space added when figinsert is used
\count\figinsert=0 % insert magnification factor (1 to 1)
\dimen\figinsert=\maxdimen % maximum space for figures
\def\dofiginsert{\setbox0=\vbox\bgroup
\ifcaptypefig\def\@captype{figure}\else
\ifcaptypeplate\def\@captype{plate}\else
\def\@captype{table}\centering\tabletextsize\fi\fi}
\def\endfiginsert{\egroup\insert\figinsert{\vskip24pt\vbox{\unvbox0}\vskip24pt}%
\ignorespaces}
\def\endspfiginsert{\egroup\insert\figinsert{\newpage\vbox to\textheight{\vss
\unvbox0}\newpage}%
\ignorespaces}
\def\dodblfiginsert{\setbox0=\vbox\bgroup
\captionwidth=\widecaptionwidth
\hsize=\textwidth
\linewidth=\textwidth
\ifcaptypefig\def\@captype{figure}\else
\ifcaptypeplate\def\@captype{plate}\else
\def\@captype{table}\centering\fi\fi
}
\def\enddblfiginsert{\egroup\insert\figinsert{\vskip24pt\vbox{\unvbox0}\vskip24pt}}
\long\def\saveherecaption#1{\gdef\thesavedcaption{\savecaption{#1}}}
\long\def\saveherecontinuedcaption{\gdef\thesavedcaption{\continuedcaption}}
\long\def\savehereletteredcaption#1#2{\gdef\thesavedcaption{%
\gdef\theletter{#1}\savecaption{#2}}}
\long\def\savehereletteredcontinuedcaption#1{\gdef\thesavedcaption{%
\letteredcontinuedcaption{#1}}}
\long\def\saveherelabel#1{\gdef\thesavedlabel{#1}}
\saveherelabel{\relax}
\def\thesavedcaption{\relax}
\newbox\herebox
%% either figure [h] or table [h]
\newif\ifhere
\def\doonecolfighere{\vskip1sp\bgroup%
\heretrue%
\ifcaptypefig\def\@captype{figure}\else%
\ifcaptypeplate\def\@captype{plate}\else%
\def\@captype{table}\centering\fi\fi%
\setbox\herebox\vbox\bgroup%
\let\label\saveherelabel%
\let\caption\saveherecaption%
\let\letteredcaption\savehereletteredcaption%
\let\continuedcaption\saveherecontinuedcaption%
\let\letteredcontinuedcaption\savehereletteredcontinuedcaption%
}
\def\xrelax{\relax}
\def\endonecolfighere{%
\egroup%
\vskip\intextfloatskip%
\vtop{\vskip-5.5pt
%\ifappendon
%\let\thefigure\appthefigure
%\let\thetable\appthetable
%\let\theplate\apptheplate
%\let\savecaption\appcaption
%\fi
%
\ifx\thesavedcaption\xrelax
\unvbox\herebox
\else
\ifcaptypefig
\unvbox\herebox
\thesavedcaption
\else
\ifcaptypeplate
\unvbox\herebox
\thesavedcaption
%
\else
%
\thesavedcaption
\unvbox\herebox
\fi
\fi\fi
%
\gdef\thesavedcaption{\relax}
\ifx\thesavedlabel\xrelax\else%
\ifcaptypefig\else\edef\@currentlabel{\thetable}\fi
\savelabel{\thesavedlabel}
\gdef\thesavedlabel{\relax}
\fi
\gdef\theletter{\relax}
}\vskip1sp
\egroup
\vskip\intextfloatskip
}
\newbox\endfigbox
\def\doerr{%
\typeout{\space\space\space\space\space\space\space\space\space}
\typeout{Sorry!
Your choices following \string\figure\space or \string\table\space^^J%
are only [h] for `here', [t] for `top', [b] for `bottom', or [p]
for `page'.^^J%
I have ignored the [\one] and inserted the figure or table at this
point^^J%
on the page. See documentation if you need more help.}
\typeout{\space\space\space\space\space\space\space\space\space}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%% Inserts spanning both columns:
\newbox\spanbox
\def\centertabular{\bgroup\centering\savetabular}
\def\endcentertabular{\saveendtabular\vskip1pt\egroup}
%%%
\newbox\dbltopins
\newbox\dblbotins
\newskip\dblbotskip
\dblbotskip=12pt plus 3pt
\def\twocolfig{\global\captypefigtrue
\global\captypeplatefalse
\def\@captype{figure}
\@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
\def\twocolplate{\global\captypeplatetrue
\global\captypefigfalse
\def\@captype{plate}
\@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
\def\twocoltable{\vskip1pt\tabletextsize
\global\captypefigfalse
\global\captypeplatefalse
\def\@captype{table}
\@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
\newcount\dblfigandtabnumber
\dblfigandtabnumber=1
\newbox\dblfigandtabbox
\def\starttwocolfloat{\ifvmode\else\unskip\fi\expandafter%
\ifx\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname\relax%
\expandafter%
\newbox\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname%
\fi%
\global\setbox\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname=
\vbox\bgroup\let\label\dblcatchlabel%
%
\ifcaptypefig\def\@captype{figure}\else%
\ifcaptypeplate\def\@captype{plate}\else%
\def\@captype{table}\centering\tabletextsize%
\fi%
\fi%
\captionwidth=\widecaptionwidth
\hsize=\textwidth
\linewidth=\textwidth\relax
%
\let\caption\dblcatchcaption
\let\letteredcaption\dblcatchletteredcaption
\let\continuedcaption\dblcatchcontinuedcaption
\let\letteredcontinuedcaption\dblcatchletteredcontinuedcaption
\let\label\dblcatchlabel
}
\newcount\dblloopnum
\newcount\savedblfigandtabnumber
%\newcount\savefigandtabnumber
\def\xdbltopfloat{dbltopfloat}
\def\xdblbotfloat{dblbotfloat}
\def\endtwocolfloat{%
%\ifcaptypefig\else%
%\ifcaptypeplate\else%
%\ifnobottomtabline\global\nobottomtablinefalse\vskip-6.5pt\else%
%\vskip2pt
%\thetablelines\fi\fi\fi%
%
\egroup%
\ifx\dbltoporbotfloat\xdbltopfloat%
%%++
\ifcaptypefig%
\expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
\vbox{\vskip\PushTwoColTopFig%
\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
\vskip\captionskip%
\csname dblcaption\the\dblloopnum\endcsname%
\csname dblletteredcaption\the\dblloopnum\endcsname%
\csname dblcontinuedcaption\the\dblloopnum\endcsname%
\csname dblletteredcontcaption\the\dblloopnum\endcsname%
\ifredefining%
\xdef\@currentlabel{\thefigure}%
\csname dbllabel\the\dblloopnum\endcsname\fi}%
\vskip\intextfloatskip %%
\vskip-5pt% because there is a space above the top of text, from topskip?
\ifredefining%
\expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
\else\ifcaptypeplate%
\expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
\vbox{\vskip\PushTwoColTopFig%
\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
\vskip\captionskip%
\csname dblcaption\the\dblloopnum\endcsname%
\csname dblletteredcaption\the\dblloopnum\endcsname%
\csname dblcontinuedcaption\the\dblloopnum\endcsname%
\csname dblletteredcontcaption\the\dblloopnum\endcsname%
\ifredefining%
\xdef\@currentlabel{\theplate}%
\csname dbllabel\the\dblloopnum\endcsname\fi}%
\vskip\intextfloatskip %%
\vskip-5pt% because there is a space above the top of text, from topskip?
\ifredefining%
\expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
\else% table
\expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
\vbox{\vskip\PushTwoColTopTab%
\csname dblcaption\the\dblloopnum\endcsname%
\csname dblletteredcaption\the\dblloopnum\endcsname%
\csname dblcontinuedcaption\the\dblloopnum\endcsname%
\csname dblletteredcontcaption\the\dblloopnum\endcsname%
\vskip\captionskip%
\copy\csname dblfigandtabbox\the\dblloopnum\endcsname}%
\vskip\intextfloatskip %%
\vskip-5pt% because there is a space above the top of text, from topskip?
\ifredefining%
\csname dbllabel\the\dblloopnum\endcsname%
\expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
%
\fi\fi%
%
\else% bottom float
%
\ifcaptypefig%
\expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
\vskip\intextfloatskip%
\vbox{\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
\vskip\captionskip%
\csname dblcaption\the\dblloopnum\endcsname%
\csname dblletteredcaption\the\dblloopnum\endcsname%
\csname dblcontinuedcaption\the\dblloopnum\endcsname%
\csname dblletteredcontcaption\the\dblloopnum\endcsname%
\ifredefining%
\csname dbllabel\the\dblloopnum\endcsname\fi%
\vskip\PushTwoColBotFig}%???
\ifredefining%
\expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi}%
\else%
%%
\ifcaptypeplate%
\expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
\vskip\intextfloatskip%
\vbox{\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
\vskip\captionskip%
\csname dblcaption\the\dblloopnum\endcsname%
\csname dblletteredcaption\the\dblloopnum\endcsname%
\csname dblcontinuedcaption\the\dblloopnum\endcsname%
\csname dblletteredcontcaption\the\dblloopnum\endcsname%
\ifredefining%
\csname dbllabel\the\dblloopnum\endcsname\fi%
\vskip\PushTwoColBotFig}%
\ifredefining%
\expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi
}%
\else% table
\expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
\vskip\intextfloatskip
\vbox{%
\csname dblcaption\the\dblloopnum\endcsname%
\csname dblletteredcaption\the\dblloopnum\endcsname%
\csname dblcontinuedcaption\the\dblloopnum\endcsname%
\csname dblletteredcontcaption\the\dblloopnum\endcsname%
\vskip\captionskip
\ifredefining%
\csname dbllabel\the\dblloopnum\endcsname\fi%
\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
\vskip\PushTwoColBotTab}%
\ifredefining%
\expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi}%
%
\fi\fi\fi%
%%
\global\advance\dblfigandtabnumber by1 \relax}
\newbox\dblspanherebox
\def\dodblfigurehere{\global\setbox\dblspanherebox=\vbox\bgroup
\let\label\saveherelabel
\ifcaptypefig\def\@captype{figure}\else
\ifcaptypeplate\def\@captype{plate}\else
\def\@captype{table}\centering\fi\fi
\vskip\intextfloatskip
\captionwidth=\widecaptionwidth
\hsize=\textwidth
\linewidth=\textwidth
\let\label\saveherelabel
\let\caption\saveherecaption
\let\letteredcaption\savehereletteredcaption
\let\continuedcaption\saveherecontinuedcaption
\let\letteredcontinuedcaption\savehereletteredcontinuedcaption}
\def\enddodblfigurehere{\vskip\intextfloatskip\egroup%
\aftergroup\endcolsneatly}
%%
\def\endcolsneatly{\ifdim\lastskip=2sp
\vskip-9.5pt\null\fi
\endtwocolumns
\vbox{\vskip\intextfloatskip
\captionwidth=\widecaptionwidth
\ifcaptypefig\def\@captype{figure}\else
\ifcaptypeplate\def\@captype{plate}\else
\def\@captype{table}\centering\fi\fi
%\ifappendon
%\let\thefigure\appthefigure
%\let\thetable\appthetable
%\let\theplate\apptheplate
%\let\savecaption\appcaption
%\fi
%
\ifx\thesavedcaption\xrelax
\unvbox\dblspanherebox
\vskip\intextfloatskip
\else
\ifcaptypefig
\unvbox\dblspanherebox
\thesavedcaption
\vskip\intextfloatskip
%
\else
\ifcaptypeplate
\unvbox\dblspanherebox
\thesavedcaption
\vskip\intextfloatskip
%
\else
\vskip\intextfloatskip
\thesavedcaption
\unvbox\dblspanherebox
\vskip\intextfloatskip
\fi
\fi\fi
%
\gdef\thesavedcaption{\relax}
\ifx\thesavedlabel\xrelax\else\savelabel{\thesavedlabel}
\gdef\thesavedlabel{\relax}\fi
\gdef\theletter{\relax}
\vskip\intextfloatskip}
\twocolumns\null
\vskip2sp}
\def\twolookforposition[#1]{\defone#1*%
\let\go\starttwocolfloat%
\ifgalley%
\if\one p \def\one{s}%
\else%
\def\one{i}%
\fi%
\fi%
\ifjdraft%
\expandafter\ifx\csname setkeys\endcsname\relax\else
\setkeys{Gin}{draft=false}\fi
\if\one p \def\one{s}%
\else%
\def\one{i}%
\fi%
\fi%
%\ifappendon\def\one{h}\fi%
%%
\if\one h%
\ifcaptypeplate%
\else%
\ifcaptypefig%
\dofigmessage%
\else%
\dotabmessage%
\fi%
\fi%
\ifgalley%
\gdef\dbltoporbotfloat{dbltopfloat}%
\else% not galley ==>
\let\go\dodblfigurehere%
\expandafter\gdef\csname endfigure*\endcsname{\enddodblfigurehere}%
\expandafter\gdef\csname endtable*\endcsname{\enddodblfigurehere}%
\expandafter\gdef\csname endplate*\endcsname{\enddodblfigurehere}%
\fi% end ifgalley
\else%
\if\one t%
\gdef\dbltoporbotfloat{dbltopfloat}%
\else%
\if\one b%
\gdef\dbltoporbotfloat{dblbotfloat}%
\else%
\if\one p%
\let\go\startpagefloat%
\expandafter\gdef\csname endfigure*\endcsname{\endpagefloat}
\expandafter\gdef\csname endtable*\endcsname{\endpagefloat}
\expandafter\gdef\csname endplate*\endcsname{\endpagefloat}
\else%
\if\one i% for galley mode
\let\go\dodblfiginsert%
\expandafter\gdef\csname endfigure*\endcsname{\enddblfiginsert}
\expandafter\gdef\csname endtable*\endcsname{\enddblfiginsert}
\expandafter\gdef\csname endplate*\endcsname{\enddblfiginsert}
\else%
\if\one s% for special galley mode, for [p]
\let\go\dodblfiginsert%
\expandafter\gdef\csname endfigure*\endcsname{\endspfiginsert}%
\expandafter\gdef\csname endtable*\endcsname{\endspfiginsert}
\expandafter\gdef\csname endplate*\endcsname{\endspfiginsert}
\else%
\doerr%
\fi%
\fi%
\fi%
\fi%
\fi%
\fi\go}%
\let\saveenddocument\enddocument
\def\enddocument{%
\ifdim\ht\dbltopins>0pt\vbox{\unvbox\dbltopins}\fi
\ifdim\ht\dblbotins>0pt\vbox{\unvbox\dblbotins}\fi
\ifnum\pagefloatnumber>\pageloopnum
\newpage
\insertpage{\hsize=\textwidth
\linewidth=\textwidth
\csname pagefloat\the\pageloopnum \endcsname}\fi%
\immediate\write\@auxout{\string\gdef\string\lastpage{\thepage}}
\saveenddocument}
\splittopskip=\topskip
\def~{\penalty\@M{ }}
\def\mathleftline{\vskip-\parskip
\hbox to\textwidth{\hrulefill\hskip.5\textwidth}\vskip-\abovedisplayskip}
\def\mathrightline{\hbox to\textwidth{\hskip.5\textwidth\hrulefill}\vskip18pt}
\let\topline\mathleftline
\let\botline\mathrightline
%% End Two Column Macros
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\let\savefigure\figure
\let\saveendfigure\endfigure
\def\article{\twocolumns
\bgroup
\renewcommand\thefootnote{}%
\footnotetext{\vbox to 3.7cm{\sectionfont Reserved for Publication Footnotes\vfill}}
\egroup
}
\def\endarticle{\endtwocolumns\newpage
\expandafter\gdef\csname table*\endcsname{\@dblfloat{table}}
\expandafter\gdef\csname endtable*\endcsname{\end@dblfloat}
\expandafter\gdef\csname figure*\endcsname{\@dblfloat{figure}}
\expandafter\gdef\csname endfigure*\endcsname{\end@dblfloat}
\gdef\figure{\futurelet\next\lookforbrac}}
\def\lookforbrac{\if\next[
\let\go\figone\else \let\go\figtwo\fi\go}
\def\figone[#1]{\@float{figure}[#1]\hsize276pt}
\def\figtwo{\@float{figure}\hsize276pt}
\newif\ifjdraft
\newdimen\captionwidth
\newdimen\widecaptionwidth
\newif\ifgalley
\let\tabletextsize\normalsize
\def\inlinefrac#1#2{%
\mbox{\raisebox{.8mm}{%
$\textstyle #1$%
}
$\!\!\! / \!\!\!$
\raisebox{-.8mm}{$\textstyle #2$}}%
}
\newcount\tablenoteloopnum
\newcount\tablenotenum
\def\tablenote#1{\global\advance\tablenotenum by 1\relax
$^{\@fnsymbol{\the\tablenotenum}}$\expandafter\gdef\csname
tabnote\the\tablenotenum\endcsname{#1}}
\def\tablenotes{\tablenoteloopnum=\tablenotenum
\global\advance\tablenoteloopnum by 1
\tablenotenum=0
{\figtextfont
\leftskip=0pt \rightskip=\leftskip
\parfillskip=0pt plus 1 fil
\loop
\vskip2pt
\noindent
\global\advance\tablenotenum by 1
\ifnum\tablenotenum<\tablenoteloopnum
$^{\@fnsymbol{\the\tablenotenum}}$\csname
tabnote\the\tablenotenum\endcsname
\repeat}
}
%% convenient macros from author:
\def\o{\omega}
\def\pr{\partial}
\def\d{\delta}
\def\a{\alpha}
\def\p{\phi}
\def\dst{\displaystyle}
\def\chit{\tilde{\chi}}
\def\etat{\tilde{\eta}}
\def\fdb{\mathbb{R}/_{\dst{ \mathbb{Z}}}}
\def\fd{\mathbb{R}/_{\scriptstyle \mathbb{Z}}}
\def\f12{\frac{1}{2}}
\def\fr32{\frac{3}{2}}
\def\vs{\vspace{10pt}}
\def\vsm{\vspace{-10pt}}
\def\xb{\bar{x}}
\def\yb{\bar{y}}
\def\tb{\bar{t}}
\def\xt{\tilde{x}}
\def\yt{\tilde{y}}
\def\gtt{\tilde{g}}
\def\vptt{\tilde{\varphi}}
\def\htt{\tilde{h}}
\def\ktt{\tilde{k}}
\def\ub{\bar{u}}
\def\hb{\bar{h}}
\def\vep{\varepsilon}
\def\vs{\vspace{10pt}}
\def\be{\begin{equation}}
\def\ee{\end{equation}}
\newcommand{\mfrac}[2]{\frac{\displaystyle{#1}}{\displaystyle{#2}}}
\newtheorem{theorem}{Theorem}
\newtheorem{lemma}{Lemma}
\newtheorem{corollary}[theorem]{Corollary}
\newtheorem{proposition}[theorem]{Proposition}
\newtheorem{definition}{Def\,inition}
\newtheorem{claim}{Claim}
\newtheorem{conjecture}[theorem]{Conjecture}
\newtheorem{observation}[theorem]{Observation}
\newtheorem{problem}[theorem]{Problem}
\newtheorem{notation}[theorem]{Notation}
\newtheorem{alemma}{Lemma}
\newtheorem{remark}{Remark}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\acknowledgments{\vskip14pt\bgroup\footnotesize\baselineskip 8pt
\materialfont
\def\textit##1{{\materialitfont ##1}}
\def\it{\materialitfont}
\def\bf{\materialbffont}
\def\textbf##1{{\materialbffont ##1}}
\noindent{\bf ACKNOWLEDGMENTS.} \relax\ignorespaces}
\def\endacknowledgments{\vskip1sp\egroup}
%% Just in case author enters any of the below, it will still work correctly
\let\acknowledgment\acknowledgements
\let\endacknowledgment\endacknowledgments
\let\acknowledgement\acknowledgements
\let\endacknowledgement\endacknowledgments
\let\acknowledgements\acknowledgements
\let\endacknowledgements\endacknowledgments
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% April 25, 2006
\let\dospecialaccents\relax
\def\blackbox#1{}
% turn off side squares
\def\dosidesquare#1#2#3{}
\let\resetsidesquares\relax
\let\makesidesquares\relax
\newif\iffirsttime
\def\thanks#1{\footnotemark \protected@xdef \@thanks
{\@thanks \protect \footnotetext [\the \c@footnote ]{\hsize=247pt\relax #1}}}
%% Keywords
{\global\let\saveline|
\gdef\linewithspace{\hskip3pt$\saveline$\hskip6pt}
\catcode`|=\active
\gdef\keywords{\bgroup\catcode`|=\active\xkeywords}
\gdef\xkeywords#1{\vskip1sp\noindent{\let|=\linewithspace
\affilfont#1}\vskip11pt\egroup}
}
\def\abbreviations#1{\vskip1sp\noindent{\affilfont Abbreviations: #1}\vskip12pt}
%% Authors can change this dimension to move the
%% printed page up or down on the physical page. Making
%% the negative dimension larger will move it up on the
%% page, smaller will move it down.
\voffset-.75in
%%% Default copyright year
\copyrightyear{2007}
\def\conflictofinterest#1{{\let\@thefnmark\relax\@footnotetext{\vrule height8pt width0pt\relax\hsize=247pt
\relax\footnotesize\footnotefont #1\vrule depth 6pt width0pt}}}
\def\footcomment#1{{\let\@thefnmark\relax\@footnotetext{\vrule height8pt width0pt\relax\hsize=247pt\relax\footnotesize\footnotefont #1\vrule depth 6pt width0pt}}}
\def\track#1{\footcomment{#1}}
\url{www.pnas.org --- ---}
\issuedate{Issue Date}
\copyrightyear{2007}
\volume{Volume}
\issuenumber{Issue Number}
%\setcounter{page}{2687}
\footlineauthor{Footline Author}
\long\def\@footnotetext#1{\insert\footins{%
\reset@font\footnotesize
\interlinepenalty\interfootnotelinepenalty
\splittopskip\footnotesep
\splitmaxdepth \dp\strutbox \floatingpenalty \@MM
\hsize\columnwidth \@parboxrestore
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark
}%
\color@begingroup
\@makefntext{%
\rule\z@\footnotesep\ignorespaces\footnotefont
\hsize=247pt
#1\@finalstrut\strutbox}%
\color@endgroup}}%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Special Use Fonts
%%
%% Computer Modern font calls. These will be redefined
%% if PostScript fonts are used, \usepackage{pnastwof}
%% Times-Roman
\def\timesroman{cmr10 }
\def\timesbold{cmbx10 }
\def\timesitalic{cmti10 }
\def\timesbolditalic{cmbx10 }
%% Helvetica
\def\helvetica{cmss10 }
\def\helveticabold{cmssbx10 }
\def\helveticaboldoblique{cmssbx10 }
\def\helveticaoblique{cmssi10 }
\def\frutiger{cmss10 }
\def\frutigermed{cmss10 }
\def\frutigerbold{cmssbx10 }
\def\frutigerboldoblique{cmssi10 }
\def\frutigeroblique{cmssi10 }
\let\frutigerboldcondensed\helveticabold
%% Special Use Fonts ==>>
\font\footnotefont\helvetica at 6pt
\font\dropcapfont=\frutigerbold at 26pt
\font\sideboxfont= \helvetica at 6pt
%% Running feet
\font\footlinefont=\frutiger at7pt
\font\footlineit=\helveticaoblique at7pt
\font\foliofont=\frutigerbold at 7pt
\font\titlefont=\frutigerboldcondensed at 22pt % 24pt baseline
\font\authorfont=\frutigerbold at 9pt % 11 pt baseline
\font\affilfont=\frutiger at 7pt % 8pt baseline
\font\copyrightfont=\frutiger at 6pt
\font\copyrighttextfont=\frutiger at 6pt
%% Abstract fonts
\font\xabstractfont=\frutigerbold at 8pt
\def\abstractfont{\sf\xabstractfont\dospecialaccents}
\font\abstractit=\helveticaboldoblique at 8pt
%% Section fonts
\font\sectionfont=\frutigerbold at 10pt
\font\subsectionfont=\frutigerbold at9pt
%% Theorem fonts
\font\theoremfont=\frutigerbold at 8pt
%ok
%% Caption
\font\fignumfont=\frutigerbold at 9pt
\font\xfigtextfont=\frutiger at 7pt
\def\figtextfont{\small\dospecialaccents\xfigtextfont}
%% Table font
\font\tabletextfont=\frutiger at 9pt
\font\tabtextfont\frutigerbold at 9pt
\font\tabnumfont\frutigerbold at 9pt
%% Materials and Methods Fonts
\font\materialfont=\frutiger at 7pt
\font\materialbffont=\helveticabold at 7pt
\font\materialitfont=\helveticaboldoblique at 7pt
%% Bibliography fonts
\font\xbibfont=\frutigerbold at 6pt
\def\bibfont{\sf\xbibfont\dospecialaccents}
\font\bibitfont\helveticaboldoblique at 6pt
\font\bibbffont\helveticabold at 6pt
%% dec 4, 2006
\def\@tabular{\global\tablenotenum=0\relax
\leavevmode \hbox \bgroup $\let\@acol\@tabacol
\let\@classz\@tabclassz
\let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
%% dec 4, 2006
\def\@tabular{\global\tablenotenum=0\relax
\leavevmode \hbox \bgroup $\let\@acol\@tabacol
\let\@classz\@tabclassz
\let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
%%%%%%% Jan 2008 Changes:
\def\materials{\vskip6pt\bgroup
\parskip=8pt
\baselineskip=9pt
\materialfont
\def\textit##1{{\materialitfont ##1}}
\def\it{\materialitfont}
\def\bf{\materialbffont}
\def\textbf##1{{\materialbffont ##1}}
\def\section##1{\noindent{\materialbffont ##1. }}
\def\subsection##1{\noindent{\materialbffont ##1. }}
\noindent {\subsectionfont Materials and Methods}\\[2pt]
}
\def\endmaterials{\vskip1sp\egroup}
\def\appendix{\originalappendix
\vskip12pt\noindent{\subsectionfont Appendix}\@ifnextchar[{\xappendix}{\yappendix}}
\def\xappendix[#1]{\subsectionfont:\hskip10pt\relax #1\vskip2pt
\normalsize\noindent\ignorespaces}
\def\yappendix{\vskip2pt\normalsize\noindent\ignorespaces}
\widowpenalty=10000
\clubpenalty=10000
\newbox\tablewide
\def\endtabular{\crcr\egroup\egroup $\egroup\egroup
\centerline{\vbox{\hsize\wd\tablewide
\currtabcaption\vskip1pt
}}
\dimen0=\wd\tablewide
\centerline{\hbox{\unhbox\tablewide}}
\centerline{\vtop{\hsize=\dimen0 \tablenotes}}
\global\let\currtabcaption\relax}
\expandafter \let \csname endtabular*\endcsname = \endtabular
\def\tabular{\global\setbox\tablewide\hbox\bgroup
\let\@halignto\@empty\@tabular}
\@namedef{tabular*}#1{%
\global\setbox\tablewide\hbox\bgroup
\setlength\dimen@{#1}%
\edef\@halignto{to\the\dimen@}\@tabular}
\newcommand\originalappendix{\par
\setcounter{section}{0}%
\setcounter{subsection}{0}%
\gdef\thesection{\@Alph\c@section}}
\let\currtabcaption\relax
\def\footcomment#1{\typeout{^^J^^J The \string\footcomment{}\space command is
No Longer Used^^J^^J}}
\def\track#1{\typeout{^^J^^J The \string\track{}\space command is
No Longer Used^^J^^J}}
\def\conflictofinterest#1{\typeout{^^J^^J The \string\conflictofinterest{}\space command is
No Longer Used^^J^^J}}
%% nothing will happen, so PNAS can get info, but nothing will be printed
\def\nothanks#1{}
\let\thanks\nothanks
% substitute for \footcomment:
\def\abbreviations#1{\vskip1sp\noindent{\affilfont Abbreviations: #1}
\vskip12pt}
\endinput
Change Log:
October 18, 2006
Changed the counter used in loop in maketitle to
fix bug that prevented all affiliations from being
listed; added $\saveline$ to make line work right
in keywords
dec 4, 2006: fixed bug in table notes, by
resetting tablenotenum every time tabular
is used
%\def\currversion{October 18, 2006}
%\def\currversion{July 10, 2006}
%\def\currversion{May 1, 2006}
%\def\currversion{August 27, 2004}