diff --git a/docs/acmart.bib b/docs/acmart.bib new file mode 100644 index 0000000000000000000000000000000000000000..c4ccd85f315146a5ac5cc92088880dd3a6477b0a --- /dev/null +++ b/docs/acmart.bib @@ -0,0 +1,89 @@ +@Misc{TeXFAQ, + title = {{UK} List of {\TeX} Frequently Asked Questions}, + author = {{UK \TeX{} Users Group}}, + year = 2019, + howpublished = {\url{https://texfaq.org}} +} + +@Manual{Downes04:amsart, + title = {The \textsf{amsart}, \textsf{amsproc}, and + \textsf{amsbook} document~classes}, + author = {Michael Downes and Barbara Beeton}, + organization = {American Mathematical Society}, + year = 2004, + month = aug, + note = {\url{http://www.ctan.org/pkg/amslatex}} +} + +@Manual{Fiorio15, + title = {{a}lgorithm2e.sty---package for algorithms}, + author = {Cristophe Fiorio}, + year = 2015, + month = oct, + note = {\url{http://www.ctan.org/pkg/algorithm2e}} +} + +@Manual{Brito09, + title = {The algorithms bundle}, + author = {Rog\'erio Brito}, + year = 2009, + month = aug, + note = {\url{http://www.ctan.org/pkg/algorithms}} +} + +@Manual{Heinz15, + title = {The Listings Package}, + author = {Carsten Heinz and Brooks Moses and Jobst Hoffmann}, + year = 2015, + month = jun, + note = {\url{http://www.ctan.org/pkg/listings}} +} + +@Manual{Fear05, + title = {Publication quality tables in {\LaTeX}}, + author = {Simon Fear}, + year = 2005, + month = apr, + note = {\url{http://www.ctan.org/pkg/booktabs}} +} + +@Manual{ACMIdentityStandards, + title = {{ACM} Visual Identity Standards}, + organization = {Association for Computing Machinery}, + year = 2007, + note = {\url{http://identitystandards.acm.org}} +} + +@Manual{Sommerfeldt13:Subcaption, + title = {The subcaption package}, + author = {Axel Sommerfeldt}, + year = 2013, + month = apr, + note = {\url{http://www.ctan.org/pkg/subcaption}} +} + +@Manual{Nomencl, + title = {A package to create a nomenclature}, + author = {Boris Veytsman and Bern Schandl and Lee Netherton + and C. V. Radhakrishnan}, + year = 2005, + month = sep, + note = {\url{http://www.ctan.org/pkg/nomencl}} +} + +@Manual{Talbot16:Glossaries, + title = {User Manual for glossaries.sty v4.44}, + author = {Nicola L. C. Talbot}, + year = 2019, + month = dec, + note = {\url{http://www.ctan.org/pkg/glossaries}} +} + +@Manual{Carlisle04:Textcase, + title = {The \textsl{textcase} package}, + author = {David Carlisle}, + month = oct, + year = 2004, + note = {\url{http://www.ctan.org/pkg/textcase}} +} + diff --git a/docs/acmart.cls b/docs/acmart.cls new file mode 100644 index 0000000000000000000000000000000000000000..113513059a5e47556ccdd9c859bf7f7c559df23d --- /dev/null +++ b/docs/acmart.cls @@ -0,0 +1,3012 @@ +%% +%% This is file `acmart.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% acmart.dtx (with options: `class') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from acmart.cls. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file acmart.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% \CharacterTable +%% {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 +%% 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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{acmart} +[2020/11/15 v1.75 Typesetting articles for the Association for Computing Machinery] +\def\@classname{acmart} +\InputIfFileExists{acmart-preload-hook.tex}{% + \ClassWarning{\@classname}{% + I am loading acmart-preload-hook.tex. You are fully responsible + for any problems from now on.}}{} +\RequirePackage{xkeyval} +\RequirePackage{xstring} +\RequirePackage{iftex} +\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{% + manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi, sigchi-a}[manuscript]{}{% + \ClassError{\@classname}{The option format must be manuscript, + acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi or sigchi-a}} +\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}} +\@DeclareACMFormat{manuscript} +\@DeclareACMFormat{acmsmall} +\@DeclareACMFormat{acmlarge} +\@DeclareACMFormat{acmtog} +\@DeclareACMFormat{sigconf} +\@DeclareACMFormat{siggraph} +\@DeclareACMFormat{sigplan} +\@DeclareACMFormat{sigchi} +\@DeclareACMFormat{sigchi-a} +\ExecuteOptionsX{format} +\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{% + \if@ACM@screen + \PackageInfo{\@classname}{Using screen mode}% + \else + \PackageInfo{\@classname}{Not using screen mode}% + \fi}{\PackageError{\@classname}{The option screen can be either true or + false}} +\ExecuteOptionsX{screen=false} +\define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{% + \if@ACM@urlbreakonhyphens + \PackageInfo{\@classname}{Using breaking urls on hyphens}% + \else + \PackageInfo{\@classname}{Not breaking urls on hyphens}% + \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or + false}} +\ExecuteOptionsX{urlbreakonhyphens=true} +\define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{% + \if@ACM@acmthm + \PackageInfo{\@classname}{Requiring acmthm}% + \else + \PackageInfo{\@classname}{Suppressing acmthm}% + \fi}{\PackageError{\@classname}{The option acmthm can be either true or + false}} +\ExecuteOptionsX{acmthm=true} +\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{% + \if@ACM@review + \PackageInfo{\@classname}{Using review mode}% + \AtBeginDocument{\@ACM@printfoliostrue}% + \else + \PackageInfo{\@classname}{Not using review mode}% + \fi}{\PackageError{\@classname}{The option review can be either true or + false}} +\ExecuteOptionsX{review=false} +\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{% + \if@ACM@authorversion + \PackageInfo{\@classname}{Using authorversion mode}% + \else + \PackageInfo{\@classname}{Not using authorversion mode}% + \fi}{\PackageError{\@classname}{The option authorversion can be either true or + false}} +\ExecuteOptionsX{authorversion=false} +\define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{% + \if@ACM@nonacm + \PackageInfo{\@classname}{Using nonacm mode}% + \AtBeginDocument{\@ACM@printacmreffalse}% + % in 'nonacm' mode we disable the "ACM Reference Format" + % printing by default, but this can be re-enabled by the + % user using \settopmatter{printacmref=true} + \else + \PackageInfo{\@classname}{Not using nonacm mode}% + \fi}{\PackageError{\@classname}{The option nonacm can be either true or + false}} +\ExecuteOptionsX{nonacm=false} +\define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{% + \PackageError{\@classname}{The option balance can be either true or + false}} +\ExecuteOptionsX{balance} +\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{% + \if@ACM@natbib + \PackageInfo{\@classname}{Explicitly selecting natbib mode}% + \else + \PackageInfo{\@classname}{Explicitly deselecting natbib mode}% + \fi}{\PackageError{\@classname}{The option natbib can be either true or + false}} +\ExecuteOptionsX{natbib=true} +\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{% + \if@ACM@anonymous + \PackageInfo{\@classname}{Using anonymous mode}% + \else + \PackageInfo{\@classname}{Not using anonymous mode}% + \fi}{\PackageError{\@classname}{The option anonymous can be either true or + false}} +\ExecuteOptionsX{anonymous=false} +\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{% + \if@ACM@timestamp + \PackageInfo{\@classname}{Using timestamp mode}% + \else + \PackageInfo{\@classname}{Not using timestamp mode}% + \fi}{\PackageError{\@classname}{The option timestamp can be either true or + false}} +\ExecuteOptionsX{timestamp=false} +\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{% + \if@ACM@authordraft + \PackageInfo{\@classname}{Using authordraft mode}% + \@ACM@timestamptrue + \@ACM@reviewtrue + \else + \PackageInfo{\@classname}{Not using authordraft mode}% + \fi}{\PackageError{\@classname}{The option authordraft can be either true or + false}} +\ExecuteOptionsX{authordraft=false} +\def\ACM@fontsize{} +\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}} +\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}} +\ProcessOptionsX +\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr} +\newif\if@ACM@manuscript +\newif\if@ACM@journal +\newif\if@ACM@journal@bibstrip +\newif\if@ACM@sigchiamode +\ifnum\ACM@format@nr=5\relax % siggraph +\ClassWarning{\@classname}{% + The format siggraph is now obsolete.\MessageBreak + I am switching to sigconf.} + \setkeys{acmart.cls}{format=sigconf} +\fi +\ifnum\ACM@format@nr=7\relax % sigchi +\ClassWarning{\@classname}{% + The format sigchi is now obsolete.\MessageBreak + I am switching to sigconf.} + \setkeys{acmart.cls}{format=sigconf} +\fi +\ifnum\ACM@format@nr=8\relax % sigchi +\ClassWarning{\@classname}{% + ACM SIGCHI has retired the SIGCHI-A template\MessageBreak + effective immediately. ACM is keeping this template\MessageBreak + option available to authors who are working on legacy\MessageBreak + documents only. ACM will not, under any circumstances,\MessageBreak + accept documents in this format for publication and\MessageBreak + will not offer technical support to the authors who use\MessageBreak + this template.\MessageBreak + ACM SIGCHI is directing Conference leaders and\MessageBreak + authors to publish their articles using the SIGCONF\MessageBreak + template call.} +\fi +\ifnum\ACM@format@nr=0\relax + \@ACM@manuscripttrue +\else + \@ACM@manuscriptfalse +\fi +\@ACM@sigchiamodefalse +\ifcase\ACM@format@nr +\relax % manuscript + \@ACM@journaltrue +\or % acmsmall + \@ACM@journaltrue +\or % acmlarge + \@ACM@journaltrue +\or % acmtog + \@ACM@journaltrue +\or % sigconf + \@ACM@journalfalse +\or % siggraph + \@ACM@journalfalse + \or % sigplan + \@ACM@journalfalse + \or % sigchi + \@ACM@journalfalse +\or % sigchi-a + \@ACM@journalfalse + \@ACM@sigchiamodetrue +\fi +\if@ACM@journal + \@ACM@journal@bibstriptrue +\else + \@ACM@journal@bibstripfalse +\fi +\ifx\ACM@fontsize\@empty + \ifcase\ACM@format@nr + \relax % manuscript + \def\ACM@fontsize{9pt}% + \or % acmsmall + \def\ACM@fontsize{10pt}% + \or % acmlarge + \def\ACM@fontsize{10pt}% + \or % acmtog + \def\ACM@fontsize{9pt}% + \or % sigconf + \def\ACM@fontsize{9pt}% + \or % siggraph + \def\ACM@fontsize{9pt}% + \or % sigplan + \def\ACM@fontsize{10pt}% + \or % sigchi + \def\ACM@fontsize{9pt}% + \or % sigchi-a + \def\ACM@fontsize{10pt}% + \fi +\fi +\ClassInfo{\@classname}{Using fontsize \ACM@fontsize} +\LoadClass[\ACM@fontsize, reqno]{amsart} +\RequirePackage{microtype} +\RequirePackage{etoolbox} +\RequirePackage{booktabs} +\RequirePackage{refcount} +\RequirePackage{totpages} +\RequirePackage{environ} +\if@ACM@manuscript +\RequirePackage{setspace} +\onehalfspacing +\fi +\RequirePackage{textcase} +\if@ACM@natbib + \RequirePackage{natbib} + \renewcommand{\bibsection}{% + \section*{\refname}% + \phantomsection\addcontentsline{toc}{section}{\refname}% + } + \renewcommand{\bibfont}{\bibliofont} + \renewcommand\setcitestyle[1]{ + \@for\@tempa:=#1\do + {\def\@tempb{round}\ifx\@tempa\@tempb + \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi + \def\@tempb{square}\ifx\@tempa\@tempb + \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi + \def\@tempb{angle}\ifx\@tempa\@tempb + \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi + \def\@tempb{curly}\ifx\@tempa\@tempb + \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi + \def\@tempb{semicolon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{colon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{comma}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{,}\fi + \def\@tempb{authoryear}\ifx\@tempa\@tempb + \NAT@numbersfalse\fi + \def\@tempb{numbers}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@superfalse\fi + \def\@tempb{super}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@supertrue\fi + \def\@tempb{nobibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@gobble\fi + \def\@tempb{bibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@citestyle\fi + \def\@tempb{sort}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\fi + \def\@tempb{nosort}\ifx\@tempa\@tempb + \def\NAT@sort{\z@}\fi + \def\@tempb{compress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\@ne}\fi + \def\@tempb{nocompress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\z@}\fi + \def\@tempb{sort&compress}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi + \def\@tempb{mcite}\ifx\@tempa\@tempb + \let\NAT@merge\@ne\fi + \def\@tempb{merge}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi + \def\@tempb{elide}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi + \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb + \NAT@longnamestrue\fi + \def\@tempb{nonamebreak}\ifx\@tempa\@tempb + \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi + \expandafter\NAT@find@eq\@tempa=\relax\@nil + \if\@tempc\relax\else + \expandafter\NAT@rem@eq\@tempc + \def\@tempb{open}\ifx\@tempa\@tempb + \xdef\NAT@open{\@tempc}\fi + \def\@tempb{close}\ifx\@tempa\@tempb + \xdef\NAT@close{\@tempc}\fi + \def\@tempb{aysep}\ifx\@tempa\@tempb + \xdef\NAT@aysep{\@tempc}\fi + \def\@tempb{yysep}\ifx\@tempa\@tempb + \xdef\NAT@yrsep{\@tempc}\fi + \def\@tempb{notesep}\ifx\@tempa\@tempb + \xdef\NAT@cmt{\@tempc}\fi + \def\@tempb{citesep}\ifx\@tempa\@tempb + \xdef\NAT@sep{\@tempc}\fi + \fi + }% + \NAT@@setcites + } + \renewcommand\citestyle[1]{% + \ifcsname bibstyle@#1\endcsname% + \csname bibstyle@#1\endcsname\let\bibstyle\@gobble% + \else% + \@latex@error{Undefined `#1' citestyle}% + \fi + }% +\fi +\newcommand{\bibstyle@acmauthoryear}{% + \setcitestyle{% + authoryear,% + open={[},close={]},citesep={;},% + aysep={},yysep={,},% + notesep={, }}} +\newcommand{\bibstyle@acmnumeric}{% + \setcitestyle{% + numbers,sort&compress,% + open={[},close={]},citesep={,},% + notesep={, }}} +\if@ACM@natbib +\citestyle{acmnumeric} +\fi +\def\@startsection#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@sect#1#2#3#4#5#6[#7]#8{% + \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname\space}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \ignorespaces} +\def\@seccntformat#1{\csname the#1\endcsname\quad} +\def\@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +\def\@starttoc#1#2{\begingroup\makeatletter + \setTrue{#1}% + \par\removelastskip\vskip\z@skip + \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}% + {.5\linespacing}{\centering\contentsnamefont}{#2}% + \@input{\jobname.#1}% + \if@filesw + \@xp\newwrite\csname tf@#1\endcsname + \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax + \fi + \global\@nobreakfalse \endgroup + \addvspace{32\p@\@plus14\p@}% +} +\def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}} +\def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}} +\def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}} +\def\@makefntext{\noindent\@makefnmark} +\if@ACM@sigchiamode +\long\def\@footnotetext#1{\marginpar{% + \reset@font\small + \interlinepenalty\interfootnotelinepenalty + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}}% +\fi +\long\def\@mpfootnotetext#1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \color@begingroup\centering + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} +\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} +\let\@footnotemark@nolink\@footnotemark +\let\@footnotetext@nolink\@footnotetext +\RequirePackage[bookmarksnumbered,unicode]{hyperref} +\pdfstringdefDisableCommands{% + \def\addtocounter#1#2{}% + \def\unskip{}% + \def\textbullet{- }% + \def\textrightarrow{ -> }% + \def\footnotemark{}% +} +\urlstyle{rm} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \urlstyle{sf} +\or % sigchi +\or % sigchi-a + \urlstyle{sf} +\fi +\AtEndPreamble{% + \if@ACM@urlbreakonhyphens + \def\do@url@hyp{\do\-}% + \fi + \if@ACM@screen + \hypersetup{colorlinks, + linkcolor=ACMPurple, + citecolor=ACMPurple, + urlcolor=ACMDarkBlue, + filecolor=ACMDarkBlue} + \else + \hypersetup{hidelinks} + \fi + \hypersetup{pdflang={en}, + pdfdisplaydoctitle}} +\RequirePackage{hyperxmp} +\if@ACM@natbib + \let\citeN\cite + \let\cite\citep + \let\citeANP\citeauthor + \let\citeNN\citeyearpar + \let\citeyearNP\citeyear + \let\citeNP\citealt + \DeclareRobustCommand\citeA + {\begingroup\NAT@swafalse + \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}% + \providecommand\newblock{}% +\else + \AtBeginDocument{% + \let\shortcite\cite% + \providecommand\citename[1]{#1}} +\fi +\newcommand\shortcite[2][]{% + \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi} +\def\bibliographystyle#1{% + \ifx\@begindocumenthook\@undefined\else + \expandafter\AtBeginDocument + \fi + {\if@filesw + \immediate\write\@auxout{\string\bibstyle{#1}}% + \fi}} +\RequirePackage{graphicx} +\RequirePackage[prologue]{xcolor} +\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1} +\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0} +\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01} +\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0} +\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0} +\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19} +\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15} +\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21} +\if@ACM@authordraft + \RequirePackage{draftwatermark} + \SetWatermarkFontSize{0.5in} + \SetWatermarkColor[gray]{.9} + \SetWatermarkText{\parbox{12em}{\centering + Unpublished working draft.\\ + Not for distribution.}} +\else + \if@ACM@sigchiamode + \if@ACM@nonacm\else + \RequirePackage{draftwatermark} + \SetWatermarkFontSize{0.5in} + \SetWatermarkColor[gray]{.9} + \SetWatermarkText{\parbox{12em}{\centering + Legacy document. \\ + Not for publication in an ACM venue}} + \fi + \fi +\fi +\RequirePackage{geometry} +\ifcase\ACM@format@nr +\relax % manuscript + \geometry{letterpaper,head=13pt, + marginparwidth=6pc,heightrounded}% +\or % acmsmall + \geometry{twoside=true, + includeheadfoot, head=13pt, foot=2pc, + paperwidth=6.75in, paperheight=10in, + top=58pt, bottom=44pt, inner=46pt, outer=46pt, + marginparwidth=2pc,heightrounded + }% +\or % acmlarge + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, + top=78pt, bottom=114pt, inner=81pt, outer=81pt, + marginparwidth=4pc,heightrounded + }% +\or % acmtog + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=24pt, + top=52pt, bottom=75pt, inner=52pt, outer=52pt, + marginparwidth=2pc,heightrounded + }% +\or % sigconf + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % siggraph + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigplan + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot=false, columnsep=2pc, + top=1in, bottom=1in, inner=0.75in, outer=0.75in, + marginparwidth=2pc,heightrounded + }% +\or % sigchi + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=66pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigchi-a + \geometry{twoside=false, head=13pt, + paperwidth=11in, paperheight=8.5in, + includeheadfoot, marginparsep=72pt, + marginparwidth=170pt, columnsep=20pt, + top=72pt, bottom=72pt, left=314pt, right=72pt + }% + \@mparswitchfalse + \reversemarginpar +\fi +\setlength\parindent{10\p@} +\setlength\parskip{\z@} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog + \setlength\parindent{9\p@}% +\or % sigconf +\or % siggraph +\or % sigplan +\or % sigchi +\or % sigchi-a +\fi +\setlength\normalparindent{\parindent} +\def\copyrightpermissionfootnoterule{\kern-3\p@ + \hrule \@width \columnwidth \kern 2.6\p@} +\RequirePackage{manyfoot} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{authorsaddresses} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{copyrightpermission} +\def\footnoterule{\kern-3\p@ + \hrule \@width 4pc \kern 2.6\p@} +\def\endminipage{% + \par + \unskip + \ifvoid\@mpfootins\else + \vskip\skip\@mpfootins + \normalcolor + \unvbox\@mpfootins + \fi + \@minipagefalse + \color@endgroup + \egroup + \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}} +\def\@textbottom{\vskip \z@ \@plus 1pt} +\let\@texttop\relax +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog + \flushbottom +\or % sigconf + \flushbottom +\or % siggraph + \flushbottom +\or % sigplan + \flushbottom +\or % sigchi + \flushbottom +\or % sigchi-a +\fi +\ifPDFTeX +\input{glyphtounicode} +\pdfglyphtounicode{f_f}{FB00} +\pdfglyphtounicode{f_f_i}{FB03} +\pdfglyphtounicode{f_f_l}{FB04} +\pdfglyphtounicode{f_i}{FB01} +\pdfglyphtounicode{t_t}{0074 0074} +\pdfglyphtounicode{f_t}{0066 0074} +\pdfglyphtounicode{T_h}{0054 0068} +\pdfgentounicode=1 +\RequirePackage{cmap} +\fi +\newif\if@ACM@newfonts +\@ACM@newfontstrue +\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not + have the libertine package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not + have the inconsolata (zi4.sty) package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not + have the newtxmath package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\if@ACM@newfonts + \RequirePackage[T1]{fontenc} + % Note that the order in which packages are loaded matters, + % and the correct order depends on the LaTeX engine used. + % See https://github.com/borisveytsman/acmart/issues/402 + % and https://github.com/borisveytsman/acmart/issues/410 + \ifxetex + \RequirePackage[libertine]{newtxmath} + \RequirePackage[tt=false]{libertine} + \setmonofont[StylisticSet=3]{inconsolata} + \else + \ifluatex + \RequirePackage[libertine]{newtxmath} + \RequirePackage[tt=false]{libertine} + \setmonofont[StylisticSet=3]{inconsolata} + \else + \RequirePackage[tt=false, type1=true]{libertine} + \RequirePackage[varqu]{zi4} + \RequirePackage[libertine]{newtxmath} + \fi + \fi +\fi +\let\liningnums\@undefined +\AtEndPreamble{% + \DeclareTextFontCommand{\liningnums}{\libertineLF}} +\if@ACM@sigchiamode + \renewcommand{\familydefault}{\sfdefault} +\fi +\newif\if@Description@present +\@Description@presenttrue +\newif\if@undescribed@images +\@undescribed@imagesfalse +\newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces} +\AtEndDocument{\if@undescribed@images + \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi} +\AtBeginEnvironment{figure}{\@Description@presentfalse + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{figure*}{\@Description@presentfalse + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtEndEnvironment{figure}{\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description}\fi} +\AtEndEnvironment{figure*}{\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description}\fi} +\AtBeginEnvironment{table}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} + +\RequirePackage{caption, float} +\captionsetup[table]{position=top} +\if@ACM@journal + \captionsetup{labelfont={sf, small}, + textfont={sf, small}, margin=\z@} + \captionsetup[figure]{name={Fig.}} +\else + \captionsetup{labelfont={bf}, + textfont={bf}, labelsep=colon, margin=\z@} + \ifcase\ACM@format@nr + \relax % manuscript + \or % acmsmall + \or % acmlarge + \or % acmtog + \or % sigconf + \or % siggraph + \captionsetup{textfont={it}} + \or % sigplan + \captionsetup{labelfont={bf}, + textfont={normalfont}, labelsep=period, margin=\z@} + \or % sigchi + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \captionsetup[table]{labelfont={bf, small}, + textfont={bf, small}} + \or % sigchi-a + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \captionsetup[table]{labelfont={bf, small}, + textfont={bf, small}} + \fi +\fi +\newfloat{sidebar}{}{sbar} +\floatname{sidebar}{Sidebar} +\renewenvironment{sidebar}{\Collect@Body\@sidebar}{} +\long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}% + \marginpar{\small#1}\egroup} +\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{} +\long\def\@marginfigure#1{\bgroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \captionsetup{type=figure}% + \marginpar{\@Description@presentfalse\centering + \small#1\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description} + \fi}% + \egroup} +\newenvironment{margintable}{\Collect@Body\@margintable}{} +\long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\captionsetup{type=table}% + \marginpar{\centering\small#1}\egroup} +\newdimen\fulltextwidth +\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep) +\if@ACM@sigchiamode +\def\@dblfloat{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth + \let\@endfloatbox\@endwidefloatbox + \def\@fpsadddefault{\def\@fps{tp}}% + \@float} +\fi +\if@ACM@sigchiamode +\def\end@dblfloat{% + \end@float\egroup} +\fi +\def\@endwidefloatbox{% + \par\vskip\z@skip + \@minipagefalse + \outer@nobreak + \egroup + \color@endbox + \global\setbox\@currbox=\vbox{\moveleft + \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}% + \wd\@currbox=\textwidth +} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan +\def\labelenumi{\theenumi.} +\def\labelenumii{\theenumii.} +\def\labelenumiii{\theenumiii.} +\def\labelenumiv{\theenumiv.} +\or % sigchi +\or % sigchi-a +\fi +\newdimen\@ACM@labelwidth +\AtBeginDocument{% + \setlength\labelsep{4pt} + \setlength{\@ACM@labelwidth}{6.5pt} + + %% First-level list: when beginning after the first line of an + %% indented paragraph or ending before an indented paragraph, labels + %% should not hang to the left of the preceding/following text. + \setlength\leftmargini{\z@} + \addtolength\leftmargini{\parindent} + \addtolength\leftmargini{2\labelsep} + \addtolength\leftmargini{\@ACM@labelwidth} + + %% Second-level and higher lists. + \setlength\leftmarginii{\z@} + \addtolength\leftmarginii{0.5\labelsep} + \addtolength\leftmarginii{\@ACM@labelwidth} + \setlength\leftmarginiii{\leftmarginii} + \setlength\leftmarginiv{\leftmarginiii} + \setlength\leftmarginv{\leftmarginiv} + \setlength\leftmarginvi{\leftmarginv} + \@listi} +\newskip\listisep +\listisep\smallskipamount +\def\@listI{\leftmargin\leftmargini + \labelwidth\leftmargini \advance\labelwidth-\labelsep + \listparindent\z@ + \topsep\listisep} +\let\@listi\@listI +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii \advance\labelwidth-\labelsep + \topsep\z@skip} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii \advance\labelwidth-\labelsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv \advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv \advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi \advance\labelwidth-\labelsep} +\renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1} +\renewenvironment{description}{\list{}{% + \labelwidth\@ACM@labelwidth + \let\makelabel\descriptionlabel}% +}{ + \endlist +} +\let\enddescription=\endlist % for efficiency +\newif\if@ACM@maketitle@typeset +\@ACM@maketitle@typesetfalse +\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{% + CIE,% + CSUR,% + DGOV,% + DTRAP,% + HEALTH,% + IMWUT,% + JACM,% + JDIQ,% + JEA,% + JERIC,% + JETC,% + JOCCH,% + PACMCGIT,% + PACMHCI,% + PACMPL,% + POMACS,% + TAAS,% + TACCESS,% + TACO,% + TALG,% + TALLIP,% + TAP,% + TCPS,% + TDS,% + TEAC,% + TECS,% + TELO,% + THRI,% + TIIS,% + TIOT,% + TISSEC,% + TIST,% + TKDD,% + TMIS,% + TOCE,% + TOCHI,% + TOCL,% + TOCS,% + TOCT,% + TODAES,% + TODS,% + TOG,% + TOIS,% + TOIT,% + TOMACS,% + TOMM,% + TOMPECS,% + TOMS,% + TOPC,% + TOPS,% + TOPLAS,% + TOS,% + TOSEM,% + TOSN,% + TQC,% + TRETS,% + TSAS,% + TSC,% + TSLP,% + TWEB,% + FACMP% +}{% +\ifcase\@journalCode@nr +\relax % CIE + \def\@journalName{ACM Computers in Entertainment}% + \def\@journalNameShort{ACM Comput. Entertain.}% + \def\@permissionCodeOne{1544-3574}% +\or % CSUR + \def\@journalName{ACM Computing Surveys}% + \def\@journalNameShort{ACM Comput. Surv.}% + \def\@permissionCodeOne{0360-0300}% +\or % DGOV + \def\@journalName{Digital Government: Research and Practice}% + \def\@journalNameShort{Digit. Gov. Res. Pract.}% + \def\@permissionCodeOne{2639-0175}% +\or % DTRAP + \def\@journalName{Digital Threats: Research and Practice}% + \def\@journalNameShort{Digit. Threat. Res. Pract.}% + \def\@permissionCodeOne{2576-5337}% +\or % HEALTH + \def\@journalName{ACM Transactions on Computing for Healthcare}% + \def\@journalNameShort{ACM Trans. Comput. Healthcare}% + \def\@permissionCodeOne{2637-8051}% +\or % IMWUT + \def\@journalName{Proceedings of the ACM on Interactive, Mobile, + Wearable and Ubiquitous Technologies}% + \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}% + \def\@permissionCodeOne{2474-9567}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % JACM + \def\@journalName{Journal of the ACM}% + \def\@journalNameShort{J. ACM}% + \def\@permissionCodeOne{0004-5411}% +\or % JDIQ + \def\@journalName{ACM Journal of Data and Information Quality}% + \def\@journalNameShort{ACM J. Data Inform. Quality}% + \def\@permissionCodeOne{1936-1955}% +\or % JEA + \def\@journalName{ACM Journal of Experimental Algorithmics}% + \def\@journalNameShort{ACM J. Exp. Algor.}% + \def\@permissionCodeOne{1084-6654}% +\or % JERIC + \def\@journalName{ACM Journal of Educational Resources in Computing}% + \def\@journalNameShort{ACM J. Edu. Resources in Comput.}% + \def\@permissionCodeOne{1073-0516}% +\or % JETC + \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}% + \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}% + \def\@permissionCodeOne{1550-4832}% +\or % JOCCH + \def\@journalName{ACM Journal on Computing and Cultural Heritage}% + \def\@journalNameShort{ACM J. Comput. Cult. Herit.}% +\or % PACMCGIT + \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}% + \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}% + \def\@permissionCodeOne{2577-6193}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % PACMHCI + \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}% + \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}% + \def\@permissionCodeOne{2573-0142}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % PACMPL + \def\@journalName{Proceedings of the ACM on Programming Languages}% + \def\@journalNameShort{Proc. ACM Program. Lang.}% + \def\@permissionCodeOne{2475-1421}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % POMACS + \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}% + \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}% + \def\@permissionCodeOne{2476-1249}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % TAAS + \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}% + \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}% + \def\@permissionCodeOne{1556-4665}% +\or % TACCESS + \def\@journalName{ACM Transactions on Accessible Computing}% + \def\@journalNameShort{ACM Trans. Access. Comput.}% + \def\@permissionCodeOne{1936-7228}% +\or % TACO + \def\@journalName{ACM Transactions on Architecture and Code Optimization}% + \def\@journalNameShort{ACM Trans. Arch. Code Optim.}% +\or % TALG + \def\@journalName{ACM Transactions on Algorithms}% + \def\@journalNameShort{ACM Trans. Algor.}% + \def\@permissionCodeOne{1549-6325}% +\or % TALLIP + \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}% + \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}% + \def\@permissionCodeOne{2375-4699}% +\or % TAP + \def\@journalName{ACM Transactions on Applied Perception}% +\or % TCPS + \def\@journalName{ACM Transactions on Cyber-Physical Systems}% +\or % TDS + \def\@journalName{ACM/IMS Transactions on Data Science}% + \def\@journalNameShort{ACM/IMS Trans. Data Sci.}% + \def\@permissionCodeOne{2577-3224}% +\or % TEAC + \def\@journalName{ACM Transactions on Economics and Computation}% +\or % TECS + \def\@journalName{ACM Transactions on Embedded Computing Systems}% + \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}% + \def\@permissionCodeOne{1539-9087}% +\or % TELO + \def\@journalName{ACM Transactions on Evolutionary Learning}% + \def\@journalNameShort{ACM Trans. Evol. Learn.}% + \def\@permissionCodeOne{2688-3007}% +\or % THRI + \def\@journalName{ACM Transactions on Human-Robot Interaction}% + \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}% + \def\@permissionCodeOne{2573-9522}% +\or % TIIS + \def\@journalName{ACM Transactions on Interactive Intelligent Systems}% + \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}% + \def\@permissionCodeOne{2160-6455}% +\or % TIOT + \def\@journalName{ACM Transactions on Internet of Things}% + \def\@journalNameShort{ACM Trans. Internet Things}% + \def\@permissionCodeOne{2577-6207}% +\or % TISSEC + \def\@journalName{ACM Transactions on Information and System Security}% + \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}% + \def\@permissionCodeOne{1094-9224}% +\or % TIST + \def\@journalName{ACM Transactions on Intelligent Systems and Technology}% + \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}% + \def\@permissionCodeOne{2157-6904}% +\or % TKDD + \def\@journalName{ACM Transactions on Knowledge Discovery from Data}% + \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}% + \def\@permissionCodeOne{1556-4681}% +\or % TMIS + \def\@journalName{ACM Transactions on Management Information Systems}% + \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}% + \def\@permissionCodeOne{2158-656X}% +\or % TOCE + \def\@journalName{ACM Transactions on Computing Education}% + \def\@journalNameShort{ACM Trans. Comput. Educ.}% + \def\@permissionCodeOne{1946-6226}% +\or % TOCHI + \def\@journalName{ACM Transactions on Computer-Human Interaction}% + \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}% + \def\@permissionCodeOne{1073-0516}% +\or % TOCL + \def\@journalName{ACM Transactions on Computational Logic}% + \def\@journalNameShort{ACM Trans. Comput. Logic}% + \def\@permissionCodeOne{1529-3785}% +\or % TOCS + \def\@journalName{ACM Transactions on Computer Systems}% + \def\@journalNameShort{ACM Trans. Comput. Syst.}% + \def\@permissionCodeOne{0734-2071}% +\or % TOCT + \def\@journalName{ACM Transactions on Computation Theory}% + \def\@journalNameShort{ACM Trans. Comput. Theory}% + \def\@permissionCodeOne{1942-3454}% +\or % TODAES + \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}% + \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}% + \def\@permissionCodeOne{1084-4309}% +\or % TODS + \def\@journalName{ACM Transactions on Database Systems}% + \def\@journalNameShort{ACM Trans. Datab. Syst.}% + \def\@permissionCodeOne{0362-5915}% +\or % TOG + \def\@journalName{ACM Transactions on Graphics}% + \def\@journalNameShort{ACM Trans. Graph.}% + \def\@permissionCodeOne{0730-0301} +\or % TOIS + \def\@journalName{ACM Transactions on Information Systems}% + \def\@permissionCodeOne{1046-8188}% +\or % TOIT + \def\@journalName{ACM Transactions on Internet Technology}% + \def\@journalNameShort{ACM Trans. Internet Technol.}% + \def\@permissionCodeOne{1533-5399}% +\or % TOMACS + \def\@journalName{ACM Transactions on Modeling and Computer Simulation}% + \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}% +\or % TOMM + \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}% + \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}% + \def\@permissionCodeOne{1551-6857}% + \def\@permissionCodeTwo{0100}% +\or % TOMPECS + \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}% + \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}% + \def\@permissionCodeOne{2376-3639}% +\or % TOMS + \def\@journalName{ACM Transactions on Mathematical Software}% + \def\@journalNameShort{ACM Trans. Math. Softw.}% + \def\@permissionCodeOne{0098-3500}% +\or % TOPC + \def\@journalName{ACM Transactions on Parallel Computing}% + \def\@journalNameShort{ACM Trans. Parallel Comput.}% + \def\@permissionCodeOne{1539-9087}% +\or % TOPS + \def\@journalName{ACM Transactions on Privacy and Security}% + \def\@journalNameShort{ACM Trans. Priv. Sec.}% + \def\@permissionCodeOne{2471-2566}% +\or % TOPLAS + \def\@journalName{ACM Transactions on Programming Languages and Systems}% + \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}% + \def\@permissionCodeOne{0164-0925}% +\or % TOS + \def\@journalName{ACM Transactions on Storage}% + \def\@journalNameShort{ACM Trans. Storage}% + \def\@permissionCodeOne{1553-3077}% +\or % TOSEM + \def\@journalName{ACM Transactions on Software Engineering and Methodology}% + \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}% + \def\@permissionCodeOne{1049-331X}% +\or % TOSN + \def\@journalName{ACM Transactions on Sensor Networks}% + \def\@journalNameShort{ACM Trans. Sensor Netw.}% + \def\@permissionCodeOne{1550-4859}% +\or % TQC + \def\@journalName{ACM Transactions on Quantum Computing}% + \def\@journalNameShort{ACM Trans. Quantum Comput.}% + \def\@permissionCodeOne{2643-6817}% +\or % TRETS + \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}% + \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}% + \def\@permissionCodeOne{1936-7406}% +\or % TSAS + \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}% + \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}% + \def\@permissionCodeOne{2374-0353}% +\or % TSC + \def\@journalName{ACM Transactions on Social Computing}% + \def\@journalNameShort{ACM Trans. Soc. Comput.}% + \def\@permissionCodeOne{2469-7818}% +\or % TSLP + \def\@journalName{ACM Transactions on Speech and Language Processing}% + \def\@journalNameShort{ACM Trans. Speech Lang. Process.}% + \def\@permissionCodeOne{1550-4875}% +\or % TWEB + \def\@journalName{ACM Transactions on the Web}% + \def\@journalNameShort{ACM Trans. Web}% + \def\@permissionCodeOne{1559-1131}% +\else % FACMP, a dummy journal + \def\@journalName{Forthcoming ACM Publication}% + \def\@journalNameShort{ACM Forthcoming}% + \def\@permissionCodeOne{XXXX-XXXX}% +\fi +\ClassInfo{\@classname}{Using journal code \@journalCode}% +}{% + \ClassError{\@classname}{Incorrect journal #1}% +}% +\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}% + \global\@ACM@journal@bibstriptrue} +\def\@journalCode@nr{0} +\def\@journalName{}% +\def\@journalNameShort{\@journalName}% +\def\@permissionCodeOne{XXXX-XXXX}% +\def\@permissionCodeTwo{}% +\newcommand\acmConference[4][]{% + \gdef\acmConference@shortname{#1}% + \gdef\acmConference@name{#2}% + \gdef\acmConference@date{#3}% + \gdef\acmConference@venue{#4}% + \ifx\acmConference@shortname\@empty + \gdef\acmConference@shortname{#2}% + \fi + \global\@ACM@journal@bibstripfalse +} +\if@ACM@journal\else +\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington, + DC, USA}% +\fi +\def\acmBooktitle#1{\gdef\@acmBooktitle{#1}} +\acmBooktitle{Proceedings of \acmConference@name + \ifx\acmConference@name\acmConference@shortname\else + \ (\acmConference@shortname)\fi} +\def\@editorsAbbrev{(Ed.)} +\def\@acmEditors{} +\def\editor#1{\ifx\@acmEditors\@empty + \gdef\@acmEditors{#1}% + \else + \gdef\@editorsAbbrev{(Eds.)}% + \g@addto@macro\@acmEditors{\and#1}% +\fi} +\def\subtitle#1{\def\@subtitle{#1}} +\subtitle{} +\newcount\num@authorgroups +\num@authorgroups=0\relax +\newcount\num@authors +\num@authors=0\relax +\newif\if@insideauthorgroup +\@insideauthorgroupfalse +\renewcommand\author[2][]{% + \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several + authors in the same \string\author\space macro!}}{}% + \global\advance\num@authors by 1\relax + \if@insideauthorgroup\else + \global\advance\num@authorgroups by 1\relax + \global\@insideauthorgrouptrue + \fi + \ifx\addresses\@empty + \if@ACM@anonymous + \gdef\addresses{\@author{Anonymous Author(s)% + \ifx\@acmSubmissionID\@empty\else\\Submission Id: + \@acmSubmissionID\fi}}% + \gdef\authors{Anonymous Author(s)}% + \else + \gdef\addresses{\@author{#2}}% + \gdef\authors{#2}% + \fi + \else + \if@ACM@anonymous\else + \g@addto@macro\addresses{\and\@author{#2}}% + \g@addto@macro\authors{\and#2}% + \fi + \fi + \if@ACM@anonymous + \ifx\shortauthors\@empty + \gdef\shortauthors{Anon. + \ifx\@acmSubmissionID\@empty\else Submission Id: + \@acmSubmissionID\fi}% + \fi + \else + \def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\shortauthors\@empty + \gdef\shortauthors{#2}% + \else + \g@addto@macro\shortauthors{\and#2}% + \fi + \else + \ifx\shortauthors\@empty + \gdef\shortauthors{#1}% + \else + \g@addto@macro\shortauthors{\and#1}% + \fi + \fi + \fi} +\newcommand{\affiliation}[2][]{% + \global\@insideauthorgroupfalse + \if@ACM@anonymous\else + \g@addto@macro\addresses{\affiliation{#1}{#2}}% + \fi} +\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}% +[true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}} +\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}} +\def\@additionalaffiliation#1{\bgroup + \def\position##1{\ignorespaces}% + \def\institution##1{##1\ignorespaces}% + \def\department{\@ifnextchar[{\@department}{\@department[]}}% + \def\@department[##1]##2{\unskip, ##2\ignorespaces}% + \let\streetaddress\position + \let\city\position + \let\state\position + \let\postcode\position + \let\country\position + Also with #1\unskip.\egroup} +\renewcommand{\email}[2][]{% + \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several + addresses in the same \string\email\space macro!}}{}% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\email{#1}{#2}}% + \fi} +\def\orcid#1{\unskip\ignorespaces} +\def\authorsaddresses#1{\def\@authorsaddresses{#1}} +\authorsaddresses{\@mkauthorsaddresses} +\def\@titlenotes{} +\def\titlenote#1{% + \g@addto@macro\@title{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@titlenotes{% + \stepcounter{footnote}\footnotetext{Title note}}% + \else + \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}% + \fi} +\def\@subtitlenotes{} +\def\subtitlenote#1{% + \g@addto@macro\@subtitle{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{Subtitle note}}% + \else + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +\def\@authornotes{} +\def\authornote#1{% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\@authornotemark}% + \g@addto@macro\@authornotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +\newcommand\authornotemark[1][\relax]{% + \ifx#1\relax\relax\relax + \g@addto@macro\addresses{\@authornotemark}% + \else + \g@addto@macro\addresses{\@@authornotemark{#1}}% + \fi} +\def\acmVolume#1{\def\@acmVolume{#1}} +\acmVolume{1} +\def\acmNumber#1{\def\@acmNumber{#1}} +\acmNumber{1} +\def\acmArticle#1{\def\@acmArticle{#1}} +\acmArticle{} +\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}} +\acmArticleSeq{\@acmArticle} +\def\acmYear#1{\def\@acmYear{#1}} +\acmYear{\the\year} +\def\acmMonth#1{\def\@acmMonth{#1}} +\acmMonth{\the\month} +\def\@acmPubDate{\ifcase\@acmMonth\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or + December\fi~\@acmYear} +\def\acmPrice#1{\def\@acmPrice{#1}} +\acmPrice{15.00} +\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}} +\acmSubmissionID{} +\def\acmISBN#1{\def\@acmISBN{#1}} +\acmISBN{978-x-xxxx-xxxx-x/YY/MM} +\def\acmDOI#1{\def\@acmDOI{#1}} +\acmDOI{10.1145/nnnnnnn.nnnnnnn} +\newif\if@ACM@badge +\@ACM@badgefalse +\newlength\@ACM@badge@width +\setlength\@ACM@badge@width{5pc} +\newlength\@ACM@title@width +\newlength\@ACM@badge@skip +\setlength\@ACM@badge@skip{1pc} +\newcommand\acmBadgeR[2][]{\@ACM@badgetrue + \def\@acmBadgeR@url{#1}% + \def\@acmBadgeR@image{#2}} +\def\@acmBadgeR@url{} +\def\@acmBadgeR@image{} +\newcommand\acmBadgeL[2][]{\@ACM@badgetrue + \def\@acmBadgeL@url{#1}% + \def\@acmBadgeL@image{#2}} +\def\@acmBadgeL@url{} +\def\@acmBadgeL@image{} +\def\startPage#1{\def\@startPage{#1}} +\startPage{} +\def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is + obsolete. I am going to ignore it}} +\def\keywords#1{\def\@keywords{#1}} +\let\@keywords\@empty +\AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty + \ifnum\getrefnumber{TotPages}>2\relax + \ClassWarningNoLine{\@classname}{ACM keywords are mandatory + for papers over two pages}% + \fi\fi\fi} +\renewenvironment{abstract}{\Collect@Body\@saveabstract}{} +\long\def\@saveabstract#1{\if@ACM@maketitle@typeset + \ClassError{\@classname}{Abstract must be defined before maketitle + command. Please move it!}\fi + \long\gdef\@abstract{#1}} +\@saveabstract{} +\long\def\@lempty{} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{% + \if@ACM@printccs + \ClassInfo{\@classname}{Printing CCS}% + \else + \ClassInfo{\@classname}{Suppressing CCS}% + \fi}{\ClassError{\@classname}{The option printccs can be either true or false}} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{% + \if@ACM@printacmref + \ClassInfo{\@classname}{Printing bibformat}% + \else + \ClassInfo{\@classname}{Suppressing bibformat}% + \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}} +\AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else + \ifnum\getrefnumber{TotPages}>1\relax + \ClassWarningNoLine{\@classname}{ACM reference format is mandatory + for papers over one page}% + \fi\fi\fi} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{% + \if@ACM@printfolios + \ClassInfo{\@classname}{Printing folios}% + \else + \ClassInfo{\@classname}{Suppressing folios}% + \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}} +\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{% + \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to + #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be + numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}} +\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}} +\settopmatter{printccs=true, printacmref=true} +\if@ACM@manuscript + \settopmatter{printfolios=true} +\else + \if@ACM@journal + \settopmatter{printfolios=true} + \else + \settopmatter{printfolios=false} + \fi +\fi +\settopmatter{authorsperrow=0} +\def\@received{} +\newcommand\received[2][]{\def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\@received\@empty + \gdef\@received{Received #2}% + \else + \g@addto@macro{\@received}{; revised #2}% + \fi + \else + \ifx\@received\@empty + \gdef\@received{#1 #2}% + \else + \g@addto@macro{\@received}{; #1 #2}% + \fi + \fi} +\AtEndDocument{% + \ifx\@received\@empty\else + \par\bigskip\noindent\small\normalfont\@received\par + \fi} +\RequirePackage{comment} +\excludecomment{CCSXML} +\let\@concepts\@empty +\newcounter{@concepts} +\newcommand\ccsdesc[2][100]{% + \ccsdesc@parse#1~#2~~\ccsdesc@parse@end} +\def\textrightarrow{$\rightarrow$} +\def\ccsdesc@parse#1~#2~#3~{% + \stepcounter{@concepts}% + \expandafter\ifx\csname CCS@General@#2\endcsname\relax + \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\ + \textbf{#2}}% + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }% + \expandafter\gdef\csname CCS@Specific@#2\endcsname{}% + \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname + \csname CCS@Punctuation@#2\endcsname + \csname CCS@Specific@#2\endcsname}% + \fi + \ifx#3\relax\relax\else + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{ + \textrightarrow\ }% + \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{% + \addtocounter{@concepts}{-1}% + \ifnum#1>499\textbf{#3}\else + \ifnum#1>299\textit{#3}\else + #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}% + \fi +\ccsdesc@parse@finish} +\AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax + \ifnum\getrefnumber{TotPages}>2\relax + \ClassWarningNoLine{\@classname}{CCS concepts are mandatory + for papers over two pages}% + \fi\fi\fi} +\def\ccsdesc@parse@finish#1\ccsdesc@parse@end{} +\newif\if@printcopyright +\@printcopyrighttrue +\newif\if@printpermission +\@printpermissiontrue +\newif\if@acmowned +\@acmownedtrue +\define@choicekey*{ACM@}{acmcopyrightmode}[% + \acm@copyrightinput\acm@copyrightmode]{none,% + acmcopyright,acmlicensed,rightsretained,% + usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,% + licensedcagov,licensedcagovmixed,othergov,licensedothergov,% + iw3c2w3,iw3c2w3g}{% + \@printpermissiontrue + \@printcopyrighttrue + \@acmownedtrue + \ifnum\acm@copyrightmode=0\relax % none + \@printpermissionfalse + \@printcopyrightfalse + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=2\relax % acmlicensed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=3\relax % rightsretained + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=4\relax % usgov + \@printpermissiontrue + \@printcopyrightfalse + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=6\relax % cagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=9\relax % licensedcagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=11\relax % othergov + \@acmownedtrue + \fi + \ifnum\acm@copyrightmode=12\relax % licensedothergov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=13\relax % iw3c2w3 + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=14\relax % iw3c2w3g + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi} +\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}} +\setcopyright{acmcopyright} +\def\@copyrightowner{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + Association for Computing Machinery. + \or % acmlicensed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % rightsretained + Copyright held by the owner/author(s). + \or % usgov + \or % usgovmixed + Association for Computing Machinery. + \or % cagov + Crown in Right of Canada. + \or %cagovmixed + Association for Computing Machinery. + \or %licensedusgovmixed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % licensedcagov + Crown in Right of Canada. Publication rights licensed to + ACM\@. + \or %licensedcagovmixed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % othergov + Association for Computing Machinery. + \or % licensedothergov + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % ic2w3www + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC-BY~4.0 License. + \or % ic2w3wwwgoogle + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC-BY-NC-ND~4.0 License. + \fi} +\def\@formatdoi#1{\url{https://doi.org/#1}} +\def\@copyrightpermission{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + Permission to make digital or hard copies of all or part of this + work for personal or classroom use is granted without fee provided + that copies are not made or distributed for profit or commercial + advantage and that copies bear this notice and the full citation on + the first page. Copyrights for components of this work owned by + others than ACM must be honored. Abstracting with credit is + permitted. To copy otherwise, or republish, to post on servers or to + redistribute to lists, requires prior specific permission + and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % acmlicensed + Permission to make digital or hard copies of all or part of this + work for personal or classroom use is granted without fee provided + that copies are not made or distributed for profit or commercial + advantage and that copies bear this notice and the full citation on + the first page. Copyrights for components of this work owned by + others than the author(s) must be honored. Abstracting with credit + is permitted. To copy otherwise, or republish, to post on servers + or to redistribute to lists, requires prior specific permission + and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % rightsretained + Permission to make digital or hard copies of part or all of this work + for personal or classroom use is granted without fee provided that + copies are not made or distributed for profit or commercial advantage + and that copies bear this notice and the full citation on the first + page. Copyrights for third-party components of this work must be + honored. For all other uses, contact the + owner\hspace*{.5pt}/author(s). + \or % usgov + This paper is authored by an employee(s) of the United States + Government and is in the public domain. Non-exclusive copying or + redistribution is allowed, provided that the article citation is + given and the authors and agency are clearly identified as its + source. + \or % usgovmixed + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor, or affiliate of the United States + government. As such, the United States government retains a + nonexclusive, royalty-free right to publish or reproduce this + article, or to allow others to do so, for government purposes only. + \or % cagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % cagovmixed + ACM acknowledges that this contribution was co-authored by an + affiliate of the national government of Canada. As such, the Crown + in Right of Canada retains an equal interest in the copyright. + Reprints must include clear attribution to ACM and the author's + government agency affiliation. Permission to make digital or hard + copies for personal or classroom use is granted. Copies must bear + this notice and the full citation on the first page. Copyrights for + components of this work owned by others than ACM must be honored. + To copy otherwise, distribute, republish, or post, requires prior + specific permission and\hspace*{.5pt}/or a fee. Request permissions + from permissions@acm.org. + \or % licensedusgovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the United States government. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % licensedcagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % licensedcagovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the national government of Canada. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % othergov + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor or affiliate of a national government. As + such, the Government retains a nonexclusive, royalty-free right to + publish or reproduce this article, or to allow others to do so, for + Government purposes only. + \or % licensedothergov + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of a national government. As such, the Government + retains a nonexclusive, royalty-free right to publish or reproduce + this article, or to allow others to do so, for Government purposes + only. + \or % iw3c2w3 + This paper is published under the Creative Commons Attribution~4.0 + International (CC-BY~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \or % iw3c2w3g + This paper is published under the Creative Commons + Attribution-NonCommercial-NoDerivs~4.0 International + (CC-BY-NC-ND~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \fi} +\def\copyrightyear#1{\def\@copyrightyear{#1}} +\copyrightyear{\@acmYear} +\def\@teaserfigures{} +\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{} +\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}} +\renewcommand{\thanks}[1]{% + \@ifnotempty{#1}{% + \if@ACM@anonymous + \g@addto@macro\thankses{\thanks{A note}}% + \else + \g@addto@macro\thankses{\thanks{#1}}% + \fi}} +\ifx\@beginmaketitlehook\@undefined + \let\@beginmaketitlehook\@empty +\fi +\def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook} +\newbox\mktitle@bx +\def\maketitle{\@beginmaketitlehook + \@ACM@maketitle@typesettrue + \if@ACM@anonymous + % Anonymize omission of \author-s + \ifnum\num@authorgroups=0\author{}\fi + \fi + \begingroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \let\@footnotemark\@footnotemark@nolink + \let\@footnotetext\@footnotetext@nolink + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \hsize=\textwidth + \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}% + \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers + \@printtopmatter + \if@ACM@sigchiamode\@mkauthors\fi + \setcounter{footnote}{0}% + \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}% + \@titlenotes + \@subtitlenotes + \@authornotes + \let\@makefnmark\relax + \let\@thefnmark\relax + \let\@makefntext\noindent + \ifx\@empty\thankses\else + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setthanks}% + \fi + \ifx\@empty\@authorsaddresses\else + \if@ACM@anonymous\else + \if@ACM@journal@bibstrip + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}% + \fi + \fi + \fi + \if@ACM@nonacm\else\footnotetextcopyrightpermission{% + \if@ACM@authordraft + \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries + Unpublished working draft. Not for distribution.}}% + \color[gray]{0.9}% + \fi + \parindent\z@\parskip0.1\baselineskip + \if@ACM@authorversion\else + \if@printpermission\@copyrightpermission\par\fi + \fi + \if@ACM@manuscript\else + \if@ACM@journal@bibstrip\else % Print the conference information + {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par + \fi + \fi + \if@printcopyright + \copyright\ \@copyrightyear\ \@copyrightowner\\ + \else + \@copyrightyear.\ + \fi + \if@ACM@manuscript + Manuscript submitted to ACM\\ + \else + \if@ACM@authorversion + This is the author's version of the work. It is posted here for + your personal use. Not for redistribution. The definitive Version + of Record was published in + \if@ACM@journal@bibstrip + \emph{\@journalName}% + \else + \emph{\@acmBooktitle}% + \fi + \ifx\@acmDOI\@empty + . + \else + , \@formatdoi{\@acmDOI}. + \fi\\ + \else + \if@ACM@nonacm\else + \if@ACM@journal@bibstrip + \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle + \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\ + \@formatdoi{\@acmDOI}% + \else % Conference + \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN + \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi% + \fi + \fi + \fi + \fi} + \fi + \endgroup + \setcounter{footnote}{0}% + \@mkabstract + \if@ACM@printccs + \ifx\@concepts\@empty\else\bgroup + {\@specialsection{CCS Concepts}% + \noindent\@concepts\par}\egroup + \fi + \fi + \ifx\@keywords\@empty\else\bgroup + {\if@ACM@journal + \@specialsection{Additional Key Words and Phrases}% + \else + \@specialsection{Keywords}% + \fi + \noindent\@keywords}\par\egroup + \fi + \let\metadata@authors=\authors + \nxandlist{, }{, }{, }\metadata@authors + \def\@ACM@checkaffil{}% + \hypersetup{% + pdfauthor={\metadata@authors}, + pdftitle={\@title}, + pdfsubject={\@concepts}, + pdfkeywords={\@keywords}, + pdfcreator={LaTeX with acmart + \csname ver@acmart.cls\endcsname\space + and hyperref + \csname ver@hyperref.sty\endcsname}}% + \andify\authors + \andify\shortauthors + \global\let\authors=\authors + \global\let\shortauthors=\shortauthors + \if@ACM@printacmref + \@mkbibcitation + \fi + \global\@topnum\z@ % this prevents floats from falling + % at the top of page 1 + \global\@botnum\z@ % we do not want them to be on the bottom either + \@printendtopmatter + \@afterindentfalse + \@afterheading +} +\def\@specialsection#1{% + \ifcase\ACM@format@nr + \relax % manuscript + \par\medskip\small\noindent#1: % + \or % acmsmall + \par\medskip\small\noindent#1: % + \or % acmlarge + \par\medskip\small\noindent#1: % + \or % acmtog + \par\medskip\small\noindent#1: % + \or % sigconf + \section*{#1}% + \or % siggraph + \section*{#1}% + \or % sigplan + \noindentparagraph*{#1:~}% + \or % sigchi + \section*{#1}% + \or % sigchi-a + \section*{#1}% + \fi +} +\def\@printtopmatter{% + \ifx\@startPage\@empty + \gdef\@startPage{1}% + \else + \setcounter{page}{\@startPage}% + \fi + \thispagestyle{firstpagestyle}% + \noindent + \ifcase\ACM@format@nr + \relax % manuscript + \box\mktitle@bx\par + \or % acmsmall + \box\mktitle@bx\par + \or % acmlarge + \box\mktitle@bx\par + \or % acmtog + \twocolumn[\box\mktitle@bx]% + \or % sigconf + \twocolumn[\box\mktitle@bx]% + \or % siggraph + \twocolumn[\box\mktitle@bx]% + \or % sigplan + \twocolumn[\box\mktitle@bx]% + \or % sigchi + \twocolumn[\box\mktitle@bx]% + \or % sigchi-a + \par\box\mktitle@bx\par\bigskip + \if@ACM@badge + \marginpar{\noindent + \ifx\@acmBadgeL@image\@empty\else + \href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}% + \hskip\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}% + \fi}% + \fi + \fi +} +\def\@mktitle{% + \ifcase\ACM@format@nr + \relax % manuscript + \@mktitle@i + \or % acmsmall + \@mktitle@i + \or % acmlarge + \@mktitle@i + \or % acmtog + \@mktitle@i + \or % sigconf + \@mktitle@iii + \or % siggraph + \@mktitle@iii + \or % sigplan + \@mktitle@iii + \or % sigchi + \@mktitle@iii + \or % sigchi-a + \@mktitle@iv + \fi +} +\def\@titlefont{% + \ifcase\ACM@format@nr + \relax % manuscript + \LARGE\sffamily\bfseries + \or % acmsmall + \LARGE\sffamily\bfseries + \or % acmlarge + \LARGE\sffamily\bfseries + \or % acmtog + \Huge\sffamily + \or % sigconf + \Huge\sffamily\bfseries + \or % siggraph + \Huge\sffamily\bfseries + \or % sigplan + \Huge\bfseries + \or % sigchi + \Huge\sffamily\bfseries + \or % sigchi-a + \Huge\bfseries + \fi} +\def\@subtitlefont{\normalsize + \ifcase\ACM@format@nr + \relax % manuscript + \mdseries + \or % acmsmall + \mdseries + \or % acmlarge + \mdseries + \or % acmtog + \LARGE + \or % sigconf + \LARGE\mdseries + \or % siggraph + \LARGE\mdseries + \or % sigplan + \LARGE\mdseries + \or % sigchi + \LARGE\mdseries + \or % sigchi-a + \mdseries + \fi} +\def\@mktitle@i{\hsize=\textwidth + \@ACM@title@width=\hsize + \ifx\@acmBadgeL@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \setbox\mktitle@bx=\vbox{\noindent\@titlefont + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\raggedright + \@titlefont\noindent + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi}% + \ifx\@acmBadgeR@image\@empty\else + \hskip\@ACM@badge@skip + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi + \par\bigskip}}% +\def\@mktitle@iii{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\@titlefont\centering + \@ACM@title@width=\hsize + \if@ACM@badge + \advance\@ACM@title@width by -2\@ACM@badge@width + \advance\@ACM@title@width by -2\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \fi}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\centering\@titlefont + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi + }% + \if@ACM@badge + \hskip\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeR@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi}% + \fi + \par\bigskip}}% +\def\@mktitle@iv{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont + \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par + \noindent\@title + \ifx\@subtitle\@empty\else + \par\noindent\@subtitlefont\@subtitle + \fi + \par\bigskip}}% +\newbox\@ACM@commabox +\def\@ACM@addtoaddress#1{% + \ifvmode\else + \if@ACM@affiliation@obeypunctuation\else + \setbox\@ACM@commabox=\hbox{, }% + \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox + \fi\fi + #1} +\def\streetaddress#1{\unskip\ignorespaces} +\def\postcode#1{\unskip\ignorespaces} +\if@ACM@journal + \def\position#1{\unskip\ignorespaces} + \def\institution#1{\global\@ACM@instpresenttrue + \unskip~#1\ignorespaces} + \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces} + \def\state#1{\unskip\ignorespaces} + \newcommand\department[2][0]{\unskip\ignorespaces} + \def\country#1{\global\@ACM@countrypresenttrue + \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces} +\else + \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \def\institution#1{\global\@ACM@instpresenttrue + \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation + #2\else#2\par\fi}% + \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}% + \let\state\@ACM@addtoaddress + \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}% +\fi +\def\@mkauthors{\begingroup + \hsize=\textwidth + \ifcase\ACM@format@nr + \relax % manuscript + \@mkauthors@i + \or % acmsmall + \@mkauthors@i + \or % acmlarge + \@mkauthors@i + \or % acmtog + \@mkauthors@i + \or % sigconf + \@mkauthors@iii + \or % siggraph + \@mkauthors@iii + \or % sigplan + \@mkauthors@iii + \or % sigchi + \@mkauthors@iii + \or % sigchi-a + \@mkauthors@iv + \fi + \endgroup +} +\def\@authorfont{\Large\sffamily} +\def\@affiliationfont{\normalsize\normalfont} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \def\@authorfont{\large\sffamily} + \def\@affiliationfont{\small\normalfont} +\or % acmlarge +\or % acmtog + \def\@authorfont{\LARGE\sffamily} + \def\@affiliationfont{\large} +\or % sigconf + \def\@authorfont{\LARGE} + \def\@affiliationfont{\large} +\or % siggraph + \def\@authorfont{\normalsize\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigplan + \def\@authorfont{\Large\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigchi + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\or % sigchi-a + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\fi +\def\@typeset@author@line{% + \andify\@currentauthors\par\noindent + \@currentauthors\def\@currentauthors{}% + \ifx\@currentaffiliations\@empty\else + \andify\@currentaffiliations + \unskip, {\@currentaffiliations}\par + \fi + \def\@currentaffiliations{}} +\newif\if@ACM@instpresent +\@ACM@instpresenttrue +\newif\if@ACM@citypresent +\@ACM@citypresenttrue +\newif\if@ACM@countrypresent +\@ACM@countrypresenttrue +\def\@ACM@resetaffil{% + \global\@ACM@instpresentfalse + \global\@ACM@citypresentfalse + \global\@ACM@countrypresentfalse +} +\def\@ACM@checkaffil{% + \if@ACM@instpresent\else + \ClassWarningNoLine{\@classname}{No institution present for an affiliation}% + \fi + \if@ACM@citypresent\else + \ClassWarningNoLine{\@classname}{No city present for an affiliation}% + \fi + \if@ACM@countrypresent\else + \ClassError{\@classname}{No country present for an affiliation}{ACM + requires each author to indicate their country using country macro.}% + \fi +} +\def\@mkauthors@i{% + \def\@currentauthors{}% + \def\@currentaffiliations{}% + \global\let\and\@typeset@author@line + \def\@author##1{% + \ifx\@currentauthors\@empty + \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% + \else + \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% + \fi + \gdef\and{}}% + \def\email##1##2{}% + \def\affiliation##1##2{% + \def\@tempa{##2}\ifx\@tempa\@empty\else + \ifx\@currentaffiliations\@empty + \gdef\@currentaffiliations{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}% + \@ACM@resetaffil + \@affiliationfont##2\@ACM@checkaffil}% + \else + \g@addto@macro{\@currentaffiliations}{\and + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \fi + \global\let\and\@typeset@author@line}% + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip + \noindent\addresses\@typeset@author@line + \par\medskip}% +} +\newbox\author@bx +\newdimen\author@bx@wd +\newskip\author@bx@sep +\author@bx@sep=1pc\relax +\def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd + \def\and{\par}\normalbaselines + \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi + \@authorfont\@currentauthors\par\@affiliationfont + \@currentaffiliation}\egroup + \box\author@bx\hspace{\author@bx@sep}% + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}} +\def\@mkauthors@iii{% + \author@bx@wd=\textwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \or % 2=two authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 3=three authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 4=two authors per row (!) + \divide\author@bx@wd by 2\relax + \else % three authors per row + \divide\author@bx@wd by 3\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\bgroup + \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% + \else + \g@addto@macro\@currentaffiliation{\par\bgroup + \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \global\let\and\@typeset@author@bx +}% + \hsize=\textwidth + \global\setbox\mktitle@bx=\vbox{\noindent + \box\mktitle@bx\par\medskip\leavevmode + \lineskip=1pc\relax\centering\hspace*{-1em}% + \addresses\let\and\@typeset@author@bx\and\par\bigskip}} +\def\@mkauthors@iv{% + \author@bx@wd=\columnwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \else % 2=two authors per row + \divide\author@bx@wd by 2\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\nolinkurl{##2}}% + \else + \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \global\let\and\@typeset@author@bx}% + \bgroup\hsize=\columnwidth + \par\raggedright\leftskip=\z@ + \lineskip=1pc\noindent + \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup} +\def\@mkauthorsaddresses{% + \ifnum\num@authors>1\relax + Authors' \else Author's \fi + \ifnum\num@authorgroups>1\relax + addresses: \else address: \fi + \bgroup + \def\streetaddress##1{\unskip, ##1}% + \def\postcode##1{\unskip, ##1}% + \def\position##1{\unskip\ignorespaces}% + \def\institution##1{\unskip, ##1}% + \def\city##1{\unskip, ##1}% + \def\state##1{\unskip, ##1}% + \renewcommand\department[2][0]{\unskip\@addpunct, ##2}% + \def\country##1{\unskip, ##1}% + \def\and{\unskip; }% + \def\@author##1{##1}% + \def\email##1##2{\unskip, \nolinkurl{##2}}% + \addresses + \egroup} +\AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal + \ifx\@authorsaddresses\@empty + \ClassWarningNoLine{\@classname}{Authors' + addresses are mandatory for ACM journals}% + \fi\fi\fi} +\def\@setaddresses{} +\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}} +\def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}} +\def\@mkteasers{% + \ifx\@teaserfigures\@empty\else + \def\@teaser##1{\par\bigskip\bgroup + \captionsetup{type=figure}##1\egroup\par} + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par + \noindent\@Description@presentfalse + \@teaserfigures\par\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without + description}\fi + \medskip}% + \fi} +\def\@mkabstract{\bgroup + \ifx\@abstract\@lempty\else + {\phantomsection\addcontentsline{toc}{section}{Abstract}% + \if@ACM@journal + \everypar{\setbox\z@\lastbox\everypar{}}\small + \else + \section*{\abstractname}% + \fi + \ignorespaces\@abstract\par}% + \fi\egroup} +\def\@mkbibcitation{\bgroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}% + \def\footnotemark{}% + \def\\{\unskip{} \ignorespaces}% + \def\footnote{\ClassError{\@classname}{Please do not use footnotes + inside a \string\title{} or \string\author{} command! Use + \string\titlenote{} or \string\authornote{} instead!}}% + \def\@article@string{\ifx\@acmArticle\@empty{\ }\else, + Article~\@acmArticle\ \fi}% + \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak + \noindent\bgroup + \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title + \ifx\@subtitle\@empty. \else: \@subtitle. \fi + \if@ACM@nonacm\else + % The 'nonacm' option disables 'printacmref' by default, + % and the present \@mkbibcitation definition is never used + % in this case. The conditional remains useful if the user + % explicitly sets \settopmatter{printacmref=true}. + \if@ACM@journal@bibstrip + \textit{\@journalNameShort} + \@acmVolume, \@acmNumber \@article@string (\@acmPubDate), + \ref{TotPages}~\@pages@word. + \else + In \textit{\@acmBooktitle}% + \ifx\@acmEditors\@empty\textit{.}\else + \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.% + \fi\ + ACM, New York, NY, USA% + \@article@string\unskip, \ref{TotPages}~\@pages@word. + \fi + \fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi +\par\egroup} +\def\@printendtopmatter{% + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \par\bigskip + \let\@vspace\@vspace@acm + \let\@vspacer\@vspacer@acm + } +\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses} +\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.} +\RequirePackage{fancyhdr} +\let\ACM@ps@plain\ps@plain +\let\ACM@ps@myheadings\ps@myheadings +\let\ACM@ps@headings\ps@headings +\def\ACM@restore@pagestyle{% + \let\ps@plain\ACM@ps@plain + \let\ps@myheadings\ACM@ps@myheadings + \let\ps@headings\ACM@ps@headings} +\AtBeginDocument{\ACM@restore@pagestyle} +\if@ACM@review + \newsavebox{\ACM@linecount@bx} + \newlength\ACM@linecount@bxht + \newcount\ACM@linecount + \ACM@linecount\@ne\relax + \def\ACM@mk@linecount{% + \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont + \normalsize + \setlength{\ACM@linecount@bxht}{0pt}% + \loop{\color{red}\scriptsize\the\ACM@linecount}\\ + \global\advance\ACM@linecount by \@ne + \addtolength{\ACM@linecount@bxht}{\baselineskip}% + \ifdim\ACM@linecount@bxht<\textheight\repeat + {\color{red}\scriptsize\the\ACM@linecount}\hfill + \global\advance\ACM@linecount by \@ne}}} +\fi +\def\ACM@linecountL{% + \if@ACM@review + \ACM@mk@linecount + \begin{picture}(0,0)% + \put(-26,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +\def\ACM@linecountR{% + \if@ACM@review + \ifcase\ACM@format@nr + \relax % manuscript + \relax + \or % acmsmall + \relax + \or % acmlarge + \relax + \or % acmtog + \ACM@mk@linecount + \or % sigconf + \ACM@mk@linecount + \or % siggraph + \ACM@mk@linecount + \or % sigplan + \ACM@mk@linecount + \or % sigchi + \ACM@mk@linecount + \or % sigchi-a + \ACM@mk@linecount + \fi + \begin{picture}(0,0)% + \put(20,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +\if@ACM@timestamp + % Subtracting 30 from \time gives us the effect of rounding down despite + % \numexpr rounding to nearest + \newcounter{ACM@time@hours} + \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax} + \newcounter{ACM@time@minutes} + \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax} + \newcommand\ACM@timestamp{% + \footnotesize% + \ifx\@acmSubmissionID\@empty\relax\else + Submission ID: \@acmSubmissionID.{ }% + \fi + \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }% + \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }% + Page \thepage\ of \@startPage--\pageref*{TotPages}.% + } +\fi +\def\@shortauthors{% + \if@ACM@anonymous + Anon. + \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi + \else\shortauthors\fi} +\def\@headfootfont{\sffamily\footnotesize} +\AtBeginDocument{% +\fancypagestyle{standardpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \def\@acmArticlePage{% + \ifx\@acmArticle\empty% + \if@ACM@printfolios\thepage\fi% + \else% + \@acmArticle\if@ACM@printfolios:\thepage\fi% + \fi% + }% + \if@ACM@journal@bibstrip + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}% + \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}% + \fancyhead[RE]{\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\shorttitle}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM} + \fi% + \or % acmsmall + \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}% + \fancyhead[RO]{\@headfootfont\@acmArticlePage}% + \fancyhead[RE]{\@headfootfont\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \or % acmlarge + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticlePage\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticlePage}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \or % acmtog + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticlePage\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RE]{\ACM@linecountR}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \else % Proceedings + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize + \acmConference@shortname, + \acmConference@date, \acmConference@venue}% + \fancyhead[RO]{\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue\ACM@linecountR}% + \fi + \fi + \else % Proceedings + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue}% + \fancyhead[RO]{\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue\ACM@linecountR}% + \fi + \fi + \if@ACM@sigchiamode + \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}% + \fi + \if@ACM@timestamp + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi +}% +\pagestyle{standardpagestyle} +} +\newdimen\@folio@wd +\@folio@wd=\z@ +\newdimen\@folio@ht +\@folio@ht=\z@ +\newdimen\@folio@voffset +\@folio@voffset=\z@ +\def\@folio@max{1} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \@folio@wd=45.75pt\relax + \@folio@ht=1.25in\relax + \@folio@voffset=.2in\relax + \def\@folio@max{8} +\or % acmlarge + \@folio@wd=43.25pt\relax + \@folio@ht=79pt\relax + \@folio@voffset=.55in\relax + \def\@folio@max{10} +\fi +\def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax + \ifnum\@tempcnta=0\relax\else + \loop + \ifnum\@tempcnta>\@folio@max\relax + \advance\@tempcnta by - \@folio@max + \repeat + \advance\@tempcnta by -1\relax + \@tempdima=\@folio@ht\relax + \multiply\@tempdima by \the\@tempcnta\relax + \advance\@tempdima by -\@folio@voffset\relax + \begin{picture}(0,0) + \makebox[\z@]{\raisebox{-\@tempdima}{% + \rlap{% + \raisebox{-0.45\@folio@ht}[\z@][\z@]{% + \rule{\@folio@wd}{\@folio@ht}}}% + \parbox{\@folio@wd}{% + \centering + \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}} + \end{picture}\fi} + +\AtBeginDocument{% +\fancypagestyle{firstpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \if@ACM@journal@bibstrip + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[L]{\ACM@linecountL}% + \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}% + \if@ACM@nonacm\else% + \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}% + \fi% + \or % acmsmall + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@folioblob}% + \fancyheadoffset[RO,LE]{0.6\@folio@wd}% + \or % acmlarge + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[RO]{\@folioblob}% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyheadoffset[RO,LE]{1.4\@folio@wd}% + \or % acmtog + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \else % Conference proceedings + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fi + \else + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fi + \if@ACM@timestamp + \ifnum\ACM@format@nr=0\relax % Manuscript + \fancyfoot[LO,RE]{\ACM@timestamp\quad + \if@ACM@nonacm\else + \footnotesize Manuscript submitted to ACM + \fi} + \else + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi + \fi +}} +\def\ACM@NRadjust#1{% + \begingroup + \expandafter\ifx\csname Sectionformat\endcsname\relax + % do nothing when \Sectionformat is unknown + \def\next{\endgroup #1}% + \else + \def\next{\endgroup + \let\realSectionformat\Sectionformat + \def\ACM@sect@format@{#1}% + \let\Sectionformat\ACM@NR@adjustedSectionformat + %% next lines added 2018-06-17 to ensure section number is styled + \let\real@adddotafter\@adddotafter + \let\@adddotafter\ACM@adddotafter + #1{}% imposes the styles, but nullifies \MakeUppercase + \let\@adddotafter\real@adddotafter + }% + \fi \next +} +\def\ACM@NR@adjustedSectionformat#1#2{% + \realSectionformat{\ACM@sect@format{#1}}{#2}% + \let\Sectionformat\realSectionformat} +\DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@} +\def\ACM@sect@format@null#1{#1} +\let\ACM@sect@format@\ACM@sect@format@null +\AtBeginDocument{% + \expandafter\ifx\csname LTX@adddotafter\endcsname\relax + \let\LTX@adddotafter\@adddotafter + \fi +} +\def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi} +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\ACM@NRadjust\@secfont}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\ACM@NRadjust\@subsecfont}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@parfont\@adddotafter}}} +\newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@parfont}}} + +\renewcommand\part{\@startsection{part}{9}{\z@}% + {-10\p@ \@plus -4\p@ \@minus -2\p@}% + {4\p@}% + {\ACM@NRadjust\@parfont}} +\def\section@raggedright{\@rightskip\@flushglue + \rightskip\@rightskip + \leftskip\z@skip + \parindent\z@} +\def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} +\def\@subsecfont{\sffamily\bfseries\section@raggedright} +\def\@subsubsecfont{\sffamily\itshape} +\def\@parfont{\itshape} +\setcounter{secnumdepth}{3} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % acmtog + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % sigconf + \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\bfseries\Large\section@raggedright} +\or % siggraph + \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright} +\or % sigplan + \def\@secfont{\bfseries\Large\section@raggedright} + \def\@subsecfont{\bfseries\section@raggedright} + \def\@subsubsecfont{\bfseries\section@raggedright} + \def\@parfont{\bfseries\itshape} + \def\@subparfont{\itshape} +\or % sigchi + \setcounter{secnumdepth}{1} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\or % sigchi-a + \setcounter{secnumdepth}{0} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\fi +\def\@adddotafter#1{#1\@addpunct{.}} +\def\@addspaceafter#1{#1\@addpunct{\enspace}} +\providecommand*\@dotsep{4.5} +\def\@acmplainbodyfont{\itshape} +\def\@acmplainindent{\parindent} +\def\@acmplainheadfont{\scshape} +\def\@acmplainnotefont{\@empty} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmplainbodyfont{\itshape} + \def\@acmplainindent{\z@} + \def\@acmplainheadfont{\bfseries} + \def\@acmplainnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +\newtheoremstyle{acmplain}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmplainbodyfont}% body font + {\@acmplainindent}% indent amount + {\@acmplainheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec +\def\@acmdefinitionbodyfont{\normalfont} +\def\@acmdefinitionindent{\parindent} +\def\@acmdefinitionheadfont{\itshape} +\def\@acmdefinitionnotefont{\@empty} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmdefinitionbodyfont{\normalfont} + \def\@acmdefinitionindent{\z@} + \def\@acmdefinitionheadfont{\bfseries} + \def\@acmdefinitionnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +\newtheoremstyle{acmdefinition}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmdefinitionbodyfont}% body font + {\@acmdefinitionindent}% indent amount + {\@acmdefinitionheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec +\theoremstyle{acmplain} +\AtEndPreamble{% + \if@ACM@acmthm + \theoremstyle{acmplain} + \@ifundefined{theorem}{% + \newtheorem{theorem}{Theorem}[section] + }{} + \@ifundefined{conjecture}{% + \newtheorem{conjecture}[theorem]{Conjecture} + }{} + \@ifundefined{proposition}{% + \newtheorem{proposition}[theorem]{Proposition} + }{} + \@ifundefined{lemma}{% + \newtheorem{lemma}[theorem]{Lemma} + }{} + \@ifundefined{corollary}{% + \newtheorem{corollary}[theorem]{Corollary} + }{} + \theoremstyle{acmdefinition} + \@ifundefined{example}{% + \newtheorem{example}[theorem]{Example} + }{} + \@ifundefined{definition}{% + \newtheorem{definition}[theorem]{Definition} + }{} + \fi + \theoremstyle{acmplain} +} +\def\@proofnamefont{\scshape} +\def\@proofindent{\indent} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@proofnamefont{\itshape} + \def\@proofindent{\noindent} +\or % sigchi +\or % sigchi-a +\fi +\renewenvironment{proof}[1][\proofname]{\par + \pushQED{\qed}% + \normalfont \topsep6\p@\@plus6\p@\relax + \trivlist + \item[\@proofindent\hskip\labelsep + {\@proofnamefont #1\@addpunct{.}}]\ignorespaces +}{% + \popQED\endtrivlist\@endpefalse +} +\AtEndPreamble{% + \if@ACM@balance + \ifcase\ACM@format@nr + \relax % manuscript + \global\@ACM@balancefalse + \or % acmsmall + \global\@ACM@balancefalse + \or % acmlarge + \global\@ACM@balancefalse + \or % acmtog + \RequirePackage{balance}% + \or % sigconf + \RequirePackage{balance}% + \or % siggraph + \RequirePackage{balance}% + \or % sigplan + \RequirePackage{balance}% + \or % sigchi + \RequirePackage{balance}% + \or % sigchi-a + \global\@ACM@balancefalse + \fi + \fi +} +\AtEndDocument{% + \if@ACM@balance + \if@twocolumn + \balance + \fi\fi} +\newcommand\acksname{Acknowledgments} +\specialcomment{acks}{% + \begingroup + \section*{\acksname} + \phantomsection\addcontentsline{toc}{section}{\acksname} +}{% + \endgroup +} +\def\grantsponsor#1#2#3{#2} +\newcommand\grantnum[3][]{#3% + \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi} +\AtEndPreamble{% +\if@ACM@screen + \includecomment{screenonly} + \excludecomment{printonly} +\else + \excludecomment{screenonly} + \includecomment{printonly} +\fi +\if@ACM@anonymous + \excludecomment{anonsuppress} + \excludecomment{acks} +\else + \includecomment{anonsuppress} +\fi} +\newcommand\showeprint[2][arxiv]{% + \def\@tempa{#1}% + \ifx\@tempa\@empty\def\@tempa{arxiv}\fi + \def\@tempb{arxiv}% + \ifx\@tempa\@tempb + arXiv:\href{https://arxiv.org/abs/#2}{#2}\else arXiv:#2% + \fi} +\let\@vspace@orig=\@vspace +\let\@vspacer@orig=\@vspacer +\apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should + only be used to provide space above/below surrounding + objects}}{}{} +\apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should + only be used to provide space above/below surrounding + objects}}{}{} +\let\@vspace@acm=\@vspace +\let\@vspacer@acm=\@vspacer +\let\ACM@origbaselinestretch\baselinestretch +\AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else + \ClassError{\@classname}{An attempt to redefine + \string\baselinestretch\space detected. Please do not do this for + ACM submissions!}\fi} +\normalsize\normalfont\frenchspacing +\endinput +%% +%% End of file `acmart.cls'. diff --git a/docs/acmart.dtx b/docs/acmart.dtx new file mode 100644 index 0000000000000000000000000000000000000000..f89537340927a3ff68b789a50b374d8a35bed07c --- /dev/null +++ b/docs/acmart.dtx @@ -0,0 +1,7393 @@ +% \iffalse +% +% Copyright 2016-2020, Association for Computing Machinery +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any +% later version. +% The latest version of the license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Boris Veytsman, +% <borisv@lk.net> +% +% This work consists of the file acmart.dtx, the derived file +% acmart.cls, the files ACM-Reference-Format.bst, and templates +% sample-acmlarge.tex, sample-acmsmall.tex, sample-acmtog.tex, +% samplebody-conf.tex, samplebody-journals.tex, sample-manuscript.tex, +% sample-sigconf-authordraft.tex, sample-sigconf.tex, +% sample-sigplan.tex +% +% \fi +% +% +%% \CharacterTable +%% {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 +%% 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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +% +% +% \MakeShortVerb{|} +% \def\guide{acmguide} +% \iffalse +% From +% http://tex.stackexchange.com/questions/117892/can-i-convert-a-string-to-catcode-11 by egreg +% \fi +% \begingroup +% \everyeof{\noexpand} +% \endlinechar=-1 +% \xdef\currentjob{\scantokens\expandafter{\jobname}} +% \endgroup +% +% \ifx\currentjob\guide\OnlyDescription\fi +% \GetFileInfo{acmart.dtx} +% \title{\LaTeX{} Class for the \emph{Association for Computing +% Machinery}\thanks{\copyright 2016--2020, Association for Computing Machinery}} +% \author{Boris Veytsman\thanks{% +% \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}}, +% \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}} +% \date{\filedate, \fileversion} +% \maketitle +% \begin{abstract} +% This package provides a class for typesetting publications of +% the Association for Computing Machinery. +% \end{abstract} +% \tableofcontents +% +% \clearpage +% +%\section{Introduction} +%\label{sec:intro} +% +% The Association for Computing +% Machinery\footnote{\url{http://www.acm.org/}} is the world's largest +% educational and scientific computing society, which delivers +% resources that advance computing as a science and a +% profession. It was one of the +% early adopters of \TeX\ for its typesetting. +% +% It provided several different classes for a number of journals and +% conference proceedings. Unfortunately during the years since these +% classes were written, the code was patched many times, and +% supporting different versions of the classes became difficult. +% +% This package provides the uniform interface for all ACM +% publications. It is intended to replace all the different classes and +% packages and provide an up-to-date \LaTeX\ package. +% +% This package uses only free \TeX\ packages and fonts included in \TeX +% Live, Mik\TeX\ and other popular \TeX\ distributions. It is +% intended to be published in these distributions itself, which +% minimizes users' efforts in the installation and support of this +% package. +% +% I am grateful to +% Michael D.~Adams, +% Leif Andersen, +% Lawrence Christopher Angrave, +% Dirk Beyer, +% Andrew Black, +% Joachim Breitner, +% Benjamin Byholm, +% John Collins, +% Nils Anders Danielsson, +% Michael Ekstrand, +% Matthew Fluet, +% Paolo G.~Giarrusso, +% Ben Greenman, +% Enrico Gregorio, +% Jamie Davis, +% Jason Hemann, +% Peter Kemp, +% Luis Leiva, +% Ben Liblit, +% Rholais Lii, +% LianTze Lim, +% Kuldeep S. Meel, +% Kai Mindermann, +% Frank Mittelbach, +% Serguei Mokhov, +% Ross Moore, +% John Owens, +% Joel Nider, +% Scott Pakin, +% Tobias Pape, +% Henning Pohl, +% Philip Quinn, +% Mathias Rav, +% Andreas Reichinger, +% Matteo Riondato, +% Craig Rodkin, +% Bernard Rous, +% Feras Saad, +% Kerry A. Seitz, Jr., +% David Shamma, +% Gabriel Scherer, +% Kartik Singhal, +% Stephen Spencer, +% Shin Hwei Tan, +% Daniel Thomas, +% Shari Trewin, +% Zack Weinberg, +% John Wickerson +% and many others for their invaluable help. +% +% The development version of the package is available at +% \url{https://github.com/borisveytsman/acmart}. +% +%\section{User's guide} +%\label{sec:ug} +% +% +% This class uses many commands and customizaton options, so it might +% appear intimidating for a casual user. Do not panic! Many of these +% commands and options can be safely left with their default values +% or the values recommended by your conference or journal editors. If +% you have problems or questions, do not hesitate to ask me directly +% or the community at \url{https://github.com/borisveytsman/acmart}, +% \url{https://tex.stackexchange.com} or the closest \TeX\ Users +% Group. The world-wide \TeX\ Users Group is at +% \url{https://tug.org/}; please consider joining us if you use \TeX\ +% regularly. +% +%\subsection{Installation} +%\label{sec:ug_install} +% +% Most probably, you already have this package installed in your +% favorite \TeX\ distribution; if not, you may want to upgrade. You +% may need to upgrade it anyway since this package uses a number of +% relatively recent packages, especially the ones related to fonts. +% +% The latest released version of this package can be found on CTAN: +% \url{https://www.ctan.org/pkg/acmart}. The development version can +% be found on GitHub: \url{https://github.com/borisveytsman/acmart}. +% At this address you can file a bug report---or even contribute your +% own enhancement by making a pull request. +% +% Please note that the version on Github is a development (or +% experimental) version: please download it for testing new features. +% The production version is the one on CTAN and ACM sites. +% +% Most users should not attempt to install this package themselves +% but should rather rely on their \TeX\ distributions to provide it. If you +% decide to install the package yourself, follow the standard rules: +% \begin{enumerate} +% \item Run |latex acmart.ins|. This will produce the file +% |acmart.cls| +% \item Put the files |acmart.cls| and |ACM-Reference-Format.bst| +% in places where \LaTeX{} can find them (see \cite{TeXFAQ} or +% the documentation for your \TeX{} system).\label{item:install} +% \item Update the database of file names. Again, see \cite{TeXFAQ} +% or the documentation for your \TeX{} system for the system-specific +% details.\label{item:update} +% \item The file |acmart.pdf| provides the documentation for the +% package. (This is probably the file you are reading now.) +% \end{enumerate} +% As an alternative to items~\ref{item:install} and~\ref{item:update} +% you can just put the files in the working directory where your +% |.tex| file is. +% +% +% This class uses a number of other packages. They are included in all +% major \TeX\ distributions (\TeX Live, Mac\TeX, Mik\TeX) of 2015 and +% later, so you probably have them installed. Just in case here is +% the list of these packages: +% \begin{itemize} +% \item \textsl{amscls}, \url{http://www.ctan.org/pkg/amscls} +% \item \textsl{amsfonts}, \url{http://www.ctan.org/pkg/amsfonts} +% \item \textsl{amsmath}, \url{http://www.ctan.org/pkg/amsmath} +% \item \textsl{binhex}, \url{http://www.ctan.org/pkg/binhex} +% \item \textsl{balance}, \url{http://www.ctan.org/pkg/balance} +% \item \textsl{booktabs}, \url{http://www.ctan.org/pkg/booktabs} +% \item \textsl{caption}, \url{http://www.ctan.org/pkg/caption} +% \item \textsl{comment}, \url{http://www.ctan.org/pkg/comment} +% \item \textsl{cm-super}, \url{http://www.ctan.org/pkg/cm-super} +% \item \textsl{cmap}, \url{http://www.ctan.org/pkg/cmap} +% \item \textsl{draftwatermark}, \url{http://www.ctan.org/pkg/draftwatermark} +% \item \textsl{environ}, \url{http://www.ctan.org/pkg/environ} +% \item \textsl{etoolbox}, \url{http://www.ctan.org/pkg/etoolbox} +% \item \textsl{fancyhdr}, \url{http://www.ctan.org/pkg/fancyhdr} +% \item \textsl{float}, \url{http://www.ctan.org/pkg/float} +% \item \textsl{fontaxes}, \url{http://www.ctan.org/pkg/fontaxes} +% \item \textsl{geometry}, \url{http://www.ctan.org/pkg/geometry} +% \item \textsl{graphics}, \url{http://www.ctan.org/pkg/graphics} +% \item \textsl{hyperref}, \url{http://www.ctan.org/pkg/hyperref} +% \item \textsl{hyperxmp}, \url{http://www.ctan.org/pkg/hyperxmp} +% \item \textsl{iftex}, \url{http://www.ctan.org/pkg/iftex} +% \item \textsl{inconsolata}, \url{http://www.ctan.org/pkg/inconsolata} +% \item \textsl{libertine}, \url{http://www.ctan.org/pkg/libertine} +% \item \textsl{manyfoot}, \url{http://www.ctan.org/pkg/manyfoot} +% \item \textsl{microtype}, \url{http://www.ctan.org/pkg/microtype} +% \item \textsl{mmap}, \url{http://www.ctan.org/pkg/mmap} +% \item \textsl{ms}, \url{http://www.ctan.org/pkg/ms} +% \item \textsl{mweights}, \url{http://www.ctan.org/pkg/mweights} +% \item \textsl{natbib}, \url{http://www.ctan.org/pkg/natbib} +% \item \textsl{nccfoots}, \url{http://www.ctan.org/pkg/nccfoots} +% \item \textsl{newtx}, \url{http://www.ctan.org/pkg/newtx} +% \item \textsl{oberdiek}, \url{http://www.ctan.org/pkg/oberdiek} +% \item \textsl{pdftex-def}, \url{http://www.ctan.org/pkg/pdftex-def} +% \item \textsl{refcount}, \url{http://www.ctan.org/pkg/refcount} +% \item \textsl{setspace}, \url{http://www.ctan.org/pkg/setspace} +% \item \textsl{textcase}, \url{http://www.ctan.org/pkg/textcase} +% \item \textsl{totpages}, \url{http://www.ctan.org/pkg/totpages} +% \item \textsl{trimspaces}, \url{http://www.ctan.org/pkg/trimspaces} +% \item \textsl{upquote}, \url{http://www.ctan.org/pkg/upquote} +% \item \textsl{url}, \url{http://www.ctan.org/pkg/url} +% \item \textsl{xcolor}, \url{http://www.ctan.org/pkg/xcolor} +% \item \textsl{xkeyval}, \url{http://www.ctan.org/pkg/xkeyval} +% \item \textsl{xstring}, \url{http://www.ctan.org/pkg/xstring} +% \end{itemize} +% +% +%\subsection{Invocation and options} +%\label{sec:invocation} +% +% To use this class, put in the preamble of your document +% \begin{quote} +% \cs{documentclass}\oarg{options}|{acmart}| +% \end{quote} +% There are several options corresponding to the type of the document and +% its general appearance. They are described below. Generally +% speaking, the options have |key=value| forms, for example, +% \begin{verbatim} +% \documentclass[format=acmsmall, screen=true, review=false]{acmart} +% \end{verbatim} +% +% +% The option |format| describes the format of the output. There are +% several possible values for this option, for example, +% \begin{verbatim} +% \documentclass[format=acmtog]{acmart} +% \end{verbatim} +% Actually the words |format=| can be omitted, e.g., +% \begin{verbatim} +% \documentclass[acmtog, review=false]{acmart} +% \end{verbatim} +% The possible formats are listed in +% Table~\ref{tab:opts_format}. Note that formats starting with |acm| +% are intended for journals and transactions, while formats starting +% with |sig| are intended for proceedings published as books. +% +% Note that sometimes conference proceedings are published as a +% special issue (or issues) of an ACM journal. In this case, you +% should use the journal format for a conference paper. Please +% contact your conference committee if in doubt. +% +% \begin{table} +% \centering +% \caption{The possible values for the \texttt{format} option} +% \label{tab:opts_format} +% \begin{tabularx}{\textwidth}{>{\ttfamily}lX} +% \toprule +% \normalfont Value & Meaning\\ +% \midrule +% manuscript & A manuscript. This is the default. \\ +% acmsmall & Small single-column format. Used for CIE, CSUR, +% JACM, JDIQ, JEA, JERIC, +% JETC, PACMCGIT, PACMHCI, PACMPL, TAAS, TACCESS, TACO, +% TALG, TALLIP (formerly TALIP), TCPS, TDS, +% TEAC, TECS, TELO, THRI, TIIS, TIOT, TISSEC, TIST, TKDD, TMIS, +% TOCE, TOCHI, TOCL, +% TOCS, TOCT, TODAES, TODS, TOIS, TOIT, TOMACS, TOMM (formerly +% TOMCCAP), TOMPECS, TOMS, TOPC, TOPLAS, TOPS, +% TOS, TOSEM, TOSN, TQC, TRETS, +% TSAS, TSC, TSLP and TWEB, including special issues. \\ +% acmlarge & Large single-column format. Used for DTRAP, HEALTH, +% IMWUT, JOCCH, POMACS and TAP, including special issues. \\ +% acmtog & Large double-column format. Used for +% TOG, including annual conference Technical Papers.\\ +% sigconf & Proceedings format for most ACM +% conferences (with the exceptions listed below) and all ICPS +% volumes.\\ +% sigplan & Proceedings format for SIGPLAN conferences.\\ +% \bottomrule +% \end{tabularx} +% \end{table} +% +% Starting in 2020, ACM retired formats |sigchi| and |sigchi-a|. +% SIGCHI conferences now use |sigconf| format for their publications. +% If a file uses |sigchi| format, a warning is issued, and the format +% is automatically switched to |sigconf|. Format |sigchi-a| can be +% used for non-ACM documents only (see Section~\ref{sec:sigchi-a}). +% +% There are several Boolean options that can take |true| or |false| +% values. They are listed in Table~\ref{tab:opts_bool}. The words +% |=true| can be omitted when setting a Boolean option, so instead of +% |screen=true| one can write just |screen|, for example, +% \begin{verbatim} +% \documentclass[acmsmall, screen, review]{acmart} +% \end{verbatim} +% The option |review| is useful when combined with the |manuscript| format +% option. It provides a version suitable for reviewers and +% copy editors. +% +% Two samples in the |samples| directory, |manuscript| and +% |acmsmall-submission|, show manuscripts formatted for submission to +% ACM. +% +% The default for the option |screen| depends on the publication. At +% present it is |false| for all publications \emph{but} PACM, since +% PACM is now electronic-only. Thus PACM titles~(see +% Table~\ref{tab:pubs}) set this option to |true|. In the future this +% option may involve additional features suitable for on-screen +% versions of articles. +% +% The option |natbib| is used when the corresponding +% \BibTeX\ style is based on |natbib|. In most cases you do not need +% to set it. See +% Section~\ref{sec:ug_bibliography}. +% +% The option |anonymous| is used +% for anonymous review processes and causes all author information to be +% obscured. +% +% The option |timestamp| is used to include a time stamp in the +% footer of each page. When preparing a document, this can help avoid +% confusing different revisions. The footer also includes the page range of +% the document. This helps detect missing pages in hard copies. +% +% The option |authordraft| is intended for author's drafts that are not +% intended for distribution. It typesets a copyright block to give the +% author an idea of its size and the overall size of the paper but +% overprints it with the phrase ``Unpublished working draft. Not for +% distribution.'', which is also used as a watermark. This option sets +% |timestamp| and |review| to |true|, but these can be +% overriden by setting these options to |false| \emph{after} +% setting |authordraft| to |true|. +% +% The option |balance| determines whether the last page in the two +% column mode has balanced columns. By default it is |true|; however, +% it may lead to problems for some documents. Set it to |false| if +% you encounter compilation errors. Note that for one page documents +% \cs{balance} command might cause problems. +% +% The option |urlbreakonhyphens| determines whether URLs can be split +% between lines after hyphens. By default it is true. Set it to +% |false| to disallow these breaks. +% +% \begin{table} +% \centering +% \caption{Boolean options} +% \label{tab:opts_bool} +% \begin{tabularx}{\textwidth}{>{\ttfamily}l>{\ttfamily}lX} +% \toprule +% \normalfont Option & \normalfont Default & Meaning\\ +% \midrule +% review & false & A review version: lines are numbered and +% hyperlinks are colored\\ +% screen & {\rmfamily see text} & A screen version: +% hyperlinks are colored\\ +% natbib & true & Whether to use the |natbib| package (see +% Section~\ref{sec:ug_bibliography})\\ +% anonymous & false & Whether to make author(s) anonymous\\ +% authorversion & false & Whether to generate a special +% version for the authors' personal use or posting (see +% Section~\ref{sec:ug_topmatter})\\ +% nonacm & false & Use the class typesetting options for +% a non-ACM document, which will not include the conference/journal +% header and footers or permission statements\\ +% timestamp & false & Whether to put a time stamp in the +% footer of each page\\ +% authordraft & false & Whether author's-draft mode is enabled\\ +% acmthm & true & Whether to define theorem-like environments, see +% Section~\ref{sec:ug_theorems}\\ +% balance & true & Whether to balance the last page in two column +% mode\\ +% urlbreakonhyphens & true & Whether to break urls on hyphens\\ +% \bottomrule +% \end{tabularx} +% \end{table} +% +% +% +%\subsection{Top matter} +%\label{sec:ug_topmatter} +% +% A number of commands set up \emph{top matter} or (in +% computer science jargon) \emph{metadata} for an article. They +% establish the publication name, article title, authors, DOI and +% other data. Some of these commands, like \cs{title} and \cs{author}, +% should be put by the authors. Others, like \cs{acmVolume} and +% \cs{acmDOI}---by the editors. Below we describe these commands and +% mention who should issue them. These macros should be used +% \emph{before} the \cs{maketitle} command. Note that in previous +% versions of ACM classes some of these commands should be used before +% \cs{maketitle}, and some after it. Now they all must be used before +% \cs{maketitle}. +% +% +% This class internally loads the |amsart| class, so many top-matter +% commands are inherited from |amsart|~\cite{Downes04:amsart}. +% +% \DescribeMacro{\acmJournal}% +% The macro \cs{acmJournal}\marg{shortName} sets the name of the +% journal or transaction for journals and transactions. The argument +% is the short name of the publication \emph{in uppercase}, for +% example, +% \begin{verbatim} +% \acmJournal{TOMS} +% \end{verbatim} +% The currently recognized journals are listed in +% Table~\ref{tab:pubs}. Note that conference proceedings published in +% \emph{book} form do not set this macro. +% +% +% +% \DescribeMacro{\acmConference}% +% The macro +% \cs{acmConference}\oarg{short name}\marg{name}\marg{date}\marg{venue} is +% used for conference proceedings published in the book form. The +% arguments are the following: +% \begin{description} +% \item[short name:] the abbreviated name of the conference (optional). +% \item[name:] the name of the conference. +% \item[date:] the date(s) of the conference. +% \item[venue:] the place of the conference. +% \end{description} +% Examples: +% \begin{verbatim} +% \acmConference[TD'15]{Technical Data Conference}{November +% 12--16}{Dallas, TX, USA} +% \acmConference{SA'15 Art Papers}{November 02--06, 2015}{Kobe, Japan} +% \end{verbatim} +% +% \DescribeMacro{\acmBooktitle}% +% By default we assume that conference proceedings are published +% in the book named \emph{Proceedings of \textsc{CONFERENCE}}, where +% \textsc{CONFERENCE} is the name of the conference inferred from the +% command \cs{acmConference} above. However, sometimes the book title +% is different. The command \cs{acmBooktitle} can be used to set this +% title, for example, +% \begin{verbatim} +% \acmBooktitle{Companion to the first International Conference on the +% Art, Science and Engineering of Programming (Programming '17)} +% \end{verbatim} +% +% An ACM paper should have either \cs{acmJournal} or +% \cs{acmConference} command. If it has both (or more) commands, the +% last one takes precedence. Note that if you have the command +% \cs{acmConference} in a journal format like |acmsmall|, the class +% will use conference format for bibstrip and reference citation +% formatting. In the samples directory there is a file +% |sample-acmsmall-conf.tex| with the example of this usage. +% +% +% +% \DescribeMacro{\editor}% +% In most cases, conference proceedings are edited. You can use the +% command \cs{editor}\marg{editor} to set the editor of the volume. +% This command can be repeated, for example, +% \begin{verbatim} +% \editor{Jennifer B. Sartor} +% \editor{Theo D'Hondt} +% \editor{Wolfgang De Meuter} +% \end{verbatim} +% +% +% \DescribeMacro{\title}% +% The command |\title|, as in the |amsart| class, has two arguments: one +% optional, and one mandatory: +% \begin{flushleft} +% |\title[|\meta{ShortTitle}|]{|\meta{FullTitle}|}| +% \end{flushleft} +% The mandatory argument is the full title of the article. The +% optional argument, if present, defines the shorter version of the +% title for running heads. If the optional argument is absent, the +% full title is used instead. +% +% It is expected that this command is inserted by the author of the +% manuscript. +% +% \DescribeMacro{\subtitle}% +% Besides title, ACM classes allow a subtitle, set with the +% \cs{subtitle}\marg{subtitle} macro. +% +% The commands for specifying authors are highly structured. +% The reason is they serve double duty: the authors' information is +% typeset in the manuscript \emph{and} is used by the metadata +% extraction tools for indexing and cataloguing. Therefore it is very +% important to follow the guidelines exactly. +% +% \DescribeMacro{\author}% +% \DescribeMacro{\orcid} +% \DescribeMacro{\affiliation}% +% \DescribeMacro{\email}% +% The basic commands are \cs{author}, \cs{orcid} (for the researchers +% registered with ORCID, \url{http://www.orcid.org/}), \cs{affiliation} and +% \cs{email}. In the simplest case, you enter them in this order: +% \begin{verbatim} +% \author{...} +% \orcid{...} +% \affiliation{...} +% \email{...} +% \end{verbatim} +% Do \emph{not} use the \LaTeX\ \cs{and} macro or commas, or \verb|\\| +% between the authors! Each author deserves his or +% her own \cs{author} command. An attempt to list several authors or +% their e-mails in one command leads to a warning or an error. This +% is not a bug, but the expected behavior. +% +% Note that some formats do not typeset e-mails or ORCID identifiers. +% Do not worry: the metadata tools will get them. +% +% Sometimes an author has several affiliations. In this case, the +% \cs{affiliation} command should be repeated: +% \begin{verbatim} +% \author{...} +% \orcid{...} +% \affiliation{...} +% \affiliation{...} +% \email{...} +% \end{verbatim} +% Similarly you can repeat the \cs{email} command. +% +% You may have several authors with the same affiliation, different +% affiliations, or overlapping affiliations (author~$A_1$ is affiliated +% with institutions $I_1$ and $I_2$, while author $A_2$ is affiliated +% with $I_2$ only, author $A_3$ is affiliated with +% $I_1$ and $I_3$, etc.). The recommended solution is to put the +% \cs{affiliation} commands after each author, possibly repeating them: +% \begin{verbatim} +% \author{...} +% \orcid{...} +% \affiliation{...} +% \affiliation{...} +% \email{...} +% \author{...} +% \orcid{...} +% \affiliation{...} +% \email{...} +% \author{...} +% \orcid{...} +% \affiliation{...} +% \affiliation{...} +% \email{...} +% \end{verbatim} +% In some cases, when several authors share the same affiliation, you can +% try to save space using the format +% \begin{verbatim} +% \author{...} +% \email{...} +% \author{...} +% \email{...} +% \affiliation{...} +% \end{verbatim} +% However, this format is not generally recommended. +% +% \DescribeMacro{\additionalaffiliation}% +% In some cases, too many affiliations can take too much space. The +% command \cs{additionalaffiliation}\marg{affiliation} creates a +% footnote after an author's name with the words ``Also with +% \marg{affiliation}''. You should use this command only as a last +% resort. An example of usage is: +% \begin{verbatim} +% \author{G. Tobin} +% \author{Ben Trovato} +% \additionalaffiliation{% +% \institution{The Th{\o}rv{\"a}ld Group} +% \streetaddress{1 Th{\o}rv{\"a}ld Circle} +% \city{Hekla} +% \country{Iceland}} +% \affiliation{% +% \institution{Institute for Clarity in Documentation} +% \streetaddress{P.O. Box 1212} +% \city{Dublin} +% \state{Ohio} +% \postcode{43017-6221}} +% \end{verbatim} +% Here Trovato and Tobin share their affiliation with the Institute +% for Clarity in Documentation, but only Ben Trovato is affiliated +% with The Th{\o}rv{\"a}ld Group. +% +% +% \DescribeMacro{\position}% +% \DescribeMacro{\institution}% +% \DescribeMacro{\department}% +% \DescribeMacro{\streetaddress}% +% \DescribeMacro{\city}% +% \DescribeMacro{\state}% +% \DescribeMacro{\postcode}% +% \DescribeMacro{\country}% +% The \cs{affiliation} and \cs{additionalaffiliation} commands are +% further structured to interact with the metadata extraction tools. +% Inside these commands you should use the \cs{position}, +% \cs{institution}, \cs{department}, \cs{city}, \cs{streetaddress}, +% \cs{state}, \cs{postcode} and \cs{country} macros to indicate the +% corresponding parts of the affiliation. Note that in some cases +% (for example, journals) these parts are not printed in the resulting +% copy, but they \emph{are} necessary since they are used by the XML +% metadata extraction programs. Do \emph{not} put commas or |\\| +% between the elements of \cs{affiliation}. They will be provided +% automatically. +% +% The fields \cs{institution}, \cs{city} and \cs{country} are +% mandatory. If they are not provided, an error or a warning is +% issued. Currently the absence of \cs{country} produces and error; +% ACM may change this in the future. +% +% +% An example of the author block: +% \begin{verbatim} +% \author{A. U. Thor} +% \orcid{1234-4564-1234-4565} +% \affiliation{% +% \institution{University of New South Wales} +% \department{School of Biomedical Engineering} +% \streetaddress{Samuels Building (F25), Kensington Campus} +% \city{Sidney} +% \state{NSW} +% \postcode{2052} +% \country{Australia}} +% \email{author@nsw.au.edu} +% \author{A. N. Other} +% \affiliation{% +% \institution{University of New South Wales} +% \city{Sidney} +% \state{NSW} +% \country{Australia}} +% \author{C. O. Respondent} +% \orcid{1234-4565-4564-1234} +% \affiliation{% +% \institution{University of Pennsylvania} +% \city{Philadelphia} +% \state{PA} +% \country{USA}} +% \affiliation{% +% \institution{University of New South Wales} +% \city{Sidney} +% \state{NSW} +% \country{Australia}} +% \end{verbatim} +% +% Note that the old ACM conference formats did not allow more than six +% authors and required some effort from authors to achieve +% alignment. The new format is much better in this. +% +% Sometimes an author works in several departments within the same +% insitution. There could be two situations: the departments are +% independent, or one department is within another. In the first +% case, just repeat the command \cs{department} several times. To +% handle the second case the command has an optional numerical +% parameter. The departments with higher numbers are higher in the +% organizational chart. Compare +% \begin{verbatim} +% \affiliation{% +% \department[0]{Department of Lunar Studies} % 0 is the default +% \department[1]{John Doe Institute} % higher than 0 +% \institution{University of San Serriffe} +% \country{San Serriffe}} +% \end{verbatim} +% and +% \begin{verbatim} +% \affiliation{% +% \department{Department of Lunar Studies} % Not in the John Doe Institute! +% \department{John Doe Institute} +% \institution{University of San Serriffe} +% \country{San Serriffe}} +% \end{verbatim} +% +% +% The command \cs{affiliation} formats its output according to +% American conventions. This might be wrong for some cases. +% Consider, for example, a German address. In Germany, the postcode is +% put before the city and is not separated by a comma. We can handle this +% order using +% \begin{verbatim} +% \affiliation{% +% \institution{Fluginstitut} +% \streetaddress{Sonnenallee 17} +% \postcode{123456} +% \city{Helm} +% \country{Germany}} +% \end{verbatim} +% However, the comma after the postcode is unfortunate: the address will +% be typeset (in some formats) as +% \begin{verbatim} +% Fluginstitut +% Sonenallee 17 +% 123456, Helm, Germany +% \end{verbatim} +% +% +% To overcome this problem, the command \cs{affiliation} has an +% optional parameter |obeypunctuation|, which can be |false| (the +% default) or |true|. If this parameter is |true|, \cs{afffiliation} +% obeys the author's command. Thus +% \begin{verbatim} +% \affiliation[obeypunctuation=true]{% +% \institution{Fluginstitut}\\ +% \streetaddress{Sonnenallee 17}\\ +% \postcode{123456} +% \city{Helm}, +% \country{Germany}} +% \end{verbatim} +% will be typeset as +% \begin{verbatim} +% Fluginstitut +% Sonenallee 17 +% 123456 Helm, Germany +% \end{verbatim} +% +% Note that you should \emph{not} use this option for journals. +% +% It is expected that these commands are inserted by the author of the +% manuscript. +% +% \DescribeMacro{\thanks}% +% Like |amsart| (and unlike standard \LaTeX{}), we allow +% |\thanks| only \emph{outside} of the commands |\title| and |\author|. +% This command is obsolete and should \emph{not} be used in most +% cases. Do not list your acknowledgments or grant sponsors here. +% Put this information in the |acks| environment (see +% Section~\ref{sec:ug_acks}). +% +% \DescribeMacro{\authorsaddresses}% +% In some formats, addresses are printed as a footnote on the first +% page. By default \LaTeX\ typesets them itself using the information +% you give it. However, you can override its choice using the +% commmand \cs{authorsaddresses}\marg{contact addresses}, for example, +% \begin{verbatim} +% \authorsaddresses{% +% Authors' addresses: G.~Zhou, Computer Science Department, College of +% William and Mary, 104 Jameson Rd, Williamsburg, PA 23185, US; +% V.~B\'eranger, Inria Paris-Rocquencourt, Rocquencourt, France; +% A.~Patel, Rajiv Gandhi University, Rono-Hills, Doimukh, Arunachal +% Pradesh, India; H.~Chan, Tsinghua University, 30 Shuangqing Rd, +% Haidian Qu, Beijing Shi, China; T.~Yan, Eaton Innovation Center, +% Prague, Czech Republic; T.~He, C.~Huang, J.~A.~Stankovic University +% of Virginia, School of Engineering Charlottesville, VA 22903, USA; +% T. F. Abdelzaher, (Current address) NASA Ames Research Center, +% Moffett Field, California 94035.} +% \end{verbatim} +% You can \emph{suppress} printing authors' addresses by setting them +% to an empty string: |\authorsaddresses{}|. Please note that +% authors' addresses are mandatory for journal articles. +% +% \DescribeMacro{\titlenote}% +% \DescribeMacro{\subtitlenote}% +% \DescribeMacro{\authornote}% +% While the command \cs{thanks} generates a note without a footnote +% mark, sometimes the authors might need notes more tightly connected +% to the title, subtitle or author. The commands \cs{titlenote}, +% \cs{subtitlenote} and \cs{authornote} that follow the corresponding +% commands (\cs{title}, \cs{subtitle} and \cs{author}) generate such +% notes. For example, +% \begin{verbatim} +% \title{This is a title} +% \titlenote{This is a titlenote} +% \author{A. U. Thor} +% \authornote{This is an authornote} +% \end{verbatim} +% +% Please never use a \cs{footnote} inside an \cs{author} or \cs{title} +% command since this confuses the metadata extraction software. (Actually +% these commands now produce errors.) +% +% \DescribeMacro{\authornotemark}% +% Sometimes one may need to have the same footnote connected to +% several authors. The command \cs{authornotemark}\oarg{number} adds +% just the footnote mark, for example, +% \begin{verbatim} +% \author{A. U. Thor} +% \authornote{Both authors contributed equally to the paper} +% ... +% \author{A. N. Other} +% \authornotemark[1] +% \end{verbatim} +% The correct numbering of these marks is the responsibility of the +% user. +% +% \DescribeMacro{\acmVolume}% +% \DescribeMacro{\acmNumber}% +% \DescribeMacro{\acmArticle}% +% \DescribeMacro{\acmYear}% +% \DescribeMacro{\acmMonth}% +% The macros \cs{acmVolume}, \cs{acmNumber}, \cs{acmArticle}, +% \cs{acmYear} and \cs{acmMonth} are inserted by the editor and set +% the journal volume, issue, article number, year and month +% corrspondingly. The arguments of all these commands, including +% \cs{acmMonth}, is numerical. For example, +% \begin{verbatim} +% \acmVolume{9} +% \acmNumber{4} +% \acmArticle{39} +% \acmYear{2010} +% \acmMonth{3} +% \end{verbatim} +% Note that \cs{acmArticle} is used not only for journals but also +% for some conference proceedings. +% +% \DescribeMacro{\acmArticleSeq}% +% The articles in the same issue of a journal have a \emph{sequence +% number}. It is used to vertically position the black blob on the first +% page of some formats. By default it is the same as the article number, +% but the command \cs{acmArticleSeq}\marg{n} can be used to change it: +% \begin{verbatim} +% \acmArticle{39} % The sequence number will be 39 by default +% \acmArticleSeq{5} % We redefine it to 5 +% \end{verbatim} +% Setting this number to zero suppresses the blob. +% +% \DescribeMacro{\acmSubmissionID}% +% If your paper got a Submission~ID from the Conference Management +% System, put it here: +% \begin{verbatim} +% \acmSubmissionID{123-A56-BU3} +% \end{verbatim} +% +% +% \DescribeMacro{\acmPrice}% +% The macro \cs{acmPrice}\marg{price} sets the price for the article, +% for example, +% \begin{verbatim} +% \acmPrice{25.00} +% \end{verbatim} +% Note that you do not need to put the dollar sign here, just the +% amount. By default the price is \$15.00, unless the copyright is +% set to |usgov|, |rightsretained|, |iw3c2w3|, or |iw3c2w3g|, when it +% is suppressed. Note that to override the defaults you need to set +% the price \emph{after} the \cs{setcopyright} command. Also, the +% command |\acmPrice{}| suppresses the printing of the price. +% +% \DescribeMacro{\acmISBN}% +% Book-like volumes have ISBN numbers attached to them. The macro +% \cs{acmISBN}\marg{ISBN} sets it. Normally it is set by the +% typesetter, for example, +% \begin{verbatim} +% \acmISBN{978-1-4503-3916-2} +% \end{verbatim} +% Setting it to the empty string, as |\acmISBN{}|, suppresses printing the +% ISBN. +% +% \DescribeMacro{\acmDOI}% +% The macro \cs{acmDOI}\marg{DOI} sets the DOI of the article, for +% example, +% \begin{verbatim} +% \acmDOI{10.1145/9999997.9999999} +% \end{verbatim} +% It is normally set by the typesetter. Setting it to the empty +% string, as |\acmDOI{}|, suppresses the DOI. +% +% +% \DescribeMacro{\acmBadgeR}% +% \DescribeMacro{\acmBadgeL}% +% Some conference articles get special distinctions, for example, the +% artifact evaluation for PPoPP~2016 +% (see~\url{http://ctuning.org/ae/ppopp2016.html}). These articles +% display special badges supplied by the conference organizers. This +% class provides commands to add these badges: +% \cs{acmBadgeR}\oarg{url}\marg{graphics} and +% \cs{acmBadgeL}\oarg{url}\marg{graphics}. The first command puts the +% badge to the right of the title, and the second one---to the left. +% The arguments have the following meaning: \oarg{url}, if provided, +% sets the link to the badge authority in the screen version, while +% \marg{graphics} sets the graphics file with the badge image. The +% file must be a cropped square, which is scaled to a standard size in +% the output. For example, if the badge image is |ae-logo.pdf|, the +% command is +% \begin{verbatim} +% \acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo} +% \end{verbatim} +% +% +% +% \DescribeMacro{\startPage}% +% The macro \cs{startPage}\marg{page} sets the first page of the +% article in a journal or book. It is used by the typesetter. +% +% +% \DescribeMacro{\terms}% +% \DescribeMacro{\keywords}% +% The command +% \cs{keywords}\marg{keyword, keyword,\ldots} sets keywords for the +% article. They must be +% separated by commas, for example, +% \begin{verbatim} +% \keywords{wireless sensor networks, media access control, +% multi-channel, radio interference, time synchronization} +% \end{verbatim} +% +% \DescribeEnv{CCSXML}% +% \DescribeMacro{\ccsdesc}% +% ACM publications are classified according to the ACM Computing +% Classification Scheme (CCS). CCS codes are used both in the typeset +% version of the publications \emph{and} in the metadata in various +% databases. Therefore you need to provide both \TeX\ commands and XML +% metadata with the paper. +% +% The tool at \url{http://dl.acm.org/ccs.cfm} can be used to generate +% CCS codes. After you select the topics, click on ``Generate CCS +% codes'' to get results like the following: +% \begin{verbatim} +% \begin{CCSXML} +% <ccs2012> +% <concept> +% <concept_id>10010520.10010553.10010562</concept_id> +% <concept_desc>Computer systems organization~Embedded systems</concept_desc> +% <concept_significance>500</concept_significance> +% </concept> +% <concept> +% <concept_id>10010520.10010575.10010755</concept_id> +% <concept_desc>Computer systems organization~Redundancy</concept_desc> +% <concept_significance>300</concept_significance> +% </concept> +% <concept> +% <concept_id>10010520.10010553.10010554</concept_id> +% <concept_desc>Computer systems organization~Robotics</concept_desc> +% <concept_significance>100</concept_significance> +% </concept> +% <concept> +% <concept_id>10003033.10003083.10003095</concept_id> +% <concept_desc>Networks~Network reliability</concept_desc> +% <concept_significance>100</concept_significance> +% </concept> +% </ccs2012> +% \end{CCSXML} +% +% \ccsdesc[500]{Computer systems organization~Embedded systems} +% \ccsdesc[300]{Computer systems organization~Redundancy} +% \ccsdesc{Computer systems organization~Robotics} +% \ccsdesc[100]{Networks~Network reliability} +% \end{verbatim} +% +% You just need to copy this code and paste it in your paper anywhere +% before \verb|\maketitle|. +% +% CCS Concepts and user-defined keywords are required for all articles +% over two pages in length, and are optional for one- and two-page +% articles (or abstracts). +% +% \DescribeMacro{\setcopyright} +% There are several possibilities for the copyright of the papers +% published by the ACM: the authors may transfer the rights to the ACM, +% license them to the ACM, some or all authors might be employees of the +% US or Canadian governments, etc. Accordingly the command +% \verb|\setcopyright{...}| is introduced. Its argument is the +% copyright status of the paper, for example, +% \verb|\setcopyright{acmcopyright}|. The possible values for this +% command are listed in Table~\ref{tab:setcopyright}. This command +% must be placed in the preamble, before |\begin{document}|. +% +% \begin{table} +% \centering +% \caption{Parameters for the \texttt{\textbackslash setcopyright} command} +% \label{tab:setcopyright} +% \begin{tabularx}{\textwidth}{lX} +% \toprule +% Parameter & Meaning\\ +% \midrule +% \texttt{none} & The copyright and permission information is not +% typeset. (This is the option for some ACM conferences.) \\ +% \texttt{acmcopyright} & The authors transfer the copyright to the +% ACM (the ``traditional'' choice).\\ +% \texttt{acmlicensed} & The authors retain the copyright but +% license the publication rights to ACM\@. \\ +% \texttt{rightsretained} & The authors retain the copyright and +% publication rights to themselves or somebody else. \\ +% \texttt{usgov} & All the authors are employees of the US +% government. \\ +% \texttt{usgovmixed} & Some authors are employees of the US +% government. \\ +% \texttt{cagov} & All the authors are employees of the Canadian +% government. \\ +% \texttt{cagovmixed} & Some authors are employees of the Canadian +% government. \\ +% \texttt{licensedusgovmixed} & Some authors are employees of the US +% government, and the publication rights are licensed to ACM\@. \\ +% \texttt{licensedcagov} & All the authors are employees of the Canadian +% government, and the publication rights are licensed to ACM\@. \\ +% \texttt{licensedcagovmixed} & Some authors are employees of the +% Canadian +% government, and the publication rights are licensed to ACM\@. \\ +% \texttt{othergov} & Authors are employees of a +% government other than the US or Canada. \\ +% \texttt{licensedothergov} & Authors are employees of a +% government other than the US or Canada, and the publication rights +% are licensed to ACM\@. \\ +% \texttt{iw3c2w3} & Special statement for conferences organized +% by IW3C2.\\ +% \texttt{iw3c2w3g} & Special statement for conferences organized +% by IW3C2, when some authors are approved Google employees.\\ +% \bottomrule +% \end{tabularx} +% \end{table} +% The ACM submission software should generate the right command for you +% to paste into your file. +% +% +% \DescribeMacro{\copyrightyear}% +% Each copyright statement must have the year of copyright. By +% default it is the same as \cs{acmYear}, but you can override this +% using the macro \cs{copyrightyear}, e.g., +% \begin{verbatim} +% \acmYear{2016} +% \copyrightyear{2015} +% \end{verbatim} +% +% There is a special case for a personal copy that the authors may be +% allowed to generate for their use or a posting on a personal site +% (check the instructions for the specific journal or conference for +% the details). The document option |authorversion=true| produces a +% special form of the copyright statement for this case. Note that +% you still need the \cs{setcopyright} command and (optionally) +% \cs{copyrightyear} command to tell \TeX\ about the copyright owner and +% year. Also, you should be aware that due to the different sizes of +% the permssion blocks for the printed version and authors' version, +% the page breaks might be different between them. +% +% \DescribeEnv{abstract}% +% The environment |abstract| must \emph{precede} the \cs{maketitle} +% command. Again, this is different from the standard \LaTeX. +% Putting |abstract| after \cs{maketitle} will trigger an error. +% +% +% \DescribeEnv{teaserfigure}% +% A special kind of figure is used for many two-column conference +% proceedings. This figure is placed just after the authors but +% before the main text. The environment |teaserfigure| is used for these +% figures. This environment must be used \emph{before} +% \cs{maketitle}, for example, +% \begin{verbatim} +% \begin{teaserfigure} +% \includegraphics[width=\textwidth]{sampleteaser} +% \caption{This is a teaser} +% \label{fig:teaser} +% \end{teaserfigure} +% \end{verbatim} +% +% +% \DescribeMacro{\settopmatter}% +% Some information in the top matter is printed for certain journals +% or proceedings and suppressed for others. You can override these +% defaults using the command \cs{settopmatter}\marg{settings}. The +% settings and their meanings are listed in +% Table~\ref{tab:settopmatter}. For example, +% \begin{verbatim} +% \settopmatter{printacmref=false, printccs=true, printfolios=true} +% \end{verbatim} +% The parameter |authorsperrow| requires some explanation. In +% conference proceedings authors' information is typeset in boxes, +% several boxes per row (see |sample-sigconf.pdf|, +% |sample-sigplan.pdf|, etc.). The number of boxes per row is +% determined automatically. If you want to override this, +% you can do it using this parameter, for example, +% \begin{verbatim} +% \settopmatter{authorsperrow=4} +% \end{verbatim} +% However, in most cases you should \emph{not} do this and should use the +% default settings. Setting |authorsperrow| to $0$ will revert it to the +% default settings. +% +% The parameter |printacmref| specifies whether to print the ACM +% bibliographic entry (default), or not. Note that this entry is +% required for all articles over one page in length, and is optional +% for one-page articles (abstracts). +% +% \begin{table} +% \centering +% \caption{Settings for the \cs{settopmatter} command} +% \label{tab:settopmatter} +% \begin{tabularx}{\textwidth}{llX} +% \toprule +% Parameter & Values & Meaning\\ +% \midrule +% |printccs| & true/false & Whether to print CCS categories\\ +% |printacmref| & true/false & Whether to print the ACM bibliographic +% entry\\ +% |printfolios| & true/false & Whether to print page numbers +% (folios)\\ +% |authorsperrow| & numeric & Number of authors per row for the title +% page in +% conference proceedings formats\\ +% \bottomrule +% \end{tabularx} +% \end{table} +% +% +% \DescribeMacro{\received}% +% The command \cs{received}\oarg{stage}\marg{date} sets the history of +% the publication. The~\oarg{stage} argument is optional; the default +% is |Received| for the first date and |revised| for the subsequent +% ones. For example, +% \begin{verbatim} +% \received{February 2007} +% \received[revised]{March 2009} +% \received[accepted]{June 2009} +% \end{verbatim} +% +% +% \DescribeMacro{\maketitle}% +% The macro \cs{maketitle} must be the last command in the top-matter +% group. That is it must follow the commands defined in this section. +% +% +% \DescribeMacro{\shortauthors}% +% \emph{After} the command \cs{maketitle}, the macro \cs{shortauthors} +% stores the names of the authors for the running head. You can +% redefine it if the list of author's name is too long, e.g., +% \begin{verbatim} +% \maketitle +% \renewcommand{\shortauthors}{Zhou et al.} +% \end{verbatim} +% +% +%\subsection{Algorithms} +%\label{sec:ug_algorithms} +% +% There are now several good packages for typesetting +% algorithms~\cite{Fiorio15, Brito09, Heinz15}, and the authors are +% free to choose their favorite one. +% +% +% +%\subsection{Figures and tables} +%\label{sec:ug_floats} +% +% The new ACM styles use the standard \LaTeX\ interface for figures and +% tables. There are some important items to be aware of, however. +% +% \begin{enumerate} +% \item The captions for figures must be entered \emph{after} the +% figure bodies and for tables \emph{before} the table bodies. +% \item The ACM uses the standard types for figures and tables and adds +% several new ones. In total there are the following types: +% \begin{description} +% \item[figure, table:] a standard figure or table taking a full text +% width in one-column formats and one column width in two-column formats. +% \item[figure*, table*] in two-column formats, a special figure or +% table taking a full text width. +% \item[teaserfigure:] a special figure before \cs{maketitle}. +% \end{description} +% +% \item Accordingly, when scaling images, one should use the +% following sizes: +% \begin{enumerate} +% \item For |teaserfigure|, |figure| in one-column mode or |figure*| in +% two-column mode, use \cs{textwidth}. In one-column mode, you can also +% use \cs{columnwidth}, which coincides with \cs{textwidth} in this +% case. +% \item For |figure| in two-column mode, use \cs{columnwidth}. +% \end{enumerate} +% +% \end{enumerate} +% +% It is strongly recommended to use the package |booktabs|~\cite{Fear05} +% and follow its main principles of typography with respect to tables: +% \begin{enumerate} +% \item Never, ever use vertical rules. +% \item Never use double rules. +% \end{enumerate} +% It is also a good idea not to overuse horizontal rules. +% +% For table \emph{footnotes} you have several options described in the TeX +% FAQ~\cite{TeXFAQ}. The simplest one is to use a \cs{minipage} +% environment: +% \begin{verbatim} +% \begin{table} +% \caption{Simulation Configuration} +% \label{tab:conf} +% \begin{minipage}{\columnwidth} +% \begin{center} +% \begin{tabular}{ll} +% \toprule +% TERRAIN\footnote{This is a table footnote. This is a +% table footnote. This is a table footnote.} & +% (200\,m$\times$200\,m) Square\\ +% Node Number & 289\\ +% Node Placement & Uniform\\ +% Application & Many-to-Many/Gossip CBR Streams\\ +% Payload Size & 32 bytes\\ +% Routing Layer & GF\\ +% MAC Layer & CSMA/MMSN\\ +% Radio Layer & RADIO-ACCNOISE\\ +% Radio Bandwidth & 250Kbps\\ +% Radio Range & 20m--45m\\ +% \bottomrule +% \end{tabular} +% \end{center} +% \bigskip +% \footnotesize\emph{Source:} This is a table +% sourcenote. This is a table sourcenote. This is a table +% sourcenote. +% +% \emph{Note:} This is a table footnote. +% \end{minipage} +% \end{table} +% \end{verbatim} +% +% +% Tables and figures are by default centered. However, in some cases +% (for example, when you use several subimages per figure) you may +% need to override this. A good way to do so is to put the contents +% into a \cs{minipage} of the width \cs{columnwidth}. +% +% +%\subsection{Descriptions of images} +%\label{sec:descriptions} +% +% \DescribeMacro{\Description}% +% Some readers of ACM publications might be visually challenged. +% These readers might use a voice-over software to read aloud the +% papers. It is important to provide them a description of each +% image used in the paper. +% +% The command \cs{Description}\oarg{short description}\marg{long +% description} should be placed inside every \texttt{figure}, +% \texttt{teaserfigure} or \texttt{marginfigure} environment to +% provide a description of the image(s) used in the figure. Unlike +% \cs{caption}, which is used alongside the image, \cs{Description} is +% intended to be used instead of the image, for example, +% \begin{verbatim} +% \begin{figure} +% \centering +% \includegraphics{voltage} +% \Description{A bell-like histogram centered at $0.5$~V with most +% measurements between $0.2$~V and $0.8$~V} +% \caption{Histogram of the measurements of voltage} +% \label{fig:voltage} +% \end{figure} +% \end{verbatim} +% At present the lack of descriptions generates a warning at +% compilation. +% +%\subsection{Theorems} +%\label{sec:ug_theorems} +% +% The ACM classes define two theorem styles and several pre-defined +% theorem environments: +% \begin{description} +% \item[acmplain:] this is the style used for +% |theorem|, +% |conjecture|, +% |proposition|, +% |lemma| and +% |corollary|, and +% \item[acmdefinition:] this is the style used for +% |example| and +% |definition|. +% \end{description} +% +% +% These environments are defined by default. In the unusual +% circumstance that a user does not wish to have these environments +% defined, the option |acmthm=false| in the preamble will suppress +% them. +% +%\subsection{Online-only and offline-only material} +%\label{sec:ug_screen} +% +% \DescribeEnv{printonly}% +% \DescribeEnv{screenonly}% +% Some supplementary material in ACM publications is put online but +% not in the printed version. The text inside the environment +% |screenonly| will be typeset only when the option |screen| (see +% Section~\ref{sec:invocation}) is set to |true|. Conversely, the +% text inside the environment |printonly| is typeset only when this +% option is set to |false|. For example, +% \begin{verbatim} +% \section{Supplementary materials} +% +% \begin{printonly} +% Supplementary materials are available in the online version of this paper. +% \end{printonly} +% +% \begin{screenonly} +% (The actual supplementary materials.) +% \end{screenonly} +% \end{verbatim} +% +% We use the |comment| package for typesetting this code, so +% |\begin| and |\end| should start on a line of their own with +% no leading or trailing spaces. +% +%\subsection{Note about anonymous mode} +%\label{sec:ug_anonymous} +% +% \DescribeEnv{anonsuppress}% +% When the option |anonymous| is selected, \TeX\ suppresses author +% information (including the number of authors) for a blind review. +% However, sometimes the information identifying the authors may be +% present in the body of the paper. For example, +% \begin{verbatim} +% \begin{anonsuppress} +% This is the continuation of the previous work by the author +% \cite{prev1, prev2}. +% \end{anonsuppress} +% \end{verbatim} +% +% As for the |printonly| and |screenonly| environments, +% |\begin{anonsuppress}| and |\end{anonsuppress}| should start on a +% line of their own with no leading or trailing spaces. +% +%\subsection{Acknowledgments} +%\label{sec:ug_acks} +% +% The traditional ``Acknowledgments'' section is conventionally used +% to thank persons and granting agencies for their help and support. +% However, there are several important considerations about this +% section. +% +% First, in anonymous mode this section must be omitted: it gives +% too much information to reviewers. Second, data about +% grants is extracted and stored separately by the postprocessing +% software. ACM classes provide facilities for both these tasks. +% +% \DescribeEnv{acks}% +% The environment |acks| starts an unnumbered section +% ``Acknowledgments'' unless the anonymous mode is chosen. Put all +% thanks inside this environment. +% +% As for the |printonly| and |screenonly| environments, +% |\begin{acks}| and |\end{acks}| should start on a +% line of their own with no leading or trailing spaces. +% +% \DescribeMacro{\grantsponsor}% +% \DescribeMacro{\grantnum}% +% All financial support \emph{must} be listed using the commands +% \cs{grantsponsor} and \cs{grantnum}. These commands tell the +% postprocessing software about the granting organization and +% grant. The format of these commands is the following: +% \begin{quote} +% \cs{grantsponsor}\marg{sponsorID}\marg{name}\marg{url}\\ +% \cs{grantnum}\oarg{url}\marg{sponsorID}\marg{number}. +% \end{quote} +% Here \marg{sponsorID} is the unique ID used to match grants to +% sponsors, \marg{name} is the name of the sponsor, \marg{url} is its +% URL, and \marg{number} is the grant number. The \marg{sponsorID} of +% the \cs{grantnum} command must correspond to the \marg{sponsorID} of a +% \cs{grantsponsor} command. Some awards have their own web pages, +% which you can include using the optional argument of the \cs{grantnum} +% command. +% +% At present \marg{sponsorID} is chosen by the authors and can be an +% arbitrary key in the same way the label of a \cs{cite} is arbitrarily +% chosen. There might be a change to this policy if the ACM decides to +% create a global database of sponsoring organizations. +% +% Example: +% \begin{verbatim} +% \begin{acks} +% The authors would like to thank Dr. Yuhua Li for providing the +% matlab code of the \textit{BEPS} method. +% +% The authors would also like to thank the anonymous referees for +% their valuable comments and helpful suggestions. This work is +% supported by the \grantsponsor{GS501100001809}{National Natural +% Science Foundation of +% China}{https://doi.org/10.13039/501100001809} under Grant +% No.:~\grantnum{GS501100001809}{61273304} +% and~\grantnum[http://www.nnsf.cn/youngscientists]{GS501100001809}{Young +% Scientists' Support Program}. +% \end{acks} +% \end{verbatim} +% +% +%\subsection{Bibliography} +%\label{sec:ug_bibliography} +% +% The ACM uses the |natbib| package for formatting references and +% the Bib\TeX\ style file \path{ACM-Reference-Format.bst} for Bib\TeX\ +% processing. You can disable loading of |natbib| using the +% option |natbib=false| in \cs{documentclass}. However, it is not +% recommended, as well as the use of Bib\TeX\ styles other than +% \path{ACM-Reference-Format.bst}, and may delay the processing of the +% manuscript. +% +% +% \DescribeMacro{\citestyle}% +% If you use |natbib|, you can select one of two predefined citation +% styles using the command \cs{citestyle}: the author-year format +% |acmauthoryear| or the numeric format |acmnumeric|. For example, +% \begin{verbatim} +% \citestyle{acmauthoryear} +% \end{verbatim} +% Note that numeric citations are the default mode for most formats. +% +% \DescribeMacro{\setcitestyle}% +% You can further customize |natbib| using +% the \cs{setcitestyle} command, for example, +% \begin{verbatim} +% \setcitestyle{numbers,sort&compress} +% \end{verbatim} +% +% One of the more common versions is +% \begin{verbatim} +% \setcitestyle{nosort} +% \end{verbatim} +% It is useful if you do not like the way |natbib| sorts citation +% lists. +% +% If you use |natbib|, then commands like \cs{citep} and +% \cs{citeauthor} are automatically supported. The command +% \cs{shortcite} is the same as \cs{cite} in numerical mode and cites +% the year in author-date mode. +% +% Note that before version~1.48 the command \cs{citeyear} put the year +% in parentheses. In version~1.48 and later it produces just the +% year; the command \cs{citeyearpar} can be used to emulate its old +% behavior. +% +% There are several customized \BibTeX\ entry types and fields in the ACM +% style file \path{ACM-Reference-Format.bst} that you may want to be +% aware of. +% +% The style supports the fields \path{doi} and \path{url}, for example, +% \begin{verbatim} +% doi = "10.1145/1188913.1188915", +% url = "http://ccrma.stanford.edu/~jos/bayes/bayes.pdf", +% \end{verbatim} +% +% The style supports the arXiv-recommended fields \path{eprint} and +% (optionally) \path{primaryclass}, for example, +% \begin{verbatim} +% eprint = "960935712", +% primaryclass = "cs", +% \end{verbatim} +% See the examples at \url{http://arxiv.org/hypertex/bibstyles/}. +% +% There are several special entry types. Types \path{online} and +% \path{game} are used for Web pages and games, for example, +% \begin{verbatim} +% @online{Thornburg01, +% author = "Harry Thornburg", +% year = "2001", +% title = "Introduction to Bayesian Statistics", +% url = "http://ccrma.stanford.edu/~jos/bayes/bayes.html", +% month = mar, +% lastaccessed = "March 2, 2005", +% } +% \end{verbatim} +% Entry types \path{artifactsoftware}, \path{artifactdataset} +% (with synonyms \path{software} and \path{dataset}) can be used to +% cite software artifacts and datasets, for example, +% \begin{verbatim} +% @ArtifactSoftware{R, +% title = {R: A Language and Environment for Statistical Computing}, +% author = {{R Core Team}}, +% organization = {R Foundation for Statistical Computing}, +% address = {Vienna, Austria}, +% year = {2019}, +% url = {https://www.R-project.org/}, +%} +% @ArtifactDataset{UMassCitations, +% author = {Sam Anzaroot and Andrew McCallum}, +% title = {{UMass} Citation Field Extraction Dataset}, +% year = 2013, +% url = +% {http://www.iesl.cs.umass.edu/data/data-umasscitationfield}, +% lastaccessed = {May 27, 2019} +% } +% \end{verbatim} +% +% +% For these entry types you can use the \path{lastaccessed} field to add +% the access date for the URL. +% +% +% +% There are two ways to enter video or audio sources in the +% bibliograpy corresponding to two different possibilies. For +% standalone sources available online, you can use an \path{online} +% entry and set its \path{howpublished} field. For example, +% \begin{verbatim} +% @online{Obama08, +% author = "Barack Obama", +% year = "2008", +% title = "A more perfect union", +% howpublished = "Video", +% day = "5", +% url = "http://video.google.com/videoplay?docid=6528042696351994555", +% month = mar, +% lastaccessed = "March 21, 2008", +% } +% \end{verbatim} +% +% For sources available as attachments to conference proceedings +% and similar documents, you can use the usual \path{inproceedings} +% entry type and set its \path{howpublished} field: +% \begin{verbatim} +% @Inproceedings{Novak03, +% author = "Dave Novak", +% title = "Solder man", +% booktitle = "ACM SIGGRAPH 2003 Video Review on Animation theater Program", +% year = "2003", +% publisher = "ACM Press", +% address = "New York, NY", +% pages = "4", +% month = "March 21, 2008", +% doi = "10.9999/woot07-S422", +% howpublished = "Video", +% } +% \end{verbatim} +% +% Sometimes you need to cite a complete issue of a journal. The +% \path{periodical} entry type is intended for this: +% \begin{verbatim} +% @periodical{JCohen96, +% key = "Cohen", +% editor = "Jacques Cohen", +% title = "Special issue: Digital Libraries", +% journal = "Communications of the {ACM}", +% volume = "39", +% number = "11", +% month = nov, +% year = "1996", +% } +% \end{verbatim} +% +% If you do not know the year of publication, the style will add +% ``[n.\,d.]'' (for ``no date'') to the entry. +% +% If you do not know the author (this is often the case for online +% entries), use the |key| field to add a key for sorting and citations, +% for example, +% \begin{verbatim} +% @online{TUGInstmem, +% key = {TUG}, +% year = 2017, +% title = "Institutional members of the {\TeX} Users Group", +% url = "http://wwtug.org/instmem.html", +% lastaccessed = "May 27, 2017", +% } +% \end{verbatim} +% +% A note about sorting. The current ACM bibliography styles always +% sort the entries according to authors names and publication year. +% There is a controversy about sorting names with ``von'' or ``van'' +% part: should Ludwig van Beethoven be sorted under ``V'' or under +% ``B''? The American practice is to use ``van'' in sorting, i.e. to +% file van Beethoven under ``V''. However, some authorities recommend +% to sort Dutch persons according to their last names (see +% e.g. \url{https://www.ifla.org/files/assets/cataloguing/pubs/names-of-persons_1996.pdf}). +% While I do not want to take a part in this dispute, I would like to +% point to the old ``noopsort'' trick by Oren Patashnik. Add to the +% \texttt{.bib} file the line +% \begin{verbatim} +% @PREAMBLE{"\providecommand{\noopsort}[1]{}"} +% \end{verbatim} +% and then encode the author as +% \begin{verbatim} +% author = {Ludwig {\noopsort{Beethoven}}van Beethoven}, +% \end{verbatim} +% This will make the author to be sorted as ``Beethoven'' rather than +% ``van Beethoven''. +% +%\subsection{Colors} +%\label{sec:ug_colors} +% +% While printed ACM publications are usually black and white, |screen| +% mode allows the use of colors. The ACM classes pre-define several +% colors according to~\cite{ACMIdentityStandards}: |ACMBlue|, +% |ACMYellow|, |ACMOrange|, |ACMRed|, |ACMLightBlue|, |ACMGreen|, +% |ACMPurple| and |ACMDarkBlue|. You can use them in color +% assignments. +% +% The ACM provides the following recommendation on color use. +% +% The most accessible approach would be to ensure that your article is +% still readable when printed in greyscale. The most notable reasons +% for this are: +% \begin{enumerate} +% \item The most common type of inherited Color Vision Deficiency +% (CVD) is red-green (in which similar-brightness colors that differ +% only in their amounts of red or green are often confused), and it +% affects up to 8\% of males and 0.5\% of females of Northern European +% descent. +% \item The most common type of acquired Color Vision Deficiency (CVD) +% is blue-yellow (including mild cases for many older adults). +% \item Most printing is in black and white. +% \item Situational impairments (e.g., bright sunlight shining on a +% mobile screen) tend to reduce the entire color gamut, reducing color +% discriminability. +% \end{enumerate} +% +% \textbf{Note:} It is \emph{not} safe to encode information using +% only variations in color (i.e., only differences in hue and/or +% saturation) as there is bound to be someone affected! +% +% To ensure that you are using the most accessible colors, the ACM +% recommends that you choose sets of colors to help ensure suitable +% variations in when printed in greyscale by using either of the following tools: +% \begin{enumerate} +% \item ColourBrewer: \url{http://colorbrewer2.org/} +% \item ACE: The Accessible Colour Evaluator: +% \url{http://daprlab.com/ace/} for designing WCAG 2.0 compliant +% palettes. +% \end{enumerate} +% +% +%\subsection{Other notable packages and typographic remarks} +%\label{sec:ug_other} +% +% Several other packages are recommended for specialized tasks. +% +% The package |subcaption|~\cite{Sommerfeldt13:Subcaption} is +% recommended for complex figures with several subplots or subfigures +% that require separate subcaptioning. The packages +% |nomencl|~\cite{Nomencl} and +% |glossaries|~\cite{Talbot16:Glossaries} can be used for the +% automatic creation of the lists of symbols and concepts used. +% +% +% By default |acmart| prevents all widows and orphans (i.e., lonely +% lines at the beginning or end of the page) and hyphenation at +% the end of the page. This is done by the rather strict settings +% \begin{verbatim} +% \widowpenalty=10000 +% \clubpenalty=10000 +% \brokenpenalty=10000 +% \end{verbatim} +% However, this may lead to frustrating results when the authors must +% obey a page limit. Setting these penalties to smaller values may +% help if you absolutely need to. +% +% Another problem might be the too strict line breaking rules. Again, +% a strategically placed \cs{sloppy} command or putting the +% problematic paragraph inside \texttt{sloppypar} environment might +% help---but beware, the results might be, well, sloppy. +% +% Note that the uppercasing in section titles is done using +% the |textcase| package~\cite{Carlisle04:Textcase}, so the command +% \cs{NoCaseChange} inside the title may help to prevent extraneous +% uppercasing. +% +% +% +%\subsection{Disabled or forbidden commands} +%\label{sec:ug_disabled} +% +% The goal of |acmart| package is to provide a uniform look and feel +% for ACM publications. Accordingly, a number of commands is +% forbidden or disabled in |acmart|. +% +% You may \emph{not} put several authors or several e-mails into a +% \cs{author} or \cs{email} command. This may lead to errors or +% warning. +% +% You cannot change \cs{baselinestretch} in your document: this +% produces an error. +% +% You should not abuse the command \cs{vspace}: this command may +% disturb the typesetting of ACM papers. +% +% You should not load |amssymb| package since the package |acmart| +% defines the corresponding symbols itself. +% +%\subsection{Notes for wizards} +%\label{sec:ug_preload} +% +% Sometimes you need to change the behavior of |acmart|. The +% usual way to do this is to redefine commands in the preamble. +% However, these definitions are executed \emph{after} |acmart| is +% loaded and certain decisions are made. This presents a number of +% problems. +% +% For example, one may want to use the |titletoc| package with |acmart|. +% This package should be loaded before |hyperref|. However, since +% |acmart| loads |hyperref| itself, the line |\usepackage{titletoc}| +% in the preamble will lead to grief (see +% \url{http://tex.stackexchange.com/questions/357265/using-titletoc-with-acm-acmart-style}). +% +% Another example is passing options to a package. Suppose you want to +% use the |dvipsnames| option of the |xcolor| package. Normally you cannot do +% this because |acmart| loads this package itself without options. +% +% The file |acmart-preload-hook.tex| can be used to solve these +% problems. If this file exists, it will be processed before any other +% package. You can use this file to load packages or pass options to +% them. For example, if you put in this file +% \begin{verbatim} +% \let\LoadClassOrig\LoadClass +% \renewcommand\LoadClass[2][]{\LoadClassOrig[#1]{#2}% +% \usepackage{titletoc}} +% \end{verbatim} +% then |titletoc| will be loaded before |hyperref|. If you put in +% this file +% \begin{verbatim} +% \PassOptionsToPackage{dvipsnames}{xcolor} +% \end{verbatim} +% you will pass |dvipsnames| to |xcolor|. +% +% \textbf{Important note.} This hook makes it too easy to create a +% manuscript that is not acceptable by the ACM. It is even easier to +% create a file that cannot be compiled. So please do not use it +% \emph{unless you know what you are doing.} And if you use it, +% \emph{do not ask for support.} If you decide to use this hook, you +% are on your own. +% +% \DescribeMacro{\AtBeginMaketitle}% +% Another hook is \cs{AtBeginMaketitle}. The commands in this hook +% are executed before \cs{maketitle}, for example, +% \begin{verbatim} +% \AtBeginMaketitle{\acmPrice{125.00}} +% \end{verbatim} +% +% +%\subsection{Currently supported publications} +%\label{sec:pubs} +% +%\bgroup\centering +% \begin{longtable}{>{\ttfamily}p{0.2\textwidth}@{}p{0.8\textwidth}} +% \caption{ACM publications and arguments of the \cs{acmJournal} +% command} +% \label{tab:pubs}\\ +% \toprule +% \normalfont Abbreviation & Publication \\ +% \midrule +% \endfirsthead +% \caption[]{ACM publications and arguments of the \cs{acmJournal} +% command (continued)}\\ +% \toprule +% \normalfont Abbreviation & Publication \\ +% \midrule +% \endhead +% \bottomrule +% \endfoot +% CIE & ACM Computers in Entertainment \\ +% CSUR & ACM Computing Surveys\\ +% DGOV & Digital Government: Research and Practice \\ +% DTRAP & Digital Threats: Research and Practice\\ +% HEALTH & ACM Transactions on Computing for Healthcare\\ +% IMWUT & PACM on Interactive, Mobile, Wearable and Ubiquitous +% Technologies\\ +% JACM & Journal of the ACM \\ +% JDIQ & ACM Journal of Data and Information Quality \\ +% JEA & ACM Journal of Experimental Algorithmics \\ +% JERIC & ACM Journal of Educational Resources in Computing\\ +% JETC & ACM Journal on Emerging Technologies in Computing Systems \\ +% JOCCH & ACM Journal on Computing and Cultural Heritage \\ +% PACMCGIT & Proceedings of the ACM on Computer Graphics and +% Interactive Techniques\\ +% PACMHCI & PACM on Human-Computer Interaction\\ +% PACMPL & PACM on Programming Languages \\ +% POMACS & PACM on Measurement and Analysis of Computing Systems \\ +% TAAS & ACM Transactions on Autonomous and Adaptive Systems\\ +% TACCESS & ACM Transactions on Accessible Computing\\ +% TACO & ACM Transactions on Architecture and Code Optimization \\ +% TALG & ACM Transactions on Algorithms \\ +% TALLIP & ACM Transactions on Asian and Low-Resource Language +% Information Processing\\ +% TAP & ACM Transactions on Applied Perception \\ +% TCPS & ACM Transactions on Cyber-Physical Systems\\ +% TDS & ACM/IMS Transactions on Data Science\\ +% TEAC & ACM Transactions on Economics and Computation\\ +% TECS & ACM Transactions on Embedded Computing Systems \\ +% TELO & ACM Transactions on Evolutionary Learning \\ +% THRI & ACM Transactions on Human-Robot Interaction\\ +% TIIS & ACM Transactions on Interactive Intelligent Systems\\ +% TIOT & ACM Transactions on Internet of Things \\ +% TISSEC & ACM Transactions on Information and System Security\\ +% TIST & ACM Transactions on Intelligent Systems and Technology \\ +% TKDD & ACM Transactions on Knowledge Discovery from Data\\ +% TMIS & ACM Transactions on Management Information Systems\\ +% TOCE & ACM Transactions on Computing Education\\ +% TOCHI & ACM Transactions on Computer-Human Interaction\\ +% TOCL & ACM Transactions on Computational Logic\\ +% TOCS & ACM Transactions on Computer Systems \\ +% TOCT & ACM Transactions on Computation Theory \\ +% TODAES & ACM Transactions on Design Automation of Electronic Systems\\ +% TODS & ACM Transactions on Database Systems\\ +% TOG & ACM Transactions on Graphics\\ +% TOIS & ACM Transactions on Information Systems\\ +% TOIT & ACM Transactions on Internet Technology\\ +% TOMACS & ACM Transactions on Modeling and Computer Simulation \\ +% TOMM & ACM Transactions on Multimedia Computing, Communications +% and Applications \\ +% TOMPECS & ACM Transactions on Modeling and Performance Evaluation +% of Computing Systems\\ +% TOMS & ACM Transactions on Mathematical Software\\ +% TOPC & ACM Transactions on Parallel Computing\\ +% TOPLAS & ACM Transactions on Programming Languages and Systems\\ +% TOPS & ACM Transactions on Privacy and Security\\ +% TOS & ACM Transactions on Storage\\ +% TOSEM & ACM Transactions on Software Engineering and Methodology\\ +% TOSN & ACM Transactions on Sensor Networks\\ +% TQC & ACM Transactions on Quantum Computing\\ +% TRETS & ACM Transactions on Reconfigurable Technology and Systems\\ +% TSAS & ACM Transactions on Spatial Algorithms and Systems\\ +% TSC & ACM Transactions on Social Computing\\ +% TSLP & ACM Transactions on Speech and Language Processing \\ +% TWEB & ACM Transactions on the Web\\ +% \end{longtable} +%\egroup +% +% Besides the publications listed in Table~\ref{tab:pubs}, there is a +% special ``publication'' type FACMP, a forthcoming ACM publication, +% reserved for new journals which are not assigned an ISSN yet. +% +% +%\subsection{A note about \texttt{sigchi-a} format} +%\label{sec:sigchi-a} +% +% Starting in Spring 2020 ACM retired SIGCHI Extended Abstract format +% (|sigchi-a|). ACM will not, under any circumstances, accept +% documents in this format for publication and will not offer +% technical support to the authors who use this template. +% +% You may use this format in the |nonacm| mode only, as in +% \begin{verbatim} +% \documentclass[sigchi-a, nonacm]{acmart} +% \end{verbatim} +% +% +% +% \DescribeEnv{sidebar}% +% \DescribeEnv{marginfigure}% +% \DescribeEnv{margintable}% +% This format has large margin uses for special figures and +% tables. This package provides three environments for this with +% optional captions: +% \begin{description} +% \item[sidebar:] textual information in the margin, +% \item[marginfigure:] a figure in the margin, +% \item[margintable:] a table in the margin. +% \end{description} +% +% The environments |figure| and |table| produce figures and tables +% with the width of the text column. The environments |figure*| and +% |table*| produce ``wide'' figures and tables, which take a large +% part of the margin. +% +% The horizontal sizes of figures are: +% \begin{enumerate} +% \item |figure|: \cs{columnwidth}, +% \item |marginfigure|: \cs{marginparwidth}, +% \item |figure*|: \cs{fulltextwidth}. +% \end{enumerate} +% +% +% +% \StopEventually{ +% \clearpage +% \bibliography{acmart} +% \bibliographystyle{unsrt}} +% +% \clearpage +% +% +%\section{Implementation} +%\label{sec:impl} +% +%\subsection{Identification} +%\label{sec:ident} +% +% We start with a declaration of who we are. Most |.dtx| files put +% driver code in a separate~|.drv| driver file. We roll this code into the +% main file and use the pseudo-guard |<gobble>| for it. +% \begin{macrocode} +%<class>\NeedsTeXFormat{LaTeX2e} +%<*gobble> +\ProvidesFile{acmart.dtx} +%</gobble> +%<class>\ProvidesClass{acmart} +[2020/11/15 v1.75 Typesetting articles for the Association for Computing Machinery] +% \end{macrocode} +% +% \changes{v1.00}{2016/04/14}{First released version} +% \changes{v1.01}{2016/04/18}{Defined ACM colors} +% \changes{v1.01}{2016/04/18}{Changed hyperref colors in screen mode +% (closes \url{https://github.com/borisveytsman/acmart/issues/1})} +% \changes{v1.01}{2016/04/18}{Set headheight to 1pc for all formats +% (closes \url{https://github.com/borisveytsman/acmart/issues/5})} +% \changes{v1.02}{2016/04/21}{Documentation changes +% (closes \url{https://github.com/borisveytsman/acmart/issues/13})} +% \changes{v1.02}{2016/04/21}{Added TOPS and TSC +% (closes \url{https://github.com/borisveytsman/acmart/issues/12})} +% \changes{v1.03}{2016/04/22}{Added authorversion option +% (closes \url{https://github.com/borisveytsman/acmart/issues/9})} +% \changes{v1.03}{2016/04/22}{Added anonsuppress environment} +% \changes{v1.04}{2016/04/26}{Updated bibliography for siggraph} +% \changes{v1.05}{2016/04/27}{Patched \cs{setcitestyle} command; +% closes \url{https://github.com/borisveytsman/acmart/issues/19}} +% \changes{v1.05}{2016/04/27}{Added processing doi numbers for +% acmsiggraph and doi numbers for sigproc.bib} +% \changes{v1.08}{2016/05/13}{SIGPLAN reformatting by Matthew Fluet} +% \changes{v1.08}{2016/05/13}{Typos corrected (Tobias Pape)} +% \changes{v1.09}{2016/05/18}{Revert SIGPLAN caption rules} +% \changes{v1.11}{2016/05/27}{Customization of ACM theorem styles and +% proof environment by Matthew Fluet} +% \changes{v1.12}{2016/05/30}{Documentation updates} +% \changes{v1.14}{2016/06/09}{\cs{citestyle} updates (Matthew Fluet)} +% \changes{v1.16}{2016/07/07}{Formatting header/footer (Matthew +% Fluet)} +% \changes{v1.18}{2016/07/10}{Natbib is now the default for all +% formats} +% \changes{v1.19}{2016/07/28}{Include 'Abstract', 'Acknowledgements', +% and 'References' in PDF bookmarks (Matthew Fluet)} +% \changes{v1.20}{2016/08/06}{Bug fixes for bst} +% \changes{v1.22}{2016/09/25}{More bibliography changes for Aptara} +% \changes{v1.23}{2016/11/04}{Add PACMPL journal option} +% \changes{v1.26}{2016/12/24}{Corrected \cs{shortcite} bug} +% \changes{v1.26}{2016/12/24}{Documentation typos fixed (thanks to +% Stephen Spencer)} +% \changes{v1.30}{2017/02/04}{Bibtex style now recognizes https:// in +% doi} +% \changes{v1.31}{2017/03/04}{Documentation changes} +% \changes{v1.32}{2017/03/07}{Format siggraph is now obsolete} +% \changes{v1.32}{2017/03/07}{Added POMACS journal option} +% \changes{v1.33}{2017/03/12}{BibTeX crossref bug corrected} +% \changes{v1.33}{2017/03/18}{BibTeX comma before articleno bug +% corrected} +% \changes{v1.33}{2017/03/18}{BibTeX numpages bug corrected} +% \changes{v1.33}{2017/03/28}{Added acmart-preload-hook} +% \changes{v1.33}{2017/03/33}{Documentation updates} +% \changes{v1.35}{2017/04/23}{BibTeX bug fixed: et al.} +% \changes{v1.36}{2017/05/12}{Added the possibility to adjust number of +% author boxes per row in conference formats} +% \changes{v1.37}{2017/05/13}{Set \cs{normalparindent}; Reduce list +% indentation (Matthew Fluet)}% +% \changes{v1.38}{2017/05/13}{Increase default font size for SIGPLAN} +% \changes{v1.40}{2017/05/27}{Bibliography changes} +% \changes{v1.40}{2017/06/15}{Added package cleveref} +% \changes{v1.40}{2017/06/16}{Added new copyright version: +% licensedcagov} +% \changes{v1.41}{2017/06/25}{Added new badges} +% \changes{v1.42}{2017/07/02}{Deleted ACM badges} +% \changes{v1.44}{2017/07/30}{Added package refcount} +% \changes{v1.44}{2017/07/30}{Deleted package cleveref} +% \changes{v1.44}{2017/07/30}{Put theorem defs in a separate style} +% \changes{v1.46}{2017/08/17}{Bst file bug fixes: label width is +% calculated correctly} +% \changes{v1.46}{2017/08/25}{Added etoolbox} +% \changes{v1.46}{2017/08/29}{Restore theorem defs to class file} +% \changes{v1.47}{2017/08/31}{New journal: THRI} +% \changes{v1.48}{2017/09/09}{Typos fixed (Jamie Davis)} +% \changes{v1.48}{2017/09/16}{Code prettying (Michael D.~Adams)} +% \changes{v1.48}{2017/09/23}{Misc entries in the bibliography no +% longer produce a separate date} +% \changes{v1.48}{2017/10/01}{Initial support for Biblatex (Daniel Thomas)} +% \changes{1.48}{2017/10/14}{Bib code cleanup (Zack Weinberg)} +% \changes{1.48}{2017/12/03}{Documentation update (siggraph)} +% \changes{1.49}{2018/01/24}{New journal: DTRAP} +% \changes{1.53}{2018/04/14}{New journals: PACMCGIT, TIOT, TDSCI} +% \changes{1.53}{2018/04/14}{Rearranged docs} +% \changes{1.54}{2018/06/17}{Moved footnote stuff before hyperref call +% (Ross Moore)} +% \changes{1.56}{2018/11/11}{Documented \cs{Description}} +% \changes{1.57}{2018/12/16}{Booktabs package is now the default} +% \changes{1.58}{2019/02/09}{Changes in samples (Enrico Gregorio)} +% \changes{1.58}{2019/03/29}{New journal: HEALTH. TDS is renamed to +% TDSCI} +% \changes{1.60}{2019/04/22}{New option: urlbreakonhyphens} +% \changes{1.62}{2019/07/31}{New journal: TELO} +% \changes{1.63}{2019/08/04}{New journal: TQUANT} +% \changes{1.63}{2019/08/04}{New journal: FACMP} +% \changes{1.63a}{2019/08/05}{Move: TQUANT to TQC} +% \changes{1.64}{2019/08/17}{Putting abstract after \cs{maketitle} now +% causes an error} +% \changes{1.65}{2019/10/19}{New journal: DGOV} +% \changes{1.66}{2019/12/18}{ACM reference format is now mandatory for +% papers over one page; CCS concepts and keywords are now mandatory for +% papers over two pages} +% \changes{1.66}{2019/12/18}{Authors' addresses are mandatory for +% journal articles} +% \changes{1.71}{2020/05/01}{Retired sigchi and sigchi-a} +% \changes{1.71}{2020/05/02}{Bibliography change: volume for +% @inproceedings is now in brackets together with series} +% \changes{1.71}{2020/05/02}{LuaTeX now uses the OTF versions of +% fonts} +% \changes{1.75}{2020/10/29}{Documentation update} +% +% And the driver code: +% \begin{macrocode} +%<*gobble> +\documentclass{ltxdoc} +\usepackage{array,booktabs,amsmath,graphicx,fancyvrb,tabularx, longtable} +\usepackage[tt=false, type1=true]{libertine} +\usepackage[varqu]{zi4} +\usepackage[libertine]{newtxmath} +\usepackage[tableposition=top]{caption} +\usepackage{hypdoc} +\PageIndex +\CodelineIndex +\RecordChanges +\EnableCrossrefs +\begin{document} + \DocInput{acmart.dtx} +\end{document} +%</gobble> +%<*class> +\def\@classname{acmart} +% \end{macrocode} +% +% +% +%\subsection{Preload hook} +%\label{sec:preload} +% +% We preload |acmart-preload-hook|: +% \begin{macrocode} +\InputIfFileExists{acmart-preload-hook.tex}{% + \ClassWarning{\@classname}{% + I am loading acmart-preload-hook.tex. You are fully responsible + for any problems from now on.}}{} +% \end{macrocode} +% +% \subsection{Options} +% \label{sec:options} +% +% We need |xkeyval| since some of our options may have values: +% \begin{macrocode} +\RequirePackage{xkeyval} +% \end{macrocode} +% +% We use |xstring| to check whether user input is valid +% \begin{macrocode} +\RequirePackage{xstring} +% \end{macrocode} +% +% We need |iftex| to check the engine +% \begin{macrocode} +\RequirePackage{iftex} +% \end{macrocode} +% +% +% +% \begin{macro}{format} +% The possible formats +% \begin{macrocode} +\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{% + manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi, sigchi-a}[manuscript]{}{% + \ClassError{\@classname}{The option format must be manuscript, + acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi or sigchi-a}} +\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}} +\@DeclareACMFormat{manuscript} +\@DeclareACMFormat{acmsmall} +\@DeclareACMFormat{acmlarge} +\@DeclareACMFormat{acmtog} +\@DeclareACMFormat{sigconf} +\@DeclareACMFormat{siggraph} +\@DeclareACMFormat{sigplan} +\@DeclareACMFormat{sigchi} +\@DeclareACMFormat{sigchi-a} +\ExecuteOptionsX{format} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@screen} +% Whether we use screen mode +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{% + \if@ACM@screen + \PackageInfo{\@classname}{Using screen mode}% + \else + \PackageInfo{\@classname}{Not using screen mode}% + \fi}{\PackageError{\@classname}{The option screen can be either true or + false}} +\ExecuteOptionsX{screen=false} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@urlbreakonhyphens} +% \changes{1.60}{2019/04/22}{introduced macro} +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{% + \if@ACM@urlbreakonhyphens + \PackageInfo{\@classname}{Using breaking urls on hyphens}% + \else + \PackageInfo{\@classname}{Not breaking urls on hyphens}% + \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or + false}} +\ExecuteOptionsX{urlbreakonhyphens=true} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@ACM@acmthm} +% \changes{v1.44}{2017/07/30}{Added macro} +% \changes{v1.46}{2017/08/29}{Modified description} +% Whether we define theorem-like environments. +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{% + \if@ACM@acmthm + \PackageInfo{\@classname}{Requiring acmthm}% + \else + \PackageInfo{\@classname}{Suppressing acmthm}% + \fi}{\PackageError{\@classname}{The option acmthm can be either true or + false}} +\ExecuteOptionsX{acmthm=true} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@ACM@review} +% \changes{v1.48}{2017/09/09}{Review mode now switches on folios} +% Whether we use review mode +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{% + \if@ACM@review + \PackageInfo{\@classname}{Using review mode}% + \AtBeginDocument{\@ACM@printfoliostrue}% + \else + \PackageInfo{\@classname}{Not using review mode}% + \fi}{\PackageError{\@classname}{The option review can be either true or + false}} +\ExecuteOptionsX{review=false} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@authorversion} +% \changes{v1.03}{2016/04/22}{Added macro} +% Whether we use author's-version mode +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{% + \if@ACM@authorversion + \PackageInfo{\@classname}{Using authorversion mode}% + \else + \PackageInfo{\@classname}{Not using authorversion mode}% + \fi}{\PackageError{\@classname}{The option authorversion can be either true or + false}} +\ExecuteOptionsX{authorversion=false} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@nonacm} +% \changes{v1.54}{2018/05/08}{Added macro} +% Special option for non-ACM publications +% using the ACM typesetting options. +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{% + \if@ACM@nonacm + \PackageInfo{\@classname}{Using nonacm mode}% + \AtBeginDocument{\@ACM@printacmreffalse}% + % in 'nonacm' mode we disable the "ACM Reference Format" + % printing by default, but this can be re-enabled by the + % user using \settopmatter{printacmref=true} + \else + \PackageInfo{\@classname}{Not using nonacm mode}% + \fi}{\PackageError{\@classname}{The option nonacm can be either true or + false}} +\ExecuteOptionsX{nonacm=false} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@balance} +% \changes{v1.57}{2018/12/16}{Added macro} +% Whether to balance the last page +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{% + \PackageError{\@classname}{The option balance can be either true or + false}} +\ExecuteOptionsX{balance} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@ACM@natbib@override} +% \changes{v1.12}{2016/05/30}{Added macro} +% \changes{v1.33}{2017/03/28}{Deleted macro} +% This macro is no longer used. +% \end{macro} +% +% \begin{macro}{\if@ACM@natbib} +% Whether we use |natbib| mode +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{% + \if@ACM@natbib + \PackageInfo{\@classname}{Explicitly selecting natbib mode}% + \else + \PackageInfo{\@classname}{Explicitly deselecting natbib mode}% + \fi}{\PackageError{\@classname}{The option natbib can be either true or + false}} +\ExecuteOptionsX{natbib=true} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@ACM@anonymous} +% Whether we use anonymous mode +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{% + \if@ACM@anonymous + \PackageInfo{\@classname}{Using anonymous mode}% + \else + \PackageInfo{\@classname}{Not using anonymous mode}% + \fi}{\PackageError{\@classname}{The option anonymous can be either true or + false}} +\ExecuteOptionsX{anonymous=false} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@ACM@timestamp} +% \changes{v1.33}{2017/03/10}{Added macro (Michael D.~Adams)} +% Whether we use timestamp mode +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{% + \if@ACM@timestamp + \PackageInfo{\@classname}{Using timestamp mode}% + \else + \PackageInfo{\@classname}{Not using timestamp mode}% + \fi}{\PackageError{\@classname}{The option timestamp can be either true or + false}} +\ExecuteOptionsX{timestamp=false} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@ACM@authordraft} +% \changes{v1.33}{2017/03/28}{Added macro} +% \changes{v1.36}{2017/05/13}{Corrected typo, thanks to bargteil} +% Whether we use author-draft mode +% \begin{macrocode} +\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{% + \if@ACM@authordraft + \PackageInfo{\@classname}{Using authordraft mode}% + \@ACM@timestamptrue + \@ACM@reviewtrue + \else + \PackageInfo{\@classname}{Not using authordraft mode}% + \fi}{\PackageError{\@classname}{The option authordraft can be either true or + false}} +\ExecuteOptionsX{authordraft=false} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\ACM@fontsize} +% The font size to pass to the base class +% \begin{macrocode} +\def\ACM@fontsize{} +\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}} +% \end{macrocode} +% +% \end{macro} +% +% +% \changes{v1.01}{2016/04/18}{Explicitly put draft option +% (closes \url{https://github.com/borisveytsman/acmart/issues/4})} +% +% \begin{macrocode} +\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}} +\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}} +\ProcessOptionsX +\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr} +% \end{macrocode} +% +% +% +%\subsection{Setting switches} +%\label{sec:switches} +% +% \begin{macro}{\if@ACM@manuscript} +% Whether we use manuscript mode +% \begin{macrocode} +\newif\if@ACM@manuscript +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@journal} +% There are two kinds of publications: journals and books +% \begin{macrocode} +\newif\if@ACM@journal +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@ACM@journal@bibstrip} +% \changes{v1.59}{2019/04/20}{Introduced macro} +% Sometimes ACM wants a journal-like publication to have conference +% information in the bibstrip and vice versa, so we have an additional +% switch. +% \begin{macrocode} +\newif\if@ACM@journal@bibstrip +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@sigchiamode} +% The formatting of SIGCHI extended abstracts is quite unusual. We have a +% special switch for them. +% \begin{macrocode} +\newif\if@ACM@sigchiamode +% \end{macrocode} +% +% \end{macro} +% +% +% Setting up switches +% \begin{macrocode} +\ifnum\ACM@format@nr=5\relax % siggraph +\ClassWarning{\@classname}{% + The format siggraph is now obsolete.\MessageBreak + I am switching to sigconf.} + \setkeys{acmart.cls}{format=sigconf} +\fi +\ifnum\ACM@format@nr=7\relax % sigchi +\ClassWarning{\@classname}{% + The format sigchi is now obsolete.\MessageBreak + I am switching to sigconf.} + \setkeys{acmart.cls}{format=sigconf} +\fi +\ifnum\ACM@format@nr=8\relax % sigchi +\ClassWarning{\@classname}{% + ACM SIGCHI has retired the SIGCHI-A template\MessageBreak + effective immediately. ACM is keeping this template\MessageBreak + option available to authors who are working on legacy\MessageBreak + documents only. ACM will not, under any circumstances,\MessageBreak + accept documents in this format for publication and\MessageBreak + will not offer technical support to the authors who use\MessageBreak + this template.\MessageBreak + ACM SIGCHI is directing Conference leaders and\MessageBreak + authors to publish their articles using the SIGCONF\MessageBreak + template call.} +\fi +\ifnum\ACM@format@nr=0\relax + \@ACM@manuscripttrue +\else + \@ACM@manuscriptfalse +\fi +\@ACM@sigchiamodefalse +\ifcase\ACM@format@nr +\relax % manuscript + \@ACM@journaltrue +\or % acmsmall + \@ACM@journaltrue +\or % acmlarge + \@ACM@journaltrue +\or % acmtog + \@ACM@journaltrue +\or % sigconf + \@ACM@journalfalse +\or % siggraph + \@ACM@journalfalse + \or % sigplan + \@ACM@journalfalse + \or % sigchi + \@ACM@journalfalse +\or % sigchi-a + \@ACM@journalfalse + \@ACM@sigchiamodetrue +\fi +\if@ACM@journal + \@ACM@journal@bibstriptrue +\else + \@ACM@journal@bibstripfalse +\fi +% \end{macrocode} +% +% +% +%\subsection{Loading the base class and package} +%\label{sec:loading} +% +% \changes{v1.13}{2016/06/06}{Increased font size for ACM Large} +% \changes{v1.38}{2017/05/13}{Increase default font size for SIGPLAN} +% +% +% At this point we either have \cs{ACM@fontsize} or use defaults +% \begin{macrocode} +\ifx\ACM@fontsize\@empty + \ifcase\ACM@format@nr + \relax % manuscript + \def\ACM@fontsize{9pt}% + \or % acmsmall + \def\ACM@fontsize{10pt}% + \or % acmlarge + \def\ACM@fontsize{10pt}% + \or % acmtog + \def\ACM@fontsize{9pt}% + \or % sigconf + \def\ACM@fontsize{9pt}% + \or % siggraph + \def\ACM@fontsize{9pt}% + \or % sigplan + \def\ACM@fontsize{10pt}% + \or % sigchi + \def\ACM@fontsize{9pt}% + \or % sigchi-a + \def\ACM@fontsize{10pt}% + \fi +\fi +\ClassInfo{\@classname}{Using fontsize \ACM@fontsize} +\LoadClass[\ACM@fontsize, reqno]{amsart} +\RequirePackage{microtype} +% \end{macrocode} +% +% +% We need |etoolbox| for delayed code +% \begin{macrocode} +\RequirePackage{etoolbox} +% \end{macrocode} +% +% Booktabs is now the default +% \begin{macrocode} +\RequirePackage{booktabs} +% \end{macrocode} +% +% +% We need |totpages| to calculate the number of pages and +% |refcount| to use that number +% \begin{macrocode} +\RequirePackage{refcount} +\RequirePackage{totpages} +% \end{macrocode} +% +% The \cs{collect@body} macro in |amsmath| is defined using \cs{def}. We load +% |environ| to access the \cs{long} version of this command +% \begin{macrocode} +\RequirePackage{environ} +% \end{macrocode} +% +% We use |setspace| for double spacing +% \begin{macrocode} +\if@ACM@manuscript +\RequirePackage{setspace} +\onehalfspacing +\fi +% \end{macrocode} +% +% \changes{v1.40}{2017/06/05}{Added `textcase' package} +% We need |textcase| for better upcasing +% \begin{macrocode} +\RequirePackage{textcase} +% \end{macrocode} +% +% +%\subsection{Citations} +% \changes{v1.19}{2016/07/28}{Include 'References' in PDF bookmarks +% (Matthew Fluet)} +% \changes{v1.14}{2016/06/09}{Patched \cs{citestyle}} +% \changes{v1.55}{2016/08/012}{Typo corrected (Zack Weinberg)} +% We patch \cs{setcitestyle} to allow, for example, +% \cs{setcitestyle}|{sort}| and \cs{setcitestyle}|{nosort}|. We patch +% \cs{citestyle} to warn about undefined citation styles. +% \begin{macrocode} +\if@ACM@natbib + \RequirePackage{natbib} + \renewcommand{\bibsection}{% + \section*{\refname}% + \phantomsection\addcontentsline{toc}{section}{\refname}% + } + \renewcommand{\bibfont}{\bibliofont} + \renewcommand\setcitestyle[1]{ + \@for\@tempa:=#1\do + {\def\@tempb{round}\ifx\@tempa\@tempb + \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi + \def\@tempb{square}\ifx\@tempa\@tempb + \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi + \def\@tempb{angle}\ifx\@tempa\@tempb + \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi + \def\@tempb{curly}\ifx\@tempa\@tempb + \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi + \def\@tempb{semicolon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{colon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{comma}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{,}\fi + \def\@tempb{authoryear}\ifx\@tempa\@tempb + \NAT@numbersfalse\fi + \def\@tempb{numbers}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@superfalse\fi + \def\@tempb{super}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@supertrue\fi + \def\@tempb{nobibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@gobble\fi + \def\@tempb{bibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@citestyle\fi + \def\@tempb{sort}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\fi + \def\@tempb{nosort}\ifx\@tempa\@tempb + \def\NAT@sort{\z@}\fi + \def\@tempb{compress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\@ne}\fi + \def\@tempb{nocompress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\z@}\fi + \def\@tempb{sort&compress}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi + \def\@tempb{mcite}\ifx\@tempa\@tempb + \let\NAT@merge\@ne\fi + \def\@tempb{merge}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi + \def\@tempb{elide}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi + \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb + \NAT@longnamestrue\fi + \def\@tempb{nonamebreak}\ifx\@tempa\@tempb + \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi + \expandafter\NAT@find@eq\@tempa=\relax\@nil + \if\@tempc\relax\else + \expandafter\NAT@rem@eq\@tempc + \def\@tempb{open}\ifx\@tempa\@tempb + \xdef\NAT@open{\@tempc}\fi + \def\@tempb{close}\ifx\@tempa\@tempb + \xdef\NAT@close{\@tempc}\fi + \def\@tempb{aysep}\ifx\@tempa\@tempb + \xdef\NAT@aysep{\@tempc}\fi + \def\@tempb{yysep}\ifx\@tempa\@tempb + \xdef\NAT@yrsep{\@tempc}\fi + \def\@tempb{notesep}\ifx\@tempa\@tempb + \xdef\NAT@cmt{\@tempc}\fi + \def\@tempb{citesep}\ifx\@tempa\@tempb + \xdef\NAT@sep{\@tempc}\fi + \fi + }% + \NAT@@setcites + } + \renewcommand\citestyle[1]{% + \ifcsname bibstyle@#1\endcsname% + \csname bibstyle@#1\endcsname\let\bibstyle\@gobble% + \else% + \@latex@error{Undefined `#1' citestyle}% + \fi + }% +\fi +% \end{macrocode} +% +% \begin{macro}{\bibstyle@acmauthoryear} +% \changes{v1.13}{2016/06/06}{Added macro} +% \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@acmauthoryear} +% before use} +% \changes{v1.35}{2017/04/13}{Square brackets for author-year style} +% The default author-year format: +% \begin{macrocode} +\newcommand{\bibstyle@acmauthoryear}{% + \setcitestyle{% + authoryear,% + open={[},close={]},citesep={;},% + aysep={},yysep={,},% + notesep={, }}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\bibstyle@acmnumeric} +% \changes{v1.13}{2016/06/06}{Added macro} +% \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@numeric} +% before use} +% The default numeric format: +% \begin{macrocode} +\newcommand{\bibstyle@acmnumeric}{% + \setcitestyle{% + numbers,sort&compress,% + open={[},close={]},citesep={,},% + notesep={, }}} +% \end{macrocode} +% +% \end{macro} +% +% \changes{v1.28}{2017/01/07}{Corrected option natbib behavior} +% The default is numeric: +% \begin{macrocode} +\if@ACM@natbib +\citestyle{acmnumeric} +\fi +% \end{macrocode} +% +% \begin{macro}{\@startsection} +% \changes{v1.31}{2017/03/04}{Added \cs{tochangmeasure}} +% Before we call |hyperref|, we redefine \cs{startsection} commands to +% their \LaTeX\ defaults since the |amsart| ones are too AMS-specific. +% We need to do this early since we want |hyperref| to have a chance +% to redefine them again: +% \begin{macrocode} +\def\@startsection#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@sect#1#2#3#4#5#6[#7]#8{% + \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname\space}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \ignorespaces} +\def\@seccntformat#1{\csname the#1\endcsname\quad} +\def\@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@startsection} +% \changes{v1.31}{2017/03/04}{Rededined macro} +% \changes{v1.43}{2017/07/09}{Added \cs{makeatletter}} +% The |amsart| package redefines \cs{startsection}. Here we redefine +% it again to make the table of contents work. +% \begin{macrocode} +\def\@starttoc#1#2{\begingroup\makeatletter + \setTrue{#1}% + \par\removelastskip\vskip\z@skip + \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}% + {.5\linespacing}{\centering\contentsnamefont}{#2}% + \@input{\jobname.#1}% + \if@filesw + \@xp\newwrite\csname tf@#1\endcsname + \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax + \fi + \global\@nobreakfalse \endgroup + \addvspace{32\p@\@plus14\p@}% +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\l@subsection} +% \changes{v1.40}{2017/05/27}{Redefined macro} +% Section spacing is more generous than for |amsart| +% \begin{macrocode} +\def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\l@subsection} +% \changes{v1.31}{2017/03/04}{Redefined macro} +% The spacing in |amsart| is too large +% \begin{macrocode} +\def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}} +% \end{macrocode} +% +% \end{macro} +% \begin{macro}{\l@subsubsection} +% \changes{v1.31}{2017/03/04}{Redefined macro} +% \changes{v1.71}{2020/04/30}{Bug fixed (thanks to Andrew Black)} +% The spacing in |amsart| is too large +% \begin{macrocode} +\def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}} +% \end{macrocode} +% +% \end{macro} +% +% We need to define foonote-related stuff before the call to hyperref +% (Ross Moore) +% \begin{macro}{\@makefntext} +% We do not use indentation for footnotes +% \begin{macrocode} +\def\@makefntext{\noindent\@makefnmark} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@footnotetext} +% In |sigchi-a| mode our footnotes are in the margin! +% \begin{macrocode} +\if@ACM@sigchiamode +\long\def\@footnotetext#1{\marginpar{% + \reset@font\small + \interlinepenalty\interfootnotelinepenalty + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}}% +\fi +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mpfootnotetext} +% \changes{v1.13}{2016/06/06}{Made minipage footnotes centered} +% We want the footnotes in minipages centered: +% \begin{macrocode} +\long\def\@mpfootnotetext#1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \color@begingroup\centering + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@makefnmark} +% \changes{v1.17}{2016/067/09}{Redefined} +% AMS classes use a buggy definition of \cs{makefnmark}. We revert +% to the standard one. +% \begin{macrocode} +\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} +% \end{macrocode} +% +% \end{macro} +% +% +% And now, |hyperref| +% \changes{v1.28}{2017/01/07}{Got rid of warnings in pdf keywords} +% \changes{v1.46}{2017/08/25}{Delayed hypersetup since journal options +% may change screen mode} +% \changes{v1.55}{2018/10/20}{Now we use purple color for links} +% \changes{v1.58}{2019/26/01}{Suppressed \cs{addtocounter} in pdf +% subject} +% \begin{macrocode} +\let\@footnotemark@nolink\@footnotemark +\let\@footnotetext@nolink\@footnotetext +\RequirePackage[bookmarksnumbered,unicode]{hyperref} +\pdfstringdefDisableCommands{% + \def\addtocounter#1#2{}% + \def\unskip{}% + \def\textbullet{- }% + \def\textrightarrow{ -> }% + \def\footnotemark{}% +} +\urlstyle{rm} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \urlstyle{sf} +\or % sigchi +\or % sigchi-a + \urlstyle{sf} +\fi +\AtEndPreamble{% + \if@ACM@urlbreakonhyphens + \def\do@url@hyp{\do\-}% + \fi + \if@ACM@screen + \hypersetup{colorlinks, + linkcolor=ACMPurple, + citecolor=ACMPurple, + urlcolor=ACMDarkBlue, + filecolor=ACMDarkBlue} + \else + \hypersetup{hidelinks} + \fi + \hypersetup{pdflang={en}, + pdfdisplaydoctitle}} +% \end{macrocode} +% +% And |hyperxmp| +% \changes{v1.72}{2020/06/14}{Added hyperxmp} +% \begin{macrocode} +\RequirePackage{hyperxmp} +% \end{macrocode} +% +% +% Bibliography mangling. +% \changes{v1.33}{2017/03/23}{Moved \cs{citename} definition for +% non-natbib bibliography, so a package may redefine it} +% \changes{v1.48}{2017/09/23}{\cs{citeyear} no longer behaves like +% \cs{citeyearpar}} +% \begin{macrocode} +\if@ACM@natbib + \let\citeN\cite + \let\cite\citep + \let\citeANP\citeauthor + \let\citeNN\citeyearpar + \let\citeyearNP\citeyear + \let\citeNP\citealt + \DeclareRobustCommand\citeA + {\begingroup\NAT@swafalse + \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}% + \providecommand\newblock{}% +\else + \AtBeginDocument{% + \let\shortcite\cite% + \providecommand\citename[1]{#1}} +\fi +\newcommand\shortcite[2][]{% + \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi} +% \end{macrocode} +% +% +% \begin{macro}{\bibliographystyle} +% \changes{v1.13}{2016/06/06}{Redefined macro} +% The |amsart| package redefines \cs{bibliographystyle} since it +% prefers the AMS bibliography style. We turn it back to the +% \LaTeX\ definition: +% \begin{macrocode} +\def\bibliographystyle#1{% + \ifx\@begindocumenthook\@undefined\else + \expandafter\AtBeginDocument + \fi + {\if@filesw + \immediate\write\@auxout{\string\bibstyle{#1}}% + \fi}} +% \end{macrocode} +% +% \end{macro} +% +% +% Graphics and color. +% \changes{1.48}{2017/10/22}{Added prologue option to xcolor} +% \begin{macrocode} +\RequirePackage{graphicx} +\RequirePackage[prologue]{xcolor} +% \end{macrocode} +% +% We define ACM colors according to~\cite{ACMIdentityStandards}: +% \begin{macrocode} +\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1} +\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0} +\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01} +\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0} +\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0} +\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19} +\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15} +\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21} +% \end{macrocode} +% +% +% Author-draft mode or sigchi-a mode +% \begin{macrocode} +\if@ACM@authordraft + \RequirePackage{draftwatermark} + \SetWatermarkFontSize{0.5in} + \SetWatermarkColor[gray]{.9} + \SetWatermarkText{\parbox{12em}{\centering + Unpublished working draft.\\ + Not for distribution.}} +\else + \if@ACM@sigchiamode + \if@ACM@nonacm\else + \RequirePackage{draftwatermark} + \SetWatermarkFontSize{0.5in} + \SetWatermarkColor[gray]{.9} + \SetWatermarkText{\parbox{12em}{\centering + Legacy document. \\ + Not for publication in an ACM venue}} + \fi + \fi +\fi +% \end{macrocode} +% +% +%\subsection{Paper size and paragraphing} +%\label{sec:paper} +% +% \changes{v1.17}{2016/07/07}{Slightly decreased margins for sigs} +% \changes{v1.29}{2017/01/22}{Increased head to 13pt} +% \changes{v1.40}{2017/07/15}{Added heightrounded to geometry} +% \changes{v1.56}{2018/10/16}{Make two-column layouts flush (Philip Quinn)} +% We use |geometry| for dimensions. Note that the present margins do not +% depend on the font size option---we might need to change this. +% See \url{https://github.com/borisveytsman/acmart/issues/5#issuecomment-272881329}. +% \begin{macrocode} +\RequirePackage{geometry} +\ifcase\ACM@format@nr +\relax % manuscript + \geometry{letterpaper,head=13pt, + marginparwidth=6pc,heightrounded}% +\or % acmsmall + \geometry{twoside=true, + includeheadfoot, head=13pt, foot=2pc, + paperwidth=6.75in, paperheight=10in, + top=58pt, bottom=44pt, inner=46pt, outer=46pt, + marginparwidth=2pc,heightrounded + }% +\or % acmlarge + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, + top=78pt, bottom=114pt, inner=81pt, outer=81pt, + marginparwidth=4pc,heightrounded + }% +\or % acmtog + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=24pt, + top=52pt, bottom=75pt, inner=52pt, outer=52pt, + marginparwidth=2pc,heightrounded + }% +\or % sigconf + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % siggraph + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigplan + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot=false, columnsep=2pc, + top=1in, bottom=1in, inner=0.75in, outer=0.75in, + marginparwidth=2pc,heightrounded + }% +\or % sigchi + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=66pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigchi-a + \geometry{twoside=false, head=13pt, + paperwidth=11in, paperheight=8.5in, + includeheadfoot, marginparsep=72pt, + marginparwidth=170pt, columnsep=20pt, + top=72pt, bottom=72pt, left=314pt, right=72pt + }% + \@mparswitchfalse + \reversemarginpar +\fi +% \end{macrocode} +% +% +% \begin{macro}{\parindent} +% \begin{macro}{\parskip} +% Paragraphing +% \begin{macrocode} +\setlength\parindent{10\p@} +\setlength\parskip{\z@} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog + \setlength\parindent{9\p@}% +\or % sigconf +\or % siggraph +\or % sigplan +\or % sigchi +\or % sigchi-a +\fi +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% \begin{macro}{\normalparindent} +% \changes{v1.37}{2017/05/13}{Set \cs{normalparindent} (Matthew Fluet)}% +% The |amsart| package defines the \cs{normalparindent} length and +% initializes it to 12pt (the value of \cs{parindent} in |amsart|). It +% is later used to set the \cs{listparindent} length in the |quotation| +% environment and the \cs{parindent} length in the \cs{@footnotetext} +% command. We set \cs{normalparindent} to the value of \cs{parindent} +% as selected by |acmart| for consistent paragraph indents. +% \begin{macrocode} +\setlength\normalparindent{\parindent} +% \end{macrocode} +% +% \end{macro} +% +% Footnotes require some consideration. We have several layers of +% footnotes: frontmatter footnotes, ``regular'' footnotes and the +% special insert for the bibstrip. In the old ACM classes, the bibstrip +% was a \cs{@float}. The problem with floats is that they tend to, well, +% float---and we want the guarantee they stay. +% +% We use |manyfoot| for layered footnotes instead. +% +% \begin{macro}{\copyrightpermissionfootnoterule} +% \changes{v1.12}{2016/05/30}{Added macro} +% This is the footnote rule that separates the bibstrip from the rest of +% the paper. It is a full width rule. +% \begin{macrocode} +\def\copyrightpermissionfootnoterule{\kern-3\p@ + \hrule \@width \columnwidth \kern 2.6\p@} +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +\RequirePackage{manyfoot} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{authorsaddresses} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{copyrightpermission} +% \end{macrocode} +% +% +% \begin{macro}{\footnoterule} +% \changes{v1.12}{2016/05/30}{Made shorter} +% Tschichold's rules: +% \begin{macrocode} +\def\footnoterule{\kern-3\p@ + \hrule \@width 4pc \kern 2.6\p@} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\endminipage} +% We do not use footnote rules in minipages +% \begin{macrocode} +\def\endminipage{% + \par + \unskip + \ifvoid\@mpfootins\else + \vskip\skip\@mpfootins + \normalcolor + \unvbox\@mpfootins + \fi + \@minipagefalse + \color@endgroup + \egroup + \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@textbottom} +% \changes{v1.31}{2017/03/04}{Redefined} +% Add some stretch according to David Carlisle's advice at +% \url{http://tex.stackexchange.com/a/62318/5522} +% \begin{macrocode} +\def\@textbottom{\vskip \z@ \@plus 1pt} +\let\@texttop\relax +% \end{macrocode} +% +% \end{macro} +% +% In two-column layouts, force both columns to be the same height by inserting +% extra internal vertical space to fill out the page. +% \begin{macrocode} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog + \flushbottom +\or % sigconf + \flushbottom +\or % siggraph + \flushbottom +\or % sigplan + \flushbottom +\or % sigchi + \flushbottom +\or % sigchi-a +\fi +% \end{macrocode} +% +%\subsection{Fonts} +%\label{sec:fonts} +% +% \changes{v1.12}{2016/05/30}{Added graceful behavior when libertine +% fonts are absent} +% \changes{v1.33}{2017/03/29}{Added cmap and glyphtounicode} +% \changes{v1.40}{2017/05/27}{Added Ross Moore code for glyphtounicode} +% +% Somehow PDFTeX and XeTeX require different incantations to make a PDF +% compliant with the current Acrobat bugs. Xpdf is much better. +% +% The code below is by Ross Moore. +% \begin{macrocode} +\ifPDFTeX +\input{glyphtounicode} +\pdfglyphtounicode{f_f}{FB00} +\pdfglyphtounicode{f_f_i}{FB03} +\pdfglyphtounicode{f_f_l}{FB04} +\pdfglyphtounicode{f_i}{FB01} +\pdfglyphtounicode{t_t}{0074 0074} +\pdfglyphtounicode{f_t}{0066 0074} +\pdfglyphtounicode{T_h}{0054 0068} +\pdfgentounicode=1 +\RequirePackage{cmap} +\fi +% \end{macrocode} +% +% +% \begin{macro}{\if@ACM@newfonts} +% \changes{v1.12}{2016/05/30}{Added macro}% +% Whether we load the new fonts +% \begin{macrocode} +\newif\if@ACM@newfonts +\@ACM@newfontstrue +\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not + have the libertine package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not + have the inconsolata (zi4.sty) package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not + have the newtxmath package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +% \end{macrocode} +% +% \end{macro} +% +% \changes{v1.30}{2017/02/15}{Switched to T1: looks like libertine has +% problems with \cs{l} in OT1}% +% \changes{v1.33}{2017/03/12}{Switched to Type~1 fonts for libertine +% even if OTF-capable engine is used (Kai Mindermann)} +% \changes{v1.51}{2018/04/05}{XeTeX now uses OTF fonts (Joachim +% Breitner)} +% \changes{v1.54}{2018/07/16}{XeTeX now uses T1 encoding} +% \changes{v1.56}{2018/11/11}{Looks like XeTeX requires explicit +% monotype font declaration} +% \changes{v1.74}{2020/10/25}{Changed the order of font loading}% +% We use Libertine throughout. +% \begin{macrocode} +\if@ACM@newfonts + \RequirePackage[T1]{fontenc} + % Note that the order in which packages are loaded matters, + % and the correct order depends on the LaTeX engine used. + % See https://github.com/borisveytsman/acmart/issues/402 + % and https://github.com/borisveytsman/acmart/issues/410 + \ifxetex + \RequirePackage[libertine]{newtxmath} + \RequirePackage[tt=false]{libertine} + \setmonofont[StylisticSet=3]{inconsolata} + \else + \ifluatex + \RequirePackage[libertine]{newtxmath} + \RequirePackage[tt=false]{libertine} + \setmonofont[StylisticSet=3]{inconsolata} + \else + \RequirePackage[tt=false, type1=true]{libertine} + \RequirePackage[varqu]{zi4} + \RequirePackage[libertine]{newtxmath} + \fi + \fi +\fi +% \end{macrocode} +% +% \begin{macro}{\liningnums} +% \changes{v1.46}{2017/08/28}{Workaround for compatibility with fontspec} +% Libertine defines \cs{liningnums}, which makes |fontspec| unhappy. +% While we do not use |fontspec|, some users do. +% \begin{macrocode} +\let\liningnums\@undefined +\AtEndPreamble{% + \DeclareTextFontCommand{\liningnums}{\libertineLF}} +% \end{macrocode} +% +% \end{macro} +% +% +% The SIGCHI extended abstracts are sans serif: +% \begin{macrocode} +\if@ACM@sigchiamode + \renewcommand{\familydefault}{\sfdefault} +\fi +% \end{macrocode} +% +% +% +%\subsection{Image descriptions} +%\label{sec:description} +% +% \begin{macro}{\if@Description@present} +% \changes{v1.56}{2018/11/11}{Added macro} +% A local switch: whether there is a description in the given figure +% \begin{macrocode} +\newif\if@Description@present +\@Description@presenttrue +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\if@undescribed@images} +% \changes{v1.56}{2018/11/11}{Added macro} +% A global switch whether some images were \emph{not} described +% \begin{macrocode} +\newif\if@undescribed@images +\@undescribed@imagesfalse +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\Description} +% \changes{v1.56}{2018/11/11}{Added macro} +% The Description macro right now just sets switches +% \begin{macrocode} +\newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces} +% \end{macrocode} +% \end{macro} +% +% The global warning +% \begin{macrocode} +\AtEndDocument{\if@undescribed@images + \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi} +% \end{macrocode} +% +% Hooks for figures and tables. We also patch |algorithm| and +% |algorithm*| in case somebody uses them. +% \changes{v1.66}{2019/11/23}{Patching algorithm and algorithm* +% to prevent spurious space warnings} +% \changes{v1.67}{2020/01/11}{Patching lstlisting and lstlisting* +% to prevent spurious space warnings} +% \changes{v1.73}{2020/08/23}{Patching minted and minted* +% to prevent spurious space warnings} +% \begin{macrocode} +\AtBeginEnvironment{figure}{\@Description@presentfalse + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{figure*}{\@Description@presentfalse + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtEndEnvironment{figure}{\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description}\fi} +\AtEndEnvironment{figure*}{\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description}\fi} +\AtBeginEnvironment{table}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} + +% \end{macrocode} +% +% +%\subsection{Floats} +%\label{sec:floats} +% +% \changes{v1.55}{2018/10/20}{Table captions for SIGCHI now use the +% same font size as figure captions (Luis Leiva)} +% We use the |caption| package +% \begin{macrocode} +\RequirePackage{caption, float} +\captionsetup[table]{position=top} +\if@ACM@journal + \captionsetup{labelfont={sf, small}, + textfont={sf, small}, margin=\z@} + \captionsetup[figure]{name={Fig.}} +\else + \captionsetup{labelfont={bf}, + textfont={bf}, labelsep=colon, margin=\z@} + \ifcase\ACM@format@nr + \relax % manuscript + \or % acmsmall + \or % acmlarge + \or % acmtog + \or % sigconf + \or % siggraph + \captionsetup{textfont={it}} + \or % sigplan + \captionsetup{labelfont={bf}, + textfont={normalfont}, labelsep=period, margin=\z@} + \or % sigchi + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \captionsetup[table]{labelfont={bf, small}, + textfont={bf, small}} + \or % sigchi-a + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \captionsetup[table]{labelfont={bf, small}, + textfont={bf, small}} + \fi +\fi +% \end{macrocode} +% +% \begin{macro}{sidebar} +% The |sidebar| environment: +% \begin{macrocode} +\newfloat{sidebar}{}{sbar} +\floatname{sidebar}{Sidebar} +\renewenvironment{sidebar}{\Collect@Body\@sidebar}{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@sidebar} +% \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning} +% The processing of the saved text +% \begin{macrocode} +\long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}% + \marginpar{\small#1}\egroup} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{marginfigure} +% The |marginfigure| environment: +% \begin{macrocode} +\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@marginfigure} +% \changes{v1.12}{2016/05/30}{Now centering by default} +% \changes{v1.56}{2018/11/11}{Added checking for description} +% \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning} +% The processing of the saved text +% \begin{macrocode} +\long\def\@marginfigure#1{\bgroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \captionsetup{type=figure}% + \marginpar{\@Description@presentfalse\centering + \small#1\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description} + \fi}% + \egroup} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{margintable} +% The |margintable| environment: +% \begin{macrocode} +\newenvironment{margintable}{\Collect@Body\@margintable}{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@margintable} +% \changes{v1.12}{2016/05/30}{Now centering by default} +% \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning} +% The processing of the saved text +% \begin{macrocode} +\long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\captionsetup{type=table}% + \marginpar{\centering\small#1}\egroup} +% \end{macrocode} +% +% \end{macro} +% +% +% SIGCHI extended abstracts provide an interesting possibility to push +% into the margin. Here we use |figure*| and |table*| for this. +% \begin{macro}{\fulltextwidth} +% We define the width of the boxes as +% \begin{macrocode} +\newdimen\fulltextwidth +\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep) +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@dblfloat} +% \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning} +% We redefine the double-float command. First, we make the size +% bigger. Second, our default position is going to be |tp| (to give +% marginalia a chance) +% \begin{macrocode} +\if@ACM@sigchiamode +\def\@dblfloat{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth + \let\@endfloatbox\@endwidefloatbox + \def\@fpsadddefault{\def\@fps{tp}}% + \@float} +\fi +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\end@dblfloat} +% And the end. Just adding a \cs{bgroup}. +% \begin{macrocode} +\if@ACM@sigchiamode +\def\end@dblfloat{% + \end@float\egroup} +\fi +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@endwidefloatbox} +% This is the end of a wide box---we basically move everything +% to the left +% \begin{macrocode} +\def\@endwidefloatbox{% + \par\vskip\z@skip + \@minipagefalse + \outer@nobreak + \egroup + \color@endbox + \global\setbox\@currbox=\vbox{\moveleft + \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}% + \wd\@currbox=\textwidth +} +% \end{macrocode} +% +% \end{macro} +% +% +%\subsection{Lists} +%\label{sec:lists} +% +% \begin{macrocode} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan +\def\labelenumi{\theenumi.} +\def\labelenumii{\theenumii.} +\def\labelenumiii{\theenumiii.} +\def\labelenumiv{\theenumiv.} +\or % sigchi +\or % sigchi-a +\fi +% \end{macrocode} +% +% +% \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}% +% The AMS uses generous margins for lists. Note that |amsart| defines +% \cs{leftmargin} values for list levels at the beginning of the +% document, so we must redefine them in the same manner. Also, note that +% |amsart| redefines the |enumerate| and |itemize| environments with a +% \cs{makelabel} command that uses \cs{llap}, so the \cs{labelwidth} +% value is~(effectively) irrelevant; nonetheless, we follow |amsart| +% and set \cs{labelwidth} to \cs{leftmargin} minus \cs{labelsep}. +% \begin{macrocode} +\newdimen\@ACM@labelwidth +\AtBeginDocument{% + \setlength\labelsep{4pt} + \setlength{\@ACM@labelwidth}{6.5pt} + + %% First-level list: when beginning after the first line of an + %% indented paragraph or ending before an indented paragraph, labels + %% should not hang to the left of the preceding/following text. + \setlength\leftmargini{\z@} + \addtolength\leftmargini{\parindent} + \addtolength\leftmargini{2\labelsep} + \addtolength\leftmargini{\@ACM@labelwidth} + + %% Second-level and higher lists. + \setlength\leftmarginii{\z@} + \addtolength\leftmarginii{0.5\labelsep} + \addtolength\leftmarginii{\@ACM@labelwidth} + \setlength\leftmarginiii{\leftmarginii} + \setlength\leftmarginiv{\leftmarginiii} + \setlength\leftmarginv{\leftmarginiv} + \setlength\leftmarginvi{\leftmarginv} + \@listi} +\newskip\listisep +\listisep\smallskipamount +\def\@listI{\leftmargin\leftmargini + \labelwidth\leftmargini \advance\labelwidth-\labelsep + \listparindent\z@ + \topsep\listisep} +\let\@listi\@listI +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii \advance\labelwidth-\labelsep + \topsep\z@skip} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii \advance\labelwidth-\labelsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv \advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv \advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi \advance\labelwidth-\labelsep} +% \end{macrocode} +% +% +% \begin{macro}{\descriptionlabel} +% \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}% +% \changes{v1.12}{2016/05/30}{Redefined} +% We do not use a colon by default like |amsart| does: +% \begin{macrocode} +\renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\description} +% \changes{v1.37}{2017/05/13}{Reduce list indentation (Matthew Fluet)}% +% \changes{v1.17}{2016/07/07}{Decreased indent} +% Make the |description| environment indentation consistent with that of +% the |itemize| and |enumerate| environments. +% \begin{macrocode} +\renewenvironment{description}{\list{}{% + \labelwidth\@ACM@labelwidth + \let\makelabel\descriptionlabel}% +}{ + \endlist +} +\let\enddescription=\endlist % for efficiency +% \end{macrocode} +% +% \end{macro} +% +% +%\subsection{Top-matter data} +%\label{sec:top_matter_data} +% +% \begin{macro}{\if@ACM@maketitle@typeset} +% \changes{v1.64}{2019/08/17}{Introduced macro} +% The switch to check whether \cs{maketitle} is already typeset. It +% is initally false, and setting top matter when it is true is wrong. +% \begin{macrocode} +\newif\if@ACM@maketitle@typeset +\@ACM@maketitle@typesetfalse +% \end{macrocode} +% +% \end{macro} +% +% \changes{v1.24}{2016/11/16}{Add IMWUT journal option} +% \changes{v1.25}{2016/12/03}{Updated PACMPL} +% \changes{v1.30}{2017/02/15}{Updated IMWUT and PACMPL} +% \changes{v1.36}{2017/05/13}{Added PACMHCI journal options} +% \changes{v1.46}{2017/08/25}{PACM now set screen to true} +% \changes{v1.53}{2018/04/14}{Added PACMCGIT, TIOT, TDSCI} +% \changes{v1.58}{2019/03/29}{Added HEALTH. TDSCI is renamed to TDS} +% \changes{1.70}{2020/02/22}{Name change for TDS} +% +% We use the |xkeyval| interface to define journal titles and the relevant +% information +% \begin{macrocode} +\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{% + CIE,% + CSUR,% + DGOV,% + DTRAP,% + HEALTH,% + IMWUT,% + JACM,% + JDIQ,% + JEA,% + JERIC,% + JETC,% + JOCCH,% + PACMCGIT,% + PACMHCI,% + PACMPL,% + POMACS,% + TAAS,% + TACCESS,% + TACO,% + TALG,% + TALLIP,% + TAP,% + TCPS,% + TDS,% + TEAC,% + TECS,% + TELO,% + THRI,% + TIIS,% + TIOT,% + TISSEC,% + TIST,% + TKDD,% + TMIS,% + TOCE,% + TOCHI,% + TOCL,% + TOCS,% + TOCT,% + TODAES,% + TODS,% + TOG,% + TOIS,% + TOIT,% + TOMACS,% + TOMM,% + TOMPECS,% + TOMS,% + TOPC,% + TOPS,% + TOPLAS,% + TOS,% + TOSEM,% + TOSN,% + TQC,% + TRETS,% + TSAS,% + TSC,% + TSLP,% + TWEB,% + FACMP% +}{% +\ifcase\@journalCode@nr +\relax % CIE + \def\@journalName{ACM Computers in Entertainment}% + \def\@journalNameShort{ACM Comput. Entertain.}% + \def\@permissionCodeOne{1544-3574}% +\or % CSUR + \def\@journalName{ACM Computing Surveys}% + \def\@journalNameShort{ACM Comput. Surv.}% + \def\@permissionCodeOne{0360-0300}% +\or % DGOV + \def\@journalName{Digital Government: Research and Practice}% + \def\@journalNameShort{Digit. Gov. Res. Pract.}% + \def\@permissionCodeOne{2639-0175}% +\or % DTRAP + \def\@journalName{Digital Threats: Research and Practice}% + \def\@journalNameShort{Digit. Threat. Res. Pract.}% + \def\@permissionCodeOne{2576-5337}% +\or % HEALTH + \def\@journalName{ACM Transactions on Computing for Healthcare}% + \def\@journalNameShort{ACM Trans. Comput. Healthcare}% + \def\@permissionCodeOne{2637-8051}% +\or % IMWUT + \def\@journalName{Proceedings of the ACM on Interactive, Mobile, + Wearable and Ubiquitous Technologies}% + \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}% + \def\@permissionCodeOne{2474-9567}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % JACM + \def\@journalName{Journal of the ACM}% + \def\@journalNameShort{J. ACM}% + \def\@permissionCodeOne{0004-5411}% +\or % JDIQ + \def\@journalName{ACM Journal of Data and Information Quality}% + \def\@journalNameShort{ACM J. Data Inform. Quality}% + \def\@permissionCodeOne{1936-1955}% +\or % JEA + \def\@journalName{ACM Journal of Experimental Algorithmics}% + \def\@journalNameShort{ACM J. Exp. Algor.}% + \def\@permissionCodeOne{1084-6654}% +\or % JERIC + \def\@journalName{ACM Journal of Educational Resources in Computing}% + \def\@journalNameShort{ACM J. Edu. Resources in Comput.}% + \def\@permissionCodeOne{1073-0516}% +\or % JETC + \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}% + \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}% + \def\@permissionCodeOne{1550-4832}% +\or % JOCCH + \def\@journalName{ACM Journal on Computing and Cultural Heritage}% + \def\@journalNameShort{ACM J. Comput. Cult. Herit.}% +\or % PACMCGIT + \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}% + \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}% + \def\@permissionCodeOne{2577-6193}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % PACMHCI + \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}% + \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}% + \def\@permissionCodeOne{2573-0142}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % PACMPL + \def\@journalName{Proceedings of the ACM on Programming Languages}% + \def\@journalNameShort{Proc. ACM Program. Lang.}% + \def\@permissionCodeOne{2475-1421}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % POMACS + \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}% + \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}% + \def\@permissionCodeOne{2476-1249}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % TAAS + \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}% + \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}% + \def\@permissionCodeOne{1556-4665}% +\or % TACCESS + \def\@journalName{ACM Transactions on Accessible Computing}% + \def\@journalNameShort{ACM Trans. Access. Comput.}% + \def\@permissionCodeOne{1936-7228}% +\or % TACO + \def\@journalName{ACM Transactions on Architecture and Code Optimization}% + \def\@journalNameShort{ACM Trans. Arch. Code Optim.}% +\or % TALG + \def\@journalName{ACM Transactions on Algorithms}% + \def\@journalNameShort{ACM Trans. Algor.}% + \def\@permissionCodeOne{1549-6325}% +\or % TALLIP + \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}% + \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}% + \def\@permissionCodeOne{2375-4699}% +\or % TAP + \def\@journalName{ACM Transactions on Applied Perception}% +\or % TCPS + \def\@journalName{ACM Transactions on Cyber-Physical Systems}% +\or % TDS + \def\@journalName{ACM/IMS Transactions on Data Science}% + \def\@journalNameShort{ACM/IMS Trans. Data Sci.}% + \def\@permissionCodeOne{2577-3224}% +\or % TEAC + \def\@journalName{ACM Transactions on Economics and Computation}% +\or % TECS + \def\@journalName{ACM Transactions on Embedded Computing Systems}% + \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}% + \def\@permissionCodeOne{1539-9087}% +\or % TELO + \def\@journalName{ACM Transactions on Evolutionary Learning}% + \def\@journalNameShort{ACM Trans. Evol. Learn.}% + \def\@permissionCodeOne{2688-3007}% +\or % THRI + \def\@journalName{ACM Transactions on Human-Robot Interaction}% + \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}% + \def\@permissionCodeOne{2573-9522}% +\or % TIIS + \def\@journalName{ACM Transactions on Interactive Intelligent Systems}% + \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}% + \def\@permissionCodeOne{2160-6455}% +\or % TIOT + \def\@journalName{ACM Transactions on Internet of Things}% + \def\@journalNameShort{ACM Trans. Internet Things}% + \def\@permissionCodeOne{2577-6207}% +\or % TISSEC + \def\@journalName{ACM Transactions on Information and System Security}% + \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}% + \def\@permissionCodeOne{1094-9224}% +\or % TIST + \def\@journalName{ACM Transactions on Intelligent Systems and Technology}% + \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}% + \def\@permissionCodeOne{2157-6904}% +\or % TKDD + \def\@journalName{ACM Transactions on Knowledge Discovery from Data}% + \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}% + \def\@permissionCodeOne{1556-4681}% +\or % TMIS + \def\@journalName{ACM Transactions on Management Information Systems}% + \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}% + \def\@permissionCodeOne{2158-656X}% +\or % TOCE + \def\@journalName{ACM Transactions on Computing Education}% + \def\@journalNameShort{ACM Trans. Comput. Educ.}% + \def\@permissionCodeOne{1946-6226}% +\or % TOCHI + \def\@journalName{ACM Transactions on Computer-Human Interaction}% + \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}% + \def\@permissionCodeOne{1073-0516}% +\or % TOCL + \def\@journalName{ACM Transactions on Computational Logic}% + \def\@journalNameShort{ACM Trans. Comput. Logic}% + \def\@permissionCodeOne{1529-3785}% +\or % TOCS + \def\@journalName{ACM Transactions on Computer Systems}% + \def\@journalNameShort{ACM Trans. Comput. Syst.}% + \def\@permissionCodeOne{0734-2071}% +\or % TOCT + \def\@journalName{ACM Transactions on Computation Theory}% + \def\@journalNameShort{ACM Trans. Comput. Theory}% + \def\@permissionCodeOne{1942-3454}% +\or % TODAES + \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}% + \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}% + \def\@permissionCodeOne{1084-4309}% +\or % TODS + \def\@journalName{ACM Transactions on Database Systems}% + \def\@journalNameShort{ACM Trans. Datab. Syst.}% + \def\@permissionCodeOne{0362-5915}% +\or % TOG + \def\@journalName{ACM Transactions on Graphics}% + \def\@journalNameShort{ACM Trans. Graph.}% + \def\@permissionCodeOne{0730-0301} +\or % TOIS + \def\@journalName{ACM Transactions on Information Systems}% + \def\@permissionCodeOne{1046-8188}% +\or % TOIT + \def\@journalName{ACM Transactions on Internet Technology}% + \def\@journalNameShort{ACM Trans. Internet Technol.}% + \def\@permissionCodeOne{1533-5399}% +\or % TOMACS + \def\@journalName{ACM Transactions on Modeling and Computer Simulation}% + \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}% +\or % TOMM + \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}% + \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}% + \def\@permissionCodeOne{1551-6857}% + \def\@permissionCodeTwo{0100}% +\or % TOMPECS + \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}% + \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}% + \def\@permissionCodeOne{2376-3639}% +\or % TOMS + \def\@journalName{ACM Transactions on Mathematical Software}% + \def\@journalNameShort{ACM Trans. Math. Softw.}% + \def\@permissionCodeOne{0098-3500}% +\or % TOPC + \def\@journalName{ACM Transactions on Parallel Computing}% + \def\@journalNameShort{ACM Trans. Parallel Comput.}% + \def\@permissionCodeOne{1539-9087}% +\or % TOPS + \def\@journalName{ACM Transactions on Privacy and Security}% + \def\@journalNameShort{ACM Trans. Priv. Sec.}% + \def\@permissionCodeOne{2471-2566}% +\or % TOPLAS + \def\@journalName{ACM Transactions on Programming Languages and Systems}% + \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}% + \def\@permissionCodeOne{0164-0925}% +\or % TOS + \def\@journalName{ACM Transactions on Storage}% + \def\@journalNameShort{ACM Trans. Storage}% + \def\@permissionCodeOne{1553-3077}% +\or % TOSEM + \def\@journalName{ACM Transactions on Software Engineering and Methodology}% + \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}% + \def\@permissionCodeOne{1049-331X}% +\or % TOSN + \def\@journalName{ACM Transactions on Sensor Networks}% + \def\@journalNameShort{ACM Trans. Sensor Netw.}% + \def\@permissionCodeOne{1550-4859}% +\or % TQC + \def\@journalName{ACM Transactions on Quantum Computing}% + \def\@journalNameShort{ACM Trans. Quantum Comput.}% + \def\@permissionCodeOne{2643-6817}% +\or % TRETS + \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}% + \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}% + \def\@permissionCodeOne{1936-7406}% +\or % TSAS + \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}% + \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}% + \def\@permissionCodeOne{2374-0353}% +\or % TSC + \def\@journalName{ACM Transactions on Social Computing}% + \def\@journalNameShort{ACM Trans. Soc. Comput.}% + \def\@permissionCodeOne{2469-7818}% +\or % TSLP + \def\@journalName{ACM Transactions on Speech and Language Processing}% + \def\@journalNameShort{ACM Trans. Speech Lang. Process.}% + \def\@permissionCodeOne{1550-4875}% +\or % TWEB + \def\@journalName{ACM Transactions on the Web}% + \def\@journalNameShort{ACM Trans. Web}% + \def\@permissionCodeOne{1559-1131}% +\else % FACMP, a dummy journal + \def\@journalName{Forthcoming ACM Publication}% + \def\@journalNameShort{ACM Forthcoming}% + \def\@permissionCodeOne{XXXX-XXXX}% +\fi +\ClassInfo{\@classname}{Using journal code \@journalCode}% +}{% + \ClassError{\@classname}{Incorrect journal #1}% +}% +% \end{macrocode} +% \begin{macro}{\acmJournal} +% \changes{v1.59}{2019/04/20}{Setting \cs{@ACM@journal@bibstrip}} +% And the syntactic sugar around it +% \begin{macrocode} +\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}% + \global\@ACM@journal@bibstriptrue} +% \end{macrocode} +% +% \end{macro} +% +% The defaults: +% \begin{macrocode} +\def\@journalCode@nr{0} +\def\@journalName{}% +\def\@journalNameShort{\@journalName}% +\def\@permissionCodeOne{XXXX-XXXX}% +\def\@permissionCodeTwo{}% +% \end{macrocode} +% +% +% \begin{macro}{\acmConference} +% \changes{v1.59}{2019/04/20}{Setting \cs{@ACM@journal@bibstrip}} +% This is the conference command +% \begin{macrocode} +\newcommand\acmConference[4][]{% + \gdef\acmConference@shortname{#1}% + \gdef\acmConference@name{#2}% + \gdef\acmConference@date{#3}% + \gdef\acmConference@venue{#4}% + \ifx\acmConference@shortname\@empty + \gdef\acmConference@shortname{#2}% + \fi + \global\@ACM@journal@bibstripfalse +} +\if@ACM@journal\else +\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington, + DC, USA}% +\fi +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmBooktitle} +% \changes{v1.44}{2017/08/11}{Added macro} +% \begin{macro}{\@acmBooktitle} +% \changes{v1.44}{2017/08/11}{Added macro} +% The book title of the conference: +% \begin{macrocode} +\def\acmBooktitle#1{\gdef\@acmBooktitle{#1}} +\acmBooktitle{Proceedings of \acmConference@name + \ifx\acmConference@name\acmConference@shortname\else + \ (\acmConference@shortname)\fi} +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@editorsAbbrev} +% \changes{v1.44}{2017/08/11}{Added macro} +% How to abbreviate editors +% \begin{macrocode} +\def\@editorsAbbrev{(Ed.)} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@acmEditors} +% \changes{v1.44}{2017/08/11}{Added macro} +% The list of editors +% \begin{macrocode} +\def\@acmEditors{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\editor} +% \changes{v1.44}{2017/08/11}{Added macro} +% Add a new editor to the list +% \begin{macrocode} +\def\editor#1{\ifx\@acmEditors\@empty + \gdef\@acmEditors{#1}% + \else + \gdef\@editorsAbbrev{(Eds.)}% + \g@addto@macro\@acmEditors{\and#1}% +\fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\subtitle} +% The subtitle macro +% \begin{macrocode} +\def\subtitle#1{\def\@subtitle{#1}} +\subtitle{} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\num@authorgroups} +% \changes{v1.15}{2016/06/25}{Renamed} +% The total number of ``groups''. Each group is several authors with +% the same affiliations(s) +% \begin{macrocode} +\newcount\num@authorgroups +\num@authorgroups=0\relax +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\num@authors} +% \changes{v1.46}{2017/08/27}{Introduced macro} +% The total number of authors +% \begin{macrocode} +\newcount\num@authors +\num@authors=0\relax +% \end{macrocode} +% +% \end{macro} +% +% +% +% +% \begin{macro}{\if@insideauthorgroup} +% \changes{v1.15}{2016/06/25}{Introduced macro} +% Whether we are continuing an author group +% \begin{macrocode} +\newif\if@insideauthorgroup +\@insideauthorgroupfalse +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\author} +% \changes{v1.15}{2016/06/25}{Added code for author groups} +% \changes{v1.46}{2017/08/27}{Started counting authors} +% \changes{v1.54}{2018/06/23}{Added submission id in anonymous mode} +% \changes{v1.57}{2018/12/09}{Added warning if \cs{author} has comma} +% \changes{v1.72}{2020/05/04}{Added \cs{detokenize} (Kuldeep S. Meel)} +% Adding an author to the list of authors and addresses +% \begin{macrocode} +\renewcommand\author[2][]{% + \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several + authors in the same \string\author\space macro!}}{}% + \global\advance\num@authors by 1\relax + \if@insideauthorgroup\else + \global\advance\num@authorgroups by 1\relax + \global\@insideauthorgrouptrue + \fi + \ifx\addresses\@empty + \if@ACM@anonymous + \gdef\addresses{\@author{Anonymous Author(s)% + \ifx\@acmSubmissionID\@empty\else\\Submission Id: + \@acmSubmissionID\fi}}% + \gdef\authors{Anonymous Author(s)}% + \else + \gdef\addresses{\@author{#2}}% + \gdef\authors{#2}% + \fi + \else + \if@ACM@anonymous\else + \g@addto@macro\addresses{\and\@author{#2}}% + \g@addto@macro\authors{\and#2}% + \fi + \fi + \if@ACM@anonymous + \ifx\shortauthors\@empty + \gdef\shortauthors{Anon. + \ifx\@acmSubmissionID\@empty\else Submission Id: + \@acmSubmissionID\fi}% + \fi + \else + \def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\shortauthors\@empty + \gdef\shortauthors{#2}% + \else + \g@addto@macro\shortauthors{\and#2}% + \fi + \else + \ifx\shortauthors\@empty + \gdef\shortauthors{#1}% + \else + \g@addto@macro\shortauthors{\and#1}% + \fi + \fi + \fi} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\affiliation} +% \changes{v1.15}{2016/06/25}{Added code for author groups} +% The macro \cs{affiliation} mimics \cs{address} from |amsart|. +% Note that it has an optional argument, which we use differently +% from |amsart|. +% \begin{macrocode} +\newcommand{\affiliation}[2][]{% + \global\@insideauthorgroupfalse + \if@ACM@anonymous\else + \g@addto@macro\addresses{\affiliation{#1}{#2}}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@affiliation@obeypunctuation} +% \changes{v1.33}{2017/03/28}{Added macro} +% Whether to use the author's punctuation (false by default, which adds +% American-style address punctuation) +% \begin{macrocode} +\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}% +[true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}} +% \end{macrocode} +% +% \end{macro} +% +% +% +% \begin{macro}{\additionalaffiliation} +% \changes{v1.31}{2017/03/04}{Added macro} +% Additional affiliations go to footnotes +% \begin{macrocode} +\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@additionalaffiliation} +% \changes{v1.31}{2017/03/04}{Added macro} +% Process \cs{additionalaffiliation} inside \cs{authornote} +% \begin{macrocode} +\def\@additionalaffiliation#1{\bgroup + \def\position##1{\ignorespaces}% + \def\institution##1{##1\ignorespaces}% + \def\department{\@ifnextchar[{\@department}{\@department[]}}% + \def\@department[##1]##2{\unskip, ##2\ignorespaces}% + \let\streetaddress\position + \let\city\position + \let\state\position + \let\postcode\position + \let\country\position + Also with #1\unskip.\egroup} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\email} +% \changes{v1.57}{2018/12/09}{Added warning if \cs{author} has comma} +% The macro \cs{email} mimics \cs{email} from |amsart|. +% Again, it has an optional argument that we do not currently need +% but keep for possible future use. +% \begin{macrocode} +\renewcommand{\email}[2][]{% + \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several + addresses in the same \string\email\space macro!}}{}% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\email{#1}{#2}}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\orcid} +% \changes{v1.15}{2016/06/25}{Introduced macro} +% Right now we do not typeset ORCIDs +% \begin{macrocode} +\def\orcid#1{\unskip\ignorespaces} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\authorsaddresses} +% \changes{v1.46}{2017/08/27}{Introduced macro} +% Setting up authors' addresses +% \begin{macrocode} +\def\authorsaddresses#1{\def\@authorsaddresses{#1}} +\authorsaddresses{\@mkauthorsaddresses} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@titlenotes} +% The title notes +% \begin{macrocode} +\def\@titlenotes{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\titlenote} +% Adding a note to the title +% \begin{macrocode} +\def\titlenote#1{% + \g@addto@macro\@title{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@titlenotes{% + \stepcounter{footnote}\footnotetext{Title note}}% + \else + \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@subtitlenotes} +% The subtitle notes +% \begin{macrocode} +\def\@subtitlenotes{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\subtitlenote} +% Adding a note to the subtitle +% \begin{macrocode} +\def\subtitlenote#1{% + \g@addto@macro\@subtitle{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{Subtitle note}}% + \else + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@authornotes} +% The author notes +% \begin{macrocode} +\def\@authornotes{} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\authornote} +% Adding a note to the author +% \begin{macrocode} +\def\authornote#1{% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\@authornotemark}% + \g@addto@macro\@authornotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\authornotemark} +% \changes{v1.39}{2017/05/14}{Added macro} +% Adding a footnote mark to the authors +% \begin{macrocode} +\newcommand\authornotemark[1][\relax]{% + \ifx#1\relax\relax\relax + \g@addto@macro\addresses{\@authornotemark}% + \else + \g@addto@macro\addresses{\@@authornotemark{#1}}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmVolume} +% \changes{v1.17}{2016/07/10}{The default is now numerical} +% The current volume +% \begin{macrocode} +\def\acmVolume#1{\def\@acmVolume{#1}} +\acmVolume{1} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmNumber} +% \changes{v1.17}{2016/07/10}{The default is now numerical} +% The current number +% \begin{macrocode} +\def\acmNumber#1{\def\@acmNumber{#1}} +\acmNumber{1} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmArticle} +% \changes{v1.17}{2016/07/10}{The default is now numerical} +% \changes{v1.44}{2017/08/111}{The default is now empty} +% The current article +% \begin{macrocode} +\def\acmArticle#1{\def\@acmArticle{#1}} +\acmArticle{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmArticleSeq} +% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet} +% \changes{v1.44}{2017/08/11}{Now acmArticle might be empty} +% The sequence number +% \begin{macrocode} +\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}} +\acmArticleSeq{\@acmArticle} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmYear} +% \changes{v1.17}{2016/07/10}{The default is now numerical} +% \changes{v1.31}{2017/03/04}{The default now is the current year +% (Matteo Riondato)} +% The current year +% \begin{macrocode} +\def\acmYear#1{\def\@acmYear{#1}} +\acmYear{\the\year} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmMonth} +% \changes{v1.17}{2016/07/09}{The default must be numerical. Closes \#50.} +% \changes{v1.31}{2017/03/04}{The default now is the current month +% (Matteo Riondato)} +% The current month +% \begin{macrocode} +\def\acmMonth#1{\def\@acmMonth{#1}} +\acmMonth{\the\month} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@acmPubDate} +% The publication date +% \begin{macrocode} +\def\@acmPubDate{\ifcase\@acmMonth\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or + December\fi~\@acmYear} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmPrice} +% The price +% \begin{macrocode} +\def\acmPrice#1{\def\@acmPrice{#1}} +\acmPrice{15.00} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\acmSubmissionID} +% \changes{v1.33}{2017/03/29}{Added macro} +% The submission ID +% \begin{macrocode} +\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}} +\acmSubmissionID{} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\acmISBN} +% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet} +% The book ISBN +% \begin{macrocode} +\def\acmISBN#1{\def\@acmISBN{#1}} +\acmISBN{978-x-xxxx-xxxx-x/YY/MM} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmDOI} +% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet} +% The paper DOI +% \begin{macrocode} +\def\acmDOI#1{\def\@acmDOI{#1}} +\acmDOI{10.1145/nnnnnnn.nnnnnnn} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@badge} +% \changes{v1.06}{2016/05/01}{Added macro} +% Whether to print a badge. Note that either a left or right badge +% triggers it: +% \begin{macrocode} +\newif\if@ACM@badge +\@ACM@badgefalse +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@ACM@badge@width} +% \changes{v1.06}{2016/05/01}{Added macro} +% The width of the badge +% \begin{macrocode} +\newlength\@ACM@badge@width +\setlength\@ACM@badge@width{5pc} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@ACM@title@width} +% \changes{v1.06}{2016/05/01}{Added macro} +% The width of the badge +% \begin{macrocode} +\newlength\@ACM@title@width +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@ACM@badge@skip} +% \changes{v1.06}{2016/05/01}{Added macro} +% The space between the badge and the title +% \begin{macrocode} +\newlength\@ACM@badge@skip +\setlength\@ACM@badge@skip{1pc} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmBadgeR} +% \changes{v1.06}{2016/05/01}{Added macro} +% Setting the right badge +% \begin{macrocode} +\newcommand\acmBadgeR[2][]{\@ACM@badgetrue + \def\@acmBadgeR@url{#1}% + \def\@acmBadgeR@image{#2}} +\def\@acmBadgeR@url{} +\def\@acmBadgeR@image{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acmBadgeL} +% \changes{v1.06}{2016/05/01}{Added macro} +% Setting the left badge +% \begin{macrocode} +\newcommand\acmBadgeL[2][]{\@ACM@badgetrue + \def\@acmBadgeL@url{#1}% + \def\@acmBadgeL@image{#2}} +\def\@acmBadgeL@url{} +\def\@acmBadgeL@image{} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\startPage} +% The start page of the paper +% \begin{macrocode} +\def\startPage#1{\def\@startPage{#1}} +\startPage{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\terms} +% \changes{v1.34}{2017/04/09}{The \cs{terms} command now just produces +% a warning} +% Terms are obsolete. We use CCS now. +% \begin{macrocode} +\def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is + obsolete. I am going to ignore it}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\keywords} +% Keywords are mostly obsolete. We use CCS now. Still it makes +% sense to keep them for compatibility. +% \begin{macrocode} +\def\keywords#1{\def\@keywords{#1}} +\let\@keywords\@empty +% \end{macrocode} +% +% \changes{1.66}{2019/12/18}{Added warning for missing keywords} +% \begin{macrocode} +\AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty + \ifnum\getrefnumber{TotPages}>2\relax + \ClassWarningNoLine{\@classname}{ACM keywords are mandatory + for papers over two pages}% + \fi\fi\fi} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{abstract} +% The |amsart| package puts |abstract| in a box. Since we do not +% know whether we will use two-column mode, we prefer to save the text +% \begin{macrocode} +\renewenvironment{abstract}{\Collect@Body\@saveabstract}{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@saveabstract} +% And saving the abstract +% \begin{macrocode} +\long\def\@saveabstract#1{\if@ACM@maketitle@typeset + \ClassError{\@classname}{Abstract must be defined before maketitle + command. Please move it!}\fi + \long\gdef\@abstract{#1}} +\@saveabstract{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@lempty} +% The long version of \cs{@empty} (to compare with \cs{@abstract}) +% \begin{macrocode} +\long\def\@lempty{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@printccs} +% \changes{v1.27}{2016/12/29}{Typo corrected} +% Whether to print CCS +% \begin{macrocode} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{% + \if@ACM@printccs + \ClassInfo{\@classname}{Printing CCS}% + \else + \ClassInfo{\@classname}{Suppressing CCS}% + \fi}{\ClassError{\@classname}{The option printccs can be either true or false}} +% \end{macrocode} +% +% \end{macro} +% \begin{macro}{\if@ACM@printacmref} +% \changes{v1.17}{2016/07/10}{Renamed from \cs{if@ACM@printbib}} +% Whether to print the ACM bibstrip +% \begin{macrocode} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{% + \if@ACM@printacmref + \ClassInfo{\@classname}{Printing bibformat}% + \else + \ClassInfo{\@classname}{Suppressing bibformat}% + \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}} +% \end{macrocode} +% +% \changes{1.66}{2019/12/18}{Added warning for longer papers} +% \begin{macrocode} +\AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else + \ifnum\getrefnumber{TotPages}>1\relax + \ClassWarningNoLine{\@classname}{ACM reference format is mandatory + for papers over one page}% + \fi\fi\fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@printfolios} +% \changes{v1.13}{2016/06/06}{Added macro} +% Whether to print folios +% \begin{macrocode} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{% + \if@ACM@printfolios + \ClassInfo{\@classname}{Printing folios}% + \else + \ClassInfo{\@classname}{Suppressing folios}% + \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@ACM@authorsperrow} +% \changes{v1.36}{2017/05/13}{Added macro} +% The number of authors per row. 0 means use the default algorithm. +% \begin{macrocode} +\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{% + \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to + #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be + numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\settopmatter} +% The usual syntactic sugar +% \begin{macrocode} +\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}} +% \end{macrocode} +% +% \end{macro} +% +% +% \changes{v1.13}{2016/06/06}{Print bibliographic information by +% default for the proceedings} +% Now the settings +% \begin{macrocode} +\settopmatter{printccs=true, printacmref=true} +\if@ACM@manuscript + \settopmatter{printfolios=true} +\else + \if@ACM@journal + \settopmatter{printfolios=true} + \else + \settopmatter{printfolios=false} + \fi +\fi +\settopmatter{authorsperrow=0} +% \end{macrocode} +% +% \begin{macro}{\@received} +% The container for the paper history +% \begin{macrocode} +\def\@received{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\received} +% The \cs{received} command +% \begin{macrocode} +\newcommand\received[2][]{\def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\@received\@empty + \gdef\@received{Received #2}% + \else + \g@addto@macro{\@received}{; revised #2}% + \fi + \else + \ifx\@received\@empty + \gdef\@received{#1 #2}% + \else + \g@addto@macro{\@received}{; #1 #2}% + \fi + \fi} +\AtEndDocument{% + \ifx\@received\@empty\else + \par\bigskip\noindent\small\normalfont\@received\par + \fi} +% \end{macrocode} +% +% \end{macro} +% +%\subsection{Concepts system} +%\label{sec:concepts} +% +% We exclude |CCSXML| stuff generated by the ACM system: +% \begin{macrocode} +\RequirePackage{comment} +\excludecomment{CCSXML} +% \end{macrocode} +% +% \begin{macro}{\@concepts} +% This is the storage macro and counter for concepts +% \begin{macrocode} +\let\@concepts\@empty +\newcounter{@concepts} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\ccsdesc} +% \changes{v1.40}{2017/05/27}{Now we can parse |Significance~General| nodes} +% The first argument is the significance, the second is the +% concept(s) +% \begin{macrocode} +\newcommand\ccsdesc[2][100]{% + \ccsdesc@parse#1~#2~~\ccsdesc@parse@end} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\ccsdesc@parse} +% \changes{v1.28}{2017/01/04}{Change from \cs{to} to +% \cs{textrightarrow} (Matteo Riondato)} +% \changes{v1.29}{2017/01/22}{Add spacing after bullet and around +% rightarrow; semicolon separators no longer in bold/italic (John Wickerson)} +% \changes{v1.40}{2017/05/27}{Now we can parse |Significance~General| nodes} +% \changes{v1.56}{2018/10/23}{End the concepts list with a period +% (Philip Quinn)} +% \changes{v1.69}{2019/02/06}{Use math right arrow in text} +% The parser of the expression |Significance~General~Specific| (we need +% |textcomp| for |\textrightarrow|). Note that |Specific| can be empty! +% \begin{macrocode} +\def\textrightarrow{$\rightarrow$} +\def\ccsdesc@parse#1~#2~#3~{% + \stepcounter{@concepts}% + \expandafter\ifx\csname CCS@General@#2\endcsname\relax + \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\ + \textbf{#2}}% + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }% + \expandafter\gdef\csname CCS@Specific@#2\endcsname{}% + \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname + \csname CCS@Punctuation@#2\endcsname + \csname CCS@Specific@#2\endcsname}% + \fi + \ifx#3\relax\relax\else + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{ + \textrightarrow\ }% + \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{% + \addtocounter{@concepts}{-1}% + \ifnum#1>499\textbf{#3}\else + \ifnum#1>299\textit{#3}\else + #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}% + \fi +\ccsdesc@parse@finish} +% \end{macrocode} +% +% \changes{1.66}{2019/12/18}{Added warning for missing concepts} +% \begin{macrocode} +\AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax + \ifnum\getrefnumber{TotPages}>2\relax + \ClassWarningNoLine{\@classname}{CCS concepts are mandatory + for papers over two pages}% + \fi\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ccdesc@parse@finish} +% \changes{v1.40}{2017/05/27}{Added macro} +% Gobble everything to |\ccsdesc@parse@end| +% \begin{macrocode} +\def\ccsdesc@parse@finish#1\ccsdesc@parse@end{} +% \end{macrocode} +% +% \end{macro} +% +%\subsection{Copyright system} +%\label{sec:copyright} +% +% This is from |acmcopyright.sty| +% +% \begin{macro}{\if@printcopyright} +% Whether to print a copyright symbol +% \begin{macrocode} +\newif\if@printcopyright +\@printcopyrighttrue +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@printpermission} +% Whether to print the permission block +% \begin{macrocode} +\newif\if@printpermission +\@printpermissiontrue +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@acmowned} +% Whether the ACM owns the rights to the paper +% \begin{macrocode} +\newif\if@acmowned +\@acmownedtrue +% \end{macrocode} +% +% \end{macro} +% +% \changes{v1.10}{2016/05/22}{Changes of `licensedothergov' wording} +% \changes{v1.35}{2017/04/22}{If the copyright is set to usgov or +% rigtsretained, the price is suppressed} +% \changes{v1.51}{2018/04/05}{Suppress price if the copyright is set +% to iw3c2w3 or iw3c2w3g} +% \changes{v1.51}{2018/04/05}{Corrected the bug with price suppression} +% Keys: +% \begin{macrocode} +\define@choicekey*{ACM@}{acmcopyrightmode}[% + \acm@copyrightinput\acm@copyrightmode]{none,% + acmcopyright,acmlicensed,rightsretained,% + usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,% + licensedcagov,licensedcagovmixed,othergov,licensedothergov,% + iw3c2w3,iw3c2w3g}{% + \@printpermissiontrue + \@printcopyrighttrue + \@acmownedtrue + \ifnum\acm@copyrightmode=0\relax % none + \@printpermissionfalse + \@printcopyrightfalse + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=2\relax % acmlicensed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=3\relax % rightsretained + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=4\relax % usgov + \@printpermissiontrue + \@printcopyrightfalse + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=6\relax % cagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=9\relax % licensedcagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=11\relax % othergov + \@acmownedtrue + \fi + \ifnum\acm@copyrightmode=12\relax % licensedothergov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=13\relax % iw3c2w3 + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=14\relax % iw3c2w3g + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi} +% \end{macrocode} +% +% \begin{macro}{\setcopyright} +% This is the syntactic sugar around setting keys. +% \begin{macrocode} +\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}} +\setcopyright{acmcopyright} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@copyrightowner} +% \changes{v1.40}{2017/06/16}{Added new copyright version: +% licensedcagov} +% \changes{v1.52}{2018/04/09}{Rewording of licenses} +% Here is the owner of the copyright +% \begin{macrocode} +\def\@copyrightowner{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + Association for Computing Machinery. + \or % acmlicensed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % rightsretained + Copyright held by the owner/author(s). + \or % usgov + \or % usgovmixed + Association for Computing Machinery. + \or % cagov + Crown in Right of Canada. + \or %cagovmixed + Association for Computing Machinery. + \or %licensedusgovmixed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % licensedcagov + Crown in Right of Canada. Publication rights licensed to + ACM\@. + \or %licensedcagovmixed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % othergov + Association for Computing Machinery. + \or % licensedothergov + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % ic2w3www + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC-BY~4.0 License. + \or % ic2w3wwwgoogle + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC-BY-NC-ND~4.0 License. + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@formatdoi} +% \changes{v1.03}{2016/04/22}{Added macro} +% \changes{v1.32}{2017/04/07}{New doi format} +% Print a clickable DOI +% \begin{macrocode} +\def\@formatdoi#1{\url{https://doi.org/#1}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@copyrightpermission} +% \changes{v1.40}{2017/06/16}{Added new copyright version: licensedcagov} +% \changes{v1.50}{2018/02/07}{New copyright statements for iw3c2w3[g]} +% \changes{v1.52}{2018/04/09}{Another rewording of copyright +% statements for iw3c2w3[g]} +% The canned permission block. +% \begin{macrocode} +\def\@copyrightpermission{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + Permission to make digital or hard copies of all or part of this + work for personal or classroom use is granted without fee provided + that copies are not made or distributed for profit or commercial + advantage and that copies bear this notice and the full citation on + the first page. Copyrights for components of this work owned by + others than ACM must be honored. Abstracting with credit is + permitted. To copy otherwise, or republish, to post on servers or to + redistribute to lists, requires prior specific permission + and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % acmlicensed + Permission to make digital or hard copies of all or part of this + work for personal or classroom use is granted without fee provided + that copies are not made or distributed for profit or commercial + advantage and that copies bear this notice and the full citation on + the first page. Copyrights for components of this work owned by + others than the author(s) must be honored. Abstracting with credit + is permitted. To copy otherwise, or republish, to post on servers + or to redistribute to lists, requires prior specific permission + and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % rightsretained + Permission to make digital or hard copies of part or all of this work + for personal or classroom use is granted without fee provided that + copies are not made or distributed for profit or commercial advantage + and that copies bear this notice and the full citation on the first + page. Copyrights for third-party components of this work must be + honored. For all other uses, contact the + owner\hspace*{.5pt}/author(s). + \or % usgov + This paper is authored by an employee(s) of the United States + Government and is in the public domain. Non-exclusive copying or + redistribution is allowed, provided that the article citation is + given and the authors and agency are clearly identified as its + source. + \or % usgovmixed + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor, or affiliate of the United States + government. As such, the United States government retains a + nonexclusive, royalty-free right to publish or reproduce this + article, or to allow others to do so, for government purposes only. + \or % cagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % cagovmixed + ACM acknowledges that this contribution was co-authored by an + affiliate of the national government of Canada. As such, the Crown + in Right of Canada retains an equal interest in the copyright. + Reprints must include clear attribution to ACM and the author's + government agency affiliation. Permission to make digital or hard + copies for personal or classroom use is granted. Copies must bear + this notice and the full citation on the first page. Copyrights for + components of this work owned by others than ACM must be honored. + To copy otherwise, distribute, republish, or post, requires prior + specific permission and\hspace*{.5pt}/or a fee. Request permissions + from permissions@acm.org. + \or % licensedusgovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the United States government. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % licensedcagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % licensedcagovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the national government of Canada. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % othergov + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor or affiliate of a national government. As + such, the Government retains a nonexclusive, royalty-free right to + publish or reproduce this article, or to allow others to do so, for + Government purposes only. + \or % licensedothergov + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of a national government. As such, the Government + retains a nonexclusive, royalty-free right to publish or reproduce + this article, or to allow others to do so, for Government purposes + only. + \or % iw3c2w3 + This paper is published under the Creative Commons Attribution~4.0 + International (CC-BY~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \or % iw3c2w3g + This paper is published under the Creative Commons + Attribution-NonCommercial-NoDerivs~4.0 International + (CC-BY-NC-ND~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \fi} +% \end{macrocode} +% +% \end{macro} +% +% +% +% +% \begin{macro}{\copyrightyear} +% By default, the copyright year is the same as \cs{acmYear}, but +% one can override this: +% \begin{macrocode} +\def\copyrightyear#1{\def\@copyrightyear{#1}} +\copyrightyear{\@acmYear} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@teaserfigures} +% The teaser figures container +% \begin{macrocode} +\def\@teaserfigures{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{teaserfigure} +% The teaser figure +% \begin{macrocode} +\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@saveteaser} +% Saving the teaser +% \begin{macrocode} +\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\thanks} +% We redefine |amsart| \cs{thanks} so the |anonymous| key works +% \begin{macrocode} +\renewcommand{\thanks}[1]{% + \@ifnotempty{#1}{% + \if@ACM@anonymous + \g@addto@macro\thankses{\thanks{A note}}% + \else + \g@addto@macro\thankses{\thanks{#1}}% + \fi}} +% \end{macrocode} +% +% \end{macro} +% +% +%\subsection{Maketitle hook} +%\label{sec:hook} +% +% The current \LaTeX\ provides a nice |lthooks| mechanism. However, +% since it is relatively new, we will use oldfashioned approach---at +% least for now. +% +% \begin{macro}{\@beginmaketitlehook} +% \changes{v1.75}{2020/11/15}{Introduced macro} +% The hook +% \begin{macrocode} +\ifx\@beginmaketitlehook\@undefined + \let\@beginmaketitlehook\@empty +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AtBeginMaketitle} +% \changes{v1.75}{2020/11/15}{Introduced macro} +% Adding to the hook +% \begin{macrocode} +\def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook} +% \end{macrocode} +% \end{macro} +% +% \subsection{Typesetting top matter} +% \label{sec:maketitle} +% +% \begin{macro}{\mktitle@bx} +% Some of our formats use a two-column design. Some use a one-column +% design. In all cases we use a wide title. Thus we typeset the top +% matter in a special box to be used in the construction +% \cs{@twocolumn}\oarg{box}. +% \begin{macrocode} +\newbox\mktitle@bx +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\maketitle} +% \changes{v1.03}{2016/04/22}{Added special case of authorversion} +% \changes{v1.07}{2016/05/03}{Corrected a bug with abstract footnotes} +% \changes{v1.07}{2016/05/03}{Corrected a bug with permssion and +% footnotes order} +% \changes{v1.10}{2016/05/23}{Corrected a bug with doi in manuscript +% and author vertsion, +% \url{https://github.com/borisveytsman/acmart/issues/36}} +% \changes{v1.12}{2016/05/30}{Moved thankses to copyrightpermission box} +% \changes{v1.33}{2017/03/27}{Fixed the bug with figures on top and +% bottom of the title page, thanks to David Epstein} +% \changes{v1.34}{2017/04/09}{Deleted `DOI' from doi numbers} +% \changes{v1.34}{2017/04/09}{Added date to the bibstrip in conf proceedings} +% \changes{v1.34}{2017/04/09}{The \cs{terms} command is now obsolete} +% \changes{v1.34}{2017/04/11}{Rearranged bibstrip} +% \changes{v1.44}{2017/07/30}{Empty DOI or ISBN are not printed (by +% Michael Ekstrand)} +% \changes{v1.46}{2017/08/27}{Added authors' addresses} +% \changes{v1.46}{2017/08/28}{Thankses go before authors' addresses} +% \changes{v1.48}{2017/09/23}{Added acmart and version info to +% pdfcreator tag} +% \changes{v1.48}{2017/10/14}{Suppressed empty DOI (Serguei Mokhov)} +% \changes{v1.48}{2017/11/18}{Added language and doctitle attributes +% to PDF (Andreas Reichinger)} +% \changes{v1.55}{2018/10/14}{Fixes topnum} +% \changes{v1.58}{2019/01/23}{Original \cs{vspace} inside +% \cs{maketitle}} +% \changes{v1.64}{2019/08/17}{Added a switch setting to show that +% \cs{maketitle} is typeset} +% \changes{v1.72}{2020/06/14}{Do not andify authors for pdf metadata +% (Scott Pakin)} +% \changes{v1.73}{2020/09/07}{Do not check again the presense of +% address fields} +% \changes{v1.75}{2020/11/15}{Added \cs{@beginmaketitlehook}} +% The (in)famous \cs{maketitle}. Note that in |sigchi-a| mode, authors +% are \emph{not} in the title box. +% +% Another note: there is a subtle difference between author notes, +% title notes and thanks. The latter two refer to the paper itself +% and therefore belong to the copyright/permission block. By the +% way, this was the default behavior of the old ACM classes. +% \begin{macrocode} +\def\maketitle{\@beginmaketitlehook + \@ACM@maketitle@typesettrue + \if@ACM@anonymous + % Anonymize omission of \author-s + \ifnum\num@authorgroups=0\author{}\fi + \fi + \begingroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \let\@footnotemark\@footnotemark@nolink + \let\@footnotetext\@footnotetext@nolink + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \hsize=\textwidth + \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}% + \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers + \@printtopmatter + \if@ACM@sigchiamode\@mkauthors\fi + \setcounter{footnote}{0}% + \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}% + \@titlenotes + \@subtitlenotes + \@authornotes + \let\@makefnmark\relax + \let\@thefnmark\relax + \let\@makefntext\noindent + \ifx\@empty\thankses\else + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setthanks}% + \fi + \ifx\@empty\@authorsaddresses\else + \if@ACM@anonymous\else + \if@ACM@journal@bibstrip + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}% + \fi + \fi + \fi + \if@ACM@nonacm\else\footnotetextcopyrightpermission{% + \if@ACM@authordraft + \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries + Unpublished working draft. Not for distribution.}}% + \color[gray]{0.9}% + \fi + \parindent\z@\parskip0.1\baselineskip + \if@ACM@authorversion\else + \if@printpermission\@copyrightpermission\par\fi + \fi + \if@ACM@manuscript\else + \if@ACM@journal@bibstrip\else % Print the conference information + {\itshape \acmConference@shortname, \acmConference@date, \acmConference@venue}\par + \fi + \fi + \if@printcopyright + \copyright\ \@copyrightyear\ \@copyrightowner\\ + \else + \@copyrightyear.\ + \fi + \if@ACM@manuscript + Manuscript submitted to ACM\\ + \else + \if@ACM@authorversion + This is the author's version of the work. It is posted here for + your personal use. Not for redistribution. The definitive Version + of Record was published in + \if@ACM@journal@bibstrip + \emph{\@journalName}% + \else + \emph{\@acmBooktitle}% + \fi + \ifx\@acmDOI\@empty + . + \else + , \@formatdoi{\@acmDOI}. + \fi\\ + \else + \if@ACM@nonacm\else + \if@ACM@journal@bibstrip + \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle + \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\ + \@formatdoi{\@acmDOI}% + \else % Conference + \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN + \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi% + \fi + \fi + \fi + \fi} + \fi + \endgroup + \setcounter{footnote}{0}% + \@mkabstract + \if@ACM@printccs + \ifx\@concepts\@empty\else\bgroup + {\@specialsection{CCS Concepts}% + \noindent\@concepts\par}\egroup + \fi + \fi + \ifx\@keywords\@empty\else\bgroup + {\if@ACM@journal + \@specialsection{Additional Key Words and Phrases}% + \else + \@specialsection{Keywords}% + \fi + \noindent\@keywords}\par\egroup + \fi + \let\metadata@authors=\authors + \nxandlist{, }{, }{, }\metadata@authors + \def\@ACM@checkaffil{}% + \hypersetup{% + pdfauthor={\metadata@authors}, + pdftitle={\@title}, + pdfsubject={\@concepts}, + pdfkeywords={\@keywords}, + pdfcreator={LaTeX with acmart + \csname ver@acmart.cls\endcsname\space + and hyperref + \csname ver@hyperref.sty\endcsname}}% + \andify\authors + \andify\shortauthors + \global\let\authors=\authors + \global\let\shortauthors=\shortauthors + \if@ACM@printacmref + \@mkbibcitation + \fi + \global\@topnum\z@ % this prevents floats from falling + % at the top of page 1 + \global\@botnum\z@ % we do not want them to be on the bottom either + \@printendtopmatter + \@afterindentfalse + \@afterheading +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@specialsection} +% \changes{v1.66}{2019/11/23}{Suppress warnings about \cs{vspace}} +% \changes{v1.67}{2020/01/11}{Paragraph inside group does not print +% its argument. Added a bugfix} +% \changes{v1.68}{2020/01/19}{Deleted grouping altogether} +% \changes{v1.69}{2020/02/02}{Changed dot to colon for sigplan} +% This macro starts sections for proceedings and uses \cs{small} for journals +% \begin{macrocode} +\def\@specialsection#1{% + \ifcase\ACM@format@nr + \relax % manuscript + \par\medskip\small\noindent#1: % + \or % acmsmall + \par\medskip\small\noindent#1: % + \or % acmlarge + \par\medskip\small\noindent#1: % + \or % acmtog + \par\medskip\small\noindent#1: % + \or % sigconf + \section*{#1}% + \or % siggraph + \section*{#1}% + \or % sigplan + \noindentparagraph*{#1:~}% + \or % sigchi + \section*{#1}% + \or % sigchi-a + \section*{#1}% + \fi +} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@printtopmatter} +% \changes{v1.06}{2016/05/01}{Added processing badges} +% \changes{v1.46}{2017/08/29}{Deleted rule} +% The printing of top matter starts a new page and uses the given +% title box. Note that for |sigchi-a| we print badges here rather +% than in \cs{mktitle} since we want them in the margins. +% \begin{macrocode} +\def\@printtopmatter{% + \ifx\@startPage\@empty + \gdef\@startPage{1}% + \else + \setcounter{page}{\@startPage}% + \fi + \thispagestyle{firstpagestyle}% + \noindent + \ifcase\ACM@format@nr + \relax % manuscript + \box\mktitle@bx\par + \or % acmsmall + \box\mktitle@bx\par + \or % acmlarge + \box\mktitle@bx\par + \or % acmtog + \twocolumn[\box\mktitle@bx]% + \or % sigconf + \twocolumn[\box\mktitle@bx]% + \or % siggraph + \twocolumn[\box\mktitle@bx]% + \or % sigplan + \twocolumn[\box\mktitle@bx]% + \or % sigchi + \twocolumn[\box\mktitle@bx]% + \or % sigchi-a + \par\box\mktitle@bx\par\bigskip + \if@ACM@badge + \marginpar{\noindent + \ifx\@acmBadgeL@image\@empty\else + \href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}% + \hskip\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}% + \fi}% + \fi + \fi +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mktitle} +% The title of the article +% \begin{macrocode} +\def\@mktitle{% + \ifcase\ACM@format@nr + \relax % manuscript + \@mktitle@i + \or % acmsmall + \@mktitle@i + \or % acmlarge + \@mktitle@i + \or % acmtog + \@mktitle@i + \or % sigconf + \@mktitle@iii + \or % siggraph + \@mktitle@iii + \or % sigplan + \@mktitle@iii + \or % sigchi + \@mktitle@iii + \or % sigchi-a + \@mktitle@iv + \fi +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@titlefont} +% \changes{v1.06}{2016/05/01}{Added macro} +% \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to +% \cs{sffamily}\cs{bfseries}} +% The font to typeset the title +% \begin{macrocode} +\def\@titlefont{% + \ifcase\ACM@format@nr + \relax % manuscript + \LARGE\sffamily\bfseries + \or % acmsmall + \LARGE\sffamily\bfseries + \or % acmlarge + \LARGE\sffamily\bfseries + \or % acmtog + \Huge\sffamily + \or % sigconf + \Huge\sffamily\bfseries + \or % siggraph + \Huge\sffamily\bfseries + \or % sigplan + \Huge\bfseries + \or % sigchi + \Huge\sffamily\bfseries + \or % sigchi-a + \Huge\bfseries + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@subtitlefont} +% \changes{v1.06}{2016/05/01}{Added macro} +% \changes{v1.33}{2017/03/12}{Added \cs{normalsize}} +% The font to typeset the subtitle +% \begin{macrocode} +\def\@subtitlefont{\normalsize + \ifcase\ACM@format@nr + \relax % manuscript + \mdseries + \or % acmsmall + \mdseries + \or % acmlarge + \mdseries + \or % acmtog + \LARGE + \or % sigconf + \LARGE\mdseries + \or % siggraph + \LARGE\mdseries + \or % sigplan + \LARGE\mdseries + \or % sigchi + \LARGE\mdseries + \or % sigchi-a + \mdseries + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mktitle@i} +% \changes{v1.06}{2016/05/01}{Made generic} +% \changes{v1.06}{2016/05/01}{Added processing badges} +% The version of \cs{mktitle} for most journals +% \begin{macrocode} +\def\@mktitle@i{\hsize=\textwidth + \@ACM@title@width=\hsize + \ifx\@acmBadgeL@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \setbox\mktitle@bx=\vbox{\noindent\@titlefont + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\raggedright + \@titlefont\noindent + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi}% + \ifx\@acmBadgeR@image\@empty\else + \hskip\@ACM@badge@skip + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi + \par\bigskip}}% +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mktitle@ii} +% \changes{v1.06}{2016/05/01}{Now this macro is obsolete} +% The version of \cs{mktitle} for TOG. Since v1.06, this is subsumed by +% the \cs{mktitle@i} macro +% \end{macro} +% +% +% \begin{macro}{\@mktitle@iii} +% \changes{v1.06}{2016/05/01}{Made more generic} +% \changes{v1.06}{2016/05/01}{Added processing badges} +% The version of \cs{@mktitle} for SIG proceedings. Note that since +% the title is centered, we leave space for the left badge even if +% only the right badge is defined. +% \begin{macrocode} +\def\@mktitle@iii{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\@titlefont\centering + \@ACM@title@width=\hsize + \if@ACM@badge + \advance\@ACM@title@width by -2\@ACM@badge@width + \advance\@ACM@title@width by -2\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \fi}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\centering\@titlefont + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi + }% + \if@ACM@badge + \hskip\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeR@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi}% + \fi + \par\bigskip}}% +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@mktitle@iv} +% \changes{v1.06}{2016/05/01}{Made more generic} +% The version of \cs{@mktitle} for |sigchi-a| +% \begin{macrocode} +\def\@mktitle@iv{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont + \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par + \noindent\@title + \ifx\@subtitle\@empty\else + \par\noindent\@subtitlefont\@subtitle + \fi + \par\bigskip}}% +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@ACM@addtoaddress} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% This macro adds an item to the address using the following rules: +% \begin{enumerate} +% \item If we start a paragraph, add the item +% \item Otherwise, add a comma and the item +% \item However, the comma is deleted if it is at the end of a +% line. We use the magic \cs{cleaders} trick for this. +% \end{enumerate} +% \begin{macrocode} +\newbox\@ACM@commabox +\def\@ACM@addtoaddress#1{% + \ifvmode\else + \if@ACM@affiliation@obeypunctuation\else + \setbox\@ACM@commabox=\hbox{, }% + \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox + \fi\fi + #1} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\institution} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.73}{2020/09/07}{Check the presence in affil} +% \begin{macro}{\position} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \begin{macro}{\department} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.30}{2017/02/10}{Added optional parameter} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \begin{macro}{\streetaddress} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.40}{2017/06/15}{We now do not print this even in SIG} +% \begin{macro}{\city} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.40}{2017/06/15}{We now do not print this even in SIG} +% \changes{v1.73}{2020/09/07}{Check the presence in affil} +% \begin{macro}{\state} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.40}{2017/06/15}{We now do not print this even in SIG} +% \begin{macro}{\postcode} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.40}{2017/06/15}{We now do not print this even in SIG} +% \begin{macro}{\country} +% \changes{v1.15}{2016/07/03}{Added macro} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.40}{2017/05/27}{Fixed bugs with extra spaces} +% \changes{v1.43}{2017/07/11}{Added comma before country for journals} +% \changes{v1.46}{2017/08/30}{Corrected spacing for institution} +% \changes{v1.73}{2020/09/07}{Check the presence in affil} +% Theoretically we can define the macros for \cs{affiliation} inside +% the \cs{@mkauthors}-style commands. However, this would lead to a +% strange error if an author uses them outside \cs{affiliation}. Of +% course we can make them produce an error message, but\ldots +% \begin{macrocode} +\def\streetaddress#1{\unskip\ignorespaces} +\def\postcode#1{\unskip\ignorespaces} +\if@ACM@journal + \def\position#1{\unskip\ignorespaces} + \def\institution#1{\global\@ACM@instpresenttrue + \unskip~#1\ignorespaces} + \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces} + \def\state#1{\unskip\ignorespaces} + \newcommand\department[2][0]{\unskip\ignorespaces} + \def\country#1{\global\@ACM@countrypresenttrue + \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces} +\else + \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \def\institution#1{\global\@ACM@instpresenttrue + \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation + #2\else#2\par\fi}% +% \def\streetaddress#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}% + \let\state\@ACM@addtoaddress +% \def\postcode#1{\if@ACM@affiliation@obeypunctuation#1\else\unskip\space#1\fi}% + \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}% +\fi +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@mkauthors} +% \changes{v1.17}{2016/07/09}{TOG now uses the same authors block as +% other journals} +% Typesetting the authors +% \begin{macrocode} +\def\@mkauthors{\begingroup + \hsize=\textwidth + \ifcase\ACM@format@nr + \relax % manuscript + \@mkauthors@i + \or % acmsmall + \@mkauthors@i + \or % acmlarge + \@mkauthors@i + \or % acmtog + \@mkauthors@i + \or % sigconf + \@mkauthors@iii + \or % siggraph + \@mkauthors@iii + \or % sigplan + \@mkauthors@iii + \or % sigchi + \@mkauthors@iii + \or % sigchi-a + \@mkauthors@iv + \fi + \endgroup +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@authorfont} +% Somehow different conferences use different fonts for author +% names. Why? +% \begin{macrocode} +\def\@authorfont{\Large\sffamily} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@affiliationfont} +% Font for affiliations +% \begin{macrocode} +\def\@affiliationfont{\normalsize\normalfont} +% \end{macrocode} +% \end{macro} +% +% \changes{v1.13}{2016/06/06}{Font adjustments for acmsmall} +% Adjusting fonts for different formats +% \begin{macrocode} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \def\@authorfont{\large\sffamily} + \def\@affiliationfont{\small\normalfont} +\or % acmlarge +\or % acmtog + \def\@authorfont{\LARGE\sffamily} + \def\@affiliationfont{\large} +\or % sigconf + \def\@authorfont{\LARGE} + \def\@affiliationfont{\large} +\or % siggraph + \def\@authorfont{\normalsize\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigplan + \def\@authorfont{\Large\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigchi + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\or % sigchi-a + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\fi +% \end{macrocode} +% +% \begin{macro}{\@typeset@author@line} +% \changes{v1.18}{2016/07/12}{Added macro} +% At this point we have \cs{@currentauthors} and +% \cs{@currentaffiliations}. We typeset them in the journal style +% \begin{macrocode} +\def\@typeset@author@line{% + \andify\@currentauthors\par\noindent + \@currentauthors\def\@currentauthors{}% + \ifx\@currentaffiliations\@empty\else + \andify\@currentaffiliations + \unskip, {\@currentaffiliations}\par + \fi + \def\@currentaffiliations{}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\if@ACM@instpresent} +% \changes{v1.73}{2020/09/07}{Added macro} +% Whether the given affiliation has institution +% \begin{macrocode} +\newif\if@ACM@instpresent +\@ACM@instpresenttrue +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\if@ACM@citypresent} +% \changes{v1.73}{2020/09/07}{Added macro} +% Whether the given affiliation has city +% \begin{macrocode} +\newif\if@ACM@citypresent +\@ACM@citypresenttrue +% \end{macrocode} +% +% \end{macro} +% \begin{macro}{\if@ACM@countrypresent} +% \changes{v1.73}{2020/09/07}{Added macro} +% Whether the given affiliation has country +% \begin{macrocode} +\newif\if@ACM@countrypresent +\@ACM@countrypresenttrue +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@ACM@resetaffil} +% \changes{v1.73}{2020/09/07}{Added macro} +% Reset affiliation flags +% \begin{macrocode} +\def\@ACM@resetaffil{% + \global\@ACM@instpresentfalse + \global\@ACM@citypresentfalse + \global\@ACM@countrypresentfalse +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@ACM@checkaffil} +% \changes{v1.73}{2020/09/07}{Added macro} +% \changes{v1.75}{2020/11/15}{Changed warning to error for country} +% Check affiliation flags +% \begin{macrocode} +\def\@ACM@checkaffil{% + \if@ACM@instpresent\else + \ClassWarningNoLine{\@classname}{No institution present for an affiliation}% + \fi + \if@ACM@citypresent\else + \ClassWarningNoLine{\@classname}{No city present for an affiliation}% + \fi + \if@ACM@countrypresent\else + \ClassError{\@classname}{No country present for an affiliation}{ACM + requires each author to indicate their country using country macro.}% + \fi +} +% \end{macrocode} +% +% \end{macro} +% +% +% +% +% \begin{macro}{\@mkauthors@i} +% \changes{v1.18}{2016/07/12}{Now we andify affiliations} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.40}{2017/06/04}{Switched to MakeTextUppercase} +% \changes{v1.73}{2020/09/07}{Check the presence of required elements +% for affiliations} +% This version is used in most journal formats. Note that \cs{and} between +% authors with the same affiliation becomes \verb*| and |: +% \begin{macrocode} +\def\@mkauthors@i{% + \def\@currentauthors{}% + \def\@currentaffiliations{}% + \global\let\and\@typeset@author@line + \def\@author##1{% + \ifx\@currentauthors\@empty + \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% + \else + \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% + \fi + \gdef\and{}}% + \def\email##1##2{}% + \def\affiliation##1##2{% + \def\@tempa{##2}\ifx\@tempa\@empty\else + \ifx\@currentaffiliations\@empty + \gdef\@currentaffiliations{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}% + \@ACM@resetaffil + \@affiliationfont##2\@ACM@checkaffil}% + \else + \g@addto@macro{\@currentaffiliations}{\and + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \fi + \global\let\and\@typeset@author@line}% + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip + \noindent\addresses\@typeset@author@line + \par\medskip}% +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mkauthors@ii} +% \changes{v1.17}{2016/07/09}{Deleted} +% The \cs{@mkauthors@ii} command was the version used in |acmtog|. +% It is no longer necessary. +% +% \end{macro} +% +% \begin{macro}{\author@bx} +% The box to put an individual author in +% \begin{macrocode} +\newbox\author@bx +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\author@bx@wd} +% The width of the author box +% \begin{macrocode} +\newdimen\author@bx@wd +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\author@bx@sep} +% The separation between author boxes +% \begin{macrocode} +\newskip\author@bx@sep +\author@bx@sep=1pc\relax +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@typeset@author@bx} +% \changes{v1.15}{2016/07/04}{Moved to separate macro} +% \changes{v1.61}{2019/05/26}{Added \cs{normalbaselines}} +% Typesetting the box with authors. Note that in |sigchi-a| the box +% is not centered. +% \begin{macrocode} +\def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd + \def\and{\par}\normalbaselines + \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi + \@authorfont\@currentauthors\par\@affiliationfont + \@currentaffiliation}\egroup + \box\author@bx\hspace{\author@bx@sep}% + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@mkauthors@iii} +% \changes{v1.15}{2016/07/04}{New authors system} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.36}{2017/05/12}{Added authorsperrow overrride} +% \changes{v1.73}{2020/09/07}{Check the presence of required elements +% for affiliations} +% The |sigconf| version. Here we use a centered design with each +% author in a separate box. +% \begin{macrocode} +\def\@mkauthors@iii{% +% \end{macrocode} +% First, we need to determine the design of the author strip. The +% boxes are separated by \cs{author@bx@sep} plus two +% \cs{author@bx@sep} margins. This means that each box must be of +% width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$, +% where $N$ is the number of boxes per row. +% \begin{macrocode} + \author@bx@wd=\textwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \or % 2=two authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 3=three authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 4=two authors per row (!) + \divide\author@bx@wd by 2\relax + \else % three authors per row + \divide\author@bx@wd by 3\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax +% \end{macrocode} +% Now, parsing of \cs{addresses}: +% \begin{macrocode} + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\bgroup + \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% + \else + \g@addto@macro\@currentaffiliation{\par\bgroup + \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \global\let\and\@typeset@author@bx +}% +% \end{macrocode} +% Actual typesetting is done by the \cs{and} macro: +% \begin{macrocode} + \hsize=\textwidth + \global\setbox\mktitle@bx=\vbox{\noindent + \box\mktitle@bx\par\medskip\leavevmode + \lineskip=1pc\relax\centering\hspace*{-1em}% + \addresses\let\and\@typeset@author@bx\and\par\bigskip}} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@mkauthors@iv} +% \changes{v1.33}{2017/03/28}{Added obeypunctuation code} +% \changes{v1.36}{2017/05/12}{Added authorsperrow overrride} +% \changes{v1.73}{2020/09/07}{Check the presence of required elements +% for affiliations} +% The |sigchi-a| version. We put authors in the main text with +% no more than 2 authors per line, unless overriden. +% \begin{macrocode} +\def\@mkauthors@iv{% +% \end{macrocode} +% First, we need to determine the design of the author strip. The +% boxes are separated by \cs{author@bx@sep} plus two +% \cs{author@bx@sep} margins. This means that each box must be of +% width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$, +% where $N$ is the number of boxes per row. +% \begin{macrocode} + \author@bx@wd=\columnwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \else % 2=two authors per row + \divide\author@bx@wd by 2\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax +% \end{macrocode} +% Now, parsing of \cs{addresses}: +% \begin{macrocode} + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\nolinkurl{##2}}% + \else + \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \global\let\and\@typeset@author@bx}% +% +% \end{macrocode} +% Actual typesetting is done by the \cs{and} macro +% \begin{macrocode} + \bgroup\hsize=\columnwidth + \par\raggedright\leftskip=\z@ + \lineskip=1pc\noindent + \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mkauthorsaddresses} +% \changes{v1.46}{2017/08/27}{Introduced macro} +% \changes{v1.65}{2019/10/13}{Deleted cs{@addpunct}} +% Typesetting authors' addresses in the footnote style +% \begin{macrocode} +\def\@mkauthorsaddresses{% + \ifnum\num@authors>1\relax + Authors' \else Author's \fi + \ifnum\num@authorgroups>1\relax + addresses: \else address: \fi + \bgroup + \def\streetaddress##1{\unskip, ##1}% + \def\postcode##1{\unskip, ##1}% + \def\position##1{\unskip\ignorespaces}% + \def\institution##1{\unskip, ##1}% + \def\city##1{\unskip, ##1}% + \def\state##1{\unskip, ##1}% + \renewcommand\department[2][0]{\unskip\@addpunct, ##2}% + \def\country##1{\unskip, ##1}% + \def\and{\unskip; }% + \def\@author##1{##1}% + \def\email##1##2{\unskip, \nolinkurl{##2}}% + \addresses + \egroup} +% \end{macrocode} +% +% \changes{1.66}{2019/12/18}{Added warning for missing addresses} +% \begin{macrocode} +\AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal + \ifx\@authorsaddresses\@empty + \ClassWarningNoLine{\@classname}{Authors' + addresses are mandatory for ACM journals}% + \fi\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@setaddresses} +% This is an |amsart| macro that we do not need. +% \begin{macrocode} +\def\@setaddresses{} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@authornotemark} +% Adding a footnote mark to authors. This version adds a ``normal'' +% footnote mark. +% \begin{macrocode} +\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@@authornotemark} +% \changes{v1.39}{2017/05/14}{Added macro} +% Adding a footnote mark to authors with a given number +% \begin{macrocode} +\def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mkteasers} +% Typesetting the teasers +% \changes{v1.56}{2018/11/1}{Added check for description} +% \begin{macrocode} +\def\@mkteasers{% + \ifx\@teaserfigures\@empty\else + \def\@teaser##1{\par\bigskip\bgroup + \captionsetup{type=figure}##1\egroup\par} + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par + \noindent\@Description@presentfalse + \@teaserfigures\par\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without + description}\fi + \medskip}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mkabstract} +% \changes{v1.19}{2016/07/28}{Include 'Abstract' in PDF bookmarks +% (Matthew Fluet)} +% \changes{v1.20}{2016/08/03}{Deleted spurious space} +% \changes{v1.29}{2017/01/22}{Removed spurious indentation (John +% Wickerson)} +% \changes{v1.48}{2017/09/16}{Removed spurious indentation if abstract +% is followed by an empty line} +% Typesetting the abstract +% \begin{macrocode} +\def\@mkabstract{\bgroup + \ifx\@abstract\@lempty\else + {\phantomsection\addcontentsline{toc}{section}{Abstract}% + \if@ACM@journal + \everypar{\setbox\z@\lastbox\everypar{}}\small + \else + \section*{\abstractname}% + \fi + \ignorespaces\@abstract\par}% + \fi\egroup} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@mkbibcitation} +% \changes{v1.17}{2016/07/10}{Changed format for sigs} +% \changes{v1.17}{2016/07/10}{Added \cs{nobreak}} +% \changes{v1.31}{2017/03/04}{Disabled linebreak} +% \changes{v1.34}{2017/04/09}{Deleted DOI from doi numbers} +% \changes{v1.44}{2017/07/30}{If the paper has just one page, use +% `page' instead of `pages'} +% \changes{v1.46}{2017/08/25}{Added subtitle} +% \changes{v1.54}{2018/06/10}{Bug corrected (Ross Moore)} +% \changes{v1.55}{2018/07/25}{Bug corrected} +% \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning} +% Print the |bibcitation| format +% \begin{macrocode} +\def\@mkbibcitation{\bgroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}% + \def\footnotemark{}% + \def\\{\unskip{} \ignorespaces}% + \def\footnote{\ClassError{\@classname}{Please do not use footnotes + inside a \string\title{} or \string\author{} command! Use + \string\titlenote{} or \string\authornote{} instead!}}% + \def\@article@string{\ifx\@acmArticle\@empty{\ }\else, + Article~\@acmArticle\ \fi}% + \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak + \noindent\bgroup + \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title + \ifx\@subtitle\@empty. \else: \@subtitle. \fi + \if@ACM@nonacm\else + % The 'nonacm' option disables 'printacmref' by default, + % and the present \@mkbibcitation definition is never used + % in this case. The conditional remains useful if the user + % explicitly sets \settopmatter{printacmref=true}. + \if@ACM@journal@bibstrip + \textit{\@journalNameShort} + \@acmVolume, \@acmNumber \@article@string (\@acmPubDate), + \ref{TotPages}~\@pages@word. + \else + In \textit{\@acmBooktitle}% + \ifx\@acmEditors\@empty\textit{.}\else + \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.% + \fi\ + ACM, New York, NY, USA% + \@article@string\unskip, \ref{TotPages}~\@pages@word. + \fi + \fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi +\par\egroup} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@printendtopmatter} +% \changes{v1.46}{2017/08/28}{Made it \cs{par}\cs{bigskip} uniformly} +% \changes{v1.58}{2019/01/23}{Deleted spurious \cs{vspace} warning} +% \changes{v1.69}{2020/02/02}{Deleted grouping} +% End the top matter +% \begin{macrocode} +\def\@printendtopmatter{% + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \par\bigskip + \let\@vspace\@vspace@acm + \let\@vspacer\@vspacer@acm + } +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@setthanks} +% We redefine \cs{\@setthanks} using \cs{long} +% \begin{macrocode} +\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@setauthorsaddresses} +% \changes{v1.46}{2018/08/25}{Introduced macro} +% \begin{macrocode} +\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.} +% \end{macrocode} +% +% \end{macro} +% +% +% +%\subsection{Headers and Footers} +%\label{sec:head_foot} +% +% We use |fancyhdr| for our headers and footers: +% \begin{macrocode} +\RequirePackage{fancyhdr} +% \end{macrocode} +% +% \begin{macro}{\ACM@restore@pagestyle} +% \changes{v1.44}{2017/07/30}{Added macro} +% The following code by Ross Moore protects against changes by +% the |totpages| package: +% \begin{macrocode} +\let\ACM@ps@plain\ps@plain +\let\ACM@ps@myheadings\ps@myheadings +\let\ACM@ps@headings\ps@headings +\def\ACM@restore@pagestyle{% + \let\ps@plain\ACM@ps@plain + \let\ps@myheadings\ACM@ps@myheadings + \let\ps@headings\ACM@ps@headings} +\AtBeginDocument{\ACM@restore@pagestyle} +% \end{macrocode} +% +% +% \end{macro} +% +% +% +% \begin{macro}{\ACM@linecount@bx} +% \changes{v1.34}{2017/04/10}{Rulers now are continuous} +% \changes{v1.40}{2017/05/27}{Work around a bug in xcolor: looks like +% cmyk colors in boxes do not work} +% \changes{v1.46}{2017/08/28}{Rearranged the code to get rid of +% spurious underfull messages (Benjamin Byholm)} +% \changes{v1.64}{2019/08/24}{Bug fix: made the spacing on the left +% and the right size equal} +% This is the box displayed in review mode +% \begin{macrocode} +\if@ACM@review + \newsavebox{\ACM@linecount@bx} + \newlength\ACM@linecount@bxht + \newcount\ACM@linecount + \ACM@linecount\@ne\relax + \def\ACM@mk@linecount{% + \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont + \normalsize + \setlength{\ACM@linecount@bxht}{0pt}% + \loop{\color{red}\scriptsize\the\ACM@linecount}\\ + \global\advance\ACM@linecount by \@ne + \addtolength{\ACM@linecount@bxht}{\baselineskip}% + \ifdim\ACM@linecount@bxht<\textheight\repeat + {\color{red}\scriptsize\the\ACM@linecount}\hfill + \global\advance\ACM@linecount by \@ne}}} +\fi +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\ACM@linecountL} +% \changes{v1.33}{2017/03/29}{Renamed macro} +% \changes{v1.34}{2017/04/10}{Rulers now are continuous} +% How to display the box on the left +% \begin{macrocode} +\def\ACM@linecountL{% + \if@ACM@review + \ACM@mk@linecount + \begin{picture}(0,0)% + \put(-26,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\ACM@linecountR} +% \changes{v1.33}{2017/03/29}{Added macro} +% \changes{v1.34}{2017/04/10}{Rulers now are continuous} +% \changes{v1.69}{2020/02/02}{Do not increase numbers in one column format} +% How to display the box on the right. In one column formats we do +% not step the numbers. +% \begin{macrocode} +\def\ACM@linecountR{% + \if@ACM@review + \ifcase\ACM@format@nr + \relax % manuscript + \relax + \or % acmsmall + \relax + \or % acmlarge + \relax + \or % acmtog + \ACM@mk@linecount + \or % sigconf + \ACM@mk@linecount + \or % siggraph + \ACM@mk@linecount + \or % sigplan + \ACM@mk@linecount + \or % sigchi + \ACM@mk@linecount + \or % sigchi-a + \ACM@mk@linecount + \fi + \begin{picture}(0,0)% + \put(20,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\ACM@timestamp} +% \changes{v1.33}{2017/03/10}{Added macro (Michael D.~Adams)} +% \changes{v1.33}{2017/03/28}{Added current page number} +% \changes{v1.33}{2017/03/29}{Added submission id} +% \changes{v1.48}{2017/09/16}{Fromatting change (Michael D.~Adams)} +% The timestamp system +% \begin{macrocode} +\if@ACM@timestamp + % Subtracting 30 from \time gives us the effect of rounding down despite + % \numexpr rounding to nearest + \newcounter{ACM@time@hours} + \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax} + \newcounter{ACM@time@minutes} + \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax} + \newcommand\ACM@timestamp{% + \footnotesize% + \ifx\@acmSubmissionID\@empty\relax\else + Submission ID: \@acmSubmissionID.{ }% + \fi + \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }% + \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }% + Page \thepage\ of \@startPage--\pageref*{TotPages}.% + } +\fi +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@shortauthors} +% \changes{v1.15}{2016/07/04}{Introduced macro} +% \changes{v1.54}{2016/06/23}{Added submission id in anonymous mode} +% Even if the author redefined \cs{shortauthors}, we do not print +% it in the headers when in anonymous mode: +% \begin{macrocode} +\def\@shortauthors{% + \if@ACM@anonymous + Anon. + \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi + \else\shortauthors\fi} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@headfootfont} +% \changes{v1.16}{2016/07/07}{Added macro} +% \changes{v1.48}{2017/09/16}{Deleted unnecessary switch (Michael D.~Adams)} +% \changes{v1.60}{2019/04/22}{Moved to footnotesize} +% The font to typeset header and footer text. +% \begin{macrocode} +\def\@headfootfont{\sffamily\footnotesize} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{standardpagestyle} +% \changes{v1.10}{2016/05/22}{Reversed folios location} +% \changes{v1.13}{2016/06/06}{Suppressed folios if sig} +% \changes{v1.13}{2016/06/06}{Added headers for sigs} +% \changes{v1.13}{2016/06/06}{Expanded headers for sigchi-a} +% \changes{v1.15}{2016/07/04}{Better handling of anonymous mode} +% \changes{v1.16}{2016/07/07}{Customize header/footer text font} +% \changes{v1.17}{2016/07/10}{Added paper title to sigs} +% \changes{v1.29}{2017/01/22}{Corrected printfolios (Matthew Fluet)} +% \changes{v1.33}{2017/03/10}{Added timestamp (Michael D.~Adams)} +% \changes{v1.33}{2017/03/29}{Added right linecount for two-column formats} +% The page style for all pages but the first one +% \changes{v1.51}{2018/04/05}{We now use journal abbreviation for +% footers} +% \changes{v1.59}{2019/04/20}{Added logic for conference papers using +% journal format} +% \changes{v1.59}{2019/04/20}{Moved page styles to \cs{AtBeginDocument}} +% The page style for all pages but the first one +% \begin{macrocode} +\AtBeginDocument{% +\fancypagestyle{standardpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \def\@acmArticlePage{% + \ifx\@acmArticle\empty% + \if@ACM@printfolios\thepage\fi% + \else% + \@acmArticle\if@ACM@printfolios:\thepage\fi% + \fi% + }% + \if@ACM@journal@bibstrip + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}% + \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}% + \fancyhead[RE]{\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\shorttitle}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM} + \fi% + \or % acmsmall + \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}% + \fancyhead[RO]{\@headfootfont\@acmArticlePage}% + \fancyhead[RE]{\@headfootfont\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \or % acmlarge + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticlePage\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticlePage}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \or % acmtog + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticlePage\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RE]{\ACM@linecountR}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \else % Proceedings + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize + \acmConference@shortname, + \acmConference@date, \acmConference@venue}% + \fancyhead[RO]{\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue\ACM@linecountR}% + \fi + \fi + \else % Proceedings + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue}% + \fancyhead[RO]{\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue\ACM@linecountR}% + \fi + \fi + \if@ACM@sigchiamode + \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}% + \fi + \if@ACM@timestamp + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi +}% +\pagestyle{standardpagestyle} +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@folio@wd} +% \begin{macro}{\@folio@ht} +% \begin{macro}{\@folio@voffset} +% \begin{macro}{\@folio@max} +% Folio blob width, height, offsets and max number +% \begin{macrocode} +\newdimen\@folio@wd +\@folio@wd=\z@ +\newdimen\@folio@ht +\@folio@ht=\z@ +\newdimen\@folio@voffset +\@folio@voffset=\z@ +\def\@folio@max{1} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \@folio@wd=45.75pt\relax + \@folio@ht=1.25in\relax + \@folio@voffset=.2in\relax + \def\@folio@max{8} +\or % acmlarge + \@folio@wd=43.25pt\relax + \@folio@ht=79pt\relax + \@folio@voffset=.55in\relax + \def\@folio@max{10} +\fi +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@folioblob} +% \changes{v1.44}{2017/08/11}{Suppress the blob if acmArticleSeq is empty} +% \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to +% \cs{sffamily}\cs{bfseries}} +% The macro to typeset the folio blob. +% \begin{macrocode} +\def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax + \ifnum\@tempcnta=0\relax\else +% \end{macrocode} +% First, we calculate \cs{@acmArticleSeq} modulo \cs{@folio@max} +% \begin{macrocode} + \loop + \ifnum\@tempcnta>\@folio@max\relax + \advance\@tempcnta by - \@folio@max + \repeat +% \end{macrocode} +% +% \begin{macrocode} + \advance\@tempcnta by -1\relax + \@tempdima=\@folio@ht\relax + \multiply\@tempdima by \the\@tempcnta\relax + \advance\@tempdima by -\@folio@voffset\relax + \begin{picture}(0,0) + \makebox[\z@]{\raisebox{-\@tempdima}{% + \rlap{% + \raisebox{-0.45\@folio@ht}[\z@][\z@]{% + \rule{\@folio@wd}{\@folio@ht}}}% + \parbox{\@folio@wd}{% + \centering + \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}} + \end{picture}\fi} + +% \end{macrocode} +% +% +% \end{macro} +% +% \begin{macro}{firstpagestyle} +% \changes{v1.33}{2017/03/10}{Added timestamp (Michael D.~Adams)} +% \changes{v1.33}{2017/03/29}{Added right linecount for two-column +% formats} +% \changes{v1.51}{2018/04/05}{We now use journal abbreviation for +% footers} +% \changes{v1.59}{2019/04/20}{Added logic for conference papers using +% journal format} +% \changes{v1.59}{2019/04/20}{Moved page styles to \cs{AtBeginDocument}} +% The page style for the first page only. +% \begin{macrocode} +\AtBeginDocument{% +\fancypagestyle{firstpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \if@ACM@journal@bibstrip + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[L]{\ACM@linecountL}% + \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}% + \if@ACM@nonacm\else% + \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}% + \fi% + \or % acmsmall + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@folioblob}% + \fancyheadoffset[RO,LE]{0.6\@folio@wd}% + \or % acmlarge + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[RO]{\@folioblob}% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyheadoffset[RO,LE]{1.4\@folio@wd}% + \or % acmtog + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \else % Conference proceedings + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fi + \else + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fi + \if@ACM@timestamp + \ifnum\ACM@format@nr=0\relax % Manuscript + \fancyfoot[LO,RE]{\ACM@timestamp\quad + \if@ACM@nonacm\else + \footnotesize Manuscript submitted to ACM + \fi} + \else + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi + \fi +}} +% \end{macrocode} +% +% \end{macro} +% +% +%\subsection{Sectioning} +%\label{sec:sectioninng} +% +% \begin{macro}{\ACM@NRadjust} +% \changes{v1.54}{2018/06/17}{Added macro} +% Ross Moore's macro. +% \begin{quotation} +% Initially |\ACM@sect@format@| just passes through its |#1| +% argument unchanged. +% When a sectioning macro such as |\section| occurs, the +% |\ACM@NRadjust| redefines |\ACM@sect@format@| to expand into the +% styling commands; e.g., |\@secfont|. +% Then |\Sectionformat| is temporarily redefined to produce +% |\realSectionformat{\ACM@sect@format{#1}}{#2}|, which ultimately +% becomes |\Sectionformat{\@secfont{#1}}{#2}|. +% This is done to allow |\Sectionformat| to be variable, as may be +% needed in particular circumstances. Its current expansion is saved +% as |\realSectionformat| which is used with the modified 1st argument, +% then |\Sectionformat| is reverted to its former expansion. +% +% To style the section-number, the line |#1{}| is used at the end of +% |\ACM@NRadjust|. This imposes style-changing commands for fonts and +% sizes, but any |\MakeUppercase| acts on just the |{}|. It's a bit hacky, +% by essentially assuming that only numbers occur here, not letters to +% be case-changed. (This should be acceptable in a class-file, as it +% ought to be possible to change the case elsewhere, if that was ever +% desired.) Also, it can result in |\@adddotafter| being called too +% soon, so a slight adjustment is made, via |\ACM@adddotafter|, which +% now tests whether its argument is empty. But the coding has to allow +% for other packages to have also patched |\@adddotafter|. +% \end{quotation} +% \begin{macrocode} +\def\ACM@NRadjust#1{% + \begingroup + \expandafter\ifx\csname Sectionformat\endcsname\relax + % do nothing when \Sectionformat is unknown + \def\next{\endgroup #1}% + \else + \def\next{\endgroup + \let\realSectionformat\Sectionformat + \def\ACM@sect@format@{#1}% + \let\Sectionformat\ACM@NR@adjustedSectionformat + %% next lines added 2018-06-17 to ensure section number is styled + \let\real@adddotafter\@adddotafter + \let\@adddotafter\ACM@adddotafter + #1{}% imposes the styles, but nullifies \MakeUppercase + \let\@adddotafter\real@adddotafter + }% + \fi \next +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ACM@NR@adjustedSectionformat} +% \changes{v1.54}{2018/06/17}{Added macro} +% \begin{macrocode} +\def\ACM@NR@adjustedSectionformat#1#2{% + \realSectionformat{\ACM@sect@format{#1}}{#2}% + \let\Sectionformat\realSectionformat} +\DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@} +\def\ACM@sect@format@null#1{#1} +\let\ACM@sect@format@\ACM@sect@format@null +\AtBeginDocument{% + \expandafter\ifx\csname LTX@adddotafter\endcsname\relax + \let\LTX@adddotafter\@adddotafter + \fi +} +% \end{macrocode} +% +% \end{macro} +% \begin{macro}{\ACM@adddotafter} +% \changes{v1.54}{2018/06/17}{Added macro} +% \begin{macrocode} +\def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi} +% \end{macrocode} +% +% \end{macro} +% +% \changes{v1.54}{2018/05/27}{Deleted indent for subsubsection} +% \changes{v1.54}{2018/06/17}{Added Ross's patch for sectioning} +% \changes{v1.68}{2020/01/19}{New command for unindent paras} +% \changes{v1.69}{2020/02/02}{No dots for unindented paragraphs} +% Sectioning is different for different levels +% \begin{macrocode} +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\ACM@NRadjust\@secfont}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\ACM@NRadjust\@subsecfont}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@parfont\@adddotafter}}} +\newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@parfont}}} + +\renewcommand\part{\@startsection{part}{9}{\z@}% + {-10\p@ \@plus -4\p@ \@minus -2\p@}% + {4\p@}% + {\ACM@NRadjust\@parfont}} +% \end{macrocode} +% +% \begin{macro}{\section@raggedright} +% \changes{v1.12}{2016/05/30}{Introduced macro}% +% Special version of \cs{raggedright} compatible with +% \cs{MakeUppercase} +% \begin{macrocode} +\def\section@raggedright{\@rightskip\@flushglue + \rightskip\@rightskip + \leftskip\z@skip + \parindent\z@} +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@secfont} +% \begin{macro}{\@subsecfont} +% \begin{macro}{\@subsubsecfont} +% \begin{macro}{\@parfont} +% \changes{v1.12}{2016/05/30}{Moved to \cs{section@raggedright}}% +% \changes{v1.40}{2017/06/04}{Switched to MakeTextUppercase} +% \changes{v1.45}{2017/08/15}{Switched \cs{bfeseries}\cs{sffamily} to +% \cs{sffamily}\cs{bfseries}} +% \changes{v1.67}{2020/01/11}{Deleted redefinitions of sections} +% Fonts for sections etc. are different for different formats. +% \begin{macrocode} +\def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} +\def\@subsecfont{\sffamily\bfseries\section@raggedright} +\def\@subsubsecfont{\sffamily\itshape} +\def\@parfont{\itshape} +\setcounter{secnumdepth}{3} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % acmtog + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % sigconf + \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\bfseries\Large\section@raggedright} +\or % siggraph + \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright} +\or % sigplan + \def\@secfont{\bfseries\Large\section@raggedright} + \def\@subsecfont{\bfseries\section@raggedright} + \def\@subsubsecfont{\bfseries\section@raggedright} + \def\@parfont{\bfseries\itshape} + \def\@subparfont{\itshape} +\or % sigchi + \setcounter{secnumdepth}{1} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\or % sigchi-a + \setcounter{secnumdepth}{0} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\fi +% \end{macrocode} +% +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\@adddotafter} +% Add punctuation after a sectioning command +% \begin{macrocode} +\def\@adddotafter#1{#1\@addpunct{.}} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@addspaceafter} +% Add space after a sectioning command +% \begin{macrocode} +\def\@addspaceafter#1{#1\@addpunct{\enspace}} +% \end{macrocode} +% +% \end{macro} +% +%\subsection{TOC lists} +%\label{sec:tocs} +% +% \begin{macro}{\@dotsep} +% Related to the \cs{tableofcontents} are all the horizontal fillers. Base +% \LaTeX\ defines \cs{@dottedtocline}, which we should not disable. Yet, this +% command expects \cs{@dotsep} to be defined but leaves this to the class +% implementation. Since |amsart| does not provide this, we copy the standard +% variant from |article| here. +% \begin{macrocode} +\providecommand*\@dotsep{4.5} +% \end{macrocode} +% \end{macro} +% +% +% +%\subsection{Theorems} +%\label{sec:theorems} +% +% \begin{macro}{\@acmplainbodyfont} +% The font to typeset the body of the |acmplain| theorem style. +% \begin{macrocode} +\def\@acmplainbodyfont{\itshape} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@acmplainindent} +% The amount to indent the |acmplain| theorem style. +% \begin{macrocode} +\def\@acmplainindent{\parindent} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@acmplainheadfont} +% The font to typeset the head of the |acmplain| theorem style. +% \begin{macrocode} +\def\@acmplainheadfont{\scshape} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@acmplainnotefont} +% The font to typeset the note of the |acmplain| theorem style. +% \begin{macrocode} +\def\@acmplainnotefont{\@empty} +% \end{macrocode} +% +% \end{macro} +% +% Customization of the |acmplain| theorem style: +% \begin{macrocode} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmplainbodyfont{\itshape} + \def\@acmplainindent{\z@} + \def\@acmplainheadfont{\bfseries} + \def\@acmplainnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +% \end{macrocode} +% +% \begin{macro}{acmplain} +% The |acmplain| theorem style +% \begin{macrocode} +\newtheoremstyle{acmplain}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmplainbodyfont}% body font + {\@acmplainindent}% indent amount + {\@acmplainheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\@acmdefinitionbodyfont} +% The font to typeset the body of the |acmdefinition| theorem style. +% \begin{macrocode} +\def\@acmdefinitionbodyfont{\normalfont} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@acmdefinitionindent} +% The amount to indent the |acmdefinition| theorem style. +% \begin{macrocode} +\def\@acmdefinitionindent{\parindent} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@acmdefinitionheadfont} +% The font to typeset the head of the |acmdefinition| theorem style. +% \begin{macrocode} +\def\@acmdefinitionheadfont{\itshape} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@acmdefinitionnotefont} +% The font to typeset the note of the |acmdefinition| theorem style. +% \begin{macrocode} +\def\@acmdefinitionnotefont{\@empty} +% \end{macrocode} +% +% \end{macro} +% +% Customization of the |acmdefinition| theorem style: +% \begin{macrocode} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmdefinitionbodyfont{\normalfont} + \def\@acmdefinitionindent{\z@} + \def\@acmdefinitionheadfont{\bfseries} + \def\@acmdefinitionnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +% \end{macrocode} +% +% \begin{macro}{acmdefinition} +% The |acmdefinition| theorem style +% \begin{macrocode} +\newtheoremstyle{acmdefinition}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmdefinitionbodyfont}% body font + {\@acmdefinitionindent}% indent amount + {\@acmdefinitionheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec +% \end{macrocode} +% +% \end{macro} +% +% Make |acmplain| the default theorem style. +% \begin{macrocode} +\theoremstyle{acmplain} +% \end{macrocode} +% +% Delay defining the theorem environments until after other packages +% have been loaded. In particular, the |cleveref| package must be +% loaded before the theorem environments are defined in order to show +% the correct environment name (see +% \url{https://github.com/borisveytsman/acmart/issues/138}). The |acmthm| +% option is used to suppress the definition of any theorem +% environments. Also, to avoid obscure errors arising from these +% environment definitions conflicting with environments defined by the +% user or by user-loaded packages, we only define environments that +% have not yet been defined. +% \begin{macrocode} +\AtEndPreamble{% + \if@ACM@acmthm + \theoremstyle{acmplain} + \@ifundefined{theorem}{% + \newtheorem{theorem}{Theorem}[section] + }{} + \@ifundefined{conjecture}{% + \newtheorem{conjecture}[theorem]{Conjecture} + }{} + \@ifundefined{proposition}{% + \newtheorem{proposition}[theorem]{Proposition} + }{} + \@ifundefined{lemma}{% + \newtheorem{lemma}[theorem]{Lemma} + }{} + \@ifundefined{corollary}{% + \newtheorem{corollary}[theorem]{Corollary} + }{} + \theoremstyle{acmdefinition} + \@ifundefined{example}{% + \newtheorem{example}[theorem]{Example} + }{} + \@ifundefined{definition}{% + \newtheorem{definition}[theorem]{Definition} + }{} + \fi + \theoremstyle{acmplain} +} +% \end{macrocode} +% +% +% \begin{macro}{\@proofnamefont} +% The font to typeset the proof name. +% \begin{macrocode} +\def\@proofnamefont{\scshape} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\@proofindent} +% Whether or not to indent proofs. +% \begin{macrocode} +\def\@proofindent{\indent} +% \end{macrocode} +% +% \end{macro} +% +% Customization of the proof environment. +% \begin{macrocode} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@proofnamefont{\itshape} + \def\@proofindent{\noindent} +\or % sigchi +\or % sigchi-a +\fi +% \end{macrocode} +% +% \begin{macro}{proof} +% We want some customization of the proof environment. +% \begin{macrocode} +\renewenvironment{proof}[1][\proofname]{\par + \pushQED{\qed}% + \normalfont \topsep6\p@\@plus6\p@\relax + \trivlist + \item[\@proofindent\hskip\labelsep + {\@proofnamefont #1\@addpunct{.}}]\ignorespaces +}{% + \popQED\endtrivlist\@endpefalse +} +% \end{macrocode} +% +% \end{macro} +% +% +% +%\subsection{Balancing columns} +%\label{sec:balancing} +% +% We need balancing only if the user did not disable it, and we use a +% two column format +% \begin{macrocode} +\AtEndPreamble{% + \if@ACM@balance + \ifcase\ACM@format@nr + \relax % manuscript + \global\@ACM@balancefalse + \or % acmsmall + \global\@ACM@balancefalse + \or % acmlarge + \global\@ACM@balancefalse + \or % acmtog + \RequirePackage{balance}% + \or % sigconf + \RequirePackage{balance}% + \or % siggraph + \RequirePackage{balance}% + \or % sigplan + \RequirePackage{balance}% + \or % sigchi + \RequirePackage{balance}% + \or % sigchi-a + \global\@ACM@balancefalse + \fi + \fi +} +\AtEndDocument{% + \if@ACM@balance + \if@twocolumn + \balance + \fi\fi} +% \end{macrocode} +% +% +%\subsection{Acknowledgments} +%\label{sec:acks} +% +% \begin{macro}{\acksname} +% \changes{v1.56}{2018/10/16}{Added macro (Philip Quinn)} +% \begin{macrocode} +\newcommand\acksname{Acknowledgments} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\acks} +% \changes{v1.19}{2016/07/28}{Include 'Acknowledgements' in PDF bookmarks +% (Matthew Fluet)} +% \changes{v1.15}{2016/07/05}{Added macro} +% This is a |comment|-like structure +% \begin{macrocode} +\specialcomment{acks}{% + \begingroup + \section*{\acksname} + \phantomsection\addcontentsline{toc}{section}{\acksname} +}{% + \endgroup +} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\grantsponsor} +% \changes{v1.15}{2016/07/05}{Added macro} +% \changes{v1.17}{2016/07/10}{Renamed} +% We just typeset the name of the sponsor +% \begin{macrocode} +\def\grantsponsor#1#2#3{#2} +% \end{macrocode} +% +% \end{macro} +% +% \begin{macro}{\grantnum} +% \changes{v1.15}{2016/07/05}{Added macro} +% \changes{v1.17}{2016/07/10}{Added url} +% \begin{macrocode} +\newcommand\grantnum[3][]{#3% + \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi} +% \end{macrocode} +% +% \end{macro} +% +% \subsection{Conditional typesetting} +% \label{sec:conditional} +% +% We use the |comment| package for conditional typesetting: +% \begin{macrocode} +\AtEndPreamble{% +\if@ACM@screen + \includecomment{screenonly} + \excludecomment{printonly} +\else + \excludecomment{screenonly} + \includecomment{printonly} +\fi +\if@ACM@anonymous + \excludecomment{anonsuppress} + \excludecomment{acks} +\else + \includecomment{anonsuppress} +\fi} +% \end{macrocode} +% +% +% +%\subsection{Additional bibliography commands} +%\label{sec:bibliography} +% +% \begin{macro}{\showeprint} +% \changes{v1.21}{2016/09/04}{Added macro} +% The command \cs{showeprint} has two arguments: the (optional) +% prefix and the eprint number. Right now the only prefix we understand is +% the (lowercase) word `arxiv'. +% \begin{macrocode} +\newcommand\showeprint[2][arxiv]{% + \def\@tempa{#1}% + \ifx\@tempa\@empty\def\@tempa{arxiv}\fi + \def\@tempb{arxiv}% + \ifx\@tempa\@tempb + arXiv:\href{https://arxiv.org/abs/#2}{#2}\else arXiv:#2% + \fi} +% \end{macrocode} +% +% +% \end{macro} +% +%\subsection{End of Class} +%\label{end} +% +% \begin{macro}{\vspace} +% \changes{v1.57}{2018/12/16}{Added warning} +% \changes{v1.58}{2019/01/23}{Preserved old versions as +% \cs{@vspace@orig} and \cs{@vspace@orig}} +% \changes{1.69}{2020/02/02}{Added the changed command to avoid grouping} +% We do not disable \cs{vspace}, but add warning to it +% \begin{macrocode} +\let\@vspace@orig=\@vspace +\let\@vspacer@orig=\@vspacer +\apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should + only be used to provide space above/below surrounding + objects}}{}{} +\apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should + only be used to provide space above/below surrounding + objects}}{}{} +\let\@vspace@acm=\@vspace +\let\@vspacer@acm=\@vspacer +% \end{macrocode} +% +% \end{macro} +% +% +% \begin{macro}{\ACM@origbaselinestretch} +% \changes{v1.57}{2018/12/16}{Added check whether the user changed +% \cs{baselinestretch}} +% We produce an error if the user tries to change \cs{baselinestretch} +% \begin{macrocode} +\let\ACM@origbaselinestretch\baselinestretch +\AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else + \ClassError{\@classname}{An attempt to redefine + \string\baselinestretch\space detected. Please do not do this for + ACM submissions!}\fi} +% \end{macrocode} +% +% \end{macro} +% +% \changes{v1.30}{2017/02/10}{Added \cs{frenchspacing}} +% \begin{macrocode} +\normalsize\normalfont\frenchspacing +%</class> +% \end{macrocode} +% +%\Finale +%\clearpage +% +%\PrintChanges +%\clearpage +%\PrintIndex +% +\endinput diff --git a/docs/acmart.ins b/docs/acmart.ins new file mode 100644 index 0000000000000000000000000000000000000000..d17dc066fd7f86023b4ea0e33aa75aef95b33857 --- /dev/null +++ b/docs/acmart.ins @@ -0,0 +1,30 @@ +% +% Doctrip file for acmart +% This file is in public domain +% $Id: acmart.ins,v 1.1 2015/11/23 22:42:55 boris Exp $ +% +\def\batchfile{acmart.ins} +\input docstrip +\keepsilent +\showprogress + + +\askforoverwritefalse + +\generate{% + \file{acmart.cls}{\from{acmart.dtx}{class}} +} + +\obeyspaces +\Msg{*****************************************************}% +\Msg{* Congratulations! You successfully generated the *}% +\Msg{* acmart package. *}% +\Msg{* *}% +\Msg{* Please move the file acmart.cls to where LaTeX *}% +\Msg{* files are stored in your system. The manual is *}% +\Msg{* acmart.pdf. *}% +\Msg{* *}% +\Msg{* The package is released under LPPL *}% +\Msg{* *}% +\Msg{* Happy TeXing! *}% +\Msg{*****************************************************}% \ No newline at end of file diff --git a/docs/acmart.pdf b/docs/acmart.pdf new file mode 100644 index 0000000000000000000000000000000000000000..cc5e115836c6e397e12bbea0f975a7d6f5fa61c6 Binary files /dev/null and b/docs/acmart.pdf differ diff --git a/docs/comment.cut b/docs/comment.cut new file mode 100644 index 0000000000000000000000000000000000000000..5b2dff9f25353b62ffade8be6aed59a3b6bf7131 --- /dev/null +++ b/docs/comment.cut @@ -0,0 +1 @@ +To Robert, for the bagels and explaining CMYK and color spaces. diff --git a/docs/necessary/acmart.cls b/docs/necessary/acmart.cls new file mode 100644 index 0000000000000000000000000000000000000000..49c56b215757876a8a5168d944019a12ec6208a1 --- /dev/null +++ b/docs/necessary/acmart.cls @@ -0,0 +1,3010 @@ +%% +%% This is file `acmart.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% acmart.dtx (with options: `class') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from acmart.cls. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file acmart.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% \CharacterTable +%% {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 +%% 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 +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~} +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{acmart} +[2020/11/15 v1.75 Typesetting articles for the Association for Computing Machinery] +\def\@classname{acmart} +\InputIfFileExists{acmart-preload-hook.tex}{% + \ClassWarning{\@classname}{% + I am loading acmart-preload-hook.tex. You are fully responsible + for any problems from now on.}}{} +\RequirePackage{xkeyval} +\RequirePackage{xstring} +\RequirePackage{iftex} +\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{% + manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi, sigchi-a}[manuscript]{}{% + \ClassError{\@classname}{The option format must be manuscript, + acmsmall, acmlarge, acmtog, sigconf, siggraph, + sigplan, sigchi or sigchi-a}} +\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}} +\@DeclareACMFormat{manuscript} +\@DeclareACMFormat{acmsmall} +\@DeclareACMFormat{acmlarge} +\@DeclareACMFormat{acmtog} +\@DeclareACMFormat{sigconf} +\@DeclareACMFormat{siggraph} +\@DeclareACMFormat{sigplan} +\@DeclareACMFormat{sigchi} +\@DeclareACMFormat{sigchi-a} +\ExecuteOptionsX{format} +\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{% + \if@ACM@screen + \PackageInfo{\@classname}{Using screen mode}% + \else + \PackageInfo{\@classname}{Not using screen mode}% + \fi}{\PackageError{\@classname}{The option screen can be either true or + false}} +\ExecuteOptionsX{screen=false} +\define@boolkey+{acmart.cls}[@ACM@]{urlbreakonhyphens}[true]{% + \if@ACM@urlbreakonhyphens + \PackageInfo{\@classname}{Using breaking urls on hyphens}% + \else + \PackageInfo{\@classname}{Not breaking urls on hyphens}% + \fi}{\PackageError{\@classname}{The option urlbreakonhyphens can be either true or + false}} +\ExecuteOptionsX{urlbreakonhyphens=true} +\define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{% + \if@ACM@acmthm + \PackageInfo{\@classname}{Requiring acmthm}% + \else + \PackageInfo{\@classname}{Suppressing acmthm}% + \fi}{\PackageError{\@classname}{The option acmthm can be either true or + false}} +\ExecuteOptionsX{acmthm=true} +\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{% + \if@ACM@review + \PackageInfo{\@classname}{Using review mode}% + \AtBeginDocument{\@ACM@printfoliostrue}% + \else + \PackageInfo{\@classname}{Not using review mode}% + \fi}{\PackageError{\@classname}{The option review can be either true or + false}} +\ExecuteOptionsX{review=false} +\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{% + \if@ACM@authorversion + \PackageInfo{\@classname}{Using authorversion mode}% + \else + \PackageInfo{\@classname}{Not using authorversion mode}% + \fi}{\PackageError{\@classname}{The option authorversion can be either true or + false}} +\ExecuteOptionsX{authorversion=false} +\define@boolkey+{acmart.cls}[@ACM@]{nonacm}[true]{% + \if@ACM@nonacm + \PackageInfo{\@classname}{Using nonacm mode}% + \AtBeginDocument{\@ACM@printacmreffalse}% + % in 'nonacm' mode we disable the "ACM Reference Format" + % printing by default, but this can be re-enabled by the + % user using \settopmatter{printacmref=true} + \else + \PackageInfo{\@classname}{Not using nonacm mode}% + \fi}{\PackageError{\@classname}{The option nonacm can be either true or + false}} +\ExecuteOptionsX{nonacm=false} +\define@boolkey+{acmart.cls}[@ACM@]{balance}[true]{}{% + \PackageError{\@classname}{The option balance can be either true or + false}} +\ExecuteOptionsX{balance} +\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{% + \if@ACM@natbib + \PackageInfo{\@classname}{Explicitly selecting natbib mode}% + \else + \PackageInfo{\@classname}{Explicitly deselecting natbib mode}% + \fi}{\PackageError{\@classname}{The option natbib can be either true or + false}} +\ExecuteOptionsX{natbib=true} +\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{% + \if@ACM@anonymous + \PackageInfo{\@classname}{Using anonymous mode}% + \else + \PackageInfo{\@classname}{Not using anonymous mode}% + \fi}{\PackageError{\@classname}{The option anonymous can be either true or + false}} +\ExecuteOptionsX{anonymous=false} +\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{% + \if@ACM@timestamp + \PackageInfo{\@classname}{Using timestamp mode}% + \else + \PackageInfo{\@classname}{Not using timestamp mode}% + \fi}{\PackageError{\@classname}{The option timestamp can be either true or + false}} +\ExecuteOptionsX{timestamp=false} +\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{% + \if@ACM@authordraft + \PackageInfo{\@classname}{Using authordraft mode}% + \@ACM@timestamptrue + \@ACM@reviewtrue + \else + \PackageInfo{\@classname}{Not using authordraft mode}% + \fi}{\PackageError{\@classname}{The option authordraft can be either true or + false}} +\ExecuteOptionsX{authordraft=false} +\def\ACM@fontsize{} +\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}} +\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}} +\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}} +\ProcessOptionsX +\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr} +\newif\if@ACM@manuscript +\newif\if@ACM@journal +\newif\if@ACM@journal@bibstrip +\newif\if@ACM@sigchiamode +\ifnum\ACM@format@nr=5\relax % siggraph +\ClassWarning{\@classname}{% + The format siggraph is now obsolete.\MessageBreak + I am switching to sigconf.} + \setkeys{acmart.cls}{format=sigconf} +\fi +\ifnum\ACM@format@nr=7\relax % sigchi +\ClassWarning{\@classname}{% + The format sigchi is now obsolete.\MessageBreak + I am switching to sigconf.} + \setkeys{acmart.cls}{format=sigconf} +\fi +\ifnum\ACM@format@nr=8\relax % sigchi +\ClassWarning{\@classname}{% + ACM SIGCHI has retired the SIGCHI-A template\MessageBreak + effective immediately. ACM is keeping this template\MessageBreak + option available to authors who are working on legacy\MessageBreak + documents only. ACM will not, under any circumstances,\MessageBreak + accept documents in this format for publication and\MessageBreak + will not offer technical support to the authors who use\MessageBreak + this template.\MessageBreak + ACM SIGCHI is directing Conference leaders and\MessageBreak + authors to publish their articles using the SIGCONF\MessageBreak + template call.} +\fi +\ifnum\ACM@format@nr=0\relax + \@ACM@manuscripttrue +\else + \@ACM@manuscriptfalse +\fi +\@ACM@sigchiamodefalse +\ifcase\ACM@format@nr +\relax % manuscript + \@ACM@journaltrue +\or % acmsmall + \@ACM@journaltrue +\or % acmlarge + \@ACM@journaltrue +\or % acmtog + \@ACM@journaltrue +\or % sigconf + \@ACM@journalfalse +\or % siggraph + \@ACM@journalfalse + \or % sigplan + \@ACM@journalfalse + \or % sigchi + \@ACM@journalfalse +\or % sigchi-a + \@ACM@journalfalse + \@ACM@sigchiamodetrue +\fi +\if@ACM@journal + \@ACM@journal@bibstriptrue +\else + \@ACM@journal@bibstripfalse +\fi +\ifx\ACM@fontsize\@empty + \ifcase\ACM@format@nr + \relax % manuscript + \def\ACM@fontsize{9pt}% + \or % acmsmall + \def\ACM@fontsize{10pt}% + \or % acmlarge + \def\ACM@fontsize{10pt}% + \or % acmtog + \def\ACM@fontsize{9pt}% + \or % sigconf + \def\ACM@fontsize{9pt}% + \or % siggraph + \def\ACM@fontsize{9pt}% + \or % sigplan + \def\ACM@fontsize{10pt}% + \or % sigchi + \def\ACM@fontsize{9pt}% + \or % sigchi-a + \def\ACM@fontsize{10pt}% + \fi +\fi +\ClassInfo{\@classname}{Using fontsize \ACM@fontsize} +\LoadClass[\ACM@fontsize, reqno]{amsart} +\RequirePackage{microtype} +\RequirePackage{etoolbox} +\RequirePackage{booktabs} +\RequirePackage{refcount} +\RequirePackage{totpages} +\RequirePackage{environ} +\if@ACM@manuscript +\RequirePackage{setspace} +\onehalfspacing +\fi +\RequirePackage{textcase} +\if@ACM@natbib + \RequirePackage{natbib} + \renewcommand{\bibsection}{% + \section*{\refname}% + \phantomsection\addcontentsline{toc}{section}{\refname}% + } + \renewcommand{\bibfont}{\bibliofont} + \renewcommand\setcitestyle[1]{ + \@for\@tempa:=#1\do + {\def\@tempb{round}\ifx\@tempa\@tempb + \renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi + \def\@tempb{square}\ifx\@tempa\@tempb + \renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi + \def\@tempb{angle}\ifx\@tempa\@tempb + \renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi + \def\@tempb{curly}\ifx\@tempa\@tempb + \renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi + \def\@tempb{semicolon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{colon}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{;}\fi + \def\@tempb{comma}\ifx\@tempa\@tempb + \renewcommand\NAT@sep{,}\fi + \def\@tempb{authoryear}\ifx\@tempa\@tempb + \NAT@numbersfalse\fi + \def\@tempb{numbers}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@superfalse\fi + \def\@tempb{super}\ifx\@tempa\@tempb + \NAT@numberstrue\NAT@supertrue\fi + \def\@tempb{nobibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@gobble\fi + \def\@tempb{bibstyle}\ifx\@tempa\@tempb + \let\bibstyle=\@citestyle\fi + \def\@tempb{sort}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\fi + \def\@tempb{nosort}\ifx\@tempa\@tempb + \def\NAT@sort{\z@}\fi + \def\@tempb{compress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\@ne}\fi + \def\@tempb{nocompress}\ifx\@tempa\@tempb + \def\NAT@cmprs{\z@}\fi + \def\@tempb{sort&compress}\ifx\@tempa\@tempb + \def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi + \def\@tempb{mcite}\ifx\@tempa\@tempb + \let\NAT@merge\@ne\fi + \def\@tempb{merge}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi + \def\@tempb{elide}\ifx\@tempa\@tempb + \@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi + \def\@tempb{longnamesfirst}\ifx\@tempa\@tempb + \NAT@longnamestrue\fi + \def\@tempb{nonamebreak}\ifx\@tempa\@tempb + \def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi + \expandafter\NAT@find@eq\@tempa=\relax\@nil + \if\@tempc\relax\else + \expandafter\NAT@rem@eq\@tempc + \def\@tempb{open}\ifx\@tempa\@tempb + \xdef\NAT@open{\@tempc}\fi + \def\@tempb{close}\ifx\@tempa\@tempb + \xdef\NAT@close{\@tempc}\fi + \def\@tempb{aysep}\ifx\@tempa\@tempb + \xdef\NAT@aysep{\@tempc}\fi + \def\@tempb{yysep}\ifx\@tempa\@tempb + \xdef\NAT@yrsep{\@tempc}\fi + \def\@tempb{notesep}\ifx\@tempa\@tempb + \xdef\NAT@cmt{\@tempc}\fi + \def\@tempb{citesep}\ifx\@tempa\@tempb + \xdef\NAT@sep{\@tempc}\fi + \fi + }% + \NAT@@setcites + } + \renewcommand\citestyle[1]{% + \ifcsname bibstyle@#1\endcsname% + \csname bibstyle@#1\endcsname\let\bibstyle\@gobble% + \else% + \@latex@error{Undefined `#1' citestyle}% + \fi + }% +\fi +\newcommand{\bibstyle@acmauthoryear}{% + \setcitestyle{% + authoryear,% + open={[},close={]},citesep={;},% + aysep={},yysep={,},% + notesep={, }}} +\newcommand{\bibstyle@acmnumeric}{% + \setcitestyle{% + numbers,sort&compress,% + open={[},close={]},citesep={,},% + notesep={, }}} +\if@ACM@natbib +\citestyle{acmnumeric} +\fi +\def\@startsection#1#2#3#4#5#6{% + \if@noskipsec \leavevmode \fi + \par + \@tempskipa #4\relax + \@afterindenttrue + \ifdim \@tempskipa <\z@ + \@tempskipa -\@tempskipa \@afterindentfalse + \fi + \if@nobreak + \everypar{}% + \else + \addpenalty\@secpenalty\addvspace\@tempskipa + \fi + \@ifstar + {\@ssect{#3}{#4}{#5}{#6}}% + {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}} +\def\@sect#1#2#3#4#5#6[#7]#8{% + \edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}% + \ifnum #2>\c@secnumdepth + \let\@svsec\@empty + \else + \refstepcounter{#1}% + \protected@edef\@svsec{\@seccntformat{#1}\relax}% + \fi + \@tempskipa #5\relax + \ifdim \@tempskipa>\z@ + \begingroup + #6{% + \@hangfrom{\hskip #3\relax\@svsec}% + \interlinepenalty \@M #8\@@par}% + \endgroup + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}% + \else + \def\@svsechd{% + #6{\hskip #3\relax + \@svsec #8}% + \csname #1mark\endcsname{#7}% + \ifnum #2>\c@secnumdepth \else + \@tochangmeasure{\csname the#1\endcsname\space}% + \fi + \addcontentsline{toc}{#1}{% + \ifnum #2>\c@secnumdepth \else + \protect\numberline{\csname the#1\endcsname}% + \fi + #7}}% + \fi + \@xsect{#5}} +\def\@xsect#1{% + \@tempskipa #1\relax + \ifdim \@tempskipa>\z@ + \par \nobreak + \vskip \@tempskipa + \@afterheading + \else + \@nobreakfalse + \global\@noskipsectrue + \everypar{% + \if@noskipsec + \global\@noskipsecfalse + {\setbox\z@\lastbox}% + \clubpenalty\@M + \begingroup \@svsechd \endgroup + \unskip + \@tempskipa #1\relax + \hskip -\@tempskipa + \else + \clubpenalty \@clubpenalty + \everypar{}% + \fi}% + \fi + \ignorespaces} +\def\@seccntformat#1{\csname the#1\endcsname\quad} +\def\@ssect#1#2#3#4#5{% + \@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup + #4{% + \@hangfrom{\hskip #1}% + \interlinepenalty \@M #5\@@par}% + \endgroup + \else + \def\@svsechd{#4{\hskip #1\relax #5}}% + \fi + \@xsect{#3}} +\def\@starttoc#1#2{\begingroup\makeatletter + \setTrue{#1}% + \par\removelastskip\vskip\z@skip + \@startsection{section}\@M\z@{\linespacing\@plus\linespacing}% + {.5\linespacing}{\centering\contentsnamefont}{#2}% + \@input{\jobname.#1}% + \if@filesw + \@xp\newwrite\csname tf@#1\endcsname + \immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax + \fi + \global\@nobreakfalse \endgroup + \addvspace{32\p@\@plus14\p@}% +} +\def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}} +\def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}} +\def\l@subsubsection{\@tocline{3}{0pt}{1pc}{5pc}{}} +\def\@makefntext{\noindent\@makefnmark} +\if@ACM@sigchiamode +\long\def\@footnotetext#1{\marginpar{% + \reset@font\small + \interlinepenalty\interfootnotelinepenalty + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}}% +\fi +\long\def\@mpfootnotetext#1{% + \global\setbox\@mpfootins\vbox{% + \unvbox\@mpfootins + \reset@font\footnotesize + \hsize\columnwidth + \@parboxrestore + \protected@edef\@currentlabel + {\csname p@mpfootnote\endcsname\@thefnmark}% + \color@begingroup\centering + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}} +\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}} +\let\@footnotemark@nolink\@footnotemark +\let\@footnotetext@nolink\@footnotetext +\RequirePackage[bookmarksnumbered,unicode]{hyperref} +\pdfstringdefDisableCommands{% + \def\addtocounter#1#2{}% + \def\unskip{}% + \def\textbullet{- }% + \def\textrightarrow{ -> }% + \def\footnotemark{}% +} +\urlstyle{rm} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \urlstyle{sf} +\or % sigchi +\or % sigchi-a + \urlstyle{sf} +\fi +\AtEndPreamble{% + \if@ACM@urlbreakonhyphens + \def\do@url@hyp{\do\-}% + \fi + \if@ACM@screen + \hypersetup{colorlinks, + linkcolor=ACMPurple, + citecolor=ACMPurple, + urlcolor=ACMDarkBlue, + filecolor=ACMDarkBlue} + \else + \hypersetup{hidelinks} + \fi + \hypersetup{pdflang={en}, + pdfdisplaydoctitle}} +\RequirePackage{hyperxmp} +\if@ACM@natbib + \let\citeN\cite + \let\cite\citep + \let\citeANP\citeauthor + \let\citeNN\citeyearpar + \let\citeyearNP\citeyear + \let\citeNP\citealt + \DeclareRobustCommand\citeA + {\begingroup\NAT@swafalse + \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}% + \providecommand\newblock{}% +\else + \AtBeginDocument{% + \let\shortcite\cite% + \providecommand\citename[1]{#1}} +\fi +\newcommand\shortcite[2][]{% + \ifNAT@numbers\cite[#1]{#2}\else\citeyearpar[#1]{#2}\fi} +\def\bibliographystyle#1{% + \ifx\@begindocumenthook\@undefined\else + \expandafter\AtBeginDocument + \fi + {\if@filesw + \immediate\write\@auxout{\string\bibstyle{#1}}% + \fi}} +\RequirePackage{graphicx} +\RequirePackage[prologue]{xcolor} +\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1} +\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0} +\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01} +\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0} +\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0} +\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19} +\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15} +\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21} +\if@ACM@authordraft + \RequirePackage{draftwatermark} + \SetWatermarkFontSize{0.5in} + \SetWatermarkColor[gray]{.9} + \SetWatermarkText{\parbox{12em}{\centering + Unpublished working draft.\\ + Not for distribution.}} +\else + \if@ACM@sigchiamode + \if@ACM@nonacm\else + \RequirePackage{draftwatermark} + \SetWatermarkFontSize{0.5in} + \SetWatermarkColor[gray]{.9} + \SetWatermarkText{\parbox{12em}{\centering + Legacy document. \\ + Not for publication in an ACM venue}} + \fi + \fi +\fi +\RequirePackage{geometry} +\ifcase\ACM@format@nr +\relax % manuscript + \geometry{letterpaper,head=13pt, + marginparwidth=6pc,heightrounded}% +\or % acmsmall + \geometry{twoside=true, + includeheadfoot, head=13pt, foot=2pc, + paperwidth=6.75in, paperheight=10in, + top=58pt, bottom=44pt, inner=46pt, outer=46pt, + marginparwidth=2pc,heightrounded + }% +\or % acmlarge + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, + top=78pt, bottom=114pt, inner=81pt, outer=81pt, + marginparwidth=4pc,heightrounded + }% +\or % acmtog + \geometry{twoside=true, head=13pt, foot=2pc, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=24pt, + top=52pt, bottom=75pt, inner=52pt, outer=52pt, + marginparwidth=2pc,heightrounded + }% +\or % sigconf + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % siggraph + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=57pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigplan + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot=false, columnsep=2pc, + top=1in, bottom=1in, inner=0.75in, outer=0.75in, + marginparwidth=2pc,heightrounded + }% +\or % sigchi + \geometry{twoside=true, head=13pt, + paperwidth=8.5in, paperheight=11in, + includeheadfoot, columnsep=2pc, + top=66pt, bottom=73pt, inner=54pt, outer=54pt, + marginparwidth=2pc,heightrounded + }% +\or % sigchi-a + \geometry{twoside=false, head=13pt, + paperwidth=11in, paperheight=8.5in, + includeheadfoot, marginparsep=72pt, + marginparwidth=170pt, columnsep=20pt, + top=72pt, bottom=72pt, left=314pt, right=72pt + }% + \@mparswitchfalse + \reversemarginpar +\fi +\setlength\parindent{10\p@} +\setlength\parskip{\z@} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog + \setlength\parindent{9\p@}% +\or % sigconf +\or % siggraph +\or % sigplan +\or % sigchi +\or % sigchi-a +\fi +\setlength\normalparindent{\parindent} +\def\copyrightpermissionfootnoterule{} +\RequirePackage{manyfoot} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{authorsaddresses} +\SelectFootnoteRule[2]{copyrightpermission} +\DeclareNewFootnote{copyrightpermission} +\def\footnoterule{\kern-3\p@ + \hrule \@width 4pc \kern 2.6\p@} +\def\endminipage{% + \par + \unskip + \ifvoid\@mpfootins\else + \vskip\skip\@mpfootins + \normalcolor + \unvbox\@mpfootins + \fi + \@minipagefalse + \color@endgroup + \egroup + \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}} +\def\@textbottom{\vskip \z@ \@plus 1pt} +\let\@texttop\relax +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog + \flushbottom +\or % sigconf + \flushbottom +\or % siggraph + \flushbottom +\or % sigplan + \flushbottom +\or % sigchi + \flushbottom +\or % sigchi-a +\fi +\ifPDFTeX +\input{glyphtounicode} +\pdfglyphtounicode{f_f}{FB00} +\pdfglyphtounicode{f_f_i}{FB03} +\pdfglyphtounicode{f_f_l}{FB04} +\pdfglyphtounicode{f_i}{FB01} +\pdfglyphtounicode{t_t}{0074 0074} +\pdfglyphtounicode{f_t}{0066 0074} +\pdfglyphtounicode{T_h}{0054 0068} +\pdfgentounicode=1 +\RequirePackage{cmap} +\fi +\newif\if@ACM@newfonts +\@ACM@newfontstrue +\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not + have the libertine package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not + have the inconsolata (zi4.sty) package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not + have the newtxmath package installed. Please upgrade your + TeX}\@ACM@newfontsfalse} +\if@ACM@newfonts + \RequirePackage[T1]{fontenc} + % Note that the order in which packages are loaded matters, + % and the correct order depends on the LaTeX engine used. + % See https://github.com/borisveytsman/acmart/issues/402 + % and https://github.com/borisveytsman/acmart/issues/410 + \ifxetex + \RequirePackage[libertine]{newtxmath} + \RequirePackage[tt=false]{libertine} + \setmonofont[StylisticSet=3]{inconsolata} + \else + \ifluatex + \RequirePackage[libertine]{newtxmath} + \RequirePackage[tt=false]{libertine} + \setmonofont[StylisticSet=3]{inconsolata} + \else + \RequirePackage[tt=false, type1=true]{libertine} + \RequirePackage[varqu]{zi4} + \RequirePackage[libertine]{newtxmath} + \fi + \fi +\fi +\let\liningnums\@undefined +\AtEndPreamble{% + \DeclareTextFontCommand{\liningnums}{\libertineLF}} +\if@ACM@sigchiamode + \renewcommand{\familydefault}{\sfdefault} +\fi +\newif\if@Description@present +\@Description@presenttrue +\newif\if@undescribed@images +\@undescribed@imagesfalse +\newcommand\Description[2][]{\global\@Description@presenttrue\ignorespaces} +\AtEndDocument{\if@undescribed@images + \ClassWarningNoLine{\@classname}{Some images may lack descriptions}\fi} +\AtBeginEnvironment{figure}{\@Description@presentfalse + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{figure*}{\@Description@presentfalse + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtEndEnvironment{figure}{\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description}\fi} +\AtEndEnvironment{figure*}{\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description}\fi} +\AtBeginEnvironment{table}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{table*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{algorithm}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{algorithm*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{lstlisting}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{lstlisting*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{minted}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{minted*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{listing}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} +\AtBeginEnvironment{listing*}{\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig} + +\RequirePackage{caption, float} +\captionsetup[table]{position=top} +\if@ACM@journal + \captionsetup{labelfont={sf, small}, + textfont={sf, small}, margin=\z@} + \captionsetup[figure]{name={Fig.}} +\else + \captionsetup{labelfont={bf}, + textfont={bf}, labelsep=colon, margin=\z@} + \ifcase\ACM@format@nr + \relax % manuscript + \or % acmsmall + \or % acmlarge + \or % acmtog + \or % sigconf + \or % siggraph + \captionsetup{textfont={it}} + \or % sigplan + \captionsetup{labelfont={bf}, + textfont={normalfont}, labelsep=period, margin=\z@} + \or % sigchi + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \captionsetup[table]{labelfont={bf, small}, + textfont={bf, small}} + \or % sigchi-a + \captionsetup[figure]{labelfont={bf, small}, + textfont={bf, small}} + \captionsetup[table]{labelfont={bf, small}, + textfont={bf, small}} + \fi +\fi +\newfloat{sidebar}{}{sbar} +\floatname{sidebar}{Sidebar} +\renewenvironment{sidebar}{\Collect@Body\@sidebar}{} +\long\def\@sidebar#1{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\captionsetup{type=sidebar}% + \marginpar{\small#1}\egroup} +\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{} +\long\def\@marginfigure#1{\bgroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \captionsetup{type=figure}% + \marginpar{\@Description@presentfalse\centering + \small#1\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without description} + \fi}% + \egroup} +\newenvironment{margintable}{\Collect@Body\@margintable}{} +\long\def\@margintable#1{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\captionsetup{type=table}% + \marginpar{\centering\small#1}\egroup} +\newdimen\fulltextwidth +\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep) +\if@ACM@sigchiamode +\def\@dblfloat{\bgroup\let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig\columnwidth=\fulltextwidth + \let\@endfloatbox\@endwidefloatbox + \def\@fpsadddefault{\def\@fps{tp}}% + \@float} +\fi +\if@ACM@sigchiamode +\def\end@dblfloat{% + \end@float\egroup} +\fi +\def\@endwidefloatbox{% + \par\vskip\z@skip + \@minipagefalse + \outer@nobreak + \egroup + \color@endbox + \global\setbox\@currbox=\vbox{\moveleft + \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}% + \wd\@currbox=\textwidth +} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan +\def\labelenumi{\theenumi.} +\def\labelenumii{\theenumii.} +\def\labelenumiii{\theenumiii.} +\def\labelenumiv{\theenumiv.} +\or % sigchi +\or % sigchi-a +\fi +\newdimen\@ACM@labelwidth +\AtBeginDocument{% + \setlength\labelsep{4pt} + \setlength{\@ACM@labelwidth}{6.5pt} + + %% First-level list: when beginning after the first line of an + %% indented paragraph or ending before an indented paragraph, labels + %% should not hang to the left of the preceding/following text. + \setlength\leftmargini{\z@} + \addtolength\leftmargini{\parindent} + \addtolength\leftmargini{2\labelsep} + \addtolength\leftmargini{\@ACM@labelwidth} + + %% Second-level and higher lists. + \setlength\leftmarginii{\z@} + \addtolength\leftmarginii{0.5\labelsep} + \addtolength\leftmarginii{\@ACM@labelwidth} + \setlength\leftmarginiii{\leftmarginii} + \setlength\leftmarginiv{\leftmarginiii} + \setlength\leftmarginv{\leftmarginiv} + \setlength\leftmarginvi{\leftmarginv} + \@listi} +\newskip\listisep +\listisep\smallskipamount +\def\@listI{\leftmargin\leftmargini + \labelwidth\leftmargini \advance\labelwidth-\labelsep + \listparindent\z@ + \topsep\listisep} +\let\@listi\@listI +\def\@listii{\leftmargin\leftmarginii + \labelwidth\leftmarginii \advance\labelwidth-\labelsep + \topsep\z@skip} +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii \advance\labelwidth-\labelsep} +\def\@listiv{\leftmargin\leftmarginiv + \labelwidth\leftmarginiv \advance\labelwidth-\labelsep} +\def\@listv{\leftmargin\leftmarginv + \labelwidth\leftmarginv \advance\labelwidth-\labelsep} +\def\@listvi{\leftmargin\leftmarginvi + \labelwidth\leftmarginvi \advance\labelwidth-\labelsep} +\renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1} +\renewenvironment{description}{\list{}{% + \labelwidth\@ACM@labelwidth + \let\makelabel\descriptionlabel}% +}{ + \endlist +} +\let\enddescription=\endlist % for efficiency +\newif\if@ACM@maketitle@typeset +\@ACM@maketitle@typesetfalse +\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{% + CIE,% + CSUR,% + DGOV,% + DTRAP,% + HEALTH,% + IMWUT,% + JACM,% + JDIQ,% + JEA,% + JERIC,% + JETC,% + JOCCH,% + PACMCGIT,% + PACMHCI,% + PACMPL,% + POMACS,% + TAAS,% + TACCESS,% + TACO,% + TALG,% + TALLIP,% + TAP,% + TCPS,% + TDS,% + TEAC,% + TECS,% + TELO,% + THRI,% + TIIS,% + TIOT,% + TISSEC,% + TIST,% + TKDD,% + TMIS,% + TOCE,% + TOCHI,% + TOCL,% + TOCS,% + TOCT,% + TODAES,% + TODS,% + TOG,% + TOIS,% + TOIT,% + TOMACS,% + TOMM,% + TOMPECS,% + TOMS,% + TOPC,% + TOPS,% + TOPLAS,% + TOS,% + TOSEM,% + TOSN,% + TQC,% + TRETS,% + TSAS,% + TSC,% + TSLP,% + TWEB,% + FACMP% +}{% +\ifcase\@journalCode@nr +\relax % CIE + \def\@journalName{ACM Computers in Entertainment}% + \def\@journalNameShort{ACM Comput. Entertain.}% + \def\@permissionCodeOne{1544-3574}% +\or % CSUR + \def\@journalName{ACM Computing Surveys}% + \def\@journalNameShort{ACM Comput. Surv.}% + \def\@permissionCodeOne{0360-0300}% +\or % DGOV + \def\@journalName{Digital Government: Research and Practice}% + \def\@journalNameShort{Digit. Gov. Res. Pract.}% + \def\@permissionCodeOne{2639-0175}% +\or % DTRAP + \def\@journalName{Digital Threats: Research and Practice}% + \def\@journalNameShort{Digit. Threat. Res. Pract.}% + \def\@permissionCodeOne{2576-5337}% +\or % HEALTH + \def\@journalName{ACM Transactions on Computing for Healthcare}% + \def\@journalNameShort{ACM Trans. Comput. Healthcare}% + \def\@permissionCodeOne{2637-8051}% +\or % IMWUT + \def\@journalName{Proceedings of the ACM on Interactive, Mobile, + Wearable and Ubiquitous Technologies}% + \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}% + \def\@permissionCodeOne{2474-9567}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % JACM + \def\@journalName{Journal of the ACM}% + \def\@journalNameShort{J. ACM}% + \def\@permissionCodeOne{0004-5411}% +\or % JDIQ + \def\@journalName{ACM Journal of Data and Information Quality}% + \def\@journalNameShort{ACM J. Data Inform. Quality}% + \def\@permissionCodeOne{1936-1955}% +\or % JEA + \def\@journalName{ACM Journal of Experimental Algorithmics}% + \def\@journalNameShort{ACM J. Exp. Algor.}% + \def\@permissionCodeOne{1084-6654}% +\or % JERIC + \def\@journalName{ACM Journal of Educational Resources in Computing}% + \def\@journalNameShort{ACM J. Edu. Resources in Comput.}% + \def\@permissionCodeOne{1073-0516}% +\or % JETC + \def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}% + \def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}% + \def\@permissionCodeOne{1550-4832}% +\or % JOCCH + \def\@journalName{ACM Journal on Computing and Cultural Heritage}% + \def\@journalNameShort{ACM J. Comput. Cult. Herit.}% +\or % PACMCGIT + \def\@journalName{Proceedings of the ACM on Computer Graphics and Interactive Techniques}% + \def\@journalNameShort{Proc. ACM Comput. Graph. Interact. Tech.}% + \def\@permissionCodeOne{2577-6193}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % PACMHCI + \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}% + \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}% + \def\@permissionCodeOne{2573-0142}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % PACMPL + \def\@journalName{Proceedings of the ACM on Programming Languages}% + \def\@journalNameShort{Proc. ACM Program. Lang.}% + \def\@permissionCodeOne{2475-1421}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % POMACS + \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}% + \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}% + \def\@permissionCodeOne{2476-1249}% + \@ACM@screentrue + \PackageInfo{\@classname}{Using screen mode due to \@journalCode}% +\or % TAAS + \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}% + \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}% + \def\@permissionCodeOne{1556-4665}% +\or % TACCESS + \def\@journalName{ACM Transactions on Accessible Computing}% + \def\@journalNameShort{ACM Trans. Access. Comput.}% + \def\@permissionCodeOne{1936-7228}% +\or % TACO + \def\@journalName{ACM Transactions on Architecture and Code Optimization}% + \def\@journalNameShort{ACM Trans. Arch. Code Optim.}% +\or % TALG + \def\@journalName{ACM Transactions on Algorithms}% + \def\@journalNameShort{ACM Trans. Algor.}% + \def\@permissionCodeOne{1549-6325}% +\or % TALLIP + \def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}% + \def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}% + \def\@permissionCodeOne{2375-4699}% +\or % TAP + \def\@journalName{ACM Transactions on Applied Perception}% +\or % TCPS + \def\@journalName{ACM Transactions on Cyber-Physical Systems}% +\or % TDS + \def\@journalName{ACM/IMS Transactions on Data Science}% + \def\@journalNameShort{ACM/IMS Trans. Data Sci.}% + \def\@permissionCodeOne{2577-3224}% +\or % TEAC + \def\@journalName{ACM Transactions on Economics and Computation}% +\or % TECS + \def\@journalName{ACM Transactions on Embedded Computing Systems}% + \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}% + \def\@permissionCodeOne{1539-9087}% +\or % TELO + \def\@journalName{ACM Transactions on Evolutionary Learning}% + \def\@journalNameShort{ACM Trans. Evol. Learn.}% + \def\@permissionCodeOne{2688-3007}% +\or % THRI + \def\@journalName{ACM Transactions on Human-Robot Interaction}% + \def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}% + \def\@permissionCodeOne{2573-9522}% +\or % TIIS + \def\@journalName{ACM Transactions on Interactive Intelligent Systems}% + \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}% + \def\@permissionCodeOne{2160-6455}% +\or % TIOT + \def\@journalName{ACM Transactions on Internet of Things}% + \def\@journalNameShort{ACM Trans. Internet Things}% + \def\@permissionCodeOne{2577-6207}% +\or % TISSEC + \def\@journalName{ACM Transactions on Information and System Security}% + \def\@journalNameShort{ACM Trans. Info. Syst. Sec.}% + \def\@permissionCodeOne{1094-9224}% +\or % TIST + \def\@journalName{ACM Transactions on Intelligent Systems and Technology}% + \def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}% + \def\@permissionCodeOne{2157-6904}% +\or % TKDD + \def\@journalName{ACM Transactions on Knowledge Discovery from Data}% + \def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}% + \def\@permissionCodeOne{1556-4681}% +\or % TMIS + \def\@journalName{ACM Transactions on Management Information Systems}% + \def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}% + \def\@permissionCodeOne{2158-656X}% +\or % TOCE + \def\@journalName{ACM Transactions on Computing Education}% + \def\@journalNameShort{ACM Trans. Comput. Educ.}% + \def\@permissionCodeOne{1946-6226}% +\or % TOCHI + \def\@journalName{ACM Transactions on Computer-Human Interaction}% + \def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}% + \def\@permissionCodeOne{1073-0516}% +\or % TOCL + \def\@journalName{ACM Transactions on Computational Logic}% + \def\@journalNameShort{ACM Trans. Comput. Logic}% + \def\@permissionCodeOne{1529-3785}% +\or % TOCS + \def\@journalName{ACM Transactions on Computer Systems}% + \def\@journalNameShort{ACM Trans. Comput. Syst.}% + \def\@permissionCodeOne{0734-2071}% +\or % TOCT + \def\@journalName{ACM Transactions on Computation Theory}% + \def\@journalNameShort{ACM Trans. Comput. Theory}% + \def\@permissionCodeOne{1942-3454}% +\or % TODAES + \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}% + \def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}% + \def\@permissionCodeOne{1084-4309}% +\or % TODS + \def\@journalName{ACM Transactions on Database Systems}% + \def\@journalNameShort{ACM Trans. Datab. Syst.}% + \def\@permissionCodeOne{0362-5915}% +\or % TOG + \def\@journalName{ACM Transactions on Graphics}% + \def\@journalNameShort{ACM Trans. Graph.}% + \def\@permissionCodeOne{0730-0301} +\or % TOIS + \def\@journalName{ACM Transactions on Information Systems}% + \def\@permissionCodeOne{1046-8188}% +\or % TOIT + \def\@journalName{ACM Transactions on Internet Technology}% + \def\@journalNameShort{ACM Trans. Internet Technol.}% + \def\@permissionCodeOne{1533-5399}% +\or % TOMACS + \def\@journalName{ACM Transactions on Modeling and Computer Simulation}% + \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}% +\or % TOMM + \def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}% + \def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}% + \def\@permissionCodeOne{1551-6857}% + \def\@permissionCodeTwo{0100}% +\or % TOMPECS + \def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}% + \def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}% + \def\@permissionCodeOne{2376-3639}% +\or % TOMS + \def\@journalName{ACM Transactions on Mathematical Software}% + \def\@journalNameShort{ACM Trans. Math. Softw.}% + \def\@permissionCodeOne{0098-3500}% +\or % TOPC + \def\@journalName{ACM Transactions on Parallel Computing}% + \def\@journalNameShort{ACM Trans. Parallel Comput.}% + \def\@permissionCodeOne{1539-9087}% +\or % TOPS + \def\@journalName{ACM Transactions on Privacy and Security}% + \def\@journalNameShort{ACM Trans. Priv. Sec.}% + \def\@permissionCodeOne{2471-2566}% +\or % TOPLAS + \def\@journalName{ACM Transactions on Programming Languages and Systems}% + \def\@journalNameShort{ACM Trans. Program. Lang. Syst.}% + \def\@permissionCodeOne{0164-0925}% +\or % TOS + \def\@journalName{ACM Transactions on Storage}% + \def\@journalNameShort{ACM Trans. Storage}% + \def\@permissionCodeOne{1553-3077}% +\or % TOSEM + \def\@journalName{ACM Transactions on Software Engineering and Methodology}% + \def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}% + \def\@permissionCodeOne{1049-331X}% +\or % TOSN + \def\@journalName{ACM Transactions on Sensor Networks}% + \def\@journalNameShort{ACM Trans. Sensor Netw.}% + \def\@permissionCodeOne{1550-4859}% +\or % TQC + \def\@journalName{ACM Transactions on Quantum Computing}% + \def\@journalNameShort{ACM Trans. Quantum Comput.}% + \def\@permissionCodeOne{2643-6817}% +\or % TRETS + \def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}% + \def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}% + \def\@permissionCodeOne{1936-7406}% +\or % TSAS + \def\@journalName{ACM Transactions on Spatial Algorithms and Systems}% + \def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}% + \def\@permissionCodeOne{2374-0353}% +\or % TSC + \def\@journalName{ACM Transactions on Social Computing}% + \def\@journalNameShort{ACM Trans. Soc. Comput.}% + \def\@permissionCodeOne{2469-7818}% +\or % TSLP + \def\@journalName{ACM Transactions on Speech and Language Processing}% + \def\@journalNameShort{ACM Trans. Speech Lang. Process.}% + \def\@permissionCodeOne{1550-4875}% +\or % TWEB + \def\@journalName{ACM Transactions on the Web}% + \def\@journalNameShort{ACM Trans. Web}% + \def\@permissionCodeOne{1559-1131}% +\else % FACMP, a dummy journal + \def\@journalName{Forthcoming ACM Publication}% + \def\@journalNameShort{ACM Forthcoming}% + \def\@permissionCodeOne{XXXX-XXXX}% +\fi +\ClassInfo{\@classname}{Using journal code \@journalCode}% +}{% + \ClassError{\@classname}{Incorrect journal #1}% +}% +\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}% + \global\@ACM@journal@bibstriptrue} +\def\@journalCode@nr{0} +\def\@journalName{}% +\def\@journalNameShort{\@journalName}% +\def\@permissionCodeOne{XXXX-XXXX}% +\def\@permissionCodeTwo{}% +\newcommand\acmConference[4][]{% + \gdef\acmConference@shortname{#1}% + \gdef\acmConference@name{#2}% + \gdef\acmConference@date{#3}% + \gdef\acmConference@venue{#4}% + \ifx\acmConference@shortname\@empty + \gdef\acmConference@shortname{#2}% + \fi + \global\@ACM@journal@bibstripfalse +} +\if@ACM@journal\else +\acmConference[]{}{}{}% +\fi +\def\acmBooktitle#1{\gdef\@acmBooktitle{#1}} +\acmBooktitle{Proceedings of \acmConference@name + \ifx\acmConference@name\acmConference@shortname\else + \ (\acmConference@shortname)\fi} +\def\@editorsAbbrev{(Ed.)} +\def\@acmEditors{} +\def\editor#1{\ifx\@acmEditors\@empty + \gdef\@acmEditors{#1}% + \else + \gdef\@editorsAbbrev{(Eds.)}% + \g@addto@macro\@acmEditors{\and#1}% +\fi} +\def\subtitle#1{\def\@subtitle{#1}} +\subtitle{} +\newcount\num@authorgroups +\num@authorgroups=0\relax +\newcount\num@authors +\num@authors=0\relax +\newif\if@insideauthorgroup +\@insideauthorgroupfalse +\renewcommand\author[2][]{% + \IfSubStr{\detokenize{#2}}{,}{\ClassWarning{\@classname}{Do not put several + authors in the same \string\author\space macro!}}{}% + \global\advance\num@authors by 1\relax + \if@insideauthorgroup\else + \global\advance\num@authorgroups by 1\relax + \global\@insideauthorgrouptrue + \fi + \ifx\addresses\@empty + \if@ACM@anonymous + \gdef\addresses{\@author{Anonymous Author(s)% + \ifx\@acmSubmissionID\@empty\else\\Submission Id: + \@acmSubmissionID\fi}}% + \gdef\authors{Anonymous Author(s)}% + \else + \gdef\addresses{\@author{#2}}% + \gdef\authors{#2}% + \fi + \else + \if@ACM@anonymous\else + \g@addto@macro\addresses{\and\@author{#2}}% + \g@addto@macro\authors{\and#2}% + \fi + \fi + \if@ACM@anonymous + \ifx\shortauthors\@empty + \gdef\shortauthors{Anon. + \ifx\@acmSubmissionID\@empty\else Submission Id: + \@acmSubmissionID\fi}% + \fi + \else + \def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\shortauthors\@empty + \gdef\shortauthors{#2}% + \else + \g@addto@macro\shortauthors{\and#2}% + \fi + \else + \ifx\shortauthors\@empty + \gdef\shortauthors{#1}% + \else + \g@addto@macro\shortauthors{\and#1}% + \fi + \fi + \fi} +\newcommand{\affiliation}[2][]{% + \global\@insideauthorgroupfalse + \if@ACM@anonymous\else + \g@addto@macro\addresses{\affiliation{#1}{#2}}% + \fi} +\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}% +[true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}} +\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}} +\def\@additionalaffiliation#1{\bgroup + \def\position##1{\ignorespaces}% + \def\institution##1{##1\ignorespaces}% + \def\department{\@ifnextchar[{\@department}{\@department[]}}% + \def\@department[##1]##2{\unskip, ##2\ignorespaces}% + \let\streetaddress\position + \let\city\position + \let\state\position + \let\postcode\position + \let\country\position + Also with #1\unskip.\egroup} +\renewcommand{\email}[2][]{% + \IfSubStr{#2}{,}{\ClassWarning{\@classname}{Do not put several + addresses in the same \string\email\space macro!}}{}% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\email{#1}{#2}}% + \fi} +\def\orcid#1{\unskip\ignorespaces} +\def\authorsaddresses#1{\def\@authorsaddresses{#1}} +\authorsaddresses{\@mkauthorsaddresses} +\def\@titlenotes{} +\def\titlenote#1{% + \g@addto@macro\@title{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@titlenotes{% + \stepcounter{footnote}\footnotetext{Title note}}% + \else + \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}% + \fi} +\def\@subtitlenotes{} +\def\subtitlenote#1{% + \g@addto@macro\@subtitle{\footnotemark}% + \if@ACM@anonymous + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{Subtitle note}}% + \else + \g@addto@macro\@subtitlenotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +\def\@authornotes{} +\def\authornote#1{% + \if@ACM@anonymous\else + \g@addto@macro\addresses{\@authornotemark}% + \g@addto@macro\@authornotes{% + \stepcounter{footnote}\footnotetext{#1}}% + \fi} +\newcommand\authornotemark[1][\relax]{% + \ifx#1\relax\relax\relax + \g@addto@macro\addresses{\@authornotemark}% + \else + \g@addto@macro\addresses{\@@authornotemark{#1}}% + \fi} +\def\acmVolume#1{\def\@acmVolume{#1}} +\acmVolume{1} +\def\acmNumber#1{\def\@acmNumber{#1}} +\acmNumber{1} +\def\acmArticle#1{\def\@acmArticle{#1}} +\acmArticle{} +\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}} +\acmArticleSeq{\@acmArticle} +\def\acmYear#1{\def\@acmYear{#1}} +\acmYear{\the\year} +\def\acmMonth#1{\def\@acmMonth{#1}} +\acmMonth{\the\month} +\def\@acmPubDate{\ifcase\@acmMonth\or + January\or February\or March\or April\or May\or June\or + July\or August\or September\or October\or November\or + December\fi~\@acmYear} +\def\acmPrice#1{\def\@acmPrice{#1}} +\acmPrice{} +\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}} +\acmSubmissionID{} +\def\acmISBN#1{\def\@acmISBN{#1}} +\acmISBN{} +\def\acmDOI#1{\def\@acmDOI{#1}} +\acmDOI{10.1145/nnnnnnn.nnnnnnn} +\newif\if@ACM@badge +\@ACM@badgefalse +\newlength\@ACM@badge@width +\setlength\@ACM@badge@width{5pc} +\newlength\@ACM@title@width +\newlength\@ACM@badge@skip +\setlength\@ACM@badge@skip{1pc} +\newcommand\acmBadgeR[2][]{\@ACM@badgetrue + \def\@acmBadgeR@url{#1}% + \def\@acmBadgeR@image{#2}} +\def\@acmBadgeR@url{} +\def\@acmBadgeR@image{} +\newcommand\acmBadgeL[2][]{\@ACM@badgetrue + \def\@acmBadgeL@url{#1}% + \def\@acmBadgeL@image{#2}} +\def\@acmBadgeL@url{} +\def\@acmBadgeL@image{} +\def\startPage#1{\def\@startPage{#1}} +\startPage{} +\def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is + obsolete. I am going to ignore it}} +\def\keywords#1{\def\@keywords{#1}} +\let\@keywords\@empty +\AtEndDocument{\if@ACM@nonacm\else\ifx\@keywords\@empty + \ifnum\getrefnumber{TotPages}>2\relax + \ClassWarningNoLine{\@classname}{ACM keywords are mandatory + for papers over two pages}% + \fi\fi\fi} +\renewenvironment{abstract}{\Collect@Body\@saveabstract}{} +\long\def\@saveabstract#1{\if@ACM@maketitle@typeset + \ClassError{\@classname}{Abstract must be defined before maketitle + command. Please move it!}\fi + \long\gdef\@abstract{#1}} +\@saveabstract{} +\long\def\@lempty{} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{% + \if@ACM@printccs + \ClassInfo{\@classname}{Printing CCS}% + \else + \ClassInfo{\@classname}{Suppressing CCS}% + \fi}{\ClassError{\@classname}{The option printccs can be either true or false}} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{% + \if@ACM@printacmref + \ClassInfo{\@classname}{Printing bibformat}% + \else + \ClassInfo{\@classname}{Suppressing bibformat}% + \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}} +\AtEndDocument{\if@ACM@nonacm\else\if@ACM@printacmref\else + \ifnum\getrefnumber{TotPages}>1\relax + \ClassWarningNoLine{\@classname}{ACM reference format is mandatory + for papers over one page}% + \fi\fi\fi} +\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{% + \if@ACM@printfolios + \ClassInfo{\@classname}{Printing folios}% + \else + \ClassInfo{\@classname}{Suppressing folios}% + \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}} +\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{% + \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to + #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be + numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}} +\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}} +\settopmatter{printccs=true, printacmref=true} +\if@ACM@manuscript + \settopmatter{printfolios=true} +\else + \if@ACM@journal + \settopmatter{printfolios=true} + \else + \settopmatter{printfolios=false} + \fi +\fi +\settopmatter{authorsperrow=0} +\def\@received{} +\newcommand\received[2][]{\def\@tempa{#1}% + \ifx\@tempa\@empty + \ifx\@received\@empty + \gdef\@received{Received #2}% + \else + \g@addto@macro{\@received}{; revised #2}% + \fi + \else + \ifx\@received\@empty + \gdef\@received{#1 #2}% + \else + \g@addto@macro{\@received}{; #1 #2}% + \fi + \fi} +\AtEndDocument{% + \ifx\@received\@empty\else + \par\bigskip\noindent\small\normalfont\@received\par + \fi} +\RequirePackage{comment} +\excludecomment{CCSXML} +\let\@concepts\@empty +\newcounter{@concepts} +\newcommand\ccsdesc[2][100]{% + \ccsdesc@parse#1~#2~~\ccsdesc@parse@end} +\def\textrightarrow{$\rightarrow$} +\def\ccsdesc@parse#1~#2~#3~{% + \stepcounter{@concepts}% + \expandafter\ifx\csname CCS@General@#2\endcsname\relax + \expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\ + \textbf{#2}}% + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }% + \expandafter\gdef\csname CCS@Specific@#2\endcsname{}% + \g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname + \csname CCS@Punctuation@#2\endcsname + \csname CCS@Specific@#2\endcsname}% + \fi + \ifx#3\relax\relax\else + \expandafter\gdef\csname CCS@Punctuation@#2\endcsname{ + \textrightarrow\ }% + \expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{% + \addtocounter{@concepts}{-1}% + \ifnum#1>499\textbf{#3}\else + \ifnum#1>299\textit{#3}\else + #3\fi\fi\ifnum\value{@concepts}=0.\else; \fi}% + \fi +\ccsdesc@parse@finish} +\AtEndDocument{\if@ACM@nonacm\else\ifx\@concepts\@empty\relax + \ifnum\getrefnumber{TotPages}>2\relax + \ClassWarningNoLine{\@classname}{CCS concepts are mandatory + for papers over two pages}% + \fi\fi\fi} +\def\ccsdesc@parse@finish#1\ccsdesc@parse@end{} +\newif\if@printcopyright +\@printcopyrighttrue +\newif\if@printpermission +\@printpermissiontrue +\newif\if@acmowned +\@acmownedtrue +\define@choicekey*{ACM@}{acmcopyrightmode}[% + \acm@copyrightinput\acm@copyrightmode]{none,% + acmcopyright,acmlicensed,rightsretained,% + usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,% + licensedcagov,licensedcagovmixed,othergov,licensedothergov,% + iw3c2w3,iw3c2w3g}{% + \@printpermissiontrue + \@printcopyrighttrue + \@acmownedtrue + \ifnum\acm@copyrightmode=0\relax % none + \@printpermissionfalse + \@printcopyrightfalse + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=2\relax % acmlicensed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=3\relax % rightsretained + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=4\relax % usgov + \@printpermissiontrue + \@printcopyrightfalse + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=6\relax % cagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=9\relax % licensedcagov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=10\relax % licensedcagovmixed + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=11\relax % othergov + \@acmownedtrue + \fi + \ifnum\acm@copyrightmode=12\relax % licensedothergov + \@acmownedfalse + \fi + \ifnum\acm@copyrightmode=13\relax % iw3c2w3 + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi + \ifnum\acm@copyrightmode=14\relax % iw3c2w3g + \@acmownedfalse + \AtBeginDocument{\acmPrice{}}% + \fi} +\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}} +\setcopyright{acmcopyright} +\def\@copyrightowner{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + % Association for Computing Machinery. + \or % acmlicensed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % rightsretained + Copyright held by the owner/author(s). + \or % usgov + \or % usgovmixed + Association for Computing Machinery. + \or % cagov + Crown in Right of Canada. + \or %cagovmixed + Association for Computing Machinery. + \or %licensedusgovmixed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % licensedcagov + Crown in Right of Canada. Publication rights licensed to + ACM\@. + \or %licensedcagovmixed + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % othergov + Association for Computing Machinery. + \or % licensedothergov + Copyright held by the owner/author(s). Publication rights licensed to + ACM\@. + \or % ic2w3www + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC-BY~4.0 License. + \or % ic2w3wwwgoogle + IW3C2 (International World Wide Web Conference Committee), published + under Creative Commons CC-BY-NC-ND~4.0 License. + \fi} +\def\@formatdoi#1{} +\def\@copyrightpermission{% + \ifcase\acm@copyrightmode\relax % none + \or % acmcopyright + % Permission to make digital or hard copies of all or part of this + % work for personal or classroom use is granted without fee provided + % that copies are not made or distributed for profit or commercial + % advantage and that copies bear this notice and the full citation on + % the first page. Copyrights for components of this work owned by + % others than ACM must be honored. Abstracting with credit is + % permitted. To copy otherwise, or republish, to post on servers or to + % redistribute to lists, requires prior specific permission + % and\hspace*{.5pt}/or a fee. Request permissions from + % permissions@acm.org. + \or % acmlicensed + Permission to make digital or hard copies of all or part of this + work for personal or classroom use is granted without fee provided + that copies are not made or distributed for profit or commercial + advantage and that copies bear this notice and the full citation on + the first page. Copyrights for components of this work owned by + others than the author(s) must be honored. Abstracting with credit + is permitted. To copy otherwise, or republish, to post on servers + or to redistribute to lists, requires prior specific permission + and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % rightsretained + Permission to make digital or hard copies of part or all of this work + for personal or classroom use is granted without fee provided that + copies are not made or distributed for profit or commercial advantage + and that copies bear this notice and the full citation on the first + page. Copyrights for third-party components of this work must be + honored. For all other uses, contact the + owner\hspace*{.5pt}/author(s). + \or % usgov + This paper is authored by an employee(s) of the United States + Government and is in the public domain. Non-exclusive copying or + redistribution is allowed, provided that the article citation is + given and the authors and agency are clearly identified as its + source. + \or % usgovmixed + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor, or affiliate of the United States + government. As such, the United States government retains a + nonexclusive, royalty-free right to publish or reproduce this + article, or to allow others to do so, for government purposes only. + \or % cagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % cagovmixed + ACM acknowledges that this contribution was co-authored by an + affiliate of the national government of Canada. As such, the Crown + in Right of Canada retains an equal interest in the copyright. + Reprints must include clear attribution to ACM and the author's + government agency affiliation. Permission to make digital or hard + copies for personal or classroom use is granted. Copies must bear + this notice and the full citation on the first page. Copyrights for + components of this work owned by others than ACM must be honored. + To copy otherwise, distribute, republish, or post, requires prior + specific permission and\hspace*{.5pt}/or a fee. Request permissions + from permissions@acm.org. + \or % licensedusgovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the United States government. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % licensedcagov + This article was authored by employees of the Government of Canada. + As such, the Canadian government retains all interest in the + copyright to this work and grants to ACM a nonexclusive, + royalty-free right to publish or reproduce this article, or to allow + others to do so, provided that clear attribution is given both to + the authors and the Canadian government agency employing them. + Permission to make digital or hard copies for personal or classroom + use is granted. Copies must bear this notice and the full citation + on the first page. Copyrights for components of this work owned by + others than the Canadian Government must be honored. To copy + otherwise, distribute, republish, or post, requires prior specific + permission and\hspace*{.5pt}/or a fee. Request permissions from + permissions@acm.org. + \or % licensedcagovmixed + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of the national government of Canada. As such, the + Government retains a nonexclusive, royalty-free right to publish or + reproduce this article, or to allow others to do so, for Government + purposes only. + \or % othergov + ACM acknowledges that this contribution was authored or co-authored + by an employee, contractor or affiliate of a national government. As + such, the Government retains a nonexclusive, royalty-free right to + publish or reproduce this article, or to allow others to do so, for + Government purposes only. + \or % licensedothergov + Publication rights licensed to ACM\@. ACM acknowledges that this + contribution was authored or co-authored by an employee, contractor + or affiliate of a national government. As such, the Government + retains a nonexclusive, royalty-free right to publish or reproduce + this article, or to allow others to do so, for Government purposes + only. + \or % iw3c2w3 + This paper is published under the Creative Commons Attribution~4.0 + International (CC-BY~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \or % iw3c2w3g + This paper is published under the Creative Commons + Attribution-NonCommercial-NoDerivs~4.0 International + (CC-BY-NC-ND~4.0) license. Authors reserve their rights to + disseminate the work on their personal and corporate Web sites with + the appropriate attribution. + \fi} +\def\copyrightyear#1{\def\@copyrightyear{#1}} +\copyrightyear{\@acmYear} +\def\@teaserfigures{} +\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{} +\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}} +\renewcommand{\thanks}[1]{% + \@ifnotempty{#1}{% + \if@ACM@anonymous + \g@addto@macro\thankses{\thanks{A note}}% + \else + \g@addto@macro\thankses{\thanks{#1}}% + \fi}} +\ifx\@beginmaketitlehook\@undefined + \let\@beginmaketitlehook\@empty +\fi +\def\AtBeginMaketitle{\g@addto@macro\@beginmaketitlehook} +\newbox\mktitle@bx +\def\maketitle{\@beginmaketitlehook + \@ACM@maketitle@typesettrue + \if@ACM@anonymous + % Anonymize omission of \author-s + \ifnum\num@authorgroups=0\author{}\fi + \fi + \begingroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \let\@footnotemark\@footnotemark@nolink + \let\@footnotetext\@footnotetext@nolink + \renewcommand\thefootnote{\@fnsymbol\c@footnote}% + \hsize=\textwidth + \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}% + \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers + \@printtopmatter + \if@ACM@sigchiamode\@mkauthors\fi + \setcounter{footnote}{0}% + \def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}% + \@titlenotes + \@subtitlenotes + \@authornotes + \let\@makefnmark\relax + \let\@thefnmark\relax + \let\@makefntext\noindent + \ifx\@empty\thankses\else + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setthanks}% + \fi + \ifx\@empty\@authorsaddresses\else + \if@ACM@anonymous\else + \if@ACM@journal@bibstrip + \footnotetextauthorsaddresses{% + \def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}% + \fi + \fi + \fi + \if@ACM@nonacm\else\footnotetextcopyrightpermission{% + \if@ACM@authordraft + \raisebox{0ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries + Unpublished working draft. Not for distribution.}}% + \color[gray]{0.9}% + \fi + \parindent\z@\parskip0.1\baselineskip + \if@ACM@authorversion\else + \if@printpermission\@copyrightpermission\par\fi + \fi + \if@ACM@manuscript\else + \if@ACM@journal@bibstrip\else % Print the conference information + {\itshape \acmConference@shortname \acmConference@date \acmConference@venue}\par + \fi + \fi + \if@printcopyright + \copyright\ \@copyrightyear\ \@copyrightowner\\ + \else + \@copyrightyear.\ + \fi + \if@ACM@manuscript + Manuscript submitted to ACM\\ + \else + \if@ACM@authorversion + This is the author's version of the work. It is posted here for + your personal use. Not for redistribution. The definitive Version + of Record was published in + \if@ACM@journal@bibstrip + \emph{\@journalName}% + \else + \emph{\@acmBooktitle}% + \fi + \ifx\@acmDOI\@empty + + \else + \@formatdoi{\@acmDOI}. + \fi\\ + \else + \if@ACM@nonacm\else + \if@ACM@journal@bibstrip + \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle + \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\ + \@formatdoi{\@acmDOI}% + \else % Conference + \ifx\@acmISBN\@empty\else \@acmISBN + \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi% + \fi + \fi + \fi + \fi} + \fi + \endgroup + \setcounter{footnote}{0}% + \@mkabstract + \if@ACM@printccs + \ifx\@concepts\@empty\else\bgroup + {\@specialsection{CCS Concepts}% + \noindent\@concepts\par}\egroup + \fi + \fi + \ifx\@keywords\@empty\else\bgroup + {\if@ACM@journal + \@specialsection{Additional Key Words and Phrases}% + \else + \@specialsection{Keywords}% + \fi + \noindent\@keywords}\par\egroup + \fi + \let\metadata@authors=\authors + \nxandlist{, }{, }{, }\metadata@authors + \def\@ACM@checkaffil{}% + \hypersetup{% + pdfauthor={\metadata@authors}, + pdftitle={\@title}, + pdfsubject={\@concepts}, + pdfkeywords={\@keywords}, + pdfcreator={LaTeX with acmart + \csname ver@acmart.cls\endcsname\space + and hyperref + \csname ver@hyperref.sty\endcsname}}% + \andify\authors + \andify\shortauthors + \global\let\authors=\authors + \global\let\shortauthors=\shortauthors + \if@ACM@printacmref + \@mkbibcitation + \fi + \global\@topnum\z@ % this prevents floats from falling + % at the top of page 1 + \global\@botnum\z@ % we do not want them to be on the bottom either + \@printendtopmatter + \@afterindentfalse + \@afterheading +} +\def\@specialsection#1{% + \ifcase\ACM@format@nr + \relax % manuscript + \par\medskip\small\noindent#1: % + \or % acmsmall + \par\medskip\small\noindent#1: % + \or % acmlarge + \par\medskip\small\noindent#1: % + \or % acmtog + \par\medskip\small\noindent#1: % + \or % sigconf + \section*{#1}% + \or % siggraph + \section*{#1}% + \or % sigplan + \noindentparagraph*{#1:~}% + \or % sigchi + \section*{#1}% + \or % sigchi-a + \section*{#1}% + \fi +} +\def\@printtopmatter{% + \ifx\@startPage\@empty + \gdef\@startPage{1}% + \else + \setcounter{page}{\@startPage}% + \fi + \thispagestyle{firstpagestyle}% + \noindent + \ifcase\ACM@format@nr + \relax % manuscript + \box\mktitle@bx\par + \or % acmsmall + \box\mktitle@bx\par + \or % acmlarge + \box\mktitle@bx\par + \or % acmtog + \twocolumn[\box\mktitle@bx]% + \or % sigconf + \twocolumn[\box\mktitle@bx]% + \or % siggraph + \twocolumn[\box\mktitle@bx]% + \or % sigplan + \twocolumn[\box\mktitle@bx]% + \or % sigchi + \twocolumn[\box\mktitle@bx]% + \or % sigchi-a + \par\box\mktitle@bx\par\bigskip + \if@ACM@badge + \marginpar{\noindent + \ifx\@acmBadgeL@image\@empty\else + \href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}% + \hskip\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}% + \fi}% + \fi + \fi +} +\def\@mktitle{% + \ifcase\ACM@format@nr + \relax % manuscript + \@mktitle@i + \or % acmsmall + \@mktitle@i + \or % acmlarge + \@mktitle@i + \or % acmtog + \@mktitle@i + \or % sigconf + \@mktitle@iii + \or % siggraph + \@mktitle@iii + \or % sigplan + \@mktitle@iii + \or % sigchi + \@mktitle@iii + \or % sigchi-a + \@mktitle@iv + \fi +} +\def\@titlefont{% + \ifcase\ACM@format@nr + \relax % manuscript + \LARGE\sffamily\bfseries + \or % acmsmall + \LARGE\sffamily\bfseries + \or % acmlarge + \LARGE\sffamily\bfseries + \or % acmtog + \Huge\sffamily + \or % sigconf + \Huge\sffamily\bfseries + \or % siggraph + \Huge\sffamily\bfseries + \or % sigplan + \Huge\bfseries + \or % sigchi + \Huge\sffamily\bfseries + \or % sigchi-a + \Huge\bfseries + \fi} +\def\@subtitlefont{\normalsize + \ifcase\ACM@format@nr + \relax % manuscript + \mdseries + \or % acmsmall + \mdseries + \or % acmlarge + \mdseries + \or % acmtog + \LARGE + \or % sigconf + \LARGE\mdseries + \or % siggraph + \LARGE\mdseries + \or % sigplan + \LARGE\mdseries + \or % sigchi + \LARGE\mdseries + \or % sigchi-a + \mdseries + \fi} +\def\@mktitle@i{\hsize=\textwidth + \@ACM@title@width=\hsize + \ifx\@acmBadgeL@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \ifx\@acmBadgeR@image\@empty\else + \advance\@ACM@title@width by -\@ACM@badge@width + \advance\@ACM@title@width by -\@ACM@badge@skip + \fi + \setbox\mktitle@bx=\vbox{\noindent\@titlefont + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\raggedright + \@titlefont\noindent + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi}% + \ifx\@acmBadgeR@image\@empty\else + \hskip\@ACM@badge@skip + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi + \par\bigskip}}% +\def\@mktitle@iii{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\@titlefont\centering + \@ACM@title@width=\hsize + \if@ACM@badge + \advance\@ACM@title@width by -2\@ACM@badge@width + \advance\@ACM@title@width by -2\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeL@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}% + \fi}% + \hskip\@ACM@badge@skip + \fi + \parbox[t]{\@ACM@title@width}{\centering\@titlefont + \@title + \ifx\@subtitle\@empty\else + \par\noindent{\@subtitlefont\@subtitle} + \fi + }% + \if@ACM@badge + \hskip\@ACM@badge@skip + \parbox[b]{\@ACM@badge@width}{\strut + \ifx\@acmBadgeR@image\@empty\else + \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{% + \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}% + \fi}% + \fi + \par\bigskip}}% +\def\@mktitle@iv{\hsize=\textwidth + \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont + \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par + \noindent\@title + \ifx\@subtitle\@empty\else + \par\noindent\@subtitlefont\@subtitle + \fi + \par\bigskip}}% +\newbox\@ACM@commabox +\def\@ACM@addtoaddress#1{% + \ifvmode\else + \if@ACM@affiliation@obeypunctuation\else + \setbox\@ACM@commabox=\hbox{, }% + \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox + \fi\fi + #1} +\def\streetaddress#1{\unskip\ignorespaces} +\def\postcode#1{\unskip\ignorespaces} +\if@ACM@journal + \def\position#1{\unskip\ignorespaces} + \def\institution#1{\global\@ACM@instpresenttrue + \unskip~#1\ignorespaces} + \def\city#1{\global\@ACM@citypresenttrue\unskip\ignorespaces} + \def\state#1{\unskip\ignorespaces} + \newcommand\department[2][0]{\unskip\ignorespaces} + \def\country#1{\global\@ACM@countrypresenttrue + \if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces} +\else + \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \def\institution#1{\global\@ACM@instpresenttrue + \if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% + \newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation + #2\else#2\par\fi}% + \def\city#1{\global\@ACM@citypresenttrue\@ACM@addtoaddress{#1}}% + \let\state\@ACM@addtoaddress + \def\country#1{\global\@ACM@countrypresenttrue\@ACM@addtoaddress{#1}}% +\fi +\def\@mkauthors{\begingroup + \hsize=\textwidth + \ifcase\ACM@format@nr + \relax % manuscript + \@mkauthors@i + \or % acmsmall + \@mkauthors@i + \or % acmlarge + \@mkauthors@i + \or % acmtog + \@mkauthors@i + \or % sigconf + \@mkauthors@iii + \or % siggraph + \@mkauthors@iii + \or % sigplan + \@mkauthors@iii + \or % sigchi + \@mkauthors@iii + \or % sigchi-a + \@mkauthors@iv + \fi + \endgroup +} +\def\@authorfont{\Large\sffamily} +\def\@affiliationfont{\normalsize\normalfont} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \def\@authorfont{\large\sffamily} + \def\@affiliationfont{\small\normalfont} +\or % acmlarge +\or % acmtog + \def\@authorfont{\LARGE\sffamily} + \def\@affiliationfont{\large} +\or % sigconf + \def\@authorfont{\LARGE} + \def\@affiliationfont{\large} +\or % siggraph + \def\@authorfont{\normalsize\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigplan + \def\@authorfont{\Large\normalfont} + \def\@affiliationfont{\normalsize\normalfont} +\or % sigchi + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\or % sigchi-a + \def\@authorfont{\bfseries} + \def\@affiliationfont{\mdseries} +\fi +\def\@typeset@author@line{% + \andify\@currentauthors\par\noindent + \@currentauthors\def\@currentauthors{}% + \ifx\@currentaffiliations\@empty\else + \andify\@currentaffiliations + \unskip, {\@currentaffiliations}\par + \fi + \def\@currentaffiliations{}} +\newif\if@ACM@instpresent +\@ACM@instpresenttrue +\newif\if@ACM@citypresent +\@ACM@citypresenttrue +\newif\if@ACM@countrypresent +\@ACM@countrypresenttrue +\def\@ACM@resetaffil{% + \global\@ACM@instpresentfalse + \global\@ACM@citypresentfalse + \global\@ACM@countrypresentfalse +} +\def\@ACM@checkaffil{% + \if@ACM@instpresent\else + \ClassWarningNoLine{\@classname}{No institution present for an affiliation}% + \fi + \if@ACM@citypresent\else + \ClassWarningNoLine{\@classname}{No city present for an affiliation}% + \fi + \if@ACM@countrypresent\else + \ClassError{\@classname}{No country present for an affiliation}{ACM + requires each author to indicate their country using country macro.}% + \fi +} +\def\@mkauthors@i{% + \def\@currentauthors{}% + \def\@currentaffiliations{}% + \global\let\and\@typeset@author@line + \def\@author##1{% + \ifx\@currentauthors\@empty + \gdef\@currentauthors{\@authorfont\MakeTextUppercase{##1}}% + \else + \g@addto@macro{\@currentauthors}{\and\MakeTextUppercase{##1}}% + \fi + \gdef\and{}}% + \def\email##1##2{}% + \def\affiliation##1##2{% + \def\@tempa{##2}\ifx\@tempa\@empty\else + \ifx\@currentaffiliations\@empty + \gdef\@currentaffiliations{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}% + \@ACM@resetaffil + \@affiliationfont##2\@ACM@checkaffil}% + \else + \g@addto@macro{\@currentaffiliations}{\and + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \fi + \global\let\and\@typeset@author@line}% + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip + \noindent\addresses\@typeset@author@line + \par\medskip}% +} +\newbox\author@bx +\newdimen\author@bx@wd +\newskip\author@bx@sep +\author@bx@sep=1pc\relax +\def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd + \def\and{\par}\normalbaselines + \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi + \@authorfont\@currentauthors\par\@affiliationfont + \@currentaffiliation}\egroup + \box\author@bx\hspace{\author@bx@sep}% + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}} +\def\@mkauthors@iii{% + \author@bx@wd=\textwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \or % 2=two authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 3=three authors per row + \divide\author@bx@wd by \num@authorgroups\relax + \or % 4=two authors per row (!) + \divide\author@bx@wd by 2\relax + \else % three authors per row + \divide\author@bx@wd by 3\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\bgroup + \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% + \else + \g@addto@macro\@currentaffiliation{\par\bgroup + \mathchardef\UrlBreakPenalty=10000\nolinkurl{##2}\egroup}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \global\let\and\@typeset@author@bx +}% + \hsize=\textwidth + \global\setbox\mktitle@bx=\vbox{\noindent + \box\mktitle@bx\par\medskip\leavevmode + \lineskip=1pc\relax\centering\hspace*{-1em}% + \addresses\let\and\@typeset@author@bx\and\par\bigskip}} +\def\@mkauthors@iv{% + \author@bx@wd=\columnwidth\relax + \advance\author@bx@wd by -\author@bx@sep\relax + \ifnum\@ACM@authorsperrow>0\relax + \divide\author@bx@wd by \@ACM@authorsperrow\relax + \else + \ifcase\num@authorgroups + \relax % 0? + \or % 1=one author per row + \else % 2=two authors per row + \divide\author@bx@wd by 2\relax + \fi + \fi + \advance\author@bx@wd by -\author@bx@sep\relax + \gdef\@currentauthors{}% + \gdef\@currentaffiliation{}% + \def\@author##1{\ifx\@currentauthors\@empty + \gdef\@currentauthors{\par##1}% + \else + \g@addto@macro\@currentauthors{\par##1}% + \fi + \gdef\and{}}% + \def\email##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{\nolinkurl{##2}}% + \else + \g@addto@macro\@currentaffiliation{\par\nolinkurl{##2}}% + \fi}% + \def\affiliation##1##2{\ifx\@currentaffiliation\@empty + \gdef\@currentaffiliation{% + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \else + \g@addto@macro\@currentaffiliation{\par + \setkeys{@ACM@affiliation@}{obeypunctuation=false}% + \setkeys{@ACM@affiliation@}{##1}\@ACM@resetaffil + ##2\@ACM@checkaffil}% + \fi + \global\let\and\@typeset@author@bx}% + \bgroup\hsize=\columnwidth + \par\raggedright\leftskip=\z@ + \lineskip=1pc\noindent + \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup} +\def\@mkauthorsaddresses{% + \ifnum\num@authors>1\relax + Authors' \else Author's \fi + \ifnum\num@authorgroups>1\relax + addresses: \else address: \fi + \bgroup + \def\streetaddress##1{\unskip, ##1}% + \def\postcode##1{\unskip, ##1}% + \def\position##1{\unskip\ignorespaces}% + \def\institution##1{\unskip, ##1}% + \def\city##1{\unskip, ##1}% + \def\state##1{\unskip, ##1}% + \renewcommand\department[2][0]{\unskip\@addpunct, ##2}% + \def\country##1{\unskip, ##1}% + \def\and{\unskip; }% + \def\@author##1{##1}% + \def\email##1##2{\unskip, \nolinkurl{##2}}% + \addresses + \egroup} +\AtEndDocument{\if@ACM@nonacm\else\if@ACM@journal + \ifx\@authorsaddresses\@empty + \ClassWarningNoLine{\@classname}{Authors' + addresses are mandatory for ACM journals}% + \fi\fi\fi} +\def\@setaddresses{} +\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}} +\def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}} +\def\@mkteasers{% + \ifx\@teaserfigures\@empty\else + \def\@teaser##1{\par\bigskip\bgroup + \captionsetup{type=figure}##1\egroup\par} + \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par + \noindent\@Description@presentfalse + \@teaserfigures\par\if@Description@present\else + \global\@undescribed@imagestrue + \ClassWarning{\@classname}{A possible image without + description}\fi + \medskip}% + \fi} +\def\@mkabstract{\bgroup + \ifx\@abstract\@lempty\else + {\phantomsection\addcontentsline{toc}{section}{Abstract}% + \if@ACM@journal + \everypar{\setbox\z@\lastbox\everypar{}}\small + \else + \section*{\abstractname}% + \fi + \ignorespaces\@abstract\par}% + \fi\egroup} +\def\@mkbibcitation{\bgroup + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}% + \def\footnotemark{}% + \def\\{\unskip{} \ignorespaces}% + \def\footnote{\ClassError{\@classname}{Please do not use footnotes + inside a \string\title{} or \string\author{} command! Use + \string\titlenote{} or \string\authornote{} instead!}}% + \def\@article@string{\ifx\@acmArticle\@empty{\ }\else, + Article~\@acmArticle\ \fi}% + \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak + \noindent\bgroup + \def\\{\unskip{}, \ignorespaces}\authors\egroup. \@acmYear. \@title + \ifx\@subtitle\@empty. \else: \@subtitle. \fi + \if@ACM@nonacm\else + % The 'nonacm' option disables 'printacmref' by default, + % and the present \@mkbibcitation definition is never used + % in this case. The conditional remains useful if the user + % explicitly sets \settopmatter{printacmref=true}. + \if@ACM@journal@bibstrip + \textit{\@journalNameShort} + \@acmVolume, \@acmNumber \@article@string (\@acmPubDate), + \ref{TotPages}~\@pages@word. + \else + % In \textit{\@acmBooktitle}% + % \ifx\@acmEditors\@empty\textit{.}\else + % \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.% + % \fi\ + % ACM, New York, NY, USA% + % \@article@string\unskip, \ref{TotPages}~\@pages@word. + \fi + \fi + \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi +\par\egroup} +\def\@printendtopmatter{% + \let\@vspace\@vspace@orig + \let\@vspacer\@vspacer@orig + \par\bigskip + \let\@vspace\@vspace@acm + \let\@vspacer\@vspacer@acm + } +\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses} +\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.} +\RequirePackage{fancyhdr} +\let\ACM@ps@plain\ps@plain +\let\ACM@ps@myheadings\ps@myheadings +\let\ACM@ps@headings\ps@headings +\def\ACM@restore@pagestyle{% + \let\ps@plain\ACM@ps@plain + \let\ps@myheadings\ACM@ps@myheadings + \let\ps@headings\ACM@ps@headings} +\AtBeginDocument{\ACM@restore@pagestyle} +\if@ACM@review + \newsavebox{\ACM@linecount@bx} + \newlength\ACM@linecount@bxht + \newcount\ACM@linecount + \ACM@linecount\@ne\relax + \def\ACM@mk@linecount{% + \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{\normalfont + \normalsize + \setlength{\ACM@linecount@bxht}{0pt}% + \loop{\color{red}\scriptsize\the\ACM@linecount}\\ + \global\advance\ACM@linecount by \@ne + \addtolength{\ACM@linecount@bxht}{\baselineskip}% + \ifdim\ACM@linecount@bxht<\textheight\repeat + {\color{red}\scriptsize\the\ACM@linecount}\hfill + \global\advance\ACM@linecount by \@ne}}} +\fi +\def\ACM@linecountL{% + \if@ACM@review + \ACM@mk@linecount + \begin{picture}(0,0)% + \put(-26,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +\def\ACM@linecountR{% + \if@ACM@review + \ifcase\ACM@format@nr + \relax % manuscript + \relax + \or % acmsmall + \relax + \or % acmlarge + \relax + \or % acmtog + \ACM@mk@linecount + \or % sigconf + \ACM@mk@linecount + \or % siggraph + \ACM@mk@linecount + \or % sigplan + \ACM@mk@linecount + \or % sigchi + \ACM@mk@linecount + \or % sigchi-a + \ACM@mk@linecount + \fi + \begin{picture}(0,0)% + \put(20,-22){\usebox{\ACM@linecount@bx}}% + \end{picture}% + \fi} +\if@ACM@timestamp + % Subtracting 30 from \time gives us the effect of rounding down despite + % \numexpr rounding to nearest + \newcounter{ACM@time@hours} + \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax} + \newcounter{ACM@time@minutes} + \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax} + \newcommand\ACM@timestamp{% + \footnotesize% + \ifx\@acmSubmissionID\@empty\relax\else + Submission ID: \@acmSubmissionID.{ }% + \fi + \the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }% + \two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{. }% + Page \thepage\ of \@startPage--\pageref*{TotPages}.% + } +\fi +\def\@shortauthors{% + \if@ACM@anonymous + Anon. + \ifx\@acmSubmissionID\@empty\else Submission Id: \@acmSubmissionID\fi + \else\shortauthors\fi} +\def\@headfootfont{\sffamily\footnotesize} +\AtBeginDocument{% +\fancypagestyle{standardpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \def\@acmArticlePage{% + \ifx\@acmArticle\empty% + \if@ACM@printfolios\thepage\fi% + \else% + \@acmArticle\if@ACM@printfolios:\thepage\fi% + \fi% + }% + \if@ACM@journal@bibstrip + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[LE]{\ACM@linecountL\if@ACM@printfolios\thepage\fi}% + \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}% + \fancyhead[RE]{\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\shorttitle}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM} + \fi% + \or % acmsmall + \fancyhead[LE]{\ACM@linecountL\@headfootfont\@acmArticlePage}% + \fancyhead[RO]{\@headfootfont\@acmArticlePage}% + \fancyhead[RE]{\@headfootfont\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \or % acmlarge + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticlePage\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticlePage}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \or % acmtog + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \@acmArticlePage\quad\textbullet\quad\@shortauthors}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RE]{\ACM@linecountR}% + \fancyhead[RO]{\@headfootfont + \shorttitle\quad\textbullet\quad\@acmArticlePage\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}% + \fi + \else % Proceedings + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyhead[LE]{\ACM@linecountL\@headfootfont\footnotesize + \acmConference@shortname, + \acmConference@date, \acmConference@venue}% + \fancyhead[RO]{\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue\ACM@linecountR}% + \fi + \fi + \else % Proceedings + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fancyhead[LO]{\ACM@linecountL\@headfootfont\shorttitle}% + \fancyhead[RE]{\@headfootfont\@shortauthors\ACM@linecountR}% + \if@ACM@nonacm\else% + \fancyhead[LE]{\ACM@linecountL\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue}% + \fancyhead[RO]{\@headfootfont + \acmConference@shortname, + \acmConference@date, \acmConference@venue\ACM@linecountR}% + \fi + \fi + \if@ACM@sigchiamode + \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}% + \fi + \if@ACM@timestamp + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi +}% +\pagestyle{standardpagestyle} +} +\newdimen\@folio@wd +\@folio@wd=\z@ +\newdimen\@folio@ht +\@folio@ht=\z@ +\newdimen\@folio@voffset +\@folio@voffset=\z@ +\def\@folio@max{1} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall + \@folio@wd=45.75pt\relax + \@folio@ht=1.25in\relax + \@folio@voffset=.2in\relax + \def\@folio@max{8} +\or % acmlarge + \@folio@wd=43.25pt\relax + \@folio@ht=79pt\relax + \@folio@voffset=.55in\relax + \def\@folio@max{10} +\fi +\def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax + \ifnum\@tempcnta=0\relax\else + \loop + \ifnum\@tempcnta>\@folio@max\relax + \advance\@tempcnta by - \@folio@max + \repeat + \advance\@tempcnta by -1\relax + \@tempdima=\@folio@ht\relax + \multiply\@tempdima by \the\@tempcnta\relax + \advance\@tempdima by -\@folio@voffset\relax + \begin{picture}(0,0) + \makebox[\z@]{\raisebox{-\@tempdima}{% + \rlap{% + \raisebox{-0.45\@folio@ht}[\z@][\z@]{% + \rule{\@folio@wd}{\@folio@ht}}}% + \parbox{\@folio@wd}{% + \centering + \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}} + \end{picture}\fi} + +\AtBeginDocument{% +\fancypagestyle{firstpagestyle}{% + \fancyhf{}% + \renewcommand{\headrulewidth}{\z@}% + \renewcommand{\footrulewidth}{\z@}% + \if@ACM@journal@bibstrip + \ifcase\ACM@format@nr + \relax % manuscript + \fancyhead[L]{\ACM@linecountL}% + \fancyfoot[RO,LE]{\if@ACM@printfolios\small\thepage\fi}% + \if@ACM@nonacm\else% + \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}% + \fi% + \or % acmsmall + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyhead[RO]{\@folioblob}% + \fancyheadoffset[RO,LE]{0.6\@folio@wd}% + \or % acmlarge + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[RO]{\@folioblob}% + \fancyhead[LE]{\ACM@linecountL\@folioblob}% + \fancyhead[LO]{\ACM@linecountL}% + \fancyheadoffset[RO,LE]{1.4\@folio@wd}% + \or % acmtog + \if@ACM@nonacm\else% + \fancyfoot[RO,LE]{\footnotesize \@journalNameShort, Vol. \@acmVolume, No. + \@acmNumber, Article \@acmArticle. Publication date: + \@acmPubDate.}% + \fi% + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \else % Conference proceedings + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fi + \else + \fancyhead[L]{\ACM@linecountL}% + \fancyhead[R]{\ACM@linecountR}% + \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}% + \fi + \if@ACM@timestamp + \ifnum\ACM@format@nr=0\relax % Manuscript + \fancyfoot[LO,RE]{\ACM@timestamp\quad + \if@ACM@nonacm\else + \footnotesize Manuscript submitted to ACM + \fi} + \else + \fancyfoot[LO,RE]{\ACM@timestamp} + \fi + \fi +}} +\def\ACM@NRadjust#1{% + \begingroup + \expandafter\ifx\csname Sectionformat\endcsname\relax + % do nothing when \Sectionformat is unknown + \def\next{\endgroup #1}% + \else + \def\next{\endgroup + \let\realSectionformat\Sectionformat + \def\ACM@sect@format@{#1}% + \let\Sectionformat\ACM@NR@adjustedSectionformat + %% next lines added 2018-06-17 to ensure section number is styled + \let\real@adddotafter\@adddotafter + \let\@adddotafter\ACM@adddotafter + #1{}% imposes the styles, but nullifies \MakeUppercase + \let\@adddotafter\real@adddotafter + }% + \fi \next +} +\def\ACM@NR@adjustedSectionformat#1#2{% + \realSectionformat{\ACM@sect@format{#1}}{#2}% + \let\Sectionformat\realSectionformat} +\DeclareRobustCommand{\ACM@sect@format}{\ACM@sect@format@} +\def\ACM@sect@format@null#1{#1} +\let\ACM@sect@format@\ACM@sect@format@null +\AtBeginDocument{% + \expandafter\ifx\csname LTX@adddotafter\endcsname\relax + \let\LTX@adddotafter\@adddotafter + \fi +} +\def\ACM@adddotafter#1{\ifx\relax#1\relax\else\LTX@adddotafter{#1}\fi} +\renewcommand\section{\@startsection{section}{1}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\ACM@NRadjust\@secfont}} +\renewcommand\subsection{\@startsection{subsection}{2}{\z@}% + {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {.25\baselineskip}% + {\ACM@NRadjust\@subsecfont}} +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@subsubsecfont\@adddotafter}}} +\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@parfont\@adddotafter}}} +\newcommand\noindentparagraph{\@startsection{paragraph}{4}{\z@}% + {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}% + {-3.5\p@}% + {\ACM@NRadjust{\@parfont}}} + +\renewcommand\part{\@startsection{part}{9}{\z@}% + {-10\p@ \@plus -4\p@ \@minus -2\p@}% + {4\p@}% + {\ACM@NRadjust\@parfont}} +\def\section@raggedright{\@rightskip\@flushglue + \rightskip\@rightskip + \leftskip\z@skip + \parindent\z@} +\def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} +\def\@subsecfont{\sffamily\bfseries\section@raggedright} +\def\@subsubsecfont{\sffamily\itshape} +\def\@parfont{\itshape} +\setcounter{secnumdepth}{3} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % acmtog + \def\@secfont{\sffamily\large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\large\section@raggedright} +\or % sigconf + \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\bfseries\Large\section@raggedright} +\or % siggraph + \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright} +\or % sigplan + \def\@secfont{\bfseries\Large\section@raggedright} + \def\@subsecfont{\bfseries\section@raggedright} + \def\@subsubsecfont{\bfseries\section@raggedright} + \def\@parfont{\bfseries\itshape} + \def\@subparfont{\itshape} +\or % sigchi + \setcounter{secnumdepth}{1} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\or % sigchi-a + \setcounter{secnumdepth}{0} + \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase} + \def\@subsecfont{\sffamily\bfseries\section@raggedright} +\fi +\def\@adddotafter#1{#1\@addpunct{.}} +\def\@addspaceafter#1{#1\@addpunct{\enspace}} +\providecommand*\@dotsep{4.5} +\def\@acmplainbodyfont{\itshape} +\def\@acmplainindent{\parindent} +\def\@acmplainheadfont{\scshape} +\def\@acmplainnotefont{\@empty} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmplainbodyfont{\itshape} + \def\@acmplainindent{\z@} + \def\@acmplainheadfont{\bfseries} + \def\@acmplainnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +\newtheoremstyle{acmplain}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmplainbodyfont}% body font + {\@acmplainindent}% indent amount + {\@acmplainheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmplainnotefont(#3)}}}% head spec +\def\@acmdefinitionbodyfont{\normalfont} +\def\@acmdefinitionindent{\parindent} +\def\@acmdefinitionheadfont{\itshape} +\def\@acmdefinitionnotefont{\@empty} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@acmdefinitionbodyfont{\normalfont} + \def\@acmdefinitionindent{\z@} + \def\@acmdefinitionheadfont{\bfseries} + \def\@acmdefinitionnotefont{\normalfont} +\or % sigchi +\or % sigchi-a +\fi +\newtheoremstyle{acmdefinition}% + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space above + {.5\baselineskip\@plus.2\baselineskip + \@minus.2\baselineskip}% space below + {\@acmdefinitionbodyfont}% body font + {\@acmdefinitionindent}% indent amount + {\@acmdefinitionheadfont}% head font + {.}% punctuation after head + {.5em}% spacing after head + {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec +\theoremstyle{acmplain} +\AtEndPreamble{% + \if@ACM@acmthm + \theoremstyle{acmplain} + \@ifundefined{theorem}{% + \newtheorem{theorem}{Theorem}[section] + }{} + \@ifundefined{conjecture}{% + \newtheorem{conjecture}[theorem]{Conjecture} + }{} + \@ifundefined{proposition}{% + \newtheorem{proposition}[theorem]{Proposition} + }{} + \@ifundefined{lemma}{% + \newtheorem{lemma}[theorem]{Lemma} + }{} + \@ifundefined{corollary}{% + \newtheorem{corollary}[theorem]{Corollary} + }{} + \theoremstyle{acmdefinition} + \@ifundefined{example}{% + \newtheorem{example}[theorem]{Example} + }{} + \@ifundefined{definition}{% + \newtheorem{definition}[theorem]{Definition} + }{} + \fi + \theoremstyle{acmplain} +} +\def\@proofnamefont{\scshape} +\def\@proofindent{\indent} +\ifcase\ACM@format@nr +\relax % manuscript +\or % acmsmall +\or % acmlarge +\or % acmtog +\or % sigconf +\or % siggraph +\or % sigplan + \def\@proofnamefont{\itshape} + \def\@proofindent{\noindent} +\or % sigchi +\or % sigchi-a +\fi +\renewenvironment{proof}[1][\proofname]{\par + \pushQED{\qed}% + \normalfont \topsep6\p@\@plus6\p@\relax + \trivlist + \item[\@proofindent\hskip\labelsep + {\@proofnamefont #1\@addpunct{.}}]\ignorespaces +}{% + \popQED\endtrivlist\@endpefalse +} +\AtEndPreamble{% + \if@ACM@balance + \ifcase\ACM@format@nr + \relax % manuscript + \global\@ACM@balancefalse + \or % acmsmall + \global\@ACM@balancefalse + \or % acmlarge + \global\@ACM@balancefalse + \or % acmtog + \RequirePackage{balance}% + \or % sigconf + \RequirePackage{balance}% + \or % siggraph + \RequirePackage{balance}% + \or % sigplan + \RequirePackage{balance}% + \or % sigchi + \RequirePackage{balance}% + \or % sigchi-a + \global\@ACM@balancefalse + \fi + \fi +} +\AtEndDocument{% + \if@ACM@balance + \if@twocolumn + \balance + \fi\fi} +\newcommand\acksname{Acknowledgments} +\specialcomment{acks}{% + \begingroup + \section*{\acksname} + \phantomsection\addcontentsline{toc}{section}{\acksname} +}{% + \endgroup +} +\def\grantsponsor#1#2#3{#2} +\newcommand\grantnum[3][]{#3% + \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi} +\AtEndPreamble{% +\if@ACM@screen + \includecomment{screenonly} + \excludecomment{printonly} +\else + \excludecomment{screenonly} + \includecomment{printonly} +\fi +\if@ACM@anonymous + \excludecomment{anonsuppress} + \excludecomment{acks} +\else + \includecomment{anonsuppress} +\fi} +\newcommand\showeprint[2][arxiv]{% + \def\@tempa{#1}% + \ifx\@tempa\@empty\def\@tempa{arxiv}\fi + \def\@tempb{arxiv}% + \ifx\@tempa\@tempb + arXiv:\href{https://arxiv.org/abs/#2}{#2}\else arXiv:#2% + \fi} +\let\@vspace@orig=\@vspace +\let\@vspacer@orig=\@vspacer +\apptocmd{\@vspace}{\ClassWarning{\@classname}{\string\vspace\space should + only be used to provide space above/below surrounding + objects}}{}{} +\apptocmd{\@vspacer}{\ClassWarning{\@classname}{\string\vspace\space should + only be used to provide space above/below surrounding + objects}}{}{} +\let\@vspace@acm=\@vspace +\let\@vspacer@acm=\@vspacer +\let\ACM@origbaselinestretch\baselinestretch +\AtEndDocument{\ifx\baselinestretch\ACM@origbaselinestretch\else + \ClassError{\@classname}{An attempt to redefine + \string\baselinestretch\space detected. Please do not do this for + ACM submissions!}\fi} +\normalsize\normalfont\frenchspacing +\endinput +%% +%% End of file `acmart.cls'. diff --git a/docs/necessary/comment.cut b/docs/necessary/comment.cut new file mode 100644 index 0000000000000000000000000000000000000000..6048ce22a60657adbb768be4c90d5c2921d062ee --- /dev/null +++ b/docs/necessary/comment.cut @@ -0,0 +1,3 @@ + To Dr. László Szécsi, associate professor at the Computer Graphics Group + (Department of Control Engineering and Information Technology), whom I had + the chance to consult with during the semester. diff --git a/docs/necessary/documentation.aux b/docs/necessary/documentation.aux new file mode 100644 index 0000000000000000000000000000000000000000..68dd12d3e94912efd794172f1fec40b8bbfbdcd3 --- /dev/null +++ b/docs/necessary/documentation.aux @@ -0,0 +1,39 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces The achieved visual look\relax }}{1}{figure.caption.1}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{fig:teaser}{{1}{1}{The achieved visual look\relax }{figure.caption.1}{}} +\@writefile{toc}{\contentsline {section}{Abstract}{1}{section*.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent } +\bibstyle{ACM-Reference-Format} +\bibdata{references} +\newlabel{tocindent-1}{0pt} +\newlabel{tocindent0}{0pt} +\newlabel{tocindent1}{6.95pt} +\newlabel{tocindent2}{13.79999pt} +\newlabel{tocindent3}{0pt} +\@writefile{toc}{\contentsline {section}{\numberline {2}Overview of considered methods}{2}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Mass Spring System}{2}{subsection.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Position Based Dynamics}{2}{subsection.2.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Follow the Leader}{2}{subsection.2.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{Acknowledgments}{2}{section*.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {A}Supplementary development}{2}{appendix.A}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {A.1}OBJ Reader}{2}{subsection.A.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {A.2}Recording the simulation on-the-fly}{2}{subsection.A.2}\protected@file@percent } +\newlabel{TotPages}{{2}{2}{}{page.2}{}} diff --git a/docs/necessary/documentation.log b/docs/necessary/documentation.log new file mode 100644 index 0000000000000000000000000000000000000000..ace18efd116de948c23e1be34b3af9d213ddf189 --- /dev/null +++ b/docs/necessary/documentation.log @@ -0,0 +1,1062 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.10.23) 7 DEC 2020 14:30 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**documentation.tex +(./documentation.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> (./acmart.cls +Document Class: acmart 2020/11/15 v1.75 Typesetting articles for the Associatio +n for Computing Machinery +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2014/12/03 v2.7a package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks14 +\XKV@tempa@toks=\toks15 + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex)) +\XKV@depth=\count167 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texlive/texmf-dist/tex/generic/xstring/xstring.sty +(/usr/share/texlive/texmf-dist/tex/generic/xstring/xstring.tex +\integerpart=\count168 +\decimalpart=\count169 +) +Package: xstring 2019/02/06 v1.83 String manipulations (CT) +) +(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2019/11/07 v1.0c TeX engine tests +) +Package acmart Info: Not using screen mode on input line 73. +Package acmart Info: Using breaking urls on hyphens on input line 81. +Package acmart Info: Requiring acmthm on input line 89. +Package acmart Info: Not using review mode on input line 98. +Package acmart Info: Not using authorversion mode on input line 106. +Package acmart Info: Not using nonacm mode on input line 118. +Package acmart Info: Explicitly selecting natbib mode on input line 130. +Package acmart Info: Not using anonymous mode on input line 138. +Package acmart Info: Not using timestamp mode on input line 146. +Package acmart Info: Not using authordraft mode on input line 156. +Package acmart Info: Using screen mode on input line 165. +Package acmart Info: Using nonacm mode on input line 165. +Class acmart Info: Using format sigplan, number 6 on input line 165. +Class acmart Info: Using fontsize 10pt on input line 249. + +(/usr/share/texlive/texmf-dist/tex/latex/amscls/amsart.cls +Document Class: amsart 2017/10/31 v2.20.4 +\linespacing=\dimen134 +\normalparindent=\dimen135 +\normaltopskip=\skip47 +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2020/01/20 v2.17e AMS math features +\@mathmargin=\skip48 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks16 +\ex@=\dimen136 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen137 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2016/03/08 v2.02 operator names +) +\inf@bad=\count170 +LaTeX Info: Redefining \frac on input line 227. +\uproot@=\count171 +\leftroot@=\count172 +LaTeX Info: Redefining \overline on input line 389. +\classnum@=\count173 +\DOTSCASE@=\count174 +LaTeX Info: Redefining \ldots on input line 486. +LaTeX Info: Redefining \dots on input line 489. +LaTeX Info: Redefining \cdots on input line 610. +\Mathstrutbox@=\box45 +\strutbox@=\box46 +\big@size=\dimen138 +LaTeX Font Info: Redeclaring font encoding OML on input line 733. +LaTeX Font Info: Redeclaring font encoding OMS on input line 734. +\macc@depth=\count175 +\c@MaxMatrixCols=\count176 +\dotsspace@=\muskip16 +\c@parentequation=\count177 +\dspbrk@lvl=\count178 +\tag@help=\toks17 +\row@=\count179 +\column@=\count180 +\maxfields@=\count181 +\andhelp@=\toks18 +\eqnshift@=\dimen139 +\alignsep@=\dimen140 +\tagshift@=\dimen141 +\tagwidth@=\dimen142 +\totwidth@=\dimen143 +\lineht@=\dimen144 +\@envbody=\toks19 +\multlinegap=\skip49 +\multlinetaggap=\skip50 +\mathdisplay@stack=\toks20 +LaTeX Info: Redefining \[ on input line 2859. +LaTeX Info: Redefining \] on input line 2860. +) +LaTeX Font Info: Trying to load font information for U+msa on input line 398 +. + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +) +\copyins=\insert199 +\abstractbox=\box47 +\listisep=\skip51 +\c@part=\count182 +\c@section=\count183 +\c@subsection=\count184 +\c@subsubsection=\count185 +\c@paragraph=\count186 +\c@subparagraph=\count187 +\c@figure=\count188 +\c@table=\count189 +\abovecaptionskip=\skip52 +\belowcaptionskip=\skip53 +\captionindent=\dimen145 +\thm@style=\toks21 +\thm@bodyfont=\toks22 +\thm@headfont=\toks23 +\thm@notefont=\toks24 +\thm@headpunct=\toks25 +\thm@preskip=\skip54 +\thm@postskip=\skip55 +\thm@headsep=\skip56 +\dth@everypar=\toks26 +) +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty +Package: microtype 2019/11/18 v2.7d Micro-typographical refinements (RS) +\MT@toks=\toks27 +\MT@count=\count190 +LaTeX Info: Redefining \textls on input line 790. +\MT@outer@kern=\dimen146 +LaTeX Info: Redefining \textmicrotypecontext on input line 1354. +\MT@listname@count=\count191 + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def +File: microtype-pdftex.def 2019/11/18 v2.7d Definitions specific to pdftex (RS) + +LaTeX Info: Redefining \lsstyle on input line 914. +LaTeX Info: Redefining \lslig on input line 914. +\MT@outer@space=\skip57 +) +Package microtype Info: Loading configuration file microtype.cfg. + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg +File: microtype.cfg 2019/11/18 v2.7d microtype main configuration file (RS) +)) +(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2019/09/21 v2.5h e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count192 +) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen147 +\lightrulewidth=\dimen148 +\cmidrulewidth=\dimen149 +\belowrulesep=\dimen150 +\belowbottomsep=\dimen151 +\aboverulesep=\dimen152 +\abovetopsep=\dimen153 +\cmidrulesep=\dimen154 +\cmidrulekern=\dimen155 +\defaultaddspace=\dimen156 +\@cmidla=\count193 +\@cmidlb=\count194 +\@aboverulesep=\dimen157 +\@belowrulesep=\dimen158 +\@thisruleclass=\count195 +\@lastruleclass=\count196 +\@thisrulewidth=\dimen159 +) +(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +)) +(/usr/share/texlive/texmf-dist/tex/latex/totpages/totpages.sty +Package: totpages 2005/09/19 v2.00 Totpages Package (muewi) + +(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) +(/usr/share/texlive/texmf-dist/tex/latex/environ/environ.sty +Package: environ 2014/05/04 v0.3 A new way to define environments + +(/usr/share/texlive/texmf-dist/tex/latex/trimspaces/trimspaces.sty +Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list +)) +(/usr/share/texlive/texmf-dist/tex/latex/textcase/textcase.sty +Package: textcase 2019/09/14 v1.00 Text only upper/lower case changing (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/natbib/natbib.sty +Package: natbib 2010/09/13 8.31b (PWD, AO) +\bibhang=\skip58 +\bibsep=\skip59 +LaTeX Info: Redefining \cite on input line 694. +\c@NAT@ctr=\count197 +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) +) +\@linkdim=\dimen160 +\Hy@linkcounter=\count198 +\Hy@pagecounter=\count266 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count267 +\pdfmajorversion=\count268 +Package hyperref Info: Option `bookmarksnumbered' set `true' on input line 4421 +. +Package hyperref Info: Option `unicode' set `true' on input line 4421. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2020/01/14 v7.00d Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Hyper figures OFF on input line 4547. +Package hyperref Info: Link nesting OFF on input line 4552. +Package hyperref Info: Hyper index ON on input line 4555. +Package hyperref Info: Plain pages OFF on input line 4562. +Package hyperref Info: Backreferencing OFF on input line 4567. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4800. +\c@Hy@tempcnt=\count269 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip17 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5159. +\XeTeXLinkMargin=\dimen161 + +(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count270 +\Field@Width=\dimen162 +\Fld@charsize=\dimen163 +Package hyperref Info: Hyper figures OFF on input line 6430. +Package hyperref Info: Link nesting OFF on input line 6435. +Package hyperref Info: Hyper index ON on input line 6438. +Package hyperref Info: backreferencing OFF on input line 6445. +Package hyperref Info: Link coloring OFF on input line 6450. +Package hyperref Info: Link coloring with OCG OFF on input line 6455. +Package hyperref Info: PDF/A mode OFF on input line 6460. +LaTeX Info: Redefining \ref on input line 6500. +LaTeX Info: Redefining \pageref on input line 6504. + +(/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO) +) +\Hy@abspage=\count271 +\c@Item=\count272 +\c@Hfootnote=\count273 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2020/01/14 v7.00d Hyperref driver for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO) +) +\Fld@listcount=\count274 +\c@bookmark@seq@number=\count275 + +(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +86. +) +\Hy@SectionHShift=\skip60 +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty +Package: hyperxmp 2019/04/05 v4.1 Store hyperref metadata in XMP format + +(/usr/share/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty +Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO +) +) +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifxetex.sty +Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. +) +(/usr/share/texlive/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty +Package: ifmtarg 2018/04/16 v1.2b check for an empty argument +) +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifluatex.sty +Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. +)) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 105. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen164 +\Gin@req@width=\dimen165 +) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. +) +\Gm@cnth=\count276 +\Gm@cntv=\count277 +\c@Gm@tempcnt=\count278 +\Gm@bindingoffset=\dimen166 +\Gm@wd@mp=\dimen167 +\Gm@odd@mp=\dimen168 +\Gm@even@mp=\dimen169 +\Gm@layoutwidth=\dimen170 +\Gm@layoutheight=\dimen171 +\Gm@layouthoffset=\dimen172 +\Gm@layoutvoffset=\dimen173 +\Gm@dimlist=\toks28 +) +(/usr/share/texlive/texmf-dist/tex/latex/ncctools/manyfoot.sty +Package: manyfoot 2019/08/03 v1.11 Many Footnote Levels Package (NCC) + +(/usr/share/texlive/texmf-dist/tex/latex/ncctools/nccfoots.sty +Package: nccfoots 2005/02/03 v1.2 NCC Footnotes Package (NCC) +) +\MFL@columnwidth=\dimen174 +) +\footinsauthorsaddresses=\insert252 +\c@footnoteauthorsaddresses=\count279 +\footinscopyrightpermission=\insert251 +\c@footnotecopyrightpermission=\count280 + +(/usr/share/texlive/texmf-dist/tex/generic/pdftex/glyphtounicode.tex) +(/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty +Package: cmap 2008/03/06 v1.0h CMap support: searchable PDF +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2020/02/11 v2.0o Standard LaTeX package +<<t1.cmap>>) +(/usr/share/texlive/texmf-dist/tex/latex/libertine/libertine.sty +Package: libertine 2019/07/01 (Bob Tennent) Supports Libertine and Biolinum fon +ts for all LaTeX engines. + +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2020/02/02 v2.0n Standard LaTeX package +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2020/02/11 v2.0o Standard LaTeX package +) +(/usr/share/texlive/texmf-dist/tex/latex/fontaxes/fontaxes.sty +Package: fontaxes 2014/03/23 v1.0d Font selection axes +LaTeX Info: Redefining \upshape on input line 29. +LaTeX Info: Redefining \itshape on input line 31. +LaTeX Info: Redefining \slshape on input line 33. +LaTeX Info: Redefining \swshape on input line 35. +LaTeX Info: Redefining \scshape on input line 37. +LaTeX Info: Redefining \sscshape on input line 39. +LaTeX Info: Redefining \ulcshape on input line 41. +LaTeX Info: Redefining \textsw on input line 47. +LaTeX Info: Redefining \textssc on input line 48. +LaTeX Info: Redefining \textulc on input line 49. +) +LaTeX Info: Redefining \oldstylenums on input line 494. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/LinLibertine_I.tex)) +(/usr/share/texlive/texmf-dist/tex/latex/inconsolata/zi4.sty +Package: zi4 2019/05/17 v1.12 + +`inconsolata-zi4' v1.12, 2019/05/17 Text macros for Inconsolata (msharpe) +\zifour@ocount=\count281 +) +(/usr/share/texlive/texmf-dist/tex/latex/newtx/newtxmath.sty +Package: newtxmath 2020/01/25 v1.624 + +`newtxmath' v1.624, 2020/01/25 Math macros based originally on txfonts (msharpe +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/centernot.sty +Package: centernot 2016/05/16 v1.4 Centers the not symbol horizontally (HO) +) +\tx@cntz=\count282 + +(/usr/share/texlive/texmf-dist/tex/generic/kastrup/binhex.tex) +\tx@Isdigit=\count283 +\tx@IsAlNum=\count284 +\tx@tA=\toks29 +\tx@tB=\toks30 +\tx@su=\read2 +LaTeX Font Info: Redeclaring symbol font `operators' on input line 317. +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/LinuxLibertineT-TLF/m/n on input li +ne 317. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/m/n on input l +ine 317. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/LinuxLibertineT-TLF/m/n --> OT1/LinuxLibertineT-TLF +/sb/n on input line 318. +LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 326. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> T1/LinuxBiolinumT-TLF/m/n on input lin +e 326. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> T1/LinuxBiolinumT-TLF/m/n on input li +ne 326. +LaTeX Font Info: Redeclaring math alphabet \mathit on input line 327. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/LinuxLibertineT-TLF/m/it on input +line 327. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/LinuxLibertineT-TLF/m/it on input + line 327. +LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 328. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> T1/zi4/m/n on input line 328. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> T1/zi4/m/n on input line 328. +LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 330. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/sb/n on input +line 330. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/sb/n on input +line 330. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/LinuxLibertineT-TLF/m/it --> OT1/LinuxLibertineT-TL +F/sb/it on input line 331. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) T1/LinuxBiolinumT-TLF/m/n --> T1/LinuxBiolinumT-TLF/b/n + on input line 332. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) T1/zi4/m/n --> T1/zi4/b/n on input line 333. +LaTeX Font Info: Redeclaring symbol font `letters' on input line 350. +LaTeX Font Info: Overwriting symbol font `letters' in version `normal' +(Font) OML/cmm/m/it --> OML/nxlmi/m/it on input line 350. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/cmm/b/it --> OML/nxlmi/m/it on input line 350. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/nxlmi/m/it --> OML/nxlmi/b/it on input line 351. +\symlettersA=\mathgroup6 +LaTeX Font Info: Overwriting symbol font `lettersA' in version `bold' +(Font) U/ntxmia/m/it --> U/ntxmia/b/it on input line 476. +LaTeX Font Info: Redeclaring math alphabet \mathfrak on input line 478. +Now handling font encoding LMS ... +... no UTF-8 mapping file for font encoding LMS +LaTeX Font Info: Redeclaring symbol font `symbols' on input line 497. +LaTeX Font Info: Encoding `OMS' has changed to `LMS' for symbol font +(Font) `symbols' in the math version `normal' on input line 497. +LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' +(Font) OMS/cmsy/m/n --> LMS/ntxsy/m/n on input line 497. +LaTeX Font Info: Encoding `OMS' has changed to `LMS' for symbol font +(Font) `symbols' in the math version `bold' on input line 497. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/cmsy/b/n --> LMS/ntxsy/m/n on input line 497. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) LMS/ntxsy/m/n --> LMS/ntxsy/b/n on input line 498. +\symAMSm=\mathgroup7 +LaTeX Font Info: Overwriting symbol font `AMSm' in version `bold' +(Font) U/ntxsym/m/n --> U/ntxsym/b/n on input line 521. +\symsymbolsC=\mathgroup8 +LaTeX Font Info: Overwriting symbol font `symbolsC' in version `bold' +(Font) U/ntxsyc/m/n --> U/ntxsyc/b/n on input line 542. +Now handling font encoding LMX ... +... no UTF-8 mapping file for font encoding LMX +LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 555. +LaTeX Font Info: Encoding `OMX' has changed to `LMX' for symbol font +(Font) `largesymbols' in the math version `normal' on input line 5 +55. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/cmex/m/n --> LMX/ntxexx/m/n on input line 555. +LaTeX Font Info: Encoding `OMX' has changed to `LMX' for symbol font +(Font) `largesymbols' in the math version `bold' on input line 555 +. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/cmex/m/n --> LMX/ntxexx/m/n on input line 555. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) LMX/ntxexx/m/n --> LMX/ntxexx/b/n on input line 556. +\symlargesymbolsTXA=\mathgroup9 +LaTeX Font Info: Overwriting symbol font `largesymbolsTXA' in version `bold' + +(Font) U/ntxexa/m/n --> U/ntxexa/b/n on input line 570. +\tx@sbptoks=\toks31 +LaTeX Font Info: Redeclaring math delimiter \lfloor on input line 792. +LaTeX Font Info: Redeclaring math delimiter \rfloor on input line 793. +LaTeX Font Info: Redeclaring math delimiter \lceil on input line 794. +LaTeX Font Info: Redeclaring math delimiter \rceil on input line 795. +LaTeX Font Info: Redeclaring math delimiter \lbrace on input line 796. +LaTeX Font Info: Redeclaring math delimiter \rbrace on input line 797. +LaTeX Font Info: Redeclaring math delimiter \langle on input line 798. +LaTeX Font Info: Redeclaring math delimiter \rangle on input line 800. +LaTeX Font Info: Redeclaring math delimiter \arrowvert on input line 804. +LaTeX Font Info: Redeclaring math delimiter \vert on input line 805. +LaTeX Font Info: Redeclaring math accent \dot on input line 876. +LaTeX Font Info: Redeclaring math accent \ddot on input line 877. +LaTeX Font Info: Redeclaring math accent \vec on input line 1940. +\ntx@numstart=\count285 +\ntx@UCstart=\count286 +\ntx@lcstart=\count287 +\ntx@tmpc=\count288 +\ntx@imath=\count289 +\ntx@jmath=\count290 +LaTeX Info: Redefining \Bbbk on input line 2449. +LaTeX Info: Redefining \not on input line 2598. +LaTeX Info: Redefining \textsquare on input line 2628. +LaTeX Info: Redefining \openbox on input line 2630. +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2020/01/03 v3.4h Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2020/01/03 v1.8h caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 61. +\captionmargin=\dimen175 +\captionmargin@=\dimen176 +\captionwidth=\dimen177 +\caption@tempdima=\dimen178 +\caption@indent=\dimen179 +\caption@parindent=\dimen180 +\caption@hangindent=\dimen181 +Package caption Info: AMS or SMF document class detected. +) +Package caption Info: AMS or SMF document class. +\c@caption@flags=\count291 +\c@continuedfloat=\count292 +Package caption Info: hyperref package is loaded. +) +(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count293 +\float@exts=\toks32 +\float@box=\box48 +\@float@everytoks=\toks33 +\@floatcapt=\box49 +) +\@float@every@sidebar=\toks34 +\c@sidebar=\count294 +\fulltextwidth=\dimen182 +\@ACM@labelwidth=\dimen183 +\listisep=\skip61 +\num@authorgroups=\count295 +\num@authors=\count296 +\@ACM@badge@width=\skip62 +\@ACM@title@width=\skip63 +\@ACM@badge@skip=\skip64 +Class acmart Info: Printing CCS on input line 1481. +Class acmart Info: Printing bibformat on input line 1481. +Class acmart Info: Suppressing folios on input line 1488. +Class acmart Info: Setting authorsperrow to 0 on input line 1491. + +(/usr/share/texlive/texmf-dist/tex/latex/comment/comment.sty +\CommentStream=\write3 + +Excluding comment 'comment') Excluding comment 'CCSXML' +\c@@concepts=\count297 +\mktitle@bx=\box50 +\@ACM@commabox=\box51 +\author@bx=\box52 +\author@bx@wd=\dimen184 +\author@bx@sep=\skip65 + +(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer +s +\f@nch@headwidth=\skip66 +\f@nch@O@elh=\skip67 +\f@nch@O@erh=\skip68 +\f@nch@O@olh=\skip69 +\f@nch@O@orh=\skip70 +\f@nch@O@elf=\skip71 +\f@nch@O@erf=\skip72 +\f@nch@O@olf=\skip73 +\f@nch@O@orf=\skip74 +) +\@folio@wd=\dimen185 +\@folio@ht=\dimen186 +\@folio@voffset=\dimen187 + +Special comment 'acks' +LaTeX Font Info: Trying to load font information for T1+LinuxLibertineT-TLF +on input line 3007. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/T1LinuxLibertineT-TLF.fd +File: T1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Li +nuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 3007. +) +Package hyperref Info: Option `colorlinks' set `true' on input line 16. +Package hyperref Info: Option `pdfdisplaydoctitle' set `true' on input line 16. + +\c@theorem=\count298 + +(/usr/share/texlive/texmf-dist/tex/latex/preprint/balance.sty +Package: balance 1999/02/23 4.3 (PWD) +\oldvsize=\dimen188 +) +Include comment 'screenonly' Excluding comment 'printonly' +Include comment 'anonsuppress' +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count299 +\l__pdf_internal_box=\box53 +) +(./documentation.aux) +\openout1 = `documentation.aux'. + +LaTeX Font Info: Checking defaults for OML/nxlmi/m/it on input line 16. +LaTeX Font Info: Trying to load font information for OML+nxlmi on input line + 16. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/omlnxlmi.fd +File: omlnxlmi.fd 2013/11/19 Fontinst v1.933 font definitions for OML/nxlmi. +) +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for U/ntxexa/m/n on input line 16. +LaTeX Font Info: Trying to load font information for U+ntxexa on input line +16. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxexa.fd +File: untxexa.fd 2012/04/16 Fontinst v1.933 font definitions for U/ntxexa. +) +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 16. +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for LMS/ntxsy/m/n on input line 16. +LaTeX Font Info: Trying to load font information for LMS+ntxsy on input line + 16. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/lmsntxsy.fd +File: lmsntxsy.fd 2016/07/02 Fontinst v1.933 font definitions for LMS/ntxsy. +) +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Checking defaults for LMX/ntxexx/m/n on input line 16. +LaTeX Font Info: Trying to load font information for LMX+ntxexx on input lin +e 16. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/lmxntxexx.fd +File: lmxntxexx.fd 2016/07/03 Fontinst v1.933 font definitions for LMX/ntxexx. +) +LaTeX Font Info: ... okay on input line 16. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 16. +LaTeX Font Info: Trying to load font information for OT1+LinuxLibertineT-TLF + on input line 16. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/OT1LinuxLibertineT-TLF.fd +File: OT1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for OT1/ +LinuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 16. +<<ot1.cmap>> +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.2pt on input line 16. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 5.5pt on input line 16. +<<oml.cmap>> +LaTeX Font Info: Trying to load font information for U+msa on input line 16. + + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Trying to load font information for U+msb on input line 16. + + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +LaTeX Font Info: Trying to load font information for U+ntxmia on input line +16. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxmia.fd +File: untxmia.fd 2018/04/14 Fontinst v1.933 font definitions for U/ntxmia. +) +LaTeX Font Info: Trying to load font information for U+ntxsym on input line +16. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxsym.fd +File: untxsym.fd 2015/03/20 Fontinst v1.933 font definitions for U/ntxsym. +) +LaTeX Font Info: Trying to load font information for U+ntxsyc on input line +16. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxsyc.fd +File: untxsyc.fd 2012/04/12 Fontinst v1.933 font definitions for U/ntxsyc. +) +LaTeX Info: Redefining \microtypecontext on input line 16. +Package microtype Info: Generating PDF output. +Package microtype Info: Character protrusion enabled (level 2). +Package microtype Info: Using default protrusion set `alltext'. +Package microtype Info: Automatic font expansion enabled (level 2), +(microtype) stretch: 20, shrink: 20, step: 1, non-selected. +Package microtype Info: Using default expansion set `basictext'. +LaTeX Info: Redefining \showhyphens on input line 16. +Package microtype Info: No adjustment of tracking. +Package microtype Info: No adjustment of interword spacing. +Package microtype Info: No adjustment of character kerning. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. + +ABD: EveryShipout initializing macros +\AtBeginShipoutBox=\box54 +Package hyperref Info: Link coloring ON on input line 16. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count300 +) +LaTeX Info: Redefining \ref on input line 16. +LaTeX Info: Redefining \pageref on input line 16. +LaTeX Info: Redefining \nameref on input line 16. + +(./documentation.out) (./documentation.out) +\@outlinefile=\write4 +\openout4 = `documentation.out'. + + +(/usr/share/texlive/texmf-dist/tex/generic/stringenc/se-pdfdoc.def +File: se-pdfdoc.def 2019/11/29 v1.12 stringenc: PDFDocEncoding +) +(/usr/share/texlive/texmf-dist/tex/generic/stringenc/se-utf8.def +File: se-utf8.def 2019/11/29 v1.12 stringenc: UTF-8 +) +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count301 +\scratchdimen=\dimen189 +\scratchbox=\box55 +\nofMPsegments=\count302 +\nofMParguments=\count303 +\everyMPshowfont=\toks35 +\MPscratchCnt=\count304 +\MPscratchDim=\dimen190 +\MPnumerator=\count305 +\makeMPintoPDFobject=\count306 +\everyMPtoPDFconversion=\toks36 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: custom +* layout: <same size as paper> +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: twoside heightrounded +* h-part:(L,W,R)=(54.2025pt, 505.89pt, 54.2025pt) +* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=505.89pt +* \textheight=646.0pt +* \oddsidemargin=-18.06749pt +* \evensidemargin=-18.06749pt +* \topmargin=-27.0pt +* \headheight=13.0pt +* \headsep=14.0pt +* \topskip=10.0pt +* \footskip=12.0pt +* \marginparwidth=24.0pt +* \marginparsep=11.0pt +* \columnsep=24.0pt +* \skip\footins=7.0pt plus 11.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidetrue +* \@mparswitchtrue +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +\c@mv@tabular=\count307 +\c@mv@boldtabular=\count308 +(/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: float package is loaded. +Package caption Info: End \AtBeginDocument code. + +Excluding 'CCSXML' comment. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 20.74pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 20.74pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 10.0pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 14.4pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 14.4pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 12.0pt on input line 93. +LaTeX Font Info: Trying to load font information for T1+LinuxBiolinumT-TLF o +n input line 93. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd +File: T1LinuxBiolinumT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Lin +uxBiolinumT-TLF. +) +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 93. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxBiolinumT-TLF' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 93. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: OT1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 7.3pt on input line 93. + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-msa.cfg +File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS) +) +(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-msb.cfg +File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS) +) +<teaser.png, id=51, 602.25pt x 401.5pt> +File: teaser.png Graphic file (type png) +<use teaser.png> +Package pdftex.def Info: teaser.png used on input line 93. +(pdftex.def) Requested size: 505.89pt x 337.27606pt. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 12.0pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 7.3pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.2pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 93. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/it' will be +(Font) scaled to size 10.0pt on input line 93. +LaTeX Font Info: Trying to load font information for TS1+LinuxLibertineT-TLF + on input line 93. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/TS1LinuxLibertineT-TLF.fd +File: TS1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for TS1/ +LinuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 93. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: TS1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 10.0pt on input line 93. + +Overfull \hbox (5.12202pt too wide) in paragraph at lines 93--93 + []\T1/LinuxLibertineT-TLF/b/it/10 Keywords: \T1/LinuxLibertineT-TLF/m/n/10 (-2 +0) hair sim-u-la-tion, po-si-tion based dy-nam-ics, OpenGL + [] + + +Underfull \vbox (badness 3019) has occurred while \output is active [] + + [1.1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} + + <./teaser.png>] +LaTeX Font Info: Trying to load font information for T1+zi4 on input line 11 +7. + +(/usr/share/texlive/texmf-dist/tex/latex/inconsolata/t1zi4.fd +File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata) +) +LaTeX Font Info: Font shape `T1/zi4/m/n' will be +(Font) scaled to size 10.0pt on input line 117. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `zi4' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. + +Processing 'acks' comment. +\openout3 = `comment.cut'. + + Comment 'acks' writing to comment.cut. +Straight input of comment.cut. (./comment.cut) +No file documentation.bbl. + +Overfull \hbox (1.43195pt too wide) in paragraph at lines 153--158 +\T1/LinuxLibertineT-TLF/m/n/10 (-20) Lorem ip-sum do-lor sit amet, con-secte-tu +r adip-isc-ing elit. Morbi + [] + +[2.2] +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 168. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 168. + (./documentation.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 168. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 168. + + +Package rerunfilecheck Warning: File `documentation.out' has changed. +(rerunfilecheck) Rerun to get outlines right +(rerunfilecheck) or use package `bookmark'. + +Package rerunfilecheck Info: Checksums for `documentation.out': +(rerunfilecheck) Before: C8CBE37651DDA4F66386A6C5AEF9BF5B;1612 +(rerunfilecheck) After: 000E024C33539C590A731CD571800868;1667. + ) +Here is how much of TeX's memory you used: + 18946 strings out of 481239 + 283879 string characters out of 5920376 + 582283 words of memory out of 5000000 + 33555 multiletter control sequences out of 15000+600000 + 644174 words of font info for 156 fonts, out of 8000000 for 9000 + 1302 hyphenation exceptions out of 8191 + 63i,11n,100p,804b,468s stack positions out of 5000i,500n,10000p,200000b,80000s +pdfTeX warning (dest): name{appendix.B} has been referenced but does not exis +t, replaced by a fixed one + +{/usr/share/texlive/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}{/usr/sh +are/texlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}{/usr/share/te +xlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_naooyc.enc}{/usr/share/texlive/ +texmf-dist/fonts/enc/dvips/libertine/lbtn_ki75ao.enc}{/usr/share/texlive/texmf- +dist/fonts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/share/texlive/texmf-dist/f +onts/enc/dvips/libertine/lbtn_76gpa5.enc}{/usr/share/texlive/texmf-dist/fonts/e +nc/dvips/libertine/lbtn_nh77jq.enc}</usr/share/texlive/texmf-dist/fonts/type1/p +ublic/inconsolata/Inconsolata-zi4r.pfb></usr/share/texlive/texmf-dist/fonts/typ +e1/public/libertine/LinBiolinumT.pfb></usr/share/texlive/texmf-dist/fonts/type1 +/public/libertine/LinLibertineT.pfb></usr/share/texlive/texmf-dist/fonts/type1/ +public/libertine/LinLibertineTB.pfb></usr/share/texlive/texmf-dist/fonts/type1/ +public/libertine/LinLibertineTBI.pfb></usr/share/texlive/texmf-dist/fonts/type1 +/public/libertine/LinLibertineTI.pfb></usr/share/texlive/texmf-dist/fonts/type1 +/public/newtx/txsys.pfb> +Output written on documentation.pdf (2 pages, 369625 bytes). +PDF statistics: + 124 PDF objects out of 1000 (max. 8388607) + 99 compressed objects within 1 object stream + 20 named destinations out of 1000 (max. 500000) + 30318 words of extra memory for PDF output out of 35830 (max. 10000000) + diff --git a/docs/necessary/documentation.out b/docs/necessary/documentation.out new file mode 100644 index 0000000000000000000000000000000000000000..7e7943d072c82240a7cc03380e90ba6c7270f8e0 --- /dev/null +++ b/docs/necessary/documentation.out @@ -0,0 +1,10 @@ +\BOOKMARK [1][-]{section*.2}{\376\377\000A\000b\000s\000t\000r\000a\000c\000t}{}% 1 +\BOOKMARK [1][-]{section.1}{\376\377\0001\000\040\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 2 +\BOOKMARK [1][-]{section.2}{\376\377\0002\000\040\000O\000v\000e\000r\000v\000i\000e\000w\000\040\000o\000f\000\040\000c\000o\000n\000s\000i\000d\000e\000r\000e\000d\000\040\000m\000e\000t\000h\000o\000d\000s}{}% 3 +\BOOKMARK [2][-]{subsection.2.1}{\376\377\0002\000.\0001\000\040\000M\000a\000s\000s\000\040\000S\000p\000r\000i\000n\000g\000\040\000S\000y\000s\000t\000e\000m}{section.2}% 4 +\BOOKMARK [2][-]{subsection.2.2}{\376\377\0002\000.\0002\000\040\000P\000o\000s\000i\000t\000i\000o\000n\000\040\000B\000a\000s\000e\000d\000\040\000D\000y\000n\000a\000m\000i\000c\000s}{section.2}% 5 +\BOOKMARK [2][-]{subsection.2.3}{\376\377\0002\000.\0003\000\040\000F\000o\000l\000l\000o\000w\000\040\000t\000h\000e\000\040\000L\000e\000a\000d\000e\000r}{section.2}% 6 +\BOOKMARK [1][-]{section*.7}{\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000m\000e\000n\000t\000s}{}% 7 +\BOOKMARK [1][-]{appendix.A}{\376\377\000A\000\040\000S\000u\000p\000p\000l\000e\000m\000e\000n\000t\000a\000r\000y\000\040\000d\000e\000v\000e\000l\000o\000p\000m\000e\000n\000t}{}% 8 +\BOOKMARK [2][-]{subsection.A.1}{\376\377\000A\000.\0001\000\040\000O\000B\000J\000\040\000R\000e\000a\000d\000e\000r}{appendix.A}% 9 +\BOOKMARK [2][-]{subsection.A.2}{\376\377\000A\000.\0002\000\040\000R\000e\000c\000o\000r\000d\000i\000n\000g\000\040\000t\000h\000e\000\040\000s\000i\000m\000u\000l\000a\000t\000i\000o\000n\000\040\000o\000n\000-\000t\000h\000e\000-\000f\000l\000y}{appendix.A}% 10 diff --git a/docs/necessary/documentation.pdf b/docs/necessary/documentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..4fc2db7cc1fe77b95233f929b14ee280591ef7bc Binary files /dev/null and b/docs/necessary/documentation.pdf differ diff --git a/docs/necessary/documentation.tex b/docs/necessary/documentation.tex new file mode 100644 index 0000000000000000000000000000000000000000..239df075274ef2479f267f766bf3b34635b19547 --- /dev/null +++ b/docs/necessary/documentation.tex @@ -0,0 +1,171 @@ +%% +%% The first command in your LaTeX source must be the \documentclass command. +%% nonacm option turns off ACM stuff like copyright notice and such +\documentclass[sigplan,screen,nonacm]{acmart} + +%% +%% \BibTeX command to typeset BibTeX logo in the docs +\AtBeginDocument{% + \providecommand\BibTeX{{% + \normalfont B\kern-0.5em{\scshape i\kern-0.25em b}\kern-0.8em\TeX}}} + +% painint TODOs red +\newcommand\TODO[1]{\textcolor{red}{\emph{TODO #1}}} + +%% end of the preamble, start of the body of the document source. +\begin{document} + +%% +%% The "title" command has an optional parameter, +%% allowing the author to define a "short title" to be used in page headers. +\title[Hair Simulation]{Hair simulation using Position Based Dynamics} +\subtitle{5th semester Project Laboratory report} + +%% +%% The "author" command and its associated commands are used to define +%% the authors and their affiliations. +%% Of note is the shared affiliation of the first two authors, and the +%% "authornote" and "authornotemark" commands +%% used to denote shared contribution to the research. +\author{Barnabás Börcsök} +% \authornote{BSc student} +\email{borcsok.barnabas@simonyi.bme.hu} +\affiliation{% + \institution{Budapest University of Technology and Economics} + \city{Budapest} + \country{Hungary} +} + + +%% +%% By default, the full list of authors will be used in the page +%% headers. Often, this list is too long, and will overlap +%% other information printed in the page headers. This command allows +%% the author to define a more concise list +%% of authors' names for this purpose. +% \renewcommand{\shortauthors}{Trovato and Tobin, et al.} + +%% +%% The abstract is a short summary of the work to be presented in the +%% article. +\begin{abstract} + A self-assessment of the 5th semester Project Laboratory + Project is presented in this article. My goal was to achieve hair simulation + of acceptable quality both in terms of look and performance. Multiple + approaches were considered before arriving at a Position Based Dynamics + based solution. The simulation was implemented in C++ with the Open Graphics + Library (OpenGL \footnote{\url{http://www.opengl.org}}) +\end{abstract} + +%%% +%%% The code below is generated by the tool at http://dl.acm.org/ccs.cfm. +%%% Please copy and paste the code instead of the example below. +%%% +\begin{CCSXML} +<ccs2012> +<concept> +<concept_id>10010147.10010371.10010352.10010379</concept_id> +<concept_desc>Computing methodologies~Physical simulation</concept_desc> +<concept_significance>300</concept_significance> +</concept> +</ccs2012> +\end{CCSXML} + +\ccsdesc[300]{Computing methodologies~Physical simulation} +%% +%% Keywords. The author(s) should pick words that accurately describe +%% the work being presented. Separate the keywords with commas. +\keywords{hair simulation, position based dynamics, OpenGL} + +%% A "teaser" image appears between the author and affiliation +%% information and the body of the document, and typically spans the +%% page. +\begin{teaserfigure} + \includegraphics[width=\textwidth]{teaser.png} + \caption{The achieved visual look} + \Description{Using 400 hair pieces, with 25 particles on each piece of hair.} + \label{fig:teaser} +\end{teaserfigure} + +%% +%% This command processes the author and affiliation and title +%% information and builds the first part of the formatted document. +\maketitle + +\section{Introduction} +In the 5th semester of their undergrad studies, BSc students from Budapest +University of Tehchnology and Economics embark on their first journey of +scientific research. I was always interested in and fascinated by computer +graphics, it came naturally to choose a subject in this area. As I had little + hands-on experience in this field, a long time had to be dedicated +to research and trying out different simulation methods. + +The first of this paper reflects this, giving an overview of considered methods, +and other possible routes that could have been taken to implement hair +simulation. + +\section{Overview of considered methods} + +There were mainly three methods considered, two of them being substantially +different: + + +\subsection{Mass Spring System} +The whole idea of doing hair simulation as my project laboratory came from +\TODO{reference Pixar article and Khan Academy video} + +\begin{verbatim} + \documentclass[STYLE]{acmart} +\end{verbatim} + +\subsection{Position Based Dynamics} + + +\subsection{Follow the Leader} +The Dynamic Follow-The-Leader method outlined in \TODO{reference article} + + +%% +%% The acknowledgments section is defined using the "acks" environment +%% (and NOT an unnumbered section). This ensures the proper +%% identification of the section in the article metadata, and the +%% consistent spelling of the heading. +\begin{acks} + To Dr. László Szécsi, associate professor at the Computer Graphics Group + (Department of Control Engineering and Information Technology), whom I had + the chance to consult with during the semester. +\end{acks} + +%% +%% The next two lines define the bibliography style to be used, and +%% the bibliography file. +\bibliographystyle{ACM-Reference-Format} +\bibliography{references} + +%% +%% If your work has an appendix, this is the place to put it. +\appendix + +\section{Supplementary development} + +\subsection{OBJ Reader} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi +malesuada, quam in pulvinar varius, metus nunc fermentum urna, id +sollicitudin purus odio sit amet enim. Aliquam ullamcorper eu ipsum +vel mollis. Curabitur quis dictum nisl. Phasellus vel semper risus, et +lacinia dolor. Integer ultricies commodo sem nec semper. + +\subsection{Recording the simulation on-the-fly} + +Etiam commodo feugiat nisl pulvinar pellentesque. Etiam auctor sodales +ligula, non varius nibh pulvinar semper. Suspendisse nec lectus non +ipsum convallis congue hendrerit vitae sapien. Donec at laoreet +eros. Vivamus non purus placerat, scelerisque diam eu, cursus +ante. Etiam aliquam tortor auctor efficitur mattis. + + +\end{document} +\endinput +%% +%% End of file `documentation.tex'. diff --git a/docs/necessary/references.bib b/docs/necessary/references.bib new file mode 100644 index 0000000000000000000000000000000000000000..c4ccd85f315146a5ac5cc92088880dd3a6477b0a --- /dev/null +++ b/docs/necessary/references.bib @@ -0,0 +1,89 @@ +@Misc{TeXFAQ, + title = {{UK} List of {\TeX} Frequently Asked Questions}, + author = {{UK \TeX{} Users Group}}, + year = 2019, + howpublished = {\url{https://texfaq.org}} +} + +@Manual{Downes04:amsart, + title = {The \textsf{amsart}, \textsf{amsproc}, and + \textsf{amsbook} document~classes}, + author = {Michael Downes and Barbara Beeton}, + organization = {American Mathematical Society}, + year = 2004, + month = aug, + note = {\url{http://www.ctan.org/pkg/amslatex}} +} + +@Manual{Fiorio15, + title = {{a}lgorithm2e.sty---package for algorithms}, + author = {Cristophe Fiorio}, + year = 2015, + month = oct, + note = {\url{http://www.ctan.org/pkg/algorithm2e}} +} + +@Manual{Brito09, + title = {The algorithms bundle}, + author = {Rog\'erio Brito}, + year = 2009, + month = aug, + note = {\url{http://www.ctan.org/pkg/algorithms}} +} + +@Manual{Heinz15, + title = {The Listings Package}, + author = {Carsten Heinz and Brooks Moses and Jobst Hoffmann}, + year = 2015, + month = jun, + note = {\url{http://www.ctan.org/pkg/listings}} +} + +@Manual{Fear05, + title = {Publication quality tables in {\LaTeX}}, + author = {Simon Fear}, + year = 2005, + month = apr, + note = {\url{http://www.ctan.org/pkg/booktabs}} +} + +@Manual{ACMIdentityStandards, + title = {{ACM} Visual Identity Standards}, + organization = {Association for Computing Machinery}, + year = 2007, + note = {\url{http://identitystandards.acm.org}} +} + +@Manual{Sommerfeldt13:Subcaption, + title = {The subcaption package}, + author = {Axel Sommerfeldt}, + year = 2013, + month = apr, + note = {\url{http://www.ctan.org/pkg/subcaption}} +} + +@Manual{Nomencl, + title = {A package to create a nomenclature}, + author = {Boris Veytsman and Bern Schandl and Lee Netherton + and C. V. Radhakrishnan}, + year = 2005, + month = sep, + note = {\url{http://www.ctan.org/pkg/nomencl}} +} + +@Manual{Talbot16:Glossaries, + title = {User Manual for glossaries.sty v4.44}, + author = {Nicola L. C. Talbot}, + year = 2019, + month = dec, + note = {\url{http://www.ctan.org/pkg/glossaries}} +} + +@Manual{Carlisle04:Textcase, + title = {The \textsl{textcase} package}, + author = {David Carlisle}, + month = oct, + year = 2004, + note = {\url{http://www.ctan.org/pkg/textcase}} +} + diff --git a/docs/necessary/teaser.png b/docs/necessary/teaser.png new file mode 100644 index 0000000000000000000000000000000000000000..4bc9ce6bac1a21bd1d1a76f309058b9183b89a4f Binary files /dev/null and b/docs/necessary/teaser.png differ diff --git a/docs/sample-franklin.png b/docs/sample-franklin.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b2af9131a7983bb96fcadb86d38f13f360e9c7 Binary files /dev/null and b/docs/sample-franklin.png differ diff --git a/docs/sample-sigplan.aux b/docs/sample-sigplan.aux new file mode 100644 index 0000000000000000000000000000000000000000..4666628ba3d6a3ab6c3a0fed2f12c99252c4a448 --- /dev/null +++ b/docs/sample-sigplan.aux @@ -0,0 +1,94 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\@writefile{lof}{\contentsline {figure}{\numberline {1}{\ignorespaces Seattle Mariners at Spring Training, 2010.\relax }}{1}{figure.caption.1}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{fig:teaser}{{1}{1}{Seattle Mariners at Spring Training, 2010.\relax }{figure.caption.1}{}} +\@writefile{toc}{\contentsline {section}{Abstract}{1}{section*.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {1}Introduction}{1}{section.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {2}Template Overview}{2}{section.2}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Template Styles}{2}{subsection.2.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Template Parameters}{2}{subsection.2.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {3}Modifications}{2}{section.3}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {4}Typefaces}{2}{section.4}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {5}Title Information}{2}{section.5}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {6}Authors and Affiliations}{2}{section.6}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {7}Rights Information}{3}{section.7}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {8}CCS Concepts and User-Defined Keywords}{3}{section.8}\protected@file@percent } +\@writefile{lot}{\contentsline {table}{\numberline {1}{\ignorespaces Frequency of Special Characters\relax }}{3}{table.caption.6}\protected@file@percent } +\newlabel{tab:freq}{{1}{3}{Frequency of Special Characters\relax }{table.caption.6}{}} +\@writefile{toc}{\contentsline {section}{\numberline {9}Sectioning Commands}{3}{section.9}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {10}Tables}{3}{section.10}\protected@file@percent } +\citation{Lamport:LaTeX} +\@writefile{lot}{\contentsline {table}{\numberline {2}{\ignorespaces Some Typical Commands\relax }}{4}{table.caption.7}\protected@file@percent } +\newlabel{tab:commands}{{2}{4}{Some Typical Commands\relax }{table.caption.7}{}} +\@writefile{toc}{\contentsline {section}{\numberline {11}Math Equations}{4}{section.11}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {11.1}Inline (In-text) Equations}{4}{subsection.11.1}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {11.2}Display Equations}{4}{subsection.11.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {12}Figures}{4}{section.12}\protected@file@percent } +\@writefile{lof}{\contentsline {figure}{\numberline {2}{\ignorespaces 1907 Franklin Model D roadster. Photograph by Harris \& Ewing, Inc. [Public domain], via Wikimedia Commons. (\url {https://goo.gl/VLCRBB}).\relax }}{4}{figure.caption.8}\protected@file@percent } +\citation{Abril07} +\citation{Cohen07} +\citation{JCohen96} +\citation{Kosiur01} +\citation{Harel79} +\citation{Editor00} +\citation{Editor00a} +\citation{Spector90} +\citation{Douglass98} +\citation{Knuth97} +\citation{Andler79,Hagerup1993} +\citation{Smith10} +\citation{VanGundy07} +\citation{Harel78} +\citation{Bornmann2019,AnzarootPBM14} +\citation{Clarkson85} +\citation{anisi03} +\citation{Thornburg01,Ablamowicz07,Poker06} +\citation{Obama08} +\citation{Novak03} +\citation{Lee05} +\citation{JoeScientist001} +\citation{rous08} +\citation{SaeediMEJ10} +\citation{SaeediJETC10} +\citation{Kirschmer:2010:AEI:1958016.1958018} +\citation{MR781536} +\citation{MR781537} +\citation{2004:ITE:1009386.1010128,Kirschmer:2010:AEI:1958016.1958018} +\citation{TUGInstmem,Thornburg01,CTANacmart} +\citation{R} +\citation{UMassCitations} +\bibstyle{ACM-Reference-Format} +\bibdata{sample-base} +\@writefile{toc}{\contentsline {subsection}{\numberline {12.1}The ``Teaser Figure''}{5}{subsection.12.1}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {13}Citations and Bibliographies}{5}{section.13}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {14}Acknowledgments}{5}{section.14}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {15}Appendices}{5}{section.15}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {16}SIGCHI Extended Abstracts}{5}{section.16}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{Acknowledgments}{5}{section*.10}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {A}Research Methods}{5}{appendix.A}\protected@file@percent } +\@writefile{toc}{\contentsline {subsection}{\numberline {A.1}Part One}{5}{subsection.A.1}\protected@file@percent } +\newlabel{tocindent-1}{0pt} +\newlabel{tocindent0}{0pt} +\newlabel{tocindent1}{9.29999pt} +\newlabel{tocindent2}{16.14998pt} +\newlabel{tocindent3}{0pt} +\@writefile{toc}{\contentsline {subsection}{\numberline {A.2}Part Two}{6}{subsection.A.2}\protected@file@percent } +\@writefile{toc}{\contentsline {section}{\numberline {B}Online Resources}{6}{appendix.B}\protected@file@percent } +\newlabel{TotPages}{{6}{6}{}{page.6}{}} diff --git a/docs/sample-sigplan.log b/docs/sample-sigplan.log new file mode 100644 index 0000000000000000000000000000000000000000..4e3ec3b2962abcdf8924c0107957024c644c6b15 --- /dev/null +++ b/docs/sample-sigplan.log @@ -0,0 +1,1291 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.20 (TeX Live 2019/Debian) (preloaded format=pdflatex 2020.10.23) 1 DEC 2020 12:26 +entering extended mode + restricted \write18 enabled. + %&-line parsing enabled. +**sample-sigplan.tex +(./sample-sigplan.tex +LaTeX2e <2020-02-02> patch level 2 +L3 programming layer <2020-02-14> (./acmart.cls +Document Class: acmart 2020/11/15 v1.75 Typesetting articles for the Associatio +n for Computing Machinery +(/usr/share/texlive/texmf-dist/tex/latex/xkeyval/xkeyval.sty +Package: xkeyval 2014/12/03 v2.7a package option processing (HA) + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkeyval.tex +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/xkvutils.tex +\XKV@toks=\toks14 +\XKV@tempa@toks=\toks15 + +(/usr/share/texlive/texmf-dist/tex/generic/xkeyval/keyval.tex)) +\XKV@depth=\count167 +File: xkeyval.tex 2014/12/03 v2.7a key=value parser (HA) +)) +(/usr/share/texlive/texmf-dist/tex/generic/xstring/xstring.sty +(/usr/share/texlive/texmf-dist/tex/generic/xstring/xstring.tex +\integerpart=\count168 +\decimalpart=\count169 +) +Package: xstring 2019/02/06 v1.83 String manipulations (CT) +) +(/usr/share/texlive/texmf-dist/tex/generic/iftex/iftex.sty +Package: iftex 2019/11/07 v1.0c TeX engine tests +) +Package acmart Info: Not using screen mode on input line 73. +Package acmart Info: Using breaking urls on hyphens on input line 81. +Package acmart Info: Requiring acmthm on input line 89. +Package acmart Info: Not using review mode on input line 98. +Package acmart Info: Not using authorversion mode on input line 106. +Package acmart Info: Not using nonacm mode on input line 118. +Package acmart Info: Explicitly selecting natbib mode on input line 130. +Package acmart Info: Not using anonymous mode on input line 138. +Package acmart Info: Not using timestamp mode on input line 146. +Package acmart Info: Not using authordraft mode on input line 156. +Package acmart Info: Using screen mode on input line 165. +Class acmart Info: Using format sigplan, number 6 on input line 165. +Class acmart Info: Using fontsize 10pt on input line 249. + +(/usr/share/texlive/texmf-dist/tex/latex/amscls/amsart.cls +Document Class: amsart 2017/10/31 v2.20.4 +\linespacing=\dimen134 +\normalparindent=\dimen135 +\normaltopskip=\skip47 +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsmath.sty +Package: amsmath 2020/01/20 v2.17e AMS math features +\@mathmargin=\skip48 + +For additional information on amsmath, use the `?' option. +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amstext.sty +Package: amstext 2000/06/29 v2.01 AMS text + +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsgen.sty +File: amsgen.sty 1999/11/30 v2.0 generic functions +\@emptytoks=\toks16 +\ex@=\dimen136 +)) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsbsy.sty +Package: amsbsy 1999/11/29 v1.2d Bold Symbols +\pmbraise@=\dimen137 +) +(/usr/share/texlive/texmf-dist/tex/latex/amsmath/amsopn.sty +Package: amsopn 2016/03/08 v2.02 operator names +) +\inf@bad=\count170 +LaTeX Info: Redefining \frac on input line 227. +\uproot@=\count171 +\leftroot@=\count172 +LaTeX Info: Redefining \overline on input line 389. +\classnum@=\count173 +\DOTSCASE@=\count174 +LaTeX Info: Redefining \ldots on input line 486. +LaTeX Info: Redefining \dots on input line 489. +LaTeX Info: Redefining \cdots on input line 610. +\Mathstrutbox@=\box45 +\strutbox@=\box46 +\big@size=\dimen138 +LaTeX Font Info: Redeclaring font encoding OML on input line 733. +LaTeX Font Info: Redeclaring font encoding OMS on input line 734. +\macc@depth=\count175 +\c@MaxMatrixCols=\count176 +\dotsspace@=\muskip16 +\c@parentequation=\count177 +\dspbrk@lvl=\count178 +\tag@help=\toks17 +\row@=\count179 +\column@=\count180 +\maxfields@=\count181 +\andhelp@=\toks18 +\eqnshift@=\dimen139 +\alignsep@=\dimen140 +\tagshift@=\dimen141 +\tagwidth@=\dimen142 +\totwidth@=\dimen143 +\lineht@=\dimen144 +\@envbody=\toks19 +\multlinegap=\skip49 +\multlinetaggap=\skip50 +\mathdisplay@stack=\toks20 +LaTeX Info: Redefining \[ on input line 2859. +LaTeX Info: Redefining \] on input line 2860. +) +LaTeX Font Info: Trying to load font information for U+msa on input line 398 +. + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/amsfonts.sty +Package: amsfonts 2013/01/14 v3.01 Basic AMSFonts support +\symAMSa=\mathgroup4 +\symAMSb=\mathgroup5 +LaTeX Font Info: Redeclaring math symbol \hbar on input line 98. +LaTeX Font Info: Overwriting math alphabet `\mathfrak' in version `bold' +(Font) U/euf/m/n --> U/euf/b/n on input line 106. +) +\copyins=\insert199 +\abstractbox=\box47 +\listisep=\skip51 +\c@part=\count182 +\c@section=\count183 +\c@subsection=\count184 +\c@subsubsection=\count185 +\c@paragraph=\count186 +\c@subparagraph=\count187 +\c@figure=\count188 +\c@table=\count189 +\abovecaptionskip=\skip52 +\belowcaptionskip=\skip53 +\captionindent=\dimen145 +\thm@style=\toks21 +\thm@bodyfont=\toks22 +\thm@headfont=\toks23 +\thm@notefont=\toks24 +\thm@headpunct=\toks25 +\thm@preskip=\skip54 +\thm@postskip=\skip55 +\thm@headsep=\skip56 +\dth@everypar=\toks26 +) +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.sty +Package: microtype 2019/11/18 v2.7d Micro-typographical refinements (RS) +\MT@toks=\toks27 +\MT@count=\count190 +LaTeX Info: Redefining \textls on input line 790. +\MT@outer@kern=\dimen146 +LaTeX Info: Redefining \textmicrotypecontext on input line 1354. +\MT@listname@count=\count191 + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype-pdftex.def +File: microtype-pdftex.def 2019/11/18 v2.7d Definitions specific to pdftex (RS) + +LaTeX Info: Redefining \lsstyle on input line 914. +LaTeX Info: Redefining \lslig on input line 914. +\MT@outer@space=\skip57 +) +Package microtype Info: Loading configuration file microtype.cfg. + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/microtype.cfg +File: microtype.cfg 2019/11/18 v2.7d microtype main configuration file (RS) +)) +(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2019/09/21 v2.5h e-TeX tools for LaTeX (JAW) +\etb@tempcnta=\count192 +) +(/usr/share/texlive/texmf-dist/tex/latex/booktabs/booktabs.sty +Package: booktabs 2020/01/12 v1.61803398 Publication quality tables +\heavyrulewidth=\dimen147 +\lightrulewidth=\dimen148 +\cmidrulewidth=\dimen149 +\belowrulesep=\dimen150 +\belowbottomsep=\dimen151 +\aboverulesep=\dimen152 +\abovetopsep=\dimen153 +\cmidrulesep=\dimen154 +\cmidrulekern=\dimen155 +\defaultaddspace=\dimen156 +\@cmidla=\count193 +\@cmidlb=\count194 +\@aboverulesep=\dimen157 +\@belowrulesep=\dimen158 +\@thisruleclass=\count195 +\@lastruleclass=\count196 +\@thisrulewidth=\dimen159 +) +(/usr/share/texlive/texmf-dist/tex/latex/refcount/refcount.sty +Package: refcount 2019/12/15 v3.6 Data extraction from label references (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/ltxcmds/ltxcmds.sty +Package: ltxcmds 2019/12/15 v1.24 LaTeX kernel commands for general use (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/infwarerr/infwarerr.sty +Package: infwarerr 2019/12/03 v1.5 Providing info/warning/error messages (HO) +)) +(/usr/share/texlive/texmf-dist/tex/latex/totpages/totpages.sty +Package: totpages 2005/09/19 v2.00 Totpages Package (muewi) + +(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) +(/usr/share/texlive/texmf-dist/tex/latex/environ/environ.sty +Package: environ 2014/05/04 v0.3 A new way to define environments + +(/usr/share/texlive/texmf-dist/tex/latex/trimspaces/trimspaces.sty +Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list +)) +(/usr/share/texlive/texmf-dist/tex/latex/textcase/textcase.sty +Package: textcase 2019/09/14 v1.00 Text only upper/lower case changing (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/natbib/natbib.sty +Package: natbib 2010/09/13 8.31b (PWD, AO) +\bibhang=\skip58 +\bibsep=\skip59 +LaTeX Info: Redefining \cite on input line 694. +\c@NAT@ctr=\count197 +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hyperref.sty +Package: hyperref 2020/01/14 v7.00d Hypertext links for LaTeX + +(/usr/share/texlive/texmf-dist/tex/latex/pdftexcmds/pdftexcmds.sty +Package: pdftexcmds 2019/11/24 v0.31 Utility functions of pdfTeX for LuaTeX (HO +) +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texlive/texmf-dist/tex/generic/kvsetkeys/kvsetkeys.sty +Package: kvsetkeys 2019/12/15 v1.18 Key value parser (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/kvdefinekeys/kvdefinekeys.sty +Package: kvdefinekeys 2019-12-19 v1.6 Define keys (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/pdfescape/pdfescape.sty +Package: pdfescape 2019/12/09 v1.15 Implements pdfTeX's escape features (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/hycolor/hycolor.sty +Package: hycolor 2020-01-27 v1.10 Color options for hyperref/bookmark (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/letltxmacro/letltxmacro.sty +Package: letltxmacro 2019/12/03 v1.6 Let assignment for LaTeX macros (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/auxhook/auxhook.sty +Package: auxhook 2019-12-17 v1.6 Hooks for auxiliary files (HO) +) +(/usr/share/texlive/texmf-dist/tex/latex/kvoptions/kvoptions.sty +Package: kvoptions 2019/11/29 v3.13 Key value format for package options (HO) +) +\@linkdim=\dimen160 +\Hy@linkcounter=\count198 +\Hy@pagecounter=\count266 + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/pd1enc.def +File: pd1enc.def 2020/01/14 v7.00d Hyperref: PDFDocEncoding definition (HO) +Now handling font encoding PD1 ... +... no UTF-8 mapping file for font encoding PD1 +) +(/usr/share/texlive/texmf-dist/tex/generic/intcalc/intcalc.sty +Package: intcalc 2019/12/15 v1.3 Expandable calculations with integers (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/etexcmds/etexcmds.sty +Package: etexcmds 2019/12/15 v1.7 Avoid name clashes with e-TeX commands (HO) +) +\Hy@SavedSpaceFactor=\count267 +\pdfmajorversion=\count268 +Package hyperref Info: Option `bookmarksnumbered' set `true' on input line 4421 +. +Package hyperref Info: Option `unicode' set `true' on input line 4421. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/puenc.def +File: puenc.def 2020/01/14 v7.00d Hyperref: PDF Unicode definition (HO) +Now handling font encoding PU ... +... no UTF-8 mapping file for font encoding PU +) +Package hyperref Info: Hyper figures OFF on input line 4547. +Package hyperref Info: Link nesting OFF on input line 4552. +Package hyperref Info: Hyper index ON on input line 4555. +Package hyperref Info: Plain pages OFF on input line 4562. +Package hyperref Info: Backreferencing OFF on input line 4567. +Package hyperref Info: Implicit mode ON; LaTeX internals redefined. +Package hyperref Info: Bookmarks ON on input line 4800. +\c@Hy@tempcnt=\count269 + +(/usr/share/texlive/texmf-dist/tex/latex/url/url.sty +\Urlmuskip=\muskip17 +Package: url 2013/09/16 ver 3.4 Verb mode for urls, etc. +) +LaTeX Info: Redefining \url on input line 5159. +\XeTeXLinkMargin=\dimen161 + +(/usr/share/texlive/texmf-dist/tex/generic/bitset/bitset.sty +Package: bitset 2019/12/09 v1.3 Handle bit-vector datatype (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/bigintcalc/bigintcalc.sty +Package: bigintcalc 2019/12/15 v1.5 Expandable calculations on big integers (HO +) +)) +\Fld@menulength=\count270 +\Field@Width=\dimen162 +\Fld@charsize=\dimen163 +Package hyperref Info: Hyper figures OFF on input line 6430. +Package hyperref Info: Link nesting OFF on input line 6435. +Package hyperref Info: Hyper index ON on input line 6438. +Package hyperref Info: backreferencing OFF on input line 6445. +Package hyperref Info: Link coloring OFF on input line 6450. +Package hyperref Info: Link coloring with OCG OFF on input line 6455. +Package hyperref Info: PDF/A mode OFF on input line 6460. +LaTeX Info: Redefining \ref on input line 6500. +LaTeX Info: Redefining \pageref on input line 6504. + +(/usr/share/texlive/texmf-dist/tex/generic/atbegshi/atbegshi.sty +Package: atbegshi 2019/12/05 v1.19 At begin shipout hook (HO) +) +\Hy@abspage=\count271 +\c@Item=\count272 +\c@Hfootnote=\count273 +) +Package hyperref Info: Driver (autodetected): hpdftex. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/hpdftex.def +File: hpdftex.def 2020/01/14 v7.00d Hyperref driver for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/latex/atveryend/atveryend.sty +Package: atveryend 2019-12-11 v1.11 Hooks at the very end of document (HO) +) +\Fld@listcount=\count274 +\c@bookmark@seq@number=\count275 + +(/usr/share/texlive/texmf-dist/tex/latex/rerunfilecheck/rerunfilecheck.sty +Package: rerunfilecheck 2019/12/05 v1.9 Rerun checks for auxiliary files (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/uniquecounter/uniquecounter.sty +Package: uniquecounter 2019/12/15 v1.4 Provide unlimited unique counter (HO) +) +Package uniquecounter Info: New unique counter `rerunfilecheck' on input line 2 +86. +) +\Hy@SectionHShift=\skip60 +) +(/usr/share/texlive/texmf-dist/tex/latex/hyperxmp/hyperxmp.sty +Package: hyperxmp 2019/04/05 v4.1 Store hyperref metadata in XMP format + +(/usr/share/texlive/texmf-dist/tex/generic/stringenc/stringenc.sty +Package: stringenc 2019/11/29 v1.12 Convert strings between diff. encodings (HO +) +) +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifxetex.sty +Package: ifxetex 2019/10/25 v0.7 ifxetex legacy package. Use iftex instead. +) +(/usr/share/texlive/texmf-dist/tex/latex/ifmtarg/ifmtarg.sty +Package: ifmtarg 2018/04/16 v1.2b check for an empty argument +) +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifluatex.sty +Package: ifluatex 2019/10/25 v1.5 ifluatex legacy package. Use iftex instead. +)) +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2019/11/30 v1.2a Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2019/11/30 v1.4a Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 2016/01/03 v1.10 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/graphics.cfg +File: graphics.cfg 2016/06/04 v1.11 sample graphics configuration +) +Package graphics Info: Driver file: pdftex.def on input line 105. + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/pdftex.def +File: pdftex.def 2018/01/08 v1.0l Graphics/color driver for pdftex +)) +\Gin@req@height=\dimen164 +\Gin@req@width=\dimen165 +) +(/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2016/05/11 v2.12 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg +File: color.cfg 2016/01/02 v1.6 sample color configuration +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1348. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1352. +Package xcolor Info: Model `RGB' extended on input line 1364. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1366. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1367. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1368. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1369. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1370. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1371. +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2020/01/02 v5.9 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/generic/iftex/ifvtex.sty +Package: ifvtex 2019/10/25 v1.7 ifvtex legacy package. Use iftex instead. +) +\Gm@cnth=\count276 +\Gm@cntv=\count277 +\c@Gm@tempcnt=\count278 +\Gm@bindingoffset=\dimen166 +\Gm@wd@mp=\dimen167 +\Gm@odd@mp=\dimen168 +\Gm@even@mp=\dimen169 +\Gm@layoutwidth=\dimen170 +\Gm@layoutheight=\dimen171 +\Gm@layouthoffset=\dimen172 +\Gm@layoutvoffset=\dimen173 +\Gm@dimlist=\toks28 +) +(/usr/share/texlive/texmf-dist/tex/latex/ncctools/manyfoot.sty +Package: manyfoot 2019/08/03 v1.11 Many Footnote Levels Package (NCC) + +(/usr/share/texlive/texmf-dist/tex/latex/ncctools/nccfoots.sty +Package: nccfoots 2005/02/03 v1.2 NCC Footnotes Package (NCC) +) +\MFL@columnwidth=\dimen174 +) +\footinsauthorsaddresses=\insert252 +\c@footnoteauthorsaddresses=\count279 +\footinscopyrightpermission=\insert251 +\c@footnotecopyrightpermission=\count280 + +(/usr/share/texlive/texmf-dist/tex/generic/pdftex/glyphtounicode.tex) +(/usr/share/texlive/texmf-dist/tex/latex/cmap/cmap.sty +Package: cmap 2008/03/06 v1.0h CMap support: searchable PDF +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2020/02/11 v2.0o Standard LaTeX package +<<t1.cmap>>) +(/usr/share/texlive/texmf-dist/tex/latex/libertine/libertine.sty +Package: libertine 2019/07/01 (Bob Tennent) Supports Libertine and Biolinum fon +ts for all LaTeX engines. + +(/usr/share/texlive/texmf-dist/tex/latex/base/textcomp.sty +Package: textcomp 2020/02/02 v2.0n Standard LaTeX package +) +(/usr/share/texlive/texmf-dist/tex/latex/base/fontenc.sty +Package: fontenc 2020/02/11 v2.0o Standard LaTeX package +) +(/usr/share/texlive/texmf-dist/tex/latex/fontaxes/fontaxes.sty +Package: fontaxes 2014/03/23 v1.0d Font selection axes +LaTeX Info: Redefining \upshape on input line 29. +LaTeX Info: Redefining \itshape on input line 31. +LaTeX Info: Redefining \slshape on input line 33. +LaTeX Info: Redefining \swshape on input line 35. +LaTeX Info: Redefining \scshape on input line 37. +LaTeX Info: Redefining \sscshape on input line 39. +LaTeX Info: Redefining \ulcshape on input line 41. +LaTeX Info: Redefining \textsw on input line 47. +LaTeX Info: Redefining \textssc on input line 48. +LaTeX Info: Redefining \textulc on input line 49. +) +LaTeX Info: Redefining \oldstylenums on input line 494. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/LinLibertine_I.tex)) +(/usr/share/texlive/texmf-dist/tex/latex/inconsolata/zi4.sty +Package: zi4 2019/05/17 v1.12 + +`inconsolata-zi4' v1.12, 2019/05/17 Text macros for Inconsolata (msharpe) +\zifour@ocount=\count281 +) +(/usr/share/texlive/texmf-dist/tex/latex/newtx/newtxmath.sty +Package: newtxmath 2020/01/25 v1.624 + +`newtxmath' v1.624, 2020/01/25 Math macros based originally on txfonts (msharpe +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/centernot.sty +Package: centernot 2016/05/16 v1.4 Centers the not symbol horizontally (HO) +) +\tx@cntz=\count282 + +(/usr/share/texlive/texmf-dist/tex/generic/kastrup/binhex.tex) +\tx@Isdigit=\count283 +\tx@IsAlNum=\count284 +\tx@tA=\toks29 +\tx@tB=\toks30 +\tx@su=\read2 +LaTeX Font Info: Redeclaring symbol font `operators' on input line 317. +LaTeX Font Info: Overwriting symbol font `operators' in version `normal' +(Font) OT1/cmr/m/n --> OT1/LinuxLibertineT-TLF/m/n on input li +ne 317. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/m/n on input l +ine 317. +LaTeX Font Info: Overwriting symbol font `operators' in version `bold' +(Font) OT1/LinuxLibertineT-TLF/m/n --> OT1/LinuxLibertineT-TLF +/sb/n on input line 318. +LaTeX Font Info: Redeclaring math alphabet \mathsf on input line 326. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `normal' +(Font) OT1/cmss/m/n --> T1/LinuxBiolinumT-TLF/m/n on input lin +e 326. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) OT1/cmss/bx/n --> T1/LinuxBiolinumT-TLF/m/n on input li +ne 326. +LaTeX Font Info: Redeclaring math alphabet \mathit on input line 327. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `normal' +(Font) OT1/cmr/m/it --> OT1/LinuxLibertineT-TLF/m/it on input +line 327. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/cmr/bx/it --> OT1/LinuxLibertineT-TLF/m/it on input + line 327. +LaTeX Font Info: Redeclaring math alphabet \mathtt on input line 328. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `normal' +(Font) OT1/cmtt/m/n --> T1/zi4/m/n on input line 328. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) OT1/cmtt/m/n --> T1/zi4/m/n on input line 328. +LaTeX Font Info: Redeclaring math alphabet \mathbf on input line 330. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `normal' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/sb/n on input +line 330. +LaTeX Font Info: Overwriting math alphabet `\mathbf' in version `bold' +(Font) OT1/cmr/bx/n --> OT1/LinuxLibertineT-TLF/sb/n on input +line 330. +LaTeX Font Info: Overwriting math alphabet `\mathit' in version `bold' +(Font) OT1/LinuxLibertineT-TLF/m/it --> OT1/LinuxLibertineT-TL +F/sb/it on input line 331. +LaTeX Font Info: Overwriting math alphabet `\mathsf' in version `bold' +(Font) T1/LinuxBiolinumT-TLF/m/n --> T1/LinuxBiolinumT-TLF/b/n + on input line 332. +LaTeX Font Info: Overwriting math alphabet `\mathtt' in version `bold' +(Font) T1/zi4/m/n --> T1/zi4/b/n on input line 333. +LaTeX Font Info: Redeclaring symbol font `letters' on input line 350. +LaTeX Font Info: Overwriting symbol font `letters' in version `normal' +(Font) OML/cmm/m/it --> OML/nxlmi/m/it on input line 350. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/cmm/b/it --> OML/nxlmi/m/it on input line 350. +LaTeX Font Info: Overwriting symbol font `letters' in version `bold' +(Font) OML/nxlmi/m/it --> OML/nxlmi/b/it on input line 351. +\symlettersA=\mathgroup6 +LaTeX Font Info: Overwriting symbol font `lettersA' in version `bold' +(Font) U/ntxmia/m/it --> U/ntxmia/b/it on input line 476. +LaTeX Font Info: Redeclaring math alphabet \mathfrak on input line 478. +Now handling font encoding LMS ... +... no UTF-8 mapping file for font encoding LMS +LaTeX Font Info: Redeclaring symbol font `symbols' on input line 497. +LaTeX Font Info: Encoding `OMS' has changed to `LMS' for symbol font +(Font) `symbols' in the math version `normal' on input line 497. +LaTeX Font Info: Overwriting symbol font `symbols' in version `normal' +(Font) OMS/cmsy/m/n --> LMS/ntxsy/m/n on input line 497. +LaTeX Font Info: Encoding `OMS' has changed to `LMS' for symbol font +(Font) `symbols' in the math version `bold' on input line 497. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) OMS/cmsy/b/n --> LMS/ntxsy/m/n on input line 497. +LaTeX Font Info: Overwriting symbol font `symbols' in version `bold' +(Font) LMS/ntxsy/m/n --> LMS/ntxsy/b/n on input line 498. +\symAMSm=\mathgroup7 +LaTeX Font Info: Overwriting symbol font `AMSm' in version `bold' +(Font) U/ntxsym/m/n --> U/ntxsym/b/n on input line 521. +\symsymbolsC=\mathgroup8 +LaTeX Font Info: Overwriting symbol font `symbolsC' in version `bold' +(Font) U/ntxsyc/m/n --> U/ntxsyc/b/n on input line 542. +Now handling font encoding LMX ... +... no UTF-8 mapping file for font encoding LMX +LaTeX Font Info: Redeclaring symbol font `largesymbols' on input line 555. +LaTeX Font Info: Encoding `OMX' has changed to `LMX' for symbol font +(Font) `largesymbols' in the math version `normal' on input line 5 +55. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `normal' +(Font) OMX/cmex/m/n --> LMX/ntxexx/m/n on input line 555. +LaTeX Font Info: Encoding `OMX' has changed to `LMX' for symbol font +(Font) `largesymbols' in the math version `bold' on input line 555 +. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) OMX/cmex/m/n --> LMX/ntxexx/m/n on input line 555. +LaTeX Font Info: Overwriting symbol font `largesymbols' in version `bold' +(Font) LMX/ntxexx/m/n --> LMX/ntxexx/b/n on input line 556. +\symlargesymbolsTXA=\mathgroup9 +LaTeX Font Info: Overwriting symbol font `largesymbolsTXA' in version `bold' + +(Font) U/ntxexa/m/n --> U/ntxexa/b/n on input line 570. +\tx@sbptoks=\toks31 +LaTeX Font Info: Redeclaring math delimiter \lfloor on input line 792. +LaTeX Font Info: Redeclaring math delimiter \rfloor on input line 793. +LaTeX Font Info: Redeclaring math delimiter \lceil on input line 794. +LaTeX Font Info: Redeclaring math delimiter \rceil on input line 795. +LaTeX Font Info: Redeclaring math delimiter \lbrace on input line 796. +LaTeX Font Info: Redeclaring math delimiter \rbrace on input line 797. +LaTeX Font Info: Redeclaring math delimiter \langle on input line 798. +LaTeX Font Info: Redeclaring math delimiter \rangle on input line 800. +LaTeX Font Info: Redeclaring math delimiter \arrowvert on input line 804. +LaTeX Font Info: Redeclaring math delimiter \vert on input line 805. +LaTeX Font Info: Redeclaring math accent \dot on input line 876. +LaTeX Font Info: Redeclaring math accent \ddot on input line 877. +LaTeX Font Info: Redeclaring math accent \vec on input line 1940. +\ntx@numstart=\count285 +\ntx@UCstart=\count286 +\ntx@lcstart=\count287 +\ntx@tmpc=\count288 +\ntx@imath=\count289 +\ntx@jmath=\count290 +LaTeX Info: Redefining \Bbbk on input line 2449. +LaTeX Info: Redefining \not on input line 2598. +LaTeX Info: Redefining \textsquare on input line 2628. +LaTeX Info: Redefining \openbox on input line 2630. +) +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption.sty +Package: caption 2020/01/03 v3.4h Customizing captions (AR) + +(/usr/share/texlive/texmf-dist/tex/latex/caption/caption3.sty +Package: caption3 2020/01/03 v1.8h caption3 kernel (AR) +Package caption3 Info: TeX engine: e-TeX on input line 61. +\captionmargin=\dimen175 +\captionmargin@=\dimen176 +\captionwidth=\dimen177 +\caption@tempdima=\dimen178 +\caption@indent=\dimen179 +\caption@parindent=\dimen180 +\caption@hangindent=\dimen181 +Package caption Info: AMS or SMF document class detected. +) +Package caption Info: AMS or SMF document class. +\c@caption@flags=\count291 +\c@continuedfloat=\count292 +Package caption Info: hyperref package is loaded. +) +(/usr/share/texlive/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count293 +\float@exts=\toks32 +\float@box=\box48 +\@float@everytoks=\toks33 +\@floatcapt=\box49 +) +\@float@every@sidebar=\toks34 +\c@sidebar=\count294 +\fulltextwidth=\dimen182 +\@ACM@labelwidth=\dimen183 +\listisep=\skip61 +\num@authorgroups=\count295 +\num@authors=\count296 +\@ACM@badge@width=\skip62 +\@ACM@title@width=\skip63 +\@ACM@badge@skip=\skip64 +Class acmart Info: Printing CCS on input line 1483. +Class acmart Info: Printing bibformat on input line 1483. +Class acmart Info: Suppressing folios on input line 1490. +Class acmart Info: Setting authorsperrow to 0 on input line 1493. + +(/usr/share/texlive/texmf-dist/tex/latex/comment/comment.sty +\CommentStream=\write3 + +Excluding comment 'comment') Excluding comment 'CCSXML' +\c@@concepts=\count297 +\mktitle@bx=\box50 +\@ACM@commabox=\box51 +\author@bx=\box52 +\author@bx@wd=\dimen184 +\author@bx@sep=\skip65 + +(/usr/share/texlive/texmf-dist/tex/latex/fancyhdr/fancyhdr.sty +Package: fancyhdr 2019/01/31 v3.10 Extensive control of page headers and footer +s +\f@nch@headwidth=\skip66 +\f@nch@O@elh=\skip67 +\f@nch@O@erh=\skip68 +\f@nch@O@olh=\skip69 +\f@nch@O@orh=\skip70 +\f@nch@O@elf=\skip71 +\f@nch@O@erf=\skip72 +\f@nch@O@olf=\skip73 +\f@nch@O@orf=\skip74 +) +\@folio@wd=\dimen185 +\@folio@ht=\dimen186 +\@folio@voffset=\dimen187 + +Special comment 'acks' +LaTeX Font Info: Trying to load font information for T1+LinuxLibertineT-TLF +on input line 3009. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/T1LinuxLibertineT-TLF.fd +File: T1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Li +nuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 3009. +) +Package hyperref Info: Option `colorlinks' set `true' on input line 73. +Package hyperref Info: Option `pdfdisplaydoctitle' set `true' on input line 73. + +\c@theorem=\count298 + +(/usr/share/texlive/texmf-dist/tex/latex/preprint/balance.sty +Package: balance 1999/02/23 4.3 (PWD) +\oldvsize=\dimen188 +) +Include comment 'screenonly' Excluding comment 'printonly' +Include comment 'anonsuppress' +(/usr/share/texlive/texmf-dist/tex/latex/l3backend/l3backend-pdfmode.def +File: l3backend-pdfmode.def 2020-02-03 L3 backend support: PDF mode +\l__kernel_color_stack_int=\count299 +\l__pdf_internal_box=\box53 +) +(./sample-sigplan.aux) +\openout1 = `sample-sigplan.aux'. + +LaTeX Font Info: Checking defaults for OML/nxlmi/m/it on input line 73. +LaTeX Font Info: Trying to load font information for OML+nxlmi on input line + 73. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/omlnxlmi.fd +File: omlnxlmi.fd 2013/11/19 Fontinst v1.933 font definitions for OML/nxlmi. +) +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for TS1/cmr/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for U/ntxexa/m/n on input line 73. +LaTeX Font Info: Trying to load font information for U+ntxexa on input line +73. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxexa.fd +File: untxexa.fd 2012/04/16 Fontinst v1.933 font definitions for U/ntxexa. +) +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for PD1/pdf/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for PU/pdf/m/n on input line 73. +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for LMS/ntxsy/m/n on input line 73. +LaTeX Font Info: Trying to load font information for LMS+ntxsy on input line + 73. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/lmsntxsy.fd +File: lmsntxsy.fd 2016/07/02 Fontinst v1.933 font definitions for LMS/ntxsy. +) +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Checking defaults for LMX/ntxexx/m/n on input line 73. +LaTeX Font Info: Trying to load font information for LMX+ntxexx on input lin +e 73. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/lmxntxexx.fd +File: lmxntxexx.fd 2016/07/03 Fontinst v1.933 font definitions for LMX/ntxexx. +) +LaTeX Font Info: ... okay on input line 73. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 73. +LaTeX Font Info: Trying to load font information for OT1+LinuxLibertineT-TLF + on input line 73. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/OT1LinuxLibertineT-TLF.fd +File: OT1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for OT1/ +LinuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 73. +<<ot1.cmap>> +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.2pt on input line 73. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 5.5pt on input line 73. +<<oml.cmap>> +LaTeX Font Info: Trying to load font information for U+msa on input line 73. + + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsa.fd +File: umsa.fd 2013/01/14 v3.01 AMS symbols A +) +LaTeX Font Info: Trying to load font information for U+msb on input line 73. + + +(/usr/share/texlive/texmf-dist/tex/latex/amsfonts/umsb.fd +File: umsb.fd 2013/01/14 v3.01 AMS symbols B +) +LaTeX Font Info: Trying to load font information for U+ntxmia on input line +73. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxmia.fd +File: untxmia.fd 2018/04/14 Fontinst v1.933 font definitions for U/ntxmia. +) +LaTeX Font Info: Trying to load font information for U+ntxsym on input line +73. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxsym.fd +File: untxsym.fd 2015/03/20 Fontinst v1.933 font definitions for U/ntxsym. +) +LaTeX Font Info: Trying to load font information for U+ntxsyc on input line +73. + +(/usr/share/texlive/texmf-dist/tex/latex/newtx/untxsyc.fd +File: untxsyc.fd 2012/04/12 Fontinst v1.933 font definitions for U/ntxsyc. +) +LaTeX Info: Redefining \microtypecontext on input line 73. +Package microtype Info: Generating PDF output. +Package microtype Info: Character protrusion enabled (level 2). +Package microtype Info: Using default protrusion set `alltext'. +Package microtype Info: Automatic font expansion enabled (level 2), +(microtype) stretch: 20, shrink: 20, step: 1, non-selected. +Package microtype Info: Using default expansion set `basictext'. +LaTeX Info: Redefining \showhyphens on input line 73. +Package microtype Info: No adjustment of tracking. +Package microtype Info: No adjustment of interword spacing. +Package microtype Info: No adjustment of character kerning. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. + +ABD: EveryShipout initializing macros +\AtBeginShipoutBox=\box54 +Package hyperref Info: Link coloring ON on input line 73. + +(/usr/share/texlive/texmf-dist/tex/latex/hyperref/nameref.sty +Package: nameref 2019/09/16 v2.46 Cross-referencing by name of section + +(/usr/share/texlive/texmf-dist/tex/generic/gettitlestring/gettitlestring.sty +Package: gettitlestring 2019/12/15 v1.6 Cleanup title references (HO) +) +\c@section@level=\count300 +) +LaTeX Info: Redefining \ref on input line 73. +LaTeX Info: Redefining \pageref on input line 73. +LaTeX Info: Redefining \nameref on input line 73. + +(./sample-sigplan.out) (./sample-sigplan.out) +\@outlinefile=\write4 +\openout4 = `sample-sigplan.out'. + + +(/usr/share/texlive/texmf-dist/tex/generic/stringenc/se-pdfdoc.def +File: se-pdfdoc.def 2019/11/29 v1.12 stringenc: PDFDocEncoding +) +(/usr/share/texlive/texmf-dist/tex/generic/stringenc/se-utf8.def +File: se-utf8.def 2019/11/29 v1.12 stringenc: UTF-8 +) +(/usr/share/texlive/texmf-dist/tex/context/base/mkii/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count301 +\scratchdimen=\dimen189 +\scratchbox=\box55 +\nofMPsegments=\count302 +\nofMParguments=\count303 +\everyMPshowfont=\toks35 +\MPscratchCnt=\count304 +\MPscratchDim=\dimen190 +\MPnumerator=\count305 +\makeMPintoPDFobject=\count306 +\everyMPtoPDFconversion=\toks36 +) (/usr/share/texlive/texmf-dist/tex/latex/epstopdf-pkg/epstopdf-base.sty +Package: epstopdf-base 2020-01-24 v2.11 Base part for package epstopdf +Package epstopdf-base Info: Redefining graphics rule for `.eps' on input line 4 +85. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: custom +* layout: <same size as paper> +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: twoside heightrounded +* h-part:(L,W,R)=(54.2025pt, 505.89pt, 54.2025pt) +* v-part:(T,H,B)=(72.26999pt, 650.43001pt, 72.26999pt) +* \paperwidth=614.295pt +* \paperheight=794.96999pt +* \textwidth=505.89pt +* \textheight=646.0pt +* \oddsidemargin=-18.06749pt +* \evensidemargin=-18.06749pt +* \topmargin=-27.0pt +* \headheight=13.0pt +* \headsep=14.0pt +* \topskip=10.0pt +* \footskip=12.0pt +* \marginparwidth=24.0pt +* \marginparsep=11.0pt +* \columnsep=24.0pt +* \skip\footins=7.0pt plus 11.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidetrue +* \@mparswitchtrue +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +\c@mv@tabular=\count307 +\c@mv@boldtabular=\count308 +(/usr/share/texlive/texmf-dist/tex/latex/upquote/upquote.sty +Package: upquote 2012/04/19 v1.3 upright-quote and grave-accent glyphs in verba +tim +) +Package caption Info: Begin \AtBeginDocument code. +Package caption Info: float package is loaded. +Package caption Info: End \AtBeginDocument code. + +Excluding 'CCSXML' comment. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 20.74pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 20.74pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 12.0pt on input line 231. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 12.0pt on input line 231. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: OT1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.8pt on input line 231. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.6pt on input line 231. + +(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-msa.cfg +File: mt-msa.cfg 2006/02/04 v1.1 microtype config. file: AMS symbols (a) (RS) +) +(/usr/share/texlive/texmf-dist/tex/latex/microtype/mt-msb.cfg +File: mt-msb.cfg 2005/06/01 v1.0 microtype config. file: AMS symbols (b) (RS) +) +LaTeX Font Info: Trying to load font information for TS1+LinuxLibertineT-TLF + on input line 231. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/TS1LinuxLibertineT-TLF.fd +File: TS1LinuxLibertineT-TLF.fd 2017/03/20 (autoinst) Font definitions for TS1/ +LinuxLibertineT-TLF. +) +LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.8pt on input line 231. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxLibertineT-TLF' (encoding: TS1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Trying to load font information for T1+LinuxBiolinumT-TLF o +n input line 231. + +(/usr/share/texlive/texmf-dist/tex/latex/libertine/T1LinuxBiolinumT-TLF.fd +File: T1LinuxBiolinumT-TLF.fd 2017/03/20 (autoinst) Font definitions for T1/Lin +uxBiolinumT-TLF. +) +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 231. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `LinuxBiolinumT-TLF' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 231. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 7.3pt on input line 231. +<sampleteaser.pdf, id=115, 2055.68pt x 511.9125pt> +File: sampleteaser.pdf Graphic file (type pdf) +<use sampleteaser.pdf> +Package pdftex.def Info: sampleteaser.pdf used on input line 231. +(pdftex.def) Requested size: 505.89pt x 125.97815pt. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 10.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.2pt on input line 231. +LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 6.2pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 8.0pt on input line 231. +LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 8.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 12.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 7.3pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/it' will be +(Font) scaled to size 10.0pt on input line 231. +LaTeX Font Info: Font shape `TS1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 10.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 10.0pt on input line 231. + +Overfull \hbox (3.11588pt too wide) in paragraph at lines 231--231 + []\T1/LinuxLibertineT-TLF/b/it/10 CCS Con-cepts: \TS1/LinuxLibertineT-TLF/m/n/ +10 � \T1/LinuxLibertineT-TLF/b/n/10 Com-puter sys-tems or-ga-ni-za-tion $\LMS/n +txsy/m/n/10 !$ \T1/LinuxLibertineT-TLF/b/n/10 Em- + [] + +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/b/n' will be +(Font) scaled to size 9.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 9.0pt on input line 231. +LaTeX Font Info: Font shape `T1/LinuxBiolinumT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 231. +LaTeX Font Info: Font shape `OT1/LinuxLibertineT-TLF/m/n' will be +(Font) scaled to size 9.0pt on input line 231. + +Overfull \hbox (8.57014pt too wide) in paragraph at lines 231--231 +\T1/LinuxLibertineT-TLF/m/n/9 (-20) Pa-tel, Huifen Chan, Charles Palmer, John S +mith, and Julius P. Kumquat. + [] + +[1.1{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map} + + <./sampleteaser.pdf>] +LaTeX Font Info: Trying to load font information for T1+zi4 on input line 24 +6. + +(/usr/share/texlive/texmf-dist/tex/latex/inconsolata/t1zi4.fd +File: t1zi4.fd 2018/01/14 T1/zi4 (Inconsolata) +) +LaTeX Font Info: Font shape `T1/zi4/m/n' will be +(Font) scaled to size 10.0pt on input line 246. +Package microtype Info: Loading generic protrusion settings for font family +(microtype) `zi4' (encoding: T1). +(microtype) For optimal results, create family-specific settings. +(microtype) See the microtype manual for details. +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/it' will be +(Font) scaled to size 7.3pt on input line 261. + +Overfull \hbox (1.40663pt too wide) in paragraph at lines 300--304 +\T1/LinuxLibertineT-TLF/m/n/10 (-20) fer-ence sub-mis-sion. Anonymizes the work + and in-cludes + [] + +[2.2] +Overfull \hbox (3.33664pt too wide) in paragraph at lines 424--427 +[]\T1/LinuxLibertineT-TLF/m/n/10 (-20) User-defined key-words are a comma-separ +ated list of words + [] + + +Overfull \hbox (5.99104pt too wide) in paragraph at lines 434--438 +[][]\T1/zi4/m/n/10 section[]\T1/LinuxLibertineT-TLF/m/n/10 (-20) , [][]\T1/zi4/ +m/n/10 subsection[]\T1/LinuxLibertineT-TLF/m/n/10 (-20) , [][]\T1/zi4/m/n/10 su +bsubsection[]\T1/LinuxLibertineT-TLF/m/n/10 (-20) , and [][]\T1/zi4/m/n/10 para +graph[]\T1/LinuxLibertineT-TLF/m/n/10 (-20) . They + [] + +[3.3] + +Package natbib Warning: Citation `Lamport:LaTeX' on page 4 undefined on input l +ine 520. + +<sample-franklin.png, id=167, 411.5375pt x 323.2075pt> +File: sample-franklin.png Graphic file (type png) +<use sample-franklin.png> +Package pdftex.def Info: sample-franklin.png used on input line 561. +(pdftex.def) Requested size: 240.94499pt x 189.23097pt. +[4.4 <./sample-franklin.png>] +Overfull \hbox (10.37471pt too wide) in paragraph at lines 605--605 +[] \T1/zi4/m/n/10 \includegraphics[width=\textwidth]{sampleteaser}[] + [] + +LaTeX Font Info: Font shape `T1/LinuxLibertineT-TLF/m/sc' will be +(Font) scaled to size 10.0pt on input line 609. + +Overfull \hbox (18.46985pt too wide) in paragraph at lines 616--618 +\T1/LinuxLibertineT-TLF/m/n/10 (-20) with these two com-mands, placed just be-f +ore the [][]\T1/zi4/m/n/10 \end{document} + [] + + +Package natbib Warning: Citation `Abril07' on page 5 undefined on input line 63 +4. + + +Package natbib Warning: Citation `Cohen07' on page 5 undefined on input line 63 +5. + + +Package natbib Warning: Citation `JCohen96' on page 5 undefined on input line 6 +36. + + +Package natbib Warning: Citation `Kosiur01' on page 5 undefined on input line 6 +36. + + +Package natbib Warning: Citation `Harel79' on page 5 undefined on input line 63 +8. + + +Package natbib Warning: Citation `Editor00' on page 5 undefined on input line 6 +39. + + +Package natbib Warning: Citation `Editor00a' on page 5 undefined on input line +640. + + +Package natbib Warning: Citation `Spector90' on page 5 undefined on input line +642. + + +Package natbib Warning: Citation `Douglass98' on page 5 undefined on input line + 643. + + +Package natbib Warning: Citation `Knuth97' on page 5 undefined on input line 64 +4. + + +Package natbib Warning: Citation `Andler79' on page 5 undefined on input line 6 +46. + + +Package natbib Warning: Citation `Hagerup1993' on page 5 undefined on input lin +e 646. + + +Package natbib Warning: Citation `Smith10' on page 5 undefined on input line 64 +7. + + +Package natbib Warning: Citation `VanGundy07' on page 5 undefined on input line + 648. + + +Package natbib Warning: Citation `Harel78' on page 5 undefined on input line 64 +9. + + +Package natbib Warning: Citation `Bornmann2019' on page 5 undefined on input li +ne 650. + + +Package natbib Warning: Citation `AnzarootPBM14' on page 5 undefined on input l +ine 650. + + +Package natbib Warning: Citation `Clarkson85' on page 5 undefined on input line + 650. + + +Package natbib Warning: Citation `anisi03' on page 5 undefined on input line 65 +1. + + +Package natbib Warning: Citation `Thornburg01' on page 5 undefined on input lin +e 652. + + +Package natbib Warning: Citation `Ablamowicz07' on page 5 undefined on input li +ne 652. + + +Package natbib Warning: Citation `Poker06' on page 5 undefined on input line 65 +2. + + +Package natbib Warning: Citation `Obama08' on page 5 undefined on input line 65 +3. + + +Package natbib Warning: Citation `Novak03' on page 5 undefined on input line 65 +3. + + +Package natbib Warning: Citation `Lee05' on page 5 undefined on input line 653. + + + +Package natbib Warning: Citation `JoeScientist001' on page 5 undefined on input + line 654. + + +Package natbib Warning: Citation `rous08' on page 5 undefined on input line 655 +. + + +Package natbib Warning: Citation `SaeediMEJ10' on page 5 undefined on input lin +e 656. + + +Package natbib Warning: Citation `SaeediJETC10' on page 5 undefined on input li +ne 656. + + +Package natbib Warning: Citation `Kirschmer:2010:AEI:1958016.1958018' on page 5 + undefined on input line 658. + + +Package natbib Warning: Citation `MR781536' on page 5 undefined on input line 6 +59. + + +Package natbib Warning: Citation `MR781537' on page 5 undefined on input line 6 +59. + + +Package natbib Warning: Citation `2004:ITE:1009386.1010128' on page 5 undefined + on input line 661. + + +Package natbib Warning: Citation `Kirschmer:2010:AEI:1958016.1958018' on page 5 + undefined on input line 661. + + +Package natbib Warning: Citation `TUGInstmem' on page 5 undefined on input line + 662. + + +Package natbib Warning: Citation `Thornburg01' on page 5 undefined on input lin +e 662. + + +Package natbib Warning: Citation `CTANacmart' on page 5 undefined on input line + 662. + + +Package natbib Warning: Citation `R' on page 5 undefined on input line 663. + + +Package natbib Warning: Citation `UMassCitations' on page 5 undefined on input +line 663. + + +Overfull \hbox (27.39621pt too wide) in paragraph at lines 687--690 +\T1/LinuxLibertineT-TLF/m/n/10 (-20) If your work needs an ap-pen-dix, add it b +e-fore the ``[][]\T1/zi4/m/n/10 \end{document}[]\T1/LinuxLibertineT-TLF/m/n/10 +(-20) '' + [] + +Processing 'acks' comment. +\openout3 = `comment.cut'. + + Comment 'acks' writing to comment.cut. +Straight input of comment.cut. (./comment.cut) +No file sample-sigplan.bbl. + +Overfull \hbox (1.43195pt too wide) in paragraph at lines 735--740 +\T1/LinuxLibertineT-TLF/m/n/10 (-20) Lorem ip-sum do-lor sit amet, con-secte-tu +r adip-isc-ing elit. Morbi + [] + +[5.5] + +Package natbib Warning: There were undefined citations. + +[6.6] +Package atveryend Info: Empty hook `BeforeClearDocument' on input line 761. +Package atveryend Info: Empty hook `AfterLastShipout' on input line 761. + (./sample-sigplan.aux) +Package atveryend Info: Executing hook `AtVeryEndDocument' on input line 761. +Package atveryend Info: Executing hook `AtEndAfterFileList' on input line 761. +Package rerunfilecheck Info: File `sample-sigplan.out' has not changed. +(rerunfilecheck) Checksum: CD9EB06E0A6A301FFA9A88D7EB42D44E;4031. + ) +Here is how much of TeX's memory you used: + 19288 strings out of 481239 + 291498 string characters out of 5920376 + 591702 words of memory out of 5000000 + 33683 multiletter control sequences out of 15000+600000 + 710387 words of font info for 324 fonts, out of 8000000 for 9000 + 1302 hyphenation exceptions out of 8191 + 63i,12n,100p,805b,603s stack positions out of 5000i,500n,10000p,200000b,80000s +{/usr/share/texlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_ncsllp.enc}{/us +r/share/texlive/texmf-dist/fonts/enc/dvips/libertine/lbtn_oexx6f.enc}{/usr/shar +e/texlive/texmf-dist/fonts/enc/dvips/inconsolata/i4-t1-4.enc}{/usr/share/texliv +e/texmf-dist/fonts/enc/dvips/libertine/lbtn_ki75ao.enc}{/usr/share/texlive/texm +f-dist/fonts/enc/dvips/libertine/lbtn_7grukw.enc}{/usr/share/texlive/texmf-dist +/fonts/enc/dvips/libertine/lbtn_25tcsq.enc}{/usr/share/texlive/texmf-dist/fonts +/enc/dvips/libertine/lbtn_naooyc.enc}{/usr/share/texlive/texmf-dist/fonts/enc/d +vips/libertine/lbtn_76gpa5.enc}{/usr/share/texlive/texmf-dist/fonts/enc/dvips/l +ibertine/lbtn_nh77jq.enc}</usr/share/texlive/texmf-dist/fonts/type1/public/inco +nsolata/Inconsolata-zi4r.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/ +newtx/LibertineMathMI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/new +tx/LibertineMathMI7.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx +/LibertineMathRM.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertin +e/LinBiolinumT.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/ +LinLibertineT.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/L +inLibertineTB.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/L +inLibertineTBI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/libertine/ +LinLibertineTI.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/txex +s.pfb></usr/share/texlive/texmf-dist/fonts/type1/public/newtx/txmiaX.pfb></usr/ +share/texlive/texmf-dist/fonts/type1/public/newtx/txsys.pfb> +Output written on sample-sigplan.pdf (6 pages, 995507 bytes). +PDF statistics: + 272 PDF objects out of 1000 (max. 8388607) + 224 compressed objects within 3 object streams + 44 named destinations out of 1000 (max. 500000) + 60147 words of extra memory for PDF output out of 61914 (max. 10000000) + diff --git a/docs/sample-sigplan.out b/docs/sample-sigplan.out new file mode 100644 index 0000000000000000000000000000000000000000..a36e1aaa0410cf333fc7c44fa94650ea1e20d7c6 --- /dev/null +++ b/docs/sample-sigplan.out @@ -0,0 +1,27 @@ +\BOOKMARK [1][-]{section*.2}{\376\377\000A\000b\000s\000t\000r\000a\000c\000t}{}% 1 +\BOOKMARK [1][-]{section.1}{\376\377\0001\000\040\000I\000n\000t\000r\000o\000d\000u\000c\000t\000i\000o\000n}{}% 2 +\BOOKMARK [1][-]{section.2}{\376\377\0002\000\040\000T\000e\000m\000p\000l\000a\000t\000e\000\040\000O\000v\000e\000r\000v\000i\000e\000w}{}% 3 +\BOOKMARK [2][-]{subsection.2.1}{\376\377\0002\000.\0001\000\040\000T\000e\000m\000p\000l\000a\000t\000e\000\040\000S\000t\000y\000l\000e\000s}{section.2}% 4 +\BOOKMARK [2][-]{subsection.2.2}{\376\377\0002\000.\0002\000\040\000T\000e\000m\000p\000l\000a\000t\000e\000\040\000P\000a\000r\000a\000m\000e\000t\000e\000r\000s}{section.2}% 5 +\BOOKMARK [1][-]{section.3}{\376\377\0003\000\040\000M\000o\000d\000i\000f\000i\000c\000a\000t\000i\000o\000n\000s}{}% 6 +\BOOKMARK [1][-]{section.4}{\376\377\0004\000\040\000T\000y\000p\000e\000f\000a\000c\000e\000s}{}% 7 +\BOOKMARK [1][-]{section.5}{\376\377\0005\000\040\000T\000i\000t\000l\000e\000\040\000I\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n}{}% 8 +\BOOKMARK [1][-]{section.6}{\376\377\0006\000\040\000A\000u\000t\000h\000o\000r\000s\000\040\000a\000n\000d\000\040\000A\000f\000f\000i\000l\000i\000a\000t\000i\000o\000n\000s}{}% 9 +\BOOKMARK [1][-]{section.7}{\376\377\0007\000\040\000R\000i\000g\000h\000t\000s\000\040\000I\000n\000f\000o\000r\000m\000a\000t\000i\000o\000n}{}% 10 +\BOOKMARK [1][-]{section.8}{\376\377\0008\000\040\000C\000C\000S\000\040\000C\000o\000n\000c\000e\000p\000t\000s\000\040\000a\000n\000d\000\040\000U\000s\000e\000r\000-\000D\000e\000f\000i\000n\000e\000d\000\040\000K\000e\000y\000w\000o\000r\000d\000s}{}% 11 +\BOOKMARK [1][-]{section.9}{\376\377\0009\000\040\000S\000e\000c\000t\000i\000o\000n\000i\000n\000g\000\040\000C\000o\000m\000m\000a\000n\000d\000s}{}% 12 +\BOOKMARK [1][-]{section.10}{\376\377\0001\0000\000\040\000T\000a\000b\000l\000e\000s}{}% 13 +\BOOKMARK [1][-]{section.11}{\376\377\0001\0001\000\040\000M\000a\000t\000h\000\040\000E\000q\000u\000a\000t\000i\000o\000n\000s}{}% 14 +\BOOKMARK [2][-]{subsection.11.1}{\376\377\0001\0001\000.\0001\000\040\000I\000n\000l\000i\000n\000e\000\040\000\050\000I\000n\000-\000t\000e\000x\000t\000\051\000\040\000E\000q\000u\000a\000t\000i\000o\000n\000s}{section.11}% 15 +\BOOKMARK [2][-]{subsection.11.2}{\376\377\0001\0001\000.\0002\000\040\000D\000i\000s\000p\000l\000a\000y\000\040\000E\000q\000u\000a\000t\000i\000o\000n\000s}{section.11}% 16 +\BOOKMARK [1][-]{section.12}{\376\377\0001\0002\000\040\000F\000i\000g\000u\000r\000e\000s}{}% 17 +\BOOKMARK [2][-]{subsection.12.1}{\376\377\0001\0002\000.\0001\000\040\000T\000h\000e\000\040\000`\000`\000T\000e\000a\000s\000e\000r\000\040\000F\000i\000g\000u\000r\000e\000'\000'}{section.12}% 18 +\BOOKMARK [1][-]{section.13}{\376\377\0001\0003\000\040\000C\000i\000t\000a\000t\000i\000o\000n\000s\000\040\000a\000n\000d\000\040\000B\000i\000b\000l\000i\000o\000g\000r\000a\000p\000h\000i\000e\000s}{}% 19 +\BOOKMARK [1][-]{section.14}{\376\377\0001\0004\000\040\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000m\000e\000n\000t\000s}{}% 20 +\BOOKMARK [1][-]{section.15}{\376\377\0001\0005\000\040\000A\000p\000p\000e\000n\000d\000i\000c\000e\000s}{}% 21 +\BOOKMARK [1][-]{section.16}{\376\377\0001\0006\000\040\000S\000I\000G\000C\000H\000I\000\040\000E\000x\000t\000e\000n\000d\000e\000d\000\040\000A\000b\000s\000t\000r\000a\000c\000t\000s}{}% 22 +\BOOKMARK [1][-]{section*.10}{\376\377\000A\000c\000k\000n\000o\000w\000l\000e\000d\000g\000m\000e\000n\000t\000s}{}% 23 +\BOOKMARK [1][-]{appendix.A}{\376\377\000A\000\040\000R\000e\000s\000e\000a\000r\000c\000h\000\040\000M\000e\000t\000h\000o\000d\000s}{}% 24 +\BOOKMARK [2][-]{subsection.A.1}{\376\377\000A\000.\0001\000\040\000P\000a\000r\000t\000\040\000O\000n\000e}{appendix.A}% 25 +\BOOKMARK [2][-]{subsection.A.2}{\376\377\000A\000.\0002\000\040\000P\000a\000r\000t\000\040\000T\000w\000o}{appendix.A}% 26 +\BOOKMARK [1][-]{appendix.B}{\376\377\000B\000\040\000O\000n\000l\000i\000n\000e\000\040\000R\000e\000s\000o\000u\000r\000c\000e\000s}{}% 27 diff --git a/docs/sample-sigplan.pdf b/docs/sample-sigplan.pdf new file mode 100644 index 0000000000000000000000000000000000000000..04ac1f2d4b608d4cc5add60fb8f091d4057f2909 Binary files /dev/null and b/docs/sample-sigplan.pdf differ diff --git a/docs/sample-sigplan.tex b/docs/sample-sigplan.tex new file mode 100644 index 0000000000000000000000000000000000000000..ea98bfd202104c39cad1d416c95a4eb77e155830 --- /dev/null +++ b/docs/sample-sigplan.tex @@ -0,0 +1,764 @@ +%% +%% This is file `sample-sigplan.tex', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% samples.dtx (with options: `sigplan') +%% +%% IMPORTANT NOTICE: +%% +%% For the copyright see the source file. +%% +%% Any modified versions of this file must be renamed +%% with new filenames distinct from sample-sigplan.tex. +%% +%% For distribution of the original source see the terms +%% for copying and modification in the file samples.dtx. +%% +%% This generated file may be distributed as long as the +%% original source files, as listed above, are part of the +%% same distribution. (The sources need not necessarily be +%% in the same archive or directory.) +%% +%% The first command in your LaTeX source must be the \documentclass command. +\documentclass[sigplan,screen]{acmart} + +%% +%% \BibTeX command to typeset BibTeX logo in the docs +\AtBeginDocument{% + \providecommand\BibTeX{{% + \normalfont B\kern-0.5em{\scshape i\kern-0.25em b}\kern-0.8em\TeX}}} + +%% Rights management information. This information is sent to you +%% when you complete the rights form. These commands have SAMPLE +%% values in them; it is your responsibility as an author to replace +%% the commands and values with those provided to you when you +%% complete the rights form. +\setcopyright{acmcopyright} +\copyrightyear{2018} +\acmYear{2018} +\acmDOI{10.1145/1122445.1122456} + +%% These commands are for a PROCEEDINGS abstract or paper. +\acmConference[Woodstock '18]{Woodstock '18: ACM Symposium on Neural + Gaze Detection}{June 03--05, 2018}{Woodstock, NY} +\acmBooktitle{Woodstock '18: ACM Symposium on Neural Gaze Detection, + June 03--05, 2018, Woodstock, NY} +\acmPrice{15.00} +\acmISBN{978-1-4503-XXXX-X/18/06} + + +%% +%% Submission ID. +%% Use this when submitting an article to a sponsored event. You'll +%% receive a unique submission ID from the organizers +%% of the event, and this ID should be used as the parameter to this command. +%%\acmSubmissionID{123-A56-BU3} + +%% +%% The majority of ACM publications use numbered citations and +%% references. The command \citestyle{authoryear} switches to the +%% "author year" style. +%% +%% If you are preparing content for an event +%% sponsored by ACM SIGGRAPH, you must use the "author year" style of +%% citations and references. +%% Uncommenting +%% the next command will enable that style. +%%\citestyle{acmauthoryear} + +%% +%% end of the preamble, start of the body of the document source. +\begin{document} + +%% +%% The "title" command has an optional parameter, +%% allowing the author to define a "short title" to be used in page headers. +\title{Barni témalabja} + +%% +%% The "author" command and its associated commands are used to define +%% the authors and their affiliations. +%% Of note is the shared affiliation of the first two authors, and the +%% "authornote" and "authornotemark" commands +%% used to denote shared contribution to the research. +\author{Ben Trovato} +\authornote{Both authors contributed equally to this research.} +\email{trovato@corporation.com} +\orcid{1234-5678-9012} +\author{G.K.M. Tobin} +\authornotemark[1] +\email{webmaster@marysville-ohio.com} +\affiliation{% + \institution{Institute for Clarity in Documentation} + \streetaddress{P.O. Box 1212} + \city{Dublin} + \state{Ohio} + \country{USA} + \postcode{43017-6221} +} + +\author{Lars Th{\o}rv{\"a}ld} +\affiliation{% + \institution{The Th{\o}rv{\"a}ld Group} + \streetaddress{1 Th{\o}rv{\"a}ld Circle} + \city{Hekla} + \country{Iceland}} +\email{larst@affiliation.org} + +\author{Valerie B\'eranger} +\affiliation{% + \institution{Inria Paris-Rocquencourt} + \city{Rocquencourt} + \country{France} +} + +\author{Aparna Patel} +\affiliation{% + \institution{Rajiv Gandhi University} + \streetaddress{Rono-Hills} + \city{Doimukh} + \state{Arunachal Pradesh} + \country{India}} + +\author{Huifen Chan} +\affiliation{% + \institution{Tsinghua University} + \streetaddress{30 Shuangqing Rd} + \city{Haidian Qu} + \state{Beijing Shi} + \country{China}} + +\author{Charles Palmer} +\affiliation{% + \institution{Palmer Research Laboratories} + \streetaddress{8600 Datapoint Drive} + \city{San Antonio} + \state{Texas} + \country{USA} + \postcode{78229}} +\email{cpalmer@prl.com} + +\author{John Smith} +\affiliation{% + \institution{The Th{\o}rv{\"a}ld Group} + \streetaddress{1 Th{\o}rv{\"a}ld Circle} + \city{Hekla} + \country{Iceland}} +\email{jsmith@affiliation.org} + +\author{Julius P. Kumquat} +\affiliation{% + \institution{The Kumquat Consortium} + \city{New York} + \country{USA}} +\email{jpkumquat@consortium.net} + +%% +%% By default, the full list of authors will be used in the page +%% headers. Often, this list is too long, and will overlap +%% other information printed in the page headers. This command allows +%% the author to define a more concise list +%% of authors' names for this purpose. +\renewcommand{\shortauthors}{Trovato and Tobin, et al.} + +%% +%% The abstract is a short summary of the work to be presented in the +%% article. +\begin{abstract} + A clear and well-documented \LaTeX\ document is presented as an + article formatted for publication by ACM in a conference proceedings + or journal publication. Based on the ``acmart'' document class, this + article presents and explains many of the common variations, as well + as many of the formatting elements an author may use in the + preparation of the documentation of their work. +\end{abstract} + +%% +%% The code below is generated by the tool at http://dl.acm.org/ccs.cfm. +%% Please copy and paste the code instead of the example below. +%% +\begin{CCSXML} +<ccs2012> + <concept> + <concept_id>10010520.10010553.10010562</concept_id> + <concept_desc>Computer systems organization~Embedded systems</concept_desc> + <concept_significance>500</concept_significance> + </concept> + <concept> + <concept_id>10010520.10010575.10010755</concept_id> + <concept_desc>Computer systems organization~Redundancy</concept_desc> + <concept_significance>300</concept_significance> + </concept> + <concept> + <concept_id>10010520.10010553.10010554</concept_id> + <concept_desc>Computer systems organization~Robotics</concept_desc> + <concept_significance>100</concept_significance> + </concept> + <concept> + <concept_id>10003033.10003083.10003095</concept_id> + <concept_desc>Networks~Network reliability</concept_desc> + <concept_significance>100</concept_significance> + </concept> +</ccs2012> +\end{CCSXML} + +\ccsdesc[500]{Computer systems organization~Embedded systems} +\ccsdesc[300]{Computer systems organization~Redundancy} +\ccsdesc{Computer systems organization~Robotics} +\ccsdesc[100]{Networks~Network reliability} + +%% +%% Keywords. The author(s) should pick words that accurately describe +%% the work being presented. Separate the keywords with commas. +\keywords{datasets, neural networks, gaze detection, text tagging} + +%% A "teaser" image appears between the author and affiliation +%% information and the body of the document, and typically spans the +%% page. +\begin{teaserfigure} + \includegraphics[width=\textwidth]{sampleteaser} + \caption{Seattle Mariners at Spring Training, 2010.} + \Description{Enjoying the baseball game from the third-base + seats. Ichiro Suzuki preparing to bat.} + \label{fig:teaser} +\end{teaserfigure} + +%% +%% This command processes the author and affiliation and title +%% information and builds the first part of the formatted document. +\maketitle + +\section{Introduction} +ACM's consolidated article template, introduced in 2017, provides a +consistent \LaTeX\ style for use across ACM publications, and +incorporates accessibility and metadata-extraction functionality +necessary for future Digital Library endeavors. Numerous ACM and +SIG-specific \LaTeX\ templates have been examined, and their unique +features incorporated into this single new template. + +If you are new to publishing with ACM, this document is a valuable +guide to the process of preparing your work for publication. If you +have published with ACM before, this document provides insight and +instruction into more recent changes to the article template. + +The ``\verb|acmart|'' document class can be used to prepare articles +for any ACM publication --- conference or journal, and for any stage +of publication, from review to final ``camera-ready'' copy, to the +author's own version, with {\itshape very} few changes to the source. + +\section{Template Overview} +As noted in the introduction, the ``\verb|acmart|'' document class can +be used to prepare many different kinds of documentation --- a +double-blind initial submission of a full-length technical paper, a +two-page SIGGRAPH Emerging Technologies abstract, a ``camera-ready'' +journal article, a SIGCHI Extended Abstract, and more --- all by +selecting the appropriate {\itshape template style} and {\itshape + template parameters}. + +This document will explain the major features of the document +class. For further information, the {\itshape \LaTeX\ User's Guide} is +available from +\url{https://www.acm.org/publications/proceedings-template}. + +\subsection{Template Styles} + +The primary parameter given to the ``\verb|acmart|'' document class is +the {\itshape template style} which corresponds to the kind of publication +or SIG publishing the work. This parameter is enclosed in square +brackets and is a part of the {\verb|documentclass|} command: +\begin{verbatim} + \documentclass[STYLE]{acmart} +\end{verbatim} + +Journals use one of three template styles. All but three ACM journals +use the {\verb|acmsmall|} template style: +\begin{itemize} +\item {\verb|acmsmall|}: The default journal template style. +\item {\verb|acmlarge|}: Used by JOCCH and TAP. +\item {\verb|acmtog|}: Used by TOG. +\end{itemize} + +The majority of conference proceedings documentation will use the {\verb|acmconf|} template style. +\begin{itemize} +\item {\verb|acmconf|}: The default proceedings template style. +\item{\verb|sigchi|}: Used for SIGCHI conference articles. +\item{\verb|sigchi-a|}: Used for SIGCHI ``Extended Abstract'' articles. +\item{\verb|sigplan|}: Used for SIGPLAN conference articles. +\end{itemize} + +\subsection{Template Parameters} + +In addition to specifying the {\itshape template style} to be used in +formatting your work, there are a number of {\itshape template parameters} +which modify some part of the applied template style. A complete list +of these parameters can be found in the {\itshape \LaTeX\ User's Guide.} + +Frequently-used parameters, or combinations of parameters, include: +\begin{itemize} +\item {\verb|anonymous,review|}: Suitable for a ``double-blind'' + conference submission. Anonymizes the work and includes line + numbers. Use with the \verb|\acmSubmissionID| command to print the + submission's unique ID on each page of the work. +\item{\verb|authorversion|}: Produces a version of the work suitable + for posting by the author. +\item{\verb|screen|}: Produces colored hyperlinks. +\end{itemize} + +This document uses the following string as the first command in the +source file: +\begin{verbatim} +\documentclass[sigplan,screen]{acmart} +\end{verbatim} + +\section{Modifications} + +Modifying the template --- including but not limited to: adjusting +margins, typeface sizes, line spacing, paragraph and list definitions, +and the use of the \verb|\vspace| command to manually adjust the +vertical spacing between elements of your work --- is not allowed. + +{\bfseries Your document will be returned to you for revision if + modifications are discovered.} + +\section{Typefaces} + +The ``\verb|acmart|'' document class requires the use of the +``Libertine'' typeface family. Your \TeX\ installation should include +this set of packages. Please do not substitute other typefaces. The +``\verb|lmodern|'' and ``\verb|ltimes|'' packages should not be used, +as they will override the built-in typeface families. + +\section{Title Information} + +The title of your work should use capital letters appropriately - +\url{https://capitalizemytitle.com/} has useful rules for +capitalization. Use the {\verb|title|} command to define the title of +your work. If your work has a subtitle, define it with the +{\verb|subtitle|} command. Do not insert line breaks in your title. + +If your title is lengthy, you must define a short version to be used +in the page headers, to prevent overlapping text. The \verb|title| +command has a ``short title'' parameter: +\begin{verbatim} + \title[short title]{full title} +\end{verbatim} + +\section{Authors and Affiliations} + +Each author must be defined separately for accurate metadata +identification. Multiple authors may share one affiliation. Authors' +names should not be abbreviated; use full first names wherever +possible. Include authors' e-mail addresses whenever possible. + +Grouping authors' names or e-mail addresses, or providing an ``e-mail +alias,'' as shown below, is not acceptable: +\begin{verbatim} + \author{Brooke Aster, David Mehldau} + \email{dave,judy,steve@university.edu} + \email{firstname.lastname@phillips.org} +\end{verbatim} + +The \verb|authornote| and \verb|authornotemark| commands allow a note +to apply to multiple authors --- for example, if the first two authors +of an article contributed equally to the work. + +If your author list is lengthy, you must define a shortened version of +the list of authors to be used in the page headers, to prevent +overlapping text. The following command should be placed just after +the last \verb|\author{}| definition: +\begin{verbatim} + \renewcommand{\shortauthors}{McCartney, et al.} +\end{verbatim} +Omitting this command will force the use of a concatenated list of all +of the authors' names, which may result in overlapping text in the +page headers. + +The article template's documentation, available at +\url{https://www.acm.org/publications/proceedings-template}, has a +complete explanation of these commands and tips for their effective +use. + +Note that authors' addresses are mandatory for journal articles. + +\section{Rights Information} + +Authors of any work published by ACM will need to complete a rights +form. Depending on the kind of work, and the rights management choice +made by the author, this may be copyright transfer, permission, +license, or an OA (open access) agreement. + +Regardless of the rights management choice, the author will receive a +copy of the completed rights form once it has been submitted. This +form contains \LaTeX\ commands that must be copied into the source +document. When the document source is compiled, these commands and +their parameters add formatted text to several areas of the final +document: +\begin{itemize} +\item the ``ACM Reference Format'' text on the first page. +\item the ``rights management'' text on the first page. +\item the conference information in the page header(s). +\end{itemize} + +Rights information is unique to the work; if you are preparing several +works for an event, make sure to use the correct set of commands with +each of the works. + +The ACM Reference Format text is required for all articles over one +page in length, and is optional for one-page articles (abstracts). + +\section{CCS Concepts and User-Defined Keywords} + +Two elements of the ``acmart'' document class provide powerful +taxonomic tools for you to help readers find your work in an online +search. + +The ACM Computing Classification System --- +\url{https://www.acm.org/publications/class-2012} --- is a set of +classifiers and concepts that describe the computing +discipline. Authors can select entries from this classification +system, via \url{https://dl.acm.org/ccs/ccs.cfm}, and generate the +commands to be included in the \LaTeX\ source. + +User-defined keywords are a comma-separated list of words and phrases +of the authors' choosing, providing a more flexible way of describing +the research being presented. + +CCS concepts and user-defined keywords are required for for all +articles over two pages in length, and are optional for one- and +two-page articles (or abstracts). + +\section{Sectioning Commands} + +Your work should use standard \LaTeX\ sectioning commands: +\verb|section|, \verb|subsection|, \verb|subsubsection|, and +\verb|paragraph|. They should be numbered; do not remove the numbering +from the commands. + +Simulating a sectioning command by setting the first word or words of +a paragraph in boldface or italicized text is {\bfseries not allowed.} + +\section{Tables} + +The ``\verb|acmart|'' document class includes the ``\verb|booktabs|'' +package --- \url{https://ctan.org/pkg/booktabs} --- for preparing +high-quality tables. + +Table captions are placed {\itshape above} the table. + +Because tables cannot be split across pages, the best placement for +them is typically the top of the page nearest their initial cite. To +ensure this proper ``floating'' placement of tables, use the +environment \textbf{table} to enclose the table's contents and the +table caption. The contents of the table itself must go in the +\textbf{tabular} environment, to be aligned properly in rows and +columns, with the desired horizontal and vertical rules. Again, +detailed instructions on \textbf{tabular} material are found in the +\textit{\LaTeX\ User's Guide}. + +Immediately following this sentence is the point at which +Table~\ref{tab:freq} is included in the input file; compare the +placement of the table here with the table in the printed output of +this document. + +\begin{table} + \caption{Frequency of Special Characters} + \label{tab:freq} + \begin{tabular}{ccl} + \toprule + Non-English or Math&Frequency&Comments\\ + \midrule + \O & 1 in 1,000& For Swedish names\\ + $\pi$ & 1 in 5& Common in math\\ + \$ & 4 in 5 & Used in business\\ + $\Psi^2_1$ & 1 in 40,000& Unexplained usage\\ + \bottomrule +\end{tabular} +\end{table} + +To set a wider table, which takes up the whole width of the page's +live area, use the environment \textbf{table*} to enclose the table's +contents and the table caption. As with a single-column table, this +wide table will ``float'' to a location deemed more +desirable. Immediately following this sentence is the point at which +Table~\ref{tab:commands} is included in the input file; again, it is +instructive to compare the placement of the table here with the table +in the printed output of this document. + +\begin{table*} + \caption{Some Typical Commands} + \label{tab:commands} + \begin{tabular}{ccl} + \toprule + Command &A Number & Comments\\ + \midrule + \texttt{{\char'134}author} & 100& Author \\ + \texttt{{\char'134}table}& 300 & For tables\\ + \texttt{{\char'134}table*}& 400& For wider tables\\ + \bottomrule + \end{tabular} +\end{table*} + +Always use midrule to separate table header rows from data rows, and +use it only for this purpose. This enables assistive technologies to +recognise table headers and support their users in navigating tables +more easily. + +\section{Math Equations} +You may want to display math equations in three distinct styles: +inline, numbered or non-numbered display. Each of the three are +discussed in the next sections. + +\subsection{Inline (In-text) Equations} +A formula that appears in the running text is called an inline or +in-text formula. It is produced by the \textbf{math} environment, +which can be invoked with the usual +\texttt{{\char'134}begin\,\ldots{\char'134}end} construction or with +the short form \texttt{\$\,\ldots\$}. You can use any of the symbols +and structures, from $\alpha$ to $\omega$, available in +\LaTeX~\cite{Lamport:LaTeX}; this section will simply show a few +examples of in-text equations in context. Notice how this equation: +\begin{math} + \lim_{n\rightarrow \infty}x=0 +\end{math}, +set here in in-line math style, looks slightly different when +set in display style. (See next section). + +\subsection{Display Equations} +A numbered display equation---one set off by vertical space from the +text and centered horizontally---is produced by the \textbf{equation} +environment. An unnumbered display equation is produced by the +\textbf{displaymath} environment. + +Again, in either environment, you can use any of the symbols and +structures available in \LaTeX\@; this section will just give a couple +of examples of display equations in context. First, consider the +equation, shown as an inline equation above: +\begin{equation} + \lim_{n\rightarrow \infty}x=0 +\end{equation} +Notice how it is formatted somewhat differently in +the \textbf{displaymath} +environment. Now, we'll enter an unnumbered equation: +\begin{displaymath} + \sum_{i=0}^{\infty} x + 1 +\end{displaymath} +and follow it with another numbered equation: +\begin{equation} + \sum_{i=0}^{\infty}x_i=\int_{0}^{\pi+2} f +\end{equation} +just to demonstrate \LaTeX's able handling of numbering. + +\section{Figures} + +The ``\verb|figure|'' environment should be used for figures. One or +more images can be placed within a figure. If your figure contains +third-party material, you must clearly identify it as such, as shown +in the example below. +\begin{figure}[h] + \centering + \includegraphics[width=\linewidth]{sample-franklin} + \caption{1907 Franklin Model D roadster. Photograph by Harris \& + Ewing, Inc. [Public domain], via Wikimedia + Commons. (\url{https://goo.gl/VLCRBB}).} + \Description{A woman and a girl in white dresses sit in an open car.} +\end{figure} + +Your figures should contain a caption which describes the figure to +the reader. + +Figure captions are placed {\itshape below} the figure. + +Every figure should also have a figure description unless it is purely +decorative. These descriptions convey what’s in the image to someone +who cannot see it. They are also used by search engine crawlers for +indexing images, and when images cannot be loaded. + +A figure description must be unformatted plain text less than 2000 +characters long (including spaces). {\bfseries Figure descriptions + should not repeat the figure caption – their purpose is to capture + important information that is not already provided in the caption or + the main text of the paper.} For figures that convey important and +complex new information, a short text description may not be +adequate. More complex alternative descriptions can be placed in an +appendix and referenced in a short figure description. For example, +provide a data table capturing the information in a bar chart, or a +structured list representing a graph. For additional information +regarding how best to write figure descriptions and why doing this is +so important, please see +\url{https://www.acm.org/publications/taps/describing-figures/}. + +\subsection{The ``Teaser Figure''} + +A ``teaser figure'' is an image, or set of images in one figure, that +are placed after all author and affiliation information, and before +the body of the article, spanning the page. If you wish to have such a +figure in your article, place the command immediately before the +\verb|\maketitle| command: +\begin{verbatim} + \begin{teaserfigure} + \includegraphics[width=\textwidth]{sampleteaser} + \caption{figure caption} + \Description{figure description} + \end{teaserfigure} +\end{verbatim} + +\section{Citations and Bibliographies} + +The use of \BibTeX\ for the preparation and formatting of one's +references is strongly recommended. Authors' names should be complete +--- use full first names (``Donald E. Knuth'') not initials +(``D. E. Knuth'') --- and the salient identifying features of a +reference should be included: title, year, volume, number, pages, +article DOI, etc. + +The bibliography is included in your source document with these two +commands, placed just before the \verb|\end{document}| command: +\begin{verbatim} + \bibliographystyle{ACM-Reference-Format} + \bibliography{bibfile} +\end{verbatim} +where ``\verb|bibfile|'' is the name, without the ``\verb|.bib|'' +suffix, of the \BibTeX\ file. + +Citations and references are numbered by default. A small number of +ACM publications have citations and references formatted in the +``author year'' style; for these exceptions, please include this +command in the {\bfseries preamble} (before the command +``\verb|\begin{document}|'') of your \LaTeX\ source: +\begin{verbatim} + \citestyle{acmauthoryear} +\end{verbatim} + + Some examples. A paginated journal article \cite{Abril07}, an + enumerated journal article \cite{Cohen07}, a reference to an entire + issue \cite{JCohen96}, a monograph (whole book) \cite{Kosiur01}, a + monograph/whole book in a series (see 2a in spec. document) + \cite{Harel79}, a divisible-book such as an anthology or compilation + \cite{Editor00} followed by the same example, however we only output + the series if the volume number is given \cite{Editor00a} (so + Editor00a's series should NOT be present since it has no vol. no.), + a chapter in a divisible book \cite{Spector90}, a chapter in a + divisible book in a series \cite{Douglass98}, a multi-volume work as + book \cite{Knuth97}, a couple of articles in a proceedings (of a + conference, symposium, workshop for example) (paginated proceedings + article) \cite{Andler79, Hagerup1993}, a proceedings article with + all possible elements \cite{Smith10}, an example of an enumerated + proceedings article \cite{VanGundy07}, an informally published work + \cite{Harel78}, a couple of preprints \cite{Bornmann2019, + AnzarootPBM14}, a doctoral dissertation \cite{Clarkson85}, a + master's thesis: \cite{anisi03}, an online document / world wide web + resource \cite{Thornburg01, Ablamowicz07, Poker06}, a video game + (Case 1) \cite{Obama08} and (Case 2) \cite{Novak03} and \cite{Lee05} + and (Case 3) a patent \cite{JoeScientist001}, work accepted for + publication \cite{rous08}, 'YYYYb'-test for prolific author + \cite{SaeediMEJ10} and \cite{SaeediJETC10}. Other cites might + contain 'duplicate' DOI and URLs (some SIAM articles) + \cite{Kirschmer:2010:AEI:1958016.1958018}. Boris / Barbara Beeton: + multi-volume works as books \cite{MR781536} and \cite{MR781537}. A + couple of citations with DOIs: + \cite{2004:ITE:1009386.1010128,Kirschmer:2010:AEI:1958016.1958018}. Online + citations: \cite{TUGInstmem, Thornburg01, CTANacmart}. Artifacts: + \cite{R} and \cite{UMassCitations}. + +\section{Acknowledgments} + +Identification of funding sources and other support, and thanks to +individuals and groups that assisted in the research and the +preparation of the work should be included in an acknowledgment +section, which is placed just before the reference section in your +document. + +This section has a special environment: +\begin{verbatim} + \begin{acks} + ... + \end{acks} +\end{verbatim} +so that the information contained therein can be more easily collected +during the article metadata extraction phase, and to ensure +consistency in the spelling of the section heading. + +Authors should not prepare this section as a numbered or unnumbered {\verb|\section|}; please use the ``{\verb|acks|}'' environment. + +\section{Appendices} + +If your work needs an appendix, add it before the +``\verb|\end{document}|'' command at the conclusion of your source +document. + +Start the appendix with the ``\verb|appendix|'' command: +\begin{verbatim} + \appendix +\end{verbatim} +and note that in the appendix, sections are lettered, not +numbered. This document has two appendices, demonstrating the section +and subsection identification method. + +\section{SIGCHI Extended Abstracts} + +The ``\verb|sigchi-a|'' template style (available only in \LaTeX\ and +not in Word) produces a landscape-orientation formatted article, with +a wide left margin. Three environments are available for use with the +``\verb|sigchi-a|'' template style, and produce formatted output in +the margin: +\begin{itemize} +\item {\verb|sidebar|}: Place formatted text in the margin. +\item {\verb|marginfigure|}: Place a figure in the margin. +\item {\verb|margintable|}: Place a table in the margin. +\end{itemize} + +%% +%% The acknowledgments section is defined using the "acks" environment +%% (and NOT an unnumbered section). This ensures the proper +%% identification of the section in the article metadata, and the +%% consistent spelling of the heading. +\begin{acks} +To Robert, for the bagels and explaining CMYK and color spaces. +\end{acks} + +%% +%% The next two lines define the bibliography style to be used, and +%% the bibliography file. +\bibliographystyle{ACM-Reference-Format} +\bibliography{sample-base} + +%% +%% If your work has an appendix, this is the place to put it. +\appendix + +\section{Research Methods} + +\subsection{Part One} + +Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi +malesuada, quam in pulvinar varius, metus nunc fermentum urna, id +sollicitudin purus odio sit amet enim. Aliquam ullamcorper eu ipsum +vel mollis. Curabitur quis dictum nisl. Phasellus vel semper risus, et +lacinia dolor. Integer ultricies commodo sem nec semper. + +\subsection{Part Two} + +Etiam commodo feugiat nisl pulvinar pellentesque. Etiam auctor sodales +ligula, non varius nibh pulvinar semper. Suspendisse nec lectus non +ipsum convallis congue hendrerit vitae sapien. Donec at laoreet +eros. Vivamus non purus placerat, scelerisque diam eu, cursus +ante. Etiam aliquam tortor auctor efficitur mattis. + +\section{Online Resources} + +Nam id fermentum dui. Suspendisse sagittis tortor a nulla mollis, in +pulvinar ex pretium. Sed interdum orci quis metus euismod, et sagittis +enim maximus. Vestibulum gravida massa ut felis suscipit +congue. Quisque mattis elit a risus ultrices commodo venenatis eget +dui. Etiam sagittis eleifend elementum. + +Nam interdum magna at lectus dignissim, ac dignissim lorem +rhoncus. Maecenas eu arcu ac neque placerat aliquam. Nunc pulvinar +massa et mattis lacinia. + +\end{document} +\endinput +%% +%% End of file `sample-sigplan.tex'. diff --git a/docs/sampleteaser.pdf b/docs/sampleteaser.pdf new file mode 100644 index 0000000000000000000000000000000000000000..374f676f0df547dc4dcac3268f573ab99cae6ffd Binary files /dev/null and b/docs/sampleteaser.pdf differ