1. %\def\currversion{April 15, 2008}
  2. \def\currversion{October 04, 2013}
  3. %*****************************************************************%
  4. %* *%
  5. %* Prepared by Amy Hendrickson, TeXnology Inc. *%
  6. %* Copyright (C) 2004 by Amy Hendrickson, TeXnology Inc., *%
  7. %* All rights reserved. *%
  8. %* *%
  9. %* TeXnology Inc.: 617 738-8029 *%
  10. %* www.texnology.com *%
  11. %* *%
  12. %* For assistance, please contact the PNAS Editorial Office: *%
  13. %* 202-334-2679 *%
  14. %* *%
  15. %*****************************************************************%
  16. \typeout{^^J^^J
  17. Two Column Journal Style for the^^J
  18. Proceedings of the National Academy of Science
  19. ^^J
  20. Written by Amy Hendrickson, TeXnology, Inc., 9/04^^J
  21. ^^J
  22. This version is dated \currversion^^J^^J}
  23. \ProvidesClass{pnastwo}
  24. \newcommand\@ptsize{}
  25. \newif\if@restonecol
  26. \newif\if@titlepage
  27. \@titlepagefalse
  28. \if@compatibility\else
  29. \DeclareOption{a4paper}
  30. {\setlength\paperheight {297mm}%
  31. \setlength\paperwidth {210mm}}
  32. \DeclareOption{a5paper}
  33. {\setlength\paperheight {210mm}%
  34. \setlength\paperwidth {148mm}}
  35. \DeclareOption{b5paper}
  36. {\setlength\paperheight {250mm}%
  37. \setlength\paperwidth {176mm}}
  38. \DeclareOption{letterpaper}
  39. {\setlength\paperheight {16in}%
  40. \setlength\paperwidth {13.5in}}
  41. \DeclareOption{legalpaper}
  42. {\setlength\paperheight {14in}%
  43. \setlength\paperwidth {8.5in}}
  44. \DeclareOption{executivepaper}
  45. {\setlength\paperheight {10.5in}%
  46. \setlength\paperwidth {7.25in}}
  47. \DeclareOption{landscape}
  48. {\setlength\@tempdima {\paperheight}%
  49. \setlength\paperheight {\paperwidth}%
  50. \setlength\paperwidth {\@tempdima}}
  51. \DeclareOption{pnaspaper}
  52. {\setlength\paperheight {11.87in}%
  53. \setlength\paperwidth {9.12in}}
  54. \fi
  55. \if@compatibility
  56. \renewcommand\@ptsize{0}
  57. \else
  58. \DeclareOption{10pt}{\renewcommand\@ptsize{0}}
  59. \fi
  60. \DeclareOption{11pt}{\renewcommand\@ptsize{1}}
  61. \DeclareOption{12pt}{\renewcommand\@ptsize{2}}
  62. \if@compatibility\else
  63. \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
  64. \fi
  65. \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
  66. \DeclareOption{draft}{\setlength\overfullrule{5pt}}
  67. \if@compatibility\else
  68. \DeclareOption{final}{\setlength\overfullrule{0pt}}
  69. \fi
  70. \DeclareOption{titlepage}{\@titlepagetrue}
  71. \if@compatibility\else
  72. \DeclareOption{notitlepage}{\@titlepagefalse}
  73. \fi
  74. \if@compatibility\else
  75. \DeclareOption{onecolumn}{\@twocolumnfalse}
  76. \fi
  77. \DeclareOption{twocolumn}{\@twocolumntrue}
  78. \DeclareOption{leqno}{\input{leqno.clo}}
  79. \DeclareOption{fleqn}{\input{fleqn.clo}}
  80. \DeclareOption{openbib}{%
  81. \AtEndOfPackage{%
  82. \renewcommand\@openbib@code{%
  83. \advance\leftmargin\bibindent
  84. \itemindent -\bibindent
  85. \listparindent \itemindent
  86. \parsep \z@
  87. }%
  88. \renewcommand\newblock{\par}}%
  89. }
  90. \ExecuteOptions{pnaspaper,twoside,onecolumn,final}
  91. \ProcessOptions
  92. \AtBeginDocument{
  93. \RequirePackage[cam,center]{crop}
  94. \paperwidth=8.125in
  95. \paperheight=10.875in
  96. \renewcommand*\CROP@horigin{-.5truein}
  97. \renewcommand*\CROP@vorigin{-.5truein}
  98. }%
  99. %% size10.clo ==>>
  100. \renewcommand\normalsize{%
  101. \@setfontsize\normalsize\@ixpt\@xpt
  102. \abovedisplayskip 8\p@ \@plus2\p@ \@minus5\p@
  103. \abovedisplayshortskip \z@ \@plus3\p@
  104. \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
  105. \belowdisplayskip \abovedisplayskip
  106. \topsep 0\p@
  107. \parsep 0\p@
  108. \let\@listi\@listI}
  109. \normalsize
  110. \topsep 0\p@
  111. \parsep 0\p@
  112. \newcommand\small{%
  113. \@setfontsize\small\@viiipt{9}%
  114. \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
  115. \abovedisplayshortskip \z@ \@plus2\p@
  116. \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
  117. \def\@listi{\leftmargin\leftmargini
  118. \topsep 0\p@
  119. \parsep 0\p@
  120. \itemsep \parsep}%
  121. \belowdisplayskip \abovedisplayskip
  122. }
  123. \newcommand\footnotesize{%
  124. \@setfontsize\footnotesize\@vipt{7}%
  125. \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
  126. \abovedisplayshortskip \z@ \@plus\p@
  127. \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
  128. \def\@listi{\leftmargin\leftmargini
  129. \topsep 3\p@ \@plus\p@ \@minus\p@
  130. \parsep 2\p@ \@plus\p@ \@minus\p@
  131. \itemsep \parsep}%
  132. \belowdisplayskip \abovedisplayskip
  133. }
  134. \newcommand\scriptsize{\@setfontsize\scriptsize\@vpt\@viipt}
  135. \newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
  136. \newcommand\large{\@setfontsize\large\@xiipt{14}}
  137. \newcommand\Large{\@setfontsize\Large\@xivpt{18}}
  138. \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}
  139. \newcommand\huge{\@setfontsize\huge\@xxpt{25}}
  140. \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
  141. \if@twocolumn
  142. \setlength\parindent{1em}
  143. \else
  144. \setlength\parindent{9\p@}%15\p@}
  145. \fi
  146. \setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
  147. \setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@}
  148. \setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
  149. \setlength\headheight{12\p@}
  150. \setlength\headsep {25\p@}
  151. \setlength\topskip {10\p@}
  152. \setlength\footskip{30\p@}
  153. \if@compatibility \setlength\maxdepth{4\p@} \else
  154. \setlength\maxdepth{.5\topskip} \fi
  155. \if@compatibility
  156. \if@twocolumn
  157. \setlength\textwidth{410\p@}
  158. \else
  159. \setlength\textwidth{345\p@}
  160. \fi
  161. \else
  162. \setlength\@tempdima{\paperwidth}
  163. \addtolength\@tempdima{-2in}
  164. \setlength\@tempdimb{345\p@}
  165. \if@twocolumn
  166. \ifdim\@tempdima>2\@tempdimb\relax
  167. \setlength\textwidth{2\@tempdimb}
  168. \else
  169. \setlength\textwidth{\@tempdima}
  170. \fi
  171. \else
  172. \ifdim\@tempdima>\@tempdimb\relax
  173. \setlength\textwidth{\@tempdimb}
  174. \else
  175. \setlength\textwidth{\@tempdima}
  176. \fi
  177. \fi
  178. \fi
  179. \if@compatibility\else
  180. \@settopoint\textwidth
  181. \fi
  182. \if@compatibility
  183. \setlength\textheight{43\baselineskip}
  184. \else
  185. \setlength\@tempdima{\paperheight}
  186. \addtolength\@tempdima{-2in}
  187. \addtolength\@tempdima{-1.5in}
  188. \divide\@tempdima\baselineskip
  189. \@tempcnta=\@tempdima
  190. \setlength\textheight{\@tempcnta\baselineskip}
  191. \fi
  192. \addtolength\textheight{\topskip}
  193. \if@twocolumn
  194. \setlength\marginparsep {10\p@}
  195. \else
  196. \setlength\marginparsep{11\p@}
  197. \fi
  198. \setlength\marginparpush{5\p@}
  199. \if@compatibility
  200. \if@twoside
  201. \setlength\oddsidemargin {44\p@}
  202. \setlength\evensidemargin {82\p@}
  203. \setlength\marginparwidth {107\p@}
  204. \else
  205. \setlength\oddsidemargin {63\p@}
  206. \setlength\evensidemargin {63\p@}
  207. \setlength\marginparwidth {90\p@}
  208. \fi
  209. \if@twocolumn
  210. \setlength\oddsidemargin {30\p@}
  211. \setlength\evensidemargin {30\p@}
  212. \setlength\marginparwidth {48\p@}
  213. \fi
  214. \else
  215. \if@twoside
  216. \setlength\@tempdima {\paperwidth}
  217. \addtolength\@tempdima {-\textwidth}
  218. \setlength\oddsidemargin {.4\@tempdima}
  219. \addtolength\oddsidemargin {-1in}
  220. \setlength\marginparwidth {.6\@tempdima}
  221. \addtolength\marginparwidth {-\marginparsep}
  222. \addtolength\marginparwidth {-0.4in}
  223. \else
  224. \setlength\@tempdima {\paperwidth}
  225. \addtolength\@tempdima {-\textwidth}
  226. \setlength\oddsidemargin {.5\@tempdima}
  227. \addtolength\oddsidemargin {-1in}
  228. \setlength\marginparwidth {.5\@tempdima}
  229. \addtolength\marginparwidth {-\marginparsep}
  230. \addtolength\marginparwidth {-0.4in}
  231. \addtolength\marginparwidth {-.4in}
  232. \fi
  233. \ifdim \marginparwidth >2in
  234. \setlength\marginparwidth{2in}
  235. \fi
  236. \@settopoint\oddsidemargin
  237. \@settopoint\marginparwidth
  238. \setlength\evensidemargin {\paperwidth}
  239. \addtolength\evensidemargin{-2in}
  240. \addtolength\evensidemargin{-\textwidth}
  241. \addtolength\evensidemargin{-\oddsidemargin}
  242. \@settopoint\evensidemargin
  243. \fi
  244. \if@compatibility
  245. \setlength\topmargin{27pt}
  246. \else
  247. \setlength\topmargin{\paperheight}
  248. \addtolength\topmargin{-3.3in}
  249. \addtolength\topmargin{-\headheight}
  250. \addtolength\topmargin{-\headsep}
  251. \addtolength\topmargin{-\textheight}
  252. \addtolength\topmargin{-\footskip} % this might be wrong!
  253. \addtolength\topmargin{-.5\topmargin}
  254. \@settopoint\topmargin
  255. \fi
  256. \setlength\footnotesep{6.65\p@}
  257. \setlength{\skip\footins}{19\p@ \@plus 4\p@ \@minus 2\p@}
  258. \setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
  259. \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
  260. \setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@}
  261. \setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
  262. \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
  263. \setlength\@fptop{0\p@ \@plus 1fil}
  264. \setlength\@fpsep{8\p@ \@plus 2fil}
  265. \setlength\@fpbot{0\p@ \@plus 1fil}
  266. \setlength\@dblfptop{0\p@ \@plus 1fil}
  267. \setlength\@dblfpsep{8\p@ \@plus 2fil}
  268. \setlength\@dblfpbot{0\p@ \@plus 1fil}
  269. \setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
  270. \def\@listi{\leftmargin\leftmargini
  271. \parsep 1sp%4\p@ \@plus2\p@ \@minus\p@
  272. \topsep 8\p@ \@plus2\p@ \@minus4\p@
  273. \itemsep1sp%4\p@ \@plus2\p@ \@minus\p@
  274. }
  275. \let\@listI\@listi
  276. \@listi
  277. \def\@listii {\leftmargin\leftmarginii
  278. \labelwidth\leftmarginii
  279. \advance\labelwidth-\labelsep
  280. \topsep 4\p@ \@plus2\p@ \@minus\p@
  281. \parsep 2\p@ \@plus\p@ \@minus\p@
  282. \itemsep \parsep}
  283. \def\@listiii{\leftmargin\leftmarginiii
  284. \labelwidth\leftmarginiii
  285. \advance\labelwidth-\labelsep
  286. \topsep 2\p@ \@plus\p@\@minus\p@
  287. \parsep \z@
  288. \partopsep \p@ \@plus\z@ \@minus\p@
  289. \itemsep \topsep}
  290. \def\@listiv {\leftmargin\leftmarginiv
  291. \labelwidth\leftmarginiv
  292. \advance\labelwidth-\labelsep}
  293. \def\@listv {\leftmargin\leftmarginv
  294. \labelwidth\leftmarginv
  295. \advance\labelwidth-\labelsep}
  296. \def\@listvi {\leftmargin\leftmarginvi
  297. \labelwidth\leftmarginvi
  298. \advance\labelwidth-\labelsep}
  299. %% <<== size10.clo
  300. \setlength\lineskip{1\p@}
  301. \setlength\normallineskip{1\p@}
  302. \renewcommand\baselinestretch{}
  303. \setlength\parskip{0\p@ \@plus \p@}
  304. \@lowpenalty 51
  305. \@medpenalty 151
  306. \@highpenalty 301
  307. \setcounter{topnumber}{2}
  308. \renewcommand\topfraction{.7}
  309. \setcounter{bottomnumber}{1}
  310. \renewcommand\bottomfraction{.3}
  311. \setcounter{totalnumber}{3}
  312. \renewcommand\textfraction{.2}
  313. \renewcommand\floatpagefraction{.5}
  314. \setcounter{dbltopnumber}{2}
  315. \renewcommand\dbltopfraction{.7}
  316. \renewcommand\dblfloatpagefraction{.5}
  317. \newif\iftitlepage
  318. \def\ps@headings{%
  319. \let\@evenhead\relax
  320. \def\@oddhead{\hfill\rlap{\hskip14pt\vtop to 0pt{\vskip-1pt\makesidesquares
  321. \vss}}}%
  322. \def\@oddfoot{%
  323. %\leftnumber
  324. {\dospecialaccents%
  325. \iftitlepage\global\titlepagefalse%
  326. \footlinefont
  327. %\ifodd\c@page
  328. \hbox to \textwidth{\footlinefont \let\it\footlineit
  329. %\theurl\hfill\footlinefont PNAS\hskip6pt \vrule depth 2pt\hskip6pt
  330. %{\foliofont\theissuedate}\hskip6pt\vrule\hskip6pt\thevolume\hskip6pt
  331. %\vrule\hskip6pt\theissuenumber\hskip6pt \vrule\hskip6pt
  332. %{\foliofont\the\c@page{\footlineit--}\expandafter\ifx\csname
  333. %lastpage\endcsname\relax ??\else\lastpage\fi}
  334. }%
  335. \else
  336. \hbox to \textwidth{\footlinefont \let\it\footlineit
  337. {
  338. %\foliofont\the\c@page{\footlineit--}\expandafter\ifx\csname
  339. %lastpage\endcsname\relax ??\else\lastpage
  340. \fi
  341. }\hskip6pt
  342. %\vrule depth 2pt\hskip6pt PNAS\hskip6pt
  343. %\vrule\hskip6pt{\foliofont\theissuedate}\hskip6pt\vrule\hskip6pt
  344. %\thevolume\hskip6pt\vrule\hskip6pt\theissuenumber\hfill
  345. }%
  346. %\theurl}%
  347. \fi\else%
  348. %\ifodd\c@page
  349. %\hbox to\textwidth{{\let\it\footlineit\footlinefont\thefootlineauthor}\hfill
  350. %\footlinefont PNAS\hskip6pt\vrule depth 2pt\hskip6pt{\foliofont\theissuedate}%
  351. %\hskip6pt\vrule depth2pt\hskip6pt\thevolume\hskip6pt\vrule depth 2pt\hskip6pt\theissuenumber\hskip6pt\vrule\hskip6pt{\foliofont\the\c@page}
  352. %}%
  353. \else%
  354. %\hbox to\textwidth{\let\it\footlineit\footlinefont{\foliofont \the\c@page}%
  355. %\hskip6pt\vrule depth 2pt height 6pt\hskip6pt\theurl\hfill\thefootlineauthor}
  356. \fi\fi}
  357. }
  358. \let\@evenfoot\@oddfoot
  359. %
  360. \let\@mkboth\markboth
  361. \def\sectionmark##1{%
  362. \markboth {\MakeUppercase{%
  363. \ifnum \c@secnumdepth >\z@
  364. \thesection\quad
  365. \fi
  366. ##1}}{}}%
  367. \def\subsectionmark##1{%
  368. \markright {%
  369. \ifnum \c@secnumdepth >\@ne
  370. \thesubsection\quad
  371. \fi
  372. ##1}}}
  373. \newcount\affilcount
  374. \newcount\saveaffilcount
  375. \newcount\c@fnaffilcount
  376. \def\affil#1#2{\normalsize\affilfont\ \affilcount=#1
  377. \ifnum\affilcount>\saveaffilcount\global\saveaffilcount\affilcount\fi
  378. \expandafter\ifx\csname affil\the\affilcount\endcsname\relax
  379. \global\advance\c@footnote by1
  380. \expandafter\xdef\csname affilsymb\the\affilcount\endcsname%
  381. {\the\c@footnote}{$^{\@fnsymbol\c@footnote}$}%
  382. \expandafter\gdef\csname affil\the\affilcount\endcsname{#2}\else
  383. $^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$
  384. \fi\authorfont}
  385. \newcommand\maketitle{\par
  386. \global\titlepagetrue
  387. \begingroup
  388. \dospecialaccents
  389. \parindent=0pt
  390. \def\and{ and }
  391. \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
  392. \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
  393. \long\def\@makefntext##1{\parindent0pt\noindent
  394. \@textsuperscript{\normalfont\@thefnmark}##1}%
  395. \newpage
  396. \global\@topnum\z@ % Prevents figures from going at top of page.
  397. \@maketitle
  398. \@thanks
  399. % according to sample, Dec 2007, copyright no longer wanted here
  400. % \renewcommand\thefootnote{}%
  401. % \footnotetext{\vrule height 8pt width0pt\copyright \thecopyrightyear\ by The % National Academy of Sciences of the USA}
  402. \endgroup
  403. \setcounter{footnote}{0}%
  404. \global\let\thanks\relax
  405. \global\let\maketitle\relax
  406. \global\let\@maketitle\relax
  407. \global\let\@thanks\@empty
  408. \global\let\@author\@empty
  409. \global\let\@date\@empty
  410. \global\let\@title\@empty
  411. \global\let\@contributor\@empty
  412. \global\let\title\relax
  413. \global\let\date\relax
  414. \global\let\and\relax
  415. }
  416. \def\@maketitle{%
  417. \global\firsttimetrue
  418. %% To get equation numbers in square brackets and bold
  419. \gdef\tagform@##1{\maketag@@@{\bf[\hskip1pt\ignorespaces##1\unskip\@@italiccorr\hskip1pt]}}
  420. \gdef\@eqnnum{{\normalfont\bf \normalcolor [\hskip1pt\theequation\hskip1pt]}}
  421. \newpage
  422. \def\\ {\vskip1pt}
  423. \let \footnote \thanks
  424. {\hsize=\textwidth \raggedright
  425. \noindent\huge\baselineskip= 24pt\titlefont \@title \par}%
  426. \vskip6pt
  427. {\normalsize\authorfont
  428. \@author
  429. \par
  430. {\vskip4pt
  431. \raggedright
  432. \affilcount=0
  433. \footnotesize\affilfont
  434. \loop \ifnum\affilcount< \saveaffilcount
  435. \expandafter\ifx\csname affil\the\affilcount\endcsname\relax\else
  436. $^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$%
  437. \csname affil\the\affilcount\endcsname,\fi
  438. \global\advance\affilcount by1
  439. \repeat\ifnum\saveaffilcount=1\else\ and \fi
  440. $^{\expandafter\@fnsymbol\csname affilsymb\the\affilcount\endcsname}$%
  441. \expandafter\csname affil\the\affilcount\endcsname
  442. }}%
  443. \vskip 4pt%
  444. {\affilfont \@contributor}%
  445. \par
  446. \vskip 1.5em}
  447. \def\contributor#1{\def\@contributor{#1}}
  448. \let\@contributor\relax
  449. \contributor{Submitted to Proceedings
  450. of the National Academy of Sciences of the United States of America}
  451. \setcounter{secnumdepth}{3}
  452. \newcounter {part}
  453. \newcounter {section}
  454. \newcounter {subsection}[section]
  455. \newcounter {subsubsection}[subsection]
  456. \newcounter {paragraph}[subsubsection]
  457. \newcounter {subparagraph}[paragraph]
  458. \renewcommand \thepart {\@Roman\c@part}
  459. \renewcommand \thesection {\@arabic\c@section}
  460. \renewcommand\thesubsection {\thesection.\@arabic\c@subsection}
  461. \renewcommand\thesubsubsection{\thesubsection .\@arabic\c@subsubsection}
  462. \renewcommand\theparagraph {\thesubsubsection.\@arabic\c@paragraph}
  463. \renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}
  464. \newcommand\part{%
  465. \if@noskipsec \leavevmode \fi
  466. \par
  467. \addvspace{4ex}%
  468. \@afterindentfalse
  469. \secdef\@part\@spart}
  470. \def\@part[#1]#2{%
  471. \ifnum \c@secnumdepth >\m@ne
  472. \refstepcounter{part}%
  473. \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}%
  474. \else
  475. \addcontentsline{toc}{part}{#1}%
  476. \fi
  477. {\parindent \z@ \raggedright
  478. \interlinepenalty \@M
  479. \normalfont
  480. \ifnum \c@secnumdepth >\m@ne
  481. \Large\bfseries \partname~\thepart
  482. \par\nobreak
  483. \fi
  484. \huge \bfseries #2%
  485. \markboth{}{}\par}%
  486. \nobreak
  487. \vskip 3ex
  488. \@afterheading}
  489. \def\@spart#1{%
  490. {\parindent \z@ \raggedright
  491. \interlinepenalty \@M
  492. \normalfont
  493. \huge \bfseries #1\par}%
  494. \nobreak
  495. \vskip 3ex
  496. \@afterheading}
  497. \def\@startsection#1#2#3#4#5#6{%
  498. \if@noskipsec \leavevmode \fi
  499. \par
  500. \@tempskipa #4\relax
  501. \@afterindenttrue
  502. \ifdim \@tempskipa <\z@
  503. \@tempskipa -\@tempskipa \@afterindentfalse
  504. \fi
  505. \if@nobreak
  506. \everypar{}%
  507. \else
  508. \addpenalty\@secpenalty\addvspace\@tempskipa
  509. \fi
  510. \@ifstar
  511. {\@ssect{#3}{#4}{#5}{#6}}%
  512. {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
  513. \def\@sect#1#2#3#4#5#6[#7]#8{%
  514. \ifnum #2>\c@secnumdepth
  515. \let\@svsec\@empty
  516. \else
  517. \refstepcounter{#1}%
  518. \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  519. \fi
  520. \@tempskipa #5\relax
  521. \ifdim \@tempskipa>\z@
  522. \begingroup
  523. #6{%
  524. \@hangfrom{\hskip #3\relax\@svsec
  525. }%
  526. \interlinepenalty \@M #8\@@par}%
  527. \endgroup
  528. \csname #1mark\endcsname{#7}%
  529. \addcontentsline{toc}{#1}{%
  530. \ifnum #2>\c@secnumdepth \else
  531. \protect\numberline{\csname the#1\endcsname}%
  532. \fi
  533. #7}%
  534. \else
  535. \def\@svsechd{%
  536. #6{\hskip #3\relax
  537. \@svsec #8\ifnum#2=2.\fi}% <<==
  538. \csname #1mark\endcsname{#7}%
  539. \addcontentsline{toc}{#1}{%
  540. \ifnum #2>\c@secnumdepth \else
  541. \protect\numberline{\csname the#1\endcsname}%
  542. \fi
  543. #7}}%
  544. \fi
  545. \@xsect{#5}}
  546. \newcommand\section{\@startsection {section}{1}{\z@}%
  547. {-10pt \@plus -1ex \@minus -.2ex}%
  548. {.5ex }%
  549. {\normalfont\Large\bfseries\sectionfont}}
  550. \newcommand\subsection{\@startsection{subsection}{2}{\z@}%
  551. {10pt\@plus 1ex \@minus .2ex}%
  552. {-0.5ex \@plus .2ex}%
  553. {\normalfont\large\bfseries\subsectionfont}}
  554. \newcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
  555. {-3.25ex\@plus -1ex \@minus -.2ex}%
  556. {1.5ex \@plus .2ex}%
  557. {\normalfont\normalsize\bfseries}}
  558. \newcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
  559. {3.25ex \@plus1ex \@minus.2ex}%
  560. {-1em}%
  561. {\normalfont\normalsize\bfseries}}
  562. \newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
  563. {3.25ex \@plus1ex \@minus .2ex}%
  564. {-1em}%
  565. {\normalfont\normalsize\bfseries}}
  566. \setlength\leftmargini {12pt}
  567. \leftmargin \leftmargini
  568. \setlength\leftmarginii {12pt}
  569. \setlength\leftmarginiii {12pt}
  570. \setlength\leftmarginiv {12pt}
  571. \if@twocolumn
  572. \setlength\leftmarginv {.5em}
  573. \setlength\leftmarginvi {.5em}
  574. \else
  575. \setlength\leftmarginv {1em}
  576. \setlength\leftmarginvi {1em}
  577. \fi
  578. \setlength \labelsep {.5em}
  579. \setlength \labelwidth{\leftmargini}
  580. \addtolength\labelwidth{-\labelsep}
  581. \@beginparpenalty -\@lowpenalty
  582. \@endparpenalty -\@lowpenalty
  583. \@itempenalty -\@lowpenalty
  584. \renewcommand\theenumi{\@arabic\c@enumi}
  585. \renewcommand\theenumii{\@alph\c@enumii}
  586. \renewcommand\theenumiii{\@roman\c@enumiii}
  587. \renewcommand\theenumiv{\@Alph\c@enumiv}
  588. \newcommand\labelenumi{\theenumi.}
  589. \newcommand\labelenumii{(\theenumii)}
  590. \newcommand\labelenumiii{\theenumiii.}
  591. \newcommand\labelenumiv{\theenumiv.}
  592. \renewcommand\p@enumii{\theenumi}
  593. \renewcommand\p@enumiii{\theenumi(\theenumii)}
  594. \renewcommand\p@enumiv{\p@enumiii\theenumiii}
  595. \newcommand\labelitemi{\raise1.5pt\llap{\small\textbullet\hskip2pt}}
  596. \newcommand\labelitemii{\normalfont\bfseries \textendash}
  597. \newcommand\labelitemiii{\textasteriskcentered}
  598. \newcommand\labelitemiv{\textperiodcentered}
  599. \newenvironment{description}
  600. {\list{}{\labelwidth\z@ \itemindent-\leftmargin
  601. \let\makelabel\descriptionlabel}}
  602. {\endlist}
  603. \newcommand*\descriptionlabel[1]{\hspace\labelsep
  604. \normalfont\bfseries #1}
  605. \def\abstract{\bgroup
  606. \parindent=0pt
  607. \hsize=\columnwidth
  608. \font\it\helveticaboldoblique at 8pt
  609. \font\bf\helveticabold at 8pt
  610. \def\textit##1{{\it ##1}}
  611. \def\textbf##1{{\bf ##1}}
  612. \small
  613. \abstractfont\dospecialaccents}
  614. \def\endabstract{\vskip11pt
  615. \egroup}
  616. \newenvironment{verse}
  617. {\let\\\@centercr
  618. \list{}{\itemsep \z@
  619. \itemindent -1.5em%
  620. \listparindent\itemindent
  621. \rightmargin \leftmargin
  622. \advance\leftmargin 1.5em}%
  623. \item\relax}
  624. {\endlist}
  625. \newenvironment{quotation}
  626. {\list{}{\listparindent 1.5em%
  627. \itemindent \listparindent
  628. \rightmargin \leftmargin
  629. \parsep \z@ \@plus\p@}%
  630. \item\relax}
  631. {\endlist}
  632. \newenvironment{quote}
  633. {\list{}{\rightmargin\leftmargin}%
  634. \item\relax}
  635. {\endlist}
  636. \if@compatibility
  637. \newenvironment{titlepage}
  638. {%
  639. \if@twocolumn
  640. \@restonecoltrue\onecolumn
  641. \else
  642. \@restonecolfalse\newpage
  643. \fi
  644. \setcounter{page}\z@
  645. }%
  646. {\if@restonecol\twocolumn \else \newpage \fi
  647. }
  648. \else
  649. \newenvironment{titlepage}
  650. {%
  651. \if@twocolumn
  652. \@restonecoltrue\onecolumn
  653. \else
  654. \@restonecolfalse\newpage
  655. \fi
  656. \setcounter{page}\@ne
  657. }%
  658. {\if@restonecol\twocolumn \else \newpage \fi
  659. \if@twoside\else
  660. \setcounter{page}\@ne
  661. \fi
  662. }
  663. \fi
  664. \newcommand\appendix{\par
  665. \setcounter{section}{0}%
  666. \setcounter{subsection}{0}%
  667. \gdef\thesection{\@Alph\c@section}}
  668. \setlength\arraycolsep{5\p@}
  669. \setlength\tabcolsep{6\p@}
  670. \setlength\arrayrulewidth{.4\p@}
  671. \setlength\doublerulesep{2\p@}
  672. \setlength\tabbingsep{\labelsep}
  673. \skip\@mpfootins = \skip\footins
  674. \setlength\fboxsep{3\p@}
  675. \setlength\fboxrule{.4\p@}
  676. \renewcommand \theequation {\@arabic\c@equation}
  677. \newcounter{figure}
  678. \renewcommand \thefigure {\@arabic\c@figure}
  679. \def\fps@figure{tbp}
  680. \def\ftype@figure{1}
  681. \def\ext@figure{lof}
  682. \def\fnum@figure{\figurename~\thefigure}
  683. \newenvironment{figure}
  684. {\@float{figure}}
  685. {\end@float}
  686. \newenvironment{figure*}
  687. {\@dblfloat{figure}}
  688. {\end@dblfloat}
  689. \newcounter{table}
  690. \renewcommand\thetable{\@arabic\c@table}
  691. \def\fps@table{tbp}
  692. \def\ftype@table{2}
  693. \def\ext@table{lot}
  694. \def\fnum@table{\tablename~\thetable}
  695. \newenvironment{table}
  696. {\@float{table}}
  697. {\end@float}
  698. \newenvironment{table*}
  699. {\@dblfloat{table}}
  700. {\end@dblfloat}
  701. \newenvironment{xtable}
  702. {\@dblfloat{table}}
  703. {\end@dblfloat}
  704. \newenvironment{xfigure}
  705. {\@dblfloat{figure}}
  706. {\end@dblfloat}
  707. \newlength\abovecaptionskip
  708. \newlength\belowcaptionskip
  709. \setlength\abovecaptionskip{2\p@}
  710. \setlength\belowcaptionskip{4\p@}
  711. \long\def\@makecaption#1#2{%
  712. \ifx\@captype\xtable
  713. \let\currtabcaption\relax
  714. %\gdef\currtabcaption{%
  715. %\tabnumfont\relax #1.\tabtextfont\hskip8\p@\relax#2\par
  716. %\vskip\belowcaptionskip
  717. %}
  718. \vskip\abovecaptionskip
  719. \sbox\@tempboxa{\tabnumfont#1.\tabtextfont\hskip8\p@\relax #2}%
  720. \ifdim \wd\@tempboxa >\hsize
  721. \tabnumfont\relax #1.\tabtextfont\hskip8\p@\relax#2\par
  722. \else
  723. \global \@minipagefalse
  724. \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  725. \fi
  726. \else
  727. \vskip\abovecaptionskip
  728. \sbox\@tempboxa{\fignumfont#1.\figtextfont\hskip8\p@\relax #2}%
  729. \ifdim \wd\@tempboxa >\hsize
  730. \fignumfont\relax #1.\figtextfont\hskip8\p@\relax#2\par
  731. \else
  732. \global \@minipagefalse
  733. \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
  734. \fi
  735. \fi
  736. }
  737. \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
  738. \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
  739. \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
  740. \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
  741. \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
  742. \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
  743. \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
  744. \DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
  745. \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
  746. \newcommand\@pnumwidth{1.55em}
  747. \newcommand\@tocrmarg{2.55em}
  748. \newcommand\@dotsep{4.5}
  749. \setcounter{tocdepth}{3}
  750. \newcommand\tableofcontents{%
  751. \section*{\contentsname
  752. \@mkboth{%
  753. \MakeUppercase\contentsname}{\MakeUppercase\contentsname}}%
  754. \@starttoc{toc}%
  755. }
  756. \newcommand*\l@part[2]{%
  757. \ifnum \c@tocdepth >-2\relax
  758. \addpenalty\@secpenalty
  759. \addvspace{2.25em \@plus\p@}%
  760. \begingroup
  761. \parindent \z@ \rightskip \@pnumwidth
  762. \parfillskip -\@pnumwidth
  763. {\leavevmode
  764. \large \bfseries #1\hfil \hb@xt@\@pnumwidth{\hss #2}}\par
  765. \nobreak
  766. \if@compatibility
  767. \global\@nobreaktrue
  768. \everypar{\global\@nobreakfalse\everypar{}}%
  769. \fi
  770. \endgroup
  771. \fi}
  772. \newcommand*\l@section[2]{%
  773. \ifnum \c@tocdepth >\z@
  774. \addpenalty\@secpenalty
  775. \addvspace{1.0em \@plus\p@}%
  776. \setlength\@tempdima{1.5em}%
  777. \begingroup
  778. \parindent \z@ \rightskip \@pnumwidth
  779. \parfillskip -\@pnumwidth
  780. \leavevmode \bfseries
  781. \advance\leftskip\@tempdima
  782. \hskip -\leftskip
  783. #1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
  784. \endgroup
  785. \fi}
  786. \newcommand*\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
  787. \newcommand*\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
  788. \newcommand*\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
  789. \newcommand*\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
  790. \newcommand\listoffigures{%
  791. \section*{\listfigurename
  792. \@mkboth{\MakeUppercase\listfigurename}%
  793. {\MakeUppercase\listfigurename}}%
  794. \@starttoc{lof}%
  795. }
  796. \newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
  797. \newcommand\listoftables{%
  798. \section*{\listtablename
  799. \@mkboth{%
  800. \MakeUppercase\listtablename}{\MakeUppercase\listtablename}}%
  801. \@starttoc{lot}%
  802. }
  803. \let\l@table\l@figure
  804. \newdimen\bibindent
  805. \setlength\bibindent{1.5em}
  806. \newskip\bibskip
  807. \bibskip=0pt plus 3pt
  808. \newenvironment{thebibliography}[1]
  809. {\endgroup\endtwocolumns\vskip24pt\twocolumns\begingroup
  810. \def\@currenvir{thebibliography}
  811. \let\savebibitem\bibitem
  812. \def\bibitem{\vskip\bibskip\savebibitem}
  813. \tiny\baselineskip=8pt\bibfont
  814. \let\it\bibitfont
  815. \let\bf\bibbffont
  816. \let\em\bibitfont
  817. \let\sc\bibfont
  818. \def\textit##1{{\bibitfont ##1}}
  819. \def\textbf##1{{\bibbffont ##1}}
  820. \list{\@biblabel{\@arabic\c@enumiv}}%
  821. {\settowidth\labelwidth{\@biblabel{#1}}%
  822. \leftmargin\labelwidth
  823. \advance\leftmargin\labelsep
  824. \@openbib@code
  825. \usecounter{enumiv}%
  826. \let\p@enumiv\@empty
  827. \renewcommand\theenumiv{\@arabic\c@enumiv}}%
  828. \sloppy
  829. \clubpenalty4000
  830. \@clubpenalty \clubpenalty
  831. \widowpenalty4000%
  832. \sfcode`\.\@m}
  833. {\def\@noitemerr
  834. {\@latex@warning{Empty `thebibliography' environment}}%
  835. \endlist
  836. }
  837. \newcommand\newblock{\hskip .11em\@plus.33em\@minus.07em}
  838. \let\@openbib@code\@empty
  839. %\renewcommand\footnoterule{%
  840. % \kern-3\p@
  841. % \hrule\@width6pc%.4\columnwidth
  842. % \kern2.6\p@}
  843. \renewcommand\footnoterule{%
  844. \ifx \@significancetext\@empty
  845. \kern-3\p@
  846. \hrule\@width6pc%.4\columnwidth
  847. \kern2.6\p@
  848. \else
  849. \ifnum\thepage=1
  850. \renewcommand\footnoterule{}
  851. \else
  852. \kern-3\p@
  853. \hrule\@width6pc%.4\columnwidth
  854. \kern2.6\p@
  855. \fi
  856. \fi
  857. }
  858. \newcommand\@makefntext[1]{%
  859. \parindent 1em%
  860. \noindent
  861. \hb@[email protected]{\hss\@makefnmark}#1}
  862. \newcommand\contentsname{Contents}
  863. \newcommand\listfigurename{List of Figures}
  864. \newcommand\listtablename{List of Tables}
  865. \newcommand\refname{References}
  866. \newcommand\indexname{Index}
  867. \newcommand\figurename{Fig.}
  868. \newcommand\tablename{Table}
  869. \newcommand\partname{Part}
  870. \newcommand\appendixname{Appendix}
  871. \newcommand\abstractname{Abstract}
  872. \def\today{\ifcase\month\or
  873. January\or February\or March\or April\or May\or June\or
  874. July\or August\or September\or October\or November\or December\fi
  875. \space\number\day, \number\year}
  876. \setlength\columnsep{10\p@}
  877. \setlength\columnseprule{0\p@}
  878. \pagenumbering{arabic}
  879. \if@twoside
  880. \else
  881. \raggedbottom
  882. \fi
  883. \if@twocolumn
  884. \twocolumn
  885. \sloppy
  886. \flushbottom
  887. \else
  888. \onecolumn
  889. \fi
  890. %%%%%%%%%%%%%%%%%
  891. % Additions to article.cls for PNASONE ==>>
  892. %%%%%%%%%%%%%%%%%
  893. \hoffset-.5in
  894. \pagestyle{headings}
  895. \textwidth= 42.5pc
  896. \textheight= 56.2pc
  897. \def\xrelax{\relax}
  898. %%%%%%%%%%%%%%%%%%%%%%%% For Line numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  899. \newcounter{cms}
  900. \def\leftnumber{\setlength{\unitlength}{1pt}
  901. \begin{picture}(0,0)
  902. \multiput(-45,688)(0,-10){68}{\addtocounter
  903. {cms}{1}{\fontsize{9}{10.5}\selectfont\arabic{cms}\par}}
  904. \end{picture}
  905. }
  906. \def\rightnumber{\setlength{\unitlength}{1pt}
  907. \begin{picture}(0,0)
  908. \multiput(6,688)(0,-10){68}{\addtocounter
  909. {cms}{1}{\fontsize{9}{10.5}\selectfont\arabic{cms}\par}}
  910. \end{picture}
  911. }
  912. %%%%%%%%%%%%%%%%%%%%%%%% For Line numbers %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  913. %%%%%%%%%%
  914. %% Footnotes, endnotes
  915. \newcount\footnum
  916. \newcount\savefootnum
  917. \def\notes{
  918. {\ifnum\footnum=0\else
  919. \savefootnum=\footnum
  920. \footnum=0
  921. \noindent\loop\ifnum\savefootnum>\footnum%
  922. \global\advance\footnum by1\relax%
  923. \csname foot\the\footnum\endcsname\relax%
  924. \expandafter\gdef\csname foot\the\footnum\endcsname{\relax}\relax%
  925. \repeat\global\footnum=0\relax\fi}}
  926. \long\def\endnotes#1{\global\advance\footnum by 1\relax$^{\the\footnum}$%
  927. \long\expandafter\gdef\csname foot\the\footnum\endcsname{%
  928. \vbox{\footnotesize\everypar={\hskip-10pt\everypar={}}
  929. \leftskip=10pt\relax
  930. \noindent\hbox to10pt{\the\footnum.\hfill}{\def\@currentlabel{\the\footnum}%
  931. #1\strut\vskip1sp}}\vskip1pt}}
  932. \def\endnotetext#1{\global\advance\footnum by 1\relax
  933. \long\expandafter\gdef\csname foot\the\footnum\endcsname{%
  934. \vtop{\footnotesize%
  935. \leftskip=12pt\relax\parindent=-12pt
  936. \indent\hbox to12pt{\the\footnum.\hfill}{#1\strut\vskip1sp}}\vskip1pt}}
  937. %\let\footnote\endnotes
  938. \setlength\oddsidemargin {3\p@}
  939. \setlength\evensidemargin {-3\p@}
  940. \def\dropcap#1{\setbox1=\hbox{\dropcapfont\uppercase{#1}\hskip1pt}
  941. \hangindent=\wd1
  942. \hangafter-2
  943. \noindent\llap{\vbox to0pt{\vskip-7pt\copy1\vss}}}
  944. %%% Theorem environment %%%%%%%%%
  945. %% added \theoremfont for theorem name and number
  946. \def\@begintheorem#1#2{\trivlist
  947. \item[\hskip \labelsep{\theoremfont #1\ #2.}]\itshape}
  948. \def\@opargbegintheorem#1#2#3{\trivlist
  949. \item[\hskip \labelsep{\theoremfont #1\ #2.\ (#3)}]\itshape}
  950. \def\@endtheorem{\endtrivlist}
  951. %%%%%%
  952. %%Macros for Footline on titlepage
  953. \def\url#1{\def\theurl{#1}}
  954. \def\issuedate#1{\def\theissuedate{#1}}
  955. \def\copyrightyear#1{\def\thecopyrightyear{#1}}
  956. \def\volume#1{\def\thevolume{#1}}
  957. \def\issuenumber#1{\def\theissuenumber{#1}}
  958. \def\footlineauthor#1{\def\thefootlineauthor{\let\it\footlineit#1}}
  959. \ps@headings
  960. %% References
  961. \def\@biblabel#1{#1.}
  962. %%% code to get text in tables to extend all the way to left and right
  963. %%% of table
  964. \def\xtable{table}
  965. \def\@array[#1]#2{\tabletextfont
  966. \setbox\@arstrutbox=\hbox{\vrule
  967. height\arraystretch \ht\strutbox
  968. depth\arraystretch \dp\strutbox
  969. width\z@}\@mkpream{#2}\edef\@preamble{\halign \noexpand\@halignto
  970. \bgroup%
  971. \tabskip\z@\@arstrut\@preamble
  972. \ifx\@captype\xtable\hskip-\tabcolsep\fi%% <==== Changed
  973. \tabskip\z@ \cr}%
  974. \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox%
  975. \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi%
  976. \bgroup\let\par\relax%
  977. \let\@sharp##\let\protect\relax \lineskip\z@\baselineskip\z@\@preamble}
  978. %% new
  979. \def\new@tabacol{\edef\@preamble{\@preamble\hskip0pt}}
  980. \def\@tabclassz{\ifcase \@lastchclass\@acolampacol%
  981. \or \@ampacol \or
  982. \or \or \@addamp \or \@acolampacol\or \@firstampfalse
  983. \ifx\@captype\xtable \new@tabacol\else\@tabacol \fi%
  984. \fi%
  985. \edef\@preamble{\@preamble%
  986. \ifcase \@chnum%
  987. \hfil\ignorespaces\@sharp\unskip\hfil%
  988. \or \ignorespaces\@sharp\unskip\hfil%
  989. \or \hfil\hskip\z@ \ignorespaces\@sharp\unskip\fi}}
  990. \setcounter{secnumdepth}{0}
  991. \long\def\@makefntext#1{\parindent0pt\noindent
  992. \@textsuperscript{\normalfont\@thefnmark}#1}%
  993. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  994. %% %%
  995. %% LaTeX Style for Multiple Columns with Floating Insertions %%
  996. %% %%
  997. %% Copyright 2004, Amy Hendrickson, TeXnology Inc. %%
  998. %% All rights reserved %%
  999. %% %%
  1000. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1001. %%%%%%%%
  1002. %%% Double column output routines,
  1003. %%% with single and double column insertions,
  1004. %%% to be positioned at page or column top, page or column bottom, page
  1005. %%% or column center, or full page floating insertion.
  1006. %%% This code was originally based on Frank Mittlebach's multicol.sty.
  1007. %%% The concept of how to balance columns is due to Donald Knuth. The
  1008. %%% way to integrate the changed output routine into the standard LaTeX
  1009. %%% output routine is due to Frank.
  1010. %%% The method of making the single and double column insertions and the
  1011. %%% changes in the output routines to accomodate these features are mine.
  1012. %%% A.H., August 2004
  1013. %%
  1014. \newskip\abovefigcaptionskip
  1015. \newskip\abovetabcaptionskip
  1016. \newskip\abovetableskip
  1017. \newif\ifcentermultiplelines
  1018. \newif\ifcentersingleline
  1019. \newif\ifcentersingletabline
  1020. \newif\iflineabovetabcaption
  1021. \newif\iflinebelowtabcaption
  1022. \newdimen\belowtabcaptionskip
  1023. %% Parameters you can set:
  1024. \columnsep=13.5pt%16pt
  1025. \newdimen\saveparskip
  1026. \saveparskip=\parskip
  1027. %%
  1028. \newdimen\captionskip %% space between caption and figure or table
  1029. \captionskip=0pt
  1030. %%%
  1031. \newdimen\PushOneColTopFig
  1032. \newdimen\PushOneColBotFig
  1033. \PushOneColTopFig=5.5pt %% push down from top of text page
  1034. \PushOneColBotFig=-4.5pt %
  1035. %%
  1036. \newdimen\PushOneColTopTab
  1037. \newdimen\PushOneColBotTab
  1038. \PushOneColTopTab=2.5pt %% push down from top of text page
  1039. \PushOneColBotTab=0pt %% push up from bottom of text page
  1040. %%
  1041. \newdimen\PushTwoColTopFig
  1042. \newdimen\PushTwoColBotFig
  1043. \PushTwoColTopFig=2.5pt %% push down from top of text page
  1044. \PushTwoColBotFig=1.5pt %% push up from bottom of text page
  1045. %%
  1046. \newdimen\PushTwoColTopTab
  1047. \newdimen\PushTwoColBotTab
  1048. \PushTwoColTopTab=1.5pt %% push down from top of text page
  1049. \PushTwoColBotTab=1.5pt %% push up from bottom of text page
  1050. %%
  1051. \newskip\intextfloatskip
  1052. \intextfloatskip=20pt %% Space between figure or table and text.
  1053. %% (Need to subtract 4pt to get what you want)
  1054. %% Normal and Appendix Figure and Table Numbers
  1055. \def\appthefigure{\Alph{section}\the\c@appfigure\theletter}
  1056. \def\appthetable{\Alph{section}\the\c@apptable\theletter}
  1057. \def\apptheplate{\Alph{section}\the\c@appplate\theletter}
  1058. \newcount\c@appfigure
  1059. \newcount\c@apptable
  1060. \newcount\c@appplate
  1061. %% <=== end of parameters you can set
  1062. %% do one column at a time so that we can get single col
  1063. %% floats for first col.
  1064. %%% New version of \@makecol that includes dbltopins and dblbotins,
  1065. %%% insertions that span both columns at the top and bottom of text page.
  1066. %%%
  1067. \def\new@makecol{\setbox\@outputbox
  1068. \vbox{\boxmaxdepth \maxdepth
  1069. \ifdim\ht\dbltopins<1pt\else\unvbox\dbltopins\fi
  1070. \unvbox\@cclv
  1071. \ifdim\ht\dblbotins<1pt\else\unvbox\dblbotins\fi%
  1072. \ifvoid\footins\else\vskip\skip\footins\footnoterule\unvbox\footins\fi\vss}
  1073. %\global\savefigandtabnumber\figandtabnumber
  1074. %\global\advance\savefigandtabnumber by 1 %% Because loop stops one short
  1075. %% of the total number of figs
  1076. \global\savedblfigandtabnumber\dblfigandtabnumber
  1077. \xdef\@freelist{\@freelist\@midlist}\gdef\@midlist{}\@combinefloats
  1078. \setbox\@outputbox\vbox to\@colht{\boxmaxdepth\maxdepth
  1079. \@texttop\dimen128=\dp\@outputbox\unvbox\@outputbox
  1080. \vskip-\dimen128\@textbottom}%
  1081. \global\maxdepth\@maxdepth}
  1082. %%
  1083. \let\@makecol\new@makecol %%
  1084. %% Default Latex output routine, to return to after balance columns
  1085. %% This should make it possible to capture the output routine of
  1086. %% any version of 2e as well as 2.09. ==>>
  1087. \edef\curroutput{\the\output}
  1088. \let\latexoutput\curroutput
  1089. %% table* and figure* outside two columns keep default definitions.
  1090. \newif\ifnonewpage
  1091. \def\nonewpage{\global\nonewpagetrue}
  1092. %% Begin twocolumns ==>>
  1093. \newdimen\checkforspace
  1094. \def\twocolumns{\par \penalty\z@
  1095. \checkforspace=\pagegoal
  1096. \advance\checkforspace-\pagetotal
  1097. \advance\checkforspace-\ht\partialpage
  1098. \advance\checkforspace-\dp\partialpage
  1099. \advance\checkforspace by -2\ht\dbltopins
  1100. \advance\checkforspace by -2\dp\dbltopins
  1101. \advance\checkforspace by -2\ht\dblbotins
  1102. \advance\checkforspace by -2\dp\dblbotins
  1103. \ifdim\checkforspace<36pt\ifnonewpage\else\newpage\fi\fi
  1104. \begingroup
  1105. %
  1106. \expandafter\gdef\csname plate*\endcsname{\twocolplate}
  1107. \expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
  1108. %
  1109. \expandafter\gdef\csname figure*\endcsname{\twocolfig}
  1110. \expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
  1111. %
  1112. \expandafter\gdef\csname table*\endcsname{\twocoltable}
  1113. \expandafter\gdef\csname endtable*\endcsname{\endtwocolfloat}
  1114. %
  1115. \let\figure\onecolfig
  1116. \let\plate\onecolplate
  1117. \let\table\onecoltable
  1118. %
  1119. \let\@makecol\new@makecol %%
  1120. %% Confines new def of \@makecol to
  1121. %% two column material, preserves normal topskip after twocolumns is
  1122. %% finished.
  1123. %%
  1124. \output={\global\setbox\partialpage=\vbox{\unvbox\@cclv}}
  1125. \vskip1sp %%
  1126. \eject
  1127. \vbadness10001 \hbadness5000
  1128. \tolerance5000
  1129. \parskip \saveparskip %plus .01pt %
  1130. %\ifjdraft
  1131. %\baselineskip=28pt\fi
  1132. \pretolerance\m@ne %keeps TeX from trying to make up paragraph
  1133. % without discretionary hyphens
  1134. \advance\@colroom-\ht\partialpage
  1135. \advance\@colroom-\dp\partialpage
  1136. \vsize=\@colroom
  1137. % Changed to \@colroom rather than 2\@colroom. Each column is output
  1138. % separately so we can find out if there are top or bottom inserts
  1139. % in first column.
  1140. %%
  1141. \hsize\textwidth \advance\hsize-\columnsep
  1142. \divide\hsize by 2
  1143. \linewidth\hsize %% particular to LaTeX
  1144. \columnwidth=\hsize
  1145. %% OR, you can substitute these lines:
  1146. %\hsize=\mycolumnwidth
  1147. %\linewidth=\hsize
  1148. %%
  1149. %% Output:
  1150. % Set output to firstcolout, which checks to see if there are inserts
  1151. % then doubles the vsize and send material back into input stream, then
  1152. % sets the next output routine to \makeuppage
  1153. %
  1154. \output={\firstcolout}
  1155. \vskip2sp\ignorespaces}
  1156. \def\galleycolumns{\par \penalty\z@
  1157. \checkforspace=\pagegoal
  1158. \advance\checkforspace-\pagetotal
  1159. \advance\checkforspace-\ht\partialpage
  1160. \advance\checkforspace-\dp\partialpage
  1161. \advance\checkforspace by -2\ht\dbltopins
  1162. \advance\checkforspace by -2\dp\dbltopins
  1163. \advance\checkforspace by -2\ht\dblbotins
  1164. \advance\checkforspace by -2\dp\dblbotins
  1165. \ifdim\checkforspace<36pt\newpage\fi
  1166. \begingroup
  1167. \expandafter\gdef\csname plate*\endcsname{\twocolplate}
  1168. \expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
  1169. %
  1170. \expandafter\gdef\csname figure*\endcsname{\twocolfig}
  1171. \expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
  1172. %
  1173. \expandafter\gdef\csname table*\endcsname{\twocoltable}
  1174. \expandafter\gdef\csname endtable*\endcsname{\endtwocolfloat}
  1175. %
  1176. \let\figure\onecolfig
  1177. \let\plate\onecolplate
  1178. \let\table\onecoltable
  1179. %
  1180. \global\firstsectionfalse
  1181. \hsize=\mycolumnwidth
  1182. \linewidth=\mycolumnwidth
  1183. \vbadness10001
  1184. \hbadness5000
  1185. \tolerance5000
  1186. \widowpenalty=0 \clubpenalty=0
  1187. \parskip \saveparskip %plus .0001pt %
  1188. \vskip1sp\ignorespaces}
  1189. \def\draftcolumns{\par \penalty\z@
  1190. \begingroup
  1191. \expandafter\gdef\csname plate*\endcsname{\twocolplate}
  1192. \expandafter\gdef\csname endplate*\endcsname{\endtwocolfloat}
  1193. %
  1194. \expandafter\gdef\csname figure*\endcsname{\twocolfig}
  1195. \expandafter\gdef\csname endfigure*\endcsname{\endtwocolfloat}
  1196. %
  1197. \expandafter\def\csname table*\endcsname{\twocoltable}
  1198. \expandafter\def\csname endtable*\endcsname{\endtwocolfloat}
  1199. %
  1200. \let\figure\onecolfig
  1201. \let\plate\onecolplate
  1202. \let\table\onecoltable
  1203. %
  1204. \marginparsep=4pt
  1205. \oddsidemargin-.25in
  1206. \evensidemargin-.25in
  1207. \advance\textwidth-.5in
  1208. \hsize=\textwidth
  1209. \linewidth=\textwidth
  1210. \vbadness10001 \hbadness5000
  1211. \tolerance5000
  1212. \parskip \saveparskip
  1213. \vskip1sp\ignorespaces}
  1214. \newbox\savetopinsert
  1215. \newbox\savebotinsert
  1216. \newbox\secondsavetopinsert
  1217. \newbox\secondsavebotinsert
  1218. \newbox\firstcolbox
  1219. \newbox\secondcolbox
  1220. \newbox\thefirstbox
  1221. \newbox\thesecondbox
  1222. \newdimen\firstcol
  1223. \newdimen\secondcol
  1224. \newdimen\checkheight
  1225. \newcount\loopnum
  1226. \newcount\firstcolsavefignum
  1227. \def\firstcolout{%
  1228. %% The point of having firstcolout is to find out
  1229. %% which figures/tables have been entered in the first column:
  1230. \global\firstcolsavefignum=\figandtabnumber
  1231. \global\advance\vsize by\@colroom
  1232. \topskip=11pt %% ??
  1233. \unvbox\@cclv
  1234. \penalty\outputpenalty
  1235. \global\output={\makeuppage}}
  1236. %% This is where the floats and text are put together to make page:
  1237. \newif\iffirstpage
  1238. \newbox\footnotebox
  1239. \newdimen\ColUsed
  1240. \newdimen\FigSpace
  1241. \newbox\testdblbotins
  1242. \def\makeuppage{%
  1243. %%
  1244. \FigSpace=.9\@colroom %%
  1245. \advance\FigSpace by-\ht\testdblbotins
  1246. \advance\FigSpace by-\dp\testdblbotins
  1247. \advance\FigSpace by-\ht\dbltopins
  1248. \advance\FigSpace by-\dp\dbltopins
  1249. %
  1250. %% Save top inserts from first column: +++
  1251. \global\setbox\savetopinsert=\vbox{%
  1252. % write top figures and tables into this box
  1253. \redefiningtrue
  1254. \global\loopnum=0 \global\checkheight=0pt
  1255. \loop\ifnum\loopnum<\firstcolsavefignum
  1256. %
  1257. \expandafter\ifx\csname topfloat\the\loopnum\endcsname\empty
  1258. \else
  1259. \expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax
  1260. \else
  1261. \global\advance\checkheight by
  1262. \expandafter\csname totalht\the\loopnum\endcsname\relax
  1263. \fi\fi
  1264. \ifdim\checkheight>\FigSpace \relax
  1265. \global\loopnum=10000 % jump out of loop
  1266. %
  1267. \else
  1268. \csname topfloat\the\loopnum\endcsname
  1269. \fi
  1270. %
  1271. \global\advance\loopnum by1
  1272. \repeat\relax
  1273. }
  1274. \ColUsed=\FigSpace %%
  1275. \advance\ColUsed by-\ht\savetopinsert
  1276. \advance\ColUsed by-\dp\savetopinsert
  1277. %%
  1278. \global\setbox\savebotinsert=\vbox{%
  1279. %% Write bottom figures and tables into this box
  1280. \redefiningtrue
  1281. \global\loopnum=0
  1282. \global\checkheight=0pt
  1283. \loop\ifnum\loopnum<\firstcolsavefignum
  1284. \expandafter\ifx\csname botfloat\the\loopnum\endcsname\empty
  1285. \else
  1286. \expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax
  1287. \else
  1288. \global\advance\checkheight by
  1289. \expandafter\csname totalht\the\loopnum\endcsname\relax
  1290. \fi\fi
  1291. \ifdim\checkheight>\ColUsed
  1292. \global\loopnum=10000 % jump out of loop
  1293. \else%
  1294. \csname botfloat\the\loopnum\endcsname
  1295. \global\expandafter\expandafter\let\csname botfloat\the\loopnum\endcsname\relax
  1296. %% how come this reset is here and not in similar places????
  1297. \fi
  1298. %
  1299. \global\advance\loopnum by1
  1300. \repeat
  1301. } %
  1302. %
  1303. %
  1304. \iffirstpage\else
  1305. \global\setbox\secondsavetopinsert=\vbox{%
  1306. %% Write top figures and tables into this box
  1307. %
  1308. \global\loopnum=0 \global\checkheight=0pt
  1309. \redefiningtrue
  1310. \loop\ifnum\loopnum<\figandtabnumber %% ?
  1311. %
  1312. \expandafter\ifx\csname topfloat\the\loopnum\endcsname\empty
  1313. \else
  1314. \expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax
  1315. \else
  1316. \global\advance\checkheight by
  1317. \expandafter\csname totalht\the\loopnum\endcsname\relax
  1318. \fi\fi
  1319. \ifdim\checkheight>\FigSpace
  1320. \global\loopnum=10000 % jump out of loop
  1321. %
  1322. \else%
  1323. \csname topfloat\the\loopnum\endcsname
  1324. \fi
  1325. %
  1326. \global\advance\loopnum by1\repeat
  1327. %% one more, because it doesn't stop when number is =, only when it
  1328. %% is less than.
  1329. \global\advance\loopnum by1
  1330. \csname topfloat\the\loopnum\endcsname
  1331. }
  1332. \fi
  1333. %
  1334. \ColUsed=\FigSpace %%
  1335. \advance\ColUsed by-\ht\secondsavetopinsert
  1336. \advance\ColUsed by-\dp\secondsavetopinsert
  1337. %
  1338. \iffirstpage\global\firstpagefalse\else
  1339. \global\setbox\secondsavebotinsert=\vbox{%
  1340. %% Write bottom figures and tables into this box
  1341. %
  1342. \redefiningtrue
  1343. \global\loopnum=0 \global\checkheight=0pt
  1344. \loop\ifnum\loopnum<\figandtabnumber
  1345. \expandafter\ifx\csname botfloat\the\loopnum\endcsname\empty
  1346. \else
  1347. \expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax
  1348. \else
  1349. \global\advance\checkheight by
  1350. \expandafter\csname totalht\the\loopnum\endcsname\relax
  1351. \fi\fi
  1352. \ifdim\checkheight>\ColUsed
  1353. \global\loopnum=10000 % jump out of loop
  1354. %
  1355. \else%
  1356. \csname botfloat\the\loopnum\endcsname
  1357. \fi
  1358. %
  1359. \global\advance\loopnum by1\repeat
  1360. %% one more, because it doesn't stop when number is =, only when it
  1361. %% is less than.
  1362. \global\advance\loopnum by1
  1363. \csname botfloat\the\loopnum\endcsname
  1364. }
  1365. %
  1366. \global\dp\secondsavebotinsert=2.5pt
  1367. \global\dp\savebotinsert=2.5pt
  1368. \fi
  1369. %
  1370. \splittopskip=\topskip
  1371. \splitmaxdepth\maxdepth
  1372. \dimen@\@colroom
  1373. %% Leave space if there is a two-column wide bottom insertion:
  1374. %
  1375. \global\setbox\dblbotins=\vbox{%
  1376. \hsize=\textwidth
  1377. \linewidth=\textwidth
  1378. \captionwidth=\widecaptionwidth
  1379. \unvbox\dblbotins %% avoid eradicating this if it has anything in it
  1380. %% Write dblspan bottom figures and tables into this box
  1381. \redefiningtrue
  1382. \global\dblloopnum=0
  1383. \loop\ifnum\dblloopnum<\savedblfigandtabnumber %%
  1384. \csname dblbotfloat\the\dblloopnum\endcsname
  1385. \global\advance\dblloopnum by1\repeat
  1386. \csname dblbotfloat\the\dblloopnum\endcsname
  1387. }
  1388. \ifvoid\dblbotins \else
  1389. \advance\dimen@-\ht\dblbotins
  1390. \advance\dimen@-\dp\dblbotins
  1391. \fi
  1392. %
  1393. %% Leave space if there is a two-column wide top insertion:
  1394. \ifvoid\dbltopins\else
  1395. \advance\dimen@-\ht\dbltopins
  1396. \advance\dimen@-\dp\dbltopins
  1397. \fi
  1398. %%
  1399. %% These changes are made to cut the column size down if we need
  1400. %% to fit an insert into the column. This allows the right and
  1401. %% left column to have differing amounts of text cut from box 255,
  1402. %% called box \@cclv in LaTeX. See \vsplit below.
  1403. \firstcol=\dimen@
  1404. \ifvoid\savetopinsert\else
  1405. \ifdim\ht\savetopinsert>0pt
  1406. \advance\firstcol by-\ht\savetopinsert
  1407. \advance\firstcol by-\dp\savetopinsert\fi\fi
  1408. \ifvoid\savebotinsert\else
  1409. \ifdim\ht\savebotinsert>0pt
  1410. \advance\firstcol by-\ht\savebotinsert
  1411. \advance\firstcol by-\dp\savebotinsert\fi
  1412. \fi%
  1413. %%% KLUDGE below
  1414. \advance\firstcol by-3pt %% We need this to avoid
  1415. %% error messages about overfull boxes.
  1416. %
  1417. \secondcol=\dimen@
  1418. %%
  1419. \ifvoid\secondsavetopinsert\else
  1420. \ifdim\ht\secondsavetopinsert>0pt
  1421. \advance\secondcol by-\ht\secondsavetopinsert
  1422. \advance\secondcol by-\dp\secondsavetopinsert\fi\fi
  1423. \ifvoid\secondsavebotinsert\else
  1424. \ifdim\ht\secondsavebotinsert>0pt
  1425. \advance\secondcol by-\ht\secondsavebotinsert
  1426. \advance\secondcol by-\dp\secondsavebotinsert\fi\fi
  1427. \ifvoid\footins\else
  1428. \ifdim\ht\footins>0pt
  1429. \global\setbox\footnotebox=\vbox{\vskip\skip\footins
  1430. \footnoterule\unvbox\footins\vskip1sp}
  1431. \advance\secondcol by-\ht\footnotebox
  1432. \advance\secondcol by-\dp\footnotebox\fi\fi
  1433. %%% KLUDGE below
  1434. \advance\secondcol by-3pt %% We need this to avoid
  1435. %% error messages about overfull boxes.
  1436. %
  1437. %% Cutting the amount of text that will fit from box255:
  1438. \splittopskip=\topskip %%
  1439. \splitmaxdepth\maxdepth
  1440. \setbox\thefirstbox \vsplit\@cclv to\firstcol
  1441. \setbox\thesecondbox \vsplit\@cclv to\secondcol
  1442. %
  1443. %% Making a text box that includes the inserts, column to the left:
  1444. \setbox\firstcolbox\vbox to\dimen@{%
  1445. \ifvoid\savetopinsert\else\unvbox\savetopinsert\fi%
  1446. \box\thefirstbox%
  1447. \ifvoid\savebotinsert\else\vfill\unvbox\savebotinsert\fi%
  1448. }
  1449. %
  1450. %% Making a text box that includes the inserts, column to the right:
  1451. \setbox\secondcolbox\vbox to\dimen@{%
  1452. \ifvoid\secondsavetopinsert\else\unvbox\secondsavetopinsert\fi%
  1453. \box\thesecondbox%%
  1454. \ifvoid\secondsavebotinsert\else\vfill\unvbox\secondsavebotinsert\vskip1sp\fi%
  1455. \ifvoid\footnotebox\else\unvbox\footnotebox\fi%
  1456. }
  1457. % Put back any text material that is not used:
  1458. \ifvoid\@cclv \else
  1459. \unvbox\@cclv
  1460. \penalty\outputpenalty\fi
  1461. \setbox\@cclv\vbox{\page@sofar}%
  1462. \@makecol\@outputpage
  1463. \global\@colroom\@colht
  1464. % Changed this so that each column will be output separately,
  1465. % so we have a chance to see if there are any insertions in the first
  1466. % column.
  1467. %
  1468. %% Do Page Inserts here, so that if there are any two col top inserts
  1469. %% They will be numbered after Page Inserts.
  1470. %%
  1471. \expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\relax
  1472. \else
  1473. \expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\empty
  1474. \else
  1475. \insertpage\fi\fi
  1476. %
  1477. %** doing this now gets the numbers right.
  1478. \global\setbox\dbltopins=\vbox{%
  1479. \hsize=\textwidth
  1480. \linewidth=\textwidth
  1481. \captionwidth=\widecaptionwidth
  1482. \unvbox\dbltopins
  1483. %% Write dblspan bottom figures and tables into this box
  1484. \redefiningtrue %
  1485. \global\dblloopnum=0
  1486. \loop\ifnum\dblloopnum<\savedblfigandtabnumber
  1487. \csname dbltopfloat\the\dblloopnum\endcsname
  1488. \global\advance\dblloopnum by1\repeat
  1489. \csname dbltopfloat\the\dblloopnum\endcsname%
  1490. %Save one for next page?
  1491. %\vskip24pt
  1492. }
  1493. %**
  1494. %
  1495. %% dblfigandtabnumber rather than savedblfigandtabnumber here
  1496. \global\setbox\testdblbotins=\vbox{%
  1497. \let\c@figure\bogus
  1498. \let\c@table\bogus
  1499. \let\c@plate\bogus
  1500. \hsize=\textwidth
  1501. \linewidth=\textwidth
  1502. \captionwidth=\widecaptionwidth
  1503. \copy\dblbotins %% avoid eradicating this if it has anything in it
  1504. %% Write dblspan bottom figures and tables into this box
  1505. \redefiningfalse
  1506. \global\dblloopnum=0
  1507. \loop\ifnum\dblloopnum<\dblfigandtabnumber %%
  1508. \csname dblbotfloat\the\dblloopnum\endcsname
  1509. \global\advance\dblloopnum by1\repeat
  1510. \csname dblbotfloat\the\dblloopnum\endcsname
  1511. }
  1512. %
  1513. \ifbalancing
  1514. \global\balancingfalse
  1515. \global\vsize=2\@colroom
  1516. \else
  1517. \global\vsize\@colroom
  1518. \global\advance\vsize -\ht\dbltopins
  1519. \global\advance\vsize -\dp\dbltopins
  1520. \global\advance\vsize -\ht\testdblbotins
  1521. \global\advance\vsize -\dp\testdblbotins
  1522. \global\output={\firstcolout}%
  1523. \fi
  1524. }
  1525. \newcount\pageloopnum
  1526. \def\secondoutput{{\makeuppage }}
  1527. \newbox\endcolsavetopinsert
  1528. \newbox\endcolsavebotinsert
  1529. \newbox\testpagesize
  1530. \newif\ifbalancing
  1531. \newdimen\savelastskip
  1532. %%+++
  1533. \def\endtwocolumns{%
  1534. %\par\penalty0
  1535. \splittopskip=\topskip
  1536. \splitmaxdepth\maxdepth
  1537. \setboxesandredefine
  1538. \ifdim\ht\endcolsavetopinsert>1pt
  1539. \unvbox\endcolsavetopinsert%
  1540. \fi
  1541. \ifdim\ht\endcolsavebotinsert>1pt
  1542. \unvbox\endcolsavebotinsert%
  1543. \fi
  1544. \par\penalty\z@
  1545. \output={\global\setbox\testpagesize=\vbox{%
  1546. \unvbox\@cclv\ifdim\savelastskip>0pt \vskip-\savelastskip\fi}}\eject
  1547. %%
  1548. %% We reset output routine below to \latexoutput
  1549. %% since we had to set multicolout to be the global output routine.
  1550. %%
  1551. \dimen0=\ht\testpagesize
  1552. \advance\dimen0 by\dp\testpagesize
  1553. \unvbox\testpagesize %%
  1554. %% Above needed to see if we have more than one page worth of text.
  1555. %%
  1556. \advance\dimen0 by \topskip
  1557. \ifdim\dimen0>2\@colroom
  1558. %\typeout{^^J^^J more than 2 colroom^^J^^J}
  1559. %% More than one page of text:
  1560. %%
  1561. \balancingtrue %% need this to avoid turning on firstcolout output routine.
  1562. \global\output={\settwocolboxes\makeuppage
  1563. \global\output={\setboxesandredefine
  1564. \balance@columns\global\output={\latexoutput}}}
  1565. \else
  1566. \settwocolboxes
  1567. \advance\dimen0 by 2\ht\dbltopins
  1568. \advance\dimen0 by 2\dp\dbltopins
  1569. \ifdim\dimen0>2\@colroom
  1570. %\typeout{^^J^^J Second more than 2 colroom^^J^^J}
  1571. %%
  1572. \balancingtrue %% need this to avoid turning on firstcolout output routine.
  1573. \global\output={\makeuppage
  1574. \global\output={\balance@columns\global\output={\latexoutput}}}
  1575. \else
  1576. %\typeout{^^J^^J NOT more than 2 colroom^^J^^J}
  1577. \balancingtrue %% need this to avoid turning on firstcolout output routine.
  1578. \global\output={\balance@columns\global\output={\latexoutput}}\fi\fi
  1579. \par
  1580. \eject
  1581. \endgroup
  1582. \par\penalty\z@\relax
  1583. \hsize=\textwidth
  1584. }
  1585. %% to get rid of spurious error message when triple col is used:
  1586. %\def\@checkend#1{\def\reserved@a{#1}\ifx
  1587. % \reserved@a\@currenvir \else\iftriplecol
  1588. %\else\@badend{#1}\fi\fi}
  1589. \def\endgalley{\vskip1sp\endgroup\newpage
  1590. \vspace*{1in}
  1591. \unvbox\figinsert}
  1592. \def\enddraft{\vskip1sp\endgroup
  1593. \ifdim\ht\figinsert <2pt\else
  1594. \newpage
  1595. \vspace*{1in}
  1596. \unvbox\figinsert\fi}
  1597. \def\setboxesandredefine{%
  1598. \global\setbox\dbltopins=\vbox{%
  1599. \hsize=\textwidth
  1600. \linewidth=\textwidth
  1601. \captionwidth=\widecaptionwidth
  1602. \unvbox\dbltopins
  1603. %% Write dblspan bottom figures and tables into this box
  1604. \redefiningtrue %
  1605. \global\dblloopnum=0
  1606. \loop\ifnum\dblloopnum<\dblfigandtabnumber
  1607. \csname dbltopfloat\the\dblloopnum\endcsname
  1608. \global\advance\dblloopnum by1\repeat
  1609. \csname dbltopfloat\the\dblloopnum\endcsname%
  1610. % %Save one for next page?
  1611. \vskip3pt%% kludge
  1612. \vskip-\intextfloatskip
  1613. }
  1614. %
  1615. \global\setbox\endcolsavetopinsert=\vbox{%
  1616. %% dropping figures and tables into this box
  1617. \loopnum=0
  1618. \redefiningtrue
  1619. \loop\ifnum\loopnum<\figandtabnumber
  1620. \csname topfloat\the\loopnum\endcsname
  1621. \global\advance\loopnum by1\repeat
  1622. \csname topfloat\the\loopnum\endcsname%
  1623. }
  1624. %
  1625. \global\setbox\endcolsavebotinsert=\vbox{%
  1626. %% drop figures and tables into this box
  1627. \global\loopnum=0
  1628. \redefiningtrue
  1629. \loop\ifnum\loopnum<\figandtabnumber
  1630. \csname botfloat\the\loopnum\endcsname
  1631. \global\advance\loopnum by1\repeat
  1632. \csname botfloat\the\loopnum\endcsname}
  1633. %
  1634. \global\setbox\dblbotins=\vbox{%
  1635. \hsize=\textwidth
  1636. \linewidth=\textwidth
  1637. \captionwidth=\widecaptionwidth
  1638. \unvbox\dblbotins %% avoid eradicating this if it has anything in it
  1639. % Write dblspan bottom figures and tables into this box
  1640. \redefiningtrue
  1641. \global\dblloopnum=0
  1642. \loop\ifnum\dblloopnum<\dblfigandtabnumber %%
  1643. \csname dblbotfloat\the\dblloopnum\endcsname
  1644. \global\advance\dblloopnum by1\repeat
  1645. \csname dblbotfloat\the\dblloopnum\endcsname}%
  1646. }%% end of setboxes and redefine
  1647. \def\settwocolboxes{%
  1648. \global\setbox\dbltopins=\vbox{%
  1649. \hsize=\textwidth
  1650. \linewidth=\textwidth
  1651. \captionwidth=\widecaptionwidth
  1652. \unvbox\dbltopins
  1653. % Write dblspan bottom figures and tables into this box
  1654. \redefiningtrue %
  1655. \global\dblloopnum=0
  1656. \loop\ifnum\dblloopnum<\dblfigandtabnumber
  1657. \csname dbltopfloat\the\dblloopnum\endcsname
  1658. \global\advance\dblloopnum by1\repeat
  1659. \csname dbltopfloat\the\dblloopnum\endcsname%
  1660. %
  1661. %\global\setbox\dblbotins=\vbox
  1662. \hsize=\textwidth
  1663. \linewidth=\textwidth
  1664. \captionwidth=\widecaptionwidth
  1665. \unvbox\dblbotins %% avoid eradicating this if it has anything in it
  1666. % Write dblspan bottom figures and tables into this box
  1667. \redefiningtrue
  1668. \global\dblloopnum=0
  1669. \loop\ifnum\dblloopnum<\dblfigandtabnumber %%
  1670. \csname dblbotfloat\the\dblloopnum\endcsname
  1671. \global\advance\dblloopnum by1\repeat
  1672. \csname dblbotfloat\the\dblloopnum\endcsname%
  1673. \vskip\intextfloatskip%% new++
  1674. }}
  1675. \def\setonecolboxesandredefine{%
  1676. \global\setbox\endcolsavetopinsert=\vbox{%
  1677. %% dropping figures and tables into this box
  1678. \loopnum=0
  1679. \redefiningtrue
  1680. \loop\ifnum\loopnum<\figandtabnumber
  1681. \csname topfloat\the\loopnum\endcsname
  1682. \expandafter\ifx\csname topfloat\the\loopnum\endcsname\relax\else
  1683. \vskip12pt\goodbreak\fi
  1684. \global\advance\loopnum by1\repeat
  1685. \csname topfloat\the\loopnum\endcsname%
  1686. }
  1687. %
  1688. \global\setbox\endcolsavebotinsert=\vbox{%
  1689. %% drop figures and tables into this box
  1690. \global\loopnum=0
  1691. \redefiningtrue
  1692. \loop\ifnum\loopnum<\figandtabnumber
  1693. \csname botfloat\the\loopnum\endcsname
  1694. % we don't want a space here because it is at the bottom of a column:
  1695. %\expandafter\ifx\csname botfloat\the\loopnum\endcsname\relax\else
  1696. %\vskip12pt\goodbreak\fi
  1697. \global\advance\loopnum by1\repeat
  1698. \csname botfloat\the\loopnum\endcsname%
  1699. }
  1700. %
  1701. }%% end of setonecol boxes and redefine
  1702. \newbox\partialpage
  1703. \def\process@cols#1#2{\count@#1\relax
  1704. \loop #2%
  1705. \advance\count@\tw@
  1706. \ifnum\count@<4
  1707. \repeat}
  1708. %%% Version for balanced column output.
  1709. %% this version to get topskip right on balanced page at end of article.
  1710. \def\Bpage@sofar{
  1711. \unvbox\partialpage
  1712. %% major kludge! but it works ==>>
  1713. \null
  1714. \vskip-\topskip
  1715. \vskip-12pt
  1716. %% <<==
  1717. \process@cols\z@{\wd\count@\hsize}%
  1718. \hbox to\textwidth{%
  1719. \process@cols\tw@{\box\count@
  1720. \hss\vrule\@width\columnseprule\hss}%
  1721. \box\z@}}
  1722. %%% AH: Version for two column output. %%
  1723. \def\page@sofar{\unvbox\partialpage
  1724. \wd\firstcolbox\hsize
  1725. \wd\secondcolbox\hsize
  1726. \hbox to\textwidth{%
  1727. \box\firstcolbox
  1728. \hss\vrule\@width\columnseprule\hss
  1729. \box\secondcolbox}%%
  1730. }
  1731. %% Variant on \@outputpage to use for floating page insert:
  1732. \def\insertpage{\begingroup\catcode`\ =10
  1733. \let\-\@dischyph \let\'\@acci \let\`\@accii \let\=\@acciii
  1734. \if@twoside
  1735. \ifodd\count\z@ \let\@thehead\@oddhead \let\@thefoot\@oddfoot
  1736. \let\@themargin\oddsidemargin
  1737. \else \let\@thehead\@evenhead
  1738. \let\@thefoot\@evenfoot \let\@themargin\evensidemargin
  1739. \fi\fi
  1740. \shipout
  1741. \vbox{\normalsize \baselineskip\z@ \lineskip\z@
  1742. \let\par\@@par %%
  1743. \vskip \topmargin \moveright\@themargin
  1744. \vbox{\setbox\@tempboxa
  1745. \vbox to\headheight{\vfil \hbox to\textwidth
  1746. {\let\label\@gobble \let\index\@gobble
  1747. \@thehead}} %%
  1748. \dp\@tempboxa\z@
  1749. \box\@tempboxa
  1750. \vskip \headsep
  1751. %% change from \@outputpage below
  1752. \vbox to\textheight{\vfil
  1753. \hsize=\textwidth
  1754. \linewidth=\textwidth
  1755. \csname pagefloat\the\pageloopnum \endcsname
  1756. }
  1757. \baselineskip\footskip
  1758. \hbox to\textwidth{\let\label\@gobble
  1759. \let\index\@gobble %%
  1760. \@thefoot}}}\global\@colht\textheight
  1761. \endgroup\stepcounter{page}\let\firstmark\botmark
  1762. \global\advance\pageloopnum by1
  1763. \expandafter\ifx\csname pagefloat\the\pageloopnum\endcsname\relax\else%
  1764. \insertpage\fi%
  1765. }
  1766. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1767. \def\balance@columns{% can't throw in figs here because we
  1768. % aren't doing eject, so they will be lost
  1769. \ifdim\ht\dbltopins>1pt
  1770. \advance\@colroom-\ht\dbltopins
  1771. \advance\@colroom-\dp\dbltopins
  1772. \advance\@colroom-\baselineskip
  1773. \fi
  1774. \ifdim\ht\dblbotins>1pt
  1775. \advance\@colroom-\ht\dblbotins
  1776. \advance\@colroom-\dp\dblbotins
  1777. \fi
  1778. \setbox\z@\vbox{\unvbox\@cclv}
  1779. \dimen@\ht\z@
  1780. %\advance\dimen@\dp\z@
  1781. \advance\dimen@ 2\topskip
  1782. \advance\dimen@-2\baselineskip %% ?? was 2\baselineskip, 4 gives better
  1783. %topskip
  1784. \divide\dimen@2%
  1785. %
  1786. {\vbadness\@M
  1787. \splittopskip=\topskip
  1788. \loop{\process@cols\@ne{\global\setbox\count@
  1789. \box\voidb@x}}%
  1790. \global\setbox\@ne\copy\z@
  1791. {\process@cols\thr@@{\global\setbox\count@
  1792. \vsplit\@ne to\dimen@}}%
  1793. \ifdim\ht\@ne >\ht\thr@@
  1794. \global\advance\dimen@\p@
  1795. \repeat}
  1796. %
  1797. \dimen@\ht\thr@@
  1798. \process@cols\z@{\@tempcnta\count@
  1799. \advance\@tempcnta\@ne
  1800. \setbox\count@\vtop to\dimen@ %%
  1801. {\unvbox\@tempcnta}}%
  1802. \global\vsize\@colroom
  1803. \global\advance\vsize\ht\partialpage
  1804. \Bpage@sofar}
  1805. \@ifundefined{emergencystretch}
  1806. {\newdimen\emergencystretch}{}
  1807. \emergencystretch 1pt
  1808. \def\setemergencystretch#1#2{%
  1809. \emergencystretch 4pt
  1810. \multiply\emergencystretch#1}
  1811. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  1812. %%% Figure and table captions in two column text and spanning both
  1813. %%% columns.
  1814. %%%%%%%%%%%%%%%%%%%%%%%%%
  1815. %% Single column inserts:
  1816. \let\savecaption\caption
  1817. \let\xsavecaption\savecaption
  1818. \def\onecolfig{\ifvmode\else\unskip\fi
  1819. \global\captypefigtrue
  1820. \global\captypeplatefalse
  1821. \@ifnextchar[\lookforposition{\lookforposition[e]}}
  1822. \def\onecolplate{\ifvmode\else\unskip\fi
  1823. \global\advance\c@plate -1\relax
  1824. \global\captypeplatetrue
  1825. \global\captypefigfalse
  1826. \@ifnextchar[\lookforposition{\lookforposition[e]}}
  1827. \def\onecoltable{\ifvmode\else\unskip\vskip1pt\fi\tabletextsize
  1828. \global\captypefigfalse
  1829. \global\captypeplatefalse
  1830. \@ifnextchar[\lookforposition{\lookforposition[e]}
  1831. }
  1832. %% This is used in case we get more than one letter, i.e.,
  1833. %% \begin{figure}[htp]. This macro picks up only the first letter.
  1834. \def\defone#1#2*{\def\one{#1}}
  1835. \newcount\figandtabnumber
  1836. \newbox\figandtabbox
  1837. \newif\ifcaptypefig
  1838. \newif\ifcaptypeplate
  1839. \long\def\catchcaption#1{%
  1840. \ifcaptypefig%
  1841. \expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
  1842. \def\@captype{figure}\savecaption{#1}}%
  1843. \else%
  1844. \ifcaptypeplate
  1845. \expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
  1846. \def\@captype{plate}\savecaption{#1}}%
  1847. \else
  1848. \expandafter\gdef\csname caption\the\figandtabnumber\endcsname{%
  1849. \def\@captype{table}\savecaption{#1}}%
  1850. \fi\fi}
  1851. \long\def\dblcatchcaption#1{%
  1852. \ifcaptypefig%
  1853. \expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
  1854. \def\@captype{figure}\savecaption{#1}}%
  1855. \else%
  1856. \ifcaptypeplate
  1857. \expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
  1858. \def\@captype{plate}\savecaption{#1}}%
  1859. \else
  1860. \expandafter\gdef\csname dblcaption\the\dblfigandtabnumber\endcsname{%
  1861. \def\@captype{table}\savecaption{#1}}%
  1862. \fi\fi}
  1863. \long\def\pcatchcaption#1{%
  1864. \ifcaptypefig%
  1865. \expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
  1866. \def\@captype{figure}\savecaption{#1}}%
  1867. \else%
  1868. \ifcaptypeplate
  1869. \expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
  1870. \def\@captype{plate}\savecaption{#1}}%
  1871. \else
  1872. \expandafter\gdef\csname pcaption\the\pagefloatnumber\endcsname{%
  1873. \def\@captype{table}\savecaption{#1}}%
  1874. \fi\fi}
  1875. %%%
  1876. \long\def\catchletteredcaption#1#2{%
  1877. \ifcaptypefig%
  1878. \expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
  1879. \def\@captype{figure}\letteredcaption{#1}{#2}}%
  1880. \else%
  1881. \ifcaptypeplate
  1882. \expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
  1883. \def\@captype{plate}\letteredcaption{#1}{#2}}%
  1884. \else
  1885. \expandafter\gdef\csname letteredcaption\the\figandtabnumber\endcsname{%
  1886. \def\@captype{table}\letteredcaption{#1}{#2}}%
  1887. \fi\fi}
  1888. \long\def\dblcatchletteredcaption#1#2{%
  1889. \ifcaptypefig%
  1890. \expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
  1891. \def\@captype{figure}%
  1892. \letteredcaption{#1}{#2}}%
  1893. \else%
  1894. \ifcaptypeplate
  1895. \expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
  1896. \def\@captype{plate}%
  1897. \letteredcaption{#1}{#2}}%
  1898. \else
  1899. \expandafter\gdef\csname dblletteredcaption\the\dblfigandtabnumber\endcsname{%
  1900. \def\@captype{table}%
  1901. \letteredcaption{#1}{#2}}%
  1902. \fi\fi}
  1903. \long\def\pcatchletteredcaption#1#2{%
  1904. \ifcaptypefig%
  1905. \expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
  1906. \def\@captype{figure}%
  1907. \letteredcaption{#1}{#2}}%
  1908. \else%
  1909. \ifcaptypeplate%
  1910. \expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
  1911. \def\@captype{plate}%
  1912. \letteredcaption{#1}{#2}}%
  1913. \else
  1914. \expandafter\gdef\csname pletteredcaption\the\pagefloatnumber\endcsname{%
  1915. \def\@captype{table}%
  1916. \letteredcaption{#1}{#2}}%
  1917. \fi\fi}
  1918. %%%
  1919. \long\def\catchcontinuedcaption{%
  1920. \ifcaptypefig%
  1921. \expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
  1922. \def\@captype{figure}\continuedcaption}%
  1923. \else%
  1924. \ifcaptypeplate
  1925. \expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
  1926. \def\@captype{plate}\continuedcaption}%
  1927. \else
  1928. \expandafter\gdef\csname continuedcaption\the\figandtabnumber\endcsname{%
  1929. \def\@captype{table}\continuedcaption}%
  1930. \fi\fi}
  1931. \long\def\dblcatchcontinuedcaption{%
  1932. \ifcaptypefig%
  1933. \expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
  1934. \def\@captype{figure}\continuedcaption}%
  1935. \else%
  1936. \ifcaptypeplate
  1937. \expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
  1938. \def\@captype{plate}\continuedcaption}%
  1939. \else
  1940. \expandafter\gdef\csname dblcontinuedcaption\the\dblfigandtabnumber\endcsname{%
  1941. \def\@captype{table}\continuedcaption}%
  1942. \fi\fi}
  1943. \long\def\pcatchcontinuedcaption{%
  1944. \ifcaptypefig%
  1945. \expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
  1946. \def\@captype{figure}\continuedcaption}%
  1947. \else%
  1948. \ifcaptypeplate
  1949. \expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
  1950. \def\@captype{plate}\continuedcaption}%
  1951. \else
  1952. \expandafter\gdef\csname pcontinuedcaption\the\pagefloatnumber\endcsname{%
  1953. \def\@captype{table}\continuedcaption}%
  1954. \fi\fi}
  1955. %%%
  1956. \long\def\catchletteredcontinuedcaption#1{%
  1957. \ifcaptypefig%
  1958. \expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
  1959. \def\@captype{figure}\letteredcontinuedcaption{#1}}%
  1960. \else%
  1961. \ifcaptypeplate%
  1962. \expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
  1963. \def\@captype{plate}\letteredcontinuedcaption{#1}}%
  1964. \else
  1965. \expandafter\gdef\csname letteredcontcaption\the\figandtabnumber\endcsname{%
  1966. \def\@captype{table}\letteredcontinuedcaption{#1}}%
  1967. \fi\fi}
  1968. \long\def\dblcatchletteredcontinuedcaption#1{%
  1969. \ifcaptypefig%
  1970. \expandafter%
  1971. \gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
  1972. \def\@captype{figure}\letteredcontinuedcaption{#1}}%
  1973. \else%
  1974. \ifcaptypeplate
  1975. \expandafter%
  1976. \gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
  1977. \def\@captype{plate}\letteredcontinuedcaption{#1}}%
  1978. \else
  1979. \expandafter%
  1980. \gdef\csname dblletteredcontcaption\the\dblfigandtabnumber\endcsname{%
  1981. \def\@captype{table}\letteredcontinuedcaption{#1}}%
  1982. \fi\fi}
  1983. \long\def\pcatchletteredcontinuedcaption#1{%
  1984. \ifcaptypefig%
  1985. \expandafter%
  1986. \gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
  1987. \def\@captype{figure}\letteredcontinuedcaption{#1}}%
  1988. \else%
  1989. \ifcaptypeplate%
  1990. \expandafter%
  1991. \gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
  1992. \def\@captype{plate}\letteredcontinuedcaption{#1}}%
  1993. \else
  1994. \expandafter%
  1995. \gdef\csname pletteredcontcaption\the\pagefloatnumber\endcsname{%
  1996. \def\@captype{table}\letteredcontinuedcaption{#1}}%
  1997. \fi\fi}
  1998. %%%
  1999. \newcount\pagefloatnumber
  2000. \let\savelabel\label
  2001. \def\catchlabel#1{%
  2002. \expandafter\gdef\csname label\the\figandtabnumber\endcsname{\savelabel{#1}}}
  2003. \def\pcatchlabel#1{%
  2004. \expandafter\gdef\csname plabel\the\pagefloatnumber\endcsname{\savelabel{#1}}}
  2005. \def\dblcatchlabel#1{\expandafter%
  2006. \gdef\csname dbllabel\the\dblfigandtabnumber\endcsname{\savelabel{#1}}}
  2007. %%
  2008. \def\startonecolfloat{%
  2009. \expandafter\newbox\csname figandtabbox\the\figandtabnumber\endcsname%
  2010. \global\setbox\csname figandtabbox\the\figandtabnumber\endcsname=
  2011. \vbox\bgroup%
  2012. \ifcaptypefig\else
  2013. \ifcaptypeplate\def\@captype{plate}
  2014. \else
  2015. \def\@captype{table}\centering\tabletextsize\fi\fi%
  2016. \let\continuedcaption\catchcontinuedcaption
  2017. \let\letteredcaption\catchletteredcaption
  2018. \let\letteredcontinuedcaption\catchletteredcontinuedcaption
  2019. \let\caption\catchcaption
  2020. \let\label\catchlabel}
  2021. \def\xtopfloat{topfloat}
  2022. \def\xbotfloat{botfloat}
  2023. \newif\ifredefining
  2024. \newbox\sizeoffloat
  2025. \def\endonecolfloat{%
  2026. %\ifcaptypefig\else%
  2027. %\ifnobottomtabline\global\nobottomtablinefalse\vskip-6.5pt\else
  2028. %\vskip2pt
  2029. %\thetablelines\fi\fi%
  2030. %
  2031. \egroup%
  2032. \DonormalEndcol%
  2033. %% make room in column for this insert:
  2034. \setbox\sizeoffloat=\vbox{\let\unvbox\copy
  2035. \let\c@table\bogus
  2036. \let\c@figure\bogus
  2037. \redefiningfalse \loopnum=\figandtabnumber
  2038. \expandafter\csname \toporbotfloat\the\figandtabnumber\endcsname}%
  2039. %%
  2040. \expandafter\xdef\csname totalht\the\figandtabnumber\endcsname{%
  2041. \the\ht\sizeoffloat}% <=== use before \sizeoffloat is unboxed
  2042. \global\advance\figandtabnumber by1\relax}
  2043. \newcount\bogus
  2044. \def\DonormalEndcol{%
  2045. %% top float ==>
  2046. \ifx\toporbotfloat\xtopfloat%
  2047. %% figure ==>
  2048. \ifcaptypefig%
  2049. \expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
  2050. \vbox{\vskip\PushOneColTopFig%
  2051. \unvbox\csname figandtabbox\the\loopnum\endcsname%
  2052. \vskip\abovefigcaptionskip%
  2053. \csname caption\the\loopnum\endcsname%
  2054. \csname letteredcaption\the\loopnum\endcsname%
  2055. \csname continuedcaption\the\loopnum\endcsname%
  2056. \csname letteredcontcaption\the\loopnum\endcsname}%
  2057. \vskip\intextfloatskip%%
  2058. \vskip-4pt %% probably an artifact of topskip??
  2059. \ifredefining%
  2060. \csname label\the\loopnum\endcsname%
  2061. \expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}%
  2062. \else%
  2063. %% plate ==>
  2064. \ifcaptypeplate%
  2065. \expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
  2066. \vbox{\vskip\PushOneColTopFig%
  2067. \unvbox\csname figandtabbox\the\loopnum\endcsname
  2068. \vskip\abovefigcaptionskip
  2069. \csname caption\the\loopnum\endcsname
  2070. \csname letteredcaption\the\loopnum\endcsname
  2071. \csname continuedcaption\the\loopnum\endcsname
  2072. \csname letteredcontcaption\the\loopnum\endcsname}
  2073. \vskip\intextfloatskip %%
  2074. \vskip-4pt %% probably an artifact of topskip??
  2075. \ifredefining
  2076. \csname label\the\loopnum\endcsname
  2077. \expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}%
  2078. %
  2079. \else% table ==>
  2080. \expandafter\gdef\csname topfloat\the\figandtabnumber\endcsname{%
  2081. \vbox{\vskip\PushOneColTopTab %%
  2082. \csname caption\the\loopnum\endcsname
  2083. \csname letteredcaption\the\loopnum\endcsname
  2084. \csname continuedcaption\the\loopnum\endcsname
  2085. \csname letteredcontcaption\the\loopnum\endcsname
  2086. \vskip\captionskip
  2087. \unvbox\csname figandtabbox\the\loopnum\endcsname
  2088. }\vskip\intextfloatskip %% why don't we need this?
  2089. \vskip-10pt
  2090. \ifredefining
  2091. \csname label\the\loopnum\endcsname
  2092. \expandafter\gdef\csname topfloat\the\loopnum\endcsname{}\fi}
  2093. \fi\fi%
  2094. %
  2095. \else% bottom float
  2096. %
  2097. \ifcaptypefig
  2098. \expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
  2099. \vskip\intextfloatskip
  2100. \vbox{\unvbox\csname figandtabbox\the\loopnum\endcsname
  2101. \vskip\abovefigcaptionskip
  2102. \csname caption\the\loopnum\endcsname
  2103. \csname letteredcaption\the\loopnum\endcsname%
  2104. \csname continuedcaption\the\loopnum\endcsname%
  2105. \csname letteredcontcaption\the\loopnum\endcsname%
  2106. \vskip\PushOneColBotFig%%
  2107. }%
  2108. \ifredefining%
  2109. %\xdef\@currentlabel{\thefigure}%
  2110. \csname label\the\loopnum\endcsname
  2111. \expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
  2112. \else
  2113. \ifcaptypeplate
  2114. \expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
  2115. \vskip\intextfloatskip
  2116. \vbox{\unvbox\csname figandtabbox\the\loopnum\endcsname
  2117. \vskip\abovefigcaptionskip
  2118. \csname caption\the\loopnum\endcsname
  2119. \csname letteredcaption\the\loopnum\endcsname%
  2120. \csname continuedcaption\the\loopnum\endcsname%
  2121. \csname letteredcontcaption\the\loopnum\endcsname%
  2122. \vskip\PushOneColBotFig%%
  2123. }%
  2124. \ifredefining%
  2125. %\xdef\@currentlabel{\thefigure}%
  2126. \csname label\the\loopnum\endcsname
  2127. \expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
  2128. \else% TABLE
  2129. \expandafter\gdef\csname botfloat\the\figandtabnumber\endcsname{%
  2130. \vskip\intextfloatskip
  2131. \vbox{\csname caption\the\loopnum\endcsname
  2132. \csname letteredcaption\the\loopnum\endcsname
  2133. \csname continuedcaption\the\loopnum\endcsname
  2134. \csname letteredcontcaption\the\loopnum\endcsname%
  2135. \vskip.5\intextfloatskip
  2136. \unvbox\csname figandtabbox\the\loopnum\endcsname%
  2137. \vskip\PushOneColBotTab
  2138. }%
  2139. \ifredefining%
  2140. \csname label\the\loopnum\endcsname
  2141. \expandafter\gdef\csname botfloat\the\loopnum\endcsname{}\fi}%
  2142. \fi\fi\fi}
  2143. %
  2144. \def\startpagefloat{%
  2145. \expandafter\newbox\csname pagebox\the\pagefloatnumber\endcsname%
  2146. \global\setbox\csname pagebox\the\pagefloatnumber\endcsname=\vbox\bgroup%
  2147. \hsize=\textwidth%
  2148. \linewidth=\textwidth%
  2149. \captionwidth=\widecaptionwidth
  2150. \let\label\pcatchlabel\ifcaptypefig\else\centering\fi%
  2151. \let\caption\pcatchcaption \let\letteredcaption\pcatchletteredcaption
  2152. \let\continuedcaption\pcatchcontinuedcaption
  2153. \let\letteredcontinuedcaption\pcatchletteredcontinuedcaption
  2154. }
  2155. \def\endpagefloat{\egroup
  2156. \DoNormalPage
  2157. \global\advance\pagefloatnumber by1
  2158. }
  2159. \def\DoNormalPage{\ifcaptypefig
  2160. %
  2161. \expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
  2162. \vbox{\hsize=\textwidth
  2163. \linewidth=\textwidth
  2164. \twocolfigortabtrue
  2165. \captionwidth=\widecaptionwidth
  2166. \unvbox\csname pagebox\the\pageloopnum\endcsname
  2167. \vskip\captionskip
  2168. \csname pcaption\the\pageloopnum\endcsname
  2169. \csname pletteredcaption\the\pageloopnum\endcsname
  2170. \csname pcontinuedcaption\the\pageloopnum\endcsname
  2171. \csname pletteredcontcaption\the\pageloopnum\endcsname
  2172. } \vskip\intextfloatskip %%
  2173. \xdef\@currentlabel{\thefigure}%
  2174. \csname plabel\the\pageloopnum\endcsname
  2175. \expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}%
  2176. \else
  2177. \ifcaptypeplate
  2178. \expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
  2179. \vbox{\hsize=\textwidth
  2180. \linewidth=\textwidth
  2181. \twocolfigortabtrue
  2182. \captionwidth=\widecaptionwidth
  2183. \unvbox\csname pagebox\the\pageloopnum\endcsname
  2184. \vskip\captionskip
  2185. \csname pcaption\the\pageloopnum\endcsname
  2186. \csname pletteredcaption\the\pageloopnum\endcsname
  2187. \csname pcontinuedcaption\the\pageloopnum\endcsname
  2188. \csname pletteredcontcaption\the\pageloopnum\endcsname
  2189. } \vskip\intextfloatskip %%
  2190. \xdef\@currentlabel{\thefigure}%
  2191. \csname plabel\the\pageloopnum\endcsname
  2192. \expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}%
  2193. \else
  2194. \expandafter\gdef\csname pagefloat\the\pagefloatnumber\endcsname{%
  2195. \vbox{%%
  2196. \hsize=\textwidth
  2197. \linewidth=\textwidth
  2198. \iflandscapetable
  2199. \dimen0=\textheight
  2200. \advance\dimen0 by-\textwidth
  2201. \hsize=\textheight
  2202. \linewidth=\textheight\fi%
  2203. \csname pcaption\the\pageloopnum\endcsname
  2204. \csname pletteredcaption\the\pageloopnum\endcsname
  2205. \csname pcontinuedcaption\the\pageloopnum\endcsname
  2206. \csname pletteredcontcaption\the\pageloopnum\endcsname
  2207. \vskip\intextfloatskip
  2208. \unvbox\csname pagebox\the\pageloopnum\endcsname}
  2209. \vskip\intextfloatskip %%
  2210. \csname plabel\the\pageloopnum\endcsname
  2211. \expandafter\gdef\csname pagefloat\the\pageloopnum\endcsname{}}\fi\fi}
  2212. \newif\iffirstfighere
  2213. \global\firstfigheretrue
  2214. \newif\iffirsttabhere
  2215. \global\firsttabheretrue
  2216. \def\dofigmessage{\iffirstfighere\global\firstfigherefalse
  2217. \typeout{^^J
  2218. ========================================================================
  2219. ^^J
  2220. C A R E F U L !!!!!^^J
  2221. ^^J
  2222. You have used \string\begin{figure}[h]\space !^^J
  2223. If there are any figures that appear earlier on the page^^J
  2224. they may be numbered incorrectly.^^J
  2225. ^^J
  2226. Please check this and every other page on which you have used ^^J
  2227. \string\begin{figure}[h]\space !^^J
  2228. ^^J
  2229. ========================================================================
  2230. ^^J}
  2231. \else
  2232. \typeout{^^J^^J
  2233. C A R E F U L !! \string\begin{figure}[h] used on this page !^^J^^J}
  2234. \fi}
  2235. \def\dotabmessage{\iffirsttabhere\global\firsttabherefalse
  2236. \typeout{^^J
  2237. ========================================================================
  2238. ^^J
  2239. C A R E F U L !!!!!^^J
  2240. ^^J
  2241. You have used \string\begin{table}[h]\space !^^J
  2242. If there are any tables that appear earlier on the page^^J
  2243. they may be numbered incorrectly.^^J
  2244. ^^J
  2245. Please check this and every other page on which you have used ^^J
  2246. \string\begin{table}[h]\space !^^J
  2247. ^^J
  2248. ========================================================================
  2249. ^^J}
  2250. \else
  2251. \typeout{^^J^^J
  2252. C A R E F U L !! \string\begin{table}[h] used on this page !^^J^^J}
  2253. \fi}
  2254. \def\lookforposition[#1]{\defone#1*%
  2255. \let\go\startonecolfloat
  2256. \let\endtable\endonecolfloat
  2257. \let\endfigure\endonecolfloat
  2258. \let\endplate\endonecolfloat
  2259. \ifgalley
  2260. \if\one p \def\one{s}
  2261. \else
  2262. \def\one{i}\fi
  2263. %\else\ifappendon\def\one{h}\fi
  2264. \fi%
  2265. \ifjdraft
  2266. \expandafter\ifx\csname setkeys\endcsname\relax\else
  2267. \setkeys{Gin}{draft=false}\fi
  2268. \if\one p \def\one{s}
  2269. \else
  2270. \def\one{i}\fi
  2271. \else%\ifappendon\def\one{h}\fi
  2272. \fi%
  2273. \if\one h
  2274. \ifcaptypeplate\else
  2275. \ifcaptypefig
  2276. \dofigmessage
  2277. \else
  2278. \dotabmessage
  2279. \fi\fi%
  2280. \let\go\doonecolfighere
  2281. \let\endtable\endonecolfighere
  2282. \let\endfigure\endonecolfighere
  2283. \let\endplate\endonecolfighere
  2284. \else%
  2285. \if\one t%
  2286. \gdef\toporbotfloat{topfloat}%
  2287. \else%
  2288. \if\one b%
  2289. \gdef\toporbotfloat{botfloat}%
  2290. \else%
  2291. \if\one p%
  2292. \let\go\startpagefloat%
  2293. \let\endtable\endpagefloat%
  2294. \let\endfigure\endpagefloat%
  2295. \let\endplate\endpagefloat%
  2296. \else%
  2297. \if\one e% for either
  2298. \ifdim\pagetotal>.6\pagegoal%
  2299. \gdef\toporbotfloat{botfloat}%
  2300. \else%
  2301. \gdef\toporbotfloat{topfloat}%
  2302. \fi%
  2303. \else%
  2304. \if\one i% for galley mode
  2305. \let\go\dofiginsert%
  2306. \let\endtable\endfiginsert%
  2307. \let\endfigure\endfiginsert%
  2308. \let\endplate\endfiginsert%
  2309. \else%
  2310. \if\one s% for special galley mode, for [p]
  2311. \let\go\dodblfiginsert%
  2312. \let\endtable\endspfiginsert%
  2313. \let\endfigure\endspfiginsert%
  2314. \let\endplate\endspfiginsert%
  2315. \else%
  2316. \doerr%
  2317. \ifdim\pagetotal>.5\pagegoal%
  2318. \gdef\toporbotfloat{botfloat}%
  2319. \else%
  2320. \gdef\toporbotfloat{topfloat}%
  2321. \fi%
  2322. \fi\fi\fi\fi\fi\fi\fi\go}
  2323. \newinsert\figinsert
  2324. \skip\figinsert=0pt % space added when figinsert is used
  2325. \count\figinsert=0 % insert magnification factor (1 to 1)
  2326. \dimen\figinsert=\maxdimen % maximum space for figures
  2327. \def\dofiginsert{\setbox0=\vbox\bgroup
  2328. \ifcaptypefig\def\@captype{figure}\else
  2329. \ifcaptypeplate\def\@captype{plate}\else
  2330. \def\@captype{table}\centering\tabletextsize\fi\fi}
  2331. \def\endfiginsert{\egroup\insert\figinsert{\vskip24pt\vbox{\unvbox0}\vskip24pt}%
  2332. \ignorespaces}
  2333. \def\endspfiginsert{\egroup\insert\figinsert{\newpage\vbox to\textheight{\vss
  2334. \unvbox0}\newpage}%
  2335. \ignorespaces}
  2336. \def\dodblfiginsert{\setbox0=\vbox\bgroup
  2337. \captionwidth=\widecaptionwidth
  2338. \hsize=\textwidth
  2339. \linewidth=\textwidth
  2340. \ifcaptypefig\def\@captype{figure}\else
  2341. \ifcaptypeplate\def\@captype{plate}\else
  2342. \def\@captype{table}\centering\fi\fi
  2343. }
  2344. \def\enddblfiginsert{\egroup\insert\figinsert{\vskip24pt\vbox{\unvbox0}\vskip24pt}}
  2345. \long\def\saveherecaption#1{\gdef\thesavedcaption{\savecaption{#1}}}
  2346. \long\def\saveherecontinuedcaption{\gdef\thesavedcaption{\continuedcaption}}
  2347. \long\def\savehereletteredcaption#1#2{\gdef\thesavedcaption{%
  2348. \gdef\theletter{#1}\savecaption{#2}}}
  2349. \long\def\savehereletteredcontinuedcaption#1{\gdef\thesavedcaption{%
  2350. \letteredcontinuedcaption{#1}}}
  2351. \long\def\saveherelabel#1{\gdef\thesavedlabel{#1}}
  2352. \saveherelabel{\relax}
  2353. \def\thesavedcaption{\relax}
  2354. \newbox\herebox
  2355. %% either figure [h] or table [h]
  2356. \newif\ifhere
  2357. \def\doonecolfighere{\vskip1sp\bgroup%
  2358. \heretrue%
  2359. \ifcaptypefig\def\@captype{figure}\else%
  2360. \ifcaptypeplate\def\@captype{plate}\else%
  2361. \def\@captype{table}\centering\fi\fi%
  2362. \setbox\herebox\vbox\bgroup%
  2363. \let\label\saveherelabel%
  2364. \let\caption\saveherecaption%
  2365. \let\letteredcaption\savehereletteredcaption%
  2366. \let\continuedcaption\saveherecontinuedcaption%
  2367. \let\letteredcontinuedcaption\savehereletteredcontinuedcaption%
  2368. }
  2369. \def\xrelax{\relax}
  2370. \def\endonecolfighere{%
  2371. \egroup%
  2372. \vskip\intextfloatskip%
  2373. \vtop{\vskip-5.5pt
  2374. %\ifappendon
  2375. %\let\thefigure\appthefigure
  2376. %\let\thetable\appthetable
  2377. %\let\theplate\apptheplate
  2378. %\let\savecaption\appcaption
  2379. %\fi
  2380. %
  2381. \ifx\thesavedcaption\xrelax
  2382. \unvbox\herebox
  2383. \else
  2384. \ifcaptypefig
  2385. \unvbox\herebox
  2386. \thesavedcaption
  2387. \else
  2388. \ifcaptypeplate
  2389. \unvbox\herebox
  2390. \thesavedcaption
  2391. %
  2392. \else
  2393. %
  2394. \thesavedcaption
  2395. \unvbox\herebox
  2396. \fi
  2397. \fi\fi
  2398. %
  2399. \gdef\thesavedcaption{\relax}
  2400. \ifx\thesavedlabel\xrelax\else%
  2401. \ifcaptypefig\else\edef\@currentlabel{\thetable}\fi
  2402. \savelabel{\thesavedlabel}
  2403. \gdef\thesavedlabel{\relax}
  2404. \fi
  2405. \gdef\theletter{\relax}
  2406. }\vskip1sp
  2407. \egroup
  2408. \vskip\intextfloatskip
  2409. }
  2410. \newbox\endfigbox
  2411. \def\doerr{%
  2412. \typeout{\space\space\space\space\space\space\space\space\space}
  2413. \typeout{Sorry!
  2414. Your choices following \string\figure\space or \string\table\space^^J%
  2415. are only [h] for `here', [t] for `top', [b] for `bottom', or [p]
  2416. for `page'.^^J%
  2417. I have ignored the [\one] and inserted the figure or table at this
  2418. point^^J%
  2419. on the page. See documentation if you need more help.}
  2420. \typeout{\space\space\space\space\space\space\space\space\space}}
  2421. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2422. %%% Inserts spanning both columns:
  2423. \newbox\spanbox
  2424. \def\centertabular{\bgroup\centering\savetabular}
  2425. \def\endcentertabular{\saveendtabular\vskip1pt\egroup}
  2426. %%%
  2427. \newbox\dbltopins
  2428. \newbox\dblbotins
  2429. \newskip\dblbotskip
  2430. \dblbotskip=12pt plus 3pt
  2431. \def\twocolfig{\global\captypefigtrue
  2432. \global\captypeplatefalse
  2433. \def\@captype{figure}
  2434. \@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
  2435. \def\twocolplate{\global\captypeplatetrue
  2436. \global\captypefigfalse
  2437. \def\@captype{plate}
  2438. \@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
  2439. \def\twocoltable{\vskip1pt\tabletextsize
  2440. \global\captypefigfalse
  2441. \global\captypeplatefalse
  2442. \def\@captype{table}
  2443. \@ifnextchar[\twolookforposition{\twolookforposition[t]}}%
  2444. \newcount\dblfigandtabnumber
  2445. \dblfigandtabnumber=1
  2446. \newbox\dblfigandtabbox
  2447. \def\starttwocolfloat{\ifvmode\else\unskip\fi\expandafter%
  2448. \ifx\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname\relax%
  2449. \expandafter%
  2450. \newbox\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname%
  2451. \fi%
  2452. \global\setbox\csname dblfigandtabbox\the\dblfigandtabnumber\endcsname=
  2453. \vbox\bgroup\let\label\dblcatchlabel%
  2454. %
  2455. \ifcaptypefig\def\@captype{figure}\else%
  2456. \ifcaptypeplate\def\@captype{plate}\else%
  2457. \def\@captype{table}\centering\tabletextsize%
  2458. \fi%
  2459. \fi%
  2460. \captionwidth=\widecaptionwidth
  2461. \hsize=\textwidth
  2462. \linewidth=\textwidth\relax
  2463. %
  2464. \let\caption\dblcatchcaption
  2465. \let\letteredcaption\dblcatchletteredcaption
  2466. \let\continuedcaption\dblcatchcontinuedcaption
  2467. \let\letteredcontinuedcaption\dblcatchletteredcontinuedcaption
  2468. \let\label\dblcatchlabel
  2469. }
  2470. \newcount\dblloopnum
  2471. \newcount\savedblfigandtabnumber
  2472. %\newcount\savefigandtabnumber
  2473. \def\xdbltopfloat{dbltopfloat}
  2474. \def\xdblbotfloat{dblbotfloat}
  2475. \def\endtwocolfloat{%
  2476. %\ifcaptypefig\else%
  2477. %\ifcaptypeplate\else%
  2478. %\ifnobottomtabline\global\nobottomtablinefalse\vskip-6.5pt\else%
  2479. %\vskip2pt
  2480. %\thetablelines\fi\fi\fi%
  2481. %
  2482. \egroup%
  2483. \ifx\dbltoporbotfloat\xdbltopfloat%
  2484. %%++
  2485. \ifcaptypefig%
  2486. \expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
  2487. \vbox{\vskip\PushTwoColTopFig%
  2488. \copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
  2489. \vskip\captionskip%
  2490. \csname dblcaption\the\dblloopnum\endcsname%
  2491. \csname dblletteredcaption\the\dblloopnum\endcsname%
  2492. \csname dblcontinuedcaption\the\dblloopnum\endcsname%
  2493. \csname dblletteredcontcaption\the\dblloopnum\endcsname%
  2494. \ifredefining%
  2495. \xdef\@currentlabel{\thefigure}%
  2496. \csname dbllabel\the\dblloopnum\endcsname\fi}%
  2497. \vskip\intextfloatskip %%
  2498. \vskip-5pt% because there is a space above the top of text, from topskip?
  2499. \ifredefining%
  2500. \expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
  2501. \else\ifcaptypeplate%
  2502. \expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
  2503. \vbox{\vskip\PushTwoColTopFig%
  2504. \copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
  2505. \vskip\captionskip%
  2506. \csname dblcaption\the\dblloopnum\endcsname%
  2507. \csname dblletteredcaption\the\dblloopnum\endcsname%
  2508. \csname dblcontinuedcaption\the\dblloopnum\endcsname%
  2509. \csname dblletteredcontcaption\the\dblloopnum\endcsname%
  2510. \ifredefining%
  2511. \xdef\@currentlabel{\theplate}%
  2512. \csname dbllabel\the\dblloopnum\endcsname\fi}%
  2513. \vskip\intextfloatskip %%
  2514. \vskip-5pt% because there is a space above the top of text, from topskip?
  2515. \ifredefining%
  2516. \expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
  2517. \else% table
  2518. \expandafter\gdef\csname dbltopfloat\the\dblfigandtabnumber\endcsname{%
  2519. \vbox{\vskip\PushTwoColTopTab%
  2520. \csname dblcaption\the\dblloopnum\endcsname%
  2521. \csname dblletteredcaption\the\dblloopnum\endcsname%
  2522. \csname dblcontinuedcaption\the\dblloopnum\endcsname%
  2523. \csname dblletteredcontcaption\the\dblloopnum\endcsname%
  2524. \vskip\captionskip%
  2525. \copy\csname dblfigandtabbox\the\dblloopnum\endcsname}%
  2526. \vskip\intextfloatskip %%
  2527. \vskip-5pt% because there is a space above the top of text, from topskip?
  2528. \ifredefining%
  2529. \csname dbllabel\the\dblloopnum\endcsname%
  2530. \expandafter\gdef\csname dbltopfloat\the\dblloopnum\endcsname{}\fi}%
  2531. %
  2532. \fi\fi%
  2533. %
  2534. \else% bottom float
  2535. %
  2536. \ifcaptypefig%
  2537. \expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
  2538. \vskip\intextfloatskip%
  2539. \vbox{\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
  2540. \vskip\captionskip%
  2541. \csname dblcaption\the\dblloopnum\endcsname%
  2542. \csname dblletteredcaption\the\dblloopnum\endcsname%
  2543. \csname dblcontinuedcaption\the\dblloopnum\endcsname%
  2544. \csname dblletteredcontcaption\the\dblloopnum\endcsname%
  2545. \ifredefining%
  2546. \csname dbllabel\the\dblloopnum\endcsname\fi%
  2547. \vskip\PushTwoColBotFig}%???
  2548. \ifredefining%
  2549. \expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi}%
  2550. \else%
  2551. %%
  2552. \ifcaptypeplate%
  2553. \expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
  2554. \vskip\intextfloatskip%
  2555. \vbox{\copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
  2556. \vskip\captionskip%
  2557. \csname dblcaption\the\dblloopnum\endcsname%
  2558. \csname dblletteredcaption\the\dblloopnum\endcsname%
  2559. \csname dblcontinuedcaption\the\dblloopnum\endcsname%
  2560. \csname dblletteredcontcaption\the\dblloopnum\endcsname%
  2561. \ifredefining%
  2562. \csname dbllabel\the\dblloopnum\endcsname\fi%
  2563. \vskip\PushTwoColBotFig}%
  2564. \ifredefining%
  2565. \expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi
  2566. }%
  2567. \else% table
  2568. \expandafter\gdef\csname dblbotfloat\the\dblfigandtabnumber\endcsname{%
  2569. \vskip\intextfloatskip
  2570. \vbox{%
  2571. \csname dblcaption\the\dblloopnum\endcsname%
  2572. \csname dblletteredcaption\the\dblloopnum\endcsname%
  2573. \csname dblcontinuedcaption\the\dblloopnum\endcsname%
  2574. \csname dblletteredcontcaption\the\dblloopnum\endcsname%
  2575. \vskip\captionskip
  2576. \ifredefining%
  2577. \csname dbllabel\the\dblloopnum\endcsname\fi%
  2578. \copy\csname dblfigandtabbox\the\dblloopnum\endcsname%
  2579. \vskip\PushTwoColBotTab}%
  2580. \ifredefining%
  2581. \expandafter\gdef\csname dblbotfloat\the\dblloopnum\endcsname{}\fi}%
  2582. %
  2583. \fi\fi\fi%
  2584. %%
  2585. \global\advance\dblfigandtabnumber by1 \relax}
  2586. \newbox\dblspanherebox
  2587. \def\dodblfigurehere{\global\setbox\dblspanherebox=\vbox\bgroup
  2588. \let\label\saveherelabel
  2589. \ifcaptypefig\def\@captype{figure}\else
  2590. \ifcaptypeplate\def\@captype{plate}\else
  2591. \def\@captype{table}\centering\fi\fi
  2592. \vskip\intextfloatskip
  2593. \captionwidth=\widecaptionwidth
  2594. \hsize=\textwidth
  2595. \linewidth=\textwidth
  2596. \let\label\saveherelabel
  2597. \let\caption\saveherecaption
  2598. \let\letteredcaption\savehereletteredcaption
  2599. \let\continuedcaption\saveherecontinuedcaption
  2600. \let\letteredcontinuedcaption\savehereletteredcontinuedcaption}
  2601. \def\enddodblfigurehere{\vskip\intextfloatskip\egroup%
  2602. \aftergroup\endcolsneatly}
  2603. %%
  2604. \def\endcolsneatly{\ifdim\lastskip=2sp
  2605. \vskip-9.5pt\null\fi
  2606. \endtwocolumns
  2607. \vbox{\vskip\intextfloatskip
  2608. \captionwidth=\widecaptionwidth
  2609. \ifcaptypefig\def\@captype{figure}\else
  2610. \ifcaptypeplate\def\@captype{plate}\else
  2611. \def\@captype{table}\centering\fi\fi
  2612. %\ifappendon
  2613. %\let\thefigure\appthefigure
  2614. %\let\thetable\appthetable
  2615. %\let\theplate\apptheplate
  2616. %\let\savecaption\appcaption
  2617. %\fi
  2618. %
  2619. \ifx\thesavedcaption\xrelax
  2620. \unvbox\dblspanherebox
  2621. \vskip\intextfloatskip
  2622. \else
  2623. \ifcaptypefig
  2624. \unvbox\dblspanherebox
  2625. \thesavedcaption
  2626. \vskip\intextfloatskip
  2627. %
  2628. \else
  2629. \ifcaptypeplate
  2630. \unvbox\dblspanherebox
  2631. \thesavedcaption
  2632. \vskip\intextfloatskip
  2633. %
  2634. \else
  2635. \vskip\intextfloatskip
  2636. \thesavedcaption
  2637. \unvbox\dblspanherebox
  2638. \vskip\intextfloatskip
  2639. \fi
  2640. \fi\fi
  2641. %
  2642. \gdef\thesavedcaption{\relax}
  2643. \ifx\thesavedlabel\xrelax\else\savelabel{\thesavedlabel}
  2644. \gdef\thesavedlabel{\relax}\fi
  2645. \gdef\theletter{\relax}
  2646. \vskip\intextfloatskip}
  2647. \twocolumns\null
  2648. \vskip2sp}
  2649. \def\twolookforposition[#1]{\defone#1*%
  2650. \let\go\starttwocolfloat%
  2651. \ifgalley%
  2652. \if\one p \def\one{s}%
  2653. \else%
  2654. \def\one{i}%
  2655. \fi%
  2656. \fi%
  2657. \ifjdraft%
  2658. \expandafter\ifx\csname setkeys\endcsname\relax\else
  2659. \setkeys{Gin}{draft=false}\fi
  2660. \if\one p \def\one{s}%
  2661. \else%
  2662. \def\one{i}%
  2663. \fi%
  2664. \fi%
  2665. %\ifappendon\def\one{h}\fi%
  2666. %%
  2667. \if\one h%
  2668. \ifcaptypeplate%
  2669. \else%
  2670. \ifcaptypefig%
  2671. \dofigmessage%
  2672. \else%
  2673. \dotabmessage%
  2674. \fi%
  2675. \fi%
  2676. \ifgalley%
  2677. \gdef\dbltoporbotfloat{dbltopfloat}%
  2678. \else% not galley ==>
  2679. \let\go\dodblfigurehere%
  2680. \expandafter\gdef\csname endfigure*\endcsname{\enddodblfigurehere}%
  2681. \expandafter\gdef\csname endtable*\endcsname{\enddodblfigurehere}%
  2682. \expandafter\gdef\csname endplate*\endcsname{\enddodblfigurehere}%
  2683. \fi% end ifgalley
  2684. \else%
  2685. \if\one t%
  2686. \gdef\dbltoporbotfloat{dbltopfloat}%
  2687. \else%
  2688. \if\one b%
  2689. \gdef\dbltoporbotfloat{dblbotfloat}%
  2690. \else%
  2691. \if\one p%
  2692. \let\go\startpagefloat%
  2693. \expandafter\gdef\csname endfigure*\endcsname{\endpagefloat}
  2694. \expandafter\gdef\csname endtable*\endcsname{\endpagefloat}
  2695. \expandafter\gdef\csname endplate*\endcsname{\endpagefloat}
  2696. \else%
  2697. \if\one i% for galley mode
  2698. \let\go\dodblfiginsert%
  2699. \expandafter\gdef\csname endfigure*\endcsname{\enddblfiginsert}
  2700. \expandafter\gdef\csname endtable*\endcsname{\enddblfiginsert}
  2701. \expandafter\gdef\csname endplate*\endcsname{\enddblfiginsert}
  2702. \else%
  2703. \if\one s% for special galley mode, for [p]
  2704. \let\go\dodblfiginsert%
  2705. \expandafter\gdef\csname endfigure*\endcsname{\endspfiginsert}%
  2706. \expandafter\gdef\csname endtable*\endcsname{\endspfiginsert}
  2707. \expandafter\gdef\csname endplate*\endcsname{\endspfiginsert}
  2708. \else%
  2709. \doerr%
  2710. \fi%
  2711. \fi%
  2712. \fi%
  2713. \fi%
  2714. \fi%
  2715. \fi\go}%
  2716. \let\saveenddocument\enddocument
  2717. \def\enddocument{%
  2718. \ifdim\ht\dbltopins>0pt\vbox{\unvbox\dbltopins}\fi
  2719. \ifdim\ht\dblbotins>0pt\vbox{\unvbox\dblbotins}\fi
  2720. \ifnum\pagefloatnumber>\pageloopnum
  2721. \newpage
  2722. \insertpage{\hsize=\textwidth
  2723. \linewidth=\textwidth
  2724. \csname pagefloat\the\pageloopnum \endcsname}\fi%
  2725. \immediate\write\@auxout{\string\gdef\string\lastpage{\thepage}}
  2726. \saveenddocument}
  2727. \splittopskip=\topskip
  2728. \def~{\penalty\@M{ }}
  2729. \def\mathleftline{\vskip-\parskip
  2730. \hbox to\textwidth{\hrulefill\hskip.5\textwidth}\vskip-\abovedisplayskip}
  2731. \def\mathrightline{\hbox to\textwidth{\hskip.5\textwidth\hrulefill}\vskip18pt}
  2732. \let\topline\mathleftline
  2733. \let\botline\mathrightline
  2734. %% End Two Column Macros
  2735. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2736. \let\savefigure\figure
  2737. \let\saveendfigure\endfigure
  2738. %%%Packages installing
  2739. \RequirePackage{graphicx}
  2740. \RequirePackage{epstopdf}
  2741. \RequirePackage{amssymb}
  2742. \RequirePackage{amsfonts}
  2743. \RequirePackage{amsmath}
  2744. \RequirePackage[usenames]{xcolor}
  2745. \definecolor{signitext}{cmyk}{1,.45,0,.18}
  2746. \definecolor{signiback}{cmyk}{.15,.07,0,.03}
  2747. \gdef\significancetext#1{\gdef\@significancetext{#1}}
  2748. \let\@significancetext\@empty
  2749. \def\article{\twocolumns
  2750. \bgroup
  2751. \setlength{\fboxsep}{6pt}
  2752. \ifx \@significancetext\@empty
  2753. \renewcommand\thefootnote{}%
  2754. %\footnotetext{\vbox to 3.7cm{\significanceheadfont Reserved for Publication Footnotes\vfill}}%
  2755. \else
  2756. \renewcommand\thefootnote{}%
  2757. \footnotetext{\vbox{\fcolorbox{signitext}{signiback}{\parbox{232pt}{\par\vspace*{2pt}{\significanceheadfont \color{signitext}Significance}\par\vspace*{12pt}%
  2758. {\color{signitext}\significancefont\@significancetext}}}\par\vspace*{4.5pt}
  2759. {\vbox to 3.7cm{\significanceheadfont Reserved for Publication Footnotes\vfill}}}}
  2760. \fi
  2761. \egroup
  2762. }
  2763. \def\endarticle{\endtwocolumns\newpage
  2764. \expandafter\gdef\csname table*\endcsname{\@dblfloat{table}}
  2765. \expandafter\gdef\csname endtable*\endcsname{\end@dblfloat}
  2766. \expandafter\gdef\csname figure*\endcsname{\@dblfloat{figure}}
  2767. \expandafter\gdef\csname endfigure*\endcsname{\end@dblfloat}
  2768. \gdef\figure{\futurelet\next\lookforbrac}}
  2769. \def\lookforbrac{\if\next[
  2770. \let\go\figone\else \let\go\figtwo\fi\go}
  2771. \def\figone[#1]{\@float{figure}[#1]\hsize276pt}
  2772. \def\figtwo{\@float{figure}\hsize276pt}
  2773. \newif\ifjdraft
  2774. \newdimen\captionwidth
  2775. \newdimen\widecaptionwidth
  2776. \newif\ifgalley
  2777. \let\tabletextsize\normalsize
  2778. \def\inlinefrac#1#2{%
  2779. \mbox{\raisebox{.8mm}{%
  2780. $\textstyle #1$%
  2781. }
  2782. $\!\!\! / \!\!\!$
  2783. \raisebox{-.8mm}{$\textstyle #2$}}%
  2784. }
  2785. \newcount\tablenoteloopnum
  2786. \newcount\tablenotenum
  2787. \def\tablenote#1{\global\advance\tablenotenum by 1\relax
  2788. $^{\@fnsymbol{\the\tablenotenum}}$\expandafter\gdef\csname
  2789. tabnote\the\tablenotenum\endcsname{#1}}
  2790. \def\tablenotes{\tablenoteloopnum=\tablenotenum
  2791. \global\advance\tablenoteloopnum by 1
  2792. \tablenotenum=0
  2793. {\figtextfont
  2794. \leftskip=0pt \rightskip=\leftskip
  2795. \parfillskip=0pt plus 1 fil
  2796. \loop
  2797. \vskip2pt
  2798. \noindent
  2799. \global\advance\tablenotenum by 1
  2800. \ifnum\tablenotenum<\tablenoteloopnum
  2801. $^{\@fnsymbol{\the\tablenotenum}}$\csname
  2802. tabnote\the\tablenotenum\endcsname
  2803. \repeat}
  2804. }
  2805. %% convenient macros from author:
  2806. \def\o{\omega}
  2807. \def\pr{\partial}
  2808. \def\d{\delta}
  2809. \def\a{\alpha}
  2810. \def\p{\phi}
  2811. \def\dst{\displaystyle}
  2812. \def\chit{\tilde{\chi}}
  2813. \def\etat{\tilde{\eta}}
  2814. \def\fdb{\mathbb{R}/_{\dst{ \mathbb{Z}}}}
  2815. \def\fd{\mathbb{R}/_{\scriptstyle \mathbb{Z}}}
  2816. \def\f12{\frac{1}{2}}
  2817. \def\fr32{\frac{3}{2}}
  2818. \def\vs{\vspace{10pt}}
  2819. \def\vsm{\vspace{-10pt}}
  2820. \def\xb{\bar{x}}
  2821. \def\yb{\bar{y}}
  2822. \def\tb{\bar{t}}
  2823. \def\xt{\tilde{x}}
  2824. \def\yt{\tilde{y}}
  2825. \def\gtt{\tilde{g}}
  2826. \def\vptt{\tilde{\varphi}}
  2827. \def\htt{\tilde{h}}
  2828. \def\ktt{\tilde{k}}
  2829. \def\ub{\bar{u}}
  2830. \def\hb{\bar{h}}
  2831. \def\vep{\varepsilon}
  2832. \def\vs{\vspace{10pt}}
  2833. \def\be{\begin{equation}}
  2834. \def\ee{\end{equation}}
  2835. \newcommand{\mfrac}[2]{\frac{\displaystyle{#1}}{\displaystyle{#2}}}
  2836. \newtheorem{theorem}{Theorem}
  2837. \newtheorem{lemma}{Lemma}
  2838. \newtheorem{corollary}[theorem]{Corollary}
  2839. \newtheorem{proposition}[theorem]{Proposition}
  2840. \newtheorem{definition}{Def\,inition}
  2841. \newtheorem{claim}{Claim}
  2842. \newtheorem{conjecture}[theorem]{Conjecture}
  2843. \newtheorem{observation}[theorem]{Observation}
  2844. \newtheorem{problem}[theorem]{Problem}
  2845. \newtheorem{notation}[theorem]{Notation}
  2846. \newtheorem{alemma}{Lemma}
  2847. \newtheorem{remark}{Remark}
  2848. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2849. \def\acknowledgments{\vskip14pt\bgroup\footnotesize\baselineskip 8pt
  2850. \materialfont
  2851. \def\textit##1{{\materialitfont ##1}}
  2852. \def\it{\materialitfont}
  2853. \def\bf{\materialbffont}
  2854. \def\textbf##1{{\materialbffont ##1}}
  2855. \noindent{\bf ACKNOWLEDGMENTS.} \relax\ignorespaces}
  2856. \def\endacknowledgments{\vskip1sp\egroup}
  2857. %% Just in case author enters any of the below, it will still work correctly
  2858. \let\acknowledgment\acknowledgements
  2859. \let\endacknowledgment\endacknowledgments
  2860. \let\acknowledgement\acknowledgements
  2861. \let\endacknowledgement\endacknowledgments
  2862. \let\acknowledgements\acknowledgements
  2863. \let\endacknowledgements\endacknowledgments
  2864. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2865. %% April 25, 2006
  2866. \let\dospecialaccents\relax
  2867. \def\blackbox#1{}
  2868. % turn off side squares
  2869. \def\dosidesquare#1#2#3{}
  2870. \let\resetsidesquares\relax
  2871. \let\makesidesquares\relax
  2872. \newif\iffirsttime
  2873. \def\thanks#1{\footnotemark \protected@xdef \@thanks
  2874. {\@thanks \protect \footnotetext [\the \c@footnote ]{\hsize=247pt\relax #1}}}
  2875. %% Keywords
  2876. {\global\let\saveline|
  2877. \gdef\linewithspace{\hskip3pt$\saveline$\hskip6pt}
  2878. \catcode`|=\active
  2879. \gdef\keywords{\bgroup\catcode`|=\active\xkeywords}
  2880. \gdef\xkeywords#1{\vskip1sp\noindent{\let|=\linewithspace
  2881. \affilfont#1}\vskip11pt\egroup}
  2882. }
  2883. \def\abbreviations#1{\vskip1sp\noindent{\affilfont Abbreviations: #1}\vskip12pt}
  2884. %% Authors can change this dimension to move the
  2885. %% printed page up or down on the physical page. Making
  2886. %% the negative dimension larger will move it up on the
  2887. %% page, smaller will move it down.
  2888. \voffset-.75in
  2889. %%% Default copyright year
  2890. \copyrightyear{2007}
  2891. \def\conflictofinterest#1{{\let\@thefnmark\relax\@footnotetext{\vrule height8pt width0pt\relax\hsize=247pt
  2892. \relax\footnotesize\footnotefont #1\vrule depth 6pt width0pt}}}
  2893. \def\footcomment#1{{\let\@thefnmark\relax\@footnotetext{\vrule height8pt width0pt\relax\hsize=247pt\relax\footnotesize\footnotefont #1\vrule depth 6pt width0pt}}}
  2894. \def\track#1{\footcomment{#1}}
  2895. \url{www.pnas.org --- ---}
  2896. \issuedate{Issue Date}
  2897. \copyrightyear{2007}
  2898. \volume{Volume}
  2899. \issuenumber{Issue Number}
  2900. \setcounter{page}{2687}
  2901. \footlineauthor{Lu}
  2902. \long\def\@footnotetext#1{\insert\footins{%
  2903. \reset@font\footnotesize
  2904. \interlinepenalty\interfootnotelinepenalty
  2905. \splittopskip\footnotesep
  2906. \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
  2907. \hsize\columnwidth \@parboxrestore
  2908. \protected@edef\@currentlabel{%
  2909. \csname p@footnote\endcsname\@thefnmark
  2910. }%
  2911. \color@begingroup
  2912. \@makefntext{%
  2913. \rule\z@\footnotesep\ignorespaces\footnotefont
  2914. \hsize=247pt
  2915. #1\@finalstrut\strutbox}%
  2916. \color@endgroup}}%
  2917. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
  2918. %% Special Use Fonts
  2919. %%
  2920. %% Computer Modern font calls. These will be redefined
  2921. %% if PostScript fonts are used, \usepackage{pnastwof}
  2922. %% Times-Roman
  2923. \def\timesroman{cmr10 }
  2924. \def\timesbold{cmbx10 }
  2925. \def\timesitalic{cmti10 }
  2926. \def\timesbolditalic{cmbx10 }
  2927. %% Helvetica
  2928. \def\helvetica{cmss10 }
  2929. \def\helveticabold{cmssbx10 }
  2930. \def\helveticaboldoblique{cmssbx10 }
  2931. \def\helveticaoblique{cmssi10 }
  2932. \def\frutiger{cmss10 }
  2933. \def\frutigermed{cmss10 }
  2934. \def\frutigerbold{cmssbx10 }
  2935. \def\frutigerboldoblique{cmssi10 }
  2936. \def\frutigeroblique{cmssi10 }
  2937. \let\frutigerboldcondensed\helveticabold
  2938. %% Special Use Fonts ==>>
  2939. \font\footnotefont\helvetica at 6pt
  2940. \font\dropcapfont=\frutigerbold at 26pt
  2941. \font\sideboxfont= \helvetica at 6pt
  2942. %% Running feet
  2943. \font\footlinefont=\frutiger at6.5pt%7pt
  2944. \font\footlineit=\helveticaoblique at6.5pt%7pt
  2945. \font\foliofont=\frutigerbold at6.5pt%7pt
  2946. \font\titlefont=\frutigerboldcondensed at 22pt % 24pt baseline
  2947. \font\authorfont=\frutigerbold at 9pt % 11 pt baseline
  2948. \font\affilfont=\frutiger at 7pt % 8pt baseline
  2949. \font\copyrightfont=\frutiger at 6pt
  2950. \font\copyrighttextfont=\frutiger at 6pt
  2951. %% Abstract fonts
  2952. \font\xabstractfont=\frutigerbold at 8pt
  2953. \def\abstractfont{\sf\xabstractfont\dospecialaccents}
  2954. \font\abstractit=\helveticaboldoblique at 8pt
  2955. %% Section fonts
  2956. \font\sectionfont=\frutigerbold at 10pt
  2957. \font\subsectionfont=\frutigerbold at9pt
  2958. \font\significanceheadfont=\frutigerbold at 9pt
  2959. \font\significancefont=\frutigerbold at 8pt
  2960. %% Theorem fonts
  2961. \font\theoremfont=\frutigerbold at 8pt
  2962. %ok
  2963. %% Caption
  2964. \font\fignumfont=\frutigerbold at 9pt
  2965. \font\xfigtextfont=\frutiger at 7pt
  2966. \def\figtextfont{\small\dospecialaccents\xfigtextfont}
  2967. %% Table font
  2968. \font\tabletextfont=\frutiger at 9pt
  2969. \font\tabtextfont\frutigerbold at 9pt
  2970. \font\tabnumfont\frutigerbold at 9pt
  2971. %% Materials and Methods Fonts
  2972. \font\materialfont=\frutiger at 7pt
  2973. \font\materialbffont=\helveticabold at 7pt
  2974. \font\materialitfont=\helveticaboldoblique at 7pt
  2975. %% Bibliography fonts
  2976. \font\xbibfont=\frutigerbold at 6pt
  2977. \def\bibfont{\sf\xbibfont\dospecialaccents}
  2978. \font\bibitfont\helveticaboldoblique at 6pt
  2979. \font\bibbffont\helveticabold at 6pt
  2980. %% dec 4, 2006
  2981. \def\@tabular{\global\tablenotenum=0\relax
  2982. \leavevmode \hbox \bgroup $\let\@acol\@tabacol
  2983. \let\@classz\@tabclassz
  2984. \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
  2985. %% dec 4, 2006
  2986. \def\@tabular{\global\tablenotenum=0\relax
  2987. \leavevmode \hbox \bgroup $\let\@acol\@tabacol
  2988. \let\@classz\@tabclassz
  2989. \let\@classiv\@tabclassiv \let\\\@tabularcr\@tabarray}
  2990. %%%%%%% Jan 2008 Changes:
  2991. \def\materials{\vskip6pt\bgroup
  2992. \parskip=8pt
  2993. \baselineskip=9pt
  2994. \materialfont
  2995. \def\textit##1{{\materialitfont ##1}}
  2996. \def\it{\materialitfont}
  2997. \def\bf{\materialbffont}
  2998. \def\textbf##1{{\materialbffont ##1}}
  2999. \def\section##1{\noindent{\materialbffont ##1. }}
  3000. \def\subsection##1{\noindent{\materialbffont ##1. }}
  3001. \noindent {\subsectionfont Materials and Methods}\\[2pt]
  3002. }
  3003. \def\endmaterials{\vskip1sp\egroup}
  3004. \def\appendix{\originalappendix
  3005. \vskip12pt\noindent{\subsectionfont Appendix}\@ifnextchar[{\xappendix}{\yappendix}}
  3006. \def\xappendix[#1]{\subsectionfont:\hskip10pt\relax #1\vskip2pt
  3007. \normalsize\noindent\ignorespaces}
  3008. \def\yappendix{\vskip2pt\normalsize\noindent\ignorespaces}
  3009. \widowpenalty=10000
  3010. \clubpenalty=10000
  3011. \newbox\tablewide
  3012. \def\endtabular{\crcr\egroup\egroup $\egroup\egroup
  3013. \centerline{\vbox{\hsize\wd\tablewide
  3014. \currtabcaption\vskip1pt
  3015. }}
  3016. \dimen0=\wd\tablewide
  3017. \centerline{\hbox{\unhbox\tablewide}}
  3018. \centerline{\vtop{\hsize=\dimen0 \tablenotes}}
  3019. \global\let\currtabcaption\relax}
  3020. \expandafter \let \csname endtabular*\endcsname = \endtabular
  3021. \def\tabular{\global\setbox\tablewide\hbox\bgroup
  3022. \let\@halignto\@empty\@tabular}
  3023. \@namedef{tabular*}#1{%
  3024. \global\setbox\tablewide\hbox\bgroup
  3025. \setlength\dimen@{#1}%
  3026. \edef\@halignto{to\the\dimen@}\@tabular}
  3027. \newcommand\originalappendix{\par
  3028. \setcounter{section}{0}%
  3029. \setcounter{subsection}{0}%
  3030. \gdef\thesection{\@Alph\c@section}}
  3031. \let\currtabcaption\relax
  3032. \def\footcomment#1{\typeout{^^J^^J The \string\footcomment{}\space command is
  3033. No Longer Used^^J^^J}}
  3034. \def\track#1{\typeout{^^J^^J The \string\track{}\space command is
  3035. No Longer Used^^J^^J}}
  3036. \def\conflictofinterest#1{\typeout{^^J^^J The \string\conflictofinterest{}\space command is
  3037. No Longer Used^^J^^J}}
  3038. %% nothing will happen, so PNAS can get info, but nothing will be printed
  3039. \def\nothanks#1{}
  3040. \let\thanks\nothanks
  3041. % substitute for \footcomment:
  3042. \def\abbreviations#1{\vskip1sp\noindent{\affilfont Abbreviations: #1}
  3043. \vskip12pt}
  3044. \endinput
  3045. Change Log:
  3046. October 18, 2006
  3047. Changed the counter used in loop in maketitle to
  3048. fix bug that prevented all affiliations from being
  3049. listed; added $\saveline$ to make line work right
  3050. in keywords
  3051. dec 4, 2006: fixed bug in table notes, by
  3052. resetting tablenotenum every time tabular
  3053. is used
  3054. %\def\currversion{October 18, 2006}
  3055. %\def\currversion{July 10, 2006}
  3056. %\def\currversion{May 1, 2006}
  3057. %\def\currversion{August 27, 2004}