acmart.cls (100390B)
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 [2020/11/15 v1.75 Typesetting articles for the Association for Computing Machinery] 41 \def\@classname{acmart} 42 \InputIfFileExists{acmart-preload-hook.tex}{% 43 \ClassWarning{\@classname}{% 44 I am loading acmart-preload-hook.tex. You are fully responsible 45 for any problems from now on.}}{} 46 \RequirePackage{xkeyval} 47 \RequirePackage{xstring} 48 \RequirePackage{iftex} 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}{The option screen can be either true or 72 false}} 73 \ExecuteOptionsX{screen=false} 74 \define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{% 75 \if@ACM@urlbreakonhyphens 76 \PackageInfo{\@classname}{Using breaking urls on hyphens}% 77 \else 78 \PackageInfo{\@classname}{Not breaking urls on hyphens}% 79 \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or 80 false}} 81 \ExecuteOptionsX{urlbreakonhyphens=true} 82 \define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{% 83 \if@ACM@acmthm 84 \PackageInfo{\@classname}{Requiring acmthm}% 85 \else 86 \PackageInfo{\@classname}{Suppressing acmthm}% 87 \fi}{\PackageError{\@classname}{The option acmthm can be either true or 88 false}} 89 \ExecuteOptionsX{acmthm=true} 90 \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{% 91 \if@ACM@review 92 \PackageInfo{\@classname}{Using review mode}% 93 \AtBeginDocument{\@ACM@printfoliostrue}% 94 \else 95 \PackageInfo{\@classname}{Not using review mode}% 96 \fi}{\PackageError{\@classname}{The option review can be either true or 97 false}} 98 \ExecuteOptionsX{review=false} 99 \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{% 100 \if@ACM@authorversion 101 \PackageInfo{\@classname}{Using authorversion mode}% 102 \else 103 \PackageInfo{\@classname}{Not using authorversion mode}% 104 \fi}{\PackageError{\@classname}{The option authorversion can be either true or 105 false}} 106 \ExecuteOptionsX{authorversion=false} 107 \define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{% 108 \if@ACM@nonacm 109 \PackageInfo{\@classname}{Using nonacm mode}% 110 \AtBeginDocument{\@ACM@printacmreffalse}% 111 % in 'nonacm' mode we disable the "ACM Reference Format" 112 % printing by default, but this can be re-enabled by the 113 % user using \settopmatter{printacmref=true} 114 \else 115 \PackageInfo{\@classname}{Not using nonacm mode}% 116 \fi}{\PackageError{\@classname}{The option nonacm can be either true or 117 false}} 118 \ExecuteOptionsX{nonacm=false} 119 \define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{% 120 \PackageError{\@classname}{The option balance can be either true or 121 false}} 122 \ExecuteOptionsX{balance} 123 \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{% 124 \if@ACM@natbib 125 \PackageInfo{\@classname}{Explicitly selecting natbib mode}% 126 \else 127 \PackageInfo{\@classname}{Explicitly deselecting natbib mode}% 128 \fi}{\PackageError{\@classname}{The option natbib can be either true or 129 false}} 130 \ExecuteOptionsX{natbib=true} 131 \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{% 132 \if@ACM@anonymous 133 \PackageInfo{\@classname}{Using anonymous mode}% 134 \else 135 \PackageInfo{\@classname}{Not using anonymous mode}% 136 \fi}{\PackageError{\@classname}{The option anonymous can be either true or 137 false}} 138 \ExecuteOptionsX{anonymous=false} 139 \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{% 140 \if@ACM@timestamp 141 \PackageInfo{\@classname}{Using timestamp mode}% 142 \else 143 \PackageInfo{\@classname}{Not using timestamp mode}% 144 \fi}{\PackageError{\@classname}{The option timestamp can be either true or 145 false}} 146 \ExecuteOptionsX{timestamp=false} 147 \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{% 148 \if@ACM@authordraft 149 \PackageInfo{\@classname}{Using authordraft mode}% 150 \@ACM@timestamptrue 151 \@ACM@reviewtrue 152 \else 153 \PackageInfo{\@classname}{Not using authordraft mode}% 154 \fi}{\PackageError{\@classname}{The option authordraft can be either true or 155 false}} 156 \ExecuteOptionsX{authordraft=false} 157 \def\ACM@fontsize{} 158 \DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}} 159 \DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}} 160 \DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}} 161 \DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}} 162 \DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}} 163 \DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}} 164 \ProcessOptionsX 165 \ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr} 166 \newif\if@ACM@manuscript 167 \newif\if@ACM@journal 168 \newif\if@ACM@journal@bibstrip 169 \newif\if@ACM@sigchiamode 170 \ifnum\ACM@format@nr=5\relax % siggraph 171 \ClassWarning{\@classname}{% 172 The format siggraph is now obsolete.\MessageBreak 173 I am switching to sigconf.} 174 \setkeys{acmart.cls}{format=sigconf} 175 \fi 176 \ifnum\ACM@format@nr=7\relax % sigchi 177 \ClassWarning{\@classname}{% 178 The format sigchi is now obsolete.\MessageBreak 179 I am switching to sigconf.} 180 \setkeys{acmart.cls}{format=sigconf} 181 \fi 182 \ifnum\ACM@format@nr=8\relax % sigchi 183 \ClassWarning{\@classname}{% 184 ACM SIGCHI has retired the SIGCHI-A template\MessageBreak 185 effective immediately. ACM is keeping this template\MessageBreak 186 option available to authors who are working on legacy\MessageBreak 187 documents only. ACM will not, under any circumstances,\MessageBreak 188 accept documents in this format for publication and\MessageBreak 189 will not offer technical support to the authors who use\MessageBreak 190 this template.\MessageBreak 191 ACM SIGCHI is directing Conference leaders and\MessageBreak 192 authors to publish their articles using the SIGCONF\MessageBreak 193 template call.} 194 \fi 195 \ifnum\ACM@format@nr=0\relax 196 \@ACM@manuscripttrue 197 \else 198 \@ACM@manuscriptfalse 199 \fi 200 \@ACM@sigchiamodefalse 201 \ifcase\ACM@format@nr 202 \relax % manuscript 203 \@ACM@journaltrue 204 \or % acmsmall 205 \@ACM@journaltrue 206 \or % acmlarge 207 \@ACM@journaltrue 208 \or % acmtog 209 \@ACM@journaltrue 210 \or % sigconf 211 \@ACM@journalfalse 212 \or % siggraph 213 \@ACM@journalfalse 214 \or % sigplan 215 \@ACM@journalfalse 216 \or % sigchi 217 \@ACM@journalfalse 218 \or % sigchi-a 219 \@ACM@journalfalse 220 \@ACM@sigchiamodetrue 221 \fi 222 \if@ACM@journal 223 \@ACM@journal@bibstriptrue 224 \else 225 \@ACM@journal@bibstripfalse 226 \fi 227 \ifx\ACM@fontsize\@empty 228 \ifcase\ACM@format@nr 229 \relax % manuscript 230 \def\ACM@fontsize{9pt}% 231 \or % acmsmall 232 \def\ACM@fontsize{10pt}% 233 \or % acmlarge 234 \def\ACM@fontsize{10pt}% 235 \or % acmtog 236 \def\ACM@fontsize{9pt}% 237 \or % sigconf 238 \def\ACM@fontsize{9pt}% 239 \or % siggraph 240 \def\ACM@fontsize{9pt}% 241 \or % sigplan 242 \def\ACM@fontsize{10pt}% 243 \or % sigchi 244 \def\ACM@fontsize{9pt}% 245 \or % sigchi-a 246 \def\ACM@fontsize{10pt}% 247 \fi 248 \fi 249 \ClassInfo{\@classname}{Using fontsize \ACM@fontsize} 250 \LoadClass[\ACM@fontsize, reqno]{amsart} 251 \RequirePackage{microtype} 252 \RequirePackage{etoolbox} 253 \RequirePackage{booktabs} 254 \RequirePackage{refcount} 255 \RequirePackage{totpages} 256 \RequirePackage{environ} 257 \if@ACM@manuscript 258 \RequirePackage{setspace} 259 \onehalfspacing 260 \fi 261 \RequirePackage{textcase} 262 \if@ACM@natbib 263 \RequirePackage{natbib} 264 \renewcommand{\bibsection}{% 265 \section*{\refname}% 266 \phantomsection\addcontentsline{toc}{section}{\refname}% 267 } 268 \renewcommand{\bibfont}{\bibliofont} 269 \renewcommand\setcitestyle[1]{ 270 \@for\@tempa:=#1\do 271 {\def\@tempb{round}\ifx\@tempa\@tempb 272 \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi 273 \def\@tempb{square}\ifx\@tempa\@tempb 274 \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi 275 \def\@tempb{angle}\ifx\@tempa\@tempb 276 \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi 277 \def\@tempb{curly}\ifx\@tempa\@tempb 278 \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi 279 \def\@tempb{semicolon}\ifx\@tempa\@tempb 280 \renewcommand\NAT@sep{;}\fi 281 \def\@tempb{colon}\ifx\@tempa\@tempb 282 \renewcommand\NAT@sep{;}\fi 283 \def\@tempb{comma}\ifx\@tempa\@tempb 284 \renewcommand\NAT@sep{,}\fi 285 \def\@tempb{authoryear}\ifx\@tempa\@tempb 286 \NAT@numbersfalse\fi 287 \def\@tempb{numbers}\ifx\@tempa\@tempb 288 \NAT@numberstrue\NAT@superfalse\fi 289 \def\@tempb{super}\ifx\@tempa\@tempb 290 \NAT@numberstrue\NAT@supertrue\fi 291 \def\@tempb{nobibstyle}\ifx\@tempa\@tempb 292 \let\bibstyle=\@gobble\fi 293 \def\@tempb{bibstyle}\ifx\@tempa\@tempb 294 \let\bibstyle=\@citestyle\fi 295 \def\@tempb{sort}\ifx\@tempa\@tempb 296 \def\NAT@sort{\@ne}\fi 297 \def\@tempb{nosort}\ifx\@tempa\@tempb 298 \def\NAT@sort{\z@}\fi 299 \def\@tempb{compress}\ifx\@tempa\@tempb 300 \def\NAT@cmprs{\@ne}\fi 301 \def\@tempb{nocompress}\ifx\@tempa\@tempb 302 \def\NAT@cmprs{\z@}\fi 303 \def\@tempb{sort&compress}\ifx\@tempa\@tempb 304 \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi 305 \def\@tempb{mcite}\ifx\@tempa\@tempb 306 \let\NAT@merge\@ne\fi 307 \def\@tempb{merge}\ifx\@tempa\@tempb 308 \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi 309 \def\@tempb{elide}\ifx\@tempa\@tempb 310 \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi 311 \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb 312 \NAT@longnamestrue\fi 313 \def\@tempb{nonamebreak}\ifx\@tempa\@tempb 314 \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi 315 \expandafter\NAT@find@eq\@tempa=\relax\@nil 316 \if\@tempc\relax\else 317 \expandafter\NAT@rem@eq\@tempc 318 \def\@tempb{open}\ifx\@tempa\@tempb 319 \xdef\NAT@open{\@tempc}\fi 320 \def\@tempb{close}\ifx\@tempa\@tempb 321 \xdef\NAT@close{\@tempc}\fi 322 \def\@tempb{aysep}\ifx\@tempa\@tempb 323 \xdef\NAT@aysep{\@tempc}\fi 324 \def\@tempb{yysep}\ifx\@tempa\@tempb 325 \xdef\NAT@yrsep{\@tempc}\fi 326 \def\@tempb{notesep}\ifx\@tempa\@tempb 327 \xdef\NAT@cmt{\@tempc}\fi 328 \def\@tempb{citesep}\ifx\@tempa\@tempb 329 \xdef\NAT@sep{\@tempc}\fi 330 \fi 331 }% 332 \NAT@@setcites 333 } 334 \renewcommand\citestyle[1]{% 335 \ifcsname bibstyle@#1\endcsname% 336 \csname bibstyle@#1\endcsname\let\bibstyle\@gobble% 337 \else% 338 \@latex@error{Undefined `#1' citestyle}% 339 \fi 340 }% 341 \fi 342 \newcommand{\bibstyle@acmauthoryear}{% 343 \setcitestyle{% 344 authoryear,% 345 open={[},close={]},citesep={;},% 346 aysep={},yysep={,},% 347 notesep={, }}} 348 \newcommand{\bibstyle@acmnumeric}{% 349 \setcitestyle{% 350 numbers,sort&compress,% 351 open={[},close={]},citesep={,},% 352 notesep={, }}} 353 \if@ACM@natbib 354 \citestyle{acmnumeric} 355 \fi 356 \def\@startsection#1#2#3#4#5#6{% 357 \if@noskipsec \leavevmode \fi 358 \par 359 \@tempskipa #4\relax 360 \@afterindenttrue 361 \ifdim \@tempskipa <\z@ 362 \@tempskipa -\@tempskipa \@afterindentfalse 363 \fi 364 \if@nobreak 365 \everypar{}% 366 \else 367 \addpenalty\@secpenalty\addvspace\@tempskipa 368 \fi 369 \@ifstar 370 {\@ssect{#3}{#4}{#5}{#6}}% 371 {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} 372 \def\@sect#1#2#3#4#5#6[#7]#8{% 373 \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}% 374 \ifnum #2>\c@secnumdepth 375 \let\@svsec\@empty 376 \else 377 \refstepcounter{#1}% 378 \protected@edef\@svsec{\@seccntformat{#1}\relax}% 379 \fi 380 \@tempskipa #5\relax 381 \ifdim \@tempskipa>\z@ 382 \begingroup 383 #6{% 384 \@hangfrom{\hskip #3\relax\@svsec}% 385 \interlinepenalty \@M #8\@@par}% 386 \endgroup 387 \csname #1mark\endcsname{#7}% 388 \ifnum #2>\c@secnumdepth \else 389 \@tochangmeasure{\csname the#1\endcsname}% 390 \fi 391 \addcontentsline{toc}{#1}{% 392 \ifnum #2>\c@secnumdepth \else 393 \protect\numberline{\csname the#1\endcsname}% 394 \fi 395 #7}% 396 \else 397 \def\@svsechd{% 398 #6{\hskip #3\relax 399 \@svsec #8}% 400 \csname #1mark\endcsname{#7}% 401 \ifnum #2>\c@secnumdepth \else 402 \@tochangmeasure{\csname the#1\endcsname\space}% 403 \fi 404 \addcontentsline{toc}{#1}{% 405 \ifnum #2>\c@secnumdepth \else 406 \protect\numberline{\csname the#1\endcsname}% 407 \fi 408 #7}}% 409 \fi 410 \@xsect{#5}} 411 \def\@xsect#1{% 412 \@tempskipa #1\relax 413 \ifdim \@tempskipa>\z@ 414 \par \nobreak 415 \vskip \@tempskipa 416 \@afterheading 417 \else 418 \@nobreakfalse 419 \global\@noskipsectrue 420 \everypar{% 421 \if@noskipsec 422 \global\@noskipsecfalse 423 {\setbox\z@\lastbox}% 424 \clubpenalty\@M 425 \begingroup \@svsechd \endgroup 426 \unskip 427 \@tempskipa #1\relax 428 \hskip -\@tempskipa 429 \else 430 \clubpenalty \@clubpenalty 431 \everypar{}% 432 \fi}% 433 \fi 434 \ignorespaces} 435 \def\@seccntformat#1{\csname the#1\endcsname\quad} 436 \def\@ssect#1#2#3#4#5{% 437 \@tempskipa #3\relax 438 \ifdim \@tempskipa>\z@ 439 \begingroup 440 #4{% 441 \@hangfrom{\hskip #1}% 442 \interlinepenalty \@M #5\@@par}% 443 \endgroup 444 \else 445 \def\@svsechd{#4{\hskip #1\relax #5}}% 446 \fi 447 \@xsect{#3}} 448 \def\@starttoc#1#2{\begingroup\makeatletter 449 \setTrue{#1}% 450 \par\removelastskip\vskip\z@skip 451 \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}% 452 {.5\linespacing}{\centering\contentsnamefont}{#2}% 453 \@input{\jobname.#1}% 454 \if@filesw 455 \@xp\newwrite\csname tf@#1\endcsname 456 \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax 457 \fi 458 \global\@nobreakfalse \endgroup 459 \addvspace{32\p@\@plus14\p@}% 460 } 461 \def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}} 462 \def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}} 463 \def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}} 464 \def\@makefntext{\noindent\@makefnmark} 465 \if@ACM@sigchiamode 466 \long\def\@footnotetext#1{\marginpar{% 467 \reset@font\small 468 \interlinepenalty\interfootnotelinepenalty 469 \protected@edef\@currentlabel{% 470 \csname p@footnote\endcsname\@thefnmark 471 }% 472 \color@begingroup 473 \@makefntext{% 474 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% 475 \color@endgroup}}% 476 \fi 477 \long\def\@mpfootnotetext#1{% 478 \global\setbox\@mpfootins\vbox{% 479 \unvbox\@mpfootins 480 \reset@font\footnotesize 481 \hsize\columnwidth 482 \@parboxrestore 483 \protected@edef\@currentlabel 484 {\csname p@mpfootnote\endcsname\@thefnmark}% 485 \color@begingroup\centering 486 \@makefntext{% 487 \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% 488 \color@endgroup}} 489 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} 490 \let\@footnotemark@nolink\@footnotemark 491 \let\@footnotetext@nolink\@footnotetext 492 \RequirePackage[bookmarksnumbered,unicode]{hyperref} 493 \pdfstringdefDisableCommands{% 494 \def\addtocounter#1#2{}% 495 \def\unskip{}% 496 \def\textbullet{- }% 497 \def\textrightarrow{ -> }% 498 \def\footnotemark{}% 499 } 500 \urlstyle{rm} 501 \ifcase\ACM@format@nr 502 \relax % manuscript 503 \or % acmsmall 504 \or % acmlarge 505 \or % acmtog 506 \or % sigconf 507 \or % siggraph 508 \or % sigplan 509 \urlstyle{sf} 510 \or % sigchi 511 \or % sigchi-a 512 \urlstyle{sf} 513 \fi 514 \AtEndPreamble{% 515 \if@ACM@urlbreakonhyphens 516 \def\do@url@hyp{\do\-}% 517 \fi 518 \if@ACM@screen 519 \hypersetup{colorlinks, 520 linkcolor=ACMPurple, 521 citecolor=ACMPurple, 522 urlcolor=ACMDarkBlue, 523 filecolor=ACMDarkBlue} 524 \else 525 \hypersetup{hidelinks} 526 \fi 527 \hypersetup{pdflang={en}, 528 pdfdisplaydoctitle}} 529 \RequirePackage{hyperxmp} 530 \if@ACM@natbib 531 \let\citeN\cite 532 \let\cite\citep 533 \let\citeANP\citeauthor 534 \let\citeNN\citeyearpar 535 \let\citeyearNP\citeyear 536 \let\citeNP\citealt 537 \DeclareRobustCommand\citeA 538 {\begingroup\NAT@swafalse 539 \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}% 540 \providecommand\newblock{}% 541 \else 542 \AtBeginDocument{% 543 \let\shortcite\cite% 544 \providecommand\citename[1]{#1}} 545 \fi 546 \newcommand\shortcite[2][]{% 547 \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi} 548 \def\bibliographystyle#1{% 549 \ifx\@begindocumenthook\@undefined\else 550 \expandafter\AtBeginDocument 551 \fi 552 {\if@filesw 553 \immediate\write\@auxout{\string\bibstyle{#1}}% 554 \fi}} 555 \RequirePackage{graphicx} 556 \RequirePackage[prologue]{xcolor} 557 \definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1} 558 \definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0} 559 \definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01} 560 \definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0} 561 \definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0} 562 \definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19} 563 \definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15} 564 \definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21} 565 \if@ACM@authordraft 566 \RequirePackage{draftwatermark} 567 \SetWatermarkFontSize{0.5in} 568 \SetWatermarkColor[gray]{.9} 569 \SetWatermarkText{\parbox{12em}{\centering 570 Unpublished working draft.\\ 571 Not for distribution.}} 572 \else 573 \if@ACM@sigchiamode 574 \if@ACM@nonacm\else 575 \RequirePackage{draftwatermark} 576 \SetWatermarkFontSize{0.5in} 577 \SetWatermarkColor[gray]{.9} 578 \SetWatermarkText{\parbox{12em}{\centering 579 Legacy document. \\ 580 Not for publication in an ACM venue}} 581 \fi 582 \fi 583 \fi 584 \RequirePackage{geometry} 585 \ifcase\ACM@format@nr 586 \relax % manuscript 587 \geometry{letterpaper,head=13pt, 588 marginparwidth=6pc,heightrounded}% 589 \or % acmsmall 590 \geometry{twoside=true, 591 includeheadfoot, head=13pt, foot=2pc, 592 paperwidth=6.75in, paperheight=10in, 593 top=58pt, bottom=44pt, inner=46pt, outer=46pt, 594 marginparwidth=2pc,heightrounded 595 }% 596 \or % acmlarge 597 \geometry{twoside=true, head=13pt, foot=2pc, 598 paperwidth=8.5in, paperheight=11in, 599 includeheadfoot, 600 top=78pt, bottom=114pt, inner=81pt, outer=81pt, 601 marginparwidth=4pc,heightrounded 602 }% 603 \or % acmtog 604 \geometry{twoside=true, head=13pt, foot=2pc, 605 paperwidth=8.5in, paperheight=11in, 606 includeheadfoot, columnsep=24pt, 607 top=52pt, bottom=75pt, inner=52pt, outer=52pt, 608 marginparwidth=2pc,heightrounded 609 }% 610 \or % sigconf 611 \geometry{twoside=true, head=13pt, 612 paperwidth=8.5in, paperheight=11in, 613 includeheadfoot, columnsep=2pc, 614 top=57pt, bottom=73pt, inner=54pt, outer=54pt, 615 marginparwidth=2pc,heightrounded 616 }% 617 \or % siggraph 618 \geometry{twoside=true, head=13pt, 619 paperwidth=8.5in, paperheight=11in, 620 includeheadfoot, columnsep=2pc, 621 top=57pt, bottom=73pt, inner=54pt, outer=54pt, 622 marginparwidth=2pc,heightrounded 623 }% 624 \or % sigplan 625 \geometry{twoside=true, head=13pt, 626 paperwidth=8.5in, paperheight=11in, 627 includeheadfoot=false, columnsep=2pc, 628 top=1in, bottom=1in, inner=0.75in, outer=0.75in, 629 marginparwidth=2pc,heightrounded 630 }% 631 \or % sigchi 632 \geometry{twoside=true, head=13pt, 633 paperwidth=8.5in, paperheight=11in, 634 includeheadfoot, columnsep=2pc, 635 top=66pt, bottom=73pt, inner=54pt, outer=54pt, 636 marginparwidth=2pc,heightrounded 637 }% 638 \or % sigchi-a 639 \geometry{twoside=false, head=13pt, 640 paperwidth=11in, paperheight=8.5in, 641 includeheadfoot, marginparsep=72pt, 642 marginparwidth=170pt, columnsep=20pt, 643 top=72pt, bottom=72pt, left=314pt, right=72pt 644 }% 645 \@mparswitchfalse 646 \reversemarginpar 647 \fi 648 \setlength\parindent{10\p@} 649 \setlength\parskip{\z@} 650 \ifcase\ACM@format@nr 651 \relax % manuscript 652 \or % acmsmall 653 \or % acmlarge 654 \or % acmtog 655 \setlength\parindent{9\p@}% 656 \or % sigconf 657 \or % siggraph 658 \or % sigplan 659 \or % sigchi 660 \or % sigchi-a 661 \fi 662 \setlength\normalparindent{\parindent} 663 \def\copyrightpermissionfootnoterule{\kern-3\p@ 664 \hrule \@width \columnwidth \kern 2.6\p@} 665 \RequirePackage{manyfoot} 666 \SelectFootnoteRule[2]{copyrightpermission} 667 \DeclareNewFootnote{authorsaddresses} 668 \SelectFootnoteRule[2]{copyrightpermission} 669 \DeclareNewFootnote{copyrightpermission} 670 \def\footnoterule{\kern-3\p@ 671 \hrule \@width 4pc \kern 2.6\p@} 672 \def\endminipage{% 673 \par 674 \unskip 675 \ifvoid\@mpfootins\else 676 \vskip\skip\@mpfootins 677 \normalcolor 678 \unvbox\@mpfootins 679 \fi 680 \@minipagefalse 681 \color@endgroup 682 \egroup 683 \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}} 684 \def\@textbottom{\vskip \z@ \@plus 1pt} 685 \let\@texttop\relax 686 \ifcase\ACM@format@nr 687 \relax % manuscript 688 \or % acmsmall 689 \or % acmlarge 690 \or % acmtog 691 \flushbottom 692 \or % sigconf 693 \flushbottom 694 \or % siggraph 695 \flushbottom 696 \or % sigplan 697 \flushbottom 698 \or % sigchi 699 \flushbottom 700 \or % sigchi-a 701 \fi 702 \ifPDFTeX 703 \input{glyphtounicode} 704 \pdfglyphtounicode{f_f}{FB00} 705 \pdfglyphtounicode{f_f_i}{FB03} 706 \pdfglyphtounicode{f_f_l}{FB04} 707 \pdfglyphtounicode{f_i}{FB01} 708 \pdfglyphtounicode{t_t}{0074 0074} 709 \pdfglyphtounicode{f_t}{0066 0074} 710 \pdfglyphtounicode{T_h}{0054 0068} 711 \pdfgentounicode=1 712 \RequirePackage{cmap} 713 \fi 714 \newif\if@ACM@newfonts 715 \@ACM@newfontstrue 716 \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not 717 have the libertine package installed. Please upgrade your 718 TeX}\@ACM@newfontsfalse} 719 \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not 720 have the inconsolata (zi4.sty) package installed. Please upgrade your 721 TeX}\@ACM@newfontsfalse} 722 \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not 723 have the newtxmath package installed. Please upgrade your 724 TeX}\@ACM@newfontsfalse} 725 \if@ACM@newfonts 726 \RequirePackage[T1]{fontenc} 727 % Note that the order in which packages are loaded matters, 728 % and the correct order depends on the LaTeX engine used. 729 % See https://github.com/borisveytsman/acmart/issues/402 730 % and https://github.com/borisveytsman/acmart/issues/410 731 \ifxetex 732 \RequirePackage[libertine]{newtxmath} 733 \RequirePackage[tt=false]{libertine} 734 \setmonofont[StylisticSet=3]{inconsolata} 735 \else 736 \ifluatex 737 \RequirePackage[libertine]{newtxmath} 738 \RequirePackage[tt=false]{libertine} 739 \setmonofont[StylisticSet=3]{inconsolata} 740 \else 741 \RequirePackage[tt=false, type1=true]{libertine} 742 \RequirePackage[varqu]{zi4} 743 \RequirePackage[libertine]{newtxmath} 744 \fi 745 \fi 746 \fi 747 \let\liningnums\@undefined 748 \AtEndPreamble{% 749 \DeclareTextFontCommand{\liningnums}{\libertineLF}} 750 \if@ACM@sigchiamode 751 \renewcommand{\familydefault}{\sfdefault} 752 \fi 753 \newif\if@Description@present 754 \@Description@presenttrue 755 \newif\if@undescribed@images 756 \@undescribed@imagesfalse 757 \newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces} 758 \AtEndDocument{\if@undescribed@images 759 \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi} 760 \AtBeginEnvironment{figure}{\@Description@presentfalse 761 \let\@vspace\@vspace@orig 762 \let\@vspacer\@vspacer@orig} 763 \AtBeginEnvironment{figure*}{\@Description@presentfalse 764 \let\@vspace\@vspace@orig 765 \let\@vspacer\@vspacer@orig} 766 \AtEndEnvironment{figure}{\if@Description@present\else 767 \global\@undescribed@imagestrue 768 \ClassWarning{\@classname}{A possible image without description}\fi} 769 \AtEndEnvironment{figure*}{\if@Description@present\else 770 \global\@undescribed@imagestrue 771 \ClassWarning{\@classname}{A possible image without description}\fi} 772 \AtBeginEnvironment{table}{\let\@vspace\@vspace@orig 773 \let\@vspacer\@vspacer@orig} 774 \AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig 775 \let\@vspacer\@vspacer@orig} 776 \AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig 777 \let\@vspacer\@vspacer@orig} 778 \AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig 779 \let\@vspacer\@vspacer@orig} 780 \AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig 781 \let\@vspacer\@vspacer@orig} 782 \AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig 783 \let\@vspacer\@vspacer@orig} 784 \AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig 785 \let\@vspacer\@vspacer@orig} 786 \AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig 787 \let\@vspacer\@vspacer@orig} 788 \AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig 789 \let\@vspacer\@vspacer@orig} 790 \AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig 791 \let\@vspacer\@vspacer@orig} 792 793 \RequirePackage{caption, float} 794 \captionsetup[table]{position=top} 795 \if@ACM@journal 796 \captionsetup{labelfont={sf, small}, 797 textfont={sf, small}, margin=\z@} 798 \captionsetup[figure]{name={Fig.}} 799 \else 800 \captionsetup{labelfont={bf}, 801 textfont={bf}, labelsep=colon, margin=\z@} 802 \ifcase\ACM@format@nr 803 \relax % manuscript 804 \or % acmsmall 805 \or % acmlarge 806 \or % acmtog 807 \or % sigconf 808 \or % siggraph 809 \captionsetup{textfont={it}} 810 \or % sigplan 811 \captionsetup{labelfont={bf}, 812 textfont={normalfont}, labelsep=period, margin=\z@} 813 \or % sigchi 814 \captionsetup[figure]{labelfont={bf, small}, 815 textfont={bf, small}} 816 \captionsetup[table]{labelfont={bf, small}, 817 textfont={bf, small}} 818 \or % sigchi-a 819 \captionsetup[figure]{labelfont={bf, small}, 820 textfont={bf, small}} 821 \captionsetup[table]{labelfont={bf, small}, 822 textfont={bf, small}} 823 \fi 824 \fi 825 \newfloat{sidebar}{}{sbar} 826 \floatname{sidebar}{Sidebar} 827 \renewenvironment{sidebar}{\Collect@Body\@sidebar}{} 828 \long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig 829 \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}% 830 \marginpar{\small#1}\egroup} 831 \newenvironment{marginfigure}{\Collect@Body\@marginfigure}{} 832 \long\def\@marginfigure#1{\bgroup 833 \let\@vspace\@vspace@orig 834 \let\@vspacer\@vspacer@orig 835 \captionsetup{type=figure}% 836 \marginpar{\@Description@presentfalse\centering 837 \small#1\if@Description@present\else 838 \global\@undescribed@imagestrue 839 \ClassWarning{\@classname}{A possible image without description} 840 \fi}% 841 \egroup} 842 \newenvironment{margintable}{\Collect@Body\@margintable}{} 843 \long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig 844 \let\@vspacer\@vspacer@orig\captionsetup{type=table}% 845 \marginpar{\centering\small#1}\egroup} 846 \newdimen\fulltextwidth 847 \fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep) 848 \if@ACM@sigchiamode 849 \def\@dblfloat{\bgroup\let\@vspace\@vspace@orig 850 \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth 851 \let\@endfloatbox\@endwidefloatbox 852 \def\@fpsadddefault{\def\@fps{tp}}% 853 \@float} 854 \fi 855 \if@ACM@sigchiamode 856 \def\end@dblfloat{% 857 \end@float\egroup} 858 \fi 859 \def\@endwidefloatbox{% 860 \par\vskip\z@skip 861 \@minipagefalse 862 \outer@nobreak 863 \egroup 864 \color@endbox 865 \global\setbox\@currbox=\vbox{\moveleft 866 \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}% 867 \wd\@currbox=\textwidth 868 } 869 \ifcase\ACM@format@nr 870 \relax % manuscript 871 \or % acmsmall 872 \or % acmlarge 873 \or % acmtog 874 \or % sigconf 875 \or % siggraph 876 \or % sigplan 877 \def\labelenumi{\theenumi.} 878 \def\labelenumii{\theenumii.} 879 \def\labelenumiii{\theenumiii.} 880 \def\labelenumiv{\theenumiv.} 881 \or % sigchi 882 \or % sigchi-a 883 \fi 884 \newdimen\@ACM@labelwidth 885 \AtBeginDocument{% 886 \setlength\labelsep{4pt} 887 \setlength{\@ACM@labelwidth}{6.5pt} 888 889 %% First-level list: when beginning after the first line of an 890 %% indented paragraph or ending before an indented paragraph, labels 891 %% should not hang to the left of the preceding/following text. 892 \setlength\leftmargini{\z@} 893 \addtolength\leftmargini{\parindent} 894 \addtolength\leftmargini{2\labelsep} 895 \addtolength\leftmargini{\@ACM@labelwidth} 896 897 %% Second-level and higher lists. 898 \setlength\leftmarginii{\z@} 899 \addtolength\leftmarginii{0.5\labelsep} 900 \addtolength\leftmarginii{\@ACM@labelwidth} 901 \setlength\leftmarginiii{\leftmarginii} 902 \setlength\leftmarginiv{\leftmarginiii} 903 \setlength\leftmarginv{\leftmarginiv} 904 \setlength\leftmarginvi{\leftmarginv} 905 \@listi} 906 \newskip\listisep 907 \listisep\smallskipamount 908 \def\@listI{\leftmargin\leftmargini 909 \labelwidth\leftmargini \advance\labelwidth-\labelsep 910 \listparindent\z@ 911 \topsep\listisep} 912 \let\@listi\@listI 913 \def\@listii{\leftmargin\leftmarginii 914 \labelwidth\leftmarginii \advance\labelwidth-\labelsep 915 \topsep\z@skip} 916 \def\@listiii{\leftmargin\leftmarginiii 917 \labelwidth\leftmarginiii \advance\labelwidth-\labelsep} 918 \def\@listiv{\leftmargin\leftmarginiv 919 \labelwidth\leftmarginiv \advance\labelwidth-\labelsep} 920 \def\@listv{\leftmargin\leftmarginv 921 \labelwidth\leftmarginv \advance\labelwidth-\labelsep} 922 \def\@listvi{\leftmargin\leftmarginvi 923 \labelwidth\leftmarginvi \advance\labelwidth-\labelsep} 924 \renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1} 925 \renewenvironment{description}{\list{}{% 926 \labelwidth\@ACM@labelwidth 927 \let\makelabel\descriptionlabel}% 928 }{ 929 \endlist 930 } 931 \let\enddescription=\endlist % for efficiency 932 \newif\if@ACM@maketitle@typeset 933 \@ACM@maketitle@typesetfalse 934 \define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{% 935 CIE,% 936 CSUR,% 937 DGOV,% 938 DTRAP,% 939 HEALTH,% 940 IMWUT,% 941 JACM,% 942 JDIQ,% 943 JEA,% 944 JERIC,% 945 JETC,% 946 JOCCH,% 947 PACMCGIT,% 948 PACMHCI,% 949 PACMPL,% 950 POMACS,% 951 TAAS,% 952 TACCESS,% 953 TACO,% 954 TALG,% 955 TALLIP,% 956 TAP,% 957 TCPS,% 958 TDS,% 959 TEAC,% 960 TECS,% 961 TELO,% 962 THRI,% 963 TIIS,% 964 TIOT,% 965 TISSEC,% 966 TIST,% 967 TKDD,% 968 TMIS,% 969 TOCE,% 970 TOCHI,% 971 TOCL,% 972 TOCS,% 973 TOCT,% 974 TODAES,% 975 TODS,% 976 TOG,% 977 TOIS,% 978 TOIT,% 979 TOMACS,% 980 TOMM,% 981 TOMPECS,% 982 TOMS,% 983 TOPC,% 984 TOPS,% 985 TOPLAS,% 986 TOS,% 987 TOSEM,% 988 TOSN,% 989 TQC,% 990 TRETS,% 991 TSAS,% 992 TSC,% 993 TSLP,% 994 TWEB,% 995 FACMP% 996 }{% 997 \ifcase\@journalCode@nr 998 \relax % CIE 999 \def\@journalName{ACM Computers in Entertainment}% 1000 \def\@journalNameShort{ACM Comput. Entertain.}% 1001 \def\@permissionCodeOne{1544-3574}% 1002 \or % CSUR 1003 \def\@journalName{ACM Computing Surveys}% 1004 \def\@journalNameShort{ACM Comput. Surv.}% 1005 \def\@permissionCodeOne{0360-0300}% 1006 \or % DGOV 1007 \def\@journalName{Digital Government: Research and Practice}% 1008 \def\@journalNameShort{Digit. Gov. Res. Pract.}% 1009 \def\@permissionCodeOne{2639-0175}% 1010 \or % DTRAP 1011 \def\@journalName{Digital Threats: Research and Practice}% 1012 \def\@journalNameShort{Digit. Threat. Res. Pract.}% 1013 \def\@permissionCodeOne{2576-5337}% 1014 \or % HEALTH 1015 \def\@journalName{ACM Transactions on Computing for Healthcare}% 1016 \def\@journalNameShort{ACM Trans. Comput. Healthcare}% 1017 \def\@permissionCodeOne{2637-8051}% 1018 \or % IMWUT 1019 \def\@journalName{Proceedings of the ACM on Interactive, Mobile, 1020 Wearable and Ubiquitous Technologies}% 1021 \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}% 1022 \def\@permissionCodeOne{2474-9567}% 1023 \@ACM@screentrue 1024 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% 1025 \or % JACM 1026 \def\@journalName{Journal of the ACM}% 1027 \def\@journalNameShort{J. ACM}% 1028 \def\@permissionCodeOne{0004-5411}% 1029 \or % JDIQ 1030 \def\@journalName{ACM Journal of Data and Information Quality}% 1031 \def\@journalNameShort{ACM J. Data Inform. Quality}% 1032 \def\@permissionCodeOne{1936-1955}% 1033 \or % JEA 1034 \def\@journalName{ACM Journal of Experimental Algorithmics}% 1035 \def\@journalNameShort{ACM J. Exp. Algor.}% 1036 \def\@permissionCodeOne{1084-6654}% 1037 \or % JERIC 1038 \def\@journalName{ACM Journal of Educational Resources in Computing}% 1039 \def\@journalNameShort{ACM J. Edu. Resources in Comput.}% 1040 \def\@permissionCodeOne{1073-0516}% 1041 \or % JETC 1042 \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}% 1043 \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}% 1044 \def\@permissionCodeOne{1550-4832}% 1045 \or % JOCCH 1046 \def\@journalName{ACM Journal on Computing and Cultural Heritage}% 1047 \def\@journalNameShort{ACM J. Comput. Cult. Herit.}% 1048 \or % PACMCGIT 1049 \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}% 1050 \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}% 1051 \def\@permissionCodeOne{2577-6193}% 1052 \@ACM@screentrue 1053 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% 1054 \or % PACMHCI 1055 \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}% 1056 \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}% 1057 \def\@permissionCodeOne{2573-0142}% 1058 \@ACM@screentrue 1059 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% 1060 \or % PACMPL 1061 \def\@journalName{Proceedings of the ACM on Programming Languages}% 1062 \def\@journalNameShort{Proc. ACM Program. Lang.}% 1063 \def\@permissionCodeOne{2475-1421}% 1064 \@ACM@screentrue 1065 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% 1066 \or % POMACS 1067 \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}% 1068 \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}% 1069 \def\@permissionCodeOne{2476-1249}% 1070 \@ACM@screentrue 1071 \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% 1072 \or % TAAS 1073 \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}% 1074 \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}% 1075 \def\@permissionCodeOne{1556-4665}% 1076 \or % TACCESS 1077 \def\@journalName{ACM Transactions on Accessible Computing}% 1078 \def\@journalNameShort{ACM Trans. Access. Comput.}% 1079 \def\@permissionCodeOne{1936-7228}% 1080 \or % TACO 1081 \def\@journalName{ACM Transactions on Architecture and Code Optimization}% 1082 \def\@journalNameShort{ACM Trans. Arch. Code Optim.}% 1083 \or % TALG 1084 \def\@journalName{ACM Transactions on Algorithms}% 1085 \def\@journalNameShort{ACM Trans. Algor.}% 1086 \def\@permissionCodeOne{1549-6325}% 1087 \or % TALLIP 1088 \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}% 1089 \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}% 1090 \def\@permissionCodeOne{2375-4699}% 1091 \or % TAP 1092 \def\@journalName{ACM Transactions on Applied Perception}% 1093 \or % TCPS 1094 \def\@journalName{ACM Transactions on Cyber-Physical Systems}% 1095 \or % TDS 1096 \def\@journalName{ACM/IMS Transactions on Data Science}% 1097 \def\@journalNameShort{ACM/IMS Trans. Data Sci.}% 1098 \def\@permissionCodeOne{2577-3224}% 1099 \or % TEAC 1100 \def\@journalName{ACM Transactions on Economics and Computation}% 1101 \or % TECS 1102 \def\@journalName{ACM Transactions on Embedded Computing Systems}% 1103 \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}% 1104 \def\@permissionCodeOne{1539-9087}% 1105 \or % TELO 1106 \def\@journalName{ACM Transactions on Evolutionary Learning}% 1107 \def\@journalNameShort{ACM Trans. Evol. Learn.}% 1108 \def\@permissionCodeOne{2688-3007}% 1109 \or % THRI 1110 \def\@journalName{ACM Transactions on Human-Robot Interaction}% 1111 \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}% 1112 \def\@permissionCodeOne{2573-9522}% 1113 \or % TIIS 1114 \def\@journalName{ACM Transactions on Interactive Intelligent Systems}% 1115 \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}% 1116 \def\@permissionCodeOne{2160-6455}% 1117 \or % TIOT 1118 \def\@journalName{ACM Transactions on Internet of Things}% 1119 \def\@journalNameShort{ACM Trans. Internet Things}% 1120 \def\@permissionCodeOne{2577-6207}% 1121 \or % TISSEC 1122 \def\@journalName{ACM Transactions on Information and System Security}% 1123 \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}% 1124 \def\@permissionCodeOne{1094-9224}% 1125 \or % TIST 1126 \def\@journalName{ACM Transactions on Intelligent Systems and Technology}% 1127 \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}% 1128 \def\@permissionCodeOne{2157-6904}% 1129 \or % TKDD 1130 \def\@journalName{ACM Transactions on Knowledge Discovery from Data}% 1131 \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}% 1132 \def\@permissionCodeOne{1556-4681}% 1133 \or % TMIS 1134 \def\@journalName{ACM Transactions on Management Information Systems}% 1135 \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}% 1136 \def\@permissionCodeOne{2158-656X}% 1137 \or % TOCE 1138 \def\@journalName{ACM Transactions on Computing Education}% 1139 \def\@journalNameShort{ACM Trans. Comput. Educ.}% 1140 \def\@permissionCodeOne{1946-6226}% 1141 \or % TOCHI 1142 \def\@journalName{ACM Transactions on Computer-Human Interaction}% 1143 \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}% 1144 \def\@permissionCodeOne{1073-0516}% 1145 \or % TOCL 1146 \def\@journalName{ACM Transactions on Computational Logic}% 1147 \def\@journalNameShort{ACM Trans. Comput. Logic}% 1148 \def\@permissionCodeOne{1529-3785}% 1149 \or % TOCS 1150 \def\@journalName{ACM Transactions on Computer Systems}% 1151 \def\@journalNameShort{ACM Trans. Comput. Syst.}% 1152 \def\@permissionCodeOne{0734-2071}% 1153 \or % TOCT 1154 \def\@journalName{ACM Transactions on Computation Theory}% 1155 \def\@journalNameShort{ACM Trans. Comput. Theory}% 1156 \def\@permissionCodeOne{1942-3454}% 1157 \or % TODAES 1158 \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}% 1159 \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}% 1160 \def\@permissionCodeOne{1084-4309}% 1161 \or % TODS 1162 \def\@journalName{ACM Transactions on Database Systems}% 1163 \def\@journalNameShort{ACM Trans. Datab. Syst.}% 1164 \def\@permissionCodeOne{0362-5915}% 1165 \or % TOG 1166 \def\@journalName{ACM Transactions on Graphics}% 1167 \def\@journalNameShort{ACM Trans. Graph.}% 1168 \def\@permissionCodeOne{0730-0301} 1169 \or % TOIS 1170 \def\@journalName{ACM Transactions on Information Systems}% 1171 \def\@permissionCodeOne{1046-8188}% 1172 \or % TOIT 1173 \def\@journalName{ACM Transactions on Internet Technology}% 1174 \def\@journalNameShort{ACM Trans. Internet Technol.}% 1175 \def\@permissionCodeOne{1533-5399}% 1176 \or % TOMACS 1177 \def\@journalName{ACM Transactions on Modeling and Computer Simulation}% 1178 \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}% 1179 \or % TOMM 1180 \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}% 1181 \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}% 1182 \def\@permissionCodeOne{1551-6857}% 1183 \def\@permissionCodeTwo{0100}% 1184 \or % TOMPECS 1185 \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}% 1186 \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}% 1187 \def\@permissionCodeOne{2376-3639}% 1188 \or % TOMS 1189 \def\@journalName{ACM Transactions on Mathematical Software}% 1190 \def\@journalNameShort{ACM Trans. Math. Softw.}% 1191 \def\@permissionCodeOne{0098-3500}% 1192 \or % TOPC 1193 \def\@journalName{ACM Transactions on Parallel Computing}% 1194 \def\@journalNameShort{ACM Trans. Parallel Comput.}% 1195 \def\@permissionCodeOne{1539-9087}% 1196 \or % TOPS 1197 \def\@journalName{ACM Transactions on Privacy and Security}% 1198 \def\@journalNameShort{ACM Trans. Priv. Sec.}% 1199 \def\@permissionCodeOne{2471-2566}% 1200 \or % TOPLAS 1201 \def\@journalName{ACM Transactions on Programming Languages and Systems}% 1202 \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}% 1203 \def\@permissionCodeOne{0164-0925}% 1204 \or % TOS 1205 \def\@journalName{ACM Transactions on Storage}% 1206 \def\@journalNameShort{ACM Trans. Storage}% 1207 \def\@permissionCodeOne{1553-3077}% 1208 \or % TOSEM 1209 \def\@journalName{ACM Transactions on Software Engineering and Methodology}% 1210 \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}% 1211 \def\@permissionCodeOne{1049-331X}% 1212 \or % TOSN 1213 \def\@journalName{ACM Transactions on Sensor Networks}% 1214 \def\@journalNameShort{ACM Trans. Sensor Netw.}% 1215 \def\@permissionCodeOne{1550-4859}% 1216 \or % TQC 1217 \def\@journalName{ACM Transactions on Quantum Computing}% 1218 \def\@journalNameShort{ACM Trans. Quantum Comput.}% 1219 \def\@permissionCodeOne{2643-6817}% 1220 \or % TRETS 1221 \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}% 1222 \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}% 1223 \def\@permissionCodeOne{1936-7406}% 1224 \or % TSAS 1225 \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}% 1226 \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}% 1227 \def\@permissionCodeOne{2374-0353}% 1228 \or % TSC 1229 \def\@journalName{ACM Transactions on Social Computing}% 1230 \def\@journalNameShort{ACM Trans. Soc. Comput.}% 1231 \def\@permissionCodeOne{2469-7818}% 1232 \or % TSLP 1233 \def\@journalName{ACM Transactions on Speech and Language Processing}% 1234 \def\@journalNameShort{ACM Trans. Speech Lang. Process.}% 1235 \def\@permissionCodeOne{1550-4875}% 1236 \or % TWEB 1237 \def\@journalName{ACM Transactions on the Web}% 1238 \def\@journalNameShort{ACM Trans. Web}% 1239 \def\@permissionCodeOne{1559-1131}% 1240 \else % FACMP, a dummy journal 1241 \def\@journalName{Forthcoming ACM Publication}% 1242 \def\@journalNameShort{ACM Forthcoming}% 1243 \def\@permissionCodeOne{XXXX-XXXX}% 1244 \fi 1245 \ClassInfo{\@classname}{Using journal code \@journalCode}% 1246 }{% 1247 \ClassError{\@classname}{Incorrect journal #1}% 1248 }% 1249 \def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}% 1250 \global\@ACM@journal@bibstriptrue} 1251 \def\@journalCode@nr{0} 1252 \def\@journalName{}% 1253 \def\@journalNameShort{\@journalName}% 1254 \def\@permissionCodeOne{XXXX-XXXX}% 1255 \def\@permissionCodeTwo{}% 1256 \newcommand\acmConference[4][]{% 1257 \gdef\acmConference@shortname{#1}% 1258 \gdef\acmConference@name{#2}% 1259 \gdef\acmConference@date{#3}% 1260 \gdef\acmConference@venue{#4}% 1261 \ifx\acmConference@shortname\@empty 1262 \gdef\acmConference@shortname{#2}% 1263 \fi 1264 \global\@ACM@journal@bibstripfalse 1265 } 1266 \if@ACM@journal\else 1267 \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington, 1268 DC, USA}% 1269 \fi 1270 \def\acmBooktitle#1{\gdef\@acmBooktitle{#1}} 1271 \acmBooktitle{BLUB of \acmConference@name 1272 \ifx\acmConference@name\acmConference@shortname\else 1273 \ (\acmConference@shortname)\fi} 1274 \def\@editorsAbbrev{(Ed.)} 1275 \def\@acmEditors{} 1276 \def\editor#1{\ifx\@acmEditors\@empty 1277 \gdef\@acmEditors{#1}% 1278 \else 1279 \gdef\@editorsAbbrev{(Eds.)}% 1280 \g@addto@macro\@acmEditors{\and#1}% 1281 \fi} 1282 \def\subtitle#1{\def\@subtitle{#1}} 1283 \subtitle{} 1284 \newcount\num@authorgroups 1285 \num@authorgroups=0\relax 1286 \newcount\num@authors 1287 \num@authors=0\relax 1288 \newif\if@insideauthorgroup 1289 \@insideauthorgroupfalse 1290 \renewcommand\author[2][]{% 1291 \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several 1292 authors in the same \string\author\space macro!}}{}% 1293 \global\advance\num@authors by 1\relax 1294 \if@insideauthorgroup\else 1295 \global\advance\num@authorgroups by 1\relax 1296 \global\@insideauthorgrouptrue 1297 \fi 1298 \ifx\addresses\@empty 1299 \if@ACM@anonymous 1300 \gdef\addresses{\@author{Anonymous Author(s)% 1301 \ifx\@acmSubmissionID\@empty\else\\Submission Id: 1302 \@acmSubmissionID\fi}}% 1303 \gdef\authors{Anonymous Author(s)}% 1304 \else 1305 \gdef\addresses{\@author{#2}}% 1306 \gdef\authors{#2}% 1307 \fi 1308 \else 1309 \if@ACM@anonymous\else 1310 \g@addto@macro\addresses{\and\@author{#2}}% 1311 \g@addto@macro\authors{\and#2}% 1312 \fi 1313 \fi 1314 \if@ACM@anonymous 1315 \ifx\shortauthors\@empty 1316 \gdef\shortauthors{Anon. 1317 \ifx\@acmSubmissionID\@empty\else Submission Id: 1318 \@acmSubmissionID\fi}% 1319 \fi 1320 \else 1321 \def\@tempa{#1}% 1322 \ifx\@tempa\@empty 1323 \ifx\shortauthors\@empty 1324 \gdef\shortauthors{#2}% 1325 \else 1326 \g@addto@macro\shortauthors{\and#2}% 1327 \fi 1328 \else 1329 \ifx\shortauthors\@empty 1330 \gdef\shortauthors{#1}% 1331 \else 1332 \g@addto@macro\shortauthors{\and#1}% 1333 \fi 1334 \fi 1335 \fi} 1336 \newcommand{\affiliation}[2][]{% 1337 \global\@insideauthorgroupfalse 1338 \if@ACM@anonymous\else 1339 \g@addto@macro\addresses{\affiliation{#1}{#2}}% 1340 \fi} 1341 \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}% 1342 [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}} 1343 \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}} 1344 \def\@additionalaffiliation#1{\bgroup 1345 \def\position##1{\ignorespaces}% 1346 \def\institution##1{##1\ignorespaces}% 1347 \def\department{\@ifnextchar[{\@department}{\@department[]}}% 1348 \def\@department[##1]##2{\unskip, ##2\ignorespaces}% 1349 \let\streetaddress\position 1350 \let\city\position 1351 \let\state\position 1352 \let\postcode\position 1353 \let\country\position 1354 Also with #1\unskip.\egroup} 1355 \renewcommand{\email}[2][]{% 1356 \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several 1357 addresses in the same \string\email\space macro!}}{}% 1358 \if@ACM@anonymous\else 1359 \g@addto@macro\addresses{\email{#1}{#2}}% 1360 \fi} 1361 \def\orcid#1{\unskip\ignorespaces} 1362 \def\authorsaddresses#1{\def\@authorsaddresses{#1}} 1363 \authorsaddresses{\@mkauthorsaddresses} 1364 \def\@titlenotes{} 1365 \def\titlenote#1{% 1366 \g@addto@macro\@title{\footnotemark}% 1367 \if@ACM@anonymous 1368 \g@addto@macro\@titlenotes{% 1369 \stepcounter{footnote}\footnotetext{Title note}}% 1370 \else 1371 \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}% 1372 \fi} 1373 \def\@subtitlenotes{} 1374 \def\subtitlenote#1{% 1375 \g@addto@macro\@subtitle{\footnotemark}% 1376 \if@ACM@anonymous 1377 \g@addto@macro\@subtitlenotes{% 1378 \stepcounter{footnote}\footnotetext{Subtitle note}}% 1379 \else 1380 \g@addto@macro\@subtitlenotes{% 1381 \stepcounter{footnote}\footnotetext{#1}}% 1382 \fi} 1383 \def\@authornotes{} 1384 \def\authornote#1{% 1385 \if@ACM@anonymous\else 1386 \g@addto@macro\addresses{\@authornotemark}% 1387 \g@addto@macro\@authornotes{% 1388 \stepcounter{footnote}\footnotetext{#1}}% 1389 \fi} 1390 \newcommand\authornotemark[1][\relax]{% 1391 \ifx#1\relax\relax\relax 1392 \g@addto@macro\addresses{\@authornotemark}% 1393 \else 1394 \g@addto@macro\addresses{\@@authornotemark{#1}}% 1395 \fi} 1396 \def\acmVolume#1{\def\@acmVolume{#1}} 1397 \acmVolume{1} 1398 \def\acmNumber#1{\def\@acmNumber{#1}} 1399 \acmNumber{1} 1400 \def\acmArticle#1{\def\@acmArticle{#1}} 1401 \acmArticle{} 1402 \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}} 1403 \acmArticleSeq{\@acmArticle} 1404 \def\acmYear#1{\def\@acmYear{#1}} 1405 \acmYear{\the\year} 1406 \def\acmMonth#1{\def\@acmMonth{#1}} 1407 \acmMonth{\the\month} 1408 \def\@acmPubDate{\ifcase\@acmMonth\or 1409 January\or February\or March\or April\or May\or June\or 1410 July\or August\or September\or October\or November\or 1411 December\fi~\@acmYear} 1412 \def\acmPrice#1{\def\@acmPrice{#1}} 1413 \acmPrice{15.00} 1414 \def\acmSubmissionID#1{\def\@acmSubmissionID{#1}} 1415 \acmSubmissionID{} 1416 \def\acmISBN#1{\def\@acmISBN{#1}} 1417 \acmISBN{978-x-xxxx-xxxx-x/YY/MM} 1418 \def\acmDOI#1{\def\@acmDOI{#1}} 1419 \acmDOI{10.1145/nnnnnnn.nnnnnnn} 1420 \newif\if@ACM@badge 1421 \@ACM@badgefalse 1422 \newlength\@ACM@badge@width 1423 \setlength\@ACM@badge@width{5pc} 1424 \newlength\@ACM@title@width 1425 \newlength\@ACM@badge@skip 1426 \setlength\@ACM@badge@skip{1pc} 1427 \newcommand\acmBadgeR[2][]{\@ACM@badgetrue 1428 \def\@acmBadgeR@url{#1}% 1429 \def\@acmBadgeR@image{#2}} 1430 \def\@acmBadgeR@url{} 1431 \def\@acmBadgeR@image{} 1432 \newcommand\acmBadgeL[2][]{\@ACM@badgetrue 1433 \def\@acmBadgeL@url{#1}% 1434 \def\@acmBadgeL@image{#2}} 1435 \def\@acmBadgeL@url{} 1436 \def\@acmBadgeL@image{} 1437 \def\startPage#1{\def\@startPage{#1}} 1438 \startPage{} 1439 \def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is 1440 obsolete. I am going to ignore it}} 1441 \def\keywords#1{\def\@keywords{#1}} 1442 \let\@keywords\@empty 1443 \AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty 1444 \ifnum\getrefnumber{TotPages}>2\relax 1445 \ClassWarningNoLine{\@classname}{ACM keywords are mandatory 1446 for papers over two pages}% 1447 \fi\fi\fi} 1448 \renewenvironment{abstract}{\Collect@Body\@saveabstract}{} 1449 \long\def\@saveabstract#1{\if@ACM@maketitle@typeset 1450 \ClassError{\@classname}{Abstract must be defined before maketitle 1451 command. Please move it!}\fi 1452 \long\gdef\@abstract{#1}} 1453 \@saveabstract{} 1454 \long\def\@lempty{} 1455 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{% 1456 \if@ACM@printccs 1457 \ClassInfo{\@classname}{Printing CCS}% 1458 \else 1459 \ClassInfo{\@classname}{Suppressing CCS}% 1460 \fi}{\ClassError{\@classname}{The option printccs can be either true or false}} 1461 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{% 1462 \if@ACM@printacmref 1463 \ClassInfo{\@classname}{Printing bibformat}% 1464 \else 1465 \ClassInfo{\@classname}{Suppressing bibformat}% 1466 \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}} 1467 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else 1468 \ifnum\getrefnumber{TotPages}>1\relax 1469 \ClassWarningNoLine{\@classname}{ACM reference format is mandatory 1470 for papers over one page}% 1471 \fi\fi\fi} 1472 \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{% 1473 \if@ACM@printfolios 1474 \ClassInfo{\@classname}{Printing folios}% 1475 \else 1476 \ClassInfo{\@classname}{Suppressing folios}% 1477 \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}} 1478 \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{% 1479 \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to 1480 #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be 1481 numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}} 1482 \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}} 1483 \settopmatter{printccs=true, printacmref=true} 1484 \if@ACM@manuscript 1485 \settopmatter{printfolios=true} 1486 \else 1487 \if@ACM@journal 1488 \settopmatter{printfolios=true} 1489 \else 1490 \settopmatter{printfolios=false} 1491 \fi 1492 \fi 1493 \settopmatter{authorsperrow=0} 1494 \def\@received{} 1495 \newcommand\received[2][]{\def\@tempa{#1}% 1496 \ifx\@tempa\@empty 1497 \ifx\@received\@empty 1498 \gdef\@received{Received #2}% 1499 \else 1500 \g@addto@macro{\@received}{; revised #2}% 1501 \fi 1502 \else 1503 \ifx\@received\@empty 1504 \gdef\@received{#1 #2}% 1505 \else 1506 \g@addto@macro{\@received}{; #1 #2}% 1507 \fi 1508 \fi} 1509 \AtEndDocument{% 1510 \ifx\@received\@empty\else 1511 \par\bigskip\noindent\small\normalfont\@received\par 1512 \fi} 1513 \RequirePackage{comment} 1514 \excludecomment{CCSXML} 1515 \let\@concepts\@empty 1516 \newcounter{@concepts} 1517 \newcommand\ccsdesc[2][100]{% 1518 \ccsdesc@parse#1~#2~~\ccsdesc@parse@end} 1519 \def\textrightarrow{$\rightarrow$} 1520 \def\ccsdesc@parse#1~#2~#3~{% 1521 \stepcounter{@concepts}% 1522 \expandafter\ifx\csname CCS@General@#2\endcsname\relax 1523 \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\ 1524 \textbf{#2}}% 1525 \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }% 1526 \expandafter\gdef\csname CCS@Specific@#2\endcsname{}% 1527 \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname 1528 \csname CCS@Punctuation@#2\endcsname 1529 \csname CCS@Specific@#2\endcsname}% 1530 \fi 1531 \ifx#3\relax\relax\else 1532 \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{ 1533 \textrightarrow\ }% 1534 \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{% 1535 \addtocounter{@concepts}{-1}% 1536 \ifnum#1>499\textbf{#3}\else 1537 \ifnum#1>299\textit{#3}\else 1538 #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}% 1539 \fi 1540 \ccsdesc@parse@finish} 1541 \AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax 1542 \ifnum\getrefnumber{TotPages}>2\relax 1543 \ClassWarningNoLine{\@classname}{CCS concepts are mandatory 1544 for papers over two pages}% 1545 \fi\fi\fi} 1546 \def\ccsdesc@parse@finish#1\ccsdesc@parse@end{} 1547 \newif\if@printcopyright 1548 \@printcopyrighttrue 1549 \newif\if@printpermission 1550 \@printpermissiontrue 1551 \newif\if@acmowned 1552 \@acmownedtrue 1553 \define@choicekey*{ACM@}{acmcopyrightmode}[% 1554 \acm@copyrightinput\acm@copyrightmode]{none,% 1555 acmcopyright,acmlicensed,rightsretained,% 1556 usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,% 1557 licensedcagov,licensedcagovmixed,othergov,licensedothergov,% 1558 iw3c2w3,iw3c2w3g}{% 1559 \@printpermissiontrue 1560 \@printcopyrighttrue 1561 \@acmownedtrue 1562 \ifnum\acm@copyrightmode=0\relax % none 1563 \@printpermissionfalse 1564 \@printcopyrightfalse 1565 \@acmownedfalse 1566 \fi 1567 \ifnum\acm@copyrightmode=2\relax % acmlicensed 1568 \@acmownedfalse 1569 \fi 1570 \ifnum\acm@copyrightmode=3\relax % rightsretained 1571 \@acmownedfalse 1572 \AtBeginDocument{\acmPrice{}}% 1573 \fi 1574 \ifnum\acm@copyrightmode=4\relax % usgov 1575 \@printpermissiontrue 1576 \@printcopyrightfalse 1577 \@acmownedfalse 1578 \AtBeginDocument{\acmPrice{}}% 1579 \fi 1580 \ifnum\acm@copyrightmode=6\relax % cagov 1581 \@acmownedfalse 1582 \fi 1583 \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed 1584 \@acmownedfalse 1585 \fi 1586 \ifnum\acm@copyrightmode=9\relax % licensedcagov 1587 \@acmownedfalse 1588 \fi 1589 \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed 1590 \@acmownedfalse 1591 \fi 1592 \ifnum\acm@copyrightmode=11\relax % othergov 1593 \@acmownedtrue 1594 \fi 1595 \ifnum\acm@copyrightmode=12\relax % licensedothergov 1596 \@acmownedfalse 1597 \fi 1598 \ifnum\acm@copyrightmode=13\relax % iw3c2w3 1599 \@acmownedfalse 1600 \AtBeginDocument{\acmPrice{}}% 1601 \fi 1602 \ifnum\acm@copyrightmode=14\relax % iw3c2w3g 1603 \@acmownedfalse 1604 \AtBeginDocument{\acmPrice{}}% 1605 \fi} 1606 \def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}} 1607 \setcopyright{acmcopyright} 1608 \def\@copyrightowner{% 1609 \ifcase\acm@copyrightmode\relax % none 1610 \or % acmcopyright 1611 Association for Computing Machinery. 1612 \or % acmlicensed 1613 Copyright held by the owner/author(s). Publication rights licensed to 1614 ACM\@. 1615 \or % rightsretained 1616 Copyright held by the owner/author(s). 1617 \or % usgov 1618 \or % usgovmixed 1619 Association for Computing Machinery. 1620 \or % cagov 1621 Crown in Right of Canada. 1622 \or %cagovmixed 1623 Association for Computing Machinery. 1624 \or %licensedusgovmixed 1625 Copyright held by the owner/author(s). Publication rights licensed to 1626 ACM\@. 1627 \or % licensedcagov 1628 Crown in Right of Canada. Publication rights licensed to 1629 ACM\@. 1630 \or %licensedcagovmixed 1631 Copyright held by the owner/author(s). Publication rights licensed to 1632 ACM\@. 1633 \or % othergov 1634 Association for Computing Machinery. 1635 \or % licensedothergov 1636 Copyright held by the owner/author(s). Publication rights licensed to 1637 ACM\@. 1638 \or % ic2w3www 1639 IW3C2 (International World Wide Web Conference Committee), published 1640 under Creative Commons CC-BY~4.0 License. 1641 \or % ic2w3wwwgoogle 1642 IW3C2 (International World Wide Web Conference Committee), published 1643 under Creative Commons CC-BY-NC-ND~4.0 License. 1644 \fi} 1645 \def\@formatdoi#1{\url{https://doi.org/#1}} 1646 \def\@copyrightpermission{% 1647 \ifcase\acm@copyrightmode\relax % none 1648 \or % acmcopyright 1649 Permission to make digital or hard copies of all or part of this 1650 work for personal or classroom use is granted without fee provided 1651 that copies are not made or distributed for profit or commercial 1652 advantage and that copies bear this notice and the full citation on 1653 the first page. Copyrights for components of this work owned by 1654 others than ACM must be honored. Abstracting with credit is 1655 permitted. To copy otherwise, or republish, to post on servers or to 1656 redistribute to lists, requires prior specific permission 1657 and\hspace*{.5pt}/or a fee. Request permissions from 1658 permissions@acm.org. 1659 \or % acmlicensed 1660 Permission to make digital or hard copies of all or part of this 1661 work for personal or classroom use is granted without fee provided 1662 that copies are not made or distributed for profit or commercial 1663 advantage and that copies bear this notice and the full citation on 1664 the first page. Copyrights for components of this work owned by 1665 others than the author(s) must be honored. Abstracting with credit 1666 is permitted. To copy otherwise, or republish, to post on servers 1667 or to redistribute to lists, requires prior specific permission 1668 and\hspace*{.5pt}/or a fee. Request permissions from 1669 permissions@acm.org. 1670 \or % rightsretained 1671 Permission to make digital or hard copies of part or all of this work 1672 for personal or classroom use is granted without fee provided that 1673 copies are not made or distributed for profit or commercial advantage 1674 and that copies bear this notice and the full citation on the first 1675 page. Copyrights for third-party components of this work must be 1676 honored. For all other uses, contact the 1677 owner\hspace*{.5pt}/author(s). 1678 \or % usgov 1679 This paper is authored by an employee(s) of the United States 1680 Government and is in the public domain. Non-exclusive copying or 1681 redistribution is allowed, provided that the article citation is 1682 given and the authors and agency are clearly identified as its 1683 source. 1684 \or % usgovmixed 1685 ACM acknowledges that this contribution was authored or co-authored 1686 by an employee, contractor, or affiliate of the United States 1687 government. As such, the United States government retains a 1688 nonexclusive, royalty-free right to publish or reproduce this 1689 article, or to allow others to do so, for government purposes only. 1690 \or % cagov 1691 This article was authored by employees of the Government of Canada. 1692 As such, the Canadian government retains all interest in the 1693 copyright to this work and grants to ACM a nonexclusive, 1694 royalty-free right to publish or reproduce this article, or to allow 1695 others to do so, provided that clear attribution is given both to 1696 the authors and the Canadian government agency employing them. 1697 Permission to make digital or hard copies for personal or classroom 1698 use is granted. Copies must bear this notice and the full citation 1699 on the first page. Copyrights for components of this work owned by 1700 others than the Canadian Government must be honored. To copy 1701 otherwise, distribute, republish, or post, requires prior specific 1702 permission and\hspace*{.5pt}/or a fee. Request permissions from 1703 permissions@acm.org. 1704 \or % cagovmixed 1705 ACM acknowledges that this contribution was co-authored by an 1706 affiliate of the national government of Canada. As such, the Crown 1707 in Right of Canada retains an equal interest in the copyright. 1708 Reprints must include clear attribution to ACM and the author's 1709 government agency affiliation. Permission to make digital or hard 1710 copies for personal or classroom use is granted. Copies must bear 1711 this notice and the full citation on the first page. Copyrights for 1712 components of this work owned by others than ACM must be honored. 1713 To copy otherwise, distribute, republish, or post, requires prior 1714 specific permission and\hspace*{.5pt}/or a fee. Request permissions 1715 from permissions@acm.org. 1716 \or % licensedusgovmixed 1717 Publication rights licensed to ACM\@. ACM acknowledges that this 1718 contribution was authored or co-authored by an employee, contractor 1719 or affiliate of the United States government. As such, the 1720 Government retains a nonexclusive, royalty-free right to publish or 1721 reproduce this article, or to allow others to do so, for Government 1722 purposes only. 1723 \or % licensedcagov 1724 This article was authored by employees of the Government of Canada. 1725 As such, the Canadian government retains all interest in the 1726 copyright to this work and grants to ACM a nonexclusive, 1727 royalty-free right to publish or reproduce this article, or to allow 1728 others to do so, provided that clear attribution is given both to 1729 the authors and the Canadian government agency employing them. 1730 Permission to make digital or hard copies for personal or classroom 1731 use is granted. Copies must bear this notice and the full citation 1732 on the first page. Copyrights for components of this work owned by 1733 others than the Canadian Government must be honored. To copy 1734 otherwise, distribute, republish, or post, requires prior specific 1735 permission and\hspace*{.5pt}/or a fee. Request permissions from 1736 permissions@acm.org. 1737 \or % licensedcagovmixed 1738 Publication rights licensed to ACM\@. ACM acknowledges that this 1739 contribution was authored or co-authored by an employee, contractor 1740 or affiliate of the national government of Canada. As such, the 1741 Government retains a nonexclusive, royalty-free right to publish or 1742 reproduce this article, or to allow others to do so, for Government 1743 purposes only. 1744 \or % othergov 1745 ACM acknowledges that this contribution was authored or co-authored 1746 by an employee, contractor or affiliate of a national government. As 1747 such, the Government retains a nonexclusive, royalty-free right to 1748 publish or reproduce this article, or to allow others to do so, for 1749 Government purposes only. 1750 \or % licensedothergov 1751 Publication rights licensed to ACM\@. ACM acknowledges that this 1752 contribution was authored or co-authored by an employee, contractor 1753 or affiliate of a national government. As such, the Government 1754 retains a nonexclusive, royalty-free right to publish or reproduce 1755 this article, or to allow others to do so, for Government purposes 1756 only. 1757 \or % iw3c2w3 1758 This paper is published under the Creative Commons Attribution~4.0 1759 International (CC-BY~4.0) license. Authors reserve their rights to 1760 disseminate the work on their personal and corporate Web sites with 1761 the appropriate attribution. 1762 \or % iw3c2w3g 1763 This paper is published under the Creative Commons 1764 Attribution-NonCommercial-NoDerivs~4.0 International 1765 (CC-BY-NC-ND~4.0) license. Authors reserve their rights to 1766 disseminate the work on their personal and corporate Web sites with 1767 the appropriate attribution. 1768 \fi} 1769 \def\copyrightyear#1{\def\@copyrightyear{#1}} 1770 \copyrightyear{\@acmYear} 1771 \def\@teaserfigures{} 1772 \newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{} 1773 \long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}} 1774 \renewcommand{\thanks}[1]{% 1775 \@ifnotempty{#1}{% 1776 \if@ACM@anonymous 1777 \g@addto@macro\thankses{\thanks{A note}}% 1778 \else 1779 \g@addto@macro\thankses{\thanks{#1}}% 1780 \fi}} 1781 \ifx\@beginmaketitlehook\@undefined 1782 \let\@beginmaketitlehook\@empty 1783 \fi 1784 \def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook} 1785 \newbox\mktitle@bx 1786 \def\maketitle{\@beginmaketitlehook 1787 \@ACM@maketitle@typesettrue 1788 \if@ACM@anonymous 1789 % Anonymize omission of \author-s 1790 \ifnum\num@authorgroups=0\author{}\fi 1791 \fi 1792 \begingroup 1793 \let\@vspace\@vspace@orig 1794 \let\@vspacer\@vspacer@orig 1795 \let\@footnotemark\@footnotemark@nolink 1796 \let\@footnotetext\@footnotetext@nolink 1797 \renewcommand\thefootnote{\@fnsymbol\c@footnote}% 1798 \hsize=\textwidth 1799 \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}% 1800 \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers 1801 \@printtopmatter 1802 \if@ACM@sigchiamode\@mkauthors\fi 1803 \setcounter{footnote}{0}% 1804 \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}% 1805 \@titlenotes 1806 \@subtitlenotes 1807 \@authornotes 1808 \let\@makefnmark\relax 1809 \let\@thefnmark\relax 1810 \let\@makefntext\noindent 1811 \ifx\@empty\thankses\else 1812 \footnotetextauthorsaddresses{% 1813 \def\par{\let\par\@par}\parindent\z@\@setthanks}% 1814 \fi 1815 \ifx\@empty\@authorsaddresses\else 1816 \if@ACM@anonymous\else 1817 \if@ACM@journal@bibstrip 1818 \footnotetextauthorsaddresses{% 1819 \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}% 1820 \fi 1821 \fi 1822 \fi 1823 \if@ACM@nonacm\else\footnotetextcopyrightpermission{% 1824 \if@ACM@authordraft 1825 \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries 1826 Unpublished working draft. Not for distribution.}}% 1827 \color[gray]{0.9}% 1828 \fi 1829 \parindent\z@\parskip0.1\baselineskip 1830 \if@ACM@authorversion\else 1831 \if@printpermission\@copyrightpermission\par\fi 1832 \fi 1833 \if@ACM@manuscript\else 1834 \if@ACM@journal@bibstrip\else % Print the conference information 1835 {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par 1836 \fi 1837 \fi 1838 \if@printcopyright 1839 \copyright\ \@copyrightyear\ \@copyrightowner\\ 1840 \else 1841 \@copyrightyear.\ 1842 \fi 1843 \if@ACM@manuscript 1844 Manuscript submitted to ACM\\ 1845 \else 1846 \if@ACM@authorversion 1847 This is the author's version of the work. It is posted here for 1848 your personal use. Not for redistribution. The definitive Version 1849 of Record was published in 1850 \if@ACM@journal@bibstrip 1851 \emph{\@journalName}% 1852 \else 1853 \emph{\@acmBooktitle}% 1854 \fi 1855 \ifx\@acmDOI\@empty 1856 . 1857 \else 1858 , \@formatdoi{\@acmDOI}. 1859 \fi\\ 1860 \else 1861 \if@ACM@nonacm\else 1862 \if@ACM@journal@bibstrip 1863 \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle 1864 \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\ 1865 \@formatdoi{\@acmDOI}% 1866 \else % Conference 1867 \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN 1868 \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi 1869 \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi% 1870 \fi 1871 \fi 1872 \fi 1873 \fi} 1874 \fi 1875 \endgroup 1876 \setcounter{footnote}{0}% 1877 \@mkabstract 1878 \if@ACM@printccs 1879 \ifx\@concepts\@empty\else\bgroup 1880 {\@specialsection{CCS Concepts}% 1881 \noindent\@concepts\par}\egroup 1882 \fi 1883 \fi 1884 \ifx\@keywords\@empty\else\bgroup 1885 {\if@ACM@journal 1886 \@specialsection{Additional Key Words and Phrases}% 1887 \else 1888 \@specialsection{Keywords}% 1889 \fi 1890 \noindent\@keywords}\par\egroup 1891 \fi 1892 \let\metadata@authors=\authors 1893 \nxandlist{, }{, }{, }\metadata@authors 1894 \def\@ACM@checkaffil{}% 1895 \hypersetup{% 1896 pdfauthor={\metadata@authors}, 1897 pdftitle={\@title}, 1898 pdfsubject={\@concepts}, 1899 pdfkeywords={\@keywords}, 1900 pdfcreator={LaTeX with acmart 1901 \csname ver@acmart.cls\endcsname\space 1902 and hyperref 1903 \csname ver@hyperref.sty\endcsname}}% 1904 \andify\authors 1905 \andify\shortauthors 1906 \global\let\authors=\authors 1907 \global\let\shortauthors=\shortauthors 1908 \if@ACM@printacmref 1909 \@mkbibcitation 1910 \fi 1911 \global\@topnum\z@ % this prevents floats from falling 1912 % at the top of page 1 1913 \global\@botnum\z@ % we do not want them to be on the bottom either 1914 \@printendtopmatter 1915 \@afterindentfalse 1916 \@afterheading 1917 } 1918 \def\@specialsection#1{% 1919 \ifcase\ACM@format@nr 1920 \relax % manuscript 1921 \par\medskip\small\noindent#1: % 1922 \or % acmsmall 1923 \par\medskip\small\noindent#1: % 1924 \or % acmlarge 1925 \par\medskip\small\noindent#1: % 1926 \or % acmtog 1927 \par\medskip\small\noindent#1: % 1928 \or % sigconf 1929 \section*{#1}% 1930 \or % siggraph 1931 \section*{#1}% 1932 \or % sigplan 1933 \noindentparagraph*{#1:~}% 1934 \or % sigchi 1935 \section*{#1}% 1936 \or % sigchi-a 1937 \section*{#1}% 1938 \fi 1939 } 1940 \def\@printtopmatter{% 1941 \ifx\@startPage\@empty 1942 \gdef\@startPage{1}% 1943 \else 1944 \setcounter{page}{\@startPage}% 1945 \fi 1946 \thispagestyle{firstpagestyle}% 1947 \noindent 1948 \ifcase\ACM@format@nr 1949 \relax % manuscript 1950 \box\mktitle@bx\par 1951 \or % acmsmall 1952 \box\mktitle@bx\par 1953 \or % acmlarge 1954 \box\mktitle@bx\par 1955 \or % acmtog 1956 \twocolumn[\box\mktitle@bx]% 1957 \or % sigconf 1958 \twocolumn[\box\mktitle@bx]% 1959 \or % siggraph 1960 \twocolumn[\box\mktitle@bx]% 1961 \or % sigplan 1962 \twocolumn[\box\mktitle@bx]% 1963 \or % sigchi 1964 \twocolumn[\box\mktitle@bx]% 1965 \or % sigchi-a 1966 \par\box\mktitle@bx\par\bigskip 1967 \if@ACM@badge 1968 \marginpar{\noindent 1969 \ifx\@acmBadgeL@image\@empty\else 1970 \href{\@acmBadgeL@url}{% 1971 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}% 1972 \hskip\@ACM@badge@skip 1973 \fi 1974 \ifx\@acmBadgeR@image\@empty\else 1975 \href{\@acmBadgeR@url}{% 1976 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}% 1977 \fi}% 1978 \fi 1979 \fi 1980 } 1981 \def\@mktitle{% 1982 \ifcase\ACM@format@nr 1983 \relax % manuscript 1984 \@mktitle@i 1985 \or % acmsmall 1986 \@mktitle@i 1987 \or % acmlarge 1988 \@mktitle@i 1989 \or % acmtog 1990 \@mktitle@i 1991 \or % sigconf 1992 \@mktitle@iii 1993 \or % siggraph 1994 \@mktitle@iii 1995 \or % sigplan 1996 \@mktitle@iii 1997 \or % sigchi 1998 \@mktitle@iii 1999 \or % sigchi-a 2000 \@mktitle@iv 2001 \fi 2002 } 2003 \def\@titlefont{% 2004 \ifcase\ACM@format@nr 2005 \relax % manuscript 2006 \LARGE\sffamily\bfseries 2007 \or % acmsmall 2008 \LARGE\sffamily\bfseries 2009 \or % acmlarge 2010 \LARGE\sffamily\bfseries 2011 \or % acmtog 2012 \Huge\sffamily 2013 \or % sigconf 2014 \Huge\sffamily\bfseries 2015 \or % siggraph 2016 \Huge\sffamily\bfseries 2017 \or % sigplan 2018 \Huge\bfseries 2019 \or % sigchi 2020 \Huge\sffamily\bfseries 2021 \or % sigchi-a 2022 \Huge\bfseries 2023 \fi} 2024 \def\@subtitlefont{\normalsize 2025 \ifcase\ACM@format@nr 2026 \relax % manuscript 2027 \mdseries 2028 \or % acmsmall 2029 \mdseries 2030 \or % acmlarge 2031 \mdseries 2032 \or % acmtog 2033 \LARGE 2034 \or % sigconf 2035 \LARGE\mdseries 2036 \or % siggraph 2037 \LARGE\mdseries 2038 \or % sigplan 2039 \LARGE\mdseries 2040 \or % sigchi 2041 \LARGE\mdseries 2042 \or % sigchi-a 2043 \mdseries 2044 \fi} 2045 \def\@mktitle@i{\hsize=\textwidth 2046 \@ACM@title@width=\hsize 2047 \ifx\@acmBadgeL@image\@empty\else 2048 \advance\@ACM@title@width by -\@ACM@badge@width 2049 \advance\@ACM@title@width by -\@ACM@badge@skip 2050 \fi 2051 \ifx\@acmBadgeR@image\@empty\else 2052 \advance\@ACM@title@width by -\@ACM@badge@width 2053 \advance\@ACM@title@width by -\@ACM@badge@skip 2054 \fi 2055 \setbox\mktitle@bx=\vbox{\noindent\@titlefont 2056 \ifx\@acmBadgeL@image\@empty\else 2057 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% 2058 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% 2059 \hskip\@ACM@badge@skip 2060 \fi 2061 \parbox[t]{\@ACM@title@width}{\raggedright 2062 \@titlefont\noindent 2063 \@title 2064 \ifx\@subtitle\@empty\else 2065 \par\noindent{\@subtitlefont\@subtitle} 2066 \fi}% 2067 \ifx\@acmBadgeR@image\@empty\else 2068 \hskip\@ACM@badge@skip 2069 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% 2070 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% 2071 \fi 2072 \par\bigskip}}% 2073 \def\@mktitle@iii{\hsize=\textwidth 2074 \setbox\mktitle@bx=\vbox{\@titlefont\centering 2075 \@ACM@title@width=\hsize 2076 \if@ACM@badge 2077 \advance\@ACM@title@width by -2\@ACM@badge@width 2078 \advance\@ACM@title@width by -2\@ACM@badge@skip 2079 \parbox[b]{\@ACM@badge@width}{\strut 2080 \ifx\@acmBadgeL@image\@empty\else 2081 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% 2082 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% 2083 \fi}% 2084 \hskip\@ACM@badge@skip 2085 \fi 2086 \parbox[t]{\@ACM@title@width}{\centering\@titlefont 2087 \@title 2088 \ifx\@subtitle\@empty\else 2089 \par\noindent{\@subtitlefont\@subtitle} 2090 \fi 2091 }% 2092 \if@ACM@badge 2093 \hskip\@ACM@badge@skip 2094 \parbox[b]{\@ACM@badge@width}{\strut 2095 \ifx\@acmBadgeR@image\@empty\else 2096 \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% 2097 \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% 2098 \fi}% 2099 \fi 2100 \par\bigskip}}% 2101 \def\@mktitle@iv{\hsize=\textwidth 2102 \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont 2103 \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par 2104 \noindent\@title 2105 \ifx\@subtitle\@empty\else 2106 \par\noindent\@subtitlefont\@subtitle 2107 \fi 2108 \par\bigskip}}% 2109 \newbox\@ACM@commabox 2110 \def\@ACM@addtoaddress#1{% 2111 \ifvmode\else 2112 \if@ACM@affiliation@obeypunctuation\else 2113 \setbox\@ACM@commabox=\hbox{, }% 2114 \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox 2115 \fi\fi 2116 #1} 2117 \def\streetaddress#1{\unskip\ignorespaces} 2118 \def\postcode#1{\unskip\ignorespaces} 2119 \if@ACM@journal 2120 \def\position#1{\unskip\ignorespaces} 2121 \def\institution#1{\global\@ACM@instpresenttrue 2122 \unskip~#1\ignorespaces} 2123 \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces} 2124 \def\state#1{\unskip\ignorespaces} 2125 \newcommand\department[2][0]{\unskip\ignorespaces} 2126 \def\country#1{\global\@ACM@countrypresenttrue 2127 \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces} 2128 \else 2129 \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% 2130 \def\institution#1{\global\@ACM@instpresenttrue 2131 \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% 2132 \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation 2133 #2\else#2\par\fi}% 2134 \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}% 2135 \let\state\@ACM@addtoaddress 2136 \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}% 2137 \fi 2138 \def\@mkauthors{\begingroup 2139 \hsize=\textwidth 2140 \ifcase\ACM@format@nr 2141 \relax % manuscript 2142 \@mkauthors@i 2143 \or % acmsmall 2144 \@mkauthors@i 2145 \or % acmlarge 2146 \@mkauthors@i 2147 \or % acmtog 2148 \@mkauthors@i 2149 \or % sigconf 2150 \@mkauthors@iii 2151 \or % siggraph 2152 \@mkauthors@iii 2153 \or % sigplan 2154 \@mkauthors@iii 2155 \or % sigchi 2156 \@mkauthors@iii 2157 \or % sigchi-a 2158 \@mkauthors@iv 2159 \fi 2160 \endgroup 2161 } 2162 \def\@authorfont{\Large\sffamily} 2163 \def\@affiliationfont{\normalsize\normalfont} 2164 \ifcase\ACM@format@nr 2165 \relax % manuscript 2166 \or % acmsmall 2167 \def\@authorfont{\large\sffamily} 2168 \def\@affiliationfont{\small\normalfont} 2169 \or % acmlarge 2170 \or % acmtog 2171 \def\@authorfont{\LARGE\sffamily} 2172 \def\@affiliationfont{\large} 2173 \or % sigconf 2174 \def\@authorfont{\LARGE} 2175 \def\@affiliationfont{\large} 2176 \or % siggraph 2177 \def\@authorfont{\normalsize\normalfont} 2178 \def\@affiliationfont{\normalsize\normalfont} 2179 \or % sigplan 2180 \def\@authorfont{\Large\normalfont} 2181 \def\@affiliationfont{\normalsize\normalfont} 2182 \or % sigchi 2183 \def\@authorfont{\bfseries} 2184 \def\@affiliationfont{\mdseries} 2185 \or % sigchi-a 2186 \def\@authorfont{\bfseries} 2187 \def\@affiliationfont{\mdseries} 2188 \fi 2189 \def\@typeset@author@line{% 2190 \andify\@currentauthors\par\noindent 2191 \@currentauthors\def\@currentauthors{}% 2192 \ifx\@currentaffiliations\@empty\else 2193 \andify\@currentaffiliations 2194 \unskip, {\@currentaffiliations}\par 2195 \fi 2196 \def\@currentaffiliations{}} 2197 \newif\if@ACM@instpresent 2198 \@ACM@instpresenttrue 2199 \newif\if@ACM@citypresent 2200 \@ACM@citypresenttrue 2201 \newif\if@ACM@countrypresent 2202 \@ACM@countrypresenttrue 2203 \def\@ACM@resetaffil{% 2204 \global\@ACM@instpresentfalse 2205 \global\@ACM@citypresentfalse 2206 \global\@ACM@countrypresentfalse 2207 } 2208 \def\@ACM@checkaffil{% 2209 \if@ACM@instpresent\else 2210 \ClassWarningNoLine{\@classname}{No institution present for an affiliation}% 2211 \fi 2212 \if@ACM@citypresent\else 2213 \ClassWarningNoLine{\@classname}{No city present for an affiliation}% 2214 \fi 2215 \if@ACM@countrypresent\else 2216 \ClassError{\@classname}{No country present for an affiliation}{ACM 2217 requires each author to indicate their country using country macro.}% 2218 \fi 2219 } 2220 \def\@mkauthors@i{% 2221 \def\@currentauthors{}% 2222 \def\@currentaffiliations{}% 2223 \global\let\and\@typeset@author@line 2224 \def\@author##1{% 2225 \ifx\@currentauthors\@empty 2226 \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% 2227 \else 2228 \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% 2229 \fi 2230 \gdef\and{}}% 2231 \def\email##1##2{}% 2232 \def\affiliation##1##2{% 2233 \def\@tempa{##2}\ifx\@tempa\@empty\else 2234 \ifx\@currentaffiliations\@empty 2235 \gdef\@currentaffiliations{% 2236 \setkeys{@ACM@affiliation@}{obeypunctuation=false}% 2237 \setkeys{@ACM@affiliation@}{##1}% 2238 \@ACM@resetaffil 2239 \@affiliationfont##2\@ACM@checkaffil}% 2240 \else 2241 \g@addto@macro{\@currentaffiliations}{\and 2242 \setkeys{@ACM@affiliation@}{obeypunctuation=false}% 2243 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil 2244 ##2\@ACM@checkaffil}% 2245 \fi 2246 \fi 2247 \global\let\and\@typeset@author@line}% 2248 \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip 2249 \noindent\addresses\@typeset@author@line 2250 \par\medskip}% 2251 } 2252 \newbox\author@bx 2253 \newdimen\author@bx@wd 2254 \newskip\author@bx@sep 2255 \author@bx@sep=1pc\relax 2256 \def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd 2257 \def\and{\par}\normalbaselines 2258 \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi 2259 \@authorfont\@currentauthors\par\@affiliationfont 2260 \@currentaffiliation}\egroup 2261 \box\author@bx\hspace{\author@bx@sep}% 2262 \gdef\@currentauthors{}% 2263 \gdef\@currentaffiliation{}} 2264 \def\@mkauthors@iii{% 2265 \author@bx@wd=\textwidth\relax 2266 \advance\author@bx@wd by -\author@bx@sep\relax 2267 \ifnum\@ACM@authorsperrow>0\relax 2268 \divide\author@bx@wd by \@ACM@authorsperrow\relax 2269 \else 2270 \ifcase\num@authorgroups 2271 \relax % 0? 2272 \or % 1=one author per row 2273 \or % 2=two authors per row 2274 \divide\author@bx@wd by \num@authorgroups\relax 2275 \or % 3=three authors per row 2276 \divide\author@bx@wd by \num@authorgroups\relax 2277 \or % 4=two authors per row (!) 2278 \divide\author@bx@wd by 2\relax 2279 \else % three authors per row 2280 \divide\author@bx@wd by 3\relax 2281 \fi 2282 \fi 2283 \advance\author@bx@wd by -\author@bx@sep\relax 2284 \gdef\@currentauthors{}% 2285 \gdef\@currentaffiliation{}% 2286 \def\@author##1{\ifx\@currentauthors\@empty 2287 \gdef\@currentauthors{\par##1}% 2288 \else 2289 \g@addto@macro\@currentauthors{\par##1}% 2290 \fi 2291 \gdef\and{}}% 2292 \def\email##1##2{\ifx\@currentaffiliation\@empty 2293 \gdef\@currentaffiliation{\bgroup 2294 \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% 2295 \else 2296 \g@addto@macro\@currentaffiliation{\par\bgroup 2297 \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% 2298 \fi}% 2299 \def\affiliation##1##2{\ifx\@currentaffiliation\@empty 2300 \gdef\@currentaffiliation{% 2301 \setkeys{@ACM@affiliation@}{obeypunctuation=false}% 2302 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil 2303 ##2\@ACM@checkaffil}% 2304 \else 2305 \g@addto@macro\@currentaffiliation{\par 2306 \setkeys{@ACM@affiliation@}{obeypunctuation=false}% 2307 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil 2308 ##2\@ACM@checkaffil}% 2309 \fi 2310 \global\let\and\@typeset@author@bx 2311 }% 2312 \hsize=\textwidth 2313 \global\setbox\mktitle@bx=\vbox{\noindent 2314 \box\mktitle@bx\par\medskip\leavevmode 2315 \lineskip=1pc\relax\centering\hspace*{-1em}% 2316 \addresses\let\and\@typeset@author@bx\and\par\bigskip}} 2317 \def\@mkauthors@iv{% 2318 \author@bx@wd=\columnwidth\relax 2319 \advance\author@bx@wd by -\author@bx@sep\relax 2320 \ifnum\@ACM@authorsperrow>0\relax 2321 \divide\author@bx@wd by \@ACM@authorsperrow\relax 2322 \else 2323 \ifcase\num@authorgroups 2324 \relax % 0? 2325 \or % 1=one author per row 2326 \else % 2=two authors per row 2327 \divide\author@bx@wd by 2\relax 2328 \fi 2329 \fi 2330 \advance\author@bx@wd by -\author@bx@sep\relax 2331 \gdef\@currentauthors{}% 2332 \gdef\@currentaffiliation{}% 2333 \def\@author##1{\ifx\@currentauthors\@empty 2334 \gdef\@currentauthors{\par##1}% 2335 \else 2336 \g@addto@macro\@currentauthors{\par##1}% 2337 \fi 2338 \gdef\and{}}% 2339 \def\email##1##2{\ifx\@currentaffiliation\@empty 2340 \gdef\@currentaffiliation{\nolinkurl{##2}}% 2341 \else 2342 \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}% 2343 \fi}% 2344 \def\affiliation##1##2{\ifx\@currentaffiliation\@empty 2345 \gdef\@currentaffiliation{% 2346 \setkeys{@ACM@affiliation@}{obeypunctuation=false}% 2347 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil 2348 ##2\@ACM@checkaffil}% 2349 \else 2350 \g@addto@macro\@currentaffiliation{\par 2351 \setkeys{@ACM@affiliation@}{obeypunctuation=false}% 2352 \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil 2353 ##2\@ACM@checkaffil}% 2354 \fi 2355 \global\let\and\@typeset@author@bx}% 2356 \bgroup\hsize=\columnwidth 2357 \par\raggedright\leftskip=\z@ 2358 \lineskip=1pc\noindent 2359 \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup} 2360 \def\@mkauthorsaddresses{% 2361 \ifnum\num@authors>1\relax 2362 Authors' \else Author's \fi 2363 \ifnum\num@authorgroups>1\relax 2364 addresses: \else address: \fi 2365 \bgroup 2366 \def\streetaddress##1{\unskip, ##1}% 2367 \def\postcode##1{\unskip, ##1}% 2368 \def\position##1{\unskip\ignorespaces}% 2369 \def\institution##1{\unskip, ##1}% 2370 \def\city##1{\unskip, ##1}% 2371 \def\state##1{\unskip, ##1}% 2372 \renewcommand\department[2][0]{\unskip\@addpunct, ##2}% 2373 \def\country##1{\unskip, ##1}% 2374 \def\and{\unskip; }% 2375 \def\@author##1{##1}% 2376 \def\email##1##2{\unskip, \nolinkurl{##2}}% 2377 \addresses 2378 \egroup} 2379 \AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal 2380 \ifx\@authorsaddresses\@empty 2381 \ClassWarningNoLine{\@classname}{Authors' 2382 addresses are mandatory for ACM journals}% 2383 \fi\fi\fi} 2384 \def\@setaddresses{} 2385 \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}} 2386 \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}} 2387 \def\@mkteasers{% 2388 \ifx\@teaserfigures\@empty\else 2389 \def\@teaser##1{\par\bigskip\bgroup 2390 \captionsetup{type=figure}##1\egroup\par} 2391 \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par 2392 \noindent\@Description@presentfalse 2393 \@teaserfigures\par\if@Description@present\else 2394 \global\@undescribed@imagestrue 2395 \ClassWarning{\@classname}{A possible image without 2396 description}\fi 2397 \medskip}% 2398 \fi} 2399 \def\@mkabstract{\bgroup 2400 \ifx\@abstract\@lempty\else 2401 {\phantomsection\addcontentsline{toc}{section}{Abstract}% 2402 \if@ACM@journal 2403 \everypar{\setbox\z@\lastbox\everypar{}}\small 2404 \else 2405 \section*{\abstractname}% 2406 \fi 2407 \ignorespaces\@abstract\par}% 2408 \fi\egroup} 2409 \def\@mkbibcitation{\bgroup 2410 \let\@vspace\@vspace@orig 2411 \let\@vspacer\@vspacer@orig 2412 \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}% 2413 \def\footnotemark{}% 2414 \def\\{\unskip{} \ignorespaces}% 2415 \def\footnote{\ClassError{\@classname}{Please do not use footnotes 2416 inside a \string\title{} or \string\author{} command! Use 2417 \string\titlenote{} or \string\authornote{} instead!}}% 2418 \def\@article@string{\ifx\@acmArticle\@empty{\ }\else, 2419 Article~\@acmArticle\ \fi}% 2420 \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak 2421 \noindent\bgroup 2422 \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title 2423 \ifx\@subtitle\@empty. \else: \@subtitle. \fi 2424 \if@ACM@nonacm\else 2425 % The 'nonacm' option disables 'printacmref' by default, 2426 % and the present \@mkbibcitation definition is never used 2427 % in this case. The conditional remains useful if the user 2428 % explicitly sets \settopmatter{printacmref=true}. 2429 \if@ACM@journal@bibstrip 2430 \textit{\@journalNameShort} 2431 \@acmVolume, \@acmNumber \@article@string (\@acmPubDate), 2432 \ref{TotPages}~\@pages@word. 2433 \else 2434 In \textit{\@acmBooktitle}% 2435 \ifx\@acmEditors\@empty\textit{.}\else 2436 \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.% 2437 \fi\ 2438 ACM, New York, NY, USA% 2439 \@article@string\unskip, \ref{TotPages}~\@pages@word. 2440 \fi 2441 \fi 2442 \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi 2443 \par\egroup} 2444 \def\@printendtopmatter{% 2445 \let\@vspace\@vspace@orig 2446 \let\@vspacer\@vspacer@orig 2447 \par\bigskip 2448 \let\@vspace\@vspace@acm 2449 \let\@vspacer\@vspacer@acm 2450 } 2451 \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses} 2452 \def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.} 2453 \RequirePackage{fancyhdr} 2454 \let\ACM@ps@plain\ps@plain 2455 \let\ACM@ps@myheadings\ps@myheadings 2456 \let\ACM@ps@headings\ps@headings 2457 \def\ACM@restore@pagestyle{% 2458 \let\ps@plain\ACM@ps@plain 2459 \let\ps@myheadings\ACM@ps@myheadings 2460 \let\ps@headings\ACM@ps@headings} 2461 \AtBeginDocument{\ACM@restore@pagestyle} 2462 \if@ACM@review 2463 \newsavebox{\ACM@linecount@bx} 2464 \newlength\ACM@linecount@bxht 2465 \newcount\ACM@linecount 2466 \ACM@linecount\@ne\relax 2467 \def\ACM@mk@linecount{% 2468 \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont 2469 \normalsize 2470 \setlength{\ACM@linecount@bxht}{0pt}% 2471 \loop{\color{red}\scriptsize\the\ACM@linecount}\\ 2472 \global\advance\ACM@linecount by \@ne 2473 \addtolength{\ACM@linecount@bxht}{\baselineskip}% 2474 \ifdim\ACM@linecount@bxht<\textheight\repeat 2475 {\color{red}\scriptsize\the\ACM@linecount}\hfill 2476 \global\advance\ACM@linecount by \@ne}}} 2477 \fi 2478 \def\ACM@linecountL{% 2479 \if@ACM@review 2480 \ACM@mk@linecount 2481 \begin{picture}(0,0)% 2482 \put(-26,-22){\usebox{\ACM@linecount@bx}}% 2483 \end{picture}% 2484 \fi} 2485 \def\ACM@linecountR{% 2486 \if@ACM@review 2487 \ifcase\ACM@format@nr 2488 \relax % manuscript 2489 \relax 2490 \or % acmsmall 2491 \relax 2492 \or % acmlarge 2493 \relax 2494 \or % acmtog 2495 \ACM@mk@linecount 2496 \or % sigconf 2497 \ACM@mk@linecount 2498 \or % siggraph 2499 \ACM@mk@linecount 2500 \or % sigplan 2501 \ACM@mk@linecount 2502 \or % sigchi 2503 \ACM@mk@linecount 2504 \or % sigchi-a 2505 \ACM@mk@linecount 2506 \fi 2507 \begin{picture}(0,0)% 2508 \put(20,-22){\usebox{\ACM@linecount@bx}}% 2509 \end{picture}% 2510 \fi} 2511 \if@ACM@timestamp 2512 % Subtracting 30 from \time gives us the effect of rounding down despite 2513 % \numexpr rounding to nearest 2514 \newcounter{ACM@time@hours} 2515 \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax} 2516 \newcounter{ACM@time@minutes} 2517 \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax} 2518 \newcommand\ACM@timestamp{% 2519 \footnotesize% 2520 \ifx\@acmSubmissionID\@empty\relax\else 2521 Submission ID: \@acmSubmissionID.{ }% 2522 \fi 2523 \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }% 2524 \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }% 2525 Page \thepage\ of \@startPage--\pageref*{TotPages}.% 2526 } 2527 \fi 2528 \def\@shortauthors{% 2529 \if@ACM@anonymous 2530 Anon. 2531 \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi 2532 \else\shortauthors\fi} 2533 \def\@headfootfont{\sffamily\footnotesize} 2534 \AtBeginDocument{% 2535 \fancypagestyle{standardpagestyle}{% 2536 \fancyhf{}% 2537 \renewcommand{\headrulewidth}{\z@}% 2538 \renewcommand{\footrulewidth}{\z@}% 2539 \def\@acmArticlePage{% 2540 \ifx\@acmArticle\empty% 2541 \if@ACM@printfolios\thepage\fi% 2542 \else% 2543 \@acmArticle\if@ACM@printfolios:\thepage\fi% 2544 \fi% 2545 }% 2546 \if@ACM@journal@bibstrip 2547 \ifcase\ACM@format@nr 2548 \relax % manuscript 2549 \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}% 2550 \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}% 2551 \fancyhead[RE]{\@shortauthors}% 2552 \fancyhead[LO]{\ACM@linecountL\shorttitle}% 2553 \if@ACM@nonacm\else% 2554 \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM} 2555 \fi% 2556 \or % acmsmall 2557 \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}% 2558 \fancyhead[RO]{\@headfootfont\@acmArticlePage}% 2559 \fancyhead[RE]{\@headfootfont\@shortauthors}% 2560 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% 2561 \if@ACM@nonacm\else% 2562 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. 2563 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% 2564 \fi 2565 \or % acmlarge 2566 \fancyhead[LE]{\ACM@linecountL\@headfootfont 2567 \@acmArticlePage\quad\textbullet\quad\@shortauthors}% 2568 \fancyhead[LO]{\ACM@linecountL}% 2569 \fancyhead[RO]{\@headfootfont 2570 \shorttitle\quad\textbullet\quad\@acmArticlePage}% 2571 \if@ACM@nonacm\else% 2572 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. 2573 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% 2574 \fi 2575 \or % acmtog 2576 \fancyhead[LE]{\ACM@linecountL\@headfootfont 2577 \@acmArticlePage\quad\textbullet\quad\@shortauthors}% 2578 \fancyhead[LO]{\ACM@linecountL}% 2579 \fancyhead[RE]{\ACM@linecountR}% 2580 \fancyhead[RO]{\@headfootfont 2581 \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}% 2582 \if@ACM@nonacm\else% 2583 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. 2584 \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% 2585 \fi 2586 \else % Proceedings 2587 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% 2588 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% 2589 \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% 2590 \if@ACM@nonacm\else% 2591 \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize 2592 \acmConference@shortname, 2593 \acmConference@date, \acmConference@venue}% 2594 \fancyhead[RO]{\@headfootfont 2595 \acmConference@shortname, 2596 \acmConference@date, \acmConference@venue\ACM@linecountR}% 2597 \fi 2598 \fi 2599 \else % Proceedings 2600 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% 2601 \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% 2602 \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% 2603 \if@ACM@nonacm\else% 2604 \fancyhead[LE]{\ACM@linecountL\@headfootfont 2605 \acmConference@shortname, 2606 \acmConference@date, \acmConference@venue}% 2607 \fancyhead[RO]{\@headfootfont 2608 \acmConference@shortname, 2609 \acmConference@date, \acmConference@venue\ACM@linecountR}% 2610 \fi 2611 \fi 2612 \if@ACM@sigchiamode 2613 \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}% 2614 \fi 2615 \if@ACM@timestamp 2616 \fancyfoot[LO,RE]{\ACM@timestamp} 2617 \fi 2618 }% 2619 \pagestyle{standardpagestyle} 2620 } 2621 \newdimen\@folio@wd 2622 \@folio@wd=\z@ 2623 \newdimen\@folio@ht 2624 \@folio@ht=\z@ 2625 \newdimen\@folio@voffset 2626 \@folio@voffset=\z@ 2627 \def\@folio@max{1} 2628 \ifcase\ACM@format@nr 2629 \relax % manuscript 2630 \or % acmsmall 2631 \@folio@wd=45.75pt\relax 2632 \@folio@ht=1.25in\relax 2633 \@folio@voffset=.2in\relax 2634 \def\@folio@max{8} 2635 \or % acmlarge 2636 \@folio@wd=43.25pt\relax 2637 \@folio@ht=79pt\relax 2638 \@folio@voffset=.55in\relax 2639 \def\@folio@max{10} 2640 \fi 2641 \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax 2642 \ifnum\@tempcnta=0\relax\else 2643 \loop 2644 \ifnum\@tempcnta>\@folio@max\relax 2645 \advance\@tempcnta by - \@folio@max 2646 \repeat 2647 \advance\@tempcnta by -1\relax 2648 \@tempdima=\@folio@ht\relax 2649 \multiply\@tempdima by \the\@tempcnta\relax 2650 \advance\@tempdima by -\@folio@voffset\relax 2651 \begin{picture}(0,0) 2652 \makebox[\z@]{\raisebox{-\@tempdima}{% 2653 \rlap{% 2654 \raisebox{-0.45\@folio@ht}[\z@][\z@]{% 2655 \rule{\@folio@wd}{\@folio@ht}}}% 2656 \parbox{\@folio@wd}{% 2657 \centering 2658 \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}} 2659 \end{picture}\fi} 2660 2661 \AtBeginDocument{% 2662 \fancypagestyle{firstpagestyle}{% 2663 \fancyhf{}% 2664 \renewcommand{\headrulewidth}{\z@}% 2665 \renewcommand{\footrulewidth}{\z@}% 2666 \if@ACM@journal@bibstrip 2667 \ifcase\ACM@format@nr 2668 \relax % manuscript 2669 \fancyhead[L]{\ACM@linecountL}% 2670 \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}% 2671 \if@ACM@nonacm\else% 2672 \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}% 2673 \fi% 2674 \or % acmsmall 2675 \if@ACM@nonacm\else% 2676 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. 2677 \@acmNumber, Article \@acmArticle. Publication date: 2678 \@acmPubDate.}% 2679 \fi% 2680 \fancyhead[LE]{\ACM@linecountL\@folioblob}% 2681 \fancyhead[LO]{\ACM@linecountL}% 2682 \fancyhead[RO]{\@folioblob}% 2683 \fancyheadoffset[RO,LE]{0.6\@folio@wd}% 2684 \or % acmlarge 2685 \if@ACM@nonacm\else% 2686 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. 2687 \@acmNumber, Article \@acmArticle. Publication date: 2688 \@acmPubDate.}% 2689 \fi% 2690 \fancyhead[RO]{\@folioblob}% 2691 \fancyhead[LE]{\ACM@linecountL\@folioblob}% 2692 \fancyhead[LO]{\ACM@linecountL}% 2693 \fancyheadoffset[RO,LE]{1.4\@folio@wd}% 2694 \or % acmtog 2695 \if@ACM@nonacm\else% 2696 \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. 2697 \@acmNumber, Article \@acmArticle. Publication date: 2698 \@acmPubDate.}% 2699 \fi% 2700 \fancyhead[L]{\ACM@linecountL}% 2701 \fancyhead[R]{\ACM@linecountR}% 2702 \else % Conference proceedings 2703 \fancyhead[L]{\ACM@linecountL}% 2704 \fancyhead[R]{\ACM@linecountR}% 2705 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% 2706 \fi 2707 \else 2708 \fancyhead[L]{\ACM@linecountL}% 2709 \fancyhead[R]{\ACM@linecountR}% 2710 \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% 2711 \fi 2712 \if@ACM@timestamp 2713 \ifnum\ACM@format@nr=0\relax % Manuscript 2714 \fancyfoot[LO,RE]{\ACM@timestamp\quad 2715 \if@ACM@nonacm\else 2716 \footnotesize Manuscript submitted to ACM 2717 \fi} 2718 \else 2719 \fancyfoot[LO,RE]{\ACM@timestamp} 2720 \fi 2721 \fi 2722 }} 2723 \def\ACM@NRadjust#1{% 2724 \begingroup 2725 \expandafter\ifx\csname Sectionformat\endcsname\relax 2726 % do nothing when \Sectionformat is unknown 2727 \def\next{\endgroup #1}% 2728 \else 2729 \def\next{\endgroup 2730 \let\realSectionformat\Sectionformat 2731 \def\ACM@sect@format@{#1}% 2732 \let\Sectionformat\ACM@NR@adjustedSectionformat 2733 %% next lines added 2018-06-17 to ensure section number is styled 2734 \let\real@adddotafter\@adddotafter 2735 \let\@adddotafter\ACM@adddotafter 2736 #1{}% imposes the styles, but nullifies \MakeUppercase 2737 \let\@adddotafter\real@adddotafter 2738 }% 2739 \fi \next 2740 } 2741 \def\ACM@NR@adjustedSectionformat#1#2{% 2742 \realSectionformat{\ACM@sect@format{#1}}{#2}% 2743 \let\Sectionformat\realSectionformat} 2744 \DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@} 2745 \def\ACM@sect@format@null#1{#1} 2746 \let\ACM@sect@format@\ACM@sect@format@null 2747 \AtBeginDocument{% 2748 \expandafter\ifx\csname LTX@adddotafter\endcsname\relax 2749 \let\LTX@adddotafter\@adddotafter 2750 \fi 2751 } 2752 \def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi} 2753 \renewcommand\section{\@startsection{section}{1}{\z@}% 2754 {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% 2755 {.25\baselineskip}% 2756 {\ACM@NRadjust\@secfont}} 2757 \renewcommand\subsection{\@startsection{subsection}{2}{\z@}% 2758 {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% 2759 {.25\baselineskip}% 2760 {\ACM@NRadjust\@subsecfont}} 2761 \renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% 2762 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% 2763 {-3.5\p@}% 2764 {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}} 2765 \renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}% 2766 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% 2767 {-3.5\p@}% 2768 {\ACM@NRadjust{\@parfont\@adddotafter}}} 2769 \newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}% 2770 {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% 2771 {-3.5\p@}% 2772 {\ACM@NRadjust{\@parfont}}} 2773 2774 \renewcommand\part{\@startsection{part}{9}{\z@}% 2775 {-10\p@ \@plus -4\p@ \@minus -2\p@}% 2776 {4\p@}% 2777 {\ACM@NRadjust\@parfont}} 2778 \def\section@raggedright{\@rightskip\@flushglue 2779 \rightskip\@rightskip 2780 \leftskip\z@skip 2781 \parindent\z@} 2782 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} 2783 \def\@subsecfont{\sffamily\bfseries\section@raggedright} 2784 \def\@subsubsecfont{\sffamily\itshape} 2785 \def\@parfont{\itshape} 2786 \setcounter{secnumdepth}{3} 2787 \ifcase\ACM@format@nr 2788 \relax % manuscript 2789 \or % acmsmall 2790 \or % acmlarge 2791 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} 2792 \def\@subsecfont{\sffamily\large\section@raggedright} 2793 \or % acmtog 2794 \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} 2795 \def\@subsecfont{\sffamily\large\section@raggedright} 2796 \or % sigconf 2797 \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase} 2798 \def\@subsecfont{\bfseries\Large\section@raggedright} 2799 \or % siggraph 2800 \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase} 2801 \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright} 2802 \or % sigplan 2803 \def\@secfont{\bfseries\Large\section@raggedright} 2804 \def\@subsecfont{\bfseries\section@raggedright} 2805 \def\@subsubsecfont{\bfseries\section@raggedright} 2806 \def\@parfont{\bfseries\itshape} 2807 \def\@subparfont{\itshape} 2808 \or % sigchi 2809 \setcounter{secnumdepth}{1} 2810 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} 2811 \def\@subsecfont{\sffamily\bfseries\section@raggedright} 2812 \or % sigchi-a 2813 \setcounter{secnumdepth}{0} 2814 \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} 2815 \def\@subsecfont{\sffamily\bfseries\section@raggedright} 2816 \fi 2817 \def\@adddotafter#1{#1\@addpunct{.}} 2818 \def\@addspaceafter#1{#1\@addpunct{\enspace}} 2819 \providecommand*\@dotsep{4.5} 2820 \def\@acmplainbodyfont{\itshape} 2821 \def\@acmplainindent{\parindent} 2822 \def\@acmplainheadfont{\scshape} 2823 \def\@acmplainnotefont{\@empty} 2824 \ifcase\ACM@format@nr 2825 \relax % manuscript 2826 \or % acmsmall 2827 \or % acmlarge 2828 \or % acmtog 2829 \or % sigconf 2830 \or % siggraph 2831 \or % sigplan 2832 \def\@acmplainbodyfont{\itshape} 2833 \def\@acmplainindent{\z@} 2834 \def\@acmplainheadfont{\bfseries} 2835 \def\@acmplainnotefont{\normalfont} 2836 \or % sigchi 2837 \or % sigchi-a 2838 \fi 2839 \newtheoremstyle{acmplain}% 2840 {.5\baselineskip\@plus.2\baselineskip 2841 \@minus.2\baselineskip}% space above 2842 {.5\baselineskip\@plus.2\baselineskip 2843 \@minus.2\baselineskip}% space below 2844 {\@acmplainbodyfont}% body font 2845 {\@acmplainindent}% indent amount 2846 {\@acmplainheadfont}% head font 2847 {.}% punctuation after head 2848 {.5em}% spacing after head 2849 {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec 2850 \def\@acmdefinitionbodyfont{\normalfont} 2851 \def\@acmdefinitionindent{\parindent} 2852 \def\@acmdefinitionheadfont{\itshape} 2853 \def\@acmdefinitionnotefont{\@empty} 2854 \ifcase\ACM@format@nr 2855 \relax % manuscript 2856 \or % acmsmall 2857 \or % acmlarge 2858 \or % acmtog 2859 \or % sigconf 2860 \or % siggraph 2861 \or % sigplan 2862 \def\@acmdefinitionbodyfont{\normalfont} 2863 \def\@acmdefinitionindent{\z@} 2864 \def\@acmdefinitionheadfont{\bfseries} 2865 \def\@acmdefinitionnotefont{\normalfont} 2866 \or % sigchi 2867 \or % sigchi-a 2868 \fi 2869 \newtheoremstyle{acmdefinition}% 2870 {.5\baselineskip\@plus.2\baselineskip 2871 \@minus.2\baselineskip}% space above 2872 {.5\baselineskip\@plus.2\baselineskip 2873 \@minus.2\baselineskip}% space below 2874 {\@acmdefinitionbodyfont}% body font 2875 {\@acmdefinitionindent}% indent amount 2876 {\@acmdefinitionheadfont}% head font 2877 {.}% punctuation after head 2878 {.5em}% spacing after head 2879 {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec 2880 \theoremstyle{acmplain} 2881 \AtEndPreamble{% 2882 \if@ACM@acmthm 2883 \theoremstyle{acmplain} 2884 \@ifundefined{theorem}{% 2885 \newtheorem{theorem}{Theorem}[section] 2886 }{} 2887 \@ifundefined{conjecture}{% 2888 \newtheorem{conjecture}[theorem]{Conjecture} 2889 }{} 2890 \@ifundefined{proposition}{% 2891 \newtheorem{proposition}[theorem]{Proposition} 2892 }{} 2893 \@ifundefined{lemma}{% 2894 \newtheorem{lemma}[theorem]{Lemma} 2895 }{} 2896 \@ifundefined{corollary}{% 2897 \newtheorem{corollary}[theorem]{Corollary} 2898 }{} 2899 \theoremstyle{acmdefinition} 2900 \@ifundefined{example}{% 2901 \newtheorem{example}[theorem]{Example} 2902 }{} 2903 \@ifundefined{definition}{% 2904 \newtheorem{definition}[theorem]{Definition} 2905 }{} 2906 \fi 2907 \theoremstyle{acmplain} 2908 } 2909 \def\@proofnamefont{\scshape} 2910 \def\@proofindent{\indent} 2911 \ifcase\ACM@format@nr 2912 \relax % manuscript 2913 \or % acmsmall 2914 \or % acmlarge 2915 \or % acmtog 2916 \or % sigconf 2917 \or % siggraph 2918 \or % sigplan 2919 \def\@proofnamefont{\itshape} 2920 \def\@proofindent{\noindent} 2921 \or % sigchi 2922 \or % sigchi-a 2923 \fi 2924 \renewenvironment{proof}[1][\proofname]{\par 2925 \pushQED{\qed}% 2926 \normalfont \topsep6\p@\@plus6\p@\relax 2927 \trivlist 2928 \item[\@proofindent\hskip\labelsep 2929 {\@proofnamefont #1\@addpunct{.}}]\ignorespaces 2930 }{% 2931 \popQED\endtrivlist\@endpefalse 2932 } 2933 \AtEndPreamble{% 2934 \if@ACM@balance 2935 \ifcase\ACM@format@nr 2936 \relax % manuscript 2937 \global\@ACM@balancefalse 2938 \or % acmsmall 2939 \global\@ACM@balancefalse 2940 \or % acmlarge 2941 \global\@ACM@balancefalse 2942 \or % acmtog 2943 \RequirePackage{balance}% 2944 \or % sigconf 2945 \RequirePackage{balance}% 2946 \or % siggraph 2947 \RequirePackage{balance}% 2948 \or % sigplan 2949 \RequirePackage{balance}% 2950 \or % sigchi 2951 \RequirePackage{balance}% 2952 \or % sigchi-a 2953 \global\@ACM@balancefalse 2954 \fi 2955 \fi 2956 } 2957 \AtEndDocument{% 2958 \if@ACM@balance 2959 \if@twocolumn 2960 \balance 2961 \fi\fi} 2962 \newcommand\acksname{Acknowledgments} 2963 \specialcomment{acks}{% 2964 \begingroup 2965 \section*{\acksname} 2966 \phantomsection\addcontentsline{toc}{section}{\acksname} 2967 }{% 2968 \endgroup 2969 } 2970 \def\grantsponsor#1#2#3{#2} 2971 \newcommand\grantnum[3][]{#3% 2972 \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi} 2973 \AtEndPreamble{% 2974 \if@ACM@screen 2975 \includecomment{screenonly} 2976 \excludecomment{printonly} 2977 \else 2978 \excludecomment{screenonly} 2979 \includecomment{printonly} 2980 \fi 2981 \if@ACM@anonymous 2982 \excludecomment{anonsuppress} 2983 \excludecomment{acks} 2984 \else 2985 \includecomment{anonsuppress} 2986 \fi} 2987 \newcommand\showeprint[2][arxiv]{% 2988 \def\@tempa{#1}% 2989 \ifx\@tempa\@empty\def\@tempa{arxiv}\fi 2990 \def\@tempb{arxiv}% 2991 \ifx\@tempa\@tempb 2992 arXiv:\href{https://arxiv.org/abs/#2}{#2}\else arXiv:#2% 2993 \fi} 2994 \let\@vspace@orig=\@vspace 2995 \let\@vspacer@orig=\@vspacer 2996 \apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should 2997 only be used to provide space above/below surrounding 2998 objects}}{}{} 2999 \apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should 3000 only be used to provide space above/below surrounding 3001 objects}}{}{} 3002 \let\@vspace@acm=\@vspace 3003 \let\@vspacer@acm=\@vspacer 3004 \let\ACM@origbaselinestretch\baselinestretch 3005 \AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else 3006 \ClassError{\@classname}{An attempt to redefine 3007 \string\baselinestretch\space detected. Please do not do this for 3008 ACM submissions!}\fi} 3009 \normalsize\normalfont\frenchspacing 3010 \endinput 3011 %% 3012 %% End of file `acmart.cls'.