The acmart document class

David M. Jones

23 August 1995 Version 1.3e β

Contents

1 Introduction 1

2 The docstrip modules 1

3 The code 2 3.1 Section headings . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6 3.2 Appendices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11 3.3 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 3.4 Theorems and proofs . . . . . . . . . . . . . . . . . . . . . . . . . . 17 3.5 Tables of contents . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 3.6 Bibliographies and indexes . . . . . . . . . . . . . . . . . . . . . . . 22 3.7 Floats and captions . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

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

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⟩

136 \normalsize

137

138 \oddsidemargin .75in
139 \evensidemargin .75in
140 \marginparwidth .5in
141 \marginparsep .125in
142 \topmargin .25in
143 \headheight 12pt
144 \headsep 16pt
145 ⟨209⟩\footheight 10pt
146 \footskip 15pt

147

148 \textheight 47pc
149 \textwidth 30pc
150 \columnsep 10pt
151 \columnseprule 0pt

152

153 \footnotesep 7pt
154 \skip\footins 15pt plus 4pt minus 3pt

155

156 \floatsep 12pt plus 2pt minus 2pt
157 \textfloatsep \floatsep

158

159 \intextsep 1pc plus 1pc

161 ⟨209⟩\@maxsep 1pc

162

163 \dblfloatsep 12pt plus 2pt minus 2pt

164

165 \dbltextfloatsep 20pt plus 2pt minus 4pt

166

167 ⟨209⟩\@dblmaxsep 20pt

168

169 \@fptop 0pt plus 1fil

170

171 \@fpsep 1pc plus 2fil

172

173 \@fpbot 0pt plus 1fil

174

175 \@dblfptop 0pt plus 1fil

176

177 \@dblfpsep 8pt plus 2fil

178

179 \@dblfpbot 0pt plus 1fil

180

181 \marginparpush 6pt

182

183 \parskip 0pt plus .1pt

184

185 % \parindent moved to end

186

187 % \parindent 10pt

188

189 \partopsep 0pt

190

191 ⟨∗209⟩

192 \@lowpenalty 51
193 \@medpenalty 151
194 \@highpenalty 301

195

196 \@beginparpenalty -\@lowpenalty
197 \@endparpenalty -\@lowpenalty
198 \@itempenalty -\@lowpenalty

199 ⟨/209⟩

3.1 Section headings

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

200 ⟨∗209⟩

201 \newcounter {part}
202 \newcounter {section}
203 \newcounter {subsection}[section]
204 \newcounter {subsubsection}[subsection]

205 \newcounter {paragraph}[subsubsection]
\thepart
\thesection
\thesubsection
\thesubsubsection
\theparagraph

206 \def\thepart{\Roman{part}}
207 \def\thesection{\arabic{section}}
208 \def\thesubsection{\thesection.\arabic{subsection}}
209 \def\thesubsubsection{\thesubsection.\arabic{subsubsection}}
210 \def\theparagraph{\thesubsubsection.\arabic{paragraph}}

211 ⟨/209⟩

\if@uchead
212 \newif\if@uchead
213 \@ucheadfalse

214

215 ⟨209⟩\setcounter{secnumdepth}{3}
\part
216 \def\part{%
217  \@startsection{part}{9}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}
218  {4\p@}{\normalsize\sf\@ucheadtrue}%

219 }

\section
220 \def\section{%
221  \@startsection{section}{1}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}%
222  {4\p@}{\normalsize\sf\@ucheadtrue}%

223 }

\subsection
224 \def\subsection{%
225  \@startsection{subsection}{2}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}
226  {4\p@}{\normalsize\sf}%

227 }

\subsubsection
228 \def\subsubsection{%
229  \@startsection{subsubsection}{3}{\parindent}{6\p@ \@plus \p@}%
230  {-5\p@}{\normalsize\it}%

231 }

\paragraph
232 \def\paragraph{%
233  \@startsection{paragraph}{3}{\parindent}{6\p@ \@plus \p@}%
234  {-5\p@}{\normalsize\it}%

235 }

