Project

General

Profile

root / 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
1397
   work for personal or classroom use is granted without fee provided
1398
   that copies are not made or distributed for profit or commercial
1399
   advantage and that copies bear this notice and the full citation on
1400
   the first page. Copyrights for components of this work owned by
1401
   others than ACM must be honored. Abstracting with credit is
1402
   permitted. To copy otherwise, or republish, to post on servers or to
1403
   redistribute to lists, requires prior specific permission
1404
   and\hspace*{.5pt}/or  a fee. Request permissions from
1405
   permissions@acm.org.
1406
  \or % acmlicensed
1407
   Permission to make digital or hard copies of all or part of this
1408
   work for personal or classroom use is granted without fee provided
1409
   that copies are not made or distributed for profit or commercial
1410
   advantage and that copies bear this notice and the full citation on
1411
   the first page. Copyrights for components of this work owned by
1412
   others than the author(s) must be honored. Abstracting with credit
1413
   is permitted.  To copy otherwise, or republish, to post on servers
1414
   or to  redistribute to lists, requires prior specific permission
1415
   and\hspace*{.5pt}/or  a fee. Request permissions from
1416
   permissions@acm.org.
1417
  \or % rightsretained
1418
   Permission to make digital or hard copies of part or all of this work
1419
   for personal or classroom use is granted without fee provided that
1420
   copies are not made or distributed for profit or commercial advantage
1421
   and that copies bear this notice and the full citation on the first
1422
   page. Copyrights for third-party components of this work must be
1423
   honored. For all other uses, contact the
1424
   owner\hspace*{.5pt}/author(s).
1425
  \or % usgov
1426
   This paper is authored by an employee(s) of the United States
1427
   Government and is in the public domain. Non-exclusive copying or
1428
   redistribution is allowed, provided that the article citation is
1429
   given and the authors and agency are clearly identified as its
1430
   source.
1431
  \or % usgovmixed
1432
   ACM acknowledges that this contribution was authored or co-authored
1433
   by an employee, contractor, or affiliate of the United States government. As such,
1434
   the United States government retains a nonexclusive, royalty-free right to
1435
   publish or reproduce this article, or to allow others to do so, for
1436
   government purposes only.
1437
  \or % cagov
1438
   This article was authored by employees of the Government of Canada.
1439
   As such, the Canadian government retains all interest in the
1440
   copyright to this work and grants to ACM a nonexclusive,
1441
   royalty-free right to publish or reproduce this article, or to allow
1442
   others to do so, provided that clear attribution is given both to
1443
   the authors and the Canadian government agency employing them.
1444
   Permission to make digital or hard copies for personal or classroom
1445
   use is granted. Copies must bear this notice and the full citation
1446
   on the first page.  Copyrights for components of this work owned by
1447
   others than the Canadian Government must be honored. To copy
1448
   otherwise, distribute, republish, or post, requires prior specific
1449
   permission and\hspace*{.5pt}/or a fee. Request permissions from
1450
   permissions@acm.org.
1451
  \or % cagovmixed
1452
   ACM acknowledges that this contribution was co-authored by an
1453
   affiliate of the national government of Canada. As such, the Crown
1454
   in Right of Canada retains an equal interest in the copyright.
1455
   Reprints must include clear attribution to ACM and the author's
1456
   government agency affiliation.  Permission to make digital or hard
1457
   copies for personal or classroom use is granted.  Copies must bear
1458
   this notice and the full citation on the first page. Copyrights for
1459
   components of this work owned by others than ACM must be honored.
1460
   To copy otherwise, distribute, republish, or post, requires prior
1461
   specific permission and\hspace*{.5pt}/or a fee. Request permissions
1462
   from permissions@acm.org.
1463
  \or % licensedusgovmixed
1464
   Publication rights licensed to ACM\@. ACM acknowledges that this
1465
   contribution was authored or co-authored by an employee, contractor
1466
   or affiliate of the United States government. As such, the
1467
   Government retains a nonexclusive, royalty-free right to publish or
1468
   reproduce this article, or to allow others to do so, for Government
1469
   purposes only.
1470
  \or % licensedcagov
1471
   This article was authored by employees of the Government of Canada.
1472
   As such, the Canadian government retains all interest in the
1473
   copyright to this work and grants to ACM a nonexclusive,
1474
   royalty-free right to publish or reproduce this article, or to allow
1475
   others to do so, provided that clear attribution is given both to
1476
   the authors and the Canadian government agency employing them.
1477
   Permission to make digital or hard copies for personal or classroom
1478
   use is granted. Copies must bear this notice and the full citation
1479
   on the first page.  Copyrights for components of this work owned by
1480
   others than the Canadian Government must be honored. To copy
1481
   otherwise, distribute, republish, or post, requires prior specific
1482
   permission and\hspace*{.5pt}/or a fee. Request permissions from
1483
   permissions@acm.org.
1484
  \or % licensedcagovmixed
1485
   Publication rights licensed to ACM\@. ACM acknowledges that this
1486
   contribution was authored or co-authored by an employee, contractor
1487
   or affiliate of the national government of Canada. As such, the
1488
   Government retains a nonexclusive, royalty-free right to publish or
1489
   reproduce this article, or to allow others to do so, for Government
1490
   purposes only.
1491
  \or % othergov
1492
   ACM acknowledges that this contribution was authored or co-authored
1493
   by an employee, contractor or affiliate of a national government. As
1494
   such, the Government retains a nonexclusive, royalty-free right to
1495
   publish or reproduce this article, or to allow others to do so, for
1496
   Government purposes only.
1497
  \or % licensedothergov
1498
   Publication rights licensed to ACM\@. ACM acknowledges that this
1499
   contribution was authored or co-authored by an employee, contractor
1500
   or affiliate of a national government. As such, the Government
1501
   retains a nonexclusive, royalty-free right to publish or reproduce
1502
   this article, or to allow others to do so, for Government purposes
1503
   only.
1504
  \fi}
