0% found this document useful (0 votes)
59 views

Acmguide

Fuck you for making me upload this trash
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views

Acmguide

Fuck you for making me upload this trash
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 142

LATEX Class for the Association for Computing

Machinery ∗

Boris Veytsman†
2022/10/24, v1.88

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

Contents
1 Introduction 3

2 User’s guide 3
2.1 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2.2 Invocation and options . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Top matter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
2.4 Top matter of ACM Engage materials . . . . . . . . . . . . . . . . . . . . 19
2.5 ACM cover page . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
2.6 Internationalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
2.7 Algorithms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.8 Figures and tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.9 Descriptions of images . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.10 Theorems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.11 Online-only and offline-only material . . . . . . . . . . . . . . . . . . . . 23
2.12 Note about anonymous mode . . . . . . . . . . . . . . . . . . . . . . . . 24
2.13 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.14 Bibliography . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.14.1 Processing using BibTEX . . . . . . . . . . . . . . . . . . . . . . . 25
2.14.2 Processing using BibLATEX . . . . . . . . . . . . . . . . . . . . . . 28
2.15 Colors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.16 Other notable packages and typographic remarks . . . . . . . . . . . . . 29
2.17 Counting words . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.18 Creative Commons licenses for ACM publications . . . . . . . . . . . . . 30
2.19 Disabled or forbidden commands . . . . . . . . . . . . . . . . . . . . . . 31
2.20 Notes for wizards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.21 Currently supported publications . . . . . . . . . . . . . . . . . . . . . . 32
2.22 A note about sigchi-a format . . . . . . . . . . . . . . . . . . . . . . . . 33
∗ ©2016–2022, Association for Computing Machinery
[email protected], [email protected]

1
3 Implementation 35
3.1 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Preload hook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.3 Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4 Setting switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.5 Loading the base class and package . . . . . . . . . . . . . . . . . . . . . 40
3.6 Citations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.7 Internationalization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.8 Sectioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
3.9 Hyperxmp and hyperref . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
3.10 Other packages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.11 Paper size and paragraphing . . . . . . . . . . . . . . . . . . . . . . . . . 50
3.12 Fonts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
3.13 Image descriptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
3.14 Floats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
3.15 Lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
3.16 Top-matter data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
3.17 Concepts system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75
3.18 Copyright system . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 76
3.19 Maketitle hook . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.20 ACM Engage top matter . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.21 Typesetting top matter . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
3.22 Headers and Footers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
3.23 Sectioning . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
3.24 TOC lists . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.25 Theorems . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
3.26 Balancing columns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
3.27 Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.28 Conditional typesetting . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113
3.29 Additional bibliography commands . . . . . . . . . . . . . . . . . . . . . 113
3.30 Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114
3.31 End of Class . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

2
1 Introduction
The Association for Computing Machinery1 is the world’s largest educational and sci-
entific computing society, which delivers resources that advance computing as a science
and a profession. It was one of the early adopters of TEX for its typesetting.
It provided several different classes for a number of journals and conference pro-
ceedings. Unfortunately during the years since these classes were written, the code was
patched many times, and supporting different versions of the classes became difficult.
This package provides the uniform interface for all ACM publications. It is intended
to replace all the different classes and packages and provide an up-to-date LATEX package.
This 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 this package.
I am grateful to Michael D. Adams, Leif Andersen, Lawrence Christopher Angrave,
Dirk Beyer, Andrew Black, Joachim Breitner, Yegor Bugayenko, Benjamin Byholm, John
Collins, Roberto Di Cosmo, Nils Anders Danielsson, Michael Ekstrand, Matthew Fluet,
Paolo G. Giarrusso, Ben Greenman, Enrico Gregorio, Jamie Davis, Ulrike Fischer, Ja-
son Hemann, Peter Kemp, Luis Leiva, Ben Liblit, Rholais Lii, LianTze Lim, Kuldeep S.
Meel, Kai Mindermann, Frank Mittelbach, Serguei Mokhov, Ross Moore, John Owens,
Joel Nider, Scott Pakin, Tobias Pape, Henning Pohl, Philip Quinn, Mathias Rav, An-
dreas Reichinger, Matteo Riondato, Craig Rodkin, Bernard Rous, Feras Saad, Kerry A.
Seitz, Jr., David Shamma, Gabriel Scherer, Kartik Singhal, Christoph Sommer, Stephen
Spencer, Shin Hwei Tan, Daniel Thomas, Shari Trewin, Zack Weinberg, 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
This class uses many commands and customizaton options, so it might appear intim-
idating 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 confer-
ence 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 this package
uses a number of relatively recent packages, especially the ones related to fonts.
The latest released version of this 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 by making a pull request.
1 http://www.acm.org/

3
Please note that the version on Github is a development (or experimental) version:
please download it for testing new features. The production version is the one on CTAN
and ACM sites.
Most users should not attempt to install this package themselves but should rather
rely on their TEX distributions to provide it. If you decide to install the package yourself,
follow the standard rules:
1. Run latex acmart.ins. This will produce the file acmart.cls

2. Put the files acmart.cls and ACM-Reference-Format.bst in 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 probably
the file you are 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.
This class uses a number of other packages. They are included in all major TEX dis-
tributions (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
• balance, http://www.ctan.org/pkg/balance
• booktabs, http://www.ctan.org/pkg/booktabs

• 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

• doclicense, http://www.ctan.org/pkg/doclicense
• 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

4
• geometry, http://www.ctan.org/pkg/geometry
• graphics, http://www.ctan.org/pkg/graphics

• hyperref, http://www.ctan.org/pkg/hyperref
• hyperxmp, http://www.ctan.org/pkg/hyperxmp
• iftex, http://www.ctan.org/pkg/iftex

• 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

5
2.2 Invocation and options
To use this class, put in the preamble of your document

\documentclass[⟨options⟩]{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}

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 in-
tended for journals, transactions, and course materials, while formats starting with sig
are intended for proceedings published as books.
Note that sometimes conference proceedings are published as a special issue (or is-
sues) 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.
Starting in 2020, ACM retired formats sigchi and sigchi-a. SIGCHI conferences
now use sigconf format for their publications. If a file uses sigchi format, a warning
is issued, and the format is automatically switched to sigconf. Format sigchi-a can
be used for non-ACM documents only (see Section 2.22). The format acmcp is used for
ACM cover pages discussed in Section 2.5.
There are several Boolean options that can take true or false values. They are listed
in Table 2. The words =true can be omitted when setting a 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 copy editors.
Two samples in the samples directory, manuscript and acmsmall-submission,
show manuscripts formatted for submission to ACM.
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 5) set this option to true. In the future this option may involve additional features
suitable for on-screen versions of 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.14.
The option anonymous is used for anonymous review processes and causes all author
information to be obscured.

6
Table 1: The possible values for the format option

Value Meaning
manuscript A manuscript. This is the default.
acmsmall Small single-column format. Used for ACMJCSS, CIE, CSUR, DLT,
FAC, GAMES, JACM, JATS, JDIQ, JDS, JEA, JERIC, JETC, JRC, PACM-
CGIT, PACMHCI, PACMNET, PACMPL, TAAS, TACCESS, TACO,
TALG, TALLIP (formerly TALIP), TCPS, TDS, TEAC, TECS, TELO,
THRI, TIIS, TIOT, TISSEC, TIST, TKDD, TMIS, TOCE, TOCHI, TOCL,
TOCS, TOCT, TODAES, TODS, TOIS, TOIT, TOMACS, TOMM (for-
merly TOMCCAP), TOMPECS, TOMS, TOPC, TOPLAS, TOPS, TORS
TOS, TOSEM, TOSN, TQC, TRETS, TSAS, TSC, TSLP and TWEB, in-
cluding special issues.
acmlarge Large single-column format. Used for DTRAP, HEALTH, IMWUT,
JOCCH, POMACS and TAP, including special issues.
acmtog Large double-column format. Used for TOG, including annual confer-
ence Technical Papers.
sigconf Proceedings format for most ACM conferences (with the exception of
SIGPlAN) and all ICPS volumes.
sigplan Proceedings format for SIGPLAN conferences.
acmengage ACM EngageCSEdu Course materials.
acmcp ACM cover page.

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 includes the page range of the document. This helps detect missing pages
in hard copies.
The option authordraft is intended for author’s drafts that are not intended for
distribution. It typesets a copyright block to give the author an idea of its size and the
overall size of the paper but overprints it with the phrase “Unpublished working draft.
Not for distribution.”, which is also used as a watermark. This option sets timestamp
and review to true, but these can be overriden by setting these options to false after
setting authordraft to true.
The option balance determines whether the last page in the two column mode has
balanced columns. By default it is true; however, it may lead to problems for some
documents. Set it to false if you encounter compilation errors. Note that for one page
documents \balance command might cause problems. An alternative is the (experi-
mental) option pbalance, which uses the new package pbalance for this end.
The option urlbreakonhyphens determines whether URLs can be split between lines
after hyphens. By default it is true. Set it to false to disallow these breaks.
The option language is used to define the languages for the multi-language papers.
It is discussed in Section 2.6.

2.3 Top matter


A number of commands set up top matter or (in computer science jargon) metadata
for an article. They establish the publication name, article title, authors, DOI and other
data. Some of these commands, like \title and \author, should be put by the authors.

7
Table 2: Boolean options

Option Default Meaning


review false A review version: lines are numbered and hyper-
links are colored
screen see text A screen version: hyperlinks are colored
natbib true Whether to use the natbib package (see Sec-
tion 2.14)
anonymous false Whether to make author(s) anonymous
authorversion false Whether to generate a special version for the au-
thors’ personal use or posting (see Section 2.3)
nonacm false Use the class typesetting options for a non-ACM
document, which will not include the confer-
ence/journal header and footers. Currenly such
documents allow only a Creative Commons li-
cense.
timestamp false Whether to put a time stamp in the footer of each
page
authordraft false Whether author’s-draft mode is enabled
acmthm true Whether to define theorem-like environments, see
Section 2.10
balance true Whether to balance the last page in two column
mode
pbalance false Whether to balance the last page in two column
mode using pbalance package
urlbreakonhyphens true Whether to break urls on hyphens

8
Others, like \acmVolume and \acmDOI—by the editors. Below we describe these com-
mands and mention who should issue them. These macros should be used before the
\maketitle command. Note that in 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.
This class internally loads the amsart class, so many top-matter commands are in-
herited from amsart [2].
\acmJournal The macro \acmJournal{⟨shortName⟩} 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}

The currently recognized journals are listed in Table 5. Note that conference proceedings
published in book form do not set this macro.
\acmConference The macro \acmConference[⟨short name⟩]{⟨name⟩}{⟨date⟩}{⟨venue⟩} 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 conference proceedings are published in the book named
Proceedings of CONFERENCE, where CONFERENCE is the name of the conference in-
ferred from the command \acmConference above. However, sometimes the book title
is different. The command \acmBooktitle can 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)}

An ACM paper should have either \acmJournal or \acmConference command. If it


has both (or more) commands, the last one takes precedence. Note that if you have the
command \acmConference in a journal format like acmsmall, the class will use con-
ference format for bibstrip and reference citation formatting. In the samples directory
there is a file sample-acmsmall-conf.tex with the example of this usage.
An ACM Engage material should not use \acmJournal or \acmConference com-
mand. It may use \acmBooktitle to override the default ACM EngageCSEdu. It should
use \acmYear to set the date of the material.
\editor In most cases, conference proceedings are edited. You can use the command
\editor{⟨editor⟩} to set the editor of the volume. This command can be repeated, for
example,

9
\editor{Jennifer B. Sartor}
\editor{Theo D’Hondt}
\editor{Wolfgang De Meuter}

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

\title[⟨ShortTitle⟩]{⟨FullTitle⟩}
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.
\subtitle Besides title, ACM classes allow a subtitle, set with the \subtitle{⟨subtitle⟩} macro.
The commands for specifying 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.
\author The basic commands are \author, \orcid (for the researchers registered with OR-
\orcid CID, http://www.orcid.org/), \affiliation and \email. In the simplest case, you
\affiliation enter them in this order:
\email
\author{...}
\orcid{...}
\affiliation{...}
\email{...}

Do not use the LATEX \and macro or commas, or \\ between the authors! Each author
deserves his or her own \author command. An attempt to list several authors or their e-
mails in one command leads to a warning or an error. This is not a bug, but the expected
behavior.
Note that some formats do not typeset e-mails or ORCID identifiers. Do not worry:
the metadata tools will get them.
ACM strongly encourages that you include ORCIDs for all authors before compiling
or submitting for review and/or production processing.
If you do not have an ORCID, you may get one for free by registering at http:
//www.orcid.org/.
Sometimes an author has several affiliations. In this case, the \affiliation com-
mand should be repeated:
\author{...}
\orcid{...}
\affiliation{...}
\affiliation{...}
\email{...}

Similarly you can repeat the \email command.


You may have several authors with the same affiliation, different affiliations, or over-
lapping affiliations (author 𝐴1 is affiliated with institutions 𝐼 1 and 𝐼 2 , while author 𝐴2 is
affiliated with 𝐼 2 only, author 𝐴3 is affiliated with 𝐼 1 and 𝐼 3 , etc.). The recommended

10
solution is to put the \affiliation commands after each author, possibly repeating
them:
\author{...}
\orcid{...}
\affiliation{...}
\affiliation{...}
\email{...}
\author{...}
\orcid{...}
\affiliation{...}
\email{...}
\author{...}
\orcid{...}
\affiliation{...}
\affiliation{...}
\email{...}

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

However, this format is not generally recommended.


\additionalaffiliation In some cases, too many affiliations can take too much space. The command
\additionalaffiliation{⟨affiliation⟩} creates a footnote after an author’s name with
the words “Also with {⟨affiliation⟩}”. You should use this command only as a 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}}

Here Trovato and Tobin share their affiliation with the Institute for Clarity in Documen-
tation, but only Ben Trovato is affiliated with The Thørväld Group.
\position The \affiliation and \additionalaffiliation commands are further structured
\institution to interact with the metadata extraction tools. Inside these commands you should use the
\department \position, \institution, \department, \city, \streetaddress, \state, \postcode
\streetaddress
\city
11
\state
\postcode
\country
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.
The fields \institution, \city and \country are mandatory. If they are not pro-
vided, an error or a warning is issued. Currently the absence of \country produces an
error; ACM may change this in the future.
An example of the author block:
\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{[email protected]}
\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 the old ACM conference formats did not allow more than six authors and
required some effort from 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}

12
\country{San Serriffe}}

and
\affiliation{%
\department{Department of Lunar Studies} % Not in the John Doe Institute!
\department{John Doe Institute}
\institution{University of San Serriffe}
\country{San Serriffe}}

The command \affiliation formats its output according to American conventions.


This might be wrong for some cases. Consider, for example, a German address. In Ger-
many, the postcode is put before the 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 the 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[obeypunctuation=true]{%
\institution{Fluginstitut}\\
\streetaddress{Sonnenallee 17}\\
\postcode{123456}
\city{Helm},
\country{Germany}}

will be typeset as
Fluginstitut
Sonenallee 17
123456 Helm, Germany

Note that you should not use this option for journals.
It is expected that these commands are inserted by the author of the manuscript.
\thanks Like amsart (and unlike standard LATEX), we allow \thanks only outside of the com-
mands \title and \author. This command is obsolete and should not be used in most

13
cases. Do not list your acknowledgments or grant sponsors here. Put this information
in the acks environment (see Section 2.13).
\authorsaddresses In some formats, 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{⟨contact addresses⟩}, 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.}

You can suppress printing authors’ addresses by setting them to an empty string:
\authorsaddresses{}. Please note that authors’ addresses are mandatory for journal
articles.
\titlenote While the command \thanks generates a note without a footnote mark, sometimes
\subtitlenote the authors might need notes more tightly connected to the title, subtitle or author. The
\authornote commands \titlenote, \subtitlenote and \authornote that follow the correspond-
ing 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}

Please never use a \footnote inside an \author or \title command since this con-
fuses the metadata extraction software. (Actually these commands now produce errors.)
\authornotemark Sometimes one may need to have the same footnote connected to several authors.
The command \authornotemark[⟨number⟩] 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]

The correct numbering of these marks is the responsibility of the user.


\acmVolume The macros \acmVolume, \acmNumber, \acmArticle, \acmYear and \acmMonth are
\acmNumber inserted by the editor and set the journal volume, issue, article number, year and month
\acmArticle corrspondingly. The arguments of all these commands, including \acmMonth, is numer-
\acmYear ical. For example,
\acmMonth
\acmVolume{9}
\acmNumber{4}
\acmArticle{39}
\acmYear{2010}

14
\acmMonth{3}

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

Setting this number to zero suppresses the blob.


\acmSubmissionID If your paper got a Submission ID from the Conference Management System, put it
here:
\acmSubmissionID{123-A56-BU3}

\acmPrice The macro \acmPrice{⟨price⟩} sets the price for the article, for example,
\acmPrice{25.00}

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, rightsretained, iw3c2w3, or
iw3c2w3g, when it is suppressed. Note that to override the defaults you need to set the
price after the \setcopyright command. Also, the command \acmPrice{} suppresses
the printing of the price.
\acmISBN Book-like volumes have ISBN numbers attached to them. The macro \acmISBN{⟨ISBN ⟩}
sets it. Normally it is set by the typesetter, for example,
\acmISBN{978-1-4503-3916-2}

Setting it to the empty string, as \acmISBN{}, suppresses printing the ISBN.


\acmDOI The macro \acmDOI{⟨DOI ⟩} sets the DOI of the article, for example,
\acmDOI{10.1145/9999997.9999999}

It is normally set by the typesetter. Setting it to the empty string, as \acmDOI{}, sup-
presses the DOI.
\acmBadgeR Some conference articles get special distinctions, for example, the artifact evaluation
\acmBadgeL for PPoPP 2016 (see http://ctuning.org/ae/ppopp2016.html). These articles display
special badges supplied by the conference organizers. This class provides commands to
add these badges: \acmBadgeR[⟨url⟩]{⟨graphics⟩} and \acmBadgeL[⟨url⟩]{⟨graphics⟩}.
The first command puts the badge to the right of the title, and the second one—to the
left. The arguments have the following meaning: [⟨url⟩], if provided, sets the link to
the badge authority in the screen version, while {⟨graphics⟩} 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}

15
\startPage The macro \startPage{⟨page⟩} sets the first page of the article in a journal or book.
It is used by the typesetter.
\terms The command \keywords{⟨keyword, keyword,. . . ⟩} sets keywords for the article.
\keywords They must be separated by commas, for example,

\keywords{wireless sensor networks, media access control,


multi-channel, radio interference, time synchronization}

CCSXML (env.) ACM publications are classified according to the ACM Computing Classification
\ccsdesc Scheme (CCS). CCS codes are used both in the typeset version of the publications and in
the metadata in 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 results like the following:
\begin{CCSXML}
<ccs2012>
<concept>
<concept_id>10010520.10010553.10010562</concept_id>
<concept_desc>Computer systems organization˜Embedded systems</concept_desc>
<concept_significance>500</concept_significance>
</concept>
<concept>
<concept_id>10010520.10010575.10010755</concept_id>
<concept_desc>Computer systems organization˜Redundancy</concept_desc>
<concept_significance>300</concept_significance>
</concept>
<concept>
<concept_id>10010520.10010553.10010554</concept_id>
<concept_desc>Computer systems organization˜Robotics</concept_desc>
<concept_significance>100</concept_significance>
</concept>
<concept>
<concept_id>10003033.10003083.10003095</concept_id>
<concept_desc>Networks˜Network reliability</concept_desc>
<concept_significance>100</concept_significance>
</concept>
</ccs2012>
\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}

You just need to copy this code and paste it in your paper anywhere before
\maketitle.
CCS Concepts and user-defined keywords are required for all articles over two pages
in length, and are optional for one- and two-page articles (or abstracts).
\setcopyright There are several possibilities for the copyright of the papers published by the ACM:
the authors may transfer the rights to the ACM, license them to the ACM, some or all
authors might be employees of the US or Canadian governments, etc. Accordingly the

16
Table 3: Parameters for the \setcopyright command

Parameter Meaning
none The copyright and permission information is not typeset.
(This is the option for some ACM conferences.)
acmcopyright The authors transfer the copyright to the ACM (the “tradi-
tional” choice).
acmlicensed The authors retain the copyright but license the publication
rights to ACM.
rightsretained The authors retain the copyright and publication rights to
themselves or somebody else.
usgov All the authors are employees of the US government.
usgovmixed Some authors are employees of the US government.
cagov All the authors are employees of the Canadian government.
cagovmixed Some authors are employees of the Canadian government.
licensedusgovmixed Some authors are employees of the US government, and the
publication rights are licensed to ACM.
licensedcagov All the authors are employees of the Canadian government,
and the publication rights are licensed to ACM.
licensedcagovmixed Some authors are employees of the Canadian government,
and the publication rights are licensed to ACM.
othergov Authors are employees of a government other than the US
or Canada.
licensedothergov Authors are employees of a government other than the US
or Canada, and the publication rights are licensed to ACM.
iw3c2w3 Special statement for conferences organized by IW3C2.
iw3c2w3g Special statement for conferences organized by IW3C2,
when some authors are approved Google employees.
cc Creative Commons license. If this key is set, doclicense im-
ages are used to typeset the license. See also \setcctype
command. Note that at present this license can be used only
for acmengage format or for nonacm publications.

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 3. This command must be placed in the preamble, before
\begin{document}. Additional information about ACM copyright rules is discussed in
Section ??.
\setcctype If Creative Commons license is used, the package by default chooses CC-BY 4.0
Attribution 4.0 International license. You can override this choice by the command
\setcctype[⟨version⟩]{⟨type⟩}, where [⟨version⟩] can be either 3.0 or 4.0 (4.0 by de-
fault), and {⟨type⟩} can be one of zero, by, by-sa, by-nd, by-nc, by-nc-sa, by-nc-nd
(see https://creativecommons.org/licenses/ for the explanation). This command
should be used in the preamble only.
Material published under Creative Commons license should include the correspond-
ing icon. A modern TEX distribution includes these icons in the package doclicense. In
case your distribution does not have them, ACM provides a file ccicons.zip with these
icons. Just unzip it in the same directory where your document is.

17
The ACM submission software should generate the right command for you to paste
into your file.
\copyrightyear Each copyright statement must have the year of copyright. By default it is the same
as \acmYear, but you can override this using the macro \copyrightyear, e.g.,
\acmYear{2016}
\copyrightyear{2015}

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
a 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.
abstract (env.) The environment abstract must precede the \maketitle command. Again, this is
different from the standard LATEX. Putting abstract after \maketitle will trigger an
error.
teaserfigure (env.) 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 environ-
ment 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 proceed-
ings and suppressed for others. You can override these defaults using the command
\settopmatter{⟨settings⟩}. The settings and their meanings are listed in Table 4. 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 boxes per row is determined automatically.
If you want to override this, you can do it using this parameter, for example,
\settopmatter{authorsperrow=4}

However, in most cases you should not do this and should use the default settings. Set-
ting authorsperrow to 0 will revert it to the default settings.
The parameter printacmref specifies whether to print the ACM bibliographic entry
(default), or not. Note that this entry is required for all articles over one page in length,
and is optional for one-page articles (abstracts).
\received The command \received[⟨stage⟩]{⟨date⟩} sets the history of the publication.

18
Table 4: Settings for the \settopmatter command

Parameter Values Meaning


printccs true/false Whether to print CCS categories
printacmref true/false Whether to print the ACM bibliographic entry
printfolios true/false Whether to print page numbers (folios)
authorsperrow numeric Number of authors per row for the title page in con-
ference proceedings formats

The [⟨stage⟩] argument is optional; the default is Received for the first date and
revised for the subsequent ones. For example,
\received{20 February 2007}
\received[revised]{12 March 2009}
\received[accepted]{5 June 2009}

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

2.4 Top matter of ACM Engage materials


ACM Engage materials resemble conference proceedings, but have some special fea-
tures. First, as a rule, they are released under a Creative Commons license. By de-
fault CC-BY is used. However, if you want to use another variant of CC license, use
\setcctype command, for example, \setcctype{by-nc}. Second, abstract is called
synopsis. Third, there are special top matter items used for the materials, such as Course,
Resource Type, Programming Language, CS Topics.
\setengagemetadata These items are set with the command \setengagemetadata{⟨name⟩}{⟨value⟩}, for
example,
\setengagemetadata{Course}{CS1}
\setengagemetadata{Programming Language}{Python}
\setengagemetadata{Knowledge Unit}{Programming Concepts}
\setengagemetadata{CS Topics}{Functions, Data Types, Expressions,
Mathematical Reasoning}

Note that the type of Creative Commons license, if such license is used, is automat-
ically added to the metadata.

2.5 ACM cover page


ACM cover pages are forms of extended abstracts that are added to journals at the late
stage. Authors prepare them as separate .tex files using acmcp format. At present only
JDS uses them, but in the future this may change.

19
There are several top matter commands specific for this format.
\acmArticleType There are five article types accepted by JDS: Research (the default), Review, Discussion,
Invited, and Position. The command \acmArticleType{⟨type⟩} sets the article type, for
example
\acmArticleType{Review}

\acmCodeLink The commands \acmCodeDataLink{⟨link⟩} and \acmDataLink{⟨link⟩} set the links


\acmDataLink to the data and code accompanying the paper, for example,
\acmCodeLink{https://github.com/repository/code}
\acmDataLink{https://datadryad.org/stash/dataset/doi:DOI}

You may repeat these commands if you have several repositories.


ACM cover page should have the following obligatory sections:
• Problem statement,
• Methods,
• Results,
• Significance.
Sometimes the addresses extracted from the authors’ data are too long to fit on the
page. In this case the command \authorsaddresses can be use to override them, for
example,
\authorsaddresses{Corresponding author: Ben Trovato,
\href{mailto:[email protected]}{[email protected]};
Institute for Clarity in Documentation, P.O. Box 1212, Dublin,
Ohio, USA, 43017-6221}

2.6 Internationalization
ACM accepts publications in languages other than English, as well as papers in English
with translations of titles, subtitles, keywords and abstracts into other languages. Papers
in languages other than English usually have titles, subtitles (if applicable), keywords
and abstracts in English. Note that CCS concepts are always typeset in English.
To submit these papers you need to set the option language in the \documentclass
command. This option can be repeated, for example,
\documentclass[sigconf, language=french, language=english]{acmart}

The last language in the list is the main language of the paper, i.e. the one for the main
title, abstract, body, etc. The other languages are secondary, and used for translated titles,
keywords, abstracts. Thus the paper above is written in English, and has a secondary
abstract and a secondary title in French. On the other hand, a paper in French wih
secondary titles and abstracts in English and German should use, for example
\documentclass[sigconf,
language=german,
language=english,
language=french]{acmart}

20
This key can use any language defined in babel package [3] (currently the package
is tested with English, French, German and Spanish languages; other languages may
require a translation of \keywordsname macro). Actually acmart loads babel internally,
so you can use the facilities provided by this package.
If this key is set, you have access to several additional top matter commands.
\translatedtitle The commands \translatedtitle{⟨language⟩}title, \translatedsubtitle{⟨language⟩}subtitle
\translatedsubtitle and \translatedkeywordslanguagekeywords are used to set title, subtitle and key-
\translatedkeywords words in the secondary language. For example, a paper in English with French title
and abstract may set
\title{A note on computational complexity}
\translatedtitle{french}{Remarque sur la complexit\’e de calcul}

while a paper in French should set


\title{Remarque sur la complexit\’e de calcul}
\translatedtitle{english}{A note on computational complexity}

translatedabstract (env.) Similarly, translatedabstract environment has a mandatory language argument,


for example,
\begin{translatedastract}{english}
This is the English version of the abstract
\end{translatedastract}

You can repeat these commands if a paper has more than one secondary language.
Use the standard commands (\title, \subtitle, \keywords, abstract) for the
main language of the paper.

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

2.8 Figures and tables


The 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 tables
before the table bodies.
2. The ACM uses the standard types for figures and tables and adds several new ones.
In total there are the following types:

figure, table: a standard figure or table taking a full text width in one-column
formats and one column width in two-column formats.
figure*, table* in two-column formats, a special figure or table taking a full text
width.
teaserfigure: a special figure before \maketitle.

21
3. Accordingly, when scaling images, one should use the following sizes:
(a) For teaserfigure, figure in one-column mode or figure* in two-column
mode, use \textwidth. In one-column mode, you can also use \columnwidth,
which coincides with \textwidth in this case.
(b) For figure in two-column mode, use \columnwidth.

It is strongly recommended to use the package booktabs [7] 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 the TeX FAQ [1]. The sim-
plest one is to use a \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
sourcenote.

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


\end{minipage}
\end{table}

Tables and figures are by default centered. However, in some cases (for example,
when you use several subimages per figure) you may need to override this. A good way
to do so is to put the contents into a \minipage of the width \columnwidth.

22
2.9 Descriptions of images
\Description Some readers of ACM publications might be visually challenged. These readers might
use a voice-over software to read aloud the papers. It is important to provide them a
description of each image used in the paper.
The command \Description[⟨short description⟩]{⟨long description⟩} should be
placed inside every figure, teaserfigure or marginfigure environment to provide
a description of the image(s) used in the figure. Unlike \caption, which is used along-
side the image, \Description is intended to be used instead of the image, for example,
\begin{figure}
\centering
\includegraphics{voltage}
\Description{A bell-like histogram centered at $0.5$˜V with most
measurements between $0.2$˜V and $0.8$˜V}
\caption{Histogram of the measurements of voltage}
\label{fig:voltage}
\end{figure}

At present the lack of descriptions generates a warning at compilation.

2.10 Theorems
The ACM classes define two theorem styles and several pre-defined theorem environ-
ments:
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.
Sometimes authors want to define new theorem-like constructs that use theorem
counters. These constructs must be defined either after \begin{document}, or delayed
using \AtEndPreamble macro, for example,
\AtEndPreamble{%
\theoremstyle{acmdefinition}
\newtheorem{remark}[theorem]{Remark}}

2.11 Online-only and offline-only material


printonly (env.) Some supplementary material in ACM publications is put online but not in the printed
screenonly (env.) version. The text inside the environment screenonly will be typeset only when the op-
tion screen (see Section 2.2) is set to true. Conversely, the text inside the environment
printonly is typeset only when this option is set to false. For example,
\section{Supplementary materials}

\begin{printonly}

23
Supplementary materials are available in the online version of this paper.
\end{printonly}

\begin{screenonly}
(The actual supplementary materials.)
\end{screenonly}

We use the comment package for typesetting this code, so \begin and \end should
start on a line of their own with no leading or trailing spaces.

2.12 Note about anonymous mode


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

As for the printonly and screenonly environments, \begin{anonsuppress} and


\end{anonsuppress} should start on a line of their own with no leading or trailing
spaces.
\anon To suppress short snippets of information, use the command \anon[⟨substitute⟩]{⟨suppressed-text⟩}.
By default [⟨substitute⟩] is the word ANONYMOUS. Examples:
This work was performed at \anon{NSA}.
This work was performed at \anon[No Such Agency]{NSA}.

2.13 Acknowledgments
The traditional “Acknowledgments” section is conventionally used to thank persons and
granting agencies for their help and support. However, there are several important con-
siderations about this section.
First, in anonymous mode this section must be omitted: it gives too much informa-
tion to reviewers. Second, data about grants is extracted and stored separately by the
postprocessing software. ACM classes provide facilities for both these tasks.
acks (env.) The environment acks starts an unnumbered section “Acknowledgments” unless the
anonymous mode is chosen. Put all thanks inside this environment.
As for the printonly and screenonly environments, \begin{acks} and \end{acks}
should start on a line of their own with no leading or trailing spaces.
\grantsponsor All financial support must be listed using the commands \grantsponsor and
\grantnum \grantnum. These commands tell the postprocessing software about the granting or-
ganization and grant. The format of these commands is the following:
\grantsponsor{⟨sponsorID⟩}{⟨name⟩}{⟨url⟩}
\grantnum[⟨url⟩]{⟨sponsorID⟩}{⟨number⟩}.

24
Here {⟨sponsorID⟩} is the unique ID used to match grants to sponsors, {⟨name⟩} is
the name of the sponsor, {⟨url⟩} is its URL, and {⟨number⟩} is the grant number. The
{⟨sponsorID⟩} of the \grantnum command must correspond to the {⟨sponsorID⟩} of a
\grantsponsor command. Some awards have their own web pages, which you can
include using the optional argument of the \grantnum command.
At present {⟨sponsorID⟩} is chosen by the authors and can be an arbitrary key in
the same way the label of a \cite is arbitrarily chosen. There might be a change to this
policy if the ACM decides to create a global database of sponsoring organizations.
Example:
\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. This 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/youngscientists]{GS501100001809}{Young
Scientists’ Support Program}.
\end{acks}

2.14 Bibliography
The ACM lets you use either BibTEX or BibLATEX to process your references: they require
slightly different setup of your LATEX file, as detailed in the following subsections.

2.14.1 Processing using BibTEX


This uses the natbib package for formatting references and the BibTEX style file
ACM-Reference-Format.bst for BibTEX processing. You can disable loading of natbib
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.
\citestyle If you use natbib, you can select one of two predefined citation styles using the
command \citestyle: the author-year format acmauthoryear or the numeric format
acmnumeric. For example,
\citestyle{acmauthoryear}

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

One of the more common versions is


\setcitestyle{nosort}

25
It is useful if you do not like the way natbib sorts citation lists.
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 author-date mode.
Note that before version 1.48 the command \citeyear put the year in parentheses.
In version 1.48 and later it produces just the year; the command \citeyearpar can be
used to emulate its old behavior.
There are several customized BibTEX entry types and fields in the ACM style file
ACM-Reference-Format.bst that you may want to be aware of.
The style supports the fields doi and url, for example,
doi = "10.1145/1188913.1188915",
url = "http://ccrma.stanford.edu/˜jos/bayes/bayes.pdf",

Normally the printing of URL is suppressed if DOI is present. However, there is a special
field distinctURL. If it is present and is not zero, URL is printed even if DOI is present.
The style supports the arXiv-recommended fields eprint and (optionally) primaryclass,
for example,
eprint = "960935712",
primaryclass = "cs",

See the examples at https://arxiv.org/help/hypertex/bibstyles.


There are several special entry types. Types online and game are used 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",
}

Entry types artifactsoftware, artifactdataset (with synonyms software and


dataset) can be used to cite software artifacts and datasets, for example,
@ArtifactSoftware{R,
title = {R: A Language and Environment for Statistical Computing},
author = {{R Core Team}},
organization = {R Foundation for Statistical Computing},
address = {Vienna, Austria},
year = {2019},
url = {https://www.R-project.org/},
}
@ArtifactDataset{UMassCitations,
author = {Sam Anzaroot and Andrew McCallum},
title = {{UMass} Citation Field Extraction Dataset},
year = 2013,
url =
{http://www.iesl.cs.umass.edu/data/data-umasscitationfield},

26
lastaccessed = {May 27, 2019}
}

For these entry types you can use the lastaccessed field to add the access date for
the URL.
There are two ways to enter video or audio sources in the bibliograpy corresponding
to two different possibilies. For standalone sources available online, you can use an
online entry and set its 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 sources available as attachments to conference proceedings and similar docu-


ments, you can use the usual inproceedings entry type and set its 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 periodical entry
type is intended for this:
@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”)
to the entry.

27
If you do not know the author (this is often the case for online entries), use the 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",
}

A note about sorting. The current ACM bibliography styles always sort the entries
according to authors names and publication year. There is a controversy about sorting
names with “von” or “van” part: should Ludwig van Beethoven be sorted under “V” or
under “B”? The American practice is to use “van” in sorting, i.e. to file van Beethoven
under “V”. However, some authorities recommend to sort Dutch persons according to
their last names (see e.g. https://www.ifla.org/files/assets/cataloguing/pubs/
names-of-persons 1996.pdf). While I do not want to take a part in this dispute, I
would like to point to the old “noopsort” trick by Oren Patashnik. Add to the .bib file
the line
@PREAMBLE{"\providecommand{\noopsort}[1]{}"}

and then encode the author as


author = {Ludwig {\noopsort{Beethoven}}van Beethoven},

This will make the author to be sorted as “Beethoven” rather than “van Beethoven”.
The current bst style defines a number of macros for common journal names.
In particular, all journals listed in Table 5 are includes, so you can use strings like
journal = taccess for ACM Transactions on Accessible Computing.

2.14.2 Processing using BibLATEX


You will find in this package two sets of style files for BibLATEX, acmnumeric and
acmauthoryear, that mimic the behaviour of the ACM-Reference-Format.bst BibTEX
sytle. They provide you access to all the power of BibLATEX and already include support
for advanced citation of software artefact from the biblatex-software package, also
separately available on CTAN. Look at the biblatex-software documentation to learn
more about what it offers.
There are a few key differences in how the LATEX sources are set up when using
BibLATEX instead of BibTEX, that we summarize briefly here (please refer to the official
BibLATEX documentation for more details).
In the preamble of your document you need to load the BibLATEX package and select
the approriate bibliography style, as follows
\RequirePackage[
datamodel=acmdatamodel,
style=acmnumeric, % use style=acmauthoryear for publications that require it
]{biblatex}

28
Also in the preamble, you need to declare the bibliography sources files using the
\addbibresouce directe (one \addbibresource command per source file), e.g.:
\addbibresource{software.bib}
\addbibresource{sample-base.bib}

At the end of the document, where you want the bibliography to appear, you need
to place the command \printbibliography.
Look at the sample-*-biblatex.tex files that can be found in the samples directory
after running make for templates showcasing these BibLATEX styles.

2.15 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 [8]: ACMBlue,
ACMYellow, ACMOrange, ACMRed, ACMLightBlue, ACMGreen, ACMPurple and ACMDarkBlue.
You can use them in color assignments.
The 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 differ only 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 and white.


4. Situational impairments (e.g., bright sunlight shining on a mobile screen) tend to
reduce the entire color gamut, reducing color discriminability.
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, the ACM recommends that
you choose sets of colors to help ensure suitable variations in when printed in greyscale
by 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.16 Other notable packages and typographic remarks


Several other packages are recommended for specialized tasks.
The package subcaption [9] is recommended for complex figures with several sub-
plots or subfigures that require separate subcaptioning. The packages nomencl [10] and
glossaries [11] can be used for the automatic creation of the lists of symbols and con-
cepts used.

29
By default acmart prevents all widows and orphans (i.e., lonely lines at the beginning
or end of the page) and hyphenation at the end of the page. This is done by the 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 en-
vironment might help—but beware, the results might be, well, sloppy.
Note that the uppercasing in section titles is done using the textcase package [12],
so the command \NoCaseChange inside the title may help to prevent extraneous upper-
casing.

2.17 Counting words


Some ACM conferences use word count limits for papers. The calculation of word num-
ber for a paper with math, tables and figures is not a trivial task. Currently the authori-
tative word count is done by translating the PDF to text and using wc -w on the output.
Authors can use the package texcount (used by Overleaf) to get an estimate of the word
count. To faciliate this one adds to the beginning of the package metacomments
%TC:macro \cite [option:text,text]
%TC:macro \citep [option:text,text]
%TC:macro \citet [option:text,text]
%TC:envir table 0 1
%TC:envir table* 0 1
%TC:envir tabular [ignore] word
%TC:envir displaymath 0 word
%TC:envir math 0 word
%TC:envir comment 0 0

and uses \begin{math}...\end{math} instead of dollar signs for math. Note that the
count is in any case approximate, and the final decision of editors is based on PDF count.
The script texcount provides a report of word count in the document.

2.18 Creative Commons licenses for ACM publications


At present ACM does not allow the authors to typeset Creative Commons license for
most ACM publications. These licenses can be used under an agreement with the ACM
publishing office. In this case they are inserted by ACM itself.
The exceptions are ACM Engage format, which allows Creative Commons li-
cense, and conferences organized and copyrighted by IW3C2. In these cases the au-
thors should use correspondingly \setcopyright{cc}, \setcopyright{iw3c2w3}, or
\setcopyright{iw3c2w3g} (the latter should be used by Google employees).
Yet another case is the typesetting of non-ACM materials, when the option nonacm
is used. This case is somewhat opposite, because for this case only Creative Common
licenses are supported.

30
The command \setcopyright{cc} produces an error unless the format is acmengage
or nonacm option is selected. On the other hand, if the option nonacm is selected, any
argument of \setcopyright other than cc is treated as none.

2.19 Disabled or forbidden commands


The goal of acmart package is to provide a uniform look and feel for ACM publications.
Accordingly, a number of commands is forbidden or disabled in acmart.
You may not put several authors or several e-mails into a \author or \email com-
mand. This may lead to errors or warning.
You cannot change \baselinestretch in your document: this produces an error.
You should not abuse the command \vspace: this command may disturb the type-
setting of ACM papers.
You should not load amssymb package since the package acmart defines the corre-
sponding symbols itself.

2.20 Notes for wizards


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 the titletoc package with acmart. This pack-
age 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 a package. Suppose you want to use the
dvipsnames option of the xcolor package. Normally you cannot do this because acmart
loads this package itself without options.
The file acmart-preload-hook.tex can 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 that is not
acceptable by the ACM. It is even easier to create a file that 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 decide to use this hook, you are on your own.
\AtBeginMaketitle Another hook is \AtBeginMaketitle. The commands in this hook are executed
before \maketitle, for example,
\AtBeginMaketitle{\acmPrice{125.00}}

31
2.21 Currently supported publications

Table 5: ACM publications and arguments of the \acmJournal command

Abbreviation Publication
ACMJCSS ACM Journal on Computing and Sustainable Societies
CIE ACM Computers in Entertainment
CSUR ACM Computing Surveys
DLT Distributed Ledger Technologies: Research and Practice
DGOV Digital Government: Research and Practice
DTRAP Digital Threats: Research and Practice
FAC Formal Aspects of Computing
GAMES ACM Games: Research and Practice
HEALTH ACM Transactions on Computing for Healthcare
IMWUT PACM on Interactive, Mobile, Wearable and Ubiquitous Technologies
JACM Journal of the ACM
JATS ACM Journal on Autonomous Transportation Systems
JDIQ ACM Journal of Data and Information Quality
JDS ACM/IMS Journal of Data Science
JEA ACM Journal of Experimental Algorithmics
JERIC ACM Journal of Educational Resources in Computing
JETC ACM Journal on Emerging Technologies in Computing Systems
JOCCH ACM Journal on Computing and Cultural Heritage
JRC ACM Journal on Responsible Computing
PACMCGIT Proceedings of the ACM on Computer Graphics and Interactive Tech-
niques
PACMHCI PACM on Human-Computer Interaction
PACMNET PACM on Networking
PACMPL PACM on Programming Languages
POMACS PACM on Measurement and Analysis of Computing Systems
TAAS ACM Transactions on Autonomous and Adaptive Systems
TACCESS ACM Transactions on Accessible Computing
TACO ACM Transactions on Architecture and Code Optimization
TALG ACM Transactions on Algorithms
TALLIP ACM Transactions on Asian and Low-Resource Language Information
Processing
TAP ACM Transactions on Applied Perception
TCPS ACM Transactions on Cyber-Physical Systems
TDS ACM/IMS Transactions on Data Science
TEAC ACM Transactions on Economics and Computation
TECS ACM Transactions on Embedded Computing Systems
TELO ACM Transactions on Evolutionary Learning
THRI ACM Transactions on Human-Robot Interaction
TIIS ACM Transactions on Interactive Intelligent Systems
TIOT ACM Transactions on Internet of Things
TISSEC ACM Transactions on Information and System Security
TIST ACM Transactions on Intelligent Systems and Technology
TKDD ACM Transactions on Knowledge Discovery from Data

32
Table 5: ACM publications and arguments of the \acmJournal command (continued)

Abbreviation Publication
TMIS ACM Transactions on Management Information Systems
TOCE ACM Transactions on Computing Education
TOCHI ACM Transactions on Computer-Human Interaction
TOCL ACM Transactions on Computational Logic
TOCS ACM Transactions on Computer Systems
TOCT ACM Transactions on Computation Theory
TODAES ACM Transactions on Design Automation of Electronic Systems
TODS ACM Transactions on Database Systems
TOG ACM Transactions on Graphics
TOIS ACM Transactions on Information Systems
TOIT ACM Transactions on Internet Technology
TOMACS ACM Transactions on Modeling and Computer Simulation
TOMM ACM Transactions on Multimedia Computing, Communications and
Applications
TOMPECS ACM Transactions on Modeling and Performance Evaluation of Com-
puting Systems
TOMS ACM Transactions on Mathematical Software
TOPC ACM Transactions on Parallel Computing
TOPLAS ACM Transactions on Programming Languages and Systems
TOPS ACM Transactions on Privacy and Security
TORS ACM Transactions on Recommender Systems
TOS ACM Transactions on Storage
TOSEM ACM Transactions on Software Engineering and Methodology
TOSN ACM Transactions on Sensor Networks
TQC ACM Transactions on Quantum Computing
TRETS ACM Transactions on Reconfigurable Technology and Systems
TSAS ACM Transactions on Spatial Algorithms and Systems
TSC ACM Transactions on Social Computing
TSLP ACM Transactions on Speech and Language Processing
TWEB ACM Transactions on the Web

Besides the publications listed in Table 5, there is a special “publication” type FACMP,
a forthcoming ACM publication, reserved for new journals which are not assigned an
ISSN yet.

2.22 A note about sigchi-a format


Starting in Spring 2020 ACM retired SIGCHI Extended Abstract format (sigchi-a).
ACM will not, under any circumstances, accept documents in this format for publication
and will not offer technical support to the authors who use this template.
You may use this format in the nonacm mode only, as in
\documentclass[sigchi-a, nonacm]{acmart}

sidebar (env.) This format has large margin uses for special figures and tables. This package pro-
marginfigure (env.) vides three environments for this with optional captions:
margintable (env.)

33
sidebar: textual information in the margin,
marginfigure: a figure in the margin,

margintable: a table in the margin.


The environments figure and table produce figures and tables with the width of
the text column. The environments figure* and table* produce “wide” figures and
tables, which take a large part of the margin.
The horizontal sizes of figures are:

1. figure: \columnwidth,
2. marginfigure: \marginparwidth,
3. figure*: \fulltextwidth.

34
3 Implementation
3.1 Identification
We start with a declaration of who we are. Most .dtx files put driver code in a sep-
arate .drv driver file. We roll this code into the main file and use the pseudo-guard
<gobble> for it.
1 ⟨class⟩\NeedsTeXFormat{LaTeX2e}
2 ⟨∗gobble⟩
3 \ProvidesFile{acmart.dtx}
4 ⟨/gobble⟩
5 ⟨class⟩\ProvidesClass{acmart}
6 [2022/10/24 v1.88 Typesetting articles for the Association for Computing Machinery]

And the driver code:


7 ⟨∗gobble⟩
8 \documentclass{ltxdoc}
9 \usepackage{array,booktabs,amsmath,graphicx,fancyvrb,tabularx, longtable}
10 \usepackage[tt=false, type1=true]{libertine}
11 \usepackage[varqu]{zi4}
12 \usepackage[libertine]{newtxmath}
13 \usepackage[tableposition=top]{caption}
14 \usepackage{hypdoc}
15 \PageIndex
16 \CodelineIndex
17 \RecordChanges
18 \EnableCrossrefs
19 \begin{document}
20 \DocInput{acmart.dtx}
21 \end{document}
22 ⟨/gobble⟩
23 ⟨∗class⟩
24 \def\@classname{acmart}

3.2 Preload hook


We preload acmart-preload-hook:
25 \InputIfFileExists{acmart-preload-hook.tex}{%
26 \ClassWarning{\@classname}{%
27 I am loading acmart-preload-hook.tex. You are fully responsible
28 for any problems from now on.}}{}

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

We use xstring to check whether user input is valid


30 \RequirePackage{xstring}

We need iftex to check the engine


31 \RequirePackage{iftex}

35
format The possible formats
32 \define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
33 manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
34 sigplan, sigchi, sigchi-a, acmengage, acmcp}[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 \@DeclareACMFormat{acmengage}
49 \@DeclareACMFormat{acmcp}
50 \ExecuteOptionsX{format}

\if@ACM@screen Whether we use screen mode


51 \define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
52 \if@ACM@screen
53 \PackageInfo{\@classname}{Using screen mode}%
54 \else
55 \PackageInfo{\@classname}{Not using screen mode}%
56 \fi}{\PackageError{\@classname}{The option screen can be either true or
57 false}}
58 \ExecuteOptionsX{screen=false}

\if@ACM@urlbreakonhyphens
59 \define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{%
60 \if@ACM@urlbreakonhyphens
61 \PackageInfo{\@classname}{Using breaking urls on hyphens}%
62 \else
63 \PackageInfo{\@classname}{Not breaking urls on hyphens}%
64 \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or
65 false}}
66 \ExecuteOptionsX{urlbreakonhyphens=true}

\if@ACM@acmthm Whether we define theorem-like environments.


67 \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
68 \if@ACM@acmthm
69 \PackageInfo{\@classname}{Requiring acmthm}%
70 \else
71 \PackageInfo{\@classname}{Suppressing acmthm}%
72 \fi}{\PackageError{\@classname}{The option acmthm can be either true or
73 false}}
74 \ExecuteOptionsX{acmthm=true}

\if@ACM@review Whether we use review mode


75 \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%

36
76 \if@ACM@review
77 \PackageInfo{\@classname}{Using review mode}%
78 \AtBeginDocument{\@ACM@printfoliostrue}%
79 \else
80 \PackageInfo{\@classname}{Not using review mode}%
81 \fi}{\PackageError{\@classname}{The option review can be either true or
82 false}}
83 \ExecuteOptionsX{review=false}

\if@ACM@authorversion Whether we use author’s-version mode


84 \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
85 \if@ACM@authorversion
86 \PackageInfo{\@classname}{Using authorversion mode}%
87 \else
88 \PackageInfo{\@classname}{Not using authorversion mode}%
89 \fi}{\PackageError{\@classname}{The option authorversion can be either true or
90 false}}
91 \ExecuteOptionsX{authorversion=false}

\if@ACM@nonacm Special option for non-ACM publications using the ACM typesetting options.
92 \define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{%
93 \if@ACM@nonacm
94 \PackageInfo{\@classname}{Using nonacm mode}%
95 \AtBeginDocument{\@ACM@printacmreffalse}%
96 % in ’nonacm’ mode we disable the "ACM Reference Format"
97 % printing by default, but this can be re-enabled by the
98 % user using \settopmatter{printacmref=true}
99 \else
100 \PackageInfo{\@classname}{Not using nonacm mode}%
101 \fi}{\PackageError{\@classname}{The option nonacm can be either true or
102 false}}
103 \ExecuteOptionsX{nonacm=false}

\if@ACM@balance Whether to balance the last page


104 \define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{%
105 \PackageError{\@classname}{The option balance can be either true or
106 false}}
107 \ExecuteOptionsX{balance}

\if@ACM@pbalance Whether to balance the last page


108 \define@boolkey+{acmart.cls}[@ACM@]{pbalance}[true]{}{%
109 \PackageError{\@classname}{The option pbalance can be either true or
110 false}}
111 \ExecuteOptionsX{pbalance=false}

\if@ACM@natbib@override This macro is no longer used.

\if@ACM@natbib Whether we use natbib mode


112 \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
113 \if@ACM@natbib
114 \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
115 \else
116 \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
117 \fi}{\PackageError{\@classname}{The option natbib can be either true or

37
118 false}}
119 \ExecuteOptionsX{natbib=true}

\if@ACM@anonymous Whether we use anonymous mode


120 \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
121 \if@ACM@anonymous
122 \PackageInfo{\@classname}{Using anonymous mode}%
123 \else
124 \PackageInfo{\@classname}{Not using anonymous mode}%
125 \fi}{\PackageError{\@classname}{The option anonymous can be either true or
126 false}}
127 \ExecuteOptionsX{anonymous=false}

\if@ACM@timestamp Whether we use timestamp mode


128 \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
129 \if@ACM@timestamp
130 \PackageInfo{\@classname}{Using timestamp mode}%
131 \else
132 \PackageInfo{\@classname}{Not using timestamp mode}%
133 \fi}{\PackageError{\@classname}{The option timestamp can be either true or
134 false}}
135 \ExecuteOptionsX{timestamp=false}

\if@ACM@authordraft Whether we use author-draft mode


136 \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
137 \if@ACM@authordraft
138 \PackageInfo{\@classname}{Using authordraft mode}%
139 \@ACM@timestamptrue
140 \@ACM@reviewtrue
141 \else
142 \PackageInfo{\@classname}{Not using authordraft mode}%
143 \fi}{\PackageError{\@classname}{The option authordraft can be either true or
144 false}}
145 \ExecuteOptionsX{authordraft=false}

\ACM@fontsize The font size to pass to the base class


146 % \changes{v1.87}{2022/08/27}{Added fontsize 8pt}
147 \def\ACM@fontsize{}
148 \DeclareOptionX{8pt}{\edef\ACM@fontsize{\CurrentOption}}
149 \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
150 \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
151 \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
152 \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}

\ACM@languages The languages of the document


153 \def\ACM@languages{}
154 \DeclareOptionX{language}{%
155 \ifx\ACM@languages\@empty
156 \gdef\ACM@languages{english}\fi
157 \g@addto@macro\ACM@languages{, #1}}

158 \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
159 \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
160 \ProcessOptionsX
161 \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}

38
3.4 Setting switches
\if@ACM@manuscript Whether we use manuscript mode
162 \newif\if@ACM@manuscript

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


163 \newif\if@ACM@journal

\if@ACM@journal@bibstrip Sometimes ACM wants a journal-like publication to have conference information in the
bibstrip and vice versa, so we have an additional switch.
164 \newif\if@ACM@journal@bibstrip

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

\if@ACM@engage ACM Engage course materials have special formatting


166 \newif\if@ACM@engage
167 \@ACM@engagefalse

\if@ACM@acmcp ACM cover page formatting


168 \newif\if@ACM@acmcp
169 \@ACM@acmcpfalse

Setting up switches
170 \ifnum\ACM@format@nr=5\relax % siggraph
171 \ClassWarning{\@classname}{%
172 The format siggraph is now obsolete.\MessageBreak
173 I am switching to sigconf.}
174 \setkeys{acmart.cls}{format=sigconf}
175 \fi
176 \ifnum\ACM@format@nr=7\relax % sigchi
177 \ClassWarning{\@classname}{%
178 The format sigchi is now obsolete.\MessageBreak
179 I am switching to sigconf.}
180 \setkeys{acmart.cls}{format=sigconf}
181 \fi
182 \ifnum\ACM@format@nr=8\relax % sigchi
183 \ClassWarning{\@classname}{%
184 ACM SIGCHI has retired the SIGCHI-A template\MessageBreak
185 effective immediately. ACM is keeping this template\MessageBreak
186 option available to authors who are working on legacy\MessageBreak
187 documents only. ACM will not, under any circumstances,\MessageBreak
188 accept documents in this format for publication and\MessageBreak
189 will not offer technical support to the authors who use\MessageBreak
190 this template.\MessageBreak
191 ACM SIGCHI is directing Conference leaders and\MessageBreak
192 authors to publish their articles using the SIGCONF\MessageBreak
193 template call.}
194 \fi
195 \ifnum\ACM@format@nr=0\relax
196 \@ACM@manuscripttrue
197 \else

39
198 \@ACM@manuscriptfalse
199 \fi
200 \@ACM@sigchiamodefalse
201 \ifcase\ACM@format@nr
202 \relax % manuscript
203 \@ACM@journaltrue
204 \or % acmsmall
205 \@ACM@journaltrue
206 \or % acmlarge
207 \@ACM@journaltrue
208 \or % acmtog
209 \@ACM@journaltrue
210 \or % sigconf
211 \@ACM@journalfalse
212 \or % siggraph
213 \@ACM@journalfalse
214 \or % sigplan
215 \@ACM@journalfalse
216 \or % sigchi
217 \@ACM@journalfalse
218 \or % sigchi-a
219 \@ACM@journalfalse
220 \@ACM@sigchiamodetrue
221 \or % acmengage
222 \@ACM@journalfalse
223 \@ACM@engagetrue
224 \or % acmcp
225 \@ACM@journaltrue
226 \@ACM@acmcptrue
227 \AtBeginDocument{\@ACM@printacmreffalse}%
228 \fi
229 \if@ACM@journal
230 \@ACM@journal@bibstriptrue
231 \else
232 \@ACM@journal@bibstripfalse
233 \fi

3.5 Loading the base class and package


At this point we either have \ACM@fontsize or use defaults
234 \ifx\ACM@fontsize\@empty
235 \ifcase\ACM@format@nr
236 \relax % manuscript
237 \def\ACM@fontsize{9pt}%
238 \or % acmsmall
239 \def\ACM@fontsize{10pt}%
240 \or % acmlarge
241 \def\ACM@fontsize{10pt}%
242 \or % acmtog
243 \def\ACM@fontsize{9pt}%
244 \or % sigconf
245 \def\ACM@fontsize{9pt}%
246 \or % siggraph
247 \def\ACM@fontsize{9pt}%

40
248 \or % sigplan
249 \def\ACM@fontsize{10pt}%
250 \or % sigchi
251 \def\ACM@fontsize{9pt}%
252 \or % sigchi-a
253 \def\ACM@fontsize{10pt}%
254 \or % acmengage
255 \def\ACM@fontsize{10pt}%
256 \or % acmcp
257 \def\ACM@fontsize{9pt}%
258 \fi
259 \fi
260 \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
261 \LoadClass[\ACM@fontsize, reqno]{amsart}
262 \RequirePackage{microtype}

We need etoolbox for delayed code


263 \RequirePackage{etoolbox}

Booktabs is now the default


264 \RequirePackage{booktabs}

We need totpages to calculate the number of pages and refcount to use that num-
ber
265 \RequirePackage{refcount}
266 \RequirePackage{totpages}

The \collect@body macro in amsmath is defined using \def. We load environ to


access the \long version of this command
267 \RequirePackage{environ}

We use setspace for double spacing


268 \if@ACM@manuscript
269 \RequirePackage{setspace}
270 \onehalfspacing
271 \fi

We need textcase for better upcasing


272 \RequirePackage{textcase}

273 \if@ACM@acmcp
274 \RequirePackage{framed}
275 \fi

3.6 Citations
We patch \setcitestyle to allow, for example, \setcitestyle{sort} and \setcitestyle{nosort}.
We patch \citestyle to warn about undefined citation styles.
276 \if@ACM@natbib
277 \RequirePackage{natbib}
278 \renewcommand{\bibsection}{%
279 \section*{\refname}%
280 \phantomsection\addcontentsline{toc}{section}{\refname}%
281 }
282 \renewcommand{\bibfont}{\bibliofont}
283 \renewcommand\setcitestyle[1]{

41
284 \@for\@tempa:=#1\do
285 {\def\@tempb{round}\ifx\@tempa\@tempb
286 \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
287 \def\@tempb{square}\ifx\@tempa\@tempb
288 \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
289 \def\@tempb{angle}\ifx\@tempa\@tempb
290 \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
291 \def\@tempb{curly}\ifx\@tempa\@tempb
292 \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
293 \def\@tempb{semicolon}\ifx\@tempa\@tempb
294 \renewcommand\NAT@sep{;}\fi
295 \def\@tempb{colon}\ifx\@tempa\@tempb
296 \renewcommand\NAT@sep{;}\fi
297 \def\@tempb{comma}\ifx\@tempa\@tempb
298 \renewcommand\NAT@sep{,}\fi
299 \def\@tempb{authoryear}\ifx\@tempa\@tempb
300 \NAT@numbersfalse\fi
301 \def\@tempb{numbers}\ifx\@tempa\@tempb
302 \NAT@numberstrue\NAT@superfalse\fi
303 \def\@tempb{super}\ifx\@tempa\@tempb
304 \NAT@numberstrue\NAT@supertrue\fi
305 \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
306 \let\bibstyle=\@gobble\fi
307 \def\@tempb{bibstyle}\ifx\@tempa\@tempb
308 \let\bibstyle=\@citestyle\fi
309 \def\@tempb{sort}\ifx\@tempa\@tempb
310 \def\NAT@sort{\@ne}\fi
311 \def\@tempb{nosort}\ifx\@tempa\@tempb
312 \def\NAT@sort{\z@}\fi
313 \def\@tempb{compress}\ifx\@tempa\@tempb
314 \def\NAT@cmprs{\@ne}\fi
315 \def\@tempb{nocompress}\ifx\@tempa\@tempb
316 \def\NAT@cmprs{\z@}\fi
317 \def\@tempb{sort&compress}\ifx\@tempa\@tempb
318 \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
319 \def\@tempb{mcite}\ifx\@tempa\@tempb
320 \let\NAT@merge\@ne\fi
321 \def\@tempb{merge}\ifx\@tempa\@tempb
322 \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
323 \def\@tempb{elide}\ifx\@tempa\@tempb
324 \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
325 \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
326 \NAT@longnamestrue\fi
327 \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
328 \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
329 \expandafter\NAT@find@eq\@tempa=\relax\@nil
330 \if\@tempc\relax\else
331 \expandafter\NAT@rem@eq\@tempc
332 \def\@tempb{open}\ifx\@tempa\@tempb
333 \xdef\NAT@open{\@tempc}\fi
334 \def\@tempb{close}\ifx\@tempa\@tempb
335 \xdef\NAT@close{\@tempc}\fi
336 \def\@tempb{aysep}\ifx\@tempa\@tempb
337 \xdef\NAT@aysep{\@tempc}\fi

42
338 \def\@tempb{yysep}\ifx\@tempa\@tempb
339 \xdef\NAT@yrsep{\@tempc}\fi
340 \def\@tempb{notesep}\ifx\@tempa\@tempb
341 \xdef\NAT@cmt{\@tempc}\fi
342 \def\@tempb{citesep}\ifx\@tempa\@tempb
343 \xdef\NAT@sep{\@tempc}\fi
344 \fi
345 }%
346 \NAT@@setcites
347 }
348 \renewcommand\citestyle[1]{%
349 \ifcsname bibstyle@#1\endcsname%
350 \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
351 \else%
352 \@latex@error{Undefined ‘#1’ citestyle}%
353 \fi
354 }%
355 \fi

\bibstyle@acmauthoryear The default author-year format:


356 \newcommand{\bibstyle@acmauthoryear}{%
357 \setcitestyle{%
358 authoryear,%
359 open={[},close={]},citesep={;},%
360 aysep={},yysep={,},%
361 notesep={, }}}

\bibstyle@acmnumeric The default numeric format:


362 \newcommand{\bibstyle@acmnumeric}{%
363 \setcitestyle{%
364 numbers,sort&compress,%
365 open={[},close={]},citesep={,},%
366 notesep={, }}}

The default is numeric:


367 \if@ACM@natbib
368 \citestyle{acmnumeric}
369 \fi

3.7 Internationalization
370 \if@ACM@journal
371 \renewcommand\keywordsname{Additional Key Words and Phrases}%
372 \else
373 \renewcommand\keywordsname{Keywords}%
374 \fi
375 \if@ACM@engage
376 \renewcommand\abstractname{Synopsis}%
377 \fi
378 \ifx\ACM@languages\@empty
379 \else
380 \RequirePackage[\ACM@languages]{babel}%
381 \addto\captionsenglish{%
382 \if@ACM@journal

43
383 \renewcommand\keywordsname{Additional Key Words and Phrases}%
384 \else
385 \renewcommand\keywordsname{Keywords}%
386 \fi
387 \renewcommand\acksname{Acknowledgements}%
388 \if@ACM@engage
389 \renewcommand\abstractname{Synopsis}%
390 \fi
391 }%
392 \addto\captionsfrench{%
393 \if@ACM@journal
394 \renewcommand\keywordsname{Mots Clés et Phrases Supplémentaires}%
395 \else
396 \renewcommand\keywordsname{Mots clés}%
397 \fi
398 \renewcommand\acksname{Remerciements}%
399 }%
400 \addto\captionsgerman{%
401 \if@ACM@journal
402 \renewcommand\keywordsname{Zusätzliche Schlagwörter und Phrasen}%
403 \else
404 \renewcommand\keywordsname{Schlagwörter}%
405 \fi
406 \renewcommand\acksname{Danksagungen}%
407 }%
408 \addto\captionsspanish{%
409 \if@ACM@journal
410 \renewcommand\keywordsname{Palabras y Frases Claves Adicionales}%
411 \else
412 \renewcommand\keywordsname{Palabras claves}%
413 \fi
414 \renewcommand\acksname{Expresiones de gratitud}%
415 }%
416 \fi

\ACM@lang@check Some commands should not be used if the document is monlingual


417 \newcommand\ACM@lang@check[1]{%
418 \ifx\ACM@languages\@empty\relax
419 \ClassError{\@classname}{%
420 Command \string#1 \MessageBreak is used in monlingual document}{%
421 You used a command (\string#1) \MessageBreak
422 that does not have a meaning \MessageBreak
423 unless are languages are defined. \MessageBreak
424 Please choose the languages in \string\documentclass
425 \MessageBreak
426 (e.g. \string\documentclass[languages={french, english}]{acmart}),
427 \MessageBreak
428 or delete the command.}%
429 \fi}

\@translatedtitle
430 \def\@translatedtitle{}

\translatedtitle The title of the paper in a different language

44
431 \newcommand\translatedtitle[2]{\ACM@lang@check{\translatedtitle}%
432 \g@addto@macro\@translatedtitle{\par\foreignlanguage{#1}{#2}}}

\@translatedsubtitle
433 \def\@translatedsubtitle{}

\translatedsubtitle The subtitle of the paper in a different language


434 \newcommand\translatedsubtitle[2]{\ACM@lang@check{\translatedsubtitle}%
435 \g@addto@macro\@translatedsubtitle{\par\foreignlanguage{#1}{#2}}}

\@translatedkeywords
436 \def\@translatedkeywords{}

\translatedkeywords Add keywords to the paper in the language specified


437 \newcommand\translatedkeywords[2]{\ACM@lang@check{\translatedkeywords}%
438 \g@addto@macro\@translatedkeywords{\@mktranslatedkeywords{#1}{#2}}}

\@translatedabstracts The container for translated abstracts.


439 \def\@translatedabstracts{}

translatedabstract We save translated abstracts into \@translatedabstracts


440 \newenvironment{translatedabstract}[1]{\Collect@Body
441 \@savetranslatedabstract\@mktranslatedabstract{#1}}{}

\@savetranslatedabstract And saving the abstract


442 \long\def\@savetranslatedabstract#1{\if@ACM@maketitle@typeset
443 \ClassError{\@classname}{Abstract must be defined before maketitle
444 command. Please move it!}\fi
445 \ACM@lang@check{translatedabstract}%
446 \g@addto@macro\@translatedabstracts{\bgroup#1\egroup}}

3.8 Sectioning
\@startsection Before we call hyperref, we redefine \startsection commands to their LATEX defaults
since the amsart ones are too AMS-specific. We need to do this early since we want
hyperref to have a chance to redefine them again:
447 \def\@startsection#1#2#3#4#5#6{%
448 \if@noskipsec \leavevmode \fi
449 \par
450 \@tempskipa #4\relax
451 \@afterindenttrue
452 \ifdim \@tempskipa <\z@
453 \@tempskipa -\@tempskipa \@afterindentfalse
454 \fi
455 \if@nobreak
456 \everypar{}%
457 \else
458 \addpenalty\@secpenalty\addvspace\@tempskipa
459 \fi
460 \@ifstar
461 {\@ssect{#3}{#4}{#5}{#6}}%
462 {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}

45
463 \def\@sect#1#2#3#4#5#6[#7]#8{%
464 \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
465 \ifnum #2>\c@secnumdepth
466 \let\@svsec\@empty
467 \else
468 \refstepcounter{#1}%
469 \protected@edef\@svsec{\@seccntformat{#1}\relax}%
470 \fi
471 \@tempskipa #5\relax
472 \ifdim \@tempskipa>\z@
473 \begingroup
474 #6{%
475 \@hangfrom{\hskip #3\relax\@svsec}%
476 \interlinepenalty \@M #8\@@par}%
477 \endgroup
478 \csname #1mark\endcsname{#7}%
479 \ifnum #2>\c@secnumdepth \else
480 \@tochangmeasure{\csname the#1\endcsname}%
481 \fi
482 \addcontentsline{toc}{#1}{%
483 \ifnum #2>\c@secnumdepth \else
484 \protect\numberline{\csname the#1\endcsname}%
485 \fi
486 #7}%
487 \else
488 \def\@svsechd{%
489 #6{\hskip #3\relax
490 \@svsec #8}%
491 \csname #1mark\endcsname{#7}%
492 \ifnum #2>\c@secnumdepth \else
493 \@tochangmeasure{\csname the#1\endcsname\space}%
494 \fi
495 \addcontentsline{toc}{#1}{%
496 \ifnum #2>\c@secnumdepth \else
497 \protect\numberline{\csname the#1\endcsname}%
498 \fi
499 #7}}%
500 \fi
501 \@xsect{#5}}
502 \def\@xsect#1{%
503 \@tempskipa #1\relax
504 \ifdim \@tempskipa>\z@
505 \par \nobreak
506 \vskip \@tempskipa
507 \@afterheading
508 \else
509 \@nobreakfalse
510 \global\@noskipsectrue
511 \everypar{%
512 \if@noskipsec
513 \global\@noskipsecfalse
514 {\setbox\z@\lastbox}%
515 \clubpenalty\@M
516 \begingroup \@svsechd \endgroup

46
517 \unskip
518 \@tempskipa #1\relax
519 \hskip -\@tempskipa
520 \else
521 \clubpenalty \@clubpenalty
522 \everypar{}%
523 \fi}%
524 \fi
525 \ignorespaces}
526 \def\@seccntformat#1{\csname the#1\endcsname\quad}
527 \def\@ssect#1#2#3#4#5{%
528 \@tempskipa #3\relax
529 \ifdim \@tempskipa>\z@
530 \begingroup
531 #4{%
532 \@hangfrom{\hskip #1}%
533 \interlinepenalty \@M #5\@@par}%
534 \endgroup
535 \else
536 \def\@svsechd{#4{\hskip #1\relax #5}}%
537 \fi
538 \@xsect{#3}}

\@startsection The amsart package redefines \startsection. Here we redefine it again to make the
table of contents work.
539 \def\@starttoc#1#2{\begingroup\makeatletter
540 \setTrue{#1}%
541 \par\removelastskip\vskip\z@skip
542 \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
543 {.5\linespacing}{\centering\contentsnamefont}{#2}%
544 \@input{\jobname.#1}%
545 \if@filesw
546 \@xp\newwrite\csname tf@#1\endcsname
547 \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
548 \fi
549 \global\@nobreakfalse \endgroup
550 \addvspace{32\p@\@plus14\p@}%
551 }

\l@subsection Section spacing is more generous than for amsart


552 \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}

\l@subsection The spacing in amsart is too large


553 \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}

\l@subsubsection The spacing in amsart is too large


554 \def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}}

We need to define foonote-related stuff before the call to hyperref (Ross Moore)
\@makefntext We do not use indentation for footnotes
555 \def\@makefntext{\noindent\@makefnmark}

47
\@footnotetext In sigchi-a mode our footnotes are in the margin!
556 \if@ACM@sigchiamode
557 \long\def\@footnotetext#1{\marginpar{%
558 \reset@font\small
559 \interlinepenalty\interfootnotelinepenalty
560 \protected@edef\@currentlabel{%
561 \csname p@footnote\endcsname\@thefnmark
562 }%
563 \color@begingroup
564 \@makefntext{%
565 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
566 \color@endgroup}}%
567 \fi

\@mpfootnotetext We want the footnotes in minipages centered:


568 \long\def\@mpfootnotetext#1{%
569 \global\setbox\@mpfootins\vbox{%
570 \unvbox\@mpfootins
571 \reset@font\footnotesize
572 \hsize\columnwidth
573 \@parboxrestore
574 \protected@edef\@currentlabel
575 {\csname p@mpfootnote\endcsname\@thefnmark}%
576 \color@begingroup\centering
577 \@makefntext{%
578 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
579 \color@endgroup}}

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

3.9 Hyperxmp and hyperref


Adding hyperxmp
581 \RequirePackage{hyperxmp}

And now, hyperref


582 \let\@footnotemark@nolink\@footnotemark
583 \let\@footnotetext@nolink\@footnotetext
584 \RequirePackage[bookmarksnumbered,unicode]{hyperref}
585 \pdfstringdefDisableCommands{%
586 \def\addtocounter#1#2{}%
587 \def\unskip{}%
588 \def\textbullet{- }%
589 \def\textrightarrow{ -> }%
590 \def\footnotemark{}%
591 }
592 \urlstyle{rm}
593 \ifcase\ACM@format@nr
594 \relax % manuscript
595 \or % acmsmall
596 \or % acmlarge
597 \or % acmtog
598 \or % sigconf

48
599 \or % siggraph
600 \or % sigplan
601 \urlstyle{sf}
602 \or % sigchi
603 \or % sigchi-a
604 \urlstyle{sf}
605 \or % acmengage
606 \or % acmcp
607 \fi
608 \AtEndPreamble{%
609 \if@ACM@urlbreakonhyphens
610 \def\do@url@hyp{\do\-}%
611 \fi
612 \if@ACM@screen
613 \hypersetup{colorlinks,
614 linkcolor=ACMPurple,
615 citecolor=ACMPurple,
616 urlcolor=ACMDarkBlue,
617 filecolor=ACMDarkBlue}
618 \else
619 \hypersetup{hidelinks}
620 \fi
621 \hypersetup{pdflang={en},
622 pdfdisplaydoctitle}}
Bibliography mangling.
623 \if@ACM@natbib
624 \let\citeN\cite
625 \let\cite\citep
626 \let\citeANP\citeauthor
627 \let\citeNN\citeyearpar
628 \let\citeyearNP\citeyear
629 \let\citeNP\citealt
630 \DeclareRobustCommand\citeA
631 {\begingroup\NAT@swafalse
632 \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
633 \providecommand\newblock{}%
634 \else
635 \AtBeginDocument{%
636 \let\shortcite\cite%
637 \providecommand\citename[1]{#1}}
638 \fi
639 \newcommand\shortcite[2][]{%
640 \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}

\bibliographystyle The amsart package redefines \bibliographystyle since it prefers the AMS bibliogra-
phy style. We turn it back to the LATEX definition:
641 \def\bibliographystyle#1{%
642 \ifx\@begindocumenthook\@undefined\else
643 \expandafter\AtBeginDocument
644 \fi
645 {\if@filesw
646 \immediate\write\@auxout{\string\bibstyle{#1}}%
647 \fi}}

49
3.10 Other packages
Graphics and color.
648 \RequirePackage{graphicx}
649 \RequirePackage[prologue]{xcolor}

We define ACM colors according to [8]:


650 \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
651 \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
652 \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
653 \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
654 \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
655 \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
656 \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
657 \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}

Author-draft mode or sigchi-a mode


658 \if@ACM@authordraft
659 \RequirePackage{draftwatermark}
660 \SetWatermarkFontSize{0.5in}
661 \SetWatermarkColor[gray]{.9}
662 \SetWatermarkText{\parbox{12em}{\centering
663 Unpublished working draft.\\
664 Not for distribution.}}
665 \else
666 \if@ACM@sigchiamode
667 \if@ACM@nonacm\else
668 \RequirePackage{draftwatermark}
669 \SetWatermarkFontSize{0.5in}
670 \SetWatermarkColor[gray]{.9}
671 \SetWatermarkText{\parbox{12em}{\centering
672 Legacy document. \\
673 Not for publication in an ACM venue}}
674 \fi
675 \fi
676 \fi

3.11 Paper size and paragraphing


We use geometry for dimensions. Note that the present margins do not depend
on the font size option—we might need to change this. See https://github.com/
borisveytsman/acmart/issues/5#issuecomment-272881329.
677 \RequirePackage{geometry}
678 \ifcase\ACM@format@nr
679 \relax % manuscript
680 \geometry{letterpaper,head=13pt,
681 marginparwidth=6pc,heightrounded}%
682 \or % acmsmall
683 \geometry{twoside=true,
684 includeheadfoot, head=13pt, foot=2pc,
685 paperwidth=6.75in, paperheight=10in,
686 top=58pt, bottom=44pt, inner=46pt, outer=46pt,
687 marginparwidth=2pc,heightrounded
688 }%

50
689 \or % acmlarge
690 \geometry{twoside=true, head=13pt, foot=2pc,
691 paperwidth=8.5in, paperheight=11in,
692 includeheadfoot,
693 top=78pt, bottom=114pt, inner=81pt, outer=81pt,
694 marginparwidth=4pc,heightrounded
695 }%
696 \or % acmtog
697 \geometry{twoside=true, head=13pt, foot=2pc,
698 paperwidth=8.5in, paperheight=11in,
699 includeheadfoot, columnsep=24pt,
700 top=52pt, bottom=75pt, inner=52pt, outer=52pt,
701 marginparwidth=2pc,heightrounded
702 }%
703 \or % sigconf
704 \geometry{twoside=true, head=13pt,
705 paperwidth=8.5in, paperheight=11in,
706 includeheadfoot, columnsep=2pc,
707 top=57pt, bottom=73pt, inner=54pt, outer=54pt,
708 marginparwidth=2pc,heightrounded
709 }%
710 \or % siggraph
711 \geometry{twoside=true, head=13pt,
712 paperwidth=8.5in, paperheight=11in,
713 includeheadfoot, columnsep=2pc,
714 top=57pt, bottom=73pt, inner=54pt, outer=54pt,
715 marginparwidth=2pc,heightrounded
716 }%
717 \or % sigplan
718 \geometry{twoside=true, head=13pt,
719 paperwidth=8.5in, paperheight=11in,
720 includeheadfoot=false, columnsep=2pc,
721 top=1in, bottom=1in, inner=0.75in, outer=0.75in,
722 marginparwidth=2pc,heightrounded
723 }%
724 \or % sigchi
725 \geometry{twoside=true, head=13pt,
726 paperwidth=8.5in, paperheight=11in,
727 includeheadfoot, columnsep=2pc,
728 top=66pt, bottom=73pt, inner=54pt, outer=54pt,
729 marginparwidth=2pc,heightrounded
730 }%
731 \or % sigchi-a
732 \geometry{twoside=false, head=13pt,
733 paperwidth=11in, paperheight=8.5in,
734 includeheadfoot, marginparsep=72pt,
735 marginparwidth=170pt, columnsep=20pt,
736 top=72pt, bottom=72pt, left=314pt, right=72pt
737 }%
738 \@mparswitchfalse
739 \reversemarginpar
740 \or % acmengage
741 \geometry{twoside=true, head=13pt,
742 paperwidth=8.5in, paperheight=11in,

51
743 includeheadfoot, columnsep=2pc,
744 top=57pt, bottom=73pt, inner=54pt, outer=54pt,
745 marginparwidth=2pc,heightrounded
746 }%
747 \or % acmcp
748 \geometry{twoside=true,
749 includeheadfoot, head=13pt, foot=2pc,
750 paperwidth=6.75in, paperheight=10in,
751 top=58pt, bottom=44pt, inner=46pt, outer=46pt,
752 marginparwidth=2pc,heightrounded
753 }%
754 \fi

\parindent Paragraphing
\parskip 755 \setlength\parindent{10\p@}
756 \setlength\parskip{\z@}
757 \ifcase\ACM@format@nr
758 \relax % manuscript
759 \or % acmsmall
760 \or % acmlarge
761 \or % acmtog
762 \setlength\parindent{9\p@}%
763 \or % sigconf
764 \or % siggraph
765 \or % sigplan
766 \or % sigchi
767 \or % sigchi-a
768 \or % acmengage
769 \or % acmcp
770 \fi

\normalparindent The amsart package 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 com-
mand. We set \normalparindent to the value of \parindent as selected by acmart for
consistent paragraph indents.
771 \setlength\normalparindent{\parindent}

Footnotes require some consideration. We have several layers of footnotes: front-


matter footnotes, “regular” footnotes and the special insert for the bibstrip. In the old
ACM classes, the 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 the bibstrip from the rest of the paper. It is a full
width rule.
772 \def\copyrightpermissionfootnoterule{\kern-3\p@
773 \hrule \@width \columnwidth \kern 2.6\p@}

774 \RequirePackage{manyfoot}
775 \SelectFootnoteRule[2]{copyrightpermission}
776 \DeclareNewFootnote{authorsaddresses}
777 \SelectFootnoteRule[2]{copyrightpermission}
778 \DeclareNewFootnote{copyrightpermission}

52
\footnoterule Tschichold’s rules:
779 \def\footnoterule{\kern-3\p@
780 \hrule \@width 4pc \kern 2.6\p@}

\endminipage We do not use footnote rules in minipages


781 \def\endminipage{%
782 \par
783 \unskip
784 \ifvoid\@mpfootins\else
785 \vskip\skip\@mpfootins
786 \normalcolor
787 \unvbox\@mpfootins
788 \fi
789 \@minipagefalse
790 \color@endgroup
791 \egroup
792 \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}

\@textbottom Add some stretch according to David Carlisle’s advice at http://tex.stackexchange.


com/a/62318/5522
793 \def\@textbottom{\vskip \z@ \@plus 1pt}
794 \let\@texttop\relax

In two-column layouts, force both columns to be the same height by inserting extra
internal vertical space to fill out the page.
795 \ifcase\ACM@format@nr
796 \relax % manuscript
797 \or % acmsmall
798 \or % acmlarge
799 \or % acmtog
800 \flushbottom
801 \or % sigconf
802 \flushbottom
803 \or % siggraph
804 \flushbottom
805 \or % sigplan
806 \flushbottom
807 \or % sigchi
808 \flushbottom
809 \or % sigchi-a
810 \or % acmengage
811 \flushbottom
812 \or % acmcp
813 \flushbottom
814 \fi

3.12 Fonts
Somehow PDFTeX and XeTeX require different incantations to make a PDF compliant
with the current Acrobat bugs. Xpdf is much better.
The code below is by Ross Moore.
815 \ifPDFTeX
816 \input{glyphtounicode}

53
817 \pdfglyphtounicode{f_f}{FB00}
818 \pdfglyphtounicode{f_f_i}{FB03}
819 \pdfglyphtounicode{f_f_l}{FB04}
820 \pdfglyphtounicode{f_i}{FB01}
821 \pdfglyphtounicode{t_t}{0074 0074}
822 \pdfglyphtounicode{f_t}{0066 0074}
823 \pdfglyphtounicode{T_h}{0054 0068}
824 \pdfgentounicode=1
825 \RequirePackage{cmap}
826 \fi

\if@ACM@newfonts Whether we load the new fonts


827 \newif\if@ACM@newfonts
828 \@ACM@newfontstrue
829 \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
830 have the libertine package installed. Please upgrade your
831 TeX}\@ACM@newfontsfalse}
832 \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
833 have the inconsolata (zi4.sty) package installed. Please upgrade your
834 TeX}\@ACM@newfontsfalse}
835 \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
836 have the newtxmath package installed. Please upgrade your
837 TeX}\@ACM@newfontsfalse}

We use Libertine throughout.


838 \if@ACM@newfonts
839 \RequirePackage[T1]{fontenc}
840 % Note that the order in which packages are loaded matters,
841 % and the correct order depends on the LaTeX engine used.
842 % See https://github.com/borisveytsman/acmart/issues/402
843 % and https://github.com/borisveytsman/acmart/issues/410
844 \ifxetex
845 \RequirePackage[libertine]{newtxmath}
846 \RequirePackage[tt=false]{libertine}
847 \setmonofont[StylisticSet=3]{inconsolata}
848 \else
849 \ifluatex
850 \RequirePackage[libertine]{newtxmath}
851 \RequirePackage[tt=false]{libertine}
852 \setmonofont[StylisticSet=3]{inconsolata}
853 \else
854 \RequirePackage[tt=false, type1=true]{libertine}
855 \RequirePackage[varqu]{zi4}
856 \RequirePackage[libertine]{newtxmath}
857 \fi
858 \fi
859 \fi

\liningnums Libertine defines \liningnums, which makes fontspec unhappy. While we do not use
fontspec, some users do.
860 \let\liningnums\@undefined
861 \AtEndPreamble{%
862 \DeclareTextFontCommand{\liningnums}{\libertineLF}}

54
The SIGCHI extended abstracts are sans serif:
863 \if@ACM@sigchiamode
864 \renewcommand{\familydefault}{\sfdefault}
865 \fi

3.13 Image descriptions


\if@Description@present A local switch: whether there is a description in the given figure
866 \newif\if@Description@present
867 \@Description@presenttrue

\if@undescribed@images A global switch whether some images were not described


868 \newif\if@undescribed@images
869 \@undescribed@imagesfalse

\Description The Description macro right now just sets switches


870 \newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces}

The global warning


871 \AtEndDocument{\if@undescribed@images
872 \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi}
Hooks for figures and tables. We also patch algorithm and algorithm* in case
somebody uses them.
873 \AtBeginEnvironment{figure}{\@Description@presentfalse
874 \let\@vspace\@vspace@orig
875 \let\@vspacer\@vspacer@orig}
876 \AtBeginEnvironment{figure*}{\@Description@presentfalse
877 \let\@vspace\@vspace@orig
878 \let\@vspacer\@vspacer@orig}
879 \AtEndEnvironment{figure}{\if@Description@present\else
880 \global\@undescribed@imagestrue
881 \ClassWarning{\@classname}{A possible image without description}\fi}
882 \AtEndEnvironment{figure*}{\if@Description@present\else
883 \global\@undescribed@imagestrue
884 \ClassWarning{\@classname}{A possible image without description}\fi}
885 \AtBeginEnvironment{table}{\let\@vspace\@vspace@orig
886 \let\@vspacer\@vspacer@orig}
887 \AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig
888 \let\@vspacer\@vspacer@orig}
889 \AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig
890 \let\@vspacer\@vspacer@orig}
891 \AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig
892 \let\@vspacer\@vspacer@orig}
893 \AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig
894 \let\@vspacer\@vspacer@orig}
895 \AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig
896 \let\@vspacer\@vspacer@orig}
897 \AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig
898 \let\@vspacer\@vspacer@orig}
899 \AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig
900 \let\@vspacer\@vspacer@orig}
901 \AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig

55
902 \let\@vspacer\@vspacer@orig}
903 \AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig
904 \let\@vspacer\@vspacer@orig}
905

3.14 Floats
We use the caption package
906 \RequirePackage{caption, float}
907 \captionsetup[table]{position=top}
908 \if@ACM@journal
909 \captionsetup{labelfont={sf, small},
910 textfont={sf, small}, margin=\z@}
911 \captionsetup[figure]{name={Fig.}}
912 \else
913 \captionsetup{labelfont={bf},
914 textfont={bf}, labelsep=colon, margin=\z@}
915 \ifcase\ACM@format@nr
916 \relax % manuscript
917 \or % acmsmall
918 \or % acmlarge
919 \or % acmtog
920 \or % sigconf
921 \or % siggraph
922 \captionsetup{textfont={it}}
923 \or % sigplan
924 \captionsetup{labelfont={bf},
925 textfont={normalfont}, labelsep=period, margin=\z@}
926 \or % sigchi
927 \captionsetup[figure]{labelfont={bf, small},
928 textfont={bf, small}}
929 \captionsetup[table]{labelfont={bf, small},
930 textfont={bf, small}}
931 \or % sigchi-a
932 \captionsetup[figure]{labelfont={bf, small},
933 textfont={bf, small}}
934 \captionsetup[table]{labelfont={bf, small},
935 textfont={bf, small}}
936 \or % acmengage
937 \or % acmcp
938 \fi
939 \fi

sidebar The sidebar environment:


940 \newfloat{sidebar}{}{sbar}
941 \floatname{sidebar}{Sidebar}
942 \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}

\@sidebar The processing of the saved text


943 \long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig
944 \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}%
945 \marginpar{\small#1}\egroup}

56
marginfigure The marginfigure environment:
946 \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}

\@marginfigure The processing of the saved text


947 \long\def\@marginfigure#1{\bgroup
948 \let\@vspace\@vspace@orig
949 \let\@vspacer\@vspacer@orig
950 \captionsetup{type=figure}%
951 \marginpar{\@Description@presentfalse\centering
952 \small#1\if@Description@present\else
953 \global\@undescribed@imagestrue
954 \ClassWarning{\@classname}{A possible image without description}
955 \fi}%
956 \egroup}

margintable The margintable environment:


957 \newenvironment{margintable}{\Collect@Body\@margintable}{}

\@margintable The processing of the saved text


958 \long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig
959 \let\@vspacer\@vspacer@orig\captionsetup{type=table}%
960 \marginpar{\centering\small#1}\egroup}

SIGCHI extended abstracts provide 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
961 \newdimen\fulltextwidth
962 \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)
963 \if@ACM@sigchiamode
964 \def\@dblfloat{\bgroup\let\@vspace\@vspace@orig
965 \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth
966 \let\@endfloatbox\@endwidefloatbox
967 \def\@fpsadddefault{\def\@fps{tp}}%
968 \@float}
969 \fi

\end@dblfloat And the end. Just adding a \bgroup.


970 \if@ACM@sigchiamode
971 \def\end@dblfloat{%
972 \end@float\egroup}
973 \fi

\@endwidefloatbox This is the end of a wide box—we basically move everything to the left
974 \def\@endwidefloatbox{%
975 \par\vskip\z@skip
976 \@minipagefalse
977 \outer@nobreak
978 \egroup
979 \color@endbox

57
980 \global\setbox\@currbox=\vbox{\moveleft
981 \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
982 \wd\@currbox=\textwidth
983 }

3.15 Lists
984 \ifcase\ACM@format@nr
985 \relax % manuscript
986 \or % acmsmall
987 \or % acmlarge
988 \or % acmtog
989 \or % sigconf
990 \or % siggraph
991 \or % sigplan
992 \def\labelenumi{\theenumi.}
993 \def\labelenumii{\theenumii.}
994 \def\labelenumiii{\theenumiii.}
995 \def\labelenumiv{\theenumiv.}
996 \or % sigchi
997 \or % sigchi-a
998 \or % acmengage
999 \or % acmcp
1000 \fi

The AMS uses generous margins for lists. Note that amsart defines \leftmargin
values for list levels at the beginning of the document, so we must redefine them in the
same manner. Also, note that amsart redefines the enumerate and itemize environ-
ments with a \makelabel command that uses \llap, so the \labelwidth value is (effec-
tively) irrelevant; nonetheless, we follow amsart and set \labelwidth to \leftmargin
minus \labelsep.
1001 \newdimen\@ACM@labelwidth
1002 \AtBeginDocument{%
1003 \setlength\labelsep{4pt}
1004 \setlength{\@ACM@labelwidth}{6.5pt}
1005
1006 %% First-level list: when beginning after the first line of an
1007 %% indented paragraph or ending before an indented paragraph, labels
1008 %% should not hang to the left of the preceding/following text.
1009 \setlength\leftmargini{\z@}
1010 \addtolength\leftmargini{\parindent}
1011 \addtolength\leftmargini{2\labelsep}
1012 \addtolength\leftmargini{\@ACM@labelwidth}
1013
1014 %% Second-level and higher lists.
1015 \setlength\leftmarginii{\z@}
1016 \addtolength\leftmarginii{0.5\labelsep}
1017 \addtolength\leftmarginii{\@ACM@labelwidth}
1018 \setlength\leftmarginiii{\leftmarginii}
1019 \setlength\leftmarginiv{\leftmarginiii}
1020 \setlength\leftmarginv{\leftmarginiv}
1021 \setlength\leftmarginvi{\leftmarginv}
1022 \@listi}
1023 \newskip\listisep

58
1024 \listisep\smallskipamount
1025 \def\@listI{\leftmargin\leftmargini
1026 \labelwidth\leftmargini \advance\labelwidth-\labelsep
1027 \listparindent\z@
1028 \topsep\listisep}
1029 \let\@listi\@listI
1030 \def\@listii{\leftmargin\leftmarginii
1031 \labelwidth\leftmarginii \advance\labelwidth-\labelsep
1032 \topsep\z@skip}
1033 \def\@listiii{\leftmargin\leftmarginiii
1034 \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
1035 \def\@listiv{\leftmargin\leftmarginiv
1036 \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
1037 \def\@listv{\leftmargin\leftmarginv
1038 \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
1039 \def\@listvi{\leftmargin\leftmarginvi
1040 \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
\descriptionlabel We do not use a colon by default like amsart does:
1041 \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}

\description Make the description environment indentation consistent with that of the itemize
and enumerate environments.
1042 \renewenvironment{description}{\list{}{%
1043 \labelwidth\@ACM@labelwidth
1044 \let\makelabel\descriptionlabel}%
1045 }{
1046 \endlist
1047 }
1048 \let\enddescription=\endlist % for efficiency

3.16 Top-matter data


\if@ACM@maketitle@typeset The switch to check whether \maketitle is already typeset. It is initally false, and
setting top matter when it is true is wrong.
1049 \newif\if@ACM@maketitle@typeset
1050 \@ACM@maketitle@typesetfalse

We use the xkeyval interface to define journal titles and the relevant information
1051 \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
1052 ACMJCSS,%
1053 CIE,%
1054 CSUR,%
1055 DGOV,%
1056 DLT,%
1057 DTRAP,%
1058 FAC,%
1059 GAMES,%
1060 HEALTH,%
1061 IMWUT,%
1062 JACM,%
1063 JATS,%
1064 JDIQ,%
1065 JDS,%

59
1066 JEA,%
1067 JERIC,%
1068 JETC,%
1069 JOCCH,%
1070 JRC,%
1071 PACMCGIT,%
1072 PACMHCI,%
1073 PACMNET,%
1074 PACMPL,%
1075 POMACS,%
1076 TAAS,%
1077 TACCESS,%
1078 TACO,%
1079 TALG,%
1080 TALLIP,%
1081 TAP,%
1082 TCPS,%
1083 TDS,%
1084 TEAC,%
1085 TECS,%
1086 TELO,%
1087 THRI,%
1088 TIIS,%
1089 TIOT,%
1090 TISSEC,%
1091 TIST,%
1092 TKDD,%
1093 TMIS,%
1094 TOCE,%
1095 TOCHI,%
1096 TOCL,%
1097 TOCS,%
1098 TOCT,%
1099 TODAES,%
1100 TODS,%
1101 TOG,%
1102 TOIS,%
1103 TOIT,%
1104 TOMACS,%
1105 TOMM,%
1106 TOMPECS,%
1107 TOMS,%
1108 TOPC,%
1109 TOPS,%
1110 TOPLAS,%
1111 TORS,%
1112 TOS,%
1113 TOSEM,%
1114 TOSN,%
1115 TQC,%
1116 TRETS,%
1117 TSAS,%
1118 TSC,%
1119 TSLP,%

60
1120 TWEB,%
1121 FACMP%
1122 }{%
1123 \ifcase\@journalCode@nr
1124 \relax % ACMJCSS
1125 \def\@journalName{ACM Journal on Computing and Sustainable Societies}%
1126 \def\@journalNameShort{ACM J. Comput. Sustain. Soc.}%
1127 \def\@permissionCodeOne{2834-5533}%
1128 \or % CIE
1129 \def\@journalName{ACM Computers in Entertainment}%
1130 \def\@journalNameShort{ACM Comput. Entertain.}%
1131 \def\@permissionCodeOne{1544-3574}%
1132 \or % CSUR
1133 \def\@journalName{ACM Computing Surveys}%
1134 \def\@journalNameShort{ACM Comput. Surv.}%
1135 \def\@permissionCodeOne{0360-0300}%
1136 \or % DGOV
1137 \def\@journalName{Digital Government: Research and Practice}%
1138 \def\@journalNameShort{Digit. Gov. Res. Pract.}%
1139 \def\@permissionCodeOne{2639-0175}%
1140 \or % DLT
1141 \def\@journalName{Distributed Ledger Technologies: Research and Practice}%
1142 \def\@journalNameShort{Distrib. Ledger Technol.}%
1143 \def\@permissionCodeOne{2769-6472}%
1144 \or % DTRAP
1145 \def\@journalName{Digital Threats: Research and Practice}%
1146 \def\@journalNameShort{Digit. Threat. Res. Pract.}%
1147 \def\@permissionCodeOne{2576-5337}%
1148 \or % FAC
1149 \def\@journalName{Formal Aspects of Computing}%
1150 \def\@journalNameShort{Form. Asp. Comput.}%
1151 \def\@permissionCodeOne{0934-5043}%
1152 \def\@permissionCodeTwo{1433-299X}%
1153 \or % GAMES
1154 \def\@journalName{ACM Games: Research and Practice}%
1155 \def\@journalNameShort{ACM Games}%
1156 \def\@permissionCodeOne{2832-5516}%
1157 \or % HEALTH
1158 \def\@journalName{ACM Transactions on Computing for Healthcare}%
1159 \def\@journalNameShort{ACM Trans. Comput. Healthcare}%
1160 \def\@permissionCodeOne{2637-8051}%
1161 \or % IMWUT
1162 \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
1163 Wearable and Ubiquitous Technologies}%
1164 \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
1165 \def\@permissionCodeOne{2474-9567}%
1166 \@ACM@screentrue
1167 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1168 \or % JACM
1169 \def\@journalName{Journal of the ACM}%
1170 \def\@journalNameShort{J. ACM}%
1171 \def\@permissionCodeOne{0004-5411}%
1172 \or % JATS
1173 \def\@journalName{Journal on Autonomous Transportation Systems}%

61
1174 \def\@journalNameShort{ACM J. Auton. Transport. Syst.}%
1175 \def\@permissionCodeOne{2833-0528}%
1176 \or % JDIQ
1177 \def\@journalName{ACM Journal of Data and Information Quality}%
1178 \def\@journalNameShort{ACM J. Data Inform. Quality}%
1179 \def\@permissionCodeOne{1936-1955}%
1180 \or % JDS
1181 \def\@journalName{ACM/JMS Journal of Data Science}%
1182 \def\@journalNameShort{ACM/IMS J. Data Sci.}%
1183 \def\@permissionCodeOne{2831-3194}%
1184 \def\@permissionCodeTwo{2831-3194}%
1185 \or % JEA
1186 \def\@journalName{ACM Journal of Experimental Algorithmics}%
1187 \def\@journalNameShort{ACM J. Exp. Algor.}%
1188 \def\@permissionCodeOne{1084-6654}%
1189 \or % JERIC
1190 \def\@journalName{ACM Journal of Educational Resources in Computing}%
1191 \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
1192 \def\@permissionCodeOne{1073-0516}%
1193 \or % JETC
1194 \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
1195 \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
1196 \def\@permissionCodeOne{1550-4832}%
1197 \or % JOCCH
1198 \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
1199 \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
1200 \def\@permissionCodeOne{1556-4673}%
1201 \def\@permissionCodeTwo{1556-4711}%
1202 \or % JRC
1203 \def\@journalName{ACM Journal on Responsible Computing}%
1204 \def\@journalNameShort{ACM J. Responsib. Comput.}%
1205 \def\@permissionCodeOne{2832-0565}%
1206 \or % PACMCGIT
1207 \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}%
1208 \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}%
1209 \def\@permissionCodeOne{2577-6193}%
1210 \@ACM@screentrue
1211 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1212 \or % PACMHCI
1213 \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
1214 \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
1215 \def\@permissionCodeOne{2573-0142}%
1216 \@ACM@screentrue
1217 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1218 \or % PACMNET
1219 \def\@journalName{Proceedings of the ACM on Networkng}%
1220 \def\@journalNameShort{Proc. ACM Netw.}%
1221 \def\@permissionCodeOne{2834-5509}%
1222 \or % PACMPL
1223 \def\@journalName{Proceedings of the ACM on Programming Languages}%
1224 \def\@journalNameShort{Proc. ACM Program. Lang.}%
1225 \def\@permissionCodeOne{2475-1421}%
1226 \@ACM@screentrue
1227 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%

62
1228 \or % POMACS
1229 \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
1230 \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
1231 \def\@permissionCodeOne{2476-1249}%
1232 \@ACM@screentrue
1233 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
1234 \or % TAAS
1235 \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
1236 \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
1237 \def\@permissionCodeOne{1556-4665}%
1238 \or % TACCESS
1239 \def\@journalName{ACM Transactions on Accessible Computing}%
1240 \def\@journalNameShort{ACM Trans. Access. Comput.}%
1241 \def\@permissionCodeOne{1936-7228}%
1242 \or % TACO
1243 \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
1244 \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
1245 \def\@permissionCodeOne{1544-3566}%
1246 \def\@permissionCodeTwo{1544-3973}%
1247 \or % TALG
1248 \def\@journalName{ACM Transactions on Algorithms}%
1249 \def\@journalNameShort{ACM Trans. Algor.}%
1250 \def\@permissionCodeOne{1549-6325}%
1251 \or % TALLIP
1252 \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
1253 \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
1254 \def\@permissionCodeOne{2375-4699}%
1255 \or % TAP
1256 \def\@journalName{ACM Transactions on Applied Perception}%
1257 \def\@journalNameShort{ACM Trans. Appl. Percept.}%
1258 \def\@permissionCodeOne{1544-3558}%
1259 \or % TCPS
1260 \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
1261 \def\@journalNameShort{ACM Trans. Cyber-Phys. Syst.}%
1262 \def\@permissionCodeOne{2378-962X}%
1263 \or % TDS
1264 \def\@journalName{ACM/IMS Transactions on Data Science}%
1265 \def\@journalNameShort{ACM/IMS Trans. Data Sci.}%
1266 \def\@permissionCodeOne{2577-3224}%
1267 \or % TEAC
1268 \def\@journalName{ACM Transactions on Economics and Computation}%
1269 \def\@journalNameShort{ACM Trans. Econ. Comput.}%
1270 \def\@permissionCodeOne{2167-8375}%
1271 \or % TECS
1272 \def\@journalName{ACM Transactions on Embedded Computing Systems}%
1273 \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
1274 \def\@permissionCodeOne{1539-9087}%
1275 \or % TELO
1276 \def\@journalName{ACM Transactions on Evolutionary Learning}%
1277 \def\@journalNameShort{ACM Trans. Evol. Learn.}%
1278 \def\@permissionCodeOne{2688-3007}%
1279 \or % THRI
1280 \def\@journalName{ACM Transactions on Human-Robot Interaction}%
1281 \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%

63
1282 \def\@permissionCodeOne{2573-9522}%
1283 \or % TIIS
1284 \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
1285 \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
1286 \def\@permissionCodeOne{2160-6455}%
1287 \or % TIOT
1288 \def\@journalName{ACM Transactions on Internet of Things}%
1289 \def\@journalNameShort{ACM Trans. Internet Things}%
1290 \def\@permissionCodeOne{2577-6207}%
1291 \or % TISSEC
1292 \def\@journalName{ACM Transactions on Information and System Security}%
1293 \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
1294 \def\@permissionCodeOne{1094-9224}%
1295 \or % TIST
1296 \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
1297 \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
1298 \def\@permissionCodeOne{2157-6904}%
1299 \or % TKDD
1300 \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
1301 \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
1302 \def\@permissionCodeOne{1556-4681}%
1303 \or % TMIS
1304 \def\@journalName{ACM Transactions on Management Information Systems}%
1305 \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
1306 \def\@permissionCodeOne{2158-656X}%
1307 \or % TOCE
1308 \def\@journalName{ACM Transactions on Computing Education}%
1309 \def\@journalNameShort{ACM Trans. Comput. Educ.}%
1310 \def\@permissionCodeOne{1946-6226}%
1311 \or % TOCHI
1312 \def\@journalName{ACM Transactions on Computer-Human Interaction}%
1313 \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
1314 \def\@permissionCodeOne{1073-0516}%
1315 \or % TOCL
1316 \def\@journalName{ACM Transactions on Computational Logic}%
1317 \def\@journalNameShort{ACM Trans. Comput. Logic}%
1318 \def\@permissionCodeOne{1529-3785}%
1319 \or % TOCS
1320 \def\@journalName{ACM Transactions on Computer Systems}%
1321 \def\@journalNameShort{ACM Trans. Comput. Syst.}%
1322 \def\@permissionCodeOne{0734-2071}%
1323 \or % TOCT
1324 \def\@journalName{ACM Transactions on Computation Theory}%
1325 \def\@journalNameShort{ACM Trans. Comput. Theory}%
1326 \def\@permissionCodeOne{1942-3454}%
1327 \or % TODAES
1328 \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
1329 \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
1330 \def\@permissionCodeOne{1084-4309}%
1331 \or % TODS
1332 \def\@journalName{ACM Transactions on Database Systems}%
1333 \def\@journalNameShort{ACM Trans. Datab. Syst.}%
1334 \def\@permissionCodeOne{0362-5915}%
1335 \or % TOG

64
1336 \def\@journalName{ACM Transactions on Graphics}%
1337 \def\@journalNameShort{ACM Trans. Graph.}%
1338 \def\@permissionCodeOne{0730-0301}
1339 \or % TOIS
1340 \def\@journalName{ACM Transactions on Information Systems}%
1341 \def\@journalNameShort{ACM Trans. Inf. Syst.}%
1342 \def\@permissionCodeOne{1046-8188}%
1343 \or % TOIT
1344 \def\@journalName{ACM Transactions on Internet Technology}%
1345 \def\@journalNameShort{ACM Trans. Internet Technol.}%
1346 \def\@permissionCodeOne{1533-5399}%
1347 \or % TOMACS
1348 \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
1349 \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
1350 \def\@permissionCodeOne{1049-3301}%
1351 \def\@permissionCodeTwo{1558-1195}%
1352 \or % TOMM
1353 \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
1354 \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
1355 \def\@permissionCodeOne{1551-6857}%
1356 \def\@permissionCodeTwo{1551-6865}%
1357 \or % TOMPECS
1358 \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
1359 \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
1360 \def\@permissionCodeOne{2376-3639}%
1361 \or % TOMS
1362 \def\@journalName{ACM Transactions on Mathematical Software}%
1363 \def\@journalNameShort{ACM Trans. Math. Softw.}%
1364 \def\@permissionCodeOne{0098-3500}%
1365 \or % TOPC
1366 \def\@journalName{ACM Transactions on Parallel Computing}%
1367 \def\@journalNameShort{ACM Trans. Parallel Comput.}%
1368 \def\@permissionCodeOne{2329-4949}%
1369 \def\@permissionCodeTwo{2329-4957}%
1370 \or % TOPS
1371 \def\@journalName{ACM Transactions on Privacy and Security}%
1372 \def\@journalNameShort{ACM Trans. Priv. Sec.}%
1373 \def\@permissionCodeOne{2471-2566}%
1374 \or % TOPLAS
1375 \def\@journalName{ACM Transactions on Programming Languages and Systems}%
1376 \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
1377 \def\@permissionCodeOne{0164-0925}%
1378 \or % TORS
1379 \def\@journalName{ACM Transactions on Recommender Systems}%
1380 \def\@journalNameShort{ACM Trans. Recomm. Syst.}%
1381 \def\@permissionCodeOne{2770-6699}%
1382 \or % TOS
1383 \def\@journalName{ACM Transactions on Storage}%
1384 \def\@journalNameShort{ACM Trans. Storage}%
1385 \def\@permissionCodeOne{1553-3077}%
1386 \or % TOSEM
1387 \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
1388 \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
1389 \def\@permissionCodeOne{1049-331X}%

65
1390 \or % TOSN
1391 \def\@journalName{ACM Transactions on Sensor Networks}%
1392 \def\@journalNameShort{ACM Trans. Sensor Netw.}%
1393 \def\@permissionCodeOne{1550-4859}%
1394 \or % TQC
1395 \def\@journalName{ACM Transactions on Quantum Computing}%
1396 \def\@journalNameShort{ACM Trans. Quantum Comput.}%
1397 \def\@permissionCodeOne{2643-6817}%
1398 \or % TRETS
1399 \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
1400 \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
1401 \def\@permissionCodeOne{1936-7406}%
1402 \or % TSAS
1403 \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
1404 \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
1405 \def\@permissionCodeOne{2374-0353}%
1406 \or % TSC
1407 \def\@journalName{ACM Transactions on Social Computing}%
1408 \def\@journalNameShort{ACM Trans. Soc. Comput.}%
1409 \def\@permissionCodeOne{2469-7818}%
1410 \or % TSLP
1411 \def\@journalName{ACM Transactions on Speech and Language Processing}%
1412 \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
1413 \def\@permissionCodeOne{1550-4875}%
1414 \or % TWEB
1415 \def\@journalName{ACM Transactions on the Web}%
1416 \def\@journalNameShort{ACM Trans. Web}%
1417 \def\@permissionCodeOne{1559-1131}%
1418 \else % FACMP, a dummy journal
1419 \def\@journalName{ACM Just Accepted}%
1420 \def\@journalNameShort{ACM Accepted}%
1421 \def\@permissionCodeOne{XXXX-XXXX}%
1422 \fi
1423 \ClassInfo{\@classname}{Using journal code \@journalCode}%
1424 }{%
1425 \ClassError{\@classname}{Incorrect journal #1}%
1426 }%

\acmJournal And the syntactic sugar around it


1427 \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}%
1428 \global\@ACM@journal@bibstriptrue}

The defaults:
1429 \def\@journalCode@nr{0}
1430 \def\@journalName{}%
1431 \def\@journalNameShort{\@journalName}%
1432 \def\@permissionCodeOne{XXXX-XXXX}%
1433 \def\@permissionCodeTwo{}%

\acmConference This is the conference command


1434 \newcommand\acmConference[4][]{%
1435 \gdef\acmConference@shortname{#1}%
1436 \gdef\acmConference@name{#2}%
1437 \gdef\acmConference@date{#3}%

66
1438 \gdef\acmConference@venue{#4}%
1439 \ifx\acmConference@shortname\@empty
1440 \gdef\acmConference@shortname{#2}%
1441 \fi
1442 \global\@ACM@journal@bibstripfalse
1443 }
1444 \if@ACM@journal\else
1445 \acmConference[Conference’17]{ACM Conference}{July 2017}{Washington,
1446 DC, USA}%
1447 \fi

\acmBooktitle The book title of the conference:


\@acmBooktitle 1448 \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
1449 \acmBooktitle{}
1450 \ifx\acmConference@name\@undefined\else
1451 \acmBooktitle{Proceedings of \acmConference@name
1452 \ifx\acmConference@name\acmConference@shortname\else
1453 \ (\acmConference@shortname)\fi}
1454 \fi

\@editorsAbbrev How to abbreviate editors


1455 \def\@editorsAbbrev{(Ed.)}

\@acmEditors The list of editors


1456 \def\@acmEditors{}

\editor Add a new editor to the list


1457 \def\editor#1{\ifx\@acmEditors\@empty
1458 \gdef\@acmEditors{#1}%
1459 \else
1460 \gdef\@editorsAbbrev{(Eds.)}%
1461 \g@addto@macro\@acmEditors{\and#1}%
1462 \fi}

\subtitle The subtitle macro


1463 \def\subtitle#1{\def\@subtitle{#1}}
1464 \subtitle{}

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

\num@authors The total number of authors


1467 \newcount\num@authors
1468 \num@authors=0\relax

\if@insideauthorgroup Whether we are continuing an author group


1469 \newif\if@insideauthorgroup
1470 \@insideauthorgroupfalse

\author Adding an author to the list of authors and addresses.


Note that we want to typeset the link to the author’s orcid if known. The problem
is, we know the orcid only after the author is entered. The trick is based on the idea

67
that \csname...\endcsname is \relax unless defined. Therefore we typeset authors by
the special macro \csname typeset@author\the\num@authors\endcsname, which is
defined by \orcid command.
1471 \renewcommand\author[2][]{%
1472 \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several
1473 authors in the same \string\author\space macro!}}{}%
1474 \global\advance\num@authors by 1\relax
1475 \if@insideauthorgroup\else
1476 \global\advance\num@authorgroups by 1\relax
1477 \global\@insideauthorgrouptrue
1478 \fi
1479 \ifx\addresses\@empty
1480 \if@ACM@anonymous
1481 \gdef\addresses{\@author{Anonymous Author(s)%
1482 \ifx\@acmSubmissionID\@empty\else\\Submission Id:
1483 \@acmSubmissionID\fi}}%
1484 \gdef\authors{Anonymous Author(s)}%
1485 \else
1486 \expandafter\gdef\expandafter\addresses\expandafter{%
1487 \expandafter\@author\expandafter{%
1488 \csname typeset@author\the\num@authors\endcsname{#2}}}%
1489 \gdef\authors{#2}%
1490 \fi
1491 \else
1492 \if@ACM@anonymous\else
1493 \expandafter\g@addto@macro\expandafter\addresses\expandafter{%
1494 \expandafter\and\expandafter\@author\expandafter{%
1495 \csname typeset@author\the\num@authors\endcsname{#2}}}%
1496 \g@addto@macro\authors{\and#2}%
1497 \fi
1498 \fi
1499 \if@ACM@anonymous
1500 \ifx\shortauthors\@empty
1501 \gdef\shortauthors{Anon.
1502 \ifx\@acmSubmissionID\@empty\else Submission Id:
1503 \@acmSubmissionID\fi}%
1504 \fi
1505 \else
1506 \def\@tempa{#1}%
1507 \ifx\@tempa\@empty
1508 \ifx\shortauthors\@empty
1509 \gdef\shortauthors{#2}%
1510 \else
1511 \g@addto@macro\shortauthors{\and#2}%
1512 \fi
1513 \else
1514 \ifx\shortauthors\@empty
1515 \gdef\shortauthors{#1}%
1516 \else
1517 \g@addto@macro\shortauthors{\and#1}%
1518 \fi
1519 \fi
1520 \fi}

68
\affiliation The macro \affiliation mimics \address from amsart. Note that it has an optional
argument, which we use differently from amsart.
1521 \newcommand{\affiliation}[2][]{%
1522 \global\@insideauthorgroupfalse
1523 \if@ACM@anonymous\else
1524 \g@addto@macro\addresses{\affiliation{#1}{#2}}%
1525 \fi}

@ACM@affiliation@obeypunctuation Whether to use the author’s punctuation (false by default, which adds American-style
address punctuation)
1526 \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
1527 [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}

\additionalaffiliation Additional affiliations go to footnotes


1528 \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}

\@additionalaffiliation Process \additionalaffiliation inside \authornote


1529 \def\@additionalaffiliation#1{\bgroup
1530 \def\position##1{\ignorespaces}%
1531 \def\institution##1{##1\ignorespaces}%
1532 \def\department{\@ifnextchar[{\@department}{\@department[]}}%
1533 \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
1534 \let\streetaddress\position
1535 \let\city\position
1536 \let\state\position
1537 \let\postcode\position
1538 \let\country\position
1539 Also with #1\unskip.\egroup}

\email The macro \email mimics \email from amsart. Again, it has an optional argument that
we do not currently need but keep for possible future use.
1540 \renewcommand{\email}[2][]{%
1541 \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several
1542 addresses in the same \string\email\space macro!}}{}%
1543 \if@ACM@anonymous\else
1544 \g@addto@macro\addresses{\email{#1}{#2}}%
1545 \fi}

\orcid We redefine the command to typeset the current author


1546 \def\orcid#1{\unskip\ignorespaces%
1547 \IfBeginWith{#1}{http}{%
1548 \expandafter\gdef\csname
1549 typeset@author\the\num@authors\endcsname##1{%
1550 \href{#1}{##1}}}{%
1551 \expandafter\gdef\csname
1552 typeset@author\the\num@authors\endcsname##1{%
1553 \href{https://orcid.org/#1}{##1}}}}

\authorsaddresses Setting up authors’ addresses


1554 \def\authorsaddresses#1{\def\@authorsaddresses{#1}}
1555 \authorsaddresses{\@mkauthorsaddresses}

69
\@mktranslatedkeywords We have two argument: the language to typeset keywords and the keywords.
1556 \newcommand\@mktranslatedkeywords[2]{\bgroup
1557 \selectlanguage{#1}%
1558 {\@specialsection{\keywordsname}%
1559 \noindent#2\par}\egroup}

\@titlenotes The title notes


1560 \def\@titlenotes{}

\titlenote Adding a note to the title


1561 \def\titlenote#1{%
1562 \g@addto@macro\@title{\footnotemark}%
1563 \if@ACM@anonymous
1564 \g@addto@macro\@titlenotes{%
1565 \stepcounter{footnote}\footnotetext{Title note}}%
1566 \else
1567 \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
1568 \fi}

\@subtitlenotes The subtitle notes


1569 \def\@subtitlenotes{}

\subtitlenote Adding a note to the subtitle


1570 \def\subtitlenote#1{%
1571 \g@addto@macro\@subtitle{\footnotemark}%
1572 \if@ACM@anonymous
1573 \g@addto@macro\@subtitlenotes{%
1574 \stepcounter{footnote}\footnotetext{Subtitle note}}%
1575 \else
1576 \g@addto@macro\@subtitlenotes{%
1577 \stepcounter{footnote}\footnotetext{#1}}%
1578 \fi}

\@authornotes The author notes


1579 \def\@authornotes{}

\authornote Adding a note to the author


1580 \def\authornote#1{%
1581 \if@ACM@anonymous\else
1582 \g@addto@macro\addresses{\@authornotemark}%
1583 \g@addto@macro\@authornotes{%
1584 \stepcounter{footnote}\footnotetext{#1}}%
1585 \fi}

\authornotemark Adding a footnote mark to the authors


1586 \newcommand\authornotemark[1][\relax]{%
1587 \ifx#1\relax\relax\relax
1588 \g@addto@macro\addresses{\@authornotemark}%
1589 \else
1590 \g@addto@macro\addresses{\@@authornotemark{#1}}%
1591 \fi}

70
\acmVolume The current volume
1592 \def\acmVolume#1{\def\@acmVolume{#1}}
1593 \acmVolume{1}

\acmNumber The current number


1594 \def\acmNumber#1{\def\@acmNumber{#1}}
1595 \acmNumber{1}

\acmArticle The current article


1596 \def\acmArticle#1{\def\@acmArticle{#1}}
1597 \acmArticle{}

\acmArticleSeq The sequence number


1598 \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
1599 \acmArticleSeq{\@acmArticle}

\acmYear The current year


1600 \def\acmYear#1{\def\@acmYear{#1}}
1601 \acmYear{\the\year}

\acmMonth The current month


1602 \def\acmMonth#1{\def\@acmMonth{#1}}
1603 \acmMonth{\the\month}

\@acmPubDate The publication date


1604 \def\@acmPubDate{\ifcase\@acmMonth\or
1605 January\or February\or March\or April\or May\or June\or
1606 July\or August\or September\or October\or November\or
1607 December\fi˜\@acmYear}

\acmPrice The price


1608 \def\acmPrice#1{\def\@acmPrice{#1}}
1609 \acmPrice{15.00}

\acmSubmissionID The submission ID


1610 \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
1611 \acmSubmissionID{}

\acmISBN The book ISBN


1612 \def\acmISBN#1{\def\@acmISBN{#1}}
1613 \acmISBN{978-x-xxxx-xxxx-x/YY/MM}

\acmDOI The paper DOI


1614 \def\acmDOI#1{\def\@acmDOI{#1}}
1615 \acmDOI{10.1145/nnnnnnn.nnnnnnn}

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

\@ACM@badge@width The width of the badge


1618 \newlength\@ACM@badge@width
1619 \setlength\@ACM@badge@width{5pc}

71
\@ACM@title@width The width of the badge
1620 \newlength\@ACM@title@width

\@ACM@badge@skip The space between the badge and the title


1621 \newlength\@ACM@badge@skip
1622 \setlength\@ACM@badge@skip{1pc}

\acmBadgeR Setting the right badge


1623 \newcommand\acmBadgeR[2][]{\@ACM@badgetrue
1624 \def\@acmBadgeR@url{#1}%
1625 \def\@acmBadgeR@image{#2}}
1626 \def\@acmBadgeR@url{}
1627 \def\@acmBadgeR@image{}

\acmBadgeL Setting the left badge


1628 \newcommand\acmBadgeL[2][]{\@ACM@badgetrue
1629 \def\@acmBadgeL@url{#1}%
1630 \def\@acmBadgeL@image{#2}}
1631 \def\@acmBadgeL@url{}
1632 \def\@acmBadgeL@image{}

\startPage The start page of the paper


1633 \def\startPage#1{\def\@startPage{#1}}
1634 \startPage{}

\terms Terms are obsolete. We use CCS now.


1635 \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
1636 obsolete. I am going to ignore it}}

\keywords Keywords are mostly obsolete. We use CCS now. Still it makes sense to keep them for
compatibility.
1637 \def\keywords#1{\def\@keywords{#1}}
1638 \let\@keywords\@empty

1639 \AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty
1640 \ifnum\getrefnumber{TotPages}>2\relax
1641 \ClassWarningNoLine{\@classname}{ACM keywords are mandatory
1642 for papers over two pages}%
1643 \fi\fi\fi}

abstract The amsart package puts abstract in a box. Since we do not know whether we will
use two-column mode, we prefer to save the text
1644 \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}

\@saveabstract And saving the abstract


1645 \long\def\@saveabstract#1{\if@ACM@maketitle@typeset
1646 \ClassError{\@classname}{Abstract must be defined before maketitle
1647 command. Please move it!}\fi
1648 \long\gdef\@abstract{#1}}
1649 \@saveabstract{}

\@lempty The long version of \@empty (to compare with \@abstract)


1650 \long\def\@lempty{}

72
\if@ACM@printccs Whether to print CCS
1651 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
1652 \if@ACM@printccs
1653 \ClassInfo{\@classname}{Printing CCS}%
1654 \else
1655 \ClassInfo{\@classname}{Suppressing CCS}%
1656 \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}

\if@ACM@printacmref Whether to print the ACM bibstrip


1657 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
1658 \if@ACM@printacmref
1659 \ClassInfo{\@classname}{Printing bibformat}%
1660 \else
1661 \ClassInfo{\@classname}{Suppressing bibformat}%
1662 \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}

1663 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else
1664 \ifnum\getrefnumber{TotPages}>1\relax
1665 \ClassWarningNoLine{\@classname}{%
1666 ACM reference format is mandatory \MessageBreak
1667 for papers over one page. \MessageBreak
1668 Please add printacmref=true to the \MessageBreak
1669 \string\settopmatter\space command.}%
1670 \fi\fi\fi}

\if@ACM@printfolios Whether to print folios


1671 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
1672 \if@ACM@printfolios
1673 \ClassInfo{\@classname}{Printing folios}%
1674 \else
1675 \ClassInfo{\@classname}{Suppressing folios}%
1676 \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}

\@ACM@authorsperrow The number of authors per row. 0 means use the default algorithm.
1677 \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
1678 \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
1679 #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
1680 numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}

\settopmatter The usual syntactic sugar


1681 \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}

Now the settings


1682 \settopmatter{printccs=true, printacmref=true}
1683 \if@ACM@manuscript
1684 \settopmatter{printfolios=true}
1685 \else
1686 \if@ACM@journal
1687 \settopmatter{printfolios=true}
1688 \else
1689 \settopmatter{printfolios=false}
1690 \fi
1691 \fi
1692 \settopmatter{authorsperrow=0}

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

\received The \received command


1694 \newcommand\received[2][]{\def\@tempa{#1}%
1695 \ifx\@tempa\@empty
1696 \ifx\@received\@empty
1697 \gdef\@received{Received #2}%
1698 \else
1699 \g@addto@macro{\@received}{; revised #2}%
1700 \fi
1701 \else
1702 \ifx\@received\@empty
1703 \gdef\@received{#1 #2}%
1704 \else
1705 \g@addto@macro{\@received}{; #1 #2}%
1706 \fi
1707 \fi}
1708 \AtEndDocument{%
1709 \ifx\@received\@empty\else
1710 \par\bigskip\noindent\small\normalfont\@received\par
1711 \fi}

\acmArticleType Article type. We set up the color.


1712 \define@choicekey+{ACM}{articletype}[\ACM@ArticleType\ACM@ArticleType@nr]{%
1713 Research,Review,Discussion,Invited,Position}[Review]{%
1714 \ifcase\ACM@ArticleType@nr
1715 \relax % Research
1716 \colorlet{@ACM@Article@color}{ACMBlue}%
1717 \or % Review
1718 \colorlet{@ACM@Article@color}{ACMOrange}%
1719 \or % Discussion
1720 \colorlet{@ACM@Article@color}{ACMGreen}%
1721 \or % Invited
1722 \colorlet{@ACM@Article@color}{ACMPurple}%
1723 \or % Position
1724 \colorlet{@ACM@Article@color}{ACMRed}%
1725 \fi
1726 }{%
1727 \ClassError{\@classname}{Article Type must be Research, Review,\MessageBreak
1728 Discussion, Invited, or Position}}
1729 \def\acmArticleType#1{\setkeys{ACM}{articletype=#1}}
1730 \newenvironment{@ACM@color@frame}{%
1731 \def\FrameCommand{\hspace*{-6.5pc}%
1732 \colorbox{@ACM@Article@color!10!white}}%
1733 \MakeFramed {\advance\hsize -6.5pc\relax\FrameRestore}}{\endMakeFramed}
1734 \if@ACM@acmcp
1735 \acmArticleType{Research}%
1736 \fi

\acmCodeLink The code link


1737 \def\acmCodeLink#1{%
1738 \ifx\@acmCodeDataLink\@empty
1739 \gdef\@acmCodeDataLink{\url{#1}}%

74
1740 \else
1741 \g@addto@macro{\@acmCodeDataLink}{\\ \url{#1}}%
1742 \fi}
1743 \def\@acmCodeDataLink{}

\acmDataLink The code link


1744 \let\acmDataLink\acmCodeLink

3.17 Concepts system


We exclude CCSXML stuff generated by the ACM system:
1745 \RequirePackage{comment}
1746 \excludecomment{CCSXML}

\@concepts This is the storage macro and counter for concepts


1747 \let\@concepts\@empty
1748 \newcounter{@concepts}

\ccsdesc The first argument is the significance, the second is the concept(s)
1749 \newcommand\ccsdesc[2][100]{%
1750 \ccsdesc@parse#1˜#2˜˜\ccsdesc@parse@end}

\ccsdesc@parse The parser of the expression Significance˜General˜Specific (we need textcomp for
\textrightarrow). Note that Specific can be empty!
1751 \def\textrightarrow{$\rightarrow$}
1752 \def\ccsdesc@parse#1˜#2˜#3˜{%
1753 \stepcounter{@concepts}%
1754 \expandafter\ifx\csname CCS@General@#2\endcsname\relax
1755 \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
1756 \textbf{#2}}%
1757 \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
1758 \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
1759 \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
1760 \csname CCS@Punctuation@#2\endcsname
1761 \csname CCS@Specific@#2\endcsname}%
1762 \fi
1763 \ifx#3\relax\relax\else
1764 \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
1765 \textrightarrow\ }%
1766 \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
1767 \addtocounter{@concepts}{-1}%
1768 \ifnum#1>499\textbf{#3}\else
1769 \ifnum#1>299\textit{#3}\else
1770 #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}%
1771 \fi
1772 \ccsdesc@parse@finish}

1773 \AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax
1774 \ifnum\getrefnumber{TotPages}>2\relax
1775 \ClassWarningNoLine{\@classname}{CCS concepts are mandatory
1776 for papers over two pages}%
1777 \fi\fi\fi}

\ccdesc@parse@finish Gobble everything to \ccsdesc@parse@end


1778 \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}

75
3.18 Copyright system
This is from acmcopyright.sty

\if@printcopyright Whether to print a copyright symbol


1779 \newif\if@printcopyright
1780 \@printcopyrighttrue

\if@printpermission Whether to print the permission block


1781 \newif\if@printpermission
1782 \@printpermissiontrue

\if@acmowned Whether the ACM owns the rights to the paper


1783 \newif\if@acmowned
1784 \@acmownedtrue

Keys:
1785 \define@choicekey*{ACM@}{acmcopyrightmode}[%
1786 \acm@copyrightinput\acm@copyrightmode]{none,%
1787 acmcopyright,acmlicensed,rightsretained,%
1788 usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
1789 licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
1790 iw3c2w3,iw3c2w3g,cc}{%
1791 \@printpermissiontrue
1792 \@printcopyrighttrue
1793 \@acmownedtrue
1794 \ifnum\acm@copyrightmode=0\relax % none
1795 \@printpermissionfalse
1796 \@printcopyrightfalse
1797 \@acmownedfalse
1798 \fi
1799 \ifnum\acm@copyrightmode=2\relax % acmlicensed
1800 \@acmownedfalse
1801 \fi
1802 \ifnum\acm@copyrightmode=3\relax % rightsretained
1803 \@acmownedfalse
1804 \AtBeginDocument{\acmPrice{}}%
1805 \fi
1806 \ifnum\acm@copyrightmode=4\relax % usgov
1807 \@printpermissiontrue
1808 \@printcopyrightfalse
1809 \@acmownedfalse
1810 \AtBeginDocument{\acmPrice{}}%
1811 \fi
1812 \ifnum\acm@copyrightmode=6\relax % cagov
1813 \@acmownedfalse
1814 \fi
1815 \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
1816 \@acmownedfalse
1817 \fi
1818 \ifnum\acm@copyrightmode=9\relax % licensedcagov
1819 \@acmownedfalse
1820 \fi
1821 \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed

76
1822 \@acmownedfalse
1823 \fi
1824 \ifnum\acm@copyrightmode=11\relax % othergov
1825 \@acmownedtrue
1826 \fi
1827 \ifnum\acm@copyrightmode=12\relax % licensedothergov
1828 \@acmownedfalse
1829 \fi
1830 \ifnum\acm@copyrightmode=13\relax % iw3c2w3
1831 \@acmownedfalse
1832 \AtBeginDocument{\acmPrice{}}%
1833 \fi
1834 \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
1835 \@acmownedfalse
1836 \AtBeginDocument{\acmPrice{}}%
1837 \fi
1838 \ifnum\acm@copyrightmode=15\relax % cc
1839 \@acmownedfalse
1840 \AtBeginDocument{\acmPrice{}}%
1841 \fi}

\setcopyright This is the syntactic sugar around setting keys.


1842 \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
1843 \setcopyright{acmcopyright}

\setcctype The type of Creative Commons license used


1844 \newcommand\setcctype[2][4.0]{%
1845 \def\ACM@cc@version{#1}%
1846 \def\ACM@cc@type{#2}}
1847 \setcctype{by}

\@copyrightowner Here is the owner of the copyright


1848 \def\@copyrightowner{%
1849 \ifcase\acm@copyrightmode\relax % none
1850 \or % acmcopyright
1851 Association for Computing Machinery.
1852 \or % acmlicensed
1853 Copyright held by the owner/author(s). Publication rights licensed to
1854 ACM\@.
1855 \or % rightsretained
1856 Copyright held by the owner/author(s).
1857 \or % usgov
1858 \or % usgovmixed
1859 Association for Computing Machinery.
1860 \or % cagov
1861 Crown in Right of Canada.
1862 \or %cagovmixed
1863 Association for Computing Machinery.
1864 \or %licensedusgovmixed
1865 Copyright held by the owner/author(s). Publication rights licensed to
1866 ACM\@.
1867 \or % licensedcagov
1868 Crown in Right of Canada. Publication rights licensed to
1869 ACM\@.

77
1870 \or %licensedcagovmixed
1871 Copyright held by the owner/author(s). Publication rights licensed to
1872 ACM\@.
1873 \or % othergov
1874 Association for Computing Machinery.
1875 \or % licensedothergov
1876 Copyright held by the owner/author(s). Publication rights licensed to
1877 ACM\@.
1878 \or % ic2w3www
1879 IW3C2 (International World Wide Web Conference Committee), published
1880 under Creative Commons CC-BY˜4.0 License.
1881 \or % ic2w3wwwgoogle
1882 IW3C2 (International World Wide Web Conference Committee), published
1883 under Creative Commons CC-BY-NC-ND˜4.0 License.
1884 \or % cc
1885 Copyright held by the owner/author(s).
1886 \fi}

\@formatdoi Print a clickable DOI


1887 \def\@formatdoi#1{\url{https://doi.org/#1}}

\@ACM@copyright@check@cc At present cC licenses can be used only for acmengage format or for non-acm stuff. This
macro checks whether the CC license is applicable and generates an error if not.
1888 \def\@ACM@copyright@check@cc{%
1889 \if@ACM@nonacm
1890 \ClassInfo{\@classname}{Using CC license with a non-acm
1891 material}%
1892 \else
1893 \if@ACM@engage
1894 \ClassInfo{\@classname}{Using CC license with ACM Enage
1895 material}%
1896 \else
1897 \ClassError{\@classname}{%
1898 Sorry, Creative Commons licenses are\MessageBreak
1899 currently not used with ACM publications\MessageBreak
1900 typeset by the authors}{Please use nonacm
1901 option or ACM Engage class to enable CC licenses}%
1902 \fi
1903 \fi}

\@copyrightpermission The canned permission block.


1904 \def\@copyrightpermission{%
1905 \ifcase\acm@copyrightmode\relax % none
1906 \or % acmcopyright
1907 Permission to make digital or hard copies of all or part of this
1908 work for personal or classroom use is granted without fee provided
1909 that copies are not made or distributed for profit or commercial
1910 advantage and that copies bear this notice and the full citation on
1911 the first page. Copyrights for components of this work owned by
1912 others than ACM must be honored. Abstracting with credit is
1913 permitted. To copy otherwise, or republish, to post on servers or to
1914 redistribute to lists, requires prior specific permission
1915 and\hspace*{.5pt}/or a fee. Request permissions from
1916 [email protected].

78
1917 \or % acmlicensed
1918 Permission to make digital or hard copies of all or part of this
1919 work for personal or classroom use is granted without fee provided
1920 that copies are not made or distributed for profit or commercial
1921 advantage and that copies bear this notice and the full citation on
1922 the first page. Copyrights for components of this work owned by
1923 others than the author(s) must be honored. Abstracting with credit
1924 is permitted. To copy otherwise, or republish, to post on servers
1925 or to redistribute to lists, requires prior specific permission
1926 and\hspace*{.5pt}/or a fee. Request permissions from
1927 [email protected].
1928 \or % rightsretained
1929 Permission to make digital or hard copies of part or all of this work
1930 for personal or classroom use is granted without fee provided that
1931 copies are not made or distributed for profit or commercial advantage
1932 and that copies bear this notice and the full citation on the first
1933 page. Copyrights for third-party components of this work must be
1934 honored. For all other uses, contact the
1935 owner\hspace*{.5pt}/author(s).
1936 \or % usgov
1937 This paper is authored by an employee(s) of the United States
1938 Government and is in the public domain. Non-exclusive copying or
1939 redistribution is allowed, provided that the article citation is
1940 given and the authors and agency are clearly identified as its
1941 source.
1942 \or % usgovmixed
1943 ACM acknowledges that this contribution was authored or co-authored
1944 by an employee, contractor, or affiliate of the United States
1945 government. As such, the United States government retains a
1946 nonexclusive, royalty-free right to publish or reproduce this
1947 article, or to allow others to do so, for government purposes only.
1948 \or % cagov
1949 This article was authored by employees of the Government of Canada.
1950 As such, the Canadian government retains all interest in the
1951 copyright to this work and grants to ACM a nonexclusive,
1952 royalty-free right to publish or reproduce this article, or to allow
1953 others to do so, provided that clear attribution is given both to
1954 the authors and the Canadian government agency employing them.
1955 Permission to make digital or hard copies for personal or classroom
1956 use is granted. Copies must bear this notice and the full citation
1957 on the first page. Copyrights for components of this work owned by
1958 others than the Canadian Government must be honored. To copy
1959 otherwise, distribute, republish, or post, requires prior specific
1960 permission and\hspace*{.5pt}/or a fee. Request permissions from
1961 [email protected].
1962 \or % cagovmixed
1963 ACM acknowledges that this contribution was co-authored by an
1964 affiliate of the national government of Canada. As such, the Crown
1965 in Right of Canada retains an equal interest in the copyright.
1966 Reprints must include clear attribution to ACM and the author’s
1967 government agency affiliation. Permission to make digital or hard
1968 copies for personal or classroom use is granted. Copies must bear
1969 this notice and the full citation on the first page. Copyrights for
1970 components of this work owned by others than ACM must be honored.

79
1971 To copy otherwise, distribute, republish, or post, requires prior
1972 specific permission and\hspace*{.5pt}/or a fee. Request permissions
1973 from [email protected].
1974 \or % licensedusgovmixed
1975 Publication rights licensed to ACM\@. ACM acknowledges that this
1976 contribution was authored or co-authored by an employee, contractor
1977 or affiliate of the United States government. As such, the
1978 Government retains a nonexclusive, royalty-free right to publish or
1979 reproduce this article, or to allow others to do so, for Government
1980 purposes only.
1981 \or % licensedcagov
1982 This article was authored by employees of the Government of Canada.
1983 As such, the Canadian government retains all interest in the
1984 copyright to this work and grants to ACM a nonexclusive,
1985 royalty-free right to publish or reproduce this article, or to allow
1986 others to do so, provided that clear attribution is given both to
1987 the authors and the Canadian government agency employing them.
1988 Permission to make digital or hard copies for personal or classroom
1989 use is granted. Copies must bear this notice and the full citation
1990 on the first page. Copyrights for components of this work owned by
1991 others than the Canadian Government must be honored. To copy
1992 otherwise, distribute, republish, or post, requires prior specific
1993 permission and\hspace*{.5pt}/or a fee. Request permissions from
1994 [email protected].
1995 \or % licensedcagovmixed
1996 Publication rights licensed to ACM\@. ACM acknowledges that this
1997 contribution was authored or co-authored by an employee, contractor
1998 or affiliate of the national government of Canada. As such, the
1999 Government retains a nonexclusive, royalty-free right to publish or
2000 reproduce this article, or to allow others to do so, for Government
2001 purposes only.
2002 \or % othergov
2003 ACM acknowledges that this contribution was authored or co-authored
2004 by an employee, contractor or affiliate of a national government. As
2005 such, the Government retains a nonexclusive, royalty-free right to
2006 publish or reproduce this article, or to allow others to do so, for
2007 Government purposes only.
2008 \or % licensedothergov
2009 Publication rights licensed to ACM\@. ACM acknowledges that this
2010 contribution was authored or co-authored by an employee, contractor
2011 or affiliate of a national government. As such, the Government
2012 retains a nonexclusive, royalty-free right to publish or reproduce
2013 this article, or to allow others to do so, for Government purposes
2014 only.
2015 \or % iw3c2w3
2016 This paper is published under the Creative Commons Attribution˜4.0
2017 International (CC-BY˜4.0) license. Authors reserve their rights to
2018 disseminate the work on their personal and corporate Web sites with
2019 the appropriate attribution.
2020 \or % iw3c2w3g
2021 This paper is published under the Creative Commons
2022 Attribution-NonCommercial-NoDerivs˜4.0 International
2023 (CC-BY-NC-ND˜4.0) license. Authors reserve their rights to
2024 disseminate the work on their personal and corporate Web sites with

80
2025 the appropriate attribution.
2026 \or % CC
2027 \@ACM@copyright@check@cc
2028 \IfEq{\ACM@cc@type}{zero}{%
2029 \def\ACM@CC@Url{https://creativecommons.org/publicdomain/zero/1.0/legalcode}}{%
2030 \edef\ACM@CC@Url{https://creativecommons.org/licenses/\ACM@cc@type/\ACM@cc@version/legalcode}}%
2031 \href{\ACM@CC@Url}{\includegraphics[height=5ex]{doclicense-CC-\ACM@cc@type-88x31}}\\
2032 \href{\ACM@CC@Url}{%
2033 This work is licensed under a Creative Commons
2034 \IfEq{\ACM@cc@type}{zero}{CC0 1.0 Universal}{%
2035 \IfEq{\ACM@cc@type}{by}{Attribution}{}%
2036 \IfEq{\ACM@cc@type}{by-sa}{Attribution-ShareAlike}{}%
2037 \IfEq{\ACM@cc@type}{by-nd}{Attribution-NoDerivatives}{}%
2038 \IfEq{\ACM@cc@type}{by-nc}{Attribution-NonCommercial}{}%
2039 \IfEq{\ACM@cc@type}{by-nc-sa}{Attribution-NonCommercial-ShareAlike}{}%
2040 \IfEq{\ACM@cc@type}{by-nc-nd}{Attribution-NonCommercial-NoDerivatives}{}%
2041 ˜\IfEq{\ACM@cc@version}{4.0}{4.0 International}{3.0 Unported}%
2042 }
2043 License.}%
2044 \fi}

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

\@teaserfigures The teaser figures container


2047 \def\@teaserfigures{}

teaserfigure The teaser figure


2048 \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}

\@saveteaser Saving the teaser


2049 \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}

\thanks We redefine amsart \thanks so the anonymous key works


2050 \renewcommand{\thanks}[1]{%
2051 \@ifnotempty{#1}{%
2052 \if@ACM@anonymous
2053 \g@addto@macro\thankses{\thanks{A note}}%
2054 \else
2055 \g@addto@macro\thankses{\thanks{#1}}%
2056 \fi}}

\anon We provide \anon command, which blinds parts of the text if the package option
anonymous is set
2057 \newcommand{\anon}[2][ANONYMIZED]{%
2058 \if@ACM@anonymous%
2059 {\color{ACMOrange}#1}%
2060 \else%
2061 #2%
2062 \fi}

81
3.19 Maketitle hook
The current LATEX provides a nice lthooks mechanism. However, since it is relatively
new, we will use oldfashioned approach—at least for now.

\@beginmaketitlehook The hook


2063 \ifx\@beginmaketitlehook\@undefined
2064 \let\@beginmaketitlehook\@empty
2065 \fi

\AtBeginMaketitle Adding to the hook


2066 \def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook}

3.20 ACM Engage top matter


\@acmengagemetadata The special metadata for ACM engage course materials
2067 \def\@acmengagemetadata{}

\setengagemetadata Adding topic to engage metadata


2068 \def\setengagemetadata#1#2{%
2069 \g@addto@macro{\@acmengagemetadata}{%
2070 \@setengagemetadata{#1}{#2}}}

3.21 Typesetting top matter


\mktitle@bx Some of our formats use a two-column design. Some use a one-column design. In all
cases we use a wide title. Thus we typeset the top matter in a special box to be used in
the construction \@twocolumn[⟨box⟩].
2071 \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
thanks. The latter two refer to the paper itself and therefore belong to the copy-
right/permission block. By the way, this was the default behavior of the old ACM classes.
2072 \def\maketitle{\@beginmaketitlehook
2073 \@ACM@maketitle@typesettrue
2074 \if@ACM@anonymous
2075 % Anonymize omission of \author-s
2076 \ifnum\num@authorgroups=0\author{}\fi
2077 \fi
2078 \begingroup
2079 \let\@vspace\@vspace@orig
2080 \let\@vspacer\@vspacer@orig
2081 \let\@footnotemark\@footnotemark@nolink
2082 \let\@footnotetext\@footnotetext@nolink
2083 \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
2084 \hsize=\textwidth
2085 \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
2086 \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
2087 \@printtopmatter
2088 \if@ACM@sigchiamode\@mkauthors\fi

82
2089 \setcounter{footnote}{0}%
2090 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
2091 \@titlenotes
2092 \@subtitlenotes
2093 \@authornotes
2094 \let\@makefnmark\relax
2095 \let\@thefnmark\relax
2096 \let\@makefntext\noindent
2097 \ifx\@empty\thankses\else
2098 \footnotetextauthorsaddresses{%
2099 \def\par{\let\par\@par}\parindent\z@\@setthanks}%
2100 \fi
2101 \if@ACM@acmcp\else
2102 \ifx\@empty\@authorsaddresses\else
2103 \if@ACM@anonymous\else
2104 \if@ACM@journal@bibstrip
2105 \footnotetextauthorsaddresses{%
2106 \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
2107 \fi
2108 \fi
2109 \fi
2110 \fi
2111 \if@ACM@nonacm
2112 \ifnum\acm@copyrightmode=15\relax % cc
2113 \footnotetextcopyrightpermission{\@copyrightpermission}%
2114 \fi
2115 \else
2116 \if@ACM@acmcp\else
2117 \footnotetextcopyrightpermission{%
2118 \if@ACM@authordraft
2119 \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
2120 Unpublished working draft. Not for distribution.}}%
2121 \color[gray]{0.9}%
2122 \fi
2123 \parindent\z@\parskip0.1\baselineskip
2124 \if@ACM@authorversion\else
2125 \if@printpermission\@copyrightpermission\par\fi
2126 \fi
2127 \if@ACM@manuscript\else
2128 \if@ACM@journal@bibstrip\else % Print the conference information
2129 \if@ACM@engage
2130 {\itshape \@acmBooktitle, \@acmYear.}\par
2131 \else
2132 {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
2133 \fi
2134 \fi
2135 \fi
2136 \if@printcopyright
2137 \copyright\ \@copyrightyear\ \@copyrightowner\\
2138 \else
2139 \@copyrightyear.\
2140 \fi
2141 \if@ACM@manuscript
2142 Manuscript submitted to ACM\\

83
2143 \else
2144 \if@ACM@authorversion
2145 This is the author’s version of the work. It is posted here for
2146 your personal use. Not for redistribution. The definitive Version
2147 of Record was published in
2148 \if@ACM@journal@bibstrip
2149 \emph{\@journalName}%
2150 \else
2151 \emph{\@acmBooktitle}%
2152 \fi
2153 \ifx\@acmDOI\@empty
2154 .
2155 \else
2156 , \@formatdoi{\@acmDOI}.
2157 \fi\\
2158 \else
2159 \if@ACM@nonacm\else
2160 \if@ACM@journal@bibstrip
2161 \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
2162 \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
2163 \@formatdoi{\@acmDOI}%
2164 \else % Conference
2165 \ifx\@acmISBN\@empty\else ACM˜ISBN˜\@acmISBN
2166 \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
2167 \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
2168 \fi
2169 \fi
2170 \fi
2171 \fi}%
2172 \fi
2173 \fi
2174 \endgroup
2175 \if@ACM@engage\@typesetengagemetadata\fi
2176 \setcounter{footnote}{0}%
2177 \@mkabstract
2178 \ifx\@translatedabstracts\@empty\else
2179 \@translatedabstracts\fi
2180 \if@ACM@printccs
2181 \ifx\@concepts\@empty\else\bgroup
2182 {\@specialsection{CCS Concepts}%
2183 \noindent\@concepts\par}\egroup
2184 \fi
2185 \fi
2186 \if@ACM@acmcp\else
2187 \ifx\@keywords\@empty\else\bgroup
2188 {\@specialsection{\keywordsname}%
2189 \noindent\@keywords\par}\egroup
2190 \fi
2191 \ifx\@translatedkeywords\@empty\else
2192 \@translatedkeywords
2193 \fi
2194 \fi
2195 \let\metadata@authors=\authors
2196 \nxandlist{, }{, }{, }\metadata@authors

84
2197 \def\@ACM@checkaffil{}%
2198 \hypersetup{%
2199 pdfauthor={\metadata@authors},
2200 pdftitle={\@title},
2201 pdfsubject={\@concepts},
2202 pdfkeywords={\@keywords},
2203 pdfcreator={LaTeX with acmart
2204 \csname [email protected]\endcsname\space
2205 and hyperref
2206 \csname [email protected]\endcsname}}%
2207 \andify\authors
2208 \andify\shortauthors
2209 \global\let\authors=\authors
2210 \global\let\shortauthors=\shortauthors
2211 \if@ACM@printacmref
2212 \@mkbibcitation
2213 \fi
2214 \global\@topnum\z@ % this prevents floats from falling
2215 % at the top of page 1
2216 \global\@botnum\z@ % we do not want them to be on the bottom either
2217 \@printendtopmatter
2218 \@afterindentfalse
2219 \@afterheading
2220 \if@ACM@acmcp
2221 \set@ACM@acmcpbox
2222 \AtEndDocument{\end@ACM@color@frame}%
2223 \@ACM@color@frame
2224 \fi
2225 }

\set@ACM@acmcpbox Setting infobox for acmcp


2226 \newbox\@ACM@acmcpbox
2227 \def\set@ACM@acmcpbox{%
2228 \bgroup
2229 \hsize=5pc
2230 \global\setbox\@ACM@acmcpbox=\vtop to \textheight{%
2231 \setlength{\parindent}{\z@}%
2232 {\Large LOGO\par}%
2233 \scriptsize
2234 \vfill
2235 \ifx\@acmCodeDataLink\@empty\else
2236 Code and data links:\\ \@acmCodeDataLink\par\vfill
2237 \fi
2238 \ifx\@keywords\@empty\else Keywords:
2239 \@keywords\par\vfill
2240 \fi
2241 \ifx\@empty\@authorsaddresses\else\@setauthorsaddresses\vfill\fi
2242 }
2243 \egroup}

\@specialsection This macro starts sections for proceedings and uses \small for journals
2244 \def\@specialsection#1{%
2245 \let\@vspace\@vspace@orig
2246 \let\@vspacer\@vspacer@orig

85
2247 \ifcase\ACM@format@nr
2248 \relax % manuscript
2249 \par\medskip\small\noindent#1: %
2250 \or % acmsmall
2251 \par\medskip\small\noindent#1: %
2252 \or % acmlarge
2253 \par\medskip\small\noindent#1: %
2254 \or % acmtog
2255 \par\medskip\small\noindent#1: %
2256 \or % sigconf
2257 \section*{#1}%
2258 \or % siggraph
2259 \section*{#1}%
2260 \or % sigplan
2261 \noindentparagraph*{#1:˜}%
2262 \or % sigchi
2263 \section*{#1}%
2264 \or % sigchi-a
2265 \section*{#1}%
2266 \or % acmengage
2267 \section*{#1}%
2268 \or % acmcp
2269 \section*{#1}%
2270 \fi
2271 \let\@vspace\@vspace@acm
2272 \let\@vspacer\@vspacer@acm
2273 }

\@printtopmatter The printing of top matter starts a 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 in the
margins.
Note that if there are too many authors, \mktitle@bx might overflow the page.
Therefore we start with checking this and if this happens, we split the box and print
it page by page.
2274 \def\@printtopmatter{%
2275 \ifx\@startPage\@empty
2276 \gdef\@startPage{1}%
2277 \else
2278 \setcounter{page}{\@startPage}%
2279 \fi
2280 \@tempdima=\ht\mktitle@bx
2281 \advance\@tempdima by \dp\mktitle@bx
2282 \ifdim\@tempdima>0.9\textheight
2283 \loop
2284 \setbox\@tempboxa=\vsplit \mktitle@bx to 0.9\textheight
2285 \thispagestyle{firstpagestyle}%
2286 \noindent\unvbox\@tempboxa
2287 \clearpage
2288 \@tempdima=\ht\mktitle@bx
2289 \advance\@tempdima by \dp\mktitle@bx
2290 \ifdim\@tempdima>0.9\textheight\repeat
2291 \fi
2292 \thispagestyle{firstpagestyle}%
2293 \noindent

86
2294 \ifcase\ACM@format@nr
2295 \relax % manuscript
2296 \box\mktitle@bx\par
2297 \or % acmsmall
2298 \box\mktitle@bx\par
2299 \or % acmlarge
2300 \box\mktitle@bx\par
2301 \or % acmtog
2302 \twocolumn[\box\mktitle@bx]%
2303 \or % sigconf
2304 \twocolumn[\box\mktitle@bx]%
2305 \or % siggraph
2306 \twocolumn[\box\mktitle@bx]%
2307 \or % sigplan
2308 \twocolumn[\box\mktitle@bx]%
2309 \or % sigchi
2310 \twocolumn[\box\mktitle@bx]%
2311 \or % sigchi-a
2312 \par\box\mktitle@bx\par\bigskip
2313 \if@ACM@badge
2314 \marginpar{\noindent
2315 \ifx\@acmBadgeL@image\@empty\else
2316 \href{\@acmBadgeL@url}{%
2317 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
2318 \hskip\@ACM@badge@skip
2319 \fi
2320 \ifx\@acmBadgeR@image\@empty\else
2321 \href{\@acmBadgeR@url}{%
2322 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
2323 \fi}%
2324 \fi
2325 \or % acmengage
2326 \twocolumn[\box\mktitle@bx]%
2327 \or % acmcp
2328 \box\mktitle@bx\par
2329 \fi
2330 }

\@mktitle The title of the article


2331 \def\@mktitle{%
2332 \ifcase\ACM@format@nr
2333 \relax % manuscript
2334 \@mktitle@i
2335 \or % acmsmall
2336 \@mktitle@i
2337 \or % acmlarge
2338 \@mktitle@i
2339 \or % acmtog
2340 \@mktitle@i
2341 \or % sigconf
2342 \@mktitle@iii
2343 \or % siggraph
2344 \@mktitle@iii
2345 \or % sigplan

87
2346 \@mktitle@iii
2347 \or % sigchi
2348 \@mktitle@iii
2349 \or % sigchi-a
2350 \@mktitle@iv
2351 \or % acmengage
2352 \@mktitle@iii
2353 \or % acmcp
2354 \@mktitle@i
2355 \fi
2356 }

\@titlefont The font to typeset the title


2357 \def\@titlefont{%
2358 \ifcase\ACM@format@nr
2359 \relax % manuscript
2360 \LARGE\sffamily\bfseries
2361 \or % acmsmall
2362 \LARGE\sffamily\bfseries
2363 \or % acmlarge
2364 \LARGE\sffamily\bfseries
2365 \or % acmtog
2366 \Huge\sffamily
2367 \or % sigconf
2368 \Huge\sffamily\bfseries
2369 \or % siggraph
2370 \Huge\sffamily\bfseries
2371 \or % sigplan
2372 \Huge\bfseries
2373 \or % sigchi
2374 \Huge\sffamily\bfseries
2375 \or % sigchi-a
2376 \Huge\bfseries
2377 \or % acmengage
2378 \Huge\sffamily\bfseries
2379 \or % acmcp
2380 \LARGE\sffamily\bfseries
2381 \fi}

\@subtitlefont The font to typeset the subtitle


2382 \def\@subtitlefont{\normalsize
2383 \ifcase\ACM@format@nr
2384 \relax % manuscript
2385 \mdseries
2386 \or % acmsmall
2387 \mdseries
2388 \or % acmlarge
2389 \mdseries
2390 \or % acmtog
2391 \LARGE
2392 \or % sigconf
2393 \LARGE\mdseries
2394 \or % siggraph
2395 \LARGE\mdseries

88
2396 \or % sigplan
2397 \LARGE\mdseries
2398 \or % sigchi
2399 \LARGE\mdseries
2400 \or % sigchi-a
2401 \mdseries
2402 \or % acmengage
2403 \LARGE\mdseries
2404 \or % acmcp
2405 \mdseries
2406 \fi}

\@mktitle@i The version of \mktitle for most journals


2407 \def\@mktitle@i{\hsize=\textwidth
2408 \if@ACM@acmcp
2409 \advance\hsize by -6pc%
2410 \fi
2411 \@ACM@title@width=\hsize
2412 \ifx\@acmBadgeL@image\@empty\else
2413 \advance\@ACM@title@width by -\@ACM@badge@width
2414 \advance\@ACM@title@width by -\@ACM@badge@skip
2415 \fi
2416 \ifx\@acmBadgeR@image\@empty\else
2417 \advance\@ACM@title@width by -\@ACM@badge@width
2418 \advance\@ACM@title@width by -\@ACM@badge@skip
2419 \fi
2420 \setbox\mktitle@bx=\vbox{\noindent\@titlefont
2421 \ifx\@acmBadgeL@image\@empty\else
2422 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
2423 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
2424 \hskip\@ACM@badge@skip
2425 \fi
2426 \if@ACM@acmcp
2427 \vspace*{108.5\p@}\par\noindent
2428 \fi
2429 \parbox[t]{\@ACM@title@width}{\raggedright
2430 \@titlefont\noindent
2431 \@title\@translatedtitle%
2432 \ifx\@subtitle\@empty\else
2433 \par\noindent{\@subtitlefont\@subtitle\@translatedsubtitle}%
2434 \fi}%
2435 \ifx\@acmBadgeR@image\@empty\else
2436 \hskip\@ACM@badge@skip
2437 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
2438 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
2439 \fi
2440 \par\bigskip}}%

\@mktitle@ii The version of \mktitle for TOG. Since v1.06, this is subsumed by the \mktitle@i
macro

\@mktitle@iii The version of \@mktitle for SIG proceedings. Note that since the title is centered, we
leave space for the left badge even if only the right badge is defined.
2441 \def\@mktitle@iii{\hsize=\textwidth

89
2442 \setbox\mktitle@bx=\vbox{\@titlefont\centering
2443 \@ACM@title@width=\hsize
2444 \if@ACM@badge
2445 \advance\@ACM@title@width by -2\@ACM@badge@width
2446 \advance\@ACM@title@width by -2\@ACM@badge@skip
2447 \parbox[b]{\@ACM@badge@width}{\strut
2448 \ifx\@acmBadgeL@image\@empty\else
2449 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
2450 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
2451 \fi}%
2452 \hskip\@ACM@badge@skip
2453 \fi
2454 \parbox[t]{\@ACM@title@width}{\centering\@titlefont
2455 \@title\@translatedtitle%
2456 \ifx\@subtitle\@empty\else
2457 \par\noindent{\@subtitlefont\@subtitle\@translatedsubtitle}
2458 \fi
2459 }%
2460 \if@ACM@badge
2461 \hskip\@ACM@badge@skip
2462 \parbox[b]{\@ACM@badge@width}{\strut
2463 \ifx\@acmBadgeR@image\@empty\else
2464 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
2465 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
2466 \fi}%
2467 \fi
2468 \par\bigskip}}%

\@mktitle@iv The version of \@mktitle for sigchi-a


2469 \def\@mktitle@iv{\hsize=\textwidth
2470 \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
2471 \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
2472 \noindent\@title\@translatedtitle%
2473 \ifx\@subtitle\@empty\else
2474 \par\noindent\@subtitlefont\@subtitle\@translatedsubtitle%
2475 \fi
2476 \par\bigskip}}%

\@ACM@addtoaddress This macro adds an item to the 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 at the end of a line. We use the magic
\cleaders trick for this.
2477 \newbox\@ACM@commabox
2478 \def\@ACM@addtoaddress#1{%
2479 \ifvmode\else
2480 \if@ACM@affiliation@obeypunctuation\else
2481 \setbox\@ACM@commabox=\hbox{, }%
2482 \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
2483 \fi\fi
2484 #1}

90
\institution Theoretically we can define the macros for \affiliation inside the \@mkauthors-style
\position commands. However, this would lead to a strange error if an author uses them outside
\department \affiliation. Of course we can make them produce an error message, but. . .
\streetaddress 2485 \def\streetaddress#1{\unskip\ignorespaces}
\city 2486 \def\postcode#1{\unskip\ignorespaces}
\state 2487 \if@ACM@journal
\postcode 2488 \def\position#1{\unskip\ignorespaces}
\country 2489 \def\institution#1{\global\@ACM@instpresenttrue
2490 \unskip˜#1\ignorespaces}
2491 \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces}
2492 \def\state#1{\unskip\ignorespaces}
2493 \newcommand\department[2][0]{\unskip\ignorespaces}
2494 \def\country#1{\StrDel{#1}{ }[\@tempa]%
2495 \ifx\@tempa\@empty\else
2496 \global\@ACM@countrypresenttrue\fi
2497 \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
2498 \else
2499 \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
2500 \def\institution#1{\global\@ACM@instpresenttrue
2501 \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
2502 \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
2503 #2\else#2\par\fi}%
2504 % \def\streetaddress#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
2505 \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}%
2506 \let\state\@ACM@addtoaddress
2507 % \def\postcode#1{\if@ACM@affiliation@obeypunctuation#1\else\unskip\space#1\fi}%
2508 \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}%
2509 \fi

\@mkauthors Typesetting the authors


2510 \def\@mkauthors{\begingroup
2511 \hsize=\textwidth
2512 \ifcase\ACM@format@nr
2513 \relax % manuscript
2514 \@mkauthors@i
2515 \or % acmsmall
2516 \@mkauthors@i
2517 \or % acmlarge
2518 \@mkauthors@i
2519 \or % acmtog
2520 \@mkauthors@i
2521 \or % sigconf
2522 \@mkauthors@iii
2523 \or % siggraph
2524 \@mkauthors@iii
2525 \or % sigplan
2526 \@mkauthors@iii
2527 \or % sigchi
2528 \@mkauthors@iii
2529 \or % sigchi-a
2530 \@mkauthors@iv
2531 \or % acmengage
2532 \@mkauthors@iii
2533 \or % acmcp

91
2534 \@mkauthors@i
2535 \fi
2536 \endgroup
2537 }

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

\@affiliationfont Font for affiliations


2539 \def\@affiliationfont{\normalsize\normalfont}

Adjusting fonts for different formats


2540 \ifcase\ACM@format@nr
2541 \relax % manuscript
2542 \or % acmsmall
2543 \def\@authorfont{\large\sffamily}
2544 \def\@affiliationfont{\small\normalfont}
2545 \or % acmlarge
2546 \or % acmtog
2547 \def\@authorfont{\LARGE\sffamily}
2548 \def\@affiliationfont{\large}
2549 \or % sigconf
2550 \def\@authorfont{\LARGE}
2551 \def\@affiliationfont{\large}
2552 \or % siggraph
2553 \def\@authorfont{\normalsize\normalfont}
2554 \def\@affiliationfont{\normalsize\normalfont}
2555 \or % sigplan
2556 \def\@authorfont{\Large\normalfont}
2557 \def\@affiliationfont{\normalsize\normalfont}
2558 \or % sigchi
2559 \def\@authorfont{\bfseries}
2560 \def\@affiliationfont{\mdseries}
2561 \or % sigchi-a
2562 \def\@authorfont{\bfseries}
2563 \def\@affiliationfont{\mdseries}
2564 \or % acmengage
2565 \def\@authorfont{\LARGE}
2566 \def\@affiliationfont{\large}
2567 \or % acmcp
2568 \def\@authorfont{\large\sffamily}
2569 \def\@affiliationfont{\small\normalfont}
2570 \fi

\@typeset@author@line At this point we have \@currentauthors and \@currentaffiliations. We typeset


them in the journal style
2571 \def\@typeset@author@line{%
2572 \andify\@currentauthors\par\noindent
2573 \@currentauthors\def\@currentauthors{}%
2574 \ifx\@currentaffiliations\@empty\else
2575 \andify\@currentaffiliations
2576 \unskip, {\@currentaffiliations}\par
2577 \fi
2578 \def\@currentaffiliations{}}

92
\if@ACM@instpresent Whether the given affiliation has institution
2579 \newif\if@ACM@instpresent
2580 \@ACM@instpresenttrue

\if@ACM@citypresent Whether the given affiliation has city


2581 \newif\if@ACM@citypresent
2582 \@ACM@citypresenttrue

\if@ACM@countrypresent Whether the given affiliation has country


2583 \newif\if@ACM@countrypresent
2584 \@ACM@countrypresenttrue

\@ACM@resetaffil Reset affiliation flags


2585 \def\@ACM@resetaffil{%
2586 \global\@ACM@instpresentfalse
2587 \global\@ACM@citypresentfalse
2588 \global\@ACM@countrypresentfalse
2589 }

\@ACM@checkaffil Check affiliation flags


2590 \def\@ACM@checkaffil{%
2591 \if@ACM@instpresent\else
2592 \ClassWarningNoLine{\@classname}{No institution present for an affiliation}%
2593 \fi
2594 \if@ACM@citypresent\else
2595 \ClassWarningNoLine{\@classname}{No city present for an affiliation}%
2596 \fi
2597 \if@ACM@countrypresent\else
2598 \ClassError{\@classname}{No country present for an affiliation}{ACM
2599 requires each author to indicate their country using country macro.}%
2600 \fi
2601 }

\@mkauthors@i This version is used in most journal formats. Note that \and between authors with the
same affiliation becomes ␣and␣:
2602 \def\@mkauthors@i{%
2603 \def\@currentauthors{}%
2604 \def\@currentaffiliations{}%
2605 \global\let\and\@typeset@author@line
2606 \def\@author##1{%
2607 \ifx\@currentauthors\@empty
2608 \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
2609 \else
2610 \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
2611 \fi
2612 \gdef\and{}}%
2613 \def\email##1##2{}%
2614 \def\affiliation##1##2{%
2615 \def\@tempa{##2}\ifx\@tempa\@empty\else
2616 \ifx\@currentaffiliations\@empty
2617 \gdef\@currentaffiliations{%
2618 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2619 \setkeys{@ACM@affiliation@}{##1}%

93
2620 \@ACM@resetaffil
2621 \@affiliationfont##2\@ACM@checkaffil}%
2622 \else
2623 \g@addto@macro{\@currentaffiliations}{\and
2624 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2625 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2626 ##2\@ACM@checkaffil}%
2627 \fi
2628 \fi
2629 \global\let\and\@typeset@author@line}%
2630 \if@ACM@acmcp
2631 \advance\hsize by -6pc%
2632 \fi
2633 \global\setbox\mktitle@bx=\vbox{\noindent\unvbox\mktitle@bx\par\medskip
2634 \noindent\addresses\@typeset@author@line
2635 \par\medskip}%
2636 }

\@mkauthors@ii The \@mkauthors@ii command was the version used in acmtog. It is no longer neces-
sary.

\author@bx The box to put an individual author in


2637 \newbox\author@bx

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


2638 \newdimen\author@bx@wd

\author@bx@sep The separation between author boxes


2639 \newskip\author@bx@sep
2640 \author@bx@sep=1pc\relax

\@typeset@author@bx Typesetting the box with authors. Note that in sigchi-a the box is not centered.
2641 \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd
2642 \def\and{\par}\normalbaselines
2643 \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
2644 \@authorfont\@currentauthors\par\@affiliationfont
2645 \@currentaffiliation}\egroup
2646 \box\author@bx\hspace{\author@bx@sep}%
2647 \gdef\@currentauthors{}%
2648 \gdef\@currentaffiliation{}}

\@mkauthors@iii The sigconf version. Here we use a centered design with each author in a separate box.
2649 \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)/𝑁 − \author@bx@sep, where 𝑁 is the
number of boxes per row.
2650 \author@bx@wd=\textwidth\relax
2651 \advance\author@bx@wd by -\author@bx@sep\relax
2652 \ifnum\@ACM@authorsperrow>0\relax
2653 \divide\author@bx@wd by \@ACM@authorsperrow\relax
2654 \else
2655 \ifcase\num@authorgroups

94
2656 \relax % 0?
2657 \or % 1=one author per row
2658 \or % 2=two authors per row
2659 \divide\author@bx@wd by \num@authorgroups\relax
2660 \or % 3=three authors per row
2661 \divide\author@bx@wd by \num@authorgroups\relax
2662 \or % 4=two authors per row (!)
2663 \divide\author@bx@wd by 2\relax
2664 \else % three authors per row
2665 \divide\author@bx@wd by 3\relax
2666 \fi
2667 \fi
2668 \advance\author@bx@wd by -\author@bx@sep\relax
Now, parsing of \addresses:
2669 \gdef\@currentauthors{}%
2670 \gdef\@currentaffiliation{}%
2671 \def\@author##1{\ifx\@currentauthors\@empty
2672 \gdef\@currentauthors{\par##1}%
2673 \else
2674 \g@addto@macro\@currentauthors{\par##1}%
2675 \fi
2676 \gdef\and{}}%
2677 \def\email##1##2{\ifx\@currentaffiliation\@empty
2678 \gdef\@currentaffiliation{\bgroup
2679 \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
2680 \else
2681 \g@addto@macro\@currentaffiliation{\par\bgroup
2682 \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}%
2683 \fi}%
2684 \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
2685 \gdef\@currentaffiliation{%
2686 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2687 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2688 ##2\@ACM@checkaffil}%
2689 \else
2690 \g@addto@macro\@currentaffiliation{\par
2691 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2692 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2693 ##2\@ACM@checkaffil}%
2694 \fi
2695 \global\let\and\@typeset@author@bx
2696 }%

Actual typesetting is done by the \and macro:


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

\@mkauthors@iv The sigchi-a version. We put authors in the main text with no more than 2 authors per
line, unless overriden.
2702 \def\@mkauthors@iv{%

95
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)/𝑁 − \author@bx@sep, where 𝑁 is the
number of boxes per row.
2703 \author@bx@wd=\columnwidth\relax
2704 \advance\author@bx@wd by -\author@bx@sep\relax
2705 \ifnum\@ACM@authorsperrow>0\relax
2706 \divide\author@bx@wd by \@ACM@authorsperrow\relax
2707 \else
2708 \ifcase\num@authorgroups
2709 \relax % 0?
2710 \or % 1=one author per row
2711 \else % 2=two authors per row
2712 \divide\author@bx@wd by 2\relax
2713 \fi
2714 \fi
2715 \advance\author@bx@wd by -\author@bx@sep\relax
Now, parsing of \addresses:
2716 \gdef\@currentauthors{}%
2717 \gdef\@currentaffiliation{}%
2718 \def\@author##1{\ifx\@currentauthors\@empty
2719 \gdef\@currentauthors{\par##1}%
2720 \else
2721 \g@addto@macro\@currentauthors{\par##1}%
2722 \fi
2723 \gdef\and{}}%
2724 \def\email##1##2{\ifx\@currentaffiliation\@empty
2725 \gdef\@currentaffiliation{\nolinkurl{##2}}%
2726 \else
2727 \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
2728 \fi}%
2729 \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
2730 \gdef\@currentaffiliation{%
2731 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2732 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2733 ##2\@ACM@checkaffil}%
2734 \else
2735 \g@addto@macro\@currentaffiliation{\par
2736 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2737 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil
2738 ##2\@ACM@checkaffil}%
2739 \fi
2740 \global\let\and\@typeset@author@bx}%
2741 %

Actual typesetting is done by the \and macro


2742 \bgroup\hsize=\columnwidth
2743 \par\raggedright\leftskip=\z@
2744 \lineskip=1pc\noindent
2745 \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}

\@mkauthorsaddresses Typesetting authors’ addresses in the footnote style


2746 \def\@mkauthorsaddresses{%

96
2747 \ifnum\num@authors>1\relax
2748 Authors’ \else Author’s \fi
2749 \ifnum\num@authorgroups>1\relax
2750 addresses: \else address: \fi
2751 \bgroup
2752 \def\streetaddress##1{\unskip, ##1}%
2753 \def\postcode##1{\unskip, ##1}%
2754 \def\position##1{\unskip\ignorespaces}%
2755 \gdef\@ACM@institution@separator{, }%
2756 \def\institution##1{\unskip\@ACM@institution@separator ##1\gdef\@ACM@institution@separator{ and }
2757 \def\city##1{\unskip, ##1}%
2758 \def\state##1{\unskip, ##1}%
2759 \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
2760 \def\country##1{\unskip, ##1}%
2761 \def\and{\unskip; \gdef\@ACM@institution@separator{, }}%
2762 \def\@author##1{##1}%
2763 \def\email##1##2{\unskip, \nolinkurl{##2}}%
2764 \addresses
2765 \egroup}

2766 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal
2767 \ifx\@authorsaddresses\@empty
2768 \ClassWarningNoLine{\@classname}{Authors’
2769 addresses are mandatory for ACM journals}%
2770 \fi\fi\fi}

\@setaddresses This is an amsart macro that we do not need.


2771 \def\@setaddresses{}

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

\@@authornotemark Adding a footnote mark to authors with a given number


2773 \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}

\@mkteasers Typesetting the teasers


2774 \def\@mkteasers{%
2775 \ifx\@teaserfigures\@empty\else
2776 \def\@teaser##1{\par\bigskip\bgroup
2777 \captionsetup{type=figure}##1\egroup\par}
2778 \global\setbox\mktitle@bx=\vbox{\noindent\unvbox\mktitle@bx\par
2779 \noindent\@Description@presentfalse
2780 \@teaserfigures\par\if@Description@present\else
2781 \global\@undescribed@imagestrue
2782 \ClassWarning{\@classname}{A possible image without
2783 description}\fi
2784 \medskip}%
2785 \fi}

\@mkabstract Typesetting the abstract


2786 \def\@mkabstract{\bgroup
2787 \ifx\@abstract\@lempty\else
2788 {\phantomsection\addcontentsline{toc}{section}{\abstractname}%
2789 \if@ACM@journal

97
2790 \everypar{\setbox\z@\lastbox\everypar{}}\small
2791 \else
2792 \section*{\abstractname}%
2793 \fi
2794 \ignorespaces\@abstract\par}%
2795 \fi\egroup}

\@mktranslatedabstract Typesetting a translated abstract


2796 \def\@mktranslatedabstract#1{\selectlanguage{#1}%
2797 \if@ACM@journal
2798 \everypar{\setbox\z@\lastbox\everypar{}}\small
2799 \else
2800 \section*{\abstractname}%
2801 \fi
2802 \ignorespaces}

\@mkbibcitation Print the bibcitation format


2803 \def\@mkbibcitation{\bgroup
2804 \let\@vspace\@vspace@orig
2805 \let\@vspacer\@vspacer@orig
2806 \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
2807 \def\footnotemark{}%
2808 \def\\{\unskip{} \ignorespaces}%
2809 \def\footnote{\ClassError{\@classname}{Please do not use footnotes
2810 inside a \string\title{} or \string\author{} command! Use
2811 \string\titlenote{} or \string\authornote{} instead!}}%
2812 \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
2813 Article˜\@acmArticle\ \fi}%
2814 \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
2815 \noindent\bgroup
2816 \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title
2817 \ifx\@subtitle\@empty. \else: \@subtitle. \fi
2818 \if@ACM@nonacm\else
2819 % The ’nonacm’ option disables ’printacmref’ by default,
2820 % and the present \@mkbibcitation definition is never used
2821 % in this case. The conditional remains useful if the user
2822 % explicitly sets \settopmatter{printacmref=true}.
2823 \if@ACM@journal@bibstrip
2824 \textit{\@journalNameShort}
2825 \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
2826 \ref{TotPages}˜\@pages@word.
2827 \else
2828 In \textit{\@acmBooktitle}%
2829 \ifx\@acmEditors\@empty\textit{.}\else
2830 \andify\@acmEditors\textit{, }\@acmEditors˜\@editorsAbbrev.%
2831 \fi\
2832 ACM, New York, NY, USA%
2833 \@article@string\unskip, \ref{TotPages}˜\@pages@word.
2834 \fi
2835 \fi
2836 \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
2837 \par\egroup}

\@printendtopmatter End the top matter

98
2838 \def\@printendtopmatter{%
2839 \let\@vspace\@vspace@orig
2840 \let\@vspacer\@vspacer@orig
2841 \par\bigskip
2842 \let\@vspace\@vspace@acm
2843 \let\@vspacer\@vspacer@acm
2844 }

\@setthanks We redefine \\@setthanks using \long


2845 \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}

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

\@typesetengagemetadata Typesetting special metadata for ACM Engage


2847 \def\@typesetengagemetadata{%
2848 \def\@setengagemetadata##1##2{\par\noindent\textbf{##1} ##2\par}%
2849 \@acmengagemetadata}

3.22 Headers and Footers


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

\ACM@restore@pagestyle The following code by Ross Moore protects against changes by the totpages package:
2851 \let\ACM@ps@plain\ps@plain
2852 \let\ACM@ps@myheadings\ps@myheadings
2853 \let\ACM@ps@headings\ps@headings
2854 \def\ACM@restore@pagestyle{%
2855 \let\ps@plain\ACM@ps@plain
2856 \let\ps@myheadings\ACM@ps@myheadings
2857 \let\ps@headings\ACM@ps@headings}
2858 \AtBeginDocument{\ACM@restore@pagestyle}

\ACM@linecount@bx This is the box displayed in review mode


2859 \if@ACM@review
2860 \newsavebox{\ACM@linecount@bx}
2861 \newlength\ACM@linecount@bxht
2862 \newcount\ACM@linecount
2863 \ACM@linecount\@ne\relax
2864 \def\ACM@mk@linecount{%
2865 \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont
2866 \normalsize
2867 \setlength{\ACM@linecount@bxht}{0pt}%
2868 \loop{\color{red}\scriptsize\the\ACM@linecount}\\
2869 \global\advance\ACM@linecount by \@ne
2870 \addtolength{\ACM@linecount@bxht}{\baselineskip}%
2871 \ifdim\ACM@linecount@bxht<\textheight\repeat
2872 {\color{red}\scriptsize\the\ACM@linecount}\hfill
2873 \global\advance\ACM@linecount by \@ne}}}
2874 \fi

99
\ACM@linecountL How to display the box on the left
2875 \def\ACM@linecountL{%
2876 \if@ACM@review
2877 \ACM@mk@linecount
2878 \begin{picture}(0,0)%
2879 \put(-26,-22){\usebox{\ACM@linecount@bx}}%
2880 \end{picture}%
2881 \fi}

\ACM@linecountR How to display the box on the right. In one column formats we do not step the numbers.
2882 \def\ACM@linecountR{%
2883 \if@ACM@review
2884 \ifcase\ACM@format@nr
2885 \relax % manuscript
2886 \relax
2887 \or % acmsmall
2888 \relax
2889 \or % acmlarge
2890 \relax
2891 \or % acmtog
2892 \ACM@mk@linecount
2893 \or % sigconf
2894 \ACM@mk@linecount
2895 \or % siggraph
2896 \ACM@mk@linecount
2897 \or % sigplan
2898 \ACM@mk@linecount
2899 \or % sigchi
2900 \ACM@mk@linecount
2901 \or % sigchi-a
2902 \ACM@mk@linecount
2903 \or % acmengage
2904 \ACM@mk@linecount
2905 \or % acmcp
2906 \relax
2907 \fi
2908 \begin{picture}(0,0)%
2909 \put(20,-22){\usebox{\ACM@linecount@bx}}%
2910 \end{picture}%
2911 \fi}

\ACM@timestamp The timestamp system


2912 \if@ACM@timestamp
2913 % Subtracting 30 from \time gives us the effect of rounding down despite
2914 % \numexpr rounding to nearest
2915 \newcounter{ACM@time@hours}
2916 \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
2917 \newcounter{ACM@time@minutes}
2918 \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
2919 \newcommand\ACM@timestamp{%
2920 \footnotesize%
2921 \ifx\@acmSubmissionID\@empty\relax\else
2922 Submission ID: \@acmSubmissionID.{ }%
2923 \fi

100
2924 \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
2925 \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
2926 Page \thepage\ of \@startPage--\pageref*{TotPages}.%
2927 }
2928 \fi

\@shortauthors Even if the author redefined \shortauthors, we do not print it in the headers when in
anonymous mode:
2929 \def\@shortauthors{%
2930 \if@ACM@anonymous
2931 Anon.
2932 \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi
2933 \else\shortauthors\fi}

\@headfootfont The font to typeset header and footer text.


2934 \def\@headfootfont{\sffamily\footnotesize}

standardpagestyle The page style for all pages but the first one The page style for all pages but the first
one
2935 \AtBeginDocument{%
2936 \fancypagestyle{standardpagestyle}{%
2937 \fancyhf{}%
2938 \renewcommand{\headrulewidth}{\z@}%
2939 \renewcommand{\footrulewidth}{\z@}%
2940 \def\@acmArticlePage{%
2941 \ifx\@acmArticle\empty%
2942 \if@ACM@printfolios\thepage\fi%
2943 \else%
2944 \@acmArticle\if@ACM@printfolios:\thepage\fi%
2945 \fi%
2946 }%
2947 \if@ACM@journal@bibstrip
2948 \ifcase\ACM@format@nr
2949 \relax % manuscript
2950 \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
2951 \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
2952 \fancyhead[RE]{\@shortauthors}%
2953 \fancyhead[LO]{\ACM@linecountL\shorttitle}%
2954 \if@ACM@nonacm\else%
2955 \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}
2956 \fi%
2957 \or % acmsmall
2958 \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}%
2959 \fancyhead[RO]{\@headfootfont\@acmArticlePage}%
2960 \fancyhead[RE]{\@headfootfont\@shortauthors}%
2961 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2962 \if@ACM@nonacm\else%
2963 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
2964 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2965 \fi
2966 \or % acmlarge
2967 \fancyhead[LE]{\ACM@linecountL\@headfootfont
2968 \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
2969 \fancyhead[LO]{\ACM@linecountL}%

101
2970 \fancyhead[RO]{\@headfootfont
2971 \shorttitle\quad\textbullet\quad\@acmArticlePage}%
2972 \if@ACM@nonacm\else%
2973 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
2974 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2975 \fi
2976 \or % acmtog
2977 \fancyhead[LE]{\ACM@linecountL\@headfootfont
2978 \@acmArticlePage\quad\textbullet\quad\@shortauthors}%
2979 \fancyhead[LO]{\ACM@linecountL}%
2980 \fancyhead[RE]{\ACM@linecountR}%
2981 \fancyhead[RO]{\@headfootfont
2982 \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}%
2983 \if@ACM@nonacm\else%
2984 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
2985 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2986 \fi
2987 \else % Proceedings
2988 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
2989 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2990 \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
2991 \if@ACM@nonacm
2992 \fancyhead[LE]{\ACM@linecountL}%
2993 \fancyhead[RO]{\ACM@linecountR}%
2994 \else%
2995 \if@ACM@engage
2996 \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
2997 EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
2998 \fancyhead[RO]{\@headfootfont
2999 EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
3000 \ACM@linecountR}%
3001 \else
3002 \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize
3003 \acmConference@shortname,
3004 \acmConference@date, \acmConference@venue}%
3005 \fancyhead[RO]{\@headfootfont
3006 \acmConference@shortname,
3007 \acmConference@date, \acmConference@venue\ACM@linecountR}%
3008 \fi
3009 \fi
3010 \fi
3011 \else % Proceedings
3012 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
3013 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
3014 \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
3015 \if@ACM@nonacm
3016 \fancyhead[LE]{\ACM@linecountL}%
3017 \fancyhead[RO]{\ACM@linecountR}%
3018 \else%
3019 \if@ACM@engage
3020 \fancyhead[LE]{\ACM@linecountL\@headfootfont
3021 EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi}%
3022 \fancyhead[RO]{\@headfootfont
3023 EngageCSEdu. \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi

102
3024 \ACM@linecountR}%
3025 \else
3026 \fancyhead[LE]{\ACM@linecountL\@headfootfont
3027 \acmConference@shortname,
3028 \acmConference@date, \acmConference@venue}%
3029 \fancyhead[RO]{\@headfootfont
3030 \acmConference@shortname,
3031 \acmConference@date, \acmConference@venue\ACM@linecountR}%
3032 \fi
3033 \fi
3034 \fi
3035 \if@ACM@sigchiamode
3036 \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
3037 \fi
3038 \if@ACM@timestamp
3039 \fancyfoot[LO,RE]{\ACM@timestamp}
3040 \fi
3041 \if@ACM@acmcp
3042 \renewcommand{\footrulewidth}{0.1\p@}%
3043 \fancyheadoffset[L]{46pt}%
3044 \fancyhead[L]{\makebox[\z@][l]{%
3045 \raisebox{-\dimexpr(0.25\textheight*\ACM@ArticleType@nr)}{%
3046 \rotatebox{90}{\colorbox{@ACM@Article@color}{\color{white}%
3047 \strut\ACM@ArticleType˜Article}}}}%
3048 \ACM@linecountL}%
3049 \fancyhead[R]{\makebox[\z@][r]{\box\@ACM@acmcpbox}}%
3050 \fancyfoot[L,C]{}%
3051 \fancyfoot[R]{\footnotesize
3052 \@journalName, Volume˜\@acmVolume, Issue˜\@acmNumber,
3053 \ifx\@acmArticle\@empty\else Article˜\@acmArticle\fi\space
3054 (\@acmPubDate)\ifx\@acmDOI\@empty\else\\\@formatdoi{\@acmDOI}\fi}
3055 \fi
3056 }%
3057 \pagestyle{standardpagestyle}
3058 }

\@folio@wd Folio blob width, height, offsets and max number


\@folio@ht 3059 \newdimen\@folio@wd
\@folio@voffset 3060 \@folio@wd=\z@
\@folio@max 3061 \newdimen\@folio@ht
3062 \@folio@ht=\z@
3063 \newdimen\@folio@voffset
3064 \@folio@voffset=\z@
3065 \def\@folio@max{1}
3066 \ifcase\ACM@format@nr
3067 \relax % manuscript
3068 \or % acmsmall
3069 \@folio@wd=45.75pt\relax
3070 \@folio@ht=1.25in\relax
3071 \@folio@voffset=.2in\relax
3072 \def\@folio@max{8}
3073 \or % acmlarge
3074 \@folio@wd=43.25pt\relax
3075 \@folio@ht=79pt\relax

103
3076 \@folio@voffset=.55in\relax
3077 \def\@folio@max{10}
3078 \fi

\@folioblob The macro to typeset the folio blob.


3079 \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
3080 \ifnum\@tempcnta=0\relax\else
First, we calculate \@acmArticleSeq modulo \@folio@max
3081 \loop
3082 \ifnum\@tempcnta>\@folio@max\relax
3083 \advance\@tempcnta by - \@folio@max
3084 \repeat
3085 \advance\@tempcnta by -1\relax
3086 \@tempdima=\@folio@ht\relax
3087 \multiply\@tempdima by \the\@tempcnta\relax
3088 \advance\@tempdima by -\@folio@voffset\relax
3089 \begin{picture}(0,0)
3090 \makebox[\z@]{\raisebox{-\@tempdima}{%
3091 \rlap{%
3092 \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
3093 \rule{\@folio@wd}{\@folio@ht}}}%
3094 \parbox{\@folio@wd}{%
3095 \centering
3096 \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
3097 \end{picture}\fi}
3098

firstpagestyle The page style for the first page only.


3099 \AtBeginDocument{%
3100 \fancypagestyle{firstpagestyle}{%
3101 \fancyhf{}%
3102 \renewcommand{\headrulewidth}{\z@}%
3103 \renewcommand{\footrulewidth}{\z@}%
3104 \if@ACM@journal@bibstrip
3105 \ifcase\ACM@format@nr
3106 \relax % manuscript
3107 \fancyhead[L]{\ACM@linecountL}%
3108 \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
3109 \if@ACM@nonacm\else%
3110 \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
3111 \fi%
3112 \or % acmsmall
3113 \if@ACM@nonacm\else%
3114 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
3115 \@acmNumber, Article \@acmArticle. Publication date:
3116 \@acmPubDate.}%
3117 \fi%
3118 \fancyhead[LE]{\ACM@linecountL\@folioblob}%
3119 \fancyhead[LO]{\ACM@linecountL}%
3120 \fancyhead[RO]{\@folioblob}%
3121 \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
3122 \or % acmlarge
3123 \if@ACM@nonacm\else%

104
3124 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
3125 \@acmNumber, Article \@acmArticle. Publication date:
3126 \@acmPubDate.}%
3127 \fi%
3128 \fancyhead[RO]{\@folioblob}%
3129 \fancyhead[LE]{\ACM@linecountL\@folioblob}%
3130 \fancyhead[LO]{\ACM@linecountL}%
3131 \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
3132 \or % acmtog
3133 \if@ACM@nonacm\else%
3134 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No.
3135 \@acmNumber, Article \@acmArticle. Publication date:
3136 \@acmPubDate.}%
3137 \fi%
3138 \fancyhead[L]{\ACM@linecountL}%
3139 \fancyhead[R]{\ACM@linecountR}%
3140 \else % Conference proceedings
3141 \fancyhead[L]{\ACM@linecountL}%
3142 \fancyhead[R]{\ACM@linecountR}%
3143 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
3144 \fi
3145 \else
3146 \fancyhead[L]{\ACM@linecountL}%
3147 \fancyhead[R]{\ACM@linecountR}%
3148 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
3149 \fi
3150 \if@ACM@timestamp
3151 \ifnum\ACM@format@nr=0\relax % Manuscript
3152 \fancyfoot[LO,RE]{\ACM@timestamp\quad
3153 \if@ACM@nonacm\else
3154 \footnotesize Manuscript submitted to ACM
3155 \fi}
3156 \else
3157 \fancyfoot[LO,RE]{\ACM@timestamp}
3158 \fi
3159 \fi
3160 \if@ACM@acmcp
3161 \renewcommand{\footrulewidth}{0.1\p@}%
3162 \fancyheadoffset[L]{46pt}%
3163 \fancyhead[L]{\makebox[\z@][l]{%
3164 \raisebox{-\dimexpr(0.25\textheight*\ACM@ArticleType@nr)}{%
3165 \rotatebox{90}{\colorbox{@ACM@Article@color}{\color{white}%
3166 \strut\ACM@ArticleType˜Article}}}}%
3167 \ACM@linecountL}%
3168 \fancyhead[R]{\makebox[\z@][r]{\box\@ACM@acmcpbox}}%
3169 \fancyfoot[L,C]{}%
3170 \fancyfoot[R]{\footnotesize
3171 \@journalName, Volume˜\@acmVolume, Issue˜\@acmNumber,
3172 \ifx\@acmArticle\@empty\else Article˜\@acmArticle\fi\space
3173 (\@acmPubDate)\ifx\@acmDOI\@empty\else\\\@formatdoi{\@acmDOI}\fi}
3174 \fi
3175 }}

105
3.23 Sectioning
\ACM@NRadjust Ross Moore’s macro.

Initially \ACM@sect@format@ just passes through its #1 argument un-


changed. When a sectioning macro such as \section occurs, the \ACM@NRadjust
redefines \ACM@sect@format@ to expand into the styling commands; e.g.,
\@secfont. Then \Sectionformat is temporarily redefined to produce
\realSectionformat{\ACM@sect@format{#1}}{#2}, which ultimately be-
comes \Sectionformat{\@secfont{#1}}{#2}. This is done to allow \Sectionformat
to be variable, as may be needed in particular circumstances. Its current ex-
pansion is saved as \realSectionformat which is used with the modified
1st argument, then \Sectionformat is reverted to its former expansion.
To style the section-number, the line #1{} is used at the end of \ACM@NRadjust.
This imposes style-changing commands for fonts and sizes, but any \MakeUppercase
acts on just the {}. It’s a bit hacky, by essentially assuming that only num-
bers occur here, not letters to be case-changed. (This should be acceptable
in a class-file, as it ought to be possible to change the case elsewhere, if that
was ever desired.) Also, it can result in \@adddotafter being called too
soon, so a slight adjustment is made, via \ACM@adddotafter, which now
tests whether its argument is empty. But the coding has to allow for other
packages to have also patched \@adddotafter.
3176 \def\ACM@NRadjust#1{%
3177 \begingroup
3178 \expandafter\ifx\csname Sectionformat\endcsname\relax
3179 % do nothing when \Sectionformat is unknown
3180 \def\next{\endgroup #1}%
3181 \else
3182 \def\next{\endgroup
3183 \let\realSectionformat\Sectionformat
3184 \def\ACM@sect@format@{#1}%
3185 \let\Sectionformat\ACM@NR@adjustedSectionformat
3186 %% next lines added 2018-06-17 to ensure section number is styled
3187 \let\real@adddotafter\@adddotafter
3188 \let\@adddotafter\ACM@adddotafter
3189 #1{}% imposes the styles, but nullifies \MakeUppercase
3190 \let\@adddotafter\real@adddotafter
3191 }%
3192 \fi \next
3193 }

\ACM@NR@adjustedSectionformat
3194 \def\ACM@NR@adjustedSectionformat#1#2{%
3195 \realSectionformat{\ACM@sect@format{#1}}{#2}%
3196 \let\Sectionformat\realSectionformat}
3197 \DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@}
3198 \def\ACM@sect@format@null#1{#1}
3199 \let\ACM@sect@format@\ACM@sect@format@null
3200 \AtBeginDocument{%
3201 \expandafter\ifx\csname LTX@adddotafter\endcsname\relax
3202 \let\LTX@adddotafter\@adddotafter
3203 \fi
3204 }

106
\ACM@adddotafter
3205 \def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi}

Sectioning is different for different levels


3206 \renewcommand\section{\@startsection{section}{1}{\z@}%
3207 {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3208 {.25\baselineskip}%
3209 {\ACM@NRadjust\@secfont}}
3210 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
3211 {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3212 {.25\baselineskip}%
3213 {\ACM@NRadjust\@subsecfont}}
3214 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
3215 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3216 {-3.5\p@}%
3217 {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}}
3218 \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
3219 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3220 {-3.5\p@}%
3221 {\ACM@NRadjust{\@parfont\@adddotafter}}}
3222 \newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}%
3223 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
3224 {-3.5\p@}%
3225 {\ACM@NRadjust{\@parfont}}}
3226
3227 \renewcommand\part{\@startsection{part}{9}{\z@}%
3228 {-10\p@ \@plus -4\p@ \@minus -2\p@}%
3229 {4\p@}%
3230 {\ACM@NRadjust\@parfont}}

\section@raggedright Special version of \raggedright compatible with \MakeUppercase


3231 \def\section@raggedright{\@rightskip\@flushglue
3232 \rightskip\@rightskip
3233 \leftskip\z@skip
3234 \parindent\z@}

\@secfont Fonts for sections etc. are different for different formats.
\@subsecfont 3235 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
\@subsubsecfont 3236 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
\@parfont 3237 \def\@subsubsecfont{\sffamily\itshape}
3238 \def\@parfont{\itshape}
3239 \setcounter{secnumdepth}{3}
3240 \ifcase\ACM@format@nr
3241 \relax % manuscript
3242 \or % acmsmall
3243 \or % acmlarge
3244 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
3245 \def\@subsecfont{\sffamily\large\section@raggedright}
3246 \or % acmtog
3247 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
3248 \def\@subsecfont{\sffamily\large\section@raggedright}
3249 \or % sigconf
3250 \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
3251 \def\@subsecfont{\bfseries\Large\section@raggedright}

107
3252 \or % siggraph
3253 \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
3254 \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
3255 \or % sigplan
3256 \def\@secfont{\bfseries\Large\section@raggedright}
3257 \def\@subsecfont{\bfseries\section@raggedright}
3258 \def\@subsubsecfont{\bfseries\section@raggedright}
3259 \def\@parfont{\bfseries\itshape}
3260 \def\@subparfont{\itshape}
3261 \or % sigchi
3262 \setcounter{secnumdepth}{1}
3263 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
3264 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
3265 \or % sigchi-a
3266 \setcounter{secnumdepth}{0}
3267 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
3268 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
3269 \or % acmengage
3270 \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
3271 \def\@subsecfont{\bfseries\Large\section@raggedright}
3272 \or %acmcp
3273 \fi

\@adddotafter Add punctuation after a sectioning command


3274 \def\@adddotafter#1{#1\@addpunct{.}}

\@addspaceafter Add space after a sectioning command


3275 \def\@addspaceafter#1{#1\@addpunct{\enspace}}

3276 \if@ACM@acmcp
3277 \setcounter{secnumdepth}{-1}%
3278 \fi

3.24 TOC lists


\@dotsep 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.
3279 \providecommand*\@dotsep{4.5}

3.25 Theorems
\@acmplainbodyfont The font to typeset the body of the acmplain theorem style.
3280 \def\@acmplainbodyfont{\itshape}

\@acmplainindent The amount to indent the acmplain theorem style.


3281 \def\@acmplainindent{\parindent}

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

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

Customization of the acmplain theorem style:


3284 \ifcase\ACM@format@nr
3285 \relax % manuscript
3286 \or % acmsmall
3287 \or % acmlarge
3288 \or % acmtog
3289 \or % sigconf
3290 \or % siggraph
3291 \or % sigplan
3292 \def\@acmplainbodyfont{\itshape}
3293 \def\@acmplainindent{\z@}
3294 \def\@acmplainheadfont{\bfseries}
3295 \def\@acmplainnotefont{\normalfont}
3296 \or % sigchi
3297 \or % sigchi-a
3298 \or % acmengage
3299 \or % acmcp
3300 \fi

acmplain The acmplain theorem style


3301 \newtheoremstyle{acmplain}%
3302 {.5\baselineskip\@plus.2\baselineskip
3303 \@minus.2\baselineskip}% space above
3304 {.5\baselineskip\@plus.2\baselineskip
3305 \@minus.2\baselineskip}% space below
3306 {\@acmplainbodyfont}% body font
3307 {\@acmplainindent}% indent amount
3308 {\@acmplainheadfont}% head font
3309 {.}% punctuation after head
3310 {.5em}% spacing after head
3311 {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec

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

\@acmdefinitionindent The amount to indent the acmdefinition theorem style.


3313 \def\@acmdefinitionindent{\parindent}

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

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

Customization of the acmdefinition theorem style:


3316 \ifcase\ACM@format@nr
3317 \relax % manuscript
3318 \or % acmsmall
3319 \or % acmlarge
3320 \or % acmtog

109
3321 \or % sigconf
3322 \or % siggraph
3323 \or % sigplan
3324 \def\@acmdefinitionbodyfont{\normalfont}
3325 \def\@acmdefinitionindent{\z@}
3326 \def\@acmdefinitionheadfont{\bfseries}
3327 \def\@acmdefinitionnotefont{\normalfont}
3328 \or % sigchi
3329 \or % sigchi-a
3330 \or % acmengage
3331 \or % acmcp
3332 \fi

acmdefinition The acmdefinition theorem style


3333 \newtheoremstyle{acmdefinition}%
3334 {.5\baselineskip\@plus.2\baselineskip
3335 \@minus.2\baselineskip}% space above
3336 {.5\baselineskip\@plus.2\baselineskip
3337 \@minus.2\baselineskip}% space below
3338 {\@acmdefinitionbodyfont}% body font
3339 {\@acmdefinitionindent}% indent amount
3340 {\@acmdefinitionheadfont}% head font
3341 {.}% punctuation after head
3342 {.5em}% spacing after head
3343 {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec

Make acmplain the default theorem style.


3344 \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 en-
vironments are defined in order to show the correct environment name (see https:
//github.com/borisveytsman/acmart/issues/138). 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.
3345 \AtEndPreamble{%
3346 \if@ACM@acmthm
3347 \theoremstyle{acmplain}
3348 \@ifundefined{theorem}{%
3349 \newtheorem{theorem}{Theorem}[section]
3350 }{}
3351 \@ifundefined{conjecture}{%
3352 \newtheorem{conjecture}[theorem]{Conjecture}
3353 }{}
3354 \@ifundefined{proposition}{%
3355 \newtheorem{proposition}[theorem]{Proposition}
3356 }{}
3357 \@ifundefined{lemma}{%
3358 \newtheorem{lemma}[theorem]{Lemma}
3359 }{}
3360 \@ifundefined{corollary}{%
3361 \newtheorem{corollary}[theorem]{Corollary}

110
3362 }{}
3363 \theoremstyle{acmdefinition}
3364 \@ifundefined{example}{%
3365 \newtheorem{example}[theorem]{Example}
3366 }{}
3367 \@ifundefined{definition}{%
3368 \newtheorem{definition}[theorem]{Definition}
3369 }{}
3370 \fi
3371 \theoremstyle{acmplain}
3372 }

\@proofnamefont The font to typeset the proof name.


3373 \def\@proofnamefont{\scshape}

\@proofindent Whether or not to indent proofs.


3374 \def\@proofindent{\indent}

Customization of the proof environment.


3375 \ifcase\ACM@format@nr
3376 \relax % manuscript
3377 \or % acmsmall
3378 \or % acmlarge
3379 \or % acmtog
3380 \or % sigconf
3381 \or % siggraph
3382 \or % sigplan
3383 \def\@proofnamefont{\itshape}
3384 \def\@proofindent{\noindent}
3385 \or % sigchi
3386 \or % sigchi-a
3387 \or % acmengage
3388 \or % acmcp
3389 \fi

proof We want some customization of the proof environment.


3390 \renewenvironment{proof}[1][\proofname]{\par
3391 \pushQED{\qed}%
3392 \normalfont \topsep6\p@\@plus6\p@\relax
3393 \trivlist
3394 \item[\@proofindent\hskip\labelsep
3395 {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
3396 }{%
3397 \popQED\endtrivlist\@endpefalse
3398 }

3.26 Balancing columns


We need balancing only if the user did not disable it, and we use a two column format.
Note that pbalance uses a different mechanism.
3399 \AtEndPreamble{%
3400 \if@ACM@pbalance
3401 \global\@ACM@balancefalse

111
3402 \ifcase\ACM@format@nr
3403 \relax % manuscript
3404 \or % acmsmall
3405 \or % acmlarge
3406 \or % acmtog
3407 \RequirePackage{pbalance}%
3408 \or % sigconf
3409 \RequirePackage{pbalance}%
3410 \or % siggraph
3411 \RequirePackage{pbalance}%
3412 \or % sigplan
3413 \RequirePackage{pbalance}%
3414 \or % sigchi
3415 \RequirePackage{pbalance}%
3416 \or % sigchi-a
3417 \or % acmengage
3418 \RequirePackage{pbalance}%
3419 \or % acmcp
3420 \fi
3421 \fi
3422 \if@ACM@balance
3423 \ifcase\ACM@format@nr
3424 \relax % manuscript
3425 \global\@ACM@balancefalse
3426 \or % acmsmall
3427 \global\@ACM@balancefalse
3428 \or % acmlarge
3429 \global\@ACM@balancefalse
3430 \or % acmtog
3431 \RequirePackage{balance}%
3432 \or % sigconf
3433 \RequirePackage{balance}%
3434 \or % siggraph
3435 \RequirePackage{balance}%
3436 \or % sigplan
3437 \RequirePackage{balance}%
3438 \or % sigchi
3439 \RequirePackage{balance}%
3440 \or % sigchi-a
3441 \global\@ACM@balancefalse
3442 \or % acmengage
3443 \RequirePackage{balance}%
3444 \or % acmcp
3445 \global\@ACM@balancefalse
3446 \fi
3447 \fi
3448 }
3449 \AtEndDocument{%
3450 \if@ACM@balance
3451 \if@twocolumn
3452 \balance
3453 \fi\fi}

112
3.27 Acknowledgments
\acksname
3454 \newcommand\acksname{Acknowledgments}

\acks This is a comment-like structure


3455 \specialcomment{acks}{%
3456 \begingroup
3457 \section*{\acksname}
3458 \phantomsection\addcontentsline{toc}{section}{\acksname}
3459 }{%
3460 \endgroup
3461 }

\grantsponsor We just typeset the name of the sponsor


3462 \def\grantsponsor#1#2#3{#2}

\grantnum
3463 \newcommand\grantnum[3][]{#3%
3464 \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}

3.28 Conditional typesetting


We use the comment package for conditional typesetting:
3465 \AtEndPreamble{%
3466 \if@ACM@screen
3467 \includecomment{screenonly}
3468 \excludecomment{printonly}
3469 \else
3470 \excludecomment{screenonly}
3471 \includecomment{printonly}
3472 \fi
3473 \if@ACM@anonymous
3474 \excludecomment{anonsuppress}
3475 \excludecomment{acks}
3476 \else
3477 \includecomment{anonsuppress}
3478 \fi}

3.29 Additional bibliography commands


\showeprint 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’.
3479 \newcommand\showeprint[2][arxiv]{%
3480 \def\@tempa{#1}%
3481 \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
3482 \def\@tempb{arxiv}%
3483 \ifx\@tempa\@tempb\relax
3484 arXiv:\href{https://arxiv.org/abs/#2}{#2}%
3485 \else
3486 \def\@tempb{arXiv}%
3487 \ifx\@tempa\@tempb\relax
3488 arXiv:\href{https://arxiv.org/abs/#2}{#2}%

113
3489 \else
3490 #1:#2%
3491 \fi
3492 \fi}

3.30 Index
\theindex Standard amsart uses plain page style in index pages. This clashes with line numbering
for review option, so we redefine it.
3493 \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
3494 \columnseprule\z@ \columnsep 35\p@
3495 \@indextitlestyle
3496 \let\item\@idxitem
3497 \parindent\z@ \parskip\z@\@plus.3\p@\relax
3498 \raggedright
3499 \hyphenpenalty\@M
3500 \footnotesize}

3.31 End of Class


\vspace We do not disable \vspace, but add warning to it
3501 \let\@vspace@orig=\@vspace
3502 \let\@vspacer@orig=\@vspacer
3503 \apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should
3504 only be used to provide space above/below surrounding
3505 objects}}{}{}
3506 \apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should
3507 only be used to provide space above/below surrounding
3508 objects}}{}{}
3509 \let\@vspace@acm=\@vspace
3510 \let\@vspacer@acm=\@vspacer

\ACM@origbaselinestretch We produce an error if the user tries to change \baselinestretch


3511 \let\ACM@origbaselinestretch\baselinestretch
3512 \AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else
3513 \ClassError{\@classname}{An attempt to redefine
3514 \string\baselinestretch\space detected. Please do not do this for
3515 ACM submissions!}\fi}

3516 \normalsize\normalfont\frenchspacing
3517 ⟨/class⟩

114
References
[1] UK TEX Users Group. UK list of TEX frequently asked questions. https://texfaq.
org, 2019.

[2] Michael Downes and Barbara Beeton. The amsart, amsproc, and amsbook docu-
ment classes. American Mathematical Society, August 2004. http://www.ctan.
org/pkg/amslatex.
[3] Johannes L. Braams and Javier Bezos. Babel, 2022. http://www.ctan.org/pkg/
babel.

[4] Cristophe Fiorio. algorithm2e.sty—package for algorithms, October 2015. http:


//www.ctan.org/pkg/algorithm2e.
[5] Rogério Brito. The algorithms bundle, August 2009. http://www.ctan.org/pkg/
algorithms.

[6] Carsten Heinz, Brooks Moses, and Jobst Hoffmann. The Listings Package, June 2015.
http://www.ctan.org/pkg/listings.
[7] Simon Fear. Publication quality tables in LATEX, April 2005. http://www.ctan.org/
pkg/booktabs.
[8] Association for Computing Machinery. ACM Visual Identity Standards, 2007. http:
//identitystandards.acm.org.
[9] Axel Sommerfeldt. The subcaption package, April 2013. http://www.ctan.org/
pkg/subcaption.
[10] Boris Veytsman, Bern Schandl, Lee Netherton, and C. V. Radhakrishnan. A package
to create a nomenclature, September 2005. http://www.ctan.org/pkg/nomencl.
[11] Nicola L. C. Talbot. User Manual for glossaries.sty v4.44, December 2019. http:
//www.ctan.org/pkg/glossaries.
[12] David Carlisle. The textcase package, October 2004. http://www.ctan.org/pkg/
textcase.

115
Change History

1.48 \ccsdesc@parse: Added warning for


General: Added prologue option to missing concepts . . . . . . . . . . . 75
xcolor . . . . . . . . . . . . . . . . . . . 50 \if@ACM@printacmref: Added
Bib code cleanup (Zack Weinberg) 35 warning for longer papers . . . . . 73
Documentation update (siggraph) . 35 \keywords: Added warning for
1.49 missing keywords . . . . . . . . . . . 72
General: New journal: DTRAP . . . . . 35 1.69
1.53 \vspace: Added the changed
General: New journals: PACMCGIT, command to avoid grouping . . . 114
TIOT, TDSCI . . . . . . . . . . . . . . 35 1.70
Rearranged docs . . . . . . . . . . . . 35 General: Name change for TDS . . . . 59
1.54 1.71
General: Moved footnote stuff before General: Bibliography change: volume
hyperref call (Ross Moore) . . . . . 35 for @inproceedings is now in
1.56 brackets together with series . . . 35
General: Documented \Description 35 LuaTeX now uses the OTF versions
1.57 of fonts . . . . . . . . . . . . . . . . . . 35
General: Booktabs package is now the Retired sigchi and sigchi-a . . . . . 35
default . . . . . . . . . . . . . . . . . . 35 1.75
1.58 General: Documentation update ... 35
General: Changes in samples (Enrico 1.78
Gregorio) . . . . . . . . . . . . . . . . . 35 General: Documentation update: Word
New journal: HEALTH. TDS is count . . . . . . . . . . . . . . . . . . . 35
renamed to TDSCI . . . . . . . . . . 35 1.79
1.60 General: Updated indormation for
General: New option: TAP, TCPS, TEAC . . . . . . . . . . . 59
urlbreakonhyphens . . . . . . . . . . 35 1.80
\if@ACM@urlbreakonhyphens: General: Added DLT and FAC . . . . . 59
introduced macro . . . . . . . . . . . 36 1.82
1.62 General: Updated abbreviations and
General: New journal: TELO . . . . . . 35 codes for several journals . . . . . . 59
1.63 1.84
General: New journal: FACMP . . . . . 35 General: New journals: JDS,
New journal: TQUANT . . . . . . . . 35 GAMES . . . . . . . . . . . . . . . . 35, 59
1.63a 1.85
General: Move: TQUANT to TQC . . 35 General: Added CC licenses . . . . . . 35
1.64 Added: acmengage . . . . . . . . . . . 48
General: Putting abstract after New journal: JRC . . . . . . . . . . . . 59
\maketitle now causes an error . 35 \@mkauthors: Added: acmengage . . 91
1.65 \@mktitle: Added: acmengage . . . . 87
General: New journal: DGOV . . . . . 35 \@parfont: Added: acmengage . . . . 107
1.66 \@printtopmatter: Added:
General: ACM reference format is now acmengage . . . . . . . . . . . . . . . 86
mandatory for papers over one \@specialsection: Added:
page; CCS concepts and keywords acmengage . . . . . . . . . . . . . . . 85
are now mandatory for papers \@subtitlefont: Added: acmengage 88
over two pages . . . . . . . . . . . . . 35 \@titlefont: Added: acmengage . . 88
Authors’ addresses are mandatory \ACM@linecountR: Added:
for journal articles . . . . . . . . . . 35 acmengage . . . . . . . . . . . . . . 100
\@mkauthorsaddresses: Added format: New format: acmengage . . . 36
warning for missing addresses . . 97 \parskip: Added: acmengage . . . . . 52

116
1.87 \acmISBN: Name change by Matthew
General: New journals: ACMJCSS, Fluet . . . . . . . . . . . . . . . . . . . . 71
JATS, TORS . . . . . . . . . . . . . . . 59 v1.05
format: New format: acmcp . . . . . . 36 General: Added processing doi
1.88 numbers for acmsiggraph and doi
General: Added ISSN for ACMJCSS . 59 numbers for sigproc.bib . . . . . . . 35
Added ISSN for GAMES . . . . . . . 59 Patched \setcitestyle command;
Added PACMNET . . . . . . . . . . . 59 closes https:
//github.com/borisveytsman/
v1.00 acmart/issues/19 . . . . . . . . . . 35
General: First released version . . . . . 35 v1.06
v1.01 \@ACM@badge@skip: Added macro . . 72
General: Changed hyperref colors in \@ACM@badge@width: Added macro . 71
screen mode (closes https: \@ACM@title@width: Added macro . 72
//github.com/borisveytsman/ \@mktitle@i: Added processing
acmart/issues/1) . . . . . . . . . . 35 badges . . . . . . . . . . . . . . . . . . 89
Defined ACM colors . . . . . . . . . . 35 Made generic . . . . . . . . . . . . . . 89
Explicitly put draft option (closes \@mktitle@ii: Now this macro is
https: obsolete . . . . . . . . . . . . . . . . . 89
//github.com/borisveytsman/ \@mktitle@iii: Added processing
acmart/issues/4) . . . . . . . . . . 38 badges . . . . . . . . . . . . . . . . . . 89
Set headheight to 1pc for all Made more generic . . . . . . . . . . 89
formats (closes https: \@mktitle@iv: Made more generic . 90
//github.com/borisveytsman/ \@printtopmatter: Added processing
acmart/issues/5) . . . . . . . . . . 35 badges . . . . . . . . . . . . . . . . . . 86
v1.02 \@subtitlefont: Added macro . . . . 88
General: Added TOPS and TSC (closes
\@titlefont: Added macro . . . . . . 88
https:
\acmBadgeL: Added macro . . . . . . . 72
//github.com/borisveytsman/
\acmBadgeR: Added macro . . . . . . . 72
acmart/issues/12) . . . . . . . . . 35
Documentation changes (closes \if@ACM@badge: Added macro . . . . . 71
https: v1.07
//github.com/borisveytsman/ \maketitle: Corrected a bug with
acmart/issues/13) . . . . . . . . . 35 abstract footnotes . . . . . . . . . . . 82
v1.03 Corrected a bug with permssion
General: Added anonsuppress and footnotes order . . . . . . . . . . 82
environment . . . . . . . . . . . . . . 35 v1.08
Added authorversion option (closes General: SIGPLAN reformatting by
https: Matthew Fluet . . . . . . . . . . . . . 35
//github.com/borisveytsman/ Typos corrected (Tobias Pape) . . . 35
acmart/issues/9) . . . . . . . . . . 35 v1.09
\@formatdoi: Added macro . . . . . . 78 General: Revert SIGPLAN caption
\if@ACM@authorversion: Added rules . . . . . . . . . . . . . . . . . . . . 35
macro . . . . . . . . . . . . . . . . . . . 37 v1.10
\maketitle: Added special case of General: Changes of
authorversion . . . . . . . . . . . . . . 82 ‘licensedothergov’ wording . . . . 76
v1.04 \maketitle: Corrected a bug with doi
General: Updated bibliography for in manuscript and author vertsion,
siggraph . . . . . . . . . . . . . . . . . 35 https:
\acmArticleSeq: Name change by //github.com/borisveytsman/
Matthew Fluet . . . . . . . . . . . . . 71 acmart/issues/36 . . . . . . . . . . 82
\acmDOI: Name change by Matthew standardpagestyle: Reversed folios
Fluet . . . . . . . . . . . . . . . . . . . . 71 location . . . . . . . . . . . . . . . . . 101

117
v1.11 v1.15
General: Customization of ACM \@ACM@addtoaddress: Added macro 90
theorem styles and proof \@mkauthors@iii: New authors
environment by Matthew Fluet . . 35 system . . . . . . . . . . . . . . . . . . 94
v1.12 \@shortauthors: Introduced macro . 101
General: Added graceful behavior \@typeset@author@bx: Moved to
when libertine fonts are absent . . 53 separate macro . . . . . . . . . . . . . 94
Documentation updates . . . . . . . 35 \acks: Added macro . . . . . . . . . . . 113
\@marginfigure: Now centering by \affiliation: Added code for author
default . . . . . . . . . . . . . . . . . . 57 groups . . . . . . . . . . . . . . . . . . 68
\@margintable: Now centering by \author: Added code for author
default . . . . . . . . . . . . . . . . . . 57 groups . . . . . . . . . . . . . . . . . . 67
\@parfont: Moved to \city: Added macro . . . . . . . . . . . 91
\section@raggedright . . . . . 107 \country: Added macro . . . . . . . . . 91
\copyrightpermissionfootnoterule: \department: Added macro . . . . . . 91
Added macro . . . . . . . . . . . . . . 52 \grantnum: Added macro . . . . . . . . 113
\descriptionlabel: Redefined . . . . 59 \grantsponsor: Added macro . . . . . 113
\footnoterule: Made shorter . . . . . 53 \if@insideauthorgroup: Introduced
\if@ACM@natbib@override: Added macro . . . . . . . . . . . . . . . . . . . 67
macro . . . . . . . . . . . . . . . . . . . 37 \institution: Added macro . . . . . 91
\if@ACM@newfonts: Added macro . . 54 \num@authorgroups: Renamed . . . . 67
\orcid: Introduced macro . . . . . . . 69
\maketitle: Moved thankses to
copyrightpermission box . . . . . . 82 \position: Added macro . . . . . . . . 91
\postcode: Added macro . . . . . . . . 91
\section@raggedright: Introduced
\state: Added macro . . . . . . . . . . 91
macro . . . . . . . . . . . . . . . . . . 107
\streetaddress: Added macro . . . . 91
v1.13
standardpagestyle: Better handling
General: Font adjustments for
of anonymous mode . . . . . . . . 101
acmsmall . . . . . . . . . . . . . . . . . 92
v1.16
Increased font size for ACM Large 40
General: Formatting header/footer
Print bibliographic information by
(Matthew Fluet) . . . . . . . . . . . . 35
default for the proceedings . . . . . 73
\@headfootfont: Added macro . . . . 101
\@mpfootnotetext: Made minipage standardpagestyle: Customize
footnotes centered . . . . . . . . . . 48 header/footer text font . . . . . . . 101
\bibliographystyle: Redefined v1.17
macro . . . . . . . . . . . . . . . . . . . 49 General: Slightly decreased margins
\bibstyle@acmauthoryear: Added for sigs . . . . . . . . . . . . . . . . . . 50
macro . . . . . . . . . . . . . . . . . . . 43 \@makefnmark: Redefined . . . . . . . . 48
\bibstyle@acmnumeric: Added \@mkauthors: TOG now uses the same
macro . . . . . . . . . . . . . . . . . . . 43 authors block as other journals . . 91
\if@ACM@printfolios: Added macro 73 \@mkauthors@ii: Deleted . . . . . . . . 94
standardpagestyle: Added headers \@mkbibcitation: Added \nobreak 98
for sigs . . . . . . . . . . . . . . . . . 101 Changed format for sigs . . . . . . . 98
Expanded headers for sigchi-a . . . 101 \acmArticle: The default is now
Suppressed folios if sig . . . . . . . . 101 numerical . . . . . . . . . . . . . . . . 71
v1.14 \acmMonth: The default must be
General: \citestyle updates numerical. Closes #50. . . . . . . . . 71
(Matthew Fluet) . . . . . . . . . . . . 35 \acmNumber: The default is now
Patched \citestyle . . . . . . . . . 41 numerical . . . . . . . . . . . . . . . . 71
\bibstyle@acmauthoryear: Moved \acmVolume: The default is now
def of \bibstyle@acmauthoryear numerical . . . . . . . . . . . . . . . . 71
before use . . . . . . . . . . . . . . . . 43 \acmYear: The default is now
\bibstyle@acmnumeric: Moved def of numerical . . . . . . . . . . . . . . . . 71
\bibstyle@numeric before use . . 43 \description: Decreased indent . . . 59

118
\grantnum: Added url . . . . . . . . . . 113 \@mkabstract: Removed spurious
\grantsponsor: Renamed . . . . . . . 113 indentation (John Wickerson) . . . 97
\if@ACM@printacmref: Renamed \ccsdesc@parse: Add spacing after
from \if@ACM@printbib . . . . . . 73 bullet and around rightarrow;
standardpagestyle: Added paper semicolon separators no longer in
title to sigs . . . . . . . . . . . . . . . 101 bold/italic (John Wickerson) . . . . 75
v1.18 standardpagestyle: Corrected
General: Natbib is now the default for printfolios (Matthew Fluet) . . . . 101
all formats . . . . . . . . . . . . . . . . 35 v1.30
\@mkauthors@i: Now we andify General: Added \frenchspacing . . . 114
affiliations . . . . . . . . . . . . . . . . 93 Bibtex style now recognizes https://
\@typeset@author@line: Added in doi . . . . . . . . . . . . . . . . . . . 35
macro . . . . . . . . . . . . . . . . . . . 92 Switched to T1: looks like libertine
v1.19 has problems with \l in OT1 . . . 54
General: Include ’Abstract’, Updated IMWUT and PACMPL . . 59
’Acknowledgements’, and \department: Added optional
’References’ in PDF bookmarks parameter . . . . . . . . . . . . . . . . 91
(Matthew Fluet) . . . . . . . . . . . . 35 v1.31
Include ’References’ in PDF General: Documentation changes . . . 35
bookmarks (Matthew Fluet) . . . . 41 \@additionalaffiliation: Added
\@mkabstract: Include ’Abstract’ in macro . . . . . . . . . . . . . . . . . . . 69
PDF bookmarks (Matthew Fluet) . 97 \@mkbibcitation: Disabled linebreak 98
\acks: Include ’Acknowledgements’ in \@startsection: Added
PDF bookmarks (Matthew Fluet) 113 \tochangmeasure . . . . . . . . . . . 45
v1.20 Redefined macro . . . . . . . . . . . . 47
General: Bug fixes for bst . . . . . . . . 35 \@textbottom: Redefined . . . . . . . . 53
\@mkabstract: Deleted spurious space 97 \acmMonth: The default now is the
v1.21 current month (Matteo Riondato) 71
\showeprint: Added macro . . . . . . 113 \acmYear: The default now is the
v1.22 current year (Matteo Riondato) . . 71
General: More bibliography changes \additionalaffiliation: Added
for Aptara . . . . . . . . . . . . . . . . 35 macro . . . . . . . . . . . . . . . . . . . 69
v1.23 \l@subsection: Redefined macro . . 47
General: Add PACMPL journal option 35 \l@subsubsection: Redefined macro 47
v1.24 v1.32
General: Add IMWUT journal option 59 General: Added POMACS journal
v1.25 option . . . . . . . . . . . . . . . . . . . 35
General: Updated PACMPL . . . . . . . 59 Format siggraph is now obsolete . 35
v1.26 \@formatdoi: New doi format . . . . . 78
General: Corrected \shortcite bug . 35 v1.33
Documentation typos fixed (thanks General: Added acmart-preload-hook 35
to Stephen Spencer) . . . . . . . . . . 35 Added cmap and glyphtounicode . 53
v1.27 BibTeX comma before articleno bug
\if@ACM@printccs: Typo corrected . 73 corrected . . . . . . . . . . . . . . . . . 35
v1.28 BibTeX crossref bug corrected . . . 35
General: Corrected option natbib BibTeX numpages bug corrected . 35
behavior . . . . . . . . . . . . . . . . . 43 Documentation updates . . . . . . . 35
Got rid of warnings in pdf keywords 48 Moved \citename definition for
\ccsdesc@parse: Change from \to to non-natbib bibliography, so a
\textrightarrow (Matteo package may redefine it . . . . . . . 49
Riondato) . . . . . . . . . . . . . . . . 75 Switched to Type 1 fonts for
v1.29 libertine even if OTF-capable
General: Increased head to 13pt . . . . 50 engine is used (Kai Mindermann) . 54

119
\@ACM@addtoaddress: Added \ACM@linecountL: Rulers now are
obeypunctuation code . . . . . . . . 90 continuous . . . . . . . . . . . . . . 100
\@mkauthors@i: Added \ACM@linecountR: Rulers now are
obeypunctuation code . . . . . . . . 93 continuous . . . . . . . . . . . . . . 100
\@mkauthors@iii: Added \maketitle: Added date to the
obeypunctuation code . . . . . . . . 94 bibstrip in conf proceedings . . . . 82
\@mkauthors@iv: Added Deleted ‘DOI’ from doi numbers . 82
obeypunctuation code . . . . . . . . 95 Rearranged bibstrip . . . . . . . . . . 82
\@subtitlefont: Added The \terms command is now
\normalsize . . . . . . . . . . . . . . 88 obsolete . . . . . . . . . . . . . . . . . 82
\ACM@linecountL: Renamed macro . 100 \terms: The \terms command now
\ACM@linecountR: Added macro . . . 100 just produces a warning . . . . . . . 72
\ACM@timestamp: Added current page v1.35
number . . . . . . . . . . . . . . . . . 100 General: BibTeX bug fixed: et al. . . . 35
Added macro (Michael D. Adams) . 100 If the copyright is set to usgov or
Added submission id . . . . . . . . . 100 rigtsretained, the price is
\acmSubmissionID: Added macro . . 71 suppressed . . . . . . . . . . . . . . . . 76
\city: Added obeypunctuation code 91 \bibstyle@acmauthoryear: Square
\country: Added obeypunctuation brackets for author-year style . . . 43
code . . . . . . . . . . . . . . . . . . . . 91 v1.36
\department: Added obeypunctuation General: Added PACMHCI journal
code . . . . . . . . . . . . . . . . . . . . 91 options . . . . . . . . . . . . . . . . . . 59
\if@ACM@affiliation@obeypunctuation: Added the possibility to adjust
Added macro . . . . . . . . . . . . . . 69 number of author boxes per row
\if@ACM@authordraft: Added macro 38 in conference formats . . . . . . . . 35
\if@ACM@natbib@override: Deleted
\@ACM@authorsperrow: Added macro 73
macro . . . . . . . . . . . . . . . . . . . 37
\@mkauthors@iii: Added
\if@ACM@timestamp: Added macro
authorsperrow overrride . . . . . . 94
(Michael D. Adams) . . . . . . . . . . 38
\@mkauthors@iv: Added
\institution: Added
authorsperrow overrride . . . . . . 95
obeypunctuation code . . . . . . . . 91
\if@ACM@authordraft: Corrected
firstpagestyle: Added right
typo, thanks to bargteil . . . . . . . 38
linecount for two-column formats 104
v1.37
Added timestamp (Michael
General: Reduce list indentation
D. Adams) . . . . . . . . . . . . . . . 104
(Matthew Fluet) . . . . . . . . . . . . 58
\maketitle: Fixed the bug with
figures on top and bottom of the Set \normalparindent; Reduce list
title page, thanks to David Epstein 82 indentation (Matthew Fluet) . . . . 35
\position: Added obeypunctuation \description: Reduce list
code . . . . . . . . . . . . . . . . . . . . 91 indentation (Matthew Fluet) . . . . 59
\postcode: Added obeypunctuation \descriptionlabel: Reduce list
code . . . . . . . . . . . . . . . . . . . . 91 indentation (Matthew Fluet) . . . . 59
\state: Added obeypunctuation code 91 \normalparindent: Set
\streetaddress: Added \normalparindent (Matthew
obeypunctuation code . . . . . . . . 91 Fluet) . . . . . . . . . . . . . . . . . . . 52
standardpagestyle: Added right v1.38
linecount for two-column formats 101 General: Increase default font size for
Added timestamp (Michael SIGPLAN . . . . . . . . . . . . . . . 35, 40
D. Adams) . . . . . . . . . . . . . . . 101 v1.39
v1.34 \@@authornotemark: Added macro . 97
\@mkbibcitation: Deleted DOI from \authornotemark: Added macro . . . 70
doi numbers . . . . . . . . . . . . . . . 98 v1.40
\ACM@linecount@bx: Rulers now are General: Added ‘textcase’ package . . 41
continuous . . . . . . . . . . . . . . . 99 Added heightrounded to geometry 50

120
Added new copyright version: \acmArticle: The default is now
licensedcagov . . . . . . . . . . . . . . 35 empty . . . . . . . . . . . . . . . . . . . 71
Added package cleveref . . . . . . . 35 \acmArticleSeq: Now acmArticle
Added Ross Moore code for might be empty . . . . . . . . . . . . 71
glyphtounicode . . . . . . . . . . . . 53 \acmBooktitle: Added macro . . . . . 67
Bibliography changes . . . . . . . . . 35 \editor: Added macro . . . . . . . . . . 67
\@copyrightowner: Added new \if@ACM@acmthm: Added macro . . . . 36
copyright version: licensedcagov . 77 \maketitle: Empty DOI or ISBN are
\@copyrightpermission: Added new not printed (by Michael Ekstrand) 82
copyright version: licensedcagov . 78 v1.45
\@mkauthors@i: Switched to \@folioblob: Switched
MakeTextUppercase . . . . . . . . . 93 \bfeseries\sffamily to
\@parfont: Switched to \sffamily\bfseries . . . . . . . 104
MakeTextUppercase . . . . . . . . 107 \@parfont: Switched
\ACM@linecount@bx: Work around a \bfeseries\sffamily to
bug in xcolor: looks like cmyk \sffamily\bfseries . . . . . . . 107
colors in boxes do not work . . . . 99 \@titlefont: Switched
\ccdesc@parse@finish: Added \bfeseries\sffamily to
macro . . . . . . . . . . . . . . . . . . . 75 \sffamily\bfseries . . . . . . . . 88
\city: We now do not print this even v1.46
in SIG . . . . . . . . . . . . . . . . . . . 91 General: Added etoolbox . . . . . . . . 35
\country: Fixed bugs with extra Bst file bug fixes: label width is
spaces . . . . . . . . . . . . . . . . . . . 91 calculated correctly . . . . . . . . . . 35
\l@subsection: Redefined macro . . 47 Delayed hypersetup since journal
\postcode: We now do not print this options may change screen mode 48
even in SIG . . . . . . . . . . . . . . . 91 PACM now set screen to true . . . . 59
Restore theorem defs to class file . 35
\state: We now do not print this even
in SIG . . . . . . . . . . . . . . . . . . . 91 \@mkauthorsaddresses: Introduced
macro . . . . . . . . . . . . . . . . . . . 96
\streetaddress: We now do not
\@mkbibcitation: Added subtitle . . 98
print this even in SIG . . . . . . . . . 91
\@printendtopmatter: Made it
v1.41
\par\bigskip uniformly . . . . . . 98
General: Added new badges . . . . . . 35
\@printtopmatter: Deleted rule . . . 86
v1.42
\@setauthorsaddresses: Introduced
General: Deleted ACM badges . . . . . 35
macro . . . . . . . . . . . . . . . . . . . 99
v1.43 \ACM@linecount@bx: Rearranged the
\@startsection: Added code to get rid of spurious
\makeatletter . . . . . . . . . . . . 47 underfull messages (Benjamin
\country: Added comma before Byholm) . . . . . . . . . . . . . . . . . 99
country for journals . . . . . . . . . 91 \author: Started counting authors . . 67
v1.44 \authorsaddresses: Introduced
General: Added package refcount . . . 35 macro . . . . . . . . . . . . . . . . . . . 69
Deleted package cleveref . . . . . . . 35 \country: Corrected spacing for
Put theorem defs in a separate style 35 institution . . . . . . . . . . . . . . . . 91
\@acmBooktitle: Added macro . . . . 67 \if@ACM@acmthm: Modified
\@acmEditors: Added macro . . . . . 67 description . . . . . . . . . . . . . . . 36
\@editorsAbbrev: Added macro . . . 67 \liningnums: Workaround for
\@folioblob: Suppress the blob if compatibility with fontspec . . . . 54
acmArticleSeq is empty . . . . . . 104 \maketitle: Added authors’ addresses 82
\@mkbibcitation: If the paper has Thankses go before authors’
just one page, use ‘page’ instead of addresses . . . . . . . . . . . . . . . . . 82
‘pages’ . . . . . . . . . . . . . . . . . . 98 \num@authors: Introduced macro . . 67
\ACM@restore@pagestyle: Added v1.47
macro . . . . . . . . . . . . . . . . . . . 99 General: New journal: THRI . . . . . . 35

121
v1.48 XeTeX now uses T1 encoding . . . 54
General: \citeyear no longer \@mkbibcitation: Bug corrected
behaves like \citeyearpar . . . . 49 (Ross Moore) . . . . . . . . . . . . . . 98
Code prettying (Michael D. Adams) 35 \@shortauthors: Added submission
Initial support for Biblatex (Daniel id in anonymous mode . . . . . . 101
Thomas) . . . . . . . . . . . . . . . . . 35 \ACM@adddotafter: Added macro . . 107
Misc entries in the bibliography no \ACM@NR@adjustedSectionformat:
longer produce a separate date . . 35 Added macro . . . . . . . . . . . . . 106
Typos fixed (Jamie Davis) . . . . . . 35 \ACM@NRadjust: Added macro . . . . . 106
\@headfootfont: Deleted \author: Added submission id in
unnecessary switch (Michael anonymous mode . . . . . . . . . . . 67
D. Adams) . . . . . . . . . . . . . . . 101 \if@ACM@nonacm: Added macro . . . . 37
\@mkabstract: Removed spurious v1.55
indentation if abstract is followed General: Now we use purple color for
by an empty line . . . . . . . . . . . . 97 links . . . . . . . . . . . . . . . . . . . . 48
\ACM@timestamp: Fromatting change Table captions for SIGCHI now use
(Michael D. Adams) . . . . . . . . . 100 the same font size as figure
\if@ACM@review: Review mode now captions (Luis Leiva) . . . . . . . . . 56
switches on folios . . . . . . . . . . . 36 Typo corrected (Zack Weinberg) . 41
\maketitle: Added acmart and \@mkbibcitation: Bug corrected . . . 98
version info to pdfcreator tag . . . 82 \maketitle: Fixes topnum . . . . . . . 82
Added language and doctitle v1.56
attributes to PDF (Andreas General: Looks like XeTeX requires
Reichinger) . . . . . . . . . . . . . . . 82 explicit monotype font declaration 54
Suppressed empty DOI (Serguei Make two-column layouts flush
Mokhov) . . . . . . . . . . . . . . . . . 82 (Philip Quinn) . . . . . . . . . . . . . 50
v1.50 \@marginfigure: Added checking for
\@copyrightpermission: New description . . . . . . . . . . . . . . . 57
copyright statements for \@mkteasers: Added check for
iw3c2w3[g] . . . . . . . . . . . . . . . 78 description . . . . . . . . . . . . . . . 97
v1.51 \acksname: Added macro (Philip
General: Corrected the bug with price Quinn) . . . . . . . . . . . . . . . . . 113
suppression . . . . . . . . . . . . . . . 76 \ccsdesc@parse: End the concepts
Suppress price if the copyright is list with a period (Philip Quinn) . 75
set to iw3c2w3 or iw3c2w3g . . . . 76 \Description: Added macro . . . . . 55
XeTeX now uses OTF fonts \if@Description@present: Added
(Joachim Breitner) . . . . . . . . . . 54 macro . . . . . . . . . . . . . . . . . . . 55
firstpagestyle: We now use journal \if@undescribed@images: Added
abbreviation for footers . . . . . . 104 macro . . . . . . . . . . . . . . . . . . . 55
standardpagestyle: We now use v1.57
journal abbreviation for footers . 101 \ACM@origbaselinestretch: Added
v1.52 check whether the user changed
\@copyrightowner: Rewording of \baselinestretch . . . . . . . . . 114
licenses . . . . . . . . . . . . . . . . . . 77 \author: Added warning if \author
\@copyrightpermission: Another has comma . . . . . . . . . . . . . . . 67
rewording of copyright statements \email: Added warning if \author
for iw3c2w3[g] . . . . . . . . . . . . . 78 has comma . . . . . . . . . . . . . . . 69
v1.53 \if@ACM@balance: Added macro . . . 37
General: Added PACMCGIT, TIOT, \vspace: Added warning . . . . . . . . 114
TDSCI . . . . . . . . . . . . . . . . . . . 59 v1.58
v1.54 General: Added HEALTH. TDSCI is
General: Added Ross’s patch for renamed to TDS . . . . . . . . . . . . 59
sectioning . . . . . . . . . . . . . . . 107 Suppressed \addtocounter in pdf
Deleted indent for subsubsection . 107 subject . . . . . . . . . . . . . . . . . . 48

122
\@dblfloat: Deleted spurious space warnings . . . . . . . . . . . . . 55
\vspace warning . . . . . . . . . . . 57 \@specialsection: Suppress
\@marginfigure: Deleted spurious warnings about \vspace . . . . . . 85
\vspace warning . . . . . . . . . . . 57 v1.67
\@margintable: Deleted spurious General: Patching lstlisting and
\vspace warning . . . . . . . . . . . 57 lstlisting* to prevent spurious
\@mkbibcitation: Deleted spurious space warnings . . . . . . . . . . . . . 55
\vspace warning . . . . . . . . . . . 98 \@parfont: Deleted redefinitions of
\@printendtopmatter: Deleted sections . . . . . . . . . . . . . . . . . 107
spurious \vspace warning . . . . . 98 \@specialsection: Paragraph inside
\@sidebar: Deleted spurious \vspace group does not print its argument.
warning . . . . . . . . . . . . . . . . . 56 Added a bugfix . . . . . . . . . . . . . 85
\maketitle: Original \vspace inside v1.68
\maketitle . . . . . . . . . . . . . . . 82 General: New command for unindent
\vspace: Preserved old versions as paras . . . . . . . . . . . . . . . . . . 107
\@vspace@orig and \@specialsection: Deleted grouping
\@vspace@orig . . . . . . . . . . . 114 altogether . . . . . . . . . . . . . . . . 85
v1.59 v1.69
\acmConference: Setting General: No dots for unindented
\@ACM@journal@bibstrip . . . . . 66 paragraphs . . . . . . . . . . . . . . 107
\acmJournal: Setting \@printendtopmatter: Deleted
\@ACM@journal@bibstrip . . . . . 66 grouping . . . . . . . . . . . . . . . . . 98
\if@ACM@journal@bibstrip: \@specialsection: Changed dot to
Introduced macro . . . . . . . . . . . 39 colon for sigplan . . . . . . . . . . . . 85
firstpagestyle: Added logic for \ACM@linecountR: Do not increase
conference papers using journal numbers in one column format . 100
format . . . . . . . . . . . . . . . . . . 104 \ccsdesc@parse: Use math right
Moved page styles to arrow in text . . . . . . . . . . . . . . 75
\AtBeginDocument . . . . . . . . . 104 v1.71
standardpagestyle: Added logic for \l@subsubsection: Bug fixed (thanks
conference papers using journal to Andrew Black) . . . . . . . . . . . 47
format . . . . . . . . . . . . . . . . . . 101 v1.72
Moved page styles to General: Added hyperxmp . . . . . . . 48
\AtBeginDocument . . . . . . . . . 101 \author: Added \detokenize
v1.60 (Kuldeep S. Meel) . . . . . . . . . . . 67
\@headfootfont: Moved to \maketitle: Do not andify authors
footnotesize . . . . . . . . . . . . . . 101 for pdf metadata (Scott Pakin) . . . 82
v1.61 v1.73
\@typeset@author@bx: Added General: Patching minted and minted*
\normalbaselines . . . . . . . . . . 94 to prevent spurious space
v1.64 warnings . . . . . . . . . . . . . . . . . 55
\ACM@linecount@bx: Bug fix: made \@ACM@checkaffil: Added macro . . 93
the spacing on the left and the \@ACM@resetaffil: Added macro . . 93
right size equal . . . . . . . . . . . . . 99 \@mkauthors@i: Check the presence
\if@ACM@maketitle@typeset: of required elements for
Introduced macro . . . . . . . . . . . 59 affiliations . . . . . . . . . . . . . . . . 93
\maketitle: Added a switch setting to \@mkauthors@iii: Check the
show that \maketitle is typeset . 82 presence of required elements for
v1.65 affiliations . . . . . . . . . . . . . . . . 94
\@mkauthorsaddresses: Deleted \@mkauthors@iv: Check the presence
cs@addpunct . . . . . . . . . . . . . . 96 of required elements for
v1.66 affiliations . . . . . . . . . . . . . . . . 95
General: Patching algorithm and \city: Check the presence in affil . . 91
algorithm* to prevent spurious \country: Check the presence in affil 91

123
\if@ACM@citypresent: Added macro 93 \@mktitle@iii: Added
\if@ACM@countrypresent: Added \translatedtitle and
macro . . . . . . . . . . . . . . . . . . . 93 \translatedsubtitle . . . . . . . 89
\if@ACM@instpresent: Added macro 93 \@mktitle@iv: Added
\institution: Check the presence in \translatedtitle and
affil . . . . . . . . . . . . . . . . . . . . . 91 \translatedsubtitle . . . . . . . 90
\maketitle: Do not check again the \@mktranslatedabstract: Added
presense of address fields . . . . . . 82 macro . . . . . . . . . . . . . . . . . . . 98
v1.74 \@mktranslatedkeywords: Added
General: Changed the order of font macro . . . . . . . . . . . . . . . . . . . 70
loading . . . . . . . . . . . . . . . . . . 54 \@translatedabstracts: Added
v1.75 macro . . . . . . . . . . . . . . . . . . . 45
\@ACM@checkaffil: Changed warning \@translatedkeywords: Added
to error for country . . . . . . . . . . 93 macro . . . . . . . . . . . . . . . . . . . 45
\@beginmaketitlehook: Introduced \@translatedsubtitle: Added
macro . . . . . . . . . . . . . . . . . . . 82 macro . . . . . . . . . . . . . . . . . . . 45
\AtBeginMaketitle: Introduced \@translatedtitle: Added macro . 44
macro . . . . . . . . . . . . . . . . . . . 82 \ACM@lang@check: Added macro . . . 44
\maketitle: Added \ACM@languages: Introduced macro . 38
\@beginmaketitlehook . . . . . . 82 \maketitle: I13n . . . . . . . . . . . . . 82
v1.76 translatedabstract: Added macro 45
General: Moved hyperxmp before \translatedkeywords: Added macro 45
hyperref, see https: \translatedsubtitle: Added macro 45
//github.com/borisveytsman/
\translatedtitle: Added macro . . 44
acmart/issues/425 . . . . . . . . . 48
v1.85
\author: Added code for orcid links . 67
General: Added CC licenses . . . . . . 76
\if@ACM@pbalance: Added macro . . 37
\@acmengagemetadata: Introduced
\maketitle: Put \par inside group
macro . . . . . . . . . . . . . . . . . . . 82
for keywords . . . . . . . . . . . . . . 82
\@copyrightowner: Added CC
\orcid: Added code for orcid links . . 69
licenses . . . . . . . . . . . . . . . . . . 77
standardpagestyle: Fixed bug with
no line numbers for nonacm . . . 101 \@copyrightpermission: Added CC
v1.77 licenses . . . . . . . . . . . . . . . . . . 78
\@mkauthorsaddresses: New \@typesetengagemetadata:
separator of institutions . . . . . . . 96 Introduced macro . . . . . . . . . . . 99
v1.78 \if@ACM@engage: Introduced macro . 39
\@mkauthors@i: Unboxing \maketitle: acmengage . . . . . . . . . 82
\mktitle@bx . . . . . . . . . . . . . . 93 \setcctype: Added macro . . . . . . . 77
\@mkauthors@iii: Unboxing \setengagemetadata: Introduced
\mktitle@bx . . . . . . . . . . . . . . 94 macro . . . . . . . . . . . . . . . . . . . 82
\@mkteasers: Unboxing \mktitle@bx 97 v1.86
\@printtopmatter: Added processing \country: Error if country is empty . 91
the overflowing title box . . . . . . 86 standardpagestyle: Special
\@specialsection: Again suppressed treatment of ACM Engage
\vspace warning . . . . . . . . . . . 85 materials . . . . . . . . . . . . . . . . 101
v1.82 v1.87
\anon: Introduced macro . . . . . . . . 81 General: Added ‘framed’ package for
v1.83 acmcp . . . . . . . . . . . . . . . . . . . 41
General: Use babel for multilanguage No numbering sections for ACMCP 108
papers . . . . . . . . . . . . . . . . . . . 43 \@ACM@copyright@check@cc: Added
\@mkabstract: I13n . . . . . . . . . . . . 97 macro . . . . . . . . . . . . . . . . . . . 78
\@mktitle@i: Added \@copyrightpermission: CC licenses
\translatedtitle and now are allowed only for non-acm
\translatedsubtitle . . . . . . . 89 or ACM engage publications . . . . 78

124
\@mkauthors@i: Special treatment for firstpagestyle: Special treatment
acmcp . . . . . . . . . . . . . . . . . . . 93 for acmcp . . . . . . . . . . . . . . . 104
\@mktitle@i: Special treatment for \maketitle: CC license are allowed
acmcp . . . . . . . . . . . . . . . . . . . 89 for non-acm publications . . . . . . 82
\acmArticleType: Introduced macro 74 \set@ACM@acmcpbox: Added macro . 85
\acmCodeLink: Added possibility to
have several links . . . . . . . . . . . 74 standardpagestyle: Special
Introduced macro . . . . . . . . . . . 74 treatment of ACMCP . . . . . . . . 101
\acmDataLink: Introduced macro . . 75 v1.88
Now this is the same as the code link 75 \@mktitle@i: Moved down title for
\if@ACM@acmcp: Introduced macro . . 39 acmcp . . . . . . . . . . . . . . . . . . . 89

125
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 \@ACM@engagetrue . . . 223 \@Description@presentfalse


\$ . . . . . . . . . . 2162, 2166 \@ACM@institution@separator . . 873, 876, 951, 2779
\- . . . . . . . . . . . . . . 610 . . . 2755, 2756, 2761 \@Description@presenttrue
\@ 1854, 1866, 1869, 1872, \@ACM@instpresentfalse . . . . . . . . . 867, 870
1877, 1975, 1996, 2009 . . . . . . . . . . . 2586 \@M . 476, 515, 533, 542, 3499
\@@authornotemark . . \@ACM@instpresenttrue \@abstract 1648, 2787, 2794
. . . . . . . 1590, 2773 . . . 2489, 2500, 2580 \@acmArticle . . . . . .
\@@par . . . . . . . . 476, 533 \@ACM@journal@bibstripfalse 1596, 1599, 2161,
\@ACM@acmcpbox . . . . . . . . . . . . 232, 1442 2812, 2813, 2941,
2226, 2230, 3049, 3168 \@ACM@journal@bibstriptrue 2944, 2964, 2974,
\@ACM@acmcpfalse . . . 169 . . . . . . . . 230, 1428 2985, 3053, 3096,
\@ACM@acmcptrue . . . . 226 \@ACM@journalfalse . 3115, 3125, 3135, 3172
\@ACM@addtoaddress . . . . . . . . . . 211, \@acmArticlePage . . .
2477, 2505, 2506, 2508 213, 215, 217, 219, 222 2940, 2958, 2959,
\@ACM@authorsperrow \@ACM@journaltrue . . 2968, 2971, 2978, 2982
. . . . . . . . 1677, 203, 205, 207, 209, 225 \@acmArticleSeq 1598, 3079
2652, 2653, 2705, 2706 \@ACM@labelwidth 1001, \@acmBadgeL@image . .
\@ACM@badge@skip . . . 1004, 1012, 1017, 1043 . . . . 1630, 1632,
. . . . 1621, 2318, \@ACM@maketitle@typesetfalse 2315, 2317, 2412,
2414, 2418, 2424, . . . . . . . . . . . 1050 2421, 2423, 2448, 2450
2436, 2446, 2452, 2461 \@ACM@maketitle@typesettrue\@acmBadgeL@url . 1629,
\@ACM@badge@width . . . . . . . . . . . . . 2073 1631, 2316, 2422, 2449
. . . . 1618, 2317, \@ACM@manuscriptfalse 198 \@acmBadgeR@image . .
2322, 2413, 2417, \@ACM@manuscripttrue 196 . . . . 1625, 1627,
2423, 2438, 2445, \@ACM@newfontsfalse 2320, 2322, 2416,
2447, 2450, 2462, 2465 . . . . . . 831, 834, 837 2435, 2438, 2463, 2465
\@ACM@badgefalse . . . 1617 \@ACM@newfontstrue . 828 \@acmBadgeR@url . 1624,
\@ACM@badgetrue 1623, 1628 \@ACM@printacmreffalse 1626, 2321, 2437, 2464
\@ACM@balancefalse . . . . . . . . . . . 95, 227 \@acmBooktitle . . . .
. . . . 3401, 3425, \@ACM@printfoliostrue 78 1448, 2130, 2151, 2828
3427, 3429, 3441, 3445 \@ACM@resetaffil . . . \@acmCodeDataLink . .
\@ACM@checkaffil 2197, 2585, 2620, 2625, . . . . 1738, 1739,
2590, 2621, 2626, 2687, 2692, 2732, 2737 1741, 1743, 2235, 2236
2688, 2693, 2733, 2738 \@ACM@reviewtrue . . . 140 \@acmDOI . . 1614, 2153,
\@ACM@citypresentfalse \@ACM@screentrue 1166, 2156, 2163, 2167,
. . . . . . . . . . . 2587 1210, 1216, 1226, 1232 2836, 2997, 2999,
\@ACM@citypresenttrue \@ACM@sigchiamodefalse 3021, 3023, 3054, 3173
. . . 2491, 2505, 2582 . . . . . . . . . . . . 200 \@acmEditors 1456, 1457,
\@ACM@color@frame . . 2223 \@ACM@sigchiamodetrue 220 1458, 1461, 2829, 2830
\@ACM@commabox . . . . \@ACM@timestamptrue 139 \@acmISBN . . . . . 1612, 2165
. . . 2477, 2481, 2482 \@ACM@title@width . . \@acmMonth 1602, 1604, 2161
\@ACM@copyright@check@cc . . . . . . . . 1620, \@acmNumber . . . . . . .
. . . . . . . 1888, 2027 2411, 2413, 2414, 1594, 2825, 2964,
\@ACM@countrypresentfalse 2417, 2418, 2429, 2974, 2985, 3052,
. . . . . . . . . . . 2588 2443, 2445, 2446, 2454 3115, 3125, 3135, 3171
\@ACM@countrypresenttrue \@DeclareACMFormat 38, \@acmPrice 1608, 2162, 2166
. . . 2496, 2508, 2584 39, 40, 41, 42, 43, \@acmPubDate . . . . . .
\@ACM@engagefalse . . 167 44, 45, 46, 47, 48, 49 1604, 2825, 2964,

126
2974, 2985, 3054, \@article@string . . . \@copyrightyear . . . .
3116, 3126, 3136, 3173 . . . 2812, 2825, 2833 . . . 2045, 2137, 2139
\@acmSubmissionID . . \@author . . . . . . . . . \@currbox . . . 980, 981, 982
. . . . . . . . 1482, 1481, 1487, 1494, \@currentaffiliation
1483, 1502, 1503, 2606, 2671, 2718, 2762 2645, 2648, 2670,
1610, 2921, 2922, 2932 \@authorfont 2538, 2543, 2677, 2678, 2681,
\@acmVolume . . . . . . . 2547, 2550, 2553, 2684, 2685, 2690,
1592, 2825, 2963, 2556, 2559, 2562, 2717, 2724, 2725,
2973, 2984, 3052, 2565, 2568, 2608, 2644 2727, 2729, 2730, 2735
3114, 3124, 3134, 3171 \@authornotemark . . . \@currentaffiliations
\@acmYear . . 1600, 1607, . . . 1582, 1588, 2772 . . . . . . . . 2574,
2046, 2130, 2161, 2816 \@authornotes . . . . . 2575, 2576, 2578,
\@acmdefinitionbodyfont . . . 1579, 1583, 2093 2604, 2616, 2617, 2623
. . . 3312, 3324, 3338 \@authorsaddresses . \@currentauthors . . .
\@acmdefinitionheadfont . . . . . . . . 1554, . . . . 2572, 2573,
. . . 3314, 3326, 3340 2102, 2241, 2767, 2846 2603, 2607, 2608,
\@acmdefinitionindent \@auxout . . . . . . . . . 646 2610, 2644, 2647,
. . . 3313, 3325, 3339 \@begindocumenthook 642 2669, 2671, 2672,
\@acmdefinitionnotefont \@beginmaketitlehook 2674, 2716, 2718,
. . . 3315, 3327, 3343 . . . 2063, 2066, 2072 2719, 2721, 2772, 2773
\@acmengagemetadata \@botnum . . . . . . . . . 2216 \@currentlabel . 560, 574
. . . 2067, 2069, 2849 \@citestyle . . . . . . . 308 \@dblarg . . . . . . . . . 462
\@acmownedfalse . . . . \@classname . . . . . . . \@dblfloat . . . . . . . . 963
. . . . 1797, 1800, 24, 26, 35, 53, 55, \@department . . 1532, 1533
1803, 1809, 1813, 56, 61, 63, 64, 69, \@dotsep . . . . . . . . . 3279
1816, 1819, 1822, 71, 72, 77, 80, 81, \@editorsAbbrev . . . .
1828, 1831, 1835, 1839 86, 88, 89, 94, 100, . . . 1455, 1460, 2830
\@acmownedtrue . . . . 101, 105, 109, 114, \@empty . . . . . . . 155,
. . . 1784, 1793, 1825 116, 117, 122, 124, 234, 378, 418, 466,
\@acmplainbodyfont . 125, 130, 132, 133, 1439, 1457, 1479,
. . . 3280, 3292, 3306 138, 142, 143, 161, 1482, 1500, 1502,
\@acmplainheadfont . 171, 177, 183, 260, 1507, 1508, 1514,
. . . 3282, 3294, 3308 419, 443, 829, 832, 1638, 1639, 1695,
\@acmplainindent . . . 835, 872, 881, 884, 1696, 1702, 1709,
. . . 3281, 3293, 3307 954, 1167, 1211, 1738, 1747, 1773,
\@acmplainnotefont . 1217, 1227, 1233, 2064, 2097, 2102,
. . . 3283, 3295, 3311 1423, 1425, 1472, 2153, 2162, 2165,
\@adddotafter . . . . . 1527, 1541, 1635, 2166, 2167, 2178,
3187, 3188, 3190, 1641, 1646, 1653, 2181, 2187, 2191,
3202, 3217, 3221, 3274 1655, 1656, 1659, 2235, 2238, 2241,
\@additionalaffiliation 1661, 1662, 1665, 2275, 2315, 2320,
. . . . . . . 1528, 1529 1673, 1675, 1676, 2412, 2416, 2421,
\@addpunct . 2759, 2845, 1678, 1679, 1727, 2432, 2435, 2448,
2846, 3274, 3275, 3395 1775, 1890, 1894, 2456, 2463, 2473,
\@addspaceafter . . . . 3275 1897, 2592, 2595, 2495, 2574, 2607,
\@affiliationfont . . 2598, 2768, 2782, 2615, 2616, 2671,
. . . . 2539, 2544, 2809, 3503, 3506, 3513 2677, 2684, 2718,
2548, 2551, 2554, \@clubpenalty . . . . . 521 2724, 2729, 2767,
2557, 2560, 2563, \@concepts . 1747, 1759, 2775, 2812, 2817,
2566, 2569, 2621, 2644 1773, 2181, 2183, 2201 2829, 2836, 2921,
\@afterheading . 507, 2219 \@copyrightowner . . . 2932, 2997, 2999,
\@afterindentfalse . . . . . . . . 1848, 2137 3021, 3023, 3053,
. . . . . . . . 453, 2218 \@copyrightpermission 3054, 3172, 3173,
\@afterindenttrue . . 451 . . . 1904, 2113, 2125 3283, 3315, 3464, 3481

127
\@endfloatbox . . . . . 966 \@journalCode . . . . . 1404, 1408, 1412,
\@endpefalse . . . . . . 3397 1051, 1167, 1211, 1416, 1420, 1431,
\@endwidefloatbox 966, 974 1217, 1227, 1233, 1423 2824, 2963, 2973,
\@finalstrut . . . 565, 578 \@journalCode@nr . . . 2984, 3114, 3124, 3134
\@float . . . . . . . . . . 968 . . . 1051, 1123, 1429 \@keywords . . . . . 1637,
\@flushglue . . . . . . . 3231 \@journalName . . . . . 1638, 1639, 2187,
\@fnsymbol . . . . . . . . 2083 . . . . 1125, 1129, 2189, 2202, 2238, 2239
\@folio@ht . . . . . . . . 1133, 1137, 1141, \@latex@error . . . . . 352
3059, 3086, 3092, 3093 1145, 1149, 1154, \@lempty . . . . . 1650, 2787
\@folio@max 3059, 3082, 3083 1158, 1162, 1169, \@listI . . . . . . 1025, 1029
\@folio@voffset 3059, 3088 1173, 1177, 1181, \@listi . . . . . . 1022, 1029
\@folio@wd . . . . . 3059, 1186, 1190, 1194, \@listii . . . . . . . . . 1030
3093, 3094, 3121, 3131 1198, 1203, 1207, \@listiii . . . . . . . . . 1033
\@folioblob . . . . 3079, 1213, 1219, 1223, \@listiv . . . . . . . . . 1035
3118, 3120, 3128, 3129 1229, 1235, 1239, \@listv . . . . . . . . . . 1037
\@footnotemark . 582, 2081 1243, 1248, 1252, \@listvi . . . . . . . . . 1039
\@footnotemark@nolink 1256, 1260, 1264, \@m . . . . . . . . . . . . . . 464
. . . . . . . . 582, 2081 1268, 1272, 1276, \@makefnmark . . . 555,
\@footnotetext . . . . 1280, 1284, 1288, 580, 2085, 2090, 2094
. . . . . 556, 583, 2082 1292, 1296, 1300, \@makefntext . . . . . .
\@footnotetext@nolink 1304, 1308, 1312, . . 555, 564, 577, 2096
. . . . . . . . 583, 2082 1316, 1320, 1324, \@marginfigure . 946, 947
\@for . . . . . . . . . . . . 284 1328, 1332, 1336, \@margintable . . 957, 958
\@formatdoi . . . . 1887, 1340, 1344, 1348, \@minipagefalse . 789, 976
2156, 2163, 2167, 1353, 1358, 1362, \@minus 3207, 3211, 3215,
2836, 2997, 2999, 1366, 1371, 1375, 3219, 3223, 3228,
3021, 3023, 3054, 3173 1379, 1383, 1387, 3303, 3305, 3335, 3337
\@fps . . . . . . . . . . . . 967 1391, 1395, 1399, \@mkabstract . . 2177, 2786
\@fpsadddefault . . . . 967 1403, 1407, 1411, \@mkauthors 2086, 2088, 2510
\@gobble . . . . . . 306, 350 1415, 1419, 1430, \@mkauthors@i . . . . .
\@hangfrom . . . . . 475, 532 1431, 2149, 3052, 3171 . . . . 2514, 2516,
\@headfootfont . . . . \@journalNameShort . 2518, 2520, 2534, 2602
. . . . 2934, 2958, . . . . 1126, 1130, \@mkauthors@ii . . . . 2637
2959, 2960, 2961, 1134, 1138, 1142, \@mkauthors@iii . . . .
2967, 2970, 2977, 1146, 1150, 1155, . . . . 2522, 2524,
2981, 2989, 2990, 1159, 1164, 1170, 2526, 2528, 2532, 2649
2996, 2998, 3002, 1174, 1178, 1182, \@mkauthors@iv 2530, 2702
3005, 3013, 3014, 1187, 1191, 1195, \@mkauthorsaddresses
3020, 3022, 3026, 3029 1199, 1204, 1208, . . . . . . . 1555, 2746
\@idxitem . . . . . . . . . 3496 1214, 1220, 1224, \@mkbibcitation 2212, 2803
\@ifnextchar . . . . . . 1532 1230, 1236, 1240, \@mkteasers . . . 2086, 2774
\@ifnotempty . . . . . . 2051 1244, 1249, 1253, \@mktitle . . . . . 2086, 2331
\@ifnum . . . . . . . 322, 324 1257, 1261, 1265, \@mktitle@i 2334, 2336,
\@ifstar . . . . . . . . . 460 1269, 1273, 1277, 2338, 2340, 2354, 2407
\@ifundefined . . . . . 1281, 1285, 1289, \@mktitle@ii . . . . . . 2441
3348, 3351, 3354, 1293, 1297, 1301, \@mktitle@iii . . . . .
3357, 3360, 3364, 3367 1305, 1309, 1313, . . . . 2342, 2344,
\@iiiparbox . . . . . . . 792 1317, 1321, 1325, 2346, 2348, 2352, 2441
\@indextitlestyle . . 3495 1329, 1333, 1337, \@mktitle@iv . . 2350, 2469
\@input . . . . . . . . . . 544 1341, 1345, 1349, \@mktranslatedabstract
\@insideauthorgroupfalse 1354, 1359, 1363, . . . . . . . . 441, 2796
. . . . . . . 1470, 1522 1367, 1372, 1376, \@mktranslatedkeywords
\@insideauthorgrouptrue 1380, 1384, 1388, . . . . . . . . 438, 1556
. . . . . . . . . . . 1477 1392, 1396, 1400, \@mpargs . . . . . . . . . 792

128
\@mparswitchfalse . . 738 \@printendtopmatter \@subtitlenotes . . . .
\@mpfootins . . . . . . . . . . . . . . 2217, 2838 1569, 1573, 1576, 2092
569, 570, 784, 785, 787 \@printpermissionfalse \@svsec . 466, 469, 475, 490
\@mpfootnotetext . . . 568 . . . . . . . . . . . 1795 \@svsechd . . . 488, 516, 536
\@ne . 310, 314, 318, 320, \@printpermissiontrue \@teaser . . . . . 2049, 2776
632, 2863, 2869, 2873 . . . 1782, 1791, 1807 \@teaserfigures . . . .
\@nil . . . . . . . . . . . . 329 \@printtopmatter . . . 2047, 2049, 2775, 2780
\@nobreakfalse . 509, 549 . . . . . . . 2087, 2274 \@tempa . . . . . . . 284,
\@noskipsecfalse . . . 513 \@proofindent . . . . . 285, 287, 289, 291,
\@noskipsectrue . . . . 510 . . . 3374, 3384, 3394 293, 295, 297, 299,
\@pages@word . . . . . . \@proofnamefont . . . . 301, 303, 305, 307,
. . . 2806, 2826, 2833 . . . 3373, 3383, 3395 309, 311, 313, 315,
\@par . . . . . . . . 2099, 2106 \@received . 1693, 1696, 317, 319, 321, 323,
\@parboxrestore . . . . 573 1697, 1699, 1702, 325, 327, 329, 332,
\@parfont . . . . . . . . . 1703, 1705, 1709, 1710 334, 336, 338, 340,
3221, 3225, 3230, 3235 \@restonecolfalse . . 3493 342, 1506, 1507,
\@permissionCodeOne \@restonecoltrue . . . 3493 1694, 1695, 2494,
. . . . 1127, 1131, \@rightskip . . . 3231, 3232 2495, 2615, 3464,
1135, 1139, 1143, \@saveabstract 1644, 1645 3480, 3481, 3483, 3487
1147, 1151, 1156, \@saveteaser . . 2048, 2049 \@tempb . . . . . . . . . .
1160, 1165, 1171, \@savetranslatedabstract 285, 287, 289, 291,
1175, 1179, 1183, . . . . . . . . . 441, 442 293, 295, 297, 299,
1188, 1192, 1196, 301, 303, 305, 307,
\@seccntformat . 469, 526
1200, 1205, 1209, 309, 311, 313, 315,
\@secfont . . . . . 3209, 3235
1215, 1221, 1225, 317, 319, 321, 323,
\@secpenalty . . . . . . 458
1231, 1237, 1241, 325, 327, 332, 334,
\@sect . . . . . . . . 462, 463
1245, 1250, 1254, 336, 338, 340, 342,
\@setaddresses . . . . 2771 3482, 3483, 3486, 3487
1258, 1262, 1266,
\@setauthorsaddresses \@tempboxa . 792, 2284, 2286
1270, 1274, 1278,
. . . 2106, 2241, 2846 \@tempc . 330, 331, 333,
1282, 1286, 1290,
\@setengagemetadata 335, 337, 339, 341, 343
1294, 1298, 1302,
. . . . . . . 2070, 2848 \@tempcnta . 3079, 3080,
1306, 1310, 1314,
\@setthanks . . . 2099, 2845 3082, 3083, 3085, 3087
1318, 1322, 1326,
1330, 1334, 1338, \@shortauthors . . . . \@tempdima . . . . . . . .
1342, 1346, 1350, 2929, 2952, 2960, 2280, 2281, 2282,
1355, 1360, 1364, 2968, 2978, 2990, 3014 2288, 2289, 2290,
1368, 1373, 1377, \@sidebar . . . . . . 942, 943 3086, 3087, 3088, 3090
1381, 1385, 1389, \@specialsection . . . \@tempskipa . . . . . . .
1393, 1397, 1401, 1558, 2182, 2188, 2244 450, 452, 453, 458,
1405, 1409, 1413, \@ssect . . . . . . . 461, 527 471, 472, 503, 504,
1417, 1421, 1432, 2161 \@startPage . . . . 1633, 506, 518, 519, 528, 529
\@permissionCodeTwo 2275, 2276, 2278, 2926 \@textbottom . . . . . . 793
. . . . . . . . 1152, \@startsection . 447, \@textsuperscript . .
1184, 1201, 1246, 539, 3206, 3210, . . . . 580, 2085, 2090
1351, 1356, 1369, 1433 3214, 3218, 3222, 3227 \@texttop . . . . . . . . . 794
\@plus . . . . . 542, 550, \@starttoc . . . . . . . . 539 \@thefnmark . 561, 575,
793, 3207, 3211, \@subparfont . . . . . . 3260 580, 2085, 2090, 2095
3215, 3219, 3223, \@subsecfont . . 3213, 3235 \@title . . . 1562, 2200,
3228, 3302, 3304, \@subsubsecfont 3217, 3235 2431, 2455, 2472, 2816
3334, 3336, 3392, 3497 \@subtitle . 1463, 1571, \@titlefont 2357, 2420,
\@printcopyrightfalse 2432, 2433, 2456, 2430, 2442, 2454, 2470
. . . . . . . 1796, 1808 2457, 2473, 2474, 2817 \@titlenotes . . . . . .
\@printcopyrighttrue \@subtitlefont . . . . 1560, 1564, 1567, 2091
. . . . . . . 1780, 1792 2382, 2433, 2457, 2474 \@tochangmeasure 480, 493

129
\@toclevel . . . . . . . . 464 959, 965, 2080, 195, 201, 235, 593,
\@tocline . . . 552, 553, 554 2246, 2805, 2840, 3502 678, 757, 795, 915,
\@topnum . . . . . . . . . 2214 \@width . . . . . . . 773, 780 984, 2247, 2294,
\@translatedabstracts \@xp . . . . . . . . . . 546, 547 2332, 2358, 2383,
. 439, 446, 2178, 2179 \@xsect . . . . 501, 502, 538 2512, 2540, 2884,
\@translatedkeywords \\ . . . . 663, 672, 1482, 2948, 3066, 3105,
. 436, 438, 2191, 2192 1741, 2031, 2137, 3151, 3240, 3284,
\@translatedsubtitle 2142, 2157, 2162, 3316, 3375, 3402, 3423
. . . . . . . . . 433, 2166, 2236, 2808, \ACM@lang@check . . . .
435, 2433, 2457, 2474 2816, 2868, 3054, 3173 417, 431, 434, 437, 445
\@translatedtitle 430, \{ . . . . . . . . . . . . . . 292 \ACM@languages . . . .
432, 2431, 2455, 2472 \} . . . . . . . . . . . . . . 292 . . . 153, 378, 380, 418
\@typeset@author@bx \␣ . . . 1453, 1755, 1765, \ACM@linecount . . . .
. . . . . . . . 2641, 2137, 2139, 2162, . . . . 2862, 2863,
2695, 2701, 2740, 2745 2812, 2813, 2831, 2926 2868, 2869, 2872, 2873
\@typeset@author@line \ACM@linecount@bx . .
2571, 2605, 2629, 2634 A . . . 2859, 2879, 2909
\@typesetengagemetadata \abstract . . . . . . . . . 1644 \ACM@linecount@bxht
. . . . . . . 2175, 2847 abstract (env.) . . . . . . 18 2861, 2867, 2870, 2871
\@undefined . . . . . . . \abstractname . . 376, \ACM@linecountL . . . .
. 642, 860, 1450, 2063 389, 2788, 2792, 2800 . . . . 2875, 2950,
\@undescribed@imagesfalse \acks . . . . . . . . . . . . 3455 2953, 2958, 2961,
. . . . . . . . . . . . 869 acks (env.) . . . . . . . . . . 24 2967, 2969, 2977,
\@undescribed@imagestrue \acksname 387, 398, 406, 2979, 2989, 2992,
. . 880, 883, 953, 2781 414, 3454, 3457, 3458 2996, 3002, 3013,
\@vspace 874, 877, 885, \ACM@adddotafter . . . 3016, 3020, 3026,
887, 889, 891, 893, . . . . . . . 3188, 3205 3048, 3107, 3118,
895, 897, 899, 901, \ACM@ArticleType . . . 3119, 3129, 3130,
903, 943, 948, 958, . . . 1712, 3047, 3166 3138, 3141, 3146, 3167
964, 2079, 2245, \ACM@ArticleType@nr \ACM@linecountR . 2882,
2271, 2804, 2839, 1712, 1714, 3045, 3164 2980, 2982, 2990,
2842, 3501, 3503, 3509 \ACM@cc@type . . . 1846, 2993, 3000, 3007,
\@vspace@acm . . . . . . 2028, 2030, 2031, 3014, 3017, 3024,
. . . 2271, 2842, 3509 2034, 2035, 2036, 3031, 3139, 3142, 3147
\@vspace@orig 874, 877, 2037, 2038, 2039, 2040 \ACM@mk@linecount . .
885, 887, 889, 891, \ACM@CC@Url . . . . . . . . . . . 2864, 2877,
893, 895, 897, 899, 2029, 2030, 2031, 2032 2892, 2894, 2896,
901, 903, 943, 948, \ACM@cc@version . . . . 2898, 2900, 2902, 2904
958, 964, 2079, . . . 1845, 2030, 2041 \ACM@NR@adjustedSectionformat
2245, 2804, 2839, 3501 \acm@copyrightinput 1786 . . . . . . . 3185, 3194
\@vspacer 875, 878, 886, \acm@copyrightmode . \ACM@NRadjust . . . . .
888, 890, 892, 894, . . . . . . . . 1786, 3176, 3209, 3213,
896, 898, 900, 902, 1794, 1799, 1802, 3217, 3221, 3225, 3230
904, 944, 949, 959, 1806, 1812, 1815, \ACM@origbaselinestretch
965, 2080, 2246, 1818, 1821, 1824, . . . . . . . . . . . 3511
2272, 2805, 2840, 1827, 1830, 1834, \ACM@ps@headings . . .
2843, 3502, 3506, 3510 1838, 1849, 1905, 2112 . . . . . . . 2853, 2857
\@vspacer@acm . . . . . \ACM@fontsize 146, 234, \ACM@ps@myheadings .
. . . 2272, 2843, 3510 237, 239, 241, 243, . . . . . . . 2852, 2856
\@vspacer@orig . 875, 245, 247, 249, 251, \ACM@ps@plain . 2851, 2855
878, 886, 888, 890, 253, 255, 257, 260, 261 \ACM@restore@pagestyle
892, 894, 896, \ACM@format . . . . . 32, 161 . . . . . . . . . . . 2851
898, 900, 902, \ACM@format@nr . . 32, \ACM@sect@format . . .
904, 944, 949, 161, 170, 176, 182, . . . . . . . 3195, 3197

130
\ACM@sect@format@ . . \advance . . . . . . . . . \authornotemark . 14, 1586
. . . 3184, 3197, 3199 1026, 1031, 1034, \authors . . . . . . . . .
\ACM@sect@format@null 1036, 1038, 1040, 1484, 1489, 1496,
. . . . . . . 3198, 3199 1474, 1476, 1733, 2195, 2207, 2209, 2816
\ACM@timestamp . . . . 2281, 2289, 2409, \authorsaddresses 14, 1554
2912, 3039, 3152, 3157 2413, 2414, 2417,
\acmArticle . . . . 14, 1596 2418, 2445, 2446, B
\acmArticleSeq . 15, 1598 2631, 2651, 2668, \balance . . . . . . . . . 3452
\acmArticleType . 20, 1712 2704, 2715, 2869, \baselineskip . . . . .
\acmBadgeL . . . . . 15, 1628 2873, 3083, 3085, 3088 . . . . 2123, 2422,
\acmBadgeR . . . . . 15, 1623 \affiliation . . . . 10, 2437, 2449, 2464,
\acmBooktitle . . . 9, 1448 1521, 2614, 2684, 2729 2870, 3207, 3208,
\acmCodeLink 20, 1737, 1744 \and . . . . . . 1461, 1494, 3211, 3212, 3215,
\acmConference . . 9, 1434 1496, 1511, 1517, 3219, 3223, 3302,
\acmConference@date 2605, 2610, 2612, 3303, 3304, 3305,
. . . . 1437, 2132, 2623, 2629, 2642, 3334, 3335, 3336, 3337
3004, 3007, 3028, 3031 2676, 2695, 2701, \baselinestretch . . .
\acmConference@name 2723, 2740, 2745, 2761 . . . 3511, 3512, 3514
1436, 1450, 1451, 1452 \andify . . . . . . . 2207, \begin . 19, 2878, 2908, 3089
\acmConference@shortname 2208, 2572, 2575, 2830 \begingroup . . . . 473,
1435, 1439, 1440, \anon . . . . . . . . . 24, 2057 516, 530, 539, 631,
1452, 1453, 2132, anonsuppress (env.) . . . 24 2078, 2510, 3177, 3456
3003, 3006, 3027, 3030 \apptocmd . . . . . 3503, 3506 \bfseries . . . . . . . . .
\acmConference@venue \AtBeginDocument . 78, 1041, 2119, 2360,
. . . . 1438, 2132, 95, 227, 635, 643, 2362, 2364, 2368,
3004, 3007, 3028, 3031 1002, 1804, 1810, 2370, 2372, 2374,
\acmDataLink . . . 20, 1744 1832, 1836, 1840, 2376, 2378, 2380,
\acmdefinition . . . . 3333 2858, 2935, 3099, 3200 2559, 2562, 2814,
\acmDOI . . . . . . . 15, 1614 \AtBeginEnvironment 3096, 3235, 3236,
\acmISBN . . . . . . 15, 1612 . . . 873, 876, 885, 3250, 3251, 3253,
\acmJournal . . . . . 9, 1427 887, 889, 891, 893, 3254, 3256, 3257,
\acmMonth . . . . . . 14, 1602 895, 897, 899, 901, 903 3258, 3259, 3263,
\acmNumber . . . . . 14, 1594 \AtBeginMaketitle 31, 2066 3264, 3267, 3268,
\acmplain . . . . . . . . . 3301 \AtEndDocument . . . . 3270, 3271, 3294, 3326
\acmPrice 15, 1608, 1804, . . . . . 871, 1639, \bgroup . 446, 943, 947,
1810, 1832, 1836, 1840 1663, 1708, 1773, 958, 964, 1529,
\acmSubmissionID 15, 1610 2222, 2766, 3449, 3512 1556, 2181, 2187,
\acmVolume . . . . . 14, 1592 \AtEndEnvironment 879, 882 2228, 2641, 2678,
\acmYear . . . . . . 14, 1600 \AtEndPreamble . 608, 2681, 2742, 2751,
\addcontentsline 280, 861, 3345, 3399, 3465 2776, 2786, 2803, 2815
482, 495, 2788, 3458 \author . . . . . . . . 10, \bibfont . . . . . . . . . 282
\additionalaffiliation 1471, 2075, 2076, 2810 \bibliofont . . . . . . . 282
. . . . . . . . . 11, 1528 \author@bx 2637, 2643, 2646 \bibliographystyle . 641
\addpenalty . . . . . . . 458 \author@bx@sep . . . . \bibsection . . . . . . . 278
\addresses . . . . . . . . . . . . 2639, 2646, \bibstyle 306, 308, 350, 646
1479, 1481, 1486, 2651, 2668, 2704, 2715 \bibstyle@acmauthoryear
1493, 1524, 1544, \author@bx@wd . . . . . . . . . . . . . . . . . 356
1582, 1588, 1590, . . . . 2638, 2641, \bibstyle@acmnumeric 362
2634, 2701, 2745, 2764 2650, 2651, 2653, \bigskip . . 1710, 2312,
\addto . . 381, 392, 400, 408 2659, 2661, 2663, 2440, 2468, 2476,
\addtocounter . . 586, 1767 2665, 2668, 2703, 2701, 2745, 2776, 2841
\addtolength 1010, 1011, 2704, 2706, 2712, 2715 \box . . . . . . 981, 2296,
1012, 1016, 1017, 2870 \authornote . . . . . . . 2298, 2300, 2302,
\addvspace . . . . . 458, 550 . 14, 1528, 1580, 2811 2304, 2306, 2308,

131
2310, 2312, 2326, 835, 881, 884, 954, \DeclareTextFontCommand
2328, 2646, 3049, 3168 1472, 1541, 1635, . . . . . . . . . . . . 862
1679, 2782, 3503, 3506
\def 24, 38, 147, 153, 237,
C \ClassWarningNoLine
239, 241, 243, 245,
\c@footnote . . . . . . . 2083 . 872, 1641, 1665,
247, 249, 251, 253,
\c@secnumdepth . . . . 1775, 2592, 2595, 2768
255, 257, 285, 287,
465, 479, 483, 492, 496 \cleaders . . . . . . . . . 2482
289, 291, 293, 295,
\captionsenglish . . . 381 \clearpage . . . . . . . . 2287 297, 299, 301, 303,
\captionsetup . . 907, \clubpenalty . . . 515, 521 305, 307, 309, 310,
909, 911, 913, 922, \CodelineIndex . . . . . 16 311, 312, 313, 314,
924, 927, 929, 932, \Collect@Body 440, 942, 315, 316, 317, 318,
934, 944, 950, 959, 2777 946, 957, 1644, 2048 319, 321, 323, 325,
\captionsfrench . . . . 392 \color . . . . 2059, 2121, 327, 328, 332, 334,
\captionsgerman . . . . 400 2868, 2872, 3046, 3165 336, 338, 340, 342,
\captionsspanish . . . 408 \color@begingroup 563, 576 430, 433, 436, 439,
\ccdesc@parse@finish 1778 \color@endbox . . . . . 979 442, 447, 463, 488,
\ccsdesc . . . . . . 16, 1749 \color@endgroup . . . . 502, 526, 527, 536,
\ccsdesc@parse 1750, 1751 . . . . . . 566, 579, 790 539, 552, 553, 554,
\ccsdesc@parse@end . \colorbox . 1732, 3046, 3165 555, 557, 568, 580,
. . . . . . . 1750, 1778 \colorlet . . . . . . 1716, 586, 587, 588, 589,
\ccsdesc@parse@finish 1718, 1720, 1722, 1724 590, 610, 641, 772,
. . . . . . . 1772, 1778 \columnsep . . . . . . . . 3494 779, 781, 793, 943,
CCSXML (env.) . . . . . . . . 16 \columnseprule . . . . 3494 947, 958, 964, 967,
\centering . . . . . 543, \columnwidth . . . 572, 971, 974, 992, 993,
576, 662, 671, 773, 965, 2703, 2742 994, 995, 1025,
951, 960, 2442, \contentsnamefont . . 543 1030, 1033, 1035,
2454, 2643, 2700, 3095 \copy . . . . . . . . . . . . 2482 1037, 1039, 1125,
\changes . . . . . . . . . 146 \copyright . . . . . . . . 2137 1126, 1127, 1129,
\cite . . . 624, 625, 636, 640 \copyrightpermissionfootnoterule 1130, 1131, 1133,
\citeA . . . . . . . . . . . 630 . . . . . . . . . . . . 772 1134, 1135, 1137,
\citealt . . . . . . . . . 629 \copyrightyear . 18, 2045 1138, 1139, 1141,
\citeANP . . . . . . . . . 626 \country 11, 1538, 2485, 2760 1142, 1143, 1145,
\citeauthor . . . . . . . 626 \csname . . . . 350, 478, 1146, 1147, 1149,
\citeN . . . . . . . . . . . 624 480, 484, 491, 493, 1150, 1151, 1152,
\citename . . . . . . . . . 637 497, 526, 546, 547, 1154, 1155, 1156,
\citeNN . . . . . . . . . . 627 561, 575, 1488, 1158, 1159, 1160,
\citeNP . . . . . . . . . . 629 1495, 1548, 1551, 1162, 1164, 1165,
\citep . . . . . . . . . . . 625 1754, 1755, 1757, 1169, 1170, 1171,
\citestyle . . . 25, 348, 368 1758, 1759, 1760, 1173, 1174, 1175,
\citeyear . . . . . . . . . 628 1761, 1764, 1766, 1177, 1178, 1179,
\citeyearNP . . . . . . . 628 2204, 2206, 3178, 3201 1181, 1182, 1183,
\citeyearpar . . . 627, 640 \CurrentOption . . . . 1184, 1186, 1187,
\city . . 11, 1535, 2485, 2757 . . . . . . 148, 149, 1188, 1190, 1191,
\ClassError . . . . . . . 150, 151, 152, 158, 159 1192, 1194, 1195,
35, 419, 443, 1425, 1196, 1198, 1199,
1527, 1646, 1656, D 1200, 1201, 1203,
1662, 1676, 1727, \day . . . . . . . . . . . . . 2924 1204, 1205, 1207,
1897, 2598, 2809, 3513 \DeclareNewFootnote 1208, 1209, 1213,
\ClassInfo . . 161, 260, . . . . . . . . . 776, 778 1214, 1215, 1219,
1423, 1653, 1655, \DeclareOptionX . . . . 1220, 1221, 1223,
1659, 1661, 1673, 38, 148, 149, 150, 1224, 1225, 1229,
1675, 1678, 1890, 1894 151, 152, 154, 158, 159 1230, 1231, 1235,
\ClassWarning 26, 171, \DeclareRobustCommand 1236, 1237, 1239,
177, 183, 829, 832, . . . . . . . . 630, 3197 1240, 1241, 1243,

132
1244, 1245, 1246, 1594, 1596, 1598, 3182, 3184, 3194,
1248, 1249, 1250, 1600, 1602, 1604, 3198, 3205, 3231,
1252, 1253, 1254, 1608, 1610, 1612, 3235, 3236, 3237,
1256, 1257, 1258, 1614, 1624, 1625, 3238, 3244, 3245,
1260, 1261, 1262, 1626, 1627, 1629, 3247, 3248, 3250,
1264, 1265, 1266, 1630, 1631, 1632, 3251, 3253, 3254,
1268, 1269, 1270, 1633, 1635, 1637, 3256, 3257, 3258,
1272, 1273, 1274, 1645, 1650, 1681, 3259, 3260, 3263,
1276, 1277, 1278, 1693, 1694, 1729, 3264, 3267, 3268,
1280, 1281, 1282, 1731, 1737, 1743, 3270, 3271, 3274,
1284, 1285, 1286, 1751, 1752, 1778, 3275, 3280, 3281,
1288, 1289, 1290, 1842, 1845, 1846, 3282, 3283, 3292,
1292, 1293, 1294, 1848, 1887, 1888, 3293, 3294, 3295,
1296, 1297, 1298, 1904, 2029, 2045, 3312, 3313, 3314,
1300, 1301, 1302, 2047, 2049, 2066, 3315, 3324, 3325,
1304, 1305, 1306, 2067, 2068, 2072, 3326, 3327, 3373,
1308, 1309, 1310, 2085, 2090, 2099, 3374, 3383, 3384,
1312, 1313, 1314, 2106, 2197, 2227, 3462, 3464, 3480,
1316, 1317, 1318, 2244, 2274, 2331, 3481, 3482, 3486, 3493
1320, 1321, 1322, 2357, 2382, 2407, \define@boolkey . . . .
1324, 1325, 1326, 2441, 2469, 2478, . . . 51, 59, 67, 75,
1328, 1329, 1330, 2485, 2486, 2488, 84, 92, 104, 108,
1332, 1333, 1334, 2489, 2491, 2492, 112, 120, 128, 136,
1336, 1337, 1338, 2494, 2499, 2500, 1526, 1651, 1657, 1671
1340, 1341, 1342, 2504, 2505, 2507, \define@choicekey . .
1344, 1345, 1346, 2508, 2510, 2538, . 32, 1051, 1712, 1785
1348, 1349, 1350, 2539, 2543, 2544, \define@cmdkey . . . . 1677
1351, 1353, 1354, 2547, 2548, 2550, \definecolor . . . . . .
1355, 1356, 1358, 2551, 2553, 2554, . . . 650, 651, 652,
1359, 1360, 1362, 2556, 2557, 2559, 653, 654, 655, 656, 657
1363, 1364, 1366, 2560, 2562, 2563, \department . . . . . . .
1367, 1368, 1369, 2565, 2566, 2568, . 11, 1532, 2485, 2759
1371, 1372, 1373, 2569, 2571, 2573, \Description . . . . 23, 870
1375, 1376, 1377, 2578, 2585, 2590, \description . . . . . . 1042
1379, 1380, 1381, 2602, 2603, 2604, \descriptionlabel . .
1383, 1384, 1385, 2606, 2613, 2614, . . . . . . . 1041, 1044
1387, 1388, 1389, 2615, 2641, 2642, \detokenize . . . . . . . 1472
1391, 1392, 1393, 2649, 2671, 2677, \dimexpr . . . . . . 962,
1395, 1396, 1397, 2684, 2702, 2718, 981, 3036, 3045, 3164
1399, 1400, 1401, 2724, 2729, 2746, \divide 2653, 2659, 2661,
1403, 1404, 1405, 2752, 2753, 2754, 2663, 2665, 2706, 2712
1407, 1408, 1409, 2756, 2757, 2758, \do . . . . . . . . . . . 284, 610
1411, 1412, 1413, 2760, 2761, 2762, \do@url@hyp . . . . . . . 610
1415, 1416, 1417, 2763, 2771, 2772, \DocInput . . . . . . . . . . 20
1419, 1420, 1421, 2773, 2774, 2776, \documentclass 8, 424, 426
1427, 1429, 1430, 2786, 2796, 2803, \dots . . . . . . . . . . . . 2166
1431, 1432, 1433, 2806, 2807, 2808, \dp . . . . . . . . . . 2281, 2289
1448, 1455, 1456, 2809, 2812, 2816,
1457, 1463, 1506, 2838, 2845, 2846, E
1528, 1529, 1530, 2847, 2848, 2854, \edef . . . . . . 148, 149,
1531, 1532, 1533, 2864, 2875, 2882, 150, 151, 152, 464, 2030
1546, 1554, 1560, 2929, 2934, 2940,
\editor . . . . . . . . 9, 1457
1561, 1569, 1570, 3065, 3072, 3077,
\egroup . . . . . . . 446,
1579, 1580, 1592, 3079, 3176, 3180,
791, 945, 956, 960,

133
972, 978, 1539, 2766, 2775, 2780, teaserfigure . . . . 18
1559, 2183, 2189, 2787, 2791, 2799, translatedabstract
2243, 2645, 2679, 2806, 2812, 2817, . . . . . . . . . . . . . 21
2682, 2745, 2765, 2818, 2827, 2829, \everypar . . . . . . 456,
2777, 2795, 2816, 2837 2836, 2921, 2932, 511, 522, 2790, 2798
\else . . . 54, 62, 70, 79,
2933, 2943, 2954, \excludecomment . 1746,
2962, 2972, 2983, 3468, 3470, 3474, 3475
87, 99, 115, 123,
131, 141, 197, 231,
2987, 2994, 2997, \ExecuteOptionsX . . .
2999, 3001, 3011, . . . 50, 58, 66, 74,
330, 351, 372, 379,
3018, 3021, 3023, 83, 91, 103, 107,
384, 395, 403, 411,
3025, 3053, 3054, 111, 119, 127, 135, 145
457, 464, 467, 479,
3080, 3109, 3113, \expandafter 329, 331,
483, 487, 492, 496,
3123, 3133, 3140, 643, 792, 1486,
508, 520, 535, 618,
3145, 3153, 3156, 1487, 1493, 1494,
634, 640, 642, 665,
3172, 3173, 3181, 1548, 1551, 1754,
667, 784, 848, 853,
3205, 3464, 3469, 1755, 1757, 1758,
879, 882, 912, 952,
3476, 3485, 3489, 3512 1764, 1766, 3178, 3201
1418, 1444, 1450,
\email . . . . . 10, 1540,
1452, 1459, 1475,
1482, 1485, 1491,
2613, 2677, 2724, 2763 F
\emph . . . . . . . . 2149, 2151 \familydefault . . . . 864
1492, 1502, 1505,
1510, 1513, 1516, \empty . . . . . . . . . . . 2941 \fancyfoot . . . . . 2955,
1523, 1543, 1566, \EnableCrossrefs . . . . 18 2963, 2973, 2984,
1575, 1581, 1589, \end . . . 21, 2880, 2910, 3097 2988, 3012, 3039,
1639, 1654, 1660, \end@ACM@color@frame 2222 3050, 3051, 3108,
1663, 1674, 1685, \end@dblfloat . . . . . 970 3110, 3114, 3124,
1688, 1698, 1701, \end@float . . . . . . . . 972 3134, 3143, 3148,
1704, 1709, 1740, \endcsname 349, 350, 478, 3152, 3157, 3169, 3170
1763, 1768, 1769, 480, 484, 491, 493, \fancyhead . 2950, 2951,
1770, 1773, 1892, 497, 526, 546, 547, 2952, 2953, 2958,
1896, 2054, 2060, 561, 575, 1488, 2959, 2960, 2961,
2086, 2097, 2101, 1495, 1549, 1552, 2967, 2969, 2970,
2102, 2103, 2115, 1754, 1755, 1757, 2977, 2979, 2980,
2116, 2124, 2127, 1758, 1759, 1760, 2981, 2989, 2990,
2128, 2131, 2138, 1761, 1764, 1766, 2992, 2993, 2996,
2143, 2150, 2155, 2204, 2206, 3178, 3201 2998, 3002, 3005,
2158, 2159, 2162, \enddescription . . . . 1048 3013, 3014, 3016,
2164, 2165, 2166, \endgroup . . . 477, 516, 3017, 3020, 3022,
2167, 2178, 2181, 534, 549, 2174, 3026, 3029, 3044,
2186, 2187, 2191, 2536, 3180, 3182, 3460 3049, 3107, 3118,
2235, 2238, 2241, \endlist . . . . . 1046, 1048 3119, 3120, 3128,
2277, 2315, 2320, \endMakeFramed . . . . 1733 3129, 3130, 3138,
2412, 2416, 2421, \endminipage . . . . . . 781 3139, 3141, 3142,
2432, 2435, 2448, \endtrivlist . . . . . . 3397 3146, 3147, 3163, 3168
2456, 2463, 2473, \enspace . . . . . . . . . 3275 \fancyheadoffset 3036,
2479, 2480, 2495, environments: 3043, 3121, 3131, 3162
2497, 2498, 2499, abstract . . . . . . . . 18 \fancyhf . . . . . 2937, 3101
2501, 2503, 2504, acks . . . . . . . . . . . 24 \fancypagestyle 2936, 3100
2507, 2574, 2591, anonsuppress . . . . 24 \fi . . . . . . . 56, 64, 72,
2594, 2597, 2609, CCSXML . . . . . . . . . 16 81, 89, 101, 117,
2615, 2622, 2643, marginfigure . . . . 33 125, 133, 143, 156,
2654, 2664, 2673, margintable . . . . . 33 175, 181, 194, 199,
2680, 2689, 2707, printonly . . . . . . . 23 228, 233, 258, 259,
2711, 2720, 2726, screenonly . . . . . . 23 271, 275, 286, 288,
2734, 2748, 2750, sidebar . . . . . . . . 33 290, 292, 294, 296,

134
298, 300, 302, 304, 2241, 2270, 2279, \footnoterule . . . . . 779
306, 308, 310, 312, 2291, 2319, 2323, \footnotesep . . . 565, 578
314, 316, 318, 320, 2324, 2329, 2355, \footnotesize 571, 2920,
322, 324, 326, 328, 2381, 2406, 2410, 2934, 2955, 2963,
333, 335, 337, 339, 2415, 2419, 2425, 2973, 2984, 2988,
341, 343, 344, 353, 2428, 2434, 2439, 2996, 3002, 3012,
355, 369, 374, 377, 2451, 2453, 2458, 3051, 3110, 3114,
386, 390, 397, 405, 2466, 2467, 2475, 3124, 3134, 3143,
413, 416, 429, 444, 2483, 2496, 2497, 3148, 3154, 3170, 3500
448, 454, 459, 464, 2499, 2501, 2503, \footnotetext . . 1565,
470, 481, 485, 494, 2504, 2507, 2509, 1567, 1574, 1577, 1584
498, 500, 523, 524, 2535, 2570, 2577, \footnotetextauthorsaddresses
537, 548, 567, 607, 2593, 2596, 2600, . . . . . . . 2098, 2105
611, 620, 638, 640, 2611, 2627, 2628, \footnotetextcopyrightpermission
644, 647, 674, 675, 2632, 2643, 2666, . . . . . . . 2113, 2117
676, 754, 770, 788, 2667, 2675, 2683, \footrulewidth . . . .
814, 826, 857, 858, 2694, 2713, 2714, 2939, 3042, 3103, 3161
859, 865, 872, 881, 2722, 2728, 2739, \foreignlanguage 432, 435
884, 938, 939, 955, 2748, 2750, 2770, \format . . . . . . . . . . . 32
969, 973, 1000, 2783, 2785, 2793, \FrameCommand . . . . . 1731
1422, 1441, 1447, 2795, 2801, 2806, \FrameRestore . . . . . 1733
1453, 1454, 1462, 2813, 2817, 2831, \frenchspacing . . . . 3516
1478, 1483, 1490, 2834, 2835, 2836, \fulltextwidth . . . .
1497, 1498, 1503, 2874, 2881, 2907, . . . . . . 961, 965, 981
1504, 1512, 1518, 2911, 2923, 2928,
1519, 1520, 1525, 2932, 2933, 2942, G
1545, 1568, 1578, 2944, 2945, 2950,
\g@addto@macro . 157,
1585, 1591, 1607, 2951, 2956, 2965,
432, 435, 438, 446,
1643, 1647, 1656, 2975, 2986, 2988,
1461, 1493, 1496,
1662, 1670, 1676, 2997, 2999, 3008,
1511, 1517, 1524,
1690, 1691, 1700, 3009, 3010, 3012,
1544, 1562, 1564,
1706, 1707, 1711, 3021, 3023, 3032,
1567, 1571, 1573,
1725, 1736, 1742, 3033, 3034, 3037,
1576, 1582, 1583,
1762, 1770, 1771, 3040, 3053, 3054,
1588, 1590, 1699,
1777, 1798, 1801, 3055, 3078, 3097,
1705, 1741, 1759,
1805, 1811, 1814, 3108, 3111, 3117,
1766, 2049, 2053,
1817, 1820, 1823, 3127, 3137, 3143,
2055, 2066, 2069,
1826, 1829, 1833, 3144, 3148, 3149,
2610, 2623, 2674,
1837, 1841, 1886, 3155, 3158, 3159,
2681, 2690, 2721,
1902, 1903, 2044, 3172, 3173, 3174,
2727, 2735, 2772, 2773
2056, 2062, 2065, 3192, 3203, 3205,
\gdef . . . . . 156, 1435,
2076, 2077, 2086, 3273, 3278, 3300,
1436, 1437, 1438,
2088, 2100, 2107, 3332, 3370, 3389,
1440, 1448, 1458,
2108, 2109, 2110, 3420, 3421, 3446,
1460, 1481, 1484,
2114, 2122, 2125, 3447, 3453, 3464,
1486, 1489, 1501,
2126, 2133, 2134, 3472, 3478, 3481,
1509, 1515, 1548,
2135, 2140, 2152, 3491, 3492, 3493, 3515
1551, 1648, 1680,
2157, 2162, 2166, \firstpagestyle . . . . 3099 1697, 1703, 1739,
2167, 2168, 2169, \floatname . . . . . . . . 941 1755, 1757, 1758,
2170, 2171, 2172, \flushbottom 800, 802, 1764, 2276, 2608,
2173, 2175, 2179, 804, 806, 808, 811, 813 2612, 2617, 2647,
2184, 2185, 2190, \footnote . . . . . . . . . 2809 2648, 2669, 2670,
2193, 2194, 2213,
\footnotemark 590, 1562, 2672, 2676, 2678,
2224, 2237, 2240,
1571, 2772, 2773, 2807 2685, 2716, 2717,

135
2719, 2723, 2725, \if@ACM@acmcp . . . . . 1889, 2111, 2159,
2730, 2755, 2756, 2761 . . 168, 273, 1734, 2766, 2818, 2954,
\geometry . . . 680, 683, 2101, 2116, 2186, 2962, 2972, 2983,
690, 697, 704, 711, 2220, 2408, 2426, 2991, 3015, 3109,
718, 725, 732, 741, 748 2630, 3041, 3160, 3276 3113, 3123, 3133, 3153
\getrefnumber . . . . . \if@ACM@acmthm . 67, 3346 \if@ACM@pbalance 108, 3400
1640, 1664, 1774, 2806 \if@ACM@affiliation@obeypunctuation\if@ACM@printacmref
\global . . . . . . . 510, . . . . . . . . 1526, . . . . . . . 1657, 2211
513, 549, 569, 870, 2480, 2497, 2499, \if@ACM@printccs . . .
880, 883, 953, 980, 2501, 2502, 2504, 2507 . . . . . . . 1651, 2180
1428, 1442, 1474, \if@ACM@anonymous . . \if@ACM@printfolios
1476, 1477, 1522, . . . . . 120, 1480, 1671, 2942, 2944,
2209, 2210, 2214, 1492, 1499, 1523, 2950, 2951, 2988,
2216, 2230, 2489, 1543, 1563, 1572, 3012, 3108, 3143, 3148
2491, 2496, 2500, 1581, 2052, 2058, \if@ACM@review . . . .
2505, 2508, 2586, 2074, 2103, 2930, 3473 . 75, 2859, 2876, 2883
2587, 2588, 2605, \if@ACM@authordraft \if@ACM@screen 51, 612, 3466
2629, 2633, 2643, . . . . . 136, 658, 2118 \if@ACM@sigchiamode
2695, 2698, 2740, \if@ACM@authorversion . . . . . . 165, 556,
2778, 2781, 2869, . . . . . 84, 2124, 2144 666, 863, 963, 970,
2873, 3401, 3425, \if@ACM@badge . . . . . 2086, 2088, 2643, 3035
3427, 3429, 3441, 3445 1616, 2313, 2444, 2460 \if@ACM@timestamp . .
\grantnum . . . . . . 24, 3463 \if@ACM@balance . . . . 128, 2912, 3038, 3150
\grantsponsor . . 24, 3462 . . . . 104, 3422, 3450
\if@ACM@urlbreakonhyphens
\if@ACM@citypresent
H . . . . . . . . . . 59, 609
. . . . . . . 2581, 2594
\hbox . 580, 2085, 2090, 2481 \if@acmowned . . . . . . 1783
\if@ACM@countrypresent
\headrulewidth 2938, 3102 \if@Description@present
. . . . . . . 2583, 2597
\hfill . . . . . . . 2471, 2872 . . . . . . . . . 866,
\if@ACM@engage . 166,
\href . . . . . 1550, 1553, 879, 882, 952, 2780
375, 388, 1893,
2031, 2032, 2316, \if@filesw . . . . . 545, 645
2129, 2175, 2995, 3019
2321, 2422, 2437,
\if@ACM@instpresent \if@insideauthorgroup
2449, 2464, 3484, 3488 . . . . . . . 1469, 1475
. . . . . . . 2579, 2591
\hrule . . . . 773, 780, 2471 \if@nobreak . . . . . . . 455
\if@ACM@journal . . . .
\hsize . . . . 572, 1733, \if@noskipsec . . 448, 512
. . . 163, 229, 370,
2084, 2229, 2407, \if@printcopyright .
382, 393, 401, 409,
2409, 2411, 2441, . . . . . . . 1779, 2136
908, 1444, 1686,
2443, 2469, 2511, \if@printpermission
2487, 2766, 2789, 2797
2631, 2641, 2697, 2742 . . . . . . . 1781, 2125
\if@ACM@journal@bibstrip
\hskip . . . . . . . . 475,
. . . . . . . . . 164, \if@twocolumn . 3451, 3493
489, 519, 532, 536,
2104, 2128, 2148, \if@undescribed@images
2318, 2424, 2436,
2160, 2823, 2947, 3104 . . . . . . . . . 868, 871
2452, 2461, 2482, 3394
\hspace . . . 1731, 1915, \if@ACM@maketitle@typeset \IfBeginWith . . . . . . 1547
1926, 1935, 1960, . . . . 442, 1049, 1645 \ifcase . 201, 235, 593,
1972, 1993, 2646, 2700 \if@ACM@manuscript . 678, 757, 795, 915,
\ht . . . . . . . . . . 2280, 2288 . . . . . . . . . 162, 984, 1123, 1604,
\Huge . 2366, 2368, 2370, 268, 1683, 2127, 2141 1714, 1849, 1905,
2372, 2374, 2376, 2378 \if@ACM@natbib . . . . 2247, 2294, 2332,
\hypersetup . . . . . . . . . . 112, 276, 367, 623 2358, 2383, 2512,
. . 613, 619, 621, 2198 \if@ACM@natbib@override 2540, 2655, 2708,
\hyphenpenalty . . . . 3499 . . . . . . . . . . . . 112 2884, 2948, 3066,
\if@ACM@newfonts 827, 838 3105, 3240, 3284,
I \if@ACM@nonacm 92, 667, 3316, 3375, 3402, 3423
\if . . . . . . . . . . . . . . 330 1639, 1663, 1773, \ifcsname . . . . . . . . . 349

136
\ifdim . . 452, 472, 504, 2775, 2787, 2812, \labelenumii . . . . . . 993
529, 2282, 2290, 2871 2817, 2829, 2836, \labelenumiii . . . . . 994
\IfEq . . . . . 2028, 2034, 2921, 2932, 2941, \labelenumiv . . . . . . 995
2035, 2036, 2037, 2997, 2999, 3021, \labelsep . . . . . . . . .
2038, 2039, 2040, 2041 3023, 3053, 3054, 1003, 1011, 1016,
\IfFileExists 829, 832, 835 3172, 3173, 3178, 1026, 1031, 1034,
\IfInteger . . . . . . . . 1678 3201, 3205, 3464, 1036, 1038, 1040, 3394
\ifluatex . . . . . . . . . 849 3481, 3483, 3487, 3512 \labelwidth . . . . . . .
\ifNAT@numbers . . . . 640 \ifxetex . . . . . . . . . 844 1026, 1031, 1034,
\ifnum 170, 176, 182, 195, \ignorespaces . . . . . 1036, 1038, 1040, 1043
464, 465, 479, 483, . . . 525, 565, 578, \LARGE . . . . . . . . 2360,
492, 496, 1640, 870, 1530, 1531, 2362, 2364, 2380,
1664, 1768, 1769, 1533, 1546, 2485, 2391, 2393, 2395,
1770, 1774, 1794, 2486, 2488, 2490, 2397, 2399, 2403,
1799, 1802, 1806, 2491, 2492, 2493, 2547, 2550, 2565, 3096
1812, 1815, 1818, 2497, 2754, 2794, \Large 2232, 2538, 2556,
1821, 1824, 1827, 2802, 2808, 2816, 3395 3250, 3251, 3253,
1830, 1834, 1838, \immediate . . . . . 547, 646 3254, 3256, 3270, 3271
2076, 2112, 2652, \includecomment . . . . \large 2119, 2543, 2548,
2705, 2747, 2749, . . . 3467, 3471, 3477 2551, 2566, 2568,
2806, 3080, 3082, 3151 \includegraphics . . . 3244, 3245, 3247, 3248
\ifPDFTeX . . . . . . . . . 815 2031, 2317, 2322, \lastbox . . 514, 2790, 2798
\IfSubStr . . . . . 1472, 1541 2423, 2438, 2450, 2465 \leaders . . . . . . . . . 2471
\ifvmode . . . . . . . . . 2479 \indent . . . . . . . . . . 3374 \leavevmode 448, 2471, 2699
\ifvoid . . . . . . . . . . 784 \input . . . . . . . . . . . 816 \leftmargin 1025, 1030,
\ifx . . . . . . . . . . 155, \InputIfFileExists . . 25 1033, 1035, 1037, 1039
234, 285, 287, 289, \institution . . . . . . \leftmargini 1009, 1010,
291, 293, 295, 297, . 11, 1531, 2485, 2756 1011, 1012, 1025, 1026
299, 301, 303, 305, \interfootnotelinepenalty \leftmarginii . . . . .
307, 309, 311, 313, . . . . . . . . . . . . 559 . . . . 1015, 1016,
315, 317, 319, 321, \interlinepenalty . . 1017, 1018, 1030, 1031
323, 325, 327, 332, . . . . . . 476, 533, 559 \leftmarginiii . . . .
334, 336, 338, 340, \item . . . . . . . . 3394, 3496 1018, 1019, 1033, 1034
342, 378, 418, 642, \itshape . . . . . . . . . \leftmarginiv . . . . .
1439, 1450, 1452, 2130, 2132, 3237, 1019, 1020, 1035, 1036
1457, 1479, 1482, 3238, 3259, 3260, \leftmarginv . . . . . .
1500, 1502, 1507, 3280, 3292, 3314, 3383 1020, 1021, 1037, 1038
1508, 1514, 1587, \leftmarginvi . . . . .
1639, 1695, 1696, J . . . 1021, 1039, 1040
1702, 1709, 1738, \jobname . . . . . . 544, 547 \leftskip . 2470, 2743, 3233
1754, 1763, 1773, \let . 306, 308, 320, 322,
2063, 2097, 2102, K 324, 350, 466, 582,
2153, 2162, 2165, \kern 772, 773, 779, 780, 2471 583, 624, 625, 626,
2166, 2167, 2178, \keywords . . . . . . 16, 1637 627, 628, 629, 632,
2181, 2187, 2191, \keywordsname . . . . . 636, 794, 860, 874,
2235, 2238, 2241, 371, 373, 383, 385, 875, 877, 878, 885,
2275, 2315, 2320, 394, 396, 402, 404, 886, 887, 888, 889,
2412, 2416, 2421, 410, 412, 1558, 2188 890, 891, 892, 893,
2432, 2435, 2448, 894, 895, 896, 897,
2456, 2463, 2473, L 898, 899, 900, 901,
2495, 2574, 2607, \l@section . . . . . . . . 552 902, 903, 904, 943,
2615, 2616, 2671, \l@subsection . . 552, 553 944, 948, 949, 958,
2677, 2684, 2718, \l@subsubsection . . . 554 959, 964, 965, 966,
2724, 2729, 2767, \labelenumi . . . . . . . 992 1029, 1044, 1048,

137
1534, 1535, 1536, \mathchardef . . 2679, 2682 \NAT@swafalse . . . . . 631
1537, 1538, 1638, \mbox . . . . . . . . . . . . 328 \NAT@up . . . . . . . . . . 328
1744, 1747, 2064, \mdseries . . 2385, 2387, \NAT@yrsep . . . . . . . . 339
2079, 2080, 2081, 2389, 2393, 2395, \NeedsTeXFormat . . . . . . 1
2082, 2094, 2095, 2397, 2399, 2401, \newblock . . . . . . . . . 633
2096, 2099, 2106, 2403, 2405, 2560, 2563 \newbox . . . . . . . . . .
2195, 2209, 2210, \medskip . . 2249, 2251, 2071, 2226, 2477, 2637
2245, 2246, 2271, 2253, 2255, 2633, \newcommand . 356, 362,
2272, 2506, 2605, 2635, 2699, 2784, 2814 417, 431, 434, 437,
2629, 2695, 2701, \MessageBreak . . . . . 639, 870, 1434,
2740, 2745, 2804, 172, 178, 184, 185, 1521, 1556, 1586,
2805, 2839, 2840, 186, 187, 188, 189, 1623, 1628, 1694,
2842, 2843, 2851, 190, 191, 192, 420, 1749, 1844, 2057,
2852, 2853, 2855, 421, 422, 423, 425, 2493, 2502, 2919,
2856, 2857, 3183, 427, 1666, 1667, 3222, 3454, 3463, 3479
3185, 3187, 3188, 1668, 1727, 1898, 1899 \newcount . 1465, 1467, 2862
3190, 3196, 3199, \metadata@authors . . \newcounter 1748, 2915, 2917
3202, 3496, 3501, . . . 2195, 2196, 2199 \newdimen . . 961, 1001,
3502, 3509, 3510, 3511 \mktitle@bx 2071, 2280, 2638, 3059, 3061, 3063
\libertineLF . . . . . . 862 2281, 2284, 2288, \newenvironment . 440,
\lineskip . . . . . 2700, 2744 2289, 2296, 2298, 946, 957, 1730, 2048
\linespacing . . . 542, 543 2300, 2302, 2304, \newfloat . . . . . . . . . 940
\liningnums . . . . . . . 860 2306, 2308, 2310, \newif 162, 163, 164, 165,
\list . . . . . . . . . . . . 1042 2312, 2326, 2328, 166, 168, 827, 866,
\listisep . 1023, 1024, 1028 2420, 2442, 2470, 868, 1049, 1469,
\listparindent . . . . 1027 2633, 2698, 2699, 2778 1616, 1779, 1781,
\LoadClass . . . . . . . . 261 \month . . . . . . . 1603, 2924 1783, 2579, 2581, 2583
\long 442, 557, 568, 943, \moveleft . . . . . . . . . 980 \newlength . . . . . . . .
947, 958, 1645, \multiply . . . . . . . . . 3087 1618, 1620, 1621, 2861
1648, 1650, 2049, 2845 \newsavebox . . . . . . . 2860
\loop . . . . 2283, 2868, 3081 N \newskip . . . . . 1023, 2639
\LTX@adddotafter . . . \NAT@@setcites . . . . 346 \newtheorem . . . . . . .
. . . . . . . 3202, 3205 \NAT@aysep . . . . . . . . 337 3349, 3352, 3355,
\NAT@citetp . . . . . . . 632 3358, 3361, 3365, 3368
M \NAT@close . . . . . . . . \newtheoremstyle . . .
\makeatletter . . . . . 539 286, 288, 290, 292, 335 . . . . . . . 3301, 3333
\makebox . . 2119, 3044, \NAT@cmprs . . 314, 316, 318 \newwrite . . . . . . . . . 546
3049, 3090, 3163, 3168 \NAT@cmt . . . . . . . . . 341 \next . . . . 3180, 3182, 3192
\MakeFramed . . . . . . . 1733 \NAT@ctype . . . . . . . . 632 \nobreak . . . . . . 505, 2814
\makelabel . . . . . . . . 1044 \NAT@find@eq . . . . . . 329 \noindent . . . . . . 555,
\MakeTextUppercase . \NAT@fullfalse . . . . 632 1559, 1710, 2096,
2608, 2610, 3235, \NAT@longnamestrue . 326 2183, 2189, 2249,
3244, 3247, 3250, \NAT@merge . . 320, 322, 324 2251, 2253, 2255,
3253, 3263, 3267, 3270 \NAT@nmfmt . . . . . . . . 328 2286, 2293, 2314,
\maketitle . . . . . 19, 2072 \NAT@numbersfalse . . 300 2420, 2427, 2430,
\MakeUppercase . . . . 3189 \NAT@numberstrue 302, 304 2433, 2457, 2471,
\marginfigure . . . . . 946 \NAT@open . . . . . . 286, 2472, 2474, 2572,
marginfigure (env.) . . . 33 288, 290, 292, 333, 632 2633, 2634, 2698,
\marginpar . . . . . 557, \NAT@partrue . . . . . . 632 2744, 2778, 2779,
945, 951, 960, 2314 \NAT@rem@eq . . . . . . . 331 2814, 2815, 2848, 3384
\marginparsep . . 962, 3036 \NAT@sep 294, 296, 298, 343 \noindentparagraph .
\marginparwidth . 962, 3036 \NAT@sort . . . 310, 312, 318 . . . . . . . 2261, 3222
\margintable . . . . . . 957 \NAT@superfalse . . . . 302 \nolinkurl . . . . . 2679,
margintable (env.) . . . . 33 \NAT@supertrue . . . . 304 2682, 2725, 2727, 2763

138
\normalbaselines . . . 2642 1218, 1222, 1228, 2891, 2893, 2895,
\normalcolor . . . . . . 786 1234, 1238, 1242, 2897, 2899, 2901,
\normalfont . . . . 580, 1247, 1251, 1255, 2903, 2905, 2957,
1710, 2090, 2539, 1259, 1263, 1267, 2966, 2976, 3068,
2544, 2553, 2554, 1271, 1275, 1279, 3073, 3112, 3122,
2556, 2557, 2569, 1283, 1287, 1291, 3132, 3242, 3243,
2865, 3295, 3312, 1295, 1299, 1303, 3246, 3249, 3252,
3324, 3327, 3392, 3516 1307, 1311, 1315, 3255, 3261, 3265,
\normalparindent . . . 771 1319, 1323, 1327, 3269, 3272, 3286,
\normalsize . . . . . . . 1331, 1335, 1339, 3287, 3288, 3289,
2382, 2539, 2553, 1343, 1347, 1352, 3290, 3291, 3296,
2554, 2557, 2866, 3516 1357, 1361, 1365, 3297, 3298, 3299,
\num@authorgroups . . 1370, 1374, 1378, 3318, 3319, 3320,
. . . . . . . . 1465, 1382, 1386, 1390, 3321, 3322, 3323,
1476, 2076, 2655, 1394, 1398, 1402, 3328, 3329, 3330,
2659, 2661, 2708, 2749 1406, 1410, 1414, 3331, 3377, 3378,
\num@authors . . . . . . 1604, 1605, 1606, 3379, 3380, 3381,
1467, 1474, 1488, 1717, 1719, 1721, 3382, 3385, 3386,
1495, 1549, 1552, 2747 1723, 1850, 1852, 3387, 3388, 3404,
\number . . . . . . . . . . 464 1855, 1857, 1858, 3405, 3406, 3408,
\numberline . . . . 484, 497 1860, 1862, 1864, 3410, 3412, 3414,
\numexpr . 2914, 2916, 2918 1867, 1870, 1873, 3416, 3417, 3419,
\nxandlist . . . . . . . . 2196 1875, 1878, 1881, 3426, 3428, 3430,
1884, 1906, 1917, 3432, 3434, 3436,
O 1928, 1936, 1942, 3438, 3440, 3442, 3444
\onehalfspacing . . . . 270 1948, 1962, 1974, \orcid . . . . . . . . 10, 1546
\openout . . . . . . . . . 547
1981, 1995, 2002, \outer@nobreak . . . . 977
2008, 2015, 2020,
\or . . . . . 204, 206, 208,
210, 212, 214, 216,
2026, 2250, 2252, P
2254, 2256, 2258, \p@ . . . . . 550, 755, 762,
218, 221, 224, 238,
2260, 2262, 2264, 772, 773, 779, 780,
240, 242, 244, 246,
2266, 2268, 2297, 2427, 3042, 3161,
248, 250, 252, 254,
2299, 2301, 2303, 3207, 3211, 3215,
256, 595, 596, 597,
2305, 2307, 2309, 3216, 3219, 3220,
598, 599, 600, 602,
2311, 2325, 2327, 3223, 3224, 3228,
603, 605, 606, 682,
2335, 2337, 2339, 3229, 3392, 3494, 3497
689, 696, 703, 710,
2341, 2343, 2345, \PackageError 56, 64, 72,
717, 724, 731, 740,
2347, 2349, 2351, 81, 89, 101, 105,
747, 759, 760, 761,
2353, 2361, 2363, 109, 117, 125, 133, 143
763, 764, 765, 766,
2365, 2367, 2369, \PackageInfo . . . . 53,
767, 768, 769, 797,
2371, 2373, 2375, 55, 61, 63, 69,
798, 799, 801, 803,
2377, 2379, 2386, 71, 77, 80, 86, 88,
805, 807, 809, 810,
2388, 2390, 2392, 94, 100, 114, 116,
812, 917, 918, 919,
2394, 2396, 2398, 122, 124, 130, 132,
920, 921, 923, 926,
2400, 2402, 2404, 138, 142, 1167,
931, 936, 937, 986,
2515, 2517, 2519, 1211, 1217, 1227, 1233
987, 988, 989, 990,
2521, 2523, 2525, \PageIndex . . . . . . . . . 15
991, 996, 997, 998,
2527, 2529, 2531, \pageref . . . . . . . . . 2926
999, 1128, 1132,
2533, 2542, 2545,
1136, 1140, 1144, \pagestyle . . . . . . . . 3057
2546, 2549, 2552,
1148, 1153, 1157, \par . . . . . . . . . . 432,
2555, 2558, 2561,
1161, 1168, 1172, 435, 449, 505, 541,
2564, 2567, 2657,
1176, 1180, 1185, 782, 975, 1559,
2658, 2660, 2662,
1189, 1193, 1197, 1710, 2099, 2106,
2710, 2887, 2889,
1202, 1206, 1212, 2125, 2130, 2132,

139
2183, 2189, 2232, \ProvidesFile . . . . . . . 3 2747, 2749, 2772,
2236, 2239, 2249, \ps@headings . . 2853, 2857 2806, 2863, 2885,
2251, 2253, 2255, \ps@myheadings 2852, 2856 2886, 2888, 2890,
2296, 2298, 2300, \ps@plain . . . . . 2851, 2855 2906, 2916, 2918,
2312, 2328, 2427, \pushQED . . . . . . . . . 3391 2921, 2949, 3067,
2433, 2440, 2457, \put . . . . . . . . . 2879, 2909 3069, 3070, 3071,
2468, 2471, 2474, 3074, 3075, 3076,
2476, 2499, 2501, Q 3079, 3080, 3082,
2503, 2504, 2572, \qed . . . . . . . . . . . . . 3391 3085, 3086, 3087,
2576, 2633, 2635, \quad . . . . . 526, 2968, 3088, 3106, 3151,
2642, 2644, 2672, 2971, 2978, 2982, 3152 3178, 3201, 3205,
2674, 2681, 2690, 3241, 3285, 3317,
2699, 2701, 2719, R 3376, 3392, 3403,
2721, 2727, 2735, \raggedright . . . . . . 3424, 3483, 3487, 3497
2743, 2745, 2776, 2429, 2470, 2743, 3498 \removelastskip . . . . 541
2777, 2778, 2780, \raisebox . . 2119, 2422, \renewcommand 278, 282,
2794, 2814, 2837, 2437, 2449, 2464, 283, 286, 288, 290,
2841, 2845, 2848, 3390 3045, 3090, 3092, 3164 292, 294, 296, 298,
\paragraph . . . . . . . . 3218 \real@adddotafter . . 348, 371, 373, 376,
\parbox . . . . . . . 662, . . . . . . . 3187, 3190 383, 385, 387, 389,
671, 2429, 2447, \realSectionformat . 394, 396, 398, 402,
2454, 2462, 2865, 3094 . . . 3183, 3195, 3196 404, 406, 410, 412,
\parindent . . 755, 771, \received . . . . . . 18, 1694 414, 864, 1041,
1010, 2099, 2106, \RecordChanges . . . . . 17 1471, 1540, 2050,
2123, 2231, 3218, \ref . . . . . . . . . 2826, 2833 2083, 2759, 2938,
3234, 3281, 3313, 3497 \refname . . . . . . 279, 280 2939, 3042, 3102,
\parskip . . 755, 2123, 3497 \refstepcounter . . . . 468 3103, 3161, 3206,
\part . . . . . . . . . . . . 3227 \relax . . . . . . . . 170, 3210, 3214, 3218, 3227
\PassOptionsToClass 176, 182, 195, 202, \renewenvironment . .
. . . . . . . . . 158, 159 236, 329, 330, 418, 942, 1042, 1644, 3390
\pdfgentounicode . . . 824 450, 469, 471, 475, \repeat . . 2290, 2871, 3084
\pdfglyphtounicode . 489, 503, 518, 528, \RequirePackage 29, 30,
. . . . . . 817, 818, 536, 547, 594, 679, 31, 262, 263, 264,
819, 820, 821, 822, 823 758, 794, 796, 916, 265, 266, 267, 269,
\pdfstringdefDisableCommands 985, 1124, 1466, 272, 274, 277, 380,
. . . . . . . . . . . . 585 1468, 1474, 1476, 581, 584, 648, 649,
\phantomsection . . . . 1586, 1587, 1640, 659, 668, 677, 774,
. . . . 280, 2788, 3458 1664, 1715, 1733, 825, 839, 845, 846,
\popQED . . . . . . . . . . 3397 1754, 1763, 1773, 850, 851, 854, 855,
\position . . . 11, 1530, 1774, 1794, 1799, 856, 906, 1745,
1534, 1535, 1536, 1802, 1806, 1812, 2850, 3407, 3409,
1537, 1538, 2485, 2754 1815, 1818, 1821, 3411, 3413, 3415,
\postcode . . . . . . . . . 1824, 1827, 1830, 3418, 3431, 3433,
. 11, 1537, 2485, 2753 1834, 1838, 1849, 3435, 3437, 3439, 3443
printonly (env.) . . . . . 23 1905, 2094, 2095, \reset@font . . . . 558, 571
\ProcessOptionsX . . . 160 2112, 2248, 2295, \reversemarginpar . . 739
\proof . . . . . . . . . . . 3390 2333, 2359, 2384, \rightarrow . . . . . . . 1751
\proofname . . . . . . . . 3390 2513, 2541, 2640, \rightskip . . . . . . . . 3232
\protect . . . . . . 484, 497 2650, 2651, 2652, \rlap . . . . . . . . . . . . 3091
\protected@edef . . . . 2653, 2656, 2659, \rotatebox . . . . 3046, 3165
. . . . . . 469, 560, 574 2661, 2663, 2665, \rule . . . . . 565, 578, 3093
\providecommand . . . . 2668, 2700, 2703,
. . . . . 633, 637, 3279 2704, 2705, 2706, S
\ProvidesClass . . . . . . 5 2709, 2712, 2715, \savebox . . . . . . . . . 2865

140
screenonly (env.) . . . . . 23 \SetWatermarkColor . \subsubsection . . . . 3214
\scriptsize 2233, 2868, 2872 . . . . . . . . . 661, 670 \subtitle . . . . . . 10, 1463
\scshape . . . . . 3282, 3373 \SetWatermarkFontSize \subtitlenote . . 14, 1570
\section . . . . . . 279, . . . . . . . . . 660, 669
2257, 2259, 2263, \SetWatermarkText 662, 671 T
2265, 2267, 2269, \sfdefault . . . . . . . . 864 \teaserfigure . . . . . 2048
2792, 2800, 3206, 3457 \sffamily . . . . . . . . . teaserfigure (env.) . . . 18
\section@raggedright 2360, 2362, 2364, \terms . . . . . . . . 16, 1635
. . . . . . . . 3231, 2366, 2368, 2370, \textbf . . 1756, 1768, 2848
3235, 3236, 3244, 2374, 2378, 2380, \textbullet 588, 1755,
3245, 3247, 3248, 2538, 2543, 2547, 2968, 2971, 2978, 2982
3250, 3251, 3253, 2568, 2934, 3096, \textcolor . . . . . . . . 3096
3254, 3256, 3257, 3235, 3236, 3237, \textheight . . . . . . .
3258, 3263, 3264, 3244, 3245, 3247, 2230, 2282, 2284,
3267, 3268, 3270, 3271 3248, 3253, 3254, 2290, 2871, 3045, 3164
\Sectionformat . . . . 3263, 3264, 3267, 3268 \textit . . . . . . . 1769,
3179, 3183, 3185, 3196 \shortauthors 19, 1500, 2824, 2828, 2829, 2830
\SelectFootnoteRule 1501, 1508, 1509, \textrightarrow . . . .
. . . . . . . . . 775, 777 1511, 1514, 1515, . . . . 589, 1751, 1765
1517, 2208, 2210, 2933
\selectlanguage 1557, 2796 \textwidth 962, 981, 982,
\shortcite . . . . . 636, 639
\set@ACM@acmcpbox . . 2084, 2407, 2441,
\shorttitle 2953, 2961, 2469, 2511, 2650, 2697
. . . . . . . 2221, 2226
2971, 2982, 2989, 3013
\setbox . . . . 514, 569, \thanks . . . . 13, 2050, 2845
\showeprint . . . . . . . 3479
980, 2230, 2284, \thankses . . . . . . . . .
\sidebar . . . . . . . . . 940
2420, 2442, 2470, 2053, 2055, 2097, 2845
sidebar (env.) . . . . . . . 33
2481, 2633, 2643, \the . . 1488, 1495, 1549,
\skip . . . . . . . . . . . . 785
2698, 2778, 2790, 2798 1552, 1601, 1603,
\small . . . . . 558, 945,
\setcctype . . . . . 17, 1844 2868, 2872, 2924, 3087
952, 960, 1710,
\setcitestyle . . . . . \theACM@time@hours .
2249, 2251, 2253,
. . . 25, 283, 357, 363 . . . . . . . 2918, 2925
2255, 2544, 2569,
\setcopyright . . 16, 1842 \theACM@time@minutes 2925
2790, 2798, 2814, 3108
\setcounter 2089, 2176, \theenumi . . . . . . . . . 992
\smallskipamount . . . 1024
2278, 2916, 2918, \theenumii . . . . . . . . 993
\space . . . . 493, 1473,
3239, 3262, 3266, 3277 \theenumiii . . . . . . . 994
1542, 1669, 2204,
\setengagemetadata . 2507, 3053, 3172, \theenumiv . . . . . . . . 995
. . . . . . . . . 19, 2068 3464, 3503, 3506, 3514 \thefootnote . . . . . . 2083
\setkeys . 38, 174, 180, \specialcomment . . . . 3455 \theindex . . . . . . . . . 3493
1427, 1681, 1729, \standardpagestyle . 2935 \theoremstyle . . . . .
1842, 2618, 2619, \startPage . . . . . 16, 1633 3344, 3347, 3363, 3371
2624, 2625, 2686, \state . 11, 1536, 2485, 2758 \thepage . . . . . . . . .
2687, 2691, 2692, \stepcounter 1565, 1567, 2926, 2942, 2944,
2731, 2732, 2736, 2737 1574, 1577, 1584, 1753 2950, 2951, 2988,
\setlength 755, 756, 762, \StrDel . . . . . . . . . . 2494 3012, 3108, 3143, 3148
771, 1003, 1004, \streetaddress . . . . \thispagestyle 2285, 2292
1009, 1015, 1018, . 11, 1534, 2485, 2752 \thmname . . . . . 3311, 3343
1019, 1020, 1021, \string . . . . . . . . . . \thmnote . . . . . 3311, 3343
1619, 1622, 2231, 2867 420, 421, 424, 426, \thmnumber . . . . 3311, 3343
\setmonofont . . . 847, 852 646, 1473, 1542, \thr@@ . . . . . . . . . . . 324
\settopmatter . . . . . 1635, 1669, 2810, \time . . . . 2913, 2916, 2918
. . . 18, 98, 1669, 2811, 3503, 3506, 3514 \title . . . . . . . . 10, 2810
1681, 1682, 1684, \strut 2447, 2462, 3047, 3166 \titlenote . . 14, 1561, 2811
1687, 1689, 1692, 2822 \strutbox . . . . . . 565, 578 \topsep . . 1028, 1032, 3392
\setTrue . . . . . . . . . 540 \subsection . . . . . . . 3210 \translatedabstract 440

141
translatedabstract \upshape . . . . . . . . . 1041 335, 337, 339, 341, 343
(env.) . . . . . . . . 21 \url . 1739, 1741, 1887, 3464
\translatedkeywords \UrlBreakPenalty . . .
Y
. . . . . . . . . . 21, 437 . . . . . . . 2679, 2682
\translatedsubtitle \urlstyle . . . 592, 601, 604 \year . . . . . . . . 1601, 2924
. . . . . . . . . . 21, 434 \usebox . . . . . . 2879, 2909
\translatedtitle . 21, 431 \usepackage . . . . . . . Z
\trivlist . . . . . . . . . 3393 . . 9, 10, 11, 12, 13, 14
\z@ . . . . . 312, 316, 452,
\tw@ . . . . . . . . . . . . . 322
V 472, 504, 514, 529,
\two@digits . . . 2924, 2925
\value . . . . . . . . . . . 1770 542, 565, 578, 756,
\twocolumn . 2302, 2304,
\vbox . . . . . . . . . 569, 793, 910, 914, 925,
2306, 2308, 2310, 2326
980, 2420, 2442, 1009, 1015, 1027,
U 2470, 2633, 2698, 2778 2099, 2106, 2119,
\unskip . . . . 517, 587, \vfill 2234, 2236, 2239, 2241 2123, 2214, 2216,
783, 1533, 1539, \vskip 506, 541, 785, 793, 975 2231, 2422, 2437,
1546, 2482, 2485, \vspace . . . . . . 2427, 3501 2449, 2464, 2743,
2486, 2488, 2490, \vsplit . . . . . . . . . . 2284 2790, 2798, 2938,
2491, 2492, 2493, \vtop . . . . . . . . 2230, 2643 2939, 3044, 3049,
2507, 2576, 2752, 3060, 3062, 3064,
2753, 2754, 2756, W 3090, 3092, 3102,
2757, 2758, 2759, \wd . . . . . . . . . . . 982, 2482 3103, 3163, 3168,
2760, 2761, 2763, \write . . . . . . . . . . . 646 3206, 3210, 3214,
2808, 2816, 2833, 2846 3222, 3227, 3234,
\unvbox . 570, 787, 792, X 3293, 3325, 3494, 3497
2286, 2633, 2699, 2778 \xdef . . . . . . . . . 333, \z@skip 541, 975, 1032, 3233

142

You might also like