Project

General

Profile

Revision 1

View differences:

acmart.bib
1
@Misc{TeXFAQ,
2
  title =	 {{UK} List of {\TeX} Frequently Asked Questions},
3
  author =	 {{UK \TeX{} Users Group}},
4
  year =	 2016,
5
  howpublished = {\url{http://www.tex.ac.uk}}
6
}
7

  
8
@Manual{Downes04:amsart,
9
  title =	 {The \textsf{amsart}, \textsf{amsproc}, and
10
                  \textsf{amsbook} document~classes},
11
  author =	 {Michael Downes and Barbara Beeton},
12
  organization = {American Mathematical Society},
13
  year =	 2004,
14
  month =	 aug,
15
  note =	 {\url{http://www.ctan.org/pkg/amslatex}}
16
}
17

  
18
@Manual{Fiorio15,
19
  title =	 {{a}lgorithm2e.sty---package for algorithms},
20
  author =	 {Cristophe Fiorio},
21
  year =	 2015,
22
  month =	 oct,
23
  note =	 {\url{http://www.ctan.org/pkg/algorithm2e}}
24
}
25

  
26
@Manual{Brito09,
27
  title =	 {The algorithms bundle},
28
  author =	 {Rog\'erio Brito},
29
  year =	 2009,
30
  month =	 aug,
31
  note =	 {\url{http://www.ctan.org/pkg/algorithms}}
32
}
33

  
34
@Manual{Heinz15,
35
  title =	 {The Listings Package},
36
  author =	 {Carsten Heinz and Brooks Moses and Jobst Hoffmann},
37
  year =	 2015,
38
  month =	 jun,
39
  note =	 {\url{http://www.ctan.org/pkg/listings}}
40
}
41

  
42
@Manual{Fear05,
43
  title =	 {Publication quality tables in {\LaTeX}},
44
  author =	 {Simon Fear},
45
  year =	 2005,
46
  month =	 apr,
47
  note =	 {\url{http://www.ctan.org/pkg/booktabs}}
48
}
49

  
50
@Manual{ACMIdentityStandards,
51
  title =	 {{ACM} Visual Identity Standards},
52
  organization = {Association for Computing Machinery},
53
  year =	 2007,
54
  note =	 {\url{http://identitystandards.acm.org}}
55
}
56

  
57
@Manual{Sommerfeldt13:Subcaption,
58
  title =	 {The subcaption package},
59
  author =	 {Axel Sommerfeldt},
60
  year =	 2013,
61
  month =	 apr,
62
  note =	 {\url{http://www.ctan.org/pkg/subcaption}}
63
}
64

  
65
@Manual{Nomencl,
66
  title =	 {A package to create a nomenclature},
67
  author =	 {Boris Veytsman and Bern Schandl and Lee Netherton
68
                  and C. V. Radhakrishnan},
69
  year =	 2005,
70
  month =	 sep,
71
  note =	 {\url{http://www.ctan.org/pkg/nomencl}}
72
}
73

  
74
@Manual{Talbot16:Glossaries,
75
  title =	 {User Manual for glossaries.sty v4.25},
76
  author =	 {Nicola L. C. Talbot},
77
  year =	 2016,
78
  month =	 jun,
79
  note =	 {\url{http://www.ctan.org/pkg/subcaption}}
80
}
81

  
82
@Manual{Carlisle04:Textcase,
83
  title = 	 {The \textsl{textcase} package},
84
  author = 	 {David Carlisle},
85
  month = 	 oct,
86
  year = 	 2004,
87
  note = 	 {\url{http://www.ctan.org/pkg/textcase}}
88
}
0 89

  
acmart.cls
1
%%
2
%% This is file `acmart.cls',
3
%% generated with the docstrip utility.
4
%%
5
%% The original source files were:
6
%%
7
%% acmart.dtx  (with options: `class')
8
%% 
9
%% IMPORTANT NOTICE:
10
%% 
11
%% For the copyright see the source file.
12
%% 
13
%% Any modified versions of this file must be renamed
14
%% with new filenames distinct from acmart.cls.
15
%% 
16
%% For distribution of the original source see the terms
17
%% for copying and modification in the file acmart.dtx.
18
%% 
19
%% This generated file may be distributed as long as the
20
%% original source files, as listed above, are part of the
21
%% same distribution. (The sources need not necessarily be
22
%% in the same archive or directory.)
23
%% \CharacterTable
24
%%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
25
%%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
26
%%   Digits        \0\1\2\3\4\5\6\7\8\9
27
%%   Exclamation   \!     Double quote  \"     Hash (number) \#
28
%%   Dollar        \$     Percent       \%     Ampersand     \&
29
%%   Acute accent  \'     Left paren    \(     Right paren   \)
30
%%   Asterisk      \*     Plus          \+     Comma         \,
31
%%   Minus         \-     Point         \.     Solidus       \/
32
%%   Colon         \:     Semicolon     \;     Less than     \<
33
%%   Equals        \=     Greater than  \>     Question mark \?
34
%%   Commercial at \@     Left bracket  \[     Backslash     \\
35
%%   Right bracket \]     Circumflex    \^     Underscore    \_
36
%%   Grave accent  \`     Left brace    \{     Vertical bar  \|
37
%%   Right brace   \}     Tilde         \~}
38
\NeedsTeXFormat{LaTeX2e}
39
\ProvidesClass{acmart}
40
[2017/08/31 v1.47 Typesetting articles for Association of
41
Computing Machinery]
42
\def\@classname{acmart}
43
\InputIfFileExists{acmart-preload-hook.tex}{%
44
  \ClassWarning{\@classname}{%
45
    I am loading acmart-preload-hook.tex. You are fully responsible
46
    for any problems from now on.}}{}
47
\RequirePackage{xkeyval}
48
\RequirePackage{xstring}
49
\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
50
  manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
51
  sigplan, sigchi, sigchi-a}[manuscript]{}{%
52
  \ClassError{\@classname}{The option format must be manuscript,
53
    acmsmall, acmlarge, acmtog, sigconf, siggraph,
54
    sigplan, sigchi or sigchi-a}}
55
\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
56
\@DeclareACMFormat{manuscript}
57
\@DeclareACMFormat{acmsmall}
58
\@DeclareACMFormat{acmlarge}
59
\@DeclareACMFormat{acmtog}
60
\@DeclareACMFormat{sigconf}
61
\@DeclareACMFormat{siggraph}
62
\@DeclareACMFormat{sigplan}
63
\@DeclareACMFormat{sigchi}
64
\@DeclareACMFormat{sigchi-a}
65
\ExecuteOptionsX{format}
66
\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
67
  \if@ACM@screen
68
    \PackageInfo{\@classname}{Using screen mode}%
69
  \else
70
    \PackageInfo{\@classname}{Not using screen mode}%
71
  \fi}{\PackageError{\@classname}{Option screen can be either true or
72
    false}}
73
\ExecuteOptionsX{screen=false}
74
\define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
75
  \if@ACM@acmthm
76
    \PackageInfo{\@classname}{Requiring acmthm}%
77
  \else
78
    \PackageInfo{\@classname}{Suppressing acmthm}%
79
  \fi}{\PackageError{\@classname}{Option acmthm can be either true or
80
    false}}
81
\ExecuteOptionsX{acmthm=true}
82
\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
83
  \if@ACM@review
84
    \PackageInfo{\@classname}{Using review mode}%
85
  \else
86
    \PackageInfo{\@classname}{Not using review mode}%
87
  \fi}{\PackageError{\@classname}{Option review can be either true or
88
    false}}
89
\ExecuteOptionsX{review=false}
90
\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
91
  \if@ACM@authorversion
92
    \PackageInfo{\@classname}{Using authorversion mode}%
93
  \else
94
    \PackageInfo{\@classname}{Not using authorversion mode}%
95
  \fi}{\PackageError{\@classname}{Option authorversion can be either true or
96
    false}}
97
\ExecuteOptionsX{authorversion=false}
98
\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
99
  \if@ACM@natbib
100
    \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
101
  \else
102
    \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
103
  \fi}{\PackageError{\@classname}{Option natbib can be either true or
104
    false}}
105
\ExecuteOptionsX{natbib=true}
106
\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
107
  \if@ACM@anonymous
108
    \PackageInfo{\@classname}{Using anonymous mode}%
109
  \else
110
    \PackageInfo{\@classname}{Not using anonymous mode}%
111
  \fi}{\PackageError{\@classname}{Option anonymous can be either true or
112
    false}}
113
\ExecuteOptionsX{anonymous=false}
114
\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
115
  \if@ACM@timestamp
116
    \PackageInfo{\@classname}{Using timestamp mode}%
117
  \else
118
    \PackageInfo{\@classname}{Not using timestamp mode}%
119
  \fi}{\PackageError{\@classname}{Option timestamp can be either true or
120
    false}}
121
\ExecuteOptionsX{timestamp=false}
122
\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
123
  \if@ACM@authordraft
124
    \PackageInfo{\@classname}{Using authordraft mode}%
125
    \@ACM@timestamptrue
126
    \@ACM@reviewtrue
127
  \else
128
    \PackageInfo{\@classname}{Not using authordraft mode}%
129
  \fi}{\PackageError{\@classname}{Option authordraft can be either true or
130
    false}}
131
\ExecuteOptionsX{authordraft=false}
132
\def\ACM@fontsize{}
133
\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
134
\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
135
\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
136
\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
137
\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
138
\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
139
\ProcessOptionsX
140
\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
141
\newif\if@ACM@manuscript
142
\newif\if@ACM@journal
143
\newif\if@ACM@sigchiamode
144
\ifnum\ACM@format@nr=5\relax % siggraph
145
  \ClassWarning{\@classname}{The format `siggraph' is now obsolete.
146
    I am switching to sigconf.}
147
  \setkeys{acmart.cls}{format=sigconf}
148
\fi
149
\ifnum\ACM@format@nr=0\relax
150
  \@ACM@manuscripttrue
151
\else
152
  \@ACM@manuscriptfalse
153
\fi
154
\@ACM@sigchiamodefalse
155
\ifcase\ACM@format@nr
156
\relax % manuscript
157
  \@ACM@journaltrue
158
\or % acmsmall
159
  \@ACM@journaltrue
160
\or % acmlarge
161
  \@ACM@journaltrue
162
\or % acmtog
163
  \@ACM@journaltrue
164
\or % sigconf
165
  \@ACM@journalfalse
166
\or % siggraph
167
  \@ACM@journalfalse
168
 \or % sigplan
169
  \@ACM@journalfalse
170
 \or % sigchi
171
  \@ACM@journalfalse
172
\or % sigchi-a
173
  \@ACM@journalfalse
174
  \@ACM@sigchiamodetrue
175
\fi
176
\ifx\ACM@fontsize\@empty
177
  \ifcase\ACM@format@nr
178
  \relax % manuscript
179
    \def\ACM@fontsize{9pt}%
180
  \or % acmsmall
181
    \def\ACM@fontsize{10pt}%
182
  \or % acmlarge
183
    \def\ACM@fontsize{10pt}%
184
  \or % acmtog
185
    \def\ACM@fontsize{9pt}%
186
  \or % sigconf
187
    \def\ACM@fontsize{9pt}%
188
  \or % siggraph
189
    \def\ACM@fontsize{9pt}%
190
   \or % sigplan
191
    \def\ACM@fontsize{10pt}%
192
   \or % sigchi
193
    \def\ACM@fontsize{10pt}%
194
  \or % sigchi-a
195
    \def\ACM@fontsize{10pt}%
196
  \fi
197
\fi
198
\ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
199
\LoadClass[\ACM@fontsize, reqno]{amsart}
200
\RequirePackage{microtype}
201
\RequirePackage{etoolbox}
202
\RequirePackage{refcount}
203
\RequirePackage{totpages}
204
\RequirePackage{environ}
205
\if@ACM@manuscript
206
\RequirePackage{setspace}
207
\onehalfspacing
208
\fi
209
\RequirePackage{textcase}
210
\if@ACM@natbib
211
  \RequirePackage{natbib}
212
  \renewcommand{\bibsection}{%
213
     \section*{\refname}%
214
     \phantomsection\addcontentsline{toc}{section}{\refname}%
215
  }
216
  \renewcommand{\bibfont}{\bibliofont}
217
  \renewcommand\setcitestyle[1]{
218
  \@for\@tempa:=#1\do
219
  {\def\@tempb{round}\ifx\@tempa\@tempb
220
     \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
221
   \def\@tempb{square}\ifx\@tempa\@tempb
222
     \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
223
   \def\@tempb{angle}\ifx\@tempa\@tempb
224
     \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
225
   \def\@tempb{curly}\ifx\@tempa\@tempb
226
     \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
227
   \def\@tempb{semicolon}\ifx\@tempa\@tempb
228
     \renewcommand\NAT@sep{;}\fi
229
   \def\@tempb{colon}\ifx\@tempa\@tempb
230
     \renewcommand\NAT@sep{;}\fi
231
   \def\@tempb{comma}\ifx\@tempa\@tempb
232
     \renewcommand\NAT@sep{,}\fi
233
   \def\@tempb{authoryear}\ifx\@tempa\@tempb
234
     \NAT@numbersfalse\fi
235
   \def\@tempb{numbers}\ifx\@tempa\@tempb
236
     \NAT@numberstrue\NAT@superfalse\fi
237
   \def\@tempb{super}\ifx\@tempa\@tempb
238
     \NAT@numberstrue\NAT@supertrue\fi
239
   \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
240
     \let\bibstyle=\@gobble\fi
241
   \def\@tempb{bibstyle}\ifx\@tempa\@tempb
242
     \let\bibstyle=\@citestyle\fi
243
   \def\@tempb{sort}\ifx\@tempa\@tempb
244
     \def\NAT@sort{\@ne}\fi
245
   \def\@tempb{nosort}\ifx\@tempa\@tempb
246
     \def\NAT@sort{\z@}\fi
247
   \def\@tempb{compress}\ifx\@tempa\@tempb
248
     \def\NAT@cmprs{\@ne}\fi
249
   \def\@tempb{nocompress}\ifx\@tempa\@tempb
250
     \def\NAT@cmprs{\@z}\fi
251
   \def\@tempb{sort&compress}\ifx\@tempa\@tempb
252
     \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
253
   \def\@tempb{mcite}\ifx\@tempa\@tempb
254
     \let\NAT@merge\@ne\fi
255
   \def\@tempb{merge}\ifx\@tempa\@tempb
256
     \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
257
   \def\@tempb{elide}\ifx\@tempa\@tempb
258
     \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
259
   \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
260
     \NAT@longnamestrue\fi
261
   \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
262
     \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
263
   \expandafter\NAT@find@eq\@tempa=\relax\@nil
264
   \if\@tempc\relax\else
265
     \expandafter\NAT@rem@eq\@tempc
266
     \def\@tempb{open}\ifx\@tempa\@tempb
267
      \xdef\NAT@open{\@tempc}\fi
268
     \def\@tempb{close}\ifx\@tempa\@tempb
269
      \xdef\NAT@close{\@tempc}\fi
270
     \def\@tempb{aysep}\ifx\@tempa\@tempb
271
      \xdef\NAT@aysep{\@tempc}\fi
272
     \def\@tempb{yysep}\ifx\@tempa\@tempb
273
      \xdef\NAT@yrsep{\@tempc}\fi
274
     \def\@tempb{notesep}\ifx\@tempa\@tempb
275
      \xdef\NAT@cmt{\@tempc}\fi
276
     \def\@tempb{citesep}\ifx\@tempa\@tempb
277
      \xdef\NAT@sep{\@tempc}\fi
278
   \fi
279
  }%
280
  \NAT@@setcites
281
  }
282
  \renewcommand\citestyle[1]{%
283
    \ifcsname bibstyle@#1\endcsname%
284
    \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
285
    \else%
286
    \@latex@error{Undefined `#1' citestyle}%
287
    \fi
288
  }%
289
\fi
290
\newcommand{\bibstyle@acmauthoryear}{%
291
  \setcitestyle{%
292
    authoryear,%
293
    open={[},close={]},citesep={;},%
294
    aysep={},yysep={,},%
295
    notesep={, }}}
296
\newcommand{\bibstyle@acmnumeric}{%
297
  \setcitestyle{%
298
    numbers,sort&compress,%
299
    open={[},close={]},citesep={,},%
300
    notesep={, }}}
301
\if@ACM@natbib
302
\citestyle{acmnumeric}
303
\fi
304
\def\@startsection#1#2#3#4#5#6{%
305
  \if@noskipsec \leavevmode \fi
306
  \par
307
  \@tempskipa #4\relax
308
  \@afterindenttrue
309
  \ifdim \@tempskipa <\z@
310
    \@tempskipa -\@tempskipa \@afterindentfalse
311
  \fi
312
  \if@nobreak
313
    \everypar{}%
314
  \else
315
    \addpenalty\@secpenalty\addvspace\@tempskipa
316
  \fi
317
  \@ifstar
318
    {\@ssect{#3}{#4}{#5}{#6}}%
319
    {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
320
\def\@sect#1#2#3#4#5#6[#7]#8{%
321
  \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
322
  \ifnum #2>\c@secnumdepth
323
    \let\@svsec\@empty
324
  \else
325
    \refstepcounter{#1}%
326
    \protected@edef\@svsec{\@seccntformat{#1}\relax}%
327
  \fi
328
  \@tempskipa #5\relax
329
  \ifdim \@tempskipa>\z@
330
    \begingroup
331
      #6{%
332
        \@hangfrom{\hskip #3\relax\@svsec}%
333
          \interlinepenalty \@M #8\@@par}%
334
    \endgroup
335
    \csname #1mark\endcsname{#7}%
336
    \ifnum #2>\c@secnumdepth \else
337
        \@tochangmeasure{\csname the#1\endcsname}%
338
    \fi
339
    \addcontentsline{toc}{#1}{%
340
      \ifnum #2>\c@secnumdepth \else
341
        \protect\numberline{\csname the#1\endcsname}%
342
      \fi
343
      #7}%
344
  \else
345
    \def\@svsechd{%
346
      #6{\hskip #3\relax
347
      \@svsec #8}%
348
      \csname #1mark\endcsname{#7}%
349
      \ifnum #2>\c@secnumdepth \else
350
        \@tochangmeasure{\csname the#1\endcsname\space}%
351
      \fi
352
      \addcontentsline{toc}{#1}{%
353
        \ifnum #2>\c@secnumdepth \else
354
          \protect\numberline{\csname the#1\endcsname}%
355
        \fi
356
        #7}}%
357
  \fi
358
  \@xsect{#5}}
359
\def\@xsect#1{%
360
  \@tempskipa #1\relax
361
  \ifdim \@tempskipa>\z@
362
    \par \nobreak
363
    \vskip \@tempskipa
364
    \@afterheading
365
  \else
366
    \@nobreakfalse
367
    \global\@noskipsectrue
368
    \everypar{%
369
      \if@noskipsec
370
        \global\@noskipsecfalse
371
       {\setbox\z@\lastbox}%
372
        \clubpenalty\@M
373
        \begingroup \@svsechd \endgroup
374
        \unskip
375
        \@tempskipa #1\relax
376
        \hskip -\@tempskipa
377
      \else
378
        \clubpenalty \@clubpenalty
379
        \everypar{}%
380
      \fi}%
381
  \fi
382
  \ignorespaces}
383
\def\@seccntformat#1{\csname the#1\endcsname\quad}
384
\def\@ssect#1#2#3#4#5{%
385
  \@tempskipa #3\relax
386
  \ifdim \@tempskipa>\z@
387
    \begingroup
388
      #4{%
389
        \@hangfrom{\hskip #1}%
390
          \interlinepenalty \@M #5\@@par}%
391
    \endgroup
392
  \else
393
    \def\@svsechd{#4{\hskip #1\relax #5}}%
394
  \fi
395
  \@xsect{#3}}
396
\def\@starttoc#1#2{\begingroup\makeatletter
397
  \setTrue{#1}%
398
  \par\removelastskip\vskip\z@skip
399
  \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
400
    {.5\linespacing}{\centering\contentsnamefont}{#2}%
401
  \@input{\jobname.#1}%
402
  \if@filesw
403
    \@xp\newwrite\csname tf@#1\endcsname
404
    \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
405
  \fi
406
  \global\@nobreakfalse \endgroup
407
  \addvspace{32\p@\@plus14\p@}%
408
}
409
\def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
410
\def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
411
\def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}}
412
\let\@footnotemark@nolink\@footnotemark
413
\let\@footnotetext@nolink\@footnotetext
414
\RequirePackage[bookmarksnumbered,unicode]{hyperref}
415
\pdfstringdefDisableCommands{%
416
  \def\unskip{}%
417
  \def\textbullet{- }%
418
  \def\textrightarrow{ -> }%
419
  \def\footnotemark{}%
420
}
421
\urlstyle{rm}
422
\ifcase\ACM@format@nr
423
\relax % manuscript
424
\or % acmsmall
425
\or % acmlarge
426
\or % acmtog
427
\or % sigconf
428
\or % siggraph
429
\or % sigplan
430
  \urlstyle{sf}
431
\or % sigchi
432
\or % sigchi-a
433
  \urlstyle{sf}
434
\fi
435
\AtEndPreamble{%
436
  \if@ACM@screen
437
    \hypersetup{colorlinks,
438
      linkcolor=ACMRed,
439
      citecolor=ACMPurple,
440
      urlcolor=ACMDarkBlue,
441
      filecolor=ACMDarkBlue}
442
    \else
443
    \hypersetup{hidelinks}
444
  \fi}
445
\if@ACM@natbib
446
  \let\citeN\cite
447
  \let\cite\citep
448
  \let\citeANP\citeauthor
449
  \let\citeNN\citeyearpar
450
  \let\citeyearNP\citeyear
451
  \let\citeyear\citeyearpar
452
  \let\citeNP\citealt
453
  \DeclareRobustCommand\citeA
454
     {\begingroup\NAT@swafalse
455
       \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
456
  \providecommand\newblock{}%
457
\else
458
  \AtBeginDocument{%
459
    \let\shortcite\cite%
460
    \providecommand\citename[1]{#1}}
461
\fi
462
\newcommand\shortcite[2][]{%
463
  \ifNAT@numbers\cite[#1]{#2}\else\citeyear[#1]{#2}\fi}
464
\def\bibliographystyle#1{%
465
  \ifx\@begindocumenthook\@undefined\else
466
    \expandafter\AtBeginDocument
467
  \fi
468
    {\if@filesw
469
       \immediate\write\@auxout{\string\bibstyle{#1}}%
470
     \fi}}
471
\RequirePackage{graphicx, xcolor}
472
\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
473
\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
474
\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
475
\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
476
\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
477
\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
478
\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
479
\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
480
\if@ACM@authordraft
481
  \RequirePackage{draftwatermark}
482
  \SetWatermarkFontSize{0.5in}
483
  \SetWatermarkColor[gray]{.9}
484
  \SetWatermarkText{\parbox{12em}{\centering
485
      Unpublished working draft\\
486
      Not for distribution}}
487
\fi
488
\RequirePackage{geometry}
489
\ifcase\ACM@format@nr
490
\relax % manuscript
491
   \geometry{letterpaper,head=13pt,
492
   marginparwidth=6pc,heightrounded}%
493
\or % acmsmall
494
   \geometry{twoside=true,
495
     includeheadfoot, head=13pt, foot=2pc,
496
     paperwidth=6.75in, paperheight=10in,
497
     top=58pt, bottom=44pt, inner=46pt, outer=46pt,
498
     marginparwidth=2pc,heightrounded
499
   }%
500
\or % acmlarge
501
   \geometry{twoside=true, head=13pt, foot=2pc,
502
     paperwidth=8.5in, paperheight=11in,
503
     includeheadfoot,
504
     top=78pt, bottom=114pt, inner=81pt, outer=81pt,
505
     marginparwidth=4pc,heightrounded
506
     }%
507
\or % acmtog
508
   \geometry{twoside=true, head=13pt, foot=2pc,
509
     paperwidth=8.5in, paperheight=11in,
510
     includeheadfoot, columnsep=24pt,
511
     top=52pt, bottom=75pt, inner=52pt, outer=52pt,
512
     marginparwidth=2pc,heightrounded
513
     }%
514
\or % sigconf
515
   \geometry{twoside=true, head=13pt,
516
     paperwidth=8.5in, paperheight=11in,
517
     includeheadfoot, columnsep=2pc,
518
     top=57pt, bottom=73pt, inner=54pt, outer=54pt,
519
     marginparwidth=2pc,heightrounded
520
     }%
521
\or % siggraph
522
   \geometry{twoside=true, head=13pt,
523
     paperwidth=8.5in, paperheight=11in,
524
     includeheadfoot, columnsep=2pc,
525
     top=57pt, bottom=73pt, inner=54pt, outer=54pt,
526
     marginparwidth=2pc,heightrounded
527
     }%
528
\or % sigplan
529
   \geometry{twoside=true, head=13pt,
530
     paperwidth=8.5in, paperheight=11in,
531
     includeheadfoot=false, columnsep=2pc,
532
     top=1in, bottom=1in, inner=0.75in, outer=0.75in,
533
     marginparwidth=2pc,heightrounded
534
     }%
535
\or % sigchi
536
   \geometry{twoside=true, head=13pt,
537
     paperwidth=8.5in, paperheight=11in,
538
     includeheadfoot, columnsep=2pc,
539
     top=66pt, bottom=73pt, inner=54pt, outer=54pt,
540
     marginparwidth=2pc,heightrounded
541
     }%
542
\or % sigchi-a
543
   \geometry{twoside=false, head=13pt,
544
     paperwidth=11in, paperheight=8.5in,
545
     includeheadfoot, marginparsep=72pt,
546
     marginparwidth=170pt, columnsep=20pt,
547
     top=72pt, bottom=72pt, left=314pt, right=72pt
548
     }%
549
     \@mparswitchfalse
550
     \reversemarginpar
551
\fi
552
\setlength\parindent{10\p@}
553
\setlength\parskip{\z@}
554
\ifcase\ACM@format@nr
555
\relax % manuscript
556
\or % acmsmall
557
\or % acmlarge
558
\or % acmtog
559
  \setlength\parindent{9\p@}%
560
\or % sigconf
561
\or % siggraph
562
\or % sigplan
563
\or % sigchi
564
\or % sigchi-a
565
\fi
566
\setlength\normalparindent{\parindent}
567
\def\copyrightpermissionfootnoterule{\kern-3\p@
568
  \hrule \@width \columnwidth \kern 2.6\p@}
569
\RequirePackage{manyfoot}
570
\SelectFootnoteRule[2]{copyrightpermission}
571
\DeclareNewFootnote{authorsaddresses}
572
\SelectFootnoteRule[2]{copyrightpermission}
573
\DeclareNewFootnote{copyrightpermission}
574
\def\footnoterule{\kern-3\p@
575
  \hrule \@width 4pc \kern 2.6\p@}
576
\def\endminipage{%
577
    \par
578
    \unskip
579
    \ifvoid\@mpfootins\else
580
      \vskip\skip\@mpfootins
581
      \normalcolor
582
      \unvbox\@mpfootins
583
    \fi
584
    \@minipagefalse   %% added 24 May 89
585
  \color@endgroup
586
  \egroup
587
  \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
588
\def\@makefntext{\noindent\@makefnmark}
589
\if@ACM@sigchiamode
590
\long\def\@footnotetext#1{\marginpar{%
591
    \reset@font\small
592
    \interlinepenalty\interfootnotelinepenalty
593
    \protected@edef\@currentlabel{%
594
       \csname p@footnote\endcsname\@thefnmark
595
    }%
596
    \color@begingroup
597
      \@makefntext{%
598
        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
599
    \color@endgroup}}%
600
\fi
601
\long\def\@mpfootnotetext#1{%
602
  \global\setbox\@mpfootins\vbox{%
603
    \unvbox\@mpfootins
604
    \reset@font\footnotesize
605
    \hsize\columnwidth
606
    \@parboxrestore
607
    \protected@edef\@currentlabel
608
         {\csname p@mpfootnote\endcsname\@thefnmark}%
609
    \color@begingroup\centering
610
      \@makefntext{%
611
        \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
612
    \color@endgroup}}
613
\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
614
\def\@textbottom{\vskip \z@ \@plus 1pt}
615
\let\@texttop\relax
616
\RequirePackage{iftex}
617
\ifPDFTeX
618
\input{glyphtounicode}
619
\pdfglyphtounicode{f_f}{FB00}
620
\pdfglyphtounicode{f_f_i}{FB03}
621
\pdfglyphtounicode{f_f_l}{FB04}
622
\pdfglyphtounicode{f_i}{FB01}
623
\pdfglyphtounicode{t_t}{00740074}
624
\pdfglyphtounicode{f_t}{00660074}
625
\pdfglyphtounicode{T_h}{00540068}
626
\pdfgentounicode=1
627
\fi
628
\RequirePackage{cmap}
629
\newif\if@ACM@newfonts
630
\@ACM@newfontstrue
631
\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
632
    have libertine package installed.  Please upgrade your
633
    TeX}\@ACM@newfontsfalse}
634
\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
635
    have zi4 package installed.  Please upgrade your TeX}\@ACM@newfontsfalse}
636
\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
637
    have newtxmath package installed.  Please upgrade your
638
    TeX}\@ACM@newfontsfalse}
639
\if@ACM@newfonts
640
\RequirePackage[tt=false, type1=true]{libertine}
641
\RequirePackage[varqu]{zi4}
642
\RequirePackage[libertine]{newtxmath}
643
\RequirePackage[T1]{fontenc}
644
\fi
645
\let\liningnums\@undefined
646
\AtEndPreamble{%
647
  \DeclareTextFontCommand{\liningnums}{\libertineLF}}
648
\if@ACM@sigchiamode
649
  \renewcommand{\familydefault}{\sfdefault}
650
\fi
651
\RequirePackage{caption, float}
652
\captionsetup[table]{position=top}
653
\if@ACM@journal
654
  \captionsetup{labelfont={sf, small},
655
    textfont={sf, small},  margin=\z@}
656
  \captionsetup[figure]{name={Fig.}}
657
\else
658
  \captionsetup{labelfont={bf},
659
    textfont={bf}, labelsep=colon, margin=\z@}
660
  \ifcase\ACM@format@nr
661
  \relax % manuscript
662
  \or % acmsmall
663
  \or % acmlarge
664
  \or % acmtog
665
  \or % sigconf
666
  \or % siggraph
667
    \captionsetup{textfont={it}}
668
  \or % sigplan
669
    \captionsetup{labelfont={bf},
670
      textfont={normalfont}, labelsep=period, margin=\z@}
671
  \or % sigchi
672
    \captionsetup[figure]{labelfont={bf, small},
673
      textfont={bf, small}}
674
  \or % sigchi-a
675
    \captionsetup[figure]{labelfont={bf, small},
676
      textfont={bf, small}}
677
  \fi
678
\fi
679
\newfloat{sidebar}{}{sbar}
680
\floatname{sidebar}{Sidebar}
681
\renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
682
\long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}%
683
  \marginpar{\small#1}\egroup}
684
\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
685
\long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}%
686
  \marginpar{\centering\small#1}\egroup}
687
\newenvironment{margintable}{\Collect@Body\@margintable}{}
688
\long\def\@margintable#1{\bgroup\captionsetup{type=table}%
689
  \marginpar{\centering\small#1}\egroup}
690
\newdimen\fulltextwidth
691
\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
692
\if@ACM@sigchiamode
693
\def\@dblfloat{\bgroup\columnwidth=\fulltextwidth
694
  \let\@endfloatbox\@endwidefloatbox
695
  \def\@fpsadddefault{\def\@fps{tp}}%
696
  \@float}
697
\fi
698
\if@ACM@sigchiamode
699
\def\end@dblfloat{%
700
    \end@float\egroup}
701
\fi
702
\def\@endwidefloatbox{%
703
  \par\vskip\z@skip
704
  \@minipagefalse
705
  \outer@nobreak
706
  \egroup
707
  \color@endbox
708
  \global\setbox\@currbox=\vbox{\moveleft
709
    \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
710
  \wd\@currbox=\textwidth
711
}
712
\ifcase\ACM@format@nr
713
\relax % manuscript
714
\or % acmsmall
715
\or % acmlarge
716
\or % acmtog
717
\or % sigconf
718
\or % siggraph
719
\or % sigplan
720
\def\labelenumi{\theenumi.}
721
\def\labelenumii{\theenumii.}
722
\def\labelenumiii{\theenumiii.}
723
\def\labelenumiv{\theenumiv.}
724
\or % sigchi
725
\or % sigchi-a
726
\fi
727
\newdimen\@ACM@labelwidth
728
\AtBeginDocument{%
729
  \setlength\labelsep{4pt}
730
  \setlength{\@ACM@labelwidth}{6.5pt}
731

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

  
740
  %% Second-level and higher lists.
741
  \setlength\leftmarginii{\z@}
742
  \addtolength\leftmarginii{0.5\labelsep}
743
  \addtolength\leftmarginii{\@ACM@labelwidth}
744
  \setlength\leftmarginiii{\leftmarginii}
745
  \setlength\leftmarginiv{\leftmarginiii}
746
  \setlength\leftmarginv{\leftmarginiv}
747
  \setlength\leftmarginvi{\leftmarginv}
748
  \@listi}
749
\newskip\listisep
750
\listisep\smallskipamount
751
\def\@listI{\leftmargin\leftmargini
752
  \labelwidth\leftmargini \advance\labelwidth-\labelsep
753
  \listparindent\z@
754
  \topsep\listisep}
755
\let\@listi\@listI
756
\def\@listii{\leftmargin\leftmarginii
757
  \labelwidth\leftmarginii \advance\labelwidth-\labelsep
758
  \topsep\z@skip}
759
\def\@listiii{\leftmargin\leftmarginiii
760
  \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
761
\def\@listiv{\leftmargin\leftmarginiv
762
  \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
763
\def\@listv{\leftmargin\leftmarginv
764
  \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
765
\def\@listvi{\leftmargin\leftmarginvi
766
  \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
767
\renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
768
\renewenvironment{description}{\list{}{%
769
    \labelwidth\@ACM@labelwidth
770
    \let\makelabel\descriptionlabel}%
771
}{
772
  \endlist
773
}
774
\let\enddescription=\endlist % for efficiency
775
\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
776
  CIE,%
777
  CSUR,%
778
  IMWUT,%
779
  JACM,%
780
  JDIQ,%
781
  JEA,%
782
  JERIC,%
783
  JETC,%
784
  JOCCH,%
785
  PACMHCI,%
786
  PACMPL,%
787
  POMACS,%
788
  TAAS,%
789
  TACCESS,%
790
  TACO,%
791
  TALG,%
792
  TALLIP,%
793
  TAP,%
794
  TCPS,%
795
  TEAC,%
796
  TECS,%
797
  THRI,%
798
  TIIS,%
799
  TISSEC,%
800
  TIST,%
801
  TKDD,%
802
  TMIS,%
803
  TOCE,%
804
  TOCHI,%
805
  TOCL,%
806
  TOCS,%
807
  TOCT,%
808
  TODAES,%
809
  TODS,%
810
  TOG,%
811
  TOIS,%
812
  TOIT,%
813
  TOMACS,%
814
  TOMM,%
815
  TOMPECS,%
816
  TOMS,%
817
  TOPC,%
818
  TOPS,%
819
  TOPLAS,%
820
  TOS,%
821
  TOSEM,%
822
  TOSN,%
823
  TRETS,%
824
  TSAS,%
825
  TSC,%
826
  TSLP,%
827
  TWEB%
828
}{%
829
\ifcase\@journalCode@nr
830
\relax % CIE
831
  \def\@journalName{ACM Computers in Entertainment}%
832
  \def\@journalNameShort{ACM Comput. Entertain.}%
833
  \def\@permissionCodeOne{1544-3574}%
834
\or % CSUR
835
  \def\@journalName{ACM Computing Surveys}%
836
  \def\@journalNameShort{ACM Comput. Surv.}%
837
  \def\@permissionCodeOne{0360-0300}%
838
\or % IMWUT
839
  \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
840
    Wearable and Ubiquitous Technologies}%
841
  \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
842
  \def\@permissionCodeOne{2474-9567}%
843
  \@ACM@screentrue
844
  \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
845
\or % JACM
846
  \def\@journalName{Journal of the ACM}%
847
  \def\@journalNameShort{J. ACM}%
848
  \def\@permissionCodeOne{0004-5411}%
849
\or % JDIQ
850
  \def\@journalName{ACM Journal of Data and Information Quality}%
851
  \def\@journalNameShort{ACM J. Data Inform. Quality}%
852
  \def\@permissionCodeOne{1936-1955}%
853
\or % JEA
854
  \def\@journalName{ACM Journal of Experimental Algorithmics}%
855
  \def\@journalNameShort{ACM J. Exp. Algor.}%
856
  \def\@permissionCodeOne{1084-6654}%
857
\or % JERIC
858
  \def\@journalName{ACM Journal of Educational Resources in Computing}%
859
  \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
860
  \def\@permissionCodeOne{1073-0516}%
861
\or % JETC
862
  \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
863
  \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
864
  \def\@permissionCodeOne{1550-4832}%
865
\or % JOCCH
866
  \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
867
  \def\@journalName{ACM J. Comput. Cult. Herit.}%
868
\or % PACMHCI
869
  \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
870
  \def\@journalName{Proc. ACM Hum.-Comput. Interact.}%
871
  \def\@permissionCodeOne{2573-0142}%
872
  \@ACM@screentrue
873
  \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
874
\or % PACMPL
875
  \def\@journalName{Proceedings of the ACM on Programming Languages}%
876
  \def\@journalName{Proc. ACM Program. Lang.}%
877
  \def\@permissionCodeOne{2475-1421}%
878
  \@ACM@screentrue
879
  \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
880
\or % POMACS
881
  \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
882
  \def\@journalName{Proc. ACM Meas. Anal. Comput. Syst.}%
883
  \def\@permissionCodeOne{2476-1249}%
884
  \@ACM@screentrue
885
  \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
886
\or % TAAS
887
  \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
888
  \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
889
  \def\@permissionCodeOne{1556-4665}%
890
\or % TACCESS
891
  \def\@journalName{ACM Transactions on Accessible Computing}%
892
  \def\@journalNameShort{ACM Trans. Access. Comput.}%
893
  \def\@permissionCodeOne{1936-7228}%
894
\or % TACO
895
  \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
896
\or % TALG
897
  \def\@journalName{ACM Transactions on Algorithms}%
898
  \def\@journalNameShort{ACM Trans. Algor.}%
899
  \def\@permissionCodeOne{1549-6325}%
900
\or % TALLIP
901
  \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
902
  \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
903
  \def\@permissionCodeOne{2375-4699}%
904
\or % TAP
905
  \def\@journalName{ACM Transactions on Applied Perception}%
906
\or % TCPS
907
  \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
908
\or % TEAC
909
  \def\@journalName{ACM Transactions on Economics and Computation}%
910
\or % TECS
911
  \def\@journalName{ACM Transactions on Embedded Computing Systems}%
912
  \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
913
  \def\@permissionCodeOne{1539-9087}%
914
\or % THRI
915
  \def\@journalName{ACM Transactions on Human-Robot Interaction}%
916
  \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
917
  \def\@permissionCodeOne{2573-9522}%
918
\or % TIIS
919
  \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
920
  \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
921
  \def\@permissionCodeOne{2160-6455}%
922
\or % TISSEC
923
  \def\@journalName{ACM Transactions on Information and System Security}%
924
  \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
925
  \def\@permissionCodeOne{1094-9224}%
926
\or % TIST
927
  \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
928
  \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
929
  \def\@permissionCodeOne{2157-6904}%
930
\or % TKDD
931
  \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
932
  \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
933
  \def\@permissionCodeOne{1556-4681}%
934
\or % TMIS
935
  \def\@journalName{ACM Transactions on Management Information Systems}%
936
  \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
937
  \def\@permissionCodeOne{2158-656X}%
938
\or % TOCE
939
  \def\@journalName{ACM Transactions on Computing Education}%
940
  \def\@journalNameShort{ACM Trans. Comput. Educ.}%
941
  \def\@permissionCodeOne{1946-6226}%
942
\or % TOCHI
943
  \def\@journalName{ACM Transactions on Computer-Human Interaction}%
944
  \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
945
  \def\@permissionCodeOne{1073-0516}%
946
\or % TOCL
947
  \def\@journalName{ACM Transactions on Computational Logic}%
948
  \def\@journalNameShort{ACM Trans. Comput. Logic}%
949
  \def\@permissionCodeOne{1529-3785}%
950
\or % TOCS
951
  \def\@journalName{ACM Transactions on Computer Systems}%
952
  \def\@journalNameShort{ACM Trans. Comput. Syst.}%
953
  \def\@permissionCodeOne{0734-2071}%
954
\or % TOCT
955
  \def\@journalName{ACM Transactions on Computation Theory}%
956
  \def\@journalNameShort{ACM Trans. Comput. Theory}%
957
  \def\@permissionCodeOne{1942-3454}%
958
\or % TODAES
959
  \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
960
  \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
961
  \def\@permissionCodeOne{1084-4309}%
962
\or % TODS
963
  \def\@journalName{ACM Transactions on Database Systems}%
964
  \def\@journalNameShort{ACM Trans. Datab. Syst.}%
965
  \def\@permissionCodeOne{0362-5915}%
966
\or % TOG
967
  \def\@journalName{ACM Transactions on Graphics}%
968
  \def\@journalNameShort{ACM Trans. Graph.}%
969
  \def\@permissionCodeOne{0730-0301}
970
\or % TOIS
971
  \def\@journalName{ACM Transactions on Information Systems}%
972
  \def\@journalName{ACM Transactions on Information Systems}%
973
  \def\@permissionCodeOne{1046-8188}%
974
\or % TOIT
975
  \def\@journalName{ACM Transactions on Internet Technology}%
976
  \def\@journalNameShort{ACM Trans. Internet Technol.}%
977
  \def\@permissionCodeOne{1533-5399}%
978
\or % TOMACS
979
  \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
980
  \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
981
  \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
982
\or % TOMM
983
  \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
984
  \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
985
  \def\@permissionCodeOne{1551-6857}%
986
  \def\@permissionCodeTwo{0100}%
987
\or % TOMPECS
988
  \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
989
  \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
990
  \def\@permissionCodeOne{2376-3639}%
991
\or % TOMS
992
  \def\@journalName{ACM Transactions on Mathematical Software}%
993
  \def\@journalNameShort{ACM Trans. Math. Softw.}%
994
  \def\@permissionCodeOne{0098-3500}%
995
\or % TOPC
996
  \def\@journalName{ACM Transactions on Parallel Computing}%
997
  \def\@journalNameShort{ACM Trans. Parallel Comput.}%
998
  \def\@permissionCodeOne{1539-9087}%
999
\or % TOPS
1000
  \def\@journalName{ACM Transactions on Privacy and Security}%
1001
  \def\@journalNameShort{ACM Trans. Priv. Sec.}%
1002
  \def\@permissionCodeOne{2471-2566}%
1003
\or % TOPLAS
1004
  \def\@journalName{ACM Transactions on Programming Languages and Systems}%
1005
  \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
1006
  \def\@permissionCodeOne{0164-0925}%
1007
\or % TOS
1008
  \def\@journalName{ACM Transactions on Storage}%
1009
  \def\@journalNameShort{ACM Trans. Storage}%
1010
  \def\@permissionCodeOne{1553-3077}%
1011
\or % TOSEM
1012
  \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
1013
  \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
1014
  \def\@permissionCodeOne{1049-331X}%
1015
\or % TOSN
1016
  \def\@journalName{ACM Transactions on Sensor Networks}%
1017
  \def\@journalNameShort{ACM Trans. Sensor Netw.}%
1018
  \def\@permissionCodeOne{1550-4859}%
1019
\or % TRETS
1020
  \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
1021
  \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
1022
  \def\@permissionCodeOne{1936-7406}%
1023
\or % TSAS
1024
  \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
1025
  \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
1026
  \def\@permissionCodeOne{2374-0353}%
1027
\or % TSC
1028
  \def\@journalName{ACM Transactions on Social Computing}%
1029
  \def\@journalNameShort{ACM Trans. Soc. Comput.}%
1030
  \def\@permissionCodeOne{2469-7818}%
1031
\or % TSLP
1032
  \def\@journalName{ACM Transactions on Speech and Language Processing}%
1033
  \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
1034
  \def\@permissionCodeOne{1550-4875}%
1035
\or % TWEB
1036
  \def\@journalName{ACM Transactions on the Web}%
1037
  \def\@journalNameShort{ACM Trans. Web}%
1038
  \def\@permissionCodeOne{1559-1131}%
1039
\fi
1040
\ClassInfo{\@classname}{Using journal code \@journalCode}%
1041
}{%
1042
  \ClassError{\@classname}{Incorrect journal #1}%
1043
}%
1044
\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
1045
\def\@journalCode@nr{0}
1046
\def\@journalName{}%
1047
\def\@journalNameShort{\@journalName}%
1048
\def\@permissionCodeOne{XXXX-XXXX}%
1049
\def\@permissionCodeTwo{}%
1050
\newcommand\acmConference[4][]{%
1051
  \gdef\acmConference@shortname{#1}%
1052
  \gdef\acmConference@name{#2}%
1053
  \gdef\acmConference@date{#3}%
1054
  \gdef\acmConference@venue{#4}%
1055
  \ifx\acmConference@shortname\@empty
1056
    \gdef\acmConference@shortname{#2}%
1057
  \fi}
1058
\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
1059
  DC, USA}
1060
\def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
1061
\acmBooktitle{Proceedings of \acmConference@name
1062
       \ifx\acmConference@name\acmConference@shortname\else
1063
         \ (\acmConference@shortname)\fi}
1064
\def\@editorsAbbrev{(Ed.)}
1065
\def\@acmEditors{}
1066
\def\editor#1{\ifx\@acmEditors\@empty
1067
    \gdef\@acmEditors{#1}%
1068
  \else
1069
    \gdef\@editorsAbbrev{(Eds.)}%
1070
    \g@addto@macro\@acmEditors{\and#1}%
1071
\fi}
1072
\def\subtitle#1{\def\@subtitle{#1}}
1073
\subtitle{}
1074
\newcount\num@authorgroups
1075
\num@authorgroups=0\relax
1076
\newcount\num@authors
1077
\num@authors=0\relax
1078
\newif\if@insideauthorgroup
1079
\@insideauthorgroupfalse
1080
\renewcommand\author[2][]{%
1081
  \global\advance\num@authors by 1\relax
1082
  \if@insideauthorgroup\else
1083
    \global\advance\num@authorgroups by 1\relax
1084
    \global\@insideauthorgrouptrue
1085
  \fi
1086
  \ifx\addresses\@empty
1087
    \if@ACM@anonymous
1088
      \gdef\addresses{\@author{Anonymous Author(s)}}%
1089
      \gdef\authors{Anonymous Author(s)}%
1090
    \else
1091
      \gdef\addresses{\@author{#2}}%
1092
      \gdef\authors{#2}%
1093
    \fi
1094
  \else
1095
    \if@ACM@anonymous\else
1096
      \g@addto@macro\addresses{\and\@author{#2}}%
1097
      \g@addto@macro\authors{\and#2}%
1098
    \fi
1099
  \fi
1100
  \if@ACM@anonymous
1101
    \ifx\shortauthors\@empty
1102
      \gdef\shortauthors{Anon.}%
1103
    \fi
1104
  \else
1105
    \def\@tempa{#1}%
1106
    \ifx\@tempa\@empty
1107
      \ifx\shortauthors\@empty
1108
        \gdef\shortauthors{#2}%
1109
      \else
1110
        \g@addto@macro\shortauthors{\and#2}%
1111
      \fi
1112
    \else
1113
      \ifx\shortauthors\@empty
1114
        \gdef\shortauthors{#1}%
1115
      \else
1116
        \g@addto@macro\shortauthors{\and#1}%
1117
      \fi
1118
    \fi
1119
  \fi}
1120
\newcommand{\affiliation}[2][]{%
1121
  \global\@insideauthorgroupfalse
1122
  \if@ACM@anonymous\else
1123
    \g@addto@macro\addresses{\affiliation{#1}{#2}}%
1124
  \fi}
1125
\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
1126
[true]{}{\ClassError{\@classname}{obeypunctuation must be true or false}}
1127
\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
1128
\def\@additionalaffiliation#1{\bgroup
1129
  \def\position##1{\ignorespaces}%
1130
  \def\institution##1{##1\ignorespaces}%
1131
  \def\department{\@ifnextchar[{\@department}{\@department[]}}%
1132
  \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
1133
  \let\streetaddress\position
1134
  \let\city\position
1135
  \let\state\position
1136
  \let\postcode\position
1137
  \let\country\position
1138
  Also with #1\unskip.\egroup}
1139
\renewcommand{\email}[2][]{%
1140
  \if@ACM@anonymous\else
1141
    \g@addto@macro\addresses{\email{#1}{#2}}%
1142
  \fi}
1143
\def\orcid#1{\unskip\ignorespaces}
1144
\def\authorsaddresses#1{\def\@authorsaddresses{#1}}
1145
\authorsaddresses{\@mkauthorsaddresses}
1146
\def\@titlenotes{}
1147
\def\titlenote#1{%
1148
  \g@addto@macro\@title{\footnotemark}%
1149
  \if@ACM@anonymous
1150
    \g@addto@macro\@titlenotes{%
1151
      \stepcounter{footnote}\footnotetext{Title note}}%
1152
  \else
1153
    \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
1154
  \fi}
1155
\def\@subtitlenotes{}
1156
\def\subtitlenote#1{%
1157
  \g@addto@macro\@subtitle{\footnotemark}%
1158
  \if@ACM@anonymous
1159
    \g@addto@macro\@subtitlenotes{%
1160
      \stepcounter{footnote}\footnotetext{Subtitle note}}%
1161
  \else
1162
    \g@addto@macro\@subtitlenotes{%
1163
      \stepcounter{footnote}\footnotetext{#1}}%
1164
  \fi}
1165
\def\@authornotes{}
1166
\def\authornote#1{%
1167
  \if@ACM@anonymous\else
1168
    \g@addto@macro\addresses{\@authornotemark}%
1169
    \g@addto@macro\@authornotes{%
1170
      \stepcounter{footnote}\footnotetext{#1}}%
1171
  \fi}
1172
\newcommand\authornotemark[1][\relax]{%
1173
  \ifx#1\relax\relax\relax
1174
  \g@addto@macro\addresses{\@authornotemark}%
1175
  \else
1176
  \g@addto@macro\addresses{\@@authornotemark{#1}}%
1177
  \fi}
1178
\def\acmVolume#1{\def\@acmVolume{#1}}
1179
\acmVolume{1}
1180
\def\acmNumber#1{\def\@acmNumber{#1}}
1181
\acmNumber{1}
1182
\def\acmArticle#1{\def\@acmArticle{#1}}
1183
\acmArticle{}
1184
\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
1185
\acmArticleSeq{\@acmArticle}
1186
\def\acmYear#1{\def\@acmYear{#1}}
1187
\acmYear{\the\year}
1188
\def\acmMonth#1{\def\@acmMonth{#1}}
1189
\acmMonth{\the\month}
1190
\def\@acmPubDate{\ifcase\@acmMonth\or
1191
  January\or February\or March\or April\or May\or June\or
1192
  July\or August\or September\or October\or November\or
1193
  December\fi~\@acmYear}
1194
\def\acmPrice#1{\def\@acmPrice{#1}}
1195
\acmPrice{15.00}
1196
\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
1197
\acmSubmissionID{}
1198
\def\acmISBN#1{\def\@acmISBN{#1}}
1199
\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
1200
\def\acmDOI#1{\def\@acmDOI{#1}}
1201
\acmDOI{10.1145/nnnnnnn.nnnnnnn}
1202
\newif\if@ACM@badge
1203
\@ACM@badgefalse
1204
\newlength\@ACM@badge@width
1205
\setlength\@ACM@badge@width{5pc}
1206
\newlength\@ACM@title@width
1207
\newlength\@ACM@badge@skip
1208
\setlength\@ACM@badge@skip{1pc}
1209
\newcommand\acmBadgeR[2][]{\@ACM@badgetrue
1210
  \def\@acmBadgeR@url{#1}%
1211
  \def\@acmBadgeR@image{#2}}
1212
\def\@acmBadgeR@url{}
1213
\def\@acmBadgeR@image{}
1214
\newcommand\acmBadgeL[2][]{\@ACM@badgetrue
1215
  \def\@acmBadgeL@url{#1}%
1216
  \def\@acmBadgeL@image{#2}}
1217
\def\@acmBadgeL@url{}
1218
\def\@acmBadgeL@image{}
1219
\def\startPage#1{\def\@startPage{#1}}
1220
\startPage{}
1221
\def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
1222
    obsolete.  I am going to ignore it}}
1223
\def\keywords#1{\def\@keywords{#1}}
1224
\keywords{}
1225
\renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
1226
\long\def\@saveabstract#1{\long\gdef\@abstract{#1}}
1227
\@saveabstract{}
1228
\long\def\@lempty{}
1229
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
1230
  \if@ACM@printccs
1231
    \ClassInfo{\@classname}{Printing CCS}%
1232
  \else
1233
    \ClassInfo{\@classname}{Suppressing CCS}%
1234
  \fi}{\ClassError{\@classname}{printccs must be true or false}}
1235
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
1236
  \if@ACM@printacmref
1237
    \ClassInfo{\@classname}{Printing bibformat}%
1238
  \else
1239
    \ClassInfo{\@classname}{Suppressing bibformat}%
1240
  \fi}{\ClassError{\@classname}{printacmref must be true or false}}
1241
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
1242
  \if@ACM@printfolios
1243
    \ClassInfo{\@classname}{Printing folios}%
1244
  \else
1245
    \ClassInfo{\@classname}{Suppressing folios}%
1246
  \fi}{\ClassError{\@classname}{printfolios must be true or false}}
1247
\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
1248
  \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
1249
      #1}}{\ClassWarning{\@classname}{Parameter authorsperrow must be
1250
      numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
1251
\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
1252
\settopmatter{printccs=true, printacmref=true}
1253
\if@ACM@manuscript
1254
  \settopmatter{printfolios=true}
1255
\else
1256
  \if@ACM@journal
1257
    \settopmatter{printfolios=true}
1258
  \else
1259
    \settopmatter{printfolios=false}
1260
  \fi
1261
\fi
1262
\settopmatter{authorsperrow=0}
1263
\def\@received{}
1264
\newcommand\received[2][]{\def\@tempa{#1}%
1265
  \ifx\@tempa\@empty
1266
    \ifx\@received\@empty
1267
      \gdef\@received{Received #2}%
1268
    \else
1269
      \g@addto@macro{\@received}{; revised #2}%
1270
    \fi
1271
  \else
1272
    \ifx\@received\@empty
1273
      \gdef\@received{#1 #2}%
1274
    \else
1275
      \g@addto@macro{\@received}{; #1 #2}%
1276
    \fi
1277
  \fi}
1278
\AtEndDocument{%
1279
  \ifx\@received\@empty\else
1280
    \par\bigskip\noindent\small\normalfont\@received\par
1281
  \fi}
1282
\RequirePackage{comment}
1283
\excludecomment{CCSXML}
1284
\let\@concepts\@empty
1285
\newcommand\ccsdesc[2][100]{%
1286
  \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
1287
\RequirePackage{textcomp}
1288
\def\ccsdesc@parse#1~#2~#3~{%
1289
  \expandafter\ifx\csname CCS@General@#2\endcsname\relax
1290
    \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
1291
      \textbf{#2}}%
1292
    \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
1293
    \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
1294
  \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
1295
    \csname CCS@Punctuation@#2\endcsname
1296
    \csname CCS@Specific@#2\endcsname}%
1297
  \fi
1298
  \ifx#3\relax\relax\else
1299
    \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
1300
      \textrightarrow\ }%
1301
    \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
1302
     \ifnum#1>499\textbf{#3}; \else
1303
     \ifnum#1>299\textit{#3}; \else
1304
     #3; \fi\fi}%
1305
  \fi
1306
\ccsdesc@parse@finish}
1307
\def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
1308
\newif\if@printcopyright
1309
\@printcopyrighttrue
1310
\newif\if@printpermission
1311
\@printpermissiontrue
1312
\newif\if@acmowned
1313
\@acmownedtrue
1314
\define@choicekey*{ACM@}{acmcopyrightmode}[%
1315
  \acm@copyrightinput\acm@copyrightmode]{none,%
1316
    acmcopyright,acmlicensed,rightsretained,%
1317
    usgov,usgovmixed,cagov,cagovmixed,%
1318
    licensedusgovmixed,%
1319
    licensedcagov,licensedcagovmixed,othergov,licensedothergov}{%
1320
  \@printpermissiontrue
1321
  \@printcopyrighttrue
1322
  \@acmownedtrue
1323
  \ifnum\acm@copyrightmode=0\relax % none
1324
   \@printpermissionfalse
1325
   \@printcopyrightfalse
1326
   \@acmownedfalse
1327
  \fi
1328
  \ifnum\acm@copyrightmode=2\relax % acmlicensed
1329
   \@acmownedfalse
1330
  \fi
1331
  \ifnum\acm@copyrightmode=3\relax % rightsretained
1332
   \@acmownedfalse
1333
   \acmPrice{}%
1334
  \fi
1335
  \ifnum\acm@copyrightmode=4\relax % usgov
1336
   \@printpermissiontrue
1337
   \@printcopyrightfalse
1338
   \@acmownedfalse
1339
   \acmPrice{}%
1340
  \fi
1341
  \ifnum\acm@copyrightmode=6\relax % cagov
1342
   \@acmownedfalse
1343
  \fi
1344
  \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
1345
   \@acmownedfalse
1346
  \fi
1347
  \ifnum\acm@copyrightmode=9\relax % licensedcagov
1348
   \@acmownedfalse
1349
  \fi
1350
  \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
1351
   \@acmownedfalse
1352
  \fi
1353
  \ifnum\acm@copyrightmode=11\relax % othergov
1354
   \@acmownedtrue
1355
  \fi
1356
  \ifnum\acm@copyrightmode=12\relax % licensedothergov
1357
   \@acmownedfalse
1358
  \fi}
1359
\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
1360
\setcopyright{acmcopyright}
1361
\def\@copyrightowner{%
1362
  \ifcase\acm@copyrightmode\relax % none
1363
  \or % acmcopyright
1364
  Association for Computing Machinery.
1365
  \or % acmlicensed
1366
  Copyright held by the owner/author(s). Publication rights licensed to
1367
  Association for Computing Machinery.
1368
  \or % rightsretained
1369
  Copyright held by the owner/author(s).
1370
  \or % usgov
1371
  \or % usgovmixed
1372
  Association for Computing Machinery.
1373
  \or % cagov
1374
  Crown in Right of Canada.
1375
  \or %cagovmixed
1376
  Association for Computing Machinery.
1377
  \or %licensedusgovmixed
1378
  Copyright held by the owner/author(s). Publication rights licensed to
1379
  Association for Computing Machinery.
1380
  \or % licensedcagov
1381
  Crown in Right of Canada. Publication rights licensed to
1382
  Association for Computing Machinery.
1383
  \or %licensedcagovmixed
1384
  Copyright held by the owner/author(s). Publication rights licensed to
1385
  Association for Computing Machinery.
1386
  \or % othergov
1387
  Association for Computing Machinery.
1388
  \or % licensedothergov
1389
  Copyright held by the owner/author(s). Publication rights licensed to
1390
  Association for Computing Machinery.
1391
  \fi}
1392
\def\@formatdoi#1{\url{https://doi.org/#1}}
1393
\def\@copyrightpermission{%
1394
  \ifcase\acm@copyrightmode\relax % none
1395
  \or % acmcopyright
1396
   Permission to make digital or hard copies of all or part of this
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff