2 %% This is file `acmart.cls',
3 %% generated with the docstrip utility.
5 %% The original source files were:
7 %% acmart.dtx (with options: `class')
11 %% For the copyright see the source file.
13 %% Any modified versions of this file must be renamed
14 %% with new filenames distinct from acmart.cls.
16 %% For distribution of the original source see the terms
17 %% for copying and modification in the file acmart.dtx.
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.)
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 [2018/02/07 v1.50 Typesetting articles for the Association for
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]{%
68 \PackageInfo{\@classname}{Using screen mode}%
70 \PackageInfo{\@classname}{Not using screen mode}%
71 \fi}{\PackageError{\@classname}{The option screen can be either true or
73 \ExecuteOptionsX{screen=false}
74 \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
76 \PackageInfo{\@classname}{Requiring acmthm}%
78 \PackageInfo{\@classname}{Suppressing acmthm}%
79 \fi}{\PackageError{\@classname}{The option acmthm can be either true or
81 \ExecuteOptionsX{acmthm=true}
82 \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
84 \PackageInfo{\@classname}{Using review mode}%
85 \AtBeginDocument{\@ACM@printfoliostrue}%
87 \PackageInfo{\@classname}{Not using review mode}%
88 \fi}{\PackageError{\@classname}{The option review can be either true or
90 \ExecuteOptionsX{review=false}
91 \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
93 \PackageInfo{\@classname}{Using authorversion mode}%
95 \PackageInfo{\@classname}{Not using authorversion mode}%
96 \fi}{\PackageError{\@classname}{The option authorversion can be either true or
98 \ExecuteOptionsX{authorversion=false}
99 \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
101 \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
103 \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
104 \fi}{\PackageError{\@classname}{The option natbib can be either true or
106 \ExecuteOptionsX{natbib=true}
107 \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
109 \PackageInfo{\@classname}{Using anonymous mode}%
111 \PackageInfo{\@classname}{Not using anonymous mode}%
112 \fi}{\PackageError{\@classname}{The option anonymous can be either true or
114 \ExecuteOptionsX{anonymous=false}
115 \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
117 \PackageInfo{\@classname}{Using timestamp mode}%
119 \PackageInfo{\@classname}{Not using timestamp mode}%
120 \fi}{\PackageError{\@classname}{The option timestamp can be either true or
122 \ExecuteOptionsX{timestamp=false}
123 \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
125 \PackageInfo{\@classname}{Using authordraft mode}%
129 \PackageInfo{\@classname}{Not using authordraft mode}%
130 \fi}{\PackageError{\@classname}{The option authordraft can be either true or
132 \ExecuteOptionsX{authordraft=false}
134 \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
135 \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
136 \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
137 \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
138 \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
139 \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
141 \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
142 \newif\if@ACM@manuscript
143 \newif\if@ACM@journal
144 \newif\if@ACM@sigchiamode
145 \ifnum\ACM@format@nr=5\relax % siggraph
146 \ClassWarning{\@classname}{The format siggraph is now obsolete.
147 I am switching to sigconf.}
148 \setkeys{acmart.cls}{format=sigconf}
150 \ifnum\ACM@format@nr=0\relax
153 \@ACM@manuscriptfalse
155 \@ACM@sigchiamodefalse
156 \ifcase\ACM@format@nr
175 \@ACM@sigchiamodetrue
177 \ifx\ACM@fontsize\@empty
178 \ifcase\ACM@format@nr
180 \def\ACM@fontsize{9pt}%
182 \def\ACM@fontsize{10pt}%
184 \def\ACM@fontsize{10pt}%
186 \def\ACM@fontsize{9pt}%
188 \def\ACM@fontsize{9pt}%
190 \def\ACM@fontsize{9pt}%
192 \def\ACM@fontsize{10pt}%
194 \def\ACM@fontsize{10pt}%
196 \def\ACM@fontsize{10pt}%
199 \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
200 \LoadClass[\ACM@fontsize, reqno]{amsart}
201 \RequirePackage{microtype}
202 \RequirePackage{etoolbox}
203 \RequirePackage{refcount}
204 \RequirePackage{totpages}
205 \RequirePackage{environ}
207 \RequirePackage{setspace}
210 \RequirePackage{textcase}
212 \RequirePackage{natbib}
213 \renewcommand{\bibsection}{%
215 \phantomsection\addcontentsline{toc}{section}{\refname}%
217 \renewcommand{\bibfont}{\bibliofont}
218 \renewcommand\setcitestyle[1]{
220 {\def\@tempb{round}\ifx\@tempa\@tempb
221 \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
222 \def\@tempb{square}\ifx\@tempa\@tempb
223 \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
224 \def\@tempb{angle}\ifx\@tempa\@tempb
225 \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
226 \def\@tempb{curly}\ifx\@tempa\@tempb
227 \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
228 \def\@tempb{semicolon}\ifx\@tempa\@tempb
229 \renewcommand\NAT@sep{;}\fi
230 \def\@tempb{colon}\ifx\@tempa\@tempb
231 \renewcommand\NAT@sep{;}\fi
232 \def\@tempb{comma}\ifx\@tempa\@tempb
233 \renewcommand\NAT@sep{,}\fi
234 \def\@tempb{authoryear}\ifx\@tempa\@tempb
236 \def\@tempb{numbers}\ifx\@tempa\@tempb
237 \NAT@numberstrue\NAT@superfalse\fi
238 \def\@tempb{super}\ifx\@tempa\@tempb
239 \NAT@numberstrue\NAT@supertrue\fi
240 \def\@tempb{nobibstyle}\ifx\@tempa\@tempb
241 \let\bibstyle=\@gobble\fi
242 \def\@tempb{bibstyle}\ifx\@tempa\@tempb
243 \let\bibstyle=\@citestyle\fi
244 \def\@tempb{sort}\ifx\@tempa\@tempb
245 \def\NAT@sort{\@ne}\fi
246 \def\@tempb{nosort}\ifx\@tempa\@tempb
247 \def\NAT@sort{\z@}\fi
248 \def\@tempb{compress}\ifx\@tempa\@tempb
249 \def\NAT@cmprs{\@ne}\fi
250 \def\@tempb{nocompress}\ifx\@tempa\@tempb
251 \def\NAT@cmprs{\@z}\fi
252 \def\@tempb{sort&compress}\ifx\@tempa\@tempb
253 \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
254 \def\@tempb{mcite}\ifx\@tempa\@tempb
255 \let\NAT@merge\@ne\fi
256 \def\@tempb{merge}\ifx\@tempa\@tempb
257 \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
258 \def\@tempb{elide}\ifx\@tempa\@tempb
259 \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
260 \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
261 \NAT@longnamestrue\fi
262 \def\@tempb{nonamebreak}\ifx\@tempa\@tempb
263 \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
264 \expandafter\NAT@find@eq\@tempa=\relax\@nil
265 \if\@tempc\relax\else
266 \expandafter\NAT@rem@eq\@tempc
267 \def\@tempb{open}\ifx\@tempa\@tempb
268 \xdef\NAT@open{\@tempc}\fi
269 \def\@tempb{close}\ifx\@tempa\@tempb
270 \xdef\NAT@close{\@tempc}\fi
271 \def\@tempb{aysep}\ifx\@tempa\@tempb
272 \xdef\NAT@aysep{\@tempc}\fi
273 \def\@tempb{yysep}\ifx\@tempa\@tempb
274 \xdef\NAT@yrsep{\@tempc}\fi
275 \def\@tempb{notesep}\ifx\@tempa\@tempb
276 \xdef\NAT@cmt{\@tempc}\fi
277 \def\@tempb{citesep}\ifx\@tempa\@tempb
278 \xdef\NAT@sep{\@tempc}\fi
283 \renewcommand\citestyle[1]{%
284 \ifcsname bibstyle@#1\endcsname%
285 \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
287 \@latex@error{Undefined `#1' citestyle}%
291 \newcommand{\bibstyle@acmauthoryear}{%
294 open={[},close={]},citesep={;},%
297 \newcommand{\bibstyle@acmnumeric}{%
299 numbers,sort&compress,%
300 open={[},close={]},citesep={,},%
303 \citestyle{acmnumeric}
305 \def\@startsection#1#2#3#4#5#6{%
306 \if@noskipsec \leavevmode \fi
310 \ifdim \@tempskipa <\z@
311 \@tempskipa -\@tempskipa \@afterindentfalse
316 \addpenalty\@secpenalty\addvspace\@tempskipa
319 {\@ssect{#3}{#4}{#5}{#6}}%
320 {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
321 \def\@sect#1#2#3#4#5#6[#7]#8{%
322 \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
323 \ifnum #2>\c@secnumdepth
327 \protected@edef\@svsec{\@seccntformat{#1}\relax}%
330 \ifdim \@tempskipa>\z@
333 \@hangfrom{\hskip #3\relax\@svsec}%
334 \interlinepenalty \@M #8\@@par}%
336 \csname #1mark\endcsname{#7}%
337 \ifnum #2>\c@secnumdepth \else
338 \@tochangmeasure{\csname the#1\endcsname}%
340 \addcontentsline{toc}{#1}{%
341 \ifnum #2>\c@secnumdepth \else
342 \protect\numberline{\csname the#1\endcsname}%
349 \csname #1mark\endcsname{#7}%
350 \ifnum #2>\c@secnumdepth \else
351 \@tochangmeasure{\csname the#1\endcsname\space}%
353 \addcontentsline{toc}{#1}{%
354 \ifnum #2>\c@secnumdepth \else
355 \protect\numberline{\csname the#1\endcsname}%
362 \ifdim \@tempskipa>\z@
368 \global\@noskipsectrue
371 \global\@noskipsecfalse
372 {\setbox\z@\lastbox}%
374 \begingroup \@svsechd \endgroup
379 \clubpenalty \@clubpenalty
384 \def\@seccntformat#1{\csname the#1\endcsname\quad}
385 \def\@ssect#1#2#3#4#5{%
387 \ifdim \@tempskipa>\z@
390 \@hangfrom{\hskip #1}%
391 \interlinepenalty \@M #5\@@par}%
394 \def\@svsechd{#4{\hskip #1\relax #5}}%
397 \def\@starttoc#1#2{\begingroup\makeatletter
399 \par\removelastskip\vskip\z@skip
400 \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
401 {.5\linespacing}{\centering\contentsnamefont}{#2}%
402 \@input{\jobname.#1}%
404 \@xp\newwrite\csname tf@#1\endcsname
405 \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
407 \global\@nobreakfalse \endgroup
408 \addvspace{32\p@\@plus14\p@}%
410 \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
411 \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
412 \def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}}
413 \let\@footnotemark@nolink\@footnotemark
414 \let\@footnotetext@nolink\@footnotetext
415 \RequirePackage[bookmarksnumbered,unicode]{hyperref}
416 \pdfstringdefDisableCommands{%
419 \def\textrightarrow{ -> }%
423 \ifcase\ACM@format@nr
438 \hypersetup{colorlinks,
441 urlcolor=ACMDarkBlue,
442 filecolor=ACMDarkBlue}
444 \hypersetup{hidelinks}
449 \let\citeANP\citeauthor
450 \let\citeNN\citeyearpar
451 \let\citeyearNP\citeyear
453 \DeclareRobustCommand\citeA
454 {\begingroup\NAT@swafalse
455 \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
456 \providecommand\newblock{}%
460 \providecommand\citename[1]{#1}}
462 \newcommand\shortcite[2][]{%
463 \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi}
464 \def\bibliographystyle#1{%
465 \ifx\@begindocumenthook\@undefined\else
466 \expandafter\AtBeginDocument
469 \immediate\write\@auxout{\string\bibstyle{#1}}%
471 \RequirePackage{graphicx}
472 \RequirePackage[prologue]{xcolor}
473 \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
474 \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
475 \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
476 \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
477 \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
478 \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
479 \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
480 \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
482 \RequirePackage{draftwatermark}
483 \SetWatermarkFontSize{0.5in}
484 \SetWatermarkColor[gray]{.9}
485 \SetWatermarkText{\parbox{12em}{\centering
486 Unpublished working draft.\\
487 Not for distribution.}}
489 \RequirePackage{geometry}
490 \ifcase\ACM@format@nr
492 \geometry{letterpaper,head=13pt,
493 marginparwidth=6pc,heightrounded}%
495 \geometry{twoside=true,
496 includeheadfoot, head=13pt, foot=2pc,
497 paperwidth=6.75in, paperheight=10in,
498 top=58pt, bottom=44pt, inner=46pt, outer=46pt,
499 marginparwidth=2pc,heightrounded
502 \geometry{twoside=true, head=13pt, foot=2pc,
503 paperwidth=8.5in, paperheight=11in,
505 top=78pt, bottom=114pt, inner=81pt, outer=81pt,
506 marginparwidth=4pc,heightrounded
509 \geometry{twoside=true, head=13pt, foot=2pc,
510 paperwidth=8.5in, paperheight=11in,
511 includeheadfoot, columnsep=24pt,
512 top=52pt, bottom=75pt, inner=52pt, outer=52pt,
513 marginparwidth=2pc,heightrounded
516 \geometry{twoside=true, head=13pt,
517 paperwidth=8.5in, paperheight=11in,
518 includeheadfoot, columnsep=2pc,
519 top=57pt, bottom=73pt, inner=54pt, outer=54pt,
520 marginparwidth=2pc,heightrounded
523 \geometry{twoside=true, head=13pt,
524 paperwidth=8.5in, paperheight=11in,
525 includeheadfoot, columnsep=2pc,
526 top=57pt, bottom=73pt, inner=54pt, outer=54pt,
527 marginparwidth=2pc,heightrounded
530 \geometry{twoside=true, head=13pt,
531 paperwidth=8.5in, paperheight=11in,
532 includeheadfoot=false, columnsep=2pc,
533 top=1in, bottom=1in, inner=0.75in, outer=0.75in,
534 marginparwidth=2pc,heightrounded
537 \geometry{twoside=true, head=13pt,
538 paperwidth=8.5in, paperheight=11in,
539 includeheadfoot, columnsep=2pc,
540 top=66pt, bottom=73pt, inner=54pt, outer=54pt,
541 marginparwidth=2pc,heightrounded
544 \geometry{twoside=false, head=13pt,
545 paperwidth=11in, paperheight=8.5in,
546 includeheadfoot, marginparsep=72pt,
547 marginparwidth=170pt, columnsep=20pt,
548 top=72pt, bottom=72pt, left=314pt, right=72pt
553 \setlength\parindent{10\p@}
554 \setlength\parskip{\z@}
555 \ifcase\ACM@format@nr
560 \setlength\parindent{9\p@}%
567 \setlength\normalparindent{\parindent}
568 \def\copyrightpermissionfootnoterule{\kern-3\p@
569 \hrule \@width \columnwidth \kern 2.6\p@}
570 \RequirePackage{manyfoot}
571 \SelectFootnoteRule[2]{copyrightpermission}
572 \DeclareNewFootnote{authorsaddresses}
573 \SelectFootnoteRule[2]{copyrightpermission}
574 \DeclareNewFootnote{copyrightpermission}
575 \def\footnoterule{\kern-3\p@
576 \hrule \@width 4pc \kern 2.6\p@}
580 \ifvoid\@mpfootins\else
581 \vskip\skip\@mpfootins
588 \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
589 \def\@makefntext{\noindent\@makefnmark}
591 \long\def\@footnotetext#1{\marginpar{%
593 \interlinepenalty\interfootnotelinepenalty
594 \protected@edef\@currentlabel{%
595 \csname p@footnote\endcsname\@thefnmark
599 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
602 \long\def\@mpfootnotetext#1{%
603 \global\setbox\@mpfootins\vbox{%
605 \reset@font\footnotesize
608 \protected@edef\@currentlabel
609 {\csname p@mpfootnote\endcsname\@thefnmark}%
610 \color@begingroup\centering
612 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
614 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
615 \def\@textbottom{\vskip \z@ \@plus 1pt}
617 \RequirePackage{iftex}
619 \input{glyphtounicode}
620 \pdfglyphtounicode{f_f}{FB00}
621 \pdfglyphtounicode{f_f_i}{FB03}
622 \pdfglyphtounicode{f_f_l}{FB04}
623 \pdfglyphtounicode{f_i}{FB01}
624 \pdfglyphtounicode{t_t}{00740074}
625 \pdfglyphtounicode{f_t}{00660074}
626 \pdfglyphtounicode{T_h}{00540068}
629 \RequirePackage{cmap}
630 \newif\if@ACM@newfonts
632 \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
633 have the libertine package installed. Please upgrade your
634 TeX}\@ACM@newfontsfalse}
635 \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
636 have the zi4 package installed. Please upgrade your
637 TeX}\@ACM@newfontsfalse}
638 \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
639 have the newtxmath package installed. Please upgrade your
640 TeX}\@ACM@newfontsfalse}
642 \RequirePackage[tt=false, type1=true]{libertine}
643 \RequirePackage[varqu]{zi4}
644 \RequirePackage[libertine]{newtxmath}
645 \RequirePackage[T1]{fontenc}
647 \let\liningnums\@undefined
649 \DeclareTextFontCommand{\liningnums}{\libertineLF}}
651 \renewcommand{\familydefault}{\sfdefault}
653 \RequirePackage{caption, float}
654 \captionsetup[table]{position=top}
656 \captionsetup{labelfont={sf, small},
657 textfont={sf, small}, margin=\z@}
658 \captionsetup[figure]{name={Fig.}}
660 \captionsetup{labelfont={bf},
661 textfont={bf}, labelsep=colon, margin=\z@}
662 \ifcase\ACM@format@nr
669 \captionsetup{textfont={it}}
671 \captionsetup{labelfont={bf},
672 textfont={normalfont}, labelsep=period, margin=\z@}
674 \captionsetup[figure]{labelfont={bf, small},
675 textfont={bf, small}}
677 \captionsetup[figure]{labelfont={bf, small},
678 textfont={bf, small}}
681 \newfloat{sidebar}{}{sbar}
682 \floatname{sidebar}{Sidebar}
683 \renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
684 \long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}%
685 \marginpar{\small#1}\egroup}
686 \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
687 \long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}%
688 \marginpar{\centering\small#1}\egroup}
689 \newenvironment{margintable}{\Collect@Body\@margintable}{}
690 \long\def\@margintable#1{\bgroup\captionsetup{type=table}%
691 \marginpar{\centering\small#1}\egroup}
692 \newdimen\fulltextwidth
693 \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
695 \def\@dblfloat{\bgroup\columnwidth=\fulltextwidth
696 \let\@endfloatbox\@endwidefloatbox
697 \def\@fpsadddefault{\def\@fps{tp}}%
704 \def\@endwidefloatbox{%
710 \global\setbox\@currbox=\vbox{\moveleft
711 \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
712 \wd\@currbox=\textwidth
714 \ifcase\ACM@format@nr
722 \def\labelenumi{\theenumi.}
723 \def\labelenumii{\theenumii.}
724 \def\labelenumiii{\theenumiii.}
725 \def\labelenumiv{\theenumiv.}
729 \newdimen\@ACM@labelwidth
731 \setlength\labelsep{4pt}
732 \setlength{\@ACM@labelwidth}{6.5pt}
734 %% First-level list: when beginning after the first line of an
735 %% indented paragraph or ending before an indented paragraph, labels
736 %% should not hang to the left of the preceding/following text.
737 \setlength\leftmargini{\z@}
738 \addtolength\leftmargini{\parindent}
739 \addtolength\leftmargini{2\labelsep}
740 \addtolength\leftmargini{\@ACM@labelwidth}
742 %% Second-level and higher lists.
743 \setlength\leftmarginii{\z@}
744 \addtolength\leftmarginii{0.5\labelsep}
745 \addtolength\leftmarginii{\@ACM@labelwidth}
746 \setlength\leftmarginiii{\leftmarginii}
747 \setlength\leftmarginiv{\leftmarginiii}
748 \setlength\leftmarginv{\leftmarginiv}
749 \setlength\leftmarginvi{\leftmarginv}
752 \listisep\smallskipamount
753 \def\@listI{\leftmargin\leftmargini
754 \labelwidth\leftmargini \advance\labelwidth-\labelsep
758 \def\@listii{\leftmargin\leftmarginii
759 \labelwidth\leftmarginii \advance\labelwidth-\labelsep
761 \def\@listiii{\leftmargin\leftmarginiii
762 \labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
763 \def\@listiv{\leftmargin\leftmarginiv
764 \labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
765 \def\@listv{\leftmargin\leftmarginv
766 \labelwidth\leftmarginv \advance\labelwidth-\labelsep}
767 \def\@listvi{\leftmargin\leftmarginvi
768 \labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
769 \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
770 \renewenvironment{description}{\list{}{%
771 \labelwidth\@ACM@labelwidth
772 \let\makelabel\descriptionlabel}%
776 \let\enddescription=\endlist % for efficiency
777 \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
832 \ifcase\@journalCode@nr
834 \def\@journalName{ACM Computers in Entertainment}%
835 \def\@journalNameShort{ACM Comput. Entertain.}%
836 \def\@permissionCodeOne{1544-3574}%
838 \def\@journalName{ACM Computing Surveys}%
839 \def\@journalNameShort{ACM Comput. Surv.}%
840 \def\@permissionCodeOne{0360-0300}%
842 \def\@journalName{Digital Threats: Research and Practice}%
843 \def\@journalNameShort{Digit. Threat. Res. Pract.}%
844 \def\@permissionCodeOne{2576-5337}%
846 \def\@journalName{Proceedings of the ACM on Interactive, Mobile,
847 Wearable and Ubiquitous Technologies}%
848 \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
849 \def\@permissionCodeOne{2474-9567}%
851 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
853 \def\@journalName{Journal of the ACM}%
854 \def\@journalNameShort{J. ACM}%
855 \def\@permissionCodeOne{0004-5411}%
857 \def\@journalName{ACM Journal of Data and Information Quality}%
858 \def\@journalNameShort{ACM J. Data Inform. Quality}%
859 \def\@permissionCodeOne{1936-1955}%
861 \def\@journalName{ACM Journal of Experimental Algorithmics}%
862 \def\@journalNameShort{ACM J. Exp. Algor.}%
863 \def\@permissionCodeOne{1084-6654}%
865 \def\@journalName{ACM Journal of Educational Resources in Computing}%
866 \def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
867 \def\@permissionCodeOne{1073-0516}%
869 \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
870 \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
871 \def\@permissionCodeOne{1550-4832}%
873 \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
874 \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
876 \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
877 \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
878 \def\@permissionCodeOne{2573-0142}%
880 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
882 \def\@journalName{Proceedings of the ACM on Programming Languages}%
883 \def\@journalNameShort{Proc. ACM Program. Lang.}%
884 \def\@permissionCodeOne{2475-1421}%
886 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
888 \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
889 \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
890 \def\@permissionCodeOne{2476-1249}%
892 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
894 \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
895 \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
896 \def\@permissionCodeOne{1556-4665}%
898 \def\@journalName{ACM Transactions on Accessible Computing}%
899 \def\@journalNameShort{ACM Trans. Access. Comput.}%
900 \def\@permissionCodeOne{1936-7228}%
902 \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
903 \def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
905 \def\@journalName{ACM Transactions on Algorithms}%
906 \def\@journalNameShort{ACM Trans. Algor.}%
907 \def\@permissionCodeOne{1549-6325}%
909 \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
910 \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
911 \def\@permissionCodeOne{2375-4699}%
913 \def\@journalName{ACM Transactions on Applied Perception}%
915 \def\@journalName{ACM Transactions on Cyber-Physical Systems}%
917 \def\@journalName{ACM Transactions on Economics and Computation}%
919 \def\@journalName{ACM Transactions on Embedded Computing Systems}%
920 \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
921 \def\@permissionCodeOne{1539-9087}%
923 \def\@journalName{ACM Transactions on Human-Robot Interaction}%
924 \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
925 \def\@permissionCodeOne{2573-9522}%
927 \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
928 \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
929 \def\@permissionCodeOne{2160-6455}%
931 \def\@journalName{ACM Transactions on Information and System Security}%
932 \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
933 \def\@permissionCodeOne{1094-9224}%
935 \def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
936 \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
937 \def\@permissionCodeOne{2157-6904}%
939 \def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
940 \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
941 \def\@permissionCodeOne{1556-4681}%
943 \def\@journalName{ACM Transactions on Management Information Systems}%
944 \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
945 \def\@permissionCodeOne{2158-656X}%
947 \def\@journalName{ACM Transactions on Computing Education}%
948 \def\@journalNameShort{ACM Trans. Comput. Educ.}%
949 \def\@permissionCodeOne{1946-6226}%
951 \def\@journalName{ACM Transactions on Computer-Human Interaction}%
952 \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
953 \def\@permissionCodeOne{1073-0516}%
955 \def\@journalName{ACM Transactions on Computational Logic}%
956 \def\@journalNameShort{ACM Trans. Comput. Logic}%
957 \def\@permissionCodeOne{1529-3785}%
959 \def\@journalName{ACM Transactions on Computer Systems}%
960 \def\@journalNameShort{ACM Trans. Comput. Syst.}%
961 \def\@permissionCodeOne{0734-2071}%
963 \def\@journalName{ACM Transactions on Computation Theory}%
964 \def\@journalNameShort{ACM Trans. Comput. Theory}%
965 \def\@permissionCodeOne{1942-3454}%
967 \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
968 \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
969 \def\@permissionCodeOne{1084-4309}%
971 \def\@journalName{ACM Transactions on Database Systems}%
972 \def\@journalNameShort{ACM Trans. Datab. Syst.}%
973 \def\@permissionCodeOne{0362-5915}%
975 \def\@journalName{ACM Transactions on Graphics}%
976 \def\@journalNameShort{ACM Trans. Graph.}%
977 \def\@permissionCodeOne{0730-0301}
979 \def\@journalName{ACM Transactions on Information Systems}%
980 \def\@permissionCodeOne{1046-8188}%
982 \def\@journalName{ACM Transactions on Internet Technology}%
983 \def\@journalNameShort{ACM Trans. Internet Technol.}%
984 \def\@permissionCodeOne{1533-5399}%
986 \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
987 \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
989 \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
990 \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
991 \def\@permissionCodeOne{1551-6857}%
992 \def\@permissionCodeTwo{0100}%
994 \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
995 \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
996 \def\@permissionCodeOne{2376-3639}%
998 \def\@journalName{ACM Transactions on Mathematical Software}%
999 \def\@journalNameShort{ACM Trans. Math. Softw.}%
1000 \def\@permissionCodeOne{0098-3500}%
1002 \def\@journalName{ACM Transactions on Parallel Computing}%
1003 \def\@journalNameShort{ACM Trans. Parallel Comput.}%
1004 \def\@permissionCodeOne{1539-9087}%
1006 \def\@journalName{ACM Transactions on Privacy and Security}%
1007 \def\@journalNameShort{ACM Trans. Priv. Sec.}%
1008 \def\@permissionCodeOne{2471-2566}%
1010 \def\@journalName{ACM Transactions on Programming Languages and Systems}%
1011 \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
1012 \def\@permissionCodeOne{0164-0925}%
1014 \def\@journalName{ACM Transactions on Storage}%
1015 \def\@journalNameShort{ACM Trans. Storage}%
1016 \def\@permissionCodeOne{1553-3077}%
1018 \def\@journalName{ACM Transactions on Software Engineering and Methodology}%
1019 \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
1020 \def\@permissionCodeOne{1049-331X}%
1022 \def\@journalName{ACM Transactions on Sensor Networks}%
1023 \def\@journalNameShort{ACM Trans. Sensor Netw.}%
1024 \def\@permissionCodeOne{1550-4859}%
1026 \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
1027 \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
1028 \def\@permissionCodeOne{1936-7406}%
1030 \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
1031 \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
1032 \def\@permissionCodeOne{2374-0353}%
1034 \def\@journalName{ACM Transactions on Social Computing}%
1035 \def\@journalNameShort{ACM Trans. Soc. Comput.}%
1036 \def\@permissionCodeOne{2469-7818}%
1038 \def\@journalName{ACM Transactions on Speech and Language Processing}%
1039 \def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
1040 \def\@permissionCodeOne{1550-4875}%
1042 \def\@journalName{ACM Transactions on the Web}%
1043 \def\@journalNameShort{ACM Trans. Web}%
1044 \def\@permissionCodeOne{1559-1131}%
1046 \ClassInfo{\@classname}{Using journal code \@journalCode}%
1048 \ClassError{\@classname}{Incorrect journal #1}%
1050 \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
1051 \def\@journalCode@nr{0}
1052 \def\@journalName{}%
1053 \def\@journalNameShort{\@journalName}%
1054 \def\@permissionCodeOne{XXXX-XXXX}%
1055 \def\@permissionCodeTwo{}%
1056 \newcommand\acmConference[4][]{%
1057 \gdef\acmConference@shortname{#1}%
1058 \gdef\acmConference@name{#2}%
1059 \gdef\acmConference@date{#3}%
1060 \gdef\acmConference@venue{#4}%
1061 \ifx\acmConference@shortname\@empty
1062 \gdef\acmConference@shortname{#2}%
1064 \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
1066 \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
1067 \acmBooktitle{Proceedings of \acmConference@name
1068 \ifx\acmConference@name\acmConference@shortname\else
1069 \ (\acmConference@shortname)\fi}
1070 \def\@editorsAbbrev{(Ed.)}
1072 \def\editor#1{\ifx\@acmEditors\@empty
1073 \gdef\@acmEditors{#1}%
1075 \gdef\@editorsAbbrev{(Eds.)}%
1076 \g@addto@macro\@acmEditors{\and#1}%
1078 \def\subtitle#1{\def\@subtitle{#1}}
1080 \newcount\num@authorgroups
1081 \num@authorgroups=0\relax
1082 \newcount\num@authors
1083 \num@authors=0\relax
1084 \newif\if@insideauthorgroup
1085 \@insideauthorgroupfalse
1086 \renewcommand\author[2][]{%
1087 \global\advance\num@authors by 1\relax
1088 \if@insideauthorgroup\else
1089 \global\advance\num@authorgroups by 1\relax
1090 \global\@insideauthorgrouptrue
1092 \ifx\addresses\@empty
1094 \gdef\addresses{\@author{Anonymous Author(s)}}%
1095 \gdef\authors{Anonymous Author(s)}%
1097 \gdef\addresses{\@author{#2}}%
1101 \if@ACM@anonymous\else
1102 \g@addto@macro\addresses{\and\@author{#2}}%
1103 \g@addto@macro\authors{\and#2}%
1107 \ifx\shortauthors\@empty
1108 \gdef\shortauthors{Anon.}%
1113 \ifx\shortauthors\@empty
1114 \gdef\shortauthors{#2}%
1116 \g@addto@macro\shortauthors{\and#2}%
1119 \ifx\shortauthors\@empty
1120 \gdef\shortauthors{#1}%
1122 \g@addto@macro\shortauthors{\and#1}%
1126 \newcommand{\affiliation}[2][]{%
1127 \global\@insideauthorgroupfalse
1128 \if@ACM@anonymous\else
1129 \g@addto@macro\addresses{\affiliation{#1}{#2}}%
1131 \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
1132 [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
1133 \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
1134 \def\@additionalaffiliation#1{\bgroup
1135 \def\position##1{\ignorespaces}%
1136 \def\institution##1{##1\ignorespaces}%
1137 \def\department{\@ifnextchar[{\@department}{\@department[]}}%
1138 \def\@department[##1]##2{\unskip, ##2\ignorespaces}%
1139 \let\streetaddress\position
1142 \let\postcode\position
1143 \let\country\position
1144 Also with #1\unskip.\egroup}
1145 \renewcommand{\email}[2][]{%
1146 \if@ACM@anonymous\else
1147 \g@addto@macro\addresses{\email{#1}{#2}}%
1149 \def\orcid#1{\unskip\ignorespaces}
1150 \def\authorsaddresses#1{\def\@authorsaddresses{#1}}
1151 \authorsaddresses{\@mkauthorsaddresses}
1154 \g@addto@macro\@title{\footnotemark}%
1156 \g@addto@macro\@titlenotes{%
1157 \stepcounter{footnote}\footnotetext{Title note}}%
1159 \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
1161 \def\@subtitlenotes{}
1162 \def\subtitlenote#1{%
1163 \g@addto@macro\@subtitle{\footnotemark}%
1165 \g@addto@macro\@subtitlenotes{%
1166 \stepcounter{footnote}\footnotetext{Subtitle note}}%
1168 \g@addto@macro\@subtitlenotes{%
1169 \stepcounter{footnote}\footnotetext{#1}}%
1173 \if@ACM@anonymous\else
1174 \g@addto@macro\addresses{\@authornotemark}%
1175 \g@addto@macro\@authornotes{%
1176 \stepcounter{footnote}\footnotetext{#1}}%
1178 \newcommand\authornotemark[1][\relax]{%
1179 \ifx#1\relax\relax\relax
1180 \g@addto@macro\addresses{\@authornotemark}%
1182 \g@addto@macro\addresses{\@@authornotemark{#1}}%
1184 \def\acmVolume#1{\def\@acmVolume{#1}}
1186 \def\acmNumber#1{\def\@acmNumber{#1}}
1188 \def\acmArticle#1{\def\@acmArticle{#1}}
1190 \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
1191 \acmArticleSeq{\@acmArticle}
1192 \def\acmYear#1{\def\@acmYear{#1}}
1194 \def\acmMonth#1{\def\@acmMonth{#1}}
1195 \acmMonth{\the\month}
1196 \def\@acmPubDate{\ifcase\@acmMonth\or
1197 January\or February\or March\or April\or May\or June\or
1198 July\or August\or September\or October\or November\or
1199 December\fi~\@acmYear}
1200 \def\acmPrice#1{\def\@acmPrice{#1}}
1202 \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
1204 \def\acmISBN#1{\def\@acmISBN{#1}}
1205 \acmISBN{978-x-xxxx-xxxx-x/YY/MM}
1206 \def\acmDOI#1{\def\@acmDOI{#1}}
1207 \acmDOI{10.1145/nnnnnnn.nnnnnnn}
1210 \newlength\@ACM@badge@width
1211 \setlength\@ACM@badge@width{5pc}
1212 \newlength\@ACM@title@width
1213 \newlength\@ACM@badge@skip
1214 \setlength\@ACM@badge@skip{1pc}
1215 \newcommand\acmBadgeR[2][]{\@ACM@badgetrue
1216 \def\@acmBadgeR@url{#1}%
1217 \def\@acmBadgeR@image{#2}}
1218 \def\@acmBadgeR@url{}
1219 \def\@acmBadgeR@image{}
1220 \newcommand\acmBadgeL[2][]{\@ACM@badgetrue
1221 \def\@acmBadgeL@url{#1}%
1222 \def\@acmBadgeL@image{#2}}
1223 \def\@acmBadgeL@url{}
1224 \def\@acmBadgeL@image{}
1225 \def\startPage#1{\def\@startPage{#1}}
1227 \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
1228 obsolete. I am going to ignore it}}
1229 \def\keywords#1{\def\@keywords{#1}}
1231 \renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
1232 \long\def\@saveabstract#1{\long\gdef\@abstract{#1}}
1235 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
1237 \ClassInfo{\@classname}{Printing CCS}%
1239 \ClassInfo{\@classname}{Suppressing CCS}%
1240 \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
1241 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
1243 \ClassInfo{\@classname}{Printing bibformat}%
1245 \ClassInfo{\@classname}{Suppressing bibformat}%
1246 \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
1247 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
1249 \ClassInfo{\@classname}{Printing folios}%
1251 \ClassInfo{\@classname}{Suppressing folios}%
1252 \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
1253 \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
1254 \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
1255 #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
1256 numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
1257 \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
1258 \settopmatter{printccs=true, printacmref=true}
1260 \settopmatter{printfolios=true}
1263 \settopmatter{printfolios=true}
1265 \settopmatter{printfolios=false}
1268 \settopmatter{authorsperrow=0}
1270 \newcommand\received[2][]{\def\@tempa{#1}%
1272 \ifx\@received\@empty
1273 \gdef\@received{Received #2}%
1275 \g@addto@macro{\@received}{; revised #2}%
1278 \ifx\@received\@empty
1279 \gdef\@received{#1 #2}%
1281 \g@addto@macro{\@received}{; #1 #2}%
1285 \ifx\@received\@empty\else
1286 \par\bigskip\noindent\small\normalfont\@received\par
1288 \RequirePackage{comment}
1289 \excludecomment{CCSXML}
1290 \let\@concepts\@empty
1291 \newcommand\ccsdesc[2][100]{%
1292 \ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
1293 \RequirePackage{textcomp}
1294 \def\ccsdesc@parse#1~#2~#3~{%
1295 \expandafter\ifx\csname CCS@General@#2\endcsname\relax
1296 \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
1298 \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
1299 \expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
1300 \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
1301 \csname CCS@Punctuation@#2\endcsname
1302 \csname CCS@Specific@#2\endcsname}%
1304 \ifx#3\relax\relax\else
1305 \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
1307 \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
1308 \ifnum#1>499\textbf{#3}; \else
1309 \ifnum#1>299\textit{#3}; \else
1312 \ccsdesc@parse@finish}
1313 \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
1314 \newif\if@printcopyright
1315 \@printcopyrighttrue
1316 \newif\if@printpermission
1317 \@printpermissiontrue
1320 \define@choicekey*{ACM@}{acmcopyrightmode}[%
1321 \acm@copyrightinput\acm@copyrightmode]{none,%
1322 acmcopyright,acmlicensed,rightsretained,%
1323 usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
1324 licensedcagov,licensedcagovmixed,othergov,licensedothergov,%
1326 \@printpermissiontrue
1327 \@printcopyrighttrue
1329 \ifnum\acm@copyrightmode=0\relax % none
1330 \@printpermissionfalse
1331 \@printcopyrightfalse
1334 \ifnum\acm@copyrightmode=2\relax % acmlicensed
1337 \ifnum\acm@copyrightmode=3\relax % rightsretained
1341 \ifnum\acm@copyrightmode=4\relax % usgov
1342 \@printpermissiontrue
1343 \@printcopyrightfalse
1347 \ifnum\acm@copyrightmode=6\relax % cagov
1350 \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
1353 \ifnum\acm@copyrightmode=9\relax % licensedcagov
1356 \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
1359 \ifnum\acm@copyrightmode=11\relax % othergov
1362 \ifnum\acm@copyrightmode=12\relax % licensedothergov
1365 \ifnum\acm@copyrightmode=13\relax % iw3c2w3
1368 \ifnum\acm@copyrightmode=14\relax % iw3c2w3g
1371 \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
1372 \setcopyright{acmcopyright}
1373 \def\@copyrightowner{%
1374 \ifcase\acm@copyrightmode\relax % none
1376 Association for Computing Machinery.
1378 Copyright held by the owner/author(s). Publication rights licensed to
1379 the Association for Computing Machinery.
1380 \or % rightsretained
1381 Copyright held by the owner/author(s).
1384 Association for Computing Machinery.
1386 Crown in Right of Canada.
1388 Association for Computing Machinery.
1389 \or %licensedusgovmixed
1390 Copyright held by the owner/author(s). Publication rights licensed to
1391 the Association for Computing Machinery.
1393 Crown in Right of Canada. Publication rights licensed to
1394 the Association for Computing Machinery.
1395 \or %licensedcagovmixed
1396 Copyright held by the owner/author(s). Publication rights licensed to
1397 the Association for Computing Machinery.
1399 Association for Computing Machinery.
1400 \or % licensedothergov
1401 Copyright held by the owner/author(s). Publication rights licensed to
1402 the Association for Computing Machinery.
1404 IW3C2 (International World Wide Web Conference Committee), published
1405 under Creative Commons CC~BY~4.0 License.
1406 \or % ic2w3wwwgoogle
1407 IW3C2 (International World Wide Web Conference Committee), published
1408 under Creative Commons CC~BY-NC-ND~4.0 License.
1410 \def\@formatdoi#1{\url{https://doi.org/#1}}
1411 \def\@copyrightpermission{%
1412 \ifcase\acm@copyrightmode\relax % none
1414 Permission to make digital or hard copies of all or part of this
1415 work for personal or classroom use is granted without fee provided
1416 that copies are not made or distributed for profit or commercial
1417 advantage and that copies bear this notice and the full citation on
1418 the first page. Copyrights for components of this work owned by
1419 others than ACM must be honored. Abstracting with credit is
1420 permitted. To copy otherwise, or republish, to post on servers or to
1421 redistribute to lists, requires prior specific permission
1422 and\hspace*{.5pt}/or a fee. Request permissions from
1423 permissions@acm.org.
1425 Permission to make digital or hard copies of all or part of this
1426 work for personal or classroom use is granted without fee provided
1427 that copies are not made or distributed for profit or commercial
1428 advantage and that copies bear this notice and the full citation on
1429 the first page. Copyrights for components of this work owned by
1430 others than the author(s) must be honored. Abstracting with credit
1431 is permitted. To copy otherwise, or republish, to post on servers
1432 or to redistribute to lists, requires prior specific permission
1433 and\hspace*{.5pt}/or a fee. Request permissions from
1434 permissions@acm.org.
1435 \or % rightsretained
1436 Permission to make digital or hard copies of part or all of this work
1437 for personal or classroom use is granted without fee provided that
1438 copies are not made or distributed for profit or commercial advantage
1439 and that copies bear this notice and the full citation on the first
1440 page. Copyrights for third-party components of this work must be
1441 honored. For all other uses, contact the
1442 owner\hspace*{.5pt}/author(s).
1444 This paper is authored by an employee(s) of the United States
1445 Government and is in the public domain. Non-exclusive copying or
1446 redistribution is allowed, provided that the article citation is
1447 given and the authors and agency are clearly identified as its
1450 ACM acknowledges that this contribution was authored or co-authored
1451 by an employee, contractor, or affiliate of the United States government. As such,
1452 the United States government retains a nonexclusive, royalty-free right to
1453 publish or reproduce this article, or to allow others to do so, for
1454 government purposes only.
1456 This article was authored by employees of the Government of Canada.
1457 As such, the Canadian government retains all interest in the
1458 copyright to this work and grants to ACM a nonexclusive,
1459 royalty-free right to publish or reproduce this article, or to allow
1460 others to do so, provided that clear attribution is given both to
1461 the authors and the Canadian government agency employing them.
1462 Permission to make digital or hard copies for personal or classroom
1463 use is granted. Copies must bear this notice and the full citation
1464 on the first page. Copyrights for components of this work owned by
1465 others than the Canadian Government must be honored. To copy
1466 otherwise, distribute, republish, or post, requires prior specific
1467 permission and\hspace*{.5pt}/or a fee. Request permissions from
1468 permissions@acm.org.
1470 ACM acknowledges that this contribution was co-authored by an
1471 affiliate of the national government of Canada. As such, the Crown
1472 in Right of Canada retains an equal interest in the copyright.
1473 Reprints must include clear attribution to ACM and the author's
1474 government agency affiliation. Permission to make digital or hard
1475 copies for personal or classroom use is granted. Copies must bear
1476 this notice and the full citation on the first page. Copyrights for
1477 components of this work owned by others than ACM must be honored.
1478 To copy otherwise, distribute, republish, or post, requires prior
1479 specific permission and\hspace*{.5pt}/or a fee. Request permissions
1480 from permissions@acm.org.
1481 \or % licensedusgovmixed
1482 Publication rights licensed to ACM\@. ACM acknowledges that this
1483 contribution was authored or co-authored by an employee, contractor
1484 or affiliate of the United States government. As such, the
1485 Government retains a nonexclusive, royalty-free right to publish or
1486 reproduce this article, or to allow others to do so, for Government
1489 This article was authored by employees of the Government of Canada.
1490 As such, the Canadian government retains all interest in the
1491 copyright to this work and grants to ACM a nonexclusive,
1492 royalty-free right to publish or reproduce this article, or to allow
1493 others to do so, provided that clear attribution is given both to
1494 the authors and the Canadian government agency employing them.
1495 Permission to make digital or hard copies for personal or classroom
1496 use is granted. Copies must bear this notice and the full citation
1497 on the first page. Copyrights for components of this work owned by
1498 others than the Canadian Government must be honored. To copy
1499 otherwise, distribute, republish, or post, requires prior specific
1500 permission and\hspace*{.5pt}/or a fee. Request permissions from
1501 permissions@acm.org.
1502 \or % licensedcagovmixed
1503 Publication rights licensed to ACM\@. ACM acknowledges that this
1504 contribution was authored or co-authored by an employee, contractor
1505 or affiliate of the national government of Canada. As such, the
1506 Government retains a nonexclusive, royalty-free right to publish or
1507 reproduce this article, or to allow others to do so, for Government
1510 ACM acknowledges that this contribution was authored or co-authored
1511 by an employee, contractor or affiliate of a national government. As
1512 such, the Government retains a nonexclusive, royalty-free right to
1513 publish or reproduce this article, or to allow others to do so, for
1514 Government purposes only.
1515 \or % licensedothergov
1516 Publication rights licensed to ACM\@. ACM acknowledges that this
1517 contribution was authored or co-authored by an employee, contractor
1518 or affiliate of a national government. As such, the Government
1519 retains a nonexclusive, royalty-free right to publish or reproduce
1520 this article, or to allow others to do so, for Government purposes
1523 This paper is published under the Creative Commons Attribution~4.0
1524 International (CC~BY~4.0) license. Authors reserve their rights to
1525 disseminate the work on their personal and corporate Web sites with
1526 the appropriate attribution.
1528 This paper is published under the Creative Commons
1529 Attribution-NonCommercial-NoDerivs~4.0 International
1530 (CC~BY-NC-ND~4.0) license. Authors reserve their rights to
1531 disseminate the work on their personal and corporate Web sites with
1532 the appropriate attribution.
1534 \def\copyrightyear#1{\def\@copyrightyear{#1}}
1535 \copyrightyear{\@acmYear}
1536 \def\@teaserfigures{}
1537 \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
1538 \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
1539 \renewcommand{\thanks}[1]{%
1542 \g@addto@macro\thankses{\thanks{A note}}%
1544 \g@addto@macro\thankses{\thanks{#1}}%
1549 % Anonymize omission of \author-s
1550 \ifnum\num@authorgroups=0\author{}\fi
1553 \let\@footnotemark\@footnotemark@nolink
1554 \let\@footnotetext\@footnotetext@nolink
1555 \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
1556 \global\@topnum\z@ % this prevents floats from falling
1557 % at the top of page 1
1558 \global\@botnum\z@ % we do not want them to be on the bottom either
1560 \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
1561 \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
1563 \if@ACM@sigchiamode\@mkauthors\fi
1564 \setcounter{footnote}{0}%
1565 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}%
1569 \let\@makefnmark\relax
1570 \let\@thefnmark\relax
1571 \let\@makefntext\noindent
1572 \ifx\@empty\thankses\else
1573 \footnotetextauthorsaddresses{%
1574 \def\par{\let\par\@par}\parindent\z@\@setthanks}%
1576 \ifx\@empty\@authorsaddresses\else
1577 \if@ACM@anonymous\else
1579 \footnotetextauthorsaddresses{%
1580 \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
1584 \footnotetextcopyrightpermission{%
1586 \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
1587 Unpublished working draft. Not for distribution.}}%
1590 \parindent\z@\parskip0.1\baselineskip
1591 \if@ACM@authorversion\else
1592 \if@printpermission\@copyrightpermission\par\fi
1594 \if@ACM@manuscript\else
1595 \if@ACM@journal\else % Print the conference information
1596 {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par
1600 \copyright\ \@copyrightyear\ \@copyrightowner\\
1605 Manuscript submitted to ACM\\
1607 \if@ACM@authorversion
1608 This is the author's version of the work. It is posted here for
1609 your personal use. Not for redistribution. The definitive Version
1610 of Record was published in
1612 \emph{\@journalName}%
1614 \emph{\@acmBooktitle}%
1619 , \@formatdoi{\@acmDOI}.
1623 \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle
1624 \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
1625 \@formatdoi{\@acmDOI}%
1627 \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
1628 \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
1629 \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
1634 \setcounter{footnote}{0}%
1637 \ifx\@concepts\@empty\else\bgroup
1638 {\@specialsection{CCS Concepts}%
1639 \@concepts\par}\egroup
1642 \ifx\@keywords\@empty\else\bgroup
1644 \@specialsection{Additional Key Words and Phrases}%
1646 \@specialsection{Keywords}%
1648 \@keywords}\par\egroup
1651 \andify\shortauthors
1652 \global\let\authors=\authors
1653 \global\let\shortauthors=\shortauthors
1660 pdfauthor={\authors},
1662 pdfsubject={\@concepts},
1663 pdfkeywords={\@keywords},
1664 pdfcreator={LaTeX with acmart
1665 \csname ver@acmart.cls\endcsname\space
1667 \csname ver@hyperref.sty\endcsname}}%
1672 \def\@specialsection#1{%
1673 \ifcase\ACM@format@nr
1675 \par\medskip\small\noindent#1: %
1677 \par\medskip\small\noindent#1: %
1679 \par\medskip\small\noindent#1: %
1681 \par\medskip\small\noindent#1: %
1693 \def\@printtopmatter{%
1694 \ifx\@startPage\@empty
1695 \gdef\@startPage{1}%
1697 \setcounter{page}{\@startPage}%
1699 \thispagestyle{firstpagestyle}%
1701 \ifcase\ACM@format@nr
1709 \twocolumn[\box\mktitle@bx]%
1711 \twocolumn[\box\mktitle@bx]%
1713 \twocolumn[\box\mktitle@bx]%
1715 \twocolumn[\box\mktitle@bx]%
1717 \twocolumn[\box\mktitle@bx]%
1719 \par\box\mktitle@bx\par\bigskip
1721 \marginpar{\noindent
1722 \ifx\@acmBadgeL@image\@empty\else
1723 \href{\@acmBadgeL@url}{%
1724 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
1725 \hskip\@ACM@badge@skip
1727 \ifx\@acmBadgeR@image\@empty\else
1728 \href{\@acmBadgeR@url}{%
1729 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
1735 \ifcase\ACM@format@nr
1757 \ifcase\ACM@format@nr
1759 \LARGE\sffamily\bfseries
1761 \LARGE\sffamily\bfseries
1763 \LARGE\sffamily\bfseries
1767 \Huge\sffamily\bfseries
1769 \Huge\sffamily\bfseries
1773 \Huge\sffamily\bfseries
1777 \def\@subtitlefont{\normalsize
1778 \ifcase\ACM@format@nr
1798 \def\@mktitle@i{\hsize=\textwidth
1799 \@ACM@title@width=\hsize
1800 \ifx\@acmBadgeL@image\@empty\else
1801 \advance\@ACM@title@width by -\@ACM@badge@width
1802 \advance\@ACM@title@width by -\@ACM@badge@skip
1804 \ifx\@acmBadgeR@image\@empty\else
1805 \advance\@ACM@title@width by -\@ACM@badge@width
1806 \advance\@ACM@title@width by -\@ACM@badge@skip
1808 \setbox\mktitle@bx=\vbox{\noindent\@titlefont
1809 \ifx\@acmBadgeL@image\@empty\else
1810 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
1811 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
1812 \hskip\@ACM@badge@skip
1814 \parbox[t]{\@ACM@title@width}{\raggedright
1815 \@titlefont\noindent
1817 \ifx\@subtitle\@empty\else
1818 \par\noindent{\@subtitlefont\@subtitle}
1820 \ifx\@acmBadgeR@image\@empty\else
1821 \hskip\@ACM@badge@skip
1822 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
1823 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
1826 \def\@mktitle@iii{\hsize=\textwidth
1827 \setbox\mktitle@bx=\vbox{\@titlefont\centering
1828 \@ACM@title@width=\hsize
1830 \advance\@ACM@title@width by -2\@ACM@badge@width
1831 \advance\@ACM@title@width by -2\@ACM@badge@skip
1832 \parbox[b]{\@ACM@badge@width}{\strut
1833 \ifx\@acmBadgeL@image\@empty\else
1834 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
1835 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
1837 \hskip\@ACM@badge@skip
1839 \parbox[t]{\@ACM@title@width}{\centering\@titlefont
1841 \ifx\@subtitle\@empty\else
1842 \par\noindent{\@subtitlefont\@subtitle}
1846 \hskip\@ACM@badge@skip
1847 \parbox[b]{\@ACM@badge@width}{\strut
1848 \ifx\@acmBadgeR@image\@empty\else
1849 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
1850 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
1854 \def\@mktitle@iv{\hsize=\textwidth
1855 \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
1856 \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
1858 \ifx\@subtitle\@empty\else
1859 \par\noindent\@subtitlefont\@subtitle
1862 \newbox\@ACM@commabox
1863 \def\@ACM@addtoaddress#1{%
1865 \if@ACM@affiliation@obeypunctuation\else
1866 \setbox\@ACM@commabox=\hbox{, }%
1867 \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
1870 \def\streetaddress#1{\unskip\ignorespaces}
1871 \def\postcode#1{\unskip\ignorespaces}
1873 \def\position#1{\unskip\ignorespaces}
1874 \def\institution#1{\unskip~#1\ignorespaces}
1875 \def\city#1{\unskip\ignorespaces}
1876 \def\state#1{\unskip\ignorespaces}
1877 \newcommand\department[2][0]{\unskip\ignorespaces}
1878 \def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
1880 \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
1881 \def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
1882 \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
1884 \let\city\@ACM@addtoaddress
1885 \let\state\@ACM@addtoaddress
1886 \let\country\@ACM@addtoaddress
1888 \def\@mkauthors{\begingroup
1890 \ifcase\ACM@format@nr
1912 \def\@authorfont{\Large\sffamily}
1913 \def\@affiliationfont{\normalsize\normalfont}
1914 \ifcase\ACM@format@nr
1917 \def\@authorfont{\large\sffamily}
1918 \def\@affiliationfont{\small\normalfont}
1921 \def\@authorfont{\LARGE\sffamily}
1922 \def\@affiliationfont{\large}
1924 \def\@authorfont{\LARGE}
1925 \def\@affiliationfont{\large}
1927 \def\@authorfont{\normalsize\normalfont}
1928 \def\@affiliationfont{\normalsize\normalfont}
1930 \def\@authorfont{\Large\normalfont}
1931 \def\@affiliationfont{\normalsize\normalfont}
1933 \def\@authorfont{\bfseries}
1934 \def\@affiliationfont{\mdseries}
1936 \def\@authorfont{\bfseries}
1937 \def\@affiliationfont{\mdseries}
1939 \def\@typeset@author@line{%
1940 \andify\@currentauthors\par\noindent
1941 \@currentauthors\def\@currentauthors{}%
1942 \ifx\@currentaffiliations\@empty\else
1943 \andify\@currentaffiliations
1944 \unskip, {\@currentaffiliations}\par
1946 \def\@currentaffiliations{}}
1948 \def\@currentauthors{}%
1949 \def\@currentaffiliations{}%
1950 \global\let\and\@typeset@author@line
1952 \ifx\@currentauthors\@empty
1953 \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}%
1955 \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}%
1959 \def\affiliation##1##2{%
1960 \def\@tempa{##2}\ifx\@tempa\@empty\else
1961 \ifx\@currentaffiliations\@empty
1962 \gdef\@currentaffiliations{%
1963 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1964 \setkeys{@ACM@affiliation@}{##1}%
1965 \@affiliationfont##2}%
1967 \g@addto@macro{\@currentaffiliations}{\and
1968 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
1969 \setkeys{@ACM@affiliation@}{##1}##2}%
1972 \global\let\and\@typeset@author@line}%
1973 \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
1974 \noindent\addresses\@typeset@author@line
1978 \newdimen\author@bx@wd
1979 \newskip\author@bx@sep
1980 \author@bx@sep=1pc\relax
1981 \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd\def\and{\par}%
1982 \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
1983 \@authorfont\@currentauthors\par\@affiliationfont
1984 \@currentaffiliation}\egroup
1985 \box\author@bx\hspace{\author@bx@sep}%
1986 \gdef\@currentauthors{}%
1987 \gdef\@currentaffiliation{}}
1988 \def\@mkauthors@iii{%
1989 \author@bx@wd=\textwidth\relax
1990 \advance\author@bx@wd by -\author@bx@sep\relax
1991 \ifnum\@ACM@authorsperrow>0\relax
1992 \divide\author@bx@wd by \@ACM@authorsperrow\relax
1994 \ifcase\num@authorgroups
1996 \or % 1=one author per row
1997 \or % 2=two authors per row
1998 \divide\author@bx@wd by \num@authorgroups\relax
1999 \or % 3=three authors per row
2000 \divide\author@bx@wd by \num@authorgroups\relax
2001 \or % 4=two authors per row (!)
2002 \divide\author@bx@wd by 2\relax
2003 \else % three authors per row
2004 \divide\author@bx@wd by 3\relax
2007 \advance\author@bx@wd by -\author@bx@sep\relax
2008 \gdef\@currentauthors{}%
2009 \gdef\@currentaffiliation{}%
2010 \def\@author##1{\ifx\@currentauthors\@empty
2011 \gdef\@currentauthors{\par##1}%
2013 \g@addto@macro\@currentauthors{\par##1}%
2016 \def\email##1##2{\ifx\@currentaffiliation\@empty
2017 \gdef\@currentaffiliation{\nolinkurl{##2}}%
2019 \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
2021 \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
2022 \gdef\@currentaffiliation{%
2023 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2024 \setkeys{@ACM@affiliation@}{##1}##2}%
2026 \g@addto@macro\@currentaffiliation{\par
2027 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2028 \setkeys{@ACM@affiliation@}{##1}##2}%
2030 \global\let\and\@typeset@author@bx
2033 \global\setbox\mktitle@bx=\vbox{\noindent
2034 \box\mktitle@bx\par\medskip\leavevmode
2035 \lineskip=1pc\relax\centering\hspace*{-1em}%
2036 \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
2037 \def\@mkauthors@iv{%
2038 \author@bx@wd=\columnwidth\relax
2039 \advance\author@bx@wd by -\author@bx@sep\relax
2040 \ifnum\@ACM@authorsperrow>0\relax
2041 \divide\author@bx@wd by \@ACM@authorsperrow\relax
2043 \ifcase\num@authorgroups
2045 \or % 1=one author per row
2046 \else % 2=two authors per row
2047 \divide\author@bx@wd by 2\relax
2050 \advance\author@bx@wd by -\author@bx@sep\relax
2051 \gdef\@currentauthors{}%
2052 \gdef\@currentaffiliation{}%
2053 \def\@author##1{\ifx\@currentauthors\@empty
2054 \gdef\@currentauthors{\par##1}%
2056 \g@addto@macro\@currentauthors{\par##1}%
2059 \def\email##1##2{\ifx\@currentaffiliation\@empty
2060 \gdef\@currentaffiliation{\nolinkurl{##2}}%
2062 \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}%
2064 \def\affiliation##1##2{\ifx\@currentaffiliation\@empty
2065 \gdef\@currentaffiliation{%
2066 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2067 \setkeys{@ACM@affiliation@}{##1}##2}%
2069 \g@addto@macro\@currentaffiliation{\par
2070 \setkeys{@ACM@affiliation@}{obeypunctuation=false}%
2071 \setkeys{@ACM@affiliation@}{##1}##2}%
2073 \global\let\and\@typeset@author@bx}%
2074 \bgroup\hsize=\columnwidth
2075 \par\raggedright\leftskip=\z@
2076 \lineskip=1pc\noindent
2077 \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
2078 \def\@mkauthorsaddresses{%
2079 \ifnum\num@authors>1\relax
2080 Authors' \else Author's \fi
2081 \ifnum\num@authorgroups>1\relax
2082 addresses: \else address: \fi
2084 \def\streetaddress##1{\unskip\@addpunct, ##1}%
2085 \def\postcode##1{\unskip\@addpunct, ##1}%
2086 \def\position##1{\unskip\ignorespaces}%
2087 \def\institution##1{\unskip\@addpunct, ##1}%
2088 \def\city##1{\unskip\@addpunct, ##1}%
2089 \def\state##1{\unskip\@addpunct, ##1}%
2090 \renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
2091 \def\country##1{\unskip\@addpunct, ##1}%
2092 \def\and{\unskip\@addpunct; }%
2093 \def\@author##1{##1}%
2094 \def\email##1##2{\unskip\@addpunct, \nolinkurl{##2}}%
2097 \def\@setaddresses{}
2098 \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
2099 \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
2101 \ifx\@teaserfigures\@empty\else
2102 \def\@teaser##1{\par\bigskip\bgroup
2103 \captionsetup{type=figure}##1\egroup\par}
2104 \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
2105 \noindent\@teaserfigures\par\medskip}%
2107 \def\@mkabstract{\bgroup
2108 \ifx\@abstract\@lempty\else
2109 {\phantomsection\addcontentsline{toc}{section}{Abstract}%
2111 \everypar{\setbox\z@\lastbox\everypar{}}\small
2113 \section*{Abstract}%
2115 \ignorespaces\@abstract\par}%
2117 \def\@mkbibcitation{\bgroup
2118 \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
2119 \def\footnotemark{}%
2120 \def\\{\unskip{} \ignorespaces}%
2121 \def\footnote{\ClassError{\@classname}{Please do note use footnotes
2122 inside a \string\title{} or \string\author{} command! Use
2123 \string\titlenote{} or \string\authornote{} instead!}}%
2124 \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
2125 Article~\@acmArticle\ \fi}%
2126 \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
2127 \noindent\authors. \@acmYear. \@title
2128 \ifx\@subtitle\@empty. \else: \@subtitle. \fi
2130 \textit{\@journalNameShort}
2131 \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
2132 \ref{TotPages}~\@pages@word.
2134 In \textit{\@acmBooktitle}%
2135 \ifx\@acmEditors\@empty\textit{.}\else
2136 \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
2138 ACM, New York, NY, USA%
2139 \@article@string\unskip, \ref{TotPages}~\@pages@word.
2141 \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi
2143 \def\@printendtopmatter{\par\bigskip}
2144 \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
2145 \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
2146 \RequirePackage{fancyhdr}
2148 \newsavebox{\ACM@linecount@bx}
2149 \newlength\ACM@linecount@bxht
2150 \newcount\ACM@linecount
2151 \ACM@linecount\@ne\relax
2152 \def\ACM@mk@linecount{%
2153 \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{%
2154 \setlength{\ACM@linecount@bxht}{0pt}%
2155 \loop{\color{red}\scriptsize\the\ACM@linecount}\\
2156 \global\advance\ACM@linecount by \@ne
2157 \addtolength{\ACM@linecount@bxht}{\baselineskip}%
2158 \ifdim\ACM@linecount@bxht<\textheight\repeat
2159 {\color{red}\scriptsize\the\ACM@linecount}\hfill
2160 \global\advance\ACM@linecount by \@ne}}}
2162 \def\ACM@linecountL{%
2165 \begin{picture}(0,0)%
2166 \put(-26,-22){\usebox{\ACM@linecount@bx}}%
2169 \def\ACM@linecountR{%
2172 \begin{picture}(0,0)%
2173 \put(20,-22){\usebox{\ACM@linecount@bx}}%
2177 % Subtracting 30 from \time gives us the effect of rounding down despite
2178 % \numexpr rounding to nearest
2179 \newcounter{ACM@time@hours}
2180 \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
2181 \newcounter{ACM@time@minutes}
2182 \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
2183 \newcommand\ACM@timestamp{%
2185 \ifx\@acmSubmissionID\@empty\relax\else
2186 Submission ID: \@acmSubmissionID.{ }%
2188 \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
2189 \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }%
2190 Page \thepage\ of \@startPage--\pageref*{TotPages}.%
2193 \def\@shortauthors{\if@ACM@anonymous Anon.\else\shortauthors\fi}
2194 \def\@headfootfont{\sffamily}
2195 \fancypagestyle{standardpagestyle}{%
2197 \renewcommand{\headrulewidth}{\z@}%
2198 \renewcommand{\footrulewidth}{\z@}%
2199 \ifcase\ACM@format@nr
2201 \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}%
2202 \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
2203 \fancyhead[RE]{\@shortauthors}%
2204 \fancyhead[LO]{\ACM@linecountL\shorttitle}%
2205 \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
2207 \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
2208 \fancyhead[RO]{\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
2209 \fancyhead[RE]{\@headfootfont\@shortauthors}%
2210 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2211 \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2212 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2214 \fancyhead[LE]{\ACM@linecountL\@headfootfont
2215 \@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}%
2216 \fancyhead[LO]{\ACM@linecountL}%
2217 \fancyhead[RO]{\@headfootfont
2218 \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi}%
2219 \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2220 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2222 \fancyhead[LE]{\ACM@linecountL\@headfootfont
2223 \@acmArticle\if@ACM@printfolios:\thepage\fi\quad\textbullet\quad\@shortauthors}%
2224 \fancyhead[LO]{\ACM@linecountL}%
2225 \fancyhead[RE]{\ACM@linecountR}%
2226 \fancyhead[RO]{\@headfootfont
2227 \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi\ACM@linecountR}%
2228 \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2229 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
2231 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
2232 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}%
2233 \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}%
2234 \fancyhead[LE]{\ACM@linecountL\@headfootfont\acmConference@shortname,
2235 \acmConference@date, \acmConference@venue}%
2236 \fancyhead[RO]{\@headfootfont\acmConference@shortname,
2237 \acmConference@date, \acmConference@venue\ACM@linecountR}%
2240 \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
2243 \fancyfoot[LO,RE]{\ACM@timestamp}
2246 \pagestyle{standardpagestyle}
2251 \newdimen\@folio@voffset
2254 \ifcase\ACM@format@nr
2257 \@folio@wd=45.75pt\relax
2258 \@folio@ht=1.25in\relax
2259 \@folio@voffset=.2in\relax
2262 \@folio@wd=43.25pt\relax
2263 \@folio@ht=79pt\relax
2264 \@folio@voffset=.55in\relax
2267 \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
2268 \ifnum\@tempcnta=0\relax\else
2270 \ifnum\@tempcnta>\@folio@max\relax
2271 \advance\@tempcnta by - \@folio@max
2273 \advance\@tempcnta by -1\relax
2274 \@tempdima=\@folio@ht\relax
2275 \multiply\@tempdima by \the\@tempcnta\relax
2276 \advance\@tempdima by -\@folio@voffset\relax
2277 \begin{picture}(0,0)
2278 \makebox[\z@]{\raisebox{-\@tempdima}{%
2280 \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
2281 \rule{\@folio@wd}{\@folio@ht}}}%
2282 \parbox{\@folio@wd}{%
2284 \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
2287 \fancypagestyle{firstpagestyle}{%
2289 \renewcommand{\headrulewidth}{\z@}%
2290 \renewcommand{\footrulewidth}{\z@}%
2291 \ifcase\ACM@format@nr
2293 \fancyhead[L]{\ACM@linecountL}%
2294 \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}%
2295 \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
2297 \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2298 \@acmNumber, Article \@acmArticle. Publication date:
2300 \fancyhead[LE]{\ACM@linecountL\@folioblob}%
2301 \fancyhead[LO]{\ACM@linecountL}%
2302 \fancyhead[RO]{\@folioblob}%
2303 \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
2305 \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2306 \@acmNumber, Article \@acmArticle. Publication date:
2308 \fancyhead[RO]{\@folioblob}%
2309 \fancyhead[LE]{\ACM@linecountL\@folioblob}%
2310 \fancyhead[LO]{\ACM@linecountL}%
2311 \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
2313 \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
2314 \@acmNumber, Article \@acmArticle. Publication date:
2316 \fancyhead[L]{\ACM@linecountL}%
2317 \fancyhead[R]{\ACM@linecountR}%
2318 \else % Conference proceedings
2319 \fancyhead[L]{\ACM@linecountL}%
2320 \fancyhead[R]{\ACM@linecountR}%
2321 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
2324 \ifnum\ACM@format@nr=0\relax % Manuscript
2325 \fancyfoot[LO,RE]{\ACM@timestamp\quad
2326 \footnotesize Manuscript submitted to ACM}
2328 \fancyfoot[LO,RE]{\ACM@timestamp}
2332 \let\ACM@ps@plain\ps@plain
2333 \let\ACM@ps@myheadings\ps@myheadings
2334 \let\ACM@ps@headings\ps@headings
2335 \def\ACM@restore@pagestyle{%
2336 \let\ps@plain\ACM@ps@plain
2337 \let\ps@myheadings\ACM@ps@myheadings
2338 \let\ps@headings\ACM@ps@headings}
2339 \AtBeginDocument{\ACM@restore@pagestyle}
2340 \renewcommand\section{\@startsection{section}{1}{\z@}%
2341 {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2344 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
2345 {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2348 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
2349 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2351 {\@subsubsecfont\@adddotafter}}
2352 \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
2353 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2355 {\@parfont\@adddotafter}}
2356 \renewcommand\part{\@startsection{part}{9}{\z@}%
2357 {-10\p@ \@plus -4\p@ \@minus -2\p@}%
2360 \def\section@raggedright{\@rightskip\@flushglue
2361 \rightskip\@rightskip
2364 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2365 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2366 \def\@subsubsecfont{\sffamily\itshape}
2367 \def\@parfont{\itshape}
2368 \setcounter{secnumdepth}{3}
2369 \ifcase\ACM@format@nr
2373 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
2374 \def\@subsecfont{\sffamily\large\section@raggedright}
2376 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase}
2377 \def\@subsecfont{\sffamily\large\section@raggedright}
2379 \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
2380 \def\@subsecfont{\bfseries\Large\section@raggedright}
2382 \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
2383 \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
2385 \def\@secfont{\bfseries\Large\section@raggedright}
2386 \def\@subsecfont{\bfseries\section@raggedright}
2387 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
2388 {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2391 \def\@subsubsecfont{\bfseries\section@raggedright}
2392 \renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
2393 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2395 {\@parfont\@addspaceafter}}
2396 \def\@parfont{\bfseries\itshape}
2397 \renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
2398 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
2400 {\@subparfont\@addspaceafter}}
2401 \def\@subparfont{\itshape}
2403 \setcounter{secnumdepth}{1}
2404 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2405 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2407 \setcounter{secnumdepth}{0}
2408 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
2409 \def\@subsecfont{\sffamily\bfseries\section@raggedright}
2411 \def\@adddotafter#1{#1\@addpunct{.}}
2412 \def\@addspaceafter#1{#1\@addpunct{\enspace}}
2413 \providecommand*\@dotsep{4.5}
2414 \def\@acmplainbodyfont{\itshape}
2415 \def\@acmplainindent{\parindent}
2416 \def\@acmplainheadfont{\scshape}
2417 \def\@acmplainnotefont{\@empty}
2418 \ifcase\ACM@format@nr
2426 \def\@acmplainbodyfont{\itshape}
2427 \def\@acmplainindent{\z@}
2428 \def\@acmplainheadfont{\bfseries}
2429 \def\@acmplainnotefont{\normalfont}
2433 \newtheoremstyle{acmplain}%
2434 {.5\baselineskip\@plus.2\baselineskip
2435 \@minus.2\baselineskip}% space above
2436 {.5\baselineskip\@plus.2\baselineskip
2437 \@minus.2\baselineskip}% space below
2438 {\@acmplainbodyfont}% body font
2439 {\@acmplainindent}% indent amount
2440 {\@acmplainheadfont}% head font
2441 {.}% punctuation after head
2442 {.5em}% spacing after head
2443 {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec
2444 \def\@acmdefinitionbodyfont{\normalfont}
2445 \def\@acmdefinitionindent{\parindent}
2446 \def\@acmdefinitionheadfont{\itshape}
2447 \def\@acmdefinitionnotefont{\@empty}
2448 \ifcase\ACM@format@nr
2456 \def\@acmdefinitionbodyfont{\normalfont}
2457 \def\@acmdefinitionindent{\z@}
2458 \def\@acmdefinitionheadfont{\bfseries}
2459 \def\@acmdefinitionnotefont{\normalfont}
2463 \newtheoremstyle{acmdefinition}%
2464 {.5\baselineskip\@plus.2\baselineskip
2465 \@minus.2\baselineskip}% space above
2466 {.5\baselineskip\@plus.2\baselineskip
2467 \@minus.2\baselineskip}% space below
2468 {\@acmdefinitionbodyfont}% body font
2469 {\@acmdefinitionindent}% indent amount
2470 {\@acmdefinitionheadfont}% head font
2471 {.}% punctuation after head
2472 {.5em}% spacing after head
2473 {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
2474 \theoremstyle{acmplain}
2477 \theoremstyle{acmplain}
2478 \@ifundefined{theorem}{%
2479 \newtheorem{theorem}{Theorem}[section]
2481 \@ifundefined{conjecture}{%
2482 \newtheorem{conjecture}[theorem]{Conjecture}
2484 \@ifundefined{proposition}{%
2485 \newtheorem{proposition}[theorem]{Proposition}
2487 \@ifundefined{lemma}{%
2488 \newtheorem{lemma}[theorem]{Lemma}
2490 \@ifundefined{corollary}{%
2491 \newtheorem{corollary}[theorem]{Corollary}
2493 \theoremstyle{acmdefinition}
2494 \@ifundefined{example}{%
2495 \newtheorem{example}[theorem]{Example}
2497 \@ifundefined{definition}{%
2498 \newtheorem{definition}[theorem]{Definition}
2501 \theoremstyle{acmplain}
2503 \def\@proofnamefont{\scshape}
2504 \def\@proofindent{\indent}
2505 \ifcase\ACM@format@nr
2513 \def\@proofnamefont{\itshape}
2514 \def\@proofindent{\noindent}
2518 \renewenvironment{proof}[1][\proofname]{\par
2520 \normalfont \topsep6\p@\@plus6\p@\relax
2522 \item[\@proofindent\hskip\labelsep
2523 {\@proofnamefont #1\@addpunct{.}}]\ignorespaces
2525 \popQED\endtrivlist\@endpefalse
2527 \specialcomment{acks}{%
2529 \section*{Acknowledgments}
2530 \phantomsection\addcontentsline{toc}{section}{Acknowledgments}
2534 \def\grantsponsor#1#2#3{#2}
2535 \newcommand\grantnum[3][]{#3%
2536 \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
2539 \includecomment{screenonly}
2540 \excludecomment{printonly}
2542 \excludecomment{screenonly}
2543 \includecomment{printonly}
2546 \excludecomment{anonsuppress}
2547 \excludecomment{acks}
2549 \includecomment{anonsuppress}
2551 \newcommand\showeprint[2][arxiv]{%
2553 \ifx\@tempa\@empty\def\@tempa{arxiv}\fi
2556 arXiv:\href{http://arxiv.org/abs/#2}{#2}\else arXiv:#2%
2558 \normalsize\normalfont\frenchspacing
2561 %% End of file `acmart.cls'.