summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/acmart
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2016-05-10 21:28:54 +0000
committerKarl Berry <karl@freefriends.org>2016-05-10 21:28:54 +0000
commit9edaf8cb54cb95b68a38e1242c116c0ca0985195 (patch)
tree2a09230764d798a860a2ac1fec37d0d67b471eb0 /Master/texmf-dist/source/latex/acmart
parent55d9827b710e8c945cd35bd1efec973bf7d53698 (diff)
acmart (10may16)
git-svn-id: svn://tug.org/texlive/trunk@41010 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/acmart')
-rw-r--r--Master/texmf-dist/source/latex/acmart/acmart.dtx4097
-rw-r--r--Master/texmf-dist/source/latex/acmart/acmart.ins29
2 files changed, 4126 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/acmart/acmart.dtx b/Master/texmf-dist/source/latex/acmart/acmart.dtx
new file mode 100644
index 00000000000..57c062ee9ed
--- /dev/null
+++ b/Master/texmf-dist/source/latex/acmart/acmart.dtx
@@ -0,0 +1,4097 @@
+% \iffalse
+%
+% Copyright 2016, Association for Computing Machinery
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either
+% version 1.3 of this license or (at your option) any
+% later version.
+% The latest version of the license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of
+% LaTeX version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Boris Veytsman,
+% <borisv@lk.net>
+%
+% This work consists of the file acmart.dtx and the
+% derived file acmart.cls, and
+%
+% \fi
+%
+%
+%% \CharacterTable
+%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
+%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
+%% Digits \0\1\2\3\4\5\6\7\8\9
+%% Exclamation \! Double quote \" Hash (number) \#
+%% Dollar \$ Percent \% Ampersand \&
+%% Acute accent \' Left paren \( Right paren \)
+%% Asterisk \* Plus \+ Comma \,
+%% Minus \- Point \. Solidus \/
+%% Colon \: Semicolon \; Less than \<
+%% Equals \= Greater than \> Question mark \?
+%% Commercial at \@ Left bracket \[ Backslash \\
+%% Right bracket \] Circumflex \^ Underscore \_
+%% Grave accent \` Left brace \{ Vertical bar \|
+%% Right brace \} Tilde \~}
+%
+%
+% \MakeShortVerb{|}
+% \GetFileInfo{acmart.dtx}
+% \newcommand{\progname}[1]{\textsf{#1}}
+% \title{\LaTeX{} Class for \emph{Association for Computing
+% Machinery}\thanks{\copyright 2016, Association for Computing Machinery}}
+% \author{Boris Veytsman\thanks{%
+% \href{mailto:borisv@lk.net}{\texttt{borisv@lk.net}},
+% \href{mailto:boris@varphi.com}{\texttt{boris@varphi.com}}}}
+% \date{\filedate, \fileversion}
+% \maketitle
+% \begin{abstract}
+% This package provides a class for typesetting publications of
+% Association for Computing Machinery.
+% \end{abstract}
+% \tableofcontents
+%
+% \clearpage
+%
+%\section{Introduction}
+%\label{sec:intro}
+%
+% Association for Computing Machinery is the world's largest
+% educational and scientific computing society, which delivers
+% resources that advance computing as a science and a
+% profession\footnote{\url{http://www.acm.org/}}. It was one of the
+% earily adopters of \TeX\ for its typesetting.
+%
+% It provided several different classes for a number of journal and
+% conference proceedings. Unfortunately during the years since these
+% classes were written, the code was patched many times, and the
+% support of the different versions of the classes became difficult.
+%
+% This package provides the uniform interface for all ACM
+% publications. It is intended to replace all different classes and
+% packages and provide an up to date \LaTeX\ package.
+%
+% The package uses only free \TeX\ packages and fonts included in \TeX
+% Live, Mik\TeX\ and other popular \TeX\ distributions. It is
+% intended to be published in these distributions itself, which
+% minimizes users' efforts in the installation and support of the
+% package.
+%
+% I am grateful to
+% Matthew Fluet,
+% John Owens,
+% Craig Rodkin,
+% Bernard Rous,
+% David Shamma,
+% Stephen Spencer
+% and many others for their invaluable help.
+%
+% The development version of the package is available at
+% \url{https://github.com/borisveytsman/acmart}.
+%
+%\section{User's guide}
+%\label{sec:ug}
+%
+%
+%\subsection{Installation}
+%\label{sec:ug_install}
+%
+% Most probably, you already have this package installed in your
+% favorite \TeX\ distribution; if not, you may want to upgrade. You
+% may need to upgrade it anyway since the package uses a number
+% relatively recent packages, especially the ones related to the
+% fonts.
+%
+% If you decide to install the package yourself, follow the standard
+% rules:
+% \begin{enumerate}
+% \item Run \progname{latex} on |acmart.ins|. This will produce the file
+% |acmart.cls|.
+% \item Put the file |acmart.cls| and the bibligoraphy files |*.bst|
+% to the places where \LaTeX{} can find them (see \cite{TeXFAQ} or
+% the documentation for your \TeX{} system).\label{item:install}
+% \item Update the database of file names. Again, see \cite{TeXFAQ}
+% or the documentation for your \TeX{} system for the system-specific
+% details.\label{item:update}
+% \item The file |acmart.pdf| provides the documentation for the
+% package (this is the file you are probably reading now).
+% \end{enumerate}
+% As an alternative to items~\ref{item:install} and~\ref{item:update}
+% you can just put the files in the working directory where your
+% |.tex| file is.
+%
+%
+% The class uses a number of other packages. They are included in all
+% major \TeX\ distributions (\TeX Live, Mac\TeX, Mik\TeX) of 2015 and
+% later, so you probably have them installed. Just in case here is
+% the list of these packages:
+% \begin{itemize}
+% \item \textsl{algorithm2e}, \url{http://www.ctan.org/pkg/algorithm2e}
+% \item \textsl{amscls}, \url{http://www.ctan.org/pkg/amscls}
+% \item \textsl{amsfonts}, \url{http://www.ctan.org/pkg/amsfonts}
+% \item \textsl{amsmath}, \url{http://www.ctan.org/pkg/amsmath}
+% \item \textsl{booktabs}, \url{http://www.ctan.org/pkg/booktabs}
+% \item \textsl{caption}, \url{http://www.ctan.org/pkg/caption}
+% \item \textsl{comment}, \url{http://www.ctan.org/pkg/comment}
+% \item \textsl{environ}, \url{http://www.ctan.org/pkg/environ}
+% \item \textsl{fancyhdr}, \url{http://www.ctan.org/pkg/fancyhdr}
+% \item \textsl{float}, \url{http://www.ctan.org/pkg/float}
+% \item \textsl{fontaxes}, \url{http://www.ctan.org/pkg/fontaxes}
+% \item \textsl{geometry}, \url{http://www.ctan.org/pkg/geometry}
+% \item \textsl{graphics}, \url{http://www.ctan.org/pkg/graphics}
+% \item \textsl{hyperref}, \url{http://www.ctan.org/pkg/hyperref}
+% \item \textsl{ifluatex}, \url{http://www.ctan.org/pkg/ifluatex}
+% \item \textsl{ifxetex}, \url{http://www.ctan.org/pkg/ifxetex}
+% \item \textsl{inconsolata}, \url{http://www.ctan.org/pkg/inconsolata}
+% \item \textsl{kastrup}, \url{http://www.ctan.org/pkg/kastrup}
+% \item \textsl{libertine}, \url{http://www.ctan.org/pkg/libertine}
+% \item \textsl{manyfoot}, \url{http://www.ctan.org/pkg/manyfoot}
+% \item \textsl{microtype}, \url{http://www.ctan.org/pkg/microtype}
+% \item \textsl{mptopdf}, \url{http://www.ctan.org/pkg/mptopdf}
+% \item \textsl{ms}, \url{http://www.ctan.org/pkg/ms}
+% \item \textsl{mweights}, \url{http://www.ctan.org/pkg/mweights}
+% \item \textsl{natbib}, \url{http://www.ctan.org/pkg/natbib}
+% \item \textsl{nccfoots}, \url{http://www.ctan.org/pkg/nccfoots}
+% \item \textsl{newtx}, \url{http://www.ctan.org/pkg/newtx}
+% \item \textsl{oberdiek}, \url{http://www.ctan.org/pkg/oberdiek}
+% \item \textsl{pdftex-def}, \url{http://www.ctan.org/pkg/pdftex-def}
+% \item \textsl{relsize}, \url{http://www.ctan.org/pkg/relsize}
+% \item \textsl{setspace}, \url{http://www.ctan.org/pkg/setspace}
+% \item \textsl{tools}, \url{http://www.ctan.org/pkg/tools}
+% \item \textsl{totpages}, \url{http://www.ctan.org/pkg/totpages}
+% \item \textsl{trimspaces}, \url{http://www.ctan.org/pkg/trimspaces}
+% \item \textsl{upquote}, \url{http://www.ctan.org/pkg/upquote}
+% \item \textsl{url}, \url{http://www.ctan.org/pkg/url}
+% \item \textsl{xcolor}, \url{http://www.ctan.org/pkg/xcolor}
+% \item \textsl{xkeyval}, \url{http://www.ctan.org/pkg/xkeyval}
+% \end{itemize}
+%
+%
+%\subsection{Invocation and options}
+%\label{sec:invocation}
+%
+% To use the class put in the premable of your document
+% \begin{quote}
+% \cs{documentclass}\oarg{options}|{acmart}|
+% \end{quote}
+% There are several options corresponding to the type of the document and
+% its general appearance. They are described below. Generally
+% speaking, the options have |key=value| forms, for example
+% \begin{verbatim}
+% \documentclass[format=acmsmall, screen=true, review=false]{acmart}
+% \end{verbatim}
+%
+%
+% The option |format| describes the format of the output. There are
+% several possible values for this option, for example,
+% \begin{verbatim}
+% \documentclass[format=acmtog]{acmart}
+% \end{verbatim}
+% Actually the words |format=| can be omitted, e.g.,
+% \begin{verbatim}
+% \documentclass[acmtog, review=false]{acmart}
+% \end{verbatim}
+% The possible formats are listed in
+% Table~\ref{tab:opts_format}. Note that formats starting with |acm|
+% are intended for journals and transactions, while formats starting
+% with |sig| are intended for proceedings published as books.
+%
+% \begin{table}
+% \centering
+% \caption{The possible values for the \texttt{format} option}
+% \label{tab:opts_format}
+% \begin{tabularx}{\textwidth}{>{\ttfamily}lX}
+% \toprule
+% \normalfont Value & Meaning\\
+% \midrule
+% manuscript & A manuscript. This is the default \\
+% acmsmall & Small format, used for CIE, CSUR, JACM, JDIQ, JEA, JERIC,
+% JETC, TAAS, TACCESS, TACO, TALG, TALLIP (formerly TALIP), TCPS,
+% TEAC, TECS, TIIS, TISSEC, TIST, TKDD, TMIS, TOCE, TOCHI, TOCL,
+% TOCS, TOCT, TODAES, TODS, TOIS, TOIT, TOMACS, TOMM (formerly
+% TOMCCAP), TOMPECS, TOMS, TOPC, TOPLAS, TOPS,
+% TOS, TOSEM, TOSN, TRETS,
+% TSAS, TSC, TSLP, TWEB\@. \\
+% acmlarge & Large single colummn format, used for
+% JOCCH, TAP \\
+% acmtog & Large double column format, used for
+% TOG\\
+% sigconf & Proceedings format for most of ACM
+% conferences (with the exceptions listed below)\\
+% siggraph & Proceedings format for SIGGRAPH and SIGGRAPH
+% Asia conferences, published in ACM Transactions on Graphics
+% journal issues \\
+% sigplan & Proceedings format used for SIGPLAN conferences\\
+% sigchi & Proceedings format for SIGCHI conferences\\
+% sigchi-a & Format for SIGCHI extended abstract\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+% There are several Boolean options which can take |true| or |false|
+% values. They are listed in Table~\ref{tab:opts_bool}. The words
+% |=true| can be omitted when setting the Boolean option, so instead of
+% |screen=true| one can write just |screen|, for example,
+% \begin{verbatim}
+% \documentcalss[acmsmall, screen, review]{acmart}
+% \end{verbatim}
+% The option
+% |review| is useful when combined with the |manuscript| format
+% option: it provides a version suitable for reviewers and
+% copyeditors.
+%
+% The option |screen| may in the future involve
+% additional features suitable for on-screen versions of the
+% articles.
+%
+% The option |natbib| is used when the corresponding
+% \BibTeX\ style is based on |natbib|.
+%
+% The option |anonymous| is used
+% for anonymous review process: all author information becomes
+% obscured.
+%
+% \begin{table}
+% \centering
+% \caption{Boolean options}
+% \label{tab:opts_bool}
+% \begin{tabularx}{\textwidth}{>{\ttfamily}l>{\ttfamily}lX}
+% \toprule
+% \normalfont Option & \normalfont Default & Meaning\\
+% \midrule
+% review & false & A review version: doublespaced, lines are
+% numbered, hyperlinks are colored\\
+% screen & false & A screen version: hyperlinks are colored\\
+% natbib & false & Whether to use |natbib| package (see
+% Section~\ref{sec:ug_bibliography})\\
+% anonymous & false & Whether to make author(s) anonymous\\
+% authorversion & false & Whether to generate a special
+% version for authors' personal use or posting (see
+% Section~\ref{sec:ug_topmatter})\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+%
+%
+%\subsection{Topmatter commands}
+%\label{sec:ug_topmatter}
+%
+% A number of commands set up \emph{top matter} information, or, in
+% the computer science jargon, \emph{metadata} for the article. They
+% establish the publication name, article title, authors, doi and
+% other data. Some of these commands, like \cs{title} or \cs{author},
+% should be put by the authors. Others, like \cs{acmVolume} or
+% \cs{acmDOI}---by the editors. Below we describe these commands and
+% mention who should issue them. These macros should be used
+% \emph{before} the \cs{maketitle} command. Note that in the previous
+% versions of ACM classes some of these commands should be used before
+% \cs{maketitle}, and some after it. Now they all must be used before
+% \cs{maketitle}.
+%
+%
+% The class internally loads |amsart| class, so many top matter
+% commands are inherited from |amsart|~\cite{Downes04:amsart}.
+%
+% \DescribeMacro{\acmJournal}%
+% The macro \cs{acmJournal}\marg{shortName} sets the name of the
+% journal or transaction for journals and transactions. The argument
+% is the short name of the publication \emph{in uppercase}, for
+% example,
+% \begin{verbatim}
+% \acmJournal{TOMS}
+% \end{verbatim}
+% The currently recognized journals are listed in
+% Table~\ref{tab:pubs}. Note that conference proceedings published in
+% \emph{book} form do not set this macro.
+%
+% \begin{table}
+% \centering
+% \caption{ACM publications and arguments of the \cs{acmJournal}
+% command}\footnotesize
+% \label{tab:pubs}
+% \begin{tabularx}{\textwidth}{>{\ttfamily}lX}
+% \toprule
+% \normalfont Abbreviation & Publication \\
+% \midrule
+% CIE & ACM Computers in Entertainment \\
+% CSUR & ACM Computing Surveys\\
+% JACM & Journal of the ACM \\
+% JDIQ & ACM Journal of Data and Information Quality \\
+% JEA & ACM Journal of Experimental Algorithmics \\
+% JERIC & ACM Journal of Educational Resources in Computing\\
+% JETC & ACM Journal on Emerging Technologies in Computing Systems \\
+% JOCCH & ACM Journal on Computing and Cultural Heritage \\
+% TAAS & ACM Transactions on Autonomous and Adaptive Systems\\
+% TACCESS & ACM Transactions on Accessible Computing\\
+% TACO & ACM Transactions on Architecture and Code Optimization \\
+% TALG & ACM Transactions on Algorithms \\
+% TALLIP & ACM Transactions on Asian and Low-Resource Language
+% Information Processing\\
+% TAP & ACM Transactions on Applied Perception \\
+% TCPS & ACM Transactions on Cyber-Physical Systems\\
+% TEAC & ACM Transactions on Economics and Computation\\
+% TECS & ACM Transactions on Embedded Computing Systems \\
+% TIIS & ACM Transactions on Interactive Intelligent Systems\\
+% TISSEC & ACM Transactions on Information and System Security\\
+% TIST & ACM Transactions on Intelligent Systems and Technology \\
+% TKDD & ACM Transactions on Knowledge Discovery from Data\\
+% TMIS & ACM Transactions on Management Information Systems\\
+% TOCE & ACM Transactions on Computing Education\\
+% TOCHI & ACM Transactions on Computer-Human Interaction\\
+% TOCL & ACM Transactions on Computational Logic\\
+% TOCS & ACM Transactions on Computer Systems \\
+% TOCT & ACM Transactions on Computation Theory \\
+% TODAES & ACM Transactions on Design Automation of Electronic Systems\\
+% TODS & ACM Transactions on Database Systems\\
+% TOG & ACM Transactions on Graphics\\
+% TOIS & ACM Transactions on Information Systems\\
+% TOIT & ACM Transactions on Internet Technology\\
+% TOMACS & ACM Transactions on Modeling and Computer Simulation \\
+% TOMM & ACM Transactions on Multimedia Computing, Communications
+% and Applications \\
+% TOMPECS & ACM Transactions on Modeling and Performance Evaluation
+% of Computing Systems\\
+% TOMS & ACM Transactions on Mathematical Software\\
+% TOPC & ACM Transactions on Parallel Computing\\
+% TOPLAS & ACM Transactions on Programming Languages and Systems\\
+% TOPS & ACM Transactions on Privacy and Security\\
+% TOS & ACM Transactions on Storage\\
+% TOSEM & ACM Transactions on Software Engineering and Methodology\\
+% TOSN & ACM Transactions on Sensor Networks\\
+% TRETS & ACM Transactions on Reconfigurable Technology and Systems\\
+% TSAS & ACM Transactions on Spatial Algorithms and Systems\\
+% TSC & ACM Transactions on Social Computing\\
+% TSLP & ACM Transactions on Speech and Language Processing \\
+% TWEB & ACM Transactions on the Web\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+% It is expected that this command is inserted by the author of the
+% manuscript when she decides to which journal to submit the
+% manuscript.
+%
+% \DescribeMacro{\acmConference}%
+% The macro
+% \cs{acmConference}\oarg{short name}\marg{name}\marg{date}\marg{venue} is
+% used for conference proceedings published in the book form. The
+% arguments are the following:
+% \begin{description}
+% \item[short name:] the abbreviated name of the conference (optional).
+% \item[name:] the name of the conference \emph{or} the name of the
+% book as set by the editor.
+% \item[date:] the date(s) of the conference.
+% \item[venue:] the place of the conference.
+% \end{description}
+% Examples:
+% \begin{verbatim}
+% \acmConference[TD'15]{Technical Data Conference}{November
+% 12--16}{Dallas, TX, USA}
+% \acmConference{SA'15 Art Papers}{November 02--06, 2015}{Kobe, Japan}
+% \end{verbatim}
+%
+%
+% Normally this command is entered either by the editor or by the typesetter.
+%
+% \DescribeMacro{\title}
+% The command |\title|, as in \progname{amsart} class, has two arguments: one
+% optional, and one mandatory:
+% \begin{flushleft}
+% |\title[|\meta{ShortTitle}|]{|\meta{FullTitle}|}|
+% \end{flushleft}
+% The mandatory argument is the full title of the article. The
+% optional argument, if present, defines the shorter version of the
+% title for running heads. If the optional argument is absent, the
+% full title is used instead.
+%
+% It is expected that this command is inserted by the author of the
+% manuscript.
+%
+% \DescribeMacro{\subtitle}%
+% Besides title, ACM classes allow subtitle, set with the
+% \cs{subtitle}\marg{subtitle} macro.
+%
+% \DescribeMacro{\author}%
+% \DescribeMacro{\affiliation}%
+% \DescribeMacro{\email}%
+% The interface for specifying the authors and their affiliations is
+% close the the one of \progname{amsart}~\cite{instr-l} (and different
+% from the standard \LaTeX). For each author a separate command
+% |\author| should be used, followed by |\affliation| and |\email|.
+% If several authors share affiliations, in journal formats like
+% |acmsmall| or |acmlarge| one may put the
+% affiliation after all these authors, for example:
+% \begin{verbatim}
+% \author{A. U. Thor}
+% \email{author@nsw.au.edu}
+% \affiliation{University of New South Wales}
+% \author{A. N. Other}
+% \author{C. O. Respondent}
+% \affiliation{University of Pennsylvania}
+% \end{verbatim}
+% In the cases of overlapping affiliations it is advisable to repeat
+% the full list, for example,
+% \begin{verbatim}
+% \author{A. U. Thor}
+% \affiliation{University of New South Wales, Australia}
+% \email{author@nsw.edu.au}
+% \author{A. N. Other}
+% \affiliation{University of Pennsylvania, USA and University of New South
+% Wales, Australia}
+% \email{other@upenn.edu}
+% \end{verbatim}
+% For \emph{conferences} the affiliations should \emph{always} be
+% repeated, even if they are shared between the authors.
+%
+% Note that old ACM conference formats did not allow for more than six
+% authors and required some efforts from the authors to achieve
+% alignment. The new format is much better in this.
+%
+%
+%
+% It is expected that these commands are inserted by the author of the
+% manuscript.
+%
+% \DescribeMacro{\thanks}
+% Like \progname{amsart} (and unlike standard \LaTeX{}),
+% we allow |\thanks| only \emph{outside} of
+% commands |\title| and |\author|. Example:
+% \begin{verbatim}
+% \thanks{This work is supported by the Widget Corporation Grant
+% \#312-001.\\
+% Author's address: D. Pineo, Kingsbury Hall, 33 Academic Way, Durham,
+% N.H. 03824; email: dspineo@comcast.net; Colin Ware, Jere A. Chase
+% Ocean Engineering Lab, 24 Colovos Road, Durham, NH 03824; email:
+% cware@ccom.unh.edu;
+% Sean Fogarty, (Current address) NASA Ames Research Center, Moffett
+% Field, California 94035.}
+% \end{verbatim}
+%
+% It is expected that this command is inserted by the author of the
+% manuscript.
+%
+% \DescribeMacro{\titlenote}%
+% \DescribeMacro{\subtitlenote}%
+% \DescribeMacro{\authornote}%
+% While the command \cs{thanks} generates a note without footnote
+% mark, sometimes the authors might need notes more tightly connected
+% to the title, subtitle or author. The commands \cs{titlenote},
+% \cs{subtitlenote} and \cs{authornote} that follow the corresponding
+% commands (\cs{title}, \cs{subtitle} and \cs{author}) generate such
+% notes, for example
+% \begin{verbatim}
+% \title{This is a title}
+% \titlenote{This is a titlenote}
+% \author{A. U. Thor}
+% \authornote{This is an authornote}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\acmVolume}%
+% \DescribeMacro{\acmNumber}%
+% \DescribeMacro{\acmArticle}%
+% \DescribeMacro{\acmYear}%
+% \DescribeMacro{\acmMonth}%
+% The macros \cs{acmVolume}, \cs{acmNumber}, \cs{acmArticle},
+% \cs{acmYear} and \cs{acmMonth} are inserted by the editor and set
+% the journal volume, issue, article number, year and month
+% corrspondingly. The arguments of all these commands, including
+% \cs{acmMonth} is numerical, including \cs{acmMonth}, for example,
+% \begin{verbatim}
+% \acmVolume{9}
+% \acmNumber{4}
+% \acmArticle{39}
+% \acmYear{2010}
+% \acmMonth{3}
+% \end{verbatim}
+%
+% \DescribeMacro{\acmArticleSeq}%
+% The articles in the same issue of a journal have \emph{sequential
+% number}. It is used to position black blob in same formats. By
+% default it is the same as article number, but the command
+% \cs{acmArticleSeq}\marg{n} can be used to change it:
+% \begin{verbatim}
+% \acmArticle{39} % The sequence number will be 39 by default
+% \acmArticleSeq{5} % We rededine it to 5
+% \end{verbatim}
+%
+%
+%
+% \DescribeMacro{\acmPrice}%
+% The macro \cs{acmPrice}\marg{price} sets the price for the article
+% (by default 15.00), for example,
+% \begin{verbatim}
+% \acmPrice{25.00}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\acmISBN}%
+% Book-like volumes have ISBN numbers attached to them. The macro
+% \cs{acmISBN}\marg{ISBN} sets it. Normally it is set by the
+% typesetter, for example,
+% \begin{verbatim}
+% \acmISBN{978-1-4503-3916-2}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\acmDOI}%
+% The macro \cs{acmDOI}\marg{DOI} sets the DOI number of the article, for
+% example,
+% \begin{verbatim}
+% \acmDOI{10.1145/9999997.9999999}
+% \end{verbatim}
+% It is normally set by the typesetter.
+%
+%
+% \DescribeMacro{\acmBadgeR}%
+% \DescribeMacro{\acmBadgeL}%
+% Some conference articles get special distinction, for example, the
+% artifact evaluation for PPoPP~2016
+% (see~\url{http://ctuning.org/ae/ppopp2016.html}). These articles
+% display special badges supplied by the conference organizers. The
+% class provides commands to add these badges:
+% \cs{acmBadgeR}\oarg{url}\marg{graphics} and
+% \cs{acmBadgeL}\oarg{url}\marg{graphics}. The first command puts the
+% badge to the right of the title, and the second one---to the left.
+% The exception is the |sigchi-a| mode for SIGCHI Extended abstract,
+% which puts the badges on the left margin. The argument have the
+% following meaning: \oarg{url}, if provided, sets the link to the
+% badge authority in the screen version, while \marg{graphics} sets
+% the graphics file with the badge image. The file must be a cropped
+% square, which is scaled to a standard size in the output. For
+% example, if the badge image is |ae-logo.pdf|, the command is
+% \begin{verbatim}
+% \acmBadgeR[http://ctuning.org/ae/ppopp2016.html]{ae-logo}
+% \end{verbatim}
+%
+%
+%
+% \DescribeMacro{\startPage}%
+% The macro \cs{startPage}\marg{page} sets the first page of the
+% article in the journal or book. It is used by the typesetter.
+%
+%
+% \DescribeMacro{\terms}%
+% \DescribeMacro{\keywords}%
+% The macros \cs{terms}\marg{term, term,\ldots} and
+% \cs{keywords}\marg{keyword, keyword,\ldots} set the main terms and
+% the additional keywords for the article. Term and keywords must be
+% separated by commas, for example,
+% \begin{verbatim}
+% \terms{wireless, interference}
+% \keywords{wireless sensor networks, media access control,
+% multi-channel, radio interference, time synchronization}
+% \end{verbatim}
+%
+% \DescribeEnv{CCSXML}%
+% \DescribeMacro{\ccsdesc}%
+% ACM publications are classified according to the ACM Computing
+% Classification Scheme (CCS). CCS codes are used both in the typeset
+% version of the publications \emph{and} in the metadata in the various
+% databases. Therefore you need to provide both \TeX\ commands and XML
+% metadata with the paper.
+%
+% The tool at \url{http://dl.acm.org/ccs.cfm} can be used to generate
+% CCS codes. After you select the topics, click on ``Generate CCS
+% codes'' to get the result like the following:
+% \begin{verbatim}
+% \begin{CCSXML}
+% <ccs2012>
+% <concept>
+% <concept_id>10010520.10010553.10010562</concept_id>
+% <concept_desc>Computer systems organization~Embedded systems</concept_desc>
+% <concept_significance>500</concept_significance>
+% </concept>
+% <concept>
+% <concept_id>10010520.10010575.10010755</concept_id>
+% <concept_desc>Computer systems organization~Redundancy</concept_desc>
+% <concept_significance>300</concept_significance>
+% </concept>
+% <concept>
+% <concept_id>10010520.10010553.10010554</concept_id>
+% <concept_desc>Computer systems organization~Robotics</concept_desc>
+% <concept_significance>100</concept_significance>
+% </concept>
+% <concept>
+% <concept_id>10003033.10003083.10003095</concept_id>
+% <concept_desc>Networks~Network reliability</concept_desc>
+% <concept_significance>100</concept_significance>
+% </concept>
+% </ccs2012>
+% \end{CCSXML}
+%
+% \ccsdesc[500]{Computer systems organization~Embedded systems}
+% \ccsdesc[300]{Computer systems organization~Redundancy}
+% \ccsdesc{Computer systems organization~Robotics}
+% \ccsdesc[100]{Networks~Network reliability}
+% \end{verbatim}
+%
+% You need to just copy this code and paste it in your paper anywhere
+% before \verb|\maketitle|.
+%
+% \DescribeMacro{\setcopyright}
+% There are several possibilities for the copyright of the papers
+% published by ACM: the authors may transfer the rights to ACM, license
+% them to ACM, some or all authors might be employees of the US or
+% Canada Government, etc. Accordingly the command
+% \verb|\setcopyright{...}| is introduced. Its argument is the
+% copyright status of the paper, for example,
+% \verb|\setcopyright{acmcopyright}|. The possible values for this
+% command are listed in Table~\ref{tab:setcopyright}.
+%
+% \begin{table}
+% \centering
+% \caption{Parameters for \texttt{\textbackslash setcopyright} command}
+% \label{tab:setcopyright}
+% \begin{tabularx}{\textwidth}{lX}
+% \toprule
+% Parameter & Meaning\\
+% \midrule
+% \texttt{none} & The copyright and permission information is not
+% typeset (this is the option for some ACM conferences). \\
+% \texttt{acmcopyright} & The authors transfer the copyright to ACM
+% (the ``traditional'' choice).\\
+% \texttt{acmlicensed} & The authors retain the copyright but
+% license the publication rights to ACM\@. \\
+% \texttt{rightsretained} & The authors retain the copyright and
+% publication rights to themselves or somebody else. \\
+% \texttt{usgov} & All the authors are employees of the US
+% Government. \\
+% \texttt{usgovmixed} & Some authors are employees of the US
+% Government. \\
+% \texttt{cagov} & All the authors are employees of the Canadian
+% Government. \\
+% \texttt{cagovmixed} & Some authors are employees of the Canadian
+% Government. \\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+% The ACM submission software should generate the right command for you
+% to paste into your file.
+%
+%
+% \DescribeMacro{\copyrightyear}%
+% Each copyright statement must have the year of copyright. By
+% default it is the same as \cs{acmYear}, but you can override this
+% decision using the macro \cs{copyrightyear}, e.g.,
+% \begin{verbatim}
+% \acmYear{2016}
+% \copyrightyear{2015}
+% \end{verbatim}
+%
+% There is a special case for a personal copy that the authors may be
+% allowed to generate for their use or a posting on a personal site
+% (check the instructions for the specific journal or conference for
+% the details). The document option |authorversion=true| produces the
+% special form of the copyright statement for this case. Note that
+% you still need the \cs{setcopyright} command and (optionally)
+% \cs{authoryear} command to tell \TeX\ about the copyright owner and
+% year. Also, you should be aware that due to the different sizes of
+% the permssion blocks for the printed version and authors' version
+% the page breaks might be different between them.
+%
+% \DescribeEnv{abstract}%
+% The environment |abstract| must \emph{precede} \cs{maketitle}
+% command. Again, this is different from the standard \LaTeX.
+%
+%
+% \DescribeEnv{teaserfigure}%
+% A special kind of figure is used for many two-column conference
+% proceedings. This figure is placed just after the authors, but
+% before the main text. The environment |teaserfigure| is used for these
+% figures. This environment must be used \emph{before}
+% \cs{maketitle}, for example,
+% \begin{verbatim}
+% \begin{teaserfigure}
+% \includegraphics[width=\textwidth]{sampleteaser}
+% \caption{This is a teaser}
+% \label{fig:teaser}
+% \end{teaserfigure}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\settopmatter}%
+% Some information in the top matter is printed for certain journals
+% or proceedings and suppressed for others. You may override these
+% defaults using the command \cs{settopmatter}\marg{settings}. The
+% settings and their meanings are listed in
+% Table~\ref{tab:settopmatter}. For example,
+% \begin{verbatim}
+% \settopmatter{printbib=false, printccs=true}
+% \end{verbatim}
+%
+%
+% \begin{table}
+% \centering
+% \caption{Settings for \cs{settopmatter} command}
+% \label{tab:settopmatter}
+% \begin{tabularx}{\textwidth}{llX}
+% \toprule
+% Parameter & Values & Meaning\\
+% \midrule
+% printccs & true/false & Whether to print CCS categories\\
+% printbib & true/false & Whether to print ACM bibliographic
+% entry\\
+% \bottomrule
+% \end{tabularx}
+% \end{table}
+%
+%
+% \DescribeMacro{\received}%
+% The command \cs{received}\marg[stage]\oarg{date} sets the history of
+% the publication. The \marg{stage} argument is optional; the default
+% is |Received| for the first date and |revised| for the subsequent
+% ones. For example
+% \begin{verbatim}
+% \received{February 2007}
+% \received[revised]{March 2009}
+% \received[accepted]{June 2009}
+% \end{verbatim}
+%
+%
+% \DescribeMacro{\maketitle}%
+% The macro \cs{maketitle} must be the last command in the top matter
+% group: i.e., it must follow the commands defined in this section.
+%
+%
+% \DescribeMacro{\shortauthors}%
+% \emph{After} the command \cs{maketitle} the macro \cs{shortauthors}
+% stores the names of the authors for the running head. You may
+% redefine it if the list of author's name is too long, e.g.,
+% \begin{verbatim}
+% \maketitle
+% \renewcommand{\shortauthors}{Zhou et. al.}
+% \end{verbatim}
+%
+%
+%\subsection{Algorithms}
+%\label{sec:ug_algorithms}
+%
+% There now several good packages for typesetting
+% algorithms~\cite{Fiorio15, Brito09, Heinz15}, and the authors are
+% now free to choose their favorite one.
+%
+%
+%
+%\subsection{Figures and tables}
+%\label{sec:ug_floats}
+%
+% New ACM styles use the standard \LaTeX\ interface for figures and
+% tables. There are some important items to be aware of, however.
+%
+% \begin{enumerate}
+% \item The captions for figures must be intered \emph{after} the
+% figure bodies, and for the tables \emph{before} the table bodies.
+% \item ACM uses the standard types for figures and types and adds
+% several new ones. In total there are follwing types:
+% \begin{description}
+% \item[figure, table:] a standard figure or table, taking full text
+% width in one-column formats and one column in two-column formats.
+% \item[figure*, table*] in two-column formats, a special figure or
+% table taking full text width.
+% \item[teaserfigure:] a special figure before \cs{maketitle}.
+% \item[sidebar, marginfigure, margintable:] in the |sigchi-a| format,
+% special sidebars, tables and figures on the margin.
+% \end{description}
+%
+% \item Accordingly, when scaling the images, one should use the
+% following sizes:
+% \begin{enumerate}
+% \item For |figure| in one-column mode, |figure*| in two-column mode
+% or |teaserfigure|---\cs{textwidth} (in the one-column you can also
+% use \cs{columnwidth}, which coincides with \cs{textwidth} in this
+% case).
+% \item For |figure| in two-column mode---\cs{columnwidth}.
+% \item For |marginfigure|--\cs{marginparwidth}.
+% \item For |figure*| in SIGCHI Extended
+% abstracts---\cs{fulltextwidth}.
+% \end{enumerate}
+%
+% \end{enumerate}
+%
+% It is strongly recommended to use the package booktabs~\cite{Fear05}
+% and follow its main principles of typography with respect to tables:
+% \begin{enumerate}
+% \item Never, ever use vertical rules.
+% \item Never use double rules.
+% \end{enumerate}
+% It is also a good idea not to overuse horizontal rules.
+%
+% For table \emph{footnotes} you have several options described in TeX
+% FAQ~\cite{TeXFAQ}. The simplest one is to use \cs{minipage}
+% environment:
+% \begin{verbatim}
+% \begin{table}
+% \caption{Simulation Configuration}
+% \label{tab:conf}
+% \begin{minipage}{\columnwidth}
+% \begin{center}
+% \begin{tabular}{ll}
+% \toprule
+% TERRAIN\footnote{This is a table footnote. This is a
+% table footnote. This is a table footnote.} &
+% (200\,m$\times$200\,m) Square\\
+% Node Number & 289\\
+% Node Placement & Uniform\\
+% Application & Many-to-Many/Gossip CBR Streams\\
+% Payload Size & 32 bytes\\
+% Routing Layer & GF\\
+% MAC Layer & CSMA/MMSN\\
+% Radio Layer & RADIO-ACCNOISE\\
+% Radio Bandwidth & 250Kbps\\
+% Radio Range & 20m--45m\\
+% \bottomrule
+% \end{tabular}
+% \end{center}
+% \bigskip
+% \footnotesize\emph{Source:} This is a table
+% sourcenote. This is a table sourcenote. This is a table
+% sourcenote.
+%
+% \emph{Note:} This is a table footnote.
+% \end{minipage}
+% \end{table}
+% \end{verbatim}
+%
+% \DescribeEnv{sidebar}%
+% \DescribeEnv{marginfigure}%
+% \DescribeEnv{margintable}%
+% SIGCHI extended abstract extensively uses margin space. The package
+% provides three environments for this with option captions:
+% \begin{description}
+% \item[sidebar:] textual information on the margin
+% \item[marginfigure:] a figure on the margin
+% \item[margintable:] a table on the margin
+% \end{description}
+%
+%
+%\subsection{Theorems}
+%\label{sec:ug_theorems}
+%
+% ACM classes define two theorem styles and several pre-defined
+% theorem environments:
+% \begin{description}
+% \item[acmplain:] this is the style used for
+% |theorem|,
+% |conjecture|,
+% |proposition|,
+% |lemma|,
+% |corollary|, and
+% \item[acmdefinition:] this is the style used for |example| and
+% |definition|.
+% \end{description}
+%
+%
+%
+%\subsection{Online-only and offline-only material}
+%\label{sec:ug_screen}
+%
+% \DescribeEnv{printonly}%
+% \DescribeEnv{screenonly}%
+% Some supplementary material in ACM publication is put online, but
+% not in the printed version. The text inside the environment
+% |screenonly| will be typeset only when the option |screen| (see
+% Section~\ref{sec:invocation}) is set to |true|. Conversely, the
+% text inside the environment |printonly| is typset only when this
+% option is set to |false|. For example
+% \begin{verbatim}
+% \section{Supplementary materials}
+%
+% \begin{printonly}
+% This section is included in the online version of the paper.
+% \end{printonly}
+%
+% \begin{screenonly}
+% (The actual section).
+% \end{screenonly}
+%
+% \end{verbatim}
+%
+%
+%
+%\subsection{Note about anonymous mode}
+%\label{sec:ug_anonymous}
+%
+% \DescribeEnv{anonsuppress}%
+% When the option |anonymous| is selected, \TeX\ suppresses author
+% information (including number of authors) for a blind review.
+% However, sometimes the information identifying the authors may be
+% present in the body of the paper, for example, in the
+% acknowledgements. The environment |anonsuppress| is used to
+% suppress such information, for example
+% \begin{verbatim}
+% \section*{Acknowledgements}
+% \begin{anonsuppress}
+% The authors wish to thank Prof. C.~O.~Lleague for her generous
+% advices and the Society for Development of Oort Cloud for the
+% financial support.
+% \end{anonsuppress}
+% \end{verbatim}
+%
+%
+%\subsection{Bibliography}
+%\label{sec:ug_bibliography}
+%
+% The Boolean option |natbib| selects whether to use |natbib| package
+% for bibliography. If you use |natbib|, then commands like
+% \cs{citep} and \cs{citeauthor} are automatically supported. You may
+% customize \cs{natbib} using \cs{setcitestyle} command, for example,
+% \begin{verbatim}
+% \setcitestyle{numbers,sort&compress}
+% \end{verbatim}
+%
+%
+% ACM journals use |natbib| and the style
+% |ACM-Reference-Format-Journals|.
+%
+% Most ACM conference proceedings do \emph{not} use |natbib|.
+% SIGGRAPH conferences use |acmsiggraph| style. SIGCHI conferences
+% use |SIGCHI-Reference-Format| style. The other conferences employ
+% one of the four styles:
+% \begin{enumerate}
+% \item acm-abbrv
+% \item acm-alpha
+% \item acm-plain
+% \item acm-unsrt
+% \end{enumerate}
+% The author should consult specific instructions about the
+% style to choose.
+%
+%
+%
+%\subsection{Colors}
+%\label{sec:ug_colors}
+%
+% While printed ACM publications are usually black and white, screen
+% mode allows the use of colors. The ACM classes pre-define several
+% colors according to~\cite{ACMIdentityStandards}: |ACMBlue|,
+% |ACMYellow|, |ACMOrange|, |ACMRed|, |ACMLightBlue|, |ACMGreen|,
+% |ACMPurple|, |ACMDarkBlue|. You can use them in the color
+% assignments.
+%
+%
+% \StopEventually{
+% \clearpage
+% \bibliography{acmart}
+% \bibliographystyle{unsrt}}
+%
+% \clearpage
+%
+%
+%\section{Implementation}
+%\label{sec:impl}
+%
+%\subsection{Identification}
+%\label{sec:ident}
+%
+% We start with the declaration who we are. Most |.dtx| files put
+% driver code in a separate driver file |.drv|. We roll this code into the
+% main file, and use the pseudo-guard |<gobble>| for it.
+% \begin{macrocode}
+%<class>\NeedsTeXFormat{LaTeX2e}
+%<*gobble>
+\ProvidesFile{acmart.dtx}
+%</gobble>
+%<class>\ProvidesClass{acmart}
+[2016/05/03 v1.07 Typesetting articles for Association of
+Computing Machinery]
+% \end{macrocode}
+%
+% \changes{v1.00}{2016/04/14}{First released version}
+% \changes{v1.01}{2016/04/18}{Defined ACM colors}
+% \changes{v1.01}{2016/04/18}{Changed hyperref colors in screen mode
+% (closes \url{https://github.com/borisveytsman/acmart/issues/1})}
+% \changes{v1.01}{2016/04/18}{Set headheight to 1pc for all formats
+% (closes \url{https://github.com/borisveytsman/acmart/issues/5})}
+% \changes{v1.02}{2016/04/21}{Documentation changes
+% (closes \url{https://github.com/borisveytsman/acmart/issues/13})}
+% \changes{v1.02}{2016/04/21}{Added TOPS and TSC
+% (closes \url{https://github.com/borisveytsman/acmart/issues/12})}
+% \changes{v1.03}{2016/04/22}{Added authorversion option
+% (closes \url{https://github.com/borisveytsman/acmart/issues/9})}
+% \changes{v1.03}{2016/04/22}{Added anonsuppress environment}
+% \changes{v1.04}{2016/04/26}{Updated bibliography for siggraph}
+% \changes{v1.05}{2016/04/27}{Patched \cs{setcitestyle} command;
+% closes \url{https://github.com/borisveytsman/acmart/issues/19}}
+% \changes{v1.05}{2016/04/27}{Added processing doi numbers for
+% acmsiggraph and doi numbers for sigproc.bib}
+%
+%
+% And the driver code:
+% \begin{macrocode}
+%<*gobble>
+\documentclass{ltxdoc}
+\usepackage{array,booktabs,amsmath,graphicx,fancyvrb,tabularx}
+\usepackage[tt=false]{libertine}
+\usepackage[varqu]{zi4}
+\usepackage[libertine]{newtxmath}
+\usepackage[tableposition=top]{caption}
+\usepackage{hypdoc}
+\PageIndex
+\CodelineIndex
+\RecordChanges
+\EnableCrossrefs
+\begin{document}
+ \DocInput{acmart.dtx}
+\end{document}
+%</gobble>
+%<*class>
+\def\@classname{acmart}
+% \end{macrocode}
+%
+% \subsection{Options}
+% \label{sec:options}
+%
+% We need |xkeyval| since some of our options may have values:
+% \begin{macrocode}
+\RequirePackage{xkeyval}
+% \end{macrocode}
+%
+% \begin{macro}{format}
+% The possible formats
+% \begin{macrocode}
+\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
+ manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi, sigchi-a}[manuscript]{}{%
+ \ClassError{\@classname}{The option format must be manuscript,
+ acmsmall, acmlarge, acmtog, sigconf, siggraph,
+ sigplan, sigchi or sigchi-a}}
+\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
+\@DeclareACMFormat{manuscript}
+\@DeclareACMFormat{acmsmall}
+\@DeclareACMFormat{acmlarge}
+\@DeclareACMFormat{acmtog}
+\@DeclareACMFormat{sigconf}
+\@DeclareACMFormat{siggraph}
+\@DeclareACMFormat{sigplan}
+\@DeclareACMFormat{sigchi}
+\@DeclareACMFormat{sigchi-a}
+\ExecuteOptionsX{format}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@screen}
+% Whether we use screen mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
+ \if@ACM@screen
+ \PackageInfo{\@classname}{Using screen mode}%
+ \else
+ \PackageInfo{\@classname}{Not using screen mode}%
+ \fi}{\PackageError{\@classname}{Option screen can be either true or
+ false}}
+\ExecuteOptionsX{screen=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\if@ACM@review}
+% Whether we use review mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
+ \if@ACM@review
+ \PackageInfo{\@classname}{Using review mode}%
+ \else
+ \PackageInfo{\@classname}{Not using review mode}%
+ \fi}{\PackageError{\@classname}{Option review can be either true or
+ false}}
+\ExecuteOptionsX{review=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@authorversion}
+% \changes{v1.03}{2016/04/22}{Added macro}
+% Whether we use author's version
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
+ \if@ACM@authorversion
+ \PackageInfo{\@classname}{Using authorversion mode}%
+ \else
+ \PackageInfo{\@classname}{Not using authorversion mode}%
+ \fi}{\PackageError{\@classname}{Option authorversion can be either true or
+ false}}
+\ExecuteOptionsX{authorversion=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\if@ACM@natbib}
+% Whether we use natbib mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
+ \if@ACM@natbib
+ \PackageInfo{\@classname}{Using natbib mode}%
+ \else
+ \PackageInfo{\@classname}{Not using natbib mode}%
+ \fi}{\PackageError{\@classname}{Option natbib can be either true or
+ false}}
+\ExecuteOptionsX{natbib=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\if@ACM@anonymous}
+% Whether we use anonymous mode
+% \begin{macrocode}
+\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
+ \if@ACM@anonymous
+ \PackageInfo{\@classname}{Using anonymous mode}%
+ \else
+ \PackageInfo{\@classname}{Not using anonymous mode}%
+ \fi}{\PackageError{\@classname}{Option anonymous can be either true or
+ false}}
+\ExecuteOptionsX{anonymous=false}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ACM@fontsize}
+% The font size to pass to the base class
+% \begin{macrocode}
+\def\ACM@fontsize{}
+\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
+\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \changes{v1.01}{2016/04/18}{Explicitly put draft option
+% (closes \url{https://github.com/borisveytsman/acmart/issues/4})}
+%
+% \begin{macrocode}
+\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
+\ProcessOptionsX
+\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
+% \end{macrocode}
+%
+%
+%
+%\subsection{Setting switches}
+%\label{sec:switches}
+%
+% \begin{macro}{\if@ACM@manuscript}
+% Whether we use manuscript mode
+% \begin{macrocode}
+\newif\if@ACM@manuscript
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@journal}
+% There are two kinds of publications: journals and books
+% \begin{macrocode}
+\newif\if@ACM@journal
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@sigchiamode}
+% The formatting of SIGCHI abstracts is quite unusual. We have a
+% special switch for them.
+% \begin{macrocode}
+\newif\if@ACM@sigchiamode
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% Setting up switches
+% \begin{macrocode}
+\ifnum\ACM@format@nr=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
+% \end{macrocode}
+%
+%
+%\subsection{Loading base class and package}
+%\label{sec:loading}
+%
+%
+% At this point we either have \cs{ACM@fontsize}, or use defaults
+% \begin{macrocode}
+\ifx\ACM@fontsize\@empty
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \def\ACM@fontsize{9pt}%
+ \or% acmsmall
+ \def\ACM@fontsize{10pt}%
+ \or % acmlarge
+ \def\ACM@fontsize{9pt}%
+ \or % acmtog
+ \def\ACM@fontsize{9pt}%
+ \or % sigconf
+ \def\ACM@fontsize{9pt}%
+ \or % siggraph
+ \def\ACM@fontsize{9pt}%
+ \or % sigplan
+ \def\ACM@fontsize{9pt}%
+ \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}
+% \end{macrocode}
+%
+%
+% We need |totpages| package to calculate the number of pages
+% \begin{macrocode}
+\RequirePackage{totpages}
+% \end{macrocode}
+%
+% The |amsmath| \cs{collect@body} is defined using \cs{def}. We load
+% |environ| to access the \cs{long} version of the command
+% \begin{macrocode}
+\RequirePackage{environ}
+% \end{macrocode}
+%
+% We use |setspace| for doublespacing
+% \begin{macrocode}
+\if@ACM@manuscript
+\RequirePackage{setspace}
+\onehalfspacing
+\fi
+% \end{macrocode}
+%
+% Citations. We patch \cs{setcitestyle} to allow, e.g.,
+% \cs{setcitestyle}|{sort}| and \cs{setcitestyle}|{nosort}|
+% \begin{macrocode}
+\if@ACM@natbib
+ \RequirePackage{natbib}
+ \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
+ }
+ \setcitestyle{%
+ open={[},close={]},citesep={;},%
+ authoryear,aysep={},yysep={,},%
+ notesep={, }}
+\fi
+% \end{macrocode}
+%
+% Before we call |hyperref|, we redefine \cs{startsection} commands to
+% their \LaTeX\ defaults, since |amsart| ones are too AMS-specific.
+% We need to do this early since we want |hyperref| to have a chance
+% to redefine them again:
+% \begin{macrocode}
+\def\@startsection#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \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}%
+ \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}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+\def\@xsect#1{%
+ \@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else
+ \@nobreakfalse
+ \global\@noskipsectrue
+ \everypar{%
+ \if@noskipsec
+ \global\@noskipsecfalse
+ {\setbox\z@\lastbox}%
+ \clubpenalty\@M
+ \begingroup \@svsechd \endgroup
+ \unskip
+ \@tempskipa #1\relax
+ \hskip -\@tempskipa
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \fi
+ \ignorespaces}
+\def\@seccntformat#1{\csname the#1\endcsname\quad}
+\def\@ssect#1#2#3#4#5{%
+ \@tempskipa #3\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #4{%
+ \@hangfrom{\hskip #1}%
+ \interlinepenalty \@M #5\@@par}%
+ \endgroup
+ \else
+ \def\@svsechd{#4{\hskip #1\relax #5}}%
+ \fi
+ \@xsect{#3}}
+% \end{macrocode}
+%
+%
+% And |hyperref|
+% \begin{macrocode}
+\let\@footnotemark@nolink\@footnotemark
+\let\@footnotetext@nolink\@footnotetext
+\RequirePackage{hyperref}
+\if@ACM@sigchiamode
+ \urlstyle{sf}
+\else
+ \urlstyle{rm}
+\fi
+\if@ACM@screen
+ \hypersetup{colorlinks,
+ linkcolor=ACMRed,
+ citecolor=ACMPurple,
+ urlcolor=ACMDarkBlue,
+ filecolor=ACMDarkBlue}
+\else
+ \hypersetup{hidelinks}
+\fi
+% \end{macrocode}
+%
+% Bibliography mangling. Siggraph does not want the label.
+% \begin{macrocode}
+\if@ACM@natbib
+ \let\citeN\cite
+ \let\cite\citep
+ \let\citeANP\citeauthor
+ \let\citeNN\citeyearpar
+ \let\citeyearNP\citeyear
+ \let\citeyear\citeyearpar
+ \let\citeNP\citealt
+ \def\shortcite#1{\citeyear{#1}}
+ \DeclareRobustCommand\citeA
+ {\begingroup\NAT@swafalse
+ \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}
+ \providecommand\newblock{}
+\else
+ \providecommand\citename[1]{#1}
+\fi
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+\or % sigconf
+\or % siggraph
+ \def\@biblabel#1{}
+ \ifx\bibhang\@undefined
+ \newlength\bibhang
+ \fi
+ \setlength{\bibhang}{1em}
+ \renewenvironment{thebibliography}[1]{%
+ \@bibtitlestyle
+ \normalfont\bibliofont\labelsep .5em\relax
+ \renewcommand\theenumiv{\arabic{enumiv}}\let\p@enumiv\@empty
+ \list{\@biblabel{\theenumiv}}{\labelwidth\z@
+ \setlength{\itemindent}{-\bibhang}%
+ \setlength{\leftmargin}{\bibhang}%
+ \labelsep\z@
+ \def\newblock{\hskip .11em plus .33em minus .07em}%
+ \usecounter{enumiv}}%
+ \sloppy \clubpenalty\@M \widowpenalty\clubpenalty
+ \sfcode`\.=\@m
+ }{%
+ \def\@noitemerr{\@latex@warning{Empty `thebibliography' environment}}%
+ \endlist
+ }
+\or % sigplan
+\or % sigchi
+\or % sigchi-a
+\fi
+% \end{macrocode}
+%
+% Graphics and color
+% \begin{macrocode}
+\RequirePackage{graphicx, xcolor}
+% \end{macrocode}
+%
+% We define ACM colors according to~\cite{ACMIdentityStandards}:
+% \begin{macrocode}
+\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
+\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
+\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
+\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
+\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
+\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
+\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
+\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
+% \end{macrocode}
+%
+%
+%\subsection{Paper size and paragraphing}
+%\label{sec:paper}
+%
+% We use |geometry| for dimensions
+% \begin{macrocode}
+\RequirePackage{geometry}
+\ifcase\ACM@format@nr
+\relax % manuscript
+ \geometry{letterpaper,head=1pc}%
+\or% acmsmall
+ \geometry{twoside=true,
+ includeheadfoot, head=1pc, foot=2pc,
+ paperwidth=6.75in, paperheight=10in,
+ top=58pt, bottom=44pt, inner=46pt, outer=46pt
+ }%
+\or % acmlarge
+ \geometry{twoside=true, head=1pc, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot,
+ top=78pt, bottom=114pt, inner=81pt, outer=81pt
+ }%
+\or % acmtog
+ \geometry{twoside=true, head=1pc, foot=2pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=24pt,
+ top=52pt, bottom=75pt, inner=52pt, outer=52pt
+ }%
+\or % sigconf
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ }%
+\or % siggraph
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ }%
+\or % sigplan
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=74pt, bottom=70pt, inner=54pt, outer=54pt
+ }%
+\or % sigchi
+ \geometry{twoside=true, head=1pc,
+ paperwidth=8.5in, paperheight=11in,
+ includeheadfoot, columnsep=2pc,
+ top=66pt, bottom=78pt, inner=54pt, outer=48pt
+ }%
+\or % sigchi-a
+ \geometry{twoside=false, head=1pc,
+ paperwidth=11in, paperheight=8.5in,
+ includeheadfoot, marginparsep=72pt,
+ marginparwidth=170pt, columnsep=20pt,
+ top=72pt, bottom=72pt, left=314pt, right=72pt
+ }%
+ \@mparswitchfalse
+ \reversemarginpar
+\fi
+% \end{macrocode}
+%
+%
+% \begin{macro}{\parindent}
+% \begin{macro}{\parskip}
+% Paragraphing
+% \begin{macrocode}
+\setlength\parindent{10\p@}
+\setlength\parskip{\z@}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\or % acmlarge
+\or % acmtog
+ \setlength\parindent{9\p@}%
+\or % sigconf
+\or % siggraph
+\or % sigplan
+\or % sigchi
+\or % sigchi-a
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+%
+% Footnotes require some consideration. We have several layers of
+% footnotes: frontmatter footnotes, ``regular'' footnotes and the
+% special insert for bibstrip. In the old ACM classes bibstrip was a
+% \cs{@float}. The problem with floats is that they tend to, well,
+% float---and we want the guarantee they stay.
+% \begin{macrocode}
+\RequirePackage{manyfoot}
+\DeclareNewFootnote{copyrightpermission}
+\skip\footinscopyrightpermission=0.1\baselineskip plus 0.1\baselineskip
+% \end{macrocode}
+%
+%
+% \begin{macro}{\footnoterule}
+% Tschichold's rules:
+% \begin{macrocode}
+\def\footnoterule{\kern-3\p@
+ \hrule \@width \columnwidth \kern 2.6\p@}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\endminipage}
+% We do not use footnote rules in minipages
+% \begin{macrocode}
+\def\endminipage{%
+ \par
+ \unskip
+ \ifvoid\@mpfootins\else
+ \vskip\skip\@mpfootins
+ \normalcolor
+ \unvbox\@mpfootins
+ \fi
+ \@minipagefalse %% added 24 May 89
+ \color@endgroup
+ \egroup
+ \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
+
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@makefntext}
+% We do note use indentation for footnotes
+% \begin{macrocode}
+\def\@makefntext{\noindent\@makefnmark}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@footnotetext}
+% In sigchi-a mode our footnotes are on the margins!
+% \begin{macrocode}
+\if@ACM@sigchiamode
+\long\def\@footnotetext#1{\marginpar{%
+ \reset@font\small
+ \interlinepenalty\interfootnotelinepenalty
+ \protected@edef\@currentlabel{%
+ \csname p@footnote\endcsname\@thefnmark
+ }%
+ \color@begingroup
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}%
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Fonts}
+%\label{sec:fonts}
+%
+% We use Times throughout
+% \begin{macrocode}
+\usepackage[tt=false]{libertine}
+\usepackage[varqu]{zi4}
+\usepackage[libertine]{newtxmath}
+% \end{macrocode}
+%
+% The SIGCHI extended abstracts are sans serif:
+% \begin{macrocode}
+\if@ACM@sigchiamode
+ \renewcommand{\familydefault}{\sfdefault}
+\fi
+% \end{macrocode}
+%
+%
+%\subsection{Floats}
+%\label{sec:floats}
+%
+% We use |caption| package
+% \begin{macrocode}
+\RequirePackage{caption, float}
+\captionsetup[table]{position=top}
+\if@ACM@journal
+ \captionsetup{labelfont={sf, small},
+ textfont={sf, small}, margin=\z@}
+ \captionsetup[figure]{name={Fig.}}
+\else
+ \captionsetup{labelfont={bf},
+ textfont={bf}, labelsep=colon, margin=\z@}
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \or% acmsmall
+ \or % acmlarge
+ \or % acmtog
+ \or % sigconf
+ \or % siggraph
+ \captionsetup{textfont={it}}
+ \or % sigplan
+ \or % sigchi
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \or % sigchi-a
+ \captionsetup[figure]{labelfont={bf, small},
+ textfont={bf, small}}
+ \fi
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{sidebar}
+% The sidebar environment:
+% \begin{macrocode}
+\newfloat{sidebar}{}{sbar}
+\floatname{sidebar}{Sidebar}
+\renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@sidebar}
+% The processing of the saved text
+% \begin{macrocode}
+\long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}%
+ \marginpar{\small#1}\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{marginfigure}
+% The marginfigure environment:
+% \begin{macrocode}
+\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@marginfigure}
+% The processing of the saved text
+% \begin{macrocode}
+\long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}%
+ \marginpar{\small#1}\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{margintable}
+% The margintable environment:
+% \begin{macrocode}
+\newenvironment{margintable}{\Collect@Body\@margintable}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@margintable}
+% The processing of the saved text
+% \begin{macrocode}
+\long\def\@margintable#1{\bgroup\captionsetup{type=table}%
+ \marginpar{\small#1}\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% SIGCHI extended abstract provides an interesting possibility to push
+% into the margin. Here we use |figure*| and |table*| for this.
+% \begin{macro}{\fulltextwidth}
+% We define the width of the boxes as
+% \begin{macrocode}
+\newdimen\fulltextwidth
+\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@dblfloat}
+% We redefine the double float command. First, we make the size
+% bigger. Second, our default position is going to be |tp| (to give
+% marginalia a chance)
+% \begin{macrocode}
+\if@ACM@sigchiamode
+\def\@dblfloat{\bgroup\columnwidth=\fulltextwidth
+ \let\@endfloatbox\@endwidefloatbox
+ \def\@fpsadddefault{\def\@fps{tp}}%
+ \@float}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\end@dblfloat}
+% And the end. Just adding a \cs{bgroup}.
+% \begin{macrocode}
+\if@ACM@sigchiamode
+\def\end@dblfloat{%
+ \end@float\egroup}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@endwidefloatbox}
+% This is the end of a wide box - we basically move everything
+% to the left
+% \begin{macrocode}
+\def\@endwidefloatbox{%
+ \par\vskip\z@skip
+ \@minipagefalse
+ \outer@nobreak
+ \egroup
+ \color@endbox
+ \global\setbox\@currbox=\vbox{\moveleft
+ \dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
+ \wd\@currbox=\textwidth
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Top matter data}
+%\label{sec:top_matter_data}
+%
+%
+%
+% We use keyval interface to define journal title and relevant
+% information
+% \begin{macrocode}
+\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
+ CIE,%
+ CSUR,%
+ JACM,%
+ JDIQ,%
+ JEA,%
+ JERIC,%
+ JETC,%
+ JOCCH,%
+ TAAS,%
+ TACCESS,%
+ TACO,%
+ TALG,%
+ TALLIP,%
+ TAP,%
+ TCPS,%
+ TEAC,%
+ TECS,%
+ TIIS,%
+ TISSEC,%
+ TIST,%
+ TKDD,%
+ TMIS,%
+ TOCE,%
+ TOCHI,%
+ TOCL,%
+ TOCS,%
+ TOCT,%
+ TODAES,%
+ TODS,%
+ TOG,%
+ TOIS,%
+ TOIT,%
+ TOMACS,%
+ TOMM,%
+ TOMPECS,%
+ TOMS,%
+ TOPC,%
+ TOPS,%
+ TOPLAS,%
+ TOS,%
+ TOSEM,%
+ TOSN,%
+ TRETS,%
+ TSAS,%
+ TSC,%
+ TSLP,%
+ TWEB%
+}{%
+\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 % 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\@journalName{ACM J. Comput. Cult. Herit.}%
+\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}%
+\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 % 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 % TIIS
+ \def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
+ \def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
+ \def\@permissionCodeOne{2160-6455}%
+\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\@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\@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 % 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}%
+\fi
+\ClassInfo{\@classname}{Using journal code \@journalCode}%
+}{%
+ \ClassError{\@classname}{Incorrect journal #1}%
+}%
+% \end{macrocode}
+% \begin{macro}{\acmJournal}
+% And the syntactic sugar around it
+% \begin{macrocode}
+\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% The defaults:
+% \begin{macrocode}
+\def\@journalName{}%
+\def\@journalNameShort{\@journalName}%
+\def\@permissionCodeOne{XXXX-XX}%
+\def\@permissionCodeTwo{}%
+% \end{macrocode}
+%
+%
+% \begin{macro}{\acmConference}
+% This is the conference command
+% \begin{macrocode}
+\newcommand\acmConference[4][]{%
+ \gdef\acmConference@shortname{#1}%
+ \gdef\acmConference@name{#2}%
+ \gdef\acmConference@date{#3}%
+ \gdef\acmConference@venue{#4}%
+ \ifx\acmConference@shortname\@empty
+ \gdef\acmConference@shortname{#2}%
+ \fi}
+\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
+ DC, USA}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\subtitle}
+% The subtitle macro
+% \begin{macrocode}
+\def\subtitle#1{\def\@subtitle{#1}}
+\subtitle{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\num@authors}
+% The total number of authors
+% \begin{macrocode}
+\newcount\num@authors
+\num@authors=0\relax
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author}
+% Adding an author to the list of authors and addresses
+% \begin{macrocode}
+\renewcommand\author[2][]{%
+ \global\advance\num@authors by 1\relax
+ \ifx\addresses\@empty
+ \if@ACM@anonymous
+ \gdef\addresses{\@author{Anonymous Author(s)}}%
+ \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.}%
+ \fi
+ \else
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#2}%
+ \else
+ \g@addto@macro\shortauthors{\and#2}%
+ \fi
+ \else
+ \ifx\shortauthors\@empty
+ \gdef\shortauthors{#1}%
+ \else
+ \g@addto@macro\shortauthors{\and#1}%
+ \fi
+ \fi
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\affiliation}
+% The macro \cs{affiliation} mimics \cs{address} from |amsart|.
+% Note that it has an optional argument we do not currently need,
+% but keep for the possible future use.
+% \begin{macrocode}
+\newcommand{\affiliation}[2][]{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\affiliation{#1}{#2}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\email}
+% The macro \cs{email} mimics \cs{email} from |amsart|.
+% Agian it has an optional argument we do not currently need,
+% but keep for the possible future use.
+% \begin{macrocode}
+\renewcommand{\email}[2][]{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\email{#1}{#2}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@titlenotes}
+% The titlenotes
+% \begin{macrocode}
+\def\@titlenotes{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\titlenote}
+% Adding note to the title
+% \begin{macrocode}
+\def\titlenote#1{%
+ \g@addto@macro\@title{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@titlenotes{%
+ \stepcounter{footnote}\footnotetext{Title note}}%
+ \else
+ \g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@subtitlenotes}
+% The subtitlenotes
+% \begin{macrocode}
+\def\@subtitlenotes{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\subtitlenote}
+% Adding note to the subtitle
+% \begin{macrocode}
+\def\subtitlenote#1{%
+ \g@addto@macro\@subtitle{\footnotemark}%
+ \if@ACM@anonymous
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{Subtitle note}}%
+ \else
+ \g@addto@macro\@subtitlenotes{%
+ \stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@authornotes}
+% The authornotes
+% \begin{macrocode}
+\def\@authornotes{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\authornote}
+% Adding note to the author
+% \begin{macrocode}
+\def\authornote#1{%
+ \if@ACM@anonymous\else
+ \g@addto@macro\addresses{\@authornotemark}
+ \g@addto@macro\@authornotes{%
+ \stepcounter{footnote}\footnotetext{#1}}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmVolume}
+% The current volume
+% \begin{macrocode}
+\def\acmVolume#1{\def\@acmVolume{#1}}
+\acmVolume{VV}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmNumber}
+% The current number
+% \begin{macrocode}
+\def\acmNumber#1{\def\@acmNumber{#1}}
+\acmNumber{NNN}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmArticle}
+% The current article
+% \begin{macrocode}
+\def\acmArticle#1{\def\@acmArticle{#1}}
+\acmArticle{AA}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmArticleSeq}
+% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
+% The sequence number
+% \begin{macrocode}
+\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
+\acmArticleSeq{\@acmArticle}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmYear}
+% The current year
+% \begin{macrocode}
+\def\acmYear#1{\def\@acmYear{#1}}
+\acmYear{YYYY}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmMonth}
+% The current month
+% \begin{macrocode}
+\def\acmMonth#1{\def\@acmMonth{#1}}
+\acmMonth{MM}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@acmPubDate}
+% The publication date
+% \begin{macrocode}
+\def\@acmPubDate{\ifcase\@acmMonth\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or
+ December\fi~\@acmYear}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmPrice}
+% The price
+% \begin{macrocode}
+\def\acmPrice#1{\def\@acmPrice{#1}}
+\acmPrice{15.00}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmISBN}
+% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
+% The book isbn
+% \begin{macrocode}
+\def\acmISBN#1{\def\@acmISBN{#1}}
+\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmDOI}
+% \changes{v1.04}{2016/04/26}{Name change by Matthew Fluet}
+% The paper doi
+% \begin{macrocode}
+\def\acmDOI#1{\def\@acmDOI{#1}}
+\acmDOI{10.1145/nnnnnnn.nnnnnnn}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@badge}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% Whether to print badge. Note that either left or right badge
+% triggers it:
+% \begin{macrocode}
+\newif\if@ACM@badge
+\@ACM@badgefalse
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@ACM@badge@width}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The width of the badge
+% \begin{macrocode}
+\newlength\@ACM@badge@width
+\setlength\@ACM@badge@width{5pc}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@ACM@title@width}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The width of the badge
+% \begin{macrocode}
+\newlength\@ACM@title@width
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@ACM@badge@skip}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The space between the badge and the title
+% \begin{macrocode}
+\newlength\@ACM@badge@skip
+\setlength\@ACM@badge@skip{1pc}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmBadgeR}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% Setting the right badge
+% \begin{macrocode}
+\newcommand\acmBadgeR[2][]{\@ACM@badgetrue
+ \def\@acmBadgeR@url{#1}%
+ \def\@acmBadgeR@image{#2}}
+\def\@acmBadgeR@url{}
+\def\@acmBadgeR@image{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\acmBadgeL}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% Setting the left badge
+% \begin{macrocode}
+\newcommand\acmBadgeL[2][]{\@ACM@badgetrue
+ \def\@acmBadgeL@url{#1}%
+ \def\@acmBadgeL@image{#2}}
+\def\@acmBadgeL@url{}
+\def\@acmBadgeL@image{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\startPage}
+% The start page of the paper
+% \begin{macrocode}
+\def\startPage#1{\def\@startPage{#1}}
+\startPage{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\terms}
+% Terms are mostly obsolete, we use CCS now. Still it makes
+% sense to keep them for compatibility.
+% \begin{macrocode}
+\def\terms#1{\def\@terms{#1}}
+\terms{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\keywords}
+% Keywords are mostly obsolete, we use CCS now. Still it makes
+% sense to keep them for compatibility.
+% \begin{macrocode}
+\def\keywords#1{\def\@keywords{#1}}
+\keywords{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{abstract}
+% Amsart puts |abstract| in the box. Since we do not know whether
+% we will use two column mode, we prefer to save the text
+% \begin{macrocode}
+\renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@saveabstract}
+% And saving the abstract
+% \begin{macrocode}
+\long\def\@saveabstract#1{\long\gdef\@abstract{#1}}
+\@saveabstract{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@lempty}
+% The long version of \cs{@empty} (to compare with \cs{@abstract})
+% \begin{macrocode}
+\long\def\@lempty{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@ACM@printccs}
+% Whether to print CCS
+% \begin{macrocode}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printcss}[true]{%
+ \if@ACM@printcss
+ \ClassInfo{\@classname}{Printing CSS}%
+ \else
+ \ClassInfo{\@classname}{Suppressing CSS}%
+ \fi}{\ClassError{\@classname}{printcss must be true or false}}
+% \end{macrocode}
+%
+% \end{macro}
+% \begin{macro}{\if@ACM@printbib}
+% Whether to print ACM bib
+% \begin{macrocode}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printbib}[true]{%
+ \if@ACM@printcss
+ \ClassInfo{\@classname}{Printing bibformat}%
+ \else
+ \ClassInfo{\@classname}{Suppressing bibformat}%
+ \fi}{\ClassError{\@classname}{printbib must be true or false}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\settopmatter}
+% The usual syntactic sugar
+% \begin{macrocode}
+\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% Now the settings
+% \begin{macrocode}
+\settopmatter{printcss=true}
+\if@ACM@manuscript
+ \settopmatter{printbib=false}
+\else
+ \if@ACM@journal
+ \settopmatter{printbib=true}
+ \else
+ \settopmatter{printbib=false}
+ \fi
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@received}
+% The container for the paper history
+% \begin{macrocode}
+\def\@received{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\received}
+% The \cs{received} command
+% \begin{macrocode}
+\newcommand\received[2][]{\def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \ifx\@received\@empty
+ \gdef\@received{Received #2}%
+ \else
+ \g@addto@macro{\@received}{; revised #2}%
+ \fi
+ \else
+ \ifx\@received\@empty
+ \gdef\@received{#1 #2}%
+ \else
+ \g@addto@macro{\@received}{; #1 #2}%
+ \fi
+ \fi}
+\AtEndDocument{%
+ \ifx\@received\@empty\else
+ \par\bigskip\noindent\small\normalfont\@received\par
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%\subsection{Concepts system}
+%\label{sec:concepts}
+%
+% We exclude |CCSXML| stuff generated by the ACM system:
+% \begin{macrocode}
+\RequirePackage{comment}
+\excludecomment{CCSXML}
+% \end{macrocode}
+%
+% \begin{macro}{\@concepts}
+% This is the storage macro for concepts
+% \begin{macrocode}
+\let\@concepts\@empty
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ccsdesc}
+% The first argument is the significance, the second is the
+% concept(s)
+% \begin{macrocode}
+\newcommand\ccsdesc[2][100]{%
+ \ccsdesc@parse#1~#2~}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ccsdesc@parse}
+% The parser of the expression |Significance~General~Specific|:
+% \begin{macrocode}
+\def\ccsdesc@parse#1~#2~#3~{%
+ \expandafter\ifx\csname CCS@#2\endcsname\relax
+ \expandafter\gdef\csname CCS@#2\endcsname{\textbullet\textbf{#2} $\to$ }%
+ \g@addto@macro{\@concepts}{\csname CCS@#2\endcsname}\fi
+ \expandafter\g@addto@macro\expandafter{\csname CCS@#2\endcsname}{%
+ \ifnum#1>499\textbf{#3; }\else
+ \ifnum#1>299\textit{#3; }\else
+ #3; \fi\fi}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%\subsection{Copyright system}
+%\label{sec:copyright}
+%
+% This is from |acmcopyright.sty|
+%
+% \begin{macro}{\if@printcopyright}
+% A flag whether to print copyright symbol
+% \begin{macrocode}
+\newif\if@printcopyright
+\@printcopyrighttrue
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@printpermission}
+% Whether to print permission block
+% \begin{macrocode}
+\newif\if@printpermission
+\@printpermissiontrue
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\if@acmowned}
+% Whether ACM ownes the rights to the paper
+% \begin{macrocode}
+\newif\if@acmowned
+\@acmownedtrue
+% \end{macrocode}
+%
+% \end{macro}
+%
+% Keys:
+% \begin{macrocode}
+\define@choicekey*{ACM@}{acmcopyrightmode}[%
+ \acm@copyrightinput\acm@copyrightmode]{none,acmcopyright,acmlicensed,%
+ rightsretained,usgov,usgovmixed,cagov,cagovmixed,%
+ licensedusgovmixed,licensedcagovmixed,othergov,licensedothergov}{%
+ \@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
+ \fi
+ \ifnum\acm@copyrightmode=4\relax % usgov
+ \@printpermissiontrue
+ \@printcopyrightfalse
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=6\relax % cagov
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=9\relax % licensedcagovmixed
+ \@acmownedfalse
+ \fi
+ \ifnum\acm@copyrightmode=10\relax % othergov
+ \@acmownedtrue
+ \fi
+ \ifnum\acm@copyrightmode=11\relax % licensedothergov
+ \@acmownedfalse
+ \@printcopyrightfalse
+ \fi}
+% \end{macrocode}
+%
+% \begin{macro}{\setcopyright}
+% This is the syntactic sugar around setting keys.
+% \begin{macrocode}
+\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
+\setcopyright{acmcopyright}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@copyrightowner}
+% Here is the owner of the copyright
+% \begin{macrocode}
+\def\@copyrightowner{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ ACM\@.
+ \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
+ ACM\@.
+ \or % cagov
+ Crown in Right of Canada.
+ \or %cagovmixed
+ ACM\@.
+ \or %licensedusgovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or %licensedcagovmixed
+ Copyright held by the owner/author(s). Publication rights licensed to
+ ACM\@.
+ \or % othergov
+ ACM\@.
+ \or % licensedothergov
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@formatdoi}
+% \changes{v1.03}{2016/04/22}{Added macro}
+% Print a clickable doi
+% \begin{macrocode}
+\def\@formatdoi#1{\url{http://dx.doi.org/#1}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@copyrightpermission}
+% The canned permission block.
+% \begin{macrocode}
+\def\@copyrightpermission{%
+ \ifcase\acm@copyrightmode\relax % none
+ \or % acmcopyright
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than ACM must be honored. Abstracting with credit is
+ permitted. To copy otherwise, or republish, to post on servers or to
+ redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % acmlicensed
+ Permission to make digital or hard copies of all or part of this
+ work for personal or classroom use is granted without fee provided
+ that copies are not made or distributed for profit or commercial
+ advantage and that copies bear this notice and the full citation on
+ the first page. Copyrights for components of this work owned by
+ others than the author(s) must be honored. Abstracting with credit
+ is permitted. To copy otherwise, or republish, to post on servers
+ or to redistribute to lists, requires prior specific permission
+ and\hspace*{.5pt}/or a fee. Request permissions from
+ permissions@acm.org.
+ \or % rightsretained
+ Permission to make digital or hard copies of part or all of this work
+ for personal or classroom use is granted without fee provided that
+ copies are not made or distributed for profit or commercial advantage
+ and that copies bear this notice and the full citation on the first
+ page. Copyrights for third-party components of this work must be
+ honored. For all other uses, contact the
+ owner\hspace*{.5pt}/author(s).
+ \or % usgov
+ This paper is authored by an employee(s) of the United States
+ Government and is in the public domain. Non-exclusive copying or
+ redistribution is allowed, provided that the article citation is
+ given and the authors and agency are clearly identified as its
+ source.
+ \or % usgovmixed
+ ACM acknowledges that this contribution was authored or co-authored
+ by an employee, or contractor of the 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. 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 % 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 Canadain 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 % 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.
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+%
+% \begin{macro}{\copyrightyear}
+% By default, the copyright year is the same as \cs{acmYear}, but
+% one can override this:
+% \begin{macrocode}
+\def\copyrightyear#1{\def\@copyrightyear{#1}}
+\copyrightyear{\@acmYear}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@teaserfigures}
+% The teaser figures container
+% \begin{macrocode}
+\def\@teaserfigures{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{teaserfigure}
+% The teaser figure
+% \begin{macrocode}
+\newenvironment{teaserfigure}{\Collect@Body\@saveteaser}{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@saveteaser}
+% Saving the teaser
+% \begin{macrocode}
+\long\def\@saveteaser#1{\g@addto@macro\@teaserfigures{\@teaser{#1}}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\thanks}
+% We redefine |amsart| \cs{thanks}, so the |anonymous| key works
+% \begin{macrocode}
+\renewcommand{\thanks}[1]{%
+ \@ifnotempty{#1}{%
+ \if@ACM@anonymous
+ \g@addto@macro\thankses{\thanks{A note}}%
+ \else
+ \g@addto@macro\thankses{\thanks{#1}}%
+ \fi}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \subsection{Typesetting top matter}
+% \label{sec:makefile}
+%
+% \begin{macro}{\mktitle@bx}
+% Some of our formats use two column design, some use one column
+% one. In all cases we use wide title. Thus we typeset the top
+% matter in a special box to be use in the construction
+% \cs{@twocolumn}\oarg{box}.
+% \begin{macrocode}
+\newbox\mktitle@bx
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\maketitle}
+% \changes{v1.03}{2016/04/22}{Added special case of authorversion}
+% \changes{v1.07}{2016/05/03}{Corrected a bug with abstract footnotes}
+% \changes{v1.07}{2016/05/03}{Corrected a bug with permssion and
+% footnotes order}
+% The (in)famous \cs{maketitle}. Note that in sigchi-a mode authors
+% are \emph{not} in the title box.
+% \begin{macrocode}
+\def\maketitle{%
+ \if@ACM@anonymous
+ % Anonymize omission of \author-s
+ \ifnum\num@authors=0\author{}\fi
+ \fi
+ \begingroup
+ \let\@footnotemark\@footnotemark@nolink
+ \let\@footnotetext\@footnotetext@nolink
+ \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
+ \@topnum\z@ % this prevents figures from falling at the top of page
+ % 1
+ \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
+ \@footnotetext{\def\par{\let\par\@par}\parindent\z@\@setthanks}%
+ \fi
+ \footnotetextcopyrightpermission{\parindent\z@\parskip0.1\baselineskip
+ \if@ACM@authorversion\else
+ \if@printpermission\@copyrightpermission\par\fi
+ \fi
+ \if@ACM@manuscript\else
+ \if@ACM@journal\else % Print the conference short name
+ {\itshape \acmConference@shortname, \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
+ \emph{\@journalName}%
+ \else
+ \emph{Proceedings of \acmConference@name, \acmConference@date}%
+ \fi
+ \ifx\@acmDOI\@empty
+ .
+ \else
+ , \@formatdoi{\@acmDOI}.
+ \fi\\
+ \else
+ \if@ACM@journal
+ \@permissionCodeOne/\@acmYear/\@acmMonth-ART\@acmArticle\
+ \$\@acmPrice\\
+ \else % Conference
+ \@acmISBN
+ \ifx\@acmPrice\@empty.\else\dots\$\@acmPrice\fi\\
+ \fi
+ \fi
+ \fi
+ DOI: \nolinkurl{\@acmDOI}}%
+ \endgroup
+ \setcounter{footnote}{0}%
+ \@mkabstract
+ \if@ACM@printcss
+ \ifx\@concepts\@empty\else\bgroup
+ {\@specialsection{CCS Concepts}%
+ \@concepts\par}\egroup
+ \fi
+ \fi
+ \if\@terms\@empty\else\bgroup
+ {\@specialsection{General Terms}%
+ \@terms\par}\egroup
+ \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@printbib
+ \@mkbibcitation
+ \fi
+ \hypersetup{pdfauthor={\authors},
+ pdftitle={\@title}, pdfkeywords={\@concepts}}%
+ \@printendtopmatter
+ \@afterindentfalse
+ \@afterheading
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@specialsection}
+% This macro starts section for proceedings and uses small for journals
+% \begin{macrocode}
+\def\@specialsection#1{%
+ \if@ACM@journal
+ \par\medskip\small\noindent#1: %
+ \else
+ \section*{#1}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@printtopmatter}
+% \changes{v1.06}{2016/05/01}{Added processing badges}
+% The printing of top matter starts the new page, and uses the given
+% title box. Note that for sigchi-a we print badges here rather
+% than in \cs{mktitle} since we want them on the margins.
+% \begin{macrocode}
+\def\@printtopmatter{%
+ \ifx\@startPage\@empty
+ \gdef\@startPage{1}%
+ \else
+ \setcounter{page}{\@startPage}%
+ \fi
+ \thispagestyle{firstpagestyle}%
+ \noindent
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \box\mktitle@bx\par
+ \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
+ \twocolumn[\box\mktitle@bx]%
+ \or % siggraph
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigplan
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi
+ \twocolumn[\box\mktitle@bx]%
+ \or % sigchi-a
+ \par\box\mktitle@bx\par\bigskip
+ \if@ACM@badge
+ \marginpar{\noindent
+ \ifx\@acmBadgeL@image\@empty\else
+ \href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \ifx\@acmBadgeR@image\@empty\else
+ \href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}%
+ \fi}%
+ \fi
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mktitle}
+% The title of the article
+% \begin{macrocode}
+\def\@mktitle{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mktitle@i
+ \or% acmsmall
+ \@mktitle@i
+ \or % acmlarge
+ \@mktitle@i
+ \or % acmtog
+ \@mktitle@i
+ \or % sigconf
+ \@mktitle@iii
+ \or % siggraph
+ \@mktitle@iii
+ \or % sigplan
+ \@mktitle@iii
+ \or % sigchi
+ \@mktitle@iii
+ \or % sigchi-a
+ \@mktitle@iv
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@titlefont}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The font to typeset title
+% \begin{macrocode}
+\def\@titlefont{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \LARGE\bfseries\sffamily
+ \or% acmsmall
+ \LARGE\bfseries\sffamily
+ \or % acmlarge
+ \LARGE\bfseries\sffamily
+ \or % acmtog
+ \Huge\sffamily
+ \or % sigconf
+ \Huge\sffamily\bfseries
+ \or % siggraph
+ \Huge\sffamily\bfseries
+ \or % sigplan
+ \Huge\sffamily\bfseries
+ \or % sigchi
+ \Huge\sffamily\bfseries
+ \or % sigchi-a
+ \Huge\bfseries
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@subtitlefont}
+% \changes{v1.06}{2016/05/01}{Added macro}
+% The font to typeset title
+% \begin{macrocode}
+\def\@subtitlefont{%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \mdseries
+ \or% acmsmall
+ \mdseries
+ \or % acmlarge
+ \mdseries
+ \or % acmtog
+ \LARGE
+ \or % sigconf
+ \LARGE\mdseries
+ \or % siggraph
+ \LARGE\mdseries
+ \or % sigplan
+ \LARGE\mdseries
+ \or % sigchi
+ \LARGE\mdseries
+ \or % sigchi-a
+ \mdseries
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mktitle@i}
+% \changes{v1.06}{2016/05/01}{Made generic}
+% \changes{v1.06}{2016/05/01}{Added processing badges}
+% The version of \cs{mktitle} for most journals
+% \begin{macrocode}
+\def\@mktitle@i{\hsize=\textwidth
+ \@ACM@title@width=\hsize
+ \ifx\@acmBadgeL@image\@empty\else
+ \advance\@ACM@title@width by -\@ACM@badge@width
+ \advance\@ACM@title@width by -\@ACM@badge@skip
+ \fi
+ \ifx\@acmBadgeR@image\@empty\else
+ \advance\@ACM@title@width by -\@ACM@badge@width
+ \advance\@ACM@title@width by -\@ACM@badge@skip
+ \fi
+ \setbox\mktitle@bx=\vbox{\noindent\@titlefont
+ \ifx\@acmBadgeL@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \parbox[t]{\@ACM@title@width}{\raggedright
+ \@titlefont\noindent
+ \@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle}
+ \fi}%
+ \ifx\@acmBadgeR@image\@empty\else
+ \hskip\@ACM@badge@skip
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
+ \fi
+ \par\bigskip}}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mktitle@ii}
+% \changes{v1.06}{2016/05/01}{Now this macro is obsolete}
+% The version of \cs{mktitle} for TOG. Since v1.06 is subsumed by
+% the \cs{mktitle@i} macro
+% \end{macro}
+%
+%
+% \begin{macro}{\@mktitle@iii}
+% \changes{v1.06}{2016/05/01}{Made more generic}
+% \changes{v1.06}{2016/05/01}{Added processing badges}
+% The version of \cs{@mktitle} for sigproc. Note that since the
+% title is centered, we leave the space for the left badge even if
+% only the right badge is defined.
+% \begin{macrocode}
+\def\@mktitle@iii{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\@titlefont\centering
+ \@ACM@title@width=\hsize
+ \if@ACM@badge
+ \advance\@ACM@title@width by -2\@ACM@badge@width
+ \advance\@ACM@title@width by -2\@ACM@badge@skip
+ \parbox[b]{\@ACM@badge@width}{\strut
+ \ifx\@acmBadgeL@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeL@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeL@image}}}%
+ \fi}%
+ \hskip\@ACM@badge@skip
+ \fi
+ \parbox[t]{\@ACM@title@width}{\centering\@titlefont
+ \@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent{\@subtitlefont\@subtitle}
+ \fi
+ }%
+ \if@ACM@badge
+ \hskip\@ACM@badge@skip
+ \parbox[b]{\@ACM@badge@width}{\strut
+ \ifx\@acmBadgeR@image\@empty\else
+ \raisebox{-.5\baselineskip}[\z@][\z@]{\href{\@acmBadgeR@url}{%
+ \includegraphics[width=\@ACM@badge@width]{\@acmBadgeR@image}}}%
+ \fi}%
+ \fi
+ \par\bigskip}}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@mktitle@iv}
+% \changes{v1.06}{2016/05/01}{Made more generic}
+% The version of \cs{@mktitle} for sigchi-a
+% \begin{macrocode}
+\def\@mktitle@iv{\hsize=\textwidth
+ \setbox\mktitle@bx=\vbox{\raggedright\leftskip5pc\@titlefont
+ \noindent\leavevmode\leaders\hrule height 2pt\hfill\kern0pt\par
+ \noindent\@title
+ \ifx\@subtitle\@empty\else
+ \par\noindent\@subtitlefont\@subtitle
+ \fi
+ \par\bigskip}}%
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@mkauthors}
+% Typesetting authors
+% \begin{macrocode}
+\def\@mkauthors{\begingroup
+ \hsize=\textwidth
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \@mkauthors@i
+ \or% acmsmall
+ \@mkauthors@i
+ \or % acmlarge
+ \@mkauthors@i
+ \or % acmtog
+ \@mkauthors@ii
+ \or % sigconf
+ \@mkauthors@iii
+ \or % siggraph
+ \@mkauthors@iii
+ \or % sigplan
+ \@mkauthors@iii
+ \or % sigchi
+ \@mkauthors@iii
+ \or % sigchi-a
+ \@mkauthors@iv
+ \fi
+ \endgroup
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@authorfont}
+% Somehow different conferences use different fonts for author
+% names. Why?
+% \begin{macrocode}
+\def\@authorfont{\Large\sffamily}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@affiliationfont}
+% Font for affiliations
+% \begin{macrocode}
+\def\@affiliationfont{\normalsize\normalfont}
+% \end{macrocode}
+% \end{macro}
+%
+% Adjusting fonts for different formats
+% \begin{macrocode}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+\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
+\or % sigchi
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\or % sigchi-a
+ \def\@authorfont{\bfseries}
+ \def\@affiliationfont{\mdseries}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@mkauthors@i}
+% This is version used in most formats. Note that \cs{and} between
+% authors with the same affiliation becomes \verb*| and |:
+% \begin{macrocode}
+\def\@mkauthors@i{%
+ \def\@currentauthors{}%
+ \def\and{%
+ \andify\@currentauthors\par\noindent
+ \@currentauthors\def\@currentauthors{}}%
+ \def\@author##1{%
+ \ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
+ \else
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
+ \fi
+ \def\and{}}%
+ \def\email##1##2{}%
+ \def\affiliation##1##2{%
+ \ifx\@currentauthors\@empty\else
+ \andify\@currentauthors\par\noindent\@currentauthors
+ \fi
+ \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
+ \unskip, {\@affiliationfont##2}\fi\def\and{\par\noindent}}%
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
+ \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkauthors@ii}
+% This is version used in acmtog. A more vertical design
+% \begin{macrocode}
+\def\@mkauthors@ii{\par\medskip
+ \def\@currentauthors{}%
+ \def\and{}%
+ \def\@author##1{%
+ \ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\@authorfont
+ \MakeUppercase{##1}}%
+ \else
+ \g@addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
+ \fi\def\and{}}%
+ \def\email##1##2{}%
+ \def\affiliation##1##2{%
+ \ifx\@currentauthors\@empty\else
+ \andify\@currentauthors\par\noindent\@currentauthors
+ \fi
+ \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
+ \par\noindent{\@affiliationfont##2}\fi
+ \def\and{\par\noindent{\@affiliationfont and}\par
+ \noindent\def\and{}}}%
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
+ \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author@bx}
+% The box to put individual author to
+% \begin{macrocode}
+\newbox\author@bx
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author@bx@wd}
+% The width of the author box
+% \begin{macrocode}
+\newdimen\author@bx@wd
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\author@bx@sep}
+% The separation between the author boxes
+% \begin{macrocode}
+\newskip\author@bx@sep
+\author@bx@sep=1pc\relax
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \begin{macro}{\@mkauthors@iii}
+% The |sigconf| version. Here we use centered design with each
+% author in a separate box.
+% \begin{macrocode}
+\def\@mkauthors@iii{%
+% \end{macrocode}
+% First, we need to determine the design of the author strip. The
+% boxes are separated by \cs{author@bx@sep} plus two
+% \cs{author@bx@sep} margins. This means that each box must be of
+% width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
+% where $N$ is the number of boxes per row.
+% \begin{macrocode}
+ \author@bx@wd=\textwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifcase\num@authors
+ \relax % 0?
+ \or % 1=one author per row
+ \or % 2=two authors per row
+ \divide\author@bx@wd by \num@authors\relax
+ \or % 3=three authors per row
+ \divide\author@bx@wd by \num@authors\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
+ \advance\author@bx@wd by -\author@bx@sep\relax
+% \end{macrocode}
+% Now, parsing of \cs{addresses}:
+% \begin{macrocode}
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\quad##1}%
+ \fi}%
+ \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{##2}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par##2}%
+ \fi}%
+% \end{macrocode}
+% Actual typesetting is done by \cs{and} macro
+% \begin{macrocode}
+ \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
+ \global\setbox\author@bx=\vtop{\centering
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hspace{\author@bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}%
+% \end{macrocode}
+% And here we use it:
+% \begin{macrocode}
+ \hsize=\textwidth
+ \global\setbox\mktitle@bx=\vbox{\noindent
+ \box\mktitle@bx\par\medskip\leavevmode
+ \lineskip=1pc\relax\centering\hspace*{-1em}%
+ \addresses\and\par\bigskip}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \begin{macro}{\@mkauthors@iv}
+% The |sigchia| version. Now we put
+% authors in the main text, and no more than 2 authors per line.
+% \begin{macrocode}
+\def\@mkauthors@iv{%
+% \end{macrocode}
+% First, we need to determine the design of the author strip. The
+% boxes are separated by \cs{author@bx@sep} plus two
+% \cs{author@bx@sep} margins. This means that each box must be of
+% width $(\cs{textwidth}-\cs{author@bx@sep})/N-\cs{author@bx@sep}$,
+% where $N$ is the number of boxes per row.
+% \begin{macrocode}
+ \author@bx@wd=\columnwidth\relax
+ \advance\author@bx@wd by -\author@bx@sep\relax
+ \ifcase\num@authors
+ \relax % 0?
+ \or % 1=one author per row
+ \else % 2=two authors per row
+ \divide\author@bx@wd by 2\relax
+ \fi
+ \advance\author@bx@wd by -\author@bx@sep\relax
+% \end{macrocode}
+% Now, parsing of \cs{addresses}:
+% \begin{macrocode}
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}%
+ \def\@author##1{\ifx\@currentauthors\@empty
+ \gdef\@currentauthors{\par##1}%
+ \else
+ \g@addto@macro\@currentauthors{\quad##1}%
+ \fi}%
+ \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{##2}%
+ \else
+ \g@addto@macro\@currentaffiliation{\par##2}%
+ \fi}%
+% \end{macrocode}
+% Actual typesetting is done by \cs{and} macro
+% \begin{macrocode}
+ \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
+ \global\setbox\author@bx=\vtop{\raggedright
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hskip\author@bx@sep
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}%
+% \end{macrocode}
+% And here we use it:
+% \begin{macrocode}
+ \bgroup\hsize=\columnwidth
+ \par\raggedright\leftskip=\z@
+ \lineskip=1pc\noindent\addresses\and\par\bigskip\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@authornotemark}
+% Adding footnotemark to authors
+% \begin{macrocode}
+\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkteasers}
+% Typesetting teasers
+% \begin{macrocode}
+\def\@mkteasers{%
+ \ifx\@teaserfigures\@empty\else
+ \def\@teaser##1{\par\bigskip\bgroup
+ \captionsetup{type=figure}##1\egroup\par}
+ \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par
+ \noindent\@teaserfigures\par\medskip}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@setaddresses}
+% This is an |amsart| macro, which we do not need.
+% \begin{macrocode}
+\def\@setaddresses{}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkabstract}
+% Typesetting abstract
+% \begin{macrocode}
+\def\@mkabstract{\bgroup
+ \ifx\@abstract\@lempty\else
+ {\if@ACM@journal
+ \small\noindent
+ \else
+ \section*{ABSTRACT}%
+ \fi
+ \@abstract\par}%
+ \fi\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@mkbibcitation}
+% Print bibcitation format
+% \begin{macrocode}
+\def\@mkbibcitation{\bgroup
+ \par\medskip\small\noindent{\bfseries ACM Reference format:}\par
+ \noindent\authors. \@acmYear. \@title. \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber, Article~\@acmArticle\
+ (\@acmPubDate), \ref{TotPages}~pages.\par
+ \noindent DOI: \nolinkurl{\@acmDOI}
+\par\egroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@printendtopmatter}
+% End the top matter
+% \begin{macrocode}
+\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
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@setthanks}
+% We redefine \cs{\@setthanks} using \cs{long}
+% \begin{macrocode}
+\def\@setthanks{\long\def\thanks##1{\par##1\@addpunct.}\thankses}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+%\subsection{Headers and Footers}
+%\label{sec:head_foot}
+%
+% We use |fancyhdr| for our headers and footers:
+% \begin{macrocode}
+\RequirePackage{fancyhdr}
+% \end{macrocode}
+%
+% \begin{macro}{\ACM@linecount@bx}
+% This is the box displayed in the review mode
+% \begin{macrocode}
+\if@ACM@review
+ \newsavebox{\ACM@linecount@bx}
+ \savebox{\ACM@linecount@bx}[4em][t]{\parbox[t]{4em}{%
+ \newlength\ACM@linecount@bxht\setlength{\ACM@linecount@bxht}{-\baselineskip}
+ \@tempcnta\@ne\relax
+ \loop{\color{ACMRed}\scriptsize\the\@tempcnta}\\
+ \advance\@tempcnta by \@ne
+ \addtolength{\ACM@linecount@bxht}{\baselineskip}
+ \ifdim\ACM@linecount@bxht<\textheight\repeat}}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\ACM@linecount}
+% How to display the box
+% \begin{macrocode}
+\def\ACM@linecount{%
+ \if@ACM@review
+ \begin{picture}(0,0)%
+ \put(-26,-22){\usebox{\ACM@linecount@bx}}%
+ \end{picture}%
+ \fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%
+% \begin{macro}{standardpagestyle}
+% The pagestyle for all pages but the first one
+% \begin{macrocode}
+\fancypagestyle{standardpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[RE]{\thepage}%
+ \fancyhead[LO]{\ACM@linecount\thepage}%
+ \fancyhead[LE]{\ACM@linecount\shortauthors}%
+ \fancyhead[RO]{\shorttitle}%
+ \fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
+ \or% acmsmall
+ \fancyhead[RE]{\sffamily\@acmArticle:\thepage}%
+ \fancyhead[LO]{\ACM@linecount\sffamily\@acmArticle:\thepage}%
+ \fancyhead[LE]{\ACM@linecount\sffamily\shortauthors}%
+ \fancyhead[RO]{\sffamily\shorttitle}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \or % acmlarge
+ \fancyhead[LE]{\ACM@linecount\sffamily
+ \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\sffamily
+ \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \or % acmtog
+ \fancyhead[LE]{\ACM@linecount\sffamily
+ \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\sffamily
+ \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
+ \else % Proceedings
+ \fancyfoot[R]{\footnotesize\thepage}%
+ \fancyhead[L]{\ACM@linecount}%
+ \fi
+}
+\pagestyle{standardpagestyle}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@folio@wd}
+% \begin{macro}{\@folio@ht}
+% \begin{macro}{\@folio@voffset}
+% \begin{macro}{\@folio@max}
+% Folio blob width, height, offsets and max number
+% \begin{macrocode}
+\newdimen\@folio@wd
+\@folio@wd=\z@
+\newdimen\@folio@ht
+\@folio@ht=\z@
+\newdimen\@folio@voffset
+\@folio@voffset=\z@
+\def\@folio@max{1}
+\ifcase\ACM@format@nr
+\relax % manuscript
+\or% acmsmall
+ \@folio@wd=45.75pt\relax
+ \@folio@ht=1.25in\relax
+ \@folio@voffset=.2in\relax
+ \def\@folio@max{8}
+\or % acmlarge
+ \@folio@wd=43.25pt\relax
+ \@folio@ht=79pt\relax
+ \@folio@voffset=.55in\relax
+ \def\@folio@max{10}
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\@folioblob}
+% The macro to typeset the folio blob.
+% \begin{macrocode}
+\def\@folioblob{\@tempcnta=\@acmArticleSeq\relax
+% \end{macrocode}
+% First, we calculate \cs{@acmArticleSeq} modulo \cs{@folio@max}
+% \begin{macrocode}
+ \loop
+ \ifnum\@tempcnta>\@folio@max\relax
+ \advance\@tempcnta by - \@folio@max
+ \repeat
+% \end{macrocode}
+%
+% \begin{macrocode}
+ \advance\@tempcnta by -1\relax
+ \@tempdima=\@folio@ht\relax
+ \multiply\@tempdima by \the\@tempcnta\relax
+ \advance\@tempdima by -\@folio@voffset\relax
+ \begin{picture}(0,0)
+ \makebox[\z@]{\raisebox{-\@tempdima}{%
+ \rlap{%
+ \raisebox{-0.45\@folio@ht}[\z@][\z@]{%
+ \rule{\@folio@wd}{\@folio@ht}}}%
+ \parbox{\@folio@wd}{%
+ \centering
+ \textcolor{white}{\LARGE\bfseries\sffamily\@acmArticle}}}}
+ \end{picture}}
+
+% \end{macrocode}
+%
+%
+% \end{macro}
+%
+% \begin{macro}{firstpagestyle}
+% The pagestyle for all pages but the first one
+% \begin{macrocode}
+\fancypagestyle{firstpagestyle}{%
+ \fancyhf{}%
+ \renewcommand{\headrulewidth}{\z@}%
+ \renewcommand{\footrulewidth}{\z@}%
+ \ifcase\ACM@format@nr
+ \relax % manuscript
+ \fancyhead[L]{\ACM@linecount}%
+ \fancyfoot[RO,LE]{\small\thepage}%
+ \fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
+ \or% acmsmall
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[LE]{\ACM@linecount\@folioblob}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyhead[RO]{\@folioblob}%
+ \fancyheadoffset[RO,LE]{0.6\@folio@wd}%
+ \or % acmlarge
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[RO]{\@folioblob}%
+ \fancyhead[LE]{\ACM@linecount\@folioblob}%
+ \fancyhead[LO]{\ACM@linecount}%
+ \fancyheadoffset[RO,LE]{1.4\@folio@wd}%
+ \or % acmtog
+ \fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
+ \@acmNumber, Article \@acmArticle. Publication date:
+ \@acmPubDate.}%
+ \fancyhead[L]{\ACM@linecount}%
+ \else % Conference proceedings
+ \fancyhead[L]{\ACM@linecount}%
+ \fancyfoot[R]{\footnotesize\thepage}%
+ \fi
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+%\subsection{Sectioning}
+%\label{sec:sectioninng}
+%
+%
+% Fonts for sections etc. are different for different formats. Also,
+% some formats use the ugly period after section number (sigh):
+% \begin{macrocode}
+\def\@secfont{\sffamily\bfseries\raggedright\MakeUppercase}
+\def\@subsecfont{\sffamily\bfseries\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\raggedright\MakeUppercase}
+ \def\@subsecfont{\sffamily\large\raggedright}
+\or % acmtog
+ \def\@secfont{\sffamily\large\raggedright\MakeUppercase}
+ \def\@subsecfont{\sffamily\large\raggedright}
+\or % sigconf
+ \def\@secfont{\bfseries\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\Large\raggedright}
+\or % siggraph
+ \def\@secfont{\bfseries\sffamily\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\Large\raggedright}
+\or % sigplan
+ \def\@secfont{\bfseries\Large\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\Large\raggedright}
+\or % sigchi
+ \setcounter{secnumdepth}{1}
+ \def\@secfont{\bfseries\sffamily\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\raggedright}
+\or % sigchi-a
+ \setcounter{secnumdepth}{0}
+ \def\@secfont{\bfseries\sffamily\raggedright\MakeUppercase}
+ \def\@subsecfont{\bfseries\sffamily\raggedright}
+\fi
+% \end{macrocode}
+%
+% \begin{macro}{\@adddotafter}
+% Add punctuation after the command
+% \begin{macrocode}
+\def\@adddotafter#1{#1\@addpunct{.}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% Sectioning is different for different levels
+% \begin{macrocode}
+\renewcommand\section{\@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@secfont}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@subsecfont}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@subsubsecfont\@adddotafter}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@parfont\@adddotafter}}
+\renewcommand\part{\@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\@parfont}}
+% \end{macrocode}
+%
+%
+%
+%
+%\subsection{Theorems}
+%\label{sec:theorems}
+%
+%
+% \begin{macro}{acmplain}
+% The |acmplain| theorem style
+% \begin{macrocode}
+\newtheoremstyle{acmplain}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% Space below
+ {\itshape}% body font
+ {\parindent}% indent amount
+ {\scshape}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ (#3)}}% head spec
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{acmdefinition}
+% The |acmdefinition| theorem style
+% \begin{macrocode}
+\newtheoremstyle{acmdefinition}%
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% space above
+ {.5\baselineskip\@plus.2\baselineskip
+ \@minus.2\baselineskip}% Space below
+ {\normalfont}% body font
+ {\parindent}% indent amount
+ {\itshape}% head font
+ {.}% punctuation after head
+ {.5em}% spacing after head
+ {\thmname{#1}\thmnumber{ #2}\thmnote{ \itshape(#3)}}% head spec
+% \end{macrocode}
+%
+% \end{macro}
+%
+% The definitions for theorems:
+% \begin{macrocode}
+\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}
+% \end{macrocode}
+%
+%
+% \begin{macro}{proof}
+% We want small caps proof name
+% \begin{macrocode}
+\renewenvironment{proof}[1][\proofname]{\par
+ \pushQED{\qed}%
+ \normalfont \topsep6\p@\@plus6\p@\relax
+ \trivlist
+ \item[\indent\hskip\labelsep
+ \scshape
+ #1\@addpunct{.}]\ignorespaces
+}{%
+ \popQED\endtrivlist\@endpefalse
+}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
+% \subsection{Conditional typesetting}
+% \label{sec:conditional}
+%
+% We use the |comment| package for conditional typesetting:
+% \begin{macrocode}
+\if@ACM@screen
+ \includecomment{screenonly}
+ \excludecomment{printonly}
+\else
+ \excludecomment{screenonly}
+ \includecomment{printonly}
+\fi
+\if@ACM@anonymous
+ \excludecomment{anonsuppress}
+\else
+ \includecomment{anonsuppress}
+\fi
+% \end{macrocode}
+%
+%
+%\subsection{End of Class}
+%\label{end}
+%
+%
+% \begin{macrocode}
+\normalsize\normalfont
+%</class>
+% \end{macrocode}
+%
+%\Finale
+%\clearpage
+%
+%\PrintChanges
+%\clearpage
+%\PrintIndex
+%
+\endinput
diff --git a/Master/texmf-dist/source/latex/acmart/acmart.ins b/Master/texmf-dist/source/latex/acmart/acmart.ins
new file mode 100644
index 00000000000..8d93280a2c2
--- /dev/null
+++ b/Master/texmf-dist/source/latex/acmart/acmart.ins
@@ -0,0 +1,29 @@
+%
+% Doctrip file for acmart
+% This file is in public domain
+% $Id: acmart.ins,v 1.1 2015/11/23 22:42:55 boris Exp $
+%
+\def\batchfile{acmart.ins}
+\input docstrip
+\keepsilent
+\showprogress
+
+
+\askforoverwritefalse
+
+\generate{%
+ \file{acmart.cls}{\from{acmart.dtx}{class}}}
+
+\obeyspaces
+\Msg{*****************************************************}%
+\Msg{* Congratulations! You successfully generated the *}%
+\Msg{* acmart package. *}%
+\Msg{* *}%
+\Msg{* Please move the file acmart.cls to where LaTeX *}%
+\Msg{* files are stored in your system. The manual is *}%
+\Msg{* acmart.pdf. *}%
+\Msg{* *}%
+\Msg{* The package is released under LPPL *}%
+\Msg{* *}%
+\Msg{* Happy TeXing! *}%
+\Msg{*****************************************************}% \ No newline at end of file