2908 lines
94 KiB
TeX
2908 lines
94 KiB
TeX
|
|
%%
|
|
%% 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}
|
|
[2019/12/18 v1.66 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}
|
|
\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.
|
|
I am switching to sigconf.}
|
|
\setkeys{acmart.cls}{format=sigconf}
|
|
\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{10pt}%
|
|
\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{2}{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}}
|
|
\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.}}
|
|
\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
|
|
\RequirePackage{iftex}
|
|
\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
|
|
\fi
|
|
\RequirePackage{cmap}
|
|
\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 zi4 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}
|
|
\ifxetex
|
|
\RequirePackage[tt=false]{libertine}
|
|
\setmonofont{inconsolata}
|
|
\else
|
|
\RequirePackage[tt=false, type1=true]{libertine}
|
|
\fi
|
|
\RequirePackage[varqu]{zi4}
|
|
\RequirePackage[libertine]{newtxmath}
|
|
\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}
|
|
|
|
\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 Transactions on Data Science}%
|
|
\def\@journalNameShort{ACM 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{#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}
|
|
\RequirePackage{textcomp}
|
|
\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}}
|
|
\newbox\mktitle@bx
|
|
\def\maketitle{%
|
|
\@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}%
|
|
\@concepts\par}\egroup
|
|
\fi
|
|
\fi
|
|
\ifx\@keywords\@empty\else\bgroup
|
|
{\if@ACM@journal
|
|
\@specialsection{Additional Key Words and Phrases}%
|
|
\else
|
|
\@specialsection{Keywords}%
|
|
\fi
|
|
\@keywords}\par\egroup
|
|
\fi
|
|
\andify\authors
|
|
\andify\shortauthors
|
|
\global\let\authors=\authors
|
|
\global\let\shortauthors=\shortauthors
|
|
\if@ACM@printacmref
|
|
\@mkbibcitation
|
|
\fi
|
|
\hypersetup{%
|
|
pdfauthor={\authors},
|
|
pdftitle={\@title},
|
|
pdfsubject={\@concepts},
|
|
pdfkeywords={\@keywords},
|
|
pdfcreator={LaTeX with acmart
|
|
\csname ver@acmart.cls\endcsname\space
|
|
and hyperref
|
|
\csname ver@hyperref.sty\endcsname}}%
|
|
\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{%
|
|
\bgroup
|
|
\let\@vspace\@vspace@orig
|
|
\let\@vspacer\@vspacer@orig
|
|
\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
|
|
\paragraph*{#1}%
|
|
\or % sigchi
|
|
\section*{#1}%
|
|
\or % sigchi-a
|
|
\section*{#1}%
|
|
\fi
|
|
\egroup}
|
|
\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{\unskip~#1\ignorespaces}
|
|
\def\city#1{\unskip\ignorespaces}
|
|
\def\state#1{\unskip\ignorespaces}
|
|
\newcommand\department[2][0]{\unskip\ignorespaces}
|
|
\def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
|
|
\else
|
|
\def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
|
|
\def\institution#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
|
|
\newcommand\department[2][0]{\if@ACM@affiliation@obeypunctuation
|
|
#2\else#2\par\fi}%
|
|
\let\city\@ACM@addtoaddress
|
|
\let\state\@ACM@addtoaddress
|
|
\let\country\@ACM@addtoaddress
|
|
\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{}}
|
|
\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}%
|
|
\@affiliationfont##2}%
|
|
\else
|
|
\g@addto@macro{\@currentaffiliations}{\and
|
|
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
|
|
\setkeys{@ACM@affiliation@}{##1}##2}%
|
|
\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}##2}%
|
|
\else
|
|
\g@addto@macro\@currentaffiliation{\par
|
|
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
|
|
\setkeys{@ACM@affiliation@}{##1}##2}%
|
|
\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}##2}%
|
|
\else
|
|
\g@addto@macro\@currentaffiliation{\par
|
|
\setkeys{@ACM@affiliation@}{obeypunctuation=false}%
|
|
\setkeys{@ACM@affiliation@}{##1}##2}%
|
|
\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{\bgroup
|
|
\let\@vspace\@vspace@orig
|
|
\let\@vspacer\@vspacer@orig
|
|
\par\bigskip
|
|
\egroup}
|
|
\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
|
|
\ACM@mk@linecount
|
|
\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}}}
|
|
\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}
|
|
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
|
|
{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
|
|
{.25\baselineskip}%
|
|
{\@subsubsecfont}}
|
|
\def\@subsubsecfont{\bfseries\section@raggedright}
|
|
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
|
|
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
|
|
{-3.5\p@}%
|
|
{\@parfont\@addspaceafter}}
|
|
\def\@parfont{\bfseries\itshape}
|
|
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
|
|
{-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
|
|
{-3.5\p@}%
|
|
{\@subparfont\@addspaceafter}}
|
|
\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{http://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\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'.
|
|
|