The acmart document class

David M. Jones

30 October 1997 Version 1.6 β

Contents

1 Introduction 1

2 The docstrip modules 2

3 The code 2 3.1 Section headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 3.2 Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12 3.3 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 3.4 Theorems and proofs . . . . . . . . . . . . . . . . . . . . . . . . . . 18 3.5 Tables of contents . . . . . . . . . . . . . . . . . . . . . . . . . . . 22 3.6 Bibliographies and indexes . . . . . . . . . . . . . . . . . . . . . . . 23 3.7 Floats and captions . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

4 Bibliography stuff 39 4.1 Citation macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

1 Introduction

This is the acmart document class, which is based upon the earlier acmtrans document style. Unfortunately, the copy of acmtrans.sty I’m working from doesn’t contain any attributions, so I can’t properly credit the original authors, although the original style seems to have been written by Leslie Lamport, with later modifications by Andrew Appel and Rebecca Davies.

The ACM class has two new options:

preprint for producing a version of the paper suitable for distribution as a preprint (this is the default)

faircopy for producing a version of the paper suitable for submission to the ACM for publication. Currently the only difference is that figures will automatically be put on pages by themselves with appropriate labels at the bottom of the page. In the future, this may also produce other differences to facilitate copy-editing, such as typesetting the text \raggedright instead of fully justified.

2 The docstrip modules

This code uses the following modules:

2e  generate code for L^{A}TEX 2ε
209  generate code for L^{A}TEX 2.09
cls  generate a document class
trans generate the acmtrans class
bib  generate the acmbib package
driver generate a driver file for the documentation

3 The code

First we output the appropriate header information.

1 ⟨∗cls⟩ 2 ⟨∗209⟩

 3 % %<*trans>
 4 %\typeout{Document Style `acmtrans' \fileversion\space <\filedate>
 5 %(dmj).}
 6 % %</trans>
 7 % %<*!trans>
 8 \typeout{Document Style `acmart' \fileversion\space <\filedate>
 9 (dmj).}
10 % %</!trans>

11 ⟨/209⟩ 12 % 13 ⟨∗2e⟩

14 \NeedsTeXFormat{LaTeX2e}
15 % %<*trans>
16 % \ProvidesClass{acmart}[\filedate\space\fileversion\space ACM
17 % transactions class (dmj)]
18 % %</trans>
19 % %<*!trans>
20 \ProvidesClass{acmart}[\filedate\space\fileversion\space ACM
21 article class (dmj)]
22 % %</!trans>

23 ⟨/2e⟩

\@height \@width \@minus \@plus Next we add some useful abbreviations from the L^{A}TEX 2ε kernel to the L^{A}TEX 2.09 version of the document class.

24 ⟨∗209⟩

25 \def\@height{height}
26 \def\@width{width}

27 \def\@minus{minus}
28 \def\@plus{plus}
29 \def\hb@xt@{\hbox to}

30 ⟨/209⟩

\if@faircopy
31 \newif\if@faircopy
32 \@faircopyfalse

33 ⟨∗2e⟩

34

35 \DeclareOption{faircopy}{\@faircopytrue}

36

37 \DeclareOption{preprint}{\@faircopyfalse}

38

39 \DeclareOption{twocolumn}{%
40  \PackageWarningNoLine{acmart}{twocolumn mode is not supported}%

41 }

All other options are passed to the article class for processing.

42 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}

43

44 \ProcessOptions\relax

45

46 \LoadClass{article}

47 ⟨/2e⟩

\ds@faircopy
\ds@preprint
\ds@twocolumn

48 ⟨∗209⟩

49 \def\ds@faircopy{\@faircopytrue}

50

51 \def\ds@preprint{\@faircopyfalse}

52

53 \def\ds@twocolumn{%
54  \typeout{Warning! twocolumn mode is not supported by acmart}%

55 }

56 \@twosidetrue
57 \@mparswitchtrue
58 \def\ds@draft{\overfullrule 5\p@}
59 \@options

60

61 \lineskip \p@
62 \normallineskip \p@
63 \def\baselinestretch{1}
64 \def\@ptsize{0} %needed for amssymbols.sty

65 ⟨/209⟩

\@normalsize
\normalsize

66 ⟨∗209⟩

67 \def\@normalsize{%
68  \@setsize\normalsize{12\p@}\xpt\@xpt

69 ⟨/209⟩ 70 ⟨∗2e⟩

71 \renewcommand{\normalsize}{%
72  \@setfontsize\normalsize\@xpt\@xiipt

73 ⟨/2e⟩

74  \abovedisplayskip 6\p@ \@plus2\p@ \@minus\p@
75  \belowdisplayskip \abovedisplayskip
76  \abovedisplayshortskip 6\p@ \@minus 3\p@
77  \belowdisplayshortskip 6\p@ \@minus 3\p@
78  \let\@listi\@listI

79 }

\small

80 ⟨∗209⟩

81 \def\small{%
82  \@setsize\small{11\p@}\ixpt\@ixpt

83 ⟨/209⟩ 84 ⟨∗2e⟩

85 \renewcommand{\small}{%
86  \@setfontsize\small\@ixpt{11}%

87 ⟨/2e⟩

88  \abovedisplayskip 5\p@ \@plus 2\p@ \@minus \p@
89  \belowdisplayskip \abovedisplayskip
90  \abovedisplayshortskip 5\p@ \@minus 2\p@
91  \belowdisplayshortskip 5\p@ \@minus 2\p@
92  \def\@listi{%
93  \leftmargin\leftmargini
94  \topsep 5\p@ \@plus 2\p@ \@minus \p@
95  \parsep \z@ \@plus .7\p@
96  \itemsep 1.6\p@ \@plus .8\p@
97  }%

98 }

\footnotesize

99 ⟨∗209⟩

100 \def\footnotesize{%
101  \@setsize\footnotesize{10pt}\viiipt\@viiipt

102 ⟨/209⟩ 103 ⟨∗2e⟩

104 \renewcommand{\footnotesize}{%
105  \@setfontsize\footnotesize\@viiipt{9.5}%

106 ⟨/2e⟩

107  \abovedisplayskip 4\p@ \@plus \p@
108  \belowdisplayskip \abovedisplayskip
109  \abovedisplayshortskip 4\p@ \@minus \p@
110  \belowdisplayshortskip 4\p@ \@minus \p@
111  \def\@listi{%
112  \leftmargin\leftmargini

113  \topsep 4\p@ \@plus \p@
114  \parsep \z@ \@plus .5\p@
115  \itemsep \p@ \@plus .7\p@

116 }% 117 }

\scriptsize
\tiny
\large
\Large
\LARGE
\huge
\Huge

118 ⟨∗209⟩

119 \def\scriptsize{\@setsize\scriptsize{8\p@}\viipt\@viipt}
120 \def\tiny{\@setsize\tiny{6\p@}\vpt\@vpt}
121 \def\large{\@setsize\large{14\p@}\xiipt\@xiipt}
122 \def\Large{\@setsize\Large{18\p@}\xivpt\@xivpt}
123 \def\LARGE{\@setsize\LARGE{20\p@}\xviipt\@xviipt}
124 \def\huge{\@setsize\huge{25\p@}\xxpt\@xxpt}
125 \def\Huge{\@setsize\Huge{30\p@}\xxvpt\@xxvpt}

126 ⟨/209⟩ 127 ⟨∗2e⟩

128 \renewcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viipt}
129 \renewcommand{\tiny}{\@setfontsize\tiny\@vpt\@vpt}
130 \renewcommand{\large}{\@setfontsize\large\@xiipt\@xiipt}
131 \renewcommand{\Large}{\@setfontsize\Large\@xivpt\@xivpt}
132 \renewcommand{\LARGE}{\@setfontsize\LARGE\@xviipt\@xviipt}
133 \renewcommand{\huge}{\@setfontsize\huge\@xxpt\@xxpt}
134 \renewcommand{\Huge}{\@setfontsize\Huge\@xxvpt\@xxvpt}

135 ⟨/2e⟩

Added \rom for producing upright parens and numerals in italic text. The 2.09 definition of \rom is taken from amsart.sty, version 1.1b, 31 July 1991. – dmj, 4/19/96

136 ⟨∗209⟩

137 \def\rom#1{%
138  \leavevmode
139  \skip@\lastskip
140  \unskip\/%
141  \ifdim\skip@=\z@\else\hskip\skip@\fi
142  {\rm#1}%

143 } 144 ⟨/209⟩

145 ⟨2e⟩\let\rom\textup
146 \normalsize

147

148 \oddsidemargin .75in
149 \evensidemargin .75in
150 \marginparwidth .5in
151 \marginparsep .125in
152 \topmargin .25in
153 \headheight 12pt
154 \headsep 16pt
155 ⟨209⟩\footheight 10pt

156 \footskip 15pt

157

158 \textheight 47pc
159 \textwidth 30pc
160 \columnsep 10pt
161 \columnseprule 0pt

162

163 \footnotesep 7pt
164 \skip\footins 15pt plus 4pt minus 3pt

165

166 \floatsep 12pt plus 2pt minus 2pt
167 \textfloatsep \floatsep

168

169 \intextsep 1pc plus 1pc

170

171 ⟨209⟩\@maxsep 1pc

172

173 \dblfloatsep 12pt plus 2pt minus 2pt

174

175 \dbltextfloatsep 20pt plus 2pt minus 4pt

176

177 ⟨209⟩\@dblmaxsep 20pt

178

179 \@fptop 0pt plus 1fil

180

181 \@fpsep 1pc plus 2fil

182

183 \@fpbot 0pt plus 1fil

184

185 \@dblfptop 0pt plus 1fil

186

187 \@dblfpsep 8pt plus 2fil

188

189 \@dblfpbot 0pt plus 1fil

190

191 \marginparpush 6pt

192

193 \parskip 0pt plus .1pt

194

195 % \parindent moved to end

196

197 % \parindent 10pt

198

199 \partopsep 0pt

Set \clubpenalty and \widowpenalty to their maximum values to inhibit widows and orphans. – dmj, 4/17/96

200 \clubpenalty\@M
201 \widowpenalty\@M

202

203 ⟨∗209⟩

204 \@lowpenalty 51
205 \@medpenalty 151
206 \@highpenalty 301

207

208 \@beginparpenalty -\@lowpenalty
209 \@endparpenalty -\@lowpenalty
210 \@itempenalty -\@lowpenalty

211 ⟨/209⟩

3.1 Section headings

\c@part
\c@section
\c@subsection
\c@subsubsection
\c@paragraph

212 ⟨∗209⟩

213 \newcounter {part}
214 \newcounter {section}
215 \newcounter {subsection}[section]
216 \newcounter {subsubsection}[subsection]
217 \newcounter {paragraph}[subsubsection]
\thepart
\thesection
\thesubsection
\thesubsubsection
\theparagraph

218 \def\thepart{\Roman{part}}
219 \def\thesection{\arabic{section}}
220 \def\thesubsection{\thesection.\arabic{subsection}}
221 \def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
222 \def\theparagraph{\thesubsubsection.\arabic{paragraph}}

223 ⟨/209⟩

\if@uchead
224 \newif\if@uchead
225 \@ucheadfalse

226

227 ⟨209⟩\setcounter{secnumdepth}{3}
\part
228 \def\part{%
229  \@startsection{part}{9}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}
230  {4\p@}{\normalsize\sf\@ucheadtrue}%

231 }

\section
232 \def\section{%
233  \@startsection{section}{1}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}%
234  {4\p@}{\normalsize\sf\@ucheadtrue}%

235 }

\subsection
236 \def\subsection{%
237  \@startsection{subsection}{2}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}

238  {4\p@}{\normalsize\sf}%

239 }

\subsubsection
240 \def\subsubsection{%
241  \@startsection{subsubsection}{3}{\parindent}{6\p@ \@plus \p@}%
242  {-5\p@}{\normalsize\it}%

243 }

\paragraph
244 \def\paragraph{%
245  \@startsection{paragraph}{3}{\parindent}{6\p@ \@plus \p@}%
246  {-5\p@}{\normalsize\it}%

247 }

\@period \subsubsections and \paragraphs are set as run-in headings, with a period added after the heading. However, if the text immediately following the \subsubsection or \paragraph is either another section header or (more likely) a list of some sort, then the period should be ommitted, since the heading will be put on a line by itself. This is implemented in a rather grotty way using \@period and modifying

 \@startsection, \@xsect, and \@trivlist.
