LaTeX Class For Association Computing Machinery Acmart Instructions

User Manual:

Open the PDF directly: View PDF PDF.
Page Count: 111

DownloadLaTeX Class For Association Computing Machinery Acmart Instructions
Open PDF In BrowserView PDF
LATEX Class for Association for Computing
Machinery ∗
Boris Veytsman†
2017/08/31, v1.47

Abstract
This package provides a class for typesetting publications of Association for
Computing Machinery.

Contents
1 Introduction

3

2 User’s guide
2.1 Installation . . . . . . . . . . . . . . . . . . . . . .
2.2 Invocation and options . . . . . . . . . . . . . . .
2.3 Topmatter commands . . . . . . . . . . . . . . . .
2.4 Algorithms . . . . . . . . . . . . . . . . . . . . . .
2.5 Figures and tables . . . . . . . . . . . . . . . . . .
2.6 Theorems . . . . . . . . . . . . . . . . . . . . . . .
2.7 Online-only and offline-only material . . . . . . .
2.8 Note about anonymous mode . . . . . . . . . . .
2.9 Acknowledgments . . . . . . . . . . . . . . . . . .
2.10 Bibliography . . . . . . . . . . . . . . . . . . . . .
2.11 Colors . . . . . . . . . . . . . . . . . . . . . . . .
2.12 Other notable packages and typographic remarks
2.13 A note for wizards: acmart-preload-hook.tex .

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.

3
3
5
7
19
19
21
21
22
22
23
25
26
26

3 Implementation
3.1 Identification . .
3.2 Preload . . . . .
3.3 Options . . . . .
3.4 Setting switches

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

28
28
28
28
31

∗ ©2016–2017,

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

Association for Computing Machinery
boris@varphi.com

† borisv@lk.net,

1

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

3.5
3.6
3.7
3.8
3.9
3.10
3.11
3.12
3.13
3.14
3.15
3.16
3.17
3.18
3.19
3.20
3.21

Loading base class and package . .
Paper size and paragraphing . . . .
Fonts . . . . . . . . . . . . . . . . .
Floats . . . . . . . . . . . . . . . . .
Lists . . . . . . . . . . . . . . . . . .
Top matter data . . . . . . . . . . .
Concepts system . . . . . . . . . . .
Copyright system . . . . . . . . . .
Typesetting top matter . . . . . . .
Headers and Footers . . . . . . . . .
Sectioning . . . . . . . . . . . . . .
TOC Lists . . . . . . . . . . . . . . .
Theorems . . . . . . . . . . . . . . .
Acknowledgments . . . . . . . . . .
Conditional typesetting . . . . . . .
Additional bibliography commands
End of Class . . . . . . . . . . . . .

2

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.

32
39
42
43
45
47
59
60
65
79
84
86
86
89
89
90
90

1

Introduction

Association for Computing Machinery is the world’s largest educational and scientific
computing society, which delivers resources that advance computing as a science and a
profession1 . It was one of the early adopters of TEX for its typesetting.
It provided several different classes for a number of journal and conference proceedings. Unfortunately during the years since these classes were written, the code was
patched many times, and the support of the different versions of the classes became
difficult.
This package provides the uniform interface for all ACM publications. It is intended
to replace all different classes and packages and provide an up to date LATEX package.
The package uses only free TEX packages and fonts included in TEXLive, MikTEX
and other popular TEX distributions. It is intended to be published in these distributions
itself, which minimizes users’ efforts in the installation and support of the package.
I am grateful to Michael D. Adams, Leif Andersen, Dirk Beyer, Benjamin Byholm,
Michael Ekstrand, Matthew Fluet, Paolo G. Giarrusso, Ben Greenman, LianTze Lim, Ben
Liblit, Kai Mindermann, Frank Mittelbach, Ross Moore, John Owens, Joel Nider, Tobias Pape, Mathias Rav, Matteo Riondato, Craig Rodkin, Bernard Rous, David Shamma,
Stephen Spencer, John Wickerson, and many others for their invaluable help.
The development version of the package is available at https://github.com/
borisveytsman/acmart.

2

User’s guide

The class uses many commands and customizaton options, so it might appear intimidating for a casual user. Do not panic! Many of these commands and options can
be safely left with their default values, or the values recommended by your conference or journal editors. If you have problems or questions, do not hesitate to ask me
directly or the community at https://github.com/borisveytsman/acmart, https:
//tex.stackexchange.com or the closest TEX Users Group. The world-wide TEX Users
Group is at https://tug.org/; please consider joining us if you use TEX regularly.

2.1

Installation

Most probably, you already have this package installed in your favorite TEX distribution;
if not, you may want to upgrade. You may need to upgrade it anyway since the package
uses a number of relatively recent packages, especially the ones related to the fonts.
The latest released version of the package can be found on CTAN: https://www.
ctan.org/pkg/acmart. The development version can be found on GitHub: https://
github.com/borisveytsman/acmart. At this address you can file a bug report—or even
contribute your own enhancement making a pull request.
Most users should not attempt to install this package themselves, and rather rely on
their TEX distributions to provide it. If you decide to install the package yourself, follow
the standard rules:
1 http://www.acm.org/

3

1. Run latex on acmart.ins. This will produce the file acmart.cls
2. Put the file acmart.cls and the bibliography files *.bst to the places where LATEX
can find them (see [1] or the documentation for your TEX system).
3. Update the database of file names. Again, see [1] or the documentation for your
TEX system for the system-specific details.
4. The file acmart.pdf provides the documentation for the package (this is the file
you are probably reading now).
As an alternative to items 2 and 3 you can just put the files in the working directory
where your .tex file is.
The class uses a number of other packages. They are included in all major TEX distributions (TEXLive, MacTEX, MikTEX) of 2015 and later, so you probably have them
installed. Just in case here is the list of these packages:
• amscls, http://www.ctan.org/pkg/amscls
• amsfonts, http://www.ctan.org/pkg/amsfonts
• amsmath, http://www.ctan.org/pkg/amsmath
• binhex, http://www.ctan.org/pkg/binhex
• caption, http://www.ctan.org/pkg/caption
• comment, http://www.ctan.org/pkg/comment
• cm-super, http://www.ctan.org/pkg/cm-super
• cmap, http://www.ctan.org/pkg/cmap
• draftwatermark, http://www.ctan.org/pkg/draftwatermark
• environ, http://www.ctan.org/pkg/environ
• etoolbox, http://www.ctan.org/pkg/etoolbox
• fancyhdr, http://www.ctan.org/pkg/fancyhdr
• float, http://www.ctan.org/pkg/float
• fontaxes, http://www.ctan.org/pkg/fontaxes
• geometry, http://www.ctan.org/pkg/geometry
• graphics, http://www.ctan.org/pkg/graphics
• hyperref, http://www.ctan.org/pkg/hyperref
• ifluatex, http://www.ctan.org/pkg/ifluatex
• ifxetex, http://www.ctan.org/pkg/ifxetex
4

• inconsolata, http://www.ctan.org/pkg/inconsolata
• libertine, http://www.ctan.org/pkg/libertine
• manyfoot, http://www.ctan.org/pkg/manyfoot
• microtype, http://www.ctan.org/pkg/microtype
• mmap, http://www.ctan.org/pkg/mmap
• ms, http://www.ctan.org/pkg/ms
• mweights, http://www.ctan.org/pkg/mweights
• natbib, http://www.ctan.org/pkg/natbib
• nccfoots, http://www.ctan.org/pkg/nccfoots
• newtx, http://www.ctan.org/pkg/newtx
• oberdiek, http://www.ctan.org/pkg/oberdiek
• pdftex-def, http://www.ctan.org/pkg/pdftex-def
• refcount, http://www.ctan.org/pkg/refcount
• setspace, http://www.ctan.org/pkg/setspace
• textcase, http://www.ctan.org/pkg/textcase
• totpages, http://www.ctan.org/pkg/totpages
• trimspaces, http://www.ctan.org/pkg/trimspaces
• upquote, http://www.ctan.org/pkg/upquote
• url, http://www.ctan.org/pkg/url
• xcolor, http://www.ctan.org/pkg/xcolor
• xkeyval, http://www.ctan.org/pkg/xkeyval
• xstring, http://www.ctan.org/pkg/xstring

2.2

Invocation and options

To use the class put in the preamble of your document
\documentclass[hoptionsi]{acmart}
There are several options corresponding to the type of the document and its general
appearance. They are described below. Generally speaking, the options have key=value
forms, for example
\documentclass[format=acmsmall, screen=true, review=false]{acmart}

5

Table 1: The possible values for the format option
Value

Meaning

manuscript
acmsmall

A manuscript. This is the default
Small single column format, used for CIE, CSUR, JACM, JDIQ, JEA,
JERIC, JETC, PACMHCI, PACMPL, TAAS, TACCESS, TACO, TALG,
TALLIP (formerly TALIP), TCPS, TEAC, TECS, THRI, TIIS, TISSEC,
TIST, TKDD, TMIS, TOCE, TOCHI, TOCL, TOCS, TOCT, TODAES,
TODS, TOIS, TOIT, TOMACS, TOMM (formerly TOMCCAP), TOMPECS, TOMS, TOPC, TOPLAS, TOPS, TOS, TOSEM, TOSN, TRETS,
TSAS, TSC, TSLP, TWEB, including special issues.
Large single column format, used for IMWUT, JOCCH, POMACS,
TAP, including special issues.
Large double column format, used for TOG, including special issues.
Proceedings format for most of ACM conferences (with the exceptions
listed below) and all ICPS volumes.
As of March 2017, this format is no longer used. Please use sigconf
for SIGGRAPH conferences.
Proceedings format for SIGPLAN conferences.
Proceedings format for SIGCHI conferences.
Format for SIGCHI extended abstract.

acmlarge
acmtog
sigconf
siggraph
sigplan
sigchi
sigchi-a

The option format describes the format of the output. There are several possible
values for this option, for example,
\documentclass[format=acmtog]{acmart}

Actually the words format= can be omitted, e.g.,
\documentclass[acmtog, review=false]{acmart}

The possible formats are listed in Table 1. Note that formats starting with acm are intended for journals and transactions, while formats starting with sig are intended for
proceedings published as books.
Note that sometimes conference proceedings are published as a special issue (or issues) of an ACM journal. In this case you should use the journal format for a conference
paper. Please contact your conference committee if in doubt.
There are several Boolean options which can take true or false values. They are
listed in Table 2. The words =true can be omitted when setting the Boolean option, so
instead of screen=true one can write just screen, for example,
\documentclass[acmsmall, screen, review]{acmart}

The option review is useful when combined with the manuscript format option: it
provides a version suitable for reviewers and copyeditors.

6

Table 2: Boolean options
Option

Default

Meaning

review

false

screen
natbib
anonymous
authorversion

see text
true
false
false

timestamp
authordraft
acmthm

false
false
true

A review version: lines are numbered, hyperlinks are
colored
A screen version: hyperlinks are colored
Whether to use natbib package (see Section 2.10)
Whether to make author(s) anonymous
Whether to generate a special version for authors’ personal use or posting (see Section 2.3)
Whether to put a time stamp in the footer of each page
Whether author’s draft mode is enabled
Whether to define theorem-like environments, see Section 2.6