\@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.
236 \let\@period=.
\@startsection
237 \def\@startsection#1#2#3#4#5#6{%
238  \if@noskipsec
239  \global\let\@period\@empty
240  \leavevmode
241  \global\let\@period.%
242  \fi
243  \par
244  \@tempskipa #4\relax
245  \@afterindenttrue
246  \ifdim \@tempskipa <\z@
247  \@tempskipa -\@tempskipa
248  \@afterindentfalse
249  \fi
250  \if@nobreak
251  \everypar{}%
252  \else
253  \addpenalty\@secpenalty
254  \addvspace\@tempskipa
255  \fi
256  \@ifstar
257  {\@ssect{#3}{#4}{#5}{#6}}
258  {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%

259 }

\@sect
260 \def\@sect#1#2#3#4#5#6[#7]#8{%
261  \ifnum #2>\c@secnumdepth
262  \let\@svsec\@empty
263  \else
264  \refstepcounter{#1}%

265 ⟨∗209⟩

266  \edef\@svsec{%
267  \begingroup
268  \ifnum#2>2 \noexpand\rm \fi
269  \csname the#1\endcsname
270  \endgroup
271  \ifnum #2=1\relax .\fi
272  \hskip .5em

273 }% 274 ⟨/209⟩ 275 ⟨∗2e⟩

276  \protected@edef\@svsec{%
277  \textup{\csname the#1\endcsname}%

278  \ifnum #2=1\relax .\fi
279  \hskip .5em

280 }% 281 ⟨/2e⟩

282  \fi
283  \@tempskipa #5\relax
284  \ifdim \@tempskipa>\z@
285  \begingroup
286  #6\relax
287  \@hangfrom{\hskip #3\relax\@svsec}%
288  \begingroup
289  \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.

290  \if@uchead
291  \uppercase{#8}%
292  \else
293  #8%
294  \fi
295  \par
296  \endgroup
297  \endgroup
298  \csname #1mark\endcsname{#7}%
299  \addcontentsline{toc}{#1}{%
300  \ifnum #2>\c@secnumdepth \else
301  \protect\numberline{\csname the#1\endcsname}%
302  \fi
303  #7%

304 }%

305  \else
306  \def\@svsechd{%
307  #6%
308  \hskip #3\relax
309  \@svsec
310  \if@uchead
311  \uppercase{#8}%
312  \else
313  #8%
314  \fi
315  \csname #1mark\endcsname{#7}%
316  \addcontentsline{toc}{#1}{%
317  \ifnum #2>\c@secnumdepth \else
318  \protect\numberline{\csname the#1\endcsname}%
319  \fi
320  #7%

321 }% 322 }%

323  \fi
324  \@xsect{#5}%

325 }

\@xsect
326 \def\@xsect#1{%
327  \@tempskipa #1\relax
328  \ifdim \@tempskipa>\z@
329  \par
330  \nobreak
331  \vskip \@tempskipa
332  \@afterheading
333  \else
334  \global\@nobreakfalse
335  \global\@noskipsectrue
336  \everypar{%
337  \if@noskipsec
338  \global\@noskipsecfalse
339  \clubpenalty\@M
340  \hskip -\parindent
341  \begingroup
342  \@svsechd

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

343  \@period
344  \endgroup
345  \unskip
346  \@tempskipa #1\relax
347  \hskip -\@tempskipa
348  \else
349  \clubpenalty \@clubpenalty
350  \everypar{}%
351  \fi

352 }%

353  \fi
354  \ignorespaces

355 }

    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
356 \def\@trivlist{%
357  \@topsepadd\topsep
358  \if@noskipsec

359  \global\let\@period\@empty
360  \leavevmode
361  \global\let\@period.%
362  \fi
363  \ifvmode
364  \advance\@topsepadd\partopsep
365  \else
366  \unskip
367  \par
368  \fi
369  \if@inlabel
370  \@noparitemtrue
371  \@noparlisttrue
372  \else
373  \@noparlistfalse
374  \@topsep\@topsepadd
375  \fi
376  \advance\@topsep \parskip
377  \leftskip\z@skip
378  \rightskip\@rightskip
379  \parfillskip\@flushglue

380 ⟨∗2e⟩

381  \par@deathcycles\z@
382  \@setpar{%
383  \if@newlist
384  \advance\par@deathcycles\@ne
385  \ifnum\par@deathcycles>\@m
386  \@noitemerr{\@@par}%
387  \fi
388  \else
389  {\@@par}%
390  \fi

391 }% 392 ⟨/2e⟩

393 ⟨209⟩  \@setpar{\if@newlist\else{\@@par}\fi}
394  \global\@newlisttrue
395  \@outerparskip\parskip

396 }

3.2 Appendices

397 ⟨∗trans⟩

398 \newfont{\apbf}{cmbx9}

\@withappendix Page numbering style for appendices

399 \def\@withappendix#1{\rm A--\number #1}
appenheader
400 \def\appenheader{%

401 ⟨209⟩  \global\@topnum\z@
402 ⟨209⟩  \global\@botroom \textheight
403 ⟨2e⟩  \suppressfloats[t]%
404 ⟨209⟩  \begin{@float}{figure}[b]
405 ⟨2e⟩  \begin{@float}{figure}[!b]
406  \footnotesize
407  \newfont{\sc}{cmcsc10}% %%* ACK!
408  \parindent\z@
409  \null
410  \vskip -\textfloatsep
411  \vskip 11\p@
412  \hrule \@height .2\p@ \@width 30pc
413  \vskip 2\p@
414  \rule{\z@}{10\p@}%
415  \ignorespaces

416 }

417

418 \def\endappenheader{%
419  \end{@float}
420  \global\let\appendixhead\@empty

421 }

\appendixhead
422 \long\def\appendixhead#1#2#3#4{%
423  \section*{Appendix}

424

425  An appendix to this paper is available in electronic form
426  (PostScript$^{\mbox{\tiny TM}}$).  Any of the following methods
427  may be used to obtain it; or see the inside back cover of a
428  current issue for up-to-date instructions.

429

430  \begin{itemize}
431  \item By anonymous ftp from {\apbf acm.org}, file
432  {\apbf [pubs.journals.#1.append]p#2.ps}
433  \item Send electronic mail to {\apbf mailserve@acm.org} containing
434  the line\\ {\apbf send~[anonymous.pubs.journals.#1.append]p#2.ps}
435  \item By {\it Gopher} from {\apbf acm.org}
436  \item By anonymous ftp from {\apbf ftp.cs.princeton.edu},
437  file {\apbf pub/#1/append/p#2.ps}
438  \item Hardcopy from {\it Article Express}, for a fee: phone
439  800-238-3458, fax 201-216-8526, or write P.O.~Box~1801, Hoboken NJ
440  07030; and request {\sc acm-#1-appendix-{\small #2}}.
441  \end{itemize}

442

443  \clearpage
444  \pagenumbering{withappendix}
445  \appendix
446  \par
447  \noindent{\sc this document is the appendix to the following
448  paper:}

449  \hfill
450  \vskip 1em
451  \vbox{\sf \parindent\z@\@title}%
452  \vskip .5em
453  \vbox{\sf \parindent\z@\@author}%
454  \vskip .5em\noindent
455  \vskip 10\p@\noindent #4
456  \vskip 11\p@\noindent
457  \hrule \@height .2\p@
458  \par
459  \begin{bottomstuff}
460  \permission
461  \copyright #3 ACM
462  \par
463  \end{bottomstuff}

464 } 465 ⟨/trans⟩

\appendix
466 \def\appendix{%
467  \par
468  \part{Appendix}%
469  \par
470  \setcounter{section}{0}%
471  \setcounter{subsection}{0}%
472  \def\thesection{\Alph{section}}%
473  \def\thesubsection{\thesection.\arabic{subsection}}%

474 }

3.3 Lists

475 \labelsep 5pt

476

477 \settowidth{\leftmargini}{(9)}
478 \addtolength\leftmargini\labelsep

479

480 \settowidth{\leftmarginii}{(b)}
481 \addtolength\leftmarginii\labelsep

482

483 \leftmarginiii  \leftmarginii
484 \leftmarginiv   \leftmarginii
485 \leftmarginv    \leftmarginii
486 \leftmarginvi   \leftmarginii
487 \leftmargin     \leftmargini

488

489 \labelwidth\leftmargini
490 \advance\labelwidth-\labelsep
\@listI \@listi

491 \def\@listI{%
492  \leftmargin\leftmargini
493  \parsep \z@ \@plus \p@
494  \topsep 6\p@ \@plus 2\p@ \@minus 2\p@
495  \itemsep 2\p@ \@plus \p@ \@minus .5\p@

496 }

497

498 \let\@listi\@listI

499

500 \@listi
\@listii
501 \def\@listii{%
502  \leftmargin\leftmarginii
503  \labelwidth\leftmarginii
504  \advance\labelwidth-\labelsep
505  \topsep \z@ \@plus \p@
506  \parsep \z@ \@plus .5\p@
507  \itemsep \parsep

508 }

\@listiii
509 \def\@listiii{%
510  \leftmargin\leftmarginiii
511  \labelwidth\leftmarginiii
512  \advance\labelwidth-\labelsep
513  \topsep \z@ \@plus \p@
514  \parsep \z@ \@plus .5\p@
515  \itemsep \parsep

516 }

\@listiv
517 \def\@listiv{%
518  \leftmargin\leftmarginiv
519  \labelwidth\leftmarginiv
520  \advance\labelwidth-\labelsep

521 }

\@listv
522 \def\@listv{%
523  \leftmargin\leftmarginv
524  \labelwidth\leftmarginv
525  \advance\labelwidth-\labelsep

526 }

\@listvi
527 \def\@listvi{%
528  \leftmargin\leftmarginvi
529  \labelwidth\leftmarginvi

530  \advance\labelwidth-\labelsep

531 }

enumerate
532 \def\enumerate{%
533  \ifnum \@enumdepth >3
534  \@toodeep
535  \else
536  \advance\@enumdepth \@ne
537  \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
538  \list{\csname label\@enumctr\endcsname}{%
539  \usecounter{\@enumctr}%
540  \def\makelabel##1{##1\hss}%

541 }%

542  \fi

543 }

544

545 \let\endenumerate\endlist
longenum

546 ⟨∗trans⟩

547 \def\longenum{%
548  \ifnum \@enumdepth >3
549  \@toodeep
550  \else
551  \advance\@enumdepth \@ne
552  \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
553  \list{\csname label\@enumctr\endcsname}{%
554  \usecounter{\@enumctr}%
555  \labelwidth\z@

556 }%

557  \fi

558 }

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

561

562 \let\endlongenum\endlist

563 ⟨/trans⟩

564 \def\labelenumi{(\arabic{enumi})}
565 \def\theenumi{\arabic{enumi}}
566 \def\labelenumii{(\alph{enumii})}
567 \def\theenumii{\alph{enumii}}
568 \def\p@enumii{\theenumi}
569 \def\labelenumiii{\roman{enumiii}.}
570 \def\theenumiii{\roman{enumiii}}
571 \def\p@enumiii{\theenumi(\theenumii)}
572 \def\labelenumiv{\Alph{enumiv}.}
573 \def\theenumiv{\Alph{enumiv}}
574 \def\p@enumiv{\p@enumiii\theenumiii}

itemize
575 \def\itemize{%
576  \list{---\hskip -\labelsep}{%
577  \settowidth{\leftmargin}{---}%
578  \labelwidth\leftmargin
579  \addtolength{\labelwidth}{-\labelsep}%

580 }% 581 }

582

583 \let\enditemize\endlist
longitem

584 ⟨∗trans⟩

585 \def\longitem{%
586  \list{---}{%
587  \labelwidth\z@
588  \leftmargin\z@
589  \itemindent\parindent
590  \advance\itemindent\labelsep

591 }% 592 }

593

594 \let\endlongitem\endlist

595 ⟨/trans⟩

verse
596 \def\verse{%
597  \let\\=\@centercr
598  \list{}{%
599  \leftmargin 2pc
600  \itemindent -1.5em
601  \listparindent \itemindent
602  \rightmargin\leftmargin
603  \advance\leftmargin 1.5em

604 }%

605  \item[]

606 }

607

608 \let\endverse\endlist
quotation
609 \def\quotation{%
610  \list{}{%
611  \leftmargin 2pc
612  \listparindent .5em
613  \itemindent\listparindent
614  \rightmargin\leftmargin
615  \parsep \z@ \@plus \p@

616 }%

617  \item[]

618 }

619

620 \let\endquotation=\endlist
quote
621 \def\quote{%
622  \list{}{%
623  \leftmargin 2pc
624  \rightmargin\leftmargin

625 }%

626  \item[]

627 }

628

629 \let\endquote=\endlist
description
630 \def\description{%
631  \list{}{%
632  \listparindent\parindent
633  \labelwidth\z@
634  \leftmargin\z@
635  \itemindent\parindent
636  \advance\itemindent\labelsep
637  \def\makelabel##1{\it ##1.}%

638 }% 639 }

640

641 \let\enddescription\endlist
describe
642 \def\describe#1{%
643  \list{}{%
644  \listparindent\parindent
645  \settowidth{\labelwidth}{#1}%
646  \leftmargin\labelwidth
647  \addtolength\leftmargin\labelsep
648  \def\makelabel##1{##1\hfil}%

649 }% 650 }

651

652 \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.

653 \def\program{%
654 ⟨209⟩  \ifx\@currsize\normalsize
655 ⟨2e⟩  \ifdim\f@size pt=10pt
656  \small

657  \else
658  \rm
659  \fi
660  \tabbing

661 }

662

663 \let\endprogram\endtabbing

3.4 Theorems and proofs

\@begintheorem
664 \def\@begintheorem#1#2{%
665  \trivlist
666  \item[%

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

667  \hskip 10\p@
668  \hskip \labelsep
669  {\sc #1\hskip 5\p@\relax#2.}%

670 ]

671  \it

672 }

\@opargbegintheorem
673 \def\@opargbegintheorem#1#2#3{%
674  \trivlist
675  \item[%
676  \hskip 10\p@
677  \hskip \labelsep
678  {\sc #1%
679  \savebox\@tempboxa{#3}%
680  \ifdim \wd\@tempboxa>\z@
681  \hskip 5\p@\relax
682  \box\@tempboxa
683  \fi.}%

684 ]

685  \it

686 }

\if@qeded
687 \newif\if@qeded
688 \global\@qededfalse
proof
689 \def\proof{%
690  \global\@qededfalse
691  \@ifnextchar[{\@xproof}{\@proof}%

692 }

693

694 \def\endproof{%
695  \if@qeded\else\qed\fi
696  \endtrivlist

697 }

\@proof
698 \def\@proof{%
699  \trivlist
700  \item[%
701  \hskip 10\p@
702  \hskip \labelsep
703  {\sc Proof.}%

704 ]

705  \ignorespaces

706 }

\@xproof
707 \def\@xproof[#1]{%
708  \trivlist
709  \item[\hskip 10\p@\hskip \labelsep{\sc Proof #1.}]%
710  \ignorespaces

711 }

\qed
712 \def\qed{%
713  \unskip
714  \kern 10\p@
715  \begingroup
716  \unitlength\p@
717  \linethickness{.4\p@}%
718  \framebox(6,6){}%
719  \endgroup
720  \global\@qededtrue

721 }

\newdef
722 \def\newdef#1#2{%
723  \expandafter\@ifdefinable\csname #1\endcsname
724  {\@definecounter{#1}%
725  \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
726  \global\@namedef{#1}{\@defthm{#1}{#2}}%
727  \global\@namedef{end#1}{\@endtheorem}%

728 }% 729 }

\@defthm
730 \def\@defthm#1#2{%
731  \refstepcounter{#1}%
732  \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}%

733 }

\@xdefthm
734 \def\@xdefthm#1#2{%
735  \@begindef{#2}{\csname the#1\endcsname}%
736  \ignorespaces

737 }

\@ydefthm
738 \def\@ydefthm#1#2[#3]{%
739  \trivlist
740  \item[%
741  \hskip 10\p@
742  \hskip \labelsep
743  {\it #2%
744  \savebox\@tempboxa{#3}%
745  \ifdim \wd\@tempboxa>\z@

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

746  \ \box\@tempboxa
747  \fi.%
748  }]%
749  \ignorespaces

750 }

\@begindef
751 \def\@begindef#1#2{%
752  \trivlist
753  \item[%
754  \hskip 10\p@
755  \hskip \labelsep

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

756  {\it #1\ \rm #2.}%

757 ]% 758 }

\theequation
759 \def\theequation{\arabic{equation}}
titlepage
760 \def\titlepage{%
761  \@restonecolfalse
762  \if@twocolumn
763  \@restonecoltrue
764  \onecolumn
765  \else
766  \newpage
767  \fi
768  \thispagestyle{empty}%
769  \c@page\z@

770 }

772 \def\endtitlepage{%
773  \if@restonecol
774  \twocolumn
775  \else
776  \newpage
777  \fi

778 }

779 \arraycolsep 2.5pt

780

781 ⟨∗209⟩

782 \tabcolsep 6pt
783 \arrayrulewidth .4pt
784 \doublerulesep 2pt
785 \tabbingsep \labelsep

786

787 \skip\@mpfootins = \skip\footins
788 \fboxsep = 3pt \fboxrule = .4pt

789 ⟨/209⟩

3.5 Tables of contents

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

790 ⟨∗209⟩

791 \def\@pnumwidth{1.55em}
792 \def\@tocrmarg {2.55em}
793 \def\@dotsep{4.5}
794 \setcounter{tocdepth}{3}
\tableofcontents
795 \def\tableofcontents{%
796  \section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
797  \@starttoc{toc}%

798 }

\l@part
799 \def\l@part#1#2{%
800  \addpenalty\@secpenalty
801  \addvspace{2.25em \@plus \p@}%
802  \begingroup
803  \@tempdima 3em
804  \parindent \z@
805  \rightskip \@pnumwidth
806  \parfillskip -\@pnumwidth
807  \begingroup
808  \large
809  \bf
810  \leavevmode

811  #1%
812  \hfil
813  \hb@xt@\@pnumwidth{\hss #2}%
814  \endgroup
815  \par
816  \nobreak
817  \endgroup

818 }

\l@section
819 \def\l@section#1#2{%
820  \addpenalty\@secpenalty
821  \addvspace{1.0em \@plus \p@}%
822  \@tempdima 1.5em
823  \begingroup
824  \parindent \z@
825  \rightskip \@pnumwidth
826  \parfillskip -\@pnumwidth
827  \bf
828  \leavevmode
829  #1%
830  \hfil
831  \hb@xt@\@pnumwidth{\hss #2}%
832  \par
833  \endgroup

834 }

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

836

837 \def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
\listoffigures
\l@figure
838 \def\listoffigures{%
839  \section*{List of Figures\@mkboth{LIST OF FIGURES}{LIST OF FIGURES}}
840  \@starttoc{lof}%

841 }

842

843 \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\listoftables
\l@table
844 \def\listoftables{%
845  \section*{List of Tables\@mkboth{LIST OF TABLES}{LIST OF TABLES}}
846  \@starttoc{lot}%

847 }

848

849 \let\l@table\l@figure

850 ⟨/209⟩

3.6 Bibliographies and indexes

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

851 \def\thebibliography#1{%
852  \par
853  \footnotesize
854  \@startsection{subsection}{2}{\z@}{16\p@ \@plus 2\p@ \@minus \p@}
855  {2\p@}{\sf}*{\uppercase{\refname}}
856  \list{\arabic{enumi}.}{%
857  \settowidth\labelwidth{99.}%
858  \leftmargin\labelwidth
859  \advance\leftmargin\labelsep
860  \topsep \z@
861  \parsep \z@ \@plus .1\p@
862  \itemsep \parsep
863  \usecounter{enumi}%

864 }%

865  \def\newblock{\hskip .11em \@plus .33em \@minus .07em}%
866  \sloppy
867  \widowpenalty4500
868  \clubpenalty4500
869  \sfcode`\.=1000
870  \relax

871 }

872

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

874 ⟨∗209⟩

875 \newif\if@restonecol
theindex
876 \def\theindex{%
877  \@restonecoltrue
878  \if@twocolumn \@restonecolfalse \fi
879  \columnseprule \z@
880  \columnsep 35\p@
881  \twocolumn[\section*{Index}]
882  \@mkboth{INDEX}{INDEX}%
883  \thispagestyle{plain}%
884  \parindent\z@
885  \parskip\z@ \@plus .3\p@\relax
886  \let\item\@idxitem

887 }

888

889 \def\endtheindex{%
890  \if@restonecol
891  \onecolumn
892  \else
893  \clearpage

894  \fi

895 }

\@idxitem \subitem \subsubitem \indexspace
896 \def\@idxitem{\par\hangindent 40\p@}
897 \def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}
898 \def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
899 \def\indexspace{\par \vskip 10\p@ \@plus 5\p@ \@minus 3\p@\relax}

900 ⟨/209⟩

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

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

901 \def\footnoterule{%
902  \kern-3\p@
903  \hrule \@width 47\p@ %\@height .004\p@
904  \kern 2.6\p@

905 }

3.7 Floats and captions

\@makefntext
906 \long\def\@makefntext#1{%
907  \parindent 1em
908  \noindent $^{\@thefnmark}$#1%

909 }

\c@topnumber
\topfraction
\c@bottomnumber
\bottomfraction
\c@totalnumber
\textfraction
\floatpagefraction
\c@dbltopnumber
\dbltopfraction
\dblfloatpagefraction

910 ⟨209⟩\setcounter{topnumber}{2}
911 \def\topfraction{.89}
912 ⟨209⟩\setcounter{bottomnumber}{1}
913 \def\bottomfraction{.5}
914 ⟨209⟩\setcounter{totalnumber}{3}
915 \def\textfraction{.11}
916 \def\floatpagefraction{.6}
917 ⟨209⟩\setcounter{dbltopnumber}{2}
918 ⟨209⟩\def\dbltopfraction{.7}
919 ⟨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.

920 \long\def\@makecaption#1#2{%
921  \vskip 1pc
922  \setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}%
923  \ifdim \wd\@tempboxa >\hsize

924  #1.\hskip 1em\relax #2\par
925  \else
926  \centerline{\box\@tempboxa}%
927  \fi

928 }

\nocaption
929 \def\nocaption{%
930  \refstepcounter\@captype
931  \par
932  \vskip 1pc
933  \centerline{\footnotesize \csname fnum@\@captype \endcsname}%

934 }

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

935 ⟨∗209⟩

936 \newcounter{figure}
937 \def\thefigure{\@arabic\c@figure}
938 \def\fps@figure{tbp}
939 \def\ftype@figure{1}
940 \def\ext@figure{lof}
941 \def\figurename{Fig.}
942 \def\fnum@figure{\figurename~\thefigure}

943 ⟨/209⟩

\figfilename
\@figfilename
944 \def\figfilename{\gdef\@figfilename}
945 \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.

946 \if@faircopy
947 ⟨209⟩  \newenvironment{figure}{%
948 ⟨2e⟩  \renewenvironment{figure}[1][p]{%
949  \let\normalsize\footnotesize
950  \normalsize
951 ⟨209⟩  \@ifnextchar[{\@figure}{\@figure[]}%
952 ⟨2e⟩  \@float{figure}[p]%
953  }{\end@float
954  \global\setbox\@currbox\vbox to\textheight{%
955  \vskip\@fptop
956  \unvbox\@currbox
957  \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.

958  \noindent \fnum@figure
959  \ifx\@figfilename\@empty\else
960  : {\tt \@figfilename}%

961  \global\let\@figfilename\@empty
962  \fi

963 }% 964 }

965 \else
966 ⟨209⟩  \newenvironment{figure}{%
967 ⟨2e⟩  \renewenvironment{figure}{%
968  \let\normalsize\footnotesize
969  \normalsize
970  \@float{figure}
971  }{\end@float}
972 \fi
\@figure
973 ⟨209⟩\def\@figure[#1]{\@float{figure}[p]}

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

974 \expandafter\let\csname figure*\endcsname\figure
975 \expandafter\let\csname endfigure*\endcsname\endfigure
table
976 ⟨209⟩\newenvironment{table}{%
977 ⟨2e⟩\renewenvironment{table}{%
978  \let\normalsize\footnotesize
979  \normalsize
980  \@float{table}%
981 }{\end@float}
table*
982 \expandafter\let\csname table*\endcsname\table
983 \expandafter\let\csname endtable*\endcsname\endtable
\thetable
\c@table
\fps@table
\ftype@table
\ext@table
\tablename
\fnum@table

984 \def\thetable{\@Roman\c@table}

985 ⟨∗209⟩

986 \newcounter{table}
987 \def\fps@table{tbp}
988 \def\ftype@table{2}
989 \def\ext@table{lot}
990 \def\tablename{Table}
991 \def\fnum@table{\tablename~\thetable}

992 ⟨/209⟩

\@narrowfig \@nfigbox \@nfcapbox \if@nfeven
993 \newdimen\@narrowfig
994 \newbox\@nfigbox
995 \newbox\@nfcapbox
996 \newif\if@nfeven

acmtable
 997 \def\acmtable#1{%
 998  \@narrowfig #1\relax
 999  \let\caption\@atcap
1000  \let\nocaption\@atnocap
1001  \@ifnextchar[{\@ntab}{\@ntab[\fps@table]}%

1002 }

1003

1004 \def\@ntab[#1]{%
1005  \expandafter\table\expandafter[#1]%
1006  \setbox\@nfigbox\vbox\bgroup
1007  \hsize \@narrowfig
1008  \@parboxrestore

1009 }

1010

1011 \def\endacmtable{%
1012  \hb@xt@\textwidth{%
1013  \hfil
1014  \vbox{%
1015  \hsize \@narrowfig
1016  \box\@nfcapbox{%
1017  \baselineskip 4\p@
1018  \hbox{\vrule \@height .4\p@ \@width \hsize}%

1019 }%

1020  \vskip -\p@
1021  \box\@nfigbox
1022  \vskip -\p@
1023  \begingroup
1024  \baselineskip 4\p@
1025  \hbox{\vrule \@height .4\p@ \@width \hsize}%
1026  \endgroup

1027 }%

1028  \hfil

1029 }%

1030  \end@float

1031 }

\@atmakecap
1032 \def\@atmakecap#1#2{%
1033  \setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}%
1034  \ifdim \wd\@tempboxa >\hsize
1035  \sloppy #1.\hskip 1em\relax #2 \par
1036  \else
1037  \centerline{\box\@tempboxa}%

1038 \fi 1039 }

\@atcap
1040 \def\@atcap{%

1041  \par
1042  \egroup
1043  \refstepcounter\@captype
1044  \@dblarg{\@atcapx\@captype}%

1045 }

\@atcapx
1046 \long\def\@atcapx#1[#2]#3{%
1047  \addcontentsline{\csname ext@#1\endcsname}{#1}{%
1048  \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%

1049 }%

1050  \setbox\@nfcapbox\vbox{%
1051  \hsize \wd\@nfigbox
1052  \@parboxrestore
1053  \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
1054  \par

1055 }% 1056 }

\@atnocap
1057 \def\@atnocap{%
1058  \egroup
1059  \refstepcounter\@captype
1060  \setbox\@nfcapbox\vbox{%
1061  \hsize \wd\@nfigbox
1062  \centerline{\footnotesize \fnum@table}

1063 }% 1064 }

narrowfig \@nfig
1065 \def\narrowfig#1{%
1066  \@narrowfig #1\relax
1067  \let\caption\@nfcap
1068  \let\nocaption\@nfnocap
1069  \@ifnextchar[{\@nfig}{\@nfig[\fps@figure]}%

1070 }

1071

1072 \def\@nfig[#1]{%
1073  \expandafter\figure\expandafter[#1]%
1074  \setbox\@nfigbox\vbox\bgroup
1075  \hsize\@narrowfig
1076  \@parboxrestore

1077 }

1078

1079 \def\endnarrowfig{%
1080  \hb@xt@\textwidth{%
1081  \if@nfeven
1082  \box\@nfcapbox  \hfil   \box\@nfigbox
1083  \else

1084  \box\@nfigbox   \hfil   \box\@nfcapbox

1085 \fi 1086 }%

1087 %    \end@float
1088  \endfigure

1089 }

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
1090 \def\@nfcap{%
1091  \par
1092  \egroup
1093  \refstepcounter\@captype
1094  \@dblarg{\@nfcapx\@captype}%

1095 }

\@nfmakecap
1096 \def\@nfmakecap #1#2{%
1097  \setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}%
1098  \ifdim \wd\@tempboxa >\hsize
1099  \sloppy #1.\hskip 1em\relax #2 \par
1100  \else
1101  \@@line{%
1102  \if@nfeven\else\hfil\fi
1103  \box\@tempboxa
1104  \if@nfeven\hfil\fi

1105 }% 1106 \fi 1107 }

\@nfcapx
1108 \long\def\@nfcapx#1[#2]#3{%
1109  \addcontentsline{\csname ext@#1\endcsname}{#1}{%
1110  \protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}%

1111 }%

1112  \@seteven
1113  \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
1114  \hsize \textwidth
1115  \advance\hsize -2pc
1116  \advance\hsize -\wd\@nfigbox
1117  \@parboxrestore
1118  \vfil
1119  \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}%
1120  \par
1121  \vfil

1122 }% 1123 }

\@nfnocap
1124 \def\@nfnocap{%
1125  \egroup
1126  \refstepcounter\@captype
1127  \@seteven
1128  \setbox\@nfcapbox\vbox to \ht\@nfigbox{%
1129  \hsize \textwidth
1130  \advance\hsize -2pc
1131  \advance\hsize -\wd\@nfigbox
1132  \@parboxrestore
1133  \vfil
1134  \@@line{%
1135  \if@nfeven\else\hfil\fi
1136  \footnotesize \fnum@figure
1137  \if@nfeven\hfil\fi

1138 }%

1139  \vfil

1140 }% 1141 }

\@seteven \@nfmsg
1142 \def\@seteven{%
1143  \@nfeventrue
1144  \@ifundefined{r@@nf\thefigure}{}{%
1145  \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}%
1146  \edef\@tmpnf{\expandafter\@cdr\@tmpnf\@nil}%
1147  \ifodd\@tmpnf\relax
1148  \@nfevenfalse

1149 \fi 1150 }%

1151  \label{@nf\thefigure}%
1152  \edef\@tmpnfx{\if@nfeven e\else o\fi}%
1153  \edef\@tmpnf{%
1154  \write\@unused{%
1155  \noexpand\ifodd \noexpand\c@page
1156  \noexpand\if \@tmpnfx e%
1157  \noexpand\@nfmsg{\thefigure}
1158  \noexpand\fi
1159  \noexpand\else
1160  \noexpand\if \@tmpnfx o%
1161  \noexpand\@nfmsg{\thefigure}%
1162  \noexpand\fi
1163  \noexpand\fi

1164 }% 1165 }%

1166  \@tmpnf

1167 }

1168

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

1170 ⟨∗2e⟩

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

1173 } 1174 ⟨/2e⟩

\@narrowfig \@nfigbox \@nfcapbox \if@nfeven
1175 \newdimen\@narrowfig
1176 \newbox\@nfigbox
1177 \newbox\@nfcapbox
1178 \newif\if@nfeven

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

1179 \newenvironment{authinfo}{%
1180  \newcommand{\name}[1] {Name: ##1\newline }
1181  \newcommand{\address}[1] {Address: ##1\newline }
1182  \newcommand{\affiliation}[1]  {Affiliation: ##1\newline }
1183  \newcommand{\biography}[1]  {Biography: ##1\newline}

1184 }{}

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.

1185 \newenvironment{sponsor}[2]{%
1186  Sponsor: #1\strut\newline
1187  \parbox{3.in}{#2}%
1188 }{\newline}
\and \maketitle
1189 \def\and{\\ and\\}

1190

1191 %* Probably still needs more work

1192

1193 \def\maketitle{%
1194  \newpage
1195  \thispagestyle{titlepage}%
1196 ⟨209⟩  \global\@topnum\z@

1197 ⟨∗2e⟩

1198  \suppressfloats[t]%

1199 ⟨/2e⟩

1200 %    \par
1201  \begingroup
1202  \lineskip \z@
1203  \null
1204  \vskip -30\p@\relax
1205  \parindent\z@
1206  \begingroup
1207  \LARGE
1208  \raggedright
1209  \hyphenpenalty\@M
1210  \sf \@title

1211  \par
1212  \endgroup
1213  \vskip 13.5\p@
1214 %        \normalsize
1215 %        \sf
1216  %vskip 13.5pt between title and author
1217  \begingroup
1218  \addtolength{\baselineskip}{2\p@}%

1219 \sf

1220  \@author\par
1221 %            \vskip -2pt
1222  \endgroup
1223  \begingroup
1224  \footnotesize
1225 %            \baselineskip 17pt\relax
1226  \medskip
1227 %            \hbox{\vrule height .2pt width 30pc}%
1228  \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).

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

1231 ⟨∗209⟩

1232  \typeout{^^JPackage acmart Warning: an abstract
1233  is required^^J}%

1234 ⟨/209⟩

1235  \else
1236  \vskip 8.5\p@
1237  \box\@abstract

1238 \fi

1239  \ifx\@categories\@empty \else
1240  \vskip 4\p@\relax %vskip8.5 space above abstract
1241 ⟨209⟩  \def\and{\unskip{\rm;} }%
1242 ⟨2e⟩  \def\and{\unskip\textup; }%
1243  Categories and Subject Descriptors: \@categories\par

1244 \fi

1245  \ifx\@terms\@empty\else
1246  \vskip 4\p@
1247  General Terms: \ignorespaces
1248  \@terms
1249  \par

1250 \fi

1251  \ifx\@keywords\@empty\else
1252  \vskip 4\p@
1253  Additional Key Words and Phrases: \ignorespaces
1254  \@keywords
1255  \par

1256 \fi

1257  \endgroup
1258  \label{@firstpg}%
1259 %        {\baselineskip 14pt\relax
1260 %         \hbox{\vrule height .2pt width 30pc}%
1261  \rule{\textwidth}{.2\p@}%

1262 % }%

1263  \vskip 23\p@
1264  \endgroup
1265  \let\maketitle\relax

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

1266  \global\let\@categories\@empty
1267  \global\let\@terms\@empty
1268  \global\let\@keywords\@empty

1269 }

abstract \@abstract
1270 \newbox\@abstract
1271 \def\abstract{%
1272  \everypar{}%
1273  \global\setbox\@abstract\vbox\bgroup
1274  \footnotesize
1275  \trivlist\item[]\ignorespaces

1276 }

1277

1278 \def\endabstract{%
1279  \endtrivlist
1280  \egroup
1281  \ifx\maketitle\relax

1282 ⟨∗2e⟩

1283  \PackageWarning{acmart}{%
1284  the abstract must be specified before the \MessageBreak
1285  \string\maketitle\space command%

1286 }% 1287 ⟨/2e⟩ 1288 ⟨∗209⟩

1289  \typeout{^^JPackage acmart Warning:
1290  the abstract must be specified before the^^J%
1291  \string\maketitle\space command^^J%

1292 }% 1293 ⟨/209⟩

1294  \box\@abstract

1295 \fi 1296 }

\terms \@terms
1297 \def\terms{\gdef\@terms}

1298

1299 \let\@terms\@empty

\keywords \@keywords
1300 \def\keywords{\gdef\@keywords}

1301

1302 \let\@keywords\@empty
\category
\@category
\@categories

1303 \def\category#1#2#3{%
1304  \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}%

1305 }

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

1306 \def\@category#1#2#3[#4]{%
1307  \edef\@tempa{\ifx \@categories\@empty \else ; \fi}%
1308  \begingroup
1309 ⟨209⟩  \def\protect{\noexpand\protect\noexpand}%
1310 ⟨2e⟩  \let\protect\@unexpandable@protect
1311  \let\and\relax
1312  \xdef\@categories{%
1313  \@categories
1314  \@tempa
1315  #1 [{\bf #2}]%
1316  \if!#4!%
1317  \if!#3!\else : #3\fi
1318  \else
1319  :\space
1320  \if!#3!\else #3\kern\z@---\hskip\z@\fi
1321  {\it #4}%

1322 \fi 1323 }%

1324  \endgroup

1325 }

1326

1327 \let\@categories\@empty
bottomstuff
1328 \def\bottomstuff{%

1329 ⟨∗209⟩

1330  \global\@topnum\z@
1331  \global\@botroom \textheight
1332  \@float{figure}[b]

1333 ⟨/209⟩ 1334 ⟨∗2e⟩

1335  \enlargethispage{-\baselineskip}%
1336  \suppressfloats[t]%
1337  \@float{figure}[!b]

1338 ⟨/2e⟩

1339  \footnotesize
1340  \parindent\z@
1341  \null

1342  \vskip -\textfloatsep
1343  \vskip 10\p@
1344  \hrule \@height .2\p@ \@width 30pc
1345 %        \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}.

1346  \vskip 4\p@

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

1347 %        \rule{\z@}{\z@}%
1348  \ignorespaces

1349 }

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.

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

1351 ⟨∗209⟩

1352 \def\endbottomstuff{%
1353  \par
1354  \strut
1355  \end@float

1356 } 1357 ⟨/209⟩

\permission
1358 \long\def\permission{\par
1359  Permission to make digital or hard copies of part or all of this
1360  work for personal or classroom use is granted without fee provided
1361  that copies are not made or distributed for profit or direct
1362  commercial advantage and that copies show this notice on the first
1363  page or initial screen of a display along with the full citation.
1364  Copyrights for components of this work owned by others than ACM
1365  must be honored. Abstracting with credit is permitted. To copy
1366  otherwise, to republish, to post on servers, to redistribute to
1367  lists, or to use any component of this work in other works,
1368  requires prior specific permission and/or a fee.  Permissions may
1369  be requested from Publications Dept, ACM Inc., 1515 Broadway, New
1370  York, NY 10036 USA, fax +1 (212) 869-0481, or {\tt
1371  permissions@acm.org}.
1372  \par

1373 }

acks Should this use small-caps instead?

1374 \newenvironment{acks}{%
1375  \@startsection{subsection}{2}{\z@}{-16\p@ \@plus -2\p@ \@minus -\p@}
1376  {2\p@}{\sf}*{\footnotesize ACKNOWLEDGMENTS}%
1377 }{\par}

received
1378 \newenvironment{received}{%
1379  \par
1380  \footnotesize
1381  \addvspace{18\p@ \@minus 4\p@}%
1382  \parindent\z@

1383 }{%

1384  \label{@lastpg}%
1385  \par

1386 }

1387 \mark{{}{}}
\ps@myheadings
1388 \def\ps@myheadings{%
1389  \let\@mkboth\@gobbletwo
1390  \def\@oddhead{%
1391 %        \null
1392  \hfill\small\sf\rightmark
1393  \hskip 19\p@
1394  {\Large$\cdot$}%
1395  \hskip 17\p@
1396  \thepage

1397 }%

1398  \def\@oddfoot{\null\hfill\tiny\@runningfoot}
1399  \def\@evenhead{%
1400  \small\sf\thepage
1401  \hskip 17\p@
1402  {\Large$\cdot$}%
1403  \hskip 19\p@
1404  \leftmark
1405  \hfill
1406 %        \null

1407 }%

1408  \def\@evenfoot{\tiny\@runningfoot \hfill\null}%
1409  \let\partmark\@gobble
1410  \let\sectionmark\@gobble
1411  \let\subsectionmark\@gobble

1412 }

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

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

1414

1415 \let\@runningfoot\@empty

1416

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

1418

1419 \let\@firstfoot\@empty

1420

1421 \def\pages{\pageref{@firstpg}--\pageref{@lastpg}}

\ps@titlepage
1422 \def\ps@titlepage{%
1423  \let\@mkboth\@gobbletwo
1424  \let\@oddhead\@empty
1425  \def\@oddfoot{\null\hfill\tiny\@firstfoot}%
1426  \let\@evenhead\@empty
1427  \def\@evenfoot{\tiny\@firstfoot\hfill\null}%

1428 }

\today
1429 \def\today{%
1430  \ifcase\month \or
1431  January\or
1432  February\or
1433  March\or
1434  April\or
1435  May\or
1436  June\or
1437  July\or
1438  August\or
1439  September\or
1440  October\or
1441  November\or
1442  December

1443 \fi

1444  \space\number\day, \number\year

1445 }

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

  \textstyle
1446 \def\marray{%
1447  \arraycolsep 2.5\p@
1448  \let\@acol\@arrayacol
1449  \let\@classz\@marrayclassz
1450  \let\@classiv\@marrayclassiv
1451  \let\\\@arraycr
1452  \let\@halignto\@empty
1453  \@tabarray

1454 }

1455

1456 \let\endmarray\endarray
\@marrayclassiv
\@marrayclassz
1457 \def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}}

1458

1459 \def\@marrayclassz{%
1460  \ifcase \@lastchclass
1461  \@acolampacol
1462  \or \@ampacol

1463 \or 1464 \or

1465  \or \@addamp
1466  \or \@acolampacol
1467  \or \@firstampfalse \@acol

1468 \fi

1469  \edef\@preamble{%
1470  \@preamble
1471  \ifcase \@chnum
1472  \hfil$\relax\displaystyle\@sharp$\hfil
1473  \or $\relax\displaystyle\@sharp$\hfil
1474  \or \hfil$\relax\displaystyle\@sharp$%

1475 \fi 1476 }% 1477 }

1478 \ps@myheadings

1479

1480 \pagenumbering{arabic}

1481

1482 \onecolumn

1483

1484 %\if@faircopy \raggedright \fi

1485

1486 \parindent10pt

1487 ⟨/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.

1488 ⟨∗bib⟩

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

1490 % 1491 ⟨∗!cls & 2e⟩

1492 \ProvidesPackage{acmbib}{\filedate\space\fileversion\space
1493 ACM bibliography style}

1494 ⟨/!cls & 2e⟩ 1495 %

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

1497 %

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

1498 \newcommand\bibyear[2]{%
1499  \unskip\quad\ignorespaces#1\unskip
1500  \if#2..\quad \else \quad#2 \fi

1501 }

\bibemph \bibemphic \bibemphsc

1502 ⟨∗2e⟩

1503 \let\bibemph\emph
1504 \let\bibemphic\emph
1505 \let\bibsc\textsc

1506 ⟨/2e⟩ 1507 ⟨∗209⟩

1508 \newcommand{\bibemph}[1]{{\em#1}}
1509 \newcommand{\bibemphic}[1]{{\em#1\/}}
1510 \newcommand{\bibsc}[1]{{\sc#1}}

1511 ⟨/209⟩

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

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

1514 }

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

1515 \def\@citeNB{%
1516  \def\@cite##1##2{##1\if@tempswa , ##2\fi}%

1517 }

\@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.

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

1520 }

\start@cite Should explain this.

1521 \def\start@cite#1#2{%
1522  \edef\citeauthoryear##1##2##3{%
1523  ###1%
1524  \ifnum#2=\z@ \else\ ###2\fi

1525 }%

1526  \ifnum#1=\thr@@
1527  \let\@@cite\@citeyear
1528  \else
1529  \let\@@cite\@citenormal

1530 \fi

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

1532 }

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

1533 \def\cite{\start@cite23}
\citeNP
1534 \def\citeNP{\cite*}
\citeA
1535 \def\citeA{\start@cite10}
\citeANP
1536 \def\citeANP{\citeA*}
\shortcite
1537 \def\shortcite{\start@cite23}
\shortciteNP
1538 \def\shortciteNP{\shortcite*}
\shortciteA
1539 \def\shortciteA{\start@cite20}
\shortciteANP
1540 \def\shortciteANP{\shortciteA*}
\citeyear
1541 \def\citeyear{\start@cite30}
\citeyearNP
1542 \def\citeyearNP{\citeyear*}
\citeN
1543 \def\citeN{%
1544  \@citeRB
1545  \def\citeauthoryear##1##2##3{##1\ [##3%
1546  \def\reserved@a{##1}%
1547  \def\citeauthoryear####1####2####3{%
1548  \def\reserved@b{####1}%
1549  \ifx\reserved@a\reserved@b
1550  ####3%

1551  \else

1552 ⟨∗2e⟩

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

1554 ⟨/2e⟩ 1555 ⟨∗209⟩

1556  \errmessage{Package acmart Error: author mismatch
1557  in \string\citeN^^J^^J%
1558  See the acmart package documentation for explanation}%

1559 ⟨/209⟩ 1560 \fi 1561 }% 1562 }%

1563  \@ifstar\@citeyear\@citeyear

1564 }

\shortciteN
1565 \def\shortciteN{%
1566  \@citeRB
1567  \def\citeauthoryear##1##2##3{##2\ [##3%

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

1568  \def\reserved@a{##2}%
1569  \def\citeauthoryear####1####2####3{%
1570  \def\reserved@b{####2}%
1571  \ifx\reserved@a\reserved@b
1572  ####3%
1573  \else

1574 ⟨∗2e⟩

1575  \PackageError{acmart}{%
1576  author mismatch in \string\shortciteN

1577 }% 1578 ⟨/2e⟩ 1579 ⟨∗209⟩

1580  \errmessage{Package acmart Error: author mismatch
1581  in \string\shortciteN^^J^^J%
1582  See the acmart package documentation for explanation}%

1583 ⟨/209⟩ 1584 \fi 1585 }% 1586 }%

1587  \@ifstart\@citeyear\@citeyear

1588 }

\@citenormal
\@citeyear
1589 \def\@citenormal{%
1590  \@ifnextchar [{\@tempswatrue\@citex;}
1591  {\@tempswafalse\@citex;[]}%

1592 } 1593 %

1594 \def\@citeyear{%
1595  \@ifnextchar [{\@tempswatrue\@citex,}%
1596  {\@tempswafalse\@citex,[]}%

1597 }

\@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.

1598 \def\@citex#1[#2]#3{%
1599  \let\@citea\@empty
1600  \@cite{%
1601  \@for\@citeb:=#3\do{%
1602  \@citea
1603  \def\@citea{#1 }%
1604  \edef\@citeb{\expandafter\@iden\@citeb}%
1605  \if@filesw
1606  \immediate\write\@auxout{\string\citation{\@citeb}}%

1607 \fi

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

1610 ⟨209⟩ {\bf ?}%

1611 ⟨2e⟩  \G@refundefinedtrue
1612 ⟨2e⟩  \@latex@warning{%
1613 ⟨209⟩  \@warning{%
1614  Citation `\@citeb' on page \thepage\space undefined%

1615 }% 1616 }%

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

1618 }%

1619  }{#2}%

1620 }

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

1621 \let\@biblabel\@gobble

1622 ⟨/bib⟩

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

1623 ⟨∗cls⟩

1624 \newdimen\bibindent
1625 \bibindent=1.5em
\refname
1626 ⟨209⟩\def\refname{References}

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

1627 \def\thebibliography#1{%
1628  \footnotesize
1629  \section*{%

1630  \refname
1631  \@mkboth{\uppercase{\refname}}{\uppercase{\refname}}%

1632 }%

1633  \list{[\arabic{enumi}]}{%
1634  \settowidth\labelwidth{[#1]}%
1635  \leftmargin\labelwidth
1636  \advance\leftmargin\labelsep
1637  \advance\leftmargin\bibindent
1638  \itemindent -\bibindent
1639  \listparindent \itemindent
1640  \parsep \z@
1641  \usecounter{enumi}%

1642 }%

1643  \let\newblock\@empty
1644  \sloppy
1645  \sfcode`\.=1000\relax

1646 } 1647 ⟨/cls⟩

Index

The italic numbers denote the pages where the corresponding entry is described, numbers underlined point to the definition, all others indicate the places where it is used.

Symbols

\@@cite 1527, 1529, 1531

\@@line …. 1101, 1134

\@@par …. 386, 389, 393

\@Roman . . . . . . . . . . 984

  \@abstract . . . 1229,

1237, 1270, \underline{1270}, 1273, 1294

\@acol . . . . . 1448, 1467

  \@acolampacol 1461, 1466

\@addamp . . . . . . . . 1465

  \@addtopreamble . . 1457
  \@afterheading . . . . 332
  \@afterindentfalse . 248
  \@afterindenttrue . 245

\@ampacol . . . . . . . 1462

  \@arrayacol . . . . . . 1448

\@arraycr . . . . . . . 1451

\@atcap . 999, 1040, \underline{1040}

\@atcapx 1044, 1046, \underline{1046}

  \@atmakecap . . . . . . .

. . 1032, \underline{1032}, 1053

                           \@atnocap . . . . . . . .

. . 1000, 1057, \underline{1057} \@author …. 453, 1220 \@auxout . . . . . . . . 1606 \@begindef 735, 751, \underline{751}

                           \@beginparpenalty . 196
                           \@begintheorem 664, \underline{664}
                           \@biblabel . 1621, \underline{1621}

\@botroom … 402, 1331

                           \@captype . . . . . . . .

930, 933, 1043, 1044, 1059, 1093, 1094, 1126

                           \@categories . . 1239,

1243, 1266, \underline{1303}, 1307, 1312, 1313, 1327

                           \@category . . . . . . .

. . \underline{1303}, 1304, 1306 \@cdr . . . . . . . . . . . 1146 \@chnum . . . . . . . . . 1471 \@citeNB 1515, \underline{1515}, 1531 \@citeRB . . . . . 1518,

\underline{1518}, 1544, 1566

\@citea 1599, 1602, 1603 \@citeb . . . . . . 1601,

1604, 1606, 1608, 1614, 1617

                                                     \@citenormal . . . . . .

. . 1529, 1589, \underline{1589} \@citex . . . . . . 1590,

1591, 1595, 1596, 1598, \underline{1598}

                                                     \@citeyear 1527, 1563,

1587, \underline{1589}, 1594 \@classiv . . . . . . . 1450 \@classz . . . . . . . . 1449

                                                     \@clubpenalty . . . . . 349

\@currbox …. 954, 956

                                                     \@currsize . . . . . . . 654

\@dblarg 258, 1044, 1094

                                                     \@dblfpbot . . . . . . . 179
                                                     \@dblfpsep . . . . . . . 177
                                                     \@dblfptop . . . . . . . 175
                                                     \@dblmaxsep . . . . . . . 167
                                                     \@definecounter . . . 724

\@defthm . . 726, 730, \underline{730} \@dotsep . . . . . . . . . \underline{790}

\@dottedtocline . . .

…. 835, 837, 843

\@endparpenalty . . . 197
\@endtheorem . . . . . . 727
\@enumctr . . . . . . . .

. 537–539, 552–554

\@enumdepth 533, 536,

537, 548, 551, 552

\@evenfoot . 1408, 1427
\@evenhead . 1399, 1426
\@faircopyfalse . . .

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

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

\underline{944}, 945, 959–961 \@figure . . 951, 973, \underline{973}

\@firstampfalse . . 1467
\@firstfoot . . . . . . .

… \underline{1413}, 1417, 1419, 1425, 1427

\@flushglue . . . . . . . 379

\@for . . . . . . . . . . . 1601 \@fpbot . . . . . . 173, 957 \@fpsep . . . . . . . . . . 171 \@fptop . . . . . . 169, 955

\@halignto . . . . . . 1452
\@hangfrom . . . . . . . 287

\@height …. \underline{24}, 25, 412, 457, 903, 1018, 1025, 1344

\@highpenalty . . . . . 194

\@iden . . . . . . . . . . 1604 \@idxitem . 886, 896, \underline{896}

\@ifdefinable . . . . . 723
\@ifnextchar 691, 732,

951, 1001, 1069, 1304, 1590, 1595

\@ifstar 256, 1531, 1563 \@ifstart . . . . . . . 1587

\@ifundefined 1144, 1608
\@itempenalty . . . . . 198
\@keywords . . . 1251,

1254, 1268, 1300, \underline{1300}, 1302

\@lastchclass . . . . 1460
\@latex@warning . . 1612

\@listI 78, 491, \underline{491}, 498 \@listi . . . . . 78, 92,

111, \underline{491}, 498, 500 \@listii . . . . . 501, \underline{501} \@listiii …. 509, \underline{509} \@listiv . . . . . 517, \underline{517} \@listv . . . . . . 522, \underline{522} \@listvi . . . . . 527, \underline{527}

                          \@lowpenalty . . . . . .

…. 192, 196–198

                          \@makecaption . 920, \underline{920}
                          \@makefntext . . 906, \underline{906}
                          \@marrayclassiv . . .

. . 1450, 1457, \underline{1457}

                          \@marrayclassz . . . .

. . 1449, \underline{1457}, 1459 \@maxsep . . . . . . . . . 161

                          \@medpenalty . . . . . . 193

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

                          \@mparswitchtrue . . 57
                          \@mpfootins . . . . . . . 787

\@namedef …. 726, 727

                          \@narrowfig . . . 993,

\underline{993}, 998, 1007, 1015, 1066, 1075, 1175, \underline{1175}

                          \@newlisttrue . . . . . 394
                          \@nextchar . . . . . . 1457

\@nfcap 1067, 1090, \underline{1090}

                          \@nfcapbox . . . \underline{993},

995, 1016, 1050, 1060, 1082, 1084, 1113, 1128, \underline{1175}, 1177

\@nfcapx 1094, 1108, \underline{1108}

                          \@nfevenfalse . . . . 1148
                          \@nfeventrue . . . . . 1143

\@nfig . \underline{1065}, 1069, 1072

                          \@nfigbox . . . . \underline{993},

994, 1006, 1021, 1051, 1061, 1074, 1082, 1084, 1113, 1116, 1128, 1131, \underline{1175}, 1176

                          \@nfmakecap . . . . . . .

. . 1096, \underline{1096}, 1119 \@nfmsg . \underline{1142}, 1157,

1161, 1169, 1171

                          \@nfnocap . . . . . . . .

. . 1068, 1124, \underline{1124}

                                                   \@nobreakfalse . . . . 334
                                                   \@noitemerr . . . . . . . 386
                                                   \@noparitemtrue . . . 370
                                                   \@noparlistfalse . . 373
                                                   \@noparlisttrue . . . 371
                                                   \@normalcite . . . . . .

. . 1512, \underline{1512}, 1531

                                                   \@normalsize . . . . \underline{66}, 67
                                                   \@noskipsecfalse . . 338
                                                   \@noskipsectrue . . . 335

\@ntab . . . . . 1001, 1004 \@oddfoot . . 1398, 1425 \@oddhead . . 1390, 1424

                                                   \@opargbegintheorem

. . . . . . . . 673, \underline{673} \@options . . . . . . . . 59

                                                   \@outerparskip . . . . 395
                                                   \@parboxrestore . . .

… 1008, 1052, 1076, 1117, 1132

\@period 236, \underline{236}, 239,

241, 343, 359, 361 \@plus . . . . . . . . . . . \underline{24}

                                                   \@pnumwidth . . . \underline{790},

791, 805, 806, 813, 825, 826, 831

                                                   \@preamble . 1469, 1470

\@proof … 691, 698, \underline{698} \@ptsize . . . . . . . . . 64

                                                   \@qededfalse . . 688, 690
                                                   \@qededtrue . . . . . . . 720
                                                   \@restonecolfalse .

. . . . . . . . 761, 878

                                                   \@restonecoltrue . .

. . . . . . . . 763, 877

                                                   \@rightskip . . . . . . . 378
                                                   \@runningfoot . . . . .

… 1398, 1408, 1413, \underline{1413}, 1415

                                                   \@secpenalty . . . . . .

…. 253, 800, 820 \@sect …. 258, 260, \underline{260}

                                                   \@seteven . . . . 1112,

1127, 1142, \underline{1142}

                                                   \@setfontsize . . 72,

86, 105, 128–134 \@setpar . . . . . 382, 393

                                                   \@setsize . . . . . 68,

82, 101, 119–125 \@sharp . . . . . 1472–1474 \@ssect . . . . . . . . . . 257

\@startsection . . . .

…. 217, 221, 225, 229, 233, 237, \underline{237}, 854, 1375

\@starttoc 797, 840, 846 \@svsec . . . . . . 262,

266, 276, 287, 309 \@svsechd …. 306, 342

\@tabarray . . . . . . 1453

\@tempa …. 1307, 1314

\@tempskipa . . . 244,

246, 247, 254, 283, 284, 327, 328, 331, 346, 347

\@terms . . . . . . 1245, 1248, 1267, 1297, \underline{1297}, 1299

\@thefnmark . . . . . . . 908
\@thmcounter . . . . . . 725

\@title . . . . . 451, 1210 \@tmpnf . . . . . 1145–

1147, 1153, 1166 \@tmpnfx 1152, 1156, 1160

\@tocrmarg . . . \underline{790}, 792

\@toodeep …. 534, 549 \@topnum 401, 1196, 1330 \@topsep . . . . . 374, 376

\@topsepadd 357, 364, 374
\@trivlist . . . 356, \underline{356}
\@twosidetrue . . . . . 56
\@ucheadfalse . . . . . 213
\@ucheadtrue . . 218, 222
\@unexpandable@protect

. . . . . . . . . . 1310 \@unused . . . . . . . . 1154 \@width . . . . . . . . . .

\underline{24}, 26, 412, 903, 1018, 1025, 1344

\@withappendix 399, \underline{399}

\@xdefthm . 732, 734, \underline{734} \@xproof . . 691, 707, \underline{707} \@xsect … 324, 326, \underline{326} \@ydefthm . 732, 738, \underline{738}

A

\abovedisplayshortskip

. . . . . . 76, 90, 109

\abovedisplayskip 74,

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

ment) . . . . . \underline{1270} acks (environment) . \underline{1374} \acmtable . . . . . . . . 997 acmtable (environ-

ment) . . . . . . \underline{997}

                          \addcontentsline . .

299, 316, 1047, 1109 \address . . . . . . . . 1181

                          \affiliation . . . . . 1182

\and …. 1189, \underline{1189},

1241, 1242, 1311 \apbf . . . . . 398, 431–437 \appendix . 445, 466, \underline{466}

                          \appendixhead . . . . .

…. 420, 422, \underline{422}

                          \appenheader . . . . . . 400
                          appenheader (environ-

ment) . . . . . . \underline{400}

                          \arraycolsep . 779, 1447
                          \arrayrulewidth . . . 783

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

B

                          \baselineskip . 1017,

1024, 1218, 1225, 1259, 1335

                          \baselinestretch . . 63
                          \belowdisplayshortskip

. . . . . . 77, 91, 110

                          \belowdisplayskip .

. . . . . . 75, 89, 108 \bf 809, 827, 1315, 1610 \bibemph \underline{1502}, 1503, 1508

                          \bibemphic . . . . . . .

. . \underline{1502}, 1504, 1509

                          \bibemphsc . . . . . . \underline{1502}
                          \bibindent \underline{1623}, 1624,

1625, 1637, 1638 \bibsc . . . . . 1505, 1510 \bibyear … 1498, \underline{1498}

                          \biography . . . . . . 1183
                          \bottomfraction  \underline{910}, 913
                          \bottomstuff . . . . . 1328
                          bottomstuff (environ-

ment) . . . . . \underline{1328}

C

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

\c@figure …. \underline{935}, 937 \c@page . . . . . 769, 1155

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

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

                                                   \c@secnumdepth . . . .

…. 261, 300, 317

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

\c@table . . . . . 984, \underline{984}

                                                   \c@tocdepth . . . . . . . \underline{790}
                                                   \c@topnumber . . . . . . \underline{910}
                                                   \c@totalnumber . . . . \underline{910}

\caption …. 999, 1067 \category . . 1303, \underline{1303}

                                                   \centerline . . . . . . .

926, 933, 1037, 1062 \citation . . . . . . . 1606 \cite . . . . . . . . . . . \underline{1533} \citeA . 1535, \underline{1535}, 1536 \citeANP … 1536, \underline{1536}

                                                   \citeauthoryear . . .

… 1522, 1545, 1547, 1567, 1569

\citeN . . . . . . . 1543,

\underline{1543}, 1553, 1557 \citeNP …. 1534, \underline{1534}

                                                   \citeyear . . . . . . . .

. . 1541, \underline{1541}, 1542

                                                   \citeyearNP . 1542, \underline{1542}
                                                   \clearpage . . . 443, 893
                                                   \clubpenalty . . . . . .

…. 339, 349, 868

                                                   \columnsep . . . 150, 880
                                                   \columnseprule 151, 879
                                                   \copyright . . . . . . . 461

\csname … 269, 277, 298, 301, 315, 318, 538, 553, 723, 725, 735, 933, 974, 975, 982, 983, 1047, 1048, 1053, 1109, 1110, 1119, 1145, 1617

                                                   \CurrentOption . . . . 42

\dblfloatpagefraction

. . . . . . . . \underline{910}, 919

\dblfloatsep . . . . . . 163
\dbltextfloatsep . . 165
\dbltopfraction  \underline{910}, 918

\describe . . . . . . . . 642 describe (environ-

ment) . . . . . . \underline{642}

\description . . . . . . 630
description (environ-

ment) . . . . . . \underline{630}

\displaystyle . . . . .

. . 1457, 1472–1474 \do . . . . . . . . . . . . 1601

\doublerulesep . . . . 784

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

\ds@faircopy . . . . \underline{48}, 49
\ds@preprint . . . . \underline{48}, 51
\ds@twocolumn . . . \underline{48}, 53

E

\edef . . . . . . . . 266, 537, 552, 1145, 1146, 1152, 1153, 1307, 1469, 1522, 1604

\emph . . . . . . 1503, 1504

\endabstract . . . . . 1278
\endacmtable . . . . . 1011
\endappenheader . . . 418

\endarray . . . . . . . 1456

\endbottomstuff . . .

. . . . . . 1350, 1352

\endcsname 269, 277,

298, 301, 315, 318, 538, 553, 723, 725, 735, 933, 974, 975, 982, 983, 1047, 1048, 1053, 1109, 1110, 1119, 1145, 1617

\enddescribe . . . . . . 652
\enddescription . . . 641
\endenumerate . . . . . 545
\endfigure . . 975, 1088
\enditemize . . . . . . . 583
\endlongenum . . . . . . 562
\endlongitem . . . . . . 594

\endmarray . . . . . . 1456
\endnarrowfig . . . . 1079
\endprogram . . . . . . . 663

\endproof . . . . . . . . 694

\endquotation . . . . . 620

\endquote . . . . . . . . 629

\endtabbing . . . . . . . 663

\endtable . . . . . . . . 983

\endthebibliography 873
\endtheindex . . . . . . 889
\endtitlepage . . . . . 772

\endverse . . . . . . . . 608

\enlargethispage . 1335
\enumerate . . . . . . . 532
enumerate (environ-

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

abstract . . . . . . \underline{33}

acks . . . . . . . . . . \underline{35}

acmtable . . . . . . \underline{26}
appenheader . . . . \underline{11}
authinfo . . . . . . \underline{30}
bottomstuff . . . . \underline{34}
describe . . . . . . \underline{17}
description . . . . \underline{16}
enumerate . . . . . . \underline{14}

figure* . . . . . . . \underline{26} figure . . . . . . . . \underline{25} itemize . . . . . . . \underline{15}

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

marray . . . . . . . . \underline{37}

narrowfig . . . . . . \underline{28}

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

quotation . . . . . . \underline{16}

quote . . . . . . . . . \underline{16}

received . . . . . . \underline{35}

sponsor . . . . . . . \underline{31} table* . . . . . . . . \underline{26} table . . . . . . . . . \underline{26}

thebibliography

. . . . . . . . . \underline{22}, \underline{43}

theindex . . . . . . \underline{23}
titlepage . . . . . . \underline{20}

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

\errmessage . 1556, 1580
\evensidemargin . . . 139
\ext@figure . . . \underline{935}, 940
\ext@table . . . \underline{984}, 989

F

\f@size . . . . . . . . . . 655 \fboxrule . . . . . . . . 788 \fboxsep . . . . . . . . . 788

\figfilename . . 944, \underline{944}

\figure . . . . . 974, 1073 figure (environment) \underline{946} figure* (environment) \underline{974}

\figurename \underline{935}, 941, 942
\firstfoot . \underline{1413}, 1417
\floatpagefraction .

. . . . . . . . \underline{910}, 916 \floatsep …. 156, 157

\fnum@figure . . . . . .

\underline{935}, 942, 958, 1136

\fnum@table . . . . . . .

… \underline{984}, 991, 1062

\footheight . . . . . . . 145

\footins . . . . . 154, 787

\footnoterule . 901, \underline{901}
\footnotesep . . . . . . 153
\footnotesize . . . . .

. . \underline{99}, 100, 101, 104, 105, 406, 853, 933, 949, 968, 978, 1062, 1136, 1224, 1274, 1339, 1376, 1380, 1628

\footskip . . . . . . . . 146

\fps@figure . . . . . . .

… \underline{935}, 938, 1069 \fps@table \underline{984}, 987, 1001

\ftype@figure . \underline{935}, 939
\ftype@table . . \underline{984}, 988

G

\G@refundefinedtrue

. . . . . . . . . . 1611

H

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

813, 831, 1012, 1080

\headheight . . . . . . . 143

\headsep . . . . . . . . . 144 \ht . . . . . . . 1113, 1128 \Huge . . . . . \underline{118}, 125, 134 \huge . . . . . \underline{118}, 124, 133

\hyphenpenalty . . . 1209

\if 1156, 1160, 1316,

1317, 1320, 1500

\if@faircopy . . . . . .

. 31, \underline{31}, 946, 1484

\if@filesw . . . . . . 1605
\if@inlabel . . . . . . . 369
\if@newlist . . . 383, 393
\if@nfeven . . . . . . .

\underline{993}, 996, 1081, 1102, 1104, 1135, 1137, 1152, \underline{1175}, 1178

\if@nobreak . . . . . . . 250
\if@noskipsec . . . . .

…. 238, 337, 358 \if@qeded . 687, \underline{687}, 695

\if@restonecol . . . .

. 773, \underline{874}, 875, 890

\if@twocolumn . 762, 878
\if@uchead . . . . . . .

. 212, \underline{212}, 290, 310 \ifodd . . . . . 1147, 1155 \ifvoid . . . . . . . . . 1229

\ignorespaces . . . . .

…. 354, 415, 705, 710, 736, 749, 1048, 1053, 1110, 1119, 1247, 1253, 1275, 1348, 1499

\immediate . . . . . . 1606
\indexspace . . . \underline{896}, 899
\interlinepenalty . 289
\intextsep . . . . . . . 159

\it . . 230, 234, 435, 438, 637, 671, 685, 743, 756, 1321

\item . 431, 433, 435, 436, 438, 605, 617, 626, 666, 675, 700, 709, 740, 753, 886, 1275

\itemindent . . . . . . .

. 559, 589, 590, 600, 601, 613, 635, 636, 1638, 1639

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

495, 507, 515, 862 \ixpt . . . . . . . . . . . . 82

K

\keywords . . 1300, \underline{1300}

L

\l@figure . \underline{838}, 843, 849 \l@part . . . . . . 799, \underline{799}

\l@section . . . 819, \underline{819}
\l@subsection . 835, \underline{835}
\l@subsubsection . .

. . . . . . . . \underline{835}, 837 \l@table . . . . . \underline{844}, 849 \label . 1151, 1258, 1384

\labelenumi . . . . . . . 564
\labelenumii . . . . . . 566
\labelenumiii . . . . . 569
\labelenumiv . . . . . . 572
\labelsep . . . . 475,

478, 481, 490, 504, 512, 520, 525, 530, 576, 579, 590, 636, 647, 668, 677, 702, 709, 742, 755, 785, 859, 1636

\labelwidth . . . 489,

490, 503, 504, 511, 512, 519, 520, 524, 525, 529, 530, 555, 578, 579, 587, 633, 645, 646, 857, 858, 1634, 1635

\LARGE \underline{118}, 123, 132, 1207 \Large . . . . . . . \underline{118},

122, 131, 1394, 1402 \large \underline{118}, 121, 130, 808

\leftmargin . 93, 112,

487, 492, 502, 510, 518, 523, 528, 559, 577, 578, 588, 599, 602, 603, 611, 614, 623, 624, 634, 646, 647, 858, 859, 1635–1637

\leftmargini . . . . . .

. . 93, 112, 477, 478, 487, 489, 492

\leftmarginii . . . . .

…. 480, 481, 483–486, 502, 503

\leftmarginiii . . . .

…. 483, 510, 511

\leftmarginiv . . . . .

…. 484, 518, 519

\leftmarginv . . . . . .

…. 485, 523, 524

\leftmarginvi . . . . .

…. 486, 528, 529 \leftskip . . . . . . . . 377 \lineskip …. 61, 1202

\linethickness . . . . 717
\listoffigures 838, \underline{838}
\listoftables . 844, \underline{844}
\listparindent . . . .

…. 601, 612, 613, 632, 644, 1639

\LoadClass . . . . . . . 46

\longenum . . . . . . . . 547 longenum (environ-

ment) . . . . . . \underline{546} \longitem . . . . . . . . 585 longitem (environ-

ment) . . . . . . \underline{584}

M

\makelabel 540, 637, 648

\maketitle . . . \underline{1189},

1193, 1265, 1281, 1285, 1291

\marginparpush . . . . 181
\marginparsep . . . . . 141
\marginparwidth . . . 140

\marray . . . . . . . . . 1446 marray (environment) \underline{1446} \mbox . . . . . . . . . . . . 426 \medskip . . . . . . . . 1226

\MessageBreak . . . . 1284

N

\name . . . . . . . . . . . 1180

\narrowfig . . . . . . 1065
narrowfig (environ-

ment) . . . . . \underline{1065} \newblock … 865, 1643 \newbox … 994, 995,

1176, 1177, 1270 \newdef . . . . . . 722, \underline{722} \newfont . . . . . 398, 407 \newif . . . . . 31, 212,

687, 875, 996, 1178 \newline …. 1180–

1183, 1186, 1188

\nocaption . . . . . . .

929, \underline{929}, 1000, 1068

\noexpand . . . . 268,

1155–1163, 1309

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

68, 71, 72, 136, 218, 222, 226, 230, 234, 654, 949, 950, 968, 969, 978, 979, 1214

O

\oddsidemargin . . . . 138

\onecolumn 764, 891, 1482

\overfullrule . . . . . 58

P

\p@enumii . . . . . . . . 568

\p@enumiii . . . 571, 574

\p@enumiv . . . . . . . . 574

\PackageError 1553, 1575
\PackageWarning . . .

. . 1172, 1230, 1283

\PackageWarningNoLine

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

\pagenumbering 444, 1480

\pageref . . . . . . . . 1421 \pages . . . . . \underline{1413}, 1421

\par@deathcycles . .

…. 381, 384, 385

\paragraph . . . . . . . \underline{232}

\parbox . . . . . . . . . 1187

\parindent . . . . . . .

. 185, 187, 229, 233, 340, 408, 451, 453, 559, 589, 632, 635, 644, 804, 824, 884, 907, 1205, 1340, 1382, 1486 \parsep . . . . . . . 95,

114, 493, 506, 507, 514, 515, 615, 861, 862, 1640

\parskip . . . . . . . . .

. 183, 376, 395, 885 \part . . . . . 216, \underline{216}, 468 \partmark . . . . . . . 1409

\partopsep . . . 189, 364
\PassOptionsToClass 42
\permission . . . . . . .

. . 460, 1358, \underline{1358} \program . . . . . . . . . 653 program (environment) \underline{653} \proof . . . . . . . . . . . 689 proof (environment) . \underline{689}

\protected@edef . . . 276
\ProvidesPackage . 1492
\ps@myheadings . . . .

. . 1388, \underline{1388}, 1478

\ps@titlepage 1422, \underline{1422}

Q

\qed . . . . . . 695, 712, \underline{712} \quad . . . . . . 1499, 1500

\quotation . . . . . . . 609
quotation (environ-

ment) . . . . . . \underline{609} \quote . . . . . . . . . . . 621 quote (environment) . \underline{621}

R

received (environ-

ment) . . . . . \underline{1378} \refname . 855, 1626,

\underline{1626}, 1630, 1631

\renewenvironment .

…. 948, 967, 977

\reserved@a . . . 1546,

1549, 1568, 1571

\reserved@b . . . 1548,

1549, 1570, 1571 \rm . . . . . . . . . 268,

399, 658, 756, 1241 \Roman . . . . . . . . . . . 206

\romannumeral . 537, 552

\rule 414, 1228, 1261, 1347

\runningfoot 1413, \underline{1413}

S \savebox . . . . . 679, 744 \sc 407, 440, 447, 669,

678, 703, 709, 1510

                          \scriptsize \underline{118}, 119, 128

\section . . . . . 220, \underline{220}, 423, 796, 839, 845, 881, 1629

                          \sectionmark . . . . . 1410

\sf 218, 222, 226, 451, 453, 855, 1210, 1215, 1219, 1376, 1392, 1400

                          \shortcite . . . . . . .

. . 1537, \underline{1537}, 1538

                          \shortciteA . . . . . . .

. . 1539, \underline{1539}, 1540

                          \shortciteANP 1540, \underline{1540}
                          \shortciteN . . . 1565,

\underline{1565}, 1576, 1581

                          \shortciteNP 1538, \underline{1538}

\small . . . . . . . . \underline{80}, 81, 82, 85, 86, 440, 656, 1392, 1400

sponsor (environment)

. . . . . . . . . . \underline{1185}

                          \start@cite . . . . . . .

… 1521, \underline{1521}, 1533, 1535, 1537, 1539, 1541

\string . 1285, 1291, 1553, 1557, 1576, 1581, 1606

\strut . . . . . 1186, 1354 \subitem . . . . . \underline{896}, 897

                          \subsection . . . 224, \underline{224}
                          \subsectionmark . . 1411
                          \subsubitem . . . \underline{896}, 898
                          \subsubsection 228, \underline{228}
                          \suppressfloats . . .

. . 403, 1198, 1336

T \tabbing . . . . . . . . . 660

                          \tabbingsep . . . . . . . 785
                          \tabcolsep . . . . . . . 782

\table . . . . . . 982, 1005 table (environment) . \underline{976} table* (environment) \underline{982} \tablename \underline{984}, 990, 991

\tableofcontents . .

. . . . . . . . 795, \underline{795} \terms . . . . . 1297, \underline{1297}

\textfloatsep . . . . .

… 157, 410, 1342

\textfraction . \underline{910}, 915
\textheight . . . . . . .

148, 402, 954, 1331 \textsc . . . . . . . . . 1505 \textup . . . . . 277, 1242

\textwidth 149, 1012,

1080, 1114, 1129, 1228, 1261

\thebibliography . .

. . . . . . . 851, 1627

thebibliography (envi-

ronment) \underline{851}, \underline{1627} \theenumi . 565, 568, 571

\theenumii . . . 567, 571
\theenumiii . . . 570, 574
\theenumiv . . . . . . . 573
\theequation . . 759, \underline{759}
\thefigure   \underline{935}, 937,

942, 1144, 1145, 1151, 1157, 1161

\theindex . . . . . . . . 876 theindex (environ-

ment) . . . . . . \underline{876} \thepage 1169, 1172,

1396, 1400, 1614

\theparagraph . \underline{206}, 210

\thepart . . . . . 206, \underline{206}

\thesection . . . \underline{206},

207, 208, 472, 473

\thesubsection . . . .

. \underline{206}, 208, 209, 473

\thesubsubsection .

…. \underline{206}, 209, 210 \thetable . 984, \underline{984}, 991

\thispagestyle . . . .

… 768, 883, 1195 \thr@@ . . . . . . . . . . 1526 \tiny . . . . . \underline{118}, 120,

129, 426, 1398, 1408, 1425, 1427

\titlepage . . . . . . . 760
titlepage (environ-

ment) . . . . . . \underline{760} \today . . . . . 1429, \underline{1429}

\topfraction . . \underline{910}, 911
\topmargin . . . . . . . 142

\topsep 94, 113, 357,

494, 505, 513, 860 \tt . . . . . . . . 960, 1370

\twocolumn . . . 774, 881

U

\unitlength . . . . . . . 716

\unskip 345, 366, 713,

1241, 1242, 1499 \unvbox . . . . . . . . . . 956

V \vbox . . . . . . . . 451,

453, 954, 1006, 1014, 1050, 1060, 1074, 1113, 1128, 1273

\verse . . . . . . . . . . . 596 verse (environment) . \underline{596} \vpt . . . . . . . . . . . . . 120 \vrule . . . . . . . 1018,

1025, 1227, 1260

W

                          \widowpenalty . . . . . 867

\write . . . . . 1154, 1606

X \xdef . . . . . . . 725, 1312 \xivpt . . . . . . . . . . . 122 \xpt . . . . . . . . . . . . . 68 \xviipt . . . . . . . . . . 123 \xxpt . . . . . . . . . . . . 124 \xxvpt . . . . . . . . . . . 125

Z \z@skip . . . . . . . . . . 377