% Document sub-style threecolumn.sty May 23, 1989 % % Author: George D. Greenwade, Director, Center for Business and Economic % Research, Sam Houston State University, Huntsville, TX 77341-2056 % Voice: (409) 294-1518 Bitnet: BED_GDG@SHSU.BITNET % % Date of Release: May 23, 1989 (original version) % Revision History: % % Purpose: To create LaTeX output in three columns without corrupting the % general uses of LaTeX. This version is not suggested for use unless the % ENTIRE DOCUMENT is to be in a three column output with no multiple column % floats. % % Usage: Preamble: \documentstyle[...,threecolumn]{...} % In text: \threecolumn % % Features: Addition of \photo{height}{caption} to create an empty box of the % dimension \columnwidth wide and specified height (#1), with a caption below % set in the \sl font. Height MUST be specified, caption may be blank, but % must be left as a null entry (i.e., \photo{2in}{} for a 2-inch blank space). % \photo is placed on a minipage within a table[ht]. The caption is photo- % specific and does not step the table counter (as best as I can tell). % % Known Limitations (which would be nice ot fix): May 23, 1989 % (1) \threecolumn does NOT presently handle MULTIPLE COLUMN table and figure % floats properly, but does properly handle footnotes; however, there are % no apparent float handling problem in \twocolumn or \onecolumn. % (2) Switching from \onecolumn to \twocolumn and \onecolumn to \threecolumn % behave properly. Switching from \threecolumn to \twocolumn, % \threecolumn to \onecolumn, \twocolumn to \theeecolumn, and \twocolumn % to \onecolumn generates a blank (but numbered) page. As a rule, % \twocolumn presents strange output results in this sub-style. % (3) \maketitle is inoperable in \threecolumn. % % Copyright (c) 1989 by George D. Greenwade % Permission to copy all or part of this work is granted, provided that the % copies are not made or distributed for resale, and that the copyright notice % and this notice are retained. % % THIS WORK IS PROVIDED ON AN "AS IS" BASIS. THE AUTHOR PROVIDES NO WARRANTY % WHATSOEVER, EITHER EXPRESS OR IMPLIED, REGARDING THE WORK, INCLUDING % WARRANTIES WITH RESPECT TO ITS MERCHANTABILITY OR FITNESS FOR ANY PARTICULAR % PURPOSE. % % Please forward all fixes and improvements which do not otherwise corrupt the % operation of the LaTeX document processing program to the author. \typeout{Document Style Option 'threecolumn'. Released 23 May 1989} \hoffset -.4in % Generalized page layout for three column \voffset -.3in % output. Certainly, these are subject to \columnsep 15pt % customization, but these definitions seem to \textwidth 7.2in % provide efficient default margins. \textheight 9.5in % \topmargin 0pt % \headsep 0pt % \headheight 0pt % \oddsidemargin 0pt % \pretolerance=500 % Needed pretolerance and tolerance to assure \tolerance=10000 % text generally fits the columns \doublehyphendemerits=100000 % Inhibit consecutive line hyphens \brokenpenalty=10000 % Inhibit broken words across columns/pages \widowpenalty=10000 % Inhibit widows at bottom of page \clubpenalty=10000 % Inhibit orphans at top of page \newif\if@threecolumn \@threecolumnfalse % New ifs used in routine \newif\if@secondcolumn \@secondcolumnfalse % \newif\if@thirdcolumn \@thirdcolumnfalse % \newbox\@centercolumn % New box to place center column \newdimen\photoblock \photoblock=0pt % New dimension used in \photo \def\onecolumn{\clearpage % Redefine \onecolumn without corruption \global\columnwidth\textwidth \global\hsize\columnwidth \global\linewidth\columnwidth \global\@twocolumnfalse \global\@threecolumnfalse \global\@secondcolumnfalse \global\@thirdcolumnfalse \@floatplacement} \def\twocolumn{\clearpage % Redefine \twocolumn without corruption \global\columnwidth\textwidth \global\advance\columnwidth -\columnsep \global\divide\columnwidth\tw@ \global\hsize\columnwidth \global\linewidth\columnwidth \global\@twocolumntrue \global\@threecolumnfalse \global\@firstcolumntrue \global\@secondcolumnfalse \global\@thirdcolumnfalse \@dblfloatplacement\@ifnextchar[{\@topnewpage}{}} \def\threecolumn{\clearpage % Define \threeecolumn (very rough; \global\columnwidth\textwidth % handles floats poorly, if at all) \global\advance\columnwidth -\columnsep \global\advance\columnwidth -\columnsep \global\divide\columnwidth\thr@@ \global\hsize\columnwidth \global\linewidth\columnwidth \global\@twocolumnfalse \global\@threecolumntrue \global\@firstcolumntrue \global\@secondcolumnfalse \global\@thirdcolumnfalse \@dblfloatplacement\@ifnextchar[{\@topnewpage}{}} \def\@doclearpagethree{\ifvoid\footins % Define variation of \@doclearpage \setbox\@tempboxa\vsplit\@cclv to\z@ \unvbox\@tempboxa %WAS \setbox\@tempboxa\box\@ccl \setbox\@tempboxa\box\@cclv \xdef\@deferlist{\@toplist\@botlist \@deferlist}\gdef\@toplist{}\gdef\@botlist{}\global\@colroom\@colht \ifx\@currlist \@empty\else\@latexerr{Float(s) lost}\@ehb\gdef\@currlist{}\fi \@makefcolumn\@deferlist \@whilesw\if@fcolmade \fi{\@opcol \@makefcolumn\@deferlist}\if@threecolumn \if@firstcolumn \xdef\@dbldeferlist{\@dbltoplist \@dbldeferlist}\gdef\@dbltoplist{}\global\@colht\textheight \begingroup \@dblfloatplacement \@makefcolumn\@dbldeferlist \@whilesw\if@fcolmade \fi \endgroup \if@secondcolumn {\@outputpage\@makefcolumn\@dbldeferlist} \fi \endgroup \else \vbox{}\clearpage \fi\fi \else\setbox\@cclv\vbox{\box\@cclv\vfil}\@makecol\@opcol \clearpage \fi} \def\@specialoutput{\ifnum\outputpenalty > -\@Mii % Redefine \@specialoutput \if@threecolumn \@doclearpagethree % to handle \threecolumn \else \@doclearpage \fi % environment. \else \ifnum \outputpenalty <-\@Miii \ifnum\outputpenalty<-\@MM \deadcycles\z@\fi \global\setbox\@holdpg\vbox{\unvbox\@cclv} %WAS: \else \setbox\@tempboxa\box\@ccl \else \setbox\@tempboxa\box\@cclv \@pagedp\dp\@holdpg \@pageht\ht\@holdpg \unvbox\@holdpg \ifvoid\footins\else\advance\@pageht\ht\footins \advance\@pageht\skip\footins \advance\@pagedp\dp\footins \insert\footins{\unvbox\footins}\fi \@next\@currbox\@currlist{\ifnum\count\@currbox >\z@ \@addtocurcol\else\@addmarginpar\fi}\@latexbug \ifnum \outputpenalty <\z@ \penalty \z@ \fi \fi\fi} \def\@opcol{\global\@mparbottom\z@ % Redefine \@opcol to handle \threecolumn \if@twocolumn\@outputdblcol \fi % environment without corruption \if@threecolumn\@outputtplcol\else \@outputpage \global\@colht\textheight \fi} \def\@skipcolumn{\if@firstcolumn % Tentatively define \@skipcolumn (for future \global\@firstcolumnfalse % use in two-column-wide material in the \global\@secondcolumnfalse % \threecolumn environment) NOT EMPLOYED! \global\@thirdcolumntrue \fi \if@secondcolumn \global\@firstcolumntrue \global\@secondcolumnfalse \global\@thirdcolumnfalse \fi} \def\@outputtplcol{\if@firstcolumn % Define \@outputtplcol (analogous to \global\@firstcolumnfalse % \@outputdblcol, but for \threecolumn) \global\@secondcolumntrue \global\@thirdcolumnfalse \global\setbox\@leftcolumn\box\@outputbox \else \if@secondcolumn \global\@secondcolumnfalse \global\@thirdcolumntrue \global\setbox\@centercolumn\box\@outputbox \else \global\@thirdcolumnfalse \global\@firstcolumntrue \setbox\@outputbox\vbox{\hbox to\textwidth{\hbox to\columnwidth {\box\@leftcolumn \hss}\hfil \vrule width\columnseprule\hfil \hbox to\columnwidth {\hss \box\@centercolumn \hss}\hfil \vrule width\columnseprule\hfil \hbox to\columnwidth{\box\@outputbox \hss}}}\@combinedblfloats \@outputpage \begingroup \@dblfloatplacement \@startdblcolumn \@whilesw\if@fcolmade \fi{\@outputpage\@startdblcolumn}\endgroup \fi \fi} \def\photoblocksize{\global\photoblock=\columnwidth % Define width of the \advance \photoblock -\columnsep % photo block \if@threecolumn \advance \photoblock -\columnsep \fi} \def\photo#1#2{\photoblocksize % Define \photo{height}{caption} as floating \begin{table}[ht] % blank space for photo insertions to be used \begin{minipage}{\photoblock} % in final paste-up. \rule{0pt}{#1} \\ % #1 is height \end{minipage} % width defaults to column width \begin{center} {\sl \ #2} % #2 is caption set in the \sl font face \end{center} \end{table}}