You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

713 lines
26 KiB

25 years ago
  1. % ACMCONF DOCUMENT STYLE - Updated 10 April 1995.
  2. %
  3. % This is a patched version of the 5 April 1993 release. No stylistic
  4. % changes have been made; it should produce output identical to the 1993
  5. % release if that release worked properly on your system. A LaTeX2e patch
  6. % has been added for systems having problems with the section header font.
  7. %
  8. % If you get an error message similar to
  9. %
  10. % ! Undefined control sequence.
  11. % l.165 \font\ninsfb = cmssbx10\@ptscale
  12. %
  13. % then see the comments beginning on line 173 (look for "DIAGNOSTICS").
  14. %-----------------------------------------------------------------------
  15. % Modification of Traub/Shivers version by Kevin Theobald, McGill
  16. % University. New version has automatic copyright space, option
  17. % for box around "to appear" entry, and style option to indent
  18. % first paragraph after subheadings. Released 5 April 1993.
  19. %
  20. % To use: install in reachable directory (one contained in TEXINPUTS
  21. % environment variable); use \documentstyle[<options>]{acmconf}
  22. %-----------------------------------------------------------------------
  23. % adapted from ARTICLE document style by Ken Traub
  24. % Hacked for [preprint] option by Olin Shivers 4/91
  25. % ARTICLE DOCUMENT STYLE -- Released 16 March 1988
  26. % for LaTeX version 2.09
  27. % Copyright (C) 1988 by Leslie Lamport
  28. %%% ACMCONF is a document style for producing two-column camera-ready pages for
  29. %%% ACM conferences, according to ACM specifications. The main features of
  30. %%% this style are:
  31. %%%
  32. %%% 1) Two columns.
  33. %%% 2) Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of
  34. %%% 2pc, hence columns are 20pc wide and 55.5pc tall. (6pc = 1in, approx)
  35. %%% 3) First page has title information, and an extra 6pc of space at the
  36. %%% bottom of the first column for the ACM copyright notice.
  37. %%% 4) Text is 9pt on 10pt baselines; titles (except main) are 9pt bold.
  38. %%%
  39. %%% This document style supports a [preprint] style option that allows
  40. %%% you to run off a copy for a preprint -- with page numbers, "to
  41. %%% appear" information, and so forth. This is documented below.
  42. %%%
  43. %%% This document style also supports a [secindent] style option which
  44. %%% causes paragraphs following (sub)section heads to be indented like
  45. %%% the others. (Added by KBT)
  46. %%%
  47. %%% There are a few restrictions you must observe:
  48. %%%
  49. %%% 1) You cannot change the font size; ACM wants you to use 9pt.
  50. %%% 3) You must start your paper with the \maketitle command. Prior to the
  51. %%% \maketitle you must have \title and \author commands. If you have a
  52. %%% \date command it will be ignored; no date appears on the paper, since
  53. %%% the proceedings will have a date on the front cover.
  54. %%% 4) Marginal paragraphs, tables of contents, lists of figures and tables,
  55. %%% and page headings are all forbidden.
  56. %%% 5) The `figure' environment will produce a figure one column wide; if you
  57. %%% want one that is two columns wide, use `figure*'.
  58. %%%
  59. %%% Page Headings:
  60. %%% Normally, \pagestyle commands are ignored --- pages have no headings or
  61. %%% numbers. ACM will number the pages for you when they are inserted into the
  62. %%% proceedings (you should put page numbers on the BACK of each page, though,
  63. %%% in case someone drops your paper on the floor).
  64. %%%
  65. %%% If the [preprint] option is present, then \pagestyle commands are obeyed,
  66. %%% and the default is \pagestyle{plain}. All pages (including the first)
  67. %%% are numbered. (This is useful if you want to make a reprint version
  68. %%% of your paper, with page numbering identical to the conference
  69. %%% proceedings. In such a case, you may need to insert the command
  70. %%% \setcounter{page}{...} before \maketitle.) The [twoside] option is
  71. %%% also useful when using headers.
  72. %%%
  73. %%% Copyright Space:
  74. %%% This style automatically leaves 1" blank space at the bottom of page 1/
  75. %%% column 1. This space can optionally be filled with some text using the
  76. %%% \toappear{...} command. If used, this command must be BEFORE the \maketitle
  77. %%% command. If this command is defined AND [preprint] is on, then the
  78. %%% space is filled with the {...} text (at the bottom); otherwise, it is
  79. %%% blank. If you use \toappearbox{...} instead of \toappear{...} then a
  80. %%% box will be drawn around the text (if [preprint] is on).
  81. %%%
  82. %%% A typical usage looks like this:
  83. %%% \toappear{To appear in the Ninth AES Conference on Medievil Lithuanian
  84. %%% Embalming Technique, June 1991, Alfaretta, Georgia.}
  85. %%% This will be included in the preprint, and left out of the conference
  86. %%% version.
  87. %%%
  88. %%% Acmconf defines two useful conditionals.
  89. %%% - \ifacmconf{true-stuff}{false-stuff}
  90. %%% expands to true-stuff.
  91. %%% - \ifpreprint true-stuff \else else-stuff \fi
  92. %%% expands to true-stuff if the [preprint] option is being used,
  93. %%% otherwise it expands to else-stuff.
  94. %%% \ifacmconf is a latex command; \ifpreprint is a real latex conditional.
  95. %%%
  96. %%% WARNING:
  97. %%% Some dvi-ps converters heuristically allow chars to drift from their
  98. %%% true positions a few pixels. This loses noticeably with the 9pt sans-serif
  99. %%% bold font used for section headers. You turn this hackery off in our
  100. %%% dvi-ps converters with the -e option:
  101. %%% dvips -e 0 foo.dvi >foo.ps
  102. \typeout{Document Style `acmconf' <22 May 89>. Hacked 4/91 by}
  103. \typeout{ shivers@cs.cmu.edu, 4/93 by theobald@cs.mcgill.ca}
  104. \typeout{Bugs to theobald@cs.mcgill.ca}
  105. \newif\if@acmconf\@acmconftrue
  106. \long\def\ifacmconf#1#2{\if@acmconf#1\else#2\fi}
  107. \newif\ifpreprint
  108. \def\ds@preprint{\preprinttrue}
  109. \def\ds@twoside{\@twosidetrue \@mparswitchtrue}
  110. \def\ds@secindent{\def\@afterindentfalse{\@afterindenttrue}}
  111. \@namedef{ds@10pt}{\@latexerr{The `10pt' option is not allowed in the `acmconf'
  112. document style.}\@eha}
  113. \@namedef{ds@11pt}{\@latexerr{The `11pt' option is not allowed in the `acmconf'
  114. document style.}\@eha}
  115. \@namedef{ds@12pt}{\@latexerr{The `12pt' option is not allowed in the `acmconf'
  116. document style.}\@eha}
  117. \@options
  118. \lineskip 1pt % \lineskip is 1pt for all font sizes.
  119. \normallineskip 1pt
  120. \def\baselinestretch{1}
  121. \def\@normalsize{\@setsize\normalsize{10pt}\ixpt\@ixpt
  122. \abovedisplayskip 9pt plus2pt minus4.5pt%
  123. \belowdisplayskip \abovedisplayskip
  124. \abovedisplayshortskip \z@ plus3pt%
  125. \belowdisplayshortskip 5.4pt plus3pt minus3pt%
  126. \let\@listi\@listI} % Setting of \@listi added 9 Jun 87
  127. \def\small{\@setsize\small{9pt}\viiipt\@viiipt
  128. \abovedisplayskip 7.6pt plus 3pt minus 4pt%
  129. \belowdisplayskip \abovedisplayskip
  130. \abovedisplayshortskip \z@ plus2pt%
  131. \belowdisplayshortskip 3.6pt plus2pt minus 2pt
  132. \def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
  133. \topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
  134. \itemsep \parsep}}
  135. \def\footnotesize{\@setsize\footnotesize{8pt}\viipt\@viipt
  136. \abovedisplayskip 6.4pt plus 2pt minus 4pt%
  137. \belowdisplayskip \abovedisplayskip
  138. \abovedisplayshortskip \z@ plus 1pt%
  139. \belowdisplayshortskip 2.7pt plus 1pt minus 2pt
  140. \def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
  141. \topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
  142. \itemsep \parsep}}
  143. \def\scriptsize{\@setsize\scriptsize{8pt}\viipt\@viipt}
  144. \def\tiny{\@setsize\tiny{6pt}\vpt\@vpt}
  145. \def\large{\@setsize\large{13.6pt}\xipt\@xipt}
  146. \def\Large{\@setsize\Large{16pt}\xiipt\@xiipt}
  147. \def\LARGE{\@setsize\LARGE{18pt}\xivpt\@xivpt}
  148. \def\huge{\@setsize\huge{22pt}\xviipt\@xviipt}
  149. \def\Huge{\@setsize\Huge{25pt}\xxpt\@xxpt}
  150. %%% Patch for LaTeX-2e (LaTeX 2.09 compatibility mode)
  151. %%% The line \font\ninsfb = cmssbx10\@ptscale9 is replaced by
  152. \expandafter\ifx\csname fontseries\endcsname\relax
  153. \font\ninsfb = cmssbx10\@ptscale9
  154. \else
  155. \def\ninsfb{\fontfamily{cmss}\fontseries{bx}\fontshape{n}
  156. \fontsize{9}{\f@baselineskip}\selectfont}
  157. \fi
  158. %%% End patch for LaTeX-2e
  159. \def\@acmtitlestyle{\normalsize\ninsfb}
  160. %%%
  161. %%% DIAGNOSTICS:
  162. %%% The ten lines above (the patch and the \def\@acmtitlestyle command) will
  163. %%% cause problems if your printer doesn't have the 9pt. bold sans-serif font.
  164. %%% If this is a problem, try commenting out those lines and uncommenting one
  165. %%% of the following alternatives. (It is best to try them in order until
  166. %%% finding one that works; the earlier alternatives cause less change.)
  167. %%%
  168. %%% ALTERNATIVE 1: (works if your system has the same font in 10pt.)
  169. %%% \font\tensfb = cmssbx10
  170. %%% \def\@acmtitlestyle{\normalsize\tensfb}
  171. %%% ALTERNATIVE 2:
  172. %%% \def\@acmtitlestyle{\normalsize\ninbf}
  173. %%% ALTERNATIVE 3:
  174. %%% \def\@acmtitlestyle{\normalsize\tenbf}
  175. \normalsize % Choose the normalsize font.
  176. \oddsidemargin 4.5pc
  177. \evensidemargin 4.5pc
  178. \advance\oddsidemargin by -1in % Correct for LaTeX gratuitousness
  179. \advance\evensidemargin by -1in % Correct for LaTeX gratuitousness
  180. \marginparwidth 0pt % Margin pars are not allowed.
  181. \marginparsep 11pt % Horizontal space between outer margin and
  182. % marginal note
  183. % Top of page:
  184. \topmargin 4.5pc % Nominal distance from top of page to top of
  185. % box containing running head.
  186. \advance\topmargin by -1in % Correct for LaTeX gratuitousness
  187. \headheight 0pt % Height of box containing running head.
  188. \headsep 0pt % Space between running head and text.
  189. % Bottom of page:
  190. \footskip 30pt % Distance from baseline of box containing foot
  191. % to baseline of last line of text.
  192. \footheight 12pt % Height of box containing running foot.
  193. %% Must redefine the top margin so there's room for headers and
  194. %% page numbers if you are using the preprint option. Footers
  195. %% are OK as is. Olin.
  196. \advance\topmargin by -37pt % Leave 37pt above text for headers
  197. \headheight 12pt % Height of box containing running head.
  198. \headsep 25pt % Space between running head and text.
  199. \textheight 666pt % 9 1/4 column height
  200. \textwidth 42pc % Width of text line.
  201. % For two-column mode:
  202. \columnsep 2pc % Space between columns
  203. \columnseprule 0pt % Width of rule between columns.
  204. \hfuzz 1pt % Allow some variation in column width, otherwise it's
  205. % too hard to typeset in narrow columns.
  206. \footnotesep 5.6pt % Height of strut placed at the beginning of every
  207. % footnote = height of normal \footnotesize strut,
  208. % so no extra space between footnotes.
  209. \skip\footins 8.1pt plus 4pt minus 2pt % Space between last line of text and
  210. % top of first footnote.
  211. \floatsep 11pt plus 2pt minus 2pt % Space between adjacent floats moved
  212. % to top or bottom of text page.
  213. \textfloatsep 18pt plus 2pt minus 4pt % Space between main text and floats
  214. % at top or bottom of page.
  215. \intextsep 11pt plus 2pt minus 2pt % Space between in-text figures and
  216. % text.
  217. \@maxsep 18pt % The maximum of \floatsep,
  218. % \textfloatsep and \intextsep (minus
  219. % the stretch and shrink).
  220. \dblfloatsep 11pt plus 2pt minus 2pt % Same as \floatsep for double-column
  221. % figures in two-column mode.
  222. \dbltextfloatsep 18pt plus 2pt minus 4pt% \textfloatsep for double-column
  223. % floats.
  224. \@dblmaxsep 18pt % The maximum of \dblfloatsep and
  225. % \dbltexfloatsep.
  226. \@fptop 0pt plus 1fil % Stretch at top of float page/column. (Must be
  227. % 0pt plus ...)
  228. \@fpsep 8pt plus 2fil % Space between floats on float page/column.
  229. \@fpbot 0pt plus 1fil % Stretch at bottom of float page/column. (Must be
  230. % 0pt plus ... )
  231. \@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...)
  232. \@dblfpsep 8pt plus 2fil % Space between floats on float page.
  233. \@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be
  234. % 0pt plus ... )
  235. \marginparpush 5pt % Minimum vertical separation between two marginal
  236. % notes.
  237. \parskip 0pt plus 1pt % Extra vertical space between paragraphs.
  238. \parindent 13.5pt % Width of paragraph indentation.
  239. %\topsep 8pt plus 2pt minus 4pt % Extra vertical space, in addition to
  240. % \parskip, added above and below list and
  241. % paragraphing environments.
  242. \partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to
  243. % \parskip and \topsep, added when user
  244. % leaves blank line before environment.
  245. %\itemsep 4pt plus 2pt minus 1pt % Extra vertical space, in addition to
  246. % \parskip, added between list items.
  247. % See \@listI for values of \topsep and \itemsep
  248. \@lowpenalty 51 % Produced by \nopagebreak[1] or \nolinebreak[1]
  249. \@medpenalty 151 % Produced by \nopagebreak[2] or \nolinebreak[2]
  250. \@highpenalty 301 % Produced by \nopagebreak[3] or \nolinebreak[3]
  251. \@beginparpenalty -\@lowpenalty % Before a list or paragraph environment.
  252. \@endparpenalty -\@lowpenalty % After a list or paragraph environment.
  253. \@itempenalty -\@lowpenalty % Between list items.
  254. % \clubpenalty % 'Club line' at bottom of page.
  255. % \widowpenalty % 'Widow line' at top of page.
  256. % \displaywidowpenalty % Math display widow line.
  257. % \predisplaypenalty % Breaking before a math display.
  258. % \postdisplaypenalty % Breaking after a math display.
  259. % \interlinepenalty % Breaking at a line within a paragraph.
  260. % \brokenpenalty % Breaking after a hyphenated line.
  261. \def\part{\par % New paragraph
  262. \addvspace{4ex} % Adds vertical space above title.
  263. \@afterindentfalse % Suppresses indent in first paragraph. Change
  264. \secdef\@part\@spart}% to \@afterindenttrue to have indent.
  265. \def\@part[#1]#2{\ifnum \c@secnumdepth >\m@ne % IF secnumdepth > -1
  266. \refstepcounter{part} % THEN step part counter
  267. \addcontentsline{toc}{part}{\thepart % add toc line
  268. \hspace{1em}#1}\else % ELSE add unnumbered line
  269. \addcontentsline{toc}{part}{#1}\fi % FI
  270. { \parindent 0pt \raggedright
  271. \ifnum \c@secnumdepth >\m@ne% IF secnumdepth > -1
  272. \Large \bf Part \thepart % THEN Print 'Part' and
  273. \par \nobreak % number in \Large boldface.
  274. \fi % FI
  275. \huge \bf % Select \huge boldface.
  276. #2\markboth{}{}\par } % Print title and set heading marks null.
  277. \nobreak % TeX penalty to prevent page break.
  278. \vskip 3ex % Space between title and text.
  279. \@afterheading % Routine called after part and
  280. } % section heading.
  281. \def\@spart#1{{\parindent 0pt \raggedright
  282. \huge \bf
  283. #1\par} % Title.
  284. \nobreak % TeX penalty to prevent page break.
  285. \vskip 3ex % Space between title and text.
  286. \@afterheading % Routine called after part and
  287. } % section heading.
  288. \def\section{\@startsection {section}{1}{\z@}{-3.5ex plus -1ex minus
  289. -.2ex}{2.3ex plus .2ex}{\@acmtitlestyle}}
  290. \def\subsection{\@startsection{subsection}{2}{\z@}{-3.25ex plus -1ex minus
  291. -.2ex}{1.5ex plus .2ex}{\@acmtitlestyle}}
  292. \def\subsubsection{\@startsection{subsubsection}{3}{\z@}{-3.25ex plus
  293. -1ex minus -.2ex}{1.5ex plus .2ex}{\@acmtitlestyle}}
  294. \def\paragraph{\@startsection
  295. {paragraph}{4}{\z@}{3.25ex plus 1ex minus .2ex}{-1em}{\@acmtitlestyle}}
  296. \def\subparagraph{\@startsection
  297. {subparagraph}{4}{\parindent}{3.25ex plus 1ex minus
  298. .2ex}{-1em}{\@acmtitlestyle}}
  299. \setcounter{secnumdepth}{3}
  300. \def\appendix{\par
  301. \setcounter{section}{0}
  302. \setcounter{subsection}{0}
  303. \def\thesection{\Alph{section}}}
  304. \leftmargini 22.5pt
  305. \leftmarginii 19.8pt % > \labelsep + width of '(m)'
  306. \leftmarginiii 16.8pt % > \labelsep + width of 'vii.'
  307. \leftmarginiv 15.3pt % > \labelsep + width of 'M.'
  308. \leftmarginv 9pt
  309. \leftmarginvi 9pt
  310. \leftmargin\leftmargini
  311. \labelsep 4.5pt
  312. \labelwidth\leftmargini\advance\labelwidth-\labelsep
  313. % \parsep 4pt plus 2pt minus 1pt (Removed 9 Jun 87)
  314. % \@listI defines top level and \@listi values of
  315. % \leftmargin, \topsep, \parsep, and \itemsep
  316. % (Added 9 Jun 87)
  317. \def\@listI{\leftmargin\leftmargini \parsep 3.6pt plus 2pt minus 1pt%
  318. \topsep 7.2pt plus 2pt minus 4pt%
  319. \itemsep 3.6pt plus 2pt minus 1pt}
  320. \let\@listi\@listI
  321. \@listi
  322. \def\@listii{\leftmargin\leftmarginii
  323. \labelwidth\leftmarginii\advance\labelwidth-\labelsep
  324. \topsep 3.6pt plus 2pt minus 1pt
  325. \parsep 1.8pt plus 0.9pt minus 0.9pt
  326. \itemsep \parsep}
  327. \def\@listiii{\leftmargin\leftmarginiii
  328. \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
  329. \topsep 1.8pt plus 0.9pt minus 0.9pt
  330. \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
  331. \itemsep \topsep}
  332. \def\@listiv{\leftmargin\leftmarginiv
  333. \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
  334. \def\@listv{\leftmargin\leftmarginv
  335. \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
  336. \def\@listvi{\leftmargin\leftmarginvi
  337. \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
  338. \def\labelenumi{\theenumi.}
  339. \def\theenumi{\arabic{enumi}}
  340. \def\labelenumii{(\theenumii)}
  341. \def\theenumii{\alph{enumii}}
  342. \def\p@enumii{\theenumi}
  343. \def\labelenumiii{\theenumiii.}
  344. \def\theenumiii{\roman{enumiii}}
  345. \def\p@enumiii{\theenumi(\theenumii)}
  346. \def\labelenumiv{\theenumiv.}
  347. \def\theenumiv{\Alph{enumiv}}
  348. \def\p@enumiv{\p@enumiii\theenumiii}
  349. \def\labelitemi{$\bullet$}
  350. \def\labelitemii{\bf --}
  351. \def\labelitemiii{$\ast$}
  352. \def\labelitemiv{$\cdot$}
  353. \def\verse{\let\\=\@centercr
  354. \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
  355. \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
  356. \let\endverse\endlist
  357. \def\quotation{\list{}{\listparindent 1.5em
  358. \itemindent\listparindent
  359. \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
  360. \let\endquotation=\endlist
  361. \def\quote{\list{}{\rightmargin\leftmargin}\item[]}
  362. \let\endquote=\endlist
  363. \def\descriptionlabel#1{\hspace\labelsep \bf #1}
  364. \def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
  365. \let\makelabel\descriptionlabel}}
  366. \let\enddescription\endlist
  367. %\newdimen\descriptionmargin
  368. %\descriptionmargin=3em
  369. \def\theequation{\arabic{equation}}
  370. % \jot = 3pt % Extra space added between lines of an eqnarray environment
  371. % The macro \@eqnnum defines how equation numbers are to appear in equations.
  372. %
  373. % \def\@eqnnum{(\theequation)}
  374. %
  375. % Changed pagenum to 1, so margins work right in twoside option.
  376. % It's not clear to me that this environment is useful for acmconf.sty
  377. % anyway. -Olin
  378. \def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
  379. \else \newpage \fi \thispagestyle{empty}\c@page\@ne}
  380. \def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi \c@page\@ne}
  381. \arraycolsep 4.5pt % Half the space between columns in an array environment.
  382. \tabcolsep 5.4pt % Half the space between columns in a tabular environment.
  383. \arrayrulewidth .4pt % Width of rules in array and tabular environment.
  384. \doublerulesep 1.8pt % Space between adjacent rules in array or tabular env.
  385. \tabbingsep \labelsep % Space used by the \' command. (See LaTeX manual.)
  386. \skip\@mpfootins = \skip\footins
  387. \fboxsep = 2.7pt % Space left between box and text by \fbox and \framebox.
  388. \fboxrule = .4pt % Width of rules in box made by \fbox and \framebox.
  389. \newcounter{part}
  390. \newcounter {section}
  391. \newcounter {subsection}[section]
  392. \newcounter {subsubsection}[subsection]
  393. \newcounter {paragraph}[subsubsection]
  394. \newcounter {subparagraph}[paragraph]
  395. \def\thepart{\Roman{part}} % Roman numeral part numbers.
  396. \def\thesection {\arabic{section}}
  397. \def\thesubsection {\thesection.\arabic{subsection}}
  398. \def\thesubsubsection {\thesubsection .\arabic{subsubsection}}
  399. \def\theparagraph {\thesubsubsection.\arabic{paragraph}}
  400. \def\thesubparagraph {\theparagraph.\arabic{subparagraph}}
  401. \def\@pnumwidth{1.55em}
  402. \def\@tocrmarg {2.55em}
  403. \def\@dotsep{4.5}
  404. \setcounter{tocdepth}{3}
  405. \def\tableofcontents{\@latexerr{\tableofcontents: Tables of contents are not
  406. allowed in the `acmconf' document style.}\@eha}
  407. \def\l@part#1#2{\addpenalty{\@secpenalty}
  408. \addvspace{2.25em plus 1pt} % space above part line
  409. \begingroup
  410. \@tempdima 3em % width of box holding part number, used by
  411. \parindent \z@ \rightskip \@pnumwidth %% \numberline
  412. \parfillskip -\@pnumwidth
  413. {\large \bf % set line in \large boldface
  414. \leavevmode % TeX command to enter horizontal mode.
  415. #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
  416. \nobreak % Never break after part entry
  417. \endgroup}
  418. \def\l@section#1#2{\addpenalty{\@secpenalty} % good place for page break
  419. \addvspace{1.0em plus 1pt} % space above toc entry
  420. \@tempdima 1.5em % width of box holding section number
  421. \begingroup
  422. \parindent \z@ \rightskip \@pnumwidth
  423. \parfillskip -\@pnumwidth
  424. \bf % Boldface.
  425. \leavevmode % TeX command to enter horizontal mode.
  426. \advance\leftskip\@tempdima %% added 5 Feb 88 to conform to
  427. \hskip -\leftskip %% 25 Jan 88 change to \numberline
  428. #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
  429. \endgroup}
  430. \def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
  431. \def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
  432. \def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
  433. \def\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
  434. \def\listoffigures{\@latexerr{\listoffigures: Lists of figures are not
  435. allowed in the `acmconf' document style.}\@eha}
  436. \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
  437. \def\listoftables{\@latexerr{\listoftables: Lists of tables are not
  438. allowed in the `acmconf' document style.}\@eha}
  439. \let\l@table\l@figure
  440. \def\thebibliography#1{\section*{References\@mkboth
  441. {REFERENCES}{REFERENCES}}\list
  442. {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}\leftmargin\labelwidth
  443. \advance\leftmargin\labelsep
  444. \usecounter{enumi}}
  445. \def\newblock{\hskip .11em plus .33em minus .07em}
  446. \sloppy\clubpenalty4000\widowpenalty4000
  447. \sfcode`\.=1000\relax}
  448. \let\endthebibliography=\endlist
  449. % \def\@biblabel#1{[#1]\hfill} % Produces the label for a \bibitem[...]
  450. % command.
  451. % \def\@cite#1{[#1]} % Produces the output of the \cite command.
  452. \newif\if@restonecol
  453. \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
  454. \columnseprule \z@
  455. \columnsep 35pt\twocolumn[\section*{Index}]
  456. \@mkboth{INDEX}{INDEX}\thispagestyle{empty}\parindent\z@
  457. \parskip\z@ plus .3pt\relax\let\item\@idxitem}
  458. \def\@idxitem{\par\hangindent 40pt}
  459. \def\subitem{\par\hangindent 40pt \hspace*{20pt}}
  460. \def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
  461. \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
  462. \def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
  463. \def\footnoterule{\kern-3\p@
  464. \hrule width .4\columnwidth
  465. \kern 2.6\p@} % The \hrule has default height of .4pt .
  466. \long\def\@makefntext#1{\parindent 1em\noindent
  467. \hbox to 1.8em{\hss$^{\@thefnmark}$}#1}
  468. \setcounter{topnumber}{2}
  469. \def\topfraction{.7}
  470. \setcounter{bottomnumber}{1}
  471. \def\bottomfraction{.3}
  472. \setcounter{totalnumber}{3}
  473. \def\textfraction{.2}
  474. \def\floatpagefraction{.5}
  475. \setcounter{dbltopnumber}{2}
  476. \def\dbltopfraction{.7}
  477. \def\dblfloatpagefraction{.5}
  478. \long\def\@makecaption#1#2{
  479. \vskip 10pt
  480. \setbox\@tempboxa\hbox{#1: #2}
  481. \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
  482. #1: #2\par % THEN set as ordinary paragraph.
  483. \else % ELSE center.
  484. \hbox to\hsize{\hfil\box\@tempboxa\hfil}
  485. \fi}
  486. \newcounter{figure}
  487. \def\thefigure{\@arabic\c@figure}
  488. \def\fps@figure{tbp}
  489. \def\ftype@figure{1}
  490. \def\ext@figure{lof}
  491. \def\fnum@figure{Figure \thefigure}
  492. \def\figure{\@float{figure}}
  493. \let\endfigure\end@float
  494. \@namedef{figure*}{\@dblfloat{figure}}
  495. \@namedef{endfigure*}{\end@dblfloat}
  496. \newcounter{table}
  497. \def\thetable{\@arabic\c@table}
  498. \def\fps@table{tbp}
  499. \def\ftype@table{2}
  500. \def\ext@table{lot}
  501. \def\fnum@table{Table \thetable}
  502. \def\table{\@float{table}}
  503. \let\endtable\end@float
  504. \@namedef{table*}{\@dblfloat{table}}
  505. \@namedef{endtable*}{\end@dblfloat}
  506. \def\maketitle{\par
  507. \begingroup
  508. \def\thefootnote{\fnsymbol{footnote}}
  509. \def\@makefnmark{\hbox
  510. to 0pt{$^{\@thefnmark}$\hss}}
  511. \if@twocolumn
  512. \twocolumn[\@maketitle]
  513. \else \newpage
  514. \global\@topnum\z@ % Prevents figures from going at top of page.
  515. % \@maketitle \fi\thispagestyle{empty}\@thanks
  516. \@maketitle \fi\@thanks
  517. \endgroup
  518. \setcounter{footnote}{0}
  519. \let\maketitle\relax
  520. \let\@maketitle\relax
  521. \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax
  522. \@copyrightspace}
  523. \newbox\@acmtitlebox
  524. \def\@maketitle{\newpage
  525. \null
  526. \setbox\@acmtitlebox\vbox{%
  527. \vskip 2em % Vertical space above title.
  528. \begin{center}
  529. {\LARGE \@title \par} % Title set in \LARGE size.
  530. \vskip 1.5em % Vertical space after title.
  531. {\large % each author set in \large, in a
  532. \lineskip .5em % tabular environment
  533. \begin{tabular}[t]{c}\@author
  534. \end{tabular}\par}
  535. \vskip 1.5em % Vertical space after author.
  536. \end{center}}
  537. \dimen0=\ht\@acmtitlebox
  538. \advance\dimen0 by -14.5pc\relax % Increased space for title box -- KBT
  539. \unvbox\@acmtitlebox
  540. \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi}
  541. \def\abstract{\if@twocolumn
  542. \section*{Abstract}
  543. \else \small
  544. \begin{center}
  545. {\bf Abstract\vspace{-.5em}\vspace{0pt}}
  546. \end{center}
  547. \quotation
  548. \fi}
  549. \def\endabstract{\if@twocolumn\else\endquotation\fi}
  550. %%% This section (written by KBT) handles the 1" box in the lower left
  551. %%% corner of the left column of the first page by creating a picture,
  552. %%% and inserting the predefined string at the bottom (with a negative
  553. %%% displacement to offset the space allocated for a non-existent
  554. %%% caption).
  555. %%%
  556. \def\ftype@copyrightbox{8}
  557. \def\@copyrightspace{
  558. \@float{copyrightbox}[b]
  559. \begin{center}
  560. \setlength{\unitlength}{1pc}
  561. \begin{picture}(20,2.8)
  562. \ifpreprint \put(0,-0.95){\@toappear} \else \fi
  563. \end{picture}
  564. \end{center}
  565. \end@float}
  566. \def\@toappear{} % Default setting blank - commands below change this.
  567. \def\toappear#1{\def\@toappear{\parbox[b]{20pc}{#1}}}
  568. \def\toappearbox#1{\def\@toappear{\raisebox{5pt}{\framebox[20pc]{\parbox[b]{19pc}{#1}}}}}
  569. \def\marginpar{\@latexerr{The \marginpar command is not allowed in the
  570. `acmconf' document style.}\@eha}
  571. \mark{{}{}} % Initializes TeX's marks
  572. %% Headings are ignored unless the [preprint] option is in force.
  573. \ifpreprint
  574. \if@twoside
  575. \def\ps@headings{
  576. \def\@oddfoot{}
  577. \def\@evenfoot{}
  578. \def\@evenhead{\rm\thepage\hfil \sl \leftmark}
  579. \def\@oddhead{\hbox{}\sl \rightmark \hfil\rm\thepage}
  580. \def\sectionmark##1{\markboth {\uppercase{\ifnum\c@secnumdepth>\z@
  581. \thesection \hskip 1em\relax \fi ##1}}{}}
  582. \def\subsectionmark##1
  583. {\markright {\ifnum \c@secnumdepth >\@ne \thesubsection
  584. \hskip 1em\relax \fi ##1}}}
  585. \else
  586. \def\ps@headings{
  587. \def\@oddfoot{}
  588. \def\@evenfoot{}
  589. \def\@oddhead{\hbox{}\sl \rightmark \hfil \rm\thepage}
  590. \def\sectionmark##1{\markright{\uppercase{\ifnum \c@secnumdepth >\z@
  591. \thesection\hskip 1em\relax \fi ##1}}}}
  592. \fi
  593. \def\ps@myheadings{\def\@oddhead{\hbox{}\sl\rightmark \hfil\rm\thepage}%
  594. \def \@evenhead{\rm \thepage\hfil\sl\leftmark\hbox{}}%
  595. \def\@oddfoot{}%
  596. \def\@evenfoot{}%
  597. \def\sectionmark##1{}%
  598. \def\subsectionmark##1{}}
  599. \else % preprint off -- all \pagestyle commands ==> \pagestyle{empty}.
  600. \let\ps@plain\ps@empty
  601. \let\ps@headings\ps@empty
  602. \let\ps@myheadings\ps@empty
  603. \fi
  604. \def\today{\ifcase\month\or
  605. January\or February\or March\or April\or May\or June\or
  606. July\or August\or September\or October\or November\or December\fi
  607. \space\number\day, \number\year}
  608. \ps@plain
  609. \pagenumbering{arabic} % Arabic page numbers
  610. \twocolumn % Double column.
  611. \raggedbottom % Ragged bottom