diff options
Diffstat (limited to 'Master/texmf-dist/source/latex')
-rw-r--r-- | Master/texmf-dist/source/latex/acmart/acmart.dtx | 4097 | ||||
-rw-r--r-- | Master/texmf-dist/source/latex/acmart/acmart.ins | 29 |
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 |