1505
\def\copyrightyear#1{\def\@copyrightyear{#1}}
1506
\copyrightyear{\@acmYear}
1507
\def\@teaserfigures{}
1508
\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
1509
\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
1510
\renewcommand{\thanks}[1]{%
1511
  \@ifnotempty{#1}{%
1512
    \if@ACM@anonymous
1513
      \g@addto@macro\thankses{\thanks{A note}}%
1514
   \else
1515
    \g@addto@macro\thankses{\thanks{#1}}%
1516
   \fi}}
1517
\newbox\mktitle@bx
1518
\def\maketitle{%
1519
  \if@ACM@anonymous
1520
    % Anonymize omission of \author-s
1521
    \ifnum\num@authorgroups=0\author{}\fi
1522
  \fi
1523
  \begingroup
1524
  \let\@footnotemark\@footnotemark@nolink
1525
  \let\@footnotetext\@footnotetext@nolink
1526
  \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
1527
  \global\@topnum\z@ % this prevents floats from falling
1528
                     % at the top of page 1
1529
  \global\@botnum\z@ % we do not want them to be on bottom either
1530
  \hsize=\textwidth
1531
  \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
1532
  \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
1533
  \@printtopmatter
1534
  \if@ACM@sigchiamode\@mkauthors\fi
1535
  \setcounter{footnote}{0}%
1536
  \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
1537
  \@titlenotes
1538
  \@subtitlenotes
1539
  \@authornotes
1540
  \let\@makefnmark\relax  \let\@thefnmark\relax
1541
  \let\@makefntext\noindent
1542
  \ifx\@empty\thankses\else
1543
    \footnotetextauthorsaddresses{%
1544
      \def\par{\let\par\@par}\parindent\z@\@setthanks}%
1545
  \fi
1546
  \ifx\@empty\@authorsaddresses\else
1547
     \if@ACM@anonymous\else
1548
       \if@ACM@journal
1549
         \footnotetextauthorsaddresses{%
1550
           \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
1551
       \fi
1552
     \fi
1553
  \fi
1554
  \footnotetextcopyrightpermission{%
1555
    \if@ACM@authordraft
1556
        \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
1557
            Unpublished
1558
            working draft. Not for distribution}}%
1559
       \color[gray]{0.9}%
1560
    \fi
1561
    \parindent\z@\parskip0.1\baselineskip
1562
    \if@ACM@authorversion\else
1563
      \if@printpermission\@copyrightpermission\par\fi
1564
    \fi
1565
    \if@ACM@manuscript\else
1566
       \if@ACM@journal\else % Print the conference information
1567
         {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
1568
       \fi
1569
    \fi
1570
    \if@printcopyright
1571
      \copyright\ \@copyrightyear\ \@copyrightowner\\
1572
    \else
1573
     \@copyrightyear.\
1574
    \fi
1575
    \if@ACM@manuscript
1576
      Manuscript submitted to ACM\\
1577
    \else
1578
      \if@ACM@authorversion
1579
          This is the author's version of the work. It is posted here for
1580
          your personal use. Not for redistribution. The definitive Version
1581
          of Record was published in
1582
          \if@ACM@journal
1583
            \emph{\@journalName}%
1584
          \else
1585
            \emph{\@acmBooktitle}%
1586
          \fi
1587
          \ifx\@acmDOI\@empty
1588
          .
1589
          \else
1590
            , \@formatdoi{\@acmDOI}.
1591
          \fi\\
1592
        \else
1593
          \if@ACM@journal
1594
            \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
1595
            \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
1596
            \@formatdoi{\@acmDOI}%
1597
          \else % Conference
1598
            \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
1599
            \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
1600
            \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
1601
          \fi
1602
        \fi
1603
      \fi}
1604
  \endgroup
1605
  \setcounter{footnote}{0}%
1606
  \@mkabstract
1607
  \if@ACM@printccs
1608
    \ifx\@concepts\@empty\else\bgroup
1609
      {\@specialsection{CCS Concepts}%
1610
         \@concepts\par}\egroup
1611
     \fi
1612
   \fi
1613
   \ifx\@keywords\@empty\else\bgroup
1614
      {\if@ACM@journal
1615
         \@specialsection{Additional Key Words and Phrases}%
1616
       \else
1617
         \@specialsection{Keywords}%
1618
       \fi
1619
         \@keywords}\par\egroup
1620
   \fi
1621
  \andify\authors
1622
  \andify\shortauthors
1623
  \global\let\authors=\authors
1624
  \global\let\shortauthors=\shortauthors
1625
  \if@ACM@printacmref
1626
     \@mkbibcitation
1627
  \fi
1628
  \hypersetup{pdfauthor={\authors},
1629
    pdftitle={\@title},
1630
    pdfsubject={\@concepts},
1631
    pdfkeywords={\@keywords}}%
1632
  \@printendtopmatter
1633
  \@afterindentfalse
1634
  \@afterheading
1635
}
1636
\def\@specialsection#1{%
1637
  \ifcase\ACM@format@nr
1638
  \relax % manuscript
1639
    \par\medskip\small\noindent#1: %
1640
  \or % acmsmall
1641
    \par\medskip\small\noindent#1: %
1642
  \or % acmlarge
1643
    \par\medskip\small\noindent#1: %
1644
  \or % acmtog
1645
    \par\medskip\small\noindent#1: %
1646
  \or % sigconf
1647
    \section*{#1}%
1648
  \or % siggraph
1649
    \section*{#1}%
1650
  \or % sigplan
1651
    \paragraph*{#1}%
1652
  \or % sigchi
1653
    \section*{#1}%
1654
  \or % sigchi-a
1655
    \section*{#1}%
1656
  \fi}
1657
\def\@printtopmatter{%
1658
  \ifx\@startPage\@empty
1659
     \gdef\@startPage{1}%
1660
  \else
1661
     \setcounter{page}{\@startPage}%
1662
  \fi
1663
  \thispagestyle{firstpagestyle}%
1664
  \noindent
1665
  \ifcase\ACM@format@nr
1666
  \relax % manuscript
1667
    \box\mktitle@bx\par
1668
  \or % acmsmall
1669
    \box\mktitle@bx\par
1670
  \or % acmlarge
1671
    \box\mktitle@bx\par
1672
  \or % acmtog
1673
    \twocolumn[\box\mktitle@bx]%
1674
  \or % sigconf
1675
    \twocolumn[\box\mktitle@bx]%
1676
  \or % siggraph
1677
    \twocolumn[\box\mktitle@bx]%
1678
  \or % sigplan
1679
    \twocolumn[\box\mktitle@bx]%
1680
  \or % sigchi
1681
    \twocolumn[\box\mktitle@bx]%
1682
  \or % sigchi-a
1683
    \par\box\mktitle@bx\par\bigskip
1684
    \if@ACM@badge
1685
       \marginpar{\noindent
1686
         \ifx\@acmBadgeL@image\@empty\else
1687
           \href{\@acmBadgeL@url}{%
1688
             \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
1689
            \hskip\@ACM@badge@skip
1690
          \fi
1691
         \ifx\@acmBadgeR@image\@empty\else
1692
           \href{\@acmBadgeR@url}{%
1693
             \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
1694
          \fi}%
1695
    \fi
1696
  \fi
1697
}
1698
\def\@mktitle{%
1699
  \ifcase\ACM@format@nr
1700
  \relax % manuscript
1701
    \@mktitle@i
1702
  \or % acmsmall
1703
    \@mktitle@i
1704
  \or % acmlarge
1705
    \@mktitle@i
1706
  \or % acmtog
1707
    \@mktitle@i
1708
  \or % sigconf
1709
    \@mktitle@iii
1710
  \or % siggraph
1711
    \@mktitle@iii
1712
  \or % sigplan
1713
    \@mktitle@iii
1714
  \or % sigchi
1715
    \@mktitle@iii
1716
  \or % sigchi-a
1717
    \@mktitle@iv
1718
  \fi
1719
}
1720
\def\@titlefont{%
1721
  \ifcase\ACM@format@nr
1722
  \relax % manuscript
1723
    \LARGE\sffamily\bfseries
1724
  \or % acmsmall
1725
    \LARGE\sffamily\bfseries
1726
  \or % acmlarge
1727
    \LARGE\sffamily\bfseries
1728
  \or % acmtog
1729
    \Huge\sffamily
1730
  \or % sigconf
1731
    \Huge\sffamily\bfseries
1732
  \or % siggraph
1733
    \Huge\sffamily\bfseries
1734
  \or % sigplan
1735
    \Huge\bfseries
1736
  \or % sigchi
1737
    \Huge\sffamily\bfseries
1738
  \or % sigchi-a
1739
     \Huge\bfseries
1740
  \fi}
1741
\def\@subtitlefont{\normalsize
1742
  \ifcase\ACM@format@nr
1743
  \relax % manuscript
1744
    \mdseries
1745
  \or % acmsmall
1746
    \mdseries
1747
  \or % acmlarge
1748
    \mdseries
1749
  \or % acmtog
1750
     \LARGE
1751
  \or % sigconf
1752
     \LARGE\mdseries
1753
  \or % siggraph
1754
     \LARGE\mdseries
1755
  \or % sigplan
1756
     \LARGE\mdseries
1757
  \or % sigchi
1758
     \LARGE\mdseries
1759
  \or % sigchi-a
1760
     \mdseries
1761
  \fi}
1762
\def\@mktitle@i{\hsize=\textwidth
1763
  \@ACM@title@width=\hsize
1764
  \ifx\@acmBadgeL@image\@empty\else
1765
    \advance\@ACM@title@width by -\@ACM@badge@width
1766
    \advance\@ACM@title@width by -\@ACM@badge@skip
1767
  \fi
1768
  \ifx\@acmBadgeR@image\@empty\else
1769
    \advance\@ACM@title@width by -\@ACM@badge@width
1770
    \advance\@ACM@title@width by -\@ACM@badge@skip
1771
  \fi
1772
  \setbox\mktitle@bx=\vbox{\noindent\@titlefont
1773
    \ifx\@acmBadgeL@image\@empty\else
1774
      \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
1775
          \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
1776
      \hskip\@ACM@badge@skip
1777
    \fi
1778
    \parbox[t]{\@ACM@title@width}{\raggedright
1779
      \@titlefont\noindent
1780
      \@title
1781
  \ifx\@subtitle\@empty\else
1782
    \par\noindent{\@subtitlefont\@subtitle}
1783
  \fi}%
1784
  \ifx\@acmBadgeR@image\@empty\else
1785
    \hskip\@ACM@badge@skip
1786
    \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
1787
        \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
1788
  \fi
1789
  \par\bigskip}}%
1790
\def\@mktitle@iii{\hsize=\textwidth
1791
    \setbox\mktitle@bx=\vbox{\@titlefont\centering
1792
      \@ACM@title@width=\hsize
1793
      \if@ACM@badge
1794
        \advance\@ACM@title@width by -2\@ACM@badge@width
1795
        \advance\@ACM@title@width by -2\@ACM@badge@skip
1796
        \parbox[b]{\@ACM@badge@width}{\strut
1797
          \ifx\@acmBadgeL@image\@empty\else
1798
            \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
1799
                \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
1800
          \fi}%
1801
        \hskip\@ACM@badge@skip
1802
      \fi
1803
      \parbox[t]{\@ACM@title@width}{\centering\@titlefont
1804
        \@title
1805
        \ifx\@subtitle\@empty\else
1806
          \par\noindent{\@subtitlefont\@subtitle}
1807
        \fi
1808
      }%
1809
      \if@ACM@badge
1810
        \hskip\@ACM@badge@skip
1811
        \parbox[b]{\@ACM@badge@width}{\strut
1812
          \ifx\@acmBadgeR@image\@empty\else
1813
            \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
1814
                \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
1815
          \fi}%
1816
      \fi
1817
      \par\bigskip}}%
1818
\def\@mktitle@iv{\hsize=\textwidth
1819
    \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
1820
      \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
1821
      \noindent\@title
1822
     \ifx\@subtitle\@empty\else
1823
       \par\noindent\@subtitlefont\@subtitle
1824
     \fi
1825
     \par\bigskip}}%
1826
\newbox\@ACM@commabox
1827
\def\@ACM@addtoaddress#1{%
1828
  \ifvmode\else
1829
    \if@ACM@affiliation@obeypunctuation\else
1830
    \setbox\@ACM@commabox=\hbox{, }%
1831
    \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
1832
  \fi\fi
1833
  #1}
1834
\def\streetaddress#1{\unskip\ignorespaces}
1835
\def\postcode#1{\unskip\ignorespaces}
1836
\if@ACM@journal
1837
  \def\position#1{\unskip\ignorespaces}
1838
  \def\institution#1{\unskip~#1\ignorespaces}
1839
  \def\city#1{\unskip\ignorespaces}
1840
  \def\state#1{\unskip\ignorespaces}
1841
  \newcommand\department[2][0]{\unskip\ignorespaces}
1842
  \def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
1843
\else
1844
  \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
1845
  \def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
1846
  \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
1847
    #2\else#2\par\fi}%
1848
  \let\city\@ACM@addtoaddress
1849
  \let\state\@ACM@addtoaddress
1850
  \let\country\@ACM@addtoaddress
1851
\fi
1852
\def\@mkauthors{\begingroup
1853
  \hsize=\textwidth
1854
  \ifcase\ACM@format@nr
1855
  \relax % manuscript
1856
    \@mkauthors@i
1857
  \or % acmsmall
1858
    \@mkauthors@i
1859
  \or % acmlarge
1860
    \@mkauthors@i
1861
  \or % acmtog
1862
    \@mkauthors@i
1863
  \or % sigconf
1864
    \@mkauthors@iii
1865
  \or % siggraph
1866
    \@mkauthors@iii
1867
  \or % sigplan
1868
    \@mkauthors@iii
1869
  \or % sigchi
1870
    \@mkauthors@iii
1871
  \or % sigchi-a
1872
    \@mkauthors@iv
1873
  \fi
1874
  \endgroup
1875
}
1876
\def\@authorfont{\Large\sffamily}
1877
\def\@affiliationfont{\normalsize\normalfont}
1878
\ifcase\ACM@format@nr
1879
\relax % manuscript
1880
\or % acmsmall
1881
  \def\@authorfont{\large\sffamily}
1882
  \def\@affiliationfont{\small\normalfont}
1883
\or % acmlarge
1884
\or % acmtog
1885
  \def\@authorfont{\LARGE\sffamily}
1886
  \def\@affiliationfont{\large}
1887
\or % sigconf
1888
  \def\@authorfont{\LARGE}
1889
  \def\@affiliationfont{\large}
1890
\or % siggraph
1891
  \def\@authorfont{\normalsize\normalfont}
1892
  \def\@affiliationfont{\normalsize\normalfont}
1893
\or % sigplan
1894
  \def\@authorfont{\Large\normalfont}
1895
  \def\@affiliationfont{\normalsize\normalfont}
1896
\or % sigchi
1897
  \def\@authorfont{\bfseries}
1898
  \def\@affiliationfont{\mdseries}
1899
\or % sigchi-a
1900
  \def\@authorfont{\bfseries}
1901
  \def\@affiliationfont{\mdseries}
1902
\fi
1903
\def\@typeset@author@line{%
1904
  \andify\@currentauthors\par\noindent
1905
  \@currentauthors\def\@currentauthors{}%
1906
  \ifx\@currentaffiliations\@empty\else
1907
    \andify\@currentaffiliations
1908
      \unskip, {\@currentaffiliations}\par
1909
  \fi
1910
  \def\@currentaffiliations{}}
1911
\def\@mkauthors@i{%
1912
  \def\@currentauthors{}%
1913
  \def\@currentaffiliations{}%
1914
  \global\let\and\@typeset@author@line
1915
  \def\@author##1{%
1916
    \ifx\@currentauthors\@empty
1917
      \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
1918
    \else
1919
       \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
1920
    \fi
1921
    \gdef\and{}}%
1922
  \def\email##1##2{}%
1923
  \def\affiliation##1##2{%
1924
    \def\@tempa{##2}\ifx\@tempa\@empty\else
1925
       \ifx\@currentaffiliations\@empty
1926
          \gdef\@currentaffiliations{%
1927
            \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1928
            \setkeys{@ACM@affiliation@}{##1}%
1929
            \@affiliationfont##2}%
1930
       \else
1931
         \g@addto@macro{\@currentaffiliations}{\and
1932
           \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1933
           \setkeys{@ACM@affiliation@}{##1}##2}%
1934
      \fi
1935
    \fi
1936
     \global\let\and\@typeset@author@line}%
1937
  \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
1938
    \noindent\addresses\@typeset@author@line
1939
   \par\medskip}%
1940
}
1941
\newbox\author@bx
1942
\newdimen\author@bx@wd
1943
\newskip\author@bx@sep
1944
\author@bx@sep=1pc\relax
1945
\def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd\def\and{\par}%
1946
  \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
1947
    \@authorfont\@currentauthors\par\@affiliationfont
1948
    \@currentaffiliation}\egroup
1949
  \box\author@bx\hspace{\author@bx@sep}%
1950
  \gdef\@currentauthors{}%
1951
  \gdef\@currentaffiliation{}}
1952
\def\@mkauthors@iii{%
1953
  \author@bx@wd=\textwidth\relax
1954
  \advance\author@bx@wd by -\author@bx@sep\relax
1955
  \ifnum\@ACM@authorsperrow>0\relax
1956
    \divide\author@bx@wd by \@ACM@authorsperrow\relax
1957
  \else
1958
    \ifcase\num@authorgroups
1959
    \relax % 0?
1960
    \or  % 1=one author per row
1961
    \or  % 2=two authors per row
1962
       \divide\author@bx@wd by \num@authorgroups\relax
1963
    \or  % 3=three authors per row
1964
       \divide\author@bx@wd by \num@authorgroups\relax
1965
    \or  % 4=two authors per row (!)
1966
       \divide\author@bx@wd by 2\relax
1967
    \else % three authors per row
1968
       \divide\author@bx@wd by 3\relax
1969
    \fi
1970
  \fi
1971
  \advance\author@bx@wd by -\author@bx@sep\relax
1972
  \gdef\@currentauthors{}%
1973
  \gdef\@currentaffiliation{}%
1974
  \def\@author##1{\ifx\@currentauthors\@empty
1975
    \gdef\@currentauthors{\par##1}%
1976
  \else
1977
    \g@addto@macro\@currentauthors{\par##1}%
1978
  \fi
1979
  \gdef\and{}}%
1980
  \def\email##1##2{\ifx\@currentaffiliation\@empty
1981
    \gdef\@currentaffiliation{\nolinkurl{##2}}%
1982
  \else
1983
    \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
1984
  \fi}%
1985
  \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
1986
    \gdef\@currentaffiliation{%
1987
      \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1988
      \setkeys{@ACM@affiliation@}{##1}##2}%
1989
  \else
1990
    \g@addto@macro\@currentaffiliation{\par
1991
      \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1992
      \setkeys{@ACM@affiliation@}{##1}##2}%
1993
  \fi
1994
  \global\let\and\@typeset@author@bx
1995
}%
1996
  \hsize=\textwidth
1997
  \global\setbox\mktitle@bx=\vbox{\noindent
1998
    \box\mktitle@bx\par\medskip\leavevmode
1999
    \lineskip=1pc\relax\centering\hspace*{-1em}%
2000
    \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
2001
\def\@mkauthors@iv{%
2002
  \author@bx@wd=\columnwidth\relax
2003
  \advance\author@bx@wd by -\author@bx@sep\relax
2004
  \ifnum\@ACM@authorsperrow>0\relax
2005
    \divide\author@bx@wd by \@ACM@authorsperrow\relax
2006
  \else
2007
    \ifcase\num@authorgroups
2008
    \relax % 0?
2009
    \or  % 1=one author per row
2010
    \else  % 2=two authors per row
2011
       \divide\author@bx@wd by 2\relax
2012
    \fi
2013
  \fi
2014
  \advance\author@bx@wd by -\author@bx@sep\relax
2015
  \gdef\@currentauthors{}%
2016
  \gdef\@currentaffiliation{}%
2017
  \def\@author##1{\ifx\@currentauthors\@empty
2018
    \gdef\@currentauthors{\par##1}%
2019
  \else
2020
    \g@addto@macro\@currentauthors{\par##1}%
2021
  \fi
2022
  \gdef\and{}}%
2023
  \def\email##1##2{\ifx\@currentaffiliation\@empty
2024
    \gdef\@currentaffiliation{\nolinkurl{##2}}%
2025
  \else
2026
    \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
2027
  \fi}%
2028
  \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
2029
    \gdef\@currentaffiliation{%
2030
      \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2031
           \setkeys{@ACM@affiliation@}{##1}##2}%
2032
  \else
2033
    \g@addto@macro\@currentaffiliation{\par
2034
      \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2035
      \setkeys{@ACM@affiliation@}{##1}##2}%
2036
  \fi
2037
  \global\let\and\@typeset@author@bx}%
2038
    \bgroup\hsize=\columnwidth
2039
    \par\raggedright\leftskip=\z@
2040
    \lineskip=1pc\noindent
2041
    \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
2042
\def\@mkauthorsaddresses{%
2043
  \ifnum\num@authors>1\relax
2044
  Authors' \else Author's \fi
2045
  \ifnum\num@authorgroups>1\relax
2046
  addresses: \else address: \fi
2047
  \bgroup
2048
  \def\streetaddress##1{\unskip\@addpunct, ##1}%
2049
  \def\postcode##1{\unskip\@addpunct, ##1}%
2050
  \def\position##1{\unskip\ignorespaces}%
2051
  \def\institution##1{\unskip\@addpunct, ##1}%
2052
  \def\city##1{\unskip\@addpunct, ##1}%
2053
  \def\state##1{\unskip\@addpunct, ##1}%
2054
  \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
2055
  \def\country##1{\unskip\@addpunct, ##1}%
2056
  \def\and{\unskip\@addpunct; }%
2057
  \def\@author##1{##1}%
2058
  \def\email##1##2{\unskip\@addpunct, \nolinkurl{##2}}%
2059
  \addresses
2060
  \egroup}
2061
\def\@setaddresses{}
2062
\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
2063
\def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
2064
\def\@mkteasers{%
2065
  \ifx\@teaserfigures\@empty\else
2066
    \def\@teaser##1{\par\bigskip\bgroup
2067
      \captionsetup{type=figure}##1\egroup\par}
2068
    \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
2069
    \noindent\@teaserfigures\par\medskip}%
2070
  \fi}
2071
\def\@mkabstract{\bgroup
2072
  \ifx\@abstract\@lempty\else
2073
  {\phantomsection\addcontentsline{toc}{section}{Abstract}%
2074
    \if@ACM@journal
2075
       \small\noindent
2076
    \else
2077
      \section*{Abstract}%
2078
    \fi
2079
   \ignorespaces\@abstract\par}%
2080
  \fi\egroup}
2081
\def\@mkbibcitation{\bgroup
2082
  \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
2083
  \def\footnotemark{}%
2084
  \def\\{\unskip{} \ignorespaces}%
2085
  \def\footnote{\ClassError{\@classname}{Please do note use footnotes
2086
      inside \string\title{} or \string\author{} command! Use
2087
      \string\titlenote{} or \string\authornote{} instead!}}%
2088
  \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
2089
    Article~\@acmArticle\ \fi}%
2090
  \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
2091
  \noindent\authors. \@acmYear. \@title
2092
  \ifx\@subtitle\@empty. \else: \@subtitle. \fi
2093
  \if@ACM@journal
2094
     \textit{\@journalNameShort}
2095
     \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
2096
     \ref{TotPages}~\@pages@word.
2097
  \else
2098
     In \textit{\@acmBooktitle}%
2099
     \ifx\@acmEditors\@empty\textit{.}\else
2100
       \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
2101
     \fi\
2102
     ACM, New York, NY, USA%
2103
       \@article@string\unskip, \ref{TotPages}~\@pages@word.
2104
  \fi
2105
  \@formatdoi{\@acmDOI}
2106
\par\egroup}
2107
\def\@printendtopmatter{\par\bigskip}
2108
\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
2109
\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
2110
\RequirePackage{fancyhdr}
2111
\if@ACM@review
2112
  \newsavebox{\ACM@linecount@bx}
2113
  \newlength\ACM@linecount@bxht
2114
  \newcount\ACM@linecount
2115
  \ACM@linecount\@ne\relax
2116
  \def\ACM@mk@linecount{%
2117
    \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{%
2118
        \setlength{\ACM@linecount@bxht}{0pt}%
2119
        \loop{\color{red}\scriptsize\the\ACM@linecount}\\
2120
        \global\advance\ACM@linecount by \@ne
2121
        \addtolength{\ACM@linecount@bxht}{\baselineskip}%
2122
        \ifdim\ACM@linecount@bxht<\textheight\repeat
2123
        {\color{red}\scriptsize\the\ACM@linecount}\hfill
2124
        \global\advance\ACM@linecount by \@ne}}}
2125
\fi
2126
\def\ACM@linecountL{%
2127
  \if@ACM@review
2128
  \ACM@mk@linecount
2129
  \begin{picture}(0,0)%
2130
    \put(-26,-22){\usebox{\ACM@linecount@bx}}%
2131
  \end{picture}%
2132
  \fi}
2133
\def\ACM@linecountR{%
2134
  \if@ACM@review
2135
  \ACM@mk@linecount
2136
  \begin{picture}(0,0)%
2137
    \put(20,-22){\usebox{\ACM@linecount@bx}}%
2138
  \end{picture}%
2139
  \fi}
2140
\if@ACM@timestamp
2141
  % Subtracting 30 from \time gives us the effect of rounding-down despite
2142
  % \numexpr rounding to nearest
2143
  \newcounter{ACM@time@hours}
2144
  \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
2145
  \newcounter{ACM@time@minutes}
2146
  \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
2147
  \newcommand\ACM@timestamp{%
2148
    \footnotesize%
2149
    \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
2150
    \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{ }%
2151
    page~\thepage\ (pp. \@startPage-\pageref*{TotPages})%
2152
    \ifx\@acmSubmissionID\@empty\relax\else
2153
    ~Submission~ID: \@acmSubmissionID
2154
    \fi
2155
  }
2156
\fi
2157
\def\@shortauthors{\if@ACM@anonymous Anon.\else\shortauthors\fi}
2158
\def\@headfootfont{%
2159
  \ifcase\ACM@format@nr
2160
  \relax % manuscript
2161
    \sffamily
2162
  \or % acmsmall
2163
    \sffamily
2164
  \or % acmlarge
2165
    \sffamily
2166
  \or % acmtog
2167
    \sffamily
2168
  \or % sigconf
2169
    \sffamily
2170
  \or % siggraph
2171
    \sffamily
2172
  \or % sigplan
2173
    \sffamily
2174
  \or % sigchi
2175
    \sffamily
2176
  \or % sigchi-a
2177
    \sffamily
2178
  \fi}
2179
\fancypagestyle{standardpagestyle}{%
2180
  \fancyhf{}%
2181
  \renewcommand{\headrulewidth}{\z@}%
2182
  \renewcommand{\footrulewidth}{\z@}%
2183
  \ifcase\ACM@format@nr
2184
  \relax % manuscript
2185
    \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
2186
    \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
2187
    \fancyhead[RE]{\@shortauthors}%
2188
    \fancyhead[LO]{\ACM@linecountL\shorttitle}%
2189
    \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
2190
  \or % acmsmall
2191
    \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
2192
    \fancyhead[RO]{\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
2193
    \fancyhead[RE]{\@headfootfont\@shortauthors}%
2194
    \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2195
    \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2196
    \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
2197
  \or % acmlarge
2198
    \fancyhead[LE]{\ACM@linecountL\@headfootfont
2199
      \@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}%
2200
    \fancyhead[LO]{\ACM@linecountL}%
2201
    \fancyhead[RO]{\@headfootfont
2202
      \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi}%
2203
    \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2204
    \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
2205
  \or % acmtog
2206
    \fancyhead[LE]{\ACM@linecountL\@headfootfont
2207
      \@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}%
2208
    \fancyhead[LO]{\ACM@linecountL}%
2209
    \fancyhead[RE]{\ACM@linecountR}%
2210
    \fancyhead[RO]{\@headfootfont
2211
      \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi\ACM@linecountR}%
2212
    \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2213
    \@acmNumber, Article \@acmArticle.  Publication date: \@acmPubDate.}%
2214
  \else % Proceedings
2215
    \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
2216
    \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2217
    \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
2218
    \fancyhead[LE]{\ACM@linecountL\@headfootfont\acmConference@shortname,
2219
      \acmConference@date, \acmConference@venue}%
2220
    \fancyhead[RO]{\@headfootfont\acmConference@shortname,
2221
      \acmConference@date, \acmConference@venue\ACM@linecountR}%
2222
  \fi
2223
  \if@ACM@sigchiamode
2224
     \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
2225
  \fi
2226
  \if@ACM@timestamp
2227
     \fancyfoot[LO,RE]{\ACM@timestamp}
2228
  \fi
2229
}
2230
\pagestyle{standardpagestyle}
2231
\newdimen\@folio@wd
2232
\@folio@wd=\z@
2233
\newdimen\@folio@ht
2234
\@folio@ht=\z@
2235
\newdimen\@folio@voffset
2236
\@folio@voffset=\z@
2237
\def\@folio@max{1}
2238
\ifcase\ACM@format@nr
2239
\relax % manuscript
2240
\or % acmsmall
2241
  \@folio@wd=45.75pt\relax
2242
  \@folio@ht=1.25in\relax
2243
  \@folio@voffset=.2in\relax
2244
  \def\@folio@max{8}
2245
\or % acmlarge
2246
  \@folio@wd=43.25pt\relax
2247
  \@folio@ht=79pt\relax
2248
  \@folio@voffset=.55in\relax
2249
  \def\@folio@max{10}
2250
\fi
2251
\def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
2252
  \ifnum\@tempcnta=0\relax\else
2253
  \loop
2254
     \ifnum\@tempcnta>\@folio@max\relax
2255
      \advance\@tempcnta by - \@folio@max
2256
   \repeat
2257
    \advance\@tempcnta by -1\relax
2258
    \@tempdima=\@folio@ht\relax
2259
    \multiply\@tempdima by \the\@tempcnta\relax
2260
    \advance\@tempdima by -\@folio@voffset\relax
2261
    \begin{picture}(0,0)
2262
    \makebox[\z@]{\raisebox{-\@tempdima}{%
2263
        \rlap{%
2264
          \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
2265
            \rule{\@folio@wd}{\@folio@ht}}}%
2266
        \parbox{\@folio@wd}{%
2267
          \centering
2268
          \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
2269
  \end{picture}\fi}
2270

    
2271
\fancypagestyle{firstpagestyle}{%
2272
  \fancyhf{}%
2273
  \renewcommand{\headrulewidth}{\z@}%
2274
  \renewcommand{\footrulewidth}{\z@}%
2275
  \ifcase\ACM@format@nr
2276
  \relax % manuscript
2277
    \fancyhead[L]{\ACM@linecountL}%
2278
    \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
2279
    \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
2280
  \or % acmsmall
2281
    \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2282
    \@acmNumber, Article \@acmArticle.  Publication date:
2283
    \@acmPubDate.}%
2284
    \fancyhead[LE]{\ACM@linecountL\@folioblob}%
2285
    \fancyhead[LO]{\ACM@linecountL}%
2286
    \fancyhead[RO]{\@folioblob}%
2287
    \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
2288
  \or % acmlarge
2289
    \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2290
    \@acmNumber, Article \@acmArticle.  Publication date:
2291
    \@acmPubDate.}%
2292
    \fancyhead[RO]{\@folioblob}%
2293
    \fancyhead[LE]{\ACM@linecountL\@folioblob}%
2294
    \fancyhead[LO]{\ACM@linecountL}%
2295
    \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
2296
  \or % acmtog
2297
    \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2298
    \@acmNumber, Article \@acmArticle.  Publication date:
2299
    \@acmPubDate.}%
2300
    \fancyhead[L]{\ACM@linecountL}%
2301
    \fancyhead[R]{\ACM@linecountR}%
2302
  \else % Conference proceedings
2303
    \fancyhead[L]{\ACM@linecountL}%
2304
    \fancyhead[R]{\ACM@linecountR}%
2305
    \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
2306
  \fi
2307
  \if@ACM@timestamp
2308
    \ifnum\ACM@format@nr=0\relax % Manuscript
2309
    \fancyfoot[LO,RE]{\ACM@timestamp\quad
2310
      \footnotesize Manuscript submitted to ACM}
2311
    \else
2312
    \fancyfoot[LO,RE]{\ACM@timestamp}
2313
    \fi
2314
  \fi
2315
}
2316
\let\ACM@ps@plain\ps@plain
2317
\let\ACM@ps@myheadings\ps@myheadings
2318
\let\ACM@ps@headings\ps@headings
2319
\def\ACM@restore@pagestyle{%
2320
  \let\ps@plain\ACM@ps@plain
2321
  \let\ps@myheadings\ACM@ps@myheadings
2322
  \let\ps@headings\ACM@ps@headings}
2323
\AtBeginDocument{\ACM@restore@pagestyle}
2324
\renewcommand\section{\@startsection{section}{1}{\z@}%
2325
  {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2326
  {.25\baselineskip}%
2327
  {\@secfont}}
2328
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
2329
  {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2330
  {.25\baselineskip}%
2331
  {\@subsecfont}}
2332
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
2333
  {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2334
  {-3.5\p@}%
2335
  {\@subsubsecfont\@adddotafter}}
2336
\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
2337
  {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2338
  {-3.5\p@}%
2339
  {\@parfont\@adddotafter}}
2340
\renewcommand\part{\@startsection{part}{9}{\z@}%
2341
  {-10\p@ \@plus -4\p@ \@minus -2\p@}%
2342
  {4\p@}%
2343
  {\@parfont}}
2344
\def\section@raggedright{\@rightskip\@flushglue
2345
  \rightskip\@rightskip
2346
  \leftskip\z@skip
2347
  \parindent\z@}
2348
\def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2349
\def\@subsecfont{\sffamily\bfseries\section@raggedright}
2350
\def\@subsubsecfont{\sffamily\itshape}
2351
\def\@parfont{\itshape}
2352
\setcounter{secnumdepth}{3}
2353
\ifcase\ACM@format@nr
2354
\relax % manuscript
2355
\or % acmsmall
2356
\or % acmlarge
2357
 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
2358
 \def\@subsecfont{\sffamily\large\section@raggedright}
2359
\or % acmtog
2360
 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
2361
 \def\@subsecfont{\sffamily\large\section@raggedright}
2362
\or % sigconf
2363
 \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
2364
 \def\@subsecfont{\bfseries\Large\section@raggedright}
2365
\or % siggraph
2366
 \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
2367
 \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
2368
\or % sigplan
2369
 \def\@secfont{\bfseries\Large\section@raggedright}
2370
 \def\@subsecfont{\bfseries\section@raggedright}
2371
 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
2372
   {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2373
   {.25\baselineskip}%
2374
   {\@subsubsecfont}}
2375
 \def\@subsubsecfont{\bfseries\section@raggedright}
2376
 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
2377
   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2378
   {-3.5\p@}%
2379
   {\@parfont\@addspaceafter}}
2380
 \def\@parfont{\bfseries\itshape}
2381
 \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
2382
   {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2383
   {-3.5\p@}%
2384
   {\@subparfont\@addspaceafter}}
2385
 \def\@subparfont{\itshape}
2386
\or % sigchi
2387
 \setcounter{secnumdepth}{1}
2388
 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2389
 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2390
\or % sigchi-a
2391
 \setcounter{secnumdepth}{0}
2392
 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2393
 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2394
\fi
2395
\def\@adddotafter#1{#1\@addpunct{.}}
2396
\def\@addspaceafter#1{#1\@addpunct{\enspace}}
2397
\providecommand*\@dotsep{4.5}
2398
\def\@acmplainbodyfont{\itshape}
2399
\def\@acmplainindent{\parindent}
2400
\def\@acmplainheadfont{\scshape}
2401
\def\@acmplainnotefont{\@empty}
2402
\ifcase\ACM@format@nr
2403
\relax % manuscript
2404
\or % acmsmall
2405
\or % acmlarge
2406
\or % acmtog
2407
\or % sigconf
2408
\or % siggraph
2409
\or % sigplan
2410
  \def\@acmplainbodyfont{\itshape}
2411
  \def\@acmplainindent{\z@}
2412
  \def\@acmplainheadfont{\bfseries}
2413
  \def\@acmplainnotefont{\normalfont}
2414
\or % sigchi
2415
\or % sigchi-a
2416
\fi
2417
\newtheoremstyle{acmplain}%
2418
  {.5\baselineskip\@plus.2\baselineskip
2419
    \@minus.2\baselineskip}% space above
2420
  {.5\baselineskip\@plus.2\baselineskip
2421
    \@minus.2\baselineskip}% space below
2422
  {\@acmplainbodyfont}% body font
2423
  {\@acmplainindent}% indent amount
2424
  {\@acmplainheadfont}% head font
2425
  {.}% punctuation after head
2426
  {.5em}% spacing after head
2427
  {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
2428
\def\@acmdefinitionbodyfont{\normalfont}
2429
\def\@acmdefinitionindent{\parindent}
2430
\def\@acmdefinitionheadfont{\itshape}
2431
\def\@acmdefinitionnotefont{\@empty}
2432
\ifcase\ACM@format@nr
2433
\relax % manuscript
2434
\or % acmsmall
2435
\or % acmlarge
2436
\or % acmtog
2437
\or % sigconf
2438
\or % siggraph
2439
\or % sigplan
2440
  \def\@acmdefinitionbodyfont{\normalfont}
2441
  \def\@acmdefinitionindent{\z@}
2442
  \def\@acmdefinitionheadfont{\bfseries}
2443
  \def\@acmdefinitionnotefont{\normalfont}
2444
\or % sigchi
2445
\or % sigchi-a
2446
\fi
2447
\newtheoremstyle{acmdefinition}%
2448
  {.5\baselineskip\@plus.2\baselineskip
2449
    \@minus.2\baselineskip}% space above
2450
  {.5\baselineskip\@plus.2\baselineskip
2451
    \@minus.2\baselineskip}% space below
2452
  {\@acmdefinitionbodyfont}% body font
2453
  {\@acmdefinitionindent}% indent amount
2454
  {\@acmdefinitionheadfont}% head font
2455
  {.}% punctuation after head
2456
  {.5em}% spacing after head
2457
  {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
2458
\theoremstyle{acmplain}
2459
\AtEndPreamble{%
2460
  \if@ACM@acmthm
2461
  \theoremstyle{acmplain}
2462
  \@ifundefined{theorem}{%
2463
  \newtheorem{theorem}{Theorem}[section]
2464
  }{}
2465
  \@ifundefined{conjecture}{%
2466
  \newtheorem{conjecture}[theorem]{Conjecture}
2467
  }{}
2468
  \@ifundefined{proposition}{%
2469
  \newtheorem{proposition}[theorem]{Proposition}
2470
  }{}
2471
  \newtheorem{lemma}[theorem]{Lemma}
2472
  \@ifundefined{lemma}{}{}
2473
  \@ifundefined{corollary}{%
2474
  \newtheorem{corollary}[theorem]{Corollary}
2475
  }{}
2476
  \theoremstyle{acmdefinition}
2477
  \@ifundefined{example}{%
2478
  \newtheorem{example}[theorem]{Example}
2479
  }{}
2480
  \@ifundefined{definition}{%
2481
  \newtheorem{definition}[theorem]{Definition}
2482
  }{}
2483
  \fi
2484
  \theoremstyle{acmplain}
2485
}
2486
\def\@proofnamefont{\scshape}
2487
\def\@proofindent{\indent}
2488
\ifcase\ACM@format@nr
2489
\relax % manuscript
2490
\or % acmsmall
2491
\or % acmlarge
2492
\or % acmtog
2493
\or % sigconf
2494
\or % siggraph
2495
\or % sigplan
2496
  \def\@proofnamefont{\itshape}
2497
  \def\@proofindent{\noindent}
2498
\or % sigchi
2499
\or % sigchi-a
2500
\fi
2501
\renewenvironment{proof}[1][\proofname]{\par
2502
  \pushQED{\qed}%
2503
  \normalfont \topsep6\p@\@plus6\p@\relax
2504
  \trivlist
2505
  \item[\@proofindent\hskip\labelsep
2506
        {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
2507
}{%
2508
  \popQED\endtrivlist\@endpefalse
2509
}
2510
\specialcomment{acks}{%
2511
  \begingroup
2512
  \section*{Acknowledgments}
2513
  \phantomsection\addcontentsline{toc}{section}{Acknowledgments}
2514
}{%
2515
  \endgroup
2516
}
2517
\def\grantsponsor#1#2#3{#2}
2518
\newcommand\grantnum[3][]{#3%
2519
  \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
2520
\AtEndPreamble{%
2521
\if@ACM@screen
2522
  \includecomment{screenonly}
2523
  \excludecomment{printonly}
2524
\else
2525
  \excludecomment{screenonly}
2526
  \includecomment{printonly}
2527
\fi
2528
\if@ACM@anonymous
2529
  \excludecomment{anonsuppress}
2530
  \excludecomment{acks}
2531
\else
2532
  \includecomment{anonsuppress}
2533
\fi}
2534
\newcommand\showeprint[2][arxiv]{%
2535
  \def\@tempa{#1}%
2536
  \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
2537
  \def\@tempb{arxiv}%
2538
  \ifx\@tempa\@tempb
2539
     arXiv:\href{http://arxiv.org/abs/#2}{#2}\else arXiv:#2%
2540
  \fi}
2541
\normalsize\normalfont\frenchspacing
2542
\endinput
2543
%%
2544
%% End of file `acmart.cls'.