make nestedvm work with gcc-4.2
[nestedvm.git] / doc / acmconf.cls
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{39pc}
208 \setlength\textheight{650\p@}
209 \setlength\oddsidemargin{5.5pc}
210 \addtolength\oddsidemargin{-1in}    % Correct for LaTeX gratuittousness
211 \setlength\evensidemargin{5.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{5.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{3pc}          %    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\sffamily\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\Large}}
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'.