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