248 \let\@period=.
\@startsection
249 \def\@startsection#1#2#3#4#5#6{%
250  \if@noskipsec
251  \global\let\@period\@empty
252  \leavevmode
253  \global\let\@period.%
254  \fi
255  \par
256  \@tempskipa #4\relax
257  \@afterindenttrue
258  \ifdim \@tempskipa <\z@
259  \@tempskipa -\@tempskipa
260  \@afterindentfalse
261  \fi
262  \if@nobreak
263  \everypar{}%
264  \else
265  \addpenalty\@secpenalty
266  \addvspace\@tempskipa
267  \fi
268  \@ifstar
269  {\@ssect{#3}{#4}{#5}{#6}}
270  {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%

271 }

\@sect
272 \def\@sect#1#2#3#4#5#6[#7]#8{%
273  \ifnum #2>\c@secnumdepth
274  \let\@svsec\@empty
275  \else
276  \refstepcounter{#1}%

277 ⟨∗209⟩

278  \edef\@svsec{%
279  \begingroup
280  \ifnum#2>2 \noexpand\rm \fi
281  \csname the#1\endcsname
282  \endgroup
283  \ifnum #2=1\relax .\fi
284  \hskip .5em

285 }% 286 ⟨/209⟩ 287 ⟨∗2e⟩

288  \protected@edef\@svsec{%
289  \textup{\csname the#1\endcsname}%
290  \ifnum #2=1\relax .\fi
291  \hskip .5em

292 }% 293 ⟨/2e⟩

294  \fi
295  \@tempskipa #5\relax
296  \ifdim \@tempskipa>\z@
297  \begingroup
298  #6\relax
299  \@hangfrom{\hskip #3\relax\@svsec}%
300  \begingroup
301  \interlinepenalty \@M

Unfortunately, we’re probably stuck with this. (Or we could redefine \@M :-) It might be worthwhile defining a variant of \@startsection that first upper-

cases the title and then just passes everything along to \@startsection. That would make us a little more bullet-proof, since we wouldn’t have to worry about tracking future changes in \@sect. But it might be more trouble than it’s really worth.

302  \if@uchead
303  \uppercase{#8}%
304  \else
305  #8%
306  \fi
307  \par
308  \endgroup
309  \endgroup
310  \csname #1mark\endcsname{#7}%
311  \addcontentsline{toc}{#1}{%
312  \ifnum #2>\c@secnumdepth \else

313  \protect\numberline{\csname the#1\endcsname}%
314  \fi
315  #7%

316 }%

317  \else
318  \def\@svsechd{%
319  #6%
320  \hskip #3\relax
321  \@svsec
322  \if@uchead
323  \uppercase{#8}%
324  \else
325  #8%
326  \fi
327  \csname #1mark\endcsname{#7}%
328  \addcontentsline{toc}{#1}{%
329  \ifnum #2>\c@secnumdepth \else
330  \protect\numberline{\csname the#1\endcsname}%
331  \fi
332  #7%

333 }% 334 }%

335  \fi
336  \@xsect{#5}%

337 }

\@xsect
338 \def\@xsect#1{%
339  \@tempskipa #1\relax
340  \ifdim \@tempskipa>\z@
341  \par
342  \nobreak
343  \vskip \@tempskipa
344  \@afterheading
345  \else
346  \global\@nobreakfalse
347  \global\@noskipsectrue
348  \everypar{%
349  \if@noskipsec
350  \global\@noskipsecfalse
351  \clubpenalty\@M
352  \hskip -\parindent
353  \begingroup
354  \@svsechd

Can’t we decide here whether to put the period in? Might have to introduce a new flag, though. How unpleasant.

355  \@period
356  \endgroup
357  \unskip

358  \@tempskipa #1\relax
359  \hskip -\@tempskipa
360  \else
361  \clubpenalty \@clubpenalty
362  \everypar{}%
363  \fi

364 }%

365  \fi
366  \ignorespaces

367 }

    Q. What is \@period doing in \@trivlist?

A. To handle the case where a trivlist is the first item after a \subsubsection

 or \paragraph.

Surely there has to be a better way of handling this.

\@trivlist
368 \def\@trivlist{%
369  \@topsepadd\topsep
370  \if@noskipsec
371  \global\let\@period\@empty
372  \leavevmode
373  \global\let\@period.%
374  \fi
375  \ifvmode
376  \advance\@topsepadd\partopsep
377  \else
378  \unskip
379  \par
380  \fi
381  \if@inlabel
382  \@noparitemtrue
383  \@noparlisttrue
384  \else
385  \@noparlistfalse
386  \@topsep\@topsepadd
387  \fi
388  \advance\@topsep \parskip
389  \leftskip\z@skip
390  \rightskip\@rightskip
391  \parfillskip\@flushglue

392 ⟨∗2e⟩

393  \par@deathcycles\z@
394  \@setpar{%
395  \if@newlist
396  \advance\par@deathcycles\@ne
397  \ifnum\par@deathcycles>\@m
398  \@noitemerr{\@@par}%
399  \fi
400  \else

401  {\@@par}%
402  \fi

403 }% 404 ⟨/2e⟩

405 ⟨209⟩  \@setpar{\if@newlist\else{\@@par}\fi}
406  \global\@newlisttrue
407  \@outerparskip\parskip

408 }

3.2 Appendices

409 ⟨∗trans⟩

410 \newcommand{\apbf}{\small\bf}
411 %% \newfont{\apbf}{cmbx9}

\@withappendix Page numbering style for appendices

412 \def\@withappendix#1{\rm A--\number #1}
appenheader
413 \def\appenheader{%
414 ⟨209⟩  \global\@topnum\z@
415 ⟨209⟩  \global\@botroom \textheight
416 ⟨2e⟩  \suppressfloats[t]%
417 ⟨209⟩  \begin{@float}{figure}[b]
418 ⟨2e⟩  \begin{@float}{figure}[!b]
419  \footnotesize
420  \newfont{\sc}{cmcsc10}% %%* ACK!
421  \parindent\z@
422  \null
423  \vskip -\textfloatsep
424  \vskip 11\p@
425  \hrule \@height .2\p@ \@width 30pc
426  \vskip 2\p@
427  \rule{\z@}{10\p@}%
428  \ignorespaces

429 }

430

431 \def\endappenheader{%
432  \end{@float}
433  \global\let\appendixhead\@empty

434 }

\appendixhead
435 \long\def\appendixhead#1#2#3#4{%
436  \section*{Appendix}

437

438  An appendix to this paper is available in electronic form
439  (PostScript$^{\mbox{\tiny TM}}$).  Any of the following methods
440  may be used to obtain it; or see the inside back cover of a

441  current issue for up-to-date instructions.

442

443  \begin{itemize}
444  \item By anonymous ftp from {\apbf acm.org}, file
445  {\apbf [pubs.journals.#1.append]p#2.ps}
446  \item Send electronic mail to {\apbf mailserve@acm.org} containing
447  the line\\ {\apbf send~[anonymous.pubs.journals.#1.append]p#2.ps}
448  \item By {\it Gopher} from {\apbf acm.org}
449  \item By anonymous ftp from {\apbf ftp.cs.princeton.edu},
450  file {\apbf pub/#1/append/p#2.ps}
451  \item Hardcopy from {\it Article Express}, for a fee: phone
452  800-238-3458, fax 201-216-8526, or write P.O.~Box~1801, Hoboken NJ
453  07030; and request {\sc acm-#1-appendix-{\small #2}}.
454  \end{itemize}

455

456  \clearpage
457  \pagenumbering{withappendix}
458  \appendix
459  \par
460  \noindent{\sc this document is the appendix to the following
461  paper:}
462  \hfill
463  \vskip 1em
464  \vbox{\sf \parindent\z@\@title}%
465  \vskip .5em
466  \vbox{\sf \parindent\z@\@author}%
467  \vskip .5em\noindent
468  \vskip 10\p@\noindent #4
469  \vskip 11\p@\noindent
470  \hrule \@height .2\p@
471  \par
472  \begin{bottomstuff}
473  \permission
474  \copyright #3 ACM
475  \par
476  \end{bottomstuff}

477 } 478 ⟨/trans⟩

\appendix
479 \def\appendix{%
480  \par
481  \part{Appendix}%
482  \par
483  \setcounter{section}{0}%
484  \setcounter{subsection}{0}%
485  \def\thesection{\Alph{section}}%
486  \def\thesubsection{\thesection.\arabic{subsection}}%

487 }

3.3 Lists

488 \labelsep 5pt

489

490 \settowidth{\leftmargini}{(9)}
491 \addtolength\leftmargini\labelsep

492

493 \settowidth{\leftmarginii}{(b)}
494 \addtolength\leftmarginii\labelsep

495

496 \leftmarginiii  \leftmarginii
497 \leftmarginiv   \leftmarginii
498 \leftmarginv    \leftmarginii
499 \leftmarginvi   \leftmarginii
500 \leftmargin     \leftmargini

501

502 \labelwidth\leftmargini
503 \advance\labelwidth-\labelsep
\@listI \@listi
504 \def\@listI{%
505  \leftmargin\leftmargini
506  \parsep \z@ \@plus \p@
507  \topsep 6\p@ \@plus 2\p@ \@minus 2\p@
508  \itemsep 2\p@ \@plus \p@ \@minus .5\p@

509 }

510

511 \let\@listi\@listI

512

513 \@listi
\@listii
514 \def\@listii{%
515  \leftmargin\leftmarginii
516  \labelwidth\leftmarginii
517  \advance\labelwidth-\labelsep
518  \topsep \z@ \@plus \p@
519  \parsep \z@ \@plus .5\p@
520  \itemsep \parsep

521 }

\@listiii
522 \def\@listiii{%
523  \leftmargin\leftmarginiii
524  \labelwidth\leftmarginiii
525  \advance\labelwidth-\labelsep
526  \topsep \z@ \@plus \p@
527  \parsep \z@ \@plus .5\p@
528  \itemsep \parsep

529 }

\@listiv
530 \def\@listiv{%
531  \leftmargin\leftmarginiv
532  \labelwidth\leftmarginiv
533  \advance\labelwidth-\labelsep

534 }

\@listv
535 \def\@listv{%
536  \leftmargin\leftmarginv
537  \labelwidth\leftmarginv
538  \advance\labelwidth-\labelsep

539 }

\@listvi
540 \def\@listvi{%
541  \leftmargin\leftmarginvi
542  \labelwidth\leftmarginvi
543  \advance\labelwidth-\labelsep

544 }

enumerate
545 \def\enumerate{%
546  \ifnum \@enumdepth >3
547  \@toodeep
548  \else
549  \advance\@enumdepth \@ne
550  \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
551  \list{\csname label\@enumctr\endcsname}{%
552  \usecounter{\@enumctr}%
553  \def\makelabel##1{##1\hss}%

554 }%

555  \fi

556 }

557

558 \let\endenumerate\endlist
longenum

559 ⟨∗trans⟩

560 \def\longenum{%
561  \ifnum \@enumdepth >3
562  \@toodeep
563  \else
564  \advance\@enumdepth \@ne
565  \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
566  \list{\csname label\@enumctr\endcsname}{%
567  \usecounter{\@enumctr}%
568  \labelwidth\z@

569 }%

570  \fi

571 }

572 %\leftmargin\z@ \itemindent\parindent}\fi} - this indents each item in
573 %    enumerate

574

575 \let\endlongenum\endlist

576 ⟨/trans⟩

Added \rom around all list labels. – dmj, 4/19/96

577 \def\labelenumi{\rom{(\arabic{enumi})}}
578 \def\theenumi{\arabic{enumi}}
579 \def\labelenumii{\rom{(\alph{enumii})}}
580 \def\theenumii{\alph{enumii}}
581 \def\p@enumii{\rom{\theenumi}}
582 \def\labelenumiii{\rom{\roman{enumiii}.}}
583 \def\theenumiii{\roman{enumiii}}
584 \def\p@enumiii{\rom{\theenumi(\theenumii)}}
585 \def\labelenumiv{\rom{\Alph{enumiv}.}}
586 \def\theenumiv{\Alph{enumiv}}
587 \def\p@enumiv{\rom{\p@enumiii\theenumiii}}
itemize
588 \def\itemize{%
589  \list{---\hskip -\labelsep}{%
590  \settowidth{\leftmargin}{---}%
591  \labelwidth\leftmargin
592  \addtolength{\labelwidth}{-\labelsep}%

593 }% 594 }

595

596 \let\enditemize\endlist
longitem

597 ⟨∗trans⟩

598 \def\longitem{%
599  \list{---}{%
600  \labelwidth\z@
601  \leftmargin\z@
602  \itemindent\parindent
603  \advance\itemindent\labelsep

604 }% 605 }

606

607 \let\endlongitem\endlist

608 ⟨/trans⟩

verse
609 \def\verse{%
610  \let\\=\@centercr

611  \list{}{%
612  \leftmargin 2pc
613  \itemindent -1.5em
614  \listparindent \itemindent
615  \rightmargin\leftmargin
616  \advance\leftmargin 1.5em

617 }%

618  \item[]

619 }

620

621 \let\endverse\endlist
quotation
622 \def\quotation{%
623  \list{}{%
624  \leftmargin 2pc
625  \listparindent .5em
626  \itemindent\listparindent
627  \rightmargin\leftmargin
628  \parsep \z@ \@plus \p@

629 }%

630  \item[]

631 }

632

633 \let\endquotation=\endlist
quote
634 \def\quote{%
635  \list{}{%
636  \leftmargin 2pc
637  \rightmargin\leftmargin

638 }%

639  \item[]

640 }

641

642 \let\endquote=\endlist
description
643 \def\description{%
644  \list{}{%
645  \listparindent\parindent
646  \labelwidth\z@
647  \leftmargin\z@
648  \itemindent\parindent
649  \advance\itemindent\labelsep
650  \def\makelabel##1{\it ##1.}%

651 }% 652 }

653

654 \let\enddescription\endlist

describe
655 \def\describe#1{%
656  \list{}{%
657  \listparindent\parindent
658  \settowidth{\labelwidth}{#1}%
659  \leftmargin\labelwidth
660  \addtolength\leftmargin\labelsep
661  \def\makelabel##1{##1\hfil}%

662 }% 663 }

664

665 \let\enddescribe\endlist

program There must be a more robust way of doing this. Should really do it by checking we are in a figure, but that would require some added bookkeeping.

666 \def\program{%
667 ⟨209⟩  \ifx\@currsize\normalsize
668 ⟨2e⟩  \ifdim\f@size pt=10pt
669  \small
670  \else
671  \rm
672  \fi
673  \tabbing

674 }

675

676 \let\endprogram\endtabbing

3.4 Theorems and proofs

\@begintheorem
677 \def\@begintheorem#1#2{%
678  \trivlist
679  \item[%

The following two lines seem a little peculiar (repeated 5 times).

680  \hskip \parindent
681  \hskip \labelsep
682  {\sc #1\enskip #2.}%
683  ]\it

684 }

\@opargbegintheorem
685 \def\@opargbegintheorem#1#2#3{%
686  \trivlist
687  \item[%
688  \hskip \parindent
689  \hskip \labelsep
690  \begingroup
691  \savebox\@tempboxa{\sc #3}%

692  {\sc #1}%
693  \enskip #2%
694  \ifdim \wd\@tempboxa>\z@
695  \enskip

Added parentheses around subtitle of lemma. – dmj, 4/19/96

696  (\box\@tempboxa)%
697  \fi.%
698  \endgroup
699  ]\it

700 }

\if@qeded
701 \newif\if@qeded
702 \global\@qededfalse
proof
703 \def\proof{%
704  \global\@qededfalse
705  \@ifnextchar[{\@xproof}{\@proof}%

706 }

707

708 \def\endproof{%
709  \if@qeded\else\qed\fi
710  \endtrivlist

711 }

\@proof
712 \def\@proof{%
713  \trivlist
714  \item[%
715  \hskip \parindent
716  \hskip \labelsep
717  {\sc Proof.}%

718 ]

719  \ignorespaces

720 }

\@xproof
721 \def\@xproof[#1]{%
722  \trivlist
723  \item[\hskip\parindent \hskip\labelsep{\sc Proof #1.}]%
724  \ignorespaces

725 }

\qed
726 \def\qed{%
727  \unskip
728  \kern 10\p@

729  \begingroup
730  \unitlength\p@
731  \linethickness{.4\p@}%
732  \framebox(6,6){}%
733  \endgroup
734  \global\@qededtrue

735 }

\newdef
736 \def\newdef#1#2{%
737  \expandafter\@ifdefinable\csname #1\endcsname
738  {\@definecounter{#1}%
739  \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
740  \global\@namedef{#1}{\@defthm{#1}{#2}}%
741  \global\@namedef{end#1}{\@endtheorem}%

742 }% 743 }

\@defthm
744 \def\@defthm#1#2{%
745  \refstepcounter{#1}%
746  \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}%

747 }

\@xdefthm
748 \def\@xdefthm#1#2{%
749  \@begindef{#2}{\csname the#1\endcsname}%
750  \ignorespaces

751 }

\@ydefthm
752 \def\@ydefthm#1#2[#3]{%
753  \trivlist
754  \item[%
755  \hskip \parindent
756  \hskip \labelsep
757  \begingroup
758  \savebox\@tempboxa{\it #3}%
759  {\it #2}%
760  \enskip \csname the#1\endcsname
761  \ifdim \wd\@tempboxa>\z@
762  \enskip

The following is inconsistent with the corresponding line in \opargbegintheorem.

763  \rom(\box\@tempboxa\rom)%
764  \fi.%
765  \endgroup

766 ]%

767  \ignorespaces

768 }

\@begindef
769 \def\@begindef#1#2{%
770  \trivlist
771  \item[%
772  \hskip \parskip
773  \hskip \labelsep

The following is inconsistent with the corresponding line in \opargbegintheorem.

774  {\it #1\enskip \rom{#2}.}%

775 ]% 776 }

\theequation
777 \def\theequation{\arabic{equation}}
titlepage
778 \def\titlepage{%
779  \@restonecolfalse
780  \if@twocolumn
781  \@restonecoltrue
782  \onecolumn
783  \else
784  \newpage
785  \fi
786  \thispagestyle{empty}%
787  \c@page\z@

788 }

789

790 \def\endtitlepage{%
791  \if@restonecol
792  \twocolumn
793  \else
794  \newpage
795  \fi

796 }

797 \arraycolsep 2.5pt

798

799 ⟨∗209⟩

800 \tabcolsep 6pt
801 \arrayrulewidth .4pt
802 \doublerulesep 2pt
803 \tabbingsep \labelsep

804

805 \skip\@mpfootins = \skip\footins
806 \fboxsep = 3pt \fboxrule = .4pt

807 ⟨/209⟩

3.5 Tables of contents

\@pnumwidth \@tocrmarg \@dotsep \c@tocdepth

808 ⟨∗209⟩

809 \def\@pnumwidth{1.55em}
810 \def\@tocrmarg {2.55em}
811 \def\@dotsep{4.5}
812 \setcounter{tocdepth}{3}
\tableofcontents
813 \def\tableofcontents{%
814  \section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
815  \@starttoc{toc}%

816 }

\l@part
817 \def\l@part#1#2{%
818  \addpenalty\@secpenalty
819  \addvspace{2.25em \@plus \p@}%
820  \begingroup
821  \@tempdima 3em
822  \parindent \z@
823  \rightskip \@pnumwidth
824  \parfillskip -\@pnumwidth
825  \begingroup
826  \large
827  \bf
828  \leavevmode
829  #1%
830  \hfil
831  \hb@xt@\@pnumwidth{\hss #2}%
832  \endgroup
833  \par
834  \nobreak
835  \endgroup

836 }

\l@section
837 \def\l@section#1#2{%
838  \addpenalty\@secpenalty
839  \addvspace{1.0em \@plus \p@}%
840  \@tempdima 1.5em
841  \begingroup
842  \parindent \z@
843  \rightskip \@pnumwidth
844  \parfillskip -\@pnumwidth
845  \bf
846  \leavevmode
847  #1%

848  \hfil
849  \hb@xt@\@pnumwidth{\hss #2}%
850  \par
851  \endgroup

852 }

\l@subsection
\l@subsubsection
853 \def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}

854

855 \def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\listoffigures
\l@figure
856 \def\listoffigures{%
857  \section*{List of Figures\@mkboth{LIST OF FIGURES}{LIST OF FIGURES}}
858  \@starttoc{lof}%

859 }

860

861 \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\listoftables
\l@table
862 \def\listoftables{%
863  \section*{List of Tables\@mkboth{LIST OF TABLES}{LIST OF TABLES}}
864  \@starttoc{lot}%

865 }

866

867 \let\l@table\l@figure

868 ⟨/209⟩

3.6 Bibliographies and indexes

thebibliography Which is the correct definition, this one or the one at the end of the file?

869 \def\thebibliography#1{%
870  \par
871  \footnotesize
872  \@startsection{subsection}{2}{\z@}{16\p@ \@plus 2\p@ \@minus \p@}
873  {2\p@}{\sf}*{\uppercase{\refname}}
874  \list{\arabic{enumi}.}{%
875  \settowidth\labelwidth{99.}%
876  \leftmargin\labelwidth
877  \advance\leftmargin\labelsep
878  \topsep \z@
879  \parsep \z@ \@plus .1\p@
880  \itemsep \parsep
881  \usecounter{enumi}%

882 }%

883  \def\newblock{\hskip .11em \@plus .33em \@minus .07em}%
884  \sloppy
885  \widowpenalty4500
886  \clubpenalty4500

887  \sfcode`\.=1000
888  \relax

889 }

890

891 \let\endthebibliography=\endlist
\if@restonecol

892 ⟨∗209⟩

893 \newif\if@restonecol
theindex
894 \def\theindex{%
895  \@restonecoltrue
896  \if@twocolumn \@restonecolfalse \fi
897  \columnseprule \z@
898  \columnsep 35\p@
899  \twocolumn[\section*{Index}]
900  \@mkboth{INDEX}{INDEX}%
901  \thispagestyle{plain}%
902  \parindent\z@
903  \parskip\z@ \@plus .3\p@\relax
904  \let\item\@idxitem

905 }

906

907 \def\endtheindex{%
908  \if@restonecol
909  \onecolumn
910  \else
911  \clearpage
912  \fi

913 }

\@idxitem \subitem \subsubitem \indexspace
914 \def\@idxitem{\par\hangindent 40\p@}
915 \def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
916 \def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
917 \def\indexspace{\par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@\relax}

918 ⟨/209⟩

\footnoterule This is supposed to be of 0 overall height.

Wait a minute. Height .004 points? Surely joking.

919 \def\footnoterule{%
920  \kern-3\p@
921  \hrule \@width 47\p@ %\@height .004\p@
922  \kern 2.6\p@

923 }

3.7 Floats and captions

\@makefntext
924 \long\def\@makefntext#1{%
925  \parindent 1em
926  \noindent $^{\@thefnmark}$#1%

927 }

\c@topnumber \topfraction \c@bottomnumber \bottomfraction \c@totalnumber \textfraction \floatpagefraction \c@dbltopnumber \dbltopfraction \dblfloatpagefraction Changed float placement parameters in an attempt to enforce the ACM’s styles.

In particular, set bottomnumber and \bottomfraction to 0 to inhibit floats from appearing at the bottom of a page. There should be a minimum of four lines of text on a page, so \texfraction should be set to

             4 × (\frac{\baselineskip}{\textheight}) = 4 × (\frac{1 pc}{47 pc}) ≈ .085106

We’ll round this up to .086 since it’s probably better to require a little more than we need than to risk allowing less than we want. Finally, we set \topfraction to .92 so that floats at the top of a page will be allowed to take up as much as 1 − \textfraction of the page. [Note: need to check what value of \floatpagefraction should be.] – dmj, 4/17/96

928 ⟨209⟩\setcounter{topnumber}{2}
929 \def\topfraction{.92}
930 \setcounter{bottomnumber}{0}
931 \def\bottomfraction{0}
932 ⟨209⟩\setcounter{totalnumber}{3}
933 \def\textfraction{.086}
934 \def\floatpagefraction{.6}
935 ⟨209⟩\setcounter{dbltopnumber}{2}
936 ⟨209⟩\def\dbltopfraction{.7}
937 ⟨209⟩\def\dblfloatpagefraction{.5}

\@makecaption Changed colon to period in “long caption” case. [8/14/95–dmj]

We should think about consolidating and/or merging some of the numerous caption macros. For example, \nocaption would be unnecessary if \caption did something sensible when handed an empty argument. Also, much of \@makecaption is identical to code found elsewhere, and should probably be shared.

938 \long\def\@makecaption#1#2{%
939  \vskip 1pc
940  \setbox\@tempboxa\hbox{#1.\quad #2}%
941  \ifdim \wd\@tempboxa >\hsize
942  #1.\quad #2\par
943  \else
944  \centerline{\box\@tempboxa}%
945  \fi

946 }

\nocaption
947 \def\nocaption{%
948  \refstepcounter\@captype
949  \par
950  \vskip 1pc
951  \centerline{\footnotesize \csname fnum@\@captype \endcsname}%

952 }

\c@figure
\thefigure
\fps@figure
\ftype@figure
\ext@figure
\figurename
\fnum@figure

953 ⟨209⟩\newcounter{figure}
954 \def\thefigure{\@arabic\c@figure}

Changed \fps@figure from “tbp” to “tp” so that tables will only occur at the top of pages by default. Note that the author can still override this with an explicit optional argument on a figure or table environment, but that case should be taken care of by having bottomnumber and \bottomfraction both set to 0. Also changed \fps@table accordingly. – dmj, 4/17/96

955 \def\fps@figure{tp}
956 \def\ftype@figure{1}
957 \def\ext@figure{lof}
958 \def\figurename{Fig.}
959 \def\fnum@figure{\figurename~\thefigure}
\figfilename
\@figfilename
960 \def\figfilename{\gdef\@figfilename}
961 \let\@figfilename\@empty

figure If producing fair copy, we force each figure onto a page by itself by (a) forcing a placement specifier of “p” and (b) resizing the figure to be a full page in height.

962 \if@faircopy
963 ⟨209⟩  \newenvironment{figure}{%
964 ⟨2e⟩  \renewenvironment{figure}[1][p]{%
965  \let\normalsize\footnotesize
966  \normalsize
967 ⟨209⟩  \@ifnextchar[{\@figure}{\@figure[]}%
968 ⟨2e⟩  \@float{figure}[p]%
969  }{\end@float
970  \global\setbox\@currbox\vbox to\textheight{%
971  \vskip\@fptop
972  \unvbox\@currbox
973  \vskip\@fpbot

What to do about figures with no numbers? Should we issue a warning? Should check with ACM to make sure that a caption number is always required.

974  \noindent \fnum@figure
975  \ifx\@figfilename\@empty\else
976  : {\tt \@figfilename}%
977  \global\let\@figfilename\@empty
978  \fi

979 }% 980 }

981 \else
982 ⟨209⟩  \newenvironment{figure}{%
983 ⟨2e⟩  \renewenvironment{figure}{%
984  \let\normalsize\footnotesize
985  \normalsize
986  \@float{figure}
987  }{\end@float}
988 \fi
\@figure
989 ⟨209⟩\def\@figure[#1]{\@float{figure}[p]}

figure* We don’t support twocolumn mode, so figure* is identical to figure.

990 \expandafter\let\csname figure*\endcsname\figure
991 \expandafter\let\csname endfigure*\endcsname\endfigure
table
992 ⟨209⟩\newenvironment{table}{%
993 ⟨2e⟩\renewenvironment{table}{%
994  \let\normalsize\footnotesize
995  \normalsize
996  \@float{table}%
997 }{\end@float}
table*
998 \expandafter\let\csname table*\endcsname\table
999 \expandafter\let\csname endtable*\endcsname\endtable
\thetable \c@table \fps@table \ftype@table \ext@table \tablename \fnum@table See documentation of \fps@figure. – dmj, 4/17/96
1000 ⟨209⟩\newcounter{table}
1001 \def\thetable{\@Roman\c@table}
1002 \def\fps@table{tp}
1003 \def\ftype@table{2}
1004 \def\ext@table{lot}
1005 \def\tablename{Table}
1006 \def\fnum@table{\tablename~\thetable}
\@narrowfig \@nfigbox \@nfcapbox \if@nfeven
1007 \newdimen\@narrowfig
1008 \newbox\@nfigbox
1009 \newbox\@nfcapbox
1010 \newif\if@nfeven
acmtable
1011 \def\acmtable#1{%
1012  \@narrowfig #1\relax
1013  \let\caption\@atcap

1014  \let\nocaption\@atnocap
1015  \@ifnextchar[{\@ntab}{\@ntab[\fps@table]}%

1016 }

1017

1018 \def\@ntab[#1]{%
1019  \expandafter\table\expandafter[#1]%
1020  \setbox\@nfigbox\vbox\bgroup
1021  \hsize \@narrowfig
1022  \@parboxrestore

1023 }

1024

1025 \def\endacmtable{%
1026  \hb@xt@\textwidth{%
1027  \hfil
1028  \vbox{%
1029  \hsize \@narrowfig
1030  \box\@nfcapbox{%
1031  \baselineskip 4\p@
1032  \hbox{\vrule \@height .4\p@ \@width \hsize}%

1033 }%

1034  \vskip -\p@
1035  \box\@nfigbox
1036  \vskip -\p@
1037  \begingroup
1038  \baselineskip 4\p@
1039  \hbox{\vrule \@height .4\p@ \@width \hsize}%
1040  \endgroup

1041 }%

1042  \hfil

1043 }%

1044  \end@float

1045 }

\@atmakecap
1046 \def\@atmakecap#1#2{%
1047  \setbox\@tempboxa\hbox{#1.\quad #2}%
1048  \ifdim \wd\@tempboxa >\hsize
1049  \sloppy #1.\quad #2 \par
1050  \else
1051  \centerline{\box\@tempboxa}%

1052 \fi 1053 }

\@atcap
1054 \def\@atcap{%
1055  \par
1056  \egroup
1057  \refstepcounter\@captype
1058  \@dblarg{\@atcapx\@captype}%

1059 }

\@atcapx
1060 \long\def\@atcapx#1[#2]#3{%
1061  \addcontentsline{\csname ext@#1\endcsname}{#1}{%
1062  \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%

1063 }%

1064  \setbox\@nfcapbox\vbox{%
1065  \hsize \wd\@nfigbox
1066  \@parboxrestore
1067  \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
1068  \par

1069 }% 1070 }

\@atnocap
1071 \def\@atnocap{%
1072  \egroup
1073  \refstepcounter\@captype
1074  \setbox\@nfcapbox\vbox{%
1075  \hsize \wd\@nfigbox
1076  \centerline{\footnotesize \fnum@table}

1077 }% 1078 }

narrowfig \@nfig
1079 \def\narrowfig#1{%
1080  \@narrowfig #1\relax
1081  \let\caption\@nfcap
1082  \let\nocaption\@nfnocap
1083  \@ifnextchar[{\@nfig}{\@nfig[\fps@figure]}%

1084 }

1085

1086 \def\@nfig[#1]{%
1087  \expandafter\figure\expandafter[#1]%
1088  \setbox\@nfigbox\vbox\bgroup
1089  \hsize\@narrowfig
1090  \@parboxrestore

1091 }

1092

1093 \def\endnarrowfig{%
1094  \hb@xt@\textwidth{%
1095  \if@nfeven
1096  \box\@nfcapbox  \hfil   \box\@nfigbox
1097  \else
1098  \box\@nfigbox   \hfil   \box\@nfcapbox

1099 \fi 1100 }%

1101 %    \end@float
1102  \endfigure

1103 }

Ah ha! So captions have to go at end of figure, not before. Seems a little unfriendly. Actually, it’s necessary for narrowfig, but doesn’t seem to be necessary

  for acmtable.
\@nfcap
1104 \def\@nfcap{%
1105  \par
1106  \egroup
1107  \refstepcounter\@captype
1108  \@dblarg{\@nfcapx\@captype}%

1109 }

\@nfmakecap
1110 \def\@nfmakecap #1#2{%
1111  \setbox\@tempboxa\hbox{#1.\quad #2}%
1112  \ifdim \wd\@tempboxa >\hsize
1113  \sloppy #1.\quad #2 \par
1114  \else
1115  \@@line{%
1116  \if@nfeven\else\hfil\fi
1117  \box\@tempboxa
1118  \if@nfeven\hfil\fi

1119 }% 1120 \fi 1121 }

\@nfcapx
1122 \long\def\@nfcapx#1[#2]#3{%
1123  \addcontentsline{\csname ext@#1\endcsname}{#1}{%
1124  \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%

1125 }%

1126  \@seteven
1127  \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
1128  \hsize \textwidth
1129  \advance\hsize -2pc
1130  \advance\hsize -\wd\@nfigbox
1131  \@parboxrestore
1132  \vfil
1133  \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
1134  \par
1135  \vfil

1136 }% 1137 }

\@nfnocap
1138 \def\@nfnocap{%
1139  \egroup
1140  \refstepcounter\@captype
1141  \@seteven

1142  \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
1143  \hsize \textwidth
1144  \advance\hsize -2pc
1145  \advance\hsize -\wd\@nfigbox
1146  \@parboxrestore
1147  \vfil
1148  \@@line{%
1149  \if@nfeven\else\hfil\fi
1150  \footnotesize \fnum@figure
1151  \if@nfeven\hfil\fi

1152 }%

1153  \vfil

1154 }% 1155 }

\@seteven \@nfmsg
1156 \def\@seteven{%
1157  \@nfeventrue
1158  \@ifundefined{r@@nf\thefigure}{}{%
1159  \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}%
1160  \edef\@tmpnf{\expandafter\@cdr\@tmpnf\@nil}%
1161  \ifodd\@tmpnf\relax
1162  \@nfevenfalse

1163 \fi 1164 }%

1165  \label{@nf\thefigure}%
1166  \edef\@tmpnfx{\if@nfeven e\else o\fi}%
1167  \edef\@tmpnf{%
1168  \write\@unused{%
1169  \noexpand\ifodd \noexpand\c@page
1170  \noexpand\if \@tmpnfx e%
1171  \noexpand\@nfmsg{\thefigure}
1172  \noexpand\fi
1173  \noexpand\else
1174  \noexpand\if \@tmpnfx o%
1175  \noexpand\@nfmsg{\thefigure}%
1176  \noexpand\fi
1177  \noexpand\fi

1178 }% 1179 }%

1180  \@tmpnf

1181 }

1182

1183 ⟨209⟩\def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage}

1184 ⟨∗2e⟩

1185 \def\@nfmsg#1{%
1186  \PackageWarning{acmart}{Bad narrowfig: Figure #1 on page \thepage}%

1187 } 1188 ⟨/2e⟩

\@narrowfig \@nfigbox \@nfcapbox \if@nfeven
1189 \newdimen\@narrowfig
1190 \newbox\@nfigbox
1191 \newbox\@nfcapbox
1192 \newif\if@nfeven

authinfo Could be redone so that order isn’t important. But maybe not worth effort.

1193 \newenvironment{authinfo}{%
1194  \newcommand{\name}[1] {Name: ##1\newline }
1195  \newcommand{\address}[1] {Address: ##1\newline }
1196  \newcommand{\affiliation}[1]  {Affiliation: ##1\newline }
1197  \newcommand{\biography}[1]  {Biography: ##1\newline}

1198 }{}

sponsor sponsor should be redone as a real environment. But this has to await clarification from ACM about what they want the markup to be.

1199 \newenvironment{sponsor}[2]{%
1200  Sponsor: #1\strut\newline
1201  \parbox{3.in}{#2}%
1202 }{\newline}
\and \maketitle
1203 \def\and{\\ and\\}

1204

1205 %* Probably still needs more work

1206

1207 \def\maketitle{%
1208  \newpage
1209  \thispagestyle{titlepage}%
1210 ⟨209⟩  \global\@topnum\z@

1211 ⟨∗2e⟩

1212  \suppressfloats[t]%

1213 ⟨/2e⟩

1214 %    \par
1215  \begingroup
1216  \lineskip \z@
1217  \null
1218  \vskip -30\p@\relax
1219  \parindent\z@
1220  \begingroup
1221  \LARGE
1222  \raggedright
1223  \hyphenpenalty\@M
1224  \sf \@title
1225  \par
1226  \endgroup
1227  \vskip 13.5\p@
1228 %        \normalsize
1229 %        \sf

1230  %vskip 13.5pt between title and author
1231  \begingroup
1232  \addtolength{\baselineskip}{2\p@}%

1233 \sf

1234  \@author\par
1235 %            \vskip -2pt
1236  \endgroup
1237  \begingroup
1238  \footnotesize
1239 %            \baselineskip 17pt\relax
1240  \medskip
1241 %            \hbox{\vrule height .2pt width 30pc}%
1242  \rule{\textwidth}{.2\p@}%

The space around the abstract doesn’t look quite right. Should investigate and fix. Maybe change \parskip in front matter to get uniform spacing (if that’s what’s desired).

1243  \ifvoid\@abstract
1244 ⟨2e⟩  \PackageWarning{acmart}{an abstract is required}%

1245 ⟨∗209⟩

1246  \typeout{^^JPackage acmart Warning: an abstract
1247  is required^^J}%

1248 ⟨/209⟩

1249  \else
1250  \vskip 8.5\p@
1251  \box\@abstract

1252 \fi

1253  \ifx\@categories\@empty \else
1254  \vskip 4\p@\relax %vskip8.5 space above abstract
1255 ⟨209⟩  \def\and{\unskip{\rm;} }%
1256 ⟨2e⟩  \def\and{\unskip\textup; }%
1257  Categories and Subject Descriptors: \@categories\par

1258 \fi

1259  \ifx\@terms\@empty\else
1260  \vskip 4\p@
1261  General Terms: \ignorespaces
1262  \@terms
1263  \par

1264 \fi

1265  \ifx\@keywords\@empty\else
1266  \vskip 4\p@
1267  Additional Key Words and Phrases: \ignorespaces
1268  \@keywords
1269  \par

1270 \fi

1271  \endgroup
1272  \label{@firstpg}%
1273 %        {\baselineskip 14pt\relax
1274 %         \hbox{\vrule height .2pt width 30pc}%
1275  \rule{\textwidth}{.2\p@}%

1276 % }%

1277  \vskip 23\p@
1278  \endgroup
1279  \let\maketitle\relax

Now we empty out a few temporary variables. However, note that we don’t clear out \@author and \@title, since we need those later for \appendixhead.

1280  \global\let\@categories\@empty
1281  \global\let\@terms\@empty
1282  \global\let\@keywords\@empty

1283 }

abstract \@abstract
1284 \newbox\@abstract
1285 \def\abstract{%
1286  \everypar{}%
1287  \global\setbox\@abstract\vbox\bgroup
1288  \footnotesize
1289  \trivlist\item[]\ignorespaces

1290 }

1291

1292 \def\endabstract{%
1293  \endtrivlist
1294  \egroup
1295  \ifx\maketitle\relax

1296 ⟨∗2e⟩

1297  \PackageWarning{acmart}{%
1298  the abstract must be specified before the \MessageBreak
1299  \string\maketitle\space command%

1300 }% 1301 ⟨/2e⟩ 1302 ⟨∗209⟩

1303  \typeout{^^JPackage acmart Warning:
1304  the abstract must be specified before the^^J%
1305  \string\maketitle\space command^^J%

1306 }% 1307 ⟨/209⟩

1308  \box\@abstract

1309 \fi 1310 }

\terms \@terms
1311 \def\terms{\gdef\@terms}

1312

1313 \let\@terms\@empty
\keywords \@keywords
1314 \def\keywords{\gdef\@keywords}

1315

1316 \let\@keywords\@empty

\category
\@category
\@categories

1317 \def\category#1#2#3{%
1318  \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}%

1319 }

Should probably issue some sort of warning if the first or second arguments are empty.

1320 \def\@category#1#2#3[#4]{%
1321  \edef\@tempa{\ifx \@categories\@empty \else ; \fi}%
1322  \begingroup
1323 ⟨209⟩  \def\protect{\noexpand\protect\noexpand}%
1324 ⟨2e⟩  \let\protect\@unexpandable@protect
1325  \let\and\relax
1326  \xdef\@categories{%
1327  \@categories
1328  \@tempa
1329  #1 [{\bf #2}]%
1330  \if!#4!%
1331  \if!#3!\else : #3\fi
1332  \else
1333  :\space
1334  \if!#3!\else #3\kern\z@---\hskip\z@\fi
1335  {\it #4}%

1336 \fi 1337 }%

1338  \endgroup

1339 }

1340

1341 \let\@categories\@empty
bottomstuff
1342 \def\bottomstuff{%

1343 ⟨∗209⟩

1344  \global\@topnum\z@
1345  \global\@botroom \textheight
1346  \@float{figure}[b]

1347 ⟨/209⟩ 1348 ⟨∗2e⟩

1349  \enlargethispage{-\baselineskip}%
1350  \suppressfloats[t]%
1351  \@float{figure}[!b]

1352 ⟨/2e⟩

1353  \footnotesize
1354  \parindent\z@
1355  \null
1356  \vskip -\textfloatsep
1357  \vskip 10\p@
1358  \hrule \@height .2\p@ \@width 30pc
1359 %        \vskip 2\p@

Changed this to 4pt to make up for lack of 10pt strut which used to be here in place of the 0pt strut. Could put 10pt strut back in, but then we’d get extra space if there is a blank line after the \begin{bottomstuff}.

1360  \vskip 4\p@

Took this out since a 0pt rule isn’t very useful

1361 %        \rule{\z@}{\z@}%
1362  \ignorespaces

1363 }

For L^{A}TEX 2ε, all we need at the end is \end@float. For L^{A}TEX 2.09, we also put in a strut to put in a little extra space at the bottom of the first page.

1364 ⟨2e⟩\let\endbottomstuff\end@float

1365 ⟨∗209⟩

1366 \def\endbottomstuff{%
1367  \par
1368  \strut
1369  \end@float

1370 } 1371 ⟨/209⟩

\permission Removed final line (“Permissions may be requested from Publications Dept, ACM Inc., 1515 Broadway, New York, NY 10036 USA, fax +1 (212) 869-0481, or permissions@acm.org.”) at request of G. Criscione. – 5/12/96

1372 \long\def\permission{\par
1373  Permission to make digital or hard copies of part or all of this
1374  work for personal or classroom use is granted without fee provided
1375  that copies are not made or distributed for profit or direct
1376  commercial advantage and that copies show this notice on the first
1377  page or initial screen of a display along with the full citation.
1378  Copyrights for components of this work owned by others than ACM
1379  must be honored. Abstracting with credit is permitted. To copy
1380  otherwise, to republish, to post on servers, to redistribute to
1381  lists, or to use any component of this work in other works,
1382  requires prior specific permission and/or a fee.
1383  \par

1384 }

acks Should this use small-caps instead?

1385 \newenvironment{acks}{%
1386  \@startsection{subsection}{2}{\z@}{-16\p@ \@plus -2\p@ \@minus -\p@}
1387  {2\p@}{\sf}*{\footnotesize ACKNOWLEDGMENTS}%
1388 }{\par}
received
1389 \newenvironment{received}{%
1390  \par
1391  \footnotesize
1392  \addvspace{18\p@ \@minus 4\p@}%

1393  \parindent\z@

1394 }{%

1395  \label{@lastpg}%
1396  \par

1397 }

1398 \mark{{}{}}
\ps@myheadings
1399 \def\ps@myheadings{%
1400  \let\@mkboth\@gobbletwo
1401  \def\@oddhead{%
1402 %        \null
1403  \hfill\small\sf\rightmark
1404  \hskip 19\p@
1405  {\Large$\cdot$}%
1406  \hskip 17\p@
1407  \thepage

1408 }%

1409  \def\@oddfoot{\null\hfill\tiny\@runningfoot}
1410  \def\@evenhead{%
1411  \small\sf\thepage
1412  \hskip 17\p@
1413  {\Large$\cdot$}%
1414  \hskip 19\p@
1415  \leftmark
1416  \hfill
1417 %        \null

1418 }%

1419  \def\@evenfoot{\tiny\@runningfoot \hfill\null}%
1420  \let\partmark\@gobble
1421  \let\sectionmark\@gobble
1422  \let\subsectionmark\@gobble

1423 }

\runningfoot
\@runningfoot
\firstfoot
\@firstfoot
\pages

1424 \def\runningfoot#1{\def\@runningfoot{#1}}

1425

1426 \let\@runningfoot\@empty

1427

1428 \def\firstfoot#1{\def\@firstfoot{#1}}

1429

1430 \let\@firstfoot\@empty

1431

1432 \def\pages{\pageref{@firstpg}--\pageref{@lastpg}}
\ps@titlepage
1433 \def\ps@titlepage{%
1434  \let\@mkboth\@gobbletwo
1435  \let\@oddhead\@empty

1436  \def\@oddfoot{\null\hfill\tiny\@firstfoot}%
1437  \let\@evenhead\@empty
1438  \def\@evenfoot{\tiny\@firstfoot\hfill\null}%

1439 }

\today
1440 \def\today{%
1441  \ifcase\month \or
1442  January\or
1443  February\or
1444  March\or
1445  April\or
1446  May\or
1447  June\or
1448  July\or
1449  August\or
1450  September\or
1451  October\or
1452  November\or
1453  December

1454 \fi

1455  \space\number\day, \number\year

1456 }

marray marray is a variant of array where every entry is in \displaystyle rather than

  \textstyle
1457 \def\marray{%
1458  \arraycolsep 2.5\p@
1459  \let\@acol\@arrayacol
1460  \let\@classz\@marrayclassz
1461  \let\@classiv\@marrayclassiv
1462  \let\\\@arraycr
1463  \let\@halignto\@empty
1464  \@tabarray

1465 }

1466

1467 \let\endmarray\endarray
\@marrayclassiv
\@marrayclassz
1468 \def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}}

1469

1470 \def\@marrayclassz{%
1471  \ifcase \@lastchclass
1472  \@acolampacol
1473  \or \@ampacol

1474 \or 1475 \or

1476  \or \@addamp
1477  \or \@acolampacol

1478  \or \@firstampfalse \@acol

1479 \fi

1480  \edef\@preamble{%
1481  \@preamble
1482  \ifcase \@chnum
1483  \hfil$\relax\displaystyle\@sharp$\hfil
1484  \or $\relax\displaystyle\@sharp$\hfil
1485  \or \hfil$\relax\displaystyle\@sharp$%

1486 \fi 1487 }% 1488 }

1489 \ps@myheadings

1490

1491 \pagenumbering{arabic}

1492

1493 \onecolumn

1494

1495 %\if@faircopy \raggedright \fi

1496

1497 \parindent 10pt

1498 ⟨/cls⟩

4 Bibliography stuff

The following code was adapted from version 4 of chicago.sty by Glenn Paulley ⟨gnpaulle@bluebox.uwaterloo.ca⟩ for the new ACM bibliography style, which is similar (but not identical) to the “Chicago” style. It should be used with the acmtrans BibTEX style. The code was originally adapted by Andrew Appel and Rebecca Davies and later reworked by David M. Jones. Most of the prehistory of chicago.sty has been removed from the comments below, and the code has been modernized and reorganized somewhat in the interests of efficiency and (hopefully) maintainability.

The acmtrans BibTEX style has support for abbreviated author lists and for year-only citations. This is implemented by having the citations actually look like

\citeauthoryear{⟨full-author-info⟩}{⟨abbrev-author-info⟩}{⟨year⟩}

These labels are processed by the following L^{A}TEX commands.

\cite produces citations with full author list and year, e.g., “[Brown 1978; Jarke, Turner, Stohl, et al. 1985]”

\citeA produces citations with only the full author list, e.g., “[Brown; Jarke, Turner and Stohl]”

\shortcite produces citations with an abbreviated author list and year.

\shortciteA produces only the abbreviated author list.

\citeyear produces the year information only, within brackets.

\citeN produces citations with the full author list and year, but can be used as nouns in a sentence; parentheses appear only around the year, not around the author names, e.g., “Shneiderman [1978] states that… ”. If given multiple citekeys, the items referred to should all have the same author; otherwise, an error is signaled.

\shortciteN is a variant of \citeN that uses an abbreviated author list.

Each of these macros also has a ∗-form, which suppresses the brackets that would normally surround the citation. (For \citeN and \shortciteN, the ∗-forms are identical to the normal forms.)

Abbreviated author lists use the “et al.” construct.

This L^{A}TEX style file must be used a modern (1995 or later) version of the acmtrans BibTEX style.

1499 ⟨∗bib⟩

1500 ⟨cls⟩\typeout{Using ACM bibliography style}

1501 % 1502 ⟨∗!cls & 2e⟩

1503 \ProvidesPackage{acmbib}{\filedate\space\fileversion\space
1504 ACM bibliography style}

1505 ⟨/!cls & 2e⟩ 1506 %

1507 ⟨!cls & 209⟩\typeout{Package `acmbib' \fileversion\space <\filedate>.}

1508 %

4.1 Citation macros

Removed \def\@citeseppen{-1000} from beginning of all cite macros, since that was left over from named.sty and not actually used anywhere, although it might not be a bad idea to incorporate something of that sort into our code. – dmj 8/8/95

Each \cite-like macro must do three things:

1. Define \@cite, which will be used to format the in-text citation. Typically, this must decide whether to put brackets around the reference, and handles the optional argument to \cite.

2. Define \citeauthoryear, which determinines which part of the citation information is used in the citation.

3. Call the appropriate low-level citation command, which should be essentially identical to the standard L^{A}TEX \cite command. In this style, this is either \@citenormal, which separates multiple citations by semi-colons, or \@citeyear, which uses a comma to separate multiple references. The latter is used whenever the output consists of a series of years.

\bibyear See the description of output.year.check in acmtrans.dtx for an explanation

of why this is necessary. The \unskips and \ignorespaces are to eliminate any extra space that might creep in otherwise. (The first \unskip is the only one that should be necessary, but the others don’t hurt.)

1509 \newcommand\bibyear[2]{%
1510  \unskip\quad\ignorespaces#1\unskip
1511  \if#2..\quad \else \quad#2\relax \fi

1512 }

\bibemph \bibemphic \bibemphsc

1513 ⟨∗2e⟩

1514 \let\bibemph\emph
1515 \let\bibemphic\emph
1516 \let\bibsc\textsc

1517 ⟨/2e⟩ 1518 ⟨∗209⟩

1519 \newcommand{\bibemph}[1]{{\em#1}}
1520 \newcommand{\bibemphic}[1]{{\em#1\/}}
1521 \newcommand{\bibsc}[1]{{\sc#1}}

1522 ⟨/209⟩

\@normalcite \@normalcite is used for any citation commands that should surround their output with square brackets.

1523 \def\@normalcite{%
1524  \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%

1525 }

\@citeNB \@citeNB puts in no brackets at all.

1526 \def\@citeNB{%
1527  \def\@cite##1##2{##1\if@tempswa , ##2\fi}%

1528 }

\@citeRB \@citeRB just produces a right bracket; the left bracket will be supplied by

  \citeauthoryear. This is used by \citeN and \shortciteN, which only put

brackets around the years, not around the authors.

1529 \def\@citeRB{%
1530  \def\@cite##1##2{##1\if@tempswa , ##2\fi]}%

1531 }

\start@cite Should explain this.

1532 \def\start@cite#1#2{%
1533  \edef\citeauthoryear##1##2##3{%
1534  ###1%
1535  \ifnum#2=\z@ \else\ ###2\fi

1536 }%

1537  \ifnum#1=\thr@@
1538  \let\@@cite\@citeyear
1539  \else

1540  \let\@@cite\@citenormal

1541 \fi

1542  \@ifstar{\@citeNB\@@cite}{\@normalcite\@@cite}%

1543 }

\cite This is using the abbreviated author list, rather than the full author list. Is this correct? At any rate, it should be consistent with \citeNP.

1544 \def\cite{\start@cite13}
\citeNP
1545 \def\citeNP{\cite*}
\citeA
1546 \def\citeA{\start@cite10}
\citeANP
1547 \def\citeANP{\citeA*}
\shortcite
1548 \def\shortcite{\start@cite23}
\shortciteNP
1549 \def\shortciteNP{\shortcite*}
\shortciteA
1550 \def\shortciteA{\start@cite20}
\shortciteANP
1551 \def\shortciteANP{\shortciteA*}
\citeyear
1552 \def\citeyear{\start@cite30}
\citeyearNP
1553 \def\citeyearNP{\citeyear*}
\citeN
1554 \def\citeN{%
1555  \@citeRB
1556  \def\citeauthoryear##1##2##3{##1\ [##3%
1557  \def\reserved@a{##1}%
1558  \def\citeauthoryear####1####2####3{%
1559  \def\reserved@b{####1}%
1560  \ifx\reserved@a\reserved@b
1561  ####3%
1562  \else

1563 ⟨∗2e⟩

1564  \PackageError{acmart}{author mismatch in \string\citeN}%

1565 ⟨/2e⟩ 1566 ⟨∗209⟩

1567  \errmessage{Package acmart Error: author mismatch
1568  in \string\citeN^^J^^J%
1569  See the acmart package documentation for explanation}%

1570 ⟨/209⟩ 1571 \fi 1572 }% 1573 }%

1574  \@ifstar\@citeyear\@citeyear

1575 }

\shortciteN
1576 \def\shortciteN{%
1577  \@citeRB
1578  \def\citeauthoryear##1##2##3{##2\ [##3%

Should \shortciteN compare the full author lists or the abbreviated author lists (as it currently does)?

1579  \def\reserved@a{##2}%
1580  \def\citeauthoryear####1####2####3{%
1581  \def\reserved@b{####2}%
1582  \ifx\reserved@a\reserved@b
1583  ####3%
1584  \else

1585 ⟨∗2e⟩

1586  \PackageError{acmart}{%
1587  author mismatch in \string\shortciteN

1588 }% 1589 ⟨/2e⟩ 1590 ⟨∗209⟩

1591  \errmessage{Package acmart Error: author mismatch
1592  in \string\shortciteN^^J^^J%
1593  See the acmart package documentation for explanation}%

1594 ⟨/209⟩ 1595 \fi 1596 }% 1597 }%

1598  \@ifstar\@citeyear\@citeyear

1599 }

\@citenormal
\@citeyear
1600 \def\@citenormal{%
1601  \@ifnextchar [{\@tempswatrue\@citex;}
1602  {\@tempswafalse\@citex;[]}%

1603 } 1604 %

1605 \def\@citeyear{%
1606  \@ifnextchar [{\@tempswatrue\@citex,}%
1607  {\@tempswafalse\@citex,[]}%

\@citex Although multiple citations within a single cite command should normally be separated by semi-colons, there are times when commas should be used instead. So, we modify the \@citex macro to take the delimiter as a parameter.

1609 \def\@citex#1[#2]#3{%
1610  \let\@citea\@empty
1611  \@cite{%
1612  \@for\@citeb:=#3\do{%
1613  \@citea
1614  \def\@citea{#1 }%
1615  \edef\@citeb{\expandafter\@iden\@citeb}%
1616  \if@filesw
1617  \immediate\write\@auxout{\string\citation{\@citeb}}%

1618 \fi

1619  \@ifundefined{b@\@citeb}{%
1620 ⟨2e⟩  {\reset@font\bfseries ?}%

1621 ⟨209⟩ {\bf ?}%

1622 ⟨2e⟩  \G@refundefinedtrue
1623 ⟨2e⟩  \@latex@warning{%
1624 ⟨209⟩  \@warning{%
1625  Citation `\@citeb' on page \thepage\space undefined%

1626 }% 1627 }%

1628  {\csname b@\@citeb\endcsname}%

1629 }%

1630  }{#2}%

1631 }

\@biblabel (from apalike.sty) No labels in the bibliography.

1632 \let\@biblabel\@gobble

1633 ⟨/bib⟩

\bibindent Indent second and subsequent lines of bibliographic entries. Stolen from openbib.sty: \newblock is set to \@empty. (???)

1634 ⟨∗cls⟩

1635 \newdimen\bibindent
1636 \bibindent=1.5em
\refname
1637 ⟨209⟩\def\refname{References}

thebibliography Which is the correct definition of thebibliography, this one or the earlier one?

1638 \def\thebibliography#1{%
1639  \footnotesize
1640  \section*{%
1641  \refname
1642  \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}%

1643 }%

1644  \list{[\arabic{enumi}]}{%
1645  \settowidth\labelwidth{[#1]}%
1646  \leftmargin\labelwidth
1647  \advance\leftmargin\labelsep
1648  \advance\leftmargin\bibindent
1649  \itemindent -\bibindent
1650  \listparindent \itemindent
1651  \parsep \z@
1652  \usecounter{enumi}%

1653 }%

1654  \let\newblock\@empty
1655  \sloppy
1656  \sfcode`\.=1000\relax

1657 } 1658 ⟨/cls⟩

Index

Numbers written in italic refer to the page where the corresponding entry is described, the ones underlined to the code line of the definition, the rest to the code lines where the entry is used.

Symbols

\@@cite 1538, 1540, 1542 \@@line …. 1115, 1148 \@@par …. 398, 401, 405 \@Roman . . . . . . . . . 1001

\@abstract 1243, 1251,

\underline{1284}, 1287, 1308 \@acol . . . . . 1459, 1478

\@acolampacol 1472, 1477

\@addamp . . . . . . . . 1476

\@addtopreamble . . 1468
\@afterheading . . . . 344
\@afterindentfalse . 260
\@afterindenttrue . 257

\@ampacol . . . . . . . 1473

\@arrayacol . . . . . . 1459

\@arraycr . . . . . . . 1462 \@atcap …. 1013, \underline{1054} \@atcapx … 1058, \underline{1060}

\@atmakecap . \underline{1046}, 1067

\@atnocap . . 1014, \underline{1071} \@author …. 466, 1234 \@auxout . . . . . . . . 1617

\@begindef . . . 749, \underline{769}
\@beginparpenalty . 208
\@begintheorem . . . . \underline{677}

                          \@biblabel . . . . . . \underline{1632}

\@botroom … 415, 1345

                          \@captype . . . . . . . .

948, 951, 1057, 1058, 1073, 1107, 1108, 1140

                          \@categories . . 1253,

1257, 1280, \underline{1317}

                          \@category . . . . . . \underline{1317}

\@cdr . . . . . . . . . . . 1160 \@chnum . . . . . . . . . 1482 \@citeNB … \underline{1526}, 1542 \@citeRB \underline{1529}, 1555, 1577 \@citea 1610, 1613, 1614 \@citeb . . . . . . 1612,

1615, 1617, 1619, 1625, 1628

                          \@citenormal 1540, \underline{1600}

\@citex . 1601, 1602,

1606, 1607, \underline{1609}

                          \@citeyear . . . 1538,

1574, 1598, \underline{1600} \@classiv . . . . . . . 1461 \@classz . . . . . . . . 1460

                          \@clubpenalty . . . . . 361

\@currbox …. 970, 972

                                                   \@currsize . . . . . . . 667

\@dblarg 270, 1058, 1108

                                                   \@dblfpbot . . . . . . . 189
                                                   \@dblfpsep . . . . . . . 187
                                                   \@dblfptop . . . . . . . 185
                                                   \@dblmaxsep . . . . . . . 177
                                                   \@definecounter . . . 738

\@defthm . . . . . 740, \underline{744} \@dotsep . . . . . . . . . \underline{808}

                                                   \@dottedtocline . . .

…. 853, 855, 861

                                                   \@endparpenalty . . . 209
                                                   \@endtheorem . . . . . . 741
                                                   \@enumctr . . . . . . . .

. 550–552, 565–567

                                                   \@enumdepth 546, 549,

550, 561, 564, 565

                                                   \@evenfoot . 1419, 1438
                                                   \@evenhead . 1410, 1437
                                                   \@faircopyfalse . . .

. . . . . . . 32, 37, 51

                                                   \@faircopytrue . . 35, 49
                                                   \@figfilename . . . . .

…. \underline{960}, 975–977 \@figure . . . . . 967, \underline{989}

                                                   \@firstampfalse . . 1478

\@firstfoot . . . . . . .

. . \underline{1424}, 1436, 1438

\@flushglue . . . . . . . 391

\@for . . . . . . . . . . . 1612 \@fpbot . . . . . . 183, 973 \@fpsep . . . . . . . . . . 181 \@fptop . . . . . . 179, 971

\@halignto . . . . . . 1463
\@hangfrom . . . . . . . 299

\@height . . . . . . \underline{24}, 425, 470, 921, 1032, 1039, 1358

\@highpenalty . . . . . 206

\@iden . . . . . . . . . . 1615 \@idxitem …. 904, \underline{914}

\@ifdefinable . . . . . 737
\@ifnextchar 705, 746,

967, 1015, 1083, 1318, 1601, 1606

\@ifstar . . . . . 268,

1542, 1574, 1598

\@ifundefined 1158, 1619
\@itempenalty . . . . . 210
\@keywords . . . 1265,

1268, 1282, \underline{1314}

\@lastchclass . . . . 1471
\@latex@warning . . 1623

\@listI . . . . . . . 78, \underline{504} \@listi . 78, 92, 111, \underline{504} \@listii . . . . . . . . . \underline{514} \@listiii . . . . . . . . \underline{522} \@listiv . . . . . . . . . \underline{530} \@listv . . . . . . . . . . \underline{535} \@listvi . . . . . . . . . \underline{540}

\@lowpenalty . . . . . .

…. 204, 208–210

\@makecaption . . . . . \underline{938}
\@makefntext . . . . . . \underline{924}
\@marrayclassiv . . .

. . . . . . 1461, \underline{1468}

\@marrayclassz . . . .

. . . . . . 1460, \underline{1468} \@maxsep . . . . . . . . . 171

\@medpenalty . . . . . . 205

\@minus . . . . . . . . . . \underline{24}

\@mparswitchtrue . . 57
\@mpfootins . . . . . . . 805

\@namedef …. 740, 741

\@narrowfig . . . . . . .

… \underline{1007}, 1012, 1021, 1029, 1080, 1089, \underline{1189}

                          \@newlisttrue . . . . . 406
                          \@nextchar . . . . . . 1468

\@nfcap …. 1081, \underline{1104}

                          \@nfcapbox \underline{1007}, 1030,

1064, 1074, 1096, 1098, 1127, 1142, \underline{1189}

\@nfcapx … 1108, \underline{1122}

                          \@nfevenfalse . . . . 1162
                          \@nfeventrue . . . . . 1157

\@nfig . . . . . . . . . . \underline{1079} \@nfigbox \underline{1007}, 1020,

1035, 1065, 1075, 1088, 1096, 1098, 1127, 1130, 1142, 1145, \underline{1189}

                          \@nfmakecap . \underline{1110}, 1133

\@nfmsg . . . . . . . . . \underline{1156} \@nfnocap . . 1082, \underline{1138}

                          \@nobreakfalse . . . . 346
                          \@noitemerr . . . . . . . 398
                          \@noparitemtrue . . . 382
                          \@noparlistfalse . . 385
                          \@noparlisttrue . . . 383
                          \@normalcite   \underline{1523}, 1542
                          \@normalsize . . . . . . \underline{66}
                          \@noskipsecfalse . . 350
                          \@noskipsectrue . . . 347

\@ntab . . . . . 1015, 1018 \@oddfoot . . 1409, 1436 \@oddhead . . 1401, 1435

                          \@opargbegintheorem  \underline{685}

\@options . . . . . . . . 59

                          \@outerparskip . . . . 407
                          \@parboxrestore . . .

… 1022, 1066, 1090, 1131, 1146

\@period . . \underline{248}, 251,

253, 355, 371, 373 \@plus . . . . . . . . . . . \underline{24}

                          \@pnumwidth . . . . . . .

. \underline{808}, 823, 824, 831, 843, 844, 849

                          \@preamble . 1480, 1481

\@proof . . . . . . 705, \underline{712} \@ptsize . . . . . . . . . 64

                          \@qededfalse . . 702, 704

                                                   \@qededtrue . . . . . . . 734
                                                   \@restonecolfalse .

. . . . . . . . 779, 896

                                                   \@restonecoltrue . .

. . . . . . . . 781, 895

                                                   \@rightskip . . . . . . . 390
                                                   \@runningfoot . . . . .

. . 1409, 1419, \underline{1424}

                                                   \@secpenalty . . . . . .

…. 265, 818, 838 \@sect . . . . . . . 270, \underline{272}

                                                   \@seteven . . . . . . . .

. . 1126, 1141, \underline{1156}

                                                   \@setfontsize . . 72,

86, 105, 128–134 \@setpar . . . . . 394, 405

                                                   \@setsize . . . . . 68,

82, 101, 119–125 \@sharp . . . . . 1483–1485 \@ssect . . . . . . . . . . 269

                                                   \@startsection 229,

233, 237, 241, 245, \underline{249}, 872, 1386

\@starttoc 815, 858, 864 \@svsec . . . . . . 274,

278, 288, 299, 321 \@svsechd …. 318, 354

                                                   \@tabarray . . . . . . 1464

\@tempa …. 1321, 1328

                                                   \@tempskipa . . . 256,

258, 259, 266, 295, 296, 339, 340, 343, 358, 359

\@terms . . . . . . 1259,

1262, 1281, \underline{1311}

                                                   \@thefnmark . . . . . . . 926
                                                   \@thmcounter . . . . . . 739

\@title . . . . . 464, 1224 \@tmpnf . . . . . 1159–

1161, 1167, 1180 \@tmpnfx 1166, 1170, 1174

                                                   \@tocrmarg . . . . . . . \underline{808}

\@toodeep …. 547, 562 \@topnum 414, 1210, 1344 \@topsep . . . . . 386, 388

                                                   \@topsepadd 369, 376, 386
                                                   \@trivlist . . . . . . . \underline{368}
                                                   \@twosidetrue . . . . . 56
                                                   \@ucheadfalse . . . . . 225
                                                   \@ucheadtrue . . 230, 234

\@unexpandable@protect

. . . . . . . . . . 1324 \@unused . . . . . . . . 1168 \@width \underline{24}, 425, 921,

1032, 1039, 1358

\@withappendix . . . . \underline{412}

\@xdefthm …. 746, \underline{748} \@xproof . . . . . 705, \underline{721} \@xsect . . . . . . 336, \underline{338} \@ydefthm …. 746, \underline{752}

A

\abovedisplayshortskip

. . . . . . 76, 90, 109

\abovedisplayskip 74,

75, 88, 89, 107, 108 \abstract . . . . . . . 1285 abstract (environ-

ment) . . . . . \underline{1284} acks (environment) . \underline{1385} \acmtable . . . . . . . 1011 acmtable (environ-

ment) . . . . . \underline{1011}

\addcontentsline . .

311, 328, 1061, 1123 \address . . . . . . . . 1195

\affiliation . . . . . 1196

\and . . . . . . . \underline{1203}, 1325 \apbf . 410, 411, 444–450 \appendix …. 458, \underline{479}

\appendixhead . 433, \underline{435}
\appenheader . . . . . . 413
appenheader (environ-

ment) . . . . . . \underline{413}

\arraycolsep . 797, 1458
\arrayrulewidth . . . 801

authinfo (environment) . . . . . \underline{1193}

B

\baselineskip . 1031,

1038, 1232, 1239, 1273, 1349

\baselinestretch . . 63
\belowdisplayshortskip

. . . . . . 77, 91, 110

\belowdisplayskip .

. . . . . . 75, 89, 108 \bf . . . . . . . . . 410,

827, 845, 1329, 1621 \bibemph . . . . . . . . \underline{1513}

\bibemphic . . . . . . \underline{1513}
\bibemphsc . . . . . . \underline{1513}
\bibindent . . . . . . .

. . \underline{1634}, 1648, 1649 \bibsc . . . . . 1516, 1521 \bibyear . . . . . . . . \underline{1509}

\biography . . . . . . 1197
\bottomfraction . . . \underline{928}
\bottomstuff . . . . . 1342
bottomstuff (environ-

ment) . . . . . \underline{1342}

C

\c@bottomnumber . . . \underline{928}
\c@dbltopnumber . . . \underline{928}

\c@figure . . . . . . . . \underline{953} \c@page . . . . . 787, 1169

\c@paragraph . . . . . . \underline{212}

\c@part . . . . . . . . . . \underline{212}

\c@secnumdepth . . . .

…. 273, 312, 329

\c@section . . . . . . . \underline{212}
\c@subsection . . . . . \underline{212}
\c@subsubsection . . \underline{212}

\c@table . . . . . . . . \underline{1000}

\c@tocdepth . . . . . . . \underline{808}
\c@topnumber . . . . . . \underline{928}
\c@totalnumber . . . . \underline{928}

\caption … 1013, 1081 \category . . . . . . . \underline{1317}

\centerline . . . . . . .

944, 951, 1051, 1076 \citation . . . . . . . 1617 \cite . . . . . . . . . . . \underline{1544} \citeA . . . . . \underline{1546}, 1547 \citeANP . . . . . . . . \underline{1547}

\citeauthoryear . . .

… 1533, 1556, 1558, 1578, 1580

\citeN . . . . . . . . . . \underline{1554} \citeNP . . . . . . . . . \underline{1545} \citeyear . . \underline{1552}, 1553

\citeyearNP . . . . . . \underline{1553}
\clearpage . . . 456, 911
\clubpenalty . . . . . .

. 200, 351, 361, 886

\columnsep . . . 160, 898
\columnseprule 161, 897
\copyright . . . . . . . 474

\csname 281, 289, 310, 313, 327, 330, 551, 566, 737, 739, 749, 760, 951, 990, 991, 998, 999, 1061, 1062, 1067, 1123, 1124, 1133, 1159, 1628

                          \CurrentOption . . . . 42

D

                          \dblfloatpagefraction

. . . . . . . . . . . \underline{928}

                          \dblfloatsep . . . . . . 173
                          \dbltextfloatsep . . 175
                          \dbltopfraction . . . \underline{928}

\describe . . . . . . . . 655 describe (environ-

ment) . . . . . . \underline{655}

                          \description . . . . . . 643
                          description (environ-

ment) . . . . . . \underline{643}

                          \displaystyle . . . . .

. . 1468, 1483–1485 \do . . . . . . . . . . . . 1612

                          \doublerulesep . . . . 802

\ds@draft . . . . . . . . 58

                          \ds@faircopy . . . . . . \underline{48}
                          \ds@preprint . . . . . . \underline{48}
                          \ds@twocolumn . . . . . \underline{48}

E \edef . . . . . . . . 278,

550, 565, 1159, 1160, 1166, 1167, 1321, 1480, 1533, 1615

\emph . . . . . . 1514, 1515

                          \endabstract . . . . . 1292
                          \endacmtable . . . . . 1025
                          \endappenheader . . . 431

\endarray . . . . . . . 1467

                          \endbottomstuff . . .

. . . . . . 1364, 1366

                          \endcsname . . . . . . .

. 281, 289, 310, 313, 327, 330, 551, 566, 737, 739, 749, 760, 951, 990, 991, 998, 999, 1061, 1062, 1067, 1123, 1124, 1133, 1159, 1628

\enddescribe . . . . . . 665
\enddescription . . . 654
\endenumerate . . . . . 558
\endfigure . . 991, 1102
\enditemize . . . . . . . 596
\endlongenum . . . . . . 575
\endlongitem . . . . . . 607
\endmarray . . . . . . 1467
\endnarrowfig . . . . 1093
\endprogram . . . . . . . 676

\endproof . . . . . . . . 708

\endquotation . . . . . 633

\endquote . . . . . . . . 642

\endtabbing . . . . . . . 676

\endtable . . . . . . . . 999

\endthebibliography 891
\endtheindex . . . . . . 907
\endtitlepage . . . . . 790

\endverse . . . . . . . . 621

\enlargethispage . 1349

\enskip … 682, 693,

695, 760, 762, 774

\enumerate . . . . . . . 545
enumerate (environ-

ment) . . . . . . \underline{545} environments:

abstract . . . . . . \underline{34}

acks . . . . . . . . . . \underline{36}

acmtable . . . . . . \underline{27}
appenheader . . . . \underline{12}
authinfo . . . . . . \underline{32}
bottomstuff . . . . \underline{35}
describe . . . . . . \underline{18}
description . . . . \underline{17}
enumerate . . . . . . \underline{15}

figure* . . . . . . . \underline{27} figure . . . . . . . . \underline{26} itemize . . . . . . . \underline{16}

longenum . . . . . . \underline{15}
longitem . . . . . . \underline{16}

marray . . . . . . . . \underline{38}

narrowfig . . . . . . \underline{29}

program . . . . . . . \underline{18} proof . . . . . . . . . \underline{19}

quotation . . . . . . \underline{17}

quote . . . . . . . . . \underline{17}

   received . . . . . . \underline{36}

sponsor . . . . . . . \underline{32} table* . . . . . . . . \underline{27} table . . . . . . . . . \underline{27}

   thebibliography

. . . . . . . . . \underline{23}, \underline{44}

   theindex . . . . . . \underline{24}
   titlepage . . . . . . \underline{21}

verse . . . . . . . . . \underline{16}

\errmessage . 1567, 1591
\evensidemargin . . . 149
\ext@figure . . . . . . . \underline{953}
\ext@table . . . . . . \underline{1000}

F

\f@size . . . . . . . . . . 668 \fboxrule . . . . . . . . 806 \fboxsep . . . . . . . . . 806

\figfilename . . . . . . \underline{960}

\figure . . . . . 990, 1087 figure (environment) \underline{962} figure* (environment) \underline{990}

\figurename . . . . . . . \underline{953}
\firstfoot . . . . . . \underline{1424}
\floatpagefraction . \underline{928}

\floatsep …. 166, 167

\fnum@figure . . . . . .

… \underline{953}, 974, 1150

\fnum@table . \underline{1000}, 1076
\footheight . . . . . . . 155

\footins . . . . . 164, 805

\footnoterule . . . . . \underline{919}
\footnotesep . . . . . . 163
\footnotesize \underline{99}, 419,

871, 951, 965, 984, 994, 1076, 1150, 1238, 1288, 1353, 1387, 1391, 1639

\footskip . . . . . . . . 156

\fps@figure . . \underline{953}, 1083
\fps@table . \underline{1000}, 1015
\ftype@figure . . . . . \underline{953}
\ftype@table . . . . . \underline{1000}

G

\G@refundefinedtrue

. . . . . . . . . . 1622

H \hb@xt@ . . . . . . . 29,

831, 849, 1026, 1094

                          \headheight . . . . . . . 153

\headsep . . . . . . . . . 154 \ht . . . . . . . 1127, 1142 \Huge . . . . . . . . . . . . \underline{118} \huge . . . . . . . . . . . . \underline{118}

                          \hyphenpenalty . . . 1223

I \if 1170, 1174, 1330,

1331, 1334, 1511

                          \if@faircopy . . . . . .

…. \underline{31}, 962, 1495

                          \if@filesw . . . . . . 1616
                          \if@inlabel . . . . . . . 381
                          \if@newlist . . . 395, 405
                          \if@nfeven . . . \underline{1007},

1095, 1116, 1118, 1149, 1151, 1166, \underline{1189}

                          \if@nobreak . . . . . . . 262
                          \if@noskipsec . . . . .

…. 250, 349, 370 \if@qeded …. \underline{701}, 709

                          \if@restonecol . . . .

…. 791, \underline{892}, 908

                          \if@twocolumn . 780, 896

\if@uchead \underline{224}, 302, 322 \ifodd . . . . . 1161, 1169 \ifvoid . . . . . . . . . 1243

                          \ignorespaces . . . . .

…. 366, 428, 719, 724, 750, 767, 1062, 1067, 1124, 1133, 1261, 1267, 1289, 1362, 1510

                          \immediate . . . . . . 1617
                          \indexspace . . . . . . . \underline{914}
                          \interlinepenalty . 301
                          \intextsep . . . . . . . 169

\it 242, 246, 448, 451, 650, 683, 699, 758, 759, 774, 1335

\item . 444, 446, 448, 449, 451, 618, 630, 639, 679, 687, 714, 723, 754, 771, 904, 1289

\itemindent . . . . . . .

. 572, 602, 603, 613, 614, 626, 648, 649, 1649, 1650

\itemize . . . . . . . . . 588 itemize (environment) \underline{588} \itemsep … 96, 115,

508, 520, 528, 880 \ixpt . . . . . . . . . . . . 82

K

\keywords . . . . . . . \underline{1314}

L

\l@figure …. \underline{856}, 867 \l@part . . . . . . . . . . \underline{817}

\l@section . . . . . . . \underline{837}
\l@subsection . . . . . \underline{853}
\l@subsubsection . . \underline{853}

\l@table . . . . . . . . . \underline{862} \label . 1165, 1272, 1395

\labelenumi . . . . . . . 577
\labelenumii . . . . . . 579
\labelenumiii . . . . . 582
\labelenumiv . . . . . . 585
\labelsep . . . . 488,

491, 494, 503, 517, 525, 533, 538, 543, 589, 592, 603, 649, 660, 681, 689, 716, 723, 756, 773, 803, 877, 1647

\labelwidth . . . 502,

503, 516, 517, 524, 525, 532, 533, 537, 538, 542, 543, 568, 591, 592, 600, 646, 658, 659, 875, 876, 1645, 1646

\LARGE . . . . . . \underline{118}, 1221 \Large . . \underline{118}, 1405, 1413 \large . . . . . . . \underline{118}, 826 \lastskip . . . . . . . . 139

\leftmargin . 93, 112,

500, 505, 515, 523, 531, 536, 541, 572, 590, 591, 601, 612, 615, 616, 624, 627, 636, 637, 647, 659, 660, 876, 877, 1646–1648

\leftmargini . . . . . .

. . 93, 112, 490, 491, 500, 502, 505

\leftmarginii . . . . .

…. 493, 494, 496–499, 515, 516

\leftmarginiii . . . .

…. 496, 523, 524

\leftmarginiv . . . . .

…. 497, 531, 532

\leftmarginv . . . . . .

…. 498, 536, 537

\leftmarginvi . . . . .

…. 499, 541, 542 \leftskip . . . . . . . . 389 \lineskip …. 61, 1216

\linethickness . . . . 731
\listoffigures . . . . \underline{856}
\listoftables . . . . . \underline{862}
\listparindent . . . .

…. 614, 625, 626, 645, 657, 1650

\LoadClass . . . . . . . 46

\longenum . . . . . . . . 560 longenum (environ-

ment) . . . . . . \underline{559} \longitem . . . . . . . . 598 longitem (environ-

ment) . . . . . . \underline{597}

M

\makelabel 553, 650, 661

\maketitle . . . \underline{1203},

1295, 1299, 1305

\marginparpush . . . . 191
\marginparsep . . . . . 151
\marginparwidth . . . 150

\marray . . . . . . . . . 1457 marray (environment) \underline{1457} \mbox . . . . . . . . . . . . 439 \medskip . . . . . . . . 1240

\MessageBreak . . . . 1298

N

\name . . . . . . . . . . . 1194

\narrowfig . . . . . . 1079
narrowfig (environ-

ment) . . . . . \underline{1079} \newblock … 883, 1654 \newbox . 1008, 1009,

1190, 1191, 1284 \newdef . . . . . . . . . . \underline{736} \newfont . . . . . 411, 420 \newif . . . . . 31, 224,

701, 893, 1010, 1192 \newline …. 1194–

1197, 1200, 1202

\nocaption . . . . . . .

. . \underline{947}, 1014, 1082

\noexpand . . . . 280,

1169–1177, 1323

\normallineskip . . . 62
\normalsize . \underline{66}, 146,

230, 234, 238, 242, 246, 667, 965, 966, 984, 985, 994, 995, 1228

O

\oddsidemargin . . . . 148

\onecolumn 782, 909, 1493

\overfullrule . . . . . 58

P

\p@enumii . . . . . . . . 581

\p@enumiii . . . 584, 587

\p@enumiv . . . . . . . . 587

\PackageError 1564, 1586
\PackageWarning . . .

. . 1186, 1244, 1297

\PackageWarningNoLine

. . . . . . . . . . . . 40

\pagenumbering 457, 1491

\pageref . . . . . . . . 1432 \pages . . . . . . . . . . \underline{1424}

\par@deathcycles . .

…. 393, 396, 397

\paragraph . . . . . . . \underline{244}

\parbox . . . . . . . . . 1201

\parindent 195, 197,

241, 245, 352, 421, 464, 466, 572, 602, 645, 648, 657, 680, 688, 715, 723, 755, 822, 842, 902, 925, 1219, 1354, 1393, 1497

\parsep . . . . . . . 95, 114, 506, 519, 520, 527, 528, 628, 879, 880, 1651

\parskip . . . . . 193,

388, 407, 772, 903 \part . . . . . . . . \underline{228}, 481 \partmark . . . . . . . 1420

\partopsep . . . 199, 376
\PassOptionsToClass 42
\permission . . 473, \underline{1372}

\program . . . . . . . . . 666 program (environment) \underline{666} \proof . . . . . . . . . . . 703 proof (environment) . \underline{703}

\protected@edef . . . 288
\ProvidesPackage . 1503
\ps@myheadings . . . .

. . . . . . \underline{1399}, 1489

\ps@titlepage . . . . \underline{1433}

Q

\qed . . . . . . . . . 709, \underline{726} \quad . 940, 942, 1047,

1049, 1111, 1113, 1510, 1511

\quotation . . . . . . . 622
quotation (environ-

ment) . . . . . . \underline{622} \quote . . . . . . . . . . . 634 quote (environment) . \underline{634}

R

received (environ-

ment) . . . . . \underline{1389} \refname . . . . . 873,

\underline{1637}, 1641, 1642

\renewenvironment .

…. 964, 983, 993

\reserved@a . . . 1557,

1560, 1579, 1582

\reserved@b . . . 1559,

1560, 1581, 1582 \rm . . . . . . . . . 142,

280, 412, 671, 1255 \rom 137, 145, 577, 579,

581, 582, 584, 585, 587, 763, 774

\romannumeral . 550, 565

\rule 427, 1242, 1275, 1361

\runningfoot . . . . . \underline{1424}

S

\savebox . . . . . 691, 758 \sc . . . . . . 420, 453,

460, 682, 691, 692, 717, 723, 1521

\scriptsize . . . . . . . \underline{118}

\section \underline{232}, 436, 814,

857, 863, 899, 1640

\sectionmark . . . . . 1421

\sf 230, 234, 238, 464, 466, 873, 1224, 1229, 1233, 1387, 1403, 1411

\shortcite . \underline{1548}, 1549
\shortciteA . \underline{1550}, 1551
\shortciteANP . . . . \underline{1551}
\shortciteN . . . . . . \underline{1576}
\shortciteNP . . . . . \underline{1549}

\skip@ . . . . . . . 139, 141 \small . . . . . \underline{80}, 410,

453, 669, 1403, 1411 sponsor (environment)

. . . . . . . . . . \underline{1199}

\start@cite . . . \underline{1532},

1544, 1546, 1548, 1550, 1552

\string . 1299, 1305, 1564, 1568, 1587, 1592, 1617

\strut . . . . . 1200, 1368 \subitem . . . . . . . . . \underline{914}

\subsection . . . . . . . \underline{236}
\subsectionmark . . 1422
\subsubitem . . . . . . . \underline{914}
\subsubsection . . . . \underline{240}
\suppressfloats . . .

. . 416, 1212, 1350

T

\tabbing . . . . . . . . . 673

\tabbingsep . . . . . . . 803
\tabcolsep . . . . . . . 800

\table . . . . . . 998, 1019 table (environment) . \underline{992} table* (environment) \underline{998}

\tablename . . . . . . \underline{1000}
\tableofcontents . . \underline{813}

\terms . . . . . . . . . . \underline{1311}

\textfloatsep . . . . .

… 167, 423, 1356

\textfraction . . . . . \underline{928}
\textheight . . . . . . .

158, 415, 970, 1345 \textsc . . . . . . . . . 1516 \textup . . 145, 289, 1256

\textwidth 159, 1026,

1094, 1128, 1143, 1242, 1275

\thebibliography . .

. . . . . . . 869, 1638

thebibliography (envi-

ronment) \underline{869}, \underline{1638} \theenumi . 578, 581, 584

\theenumii . . . 580, 584
\theenumiii . . . 583, 587
\theenumiv . . . . . . . 586
\theequation . . . . . . \underline{777}
\thefigure . . . . . . .

\underline{953}, 1158, 1159, 1165, 1171, 1175

\theindex . . . . . . . . 894 theindex (environ-

ment) . . . . . . \underline{894} \thepage 1183, 1186,

1407, 1411, 1625

\theparagraph . . . . . \underline{218}

\thepart . . . . . . . . . \underline{218}

\thesection \underline{218}, 485, 486
\thesubsection   \underline{218}, 486
\thesubsubsection . \underline{218}

\thetable . . . . . . . \underline{1000}

\thispagestyle . . . .

… 786, 901, 1209 \thr@@ . . . . . . . . . . 1537 \tiny . \underline{118}, 439, 1409,

1419, 1436, 1438

\titlepage . . . . . . . 778
titlepage (environ-

ment) . . . . . . \underline{778} \today . . . . . . . . . . \underline{1440}

\topfraction . . . . . . \underline{928}
\topmargin . . . . . . . 152

\topsep 94, 113, 369,

507, 518, 526, 878 \tt . . . . . . . . . . . . . 976

\twocolumn . . . 792, 899

U

\unitlength . . . . . . . 730

\unskip . . . . . . 140, 357, 378, 727, 1255, 1256, 1510

\unvbox . . . . . . . . . . 972

V

\vbox . . . . . . . . 464, 466, 970, 1020, 1028, 1064, 1074, 1088, 1127, 1142, 1287

\verse . . . . . . . . . . . 609 verse (environment) . \underline{609} \vpt . . . . . . . . . . . . . 120 \vrule . . . . . . . 1032,

1039, 1241, 1274

W

                          \widowpenalty . 201, 885

\write . . . . . 1168, 1617

X

\xdef . . . . . . . 739, 1326

\xivpt . . . . . . . . . . . 122

\xpt . . . . . . . . . . . . . 68

\xviipt . . . . . . . . . . 123

\xxpt . . . . . . . . . . . . 124

\xxvpt . . . . . . . . . . . 125

Z

\z@skip . . . . . . . . . . 389