|
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'. |