The default for the option screen depends on the publication. At present it is false
for all publications but PACM, since PACM is now electronic-only. Thus PACM titles
(see Table 3 set this option to true. This option may in the future involve additional
features suitable for on-screen versions of the articles.
The option natbib is used when the corresponding BibTEX style is based on natbib.
In most cases you do not need to set it. See Section 2.10.
The option anonymous is used for anonymous review process: all author information
becomes obscured.
The option timestamp is used to include a time stamp in the footer of each page.
When preparing a document, this can help avoid confusing different revisions. The
footer also include the page range of the document. This helps detect missing pages
in hard copies.
The option authordraft is intended for the authors’ drafts, not intended for distribution. It typesets copyright block to give the authors the idea of its size and overall
size of the paper, but overprints it with the phrase “Unpublished working draft. Not
for distribution”, which also is used as a watermark. This option sets timestamp and
review to true, but these decisions can be overriden by setting these options to false
after authordraft.

2.3

Topmatter commands

A number of commands set up top matter information, or, in the computer science jargon, metadata for the article. They establish the publication name, article title, authors,
doi and other data. Some of these commands, like \title or \author, should be put by
the authors. Others, like \acmVolume or \acmDOI—by the editors. Below we describe
these commands and mention who should issue them. These macros should be used before the \maketitle command. Note that in the previous versions of ACM classes some
of these commands should be used before \maketitle, and some after it. Now they all
must be used before \maketitle.

7

\acmJournal

The class internally loads amsart class, so many top matter commands are inherited
from amsart [2].
The macro \acmJournal{hshortNamei} sets the name of the journal or transaction
for journals and transactions. The argument is the short name of the publication in
uppercase, for example,
\acmJournal{TOMS}

\acmConference

The currently recognized journals are listed in Table 3. Note that conference proceedings
published in book form do not set this macro.
It is expected that this command is inserted by the author of the manuscript when
she decides to which journal to submit the manuscript.
The macro \acmConference[hshort namei]{hnamei}{hdatei}{hvenuei} is used for
conference proceedings published in the book form. The arguments are the following:
short name: the abbreviated name of the conference (optional).
name: the name of the conference.
date: the date(s) of the conference.
venue: the place of the conference.
Examples:
\acmConference[TD’15]{Technical Data Conference}{November
12--16}{Dallas, TX, USA}
\acmConference{SA’15 Art Papers}{November 02--06, 2015}{Kobe, Japan}

\acmBooktitle

By default we assume that the conference proceedings are published in the book
named Proceedings of CONFERENCE, where CONFERENCE is the name of the conference
inferred from the command \acmConference above. However, sometimes the book title
is different. The command \acmBooktitle may be used to set this title, for example,
\acmBooktitle{Companion to the first International Conference on the
Art, Science and Engineering of Programming (Programming ’17)}

\editor

In most cases conference proceedings are edited. You can use the command
\editor[heditori] to set the editor of the volume. This command can be repeated, for
example,
\editor{Jennifer B. Sartor}
\editor{Theo D’Hondt}
\editor{Wolfgang De Meuter}

\title

The command \title, as in amsart class, has two arguments: one optional, and one
mandatory:

8

Table 3: ACM publications and arguments of the \acmJournal command
Abbreviation

Publication

CIE
CSUR
IMWUT
JACM
JDIQ
JEA
JERIC
JETC
JOCCH
PACMHCI
PACMPL
POMACS
TAAS
TACCESS
TACO
TALG
TALLIP
TAP
TCPS
TEAC
TECS
THRI
TIIS
TISSEC
TIST
TKDD
TMIS
TOCE
TOCHI
TOCL
TOCS
TOCT
TODAES
TODS
TOG
TOIS
TOIT
TOMACS
TOMM
TOMPECS
TOMS
TOPC
TOPLAS
TOPS
TOS
TOSEM
TOSN
TRETS
TSAS
TSC
TSLP
TWEB

ACM Computers in Entertainment
ACM Computing Surveys
PACM on Interactive, Mobile, Wearable and Ubiquitous Technologies
Journal of the ACM
ACM Journal of Data and Information Quality
ACM Journal of Experimental Algorithmics
ACM Journal of Educational Resources in Computing
ACM Journal on Emerging Technologies in Computing Systems
ACM Journal on Computing and Cultural Heritage
PACM on Human-Computer Interaction
PACM on Programming Languages
PACM on Measurement and Analysis of Computing Systems
ACM Transactions on Autonomous and Adaptive Systems
ACM Transactions on Accessible Computing
ACM Transactions on Architecture and Code Optimization
ACM Transactions on Algorithms
ACM Transactions on Asian and Low-Resource Language Information Processing
ACM Transactions on Applied Perception
ACM Transactions on Cyber-Physical Systems
ACM Transactions on Economics and Computation
ACM Transactions on Embedded Computing Systems
ACM Transactions on Human-Robot Interaction
ACM Transactions on Interactive Intelligent Systems
ACM Transactions on Information and System Security
ACM Transactions on Intelligent Systems and Technology
ACM Transactions on Knowledge Discovery from Data
ACM Transactions on Management Information Systems
ACM Transactions on Computing Education
ACM Transactions on Computer-Human Interaction
ACM Transactions on Computational Logic
ACM Transactions on Computer Systems
ACM Transactions on Computation Theory
ACM Transactions on Design Automation of Electronic Systems
ACM Transactions on Database Systems
ACM Transactions on Graphics
ACM Transactions on Information Systems
ACM Transactions on Internet Technology
ACM Transactions on Modeling and Computer Simulation
ACM Transactions on Multimedia Computing, Communications and Applications
ACM Transactions on Modeling and Performance Evaluation of Computing Systems
ACM Transactions on Mathematical Software
ACM Transactions on Parallel Computing
ACM Transactions on Programming Languages and Systems
ACM Transactions on Privacy and Security
ACM Transactions on Storage
ACM Transactions on Software Engineering and Methodology
ACM Transactions on Sensor Networks
ACM Transactions on Reconfigurable Technology and Systems
ACM Transactions on Spatial Algorithms and Systems
ACM Transactions on Social Computing
ACM Transactions on Speech and Language Processing
ACM Transactions on the Web

9

\title[hShortTitlei]{hFullTitlei}

\subtitle

\author
\orcid
\affiliation
\email

The mandatory argument is the full title of the article. The optional argument, if present,
defines the shorter version of the title for running heads. If the optional argument is
absent, the full title is used instead.
It is expected that this command is inserted by the author of the manuscript.
Besides title, ACM classes allow subtitle, set with the \subtitle{hsubtitlei} macro.
The commands for specification of authors are highly structured. The reason is, they
serve double duty: the authors’ information is typeset in the manuscript, and is used by
the metadata extraction tools for indexing and cataloguing. Therefore it is very important to follow the guidelines exactly.
The basic commands are \author, \orcid (for the researchers registered with ORCID, http://www.orcid.org/), \affiliation and \email. In the simplest case you
enter them in this order:
\author{...}
\orcid{...}
\affiliation{...}
\email{...}

Do not use LATEX \and macro! Each author deserves his or her own \author command.
Note that some formats do not typset e-mails of ORCID identifiers. Do not worry:
metadata tools will get them.
Sometimes an author has several affiliations. In this case the \affiliation command should be repeated:
\author{...}
\orcid{...}
\affiliation{...}
\affiliation{...}
\email{...}

Similarly you can repeat \email command.
You may have several authors with the same affiliation, different affiliations, or overlapping affiliations (author A1 is affiliated with institutions I 1 and I 2 , while author A2 is
affiliated with I 2 only, and author A3 is affiliated with I 1 and I 3 , . . . ). The recommended
solution is to put the \affiliation commands after each author, possibly repeating
them:
\author{...}
\orcid{...}
\affiliation{...}
\affiliation{...}
\email{...}
\author{...}
\orcid{...}
\affiliation{...}
\email{...}

10

\author{...}
\orcid{...}
\affiliation{...}
\affiliation{...}
\email{...}

In some cases when several authors share the same affiliation you may try to save the
space using the format
\author{...}
\email{...}
\author{...}
\email{...}
\affiliation{...}

\additionalaffiliation

However, this format is not generally recommended.
In some cases too many affiliations take too much space. The command \additionalaffiliation{haffiliationi
creates a footnote after author’s name with the words “Also with {haffiliationi}”. You
should use this command only as the last resort. An example of usage is:
\author{G. Tobin}
\author{Ben Trovato}
\additionalaffiliation{%
\institution{The Th{\o}rv{\"a}ld Group}
\streetaddress{1 Th{\o}rv{\"a}ld Circle}
\city{Hekla}
\country{Iceland}}
\affiliation{%
\institution{Institute for Clarity in Documentation}
\streetaddress{P.O. Box 1212}
\city{Dublin}
\state{Ohio}
\postcode{43017-6221}
}

\position
\institution
\department
\streetaddress
\city
\state
\postcode
\country

Here Trovato and Tobin share their affiliation with the Institute for Clarity in Documentation, but only Ben Trovato is affiliated with The Thørväld Group.
The \affiliation and \additionalaffiliation commands are further structured
to interact with the metadata extraction tools. Inside these commands you should use
\position, \institution, \department, \city, \streetaddress, \state, \postcode
and \country macros to indicate the corresponding parts of the affiliation. Note that in
some cases (for example, journals) these parts are not printed in the resulting copy, but
they are necessary since they are used by the XML metadata extraction programs. Do
not put commas or \\ between the elements of \affiliation: they will be provided
automatically.
An example of the author block:

11

\author{A. U. Thor}
\orcid{1234-4564-1234-4565}
\affiliation{%
\institution{University of New South Wales}
\department{School of Biomedical Engineering}
\streetaddress{Samuels Building (F25), Kensington Campus}
\city{Sidney}
\state{NSW}
\postcode{2052}
\country{Australia}}
\email{author@nsw.au.edu}
\author{A. N. Other}
\affiliation{%
\institution{University of New South Wales}
\city{Sidney}
\state{NSW}
\country{Australia}}
\author{C. O. Respondent}
\orcid{1234-4565-4564-1234}
\affiliation{%
\institution{University of Pennsylvania}
\city{Philadelphia}
\state{PA}
\country{USA}}
\affiliation{%
\institution{University of New South Wales}
\city{Sidney}
\state{NSW}
\country{Australia}}

Note that old ACM conference formats did not allow for more than six authors and
required some efforts from the authors to achieve alignment. The new format is much
better in this.
Sometimes an author works in several departments within the same insitution. There
could be two situations: the departments are independent, or one department is within
another. In the first case just repeat the command \department several times. To handle
the second case the command has an optional numerical parameter. The departments
with higher numbers are higher in the organizational chart. Compare
\affiliation{%
\department[0]{Department of Lunar Studies} % 0 is the default
\department[1]{John Doe Institute} % higher than 0
\institution{University of San Serriffe}
\country{San Serriffe}}

and
\affiliation{%

12

\department{Department of Lunar Studies} % Not within JD Inst!
\department{John Doe Institute}
\institution{University of San Serriffe}
\country{San Serriffe}}

The command \affiliation formats the output according to American conventions. This might be wrong for some cases. Consider, for example, a German address. In
Germany postcode is put before city and is not separated by a comma. We can handle
this order using
\affiliation{%
\institution{Fluginstitut}
\streetaddress{Sonnenallee 17}
\postcode{123456}
\city{Helm}
\country{Germany}
}

However, the comma after postcode is unfortunate: the address will be typeset (in some
formats) as
Fluginstitut
Sonenallee 17
123456, Helm, Germany

To overcome this problem, the command \affiliation has an optional parameter
obeypunctuation, which can be false (the default) or true. If this parameter is true,
\afffiliation obeys the author’s command. Thus
\affiliation[obeypuctuation=true]{%
\institution{Fluginstitut}\\
\streetaddress{Sonnenallee 17}\\
\postcode{123456}
\city{Helm},
\country{Germany}
}

will be typeset as
Fluginstitut
Sonenallee 17
123456 Helm, Germany

\thanks

Note that you should not use this option for journals.
It is expected that these commands are inserted by the author of the manuscript.
Like amsart (and unlike standard LATEX), we allow \thanks only outside of commands

13

\authorsaddresses

\title and \author. This command is obsolete, and should not be used in most cases.
Do not list your acknowledgements and grant sponsors here: put this information in the
acks environment (see Section 2.9).
In some formats the addresses are printed as a footnote on the first page. By default
LATEX typesets them itself using the information you give it. However, you can override
its choice using the commmand \authorsaddresses{hcontact addressesi}, for example,
\authorsaddresses{%
Authors’ addresses: G.˜Zhou, Computer Science Department, College of
William and Mary, 104 Jameson Rd, Williamsburg, PA 23185, US;
V.˜B\’eranger, Inria Paris-Rocquencourt, Rocquencourt, France;
A.˜Patel, Rajiv Gandhi University, Rono-Hills, Doimukh, Arunachal
Pradesh, India; H.˜Chan, Tsinghua University, 30 Shuangqing Rd,
Haidian Qu, Beijing Shi, China; T.˜Yan, Eaton Innovation Center,
Prague, Czech Republic; T.˜He, C.˜Huang, J.˜A.˜Stankovic University
of Virginia, School of Engineering Charlottesville, VA 22903, USA;
T. F. Abdelzaher, (Current address) NASA Ames Research Center,
Moffett Field, California 94035.}

\titlenote
\subtitlenote
\authornote

You can suppress printing authors’ addresses by setting them to an empty string:
\authorsaddresses{}.
While the command \thanks generates a note without footnote mark, sometimes
the authors might need notes more tightly connected to the title, subtitle or author. The
commands \titlenote, \subtitlenote and \authornote that follow the corresponding commands (\title, \subtitle and \author) generate such notes, for example
\title{This is a title}
\titlenote{This is a titlenote}
\author{A. U. Thor}
\authornote{This is an authornote}

\authornotemark

Please never use \footnotes inside \author or \title commands, since this confuses metadata extraction software (actually these commands now produce errors).
Sometimes one may need to have the same footnote connected to several authors.
The command \authornotemark[hnumberi] adds just the footnote mark, for example
\author{A. U. Thor}
\authornote{Both authors contributed equally to the paper}
...
\author{A. N. Other}
\authornotemark[1]

\acmVolume
\acmNumber
\acmArticle
\acmYear
\acmMonth

The correct numbering of these marks is the responsibility of the user.
The macros \acmVolume, \acmNumber, \acmArticle, \acmYear and \acmMonth are
inserted by the editor and set the journal volume, issue, article number, year and month
corrspondingly. The arguments of all these commands, including \acmMonth is numerical, including \acmMonth, for example,

14

\acmVolume{9}
\acmNumber{4}
\acmArticle{39}
\acmYear{2010}
\acmMonth{3}

\acmArticleSeq

Note that \acmArticle is used not only for journals, but also for some conference proceedings.
The articles in the same issue of a journal have a sequential number. It is used to
vertically position the black blob in some formats. By default it is the same as article
number, but the command \acmArticleSeq{hni} can be used to change it:
\acmArticle{39}
% The sequence number will be 39 by default
\acmArticleSeq{5} % We redefine it to 5

\acmSubmissionID

Setting this number to zero suppresses the blob.
If you paper got a Submission ID from the Conference Management System, put it
here:
\acmSubmissionID{123-A56-BU3}

\acmPrice

The macro \acmPrice{hpricei} sets the price for the article
\acmPrice{25.00}

\acmISBN

Note that you do not need to put the dollar sign here, just the amount. By default
the price is $15.00, unless the copyright is set to usgov or rightsretained, when it
is suppressed. Note that to override the defaults you need to set the price after the
\setcopyright command to override the default. Also, the command \acmPrice{}
suppresses the printing of the price.
Book-like volumes have ISBN numbers attached to them. The macro \acmISBN{hISBN i}
sets it. Normally it is set by the typesetter, for example,
\acmISBN{978-1-4503-3916-2}

\acmDOI

Setting it to empty string, as \acmISBN{}, suppresses printing of ISBN.
The macro \acmDOI{hDOI i} sets the DOI number of the article, for example,
\acmDOI{10.1145/9999997.9999999}

\acmBadgeR
\acmBadgeL

It is normally set by the typesetter. Setting it to empty string, \acmDOI{} suppresses
DOI.
Some conference articles get special distinction, for example, the artifact evaluation
for PPoPP 2016 (see http://ctuning.org/ae/ppopp2016.html). These articles display
special badges supplied by the conference organizers. The class provides commands to

15

add these badges: \acmBadgeR[hurli]{hgraphicsi} and \acmBadgeL[hurli]{hgraphicsi}.
The first command puts the badge to the right of the title, and the second one—to the
left. The exception is the sigchi-a mode for SIGCHI Extended abstract, which puts
the badges on the left margin. The argument have the following meaning: [hurli], if
provided, sets the link to the badge authority in the screen version, while {hgraphicsi}
sets the graphics file with the badge image. The file must be a cropped square, which is
scaled to a standard size in the output. For example, if the badge image is ae-logo.pdf,
the command is
\acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}

\startPage
\terms
\keywords

The macro \startPage{hpagei} sets the first page of the article in the journal or
book. It is used by the typesetter.
The command \keywords{hkeyword, keyword,. . . i} sets keywords for the article.
They must be separated by commas, for example,
\keywords{wireless sensor networks, media access control,
multi-channel, radio interference, time synchronization}

CCSXML
\ccsdesc

ACM publications are classified according to the ACM Computing Classification
Scheme (CCS). CCS codes are used both in the typeset version of the publications and
in the metadata in the various databases. Therefore you need to provide both TEX commands and XML metadata with the paper.
The tool at http://dl.acm.org/ccs.cfm can be used to generate CCS codes. After
you select the topics, click on “Generate CCS codes” to get the result like the following:
\begin{CCSXML}


10010520.10010553.10010562
Computer systems organization˜Embedded systems
500


10010520.10010575.10010755
Computer systems organization˜Redundancy
300


10010520.10010553.10010554
Computer systems organization˜Robotics
100


10003033.10003083.10003095
Networks˜Network reliability
100


16

Table 4: Parameters for \setcopyright command
Parameter

Meaning

none

The copyright and permission information is not typeset
(this is the option for some ACM conferences).
The authors transfer the copyright to ACM (the “traditional”
choice).
The authors retain the copyright but license the publication
rights to ACM.
The authors retain the copyright and publication rights to
themselves or somebody else.
All the authors are employees of the US Government.
Some authors are employees of the US Government.
All the authors are employees of the Canadian Government.
Some authors are employees of the Canadian Government.
Some authors are employees of the US Government, and the
publication rights are licensed to ACM.
All the authors are employees of the Canadian Government,
and the publication rights are licensed to ACM.
Some authors are employees of the Canadian Government,
and the publication rights are licensed to ACM.
Authors are employees of a Government other than US or
Canada.
Authors are employees of a Government other than US or
Canada, and the publication rights are licensed to ACM.

acmcopyright
acmlicensed
rightsretained
usgov
usgovmixed
cagov
cagovmixed
licensedusgovmixed
licensedcagov
licensedcagovmixed
othergov
licensedothergov


\end{CCSXML}
\ccsdesc[500]{Computer systems organization˜Embedded systems}
\ccsdesc[300]{Computer systems organization˜Redundancy}
\ccsdesc{Computer systems organization˜Robotics}
\ccsdesc[100]{Networks˜Network reliability}

\setcopyright

You need to just copy this code and paste it in your paper anywhere before
\maketitle.
There are several possibilities for the copyright of the papers published by ACM:
the authors may transfer the rights to ACM, license them to ACM, some or all authors
might be employees of the US or Canada Government, etc. Accordingly the command
\setcopyright{...} is introduced. Its argument is the copyright status of the paper,
for example, \setcopyright{acmcopyright}. The possible values for this command
are listed in Table 4.
The ACM submission software should generate the right command for you to paste
into your file.

17

\copyrightyear

Each copyright statement must have the year of copyright. By default it is the same
as \acmYear, but you can override this decision using the macro \copyrightyear, e.g.,
\acmYear{2016}
\copyrightyear{2015}

abstract
teaserfigure

There is a special case for a personal copy that the authors may be allowed to generate
for their use or a posting on a personal site (check the instructions for the specific journal
or conference for the details). The document option authorversion=true produces
the special form of the copyright statement for this case. Note that you still need the
\setcopyright command and (optionally) \copyrightyear command to tell TEX about
the copyright owner and year. Also, you should be aware that due to the different sizes
of the permssion blocks for the printed version and authors’ version the page breaks
might be different between them.
The environment abstract must precede \maketitle command. Again, this is different from the standard LATEX.
A special kind of figure is used for many two-column conference proceedings.
This figure is placed just after the authors, but before the main text. The environment teaserfigure is used for these figures. This environment must be used before
\maketitle, for example,
\begin{teaserfigure}
\includegraphics[width=\textwidth]{sampleteaser}
\caption{This is a teaser}
\label{fig:teaser}
\end{teaserfigure}

\settopmatter

Some information in the top matter is printed for certain journals or proceedings and suppressed for others. You may override these defaults using the command
\settopmatter{hsettingsi}. The settings and their meanings are listed in Table 5. For
example,
\settopmatter{printacmref=false, printccs=true, printfolios=true}

The parameter authorsperrow requires some explanation. In conference proceedings
authors’ information is typeset in boxes, several boxes per row (see sample-sigconf.pdf,
sample-sigplan.pdf etc.). The number of the boxes per row is determined automatically. If you want to override this decision, you may do it using this parameter, for
example,
\settopmatter{authorsperrow=4}

\received

However, in most cases you should not do this and use the default settings. Setting
authorsperrow to 0 will revert to default settings.
The command \received[hstagei]{hdatei} sets the history of the publication. The

18

Table 5: Settings for \settopmatter command
Parameter

Values

Meaning

printccs
printacmref
printfolios
authorsperrow

true/false
true/false
true/false
numeric

Whether to print CCS categories
Whether to print ACM bibliographic entry
Whether to print page numbers (folios)
Number of authors per row for title page in conference
proceedings formats

[hstagei] argument is optional; the default is Received for the first date and revised
for the subsequent ones. For example
\received{February 2007}
\received[revised]{March 2009}
\received[accepted]{June 2009}

\maketitle
\shortauthors

The macro \maketitle must be the last command in the top matter group: i.e., it
must follow the commands defined in this section.
After the command \maketitle the macro \shortauthors stores the names of the
authors for the running head. You may redefine it if the list of author’s name is too long,
e.g.,
\maketitle
\renewcommand{\shortauthors}{Zhou et al.}

2.4

Algorithms

There are now several good packages for typesetting algorithms [3, 4, 5], and the authors
are now free to choose their favorite one.

2.5

Figures and tables

New ACM styles use the standard LATEX interface for figures and tables. There are some
important items to be aware of, however.
1. The captions for figures must be entered after the figure bodies, and for the tables
before the table bodies.
2. ACM uses the standard types for figures and types and adds several new ones. In
total there are the following types:
figure, table: a standard figure or table, taking full text width in one-column formats and one column in two-column formats.
figure*, table* in two-column formats, a special figure or table taking full text
width.

19

teaserfigure: a special figure before \maketitle.
sidebar, marginfigure, margintable: in the sigchi-a format, special sidebars,
tables and figures on the margin.
3. Accordingly, when scaling the images, one should use the following sizes:
(a) For figure in one-column mode, figure* in two-column mode or teaserfigure—
\textwidth (in the one-column you can also use \columnwidth, which coincides with \textwidth in this case).
(b) For figure in two-column mode—\columnwidth.
(c) For marginfigure–\marginparwidth.
(d) For figure* in SIGCHI Extended abstracts—\fulltextwidth.
It is strongly recommended to use the package booktabs [6] and follow its main
principles of typography with respect to tables:
1. Never, ever use vertical rules.
2. Never use double rules.
It is also a good idea not to overuse horizontal rules.
For table footnotes you have several options described in TeX FAQ [1]. The simplest
one is to use \minipage environment:
\begin{table}
\caption{Simulation Configuration}
\label{tab:conf}
\begin{minipage}{\columnwidth}
\begin{center}
\begin{tabular}{ll}
\toprule
TERRAIN\footnote{This is a table footnote. This is a
table footnote. This is a table footnote.}
&
(200\,m$\times$200\,m) Square\\
Node Number
& 289\\
Node Placement & Uniform\\
Application
& Many-to-Many/Gossip CBR Streams\\
Payload Size
& 32 bytes\\
Routing Layer
& GF\\
MAC Layer
& CSMA/MMSN\\
Radio Layer
& RADIO-ACCNOISE\\
Radio Bandwidth & 250Kbps\\
Radio Range
& 20m--45m\\
\bottomrule
\end{tabular}
\end{center}
\bigskip
\footnotesize\emph{Source:} This is a table
sourcenote. This is a table sourcenote. This is a table

20

sourcenote.
\emph{Note:} This is a table footnote.
\end{minipage}
\end{table}

sidebar
marginfigure
margintable

SIGCHI extended abstract extensively uses margin space. The package provides
three environments for this with option captions:
sidebar: textual information on the margin
marginfigure: a figure on the margin
margintable: a table on the margin
Tables and figures (including margin tables and margin figures) are by default centered. However, in some cases (for example, when you use several subimages per figure)
you may need to override this decision. A good way to do so is to put the contents into
a \minipage of the width \columnwidth.

2.6

Theorems

ACM classes define two theorem styles and several pre-defined theorem environments:
acmplain: this is the style used for theorem, conjecture, proposition, lemma, and
corollary, and
acmdefinition: this is the style used for example and definition.
These environments are defined by default. In the unusual circumstance that a user
does not wish to have these environments defined, the option acmthm=false in the
preamble will suppress them.

2.7
printonly
screenonly

Online-only and offline-only material

Some supplementary material in ACM publication is put online, but not in the printed
version. The text inside the environment screenonly will be typeset only when the option screen (see Section 2.2) is set to true. Conversely, the text inside the environment
printonly is typset only when this option is set to false. For example
\section{Supplementary materials}
\begin{printonly}
This section is included in the online version of the paper.
\end{printonly}
\begin{screenonly}
(The actual section).
\end{screenonly}

21

We use comment package for typesetting this code, so \begin and \end should start
at the first positions of the lines of their own (no initial spaces etc.).

2.8
anonsuppress

Note about anonymous mode

When the option anonymous is selected, TEX suppresses author information (including
number of authors) for a blind review. However, sometimes the information identifying
the authors may be present in the body of the paper
\begin{anonsuppress}
This is the continuation of the previous work by the author
\cite{prev1, prev2}.
\end{anonsuppress}

As for printonly and screenonly environments, \begin{anonsuppress} and
\end{anonsuppress} should start the line of their own (no leading or trailing spaces).

2.9

acks

\grantsponsor
\grantnum

Acknowledgments

The traditional “Acknowledgments” section is conventionally used to thank persons and
granting agencies for their help and support. However, there are several important considerations about this section.
First, in the anonymous mode this section must be omitted: it gives too much information to the reviewers. Second, the data about the grants is extracted and stored
separately by the postprocessing software. ACM classes provide facilities for both these
tasks.
The environment acks starts an unnumbered section “Acknowledgments” unless the
anonymous mode is chosen. Put all thanks inside this environment.
As for printonly and screenonly environments, \begin{acks} and \end{acks}
should start the line of their own (no leading or trailing spaces).
All the financial support must be listed using the commands \grantsponsor and
\grantnum. These commands tell the postprocessing software about the granting organization and the grant. The format of the command is the following:
\grantsponsor{hsponsorIDi}{hnamei}{hurli}
\grantnum[hurli]{hsponsorIDi}{hnumberi}.
Here {hsponsorIDi} is the unique ID used to match grants to sponsors, {hnamei} is
the name of the sponsor, {hurli} is its URL, and {hnumberi} is the grant number.
The {hsponsorIDi} of the \grantnum command must correspond to \sponsorID of a
\grantsponsor command. Some awards have their own web pages, which you can include using the optional argument of \grantnum command.
At present {hsponsorIDi} is chosen by the authors and can be an arbitrary key, in
the same way the label of \cite is arbitrarily chosen. There might be a change to this
policy if ACM decides to create a global database of sponsoring organizations.
Example:

22

\begin{acks}
The authors would like to thank Dr. Yuhua Li for providing the
matlab code of the \textit{BEPS} method.
The authors would also like to thank the anonymous referees for
their valuable comments and helpful suggestions. The work is
supported by the \grantsponsor{GS501100001809}{National Natural
Science Foundation of
China}{https://doi.org/10.13039/501100001809} under Grant
No.:˜\grantnum{GS501100001809}{61273304}
and˜\grantnum[http://www.nnsf.cn/youngscientsts]{GS501100001809}{Young
Scientsts’ Support Program}.
\end{acks}

2.10

\citestyle

Bibliography

ACM uses the natbib package for formatting references and the style ACM-Reference-Format.
bst for BibTEX processing. You may disable loading of natbib by using the option
natbib=false in \documentclass. However, it is not recommended, as well as the use
of BibTEX styles other than ACM-Reference-Format.bst, and may delay the processing
of the manuscript.
If you use natbib, you can select one of two predefined sitation styles: the authoryear format acmauthoryear or the numeric format acmnumeric using the command
\citestyle, for example,
\citestyle{acmauthoryear}

\setcitestyle

Note that numeric citations are the default mode for most formats.
You may further customize natbib using \setcitestyle command, for example,
\setcitestyle{numbers,sort&compress}

If you use natbib, then commands like \citep and \citeauthor are automatically
supported. The command \shortcite is the same as \cite in numerical mode, and
cites the year in the author-date mode.
There are several customized BibTEX entries and fields in ACM style ACM-Reference-Format.
bst you may want to be aware of.
The style supports fields doi and url, for example,
doi =
url =

"10.1145/1188913.1188915",
"http://ccrma.stanford.edu/˜jos/bayes/bayes.pdf",

The style supports arXiv recommended fields eprint and (optionally) primaryclass,
for example,
eprint =
"960935712",
primaryclass = "cs",

23

See the examples at http://arxiv.org/hypertex/bibstyles/.
There are special entries online and game for Web pages and games, for example,
@online{Thornburg01,
author =
"Harry Thornburg",
year =
"2001",
title =
"Introduction to Bayesian Statistics",
url =
"http://ccrma.stanford.edu/˜jos/bayes/bayes.html",
month =
mar,
lastaccessed = "March 2, 2005",
}

For these entries you can use the lastaccessed field to add the access date to the URL.
There are two ways to enter video and audio sources in the bibliograpy corresponding to two different possibilies. For standalone sources available on WWW you can use
an online entry, setting there howpublished field, for example,
@online{Obama08,
author =
"Barack Obama",
year
=
"2008",
title =
"A more perfect union",
howpublished = "Video",
day
=
"5",
url
=
"http://video.google.com/videoplay?docid=6528042696351994555",
month =
mar,
lastaccessed = "March 21, 2008",
}

For the sources available as attachments to conference proceedings and similar documents, you can use the usual inproceedings entry, again setting the howpublished
field:
@Inproceedings{Novak03,
author =
"Dave Novak",
title =
"Solder man",
booktitle =
"ACM SIGGRAPH 2003 Video Review on Animation theater Program",
year =
"2003",
publisher =
"ACM Press",
address =
"New York, NY",
pages =
"4",
month =
"March 21, 2008",
doi =
"10.9999/woot07-S422",
howpublished = "Video",
}

Sometimes you need to cite a complete issue of a journal. The entry periodical is
intended for this:

24

@periodical{JCohen96,
key =
"Cohen",
editor =
"Jacques Cohen",
title =
"Special issue: Digital Libraries",
journal =
"Communications of the {ACM}",
volume =
"39",
number =
"11",
month =
nov,
year =
"1996",
}

If you do not know the year of publication, the style will add “[n. d.]” (for “no date”)
entry.
If you do not know the author (this is often the case for online entries), use key field
to add a key for sorting and citations, for example,
@online{TUGInstmem,
key =
{TUG},
year =
2017,
title =
"Institutional members of the {\TeX} Users Group",
url =
"http://wwtug.org/instmem.html",
lastaccessed = "May 27, 2017",
}

2.11

Colors

While printed ACM publications are usually black and white, screen mode allows the
use of colors. The ACM classes pre-define several colors according to [7]: ACMBlue,
ACMYellow, ACMOrange, ACMRed, ACMLightBlue, ACMGreen, ACMPurple, ACMDarkBlue.
You can use them in the color assignments.
ACM provides the following recommendation on color use.
The most accessible approach would be to ensure that your article is still readable
when printed in greyscale. The most notable reasons for this are:
1. The most common type of inherited Color Vision Deficiency (CVD) is red-green
(in which similar-brightness colors that only differ in their amounts of red or green
are often confused), and it affects up to 8% of males and 0.5% of females of Northern
European descent.
2. The most common type of acquired Color Vision Deficiency (CVD) is blue-yellow
(including mild cases for many older adults).
3. Most printing is in Black & White.
4. Situational impairments (e.g., bright sunlight shining on a mobile screen) tend to
reduce the entire color gamut, reducing color discriminability.

25

Note: It is not safe to encode information using only variations in color (i.e., only
differences in hue and/or saturation), as there is bound to be someone affected!
To ensure that you are using the most accessible colors, ACM recommends that you
choose sets of colors to help ensure suitable variations in Black & White using either of
the following tools:
1. ColourBrewer: http://colorbrewer2.org/
2. ACE: The Accessible Colour Evaluator: http://daprlab.com/ace/ for designing
WCAG 2.0 compliant palettes.

2.12

Other notable packages and typographic remarks

Several other packages are recommended for specialized tasks.
The package subcaption [8] is recommended for complex figures with several subplots or subfigures that require separate subcaptioning. The packages nomencl [9] and
glossaries [10] can be used for the automatic creation of the lists of symbols and concepts
used.
By default acmart prevents all widows and orphans (i.e. lonely lines at the beginning
and the end of the page) and hyphenation at the end of the page. This is done by rather
strict settings
\widowpenalty=10000
\clubpenalty=10000
\brokenpenalty=10000

However, this may lead to frustrating results when the authors must obey a page limit.
Setting these penalties to smaller values may help if you absolutely need to.
Another problem might be the too strict line breaking rules. Again, a strategically
placed \sloppy command or putting the problematic paragraph inside sloppypar environment might help—but beware the results might be, well, sloppy.
Note that the uppercasing in section titles is done using textcase package [11], so
command \NoCaseChange inside title may help to prevent extraneous uppercasing.

2.13

A note for wizards: acmart-preload-hook.tex

Sometimes you need to change the behavior of acmart. The usual way to do this is
to redefine commands in the preamble. However, these definitions are executed after
acmart is loaded, and certain decisions are made. This presents a number of problems.
For example, one may want to use titletoc package with acmart. This package should be loaded before hyperref. However, since acmart loads hyperref itself,
the line \usepackage{titletoc} in the preamble will lead to grief (see http://tex.
stackexchange.com/questions/357265/using-titletoc-with-acm-acmart-style).
Another example is passing options to package. Suppose you want to use dvipsnames
option of xcolor package. Normally you cannot do this because acmart loads this package itself without options.

26

The file acmart-preload-hook.tex may be used to solve these problems. If this
file exists, it will be processed before any other package. You can use this file to load
packages or pass options to them. For example, if you put in this file
\let\LoadClassOrig\LoadClass
\renewcommand\LoadClass[2][]{\LoadClassOrig[#1]{#2}%
\usepackage{titletoc}}

then titletoc will be loaded before hyperref. If you put in this file
\PassOptionsToPackage{dvipsnames}{xcolor}

you will pass dvipsnames to xcolor.
Important note. This hook makes it too easy to create a manuscript which is not
acceptable by ACM. Even easier it is to create a file which cannot be compiled. So please
do not use it unless you know what you are doing. And if you use it, do not ask for support.
If you decided to use this hook, you are on your own.

27

3

Implementation

3.1

Identification

We start with the declaration who we are. Most .dtx files put driver code in a separate
driver file .drv. We roll this code into the main file, and use the pseudo-guard 
for it.
hclassi\NeedsTeXFormat{LaTeX2e}
h*gobblei
3 \ProvidesFile{acmart.dtx}
4 h/gobblei
5 hclassi\ProvidesClass{acmart}
6 [2017/08/31 v1.47 Typesetting articles for Association of
7 Computing Machinery]
1
2

And the driver code:
8

h*gobblei

9 \documentclass{ltxdoc}
10 \usepackage{array,booktabs,amsmath,graphicx,fancyvrb,tabularx}
11 \usepackage[tt=false,

type1=true]{libertine}

12 \usepackage[varqu]{zi4}
13 \usepackage[libertine]{newtxmath}
14 \usepackage[tableposition=top]{caption}
15 \usepackage{hypdoc}
16 \PageIndex
17 \CodelineIndex
18 \RecordChanges
19 \EnableCrossrefs
20 \begin{document}

\DocInput{acmart.dtx}

21

22 \end{document}

h/gobblei
h*classi
25 \def\@classname{acmart}
23
24

3.2

Preload

We preload acmart-preload-hook:
26 \InputIfFileExists{acmart-preload-hook.tex}{%

\ClassWarning{\@classname}{%
I am loading acmart-preload-hook.tex. You are fully responsible
for any problems from now on.}}{}

27
28
29

3.3

Options

We need xkeyval since some of our options may have values:
30 \RequirePackage{xkeyval}

We use xstring to check whether user input is integer
31 \RequirePackage{xstring}

28

format

The possible formats
32 \define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%

manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
sigplan, sigchi, sigchi-a}[manuscript]{}{%
35
\ClassError{\@classname}{The option format must be manuscript,
36
acmsmall, acmlarge, acmtog, sigconf, siggraph,
37
sigplan, sigchi or sigchi-a}}
38 \def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
39 \@DeclareACMFormat{manuscript}
40 \@DeclareACMFormat{acmsmall}
41 \@DeclareACMFormat{acmlarge}
42 \@DeclareACMFormat{acmtog}
43 \@DeclareACMFormat{sigconf}
44 \@DeclareACMFormat{siggraph}
45 \@DeclareACMFormat{sigplan}
46 \@DeclareACMFormat{sigchi}
47 \@DeclareACMFormat{sigchi-a}
48 \ExecuteOptionsX{format}
33
34

\if@ACM@screen

Whether we use screen mode
49 \define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%

\if@ACM@screen
\PackageInfo{\@classname}{Using screen mode}%
52
\else
53
\PackageInfo{\@classname}{Not using screen mode}%
54
\fi}{\PackageError{\@classname}{Option screen can be either true or
55
false}}
56 \ExecuteOptionsX{screen=false}
50
51

\if@ACM@acmthm

Whether we define theorem-like environments.
57 \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%

\if@ACM@acmthm
\PackageInfo{\@classname}{Requiring acmthm}%
60
\else
61
\PackageInfo{\@classname}{Suppressing acmthm}%
62
\fi}{\PackageError{\@classname}{Option acmthm can be either true or
63
false}}
64 \ExecuteOptionsX{acmthm=true}
58
59

\if@ACM@review

Whether we use review mode
65 \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%

\if@ACM@review
\PackageInfo{\@classname}{Using review mode}%
68
\else
69
\PackageInfo{\@classname}{Not using review mode}%
70
\fi}{\PackageError{\@classname}{Option review can be either true or
71
false}}
72 \ExecuteOptionsX{review=false}
66
67

29

\if@ACM@authorversion

Whether we use author’s version
73 \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%

\if@ACM@authorversion
\PackageInfo{\@classname}{Using authorversion mode}%
76
\else
77
\PackageInfo{\@classname}{Not using authorversion mode}%
78 \fi}{\PackageError{\@classname}{Option authorversion can be either true or
79
false}}
80 \ExecuteOptionsX{authorversion=false}
74
75

\if@ACM@natbib@override
\if@ACM@natbib

Whether we use natbib mode
81 \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%

\if@ACM@natbib
\PackageInfo{\@classname}{Explicitly selecting natbib mode}%
84
\else
85
\PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
86
\fi}{\PackageError{\@classname}{Option natbib can be either true or
87
false}}
88 \ExecuteOptionsX{natbib=true}
82
83

\if@ACM@anonymous

Whether we use anonymous mode
89 \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%

\if@ACM@anonymous
\PackageInfo{\@classname}{Using anonymous mode}%
92
\else
93
\PackageInfo{\@classname}{Not using anonymous mode}%
94
\fi}{\PackageError{\@classname}{Option anonymous can be either true or
95
false}}
96 \ExecuteOptionsX{anonymous=false}
90
91

\if@ACM@timestamp

Whether we use timestamp mode
97 \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%

\if@ACM@timestamp
\PackageInfo{\@classname}{Using timestamp mode}%
100
\else
101
\PackageInfo{\@classname}{Not using timestamp mode}%
102
\fi}{\PackageError{\@classname}{Option timestamp can be either true or
103
false}}
104 \ExecuteOptionsX{timestamp=false}
98
99

\if@ACM@authordraft

Whether we use authordraft mode
105 \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
106
107
108
109
110

\if@ACM@authordraft
\PackageInfo{\@classname}{Using authordraft mode}%
\@ACM@timestamptrue
\@ACM@reviewtrue
\else

30

\PackageInfo{\@classname}{Not using authordraft mode}%
\fi}{\PackageError{\@classname}{Option authordraft can be either true or
113
false}}
114 \ExecuteOptionsX{authordraft=false}
111
112

\ACM@fontsize

The font size to pass to the base class
115 \def\ACM@fontsize{}
116 \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
117 \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
118 \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
119 \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}

120 \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
121 \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
122 \ProcessOptionsX
123 \ClassInfo{\@classname}{Using

3.4
\if@ACM@manuscript

format \ACM@format, number \ACM@format@nr}

Setting switches

Whether we use manuscript mode
124 \newif\if@ACM@manuscript

\if@ACM@journal

There are two kinds of publications: journals and books
125 \newif\if@ACM@journal

\if@ACM@sigchiamode

The formatting of SIGCHI abstracts is quite unusual. We have a special switch for them.
126 \newif\if@ACM@sigchiamode

Setting up switches
127 \ifnum\ACM@format@nr=5\relax

% siggraph
\ClassWarning{\@classname}{The format ‘siggraph’ is now obsolete.
129
I am switching to sigconf.}
130
\setkeys{acmart.cls}{format=sigconf}
131 \fi
132 \ifnum\ACM@format@nr=0\relax
133
\@ACM@manuscripttrue
134 \else
135
\@ACM@manuscriptfalse
136 \fi
137 \@ACM@sigchiamodefalse
138 \ifcase\ACM@format@nr
139 \relax % manuscript
140
\@ACM@journaltrue
141 \or % acmsmall
142
\@ACM@journaltrue
143 \or % acmlarge
144
\@ACM@journaltrue
145 \or % acmtog
128

31

\@ACM@journaltrue
% sigconf
148
\@ACM@journalfalse
149 \or % siggraph
150
\@ACM@journalfalse
151 \or % sigplan
152
\@ACM@journalfalse
153 \or % sigchi
154
\@ACM@journalfalse
155 \or % sigchi-a
156
\@ACM@journalfalse
157
\@ACM@sigchiamodetrue
158 \fi
146

147 \or

3.5

Loading base class and package

At this point we either have \ACM@fontsize, or use defaults
159 \ifx\ACM@fontsize\@empty

\ifcase\ACM@format@nr
\relax % manuscript
162
\def\ACM@fontsize{9pt}%
163
\or % acmsmall
164
\def\ACM@fontsize{10pt}%
165
\or % acmlarge
166
\def\ACM@fontsize{10pt}%
167
\or % acmtog
168
\def\ACM@fontsize{9pt}%
169
\or % sigconf
170
\def\ACM@fontsize{9pt}%
171
\or % siggraph
172
\def\ACM@fontsize{9pt}%
173
\or % sigplan
174
\def\ACM@fontsize{10pt}%
175
\or % sigchi
176
\def\ACM@fontsize{10pt}%
177
\or % sigchi-a
178
\def\ACM@fontsize{10pt}%
179
\fi
180 \fi
181 \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
182 \LoadClass[\ACM@fontsize, reqno]{amsart}
183 \RequirePackage{microtype}
160
161

We need etoolbox for delayed code
184 \RequirePackage{etoolbox}

We need totpages package to calculate the number of pages and refcount to use
the number
185 \RequirePackage{refcount}
186 \RequirePackage{totpages}

32

The amsmath \collect@body is defined using \def. We load environ to access the
\long version of the command
187 \RequirePackage{environ}

We use setspace for doublespacing
188 \if@ACM@manuscript
189 \RequirePackage{setspace}
190 \onehalfspacing
191 \fi

We need textcase for better upcasing
192 \RequirePackage{textcase}

Citations. We patch \setcitestyle to allow, e.g., \setcitestyle{sort} and
\setcitestyle{nosort}. We patch \citestyle to warn about undefined citation
styles.
193 \if@ACM@natbib
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226

