Paper/document/acmconf.cls
changeset 1493 52f68b524fd2
child 1556 a7072d498723
equal deleted inserted replaced
1492:4908db645f98 1493:52f68b524fd2
       
     1 % ACMCONF DOCUMENT CLASS
       
     2 %    adapted from ARTICLE document style by Ken Traub
       
     3 %    Hacked for [preprint] option by Olin Shivers 4/91
       
     4 %    Fixed up for LaTeX version 2e [compatibility mode] by Peter Lee 10/9
       
     5 %       (with help from Simon Peyton Jones)
       
     6 %    Converted to a LaTeX2e document class by David A. Berson 11/94
       
     7 %
       
     8 % ARTICLE DOCUMENT STYLE -- Released 16 March 1988
       
     9 %    for LaTeX version 2.09
       
    10 % Copyright (C) 1988 by Leslie Lamport
       
    11 
       
    12 % To do:
       
    13 %  - Possibly move the commands related to 9pt size to a file size9.clo
       
    14 %    and write the stuff to unpack both acmconf.cls and size9.clo files
       
    15 %    from a single distribution file.
       
    16 
       
    17 %%% ACMCONF is a document class for producing two-column camera-ready pages for
       
    18 %%% ACM conferences, according to ACM specifications.  The main features of
       
    19 %%% this class are:
       
    20 %%%
       
    21 %%% 1)  Two columns.
       
    22 %%% 2)  Side and top margins of 4.5pc, bottom margin of 7.5pc, column gutter of
       
    23 %%%     2pc, hence columns are 20pc wide and 54pc tall.  (6pc = 1in, approx)
       
    24 %%% 3)  First page has title information, and an extra 4.5pc of space at the
       
    25 %%%     bottom of the first column for the ACM copyright notice. (You must
       
    26 %%%     use one of the commands \copyrightspace or \toappear{} to obtain this
       
    27 %%%     space.)
       
    28 %%% 4)  Text is 9pt on 10pt baselines; titles are 9pt bold sans-serif.
       
    29 %%%     (The acmconf.sty from which acmconf.cls was derived actually uses
       
    30 %%%     9pt bold roman for section titles.  Functionally, I have left this
       
    31 %%%     as is.  I have added a commented out alternate defination of
       
    32 %%%     \acmtitlestyle that uses sans-serif)  --DAB
       
    33 %%%
       
    34 %%% This document class supports a [preprint] class option that allows you
       
    35 %%% to run off a copy for a preprint -- with page numbers, "to appear"
       
    36 %%% information, and so forth. This is documented below.
       
    37 
       
    38 %%% There are a few restrictions you must observe:
       
    39 %%%
       
    40 %%% 1)  You cannot change the font size; ACM wants you to use 9pt.
       
    41 %%% 3)  You must start your paper with the \maketitle command.  Prior to the
       
    42 %%%     \maketitle you must have \title and \author commands.  If you have a
       
    43 %%%     \date command it will be ignored; no date appears on the paper, since
       
    44 %%%     the proceedings will have a date on the front cover.
       
    45 %%%     Optionally, you may have an \affiliation command with text, such
       
    46 %%%     as company or university name and address, that will be centered
       
    47 %%%     just below the author(s).
       
    48 %%% 4)  Marginal paragraphs, tables of contents, lists of figures and tables,
       
    49 %%%     and page headings are all forbidden.
       
    50 %%% 5)  The `figure' environment will produce a figure one column wide; if you
       
    51 %%%     want one that is two columns wide, use `figure*'.  Ditto for the
       
    52 %%%     `table' and `table*' environments.
       
    53 %%%
       
    54 %%% Page Headings:
       
    55 %%% Normally, \pagestyle commands are ignored --- pages have no headings or
       
    56 %%% numbers. ACM will number the pages for you when they are inserted into the
       
    57 %%% proceedings (you should put page numbers on the BACK of each page, though,
       
    58 %%% in case someone drops your paper on the floor).
       
    59 %%%
       
    60 %%% If the [preprint] option is present, then \pagestyle commands are obeyed,
       
    61 %%% and the default is \pagestyle{plain}. The [twoside] option is also
       
    62 %%% useful when using headers.
       
    63 %%%
       
    64 %%% The [draft] and [final] options as used in the article class are also
       
    65 %%% supported.
       
    66 %%%
       
    67 %%%
       
    68 %%% Copyright Space:
       
    69 %%% You leave space at the bottom of page 1/column 1 one with the
       
    70 %%% \copyrightspace command.  Alternatively, you can use the
       
    71 %%% \toappear{...} command.  Normally, this turns into an unnumbered
       
    72 %%% footnote 4.5pc high.  If [preprint] is on, then this space is
       
    73 %%% filled with the {...} text; otherwise, it's blank. You must put
       
    74 %%% one of these commands in the text of page 1/column 1 *after* all the
       
    75 %%% other footnotes that go on page1/column 1, of course.
       
    76 %%%
       
    77 %%% A typical usage looks like this:
       
    78 %%%     \toappear{To appear in the Ninth AES Conference on Midevil Lithuanian
       
    79 %%%               Embalming Technique, June 1991, Alfaretta, Georgia.
       
    80 %%%               Also available as Technical Report CMU-CS-91-119,
       
    81 %%%               Cranberry Melon School of Cucumber Science.}
       
    82 %%% This will be included in the preprint, and left out of the conference
       
    83 %%% version.
       
    84 %%%
       
    85 %%% Acmconf defines two useful conditionals.
       
    86 %%% - \ifacmconf{true-stuff}{false-stuff}
       
    87 %%%   expands to true-stuff.
       
    88 %%% - \ifpreprint true-stuff \else else-stuff \fi
       
    89 %%%   expands to true-stuff if the [preprint] option is being used,
       
    90 %%%   otherwise it expands to else-stuff.
       
    91 %%% \ifacmconf is a latex command; \ifpreprint is a real latex conditional.
       
    92 %%%
       
    93 %%% WARNING:
       
    94 %%% Some dvi-ps converters heuristically allow chars to drift from their
       
    95 %%% true positions a few pixels. This loses noticeably with the 9pt sans-serif
       
    96 %%% bold font used for section headers. You turn this hackery off in our
       
    97 %%% dvi-ps converters with the -e option:
       
    98 %%%     dvips -e 0 foo.dvi >foo.ps
       
    99 
       
   100 \NeedsTeXFormat{LaTeX2e}
       
   101 \ProvidesClass{acmconf}[1994/11/27 Alternative LaTeX document class]
       
   102 \typeout{Bugs to berson@cs.pitt.edu}
       
   103 
       
   104 %
       
   105 % Define the conditionals and command for the options.
       
   106 %
       
   107 \newif\if@acmconf\@acmconftrue
       
   108 \long\def\ifacmconf#1#2{\if@acmconf#1\else#2\fi}
       
   109 \newif\ifpreprint
       
   110 
       
   111 %
       
   112 % Declare and process the options
       
   113 %
       
   114 \DeclareOption{draft}{\PassOptionsToClass{draft}{article}}
       
   115 \DeclareOption{final}{\PassOptionsToClass{final}{article}}
       
   116 \DeclareOption{twocolumn}{\PassOptionsToClass{twocolumn}{article}}
       
   117 \DeclareOption{twoside}{\PassOptionsToClass{twoside}{article}}
       
   118 \DeclareOption{preprint}{\preprintfalse}
       
   119 %\DeclareOption{preprint}{\preprinttrue}
       
   120 %
       
   121 % Let them off with just a warning for any other option
       
   122 %
       
   123 \DeclareOption*{\ClassWarningNoLine{acmconf}{Unknown option `\CurrentOption'}}
       
   124 %\DeclareOption*{\ClassError{acmconf}
       
   125 %   {The `\CurrentOption' option is not supported}
       
   126 %   {Remove the `\CurrentOption' option from the
       
   127 %    \protect\documentclass\space line.}}
       
   128 
       
   129 \ExecuteOptions{twocolumn}
       
   130 \ProcessOptions
       
   131 
       
   132 %
       
   133 % This class simply modifies a few behaviors of the article class,
       
   134 % so load it now
       
   135 %
       
   136 \LoadClass{article}
       
   137 
       
   138 
       
   139 %**********************************************************************
       
   140 %
       
   141 % The following commands would normally be in a file such as
       
   142 % size9.clo for the article class.  Since the size isn't really an
       
   143 % option, I include them here.  I have followed the order of the commands
       
   144 % as found in size10.clo.
       
   145 %
       
   146 % I could test for the presence of % the file size9.clo and load it when
       
   147 % availale, instead of executing these commands.
       
   148 %
       
   149 
       
   150 %
       
   151 % Set the font sizes and spacing
       
   152 %
       
   153 \renewcommand\baselinestretch{1}
       
   154 
       
   155 \renewcommand\normalsize{%
       
   156    \@setfontsize\normalsize\@ixpt\@xpt 
       
   157    \abovedisplayskip 9\p@ \@plus2\p@ \@minus4.5\p@%
       
   158    \abovedisplayshortskip  \z@ \@plus3\p@%
       
   159    \belowdisplayshortskip  5.4\p@ \@plus3\p@ \@minus3\p@%
       
   160    \belowdisplayskip \abovedisplayskip
       
   161    \let\@listi\@listI}
       
   162 \normalsize
       
   163 \renewcommand\small{%
       
   164    \@setfontsize\small\@viiipt{9}%
       
   165    \abovedisplayskip 7.6\p@ \@plus 3\p@ \@minus 4\p@%
       
   166    \abovedisplayshortskip \z@ \@plus2\p@%
       
   167    \belowdisplayshortskip 3.6\p@ \@plus2\p@ \@minus 2\p@
       
   168    \def\@listi{\leftmargin\leftmargini
       
   169                 \topsep 4\p@ \@plus 2\p@ \@minus 2\p@
       
   170                 \parsep 2\p@ \@plus 1\p@ \@minus 1\p@
       
   171                 \itemsep \parsep}
       
   172    \belowdisplayskip \abovedisplayskip
       
   173 }
       
   174 \renewcommand\footnotesize{%
       
   175    \@setfontsize\footnotesize\@viipt{8}
       
   176    \abovedisplayskip 6.4\p@ \@plus 2\p@ \@minus 4\p@%
       
   177    \abovedisplayshortskip \z@ \@plus 1\p@%
       
   178    \belowdisplayshortskip 2.7\p@ \@plus 1\p@ \@minus 2\p@
       
   179    \def\@listi{\leftmargin\leftmargini
       
   180                \topsep 3\p@ \@plus 1\p@ \@minus 1\p@
       
   181                \parsep 2\p@ \@plus 1\p@ \@minus 1\p@
       
   182                \itemsep \parsep}%
       
   183    \belowdisplayskip \abovedisplayskip
       
   184 }
       
   185 \renewcommand\scriptsize{\@setfontsize\scriptsize\@viipt{8pt}}
       
   186 \renewcommand\tiny{\@setfontsize\tiny\@vpt{6pt}}
       
   187 \renewcommand\large{\@setfontsize\large\@xipt{13.6\p@}}
       
   188 \renewcommand\Large{\@setfontsize\Large\@xiipt{14\p@}}
       
   189 \renewcommand\LARGE{\@setfontsize\LARGE\@xivpt{18\p@}}
       
   190 \renewcommand\huge{\@setfontsize\huge\@xviipt{22\p@}}
       
   191 \renewcommand\Huge{\@setfontsize\Huge\@xxpt{25\p@}}
       
   192 
       
   193 \setlength\parindent{13.5\p@}    % This is what normally used for one
       
   194                                  % column.  Should it be 1em for us?
       
   195 \setlength\headheight{0\p@}
       
   196 \setlength\headsep{0\p@}
       
   197 \setlength\headheight{0\p@}
       
   198 \setlength\headsep{0\p@}
       
   199 \setlength\footskip{30\p@}
       
   200 %
       
   201 % There was no \topskip or \@maxdepth in the original acmconf.sty.
       
   202 % Thus, we inherit 
       
   203 %\topskip 10pt 
       
   204 %\maxdepth .5\topskip
       
   205 % from size10.clo loaded via article.cls
       
   206 %
       
   207 \setlength\textwidth{42pc}
       
   208 \setlength\textheight{650\p@}
       
   209 \setlength\oddsidemargin{4.5pc}
       
   210 \addtolength\oddsidemargin{-1in}    % Correct for LaTeX gratuittousness
       
   211 \setlength\evensidemargin{4.5pc}
       
   212 \addtolength\evensidemargin{-1in}   % Correct for LaTeX gratuittousness
       
   213 \setlength\marginparwidth{0\p@}     % Margin pars are not allowed.
       
   214 \setlength\marginparsep{11\p@}
       
   215 \setlength\marginparpush{5\p@}
       
   216 \setlength\topmargin{4.5pc}
       
   217 \addtolength\topmargin{-1in}         % Correct for LaTeX gratuitousness
       
   218 %
       
   219 % I wonder if these next three lines should only be executed if
       
   220 % the preprint option is in effect?  -- DAB
       
   221 %
       
   222 %% Must redefine the top margin so there's room for headers and
       
   223 %% page numbers if you are using the preprint option. Footers
       
   224 %% are OK as is. Olin.
       
   225 \addtolength\topmargin{-37\p@} % Leave 37pt above text for headers
       
   226 \setlength\headheight{12\p@}
       
   227 \setlength\headsep{25\p@}
       
   228 
       
   229 \setlength\footnotesep{5.6\p@}
       
   230 \setlength{\skip\footins}{8.1\p@ \@plus 4\p@ \@minus 2\p@}
       
   231 \setlength\floatsep{11\p@ \@plus 2\p@ \@minus 2\p@}
       
   232 \setlength\textfloatsep{18\p@ \@plus 2\p@ \@minus 4\p@}
       
   233 \setlength\intextsep{11\p@ \@plus 2\p@ \@minus 2\p@}
       
   234 \setlength\dblfloatsep{11\p@ \@plus 2\p@ \@minus 2\p@}
       
   235 \setlength\dbltextfloatsep{18\p@ \@plus 2\p@ \@minus 4\p@}
       
   236 %
       
   237 % These values will be inherited from the default size10.clo file
       
   238 % included when we load the base article class.  I include them
       
   239 % here for completeness in case we split out the size9.clo file someday.
       
   240 %   --DAB
       
   241 \setlength\@fptop{0\p@ \@plus 1fil}
       
   242 \setlength\@fpsep{8\p@ \@plus 2fil}
       
   243 \setlength\@fpbot{0\p@ \@plus 1fil}
       
   244 \setlength\@dblfptop{0\p@ \@plus 1fil}
       
   245 \setlength\@dblfpsep{8\p@ \@plus 2fil}
       
   246 \setlength\@dblfpbot{0\p@ \@plus 1fil}
       
   247 \setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@}
       
   248 %
       
   249 % I think that all of these should be renewcommands.  I also think
       
   250 % that \setlength should be used.  But, they are not in the size10.clo
       
   251 % file that I am following.   --DAB
       
   252 %
       
   253 \renewcommand\@listI{\leftmargin\leftmargini 
       
   254                      \parsep 3.6\p@ \@plus 2\p@ \@minus 1\p@%
       
   255                      \topsep 7.2\p@ \@plus 2\p@ \@minus 4\p@%
       
   256                      \itemsep 3.6\p@ \@plus 2\p@ \@minus 1\p@}
       
   257 \let\@listi\@listI
       
   258 \@listi
       
   259 \def\@listii {\leftmargin\leftmarginii
       
   260               \labelwidth\leftmarginii
       
   261               \advance\labelwidth-\labelsep
       
   262               \topsep 3.6\p@ \@plus 2\p@ \@minus 1\p@
       
   263               \parsep 1.8\p@ \@plus 0.9\p@ \@minus 0.9\p@
       
   264               \itemsep \parsep}
       
   265 \def\@listiii{\leftmargin\leftmarginiii
       
   266               \labelwidth\leftmarginiii
       
   267               \advance\labelwidth-\labelsep
       
   268               \topsep 1.8\p@ plus 0.9\p@ minus 0.9\p@
       
   269               \parsep \z@
       
   270               \partopsep 1\p@ plus 0\p@ minus 1\p@
       
   271               \itemsep \topsep}
       
   272 \def\@listiv {\leftmargin\leftmarginiv
       
   273               \labelwidth\leftmarginiv
       
   274               \advance\labelwidth-\labelsep}
       
   275 \def\@listv  {\leftmargin\leftmarginv
       
   276               \labelwidth\leftmarginv
       
   277               \advance\labelwidth-\labelsep}
       
   278 \def\@listvi {\leftmargin\leftmarginvi
       
   279               \labelwidth\leftmarginvi
       
   280               \advance\labelwidth-\labelsep}
       
   281 %
       
   282 % End of the "size9.clo" commands
       
   283 %**********************************************************************
       
   284 
       
   285 %
       
   286 % here's a few things that I didn't find in either article.cls or
       
   287 % size10.clo, so I left them here.  --DAB
       
   288 %
       
   289 \setlength\columnsep{2pc}          %    Space between columns
       
   290 \setlength\columnseprule{0\p@}     %    Width of rule between columns.
       
   291 \hfuzz 1pt               % Allow some variation in column width, otherwise it's
       
   292                          % too hard to typeset in narrow columns.
       
   293 
       
   294 
       
   295 %**********************************************************************
       
   296 %
       
   297 % Now we get on with overriding things found in article.cls
       
   298 %
       
   299 \setlength\parindent{13.5\p@}
       
   300 
       
   301 %
       
   302 % This command is used to format section headings.  The format is the only
       
   303 % thing that differs between these section commands and the ones in
       
   304 % article.cls.
       
   305 %
       
   306 % Although the original documentation says that sans-serif is supposed to be
       
   307 % used for section titles, the file as I received uses roman.  The
       
   308 % commented out line implements sans-serif.  Be sure to comment out the
       
   309 % \bfseries line if you switch.
       
   310 %   --DAB
       
   311 %
       
   312 \newcommand\@acmtitlestyle{\normalsize\bfseries}
       
   313 %\newcommand\@acmtitlestyle{\normalsize\sffamily}
       
   314 
       
   315 \renewcommand\section{\@startsection {section}{1}{\z@}%
       
   316                                      {-3.5ex \@plus -1ex \@minus -.2ex}%
       
   317                                      {2.3ex \@plus .2ex}%
       
   318                                      {\@acmtitlestyle}}
       
   319 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
       
   320                                        {-3.25ex \@plus -1ex \@minus -.2ex}%
       
   321                                        {1.5ex \@plus .2ex}%
       
   322                                        {\@acmtitlestyle}}
       
   323 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
       
   324                                           {-3.25ex \@plus -1ex \@minus -.2ex}%
       
   325                                           {1.5ex \@plus .2ex}%
       
   326                                           {\@acmtitlestyle}}
       
   327 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
       
   328                                       {3.25ex \@plus 1ex \@minus .2ex}%
       
   329                                       {-1em}%
       
   330                                       {\@acmtitlestyle}}
       
   331 \renewcommand\subparagraph{\@startsection{subparagraph}{4}{\parindent}%
       
   332                                          {3.25ex \@plus 1ex \@minus .2ex}%
       
   333                                          {-1em}%
       
   334                                          {\@acmtitlestyle}}
       
   335 
       
   336 \setcounter{secnumdepth}{3}
       
   337 
       
   338 \setlength\arraycolsep{4.5\p@}
       
   339 \setlength\tabcolsep{5.4\p@}
       
   340 \setlength\doublerulesep{1.8\p@}
       
   341 
       
   342 \setlength\fboxsep{2.7\p@}
       
   343 \setlength\fboxrule{.4\p@}
       
   344 
       
   345 \def\tableofcontents{\ClassError{acmconf}%
       
   346   {\protect\tableofcontents: Tables of contents are not allowed in the `acmconf' document class}%
       
   347   {Remove the \protect\tableofcontents\space command from the file}}
       
   348 
       
   349 \def\listoffigures{\ClassError{acmconf}%
       
   350   {\protect\listoffigures: Lists of figures are not allowed in the `acmconf' document class}%
       
   351   {Remove the \protect\listoffigures\space command from the file}}
       
   352 
       
   353 \def\listoftables{\ClassError{acmconf}%
       
   354    {\protect\listoftables: Lists of tables are not allowed in the `acmconf' document class}%
       
   355    {Remove the \protect\listoftables\space command from the file}}
       
   356 \let\l@table\l@figure
       
   357 
       
   358 %
       
   359 % Added \@makefntext definition so that the mark would not over print
       
   360 % the beginning of the \thanks text.  --DAB
       
   361 %
       
   362 \def\maketitle{\par
       
   363  \begingroup
       
   364    \def\thefootnote{\fnsymbol{footnote}}%
       
   365    \def\@makefnmark{\hbox to 0pt{$\m@th^{\@thefnmark}$\hss}}%
       
   366    \long\def\@makefntext##1{\parindent 1em\noindent
       
   367                \hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
       
   368    \if@twocolumn
       
   369      \twocolumn[\@maketitle]
       
   370      \else \newpage
       
   371      \global\@topnum\z@        % Prevents figures from going at top of page.
       
   372      \@maketitle \fi
       
   373    \thispagestyle{plain}\@thanks  % UE: Changed {empty} to {plain}
       
   374  \endgroup
       
   375  \setcounter{footnote}{0}
       
   376  \let\maketitle\relax
       
   377  \let\@maketitle\relax
       
   378  \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@affili{}\let\thanks\relax}
       
   379 
       
   380 %
       
   381 % extra declarations needed for our version of @maketitle
       
   382 %
       
   383 \newbox\@acmtitlebox
       
   384 \gdef\affili{}
       
   385 \def\affiliation#1{\gdef\affili{#1}}
       
   386 
       
   387 %
       
   388 % The modified @maketitle
       
   389 %
       
   390 \def\@maketitle{\newpage
       
   391  \null
       
   392  \setbox\@acmtitlebox\vbox{%
       
   393    \vskip 2em                 % Vertical space above title.
       
   394    \begin{center}
       
   395     {\LARGE \@title \par}     % Title set in \LARGE size.
       
   396     \vskip 1.5em                % Vertical space after title.
       
   397     {\large                        % each author set in \large, in a
       
   398      \lineskip .5em           % tabular environment
       
   399      \begin{tabular}[t]{c}\@author
       
   400      \end{tabular}\par}
       
   401      \vskip 1em
       
   402      \begin{center}
       
   403        {\large \affili}
       
   404      \end{center}
       
   405      \vskip 1.5em              % Vertical space after author.
       
   406    \end{center}}
       
   407  \dimen0=\ht\@acmtitlebox
       
   408  \advance\dimen0 by -13.5pc\relax
       
   409  \unvbox\@acmtitlebox
       
   410  \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi}
       
   411 
       
   412 \long\def\unmarkedfootnote#1{{\long\def\@makefntext##1{##1}\footnotetext{#1}}}
       
   413 
       
   414 %% Use one of \copyrightspace or \toappear{To appear in the ACM ...}
       
   415 \def\copyrightspace{\unmarkedfootnote{\vrule height 4.5pc
       
   416                                              width  0in depth 0in}}
       
   417 
       
   418 %% \small is bigger than \footnotesize.
       
   419 \def\toappear#1%
       
   420     {\ifpreprint \unmarkedfootnote{\vrule height 2.25pc%
       
   421                                           depth  2.25pc width 0in%
       
   422                                    \parbox{2.8in}{\small #1}}%
       
   423      \else \copyrightspace \fi}
       
   424 
       
   425 \def\marginpar{\ClassError{acmconf}%
       
   426    {The \protect\marginpar command is not allowed in the `acmconf' document class}%
       
   427    {Remove the \protect\marginpar\space command from the file}}
       
   428 
       
   429 \mark{{}{}}   % Initializes TeX's marks
       
   430 
       
   431 %% Headings are ignored unless the [preprint] option is in force.
       
   432 \ifpreprint\else % preprint off -- all \pagestyle commands ==> \pagestyle{empty}.
       
   433 %  \let\ps@plain\ps@empty  % UE: Commented this line out
       
   434   \let\ps@headings\ps@empty
       
   435   \let\ps@myheadings\ps@empty
       
   436 \fi
       
   437 
       
   438 \raggedbottom               % Ragged bottom
       
   439 
       
   440 \endinput
       
   441 %%
       
   442 %% End of file `acmconf.cls'.