commit ad6deb73668c3dc4cd82aa73f121f17ac55a248e
parent dd92ebd2d98707b942c295c123f95a6b125df3eb
Author: Matthew Flatt <mflatt@racket-lang.org>
Date: Tue, 26 Sep 2017 07:45:10 -0600
upgrade acmart.cls
Diffstat:
1 file changed, 216 insertions(+), 134 deletions(-)
diff --git a/scribble-lib/scribble/acmart/acmart.cls b/scribble-lib/scribble/acmart/acmart.cls
@@ -37,7 +37,7 @@
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}
\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]
\def\@classname{acmart}
\InputIfFileExists{acmart-preload-hook.tex}{%
@@ -68,15 +68,24 @@ Computing Machinery]
\PackageInfo{\@classname}{Using screen mode}%
\else
\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}}
\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]{%
\if@ACM@review
\PackageInfo{\@classname}{Using review mode}%
+ \AtBeginDocument{\@ACM@printfoliostrue}%
\else
\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}}
\ExecuteOptionsX{review=false}
\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
@@ -84,7 +93,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Using authorversion mode}%
\else
\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}}
\ExecuteOptionsX{authorversion=false}
\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
@@ -92,7 +101,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Explicitly selecting natbib mode}%
\else
\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}}
\ExecuteOptionsX{natbib=true}
\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
@@ -100,7 +109,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Using anonymous mode}%
\else
\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}}
\ExecuteOptionsX{anonymous=false}
\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
@@ -108,7 +117,7 @@ Computing Machinery]
\PackageInfo{\@classname}{Using timestamp mode}%
\else
\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}}
\ExecuteOptionsX{timestamp=false}
\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
@@ -118,7 +127,7 @@ Computing Machinery]
\@ACM@reviewtrue
\else
\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}}
\ExecuteOptionsX{authordraft=false}
\def\ACM@fontsize{}
@@ -134,7 +143,7 @@ Computing Machinery]
\newif\if@ACM@journal
\newif\if@ACM@sigchiamode
\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.}
\setkeys{acmart.cls}{format=sigconf}
\fi
@@ -190,6 +199,24 @@ Computing Machinery]
\ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
\LoadClass[\ACM@fontsize, reqno]{amsart}
\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{environ}
\if@ACM@manuscript
@@ -422,16 +449,16 @@ Computing Machinery]
\or % sigchi-a
\urlstyle{sf}
\fi
-\if@ACM@screen
- \hypersetup{colorlinks,
- linkcolor=ACMRed,
- citecolor=ACMPurple,
- urlcolor=ACMDarkBlue,
- filecolor=ACMDarkBlue}
-\else
- \hypersetup{hidelinks}
-\fi
-\RequirePackage{cleveref}
+\AtEndPreamble{%
+ \if@ACM@screen
+ \hypersetup{colorlinks,
+ linkcolor=ACMRed,
+ citecolor=ACMPurple,
+ urlcolor=ACMDarkBlue,
+ filecolor=ACMDarkBlue}
+ \else
+ \hypersetup{hidelinks}
+ \fi}
\if@ACM@natbib
\let\citeN\cite
\let\cite\citep
@@ -558,6 +585,8 @@ Computing Machinery]
\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@}
@@ -569,7 +598,7 @@ Computing Machinery]
\normalcolor
\unvbox\@mpfootins
\fi
- \@minipagefalse %% added 24 May 89
+ \@minipagefalse
\color@endgroup
\egroup
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
@@ -617,12 +646,13 @@ Computing Machinery]
\newif\if@ACM@newfonts
\@ACM@newfontstrue
\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}
\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
- have newtxmath package installed. Please upgrade your
+ have the newtxmath package installed. Please upgrade your
TeX}\@ACM@newfontsfalse}
\if@ACM@newfonts
\RequirePackage[tt=false, type1=true]{libertine}
@@ -630,6 +660,9 @@ Computing Machinery]
\RequirePackage[libertine]{newtxmath}
\RequirePackage[T1]{fontenc}
\fi
+\let\liningnums\@undefined
+\AtEndPreamble{%
+ \DeclareTextFontCommand{\liningnums}{\libertineLF}}
\if@ACM@sigchiamode
\renewcommand{\familydefault}{\sfdefault}
\fi
@@ -637,7 +670,7 @@ Computing Machinery]
\captionsetup[table]{position=top}
\if@ACM@journal
\captionsetup{labelfont={sf, small},
- textfont={sf, small}, margin=\z@}
+ textfont={sf, small}, margin=\z@}
\captionsetup[figure]{name={Fig.}}
\else
\captionsetup{labelfont={bf},
@@ -779,6 +812,7 @@ Computing Machinery]
TCPS,%
TEAC,%
TECS,%
+ THRI,%
TIIS,%
TISSEC,%
TIST,%
@@ -824,6 +858,8 @@ Computing Machinery]
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}%
@@ -846,19 +882,25 @@ Computing Machinery]
\def\@permissionCodeOne{1550-4832}%
\or % JOCCH
\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
\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}%
+ \@ACM@screentrue
+ \PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
\or % PACMPL
\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}%
+ \@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\@journalName{Proc. ACM Meas. Anal. Comput. Syst.}%
+ \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.}%
@@ -869,6 +911,7 @@ Computing Machinery]
\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.}%
@@ -887,6 +930,10 @@ Computing Machinery]
\def\@journalName{ACM Transactions on Embedded Computing Systems}%
\def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
\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
\def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
\def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
@@ -941,7 +988,6 @@ Computing Machinery]
\def\@permissionCodeOne{0730-0301}
\or % TOIS
\def\@journalName{ACM Transactions on Information Systems}%
- \def\@journalName{ACM Transactions on Information Systems}%
\def\@permissionCodeOne{1046-8188}%
\or % TOIT
\def\@journalName{ACM Transactions on Internet Technology}%
@@ -949,7 +995,6 @@ Computing Machinery]
\def\@permissionCodeOne{1533-5399}%
\or % TOMACS
\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.}%
\or % TOMM
\def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
@@ -1029,13 +1074,28 @@ Computing Machinery]
\fi}
\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
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}}
\subtitle{}
\newcount\num@authorgroups
\num@authorgroups=0\relax
+\newcount\num@authors
+\num@authors=0\relax
\newif\if@insideauthorgroup
\@insideauthorgroupfalse
\renewcommand\author[2][]{%
+ \global\advance\num@authors by 1\relax
\if@insideauthorgroup\else
\global\advance\num@authorgroups by 1\relax
\global\@insideauthorgrouptrue
@@ -1080,7 +1140,7 @@ Computing Machinery]
\g@addto@macro\addresses{\affiliation{#1}{#2}}%
\fi}
\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{\bgroup
\def\position##1{\ignorespaces}%
@@ -1098,6 +1158,8 @@ Computing Machinery]
\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}%
@@ -1135,7 +1197,7 @@ Computing Machinery]
\def\acmNumber#1{\def\@acmNumber{#1}}
\acmNumber{1}
\def\acmArticle#1{\def\@acmArticle{#1}}
-\acmArticle{1}
+\acmArticle{}
\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
\acmArticleSeq{\@acmArticle}
\def\acmYear#1{\def\@acmYear{#1}}
@@ -1186,22 +1248,22 @@ Computing Machinery]
\ClassInfo{\@classname}{Printing CCS}%
\else
\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]{%
\if@ACM@printacmref
\ClassInfo{\@classname}{Printing bibformat}%
\else
\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]{%
\if@ACM@printfolios
\ClassInfo{\@classname}{Printing folios}%
\else
\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]{%
\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}}}
\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
\settopmatter{printccs=true, printacmref=true}
@@ -1269,8 +1331,7 @@ Computing Machinery]
\define@choicekey*{ACM@}{acmcopyrightmode}[%
\acm@copyrightinput\acm@copyrightmode]{none,%
acmcopyright,acmlicensed,rightsretained,%
- usgov,usgovmixed,cagov,cagovmixed,%
- licensedusgovmixed,%
+ usgov,usgovmixed,cagov,cagovmixed,licensedusgovmixed,%
licensedcagov,licensedcagovmixed,othergov,licensedothergov}{%
\@printpermissiontrue
\@printcopyrighttrue
@@ -1481,7 +1542,7 @@ Computing Machinery]
\renewcommand\thefootnote{\@fnsymbol\c@footnote}%
\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 bottom either
+ \global\@botnum\z@ % we do not want them to be on the bottom either
\hsize=\textwidth
\def\@makefnmark{\hbox{\@textsuperscript{\@thefnmark}}}%
\@mktitle\if@ACM@sigchiamode\else\@mkauthors\fi\@mkteasers
@@ -1492,12 +1553,21 @@ Computing Machinery]
\@titlenotes
\@subtitlenotes
\@authornotes
- \let\@makefnmark\relax \let\@thefnmark\relax
+ \let\@makefnmark\relax
+ \let\@thefnmark\relax
\let\@makefntext\noindent
\ifx\@empty\thankses\else
- \footnotetextcopyrightpermission{%
+ \footnotetextauthorsaddresses{%
\def\par{\let\par\@par}\parindent\z@\@setthanks}%
\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{%
\if@ACM@authordraft
\raisebox{-2ex}[\z@][\z@]{\makebox[0pt][l]{\large\bfseries
@@ -1529,7 +1599,7 @@ Computing Machinery]
\if@ACM@journal
\emph{\@journalName}%
\else
- \emph{Proceedings of \acmConference@name, \acmConference@date}%
+ \emph{\@acmBooktitle}%
\fi
\ifx\@acmDOI\@empty
.
@@ -1542,9 +1612,9 @@ Computing Machinery]
\ifx\@acmPrice\@empty\else\ \$\@acmPrice\fi\\
\@formatdoi{\@acmDOI}%
\else % Conference
- ACM~ISBN~\@acmISBN
- \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\
- \@formatdoi{\@acmDOI}%
+ \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}
@@ -1612,13 +1682,10 @@ Computing Machinery]
\ifcase\ACM@format@nr
\relax % manuscript
\box\mktitle@bx\par
- \noindent\hrulefill\par
\or % acmsmall
\box\mktitle@bx\par
- \noindent\hrulefill\par
\or % acmlarge
\box\mktitle@bx\par
- \noindent\hrulefill\par
\or % acmtog
\twocolumn[\box\mktitle@bx]%
\or % sigconf
@@ -1670,11 +1737,11 @@ Computing Machinery]
\def\@titlefont{%
\ifcase\ACM@format@nr
\relax % manuscript
- \LARGE\bfseries\sffamily
+ \LARGE\sffamily\bfseries
\or % acmsmall
- \LARGE\bfseries\sffamily
+ \LARGE\sffamily\bfseries
\or % acmlarge
- \LARGE\bfseries\sffamily
+ \LARGE\sffamily\bfseries
\or % acmtog
\Huge\sffamily
\or % sigconf
@@ -1785,10 +1852,10 @@ Computing Machinery]
\def\postcode#1{\unskip\ignorespaces}
\if@ACM@journal
\def\position#1{\unskip\ignorespaces}
- \def\institution#1{#1\ignorespaces}
+ \def\institution#1{\unskip~#1\ignorespaces}
\def\city#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}
\else
\def\position#1{\if@ACM@affiliation@obeypunctuation#1\else#1\par\fi}%
@@ -1989,6 +2056,26 @@ Computing Machinery]
\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\@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#1{\g@addto@macro\@currentauthors{\footnotemark[#1]}}
\def\@mkteasers{%
@@ -1998,60 +2085,45 @@ Computing Machinery]
\global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
\noindent\@teaserfigures\par\medskip}%
\fi}
-\def\@setaddresses{}
\def\@mkabstract{\bgroup
\ifx\@abstract\@lempty\else
{\phantomsection\addcontentsline{toc}{section}{Abstract}%
\if@ACM@journal
- \small\noindent
+ \everypar{\setbox\z@\lastbox\everypar{}}\small
\else
\section*{Abstract}%
\fi
\ignorespaces\@abstract\par}%
\fi\egroup}
\def\@mkbibcitation{\bgroup
+ \def\@pages@word{\ifnum\getrefnumber{TotPages}=1\relax page\else pages\fi}%
\def\footnotemark{}%
\def\\{\unskip{} \ignorespaces}%
\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!}}%
+ \def\@article@string{\ifx\@acmArticle\@empty{\ }\else,
+ Article~\@acmArticle\ \fi}%
\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
\textit{\@journalNameShort}
- \@acmVolume, \@acmNumber, Article~\@acmArticle\ (\@acmPubDate),
- \ref{TotPages}~pages.
+ \@acmVolume, \@acmNumber \@article@string (\@acmPubDate),
+ \ref{TotPages}~\@pages@word.
\else
- In \textit{Proceedings of \acmConference@name, \acmConference@venue,
- \acmConference@date
- \ifx\acmConference@name\acmConference@shortname\else
- \ (\acmConference@shortname)\fi
- ,} \ref{TotPages}~pages.
- \fi\par
- \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
+ 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
-}
+ \@formatdoi{\@acmDOI}
+\par\egroup}
+\def\@printendtopmatter{\par\bigskip}
\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
+\def\@setauthorsaddresses{\@authorsaddresses\unskip\@addpunct.}
\RequirePackage{fancyhdr}
\if@ACM@review
\newsavebox{\ACM@linecount@bx}
@@ -2060,11 +2132,13 @@ Computing Machinery]
\ACM@linecount\@ne\relax
\def\ACM@mk@linecount{%
\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}\\
\global\advance\ACM@linecount by \@ne
\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
\def\ACM@linecountL{%
\if@ACM@review
@@ -2081,7 +2155,7 @@ Computing Machinery]
\end{picture}%
\fi}
\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
\newcounter{ACM@time@hours}
\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}
\newcommand\ACM@timestamp{%
\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
- ~Submission~ID: \@acmSubmissionID
+ 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.\else\shortauthors\fi}
-\def\@headfootfont{%
- \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}
+\def\@headfootfont{\sffamily}
\fancypagestyle{standardpagestyle}{%
\fancyhf{}%
\renewcommand{\headrulewidth}{\z@}%
@@ -2191,7 +2245,8 @@ Computing Machinery]
\@folio@voffset=.55in\relax
\def\@folio@max{10}
\fi
-\def\@folioblob{\@tempcnta=\@acmArticleSeq\relax
+\def\@folioblob{\@tempcnta=0\@acmArticleSeq\relax
+ \ifnum\@tempcnta=0\relax\else
\loop
\ifnum\@tempcnta>\@folio@max\relax
\advance\@tempcnta by - \@folio@max
@@ -2207,8 +2262,8 @@ Computing Machinery]
\rule{\@folio@wd}{\@folio@ht}}}%
\parbox{\@folio@wd}{%
\centering
- \textcolor{white}{\LARGE\bfseries\sffamily\@acmArticle}}}}
- \end{picture}}
+ \textcolor{white}{\LARGE\sffamily\bfseries\@acmArticle}}}}
+ \end{picture}\fi}
\fancypagestyle{firstpagestyle}{%
\fancyhf{}%
@@ -2255,6 +2310,14 @@ Computing Machinery]
\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@}%
{-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
{.25\baselineskip}%
@@ -2297,8 +2360,8 @@ Computing Machinery]
\def\@secfont{\bfseries\Large\section@raggedright\MakeTextUppercase}
\def\@subsecfont{\bfseries\Large\section@raggedright}
\or % siggraph
- \def\@secfont{\bfseries\sffamily\Large\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\bfseries\sffamily\Large\section@raggedright}
+ \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}
@@ -2319,12 +2382,12 @@ Computing Machinery]
\def\@subparfont{\itshape}
\or % sigchi
\setcounter{secnumdepth}{1}
- \def\@secfont{\bfseries\sffamily\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\bfseries\sffamily\section@raggedright}
+ \def\@secfont{\sffamily\bfseries\section@raggedright\MakeTextUppercase}
+ \def\@subsecfont{\sffamily\bfseries\section@raggedright}
\or % sigchi-a
\setcounter{secnumdepth}{0}
- \def\@secfont{\bfseries\sffamily\section@raggedright\MakeTextUppercase}
- \def\@subsecfont{\bfseries\sffamily\section@raggedright}
+ \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}}
@@ -2390,15 +2453,33 @@ Computing Machinery]
{.5em}% spacing after head
{\thmname{#1}\thmnumber{ #2}\thmnote{ {\@acmdefinitionnotefont(#3)}}}% head spec
\theoremstyle{acmplain}
-\newtheorem{theorem}{Theorem}[section]
-\newtheorem{conjecture}[theorem]{Conjecture}
-\newtheorem{proposition}[theorem]{Proposition}
-\newtheorem{lemma}[theorem]{Lemma}
-\newtheorem{corollary}[theorem]{Corollary}
-\theoremstyle{acmdefinition}
-\newtheorem{example}[theorem]{Example}
-\newtheorem{definition}[theorem]{Definition}
-\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}
+ }{}
+ \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\@proofindent{\indent}
\ifcase\ACM@format@nr
@@ -2433,6 +2514,7 @@ Computing Machinery]
\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}
@@ -2445,7 +2527,7 @@ Computing Machinery]
\excludecomment{acks}
\else
\includecomment{anonsuppress}
-\fi
+\fi}
\newcommand\showeprint[2][arxiv]{%
\def\@tempa{#1}%
\ifx\@tempa\@empty\def\@tempa{arxiv}\fi