upgrade acmart.cls

This commit is contained in:
Matthew Flatt 2017-09-26 07:45:10 -06:00
parent dd92ebd2d9
commit ad6deb7366

View File

@ -37,7 +37,7 @@
%% Right brace \} Tilde \~} %% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e} \NeedsTeXFormat{LaTeX2e}
\ProvidesClass{acmart} \ProvidesClass{acmart}
[2017/07/09 v1.43 Typesetting articles for Association of [2017/09/16 v1.48 Typesetting articles for the Association for
Computing Machinery] Computing Machinery]
\def\@classname{acmart} \def\@classname{acmart}
\InputIfFileExists{acmart-preload-hook.tex}{% \InputIfFileExists{acmart-preload-hook.tex}{%
@ -68,15 +68,24 @@ Computing Machinery]
\PackageInfo{\@classname}{Using screen mode}% \PackageInfo{\@classname}{Using screen mode}%
\else \else
\PackageInfo{\@classname}{Not using screen mode}% \PackageInfo{\@classname}{Not using screen mode}%
\fi}{\PackageError{\@classname}{Option screen can be either true or \fi}{\PackageError{\@classname}{The option screen can be either true or
false}} false}}
\ExecuteOptionsX{screen=false} \ExecuteOptionsX{screen=false}
\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]{% \define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
\if@ACM@review \if@ACM@review
\PackageInfo{\@classname}{Using review mode}% \PackageInfo{\@classname}{Using review mode}%
\AtBeginDocument{\@ACM@printfoliostrue}%
\else \else
\PackageInfo{\@classname}{Not using review mode}% \PackageInfo{\@classname}{Not using review mode}%
\fi}{\PackageError{\@classname}{Option review can be either true or \fi}{\PackageError{\@classname}{The option review can be either true or
false}} false}}
\ExecuteOptionsX{review=false} \ExecuteOptionsX{review=false}
\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{% \define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
@ -84,7 +93,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Using authorversion mode}% \PackageInfo{\@classname}{Using authorversion mode}%
\else \else
\PackageInfo{\@classname}{Not using authorversion mode}% \PackageInfo{\@classname}{Not using authorversion mode}%
\fi}{\PackageError{\@classname}{Option authorversion can be either true or \fi}{\PackageError{\@classname}{The option authorversion can be either true or
false}} false}}
\ExecuteOptionsX{authorversion=false} \ExecuteOptionsX{authorversion=false}
\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{% \define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
@ -92,7 +101,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Explicitly selecting natbib mode}% \PackageInfo{\@classname}{Explicitly selecting natbib mode}%
\else \else
\PackageInfo{\@classname}{Explicitly deselecting natbib mode}% \PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
\fi}{\PackageError{\@classname}{Option natbib can be either true or \fi}{\PackageError{\@classname}{The option natbib can be either true or
false}} false}}
\ExecuteOptionsX{natbib=true} \ExecuteOptionsX{natbib=true}
\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{% \define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
@ -100,7 +109,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Using anonymous mode}% \PackageInfo{\@classname}{Using anonymous mode}%
\else \else
\PackageInfo{\@classname}{Not using anonymous mode}% \PackageInfo{\@classname}{Not using anonymous mode}%
\fi}{\PackageError{\@classname}{Option anonymous can be either true or \fi}{\PackageError{\@classname}{The option anonymous can be either true or
false}} false}}
\ExecuteOptionsX{anonymous=false} \ExecuteOptionsX{anonymous=false}
\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{% \define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
@ -108,7 +117,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Using timestamp mode}% \PackageInfo{\@classname}{Using timestamp mode}%
\else \else
\PackageInfo{\@classname}{Not using timestamp mode}% \PackageInfo{\@classname}{Not using timestamp mode}%
\fi}{\PackageError{\@classname}{Option timestamp can be either true or \fi}{\PackageError{\@classname}{The option timestamp can be either true or
false}} false}}
\ExecuteOptionsX{timestamp=false} \ExecuteOptionsX{timestamp=false}
\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{% \define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
@ -118,7 +127,7 @@ Computing Machinery]
\@ACM@reviewtrue \@ACM@reviewtrue
\else \else
\PackageInfo{\@classname}{Not using authordraft mode}% \PackageInfo{\@classname}{Not using authordraft mode}%
\fi}{\PackageError{\@classname}{Option authordraft can be either true or \fi}{\PackageError{\@classname}{The option authordraft can be either true or
false}} false}}
\ExecuteOptionsX{authordraft=false} \ExecuteOptionsX{authordraft=false}
\def\ACM@fontsize{} \def\ACM@fontsize{}
@ -134,7 +143,7 @@ Computing Machinery]
\newif\if@ACM@journal \newif\if@ACM@journal
\newif\if@ACM@sigchiamode \newif\if@ACM@sigchiamode
\ifnum\ACM@format@nr=5\relax % siggraph \ifnum\ACM@format@nr=5\relax % siggraph
\ClassWarning{\@classname}{The format `siggraph' is now obsolete. \ClassWarning{\@classname}{The format siggraph is now obsolete.
I am switching to sigconf.} I am switching to sigconf.}
\setkeys{acmart.cls}{format=sigconf} \setkeys{acmart.cls}{format=sigconf}
\fi \fi
@ -190,6 +199,24 @@ Computing Machinery]
\ClassInfo{\@classname}{Using fontsize \ACM@fontsize} \ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
\LoadClass[\ACM@fontsize, reqno]{amsart} \LoadClass[\ACM@fontsize, reqno]{amsart}
\RequirePackage{microtype} \RequirePackage{microtype}
\ifcase\ACM@format@nr
\relax % manuscript
\or % acmsmall
\or % acmlarge
\or % acmtog
\RequirePackage{flushend}
\or % sigconf
\RequirePackage{flushend}
\or % siggraph
\RequirePackage{flushend}
\or % sigplan
\RequirePackage{flushend}
\or % sigchi
\RequirePackage{flushend}
\or % sigchi-a
\fi
\RequirePackage{etoolbox}
\RequirePackage{refcount}
\RequirePackage{totpages} \RequirePackage{totpages}
\RequirePackage{environ} \RequirePackage{environ}
\if@ACM@manuscript \if@ACM@manuscript
@ -422,16 +449,16 @@ Computing Machinery]
\or % sigchi-a \or % sigchi-a
\urlstyle{sf} \urlstyle{sf}
\fi \fi
\if@ACM@screen \AtEndPreamble{%
\if@ACM@screen
\hypersetup{colorlinks, \hypersetup{colorlinks,
linkcolor=ACMRed, linkcolor=ACMRed,
citecolor=ACMPurple, citecolor=ACMPurple,
urlcolor=ACMDarkBlue, urlcolor=ACMDarkBlue,
filecolor=ACMDarkBlue} filecolor=ACMDarkBlue}
\else \else
\hypersetup{hidelinks} \hypersetup{hidelinks}
\fi \fi}
\RequirePackage{cleveref}
\if@ACM@natbib \if@ACM@natbib
\let\citeN\cite \let\citeN\cite
\let\cite\citep \let\cite\citep
@ -558,6 +585,8 @@ Computing Machinery]
\hrule \@width \columnwidth \kern 2.6\p@} \hrule \@width \columnwidth \kern 2.6\p@}
\RequirePackage{manyfoot} \RequirePackage{manyfoot}
\SelectFootnoteRule[2]{copyrightpermission} \SelectFootnoteRule[2]{copyrightpermission}
\DeclareNewFootnote{authorsaddresses}
\SelectFootnoteRule[2]{copyrightpermission}
\DeclareNewFootnote{copyrightpermission} \DeclareNewFootnote{copyrightpermission}
\def\footnoterule{\kern-3\p@ \def\footnoterule{\kern-3\p@
\hrule \@width 4pc \kern 2.6\p@} \hrule \@width 4pc \kern 2.6\p@}
@ -569,7 +598,7 @@ Computing Machinery]
\normalcolor \normalcolor
\unvbox\@mpfootins \unvbox\@mpfootins
\fi \fi
\@minipagefalse %% added 24 May 89 \@minipagefalse
\color@endgroup \color@endgroup
\egroup \egroup
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}} \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
@ -617,12 +646,13 @@ Computing Machinery]
\newif\if@ACM@newfonts \newif\if@ACM@newfonts
\@ACM@newfontstrue \@ACM@newfontstrue
\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not \IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
have libertine package installed. Please upgrade your have the libertine package installed. Please upgrade your
TeX}\@ACM@newfontsfalse} TeX}\@ACM@newfontsfalse}
\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not \IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
have zi4 package installed. Please upgrade your TeX}\@ACM@newfontsfalse} have the zi4 package installed. Please upgrade your
TeX}\@ACM@newfontsfalse}
\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not \IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
have newtxmath package installed. Please upgrade your have the newtxmath package installed. Please upgrade your
TeX}\@ACM@newfontsfalse} TeX}\@ACM@newfontsfalse}
\if@ACM@newfonts \if@ACM@newfonts
\RequirePackage[tt=false, type1=true]{libertine} \RequirePackage[tt=false, type1=true]{libertine}
@ -630,6 +660,9 @@ Computing Machinery]
\RequirePackage[libertine]{newtxmath} \RequirePackage[libertine]{newtxmath}
\RequirePackage[T1]{fontenc} \RequirePackage[T1]{fontenc}
\fi \fi
\let\liningnums\@undefined
\AtEndPreamble{%
\DeclareTextFontCommand{\liningnums}{\libertineLF}}
\if@ACM@sigchiamode \if@ACM@sigchiamode
\renewcommand{\familydefault}{\sfdefault} \renewcommand{\familydefault}{\sfdefault}
\fi \fi
@ -779,6 +812,7 @@ Computing Machinery]
TCPS,% TCPS,%
TEAC,% TEAC,%
TECS,% TECS,%
THRI,%
TIIS,% TIIS,%
TISSEC,% TISSEC,%
TIST,% TIST,%
@ -824,6 +858,8 @@ Computing Machinery]
Wearable and Ubiquitous Technologies}% Wearable and Ubiquitous Technologies}%
\def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}% \def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
\def\@permissionCodeOne{2474-9567}% \def\@permissionCodeOne{2474-9567}%
\@ACM@screentrue
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
\or % JACM \or % JACM
\def\@journalName{Journal of the ACM}% \def\@journalName{Journal of the ACM}%
\def\@journalNameShort{J. ACM}% \def\@journalNameShort{J. ACM}%
@ -846,19 +882,25 @@ Computing Machinery]
\def\@permissionCodeOne{1550-4832}% \def\@permissionCodeOne{1550-4832}%
\or % JOCCH \or % JOCCH
\def\@journalName{ACM Journal on Computing and Cultural Heritage}% \def\@journalName{ACM Journal on Computing and Cultural Heritage}%
\def\@journalName{ACM J. Comput. Cult. Herit.}% \def\@journalNameShort{ACM J. Comput. Cult. Herit.}%
\or % PACMHCI \or % PACMHCI
\def\@journalName{Proceedings of the ACM on Human-Computer Interaction}% \def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
\def\@journalName{Proc. ACM Hum.-Comput. Interact.}% \def\@journalNameShort{Proc. ACM Hum.-Comput. Interact.}%
\def\@permissionCodeOne{2573-0142}% \def\@permissionCodeOne{2573-0142}%
\@ACM@screentrue
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
\or % PACMPL \or % PACMPL
\def\@journalName{Proceedings of the ACM on Programming Languages}% \def\@journalName{Proceedings of the ACM on Programming Languages}%
\def\@journalName{Proc. ACM Program. Lang.}% \def\@journalNameShort{Proc. ACM Program. Lang.}%
\def\@permissionCodeOne{2475-1421}% \def\@permissionCodeOne{2475-1421}%
\@ACM@screentrue
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
\or % POMACS \or % POMACS
\def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}% \def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
\def\@journalName{Proc. ACM Meas. Anal. Comput. Syst.}% \def\@journalNameShort{Proc. ACM Meas. Anal. Comput. Syst.}%
\def\@permissionCodeOne{2476-1249}% \def\@permissionCodeOne{2476-1249}%
\@ACM@screentrue
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
\or % TAAS \or % TAAS
\def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}% \def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
\def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}% \def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
@ -869,6 +911,7 @@ Computing Machinery]
\def\@permissionCodeOne{1936-7228}% \def\@permissionCodeOne{1936-7228}%
\or % TACO \or % TACO
\def\@journalName{ACM Transactions on Architecture and Code Optimization}% \def\@journalName{ACM Transactions on Architecture and Code Optimization}%
\def\@journalNameShort{ACM Trans. Arch. Code Optim.}%
\or % TALG \or % TALG
\def\@journalName{ACM Transactions on Algorithms}% \def\@journalName{ACM Transactions on Algorithms}%
\def\@journalNameShort{ACM Trans. Algor.}% \def\@journalNameShort{ACM Trans. Algor.}%
@ -887,6 +930,10 @@ Computing Machinery]
\def\@journalName{ACM Transactions on Embedded Computing Systems}% \def\@journalName{ACM Transactions on Embedded Computing Systems}%
\def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}% \def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
\def\@permissionCodeOne{1539-9087}% \def\@permissionCodeOne{1539-9087}%
\or % THRI
\def\@journalName{ACM Transactions on Human-Robot Interaction}%
\def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
\def\@permissionCodeOne{2573-9522}%
\or % TIIS \or % TIIS
\def\@journalName{ACM Transactions on Interactive Intelligent Systems}% \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
\def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}% \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
@ -940,7 +987,6 @@ Computing Machinery]
\def\@journalNameShort{ACM Trans. Graph.}% \def\@journalNameShort{ACM Trans. Graph.}%
\def\@permissionCodeOne{0730-0301} \def\@permissionCodeOne{0730-0301}
\or % TOIS \or % TOIS
\def\@journalName{ACM Transactions on Information Systems}%
\def\@journalName{ACM Transactions on Information Systems}% \def\@journalName{ACM Transactions on Information Systems}%
\def\@permissionCodeOne{1046-8188}% \def\@permissionCodeOne{1046-8188}%
\or % TOIT \or % TOIT
@ -948,7 +994,6 @@ Computing Machinery]
\def\@journalNameShort{ACM Trans. Internet Technol.}% \def\@journalNameShort{ACM Trans. Internet Technol.}%
\def\@permissionCodeOne{1533-5399}% \def\@permissionCodeOne{1533-5399}%
\or % TOMACS \or % TOMACS
\def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
\def\@journalName{ACM Transactions on Modeling and Computer Simulation}% \def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
\def\@journalNameShort{ACM Trans. Model. Comput. Simul.}% \def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
\or % TOMM \or % TOMM
@ -1029,13 +1074,28 @@ Computing Machinery]
\fi} \fi}
\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington, \acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
DC, USA} DC, USA}
\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}} \def\subtitle#1{\def\@subtitle{#1}}
\subtitle{} \subtitle{}
\newcount\num@authorgroups \newcount\num@authorgroups
\num@authorgroups=0\relax \num@authorgroups=0\relax
\newcount\num@authors
\num@authors=0\relax
\newif\if@insideauthorgroup \newif\if@insideauthorgroup
\@insideauthorgroupfalse \@insideauthorgroupfalse
\renewcommand\author[2][]{% \renewcommand\author[2][]{%
\global\advance\num@authors by 1\relax
\if@insideauthorgroup\else \if@insideauthorgroup\else
\global\advance\num@authorgroups by 1\relax \global\advance\num@authorgroups by 1\relax
\global\@insideauthorgrouptrue \global\@insideauthorgrouptrue
@ -1080,7 +1140,7 @@ Computing Machinery]
\g@addto@macro\addresses{\affiliation{#1}{#2}}% \g@addto@macro\addresses{\affiliation{#1}{#2}}%
\fi} \fi}
\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}% \define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
[true]{}{\ClassError{\@classname}{obeypunctuation must be true or false}} [true]{}{\ClassError{\@classname}{The option obeypunctuation can be either true or false}}
\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}} \def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
\def\@additionalaffiliation#1{\bgroup \def\@additionalaffiliation#1{\bgroup
\def\position##1{\ignorespaces}% \def\position##1{\ignorespaces}%
@ -1098,6 +1158,8 @@ Computing Machinery]
\g@addto@macro\addresses{\email{#1}{#2}}% \g@addto@macro\addresses{\email{#1}{#2}}%
\fi} \fi}
\def\orcid#1{\unskip\ignorespaces} \def\orcid#1{\unskip\ignorespaces}
\def\authorsaddresses#1{\def\@authorsaddresses{#1}}
\authorsaddresses{\@mkauthorsaddresses}
\def\@titlenotes{} \def\@titlenotes{}
\def\titlenote#1{% \def\titlenote#1{%
\g@addto@macro\@title{\footnotemark}% \g@addto@macro\@title{\footnotemark}%
@ -1135,7 +1197,7 @@ Computing Machinery]
\def\acmNumber#1{\def\@acmNumber{#1}} \def\acmNumber#1{\def\@acmNumber{#1}}
\acmNumber{1} \acmNumber{1}
\def\acmArticle#1{\def\@acmArticle{#1}} \def\acmArticle#1{\def\@acmArticle{#1}}
\acmArticle{1} \acmArticle{}
\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}} \def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
\acmArticleSeq{\@acmArticle} \acmArticleSeq{\@acmArticle}
\def\acmYear#1{\def\@acmYear{#1}} \def\acmYear#1{\def\@acmYear{#1}}
@ -1186,22 +1248,22 @@ Computing Machinery]
\ClassInfo{\@classname}{Printing CCS}% \ClassInfo{\@classname}{Printing CCS}%
\else \else
\ClassInfo{\@classname}{Suppressing CCS}% \ClassInfo{\@classname}{Suppressing CCS}%
\fi}{\ClassError{\@classname}{printccs must be true or false}} \fi}{\ClassError{\@classname}{The option printccs can be either true or false}}
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{% \define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
\if@ACM@printacmref \if@ACM@printacmref
\ClassInfo{\@classname}{Printing bibformat}% \ClassInfo{\@classname}{Printing bibformat}%
\else \else
\ClassInfo{\@classname}{Suppressing bibformat}% \ClassInfo{\@classname}{Suppressing bibformat}%
\fi}{\ClassError{\@classname}{printacmref must be true or false}} \fi}{\ClassError{\@classname}{The option printacmref can be either true or false}}
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{% \define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
\if@ACM@printfolios \if@ACM@printfolios
\ClassInfo{\@classname}{Printing folios}% \ClassInfo{\@classname}{Printing folios}%
\else \else
\ClassInfo{\@classname}{Suppressing folios}% \ClassInfo{\@classname}{Suppressing folios}%
\fi}{\ClassError{\@classname}{printfolios must be true or false}} \fi}{\ClassError{\@classname}{The option printfolios can be either true or false}}
\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{% \define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
\IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to \IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
#1}}{\ClassWarning{\@classname}{Parameter authorsperrow must be #1}}{\ClassWarning{\@classname}{The parameter authorsperrow must be
numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}} numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}} \def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
\settopmatter{printccs=true, printacmref=true} \settopmatter{printccs=true, printacmref=true}
@ -1269,8 +1331,7 @@ Computing Machinery]
\define@choicekey*{ACM@}{acmcopyrightmode}[% \define@choicekey*{ACM@}{acmcopyrightmode}[%
\acm@copyrightinput\acm@copyrightmode]{none,% \acm@copyrightinput\acm@copyrightmode]{none,%
acmcopyright,acmlicensed,rightsretained,% acmcopyright,acmlicensed,rightsretained,%
usgov,usgovmixed,cagov,cagovmixed,% usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
licensedusgovmixed,%
licensedcagov,licensedcagovmixed,othergov,licensedothergov}{% licensedcagov,licensedcagovmixed,othergov,licensedothergov}{%
\@printpermissiontrue \@printpermissiontrue
\@printcopyrighttrue \@printcopyrighttrue
@ -1481,7 +1542,7 @@ Computing Machinery]
\renewcommand\thefootnote{\@fnsymbol\c@footnote}% \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\global\@topnum\z@ % this prevents floats from falling \global\@topnum\z@ % this prevents floats from falling
% at the top of page 1 % at the top of page 1
\global\@botnum\z@ % we do not want them to be on bottom either \global\@botnum\z@ % we do not want them to be on the bottom either
\hsize=\textwidth \hsize=\textwidth
\def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}% \def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
\@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers \@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
@ -1492,12 +1553,21 @@ Computing Machinery]
\@titlenotes \@titlenotes
\@subtitlenotes \@subtitlenotes
\@authornotes \@authornotes
\let\@makefnmark\relax \let\@thefnmark\relax \let\@makefnmark\relax
\let\@thefnmark\relax
\let\@makefntext\noindent \let\@makefntext\noindent
\ifx\@empty\thankses\else \ifx\@empty\thankses\else
\footnotetextcopyrightpermission{% \footnotetextauthorsaddresses{%
\def\par{\let\par\@par}\parindent\z@\@setthanks}% \def\par{\let\par\@par}\parindent\z@\@setthanks}%
\fi \fi
\ifx\@empty\@authorsaddresses\else
\if@ACM@anonymous\else
\if@ACM@journal
\footnotetextauthorsaddresses{%
\def\par{\let\par\@par}\parindent\z@\@setauthorsaddresses}%
\fi
\fi
\fi
\footnotetextcopyrightpermission{% \footnotetextcopyrightpermission{%
\if@ACM@authordraft \if@ACM@authordraft
\raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries \raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
@ -1529,7 +1599,7 @@ Computing Machinery]
\if@ACM@journal \if@ACM@journal
\emph{\@journalName}% \emph{\@journalName}%
\else \else
\emph{Proceedings of \acmConference@name, \acmConference@date}% \emph{\@acmBooktitle}%
\fi \fi
\ifx\@acmDOI\@empty \ifx\@acmDOI\@empty
. .
@ -1542,9 +1612,9 @@ Computing Machinery]
\ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\ \ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
\@formatdoi{\@acmDOI}% \@formatdoi{\@acmDOI}%
\else % Conference \else % Conference
ACM~ISBN~\@acmISBN \ifx\@acmISBN\@empty\else ACM~ISBN~\@acmISBN
\ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\ \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\\fi
\@formatdoi{\@acmDOI}% \ifx\@acmDOI\@empty\else\@formatdoi{\@acmDOI}\fi%
\fi \fi
\fi \fi
\fi} \fi}
@ -1612,13 +1682,10 @@ Computing Machinery]
\ifcase\ACM@format@nr \ifcase\ACM@format@nr
\relax % manuscript \relax % manuscript
\box\mktitle@bx\par \box\mktitle@bx\par
\noindent\hrulefill\par
\or % acmsmall \or % acmsmall
\box\mktitle@bx\par \box\mktitle@bx\par
\noindent\hrulefill\par
\or % acmlarge \or % acmlarge
\box\mktitle@bx\par \box\mktitle@bx\par
\noindent\hrulefill\par
\or % acmtog \or % acmtog
\twocolumn[\box\mktitle@bx]% \twocolumn[\box\mktitle@bx]%
\or % sigconf \or % sigconf
@ -1670,11 +1737,11 @@ Computing Machinery]
\def\@titlefont{% \def\@titlefont{%
\ifcase\ACM@format@nr \ifcase\ACM@format@nr
\relax % manuscript \relax % manuscript
\LARGE\bfseries\sffamily \LARGE\sffamily\bfseries
\or % acmsmall \or % acmsmall
\LARGE\bfseries\sffamily \LARGE\sffamily\bfseries
\or % acmlarge \or % acmlarge
\LARGE\bfseries\sffamily \LARGE\sffamily\bfseries
\or % acmtog \or % acmtog
\Huge\sffamily \Huge\sffamily
\or % sigconf \or % sigconf
@ -1785,10 +1852,10 @@ Computing Machinery]
\def\postcode#1{\unskip\ignorespaces} \def\postcode#1{\unskip\ignorespaces}
\if@ACM@journal \if@ACM@journal
\def\position#1{\unskip\ignorespaces} \def\position#1{\unskip\ignorespaces}
\def\institution#1{#1\ignorespaces} \def\institution#1{\unskip~#1\ignorespaces}
\def\city#1{\unskip\ignorespaces} \def\city#1{\unskip\ignorespaces}
\def\state#1{\unskip\ignorespaces} \def\state#1{\unskip\ignorespaces}
\newcommand\department[2][0]{} \newcommand\department[2][0]{\unskip\ignorespaces}
\def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces} \def\country#1{\if@ACM@affiliation@obeypunctuation\else, \fi#1\ignorespaces}
\else \else
\def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}% \def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
@ -1989,6 +2056,26 @@ Computing Machinery]
\par\raggedright\leftskip=\z@ \par\raggedright\leftskip=\z@
\lineskip=1pc\noindent \lineskip=1pc\noindent
\addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup} \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\@addpunct, ##1}%
\def\postcode##1{\unskip\@addpunct, ##1}%
\def\position##1{\unskip\ignorespaces}%
\def\institution##1{\unskip\@addpunct, ##1}%
\def\city##1{\unskip\@addpunct, ##1}%
\def\state##1{\unskip\@addpunct, ##1}%
\renewcommand\department[2][0]{\unskip\@addpunct, ##2}%
\def\country##1{\unskip\@addpunct, ##1}%
\def\and{\unskip\@addpunct; }%
\def\@author##1{##1}%
\def\email##1##2{\unskip\@addpunct, \nolinkurl{##2}}%
\addresses
\egroup}
\def\@setaddresses{}
\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}} \def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark\relax}}
\def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}} \def\@@authornotemark#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
\def\@mkteasers{% \def\@mkteasers{%
@ -1998,60 +2085,45 @@ Computing Machinery]
\global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
\noindent\@teaserfigures\par\medskip}% \noindent\@teaserfigures\par\medskip}%
\fi} \fi}
\def\@setaddresses{}
\def\@mkabstract{\bgroup \def\@mkabstract{\bgroup
\ifx\@abstract\@lempty\else \ifx\@abstract\@lempty\else
{\phantomsection\addcontentsline{toc}{section}{Abstract}% {\phantomsection\addcontentsline{toc}{section}{Abstract}%
\if@ACM@journal \if@ACM@journal
\small\noindent \everypar{\setbox\z@\lastbox\everypar{}}\small
\else \else
\section*{Abstract}% \section*{Abstract}%
\fi \fi
\ignorespaces\@abstract\par}% \ignorespaces\@abstract\par}%
\fi\egroup} \fi\egroup}
\def\@mkbibcitation{\bgroup \def\@mkbibcitation{\bgroup
\def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
\def\footnotemark{}% \def\footnotemark{}%
\def\\{\unskip{} \ignorespaces}% \def\\{\unskip{} \ignorespaces}%
\def\footnote{\ClassError{\@classname}{Please do note use footnotes \def\footnote{\ClassError{\@classname}{Please do note use footnotes
inside \string\title{} or \string\author{} command! Use inside a \string\title{} or \string\author{} command! Use
\string\titlenote{} or \string\authornote{} instead!}}% \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 \par\medskip\small\noindent{\bfseries ACM Reference Format:}\par\nobreak
\noindent\authors. \@acmYear. \@title. \noindent\authors. \@acmYear. \@title
\ifx\@subtitle\@empty. \else: \@subtitle. \fi
\if@ACM@journal \if@ACM@journal
\textit{\@journalNameShort} \textit{\@journalNameShort}
\@acmVolume, \@acmNumber, Article~\@acmArticle\ (\@acmPubDate), \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
\ref{TotPages}~pages. \ref{TotPages}~\@pages@word.
\else \else
In \textit{Proceedings of \acmConference@name, \acmConference@venue, In \textit{\@acmBooktitle}%
\acmConference@date \ifx\@acmEditors\@empty\textit{.}\else
\ifx\acmConference@name\acmConference@shortname\else \andify\@acmEditors\textit{, }\@acmEditors~\@editorsAbbrev.%
\ (\acmConference@shortname)\fi \fi\
,} \ref{TotPages}~pages. ACM, New York, NY, USA%
\fi\par \@article@string\unskip, \ref{TotPages}~\@pages@word.
\noindent\@formatdoi{\@acmDOI}
\par\egroup}
\def\@printendtopmatter{\par\medskip
\ifcase\ACM@format@nr
\relax % manuscript
\noindent\hrulefill\par\medskip
\or % acmsmall
\noindent\hrulefill\par\medskip
\or % acmlarge
\noindent\hrulefill\par\medskip
\or % acmtog
\par\bigskip
\or % sigconf
\par\bigskip
\or % siggraph
\par\bigskip
\or % sigplan
\par\bigskip
\or % sigchi
\par\bigskip
\or % sigchi-a
\fi \fi
} \@formatdoi{\@acmDOI}
\par\egroup}
\def\@printendtopmatter{\par\bigskip}
\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses} \def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
\RequirePackage{fancyhdr} \RequirePackage{fancyhdr}
\if@ACM@review \if@ACM@review
\newsavebox{\ACM@linecount@bx} \newsavebox{\ACM@linecount@bx}
@ -2060,11 +2132,13 @@ Computing Machinery]
\ACM@linecount\@ne\relax \ACM@linecount\@ne\relax
\def\ACM@mk@linecount{% \def\ACM@mk@linecount{%
\savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{% \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{%
\setlength{\ACM@linecount@bxht}{-\baselineskip}% \setlength{\ACM@linecount@bxht}{0pt}%
\loop{\color{red}\scriptsize\the\ACM@linecount}\\ \loop{\color{red}\scriptsize\the\ACM@linecount}\\
\global\advance\ACM@linecount by \@ne \global\advance\ACM@linecount by \@ne
\addtolength{\ACM@linecount@bxht}{\baselineskip}% \addtolength{\ACM@linecount@bxht}{\baselineskip}%
\ifdim\ACM@linecount@bxht<\textheight\repeat}}} \ifdim\ACM@linecount@bxht<\textheight\repeat
{\color{red}\scriptsize\the\ACM@linecount}\hfill
\global\advance\ACM@linecount by \@ne}}}
\fi \fi
\def\ACM@linecountL{% \def\ACM@linecountL{%
\if@ACM@review \if@ACM@review
@ -2081,7 +2155,7 @@ Computing Machinery]
\end{picture}% \end{picture}%
\fi} \fi}
\if@ACM@timestamp \if@ACM@timestamp
% Subtracting 30 from \time gives us the effect of rounding-down despite % Subtracting 30 from \time gives us the effect of rounding down despite
% \numexpr rounding to nearest % \numexpr rounding to nearest
\newcounter{ACM@time@hours} \newcounter{ACM@time@hours}
\setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax} \setcounter{ACM@time@hours}{\numexpr (\time - 30) / 60 \relax}
@ -2089,36 +2163,16 @@ Computing Machinery]
\setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax} \setcounter{ACM@time@minutes}{\numexpr \time - \theACM@time@hours * 60 \relax}
\newcommand\ACM@timestamp{% \newcommand\ACM@timestamp{%
\footnotesize% \footnotesize%
\the\year-\two@digits{\the\month}-\two@digits{\the\day}{ }%
\two@digits{\theACM@time@hours}:\two@digits{\theACM@time@minutes}{ }%
page~\thepage\ (pp. \@startPage-\pageref*{TotPages})%
\ifx\@acmSubmissionID\@empty\relax\else \ifx\@acmSubmissionID\@empty\relax\else
~Submission~ID: \@acmSubmissionID Submission ID: \@acmSubmissionID.{ }%
\fi \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 \fi
\def\@shortauthors{\if@ACM@anonymous Anon.\else\shortauthors\fi} \def\@shortauthors{\if@ACM@anonymous Anon.\else\shortauthors\fi}
\def\@headfootfont{% \def\@headfootfont{\sffamily}
\ifcase\ACM@format@nr
\relax % manuscript
\sffamily
\or % acmsmall
\sffamily
\or % acmlarge
\sffamily
\or % acmtog
\sffamily
\or % sigconf
\sffamily
\or % siggraph
\sffamily
\or % sigplan
\sffamily
\or % sigchi
\sffamily
\or % sigchi-a
\sffamily
\fi}
\fancypagestyle{standardpagestyle}{% \fancypagestyle{standardpagestyle}{%
\fancyhf{}% \fancyhf{}%
\renewcommand{\headrulewidth}{\z@}% \renewcommand{\headrulewidth}{\z@}%
@ -2191,7 +2245,8 @@ Computing Machinery]
\@folio@voffset=.55in\relax \@folio@voffset=.55in\relax
\def\@folio@max{10} \def\@folio@max{10}
\fi \fi
\def\@folioblob{\@tempcnta=\@acmArticleSeq\relax \def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
\ifnum\@tempcnta=0\relax\else
\loop \loop
\ifnum\@tempcnta>\@folio@max\relax \ifnum\@tempcnta>\@folio@max\relax
\advance\@tempcnta by - \@folio@max \advance\@tempcnta by - \@folio@max
@ -2207,8 +2262,8 @@ Computing Machinery]
\rule{\@folio@wd}{\@folio@ht}}}% \rule{\@folio@wd}{\@folio@ht}}}%
\parbox{\@folio@wd}{% \parbox{\@folio@wd}{%
\centering \centering
\textcolor{white}{\LARGE\bfseries\sffamily\@acmArticle}}}} \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
\end{picture}} \end{picture}\fi}
\fancypagestyle{firstpagestyle}{% \fancypagestyle{firstpagestyle}{%
\fancyhf{}% \fancyhf{}%
@ -2255,6 +2310,14 @@ Computing Machinery]
\fi \fi
\fi \fi
} }
\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}
\renewcommand\section{\@startsection{section}{1}{\z@}% \renewcommand\section{\@startsection{section}{1}{\z@}%
{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}% {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{.25\baselineskip}% {.25\baselineskip}%
@ -2297,8 +2360,8 @@ Computing Machinery]
\def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase} \def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
\def\@subsecfont{\bfseries\Large\section@raggedright} \def\@subsecfont{\bfseries\Large\section@raggedright}
\or % siggraph \or % siggraph
\def\@secfont{\bfseries\sffamily\Large\section@raggedright\MakeTextUppercase} \def\@secfont{\sffamily\bfseries\Large\section@raggedright\MakeTextUppercase}
\def\@subsecfont{\bfseries\sffamily\Large\section@raggedright} \def\@subsecfont{\sffamily\bfseries\Large\section@raggedright}
\or % sigplan \or % sigplan
\def\@secfont{\bfseries\Large\section@raggedright} \def\@secfont{\bfseries\Large\section@raggedright}
\def\@subsecfont{\bfseries\section@raggedright} \def\@subsecfont{\bfseries\section@raggedright}
@ -2319,12 +2382,12 @@ Computing Machinery]
\def\@subparfont{\itshape} \def\@subparfont{\itshape}
\or % sigchi \or % sigchi
\setcounter{secnumdepth}{1} \setcounter{secnumdepth}{1}
\def\@secfont{\bfseries\sffamily\section@raggedright\MakeTextUppercase} \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
\def\@subsecfont{\bfseries\sffamily\section@raggedright} \def\@subsecfont{\sffamily\bfseries\section@raggedright}
\or % sigchi-a \or % sigchi-a
\setcounter{secnumdepth}{0} \setcounter{secnumdepth}{0}
\def\@secfont{\bfseries\sffamily\section@raggedright\MakeTextUppercase} \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
\def\@subsecfont{\bfseries\sffamily\section@raggedright} \def\@subsecfont{\sffamily\bfseries\section@raggedright}
\fi \fi
\def\@adddotafter#1{#1\@addpunct{.}} \def\@adddotafter#1{#1\@addpunct{.}}
\def\@addspaceafter#1{#1\@addpunct{\enspace}} \def\@addspaceafter#1{#1\@addpunct{\enspace}}
@ -2390,15 +2453,33 @@ Computing Machinery]
{.5em}% spacing after head {.5em}% spacing after head
{\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec {\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
\theoremstyle{acmplain} \theoremstyle{acmplain}
\newtheorem{theorem}{Theorem}[section] \AtEndPreamble{%
\newtheorem{conjecture}[theorem]{Conjecture} \if@ACM@acmthm
\newtheorem{proposition}[theorem]{Proposition} \theoremstyle{acmplain}
\newtheorem{lemma}[theorem]{Lemma} \@ifundefined{theorem}{%
\newtheorem{corollary}[theorem]{Corollary} \newtheorem{theorem}{Theorem}[section]
\theoremstyle{acmdefinition} }{}
\newtheorem{example}[theorem]{Example} \@ifundefined{conjecture}{%
\newtheorem{definition}[theorem]{Definition} \newtheorem{conjecture}[theorem]{Conjecture}
\theoremstyle{acmplain} }{}
\@ifundefined{proposition}{%
\newtheorem{proposition}[theorem]{Proposition}
}{}
\newtheorem{lemma}[theorem]{Lemma}
\@ifundefined{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\@proofnamefont{\scshape}
\def\@proofindent{\indent} \def\@proofindent{\indent}
\ifcase\ACM@format@nr \ifcase\ACM@format@nr
@ -2433,6 +2514,7 @@ Computing Machinery]
\def\grantsponsor#1#2#3{#2} \def\grantsponsor#1#2#3{#2}
\newcommand\grantnum[3][]{#3% \newcommand\grantnum[3][]{#3%
\def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi} \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
\AtEndPreamble{%
\if@ACM@screen \if@ACM@screen
\includecomment{screenonly} \includecomment{screenonly}
\excludecomment{printonly} \excludecomment{printonly}
@ -2445,7 +2527,7 @@ Computing Machinery]
\excludecomment{acks} \excludecomment{acks}
\else \else
\includecomment{anonsuppress} \includecomment{anonsuppress}
\fi \fi}
\newcommand\showeprint[2][arxiv]{% \newcommand\showeprint[2][arxiv]{%
\def\@tempa{#1}% \def\@tempa{#1}%
\ifx\@tempa\@empty\def\@tempa{arxiv}\fi \ifx\@tempa\@empty\def\@tempa{arxiv}\fi