|
1 |
%%
|
|
2 |
%% This is file `acmart.cls',
|
|
3 |
%% generated with the docstrip utility.
|
|
4 |
%%
|
|
5 |
%% The original source files were:
|
|
6 |
%%
|
|
7 |
%% acmart.dtx (with options: `class')
|
|
8 |
%%
|
|
9 |
%% IMPORTANT NOTICE:
|
|
10 |
%%
|
|
11 |
%% For the copyright see the source file.
|
|
12 |
%%
|
|
13 |
%% Any modified versions of this file must be renamed
|
|
14 |
%% with new filenames distinct from acmart.cls.
|
|
15 |
%%
|
|
16 |
%% For distribution of the original source see the terms
|
|
17 |
%% for copying and modification in the file acmart.dtx.
|
|
18 |
%%
|
|
19 |
%% This generated file may be distributed as long as the
|
|
20 |
%% original source files, as listed above, are part of the
|
|
21 |
%% same distribution. (The sources need not necessarily be
|
|
22 |
%% in the same archive or directory.)
|
|
23 |
%% \CharacterTable
|
|
24 |
%% {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
|
|
25 |
%% 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
|
|
26 |
%% Digits \0\1\2\3\4\5\6\7\8\9
|
|
27 |
%% Exclamation \! Double quote \" Hash (number) \#
|
|
28 |
%% Dollar \$ Percent \% Ampersand \&
|
|
29 |
%% Acute accent \' Left paren \( Right paren \)
|
|
30 |
%% Asterisk \* Plus \+ Comma \,
|
|
31 |
%% Minus \- Point \. Solidus \/
|
|
32 |
%% Colon \: Semicolon \; Less than \<
|
|
33 |
%% Equals \= Greater than \> Question mark \?
|
|
34 |
%% Commercial at \@ Left bracket \[ Backslash \\
|
|
35 |
%% Right bracket \] Circumflex \^ Underscore \_
|
|
36 |
%% Grave accent \` Left brace \{ Vertical bar \|
|
|
37 |
%% Right brace \} Tilde \~}
|
|
38 |
\NeedsTeXFormat{LaTeX2e}
|
|
39 |
\ProvidesClass{acmart}
|
|
40 |
[2017/08/31 v1.47 Typesetting articles for Association of
|
|
41 |
Computing Machinery]
|
|
42 |
\def\@classname{acmart}
|
|
43 |
\InputIfFileExists{acmart-preload-hook.tex}{%
|
|
44 |
\ClassWarning{\@classname}{%
|
|
45 |
I am loading acmart-preload-hook.tex. You are fully responsible
|
|
46 |
for any problems from now on.}}{}
|
|
47 |
\RequirePackage{xkeyval}
|
|
48 |
\RequirePackage{xstring}
|
|
49 |
\define@choicekey*+{acmart.cls}{format}[\ACM@format\ACM@format@nr]{%
|
|
50 |
manuscript, acmsmall, acmlarge, acmtog, sigconf, siggraph,
|
|
51 |
sigplan, sigchi, sigchi-a}[manuscript]{}{%
|
|
52 |
\ClassError{\@classname}{The option format must be manuscript,
|
|
53 |
acmsmall, acmlarge, acmtog, sigconf, siggraph,
|
|
54 |
sigplan, sigchi or sigchi-a}}
|
|
55 |
\def\@DeclareACMFormat#1{\DeclareOptionX{#1}{\setkeys{acmart.cls}{format=#1}}}
|
|
56 |
\@DeclareACMFormat{manuscript}
|
|
57 |
\@DeclareACMFormat{acmsmall}
|
|
58 |
\@DeclareACMFormat{acmlarge}
|
|
59 |
\@DeclareACMFormat{acmtog}
|
|
60 |
\@DeclareACMFormat{sigconf}
|
|
61 |
\@DeclareACMFormat{siggraph}
|
|
62 |
\@DeclareACMFormat{sigplan}
|
|
63 |
\@DeclareACMFormat{sigchi}
|
|
64 |
\@DeclareACMFormat{sigchi-a}
|
|
65 |
\ExecuteOptionsX{format}
|
|
66 |
\define@boolkey+{acmart.cls}[@ACM@]{screen}[true]{%
|
|
67 |
\if@ACM@screen
|
|
68 |
\PackageInfo{\@classname}{Using screen mode}%
|
|
69 |
\else
|
|
70 |
\PackageInfo{\@classname}{Not using screen mode}%
|
|
71 |
\fi}{\PackageError{\@classname}{Option screen can be either true or
|
|
72 |
false}}
|
|
73 |
\ExecuteOptionsX{screen=false}
|
|
74 |
\define@boolkey+{acmart.cls}[@ACM@]{acmthm}[true]{%
|
|
75 |
\if@ACM@acmthm
|
|
76 |
\PackageInfo{\@classname}{Requiring acmthm}%
|
|
77 |
\else
|
|
78 |
\PackageInfo{\@classname}{Suppressing acmthm}%
|
|
79 |
\fi}{\PackageError{\@classname}{Option acmthm can be either true or
|
|
80 |
false}}
|
|
81 |
\ExecuteOptionsX{acmthm=true}
|
|
82 |
\define@boolkey+{acmart.cls}[@ACM@]{review}[true]{%
|
|
83 |
\if@ACM@review
|
|
84 |
\PackageInfo{\@classname}{Using review mode}%
|
|
85 |
\else
|
|
86 |
\PackageInfo{\@classname}{Not using review mode}%
|
|
87 |
\fi}{\PackageError{\@classname}{Option review can be either true or
|
|
88 |
false}}
|
|
89 |
\ExecuteOptionsX{review=false}
|
|
90 |
\define@boolkey+{acmart.cls}[@ACM@]{authorversion}[true]{%
|
|
91 |
\if@ACM@authorversion
|
|
92 |
\PackageInfo{\@classname}{Using authorversion mode}%
|
|
93 |
\else
|
|
94 |
\PackageInfo{\@classname}{Not using authorversion mode}%
|
|
95 |
\fi}{\PackageError{\@classname}{Option authorversion can be either true or
|
|
96 |
false}}
|
|
97 |
\ExecuteOptionsX{authorversion=false}
|
|
98 |
\define@boolkey+{acmart.cls}[@ACM@]{natbib}[true]{%
|
|
99 |
\if@ACM@natbib
|
|
100 |
\PackageInfo{\@classname}{Explicitly selecting natbib mode}%
|
|
101 |
\else
|
|
102 |
\PackageInfo{\@classname}{Explicitly deselecting natbib mode}%
|
|
103 |
\fi}{\PackageError{\@classname}{Option natbib can be either true or
|
|
104 |
false}}
|
|
105 |
\ExecuteOptionsX{natbib=true}
|
|
106 |
\define@boolkey+{acmart.cls}[@ACM@]{anonymous}[true]{%
|
|
107 |
\if@ACM@anonymous
|
|
108 |
\PackageInfo{\@classname}{Using anonymous mode}%
|
|
109 |
\else
|
|
110 |
\PackageInfo{\@classname}{Not using anonymous mode}%
|
|
111 |
\fi}{\PackageError{\@classname}{Option anonymous can be either true or
|
|
112 |
false}}
|
|
113 |
\ExecuteOptionsX{anonymous=false}
|
|
114 |
\define@boolkey+{acmart.cls}[@ACM@]{timestamp}[true]{%
|
|
115 |
\if@ACM@timestamp
|
|
116 |
\PackageInfo{\@classname}{Using timestamp mode}%
|
|
117 |
\else
|
|
118 |
\PackageInfo{\@classname}{Not using timestamp mode}%
|
|
119 |
\fi}{\PackageError{\@classname}{Option timestamp can be either true or
|
|
120 |
false}}
|
|
121 |
\ExecuteOptionsX{timestamp=false}
|
|
122 |
\define@boolkey+{acmart.cls}[@ACM@]{authordraft}[true]{%
|
|
123 |
\if@ACM@authordraft
|
|
124 |
\PackageInfo{\@classname}{Using authordraft mode}%
|
|
125 |
\@ACM@timestamptrue
|
|
126 |
\@ACM@reviewtrue
|
|
127 |
\else
|
|
128 |
\PackageInfo{\@classname}{Not using authordraft mode}%
|
|
129 |
\fi}{\PackageError{\@classname}{Option authordraft can be either true or
|
|
130 |
false}}
|
|
131 |
\ExecuteOptionsX{authordraft=false}
|
|
132 |
\def\ACM@fontsize{}
|
|
133 |
\DeclareOptionX{9pt}{\edef\ACM@fontsize{\CurrentOption}}
|
|
134 |
\DeclareOptionX{10pt}{\edef\ACM@fontsize{\CurrentOption}}
|
|
135 |
\DeclareOptionX{11pt}{\edef\ACM@fontsize{\CurrentOption}}
|
|
136 |
\DeclareOptionX{12pt}{\edef\ACM@fontsize{\CurrentOption}}
|
|
137 |
\DeclareOptionX{draft}{\PassOptionsToClass{\CurrentOption}{amsart}}
|
|
138 |
\DeclareOptionX{*}{\PassOptionsToClass{\CurrentOption}{amsart}}
|
|
139 |
\ProcessOptionsX
|
|
140 |
\ClassInfo{\@classname}{Using format \ACM@format, number \ACM@format@nr}
|
|
141 |
\newif\if@ACM@manuscript
|
|
142 |
\newif\if@ACM@journal
|
|
143 |
\newif\if@ACM@sigchiamode
|
|
144 |
\ifnum\ACM@format@nr=5\relax % siggraph
|
|
145 |
\ClassWarning{\@classname}{The format `siggraph' is now obsolete.
|
|
146 |
I am switching to sigconf.}
|
|
147 |
\setkeys{acmart.cls}{format=sigconf}
|
|
148 |
\fi
|
|
149 |
\ifnum\ACM@format@nr=0\relax
|
|
150 |
\@ACM@manuscripttrue
|
|
151 |
\else
|
|
152 |
\@ACM@manuscriptfalse
|
|
153 |
\fi
|
|
154 |
\@ACM@sigchiamodefalse
|
|
155 |
\ifcase\ACM@format@nr
|
|
156 |
\relax % manuscript
|
|
157 |
\@ACM@journaltrue
|
|
158 |
\or % acmsmall
|
|
159 |
\@ACM@journaltrue
|
|
160 |
\or % acmlarge
|
|
161 |
\@ACM@journaltrue
|
|
162 |
\or % acmtog
|
|
163 |
\@ACM@journaltrue
|
|
164 |
\or % sigconf
|
|
165 |
\@ACM@journalfalse
|
|
166 |
\or % siggraph
|
|
167 |
\@ACM@journalfalse
|
|
168 |
\or % sigplan
|
|
169 |
\@ACM@journalfalse
|
|
170 |
\or % sigchi
|
|
171 |
\@ACM@journalfalse
|
|
172 |
\or % sigchi-a
|
|
173 |
\@ACM@journalfalse
|
|
174 |
\@ACM@sigchiamodetrue
|
|
175 |
\fi
|
|
176 |
\ifx\ACM@fontsize\@empty
|
|
177 |
\ifcase\ACM@format@nr
|
|
178 |
\relax % manuscript
|
|
179 |
\def\ACM@fontsize{9pt}%
|
|
180 |
\or % acmsmall
|
|
181 |
\def\ACM@fontsize{10pt}%
|
|
182 |
\or % acmlarge
|
|
183 |
\def\ACM@fontsize{10pt}%
|
|
184 |
\or % acmtog
|
|
185 |
\def\ACM@fontsize{9pt}%
|
|
186 |
\or % sigconf
|
|
187 |
\def\ACM@fontsize{9pt}%
|
|
188 |
\or % siggraph
|
|
189 |
\def\ACM@fontsize{9pt}%
|
|
190 |
\or % sigplan
|
|
191 |
\def\ACM@fontsize{10pt}%
|
|
192 |
\or % sigchi
|
|
193 |
\def\ACM@fontsize{10pt}%
|
|
194 |
\or % sigchi-a
|
|
195 |
\def\ACM@fontsize{10pt}%
|
|
196 |
\fi
|
|
197 |
\fi
|
|
198 |
\ClassInfo{\@classname}{Using fontsize \ACM@fontsize}
|
|
199 |
\LoadClass[\ACM@fontsize, reqno]{amsart}
|
|
200 |
\RequirePackage{microtype}
|
|
201 |
\RequirePackage{etoolbox}
|
|
202 |
\RequirePackage{refcount}
|
|
203 |
\RequirePackage{totpages}
|
|
204 |
\RequirePackage{environ}
|
|
205 |
\if@ACM@manuscript
|
|
206 |
\RequirePackage{setspace}
|
|
207 |
\onehalfspacing
|
|
208 |
\fi
|
|
209 |
\RequirePackage{textcase}
|
|
210 |
\if@ACM@natbib
|
|
211 |
\RequirePackage{natbib}
|
|
212 |
\renewcommand{\bibsection}{%
|
|
213 |
\section*{\refname}%
|
|
214 |
\phantomsection\addcontentsline{toc}{section}{\refname}%
|
|
215 |
}
|
|
216 |
\renewcommand{\bibfont}{\bibliofont}
|
|
217 |
\renewcommand\setcitestyle[1]{
|
|
218 |
\@for\@tempa:=#1\do
|
|
219 |
{\def\@tempb{round}\ifx\@tempa\@tempb
|
|
220 |
\renewcommand\NAT@open{(}\renewcommand\NAT@close{)}\fi
|
|
221 |
\def\@tempb{square}\ifx\@tempa\@tempb
|
|
222 |
\renewcommand\NAT@open{[}\renewcommand\NAT@close{]}\fi
|
|
223 |
\def\@tempb{angle}\ifx\@tempa\@tempb
|
|
224 |
\renewcommand\NAT@open{$<$}\renewcommand\NAT@close{$>$}\fi
|
|
225 |
\def\@tempb{curly}\ifx\@tempa\@tempb
|
|
226 |
\renewcommand\NAT@open{\{}\renewcommand\NAT@close{\}}\fi
|
|
227 |
\def\@tempb{semicolon}\ifx\@tempa\@tempb
|
|
228 |
\renewcommand\NAT@sep{;}\fi
|
|
229 |
\def\@tempb{colon}\ifx\@tempa\@tempb
|
|
230 |
\renewcommand\NAT@sep{;}\fi
|
|
231 |
\def\@tempb{comma}\ifx\@tempa\@tempb
|
|
232 |
\renewcommand\NAT@sep{,}\fi
|
|
233 |
\def\@tempb{authoryear}\ifx\@tempa\@tempb
|
|
234 |
\NAT@numbersfalse\fi
|
|
235 |
\def\@tempb{numbers}\ifx\@tempa\@tempb
|
|
236 |
\NAT@numberstrue\NAT@superfalse\fi
|
|
237 |
\def\@tempb{super}\ifx\@tempa\@tempb
|
|
238 |
\NAT@numberstrue\NAT@supertrue\fi
|
|
239 |
\def\@tempb{nobibstyle}\ifx\@tempa\@tempb
|
|
240 |
\let\bibstyle=\@gobble\fi
|
|
241 |
\def\@tempb{bibstyle}\ifx\@tempa\@tempb
|
|
242 |
\let\bibstyle=\@citestyle\fi
|
|
243 |
\def\@tempb{sort}\ifx\@tempa\@tempb
|
|
244 |
\def\NAT@sort{\@ne}\fi
|
|
245 |
\def\@tempb{nosort}\ifx\@tempa\@tempb
|
|
246 |
\def\NAT@sort{\z@}\fi
|
|
247 |
\def\@tempb{compress}\ifx\@tempa\@tempb
|
|
248 |
\def\NAT@cmprs{\@ne}\fi
|
|
249 |
\def\@tempb{nocompress}\ifx\@tempa\@tempb
|
|
250 |
\def\NAT@cmprs{\@z}\fi
|
|
251 |
\def\@tempb{sort&compress}\ifx\@tempa\@tempb
|
|
252 |
\def\NAT@sort{\@ne}\def\NAT@cmprs{\@ne}\fi
|
|
253 |
\def\@tempb{mcite}\ifx\@tempa\@tempb
|
|
254 |
\let\NAT@merge\@ne\fi
|
|
255 |
\def\@tempb{merge}\ifx\@tempa\@tempb
|
|
256 |
\@ifnum{\NAT@merge<\tw@}{\let\NAT@merge\tw@}{}\fi
|
|
257 |
\def\@tempb{elide}\ifx\@tempa\@tempb
|
|
258 |
\@ifnum{\NAT@merge<\thr@@}{\let\NAT@merge\thr@@}{}\fi
|
|
259 |
\def\@tempb{longnamesfirst}\ifx\@tempa\@tempb
|
|
260 |
\NAT@longnamestrue\fi
|
|
261 |
\def\@tempb{nonamebreak}\ifx\@tempa\@tempb
|
|
262 |
\def\NAT@nmfmt#1{\mbox{\NAT@up#1}}\fi
|
|
263 |
\expandafter\NAT@find@eq\@tempa=\relax\@nil
|
|
264 |
\if\@tempc\relax\else
|
|
265 |
\expandafter\NAT@rem@eq\@tempc
|
|
266 |
\def\@tempb{open}\ifx\@tempa\@tempb
|
|
267 |
\xdef\NAT@open{\@tempc}\fi
|
|
268 |
\def\@tempb{close}\ifx\@tempa\@tempb
|
|
269 |
\xdef\NAT@close{\@tempc}\fi
|
|
270 |
\def\@tempb{aysep}\ifx\@tempa\@tempb
|
|
271 |
\xdef\NAT@aysep{\@tempc}\fi
|
|
272 |
\def\@tempb{yysep}\ifx\@tempa\@tempb
|
|
273 |
\xdef\NAT@yrsep{\@tempc}\fi
|
|
274 |
\def\@tempb{notesep}\ifx\@tempa\@tempb
|
|
275 |
\xdef\NAT@cmt{\@tempc}\fi
|
|
276 |
\def\@tempb{citesep}\ifx\@tempa\@tempb
|
|
277 |
\xdef\NAT@sep{\@tempc}\fi
|
|
278 |
\fi
|
|
279 |
}%
|
|
280 |
\NAT@@setcites
|
|
281 |
}
|
|
282 |
\renewcommand\citestyle[1]{%
|
|
283 |
\ifcsname bibstyle@#1\endcsname%
|
|
284 |
\csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
|
|
285 |
\else%
|
|
286 |
\@latex@error{Undefined `#1' citestyle}%
|
|
287 |
\fi
|
|
288 |
}%
|
|
289 |
\fi
|
|
290 |
\newcommand{\bibstyle@acmauthoryear}{%
|
|
291 |
\setcitestyle{%
|
|
292 |
authoryear,%
|
|
293 |
open={[},close={]},citesep={;},%
|
|
294 |
aysep={},yysep={,},%
|
|
295 |
notesep={, }}}
|
|
296 |
\newcommand{\bibstyle@acmnumeric}{%
|
|
297 |
\setcitestyle{%
|
|
298 |
numbers,sort&compress,%
|
|
299 |
open={[},close={]},citesep={,},%
|
|
300 |
notesep={, }}}
|
|
301 |
\if@ACM@natbib
|
|
302 |
\citestyle{acmnumeric}
|
|
303 |
\fi
|
|
304 |
\def\@startsection#1#2#3#4#5#6{%
|
|
305 |
\if@noskipsec \leavevmode \fi
|
|
306 |
\par
|
|
307 |
\@tempskipa #4\relax
|
|
308 |
\@afterindenttrue
|
|
309 |
\ifdim \@tempskipa <\z@
|
|
310 |
\@tempskipa -\@tempskipa \@afterindentfalse
|
|
311 |
\fi
|
|
312 |
\if@nobreak
|
|
313 |
\everypar{}%
|
|
314 |
\else
|
|
315 |
\addpenalty\@secpenalty\addvspace\@tempskipa
|
|
316 |
\fi
|
|
317 |
\@ifstar
|
|
318 |
{\@ssect{#3}{#4}{#5}{#6}}%
|
|
319 |
{\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
|
|
320 |
\def\@sect#1#2#3#4#5#6[#7]#8{%
|
|
321 |
\edef\@toclevel{\ifnum#2=\@m 0\else\number#2\fi}%
|
|
322 |
\ifnum #2>\c@secnumdepth
|
|
323 |
\let\@svsec\@empty
|
|
324 |
\else
|
|
325 |
\refstepcounter{#1}%
|
|
326 |
\protected@edef\@svsec{\@seccntformat{#1}\relax}%
|
|
327 |
\fi
|
|
328 |
\@tempskipa #5\relax
|
|
329 |
\ifdim \@tempskipa>\z@
|
|
330 |
\begingroup
|
|
331 |
#6{%
|
|
332 |
\@hangfrom{\hskip #3\relax\@svsec}%
|
|
333 |
\interlinepenalty \@M #8\@@par}%
|
|
334 |
\endgroup
|
|
335 |
\csname #1mark\endcsname{#7}%
|
|
336 |
\ifnum #2>\c@secnumdepth \else
|
|
337 |
\@tochangmeasure{\csname the#1\endcsname}%
|
|
338 |
\fi
|
|
339 |
\addcontentsline{toc}{#1}{%
|
|
340 |
\ifnum #2>\c@secnumdepth \else
|
|
341 |
\protect\numberline{\csname the#1\endcsname}%
|
|
342 |
\fi
|
|
343 |
#7}%
|
|
344 |
\else
|
|
345 |
\def\@svsechd{%
|
|
346 |
#6{\hskip #3\relax
|
|
347 |
\@svsec #8}%
|
|
348 |
\csname #1mark\endcsname{#7}%
|
|
349 |
\ifnum #2>\c@secnumdepth \else
|
|
350 |
\@tochangmeasure{\csname the#1\endcsname\space}%
|
|
351 |
\fi
|
|
352 |
\addcontentsline{toc}{#1}{%
|
|
353 |
\ifnum #2>\c@secnumdepth \else
|
|
354 |
\protect\numberline{\csname the#1\endcsname}%
|
|
355 |
\fi
|
|
356 |
#7}}%
|
|
357 |
\fi
|
|
358 |
\@xsect{#5}}
|
|
359 |
\def\@xsect#1{%
|
|
360 |
\@tempskipa #1\relax
|
|
361 |
\ifdim \@tempskipa>\z@
|
|
362 |
\par \nobreak
|
|
363 |
\vskip \@tempskipa
|
|
364 |
\@afterheading
|
|
365 |
\else
|
|
366 |
\@nobreakfalse
|
|
367 |
\global\@noskipsectrue
|
|
368 |
\everypar{%
|
|
369 |
\if@noskipsec
|
|
370 |
\global\@noskipsecfalse
|
|
371 |
{\setbox\z@\lastbox}%
|
|
372 |
\clubpenalty\@M
|
|
373 |
\begingroup \@svsechd \endgroup
|
|
374 |
\unskip
|
|
375 |
\@tempskipa #1\relax
|
|
376 |
\hskip -\@tempskipa
|
|
377 |
\else
|
|
378 |
\clubpenalty \@clubpenalty
|
|
379 |
\everypar{}%
|
|
380 |
\fi}%
|
|
381 |
\fi
|
|
382 |
\ignorespaces}
|
|
383 |
\def\@seccntformat#1{\csname the#1\endcsname\quad}
|
|
384 |
\def\@ssect#1#2#3#4#5{%
|
|
385 |
\@tempskipa #3\relax
|
|
386 |
\ifdim \@tempskipa>\z@
|
|
387 |
\begingroup
|
|
388 |
#4{%
|
|
389 |
\@hangfrom{\hskip #1}%
|
|
390 |
\interlinepenalty \@M #5\@@par}%
|
|
391 |
\endgroup
|
|
392 |
\else
|
|
393 |
\def\@svsechd{#4{\hskip #1\relax #5}}%
|
|
394 |
\fi
|
|
395 |
\@xsect{#3}}
|
|
396 |
\def\@starttoc#1#2{\begingroup\makeatletter
|
|
397 |
\setTrue{#1}%
|
|
398 |
\par\removelastskip\vskip\z@skip
|
|
399 |
\@startsection{section}\@M\z@{\linespacing\@plus\linespacing}%
|
|
400 |
{.5\linespacing}{\centering\contentsnamefont}{#2}%
|
|
401 |
\@input{\jobname.#1}%
|
|
402 |
\if@filesw
|
|
403 |
\@xp\newwrite\csname tf@#1\endcsname
|
|
404 |
\immediate\@xp\openout\csname tf@#1\endcsname \jobname.#1\relax
|
|
405 |
\fi
|
|
406 |
\global\@nobreakfalse \endgroup
|
|
407 |
\addvspace{32\p@\@plus14\p@}%
|
|
408 |
}
|
|
409 |
\def\l@section{\@tocline{1}{0pt}{1pc}{2pc}{}}
|
|
410 |
\def\l@subsection{\@tocline{2}{0pt}{1pc}{3pc}{}}
|
|
411 |
\def\l@subsubsection{\@tocline{2}{0pt}{1pc}{5pc}{}}
|
|
412 |
\let\@footnotemark@nolink\@footnotemark
|
|
413 |
\let\@footnotetext@nolink\@footnotetext
|
|
414 |
\RequirePackage[bookmarksnumbered,unicode]{hyperref}
|
|
415 |
\pdfstringdefDisableCommands{%
|
|
416 |
\def\unskip{}%
|
|
417 |
\def\textbullet{- }%
|
|
418 |
\def\textrightarrow{ -> }%
|
|
419 |
\def\footnotemark{}%
|
|
420 |
}
|
|
421 |
\urlstyle{rm}
|
|
422 |
\ifcase\ACM@format@nr
|
|
423 |
\relax % manuscript
|
|
424 |
\or % acmsmall
|
|
425 |
\or % acmlarge
|
|
426 |
\or % acmtog
|
|
427 |
\or % sigconf
|
|
428 |
\or % siggraph
|
|
429 |
\or % sigplan
|
|
430 |
\urlstyle{sf}
|
|
431 |
\or % sigchi
|
|
432 |
\or % sigchi-a
|
|
433 |
\urlstyle{sf}
|
|
434 |
\fi
|
|
435 |
\AtEndPreamble{%
|
|
436 |
\if@ACM@screen
|
|
437 |
\hypersetup{colorlinks,
|
|
438 |
linkcolor=ACMRed,
|
|
439 |
citecolor=ACMPurple,
|
|
440 |
urlcolor=ACMDarkBlue,
|
|
441 |
filecolor=ACMDarkBlue}
|
|
442 |
\else
|
|
443 |
\hypersetup{hidelinks}
|
|
444 |
\fi}
|
|
445 |
\if@ACM@natbib
|
|
446 |
\let\citeN\cite
|
|
447 |
\let\cite\citep
|
|
448 |
\let\citeANP\citeauthor
|
|
449 |
\let\citeNN\citeyearpar
|
|
450 |
\let\citeyearNP\citeyear
|
|
451 |
\let\citeyear\citeyearpar
|
|
452 |
\let\citeNP\citealt
|
|
453 |
\DeclareRobustCommand\citeA
|
|
454 |
{\begingroup\NAT@swafalse
|
|
455 |
\let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
|
|
456 |
\providecommand\newblock{}%
|
|
457 |
\else
|
|
458 |
\AtBeginDocument{%
|
|
459 |
\let\shortcite\cite%
|
|
460 |
\providecommand\citename[1]{#1}}
|
|
461 |
\fi
|
|
462 |
\newcommand\shortcite[2][]{%
|
|
463 |
\ifNAT@numbers\cite[#1]{#2}\else\citeyear[#1]{#2}\fi}
|
|
464 |
\def\bibliographystyle#1{%
|
|
465 |
\ifx\@begindocumenthook\@undefined\else
|
|
466 |
\expandafter\AtBeginDocument
|
|
467 |
\fi
|
|
468 |
{\if@filesw
|
|
469 |
\immediate\write\@auxout{\string\bibstyle{#1}}%
|
|
470 |
\fi}}
|
|
471 |
\RequirePackage{graphicx, xcolor}
|
|
472 |
\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
|
|
473 |
\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
|
|
474 |
\definecolor[named]{ACMOrange}{cmyk}{0,0.42,1,0.01}
|
|
475 |
\definecolor[named]{ACMRed}{cmyk}{0,0.90,0.86,0}
|
|
476 |
\definecolor[named]{ACMLightBlue}{cmyk}{0.49,0.01,0,0}
|
|
477 |
\definecolor[named]{ACMGreen}{cmyk}{0.20,0,1,0.19}
|
|
478 |
\definecolor[named]{ACMPurple}{cmyk}{0.55,1,0,0.15}
|
|
479 |
\definecolor[named]{ACMDarkBlue}{cmyk}{1,0.58,0,0.21}
|
|
480 |
\if@ACM@authordraft
|
|
481 |
\RequirePackage{draftwatermark}
|
|
482 |
\SetWatermarkFontSize{0.5in}
|
|
483 |
\SetWatermarkColor[gray]{.9}
|
|
484 |
\SetWatermarkText{\parbox{12em}{\centering
|
|
485 |
Unpublished working draft\\
|
|
486 |
Not for distribution}}
|
|
487 |
\fi
|
|
488 |
\RequirePackage{geometry}
|
|
489 |
\ifcase\ACM@format@nr
|
|
490 |
\relax % manuscript
|
|
491 |
\geometry{letterpaper,head=13pt,
|
|
492 |
marginparwidth=6pc,heightrounded}%
|
|
493 |
\or % acmsmall
|
|
494 |
\geometry{twoside=true,
|
|
495 |
includeheadfoot, head=13pt, foot=2pc,
|
|
496 |
paperwidth=6.75in, paperheight=10in,
|
|
497 |
top=58pt, bottom=44pt, inner=46pt, outer=46pt,
|
|
498 |
marginparwidth=2pc,heightrounded
|
|
499 |
}%
|
|
500 |
\or % acmlarge
|
|
501 |
\geometry{twoside=true, head=13pt, foot=2pc,
|
|
502 |
paperwidth=8.5in, paperheight=11in,
|
|
503 |
includeheadfoot,
|
|
504 |
top=78pt, bottom=114pt, inner=81pt, outer=81pt,
|
|
505 |
marginparwidth=4pc,heightrounded
|
|
506 |
}%
|
|
507 |
\or % acmtog
|
|
508 |
\geometry{twoside=true, head=13pt, foot=2pc,
|
|
509 |
paperwidth=8.5in, paperheight=11in,
|
|
510 |
includeheadfoot, columnsep=24pt,
|
|
511 |
top=52pt, bottom=75pt, inner=52pt, outer=52pt,
|
|
512 |
marginparwidth=2pc,heightrounded
|
|
513 |
}%
|
|
514 |
\or % sigconf
|
|
515 |
\geometry{twoside=true, head=13pt,
|
|
516 |
paperwidth=8.5in, paperheight=11in,
|
|
517 |
includeheadfoot, columnsep=2pc,
|
|
518 |
top=57pt, bottom=73pt, inner=54pt, outer=54pt,
|
|
519 |
marginparwidth=2pc,heightrounded
|
|
520 |
}%
|
|
521 |
\or % siggraph
|
|
522 |
\geometry{twoside=true, head=13pt,
|
|
523 |
paperwidth=8.5in, paperheight=11in,
|
|
524 |
includeheadfoot, columnsep=2pc,
|
|
525 |
top=57pt, bottom=73pt, inner=54pt, outer=54pt,
|
|
526 |
marginparwidth=2pc,heightrounded
|
|
527 |
}%
|
|
528 |
\or % sigplan
|
|
529 |
\geometry{twoside=true, head=13pt,
|
|
530 |
paperwidth=8.5in, paperheight=11in,
|
|
531 |
includeheadfoot=false, columnsep=2pc,
|
|
532 |
top=1in, bottom=1in, inner=0.75in, outer=0.75in,
|
|
533 |
marginparwidth=2pc,heightrounded
|
|
534 |
}%
|
|
535 |
\or % sigchi
|
|
536 |
\geometry{twoside=true, head=13pt,
|
|
537 |
paperwidth=8.5in, paperheight=11in,
|
|
538 |
includeheadfoot, columnsep=2pc,
|
|
539 |
top=66pt, bottom=73pt, inner=54pt, outer=54pt,
|
|
540 |
marginparwidth=2pc,heightrounded
|
|
541 |
}%
|
|
542 |
\or % sigchi-a
|
|
543 |
\geometry{twoside=false, head=13pt,
|
|
544 |
paperwidth=11in, paperheight=8.5in,
|
|
545 |
includeheadfoot, marginparsep=72pt,
|
|
546 |
marginparwidth=170pt, columnsep=20pt,
|
|
547 |
top=72pt, bottom=72pt, left=314pt, right=72pt
|
|
548 |
}%
|
|
549 |
\@mparswitchfalse
|
|
550 |
\reversemarginpar
|
|
551 |
\fi
|
|
552 |
\setlength\parindent{10\p@}
|
|
553 |
\setlength\parskip{\z@}
|
|
554 |
\ifcase\ACM@format@nr
|
|
555 |
\relax % manuscript
|
|
556 |
\or % acmsmall
|
|
557 |
\or % acmlarge
|
|
558 |
\or % acmtog
|
|
559 |
\setlength\parindent{9\p@}%
|
|
560 |
\or % sigconf
|
|
561 |
\or % siggraph
|
|
562 |
\or % sigplan
|
|
563 |
\or % sigchi
|
|
564 |
\or % sigchi-a
|
|
565 |
\fi
|
|
566 |
\setlength\normalparindent{\parindent}
|
|
567 |
\def\copyrightpermissionfootnoterule{\kern-3\p@
|
|
568 |
\hrule \@width \columnwidth \kern 2.6\p@}
|
|
569 |
\RequirePackage{manyfoot}
|
|
570 |
\SelectFootnoteRule[2]{copyrightpermission}
|
|
571 |
\DeclareNewFootnote{authorsaddresses}
|
|
572 |
\SelectFootnoteRule[2]{copyrightpermission}
|
|
573 |
\DeclareNewFootnote{copyrightpermission}
|
|
574 |
\def\footnoterule{\kern-3\p@
|
|
575 |
\hrule \@width 4pc \kern 2.6\p@}
|
|
576 |
\def\endminipage{%
|
|
577 |
\par
|
|
578 |
\unskip
|
|
579 |
\ifvoid\@mpfootins\else
|
|
580 |
\vskip\skip\@mpfootins
|
|
581 |
\normalcolor
|
|
582 |
\unvbox\@mpfootins
|
|
583 |
\fi
|
|
584 |
\@minipagefalse %% added 24 May 89
|
|
585 |
\color@endgroup
|
|
586 |
\egroup
|
|
587 |
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
|
|
588 |
\def\@makefntext{\noindent\@makefnmark}
|
|
589 |
\if@ACM@sigchiamode
|
|
590 |
\long\def\@footnotetext#1{\marginpar{%
|
|
591 |
\reset@font\small
|
|
592 |
\interlinepenalty\interfootnotelinepenalty
|
|
593 |
\protected@edef\@currentlabel{%
|
|
594 |
\csname p@footnote\endcsname\@thefnmark
|
|
595 |
}%
|
|
596 |
\color@begingroup
|
|
597 |
\@makefntext{%
|
|
598 |
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
|
|
599 |
\color@endgroup}}%
|
|
600 |
\fi
|
|
601 |
\long\def\@mpfootnotetext#1{%
|
|
602 |
\global\setbox\@mpfootins\vbox{%
|
|
603 |
\unvbox\@mpfootins
|
|
604 |
\reset@font\footnotesize
|
|
605 |
\hsize\columnwidth
|
|
606 |
\@parboxrestore
|
|
607 |
\protected@edef\@currentlabel
|
|
608 |
{\csname p@mpfootnote\endcsname\@thefnmark}%
|
|
609 |
\color@begingroup\centering
|
|
610 |
\@makefntext{%
|
|
611 |
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
|
|
612 |
\color@endgroup}}
|
|
613 |
\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
|
|
614 |
\def\@textbottom{\vskip \z@ \@plus 1pt}
|
|
615 |
\let\@texttop\relax
|
|
616 |
\RequirePackage{iftex}
|
|
617 |
\ifPDFTeX
|
|
618 |
\input{glyphtounicode}
|
|
619 |
\pdfglyphtounicode{f_f}{FB00}
|
|
620 |
\pdfglyphtounicode{f_f_i}{FB03}
|
|
621 |
\pdfglyphtounicode{f_f_l}{FB04}
|
|
622 |
\pdfglyphtounicode{f_i}{FB01}
|
|
623 |
\pdfglyphtounicode{t_t}{00740074}
|
|
624 |
\pdfglyphtounicode{f_t}{00660074}
|
|
625 |
\pdfglyphtounicode{T_h}{00540068}
|
|
626 |
\pdfgentounicode=1
|
|
627 |
\fi
|
|
628 |
\RequirePackage{cmap}
|
|
629 |
\newif\if@ACM@newfonts
|
|
630 |
\@ACM@newfontstrue
|
|
631 |
\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
|
|
632 |
have libertine package installed. Please upgrade your
|
|
633 |
TeX}\@ACM@newfontsfalse}
|
|
634 |
\IfFileExists{zi4.sty}{}{\ClassWarning{\@classname}{You do not
|
|
635 |
have zi4 package installed. Please upgrade your TeX}\@ACM@newfontsfalse}
|
|
636 |
\IfFileExists{newtxmath.sty}{}{\ClassWarning{\@classname}{You do not
|
|
637 |
have newtxmath package installed. Please upgrade your
|
|
638 |
TeX}\@ACM@newfontsfalse}
|
|
639 |
\if@ACM@newfonts
|
|
640 |
\RequirePackage[tt=false, type1=true]{libertine}
|
|
641 |
\RequirePackage[varqu]{zi4}
|
|
642 |
\RequirePackage[libertine]{newtxmath}
|
|
643 |
\RequirePackage[T1]{fontenc}
|
|
644 |
\fi
|
|
645 |
\let\liningnums\@undefined
|
|
646 |
\AtEndPreamble{%
|
|
647 |
\DeclareTextFontCommand{\liningnums}{\libertineLF}}
|
|
648 |
\if@ACM@sigchiamode
|
|
649 |
\renewcommand{\familydefault}{\sfdefault}
|
|
650 |
\fi
|
|
651 |
\RequirePackage{caption, float}
|
|
652 |
\captionsetup[table]{position=top}
|
|
653 |
\if@ACM@journal
|
|
654 |
\captionsetup{labelfont={sf, small},
|
|
655 |
textfont={sf, small}, margin=\z@}
|
|
656 |
\captionsetup[figure]{name={Fig.}}
|
|
657 |
\else
|
|
658 |
\captionsetup{labelfont={bf},
|
|
659 |
textfont={bf}, labelsep=colon, margin=\z@}
|
|
660 |
\ifcase\ACM@format@nr
|
|
661 |
\relax % manuscript
|
|
662 |
\or % acmsmall
|
|
663 |
\or % acmlarge
|
|
664 |
\or % acmtog
|
|
665 |
\or % sigconf
|
|
666 |
\or % siggraph
|
|
667 |
\captionsetup{textfont={it}}
|
|
668 |
\or % sigplan
|
|
669 |
\captionsetup{labelfont={bf},
|
|
670 |
textfont={normalfont}, labelsep=period, margin=\z@}
|
|
671 |
\or % sigchi
|
|
672 |
\captionsetup[figure]{labelfont={bf, small},
|
|
673 |
textfont={bf, small}}
|
|
674 |
\or % sigchi-a
|
|
675 |
\captionsetup[figure]{labelfont={bf, small},
|
|
676 |
textfont={bf, small}}
|
|
677 |
\fi
|
|
678 |
\fi
|
|
679 |
\newfloat{sidebar}{}{sbar}
|
|
680 |
\floatname{sidebar}{Sidebar}
|
|
681 |
\renewenvironment{sidebar}{\Collect@Body\@sidebar}{}
|
|
682 |
\long\def\@sidebar#1{\bgroup\captionsetup{type=sidebar}%
|
|
683 |
\marginpar{\small#1}\egroup}
|
|
684 |
\newenvironment{marginfigure}{\Collect@Body\@marginfigure}{}
|
|
685 |
\long\def\@marginfigure#1{\bgroup\captionsetup{type=figure}%
|
|
686 |
\marginpar{\centering\small#1}\egroup}
|
|
687 |
\newenvironment{margintable}{\Collect@Body\@margintable}{}
|
|
688 |
\long\def\@margintable#1{\bgroup\captionsetup{type=table}%
|
|
689 |
\marginpar{\centering\small#1}\egroup}
|
|
690 |
\newdimen\fulltextwidth
|
|
691 |
\fulltextwidth=\dimexpr(\textwidth+\marginparwidth+\marginparsep)
|
|
692 |
\if@ACM@sigchiamode
|
|
693 |
\def\@dblfloat{\bgroup\columnwidth=\fulltextwidth
|
|
694 |
\let\@endfloatbox\@endwidefloatbox
|
|
695 |
\def\@fpsadddefault{\def\@fps{tp}}%
|
|
696 |
\@float}
|
|
697 |
\fi
|
|
698 |
\if@ACM@sigchiamode
|
|
699 |
\def\end@dblfloat{%
|
|
700 |
\end@float\egroup}
|
|
701 |
\fi
|
|
702 |
\def\@endwidefloatbox{%
|
|
703 |
\par\vskip\z@skip
|
|
704 |
\@minipagefalse
|
|
705 |
\outer@nobreak
|
|
706 |
\egroup
|
|
707 |
\color@endbox
|
|
708 |
\global\setbox\@currbox=\vbox{\moveleft
|
|
709 |
\dimexpr(\fulltextwidth-\textwidth)\box\@currbox}%
|
|
710 |
\wd\@currbox=\textwidth
|
|
711 |
}
|
|
712 |
\ifcase\ACM@format@nr
|
|
713 |
\relax % manuscript
|
|
714 |
\or % acmsmall
|
|
715 |
\or % acmlarge
|
|
716 |
\or % acmtog
|
|
717 |
\or % sigconf
|
|
718 |
\or % siggraph
|
|
719 |
\or % sigplan
|
|
720 |
\def\labelenumi{\theenumi.}
|
|
721 |
\def\labelenumii{\theenumii.}
|
|
722 |
\def\labelenumiii{\theenumiii.}
|
|
723 |
\def\labelenumiv{\theenumiv.}
|
|
724 |
\or % sigchi
|
|
725 |
\or % sigchi-a
|
|
726 |
\fi
|
|
727 |
\newdimen\@ACM@labelwidth
|
|
728 |
\AtBeginDocument{%
|
|
729 |
\setlength\labelsep{4pt}
|
|
730 |
\setlength{\@ACM@labelwidth}{6.5pt}
|
|
731 |
|
|
732 |
%% First-level list: when beginning after the first line of an
|
|
733 |
%% indented paragraph or ending before an indented paragraph, labels
|
|
734 |
%% should not hang to the left of the preceding/following text.
|
|
735 |
\setlength\leftmargini{\z@}
|
|
736 |
\addtolength\leftmargini{\parindent}
|
|
737 |
\addtolength\leftmargini{2\labelsep}
|
|
738 |
\addtolength\leftmargini{\@ACM@labelwidth}
|
|
739 |
|
|
740 |
%% Second-level and higher lists.
|
|
741 |
\setlength\leftmarginii{\z@}
|
|
742 |
\addtolength\leftmarginii{0.5\labelsep}
|
|
743 |
\addtolength\leftmarginii{\@ACM@labelwidth}
|
|
744 |
\setlength\leftmarginiii{\leftmarginii}
|
|
745 |
\setlength\leftmarginiv{\leftmarginiii}
|
|
746 |
\setlength\leftmarginv{\leftmarginiv}
|
|
747 |
\setlength\leftmarginvi{\leftmarginv}
|
|
748 |
\@listi}
|
|
749 |
\newskip\listisep
|
|
750 |
\listisep\smallskipamount
|
|
751 |
\def\@listI{\leftmargin\leftmargini
|
|
752 |
\labelwidth\leftmargini \advance\labelwidth-\labelsep
|
|
753 |
\listparindent\z@
|
|
754 |
\topsep\listisep}
|
|
755 |
\let\@listi\@listI
|
|
756 |
\def\@listii{\leftmargin\leftmarginii
|
|
757 |
\labelwidth\leftmarginii \advance\labelwidth-\labelsep
|
|
758 |
\topsep\z@skip}
|
|
759 |
\def\@listiii{\leftmargin\leftmarginiii
|
|
760 |
\labelwidth\leftmarginiii \advance\labelwidth-\labelsep}
|
|
761 |
\def\@listiv{\leftmargin\leftmarginiv
|
|
762 |
\labelwidth\leftmarginiv \advance\labelwidth-\labelsep}
|
|
763 |
\def\@listv{\leftmargin\leftmarginv
|
|
764 |
\labelwidth\leftmarginv \advance\labelwidth-\labelsep}
|
|
765 |
\def\@listvi{\leftmargin\leftmarginvi
|
|
766 |
\labelwidth\leftmarginvi \advance\labelwidth-\labelsep}
|
|
767 |
\renewcommand{\descriptionlabel}[1]{\upshape\bfseries #1}
|
|
768 |
\renewenvironment{description}{\list{}{%
|
|
769 |
\labelwidth\@ACM@labelwidth
|
|
770 |
\let\makelabel\descriptionlabel}%
|
|
771 |
}{
|
|
772 |
\endlist
|
|
773 |
}
|
|
774 |
\let\enddescription=\endlist % for efficiency
|
|
775 |
\define@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
|
|
776 |
CIE,%
|
|
777 |
CSUR,%
|
|
778 |
IMWUT,%
|
|
779 |
JACM,%
|
|
780 |
JDIQ,%
|
|
781 |
JEA,%
|
|
782 |
JERIC,%
|
|
783 |
JETC,%
|
|
784 |
JOCCH,%
|
|
785 |
PACMHCI,%
|
|
786 |
PACMPL,%
|
|
787 |
POMACS,%
|
|
788 |
TAAS,%
|
|
789 |
TACCESS,%
|
|
790 |
TACO,%
|
|
791 |
TALG,%
|
|
792 |
TALLIP,%
|
|
793 |
TAP,%
|
|
794 |
TCPS,%
|
|
795 |
TEAC,%
|
|
796 |
TECS,%
|
|
797 |
THRI,%
|
|
798 |
TIIS,%
|
|
799 |
TISSEC,%
|
|
800 |
TIST,%
|
|
801 |
TKDD,%
|
|
802 |
TMIS,%
|
|
803 |
TOCE,%
|
|
804 |
TOCHI,%
|
|
805 |
TOCL,%
|
|
806 |
TOCS,%
|
|
807 |
TOCT,%
|
|
808 |
TODAES,%
|
|
809 |
TODS,%
|
|
810 |
TOG,%
|
|
811 |
TOIS,%
|
|
812 |
TOIT,%
|
|
813 |
TOMACS,%
|
|
814 |
TOMM,%
|
|
815 |
TOMPECS,%
|
|
816 |
TOMS,%
|
|
817 |
TOPC,%
|
|
818 |
TOPS,%
|
|
819 |
TOPLAS,%
|
|
820 |
TOS,%
|
|
821 |
TOSEM,%
|
|
822 |
TOSN,%
|
|
823 |
TRETS,%
|
|
824 |
TSAS,%
|
|
825 |
TSC,%
|
|
826 |
TSLP,%
|
|
827 |
TWEB%
|
|
828 |
}{%
|
|
829 |
\ifcase\@journalCode@nr
|
|
830 |
\relax % CIE
|
|
831 |
\def\@journalName{ACM Computers in Entertainment}%
|
|
832 |
\def\@journalNameShort{ACM Comput. Entertain.}%
|
|
833 |
\def\@permissionCodeOne{1544-3574}%
|
|
834 |
\or % CSUR
|
|
835 |
\def\@journalName{ACM Computing Surveys}%
|
|
836 |
\def\@journalNameShort{ACM Comput. Surv.}%
|
|
837 |
\def\@permissionCodeOne{0360-0300}%
|
|
838 |
\or % IMWUT
|
|
839 |
\def\@journalName{Proceedings of the ACM on Interactive, Mobile,
|
|
840 |
Wearable and Ubiquitous Technologies}%
|
|
841 |
\def\@journalNameShort{Proc. ACM Interact. Mob. Wearable Ubiquitous Technol.}%
|
|
842 |
\def\@permissionCodeOne{2474-9567}%
|
|
843 |
\@ACM@screentrue
|
|
844 |
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
|
|
845 |
\or % JACM
|
|
846 |
\def\@journalName{Journal of the ACM}%
|
|
847 |
\def\@journalNameShort{J. ACM}%
|
|
848 |
\def\@permissionCodeOne{0004-5411}%
|
|
849 |
\or % JDIQ
|
|
850 |
\def\@journalName{ACM Journal of Data and Information Quality}%
|
|
851 |
\def\@journalNameShort{ACM J. Data Inform. Quality}%
|
|
852 |
\def\@permissionCodeOne{1936-1955}%
|
|
853 |
\or % JEA
|
|
854 |
\def\@journalName{ACM Journal of Experimental Algorithmics}%
|
|
855 |
\def\@journalNameShort{ACM J. Exp. Algor.}%
|
|
856 |
\def\@permissionCodeOne{1084-6654}%
|
|
857 |
\or % JERIC
|
|
858 |
\def\@journalName{ACM Journal of Educational Resources in Computing}%
|
|
859 |
\def\@journalNameShort{ACM J. Edu. Resources in Comput.}%
|
|
860 |
\def\@permissionCodeOne{1073-0516}%
|
|
861 |
\or % JETC
|
|
862 |
\def\@journalName{ACM Journal on Emerging Technologies in Computing Systems}%
|
|
863 |
\def\@journalNameShort{ACM J. Emerg. Technol. Comput. Syst.}%
|
|
864 |
\def\@permissionCodeOne{1550-4832}%
|
|
865 |
\or % JOCCH
|
|
866 |
\def\@journalName{ACM Journal on Computing and Cultural Heritage}%
|
|
867 |
\def\@journalName{ACM J. Comput. Cult. Herit.}%
|
|
868 |
\or % PACMHCI
|
|
869 |
\def\@journalName{Proceedings of the ACM on Human-Computer Interaction}%
|
|
870 |
\def\@journalName{Proc. ACM Hum.-Comput. Interact.}%
|
|
871 |
\def\@permissionCodeOne{2573-0142}%
|
|
872 |
\@ACM@screentrue
|
|
873 |
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
|
|
874 |
\or % PACMPL
|
|
875 |
\def\@journalName{Proceedings of the ACM on Programming Languages}%
|
|
876 |
\def\@journalName{Proc. ACM Program. Lang.}%
|
|
877 |
\def\@permissionCodeOne{2475-1421}%
|
|
878 |
\@ACM@screentrue
|
|
879 |
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
|
|
880 |
\or % POMACS
|
|
881 |
\def\@journalName{Proceedings of the ACM on Measurement and Analysis of Computing Systems}%
|
|
882 |
\def\@journalName{Proc. ACM Meas. Anal. Comput. Syst.}%
|
|
883 |
\def\@permissionCodeOne{2476-1249}%
|
|
884 |
\@ACM@screentrue
|
|
885 |
\PackageInfo{\@classname}{Using screen mode due to \@journalCode}%
|
|
886 |
\or % TAAS
|
|
887 |
\def\@journalName{ACM Transactions on Autonomous and Adaptive Systems}%
|
|
888 |
\def\@journalNameShort{ACM Trans. Autonom. Adapt. Syst.}%
|
|
889 |
\def\@permissionCodeOne{1556-4665}%
|
|
890 |
\or % TACCESS
|
|
891 |
\def\@journalName{ACM Transactions on Accessible Computing}%
|
|
892 |
\def\@journalNameShort{ACM Trans. Access. Comput.}%
|
|
893 |
\def\@permissionCodeOne{1936-7228}%
|
|
894 |
\or % TACO
|
|
895 |
\def\@journalName{ACM Transactions on Architecture and Code Optimization}%
|
|
896 |
\or % TALG
|
|
897 |
\def\@journalName{ACM Transactions on Algorithms}%
|
|
898 |
\def\@journalNameShort{ACM Trans. Algor.}%
|
|
899 |
\def\@permissionCodeOne{1549-6325}%
|
|
900 |
\or % TALLIP
|
|
901 |
\def\@journalName{ACM Transactions on Asian and Low-Resource Language Information Processing}%
|
|
902 |
\def\@journalNameShort{ACM Trans. Asian Low-Resour. Lang. Inf. Process.}%
|
|
903 |
\def\@permissionCodeOne{2375-4699}%
|
|
904 |
\or % TAP
|
|
905 |
\def\@journalName{ACM Transactions on Applied Perception}%
|
|
906 |
\or % TCPS
|
|
907 |
\def\@journalName{ACM Transactions on Cyber-Physical Systems}%
|
|
908 |
\or % TEAC
|
|
909 |
\def\@journalName{ACM Transactions on Economics and Computation}%
|
|
910 |
\or % TECS
|
|
911 |
\def\@journalName{ACM Transactions on Embedded Computing Systems}%
|
|
912 |
\def\@journalNameShort{ACM Trans. Embedd. Comput. Syst.}%
|
|
913 |
\def\@permissionCodeOne{1539-9087}%
|
|
914 |
\or % THRI
|
|
915 |
\def\@journalName{ACM Transactions on Human-Robot Interaction}%
|
|
916 |
\def\@journalNameShort{ACM Trans. Hum.-Robot Interact.}%
|
|
917 |
\def\@permissionCodeOne{2573-9522}%
|
|
918 |
\or % TIIS
|
|
919 |
\def\@journalName{ACM Transactions on Interactive Intelligent Systems}%
|
|
920 |
\def\@journalNameShort{ACM Trans. Interact. Intell. Syst.}%
|
|
921 |
\def\@permissionCodeOne{2160-6455}%
|
|
922 |
\or % TISSEC
|
|
923 |
\def\@journalName{ACM Transactions on Information and System Security}%
|
|
924 |
\def\@journalNameShort{ACM Trans. Info. Syst. Sec.}%
|
|
925 |
\def\@permissionCodeOne{1094-9224}%
|
|
926 |
\or % TIST
|
|
927 |
\def\@journalName{ACM Transactions on Intelligent Systems and Technology}%
|
|
928 |
\def\@journalNameShort{ACM Trans. Intell. Syst. Technol.}%
|
|
929 |
\def\@permissionCodeOne{2157-6904}%
|
|
930 |
\or % TKDD
|
|
931 |
\def\@journalName{ACM Transactions on Knowledge Discovery from Data}%
|
|
932 |
\def\@journalNameShort{ACM Trans. Knowl. Discov. Data.}%
|
|
933 |
\def\@permissionCodeOne{1556-4681}%
|
|
934 |
\or % TMIS
|
|
935 |
\def\@journalName{ACM Transactions on Management Information Systems}%
|
|
936 |
\def\@journalNameShort{ACM Trans. Manag. Inform. Syst.}%
|
|
937 |
\def\@permissionCodeOne{2158-656X}%
|
|
938 |
\or % TOCE
|
|
939 |
\def\@journalName{ACM Transactions on Computing Education}%
|
|
940 |
\def\@journalNameShort{ACM Trans. Comput. Educ.}%
|
|
941 |
\def\@permissionCodeOne{1946-6226}%
|
|
942 |
\or % TOCHI
|
|
943 |
\def\@journalName{ACM Transactions on Computer-Human Interaction}%
|
|
944 |
\def\@journalNameShort{ACM Trans. Comput.-Hum. Interact.}%
|
|
945 |
\def\@permissionCodeOne{1073-0516}%
|
|
946 |
\or % TOCL
|
|
947 |
\def\@journalName{ACM Transactions on Computational Logic}%
|
|
948 |
\def\@journalNameShort{ACM Trans. Comput. Logic}%
|
|
949 |
\def\@permissionCodeOne{1529-3785}%
|
|
950 |
\or % TOCS
|
|
951 |
\def\@journalName{ACM Transactions on Computer Systems}%
|
|
952 |
\def\@journalNameShort{ACM Trans. Comput. Syst.}%
|
|
953 |
\def\@permissionCodeOne{0734-2071}%
|
|
954 |
\or % TOCT
|
|
955 |
\def\@journalName{ACM Transactions on Computation Theory}%
|
|
956 |
\def\@journalNameShort{ACM Trans. Comput. Theory}%
|
|
957 |
\def\@permissionCodeOne{1942-3454}%
|
|
958 |
\or % TODAES
|
|
959 |
\def\@journalName{ACM Transactions on Design Automation of Electronic Systems}%
|
|
960 |
\def\@journalNameShort{ACM Trans. Des. Autom. Electron. Syst.}%
|
|
961 |
\def\@permissionCodeOne{1084-4309}%
|
|
962 |
\or % TODS
|
|
963 |
\def\@journalName{ACM Transactions on Database Systems}%
|
|
964 |
\def\@journalNameShort{ACM Trans. Datab. Syst.}%
|
|
965 |
\def\@permissionCodeOne{0362-5915}%
|
|
966 |
\or % TOG
|
|
967 |
\def\@journalName{ACM Transactions on Graphics}%
|
|
968 |
\def\@journalNameShort{ACM Trans. Graph.}%
|
|
969 |
\def\@permissionCodeOne{0730-0301}
|
|
970 |
\or % TOIS
|
|
971 |
\def\@journalName{ACM Transactions on Information Systems}%
|
|
972 |
\def\@journalName{ACM Transactions on Information Systems}%
|
|
973 |
\def\@permissionCodeOne{1046-8188}%
|
|
974 |
\or % TOIT
|
|
975 |
\def\@journalName{ACM Transactions on Internet Technology}%
|
|
976 |
\def\@journalNameShort{ACM Trans. Internet Technol.}%
|
|
977 |
\def\@permissionCodeOne{1533-5399}%
|
|
978 |
\or % TOMACS
|
|
979 |
\def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
|
|
980 |
\def\@journalName{ACM Transactions on Modeling and Computer Simulation}%
|
|
981 |
\def\@journalNameShort{ACM Trans. Model. Comput. Simul.}%
|
|
982 |
\or % TOMM
|
|
983 |
\def\@journalName{ACM Transactions on Multimedia Computing, Communications and Applications}%
|
|
984 |
\def\@journalNameShort{ACM Trans. Multimedia Comput. Commun. Appl.}%
|
|
985 |
\def\@permissionCodeOne{1551-6857}%
|
|
986 |
\def\@permissionCodeTwo{0100}%
|
|
987 |
\or % TOMPECS
|
|
988 |
\def\@journalName{ACM Transactions on Modeling and Performance Evaluation of Computing Systems}%
|
|
989 |
\def\@journalNameShort{ACM Trans. Model. Perform. Eval. Comput. Syst.}%
|
|
990 |
\def\@permissionCodeOne{2376-3639}%
|
|
991 |
\or % TOMS
|
|
992 |
\def\@journalName{ACM Transactions on Mathematical Software}%
|
|
993 |
\def\@journalNameShort{ACM Trans. Math. Softw.}%
|
|
994 |
\def\@permissionCodeOne{0098-3500}%
|
|
995 |
\or % TOPC
|
|
996 |
\def\@journalName{ACM Transactions on Parallel Computing}%
|
|
997 |
\def\@journalNameShort{ACM Trans. Parallel Comput.}%
|
|
998 |
\def\@permissionCodeOne{1539-9087}%
|
|
999 |
\or % TOPS
|
|
1000 |
\def\@journalName{ACM Transactions on Privacy and Security}%
|
|
1001 |
\def\@journalNameShort{ACM Trans. Priv. Sec.}%
|
|
1002 |
\def\@permissionCodeOne{2471-2566}%
|
|
1003 |
\or % TOPLAS
|
|
1004 |
\def\@journalName{ACM Transactions on Programming Languages and Systems}%
|
|
1005 |
\def\@journalNameShort{ACM Trans. Program. Lang. Syst.}%
|
|
1006 |
\def\@permissionCodeOne{0164-0925}%
|
|
1007 |
\or % TOS
|
|
1008 |
\def\@journalName{ACM Transactions on Storage}%
|
|
1009 |
\def\@journalNameShort{ACM Trans. Storage}%
|
|
1010 |
\def\@permissionCodeOne{1553-3077}%
|
|
1011 |
\or % TOSEM
|
|
1012 |
\def\@journalName{ACM Transactions on Software Engineering and Methodology}%
|
|
1013 |
\def\@journalNameShort{ACM Trans. Softw. Eng. Methodol.}%
|
|
1014 |
\def\@permissionCodeOne{1049-331X}%
|
|
1015 |
\or % TOSN
|
|
1016 |
\def\@journalName{ACM Transactions on Sensor Networks}%
|
|
1017 |
\def\@journalNameShort{ACM Trans. Sensor Netw.}%
|
|
1018 |
\def\@permissionCodeOne{1550-4859}%
|
|
1019 |
\or % TRETS
|
|
1020 |
\def\@journalName{ACM Transactions on Reconfigurable Technology and Systems}%
|
|
1021 |
\def\@journalNameShort{ACM Trans. Reconfig. Technol. Syst.}%
|
|
1022 |
\def\@permissionCodeOne{1936-7406}%
|
|
1023 |
\or % TSAS
|
|
1024 |
\def\@journalName{ACM Transactions on Spatial Algorithms and Systems}%
|
|
1025 |
\def\@journalNameShort{ACM Trans. Spatial Algorithms Syst.}%
|
|
1026 |
\def\@permissionCodeOne{2374-0353}%
|
|
1027 |
\or % TSC
|
|
1028 |
\def\@journalName{ACM Transactions on Social Computing}%
|
|
1029 |
\def\@journalNameShort{ACM Trans. Soc. Comput.}%
|
|
1030 |
\def\@permissionCodeOne{2469-7818}%
|
|
1031 |
\or % TSLP
|
|
1032 |
\def\@journalName{ACM Transactions on Speech and Language Processing}%
|
|
1033 |
\def\@journalNameShort{ACM Trans. Speech Lang. Process.}%
|
|
1034 |
\def\@permissionCodeOne{1550-4875}%
|
|
1035 |
\or % TWEB
|
|
1036 |
\def\@journalName{ACM Transactions on the Web}%
|
|
1037 |
\def\@journalNameShort{ACM Trans. Web}%
|
|
1038 |
\def\@permissionCodeOne{1559-1131}%
|
|
1039 |
\fi
|
|
1040 |
\ClassInfo{\@classname}{Using journal code \@journalCode}%
|
|
1041 |
}{%
|
|
1042 |
\ClassError{\@classname}{Incorrect journal #1}%
|
|
1043 |
}%
|
|
1044 |
\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
|
|
1045 |
\def\@journalCode@nr{0}
|
|
1046 |
\def\@journalName{}%
|
|
1047 |
\def\@journalNameShort{\@journalName}%
|
|
1048 |
\def\@permissionCodeOne{XXXX-XXXX}%
|
|
1049 |
\def\@permissionCodeTwo{}%
|
|
1050 |
\newcommand\acmConference[4][]{%
|
|
1051 |
\gdef\acmConference@shortname{#1}%
|
|
1052 |
\gdef\acmConference@name{#2}%
|
|
1053 |
\gdef\acmConference@date{#3}%
|
|
1054 |
\gdef\acmConference@venue{#4}%
|
|
1055 |
\ifx\acmConference@shortname\@empty
|
|
1056 |
\gdef\acmConference@shortname{#2}%
|
|
1057 |
\fi}
|
|
1058 |
\acmConference[Conference'17]{ACM Conference}{July 2017}{Washington,
|
|
1059 |
DC, USA}
|
|
1060 |
\def\acmBooktitle#1{\gdef\@acmBooktitle{#1}}
|
|
1061 |
\acmBooktitle{Proceedings of \acmConference@name
|
|
1062 |
\ifx\acmConference@name\acmConference@shortname\else
|
|
1063 |
\ (\acmConference@shortname)\fi}
|
|
1064 |
\def\@editorsAbbrev{(Ed.)}
|
|
1065 |
\def\@acmEditors{}
|
|
1066 |
\def\editor#1{\ifx\@acmEditors\@empty
|
|
1067 |
\gdef\@acmEditors{#1}%
|
|
1068 |
\else
|
|
1069 |
\gdef\@editorsAbbrev{(Eds.)}%
|
|
1070 |
\g@addto@macro\@acmEditors{\and#1}%
|
|
1071 |
\fi}
|
|
1072 |
\def\subtitle#1{\def\@subtitle{#1}}
|
|
1073 |
\subtitle{}
|
|
1074 |
\newcount\num@authorgroups
|
|
1075 |
\num@authorgroups=0\relax
|
|
1076 |
\newcount\num@authors
|
|
1077 |
\num@authors=0\relax
|
|
1078 |
\newif\if@insideauthorgroup
|
|
1079 |
\@insideauthorgroupfalse
|
|
1080 |
\renewcommand\author[2][]{%
|
|
1081 |
\global\advance\num@authors by 1\relax
|
|
1082 |
\if@insideauthorgroup\else
|
|
1083 |
\global\advance\num@authorgroups by 1\relax
|
|
1084 |
\global\@insideauthorgrouptrue
|
|
1085 |
\fi
|
|
1086 |
\ifx\addresses\@empty
|
|
1087 |
\if@ACM@anonymous
|
|
1088 |
\gdef\addresses{\@author{Anonymous Author(s)}}%
|
|
1089 |
\gdef\authors{Anonymous Author(s)}%
|
|
1090 |
\else
|
|
1091 |
\gdef\addresses{\@author{#2}}%
|
|
1092 |
\gdef\authors{#2}%
|
|
1093 |
\fi
|
|
1094 |
\else
|
|
1095 |
\if@ACM@anonymous\else
|
|
1096 |
\g@addto@macro\addresses{\and\@author{#2}}%
|
|
1097 |
\g@addto@macro\authors{\and#2}%
|
|
1098 |
\fi
|
|
1099 |
\fi
|
|
1100 |
\if@ACM@anonymous
|
|
1101 |
\ifx\shortauthors\@empty
|
|
1102 |
\gdef\shortauthors{Anon.}%
|
|
1103 |
\fi
|
|
1104 |
\else
|
|
1105 |
\def\@tempa{#1}%
|
|
1106 |
\ifx\@tempa\@empty
|
|
1107 |
\ifx\shortauthors\@empty
|
|
1108 |
\gdef\shortauthors{#2}%
|
|
1109 |
\else
|
|
1110 |
\g@addto@macro\shortauthors{\and#2}%
|
|
1111 |
\fi
|
|
1112 |
\else
|
|
1113 |
\ifx\shortauthors\@empty
|
|
1114 |
\gdef\shortauthors{#1}%
|
|
1115 |
\else
|
|
1116 |
\g@addto@macro\shortauthors{\and#1}%
|
|
1117 |
\fi
|
|
1118 |
\fi
|
|
1119 |
\fi}
|
|
1120 |
\newcommand{\affiliation}[2][]{%
|
|
1121 |
\global\@insideauthorgroupfalse
|
|
1122 |
\if@ACM@anonymous\else
|
|
1123 |
\g@addto@macro\addresses{\affiliation{#1}{#2}}%
|
|
1124 |
\fi}
|
|
1125 |
\define@boolkey+{@ACM@affiliation@}[@ACM@affiliation@]{obeypunctuation}%
|
|
1126 |
[true]{}{\ClassError{\@classname}{obeypunctuation must be true or false}}
|
|
1127 |
\def\additionalaffiliation#1{\authornote{\@additionalaffiliation{#1}}}
|
|
1128 |
\def\@additionalaffiliation#1{\bgroup
|
|
1129 |
\def\position##1{\ignorespaces}%
|
|
1130 |
\def\institution##1{##1\ignorespaces}%
|
|
1131 |
\def\department{\@ifnextchar[{\@department}{\@department[]}}%
|
|
1132 |
\def\@department[##1]##2{\unskip, ##2\ignorespaces}%
|
|
1133 |
\let\streetaddress\position
|
|
1134 |
\let\city\position
|
|
1135 |
\let\state\position
|
|
1136 |
\let\postcode\position
|
|
1137 |
\let\country\position
|
|
1138 |
Also with #1\unskip.\egroup}
|
|
1139 |
\renewcommand{\email}[2][]{%
|
|
1140 |
\if@ACM@anonymous\else
|
|
1141 |
\g@addto@macro\addresses{\email{#1}{#2}}%
|
|
1142 |
\fi}
|
|
1143 |
\def\orcid#1{\unskip\ignorespaces}
|
|
1144 |
\def\authorsaddresses#1{\def\@authorsaddresses{#1}}
|
|
1145 |
\authorsaddresses{\@mkauthorsaddresses}
|
|
1146 |
\def\@titlenotes{}
|
|
1147 |
\def\titlenote#1{%
|
|
1148 |
\g@addto@macro\@title{\footnotemark}%
|
|
1149 |
\if@ACM@anonymous
|
|
1150 |
\g@addto@macro\@titlenotes{%
|
|
1151 |
\stepcounter{footnote}\footnotetext{Title note}}%
|
|
1152 |
\else
|
|
1153 |
\g@addto@macro\@titlenotes{\stepcounter{footnote}\footnotetext{#1}}%
|
|
1154 |
\fi}
|
|
1155 |
\def\@subtitlenotes{}
|
|
1156 |
\def\subtitlenote#1{%
|
|
1157 |
\g@addto@macro\@subtitle{\footnotemark}%
|
|
1158 |
\if@ACM@anonymous
|
|
1159 |
\g@addto@macro\@subtitlenotes{%
|
|
1160 |
\stepcounter{footnote}\footnotetext{Subtitle note}}%
|
|
1161 |
\else
|
|
1162 |
\g@addto@macro\@subtitlenotes{%
|
|
1163 |
\stepcounter{footnote}\footnotetext{#1}}%
|
|
1164 |
\fi}
|
|
1165 |
\def\@authornotes{}
|
|
1166 |
\def\authornote#1{%
|
|
1167 |
\if@ACM@anonymous\else
|
|
1168 |
\g@addto@macro\addresses{\@authornotemark}%
|
|
1169 |
\g@addto@macro\@authornotes{%
|
|
1170 |
\stepcounter{footnote}\footnotetext{#1}}%
|
|
1171 |
\fi}
|
|
1172 |
\newcommand\authornotemark[1][\relax]{%
|
|
1173 |
\ifx#1\relax\relax\relax
|
|
1174 |
\g@addto@macro\addresses{\@authornotemark}%
|
|
1175 |
\else
|
|
1176 |
\g@addto@macro\addresses{\@@authornotemark{#1}}%
|
|
1177 |
\fi}
|
|
1178 |
\def\acmVolume#1{\def\@acmVolume{#1}}
|
|
1179 |
\acmVolume{1}
|
|
1180 |
\def\acmNumber#1{\def\@acmNumber{#1}}
|
|
1181 |
\acmNumber{1}
|
|
1182 |
\def\acmArticle#1{\def\@acmArticle{#1}}
|
|
1183 |
\acmArticle{}
|
|
1184 |
\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
|
|
1185 |
\acmArticleSeq{\@acmArticle}
|
|
1186 |
\def\acmYear#1{\def\@acmYear{#1}}
|
|
1187 |
\acmYear{\the\year}
|
|
1188 |
\def\acmMonth#1{\def\@acmMonth{#1}}
|
|
1189 |
\acmMonth{\the\month}
|
|
1190 |
\def\@acmPubDate{\ifcase\@acmMonth\or
|
|
1191 |
January\or February\or March\or April\or May\or June\or
|
|
1192 |
July\or August\or September\or October\or November\or
|
|
1193 |
December\fi~\@acmYear}
|
|
1194 |
\def\acmPrice#1{\def\@acmPrice{#1}}
|
|
1195 |
\acmPrice{15.00}
|
|
1196 |
\def\acmSubmissionID#1{\def\@acmSubmissionID{#1}}
|
|
1197 |
\acmSubmissionID{}
|
|
1198 |
\def\acmISBN#1{\def\@acmISBN{#1}}
|
|
1199 |
\acmISBN{978-x-xxxx-xxxx-x/YY/MM}
|
|
1200 |
\def\acmDOI#1{\def\@acmDOI{#1}}
|
|
1201 |
\acmDOI{10.1145/nnnnnnn.nnnnnnn}
|
|
1202 |
\newif\if@ACM@badge
|
|
1203 |
\@ACM@badgefalse
|
|
1204 |
\newlength\@ACM@badge@width
|
|
1205 |
\setlength\@ACM@badge@width{5pc}
|
|
1206 |
\newlength\@ACM@title@width
|
|
1207 |
\newlength\@ACM@badge@skip
|
|
1208 |
\setlength\@ACM@badge@skip{1pc}
|
|
1209 |
\newcommand\acmBadgeR[2][]{\@ACM@badgetrue
|
|
1210 |
\def\@acmBadgeR@url{#1}%
|
|
1211 |
\def\@acmBadgeR@image{#2}}
|
|
1212 |
\def\@acmBadgeR@url{}
|
|
1213 |
\def\@acmBadgeR@image{}
|
|
1214 |
\newcommand\acmBadgeL[2][]{\@ACM@badgetrue
|
|
1215 |
\def\@acmBadgeL@url{#1}%
|
|
1216 |
\def\@acmBadgeL@image{#2}}
|
|
1217 |
\def\@acmBadgeL@url{}
|
|
1218 |
\def\@acmBadgeL@image{}
|
|
1219 |
\def\startPage#1{\def\@startPage{#1}}
|
|
1220 |
\startPage{}
|
|
1221 |
\def\terms#1{\ClassWarning{\@classname}{The command \string\terms{} is
|
|
1222 |
obsolete. I am going to ignore it}}
|
|
1223 |
\def\keywords#1{\def\@keywords{#1}}
|
|
1224 |
\keywords{}
|
|
1225 |
\renewenvironment{abstract}{\Collect@Body\@saveabstract}{}
|
|
1226 |
\long\def\@saveabstract#1{\long\gdef\@abstract{#1}}
|
|
1227 |
\@saveabstract{}
|
|
1228 |
\long\def\@lempty{}
|
|
1229 |
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printccs}[true]{%
|
|
1230 |
\if@ACM@printccs
|
|
1231 |
\ClassInfo{\@classname}{Printing CCS}%
|
|
1232 |
\else
|
|
1233 |
\ClassInfo{\@classname}{Suppressing CCS}%
|
|
1234 |
\fi}{\ClassError{\@classname}{printccs must be true or false}}
|
|
1235 |
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
|
|
1236 |
\if@ACM@printacmref
|
|
1237 |
\ClassInfo{\@classname}{Printing bibformat}%
|
|
1238 |
\else
|
|
1239 |
\ClassInfo{\@classname}{Suppressing bibformat}%
|
|
1240 |
\fi}{\ClassError{\@classname}{printacmref must be true or false}}
|
|
1241 |
\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
|
|
1242 |
\if@ACM@printfolios
|
|
1243 |
\ClassInfo{\@classname}{Printing folios}%
|
|
1244 |
\else
|
|
1245 |
\ClassInfo{\@classname}{Suppressing folios}%
|
|
1246 |
\fi}{\ClassError{\@classname}{printfolios must be true or false}}
|
|
1247 |
\define@cmdkey{@ACM@topmatter@}[@ACM@]{authorsperrow}[0]{%
|
|
1248 |
\IfInteger{#1}{\ClassInfo{\@classname}{Setting authorsperrow to
|
|
1249 |
#1}}{\ClassWarning{\@classname}{Parameter authorsperrow must be
|
|
1250 |
numerical. Ignoring the input #1}\gdef\@ACM@authorsperrow{0}}}
|
|
1251 |
\def\settopmatter#1{\setkeys{@ACM@topmatter@}{#1}}
|
|
1252 |
\settopmatter{printccs=true, printacmref=true}
|
|
1253 |
\if@ACM@manuscript
|
|
1254 |
\settopmatter{printfolios=true}
|
|
1255 |
\else
|
|
1256 |
\if@ACM@journal
|
|
1257 |
\settopmatter{printfolios=true}
|
|
1258 |
\else
|
|
1259 |
\settopmatter{printfolios=false}
|
|
1260 |
\fi
|
|
1261 |
\fi
|
|
1262 |
\settopmatter{authorsperrow=0}
|
|
1263 |
\def\@received{}
|
|
1264 |
\newcommand\received[2][]{\def\@tempa{#1}%
|
|
1265 |
\ifx\@tempa\@empty
|
|
1266 |
\ifx\@received\@empty
|
|
1267 |
\gdef\@received{Received #2}%
|
|
1268 |
\else
|
|
1269 |
\g@addto@macro{\@received}{; revised #2}%
|
|
1270 |
\fi
|
|
1271 |
\else
|
|
1272 |
\ifx\@received\@empty
|
|
1273 |
\gdef\@received{#1 #2}%
|
|
1274 |
\else
|
|
1275 |
\g@addto@macro{\@received}{; #1 #2}%
|
|
1276 |
\fi
|
|
1277 |
\fi}
|
|
1278 |
\AtEndDocument{%
|
|
1279 |
\ifx\@received\@empty\else
|
|
1280 |
\par\bigskip\noindent\small\normalfont\@received\par
|
|
1281 |
\fi}
|
|
1282 |
\RequirePackage{comment}
|
|
1283 |
\excludecomment{CCSXML}
|
|
1284 |
\let\@concepts\@empty
|
|
1285 |
\newcommand\ccsdesc[2][100]{%
|
|
1286 |
\ccsdesc@parse#1~#2~~\ccsdesc@parse@end}
|
|
1287 |
\RequirePackage{textcomp}
|
|
1288 |
\def\ccsdesc@parse#1~#2~#3~{%
|
|
1289 |
\expandafter\ifx\csname CCS@General@#2\endcsname\relax
|
|
1290 |
\expandafter\gdef\csname CCS@General@#2\endcsname{\textbullet\
|
|
1291 |
\textbf{#2}}%
|
|
1292 |
\expandafter\gdef\csname CCS@Punctuation@#2\endcsname{; }%
|
|
1293 |
\expandafter\gdef\csname CCS@Specific@#2\endcsname{}%
|
|
1294 |
\g@addto@macro{\@concepts}{\csname CCS@General@#2\endcsname
|
|
1295 |
\csname CCS@Punctuation@#2\endcsname
|
|
1296 |
\csname CCS@Specific@#2\endcsname}%
|
|
1297 |
\fi
|
|
1298 |
\ifx#3\relax\relax\else
|
|
1299 |
\expandafter\gdef\csname CCS@Punctuation@#2\endcsname{
|
|
1300 |
\textrightarrow\ }%
|
|
1301 |
\expandafter\g@addto@macro\expandafter{\csname CCS@Specific@#2\endcsname}{%
|
|
1302 |
\ifnum#1>499\textbf{#3}; \else
|
|
1303 |
\ifnum#1>299\textit{#3}; \else
|
|
1304 |
#3; \fi\fi}%
|
|
1305 |
\fi
|
|
1306 |
\ccsdesc@parse@finish}
|
|
1307 |
\def\ccsdesc@parse@finish#1\ccsdesc@parse@end{}
|
|
1308 |
\newif\if@printcopyright
|
|
1309 |
\@printcopyrighttrue
|
|
1310 |
\newif\if@printpermission
|
|
1311 |
\@printpermissiontrue
|
|
1312 |
\newif\if@acmowned
|
|
1313 |
\@acmownedtrue
|
|
1314 |
\define@choicekey*{ACM@}{acmcopyrightmode}[%
|
|
1315 |
\acm@copyrightinput\acm@copyrightmode]{none,%
|
|
1316 |
acmcopyright,acmlicensed,rightsretained,%
|
|
1317 |
usgov,usgovmixed,cagov,cagovmixed,%
|
|
1318 |
licensedusgovmixed,%
|
|
1319 |
licensedcagov,licensedcagovmixed,othergov,licensedothergov}{%
|
|
1320 |
\@printpermissiontrue
|
|
1321 |
\@printcopyrighttrue
|
|
1322 |
\@acmownedtrue
|
|
1323 |
\ifnum\acm@copyrightmode=0\relax % none
|
|
1324 |
\@printpermissionfalse
|
|
1325 |
\@printcopyrightfalse
|
|
1326 |
\@acmownedfalse
|
|
1327 |
\fi
|
|
1328 |
\ifnum\acm@copyrightmode=2\relax % acmlicensed
|
|
1329 |
\@acmownedfalse
|
|
1330 |
\fi
|
|
1331 |
\ifnum\acm@copyrightmode=3\relax % rightsretained
|
|
1332 |
\@acmownedfalse
|
|
1333 |
\acmPrice{}%
|
|
1334 |
\fi
|
|
1335 |
\ifnum\acm@copyrightmode=4\relax % usgov
|
|
1336 |
\@printpermissiontrue
|
|
1337 |
\@printcopyrightfalse
|
|
1338 |
\@acmownedfalse
|
|
1339 |
\acmPrice{}%
|
|
1340 |
\fi
|
|
1341 |
\ifnum\acm@copyrightmode=6\relax % cagov
|
|
1342 |
\@acmownedfalse
|
|
1343 |
\fi
|
|
1344 |
\ifnum\acm@copyrightmode=8\relax % licensedusgovmixed
|
|
1345 |
\@acmownedfalse
|
|
1346 |
\fi
|
|
1347 |
\ifnum\acm@copyrightmode=9\relax % licensedcagov
|
|
1348 |
\@acmownedfalse
|
|
1349 |
\fi
|
|
1350 |
\ifnum\acm@copyrightmode=10\relax % licensedcagovmixed
|
|
1351 |
\@acmownedfalse
|
|
1352 |
\fi
|
|
1353 |
\ifnum\acm@copyrightmode=11\relax % othergov
|
|
1354 |
\@acmownedtrue
|
|
1355 |
\fi
|
|
1356 |
\ifnum\acm@copyrightmode=12\relax % licensedothergov
|
|
1357 |
\@acmownedfalse
|
|
1358 |
\fi}
|
|
1359 |
\def\setcopyright#1{\setkeys{ACM@}{acmcopyrightmode=#1}}
|
|
1360 |
\setcopyright{acmcopyright}
|
|
1361 |
\def\@copyrightowner{%
|
|
1362 |
\ifcase\acm@copyrightmode\relax % none
|
|
1363 |
\or % acmcopyright
|
|
1364 |
Association for Computing Machinery.
|
|
1365 |
\or % acmlicensed
|
|
1366 |
Copyright held by the owner/author(s). Publication rights licensed to
|
|
1367 |
Association for Computing Machinery.
|
|
1368 |
\or % rightsretained
|
|
1369 |
Copyright held by the owner/author(s).
|
|
1370 |
\or % usgov
|
|
1371 |
\or % usgovmixed
|
|
1372 |
Association for Computing Machinery.
|
|
1373 |
\or % cagov
|
|
1374 |
Crown in Right of Canada.
|
|
1375 |
\or %cagovmixed
|
|
1376 |
Association for Computing Machinery.
|
|
1377 |
\or %licensedusgovmixed
|
|
1378 |
Copyright held by the owner/author(s). Publication rights licensed to
|
|
1379 |
Association for Computing Machinery.
|
|
1380 |
\or % licensedcagov
|
|
1381 |
Crown in Right of Canada. Publication rights licensed to
|
|
1382 |
Association for Computing Machinery.
|
|
1383 |
\or %licensedcagovmixed
|
|
1384 |
Copyright held by the owner/author(s). Publication rights licensed to
|
|
1385 |
Association for Computing Machinery.
|
|
1386 |
\or % othergov
|
|
1387 |
Association for Computing Machinery.
|
|
1388 |
\or % licensedothergov
|
|
1389 |
Copyright held by the owner/author(s). Publication rights licensed to
|
|
1390 |
Association for Computing Machinery.
|
|
1391 |
\fi}
|
|
1392 |
\def\@formatdoi#1{\url{https://doi.org/#1}}
|
|
1393 |
\def\@copyrightpermission{%
|
|
1394 |
\ifcase\acm@copyrightmode\relax % none
|
|
1395 |
\or % acmcopyright
|
|
1396 |
Permission to make digital or hard copies of all or part of this
|