\RequirePackage{natbib}
\renewcommand{\bibsection}{%
\section*{\refname}%
\phantomsection\addcontentsline{toc}{section}{\refname}%
}
\renewcommand{\bibfont}{\bibliofont}
\renewcommand\setcitestyle[1]{
\@for\@tempa:=#1\do
{\def\@tempb{round}\ifx\@tempa\@tempb
\renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
\def\@tempb{square}\ifx\@tempa\@tempb
\renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
\def\@tempb{angle}\ifx\@tempa\@tempb
\renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
\def\@tempb{curly}\ifx\@tempa\@tempb
\renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
\def\@tempb{semicolon}\ifx\@tempa\@tempb
\renewcommand\NAT@sep{;}\fi
\def\@tempb{colon}\ifx\@tempa\@tempb
\renewcommand\NAT@sep{;}\fi
\def\@tempb{comma}\ifx\@tempa\@tempb
\renewcommand\NAT@sep{,}\fi
\def\@tempb{authoryear}\ifx\@tempa\@tempb
\NAT@numbersfalse\fi
\def\@tempb{numbers}\ifx\@tempa\@tempb
\NAT@numberstrue\NAT@superfalse\fi
\def\@tempb{super}\ifx\@tempa\@tempb
\NAT@numberstrue\NAT@supertrue\fi
\def\@tempb{nobibstyle}\ifx\@tempa\@tempb
\let\bibstyle=\@gobble\fi
\def\@tempb{bibstyle}\ifx\@tempa\@tempb
\let\bibstyle=\@citestyle\fi
\def\@tempb{sort}\ifx\@tempa\@tempb

33

\def\NAT@sort{\@ne}\fi
\def\@tempb{nosort}\ifx\@tempa\@tempb
229
\def\NAT@sort{\z@}\fi
230
\def\@tempb{compress}\ifx\@tempa\@tempb
231
\def\NAT@cmprs{\@ne}\fi
232
\def\@tempb{nocompress}\ifx\@tempa\@tempb
233
\def\NAT@cmprs{\@z}\fi
234
\def\@tempb{sort&compress}\ifx\@tempa\@tempb
235
\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
236
\def\@tempb{mcite}\ifx\@tempa\@tempb
237
\let\NAT@merge\@ne\fi
238
\def\@tempb{merge}\ifx\@tempa\@tempb
239
\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
240
\def\@tempb{elide}\ifx\@tempa\@tempb
241
\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
242
\def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
243
\NAT@longnamestrue\fi
244
\def\@tempb{nonamebreak}\ifx\@tempa\@tempb
245
\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
246
\expandafter\NAT@find@eq\@tempa=\relax\@nil
247
\if\@tempc\relax\else
248
\expandafter\NAT@rem@eq\@tempc
249
\def\@tempb{open}\ifx\@tempa\@tempb
250
\xdef\NAT@open{\@tempc}\fi
251
\def\@tempb{close}\ifx\@tempa\@tempb
252
\xdef\NAT@close{\@tempc}\fi
253
\def\@tempb{aysep}\ifx\@tempa\@tempb
254
\xdef\NAT@aysep{\@tempc}\fi
255
\def\@tempb{yysep}\ifx\@tempa\@tempb
256
\xdef\NAT@yrsep{\@tempc}\fi
257
\def\@tempb{notesep}\ifx\@tempa\@tempb
258
\xdef\NAT@cmt{\@tempc}\fi
259
\def\@tempb{citesep}\ifx\@tempa\@tempb
260
\xdef\NAT@sep{\@tempc}\fi
261
\fi
262
}%
263
\NAT@@setcites
264
}
265
\renewcommand\citestyle[1]{%
266
\ifcsname bibstyle@#1\endcsname%
267
\csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
268
\else%
269
\@latex@error{Undefined ‘#1’ citestyle}%
270
\fi
271
}%
272 \fi
227
228

\bibstyle@acmauthoryear

The default author-year format:
273 \newcommand{\bibstyle@acmauthoryear}{%
274

\setcitestyle{%

34

authoryear,%
open={[},close={]},citesep={;},%
aysep={},yysep={,},%
notesep={, }}}

275
276
277
278

\bibstyle@acmnumeric

The default numeric format:
279 \newcommand{\bibstyle@acmnumeric}{%
280
281
282
283

\setcitestyle{%
numbers,sort&compress,%
open={[},close={]},citesep={,},%
notesep={, }}}

The default is numeric:
284 \if@ACM@natbib
285 \citestyle{acmnumeric}
286 \fi

\@startsection

Before we call hyperref, we redefine \startsection commands to their LATEX defaults, since amsart ones are too AMS-specific. We need to do this early since we want
hyperref to have a chance to redefine them again:
287 \def\@startsection#1#2#3#4#5#6{%

\if@noskipsec \leavevmode \fi
\par
290
\@tempskipa #4\relax
291
\@afterindenttrue
292
\ifdim \@tempskipa <\z@
293
\@tempskipa -\@tempskipa \@afterindentfalse
294
\fi
295
\if@nobreak
296
\everypar{}%
297
\else
298
\addpenalty\@secpenalty\addvspace\@tempskipa
299
\fi
300
\@ifstar
301
{\@ssect{#3}{#4}{#5}{#6}}%
302
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
303 \def\@sect#1#2#3#4#5#6[#7]#8{%
304
\edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
305
\ifnum #2>\c@secnumdepth
306
\let\@svsec\@empty
307
\else
308
\refstepcounter{#1}%
309
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
310
\fi
311
\@tempskipa #5\relax
312
\ifdim \@tempskipa>\z@
313
\begingroup
314
#6{%
315
\@hangfrom{\hskip #3\relax\@svsec}%
288
289

35

\interlinepenalty \@M #8\@@par}%
\endgroup
318
\csname #1mark\endcsname{#7}%
319
\ifnum #2>\c@secnumdepth \else
320
\@tochangmeasure{\csname the#1\endcsname}%
321
\fi
322
\addcontentsline{toc}{#1}{%
323
\ifnum #2>\c@secnumdepth \else
324
\protect\numberline{\csname the#1\endcsname}%
325
\fi
326
#7}%
327
\else
328
\def\@svsechd{%
329
#6{\hskip #3\relax
330
\@svsec #8}%
331
\csname #1mark\endcsname{#7}%
332
\ifnum #2>\c@secnumdepth \else
333
\@tochangmeasure{\csname the#1\endcsname\space}%
334
\fi
335
\addcontentsline{toc}{#1}{%
336
\ifnum #2>\c@secnumdepth \else
337
\protect\numberline{\csname the#1\endcsname}%
338
\fi
339
#7}}%
340
\fi
341
\@xsect{#5}}
342 \def\@xsect#1{%
343
\@tempskipa #1\relax
344
\ifdim \@tempskipa>\z@
345
\par \nobreak
346
\vskip \@tempskipa
347
\@afterheading
348
\else
349
\@nobreakfalse
350
\global\@noskipsectrue
351
\everypar{%
352
\if@noskipsec
353
\global\@noskipsecfalse
354
{\setbox\z@\lastbox}%
355
\clubpenalty\@M
356
\begingroup \@svsechd \endgroup
357
\unskip
358
\@tempskipa #1\relax
359
\hskip -\@tempskipa
360
\else
361
\clubpenalty \@clubpenalty
362
\everypar{}%
363
\fi}%
364
\fi
365
\ignorespaces}
316
317

36

366 \def\@seccntformat#1{\csname

the#1\endcsname\quad}

367 \def\@ssect#1#2#3#4#5{%

\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup
#4{%
\@hangfrom{\hskip #1}%
\interlinepenalty \@M #5\@@par}%
\endgroup
\else
\def\@svsechd{#4{\hskip #1\relax #5}}%
\fi
\@xsect{#3}}

368
369
370
371
372
373
374
375
376
377
378

\@startsection

Amsart redefines \startsection. Here we redefine it again to make TOC working
379 \def\@starttoc#1#2{\begingroup\makeatletter

\setTrue{#1}%
\par\removelastskip\vskip\z@skip
\@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
{.5\linespacing}{\centering\contentsnamefont}{#2}%
\@input{\jobname.#1}%
\if@filesw
\@xp\newwrite\csname tf@#1\endcsname
\immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
\fi
\global\@nobreakfalse \endgroup
\addvspace{32\p@\@plus14\p@}%

380
381
382
383
384
385
386
387
388
389
390
391 }

\l@subsection

Section spacing is more generous than for amsart
392 \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}

\l@subsection

Amsart has too large spacing
393 \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}

\l@subsubsection

Amsart has too large spacing
394 \def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}}

And hyperref
395 \let\@footnotemark@nolink\@footnotemark
396 \let\@footnotetext@nolink\@footnotetext
397 \RequirePackage[bookmarksnumbered,unicode]{hyperref}
398 \pdfstringdefDisableCommands{%
399
400
401
402

\def\unskip{}%
\def\textbullet{- }%
\def\textrightarrow{ -> }%
\def\footnotemark{}%

403 }
404 \urlstyle{rm}

37

405 \ifcase\ACM@format@nr
406 \relax

% manuscript
% acmsmall
408 \or % acmlarge
409 \or % acmtog
410 \or % sigconf
411 \or % siggraph
412 \or % sigplan
413
\urlstyle{sf}
414 \or % sigchi
415 \or % sigchi-a
416
\urlstyle{sf}
417 \fi
418 \AtEndPreamble{%
419
\if@ACM@screen
420
\hypersetup{colorlinks,
421
linkcolor=ACMRed,
422
citecolor=ACMPurple,
423
urlcolor=ACMDarkBlue,
424
filecolor=ACMDarkBlue}
425
\else
426
\hypersetup{hidelinks}
427
\fi}
407 \or

Bibliography mangling.
428 \if@ACM@natbib

\let\citeN\cite
\let\cite\citep
431
\let\citeANP\citeauthor
432
\let\citeNN\citeyearpar
433
\let\citeyearNP\citeyear
434
\let\citeyear\citeyearpar
435
\let\citeNP\citealt
436
\DeclareRobustCommand\citeA
437
{\begingroup\NAT@swafalse
438
\let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
439
\providecommand\newblock{}%
440 \else
441
\AtBeginDocument{%
442
\let\shortcite\cite%
443
\providecommand\citename[1]{#1}}
444 \fi
445 \newcommand\shortcite[2][]{%
446
\ifNAT@numbers\cite[#1]{#2}\else\citeyear[#1]{#2}\fi}
429
430

\bibliographystyle

Amsart redefines \bibliographystyle since it prefers AMS bibliography. We turn it
back to LATEX definition:
447 \def\bibliographystyle#1{%
448
449

\ifx\@begindocumenthook\@undefined\else
\expandafter\AtBeginDocument

38

\fi
{\if@filesw
\immediate\write\@auxout{\string\bibstyle{#1}}%
\fi}}

450
451
452
453

Graphics and color
454 \RequirePackage{graphicx,

xcolor}

We define ACM colors according to [7]:
455 \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
456 \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
457 \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
458 \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
459 \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
460 \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
461 \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
462 \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}

Author draft mode
463 \if@ACM@authordraft

\RequirePackage{draftwatermark}
\SetWatermarkFontSize{0.5in}
466
\SetWatermarkColor[gray]{.9}
467
\SetWatermarkText{\parbox{12em}{\centering
468
Unpublished working draft\\
469
Not for distribution}}
470 \fi
464
465

3.6

Paper size and paragraphing

We use geometry for dimensions. Note the presently margins do not depend on the
font size option - maybe we will need to change this. See https://github.com/
borisveytsman/acmart/issues/5#issuecomment-272881329.
471 \RequirePackage{geometry}
472 \ifcase\ACM@format@nr
473 \relax

% manuscript
\geometry{letterpaper,head=13pt,
475
marginparwidth=6pc,heightrounded}%
476 \or % acmsmall
477
\geometry{twoside=true,
478
includeheadfoot, head=13pt, foot=2pc,
479
paperwidth=6.75in, paperheight=10in,
480
top=58pt, bottom=44pt, inner=46pt, outer=46pt,
481
marginparwidth=2pc,heightrounded
482
}%
483 \or % acmlarge
484
\geometry{twoside=true, head=13pt, foot=2pc,
485
paperwidth=8.5in, paperheight=11in,
486
includeheadfoot,
487
top=78pt, bottom=114pt, inner=81pt, outer=81pt,
474

39

marginparwidth=4pc,heightrounded
}%
490 \or % acmtog
491
\geometry{twoside=true, head=13pt, foot=2pc,
492
paperwidth=8.5in, paperheight=11in,
493
includeheadfoot, columnsep=24pt,
494
top=52pt, bottom=75pt, inner=52pt, outer=52pt,
495
marginparwidth=2pc,heightrounded
496
}%
497 \or % sigconf
498
\geometry{twoside=true, head=13pt,
499
paperwidth=8.5in, paperheight=11in,
500
includeheadfoot, columnsep=2pc,
501
top=57pt, bottom=73pt, inner=54pt, outer=54pt,
502
marginparwidth=2pc,heightrounded
503
}%
504 \or % siggraph
505
\geometry{twoside=true, head=13pt,
506
paperwidth=8.5in, paperheight=11in,
507
includeheadfoot, columnsep=2pc,
508
top=57pt, bottom=73pt, inner=54pt, outer=54pt,
509
marginparwidth=2pc,heightrounded
510
}%
511 \or % sigplan
512
\geometry{twoside=true, head=13pt,
513
paperwidth=8.5in, paperheight=11in,
514
includeheadfoot=false, columnsep=2pc,
515
top=1in, bottom=1in, inner=0.75in, outer=0.75in,
516
marginparwidth=2pc,heightrounded
517
}%
518 \or % sigchi
519
\geometry{twoside=true, head=13pt,
520
paperwidth=8.5in, paperheight=11in,
521
includeheadfoot, columnsep=2pc,
522
top=66pt, bottom=73pt, inner=54pt, outer=54pt,
523
marginparwidth=2pc,heightrounded
524
}%
525 \or % sigchi-a
526
\geometry{twoside=false, head=13pt,
527
paperwidth=11in, paperheight=8.5in,
528
includeheadfoot, marginparsep=72pt,
529
marginparwidth=170pt, columnsep=20pt,
530
top=72pt, bottom=72pt, left=314pt, right=72pt
531
}%
532
\@mparswitchfalse
533
\reversemarginpar
534 \fi
488
489

\parindent
\parskip

Paragraphing
535 \setlength\parindent{10\p@}

40

536 \setlength\parskip{\z@}
537 \ifcase\ACM@format@nr
538 \relax

% manuscript
% acmsmall
540 \or % acmlarge
541 \or % acmtog
542
\setlength\parindent{9\p@}%
543 \or % sigconf
544 \or % siggraph
545 \or % sigplan
546 \or % sigchi
547 \or % sigchi-a
548 \fi
539 \or

\normalparindent

amsart defines the \normalparindent length and initializes it to 12pt (the value of
\parindent in amsart). It is later used to set the \listparindent length in the
quotation environment and the \parindent length in the \@footnotetext command.
We set \normalparindent to the value of \parindent as selected by acmart for consistent paragraph indents.
549 \setlength\normalparindent{\parindent}

Footnotes require some consideration. We have several layers of footnotes: frontmatter footnotes, “regular” footnotes and the special insert for bibstrip. In the old ACM
classes bibstrip was a \@float. The problem with floats is that they tend to, well, float—
and we want the guarantee they stay.
We use manyfoot for layered footnotes instead.
\copyrightpermissionfootnoterule

This is the footnote rule that separates bibstrip from the rest of the paper. It is a full
width rule.
550 \def\copyrightpermissionfootnoterule{\kern-3\p@
551

\hrule \@width \columnwidth \kern 2.6\p@}

552 \RequirePackage{manyfoot}
553 \SelectFootnoteRule[2]{copyrightpermission}
554 \DeclareNewFootnote{authorsaddresses}
555 \SelectFootnoteRule[2]{copyrightpermission}
556 \DeclareNewFootnote{copyrightpermission}

\footnoterule

Tschichold’s rules:
557 \def\footnoterule{\kern-3\p@
558

\endminipage

\hrule \@width 4pc \kern 2.6\p@}

We do not use footnote rules in minipages
559 \def\endminipage{%
560
561
562
563
564

\par
\unskip
\ifvoid\@mpfootins\else
\vskip\skip\@mpfootins
\normalcolor

41

565
566
567
568
569
570

\@makefntext

\unvbox\@mpfootins
\fi
\@minipagefalse
%% added 24 May 89
\color@endgroup
\egroup
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}

We do note use indentation for footnotes
571 \def\@makefntext{\noindent\@makefnmark}

\@footnotetext

In sigchi-a mode our footnotes are on the margins!
572 \if@ACM@sigchiamode
573 \long\def\@footnotetext#1{\marginpar{%

\reset@font\small
\interlinepenalty\interfootnotelinepenalty
\protected@edef\@currentlabel{%
\csname p@footnote\endcsname\@thefnmark
}%
\color@begingroup
\@makefntext{%
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
\color@endgroup}}%

574
575
576
577
578
579
580
581
582
583 \fi

\@mpfootnotetext

We want the footnotes in minipages centered:
584 \long\def\@mpfootnotetext#1{%
585
586
587
588
589
590
591
592
593
594
595

\@makefnmark

\global\setbox\@mpfootins\vbox{%
\unvbox\@mpfootins
\reset@font\footnotesize
\hsize\columnwidth
\@parboxrestore
\protected@edef\@currentlabel
{\csname p@mpfootnote\endcsname\@thefnmark}%
\color@begingroup\centering
\@makefntext{%
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
\color@endgroup}}

AMS classes use a buggy definition of \makefnmark. We revert to the standard one.
596 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}

\@textbottom

Added some stretch according to David Carlisle’s advice at http://tex.stackexchange.com/a/62318/5522
597 \def\@textbottom{\vskip

\z@ \@plus 1pt}

598 \let\@texttop\relax

3.7

Fonts

Somehow PDFTeX and XeTeX require different incantations to make PDF compliant
with the current Acrobat bugs. Xpdf is much better.

42

The code below is by Ross Moore.
599 \RequirePackage{iftex}
600 \ifPDFTeX
601 \input{glyphtounicode}
602 \pdfglyphtounicode{f_f}{FB00}
603 \pdfglyphtounicode{f_f_i}{FB03}
604 \pdfglyphtounicode{f_f_l}{FB04}
605 \pdfglyphtounicode{f_i}{FB01}
606 \pdfglyphtounicode{t_t}{00740074}
607 \pdfglyphtounicode{f_t}{00660074}
608 \pdfglyphtounicode{T_h}{00540068}
609 \pdfgentounicode=1
610 \fi
611 \RequirePackage{cmap}

\if@ACM@newfonts

Whether we load the new fonts
612 \newif\if@ACM@newfonts
613 \@ACM@newfontstrue
614 \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You

do not
have libertine package installed. Please upgrade your
616
TeX}\@ACM@newfontsfalse}
617 \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
618
have zi4 package installed. Please upgrade your TeX}\@ACM@newfontsfalse}
619 \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
620
have newtxmath package installed. Please upgrade your
621
TeX}\@ACM@newfontsfalse}
615

We use Libertine throughout.
622 \if@ACM@newfonts
623 \RequirePackage[tt=false,

type1=true]{libertine}

624 \RequirePackage[varqu]{zi4}
625 \RequirePackage[libertine]{newtxmath}
626 \RequirePackage[T1]{fontenc}
627 \fi

\liningnums

Libertine defines \liningnums, which makes fontspec unhappy. While we do not use
fontspec, some users do. . .
628 \let\liningnums\@undefined
629 \AtEndPreamble{%

\DeclareTextFontCommand{\liningnums}{\libertineLF}}

630

The SIGCHI extended abstracts are sans serif:
631 \if@ACM@sigchiamode
632

\renewcommand{\familydefault}{\sfdefault}

633 \fi

3.8

Floats

We use caption package

43

634 \RequirePackage{caption,

float}

635 \captionsetup[table]{position=top}
636 \if@ACM@journal

\captionsetup{labelfont={sf, small},
textfont={sf, small}, margin=\z@}
639
\captionsetup[figure]{name={Fig.}}
640 \else
641
\captionsetup{labelfont={bf},
642
textfont={bf}, labelsep=colon, margin=\z@}
643
\ifcase\ACM@format@nr
644
\relax % manuscript
645
\or % acmsmall
646
\or % acmlarge
647
\or % acmtog
648
\or % sigconf
649
\or % siggraph
650
\captionsetup{textfont={it}}
651
\or % sigplan
652
\captionsetup{labelfont={bf},
653
textfont={normalfont}, labelsep=period, margin=\z@}
654
\or % sigchi
655
\captionsetup[figure]{labelfont={bf, small},
656
textfont={bf, small}}
657
\or % sigchi-a
658
\captionsetup[figure]{labelfont={bf, small},
659
textfont={bf, small}}
660
\fi
661 \fi
637
638

sidebar

The sidebar environment:
662 \newfloat{sidebar}{}{sbar}
663 \floatname{sidebar}{Sidebar}
664 \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}

\@sidebar

The processing of the saved text
665 \long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}%
666

marginfigure

\marginpar{\small#1}\egroup}

The marginfigure environment:
667 \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}

\@marginfigure

The processing of the saved text
668 \long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}%
669

margintable

\marginpar{\centering\small#1}\egroup}

The margintable environment:
670 \newenvironment{margintable}{\Collect@Body\@margintable}{}

44

\@margintable

The processing of the saved text
671 \long\def\@margintable#1{\bgroup\captionsetup{type=table}%
672

\marginpar{\centering\small#1}\egroup}

SIGCHI extended abstract provides an interesting possibility to push into the margin.
Here we use figure* and table* for this.
\fulltextwidth

We define the width of the boxes as
673 \newdimen\fulltextwidth
674 \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)

\@dblfloat

We redefine the double float command. First, we make the size bigger. Second, our
default position is going to be tp (to give marginalia a chance)
675 \if@ACM@sigchiamode
676 \def\@dblfloat{\bgroup\columnwidth=\fulltextwidth

\let\@endfloatbox\@endwidefloatbox
\def\@fpsadddefault{\def\@fps{tp}}%
679
\@float}
680 \fi
677
678

\end@dblfloat

And the end. Just adding a \bgroup.
681 \if@ACM@sigchiamode
682 \def\end@dblfloat{%

\end@float\egroup}

683
684 \fi

\@endwidefloatbox

This is the end of a wide box - we basically move everything to the left
685 \def\@endwidefloatbox{%
686
687
688
689
690
691
692
693

\par\vskip\z@skip
\@minipagefalse
\outer@nobreak
\egroup
\color@endbox
\global\setbox\@currbox=\vbox{\moveleft
\dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
\wd\@currbox=\textwidth

694 }

3.9

Lists

695 \ifcase\ACM@format@nr
696 \relax

% manuscript
% acmsmall
698 \or % acmlarge
699 \or % acmtog
700 \or % sigconf
701 \or % siggraph
702 \or % sigplan
703 \def\labelenumi{\theenumi.}
697 \or

45

704 \def\labelenumii{\theenumii.}
705 \def\labelenumiii{\theenumiii.}
706 \def\labelenumiv{\theenumiv.}
707 \or
708 \or

% sigchi
% sigchi-a

709 \fi

AMS uses generous margins for the lists. Note that amsart defines \leftmargin values for list levels at begin document, so we must redefine them in the same manner. Also,
note that amsart redefines enumerate and itemize environments with a \makelabel
command that uses \llap, so the \labelwidth value is (effectively) irrelevant; nonetheless, we follow amsart and set \labelwidth to \leftmargin minus \labelsep.
710 \newdimen\@ACM@labelwidth
711 \AtBeginDocument{%
712
713

\setlength\labelsep{4pt}
\setlength{\@ACM@labelwidth}{6.5pt}

714
715
716
717
718
719
720
721

%% First-level list: when beginning after the first line of an
%% indented paragraph or ending before an indented paragraph, labels
%% should not hang to the left of the preceding/following text.
\setlength\leftmargini{\z@}
\addtolength\leftmargini{\parindent}
\addtolength\leftmargini{2\labelsep}
\addtolength\leftmargini{\@ACM@labelwidth}

722

%% Second-level and higher lists.
\setlength\leftmarginii{\z@}
725
\addtolength\leftmarginii{0.5\labelsep}
726
\addtolength\leftmarginii{\@ACM@labelwidth}
727
\setlength\leftmarginiii{\leftmarginii}
728
\setlength\leftmarginiv{\leftmarginiii}
729
\setlength\leftmarginv{\leftmarginiv}
730
\setlength\leftmarginvi{\leftmarginv}
731
\@listi}
732 \newskip\listisep
733 \listisep\smallskipamount
734 \def\@listI{\leftmargin\leftmargini
735
\labelwidth\leftmargini \advance\labelwidth-\labelsep
736
\listparindent\z@
737
\topsep\listisep}
738 \let\@listi\@listI
739 \def\@listii{\leftmargin\leftmarginii
740
\labelwidth\leftmarginii \advance\labelwidth-\labelsep
741
\topsep\z@skip}
742 \def\@listiii{\leftmargin\leftmarginiii
743
\labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
744 \def\@listiv{\leftmargin\leftmarginiv
745
\labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
746 \def\@listv{\leftmargin\leftmarginv
747
\labelwidth\leftmarginv \advance\labelwidth-\labelsep}
723
724

46

748 \def\@listvi{\leftmargin\leftmarginvi
749

\descriptionlabel

\labelwidth\leftmarginvi \advance\labelwidth-\labelsep}

We do not use default colon as \amsart does:
750 \renewcommand{\descriptionlabel}[1]{\upshape\bfseries

\description

#1}

Make description environment indentation consistent with that of itemize and
enumerate environments.
751 \renewenvironment{description}{\list{}{%
752
753

\labelwidth\@ACM@labelwidth
\let\makelabel\descriptionlabel}%

754 }{
755

\endlist

756 }
757 \let\enddescription=\endlist

3.10

% for efficiency

Top matter data

We use keyval interface to define journal title and relevant information
758 \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787

CIE,%
CSUR,%
IMWUT,%
JACM,%
JDIQ,%
JEA,%
JERIC,%
JETC,%
JOCCH,%
PACMHCI,%
PACMPL,%
POMACS,%
TAAS,%
TACCESS,%
TACO,%
TALG,%
TALLIP,%
TAP,%
TCPS,%
TEAC,%
TECS,%
THRI,%
TIIS,%
TISSEC,%
TIST,%
TKDD,%
TMIS,%
TOCE,%
TOCHI,%

47

TOCL,%
TOCS,%
790
TOCT,%
791
TODAES,%
792
TODS,%
793
TOG,%
794
TOIS,%
795
TOIT,%
796
TOMACS,%
797
TOMM,%
798
TOMPECS,%
799
TOMS,%
800
TOPC,%
801
TOPS,%
802
TOPLAS,%
803
TOS,%
804
TOSEM,%
805
TOSN,%
806
TRETS,%
807
TSAS,%
808
TSC,%
809
TSLP,%
810
TWEB%
811 }{%
812 \ifcase\@journalCode@nr
813 \relax % CIE
814
\def\@journalName{ACM Computers in Entertainment}%
815
\def\@journalNameShort{ACM Comput. Entertain.}%
816
\def\@permissionCodeOne{1544-3574}%
817 \or % CSUR
818
\def\@journalName{ACM Computing Surveys}%
819
\def\@journalNameShort{ACM Comput. Surv.}%
820
\def\@permissionCodeOne{0360-0300}%
821 \or % IMWUT
822
\def\@journalName{Proceedings of the ACM on Interactive, Mobile,
823
Wearable and Ubiquitous Technologies}%
824 \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
825
\def\@permissionCodeOne{2474-9567}%
826
\@ACM@screentrue
827
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
828 \or % JACM
829
\def\@journalName{Journal of the ACM}%
830
\def\@journalNameShort{J. ACM}%
831
\def\@permissionCodeOne{0004-5411}%
832 \or % JDIQ
833
\def\@journalName{ACM Journal of Data and Information Quality}%
834
\def\@journalNameShort{ACM J. Data Inform. Quality}%
835
\def\@permissionCodeOne{1936-1955}%
836 \or % JEA
837
\def\@journalName{ACM Journal of Experimental Algorithmics}%
788
789

48

\def\@journalNameShort{ACM J. Exp. Algor.}%
\def\@permissionCodeOne{1084-6654}%
840 \or % JERIC
841
\def\@journalName{ACM Journal of Educational Resources in Computing}%
842
\def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
843
\def\@permissionCodeOne{1073-0516}%
844 \or % JETC
845 \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
846
\def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
847
\def\@permissionCodeOne{1550-4832}%
848 \or % JOCCH
849
\def\@journalName{ACM Journal on Computing and Cultural Heritage}%
850
\def\@journalName{ACM J. Comput. Cult. Herit.}%
851 \or % PACMHCI
852
\def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
853
\def\@journalName{Proc. ACM Hum.-Comput. Interact.}%
854
\def\@permissionCodeOne{2573-0142}%
855
\@ACM@screentrue
856
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
857 \or % PACMPL
858
\def\@journalName{Proceedings of the ACM on Programming Languages}%
859
\def\@journalName{Proc. ACM Program. Lang.}%
860
\def\@permissionCodeOne{2475-1421}%
861
\@ACM@screentrue
862
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
863 \or % POMACS
864 \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
865
\def\@journalName{Proc. ACM Meas. Anal. Comput. Syst.}%
866
\def\@permissionCodeOne{2476-1249}%
867
\@ACM@screentrue
868
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
869 \or % TAAS
870
\def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
871
\def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
872
\def\@permissionCodeOne{1556-4665}%
873 \or % TACCESS
874
\def\@journalName{ACM Transactions on Accessible Computing}%
875
\def\@journalNameShort{ACM Trans. Access. Comput.}%
876
\def\@permissionCodeOne{1936-7228}%
877 \or % TACO
878 \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
879 \or % TALG
880
\def\@journalName{ACM Transactions on Algorithms}%
881
\def\@journalNameShort{ACM Trans. Algor.}%
882
\def\@permissionCodeOne{1549-6325}%
883 \or % TALLIP
884 \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
885
\def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
886
\def\@permissionCodeOne{2375-4699}%
887 \or % TAP
838
839

49

\def\@journalName{ACM Transactions on Applied Perception}%
% TCPS
890
\def\@journalName{ACM Transactions on Cyber-Physical Systems}%
891 \or % TEAC
892
\def\@journalName{ACM Transactions on Economics and Computation}%
893 \or % TECS
894
\def\@journalName{ACM Transactions on Embedded Computing Systems}%
895
\def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
896
\def\@permissionCodeOne{1539-9087}%
897 \or % THRI
898
\def\@journalName{ACM Transactions on Human-Robot Interaction}%
899
\def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
900
\def\@permissionCodeOne{2573-9522}%
901 \or % TIIS
902
\def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
903
\def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
904
\def\@permissionCodeOne{2160-6455}%
905 \or % TISSEC
906
\def\@journalName{ACM Transactions on Information and System Security}%
907
\def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
908
\def\@permissionCodeOne{1094-9224}%
909 \or % TIST
910 \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
911
\def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
912
\def\@permissionCodeOne{2157-6904}%
913 \or % TKDD
914
\def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
915
\def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
916
\def\@permissionCodeOne{1556-4681}%
917 \or % TMIS
918
\def\@journalName{ACM Transactions on Management Information Systems}%
919
\def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
920
\def\@permissionCodeOne{2158-656X}%
921 \or % TOCE
922
\def\@journalName{ACM Transactions on Computing Education}%
923
\def\@journalNameShort{ACM Trans. Comput. Educ.}%
924
\def\@permissionCodeOne{1946-6226}%
925 \or % TOCHI
926
\def\@journalName{ACM Transactions on Computer-Human Interaction}%
927
\def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
928
\def\@permissionCodeOne{1073-0516}%
929 \or % TOCL
930
\def\@journalName{ACM Transactions on Computational Logic}%
931
\def\@journalNameShort{ACM Trans. Comput. Logic}%
932
\def\@permissionCodeOne{1529-3785}%
933 \or % TOCS
934
\def\@journalName{ACM Transactions on Computer Systems}%
935
\def\@journalNameShort{ACM Trans. Comput. Syst.}%
936
\def\@permissionCodeOne{0734-2071}%
937 \or % TOCT
888

889 \or

50

\def\@journalName{ACM Transactions on Computation Theory}%
\def\@journalNameShort{ACM Trans. Comput. Theory}%
940
\def\@permissionCodeOne{1942-3454}%
941 \or % TODAES
942 \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
943
\def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
944
\def\@permissionCodeOne{1084-4309}%
945 \or % TODS
946
\def\@journalName{ACM Transactions on Database Systems}%
947
\def\@journalNameShort{ACM Trans. Datab. Syst.}%
948
\def\@permissionCodeOne{0362-5915}%
949 \or % TOG
950
\def\@journalName{ACM Transactions on Graphics}%
951
\def\@journalNameShort{ACM Trans. Graph.}%
952
\def\@permissionCodeOne{0730-0301}
953 \or % TOIS
954
\def\@journalName{ACM Transactions on Information Systems}%
955
\def\@journalName{ACM Transactions on Information Systems}%
956
\def\@permissionCodeOne{1046-8188}%
957 \or % TOIT
958
\def\@journalName{ACM Transactions on Internet Technology}%
959
\def\@journalNameShort{ACM Trans. Internet Technol.}%
960
\def\@permissionCodeOne{1533-5399}%
961 \or % TOMACS
962
\def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
963
\def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
964
\def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
965 \or % TOMM
966 \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
967
\def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
968
\def\@permissionCodeOne{1551-6857}%
969
\def\@permissionCodeTwo{0100}%
970 \or % TOMPECS
971 \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
972
\def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
973
\def\@permissionCodeOne{2376-3639}%
974 \or % TOMS
975
\def\@journalName{ACM Transactions on Mathematical Software}%
976
\def\@journalNameShort{ACM Trans. Math. Softw.}%
977
\def\@permissionCodeOne{0098-3500}%
978 \or % TOPC
979
\def\@journalName{ACM Transactions on Parallel Computing}%
980
\def\@journalNameShort{ACM Trans. Parallel Comput.}%
981
\def\@permissionCodeOne{1539-9087}%
982 \or % TOPS
983
\def\@journalName{ACM Transactions on Privacy and Security}%
984
\def\@journalNameShort{ACM Trans. Priv. Sec.}%
985
\def\@permissionCodeOne{2471-2566}%
986 \or % TOPLAS
987
\def\@journalName{ACM Transactions on Programming Languages and Systems}%
938
939

51

\def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
\def\@permissionCodeOne{0164-0925}%
990 \or % TOS
991
\def\@journalName{ACM Transactions on Storage}%
992
\def\@journalNameShort{ACM Trans. Storage}%
993
\def\@permissionCodeOne{1553-3077}%
994 \or % TOSEM
995 \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
996
\def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
997
\def\@permissionCodeOne{1049-331X}%
998 \or % TOSN
999
\def\@journalName{ACM Transactions on Sensor Networks}%
1000
\def\@journalNameShort{ACM Trans. Sensor Netw.}%
1001
\def\@permissionCodeOne{1550-4859}%
1002 \or % TRETS
1003 \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
1004
\def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
1005
\def\@permissionCodeOne{1936-7406}%
1006 \or % TSAS
1007
\def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
1008
\def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
1009
\def\@permissionCodeOne{2374-0353}%
1010 \or % TSC
1011
\def\@journalName{ACM Transactions on Social Computing}%
1012
\def\@journalNameShort{ACM Trans. Soc. Comput.}%
1013
\def\@permissionCodeOne{2469-7818}%
1014 \or % TSLP
1015
\def\@journalName{ACM Transactions on Speech and Language Processing}%
1016
\def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
1017
\def\@permissionCodeOne{1550-4875}%
1018 \or % TWEB
1019
\def\@journalName{ACM Transactions on the Web}%
1020
\def\@journalNameShort{ACM Trans. Web}%
1021
\def\@permissionCodeOne{1559-1131}%
1022 \fi
1023 \ClassInfo{\@classname}{Using journal code \@journalCode}%
1024 }{%
1025
\ClassError{\@classname}{Incorrect journal #1}%
1026 }%
988
989

\acmJournal

And the syntactic sugar around it
1027 \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}

The defaults:
1028 \def\@journalCode@nr{0}
1029 \def\@journalName{}%
1030 \def\@journalNameShort{\@journalName}%
1031 \def\@permissionCodeOne{XXXX-XXXX}%
1032 \def\@permissionCodeTwo{}%

52

\acmConference

This is the conference command
1033 \newcommand\acmConference[4][]{%

\gdef\acmConference@shortname{#1}%
\gdef\acmConference@name{#2}%
1036
\gdef\acmConference@date{#3}%
1037
\gdef\acmConference@venue{#4}%
1038
\ifx\acmConference@shortname\@empty
1039
\gdef\acmConference@shortname{#2}%
1040
\fi}
1041 \acmConference[Conference’17]{ACM Conference}{July 2017}{Washington,
1042
DC, USA}
1034
1035

\acmBooktitle
\@acmBooktitle

The book title of the conference:
1043 \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
1044 \acmBooktitle{Proceedings
1045
1046

\@editorsAbbrev

of \acmConference@name
\ifx\acmConference@name\acmConference@shortname\else
\ (\acmConference@shortname)\fi}

How to abbreviate editors
1047 \def\@editorsAbbrev{(Ed.)}

\@acmEditors
\editor

The list of editors
Add new editor to the list
1048 \def\editor#1{\ifx\@acmEditors\@empty

\gdef\@acmEditors{#1}%
\else
1051
\gdef\@editorsAbbrev{(Eds.)}%
1052
\g@addto@macro\@acmEditors{\and#1}%
1053 \fi}
1049
1050

\subtitle

The subtitle macro
1054 \def\subtitle#1{\def\@subtitle{#1}}
1055 \subtitle{}

\num@authorgroups

The total number of “groups”. Each group is several authors with the same affiliations(s)
1056 \newcount\num@authorgroups
1057 \num@authorgroups=0\relax

\num@authors

The total number of authors.
1058 \newcount\num@authors
1059 \num@authors=0\relax

\if@insideauthorgroup

\author

Whether we are continuing an author group @insideauthorgroup insideauthorgroupfalse
Adding an author to the list of authors and addresses
1060 \renewcommand\author[2][]{%
1061

\global\advance\num@authors by 1\relax

53

1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099

\affiliation

f@ACM@affiliation@obeypunctuation

\if@insideauthorgroup\else
\global\advance\num@authorgroups by 1\relax
\global\@insideauthorgrouptrue
\fi
\ifx\addresses\@empty
\if@ACM@anonymous
\gdef\addresses{\@author{Anonymous Author(s)}}%
\gdef\authors{Anonymous Author(s)}%
\else
\gdef\addresses{\@author{#2}}%
\gdef\authors{#2}%
\fi
\else
\if@ACM@anonymous\else
\g@addto@macro\addresses{\and\@author{#2}}%
\g@addto@macro\authors{\and#2}%
\fi
\fi
\if@ACM@anonymous
\ifx\shortauthors\@empty
\gdef\shortauthors{Anon.}%
\fi
\else
\def\@tempa{#1}%
\ifx\@tempa\@empty
\ifx\shortauthors\@empty
\gdef\shortauthors{#2}%
\else
\g@addto@macro\shortauthors{\and#2}%
\fi
\else
\ifx\shortauthors\@empty
\gdef\shortauthors{#1}%
\else
\g@addto@macro\shortauthors{\and#1}%
\fi
\fi
\fi}

The macro \affiliation mimics \address from amsart. Note that it has an optional
argument, which we use differently from amsart.
1100 \newcommand{\affiliation}[2][]{%
1101
1102
1103
1104

\global\@insideauthorgroupfalse
\if@ACM@anonymous\else
\g@addto@macro\addresses{\affiliation{#1}{#2}}%
\fi}

Whether to use author’s punctuation (by default false = add American punctuation)
1105 \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
1106 [true]{}{\ClassError{\@classname}{obeypunctuation

54

must be true or false}}

\additionalaffiliation

Additional affiliations go to footnotes
1107 \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}

\@additionalaffiliation

Process additionalaffiliation inside \authornote
1108 \def\@additionalaffiliation#1{\bgroup
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118

\email

\def\position##1{\ignorespaces}%
\def\institution##1{##1\ignorespaces}%
\def\department{\@ifnextchar[{\@department}{\@department[]}}%
\def\@department[##1]##2{\unskip, ##2\ignorespaces}%
\let\streetaddress\position
\let\city\position
\let\state\position
\let\postcode\position
\let\country\position
Also with #1\unskip.\egroup}

The macro \email mimics \email from amsart. Agian it has an optional argument we
do not currently need, but keep for the possible future use.
1119 \renewcommand{\email}[2][]{%
1120
1121
1122

\orcid
\authorsaddresses
\@titlenotes

\if@ACM@anonymous\else
\g@addto@macro\addresses{\email{#1}{#2}}%
\fi}

Right now we do not typeset orcids
Setting up authors’ addresses
The titlenotes
1123 \def\@titlenotes{}

\titlenote

Adding note to the title
1124 \def\titlenote#1{%
1125
1126
1127
1128
1129
1130
1131

\@subtitlenotes

\g@addto@macro\@title{\footnotemark}%
\if@ACM@anonymous
\g@addto@macro\@titlenotes{%
\stepcounter{footnote}\footnotetext{Title note}}%
\else
\g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
\fi}

The subtitlenotes
1132 \def\@subtitlenotes{}

\subtitlenote

Adding note to the subtitle
1133 \def\subtitlenote#1{%
1134
1135
1136
1137

\g@addto@macro\@subtitle{\footnotemark}%
\if@ACM@anonymous
\g@addto@macro\@subtitlenotes{%
\stepcounter{footnote}\footnotetext{Subtitle note}}%

55

1138
1139
1140
1141

\@authornotes

\else
\g@addto@macro\@subtitlenotes{%
\stepcounter{footnote}\footnotetext{#1}}%
\fi}

The authornotes
1142 \def\@authornotes{}

\authornote

Adding note to the author
1143 \def\authornote#1{%
1144
1145
1146
1147
1148

\authornotemark

\if@ACM@anonymous\else
\g@addto@macro\addresses{\@authornotemark}%
\g@addto@macro\@authornotes{%
\stepcounter{footnote}\footnotetext{#1}}%
\fi}

Adding footnotemark to authors
1149 \newcommand\authornotemark[1][\relax]{%
1150
1151
1152
1153
1154

\acmVolume

\ifx#1\relax\relax\relax
\g@addto@macro\addresses{\@authornotemark}%
\else
\g@addto@macro\addresses{\@@authornotemark{#1}}%
\fi}

The current volume
1155 \def\acmVolume#1{\def\@acmVolume{#1}}
1156 \acmVolume{1}

\acmNumber

The current number
1157 \def\acmNumber#1{\def\@acmNumber{#1}}
1158 \acmNumber{1}

\acmArticle

The current article
1159 \def\acmArticle#1{\def\@acmArticle{#1}}
1160 \acmArticle{}

\acmArticleSeq

The sequence number
1161 \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
1162 \acmArticleSeq{\@acmArticle}

\acmYear

The current year
1163 \def\acmYear#1{\def\@acmYear{#1}}
1164 \acmYear{\the\year}

\acmMonth

The current month
1165 \def\acmMonth#1{\def\@acmMonth{#1}}
1166 \acmMonth{\the\month}

56

\@acmPubDate

The publication date
1167 \def\@acmPubDate{\ifcase\@acmMonth\or
1168
1169
1170

\acmPrice

January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or
December\fi˜\@acmYear}

The price
1171 \def\acmPrice#1{\def\@acmPrice{#1}}
1172 \acmPrice{15.00}

\acmSubmissionID

The submission id
1173 \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
1174 \acmSubmissionID{}

\acmISBN

The book isbn
1175 \def\acmISBN#1{\def\@acmISBN{#1}}
1176 \acmISBN{978-x-xxxx-xxxx-x/YY/MM}

\acmDOI

The paper doi
1177 \def\acmDOI#1{\def\@acmDOI{#1}}
1178 \acmDOI{10.1145/nnnnnnn.nnnnnnn}

\if@ACM@badge

Whether to print badge. Note that either left or right badge triggers it:
1179 \newif\if@ACM@badge
1180 \@ACM@badgefalse

\@ACM@badge@width

The width of the badge
1181 \newlength\@ACM@badge@width
1182 \setlength\@ACM@badge@width{5pc}

\@ACM@title@width

The width of the badge
1183 \newlength\@ACM@title@width

\@ACM@badge@skip

The space between the badge and the title
1184 \newlength\@ACM@badge@skip
1185 \setlength\@ACM@badge@skip{1pc}

\acmBadgeR

Setting the right badge
1186 \newcommand\acmBadgeR[2][]{\@ACM@badgetrue

\def\@acmBadgeR@url{#1}%
\def\@acmBadgeR@image{#2}}
1189 \def\@acmBadgeR@url{}
1190 \def\@acmBadgeR@image{}
1187
1188

\acmBadgeL

Setting the left badge
1191 \newcommand\acmBadgeL[2][]{\@ACM@badgetrue

\def\@acmBadgeL@url{#1}%
\def\@acmBadgeL@image{#2}}
1194 \def\@acmBadgeL@url{}
1195 \def\@acmBadgeL@image{}
1192
1193

57

\startPage

The start page of the paper
1196 \def\startPage#1{\def\@startPage{#1}}
1197 \startPage{}

\terms

Terms are obsolete, we use CCS now.
1198 \def\terms#1{\ClassWarning{\@classname}{The
1199

\keywords

obsolete.

command \string\terms{} is

I am going to ignore it}}

Keywords are mostly obsolete, we use CCS now. Still it makes sense to keep them for
compatibility.
1200 \def\keywords#1{\def\@keywords{#1}}
1201 \keywords{}

abstract

Amsart puts abstract in the box. Since we do not know whether we will use two
column mode, we prefer to save the text
1202 \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}

\@saveabstract

And saving the abstract
1203 \long\def\@saveabstract#1{\long\gdef\@abstract{#1}}
1204 \@saveabstract{}

\@lempty

The long version of \@empty (to compare with \@abstract)
1205 \long\def\@lempty{}

\if@ACM@printccs

Whether to print CCS
1206 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
1207
1208
1209
1210
1211

\if@ACM@printacmref

\if@ACM@printccs
\ClassInfo{\@classname}{Printing CCS}%
\else
\ClassInfo{\@classname}{Suppressing CCS}%
\fi}{\ClassError{\@classname}{printccs must be true or false}}

Whether to print ACM bib
1212 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
1213
1214
1215
1216
1217

\if@ACM@printfolios

\if@ACM@printacmref
\ClassInfo{\@classname}{Printing bibformat}%
\else
\ClassInfo{\@classname}{Suppressing bibformat}%
\fi}{\ClassError{\@classname}{printacmref must be true or false}}

Whether to print folios
1218 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
1219
1220
1221
1222
1223

\if@ACM@printfolios
\ClassInfo{\@classname}{Printing folios}%
\else
\ClassInfo{\@classname}{Suppressing folios}%
\fi}{\ClassError{\@classname}{printfolios must be true or false}}

58

\@ACM@authorsperrow

The number of authors per row. 0 means use default algorithm.
1224 \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%

\IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
#1}}{\ClassWarning{\@classname}{Parameter authorsperrow must be
numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}

1225
1226
1227

\settopmatter

The usual syntactic sugar
1228 \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}

Now the settings
1229 \settopmatter{printccs=true,

printacmref=true}

1230 \if@ACM@manuscript
1231

\settopmatter{printfolios=true}

1232 \else

\if@ACM@journal
\settopmatter{printfolios=true}
1235
\else
1236
\settopmatter{printfolios=false}
1237
\fi
1238 \fi
1239 \settopmatter{authorsperrow=0}
1233
1234

\@received

The container for the paper history
1240 \def\@received{}

\received

The \received command
1241 \newcommand\received[2][]{\def\@tempa{#1}%

\ifx\@tempa\@empty
\ifx\@received\@empty
1244
\gdef\@received{Received #2}%
1245
\else
1246
\g@addto@macro{\@received}{; revised #2}%
1247
\fi
1248
\else
1249
\ifx\@received\@empty
1250
\gdef\@received{#1 #2}%
1251
\else
1252
\g@addto@macro{\@received}{; #1 #2}%
1253
\fi
1254
\fi}
1255 \AtEndDocument{%
1256
\ifx\@received\@empty\else
1257
\par\bigskip\noindent\small\normalfont\@received\par
1258
\fi}
1242
1243

3.11

Concepts system

We exclude CCSXML stuff generated by the ACM system:

59

1259 \RequirePackage{comment}
1260 \excludecomment{CCSXML}

\@concepts

This is the storage macro for concepts
1261 \let\@concepts\@empty

\ccsdesc

The first argument is the significance, the second is the concept(s)
1262 \newcommand\ccsdesc[2][100]{%
1263

\ccsdesc@parse

\ccsdesc@parse#1˜#2˜˜\ccsdesc@parse@end}

The parser of the expression Significance˜General˜Specific (we need textcomp for
\textrightarrow). Note that Specific can be empty!
1264 \RequirePackage{textcomp}
1265 \def\ccsdesc@parse#1˜#2˜#3˜{%

\expandafter\ifx\csname CCS@General@#2\endcsname\relax
\expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
1268
\textbf{#2}}%
1269
\expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
1270
\expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
1271
\g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
1272
\csname CCS@Punctuation@#2\endcsname
1273
\csname CCS@Specific@#2\endcsname}%
1274
\fi
1275
\ifx#3\relax\relax\else
1276
\expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
1277
\textrightarrow\ }%
1278
\expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
1279
\ifnum#1>499\textbf{#3}; \else
1280
\ifnum#1>299\textit{#3}; \else
1281
#3; \fi\fi}%
1282
\fi
1283 \ccsdesc@parse@finish}
1266
1267

\ccdesc@parse@finish

Gobble everything to \ccsdesc@parse@end
1284 \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}

3.12

Copyright system

This is from acmcopyright.sty
\if@printcopyright

A flag whether to print copyright symbol
1285 \newif\if@printcopyright
1286 \@printcopyrighttrue

\if@printpermission

Whether to print permission block
1287 \newif\if@printpermission
1288 \@printpermissiontrue

60

\if@acmowned

Whether ACM ownes the rights to the paper
1289 \newif\if@acmowned
1290 \@acmownedtrue

Keys:
1291 \define@choicekey*{ACM@}{acmcopyrightmode}[%
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335

\acm@copyrightinput\acm@copyrightmode]{none,%
acmcopyright,acmlicensed,rightsretained,%
usgov,usgovmixed,cagov,cagovmixed,%
licensedusgovmixed,%
licensedcagov,licensedcagovmixed,othergov,licensedothergov}{%
\@printpermissiontrue
\@printcopyrighttrue
\@acmownedtrue
\ifnum\acm@copyrightmode=0\relax % none
\@printpermissionfalse
\@printcopyrightfalse
\@acmownedfalse
\fi
\ifnum\acm@copyrightmode=2\relax % acmlicensed
\@acmownedfalse
\fi
\ifnum\acm@copyrightmode=3\relax % rightsretained
\@acmownedfalse
\acmPrice{}%
\fi
\ifnum\acm@copyrightmode=4\relax % usgov
\@printpermissiontrue
\@printcopyrightfalse
\@acmownedfalse
\acmPrice{}%
\fi
\ifnum\acm@copyrightmode=6\relax % cagov
\@acmownedfalse
\fi
\ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
\@acmownedfalse
\fi
\ifnum\acm@copyrightmode=9\relax % licensedcagov
\@acmownedfalse
\fi
\ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
\@acmownedfalse
\fi
\ifnum\acm@copyrightmode=11\relax % othergov
\@acmownedtrue
\fi
\ifnum\acm@copyrightmode=12\relax % licensedothergov
\@acmownedfalse
\fi}

61

\setcopyright

This is the syntactic sugar around setting keys.
1336 \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
1337 \setcopyright{acmcopyright}

\@copyrightowner

Here is the owner of the copyright
1338 \def\@copyrightowner{%
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368

\@formatdoi

\ifcase\acm@copyrightmode\relax % none
\or % acmcopyright
Association for Computing Machinery.
\or % acmlicensed
Copyright held by the owner/author(s). Publication rights
Association for Computing Machinery.
\or % rightsretained
Copyright held by the owner/author(s).
\or % usgov
\or % usgovmixed
Association for Computing Machinery.
\or % cagov
Crown in Right of Canada.
\or %cagovmixed
Association for Computing Machinery.
\or %licensedusgovmixed
Copyright held by the owner/author(s). Publication rights
Association for Computing Machinery.
\or % licensedcagov
Crown in Right of Canada. Publication rights licensed to
Association for Computing Machinery.
\or %licensedcagovmixed
Copyright held by the owner/author(s). Publication rights
Association for Computing Machinery.
\or % othergov
Association for Computing Machinery.
\or % licensedothergov
Copyright held by the owner/author(s). Publication rights
Association for Computing Machinery.
\fi}

licensed to

licensed to

licensed to

licensed to

Print a clickable doi
1369 \def\@formatdoi#1{\url{https://doi.org/#1}}

\@copyrightpermission

The canned permission block.
1370 \def\@copyrightpermission{%
1371
1372
1373
1374
1375
1376
1377

\ifcase\acm@copyrightmode\relax % none
\or % acmcopyright
Permission to make digital or hard copies of all or part of this
work for personal or classroom use is granted without fee provided
that copies are not made or distributed for profit or commercial
advantage and that copies bear this notice and the full citation on
the first page. Copyrights for components of this work owned by

62

1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427

others than ACM must be honored. Abstracting with credit is
permitted. To copy otherwise, or republish, to post on servers or to
redistribute to lists, requires prior specific permission
and\hspace*{.5pt}/or a fee. Request permissions from
permissions@acm.org.
\or % acmlicensed
Permission to make digital or hard copies of all or part of this
work for personal or classroom use is granted without fee provided
that copies are not made or distributed for profit or commercial
advantage and that copies bear this notice and the full citation on
the first page. Copyrights for components of this work owned by
others than the author(s) must be honored. Abstracting with credit
is permitted. To copy otherwise, or republish, to post on servers
or to redistribute to lists, requires prior specific permission
and\hspace*{.5pt}/or a fee. Request permissions from
permissions@acm.org.
\or % rightsretained
Permission to make digital or hard copies of part or all of this work
for personal or classroom use is granted without fee provided that
copies are not made or distributed for profit or commercial advantage
and that copies bear this notice and the full citation on the first
page. Copyrights for third-party components of this work must be
honored. For all other uses, contact the
owner\hspace*{.5pt}/author(s).
\or % usgov
This paper is authored by an employee(s) of the United States
Government and is in the public domain. Non-exclusive copying or
redistribution is allowed, provided that the article citation is
given and the authors and agency are clearly identified as its
source.
\or % usgovmixed
ACM acknowledges that this contribution was authored or co-authored
by an employee, contractor, or affiliate of the United States government. As such,
the United States government retains a nonexclusive, royalty-free right to
publish or reproduce this article, or to allow others to do so, for
government purposes only.
\or % cagov
This article was authored by employees of the Government of Canada.
As such, the Canadian government retains all interest in the
copyright to this work and grants to ACM a nonexclusive,
royalty-free right to publish or reproduce this article, or to allow
others to do so, provided that clear attribution is given both to
the authors and the Canadian government agency employing them.
Permission to make digital or hard copies for personal or classroom
use is granted. Copies must bear this notice and the full citation
on the first page. Copyrights for components of this work owned by
others than the Canadian Government must be honored. To copy
otherwise, distribute, republish, or post, requires prior specific
permission and\hspace*{.5pt}/or a fee. Request permissions from
permissions@acm.org.

63

1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477

\or % cagovmixed
ACM acknowledges that this contribution was co-authored by an
affiliate of the national government of Canada. As such, the Crown
in Right of Canada retains an equal interest in the copyright.
Reprints must include clear attribution to ACM and the author’s
government agency affiliation. Permission to make digital or hard
copies for personal or classroom use is granted. Copies must bear
this notice and the full citation on the first page. Copyrights for
components of this work owned by others than ACM must be honored.
To copy otherwise, distribute, republish, or post, requires prior
specific permission and\hspace*{.5pt}/or a fee. Request permissions
from permissions@acm.org.
\or % licensedusgovmixed
Publication rights licensed to ACM\@. ACM acknowledges that this
contribution was authored or co-authored by an employee, contractor
or affiliate of the United States government. As such, the
Government retains a nonexclusive, royalty-free right to publish or
reproduce this article, or to allow others to do so, for Government
purposes only.
\or % licensedcagov
This article was authored by employees of the Government of Canada.
As such, the Canadian government retains all interest in the
copyright to this work and grants to ACM a nonexclusive,
royalty-free right to publish or reproduce this article, or to allow
others to do so, provided that clear attribution is given both to
the authors and the Canadian government agency employing them.
Permission to make digital or hard copies for personal or classroom
use is granted. Copies must bear this notice and the full citation
on the first page. Copyrights for components of this work owned by
others than the Canadian Government must be honored. To copy
otherwise, distribute, republish, or post, requires prior specific
permission and\hspace*{.5pt}/or a fee. Request permissions from
permissions@acm.org.
\or % licensedcagovmixed
Publication rights licensed to ACM\@. ACM acknowledges that this
contribution was authored or co-authored by an employee, contractor
or affiliate of the national government of Canada. As such, the
Government retains a nonexclusive, royalty-free right to publish or
reproduce this article, or to allow others to do so, for Government
purposes only.
\or % othergov
ACM acknowledges that this contribution was authored or co-authored
by an employee, contractor or affiliate of a national government. As
such, the Government retains a nonexclusive, royalty-free right to
publish or reproduce this article, or to allow others to do so, for
Government purposes only.
\or % licensedothergov
Publication rights licensed to ACM\@. ACM acknowledges that this
contribution was authored or co-authored by an employee, contractor
or affiliate of a national government. As such, the Government

64

1478
1479
1480
1481

\copyrightyear

retains a nonexclusive, royalty-free right to publish or reproduce
this article, or to allow others to do so, for Government purposes
only.
\fi}

By default, the copyright year is the same as \acmYear, but one can override this:
1482 \def\copyrightyear#1{\def\@copyrightyear{#1}}
1483 \copyrightyear{\@acmYear}

\@teaserfigures

The teaser figures container
1484 \def\@teaserfigures{}

teaserfigure

The teaser figure
1485 \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}

\@saveteaser

Saving the teaser
1486 \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}

\thanks

We redefine amsart \thanks, so the anonymous key works
1487 \renewcommand{\thanks}[1]{%
1488
1489
1490
1491
1492
1493

3.13
\mktitle@bx

\@ifnotempty{#1}{%
\if@ACM@anonymous
\g@addto@macro\thankses{\thanks{A note}}%
\else
\g@addto@macro\thankses{\thanks{#1}}%
\fi}}

Typesetting top matter

Some of our formats use two column design, some use one column one. In all cases
we use wide title. Thus we typeset the top matter in a special box to be use in the
construction \@twocolumn[hboxi].
1494 \newbox\mktitle@bx

\maketitle

The (in)famous \maketitle. Note that in sigchi-a mode authors are not in the title box.
Another note: there is a subtle difference between author notes, title notes and
thankses. The latter refer to the paper itself, and therefore belong to the copyright/permission block. By the way, this was the default behavior of the old ACM classes.
1495 \def\maketitle{%
1496
1497
1498
1499
1500
1501
1502
1503
1504

\if@ACM@anonymous
% Anonymize omission of \author-s
\ifnum\num@authorgroups=0\author{}\fi
\fi
\begingroup
\let\@footnotemark\@footnotemark@nolink
\let\@footnotetext\@footnotetext@nolink
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\global\@topnum\z@ % this prevents floats from falling

65

1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554

% at the top of page 1
\global\@botnum\z@ % we do not want them to be on bottom either
\hsize=\textwidth
\def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
\@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
\@printtopmatter
\if@ACM@sigchiamode\@mkauthors\fi
\setcounter{footnote}{0}%
\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
\@titlenotes
\@subtitlenotes
\@authornotes
\let\@makefnmark\relax \let\@thefnmark\relax
\let\@makefntext\noindent
\ifx\@empty\thankses\else
\footnotetextauthorsaddresses{%
\def\par{\let\par\@par}\parindent\z@\@setthanks}%
\fi
\ifx\@empty\@authorsaddresses\else
\if@ACM@anonymous\else
\if@ACM@journal
\footnotetextauthorsaddresses{%
\def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
\fi
\fi
\fi
\footnotetextcopyrightpermission{%
\if@ACM@authordraft
\raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
Unpublished
working draft. Not for distribution}}%
\color[gray]{0.9}%
\fi
\parindent\z@\parskip0.1\baselineskip
\if@ACM@authorversion\else
\if@printpermission\@copyrightpermission\par\fi
\fi
\if@ACM@manuscript\else
\if@ACM@journal\else % Print the conference information
{\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
\fi
\fi
\if@printcopyright
\copyright\ \@copyrightyear\ \@copyrightowner\\
\else
\@copyrightyear.\
\fi
\if@ACM@manuscript
Manuscript submitted to ACM\\
\else

66

1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604

\if@ACM@authorversion
This is the author’s version of the work. It is posted here for
your personal use. Not for redistribution. The definitive Version
of Record was published in
\if@ACM@journal
\emph{\@journalName}%
\else
\emph{\@acmBooktitle}%
\fi
\ifx\@acmDOI\@empty
.
\else
, \@formatdoi{\@acmDOI}.
\fi\\
\else
\if@ACM@journal
\@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
\ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
\@formatdoi{\@acmDOI}%
\else % Conference
\ifx\@acmISBN\@empty\else ACM˜ISBN˜\@acmISBN
\ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
\ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
\fi
\fi
\fi}
\endgroup
\setcounter{footnote}{0}%
\@mkabstract
\if@ACM@printccs
\ifx\@concepts\@empty\else\bgroup
{\@specialsection{CCS Concepts}%
\@concepts\par}\egroup
\fi
\fi
\ifx\@keywords\@empty\else\bgroup
{\if@ACM@journal
\@specialsection{Additional Key Words and Phrases}%
\else
\@specialsection{Keywords}%
\fi
\@keywords}\par\egroup
\fi
\andify\authors
\andify\shortauthors
\global\let\authors=\authors
\global\let\shortauthors=\shortauthors
\if@ACM@printacmref
\@mkbibcitation
\fi

67

1605
1606
1607
1608
1609
1610
1611

\hypersetup{pdfauthor={\authors},
pdftitle={\@title},
pdfsubject={\@concepts},
pdfkeywords={\@keywords}}%
\@printendtopmatter
\@afterindentfalse
\@afterheading

1612 }

\@specialsection

This macro starts section for proceedings and uses small for journals
1613 \def\@specialsection#1{%
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633

\@printtopmatter

\ifcase\ACM@format@nr
\relax % manuscript
\par\medskip\small\noindent#1:
\or % acmsmall
\par\medskip\small\noindent#1:
\or % acmlarge
\par\medskip\small\noindent#1:
\or % acmtog
\par\medskip\small\noindent#1:
\or % sigconf
\section*{#1}%
\or % siggraph
\section*{#1}%
\or % sigplan
\paragraph*{#1}%
\or % sigchi
\section*{#1}%
\or % sigchi-a
\section*{#1}%
\fi}

%
%
%
%

The printing of top matter starts the new page, and uses the given title box. Note that
for sigchi-a we print badges here rather than in \mktitle since we want them on the
margins.
1634 \def\@printtopmatter{%
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647

\ifx\@startPage\@empty
\gdef\@startPage{1}%
\else
\setcounter{page}{\@startPage}%
\fi
\thispagestyle{firstpagestyle}%
\noindent
\ifcase\ACM@format@nr
\relax % manuscript
\box\mktitle@bx\par
\or % acmsmall
\box\mktitle@bx\par
\or % acmlarge

68

1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673

\box\mktitle@bx\par
\or % acmtog
\twocolumn[\box\mktitle@bx]%
\or % sigconf
\twocolumn[\box\mktitle@bx]%
\or % siggraph
\twocolumn[\box\mktitle@bx]%
\or % sigplan
\twocolumn[\box\mktitle@bx]%
\or % sigchi
\twocolumn[\box\mktitle@bx]%
\or % sigchi-a
\par\box\mktitle@bx\par\bigskip
\if@ACM@badge
\marginpar{\noindent
\ifx\@acmBadgeL@image\@empty\else
\href{\@acmBadgeL@url}{%
\includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
\hskip\@ACM@badge@skip
\fi
\ifx\@acmBadgeR@image\@empty\else
\href{\@acmBadgeR@url}{%
\includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
\fi}%
\fi
\fi

1674 }

\@mktitle

The title of the article
1675 \def\@mktitle{%
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695

\ifcase\ACM@format@nr
\relax % manuscript
\@mktitle@i
\or % acmsmall
\@mktitle@i
\or % acmlarge
\@mktitle@i
\or % acmtog
\@mktitle@i
\or % sigconf
\@mktitle@iii
\or % siggraph
\@mktitle@iii
\or % sigplan
\@mktitle@iii
\or % sigchi
\@mktitle@iii
\or % sigchi-a
\@mktitle@iv
\fi

69

1696 }

\@titlefont

The font to typeset title
1697 \def\@titlefont{%
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717

\@subtitlefont

\ifcase\ACM@format@nr
\relax % manuscript
\LARGE\sffamily\bfseries
\or % acmsmall
\LARGE\sffamily\bfseries
\or % acmlarge
\LARGE\sffamily\bfseries
\or % acmtog
\Huge\sffamily
\or % sigconf
\Huge\sffamily\bfseries
\or % siggraph
\Huge\sffamily\bfseries
\or % sigplan
\Huge\bfseries
\or % sigchi
\Huge\sffamily\bfseries
\or % sigchi-a
\Huge\bfseries
\fi}

The font to typeset title
1718 \def\@subtitlefont{\normalsize
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738

\@mktitle@i

\ifcase\ACM@format@nr
\relax % manuscript
\mdseries
\or % acmsmall
\mdseries
\or % acmlarge
\mdseries
\or % acmtog
\LARGE
\or % sigconf
\LARGE\mdseries
\or % siggraph
\LARGE\mdseries
\or % sigplan
\LARGE\mdseries
\or % sigchi
\LARGE\mdseries
\or % sigchi-a
\mdseries
\fi}

The version of \mktitle for most journals

70

1739 \def\@mktitle@i{\hsize=\textwidth
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766

\@mktitle@ii
\@mktitle@iii

\@ACM@title@width=\hsize
\ifx\@acmBadgeL@image\@empty\else
\advance\@ACM@title@width by -\@ACM@badge@width
\advance\@ACM@title@width by -\@ACM@badge@skip
\fi
\ifx\@acmBadgeR@image\@empty\else
\advance\@ACM@title@width by -\@ACM@badge@width
\advance\@ACM@title@width by -\@ACM@badge@skip
\fi
\setbox\mktitle@bx=\vbox{\noindent\@titlefont
\ifx\@acmBadgeL@image\@empty\else
\raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
\includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
\hskip\@ACM@badge@skip
\fi
\parbox[t]{\@ACM@title@width}{\raggedright
\@titlefont\noindent
\@title
\ifx\@subtitle\@empty\else
\par\noindent{\@subtitlefont\@subtitle}
\fi}%
\ifx\@acmBadgeR@image\@empty\else
\hskip\@ACM@badge@skip
\raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
\includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
\fi
\par\bigskip}}%

The version of \mktitle for TOG. Since v1.06 is subsumed by the \mktitle@i macro
The version of \@mktitle for sigproc. Note that since the title is centered, we leave the
space for the left badge even if only the right badge is defined.
1767 \def\@mktitle@iii{\hsize=\textwidth
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783

\setbox\mktitle@bx=\vbox{\@titlefont\centering
\@ACM@title@width=\hsize
\if@ACM@badge
\advance\@ACM@title@width by -2\@ACM@badge@width
\advance\@ACM@title@width by -2\@ACM@badge@skip
\parbox[b]{\@ACM@badge@width}{\strut
\ifx\@acmBadgeL@image\@empty\else
\raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
\includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
\fi}%
\hskip\@ACM@badge@skip
\fi
\parbox[t]{\@ACM@title@width}{\centering\@titlefont
\@title
\ifx\@subtitle\@empty\else
\par\noindent{\@subtitlefont\@subtitle}

71

1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794

\@mktitle@iv

\fi
}%
\if@ACM@badge
\hskip\@ACM@badge@skip
\parbox[b]{\@ACM@badge@width}{\strut
\ifx\@acmBadgeR@image\@empty\else
\raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
\includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
\fi}%
\fi
\par\bigskip}}%

The version of \@mktitle for sigchi-a
1795 \def\@mktitle@iv{\hsize=\textwidth
1796
1797
1798
1799
1800
1801
1802

\@ACM@addtoaddress

\setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
\noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
\noindent\@title
\ifx\@subtitle\@empty\else
\par\noindent\@subtitlefont\@subtitle
\fi
\par\bigskip}}%

The macro adds an item to address using the following rules:
1. If we start a paragraph, add the item
2. Otherwise, add a comma and the item
3. However, the comma is deleted, if it is on the end of the line. We use the magic
cleaders trick for this.
1803 \newbox\@ACM@commabox
1804 \def\@ACM@addtoaddress#1{%
1805
1806
1807
1808
1809
1810

\institution
\position
\department
\streetaddress
\city
\state
\postcode
\country

\ifvmode\else
\if@ACM@affiliation@obeypunctuation\else
\setbox\@ACM@commabox=\hbox{, }%
\unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
\fi\fi
#1}

heoretically we can define the macros for \affiliation inside the \@mkauthors-style
commands. However, this would lead to a strange error if an author uses them outside
\affiliation. Of course we can make them produce an error message, but. . .
1811 \def\streetaddress#1{\unskip\ignorespaces}
1812 \def\postcode#1{\unskip\ignorespaces}
1813 \if@ACM@journal
1814
1815
1816
1817

\def\position#1{\unskip\ignorespaces}
\def\institution#1{\unskip˜#1\ignorespaces}
\def\city#1{\unskip\ignorespaces}
\def\state#1{\unskip\ignorespaces}

72

\newcommand\department[2][0]{\unskip\ignorespaces}
\def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
1820 \else
1821
\def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
1822
\def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
1823
\newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
1824
#2\else#2\par\fi}%
1825 % \def\streetaddress#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
1826
\let\city\@ACM@addtoaddress
1827
\let\state\@ACM@addtoaddress
1828 % \def\postcode#1{\if@ACM@affiliation@obeypunctuation#1\else\unskip\space#1\fi}%
1829
\let\country\@ACM@addtoaddress
1830 \fi
1818
1819

\@mkauthors

Typesetting authors
1831 \def\@mkauthors{\begingroup

\hsize=\textwidth
\ifcase\ACM@format@nr
\relax % manuscript
\@mkauthors@i
\or % acmsmall
\@mkauthors@i
\or % acmlarge
\@mkauthors@i
\or % acmtog
\@mkauthors@i
\or % sigconf
\@mkauthors@iii
\or % siggraph
\@mkauthors@iii
\or % sigplan
\@mkauthors@iii
\or % sigchi
\@mkauthors@iii
\or % sigchi-a
\@mkauthors@iv
\fi
\endgroup

1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854 }

\@authorfont

Somehow different conferences use different fonts for author names. Why?
1855 \def\@authorfont{\Large\sffamily}

\@affiliationfont

Font for affiliations
1856 \def\@affiliationfont{\normalsize\normalfont}

Adjusting fonts for different formats
1857 \ifcase\ACM@format@nr
1858 \relax

% manuscript

73

1859 \or

% acmsmall
\def\@authorfont{\large\sffamily}
1861
\def\@affiliationfont{\small\normalfont}
1862 \or % acmlarge
1863 \or % acmtog
1864
\def\@authorfont{\LARGE\sffamily}
1865
\def\@affiliationfont{\large}
1866 \or % sigconf
1867
\def\@authorfont{\LARGE}
1868
\def\@affiliationfont{\large}
1869 \or % siggraph
1870
\def\@authorfont{\normalsize\normalfont}
1871
\def\@affiliationfont{\normalsize\normalfont}
1872 \or % sigplan
1873
\def\@authorfont{\Large\normalfont}
1874
\def\@affiliationfont{\normalsize\normalfont}
1875 \or % sigchi
1876
\def\@authorfont{\bfseries}
1877
\def\@affiliationfont{\mdseries}
1878 \or % sigchi-a
1879
\def\@authorfont{\bfseries}
1880
\def\@affiliationfont{\mdseries}
1881 \fi
1860

\@typeset@author@line

At this point we have \@currentauthors and \@currentaffiliations. We typeset
them in the journal style
1882 \def\@typeset@author@line{%
1883
1884
1885
1886
1887
1888
1889

\@mkauthors@i

\andify\@currentauthors\par\noindent
\@currentauthors\def\@currentauthors{}%
\ifx\@currentaffiliations\@empty\else
\andify\@currentaffiliations
\unskip, {\@currentaffiliations}\par
\fi
\def\@currentaffiliations{}}

This is version used in most journal formats. Note that \and between authors with the
same affiliation becomes ␣and␣:
1890 \def\@mkauthors@i{%
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901

\def\@currentauthors{}%
\def\@currentaffiliations{}%
\global\let\and\@typeset@author@line
\def\@author##1{%
\ifx\@currentauthors\@empty
\gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
\else
\g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
\fi
\gdef\and{}}%
\def\email##1##2{}%

74

1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918

\def\affiliation##1##2{%
\def\@tempa{##2}\ifx\@tempa\@empty\else
\ifx\@currentaffiliations\@empty
\gdef\@currentaffiliations{%
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
\setkeys{@ACM@affiliation@}{##1}%
\@affiliationfont##2}%
\else
\g@addto@macro{\@currentaffiliations}{\and
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
\setkeys{@ACM@affiliation@}{##1}##2}%
\fi
\fi
\global\let\and\@typeset@author@line}%
\global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
\noindent\addresses\@typeset@author@line
\par\medskip}%

1919 }

\@mkauthors@ii
\author@bx

\@mkauthors@iI was version used in acmtog. No longer necessary
The box to put individual author to
1920 \newbox\author@bx

\author@bx@wd

The width of the author box
1921 \newdimen\author@bx@wd

\author@bx@sep

The separation between the author boxes
1922 \newskip\author@bx@sep
1923 \author@bx@sep=1pc\relax

\@typeset@author@bx

Typesetting the box with authors. Note that in SIGCHI-A the box is not centered.
1924 \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd\def\and{\par}%
1925
1926
1927
1928
1929
1930

\@mkauthors@iii

\global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
\@authorfont\@currentauthors\par\@affiliationfont
\@currentaffiliation}\egroup
\box\author@bx\hspace{\author@bx@sep}%
\gdef\@currentauthors{}%
\gdef\@currentaffiliation{}}

The sigconf version. Here we use centered design with each author in a separate box.
1931 \def\@mkauthors@iii{%

First, we need to determine the design of the author strip. The boxes are separated by
\author@bx@sep plus two \author@bx@sep margins. This means that each box must
be of width (\textwidth − \author@bx@sep)/N − \author@bx@sep, where N is the
number of boxes per row.
1932
1933

\author@bx@wd=\textwidth\relax
\advance\author@bx@wd by -\author@bx@sep\relax

75

1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950

\ifnum\@ACM@authorsperrow>0\relax
\divide\author@bx@wd by \@ACM@authorsperrow\relax
\else
\ifcase\num@authorgroups
\relax % 0?
\or % 1=one author per row
\or % 2=two authors per row
\divide\author@bx@wd by \num@authorgroups\relax
\or % 3=three authors per row
\divide\author@bx@wd by \num@authorgroups\relax
\or % 4=two authors per row (!)
\divide\author@bx@wd by 2\relax
\else % three authors per row
\divide\author@bx@wd by 3\relax
\fi
\fi
\advance\author@bx@wd by -\author@bx@sep\relax

Now, parsing of \addresses:
\gdef\@currentauthors{}%
\gdef\@currentaffiliation{}%
1953
\def\@author##1{\ifx\@currentauthors\@empty
1954
\gdef\@currentauthors{\par##1}%
1955
\else
1956
\g@addto@macro\@currentauthors{\par##1}%
1957
\fi
1958
\gdef\and{}}%
1959
\def\email##1##2{\ifx\@currentaffiliation\@empty
1960
\gdef\@currentaffiliation{\nolinkurl{##2}}%
1961
\else
1962
\g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
1963
\fi}%
1964
\def\affiliation##1##2{\ifx\@currentaffiliation\@empty
1965
\gdef\@currentaffiliation{%
1966
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1967
\setkeys{@ACM@affiliation@}{##1}##2}%
1968
\else
1969
\g@addto@macro\@currentaffiliation{\par
1970
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1971
\setkeys{@ACM@affiliation@}{##1}##2}%
1972
\fi
1973
\global\let\and\@typeset@author@bx
1974 }%
1951
1952

Actual typesetting is done by \and macro:
1975
1976
1977
1978
1979

\hsize=\textwidth
\global\setbox\mktitle@bx=\vbox{\noindent
\box\mktitle@bx\par\medskip\leavevmode
\lineskip=1pc\relax\centering\hspace*{-1em}%
\addresses\let\and\@typeset@author@bx\and\par\bigskip}}

76

\@mkauthors@iv

The sigchia version. Now we put authors in the main text, and no more than 2 authors
per line, unless overriden.
1980 \def\@mkauthors@iv{%

First, we need to determine the design of the author strip. The boxes are separated by
\author@bx@sep plus two \author@bx@sep margins. This means that each box must
be of width (\textwidth − \author@bx@sep)/N − \author@bx@sep, where N is the
number of boxes per row.
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993

\author@bx@wd=\columnwidth\relax
\advance\author@bx@wd by -\author@bx@sep\relax
\ifnum\@ACM@authorsperrow>0\relax
\divide\author@bx@wd by \@ACM@authorsperrow\relax
\else
\ifcase\num@authorgroups
\relax % 0?
\or % 1=one author per row
\else % 2=two authors per row
\divide\author@bx@wd by 2\relax
\fi
\fi
\advance\author@bx@wd by -\author@bx@sep\relax

Now, parsing of \addresses:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016

\gdef\@currentauthors{}%
\gdef\@currentaffiliation{}%
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
\g@addto@macro\@currentauthors{\par##1}%
\fi
\gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
\g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
\fi}%
\def\affiliation##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{%
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
\setkeys{@ACM@affiliation@}{##1}##2}%
\else
\g@addto@macro\@currentaffiliation{\par
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
\setkeys{@ACM@affiliation@}{##1}##2}%
\fi
\global\let\and\@typeset@author@bx}%

2017 %

Actual typesetting is done by \and macro
2018

\bgroup\hsize=\columnwidth

77

2019
2020
2021

\@mkauthorsaddresses
\@setaddresses

\par\raggedright\leftskip=\z@
\lineskip=1pc\noindent
\addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}

Typesetting authors’ addresses in the footnote style
This is an amsart macro, which we do not need.
2022 \def\@setaddresses{}

\@authornotemark

Adding footnotemark to authors. This version adds “normal” footnotemark.
2023 \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}

\@@authornotemark

Adding footnotemark to authors with the given number
2024 \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}

\@mkteasers

Typesetting teasers
2025 \def\@mkteasers{%
2026
2027
2028
2029
2030
2031

\@mkabstract

\ifx\@teaserfigures\@empty\else
\def\@teaser##1{\par\bigskip\bgroup
\captionsetup{type=figure}##1\egroup\par}
\global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
\noindent\@teaserfigures\par\medskip}%
\fi}

Typesetting abstract
2032 \def\@mkabstract{\bgroup
2033
2034
2035
2036
2037
2038
2039
2040
2041

\@mkbibcitation

\ifx\@abstract\@lempty\else
{\phantomsection\addcontentsline{toc}{section}{Abstract}%
\if@ACM@journal
\small\noindent
\else
\section*{Abstract}%
\fi
\ignorespaces\@abstract\par}%
\fi\egroup}

Print bibcitation format
2042 \def\@mkbibcitation{\bgroup
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053

\def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
\def\footnotemark{}%
\def\\{\unskip{} \ignorespaces}%
\def\footnote{\ClassError{\@classname}{Please do note use footnotes
inside \string\title{} or \string\author{} command! Use
\string\titlenote{} or \string\authornote{} instead!}}%
\def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
Article˜\@acmArticle\ \fi}%
\par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
\noindent\authors. \@acmYear. \@title
\ifx\@subtitle\@empty. \else: \@subtitle. \fi

78

\if@ACM@journal
\textit{\@journalNameShort}
2056
\@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
2057
\ref{TotPages}˜\@pages@word.
2058
\else
2059
In \textit{\@acmBooktitle}%
2060
\ifx\@acmEditors\@empty\textit{.}\else
2061
\andify\@acmEditors\textit{, }\@acmEditors˜\@editorsAbbrev.%
2062
\fi\
2063
ACM, New York, NY, USA%
2064
\@article@string\unskip, \ref{TotPages}˜\@pages@word.
2065
\fi
2066
\@formatdoi{\@acmDOI}
2067 \par\egroup}
2054
2055

\@printendtopmatter

End the top matter
2068 \def\@printendtopmatter{\par\bigskip}

\@setthanks

We redefine \setthanks using \long
2069 \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}

\@setauthorsaddresses
2070 \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}

3.14

Headers and Footers

We use fancyhdr for our headers and footers:
2071 \RequirePackage{fancyhdr}

\ACM@linecount@bx

This is the box displayed in the review mode
2072 \if@ACM@review

\newsavebox{\ACM@linecount@bx}
\newlength\ACM@linecount@bxht
2075
\newcount\ACM@linecount
2076
\ACM@linecount\@ne\relax
2077
\def\ACM@mk@linecount{%
2078
\savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{%
2079
\setlength{\ACM@linecount@bxht}{0pt}%
2080
\loop{\color{red}\scriptsize\the\ACM@linecount}\\
2081
\global\advance\ACM@linecount by \@ne
2082
\addtolength{\ACM@linecount@bxht}{\baselineskip}%
2083
\ifdim\ACM@linecount@bxht<\textheight\repeat
2084
{\color{red}\scriptsize\the\ACM@linecount}\hfill
2085
\global\advance\ACM@linecount by \@ne}}}
2086 \fi
2073
2074

\ACM@linecountL

How to display the box on the left
2087 \def\ACM@linecountL{%
2088

\if@ACM@review

79

2089
2090
2091
2092
2093

\ACM@linecountR

\ACM@mk@linecount
\begin{picture}(0,0)%
\put(-26,-22){\usebox{\ACM@linecount@bx}}%
\end{picture}%
\fi}

How to display the box on the right
2094 \def\ACM@linecountR{%
2095
2096
2097
2098
2099
2100

\ACM@timestamp

\if@ACM@review
\ACM@mk@linecount
\begin{picture}(0,0)%
\put(20,-22){\usebox{\ACM@linecount@bx}}%
\end{picture}%
\fi}

The timestamp system
2101 \if@ACM@timestamp

% Subtracting 30 from \time gives us the effect of rounding-down despite
% \numexpr rounding to nearest
2104
\newcounter{ACM@time@hours}
2105
\setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
2106
\newcounter{ACM@time@minutes}
2107 \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
2108
\newcommand\ACM@timestamp{%
2109
\footnotesize%
2110
\the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
2111
\two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{ }%
2112
page˜\thepage\ (pp. \@startPage-\pageref*{TotPages})%
2113
\ifx\@acmSubmissionID\@empty\relax\else
2114
˜Submission˜ID: \@acmSubmissionID
2115
\fi
2116
}
2117 \fi
2102
2103

\@shortauthors

Even if the author redefined \shortauthors, we do not print them in the anonymous
mode in the headers:
2118 \def\@shortauthors{\if@ACM@anonymous

\@headfootfont

Anon.\else\shortauthors\fi}

The font to typeset header and footer text.
2119 \def\@headfootfont{%
2120
2121
2122
2123
2124
2125
2126
2127
2128

\ifcase\ACM@format@nr
\relax % manuscript
\sffamily
\or % acmsmall
\sffamily
\or % acmlarge
\sffamily
\or % acmtog
\sffamily

80

2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139

standardpagestyle

\or % sigconf
\sffamily
\or % siggraph
\sffamily
\or % sigplan
\sffamily
\or % sigchi
\sffamily
\or % sigchi-a
\sffamily
\fi}

The pagestyle for all pages but the first one
2140 \fancypagestyle{standardpagestyle}{%
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176

\fancyhf{}%
\renewcommand{\headrulewidth}{\z@}%
\renewcommand{\footrulewidth}{\z@}%
\ifcase\ACM@format@nr
\relax % manuscript
\fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
\fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
\fancyhead[RE]{\@shortauthors}%
\fancyhead[LO]{\ACM@linecountL\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
\fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
\fancyhead[RO]{\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
\fancyhead[RE]{\@headfootfont\@shortauthors}%
\fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmlarge
\fancyhead[LE]{\ACM@linecountL\@headfootfont
\@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}%
\fancyhead[LO]{\ACM@linecountL}%
\fancyhead[RO]{\@headfootfont
\shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmtog
\fancyhead[LE]{\ACM@linecountL\@headfootfont
\@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}%
\fancyhead[LO]{\ACM@linecountL}%
\fancyhead[RE]{\ACM@linecountR}%
\fancyhead[RO]{\@headfootfont
\shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi\ACM@linecountR}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\else % Proceedings
\fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%

81

2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189

\fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
\fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
\fancyhead[LE]{\ACM@linecountL\@headfootfont\acmConference@shortname,
\acmConference@date, \acmConference@venue}%
\fancyhead[RO]{\@headfootfont\acmConference@shortname,
\acmConference@date, \acmConference@venue\ACM@linecountR}%
\fi
\if@ACM@sigchiamode
\fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
\fi
\if@ACM@timestamp
\fancyfoot[LO,RE]{\ACM@timestamp}
\fi

2190 }
2191 \pagestyle{standardpagestyle}

\@folio@wd
\@folio@ht
\@folio@voffset
\@folio@max

Folio blob width, height, offsets and max number
2192 \newdimen\@folio@wd
2193 \@folio@wd=\z@
2194 \newdimen\@folio@ht
2195 \@folio@ht=\z@
2196 \newdimen\@folio@voffset
2197 \@folio@voffset=\z@
2198 \def\@folio@max{1}
2199 \ifcase\ACM@format@nr
2200 \relax

% manuscript
% acmsmall
2202
\@folio@wd=45.75pt\relax
2203
\@folio@ht=1.25in\relax
2204
\@folio@voffset=.2in\relax
2205
\def\@folio@max{8}
2206 \or % acmlarge
2207
\@folio@wd=43.25pt\relax
2208
\@folio@ht=79pt\relax
2209
\@folio@voffset=.55in\relax
2210
\def\@folio@max{10}
2211 \fi
2201 \or

\@folioblob

The macro to typeset the folio blob.
2212 \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
2213

\ifnum\@tempcnta=0\relax\else

First, we calculate \@acmArticleSeq modulo \@folio@max
2214
2215
2216
2217
2218
2219
2220

\loop
\ifnum\@tempcnta>\@folio@max\relax
\advance\@tempcnta by - \@folio@max
\repeat
\advance\@tempcnta by -1\relax
\@tempdima=\@folio@ht\relax
\multiply\@tempdima by \the\@tempcnta\relax

82

2221
2222
2223
2224
2225
2226
2227
2228
2229
2230

\advance\@tempdima by -\@folio@voffset\relax
\begin{picture}(0,0)
\makebox[\z@]{\raisebox{-\@tempdima}{%
\rlap{%
\raisebox{-0.45\@folio@ht}[\z@][\z@]{%
\rule{\@folio@wd}{\@folio@ht}}}%
\parbox{\@folio@wd}{%
\centering
\textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
\end{picture}\fi}

2231

firstpagestyle

The pagestyle for the first page only.
2232 \fancypagestyle{firstpagestyle}{%
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268

\fancyhf{}%
\renewcommand{\headrulewidth}{\z@}%
\renewcommand{\footrulewidth}{\z@}%
\ifcase\ACM@format@nr
\relax % manuscript
\fancyhead[L]{\ACM@linecountL}%
\fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
\fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date:
\@acmPubDate.}%
\fancyhead[LE]{\ACM@linecountL\@folioblob}%
\fancyhead[LO]{\ACM@linecountL}%
\fancyhead[RO]{\@folioblob}%
\fancyheadoffset[RO,LE]{0.6\@folio@wd}%
\or % acmlarge
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date:
\@acmPubDate.}%
\fancyhead[RO]{\@folioblob}%
\fancyhead[LE]{\ACM@linecountL\@folioblob}%
\fancyhead[LO]{\ACM@linecountL}%
\fancyheadoffset[RO,LE]{1.4\@folio@wd}%
\or % acmtog
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date:
\@acmPubDate.}%
\fancyhead[L]{\ACM@linecountL}%
\fancyhead[R]{\ACM@linecountR}%
\else % Conference proceedings
\fancyhead[L]{\ACM@linecountL}%
\fancyhead[R]{\ACM@linecountR}%
\fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
\fi
\if@ACM@timestamp

83

2269
2270
2271
2272
2273
2274
2275

\ifnum\ACM@format@nr=0\relax % Manuscript
\fancyfoot[LO,RE]{\ACM@timestamp\quad
\footnotesize Manuscript submitted to ACM}
\else
\fancyfoot[LO,RE]{\ACM@timestamp}
\fi
\fi

2276 }

\ACM@restore@pagestyle

The following code by Ross Moore protects against changes by totpages package:
2277 \let\ACM@ps@plain\ps@plain
2278 \let\ACM@ps@myheadings\ps@myheadings
2279 \let\ACM@ps@headings\ps@headings
2280 \def\ACM@restore@pagestyle{%

\let\ps@plain\ACM@ps@plain
\let\ps@myheadings\ACM@ps@myheadings
2283
\let\ps@headings\ACM@ps@headings}
2284 \AtBeginDocument{\ACM@restore@pagestyle}
2281
2282

3.15

Sectioning

Sectioning is different for different levels
2285 \renewcommand\section{\@startsection{section}{1}{\z@}%

{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{.25\baselineskip}%
2288
{\@secfont}}
2289 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
2290
{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2291
{.25\baselineskip}%
2292
{\@subsecfont}}
2293 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
2294
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2295
{-3.5\p@}%
2296
{\@subsubsecfont\@adddotafter}}
2297 \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
2298
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2299
{-3.5\p@}%
2300
{\@parfont\@adddotafter}}
2301 \renewcommand\part{\@startsection{part}{9}{\z@}%
2302
{-10\p@ \@plus -4\p@ \@minus -2\p@}%
2303
{4\p@}%
2304
{\@parfont}}
2286
2287

\section@raggedright

Special version of \raggedright compatible with \MakeUppercase
2305 \def\section@raggedright{\@rightskip\@flushglue
2306
2307
2308

\rightskip\@rightskip
\leftskip\z@skip
\parindent\z@}

84

\@secfont
\@subsecfont
\@subsubsecfont
\@parfont

Fonts for sections etc. are different for different formats.
2309 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2310 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2311 \def\@subsubsecfont{\sffamily\itshape}
2312 \def\@parfont{\itshape}
2313 \setcounter{secnumdepth}{3}
2314 \ifcase\ACM@format@nr
2315 \relax

% manuscript
% acmsmall
2317 \or % acmlarge
2318 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
2319 \def\@subsecfont{\sffamily\large\section@raggedright}
2320 \or % acmtog
2321 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
2322 \def\@subsecfont{\sffamily\large\section@raggedright}
2323 \or % sigconf
2324 \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
2325 \def\@subsecfont{\bfseries\Large\section@raggedright}
2326 \or % siggraph
2327 \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
2328 \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
2329 \or % sigplan
2330 \def\@secfont{\bfseries\Large\section@raggedright}
2331 \def\@subsecfont{\bfseries\section@raggedright}
2332 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
2333
{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2334
{.25\baselineskip}%
2335
{\@subsubsecfont}}
2336 \def\@subsubsecfont{\bfseries\section@raggedright}
2337 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
2338
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2339
{-3.5\p@}%
2340
{\@parfont\@addspaceafter}}
2341 \def\@parfont{\bfseries\itshape}
2342 \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
2343
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2344
{-3.5\p@}%
2345
{\@subparfont\@addspaceafter}}
2346 \def\@subparfont{\itshape}
2347 \or % sigchi
2348 \setcounter{secnumdepth}{1}
2349 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2350 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2351 \or % sigchi-a
2352 \setcounter{secnumdepth}{0}
2353 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2354 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2355 \fi
2316 \or

85

\@adddotafter

Add punctuation after the command
2356 \def\@adddotafter#1{#1\@addpunct{.}}

\@addspaceafter

Add space after the command
2357 \def\@addspaceafter#1{#1\@addpunct{\enspace}}

3.16
\@dotsep

TOC Lists

Related to the \tableofcontents are all the horizontal fillers. Base LATEX defines
\@dottedtocline, which we should not disable. Yet, this command expects \@dotsep
to be defined, but leaves this to the class implementation. Since amsart does not provide
this, we copy the standard variant from article here.
2358 \providecommand*\@dotsep{4.5}

3.17
\@acmplainbodyfont

Theorems

The font to typeset the acmplain theorem style body.
2359 \def\@acmplainbodyfont{\itshape}

\@acmplainindent

The amount to indent the acmplain theorem style.
2360 \def\@acmplainindent{\parindent}

\@acmplainheadfont

The font to typeset the acmplain theorem style head.
2361 \def\@acmplainheadfont{\scshape}

\@acmplainnotefont

The font to typeset the acmplain theorem style note.
2362 \def\@acmplainnotefont{\@empty}

Customization of acmplain theorem style:
2363 \ifcase\ACM@format@nr
2364 \relax

% manuscript
% acmsmall
2366 \or % acmlarge
2367 \or % acmtog
2368 \or % sigconf
2369 \or % siggraph
2370 \or % sigplan
2371
\def\@acmplainbodyfont{\itshape}
2372
\def\@acmplainindent{\z@}
2373
\def\@acmplainheadfont{\bfseries}
2374
\def\@acmplainnotefont{\normalfont}
2375 \or % sigchi
2376 \or % sigchi-a
2377 \fi
2365 \or

86

acmplain

The acmplain theorem style
2378 \newtheoremstyle{acmplain}%
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388

\@acmdefinitionbodyfont

{.5\baselineskip\@plus.2\baselineskip
\@minus.2\baselineskip}% space above
{.5\baselineskip\@plus.2\baselineskip
\@minus.2\baselineskip}% space below
{\@acmplainbodyfont}% body font
{\@acmplainindent}% indent amount
{\@acmplainheadfont}% head font
{.}% punctuation after head
{.5em}% spacing after head
{\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec

The font to typeset the acmdefinition theorem style body.
2389 \def\@acmdefinitionbodyfont{\normalfont}

\@acmdefinitionindent

The amount to indent the acmdefinition theorem style.
2390 \def\@acmdefinitionindent{\parindent}

\@acmdefinitionheadfont

The font to typeset the acmdefinition theorem style head.
2391 \def\@acmdefinitionheadfont{\itshape}

\@acmdefinitionnotefont

The font to typeset the acmdefinition theorem style note.
2392 \def\@acmdefinitionnotefont{\@empty}

Customization of acmdefinition theorem style:
2393 \ifcase\ACM@format@nr
2394 \relax

% manuscript
% acmsmall
2396 \or % acmlarge
2397 \or % acmtog
2398 \or % sigconf
2399 \or % siggraph
2400 \or % sigplan
2401
\def\@acmdefinitionbodyfont{\normalfont}
2402
\def\@acmdefinitionindent{\z@}
2403
\def\@acmdefinitionheadfont{\bfseries}
2404
\def\@acmdefinitionnotefont{\normalfont}
2405 \or % sigchi
2406 \or % sigchi-a
2407 \fi
2395 \or

acmdefinition

The acmdefinition theorem style
2408 \newtheoremstyle{acmdefinition}%
2409
2410
2411
2412
2413

{.5\baselineskip\@plus.2\baselineskip
\@minus.2\baselineskip}% space above
{.5\baselineskip\@plus.2\baselineskip
\@minus.2\baselineskip}% space below
{\@acmdefinitionbodyfont}% body font

87

{\@acmdefinitionindent}% indent amount
{\@acmdefinitionheadfont}% head font
{.}% punctuation after head
{.5em}% spacing after head
{\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec

2414
2415
2416
2417
2418

Make acmplain the default theorem style.
2419 \theoremstyle{acmplain}

Delay defining the theorem environments until after other packages have been
loaded. In particular, the cleveref package must be loaded before the theorem environments are defined in order to show the correct environment name (see https://github.com/borisveytsman/acmart/iss
The acmthm option is used to suppress the definition of any theorem environments. Also,
to avoid obscure errors arising from these environment definitions conflicting with environments defined by the user or by user-loaded packages, we only define environments
that have not yet been defined.
2420 \AtEndPreamble{%
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445

\if@ACM@acmthm
\theoremstyle{acmplain}
\@ifundefined{theorem}{%
\newtheorem{theorem}{Theorem}[section]
}{}
\@ifundefined{conjecture}{%
\newtheorem{conjecture}[theorem]{Conjecture}
}{}
\@ifundefined{proposition}{%
\newtheorem{proposition}[theorem]{Proposition}
}{}
\newtheorem{lemma}[theorem]{Lemma}
\@ifundefined{lemma}{}{}
\@ifundefined{corollary}{%
\newtheorem{corollary}[theorem]{Corollary}
}{}
\theoremstyle{acmdefinition}
\@ifundefined{example}{%
\newtheorem{example}[theorem]{Example}
}{}
\@ifundefined{definition}{%
\newtheorem{definition}[theorem]{Definition}
}{}
\fi
\theoremstyle{acmplain}

2446 }

\@proofnamefont

The font to typeset the proof name.
2447 \def\@proofnamefont{\scshape}

\@proofindent

Whether or not to indent proofs.
2448 \def\@proofindent{\indent}

88

Customization of proof environment.
2449 \ifcase\ACM@format@nr
2450 \relax

% manuscript
% acmsmall
2452 \or % acmlarge
2453 \or % acmtog
2454 \or % sigconf
2455 \or % siggraph
2456 \or % sigplan
2457
\def\@proofnamefont{\itshape}
2458
\def\@proofindent{\noindent}
2459 \or % sigchi
2460 \or % sigchi-a
2461 \fi
2451 \or

proof

We want some customization of proof environment.
2462 \renewenvironment{proof}[1][\proofname]{\par

\pushQED{\qed}%
\normalfont \topsep6\p@\@plus6\p@\relax
2465
\trivlist
2466
\item[\@proofindent\hskip\labelsep
2467
{\@proofnamefont #1\@addpunct{.}}]\ignorespaces
2468 }{%
2469
\popQED\endtrivlist\@endpefalse
2470 }
2463
2464

3.18
\acks

Acknowledgments

This is a comment-like structure
2471 \specialcomment{acks}{%

\begingroup
\section*{Acknowledgments}
2474
\phantomsection\addcontentsline{toc}{section}{Acknowledgments}
2475 }{%
2476
\endgroup
2477 }
2472
2473

\grantsponsor

We just typeset the name of the sponsor
2478 \def\grantsponsor#1#2#3{#2}

\grantnum
2479 \newcommand\grantnum[3][]{#3%
2480

3.19

\def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}

Conditional typesetting

We use the comment package for conditional typesetting:
2481 \AtEndPreamble{%

89

2482 \if@ACM@screen

\includecomment{screenonly}
\excludecomment{printonly}
2485 \else
2486
\excludecomment{screenonly}
2487
\includecomment{printonly}
2488 \fi
2489 \if@ACM@anonymous
2490
\excludecomment{anonsuppress}
2491
\excludecomment{acks}
2492 \else
2493
\includecomment{anonsuppress}
2494 \fi}
2483
2484

3.20
\showeprint

Additional bibliography commands

The command \showeprint has two arguments: the (optional) prefix and the eprint
number. Right now the only prefix we understand is the (lowercase) word ‘arxiv’ (see
http://arxiv.org/hypertex/bibstyles/).
2495 \newcommand\showeprint[2][arxiv]{%

\def\@tempa{#1}%
\ifx\@tempa\@empty\def\@tempa{arxiv}\fi
\def\@tempb{arxiv}%
\ifx\@tempa\@tempb
arXiv:\href{http://arxiv.org/abs/#2}{#2}\else arXiv:#2%
\fi}

2496
2497
2498
2499
2500
2501

3.21

End of Class

2502 \normalsize\normalfont\frenchspacing
2503

h/classi

90

References
[1] UK TEX Users Group. UK list of TEX frequently asked questions. http://www.tex.
ac.uk, 2016.
[2] Michael Downes and Barbara Beeton. The amsart, amsproc, and amsbook document classes. American Mathematical Society, August 2004. http://www.ctan.
org/pkg/amslatex.
[3] Cristophe Fiorio. algorithm2e.sty—package for algorithms, October 2015. http:
//www.ctan.org/pkg/algorithm2e.
[4] Rogério Brito. The algorithms bundle, August 2009. http://www.ctan.org/pkg/
algorithms.
[5] Carsten Heinz, Brooks Moses, and Jobst Hoffmann. The Listings Package, June 2015.
http://www.ctan.org/pkg/listings.
[6] Simon Fear. Publication quality tables in LATEX, April 2005. http://www.ctan.org/
pkg/booktabs.
[7] Association for Computing Machinery. ACM Visual Identity Standards, 2007. http:
//identitystandards.acm.org.
[8] Axel Sommerfeldt. The subcaption package, April 2013. http://www.ctan.org/
pkg/subcaption.
[9] Boris Veytsman, Bern Schandl, Lee Netherton, and C. V. Radhakrishnan. A package
to create a nomenclature, September 2005. http://www.ctan.org/pkg/nomencl.
[10] Nicola L. C. Talbot. User Manual for glossaries.sty v4.25, June 2016. http://www.
ctan.org/pkg/subcaption.
[11] David Carlisle. The textcase package, October 2004. http://www.ctan.org/pkg/
textcase.

91

Change History
v1.00
General: First released version . . . . .
v1.01
General: Changed hyperref colors in
screen mode (closes https:
//github.com/borisveytsman/
acmart/issues/1) . . . . . . . . . .
Defined ACM colors . . . . . . . . . .
Explicitly put draft option (closes
https:
//github.com/borisveytsman/
acmart/issues/4) . . . . . . . . . .
Set headheight to 1pc for all
formats (closes https:
//github.com/borisveytsman/
acmart/issues/5) . . . . . . . . . .
v1.02
General: Added TOPS and TSC (closes
https:
//github.com/borisveytsman/
acmart/issues/12) . . . . . . . . .
Documentation changes (closes
https:
//github.com/borisveytsman/
acmart/issues/13) . . . . . . . . .
v1.03
\@formatdoi: Added macro . . . . . .
\if@ACM@authorversion: Added
macro . . . . . . . . . . . . . . . . . . .
\maketitle: Added special case of
authorversion . . . . . . . . . . . . . .
General: Added anonsuppress
environment . . . . . . . . . . . . . .
Added authorversion option (closes
https:
//github.com/borisveytsman/
acmart/issues/9) . . . . . . . . . .
v1.04
\acmArticleSeq: Name change by
Matthew Fluet . . . . . . . . . . . . .
\acmDOI: Name change by Matthew
Fluet . . . . . . . . . . . . . . . . . . . .
\acmISBN: Name change by Matthew
Fluet . . . . . . . . . . . . . . . . . . . .
General: Updated bibliography for
siggraph . . . . . . . . . . . . . . . . .

v1.05
General: Added processing doi
numbers for acmsiggraph and doi
numbers for sigproc.bib . . . . . . .
Patched \setcitestyle command;
closes https:
//github.com/borisveytsman/
acmart/issues/19 . . . . . . . . . .
v1.06
\@ACM@badge@skip: Added macro . .
\@ACM@badge@width: Added macro .
\@ACM@title@width: Added macro .
\@mktitle@i: Added processing
badges . . . . . . . . . . . . . . . . . .
Made generic . . . . . . . . . . . . . .
\@mktitle@ii: Now this macro is
obsolete . . . . . . . . . . . . . . . . .
\@mktitle@iii: Added processing
badges . . . . . . . . . . . . . . . . . .
Made more generic . . . . . . . . . .
\@mktitle@iv: Made more generic .
\@printtopmatter: Added processing
badges . . . . . . . . . . . . . . . . . .
\@subtitlefont: Added macro . . . .
\@titlefont: Added macro . . . . . .
\acmBadgeL: Added macro . . . . . . .
\acmBadgeR: Added macro . . . . . . .
\if@ACM@badge: Added macro . . . . .
v1.07
\maketitle: Corrected a bug with
abstract footnotes . . . . . . . . . . .
Corrected a bug with permssion
and footnotes order . . . . . . . . . .
v1.08
General: SIGPLAN reformatting by
Matthew Fluet . . . . . . . . . . . . .
Typos corrected (Tobias Pape) . . .
v1.09
General: Revert SIGPLAN caption
rules . . . . . . . . . . . . . . . . . . . .
v1.10
\maketitle: Corrected a bug with doi
in manuscript and author vertsion,
https:
//github.com/borisveytsman/
acmart/issues/36 . . . . . . . . . .

28

28
28

31

28

28

28
62
30
65
28

28

56
57
57
28

92

28

28
57
57
57
70
70
71
71
71
72
68
70
70
57
57
57

65
65

28
28

28

65

General: Changes of
‘licensedothergov’ wording . . . .
standardpagestyle: Reversed folios
location . . . . . . . . . . . . . . . . . .
v1.11
General: Customization of ACM
theorem styles and proof
environment by Matthew Fluet . .
v1.12
\@marginfigure: Now centering by
default . . . . . . . . . . . . . . . . . .
\@margintable: Now centering by
default . . . . . . . . . . . . . . . . . .
\@parfont: Moved to
\section@raggedright . . . . . .
\copyrightpermissionfootnoterule:
Added macro . . . . . . . . . . . . . .
\descriptionlabel: Redefined . . . .
\footnoterule: Made shorter . . . . .
\if@ACM@natbib@override: Added
macro . . . . . . . . . . . . . . . . . . .
\if@ACM@newfonts: Added macro . .
\maketitle: Moved thankses to
copyrightpermission box . . . . . .
\section@raggedright: Introduced
macro . . . . . . . . . . . . . . . . . . .
General: Added graceful behavior
when libertine fonts are absent . .
Documentation updates . . . . . . .
v1.13
\@mpfootnotetext: Made minipage
footnotes centered . . . . . . . . . .
\bibliographystyle: Redefined
macro . . . . . . . . . . . . . . . . . . .
\bibstyle@acmauthoryear: Added
macro . . . . . . . . . . . . . . . . . . .
\bibstyle@acmnumeric: Added
macro . . . . . . . . . . . . . . . . . . .
\if@ACM@printfolios: Added macro
General: Font adjustments for
acmsmall . . . . . . . . . . . . . . . . .
Increased font size for ACM Large
Print bibliographic information by
default for the proceedings . . . . .
standardpagestyle: Added headers
for sigs . . . . . . . . . . . . . . . . . .
Expanded headers for sigchi-a . . .
Suppressed folios if sig . . . . . . . .

v1.14
\bibstyle@acmauthoryear: Moved
def of \bibstyle@acmauthoryear
before use . . . . . . . . . . . . . . . .
\bibstyle@acmnumeric: Moved def of
\bibstyle@numeric before use . .
General: \citestyle updates
(Matthew Fluet) . . . . . . . . . . . .
Patched \citestyle . . . . . . . . .
v1.15
\@ACM@addtoaddress: Added macro
\@mkauthors@iii: New authors
system . . . . . . . . . . . . . . . . . .
\@shortauthors: Introduced macro .
\@typeset@author@bx: Moved to
separate macro . . . . . . . . . . . . .
\acks: Added macro . . . . . . . . . . .
\affiliation: Added code for author
groups . . . . . . . . . . . . . . . . . .
\author: Added code for author
groups . . . . . . . . . . . . . . . . . .
\city: Added macro . . . . . . . . . . .
\country: Added macro . . . . . . . . .
\department: Added macro . . . . . .
\grantnum: Added macro . . . . . . . .
\grantsponsor: Added macro . . . . .
\if@insideauthorgroup: Introduced
macro . . . . . . . . . . . . . . . . . . .
\institution: Added macro . . . . .
\num@authorgroups: Renamed . . . .
\orcid: Introduced macro . . . . . . .
\position: Added macro . . . . . . . .
\postcode: Added macro . . . . . . . .
\state: Added macro . . . . . . . . . .
\streetaddress: Added macro . . . .
standardpagestyle: Better handling
of anonymous mode . . . . . . . . .
v1.16
\@headfootfont: Added macro . . . .
General: Formatting header/footer
(Matthew Fluet) . . . . . . . . . . . .
standardpagestyle: Customize
header/footer text font . . . . . . . .
v1.17
\@makefnmark: Redefined . . . . . . . .
\@mkauthors: TOG now uses the same
authors block as other journals . .
\@mkauthors@ii: Deleted . . . . . . . .
\@mkbibcitation: Added \nobreak
Changed format for sigs . . . . . . .

61
81

28

44
45
85
41
47
41
30
43
65
84
42
28

42
38
34
35
58
73
32
59
81
81
81

93

34
35
28
33
72
75
80
75
89
54
53
72
72
72
89
89
53
72
53
55
72
72
72
72
81
80
28
81
42
73
75
78
78

\acmArticle: The default is now
numerical . . . . . . . . . . . . . . . .
\acmMonth: The default must be
numerical. Closes #50. . . . . . . . .
\acmNumber: The default is now
numerical . . . . . . . . . . . . . . . .
\acmVolume: The default is now
numerical . . . . . . . . . . . . . . . .
\acmYear: The default is now
numerical . . . . . . . . . . . . . . . .
\description: Decreased indent . . .
\grantnum: Added url . . . . . . . . . .
\grantsponsor: Renamed . . . . . . .
\if@ACM@printacmref: Renamed
from \if@ACM@printbib . . . . . .
General: Slightly decreased margins
for sigs . . . . . . . . . . . . . . . . . .
standardpagestyle: Added paper
title to sigs . . . . . . . . . . . . . . . .
v1.18
\@mkauthors@i: Now we andify
affiliations . . . . . . . . . . . . . . . .
\@typeset@author@line: Added
macro . . . . . . . . . . . . . . . . . . .
General: Natbib is now the default for
all formats . . . . . . . . . . . . . . . .
v1.19
\@mkabstract: Include ’Abstract’ in
PDF bookmarks (Matthew Fluet) .
\acks: Include ’Acknowledgements’ in
PDF bookmarks (Matthew Fluet) .
General: Include ’Abstract’,
’Acknowledgements’, and
’References’ in PDF bookmarks
(Matthew Fluet) . . . . . . . . . . . .
Include ’References’ in PDF
bookmarks (Matthew Fluet) . . . .
v1.20
\@mkabstract: Deleted spurious space
General: Bug fixes for bst . . . . . . . .
v1.21
\showeprint: Added macro . . . . . .
v1.22
General: More bibliography changes
for Aptara . . . . . . . . . . . . . . . .
v1.23
General: Add PACMPL journal option
v1.24
General: Add IMWUT journal option

v1.25
General: Updated PACMPL . . . . . . .
v1.26
General: Corrected \shortcite bug .
Documentation typos fixed (thanks
to Stephen Spencer) . . . . . . . . . .
v1.27
\if@ACM@printccs: Typo corrected .
v1.28
\ccsdesc@parse: Change from \to to
\textrightarrow (Matteo
Riondato) . . . . . . . . . . . . . . . .
General: Corrected option natbib
behavior . . . . . . . . . . . . . . . . .
Got rid of warnings in pdf keywords
v1.29
\@mkabstract: Removed spurious
indentation (John Wickerson) . . .
\ccsdesc@parse: Add spacing after
bullet and around rightarrow;
semicolon separators no longer in
bold/italic (John Wickerson) . . . .
General: Increased head to 13pt . . . .
standardpagestyle: Corrected
printfolios (Matthew Fluet) . . . . .
v1.30
\department: Added optional
parameter . . . . . . . . . . . . . . . .
General: Added \frenchspacing . . .
Bibtex style now recognizes https://
in doi . . . . . . . . . . . . . . . . . . .
Switched to T1: looks like libertine
has problems with \l in OT1 . . .
Updated IMWUT and PACMPL . .
v1.31
\@additionalaffiliation: Added
macro . . . . . . . . . . . . . . . . . . .
\@mkbibcitation: Disabled linebreak
\@startsection: Added
\tochangmeasure . . . . . . . . . . .
Rededined macro . . . . . . . . . . . .
\@textbottom: Redefined . . . . . . . .
\acmMonth: The default now is the
current month (Matteo Riondato)
\acmYear: The default now is the
current year (Matteo Riondato) . .
\additionalaffiliation: Added
macro . . . . . . . . . . . . . . . . . . .
\l@subsection: Redefined macro . .
\l@subsubsection: Redefined macro

56
56
56
56
56
47
89
89
58
39
81

74
74
28

78
89

28
33
78
28
90

28
28
47

94

47
28
28
58

60
35
37

78

60
39
81

72
90
28
43
47

55
78
35
37
42
56
56
55
37
37

BibTeX comma before articleno bug
General: Documentation changes . . . 28
corrected . . . . . . . . . . . . . . . . .
v1.32
\@formatdoi: New doi format . . . . . 62
BibTeX crossref bug corrected . . .
General: Added POMACS journal
BibTeX numpages bug corrected .
option . . . . . . . . . . . . . . . . . . . 28
Documentation updates . . . . . . .
Format siggraph is now obsolete . 28
Moved \citename definition for
v1.33
non-natbib bibliography, so a
\@ACM@addtoaddress: Added
package may redefine it . . . . . . .
obeypunctuation code . . . . . . . . 72
Switched to Type 1 fonts for
\@mkauthors@i: Added
libertine even if OTF-capable
obeypunctuation code . . . . . . . . 74
engine is used (Kai Mindermann) .
\@mkauthors@iii: Added
firstpagestyle: Added right
obeypunctuation code . . . . . . . . 75
linecount for two column formats
\@mkauthors@iv: Added
Added timestamp (Michael
obeypunctuation code . . . . . . . . 76
D. Adams) . . . . . . . . . . . . . . . .
\@subtitlefont: Added
standardpagestyle: Added right
\normalsize . . . . . . . . . . . . . . 70
linecount for two column formats
\ACM@linecountL: Renamed macro . 79
Added timestamp (Michael
\ACM@linecountR: Added macro . . . 80
D. Adams) . . . . . . . . . . . . . . . .
\ACM@timestamp: Added current page
v1.34
number . . . . . . . . . . . . . . . . . . 80
\@mkbibcitation: Deleted DOI from
Added macro (Michael D. Adams) . 80
doi numbers . . . . . . . . . . . . . . .
Added submission id . . . . . . . . . 80
\ACM@linecount@bx: Rulers now are
\acmSubmissionID: Added macro . . 57
continuous . . . . . . . . . . . . . . .
\city: Added obeypunctuation code
72
\ACM@linecountL: Rulers now are
\country: Added obeypunctuation
continuous . . . . . . . . . . . . . . .
code . . . . . . . . . . . . . . . . . . . . 72
\ACM@linecountR: Rulers now are
\department: Added obeypunctuation
continuous . . . . . . . . . . . . . . .
code . . . . . . . . . . . . . . . . . . . . 72
\maketitle: Added date to the
\if@ACM@affiliation@obeypunctuation:
bibstrip in conf proceedings . . . .
Added macro . . . . . . . . . . . . . . 54
Deleted ‘DOI’ from doi numbers .
\if@ACM@authordraft: Added macro 30
Rearranged bibstrip . . . . . . . . . .
\if@ACM@natbib@override: Deleted
The \terms command is now
macro . . . . . . . . . . . . . . . . . . . 30
obsolete . . . . . . . . . . . . . . . . .
\if@ACM@timestamp: Added macro
\terms: The \terms command now
(Michael D. Adams) . . . . . . . . . . 30
just produces a warning . . . . . . .
\institution: Added
v1.35
obeypunctuation code . . . . . . . . 72
\bibstyle@acmauthoryear: Square
\maketitle: Fixed the bug with
brackets for author-year style . . .
figures on top and bottom of the
General: BibTeX bug fixed: et al. . . .
title page, thanks to David Epstein 65
If the copyright is set to usgov or
\position: Added obeypunctuation
rigtsretained, the price is
code . . . . . . . . . . . . . . . . . . . . 72
suppressed . . . . . . . . . . . . . . . .
\postcode: Added obeypunctuation
code . . . . . . . . . . . . . . . . . . . . 72 v1.36
\@ACM@authorsperrow: Added macro
\state: Added obeypunctuation code 72
\@mkauthors@iii: Added
\streetaddress: Added
authorsperrow overrride . . . . . .
obeypunctuation code . . . . . . . . 72
General: Added acmart-preload-hook 28
\@mkauthors@iv: Added
authorsperrow overrride . . . . . .
Added cmap and glyphtounicode . 42

95

28
28
28
28

38

43
83
83
81
81

78
79
79
80
65
65
65
65
58

34
28

61
59
75
76

\if@ACM@authordraft: Corrected
typo, thanks to bargteil . . . . . . . 30
General: Added PACMHCI journal
options . . . . . . . . . . . . . . . . . . 47
Added the possibility to adjust
number of author boxes per row
in conference formats . . . . . . . . 28
v1.37
\description: Reduce list
indentation (Matthew Fluet) . . . . 47
\descriptionlabel: Reduce list
indentation (Matthew Fluet) . . . . 47
\normalparindent: Set
\normalparindent (Matthew
Fluet) . . . . . . . . . . . . . . . . . . . 41
General: Reduce list indentation
(Matthew Fluet) . . . . . . . . . . . . 46
Set \normalparindent; Reduce list
indentation (Matthew Fluet) . . . . 28
v1.38
General: Increase default font size for
SIGPLAN . . . . . . . . . . . . . . . 28, 32
v1.39
\@@authornotemark: Added macro . 78
\authornotemark: Added macro . . . 56
v1.40
\@copyrightowner: Added new
copyright version: licensedcagov . 62
\@copyrightpermission: Added new
copyright version: licensedcagov . 62
\@mkauthors@i: Switched to
MakeTextUppercase . . . . . . . . . 74
\@parfont: Switched to
MakeTextUppercase . . . . . . . . . 85
\ACM@linecount@bx: Work around a
bug in xcolor: looks like cmyk
colors in boxes do not work . . . . 79
\ccdesc@parse@finish: Added
macro . . . . . . . . . . . . . . . . . . . 60
\city: We now do not print this even
in SIG . . . . . . . . . . . . . . . . . . . 72
\country: Fixed bugs with extra
spaces . . . . . . . . . . . . . . . . . . . 72
\l@subsection: Redefined macro . . 37
\postcode: We now do not print this
even in SIG . . . . . . . . . . . . . . . 72
\state: We now do not print this even
in SIG . . . . . . . . . . . . . . . . . . . 72
\streetaddress: We now do not
print this even in SIG . . . . . . . . . 72

General: Added ‘textcase’ package . .
Added heightrounded to geometry
Added new copyright version:
licensedcagov . . . . . . . . . . . . . .
Added package cleveref . . . . . . .
Added Ross Moore code for
glyphtounicode . . . . . . . . . . . .
Bibliography changes . . . . . . . . .
v1.41
General: Added new badges . . . . . .
v1.42
General: Deleted ACM badges . . . . .
v1.43
\@startsection: Added
\makeatletter . . . . . . . . . . . .
\country: Added comma before
country for journals . . . . . . . . .
v1.44
\@acmBooktitle: Added macro . . . .
\@acmEditors: Added macro . . . . .
\@editorsAbbrev: Added macro . . .
\@folioblob: Suppress the blob if
acmArticleSeq is empty . . . . . . .
\@mkbibcitation: If the paper has
just one page, use ‘page’ instead of
‘pages’ . . . . . . . . . . . . . . . . . .
\ACM@restore@pagestyle: Added
macro . . . . . . . . . . . . . . . . . . .
\acmArticle: The default is now
empty . . . . . . . . . . . . . . . . . . .
\acmArticleSeq: Now acmArticle
might be empty . . . . . . . . . . . .
\acmBooktitle: Added macro . . . . .
\editor: Added macro . . . . . . . . . .
\if@ACM@acmthm: Added macro . . . .
\maketitle: Empty DOI or ISBN are
not printed (by Michael Ekstrand)
General: Added package refcount . . .
Deleted package cleveref . . . . . . .
Put theorem defs in a separate style
v1.45
\@folioblob: Switched
\bfeseries\sffamily to
\sffamily\bfseries . . . . . . . .
\@parfont: Switched
\bfeseries\sffamily to
\sffamily\bfseries . . . . . . . .
\@titlefont: Switched
\bfeseries\sffamily to
\sffamily\bfseries . . . . . . . .

96

33
39
28
28
42
28
28
28

37
72
53
53
53
82

78
84
56
56
53
53
29
65
28
28
28

82

85

70

v1.46
\@mkauthorsaddresses: Introduced
macro . . . . . . . . . . . . . . . . . . .
\@mkbibcitation: Added subtitle . .
\@printendtopmatter: Made it
\par\bigskip uniformly . . . . . .
\@printtopmatter: Deleted rule . . .
\@setauthorsaddresses: Introduced
macro . . . . . . . . . . . . . . . . . . .
\ACM@linecount@bx: Rearranged the
code to get rid of spurious
underfull messages (Benjamin
Byholm) . . . . . . . . . . . . . . . . .
\author: Started counting authors . .
\authorsaddresses: Introduced
macro . . . . . . . . . . . . . . . . . . .

\country: T . . . . . . . . . . . . . . . . .
\if@ACM@acmthm: Modified
description . . . . . . . . . . . . . . .
\liningnums: Workaround for
compatibility with fontspec . . . .
\maketitle: Added authors’ addresses
Thankses go before authors’
addresses . . . . . . . . . . . . . . . . .
\num@authors: Introduced macro . .
General: Added etoolbox . . . . . . . .
Bst file bug fixes: label width is
calculated correctly . . . . . . . . . .
Delayed hypersetup since journal
options may change screen mode
PACM now set screen to true . . . .
Restore theorem defs to class file .

78
78
79
68
79

79
53
55

97

72
29
43
65
65
53
28
28
37
47
28

Index
Numbers written in italic refer to the page where the corresponding entry is described;
numbers underlined refer to the code line of the definition; numbers in roman refer to
the code lines where the entry is used.
Symbols
\$ . . . . . . . . . . 1572, 1576
\@ . . . . . . 1441, 1462, 1475
\@@authornotemark . .
. . . . . . . 1153, 2024
\@@par . . . . . . . . 316, 373
\@ACM@addtoaddress .
1803, 1826, 1827, 1829
\@ACM@authorsperrow
. . . . . . . . 1224,
1934, 1935, 1983, 1984
\@ACM@badge@skip . . .
. . . . 1184, 1666,
1743, 1747, 1753,
1762, 1772, 1778, 1787
\@ACM@badge@width . .
. . . . 1181, 1665,
1670, 1742, 1746,
1752, 1764, 1771,
1773, 1776, 1788, 1791
\@ACM@badgefalse . . . 1180
\@ACM@badgetrue 1186, 1191
\@ACM@commabox . . . .
. . . 1803, 1807, 1808
\@ACM@journalfalse .
148, 150, 152, 154, 156
\@ACM@journaltrue . .
. . . 140, 142, 144, 146
\@ACM@labelwidth . . .
710, 713, 721, 726, 752
\@ACM@manuscriptfalse 135
\@ACM@manuscripttrue 133
\@ACM@newfontsfalse
. . . . . . 616, 618, 621
\@ACM@newfontstrue . 613
\@ACM@reviewtrue . . . 109
\@ACM@screentrue . . .
. . . 826, 855, 861, 867
\@ACM@sigchiamodefalse
. . . . . . . . . . . . 137
\@ACM@sigchiamodetrue 157
\@ACM@timestamptrue
108

\@ACM@title@width . .
. . . . . . . . 1183,
1740, 1742, 1743,
1746, 1747, 1755,
1769, 1771, 1772, 1780
\@DeclareACMFormat .
. . . 38, 39, 40, 41,
42, 43, 44, 45, 46, 47
\@M . . . . . 316, 355, 373, 382
\@abstract 1203, 2033, 2040
\@acmArticle 1159, 1162,
1571, 2049, 2050,
2152, 2153, 2157,
2160, 2163, 2165,
2168, 2172, 2174,
2229, 2243, 2251, 2259
\@acmArticleSeq 1161, 2212
\@acmBadgeL@image . .
. . . . 1193, 1195,
1663, 1665, 1741,
1750, 1752, 1774, 1776
\@acmBadgeL@url . 1192,
1194, 1664, 1751, 1775
\@acmBadgeR@image . .
. . . . 1188, 1190,
1668, 1670, 1745,
1761, 1764, 1789, 1791
\@acmBadgeR@url . 1187,
1189, 1669, 1763, 1790
\@acmBooktitle . . . .
. . . 1043, 1562, 2059
\@acmDOI . . 1177, 1564,
1567, 1573, 1577, 2066
\@acmEditors 1048, 1048,
1049, 1052, 2060, 2061
\@acmISBN . . . . . 1175, 1575
\@acmMonth 1165, 1167, 1571
\@acmNumber . . . . 1157,
2056, 2157, 2165,
2174, 2243, 2251, 2259
\@acmPrice 1171, 1572, 1576
\@acmPubDate . . . 1167,
2056, 2157, 2165,

98

2174, 2244, 2252, 2260
\@acmSubmissionID . .
. . . 1173, 2113, 2114
\@acmVolume . . . . 1155,
2056, 2156, 2164,
2173, 2242, 2250, 2258
\@acmYear . . . . . . 1163,
1170, 1483, 1571, 2052
\@acmdefinitionbodyfont
. . . 2389, 2401, 2413
\@acmdefinitionheadfont
. . . 2391, 2403, 2415
\@acmdefinitionindent
. . . 2390, 2402, 2414
\@acmdefinitionnotefont
. . . 2392, 2404, 2418
\@acmownedfalse . . . .
. . . . 1303, 1306,
1309, 1315, 1319,
1322, 1325, 1328, 1334
\@acmownedtrue . . . .
. . . 1290, 1299, 1331
\@acmplainbodyfont .
. . . 2359, 2371, 2383
\@acmplainheadfont .
. . . 2361, 2373, 2385
\@acmplainindent . . .
. . . 2360, 2372, 2384
\@acmplainnotefont .
. . . 2362, 2374, 2388
\@adddotafter . . . . .
. . . 2296, 2300, 2356
\@additionalaffiliation
. . . . . . . 1107, 1108
\@addpunct . . . . . 2069,
2070, 2356, 2357, 2467
\@addspaceafter . . . .
. . . 2340, 2345, 2357
\@affiliationfont . .
1856, 1861, 1865,
1868, 1871, 1874,
1877, 1880, 1908, 1926
\@afterheading . 347, 1611

\@afterindentfalse .
. . . . . . . . 293, 1610
\@afterindenttrue . . 291
\@article@string . . .
. . . 2049, 2056, 2064
\@author . . 1068, 1071,
1076, 1894, 1953, 1996
\@authorfont . . . . . .
1855, 1860, 1864,
1867, 1870, 1873,
1876, 1879, 1896, 1926
\@authornotemark . . .
. . . 1145, 1151, 2023
\@authornotes . . . . .
. . . 1142, 1146, 1516
\@authorsaddresses .
. . . . . . . 1523, 2070
\@auxout . . . . . . . . . 452
\@begindocumenthook
448
\@botnum . . . . . . . . . 1506
\@citestyle . . . . . . . 225
\@classname . . . . . 25,
27, 35, 51, 53, 54,
59, 61, 62, 67, 69,
70, 75, 77, 78, 83,
85, 86, 91, 93, 94,
99, 101, 102, 107,
111, 112, 123, 128,
181, 614, 617, 619,
827, 856, 862, 868,
1023, 1025, 1106,
1198, 1208, 1210,
1211, 1214, 1216,
1217, 1220, 1222,
1223, 1225, 1226, 2046
\@clubpenalty . . . . . 361
\@concepts . . . . . 1261,
1271, 1585, 1587, 1607
\@copyrightowner . . .
. . . . . . . 1338, 1548
\@copyrightpermission
. . . . . . . 1370, 1540
\@copyrightyear . . . .
. . . 1482, 1548, 1550
\@currbox . . . 691, 692, 693
\@currentaffiliation
1927, 1930, 1952,
1959, 1960, 1962,
1964, 1965, 1969,

1995, 2002, 2003,
2005, 2007, 2008, 2012
\@currentaffiliations
. . . . . . . . 1885,
1886, 1887, 1889,
1892, 1904, 1905, 1910
\@currentauthors . . .
. . . . 1883, 1884,
1891, 1895, 1896,
1898, 1926, 1929,
1951, 1953, 1954,
1956, 1994, 1996,
1997, 1999, 2023, 2024
\@currentlabel . 576, 590
\@dblarg . . . . . . . . . 302
\@dblfloat . . . . . . . . 675
\@department . . 1111, 1112
\@dotsep . . . . . . . . . 2358
\@editorsAbbrev . . . .
. . . 1047, 1051, 2061
\@empty . . . . 159, 306,
1038, 1048, 1066,
1081, 1086, 1087,
1093, 1242, 1243,
1249, 1256, 1261,
1519, 1523, 1564,
1572, 1575, 1576,
1577, 1585, 1590,
1635, 1663, 1668,
1741, 1745, 1750,
1758, 1761, 1774,
1782, 1789, 1799,
1885, 1895, 1903,
1904, 1953, 1959,
1964, 1996, 2002,
2007, 2026, 2049,
2053, 2060, 2113,
2362, 2392, 2480, 2497
\@endfloatbox . . . . . 677
\@endpefalse . . . . . . 2469
\@endwidefloatbox 677, 685
\@finalstrut . . . 581, 594
\@float . . . . . . . . . . 679
\@flushglue . . . . . . . 2305
\@fnsymbol . . . . . . . . 1503
\@folio@ht . . . . . . . .
2192, 2219, 2225, 2226
\@folio@max 2192, 2215, 2216
\@folio@voffset 2192, 2221

99

\@folio@wd . . . . . 2192,
2226, 2227, 2248, 2256
\@folioblob . . . . 2212,
2245, 2247, 2253, 2254
\@footnotemark . 395, 1501
\@footnotemark@nolink
. . . . . . . . 395, 1501
\@footnotetext . . . .
. . . . . 396, 572, 1502
\@footnotetext@nolink
. . . . . . . . 396, 1502
\@for . . . . . . . . . . . . 201
\@formatdoi . . . . 1369,
1567, 1573, 1577, 2066
\@fps . . . . . . . . . . . . 678
\@fpsadddefault . . . . 678
\@gobble . . . . . . 223, 267
\@hangfrom . . . . . 315, 372
\@headfootfont . . . .
2119, 2152, 2153,
2154, 2155, 2159,
2162, 2167, 2171,
2177, 2178, 2179, 2181
\@ifnextchar . . . . . . 1111
\@ifnotempty . . . . . . 1488
\@ifnum . . . . . . . 239, 241
\@ifstar . . . . . . . . . 300
\@ifundefined . . . . .
2423, 2426, 2429,
2433, 2434, 2438, 2441
\@iiiparbox . . . . . . . 570
\@input . . . . . . . . . . 384
\@insideauthorgroupfalse
. . . . . . . . . . . 1101
\@insideauthorgrouptrue
. . . . . . . . . . . 1064
\@journalCode . . 758,
827, 856, 862, 868, 1023
\@journalCode@nr . . .
. . . . . 758, 812, 1028
\@journalName . . 814,
818, 822, 829, 833,
837, 841, 845, 849,
850, 852, 853, 858,
859, 864, 865, 870,
874, 878, 880, 884,
888, 890, 892, 894,
898, 902, 906, 910,
914, 918, 922, 926,
930, 934, 938, 942,

946, 950, 954, 955,
958, 962, 963, 966,
971, 975, 979,
983, 987, 991,
995, 999, 1003,
1007, 1011, 1015,
1019, 1029, 1030,
1560, 2156, 2164,
2173, 2242, 2250, 2258
\@journalNameShort .
. . . 815, 819, 824,
830, 834, 838, 842,
846, 871, 875, 881,
885, 895, 899, 903,
907, 911, 915, 919,
923, 927, 931, 935,
939, 943, 947, 951,
959, 964, 967, 972,
976, 980, 984, 988,
992, 996, 1000,
1004, 1008, 1012,
1016, 1020, 1030, 2055
\@keywords . . . . . . . .
1200, 1590, 1596, 1608
\@latex@error . . . . . 269
\@lempty . . . . . 1205, 2033
\@listI . . . . . . . 734, 738
\@listi . . . . . . . 731, 738
\@listii . . . . . . . . . 739
\@listiii . . . . . . . . . 742
\@listiv . . . . . . . . . 744
\@listv . . . . . . . . . . 746
\@listvi . . . . . . . . . 748
\@m . . . . . . . . . . . . . . 304
\@makefnmark . . . 571,
596, 1508, 1513, 1517
\@makefntext . . . . . .
. . 571, 580, 593, 1518
\@marginfigure . 667, 668
\@margintable . . 670, 671
\@minipagefalse . 567, 687
\@minus . . . 2286, 2290,
2294, 2298, 2302,
2333, 2338, 2343,
2380, 2382, 2410, 2412
\@mkabstract . . 1583, 2032
\@mkauthors 1509, 1511, 1831
\@mkauthors@i . . 1835,
1837, 1839, 1841, 1890
\@mkauthors@ii . . . . 1920

\@mkauthors@iii . 1843,
1845, 1847, 1849, 1931
\@mkauthors@iv 1851, 1980
\@mkauthorsaddresses 2022
\@mkbibcitation 1603, 2042
\@mkteasers . . . 1509, 2025
\@mktitle . . . . . 1509, 1675
\@mktitle@i . . . . 1678,
1680, 1682, 1684, 1739
\@mktitle@ii . . . . . . 1767
\@mktitle@iii . . 1686,
1688, 1690, 1692, 1767
\@mktitle@iv . . 1694, 1795
\@mpargs . . . . . . . . . 570
\@mparswitchfalse . . 532
\@mpfootins . . . . . . .
562, 563, 565, 585, 586
\@mpfootnotetext . . . 584
\@ne . 227, 231, 235, 237,
438, 2076, 2081, 2085
\@nil . . . . . . . . . . . . 246
\@nobreakfalse . 349, 389
\@noskipsecfalse . . . 353
\@noskipsectrue . . . . 350
\@pages@word . . . . . .
. . . 2043, 2057, 2064
\@par . . . . . . . . 1521, 1527
\@parboxrestore . . . . 589
\@parfont . 2300, 2304, 2309
\@permissionCodeOne
. . . . . . 816, 820,
825, 831, 835, 839,
843, 847, 854, 860,
866, 872, 876, 882,
886, 896, 900, 904,
908, 912, 916, 920,
924, 928, 932, 936,
940, 944, 948, 952,
956, 960, 968, 973,
977, 981, 985, 989,
993, 997, 1001,
1005, 1009, 1013,
1017, 1021, 1031, 1571
\@permissionCodeTwo
. . . . . . . . 969, 1032
\@plus . . 382, 390, 597,
2286, 2290, 2294,
2298, 2302, 2333,
2338, 2343, 2379,
2381, 2409, 2411, 2464

100

\@printcopyrightfalse
. . . . . . . 1302, 1314
\@printcopyrighttrue
. . . . . . . 1286, 1298
\@printendtopmatter
. . . . . . . 1609, 2068
\@printpermissionfalse
. . . . . . . . . . . 1301
\@printpermissiontrue
. . . 1288, 1297, 1313
\@printtopmatter . . .
. . . . . . . 1510, 1634
\@proofindent . . . . .
. . . 2448, 2458, 2466
\@proofnamefont . . . .
. . . 2447, 2457, 2467
\@received . 1240, 1243,
1244, 1246, 1249,
1250, 1252, 1256, 1257
\@rightskip . . . 2305, 2306
\@saveabstract 1202, 1203
\@saveteaser . . 1485, 1486
\@seccntformat . 309, 366
\@secfont . . . . . 2288, 2309
\@secpenalty . . . . . . 298
\@sect . . . . . . . . 302, 303
\@setaddresses . . . . 2022
\@setauthorsaddresses
. . . . . . . 1527, 2070
\@setthanks . . . 1521, 2069
\@shortauthors . . . .
. . . . 2118, 2148,
2154, 2160, 2168, 2178
\@sidebar . . . . . . 664, 665
\@specialsection . . .
1586, 1592, 1594, 1613
\@ssect . . . . . . . 301, 367
\@startPage . . . . 1196,
1635, 1636, 1638, 2112
\@startsection . . . .
. . 287, 379, 2285,
2289, 2293, 2297,
2301, 2332, 2337, 2342
\@starttoc . . . . . . . . 379
\@subparfont . . 2345, 2346
\@subsecfont . . 2292, 2309
\@subsubsecfont 2296, 2309
\@subtitle . 1054, 1134,
1758, 1759, 1782,
1783, 1799, 1800, 2053

\@subtitlefont . . . .
1718, 1759, 1783, 1800
\@subtitlenotes . . . .
1132, 1136, 1139, 1515
\@svsec . 306, 309, 315, 330
\@svsechd . . . 328, 356, 376
\@teaser . . . . . 1486, 2027
\@teaserfigures . . . .
1484, 1486, 2026, 2030
\@tempa . . . . . . . 201,
202, 204, 206, 208,
210, 212, 214, 216,
218, 220, 222, 224,
226, 228, 230, 232,
234, 236, 238, 240,
242, 244, 246, 249,
251, 253, 255, 257,
259, 1085, 1086,
1241, 1242, 1903,
2480, 2496, 2497, 2499
\@tempb . . . . 202, 204,
206, 208, 210, 212,
214, 216, 218, 220,
222, 224, 226, 228,
230, 232, 234, 236,
238, 240, 242, 244,
249, 251, 253, 255,
257, 259, 2498, 2499
\@tempboxa . . . . . . . . 570
\@tempc . 247, 248, 250,
252, 254, 256, 258, 260
\@tempcnta . 2212, 2213,
2215, 2216, 2218, 2220
\@tempdima . . . . . . . .
2219, 2220, 2221, 2223
\@tempskipa . . . . . . .
290, 292, 293, 298,
311, 312, 343, 344,
346, 358, 359, 368, 369
\@textbottom . . . . . . 597
\@textsuperscript . .
. . . . 596, 1508, 1513
\@texttop . . . . . . . . . 598
\@thefnmark . 577, 591,
596, 1508, 1513, 1517
\@title . . . 1125, 1606,
1757, 1781, 1798, 2052
\@titlefont 1697, 1749,
1756, 1768, 1780, 1796

\@titlenotes . . . . . .
1123, 1127, 1130, 1514
\@tochangmeasure 320, 333
\@toclevel . . . . . . . . 304
\@tocline . . . 392, 393, 394
\@topnum . . . . . . . . . 1504
\@typeset@author@bx
. . . . . . . . 1924,
1973, 1979, 2016, 2021
\@typeset@author@line
1882, 1893, 1915, 1917
\@undefined . . . . 448, 628
\@width . . . . . . . 551, 558
\@xp . . . . . . . . . . 386, 387
\@xsect . . . . 341, 342, 378
\@z . . . . . . . . . . . . . . 233
\\ 468, 1548, 1553, 1568,
1572, 1576, 2045, 2080
\{ . . . . . . . . . . . . . . 209
\} . . . . . . . . . . . . . . 209

\␣ . . . 1046, 1267, 1277,
1548, 1550, 1572,
2049, 2050, 2062, 2112
A
\abstract . . . . . . . . . 1202
abstract (environment) 18
\acks . . . . . . . . . . . . 2471
acks (environment) . . . . 22
\acm@copyrightinput 1292
\acm@copyrightmode .
1292, 1300, 1305,
1308, 1312, 1318,
1321, 1324, 1327,
1330, 1333, 1339, 1371
\ACM@fontsize . . . . .
115, 159, 162, 164,
166, 168, 170, 172,
174, 176, 178, 181, 182
\ACM@format . . . . . 32, 123
\ACM@format@nr . . . .
. . . 32, 123, 127,
132, 138, 160, 405,
472, 537, 643, 695,
1614, 1642, 1676,
1698, 1719, 1833,
1857, 2120, 2144,

101

2199, 2236, 2269,
2314, 2363, 2393, 2449
\ACM@linecount . . . .
. . . . 2075, 2076,
2080, 2081, 2084, 2085
\ACM@linecount@bx . .
. . . 2072, 2091, 2098
\ACM@linecount@bxht
2074, 2079, 2082, 2083
\ACM@linecountL . . . .
. . . . 2087, 2146,
2149, 2152, 2155,
2159, 2161, 2167,
2169, 2177, 2179,
2238, 2245, 2246,
2254, 2255, 2261, 2264
\ACM@linecountR . . . .
2094, 2170, 2172,
2178, 2182, 2262, 2265
\ACM@mk@linecount . .
. . . 2077, 2089, 2096
\ACM@ps@headings . . .
. . . . . . . 2279, 2283
\ACM@ps@myheadings .
. . . . . . . 2278, 2282
\ACM@ps@plain . 2277, 2281
\ACM@restore@pagestyle
. . . . . . . . . . . 2277
\ACM@timestamp . . . .
2101, 2188, 2270, 2273
\acmArticle . . . . 14, 1159
\acmArticleSeq . 15, 1161
\acmBadgeL . . . . . 15, 1191
\acmBadgeR . . . . . 15, 1186
\acmBooktitle . . . 8, 1043
\acmConference . . 8, 1033
\acmConference@date
1036, 1544, 2180, 2182
\acmConference@name
. . . 1035, 1044, 1045
\acmConference@shortname
. . . . . . . . 1034,
1038, 1039, 1045,
1046, 1544, 2179, 2181
\acmConference@venue
1037, 1544, 2180, 2182
\acmdefinition . . . . 2408
\acmDOI . . . . . . . 15, 1177
\acmISBN . . . . . . 15, 1175
\acmJournal . . . . . 8, 1027

\acmMonth . . . . . . 14, 1165
\acmNumber . . . . . 14, 1157
\acmplain . . . . . . . . . 2378
\acmPrice . . . . . . . . .
. 15, 1171, 1310, 1316
\acmSubmissionID 15, 1173
\acmVolume . . . . . 14, 1155
\acmYear . . . . . . 14, 1163
\addcontentsline 197,
322, 335, 2034, 2474
\additionalaffiliation
. . . . . . . . . 11, 1107
\addpenalty . . . . . . . 298
\addresses . 1066, 1068,
1071, 1076, 1103,
1121, 1145, 1151,
1153, 1917, 1979, 2021
\addtolength . . . 719,
720, 721, 725, 726, 2082
\addvspace . . . . . 298, 390
\advance . . . . . . 735,
740, 743, 745,
747, 749, 1061,
1063, 1742, 1743,
1746, 1747, 1771,
1772, 1933, 1950,
1982, 1993, 2081,
2085, 2216, 2218, 2221
\affiliation . . . . 10,
1100, 1902, 1964, 2007
\and . . . . . . . . . . 1052,
1076, 1077, 1090,
1096, 1893, 1898,
1900, 1910, 1915,
1924, 1958, 1973,
1979, 2001, 2016, 2021
\andify . . . . . . . 1598,
1599, 1883, 1886, 2061
anonsuppress (environment) . . . . . . . . 22
\AtBeginDocument . . .
. . 441, 449, 711, 2284
\AtEndDocument . . . . 1255
\AtEndPreamble . . . .
. 418, 629, 2420, 2481
\author . . . . . . . . 10,
1060, 1497, 1498, 2047
\author@bx 1920, 1925, 1928

\author@bx@sep . . . .
. . . . 1922, 1928,
1933, 1950, 1982, 1993
\author@bx@wd . . . . .
. . . . 1921, 1924,
1932, 1933, 1935,
1941, 1943, 1945,
1947, 1950, 1981,
1982, 1984, 1990, 1993
\authornote . . . . . . .
. 14, 1107, 1143, 2048
\authornotemark . 14, 1149
\authors . . . . . . . . .
1069, 1072, 1077,
1598, 1600, 1605, 2052
\authorsaddresses 14, 1123
B
\baselineskip . . . . .
. . . . 1538, 1751,
1763, 1775, 1790,
2082, 2286, 2287,
2290, 2291, 2294,
2298, 2333, 2334,
2338, 2343, 2379,
2380, 2381, 2382,
2409, 2410, 2411, 2412
\begin . 20, 2090, 2097, 2222
\begingroup . . . . . . .
313, 356, 370, 379,
437, 1500, 1831, 2472
\bfseries . . 750, 1533,
1700, 1702, 1704,
1708, 1710, 1712,
1714, 1716, 1876,
1879, 2051, 2229,
2309, 2310, 2324,
2325, 2327, 2328,
2330, 2331, 2336,
2341, 2349, 2350,
2353, 2354, 2373, 2403
\bgroup . . . . 665, 668,
671, 676, 1108,
1585, 1590, 1924,
2018, 2027, 2032, 2042
\bibfont . . . . . . . . . 199
\bibliofont . . . . . . . 199
\bibliographystyle . 447
\bibsection . . . . . . . 195
\bibstyle 223, 225, 267, 452

102

\bibstyle@acmauthoryear
. . . . . . . . . . . . 273
\bibstyle@acmnumeric 279
\bigskip . . 1257, 1660,
1766, 1794, 1802,
1979, 2021, 2027, 2068
\box 692, 1644, 1646, 1648,
1650, 1652, 1654,
1656, 1658, 1660,
1916, 1928, 1977, 2029
C
\c@footnote . . . . . . . 1503
\c@secnumdepth . . . .
305, 319, 323, 332, 336
\captionsetup . . . . .
. . . 635, 637, 639,
641, 650, 652, 655,
658, 665, 668, 671, 2028
\ccdesc@parse@finish 1284
\ccsdesc . . . . . . 16, 1262
\ccsdesc@parse 1263, 1264
\ccsdesc@parse@end .
. . . . . . . 1263, 1284
\ccsdesc@parse@finish
. . . . . . . 1283, 1284
CCSXML (environment) . . 16
\centering 383, 467, 592,
669, 672, 1768,
1780, 1925, 1978, 2228
\cite . . . 429, 430, 442, 446
\citeA . . . . . . . . . . . 436
\citealt . . . . . . . . . 435
\citeANP . . . . . . . . . 431
\citeauthor . . . . . . . 431
\citeN . . . . . . . . . . . 429
\citename . . . . . . . . . 443
\citeNN . . . . . . . . . . 432
\citeNP . . . . . . . . . . 435
\citep . . . . . . . . . . . 430
\citestyle . . . 23, 265, 285
\citeyear . . . 433, 434, 446
\citeyearNP . . . . . . . 433
\citeyearpar . . . 432, 434
\city . . . . . . 11, 1114, 1811
\ClassError . . . . . . .
. . 35, 1025, 1106,
1211, 1217, 1223, 2046
\ClassInfo . . . . . . . .
. . 123, 181, 1023,

1208, 1210, 1214,
1216, 1220, 1222, 1225
\ClassWarning . . . . .
. . . 27, 128, 614,
617, 619, 1198, 1226
\cleaders . . . . . . . . . 1808
\clubpenalty . . . 355, 361
\CodelineIndex . . . . . 17
\Collect@Body . . 664,
667, 670, 1202, 1485
\color . . . 1536, 2080, 2084
\color@begingroup 579, 592
\color@endbox . . . . . 690
\color@endgroup . . . .
. . . . . . 568, 582, 595
\columnwidth . . . 551,
588, 676, 1981, 2018
\contentsnamefont . . 383
\copy . . . . . . . . . . . . 1808
\copyright . . . . . . . . 1548
\copyrightpermissionfootnoterule
. . . . . . . . . . . . 550
\copyrightyear . 18, 1482
\country . . . 11, 1117, 1811
\csname . 267, 318, 320,
324, 331, 333, 337,
366, 386, 387, 577,
591, 1266, 1267,
1269, 1270, 1271,
1272, 1273, 1276, 1278
\CurrentOption . 116,
117, 118, 119, 120, 121
D
\day . . . . . . . . . . . . . 2110
\DeclareNewFootnote
. . . . . . . . . 554, 556
\DeclareOptionX . . . .
. . . . . . 38, 116,
117, 118, 119, 120, 121
\DeclareRobustCommand 436
\DeclareTextFontCommand
. . . . . . . . . . . . 630
\def . . . . . . . . . 25, 38,
115, 162, 164, 166,
168, 170, 172, 174,
176, 178, 202, 204,
206, 208, 210, 212,
214, 216, 218, 220,
222, 224, 226, 227,

228, 229, 230, 231,
232, 233, 234, 235,
236, 238, 240, 242,
244, 245, 249, 251,
253, 255, 257, 259,
287, 303, 328, 342,
366, 367, 376, 379,
392, 393, 394, 399,
400, 401, 402, 447,
550, 557, 559, 571,
573, 584, 596, 597,
665, 668, 671, 676,
678, 682, 685, 703,
704, 705, 706, 734,
739, 742, 744, 746,
748, 814, 815, 816,
818, 819, 820, 822,
824, 825, 829, 830,
831, 833, 834, 835,
837, 838, 839, 841,
842, 843, 845, 846,
847, 849, 850, 852,
853, 854, 858, 859,
860, 864, 865, 866,
870, 871, 872, 874,
875, 876, 878, 880,
881, 882, 884, 885,
886, 888, 890, 892,
894, 895, 896, 898,
899, 900, 902, 903,
904, 906, 907, 908,
910, 911, 912, 914,
915, 916, 918, 919,
920, 922, 923, 924,
926, 927, 928, 930,
931, 932, 934, 935,
936, 938, 939, 940,
942, 943, 944, 946,
947, 948, 950, 951,
952, 954, 955, 956,
958, 959, 960, 962,
963, 964, 966, 967,
968, 969, 971, 972,
973, 975, 976, 977,
979, 980, 981, 983,
984, 985, 987, 988,
989, 991, 992, 993,
995, 996, 997, 999,
1000, 1001, 1003,
1004, 1005, 1007,

103

1008,
1012,
1016,
1020,
1028,
1031,
1047,
1085,
1109,
1112,
1132,
1143,
1159,
1165,
1173,
1187,
1190,
1194,
1198,
1205,
1241,
1336,
1370,
1486,
1513,
1613,
1697,
1767,
1811,
1815,
1819,
1825,
1855,
1861,
1867,
1871,
1876,
1880,
1889,
1892,
1902,
1931,
1964,
2002,
2023,
2027,
2043,
2046,
2069,
2087,

1009,
1013,
1017,
1021,
1029,
1032,
1048,
1107,
1110,
1123,
1133,
1155,
1161,
1167,
1175,
1188,
1192,
1195,
1200,
1228,
1265,
1338,
1482,
1495,
1521,
1634,
1718,
1795,
1812,
1816,
1821,
1828,
1856,
1864,
1868,
1873,
1877,
1882,
1890,
1894,
1903,
1953,
1980,
2007,
2024,
2032,
2044,
2049,
2070,
2094,

1011,
1015,
1019,
1027,
1030,
1043,
1054,
1108,
1111,
1124,
1142,
1157,
1163,
1171,
1177,
1189,
1193,
1196,
1203,
1240,
1284,
1369,
1484,
1508,
1527,
1675,
1739,
1804,
1814,
1817,
1822,
1831,
1860,
1865,
1870,
1874,
1879,
1884,
1891,
1901,
1924,
1959,
1996,
2022,
2025,
2042,
2045,
2068,
2077,
2118,

2119, 2198, 2205,
2210, 2212, 2280,
2305, 2309, 2310,
2311, 2312, 2318,
2319, 2321, 2322,
2324, 2325, 2327,
2328, 2330, 2331,
2336, 2341, 2346,
2349, 2350, 2353,
2354, 2356, 2357,
2359, 2360, 2361,
2362, 2371, 2372,
2373, 2374, 2389,
2390, 2391, 2392,
2401, 2402, 2403,
2404, 2447, 2448,
2457, 2458, 2478,
2480, 2496, 2497, 2498
\define@boolkey . . . .
. . . . . 49, 57, 65,
73, 81, 89, 97, 105,
1105, 1206, 1212, 1218
\define@choicekey . .
. . . . . . 32, 758, 1291
\define@cmdkey . . . . 1224
\definecolor . . . . . .
. . . 455, 456, 457,
458, 459, 460, 461, 462
\department . 11, 1111, 1811
\description . . . . . . 751
\descriptionlabel 750, 753
\dimexpr . . 674, 692, 2185
\divide 1935, 1941, 1943,
1945, 1947, 1984, 1990
\do . . . . . . . . . . . . . . 201
\DocInput . . . . . . . . . . 21
\documentclass . . . . . . 9
\dots . . . . . . . . . . . . 1576
E
\edef 116, 117, 118, 119, 304
\editor . . . . . . . . 8, 1048
\egroup . . . . . . . 569,
666, 669, 672,
683, 689, 1118,
1587, 1596, 1927,
2021, 2028, 2041, 2067
\else . . . 52, 60, 68, 76,
84, 92, 100, 110,
134, 247, 268, 297,

304, 307, 319, 323,
327, 332, 336, 348,
360, 375, 425, 440,
446, 448, 562, 640,
1045, 1050, 1062,
1070, 1074, 1075,
1084, 1089, 1092,
1095, 1102, 1120,
1129, 1138, 1144,
1152, 1209, 1215,
1221, 1232, 1235,
1245, 1248, 1251,
1256, 1275, 1279,
1280, 1491, 1509,
1519, 1523, 1524,
1539, 1542, 1543,
1549, 1554, 1561,
1566, 1569, 1572,
1574, 1575, 1576,
1577, 1585, 1590,
1593, 1637, 1663,
1668, 1741, 1745,
1750, 1758, 1761,
1774, 1782, 1789,
1799, 1805, 1806,
1819, 1820, 1821,
1822, 1824, 1825,
1828, 1885, 1897,
1903, 1909, 1925,
1936, 1946, 1955,
1961, 1968, 1985,
1989, 1998, 2004,
2011, 2026, 2033,
2037, 2043, 2049,
2053, 2058, 2060,
2113, 2118, 2175,
2213, 2263, 2272,
2480, 2485, 2492, 2500
\email . . . . . . . . . 10,
1119, 1901, 1959, 2002
\emph . . . . . . . . 1560, 1562
\EnableCrossrefs . . . . 19
\end . . . 22, 2092, 2099, 2230
\end@dblfloat . . . . . 681
\end@float . . . . . . . . 683
\endcsname . . . . . . . .
266, 267, 318, 320,
324, 331, 333, 337,
366, 386, 387, 577,
591, 1266, 1267,

104

1269, 1270, 1271,
1272, 1273, 1276, 1278
\enddescription . . . . 757
\endgroup 317, 356, 374,
389, 1581, 1853, 2476
\endlist . . . . . . 755, 757
\endminipage . . . . . . 559
\endtrivlist . . . . . . 2469
\enspace . . . . . . . . . 2357
environments:
abstract . . . . . . . . 18
acks . . . . . . . . . . . 22
anonsuppress . . . . 22
CCSXML . . . . . . . . . 16
marginfigure . . . . 21
margintable . . . . . 21
printonly . . . . . . . 21
screenonly . . . . . . 21
sidebar . . . . . . . . 21
teaserfigure . . . . 18
\everypar . . . 296, 351, 362
\excludecomment . 1260,
2484, 2486, 2490, 2491
\ExecuteOptionsX . . .
. . . . . 48, 56, 64,
72, 80, 88, 96, 104, 114
\expandafter . . . . . .
. . . 246, 248, 449,
570, 1266, 1267,
1269, 1270, 1276, 1278
F
\familydefault . . . . 632
\fancyfoot . . . . . 2150,
2156, 2164, 2173,
2176, 2188, 2239,
2240, 2242, 2250,
2258, 2266, 2270, 2273
\fancyhead . 2146, 2147,
2148, 2149, 2152,
2153, 2154, 2155,
2159, 2161, 2162,
2167, 2169, 2170,
2171, 2177, 2178,
2179, 2181, 2238,
2245, 2246, 2247,
2253, 2254, 2255,
2261, 2262, 2264, 2265
\fancyheadoffset . . .
. . . 2185, 2248, 2256

\fancyhf . . . . . 2141, 2233
\fancypagestyle 2140, 2232
\fi . . . 54, 62, 70, 78, 86,
94, 102, 112, 131,
136, 158, 179, 180,
191, 203, 205, 207,
209, 211, 213, 215,
217, 219, 221, 223,
225, 227, 229, 231,
233, 235, 237, 239,
241, 243, 245, 250,
252, 254, 256, 258,
260, 261, 270, 272,
286, 288, 294, 299,
304, 310, 321, 325,
334, 338, 340, 363,
364, 377, 388, 417,
427, 444, 446, 450,
453, 470, 534, 548,
566, 583, 610, 627,
633, 660, 661, 680,
684, 709, 1022,
1040, 1046, 1053,
1065, 1073, 1078,
1079, 1083, 1091,
1097, 1098, 1099,
1104, 1122, 1131,
1141, 1148, 1154,
1170, 1211, 1217,
1223, 1237, 1238,
1247, 1253, 1254,
1258, 1274, 1281,
1282, 1304, 1307,
1311, 1317, 1320,
1323, 1326, 1329,
1332, 1335, 1368,
1481, 1493, 1498,
1499, 1509, 1511,
1522, 1528, 1529,
1530, 1537, 1540,
1541, 1545, 1546,
1551, 1563, 1568,
1572, 1576, 1577,
1578, 1579, 1580,
1588, 1589, 1595,
1597, 1604, 1633,
1639, 1667, 1671,
1672, 1673, 1695,
1717, 1738, 1744,
1748, 1754, 1760,

1765, 1777, 1779,
G
1784, 1792, 1793,
\g@addto@macro . . . .
1801, 1809, 1819,
1052, 1076, 1077,
1821, 1822, 1824,
1090, 1096, 1103,
1825, 1828, 1830,
1121, 1125, 1127,
1852, 1881, 1888,
1130, 1134, 1136,
1899, 1913, 1914,
1139, 1145, 1146,
1925, 1948, 1949,
1151, 1153, 1246,
1957, 1963, 1972,
1252, 1271, 1278,
1991, 1992, 2000,
1486, 1490, 1492,
2006, 2015, 2031,
1898, 1910, 1956,
2039, 2041, 2043,
1962, 1969, 1999,
2050, 2053, 2062,
2005, 2012, 2023, 2024
2065, 2086, 2093,
\gdef . . . . . . . . . 1034,
2100, 2115, 2117,
1035, 1036, 1037,
2118, 2139, 2146,
1039, 1043, 1049,
2147, 2152, 2153,
1051, 1068, 1069,
2160, 2163, 2168,
1071, 1072, 1082,
2172, 2176, 2183,
1088, 1094, 1203,
2186, 2189, 2211,
1227, 1244, 1250,
2230, 2239, 2266,
1267, 1269, 1270,
2267, 2274, 2275,
1276, 1636, 1896,
2355, 2377, 2407,
1900, 1905, 1929,
2444, 2461, 2480,
1930, 1951, 1952,
2488, 2494, 2497, 2501
1954, 1958, 1960,
\firstpagestyle . . . . 2232
1965, 1994, 1995,
1997, 2001, 2003, 2008
\floatname . . . . . . . . 663
\footnote . . . . . . . . . 2046 \geometry . . . . . . . . .
474, 477, 484, 491,
\footnotemark 402, 1125,
498, 505, 512, 519, 526
1134, 2023, 2024, 2044
\getrefnumber . . . . . 2043
\footnoterule . . . . . 557
\global . . . . . . . . . .
\footnotesep . . . 581, 594
350, 353, 389, 585,
\footnotesize . . . . .
691, 1061, 1063,
. 587, 2109, 2150,
1064, 1101, 1504,
2156, 2164, 2173,
1506, 1600, 1601,
2176, 2240, 2242,
1893, 1915, 1916,
2250, 2258, 2266, 2271
1925, 1973, 1976,
\footnotetext . . 1128,
2016, 2029, 2081, 2085
1130, 1137, 1140, 1147 \grantnum . . . . . . 22, 2479
\footnotetextauthorsaddresses
\grantsponsor . . 22, 2478
. . . . . . . 1520, 1526
\footnotetextcopyrightpermission
H
. . . . . . . . . . . 1531 \hbox . 596, 1508, 1513, 1807
\footrulewidth 2143, 2235 \headrulewidth 2142, 2234
\format . . . . . . . . . . . 32 \hfill . . . . . . . 1797, 2084
\frenchspacing . . . . 2502 \href . 1664, 1669, 1751,
1763, 1775, 1790, 2500
\fulltextwidth . . . .
. . . . . . 673, 676, 692 \hrule . . . . 551, 558, 1797

105

\hsize . . . . . . . . 588,
1507, 1739, 1740,
1767, 1769, 1795,
1832, 1924, 1975, 2018
\hskip . . . . . . . . 315,
329, 359, 372, 376,
1666, 1753, 1762,
1778, 1787, 1808, 2466
\hspace . . . . . . . 1381,
1392, 1401, 1426,
1438, 1459, 1928, 1978
\Huge . . . . . 1706, 1708,
1710, 1712, 1714, 1716
\hypersetup 420, 426, 1605

\if@ACM@printfolios
. . . . 1218, 2146,
2147, 2152, 2153,
2160, 2163, 2168,
2172, 2176, 2239, 2266
\if@ACM@review . . . .
. 65, 2072, 2088, 2095
\if@ACM@screen 49, 419, 2482
\if@ACM@sigchiamode
. . . . . . . . . 126,
572, 631, 675, 681,
1509, 1511, 1925, 2184
\if@ACM@timestamp . .
. 97, 2101, 2187, 2268
\if@acmowned . . . . . . 1289
I
\if@filesw . . . . . 385, 451
\if . . . . . . . . . . . . . . 247 \if@insideauthorgroup
. . . . . . . 1060, 1062
\if@ACM@acmthm . 57, 2421
\if@nobreak . . . . . . . 295
\if@ACM@affiliation@obeypunctuation
\if@noskipsec . . 288, 352
. . . . . . . . 1105,
1806, 1819, 1821,
\if@printcopyright .
1822, 1823, 1825, 1828
. . . . . . . 1285, 1547
\if@ACM@anonymous 89,
\if@printpermission
1067, 1075, 1080,
. . . . . . . 1287, 1540
1102, 1120, 1126,
\ifcase . . . . 138, 160,
1135, 1144, 1489,
405, 472, 537, 643,
1496, 1524, 2118, 2489
695, 812, 1167,
\if@ACM@authordraft
1339, 1371, 1614,
. . . . . 105, 463, 1532
1642, 1676, 1698,
1719, 1833, 1857,
\if@ACM@authorversion
1937, 1986, 2120,
. . . . . 73, 1539, 1555
2144, 2199, 2236,
\if@ACM@badge . . . . .
2314, 2363, 2393, 2449
1179, 1661, 1770, 1786
\ifcsname . . . . . . . . . 266
\if@ACM@journal . 125,
\ifdim 292, 312, 344, 369, 2083
636, 1233, 1525,
1543, 1559, 1570,
\IfFileExists 614, 617, 619
1591, 1813, 2035, 2054 \IfInteger . . . . . . . . 1225
\if@ACM@manuscript .
\ifNAT@numbers . . . . 446
. . . . . . . . . 124,
\ifnum 127, 132, 304, 305,
188, 1230, 1542, 1552
319, 323, 332, 336,
\if@ACM@natbib . . . .
1279, 1280, 1300,
. . . 81, 193, 284, 428
1305, 1308, 1312,
\if@ACM@natbib@override
1318, 1321, 1324,
. . . . . . . . . . . . . 81
1327, 1330, 1333,
1498, 1934, 1983,
\if@ACM@newfonts 612, 622
2043, 2213, 2215, 2269
\if@ACM@printacmref
. . . . . . . 1212, 1602 \ifPDFTeX . . . . . . . . . 600
\ifvmode . . . . . . . . . 1805
\if@ACM@printccs . . .
. . . . . . . 1206, 1584 \ifvoid . . . . . . . . . . 562

106

\ifx . . . . . . . 159, 202,
204, 206, 208, 210,
212, 214, 216, 218,
220, 222, 224, 226,
228, 230, 232, 234,
236, 238, 240, 242,
244, 249, 251, 253,
255, 257, 259, 448,
1038, 1045, 1048,
1066, 1081, 1086,
1087, 1093, 1150,
1242, 1243, 1249,
1256, 1266, 1275,
1519, 1523, 1564,
1572, 1575, 1576,
1577, 1585, 1590,
1635, 1663, 1668,
1741, 1745, 1750,
1758, 1761, 1774,
1782, 1789, 1799,
1885, 1895, 1903,
1904, 1953, 1959,
1964, 1996, 2002,
2007, 2026, 2033,
2049, 2053, 2060,
2113, 2480, 2497, 2499
\ignorespaces . . 365,
581, 594, 1109,
1110, 1112, 1811,
1812, 1814, 1815,
1816, 1817, 1818,
1819, 2040, 2045, 2467
\immediate . . . . . 387, 452
\includecomment . . . .
. . . 2483, 2487, 2493
\includegraphics . . .
. . . . 1665, 1670,
1752, 1764, 1776, 1791
\indent . . . . . . . . . . 2448
\input . . . . . . . . . . . 601
\InputIfFileExists . . 26
\institution 11, 1110, 1811
\interfootnotelinepenalty
. . . . . . . . . . . . 575
\interlinepenalty . .
. . . . . . 316, 373, 575
\item . . . . . . . . . . . . 2466
\itshape . . 1544, 2311,
2312, 2341, 2346,
2359, 2371, 2391, 2457

J
\jobname . . . . . . 384, 387
K
\kern 550, 551, 557, 558, 1797
\keywords . . . . . . 16, 1200
L
\l@section . . . . . . . . 392
\l@subsection . . 392, 393
\l@subsubsection . . . 394
\labelenumi . . . . . . . 703
\labelenumii . . . . . . 704
\labelenumiii . . . . . 705
\labelenumiv . . . . . . 706
\labelsep . . . . . . 712,
720, 725, 735, 740,
743, 745, 747, 749, 2466
\labelwidth . 735, 740,
743, 745, 747, 749, 752
\LARGE . . . . . . . . 1700,
1702, 1704, 1727,
1729, 1731, 1733,
1735, 1864, 1867, 2229
\Large 1855, 1873, 2324,
2325, 2327, 2328, 2330
\large . . . . . . . . 1533,
1860, 1865, 1868,
2318, 2319, 2321, 2322
\lastbox . . . . . . . . . 354
\leaders . . . . . . . . . 1797
\leavevmode 288, 1797, 1977
\leftmargin . . . . 734,
739, 742, 744, 746, 748
\leftmargini . . . 718,
719, 720, 721, 734, 735
\leftmarginii . . 724,
725, 726, 727, 739, 740
\leftmarginiii . . . .
. . . 727, 728, 742, 743
\leftmarginiv . . . . .
. . . 728, 729, 744, 745
\leftmarginv . . . . . .
. . . 729, 730, 746, 747
\leftmarginvi 730, 748, 749
\leftskip . 1796, 2019, 2307
\let . . . . . . . 223, 225,
237, 239, 241, 267,
306, 395, 396, 429,
430, 431, 432, 433,

434, 435, 438, 442,
598, 628, 677, 738,
753, 757, 1113,
1114, 1115, 1116,
1117, 1261, 1501,
1502, 1517, 1518,
1521, 1527, 1600,
1601, 1826, 1827,
1829, 1893, 1915,
1973, 1979, 2016,
2021, 2277, 2278,
2279, 2281, 2282, 2283
\libertineLF . . . . . . 630
\lineskip . . . . . 1978, 2020
\linespacing . . . 382, 383
\liningnums . . . . . . . 628
\list . . . . . . . . . . . . 751
\listisep . . . 732, 733, 737
\listparindent . . . . 736
\LoadClass . . . . . . . . 182
\long . . . . . . . . . 573,
584, 665, 668, 671,
1203, 1205, 1486, 2069
\loop . . . . . . . . 2080, 2214
M
\makeatletter . . . . . 379
\makebox . . . . . 1533, 2223
\makelabel . . . . . . . . 753
\MakeTextUppercase .
. . . . 1896, 1898,
2309, 2318, 2321,
2324, 2327, 2349, 2353
\maketitle . . . . . 19, 1495
\marginfigure . . . . . 667
marginfigure (environment) . . . . . . . . 21
\marginpar . . . . . 573,
666, 669, 672, 1662
\marginparsep . . 674, 2185
\marginparwidth . 674, 2185
\margintable . . . . . . 670
margintable (environment) . . . . . . . . 21
\mbox . . . . . . . . . . . . 245
\mdseries . . . . . . . . .
1721, 1723, 1725,
1729, 1731, 1733,
1735, 1737, 1877, 1880

107

\medskip . . 1616, 1618,
1620, 1622, 1916,
1918, 1977, 2030, 2051
\mktitle@bx . . . . 1494,
1644, 1646, 1648,
1650, 1652, 1654,
1656, 1658, 1660,
1749, 1768, 1796,
1916, 1976, 1977, 2029
\month . . . . . . . 1166, 2110
\moveleft . . . . . . . . . 691
\multiply . . . . . . . . . 2220
N
\NAT@@setcites . . . . 263
\NAT@aysep . . . . . . . . 254
\NAT@citetp . . . . . . . 438
\NAT@close . . . . . . . .
203, 205, 207, 209, 252
\NAT@cmprs . . 231, 233, 235
\NAT@cmt . . . . . . . . . 258
\NAT@ctype . . . . . . . . 438
\NAT@find@eq . . . . . . 246
\NAT@fullfalse . . . . 438
\NAT@longnamestrue . 243
\NAT@merge . . 237, 239, 241
\NAT@nmfmt . . . . . . . . 245
\NAT@numbersfalse . . 217
\NAT@numberstrue 219, 221
\NAT@open . . . . . . 203,
205, 207, 209, 250, 438
\NAT@partrue . . . . . . 438
\NAT@rem@eq . . . . . . . 248
\NAT@sep 211, 213, 215, 260
\NAT@sort . . . 227, 229, 235
\NAT@superfalse . . . . 219
\NAT@supertrue . . . . 221
\NAT@swafalse . . . . . 437
\NAT@up . . . . . . . . . . 245
\NAT@yrsep . . . . . . . . 256
\NeedsTeXFormat . . . . . . 1
\newblock . . . . . . . . . 439
\newbox . . 1494, 1803, 1920
\newcommand . 273, 279,
445, 1033, 1100,
1149, 1186, 1191,
1241, 1262, 1818,
1823, 2108, 2479, 2495
\newcount . 1056, 1058, 2075
\newcounter . . . 2104, 2106

\newdimen . . . 673, 710,
1921, 2192, 2194, 2196
\newenvironment . . . .
. . . . . 667, 670, 1485
\newfloat . . . . . . . . . 662
\newif 124, 125, 126, 612,
1179, 1285, 1287, 1289
\newlength . . . . . . . .
1181, 1183, 1184, 2074
\newsavebox . . . . . . . 2073
\newskip . . . . . . 732, 1922
\newtheorem . . . . . . .
2424, 2427, 2430,
2432, 2435, 2439, 2442
\newtheoremstyle . . .
. . . . . . . 2378, 2408
\newwrite . . . . . . . . . 386
\nobreak . . . . . . 345, 2051
\noindent . . 571, 1257,
1518, 1616, 1618,
1620, 1622, 1641,
1662, 1749, 1756,
1759, 1783, 1797,
1798, 1800, 1883,
1916, 1917, 1976,
2020, 2029, 2030,
2036, 2051, 2052, 2458
\nolinkurl . . . . . . . .
1960, 1962, 2003, 2005
\normalcolor . . . . . . 564
\normalfont 596, 1257,
1513, 1856, 1861,
1870, 1871, 1873,
1874, 2374, 2389,
2401, 2404, 2464, 2502
\normalparindent . . . 549
\normalsize 1718, 1856,
1870, 1871, 1874, 2502
\num@authorgroups . .
1056, 1063, 1498,
1937, 1941, 1943, 1986
\num@authors . . 1058, 1061
\number . . . . . . . . . . 304
\numberline . . . . 324, 337
\numexpr . 2103, 2105, 2107
O
\onehalfspacing . . . .
\openout . . . . . . . . .

190
387

\or . . . . . . . . . . . 141,
143, 145, 147, 149,
151, 153, 155, 163,
165, 167, 169, 171,
173, 175, 177, 407,
408, 409, 410, 411,
412, 414, 415, 476,
483, 490, 497, 504,
511, 518, 525, 539,
540, 541, 543, 544,
545, 546, 547, 645,
646, 647, 648, 649,
651, 654, 657, 697,
698, 699, 700, 701,
702, 707, 708, 817,
821, 828, 832, 836,
840, 844, 848, 851,
857, 863, 869, 873,
877, 879, 883, 887,
889, 891, 893, 897,
901, 905, 909, 913,
917, 921, 925, 929,
933, 937, 941, 945,
949, 953, 957, 961,
965, 970, 974, 978,
982, 986, 990, 994,
998, 1002, 1006,
1010, 1014, 1018,
1167, 1168, 1169,
1340, 1342, 1345,
1347, 1348, 1350,
1352, 1354, 1357,
1360, 1363, 1365,
1372, 1383, 1394,
1402, 1408, 1414,
1428, 1440, 1447,
1461, 1468, 1474,
1617, 1619, 1621,
1623, 1625, 1627,
1629, 1631, 1645,
1647, 1649, 1651,
1653, 1655, 1657,
1659, 1679, 1681,
1683, 1685, 1687,
1689, 1691, 1693,
1701, 1703, 1705,
1707, 1709, 1711,
1713, 1715, 1722,
1724, 1726, 1728,
1730, 1732, 1734,

108

1736, 1836, 1838,
1840, 1842, 1844,
1846, 1848, 1850,
1859, 1862, 1863,
1866, 1869, 1872,
1875, 1878, 1939,
1940, 1942, 1944,
1988, 2123, 2125,
2127, 2129, 2131,
2133, 2135, 2137,
2151, 2158, 2166,
2201, 2206, 2241,
2249, 2257, 2316,
2317, 2320, 2323,
2326, 2329, 2347,
2351, 2365, 2366,
2367, 2368, 2369,
2370, 2375, 2376,
2395, 2396, 2397,
2398, 2399, 2400,
2405, 2406, 2451,
2452, 2453, 2454,
2455, 2456, 2459, 2460
\orcid . . . . . . . . 10, 1123
\outer@nobreak . . . . 688
P
\p@ . . . . . . . . . . . 390,
535, 542, 550, 551,
557, 558, 2286,
2290, 2294, 2295,
2298, 2299, 2302,
2303, 2333, 2338,
2339, 2343, 2344, 2464
\PackageError . 54, 62,
70, 78, 86, 94, 102, 112
\PackageInfo . . . . 51,
53, 59, 61, 67, 69,
75, 77, 83, 85, 91,
93, 99, 101, 107,
111, 827, 856, 862, 868
\PageIndex . . . . . . . . . 16
\pageref . . . . . . . . . 2112
\pagestyle . . . . . . . . 2191
\par . 289, 345, 381, 560,
686, 1257, 1521,
1527, 1540, 1544,
1587, 1596, 1616,
1618, 1620, 1622,
1644, 1646, 1648,

1660, 1759, 1766,
\pushQED . . . . . . . . . 2463
1783, 1794, 1797,
\put . . . . . . . . . 2091, 2098
1800, 1802, 1821,
Q
1822, 1824, 1825,
\qed . . . . . . . . . . . . . 2463
1883, 1887, 1916,
1918, 1924, 1926,
\quad . . . . . 366, 2160,
1954, 1956, 1962,
2163, 2168, 2172, 2270
1969, 1977, 1979,
R
1997, 1999, 2005,
\raggedright . . . . . .
2012, 2019, 2021,
. . . 1755, 1796, 2019
2027, 2028, 2029,
\raisebox . . . . . . . . .
2030, 2040, 2051,
1533, 1751, 1763,
2067, 2068, 2069, 2462
1775, 1790, 2223, 2225
\paragraph 1628, 2297, 2337
\parbox 467, 1755, 1773,
\received . . . . . . 18, 1241
1780, 1788, 2078, 2227 \RecordChanges . . . . . 18
\parindent 535, 549, 719,
\ref . . . . . . . . . 2057, 2064
1521, 1527, 1538,
\refname . . . . . . 196, 197
2297, 2308, 2360, 2390 \refstepcounter . . . . 308
\parskip . . . . . . 535, 1538 \relax . . 127, 132, 139,
\part . . . . . . . . . . . . 2301
161, 246, 247, 290,
\PassOptionsToClass
309, 311, 315, 329,
. . . . . . . . . 120, 121
343, 358, 368, 376,
\pdfgentounicode . . . 609
387, 406, 473, 538,
\pdfglyphtounicode .
598, 644, 696, 813,
. . . . . . 602, 603,
1057, 1059, 1061,
604, 605, 606, 607, 608
1063, 1149, 1150,
\pdfstringdefDisableCommands
1266, 1275, 1300,
. . . . . . . . . . . . 398
1305, 1308, 1312,
\phantomsection . . . .
1318, 1321, 1324,
. . . . 197, 2034, 2474
1327, 1330, 1333,
\popQED . . . . . . . . . . 2469
1339, 1371, 1517,
\position . . . . . . . 11,
1615, 1643, 1677,
1109, 1113, 1114,
1699, 1720, 1834,
1115, 1116, 1117, 1811
1858, 1923, 1932,
\postcode . . . 11, 1116, 1811
1933, 1934, 1935,
printonly (environment) 21
1938, 1941, 1943,
\ProcessOptionsX . . . 122
1945, 1947, 1950,
\proof . . . . . . . . . . . 2462
1978, 1981, 1982,
\proofname . . . . . . . . 2462
1983, 1984, 1987,
\protect . . . . . . 324, 337
1990, 1993, 2023,
\protected@edef . . . .
2043, 2076, 2105,
. . . . . . 309, 576, 590
2107, 2113, 2121,
\providecommand . . . .
2145, 2200, 2202,
. . . . . 439, 443, 2358
2203, 2204, 2207,
\ProvidesClass . . . . . . 5
2208, 2209, 2212,
\ProvidesFile . . . . . . . 3
2213, 2215, 2218,
\ps@headings . . 2279, 2283
2219, 2220, 2221,
\ps@myheadings 2278, 2282
2237, 2269, 2315,
\ps@plain . . . . . 2277, 2281
2364, 2394, 2450, 2464

109

\removelastskip . . . . 381
\renewcommand . . 195,
199, 200, 203, 205,
207, 209, 211, 213,
215, 265, 632, 750,
1060, 1119, 1487,
1503, 2142, 2143,
2234, 2235, 2285,
2289, 2293, 2297,
2301, 2332, 2337, 2342
\renewenvironment . .
. 664, 751, 1202, 2462
\repeat . . . . . . 2083, 2217
\RequirePackage . . 30,
31, 183, 184, 185,
186, 187, 189, 192,
194, 397, 454, 464,
471, 552, 599, 611,
623, 624, 625, 626,
634, 1259, 1264, 2071
\reset@font . . . . 574, 587
\reversemarginpar . . 533
\rightskip . . . . . . . . 2306
\rlap . . . . . . . . . . . . 2224
\rule . . . . . 581, 594, 2226
S
\savebox . . . . . . . . . 2078
screenonly
(environment) . . . . . . . . 21
\scriptsize . . . 2080, 2084
\scshape . . . . . 2361, 2447
\section . . . . . . 196,
1624, 1626, 1630,
1632, 2038, 2285, 2473
\section@raggedright
. . . . 2305, 2309,
2310, 2318, 2319,
2321, 2322, 2324,
2325, 2327, 2328,
2330, 2331, 2336,
2349, 2350, 2353, 2354
\SelectFootnoteRule
. . . . . . . . . 553, 555
\setbox . . . . . . . 354,
585, 691, 1749,
1768, 1796, 1807,
1916, 1925, 1976, 2029
\setcitestyle . . . . .
. . . 23, 200, 274, 280

\setcopyright . . 17, 1336
\setcounter . . . . 1512,
1582, 1638, 2105,
2107, 2313, 2348, 2352
\setkeys . . . . . . . 38,
130, 1027, 1228,
1336, 1906, 1907,
1911, 1912, 1966,
1967, 1970, 1971,
2009, 2010, 2013, 2014
\setlength 535, 536, 542,
549, 712, 713, 718,
724, 727, 728, 729,
730, 1182, 1185, 2079
\settopmatter . . . . .
. . 18, 1228, 1229,
1231, 1234, 1236, 1239
\setTrue . . . . . . . . . 380
\SetWatermarkColor . 466
\SetWatermarkFontSize 465
\SetWatermarkText . . 467
\sfdefault . . . . . . . . 632
\sffamily . . 1700, 1702,
1704, 1706, 1708,
1710, 1714, 1855,
1860, 1864, 2122,
2124, 2126, 2128,
2130, 2132, 2134,
2136, 2138, 2229,
2309, 2310, 2311,
2318, 2319, 2321,
2322, 2327, 2328,
2349, 2350, 2353, 2354
\shortauthors 19, 1081,
1082, 1087, 1088,
1090, 1093, 1094,
1096, 1599, 1601, 2118
\shortcite . . . . . 442, 445
\shorttitle . . . . 2149,
2155, 2163, 2172, 2177
\showeprint . . . . . . . 2495
\sidebar . . . . . . . . . 662
sidebar (environment) . 21
\skip . . . . . . . . . . . . 563
\small . . 574, 666, 669,
672, 1257, 1616,
1618, 1620, 1622,
1861, 2036, 2051, 2239
\smallskipamount . . . 733
\space . . . . 333, 1828, 2480

\specialcomment . . . . 2471
\standardpagestyle . 2140
\startPage . . . . . 16, 1196
\state . . . . . 11, 1115, 1811
\stepcounter . . . 1128,
1130, 1137, 1140, 1147
\streetaddress . . . .
. . . . . 11, 1113, 1811
\string 452, 1198, 2047, 2048
\strut . . . . . . . 1773, 1788
\strutbox . . . . . . 581, 594
\subparagraph . . . . . 2342
\subsection . . . . . . . 2289
\subsubsection 2293, 2332
\subtitle . . . . . . 10, 1054
\subtitlenote . . 14, 1133
T
\teaserfigure . . . . . 1485
teaserfigure (environment) . . . . . . . . 18
\terms . . . . . . . . 16, 1198
\textbf . . . . . . 1268, 1279
\textbullet 400, 1267,
2160, 2163, 2168, 2172
\textcolor . . . . . . . . 2229
\textheight . . . . . . . 2083
\textit . . . . . . . 1280,
2055, 2059, 2060, 2061
\textrightarrow . 401, 1277
\textwidth 674, 692, 693,
1507, 1739, 1767,
1795, 1832, 1932, 1975
\thanks . . . . 13, 1487, 2069
\thankses . . . . . . . . .
1490, 1492, 1519, 2069
\the . . . . . . 1164, 1166,
2080, 2084, 2110, 2220
\theACM@time@hours .
. . . . . . . 2107, 2111
\theACM@time@minutes 2111
\theenumi . . . . . . . . . 703
\theenumii . . . . . . . . 704
\theenumiii . . . . . . . 705
\theenumiv . . . . . . . . 706
\thefootnote . . . . . . 1503
\theoremstyle . . . . .
2419, 2422, 2437, 2445
\thepage . . 2112, 2146,
2147, 2152, 2153,

110

2160, 2163, 2168,
2172, 2176, 2239, 2266
\thispagestyle . . . . 1640
\thmname . . . . . 2388, 2418
\thmnote . . . . . 2388, 2418
\thmnumber . . . . 2388, 2418
\thr@@ . . . . . . . . . . . 241
\time . . . . 2102, 2105, 2107
\title . . . . . . . . . 8, 2047
\titlenote . . 14, 1124, 2048
\topsep . . . 737, 741, 2464
\trivlist . . . . . . . . . 2465
\tw@ . . . . . . . . . . . . . 239
\two@digits . . . 2110, 2111
\twocolumn . . . . . 1650,
1652, 1654, 1656, 1658
U
\unskip . . . . 357, 399,
561, 1112, 1118,
1808, 1811, 1812,
1814, 1815, 1816,
1817, 1818, 1828,
1887, 2045, 2064, 2070
\unvbox . . . . 565, 570, 586
\upshape . . . . . . . . . 750
\url . . . . . . . . . 1369, 2480
\urlstyle . . . 404, 413, 416
\usebox . . . . . . 2091, 2098
\usepackage . . . . . . .
. 10, 11, 12, 13, 14, 15
V
\vbox . . . . . . . . . 585,
691, 1749, 1768,
1796, 1916, 1976, 2029
\vskip 346, 381, 563, 597, 686
\vtop . . . . . . . . . . . . 1925
W
\wd . . . . . . . . . . . 693, 1808
\write . . . . . . . . . . . 452
X
\xdef . . . . . . . . . 250,
252, 254, 256, 258, 260
Y
\year . . . . . . . . 1164, 2110

\z@ . . . . .
344,
536,
638,
724,

Z
229, 292, 312,
354, 369, 382,
581, 594, 597,
642, 653, 718,
736, 1504,

1506,
1533,
1763,
2019,
2193,
2223,

1521,
1538,
1775,
2142,
2195,
2225,

111

1527,
1751,
1790,
2143,
2197,
2234,

2235, 2285, 2289,
2301, 2308, 2332,
2337, 2342, 2372, 2402
\z@skip 381, 686, 741, 2307



Source Exif Data:
File Type                       : PDF
File Type Extension             : pdf
MIME Type                       : application/pdf
PDF Version                     : 1.5
Linearized                      : No
Page Count                      : 111
Page Mode                       : UseOutlines
Author                          : Boris Veytsman
Title                           : LaTeX Class for Association for Computing Machinery
Subject                         : Typesetting articles for Association of Computing Machinery
Creator                         : LaTeX with hyperref package
Producer                        : pdfTeX-1.40.18
Create Date                     : 2017:08:31 22:27:19-04:00
Modify Date                     : 2017:08:31 22:27:19-04:00
Trapped                         : False
PTEX Fullbanner                 : This is pdfTeX, Version 3.14159265-2.6-1.40.18 (TeX Live 2017) kpathsea version 6.2.3
EXIF Metadata provided by EXIF.tools

Navigation menu