1 %----------------------------------------------------------------------------- |
|
2 % |
|
3 % LaTeX Class/Style File |
|
4 % |
|
5 % Name: sigplanconf.cls |
|
6 % Purpose: A LaTeX 2e class file for SIGPLAN conference proceedings. |
|
7 % This class file supercedes acm_proc_article-sp, |
|
8 % sig-alternate, and sigplan-proc. |
|
9 % |
|
10 % Author: Paul C. Anagnostopoulos |
|
11 % Windfall Software |
|
12 % 978 371-2316 |
|
13 % sigplan-style [atsign] acm.org |
|
14 % |
|
15 % Created: 12 September 2004 |
|
16 % |
|
17 % Revisions: See end of file. |
|
18 % |
|
19 %----------------------------------------------------------------------------- |
|
20 |
|
21 |
|
22 \NeedsTeXFormat{LaTeX2e}[1995/12/01] |
|
23 \ProvidesClass{sigplanconf}[2010/05/24 v2.4 ACM SIGPLAN Proceedings] |
|
24 |
|
25 % The following few pages contain LaTeX programming extensions adapted |
|
26 % from the ZzTeX macro package. |
|
27 |
|
28 % Token Hackery |
|
29 % ----- ------- |
|
30 |
|
31 |
|
32 \def \@expandaftertwice {\expandafter\expandafter\expandafter} |
|
33 \def \@expandafterthrice {\expandafter\expandafter\expandafter\expandafter |
|
34 \expandafter\expandafter\expandafter} |
|
35 |
|
36 % This macro discards the next token. |
|
37 |
|
38 \def \@discardtok #1{}% token |
|
39 |
|
40 % This macro removes the `pt' following a dimension. |
|
41 |
|
42 {\catcode `\p = 12 \catcode `\t = 12 |
|
43 |
|
44 \gdef \@remover #1pt{#1} |
|
45 |
|
46 } % \catcode |
|
47 |
|
48 % This macro extracts the contents of a macro and returns it as plain text. |
|
49 % Usage: \expandafter\@defof \meaning\macro\@mark |
|
50 |
|
51 \def \@defof #1:->#2\@mark{#2} |
|
52 |
|
53 % Control Sequence Names |
|
54 % ------- -------- ----- |
|
55 |
|
56 |
|
57 \def \@name #1{% {\tokens} |
|
58 \csname \expandafter\@discardtok \string#1\endcsname} |
|
59 |
|
60 \def \@withname #1#2{% {\command}{\tokens} |
|
61 \expandafter#1\csname \expandafter\@discardtok \string#2\endcsname} |
|
62 |
|
63 % Flags (Booleans) |
|
64 % ----- ---------- |
|
65 |
|
66 % The boolean literals \@true and \@false are appropriate for use with |
|
67 % the \if command, which tests the codes of the next two characters. |
|
68 |
|
69 \def \@true {TT} |
|
70 \def \@false {FL} |
|
71 |
|
72 \def \@setflag #1=#2{\edef #1{#2}}% \flag = boolean |
|
73 |
|
74 % IF and Predicates |
|
75 % -- --- ---------- |
|
76 |
|
77 % A "predicate" is a macro that returns \@true or \@false as its value. |
|
78 % Such values are suitable for use with the \if conditional. For example: |
|
79 % |
|
80 % \if \@oddp{\x} <then-clause> \else <else-clause> \fi |
|
81 |
|
82 % A predicate can be used with \@setflag as follows: |
|
83 % |
|
84 % \@setflag \flag = {<predicate>} |
|
85 |
|
86 % Here are the predicates for TeX's repertoire of conditional |
|
87 % commands. These might be more appropriately interspersed with |
|
88 % other definitions in this module, but what the heck. |
|
89 % Some additional "obvious" predicates are defined. |
|
90 |
|
91 \def \@eqlp #1#2{\ifnum #1 = #2\@true \else \@false \fi} |
|
92 \def \@neqlp #1#2{\ifnum #1 = #2\@false \else \@true \fi} |
|
93 \def \@lssp #1#2{\ifnum #1 < #2\@true \else \@false \fi} |
|
94 \def \@gtrp #1#2{\ifnum #1 > #2\@true \else \@false \fi} |
|
95 \def \@zerop #1{\ifnum #1 = 0\@true \else \@false \fi} |
|
96 \def \@onep #1{\ifnum #1 = 1\@true \else \@false \fi} |
|
97 \def \@posp #1{\ifnum #1 > 0\@true \else \@false \fi} |
|
98 \def \@negp #1{\ifnum #1 < 0\@true \else \@false \fi} |
|
99 \def \@oddp #1{\ifodd #1\@true \else \@false \fi} |
|
100 \def \@evenp #1{\ifodd #1\@false \else \@true \fi} |
|
101 \def \@rangep #1#2#3{\if \@orp{\@lssp{#1}{#2}}{\@gtrp{#1}{#3}}\@false \else |
|
102 \@true \fi} |
|
103 \def \@tensp #1{\@rangep{#1}{10}{19}} |
|
104 |
|
105 \def \@dimeqlp #1#2{\ifdim #1 = #2\@true \else \@false \fi} |
|
106 \def \@dimneqlp #1#2{\ifdim #1 = #2\@false \else \@true \fi} |
|
107 \def \@dimlssp #1#2{\ifdim #1 < #2\@true \else \@false \fi} |
|
108 \def \@dimgtrp #1#2{\ifdim #1 > #2\@true \else \@false \fi} |
|
109 \def \@dimzerop #1{\ifdim #1 = 0pt\@true \else \@false \fi} |
|
110 \def \@dimposp #1{\ifdim #1 > 0pt\@true \else \@false \fi} |
|
111 \def \@dimnegp #1{\ifdim #1 < 0pt\@true \else \@false \fi} |
|
112 |
|
113 \def \@vmodep {\ifvmode \@true \else \@false \fi} |
|
114 \def \@hmodep {\ifhmode \@true \else \@false \fi} |
|
115 \def \@mathmodep {\ifmmode \@true \else \@false \fi} |
|
116 \def \@textmodep {\ifmmode \@false \else \@true \fi} |
|
117 \def \@innermodep {\ifinner \@true \else \@false \fi} |
|
118 |
|
119 \long\def \@codeeqlp #1#2{\if #1#2\@true \else \@false \fi} |
|
120 |
|
121 \long\def \@cateqlp #1#2{\ifcat #1#2\@true \else \@false \fi} |
|
122 |
|
123 \long\def \@tokeqlp #1#2{\ifx #1#2\@true \else \@false \fi} |
|
124 \long\def \@xtokeqlp #1#2{\expandafter\ifx #1#2\@true \else \@false \fi} |
|
125 |
|
126 \long\def \@definedp #1{% |
|
127 \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname |
|
128 \relax \@false \else \@true \fi} |
|
129 |
|
130 \long\def \@undefinedp #1{% |
|
131 \expandafter\ifx \csname \expandafter\@discardtok \string#1\endcsname |
|
132 \relax \@true \else \@false \fi} |
|
133 |
|
134 \def \@emptydefp #1{\ifx #1\@empty \@true \else \@false \fi}% {\name} |
|
135 |
|
136 \let \@emptylistp = \@emptydefp |
|
137 |
|
138 \long\def \@emptyargp #1{% {#n} |
|
139 \@empargp #1\@empargq\@mark} |
|
140 \long\def \@empargp #1#2\@mark{% |
|
141 \ifx #1\@empargq \@true \else \@false \fi} |
|
142 \def \@empargq {\@empargq} |
|
143 |
|
144 \def \@emptytoksp #1{% {\tokenreg} |
|
145 \expandafter\@emptoksp \the#1\@mark} |
|
146 |
|
147 \long\def \@emptoksp #1\@mark{\@emptyargp{#1}} |
|
148 |
|
149 \def \@voidboxp #1{\ifvoid #1\@true \else \@false \fi} |
|
150 \def \@hboxp #1{\ifhbox #1\@true \else \@false \fi} |
|
151 \def \@vboxp #1{\ifvbox #1\@true \else \@false \fi} |
|
152 |
|
153 \def \@eofp #1{\ifeof #1\@true \else \@false \fi} |
|
154 |
|
155 |
|
156 % Flags can also be used as predicates, as in: |
|
157 % |
|
158 % \if \flaga <then-clause> \else <else-clause> \fi |
|
159 |
|
160 |
|
161 % Now here we have predicates for the common logical operators. |
|
162 |
|
163 \def \@notp #1{\if #1\@false \else \@true \fi} |
|
164 |
|
165 \def \@andp #1#2{\if #1% |
|
166 \if #2\@true \else \@false \fi |
|
167 \else |
|
168 \@false |
|
169 \fi} |
|
170 |
|
171 \def \@orp #1#2{\if #1% |
|
172 \@true |
|
173 \else |
|
174 \if #2\@true \else \@false \fi |
|
175 \fi} |
|
176 |
|
177 \def \@xorp #1#2{\if #1% |
|
178 \if #2\@false \else \@true \fi |
|
179 \else |
|
180 \if #2\@true \else \@false \fi |
|
181 \fi} |
|
182 |
|
183 % Arithmetic |
|
184 % ---------- |
|
185 |
|
186 \def \@increment #1{\advance #1 by 1\relax}% {\count} |
|
187 |
|
188 \def \@decrement #1{\advance #1 by -1\relax}% {\count} |
|
189 |
|
190 % Options |
|
191 % ------- |
|
192 |
|
193 |
|
194 \@setflag \@authoryear = \@false |
|
195 \@setflag \@blockstyle = \@false |
|
196 \@setflag \@copyrightwanted = \@true |
|
197 \@setflag \@explicitsize = \@false |
|
198 \@setflag \@mathtime = \@false |
|
199 \@setflag \@natbib = \@true |
|
200 \@setflag \@ninepoint = \@true |
|
201 \newcount{\@numheaddepth} \@numheaddepth = 3 |
|
202 \@setflag \@onecolumn = \@false |
|
203 \@setflag \@preprint = \@false |
|
204 \@setflag \@reprint = \@false |
|
205 \@setflag \@tenpoint = \@false |
|
206 \@setflag \@times = \@false |
|
207 |
|
208 % Note that all the dangerous article class options are trapped. |
|
209 |
|
210 \DeclareOption{9pt}{\@setflag \@ninepoint = \@true |
|
211 \@setflag \@explicitsize = \@true} |
|
212 |
|
213 \DeclareOption{10pt}{\PassOptionsToClass{10pt}{article}% |
|
214 \@setflag \@ninepoint = \@false |
|
215 \@setflag \@tenpoint = \@true |
|
216 \@setflag \@explicitsize = \@true} |
|
217 |
|
218 \DeclareOption{11pt}{\PassOptionsToClass{11pt}{article}% |
|
219 \@setflag \@ninepoint = \@false |
|
220 \@setflag \@explicitsize = \@true} |
|
221 |
|
222 \DeclareOption{12pt}{\@unsupportedoption{12pt}} |
|
223 |
|
224 \DeclareOption{a4paper}{\@unsupportedoption{a4paper}} |
|
225 |
|
226 \DeclareOption{a5paper}{\@unsupportedoption{a5paper}} |
|
227 |
|
228 \DeclareOption{authoryear}{\@setflag \@authoryear = \@true} |
|
229 |
|
230 \DeclareOption{b5paper}{\@unsupportedoption{b5paper}} |
|
231 |
|
232 \DeclareOption{blockstyle}{\@setflag \@blockstyle = \@true} |
|
233 |
|
234 \DeclareOption{cm}{\@setflag \@times = \@false} |
|
235 |
|
236 \DeclareOption{computermodern}{\@setflag \@times = \@false} |
|
237 |
|
238 \DeclareOption{executivepaper}{\@unsupportedoption{executivepaper}} |
|
239 |
|
240 \DeclareOption{indentedstyle}{\@setflag \@blockstyle = \@false} |
|
241 |
|
242 \DeclareOption{landscape}{\@unsupportedoption{landscape}} |
|
243 |
|
244 \DeclareOption{legalpaper}{\@unsupportedoption{legalpaper}} |
|
245 |
|
246 \DeclareOption{letterpaper}{\@unsupportedoption{letterpaper}} |
|
247 |
|
248 \DeclareOption{mathtime}{\@setflag \@mathtime = \@true} |
|
249 |
|
250 \DeclareOption{natbib}{\@setflag \@natbib = \@true} |
|
251 |
|
252 \DeclareOption{nonatbib}{\@setflag \@natbib = \@false} |
|
253 |
|
254 \DeclareOption{nocopyrightspace}{\@setflag \@copyrightwanted = \@false} |
|
255 |
|
256 \DeclareOption{notitlepage}{\@unsupportedoption{notitlepage}} |
|
257 |
|
258 \DeclareOption{numberedpars}{\@numheaddepth = 4} |
|
259 |
|
260 \DeclareOption{numbers}{\@setflag \@authoryear = \@false} |
|
261 |
|
262 %%%\DeclareOption{onecolumn}{\@setflag \@onecolumn = \@true} |
|
263 |
|
264 \DeclareOption{preprint}{\@setflag \@preprint = \@true} |
|
265 |
|
266 \DeclareOption{reprint}{\@setflag \@reprint = \@true} |
|
267 |
|
268 \DeclareOption{times}{\@setflag \@times = \@true} |
|
269 |
|
270 \DeclareOption{titlepage}{\@unsupportedoption{titlepage}} |
|
271 |
|
272 \DeclareOption{twocolumn}{\@setflag \@onecolumn = \@false} |
|
273 |
|
274 \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} |
|
275 |
|
276 \ExecuteOptions{9pt,indentedstyle,times} |
|
277 \@setflag \@explicitsize = \@false |
|
278 \ProcessOptions |
|
279 |
|
280 \if \@onecolumn |
|
281 \if \@notp{\@explicitsize}% |
|
282 \@setflag \@ninepoint = \@false |
|
283 \PassOptionsToClass{11pt}{article}% |
|
284 \fi |
|
285 \PassOptionsToClass{twoside,onecolumn}{article} |
|
286 \else |
|
287 \PassOptionsToClass{twoside,twocolumn}{article} |
|
288 \fi |
|
289 \LoadClass{article} |
|
290 |
|
291 \def \@unsupportedoption #1{% |
|
292 \ClassError{proc}{The standard '#1' option is not supported.}} |
|
293 |
|
294 % This can be used with the 'reprint' option to get the final folios. |
|
295 |
|
296 \def \setpagenumber #1{% |
|
297 \setcounter{page}{#1}} |
|
298 |
|
299 \AtEndDocument{\label{sigplanconf@finalpage}} |
|
300 |
|
301 % Utilities |
|
302 % --------- |
|
303 |
|
304 |
|
305 \newcommand{\setvspace}[2]{% |
|
306 #1 = #2 |
|
307 \advance #1 by -1\parskip} |
|
308 |
|
309 % Document Parameters |
|
310 % -------- ---------- |
|
311 |
|
312 |
|
313 % Page: |
|
314 |
|
315 \setlength{\hoffset}{-1in} |
|
316 \setlength{\voffset}{-1in} |
|
317 |
|
318 \setlength{\topmargin}{1in} |
|
319 \setlength{\headheight}{0pt} |
|
320 \setlength{\headsep}{0pt} |
|
321 |
|
322 \if \@onecolumn |
|
323 \setlength{\evensidemargin}{.75in} |
|
324 \setlength{\oddsidemargin}{.75in} |
|
325 \else |
|
326 \setlength{\evensidemargin}{.75in} |
|
327 \setlength{\oddsidemargin}{.75in} |
|
328 \fi |
|
329 |
|
330 % Text area: |
|
331 |
|
332 \newdimen{\standardtextwidth} |
|
333 \setlength{\standardtextwidth}{42pc} |
|
334 |
|
335 \if \@onecolumn |
|
336 \setlength{\textwidth}{40.5pc} |
|
337 \else |
|
338 \setlength{\textwidth}{\standardtextwidth} |
|
339 \fi |
|
340 |
|
341 \setlength{\topskip}{8pt} |
|
342 \setlength{\columnsep}{2pc} |
|
343 \setlength{\textheight}{54.5pc} |
|
344 |
|
345 % Running foot: |
|
346 |
|
347 \setlength{\footskip}{30pt} |
|
348 |
|
349 % Paragraphs: |
|
350 |
|
351 \if \@blockstyle |
|
352 \setlength{\parskip}{5pt plus .1pt minus .5pt} |
|
353 \setlength{\parindent}{0pt} |
|
354 \else |
|
355 \setlength{\parskip}{0pt} |
|
356 \setlength{\parindent}{12pt} |
|
357 \fi |
|
358 |
|
359 \setlength{\lineskip}{.5pt} |
|
360 \setlength{\lineskiplimit}{\lineskip} |
|
361 |
|
362 \frenchspacing |
|
363 \pretolerance = 400 |
|
364 \tolerance = \pretolerance |
|
365 \setlength{\emergencystretch}{5pt} |
|
366 \clubpenalty = 10000 |
|
367 \widowpenalty = 10000 |
|
368 \setlength{\hfuzz}{.5pt} |
|
369 |
|
370 % Standard vertical spaces: |
|
371 |
|
372 \newskip{\standardvspace} |
|
373 \setvspace{\standardvspace}{5pt plus 1pt minus .5pt} |
|
374 |
|
375 % Margin paragraphs: |
|
376 |
|
377 \setlength{\marginparwidth}{36pt} |
|
378 \setlength{\marginparsep}{2pt} |
|
379 \setlength{\marginparpush}{8pt} |
|
380 |
|
381 |
|
382 \setlength{\skip\footins}{8pt plus 3pt minus 1pt} |
|
383 \setlength{\footnotesep}{9pt} |
|
384 |
|
385 \renewcommand{\footnoterule}{% |
|
386 \hrule width .5\columnwidth height .33pt depth 0pt} |
|
387 |
|
388 \renewcommand{\@makefntext}[1]{% |
|
389 \noindent \@makefnmark \hspace{1pt}#1} |
|
390 |
|
391 % Floats: |
|
392 |
|
393 \setcounter{topnumber}{4} |
|
394 \setcounter{bottomnumber}{1} |
|
395 \setcounter{totalnumber}{4} |
|
396 |
|
397 \renewcommand{\fps@figure}{tp} |
|
398 \renewcommand{\fps@table}{tp} |
|
399 \renewcommand{\topfraction}{0.90} |
|
400 \renewcommand{\bottomfraction}{0.30} |
|
401 \renewcommand{\textfraction}{0.10} |
|
402 \renewcommand{\floatpagefraction}{0.75} |
|
403 |
|
404 \setcounter{dbltopnumber}{4} |
|
405 |
|
406 \renewcommand{\dbltopfraction}{\topfraction} |
|
407 \renewcommand{\dblfloatpagefraction}{\floatpagefraction} |
|
408 |
|
409 \setlength{\floatsep}{18pt plus 4pt minus 2pt} |
|
410 \setlength{\textfloatsep}{18pt plus 4pt minus 3pt} |
|
411 \setlength{\intextsep}{10pt plus 4pt minus 3pt} |
|
412 |
|
413 \setlength{\dblfloatsep}{18pt plus 4pt minus 2pt} |
|
414 \setlength{\dbltextfloatsep}{20pt plus 4pt minus 3pt} |
|
415 |
|
416 % Miscellaneous: |
|
417 |
|
418 \errorcontextlines = 5 |
|
419 |
|
420 % Fonts |
|
421 % ----- |
|
422 |
|
423 |
|
424 \if \@times |
|
425 \renewcommand{\rmdefault}{ptm}% |
|
426 \if \@mathtime |
|
427 \usepackage[mtbold,noTS1]{mathtime}% |
|
428 \else |
|
429 %%% \usepackage{mathptm}% |
|
430 \fi |
|
431 \else |
|
432 \relax |
|
433 \fi |
|
434 |
|
435 \if \@ninepoint |
|
436 |
|
437 \renewcommand{\normalsize}{% |
|
438 \@setfontsize{\normalsize}{9pt}{10pt}% |
|
439 \setlength{\abovedisplayskip}{5pt plus 1pt minus .5pt}% |
|
440 \setlength{\belowdisplayskip}{\abovedisplayskip}% |
|
441 \setlength{\abovedisplayshortskip}{3pt plus 1pt minus 2pt}% |
|
442 \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}} |
|
443 |
|
444 \renewcommand{\tiny}{\@setfontsize{\tiny}{5pt}{6pt}} |
|
445 |
|
446 \renewcommand{\scriptsize}{\@setfontsize{\scriptsize}{7pt}{8pt}} |
|
447 |
|
448 \renewcommand{\small}{% |
|
449 \@setfontsize{\small}{8pt}{9pt}% |
|
450 \setlength{\abovedisplayskip}{4pt plus 1pt minus 1pt}% |
|
451 \setlength{\belowdisplayskip}{\abovedisplayskip}% |
|
452 \setlength{\abovedisplayshortskip}{2pt plus 1pt}% |
|
453 \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}} |
|
454 |
|
455 \renewcommand{\footnotesize}{% |
|
456 \@setfontsize{\footnotesize}{8pt}{9pt}% |
|
457 \setlength{\abovedisplayskip}{4pt plus 1pt minus .5pt}% |
|
458 \setlength{\belowdisplayskip}{\abovedisplayskip}% |
|
459 \setlength{\abovedisplayshortskip}{2pt plus 1pt}% |
|
460 \setlength{\belowdisplayshortskip}{\abovedisplayshortskip}} |
|
461 |
|
462 \renewcommand{\large}{\@setfontsize{\large}{11pt}{13pt}} |
|
463 |
|
464 \renewcommand{\Large}{\@setfontsize{\Large}{14pt}{18pt}} |
|
465 |
|
466 \renewcommand{\LARGE}{\@setfontsize{\LARGE}{18pt}{20pt}} |
|
467 |
|
468 \renewcommand{\huge}{\@setfontsize{\huge}{20pt}{25pt}} |
|
469 |
|
470 \renewcommand{\Huge}{\@setfontsize{\Huge}{25pt}{30pt}} |
|
471 |
|
472 \else\if \@tenpoint |
|
473 |
|
474 \relax |
|
475 |
|
476 \else |
|
477 |
|
478 \relax |
|
479 |
|
480 \fi\fi |
|
481 |
|
482 % Abstract |
|
483 % -------- |
|
484 |
|
485 |
|
486 \renewenvironment{abstract}{% |
|
487 \section*{Abstract}% |
|
488 \normalsize}{% |
|
489 } |
|
490 |
|
491 % Bibliography |
|
492 % ------------ |
|
493 |
|
494 |
|
495 \renewenvironment{thebibliography}[1] |
|
496 {\section*{\refname |
|
497 \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}% |
|
498 \list{\@biblabel{\@arabic\c@enumiv}}% |
|
499 {\settowidth\labelwidth{\@biblabel{#1}}% |
|
500 \leftmargin\labelwidth |
|
501 \advance\leftmargin\labelsep |
|
502 \@openbib@code |
|
503 \usecounter{enumiv}% |
|
504 \let\p@enumiv\@empty |
|
505 \renewcommand\theenumiv{\@arabic\c@enumiv}}% |
|
506 \bibfont |
|
507 \clubpenalty4000 |
|
508 \@clubpenalty \clubpenalty |
|
509 \widowpenalty4000% |
|
510 \sfcode`\.\@m} |
|
511 {\def\@noitemerr |
|
512 {\@latex@warning{Empty `thebibliography' environment}}% |
|
513 \endlist} |
|
514 |
|
515 \if \@natbib |
|
516 |
|
517 \if \@authoryear |
|
518 \typeout{Using natbib package with 'authoryear' citation style.} |
|
519 \usepackage[authoryear,sort,square]{natbib} |
|
520 \bibpunct{[}{]}{;}{a}{}{,} % Change citation separator to semicolon, |
|
521 % eliminate comma between author and year. |
|
522 \let \cite = \citep |
|
523 \else |
|
524 \typeout{Using natbib package with 'numbers' citation style.} |
|
525 \usepackage[numbers,sort&compress,square]{natbib} |
|
526 \fi |
|
527 \setlength{\bibsep}{3pt plus .5pt minus .25pt} |
|
528 |
|
529 \fi |
|
530 |
|
531 \def \bibfont {\small} |
|
532 |
|
533 % Categories |
|
534 % ---------- |
|
535 |
|
536 |
|
537 \@setflag \@firstcategory = \@true |
|
538 |
|
539 \newcommand{\category}[3]{% |
|
540 \if \@firstcategory |
|
541 \paragraph*{Categories and Subject Descriptors}% |
|
542 \@setflag \@firstcategory = \@false |
|
543 \else |
|
544 \unskip ;\hspace{.75em}% |
|
545 \fi |
|
546 \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}} |
|
547 |
|
548 \def \@category #1#2#3[#4]{% |
|
549 {\let \and = \relax |
|
550 #1 [\textit{#2}]% |
|
551 \if \@emptyargp{#4}% |
|
552 \if \@notp{\@emptyargp{#3}}: #3\fi |
|
553 \else |
|
554 :\space |
|
555 \if \@notp{\@emptyargp{#3}}#3---\fi |
|
556 \textrm{#4}% |
|
557 \fi}} |
|
558 |
|
559 % Copyright Notice |
|
560 % --------- ------ |
|
561 |
|
562 |
|
563 \def \ftype@copyrightbox {8} |
|
564 \def \@toappear {} |
|
565 \def \@permission {} |
|
566 \def \@reprintprice {} |
|
567 |
|
568 \def \@copyrightspace {% |
|
569 \@float{copyrightbox}[b]% |
|
570 \vbox to 1in{% |
|
571 \vfill |
|
572 \parbox[b]{20pc}{% |
|
573 \scriptsize |
|
574 \if \@preprint |
|
575 [Copyright notice will appear here |
|
576 once 'preprint' option is removed.]\par |
|
577 \else |
|
578 \@toappear |
|
579 \fi |
|
580 \if \@reprint |
|
581 \noindent Reprinted from \@conferencename, |
|
582 \@proceedings, |
|
583 \@conferenceinfo, |
|
584 pp.~\number\thepage--\pageref{sigplanconf@finalpage}.\par |
|
585 \fi}}% |
|
586 \end@float} |
|
587 |
|
588 \long\def \toappear #1{% |
|
589 \def \@toappear {#1}} |
|
590 |
|
591 \toappear{% |
|
592 \noindent \@permission \par |
|
593 \vspace{2pt} |
|
594 \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par |
|
595 \noindent Copyright \copyright\ \@copyrightyear\ ACM \@copyrightdata |
|
596 \dots \@reprintprice\par} |
|
597 |
|
598 \newcommand{\permission}[1]{% |
|
599 \gdef \@permission {#1}} |
|
600 |
|
601 \permission{% |
|
602 Permission to make digital or hard copies of all or |
|
603 part of this work for personal or classroom use is granted without |
|
604 fee provided that copies are not made or distributed for profit or |
|
605 commercial advantage and that copies bear this notice and the full |
|
606 citation on the first page. To copy otherwise, to republish, to |
|
607 post on servers or to redistribute to lists, requires prior specific |
|
608 permission and/or a fee.} |
|
609 |
|
610 % Here we have some alternate permission statements and copyright lines: |
|
611 |
|
612 \newcommand{\ACMCanadapermission}{% |
|
613 \permission{% |
|
614 Copyright \@copyrightyear\ Association for Computing Machinery. |
|
615 ACM acknowledges that |
|
616 this contribution was authored or co-authored by an affiliate of the |
|
617 National Research Council of Canada (NRC). |
|
618 As such, the Crown in Right of |
|
619 Canada retains an equal interest in the copyright, however granting |
|
620 nonexclusive, royalty-free right to publish or reproduce this article, |
|
621 or to allow others to do so, provided that clear attribution |
|
622 is also given to the authors and the NRC.}} |
|
623 |
|
624 \newcommand{\ACMUSpermission}{% |
|
625 \permission{% |
|
626 Copyright \@copyrightyear\ Association for |
|
627 Computing Machinery. ACM acknowledges that |
|
628 this contribution was authored or co-authored |
|
629 by a contractor or affiliate |
|
630 of the U.S. Government. As such, the Government retains a nonexclusive, |
|
631 royalty-free right to publish or reproduce this article, |
|
632 or to allow others to do so, for Government purposes only.}} |
|
633 |
|
634 \newcommand{\authorpermission}{% |
|
635 \permission{% |
|
636 Copyright is held by the author/owner(s).} |
|
637 \toappear{% |
|
638 \noindent \@permission \par |
|
639 \vspace{2pt} |
|
640 \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par |
|
641 ACM \@copyrightdata.}} |
|
642 |
|
643 \newcommand{\Sunpermission}{% |
|
644 \permission{% |
|
645 Copyright is held by Sun Microsystems, Inc.}% |
|
646 \toappear{% |
|
647 \noindent \@permission \par |
|
648 \vspace{2pt} |
|
649 \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par |
|
650 ACM \@copyrightdata.}} |
|
651 |
|
652 \newcommand{\USpublicpermission}{% |
|
653 \permission{% |
|
654 This paper is authored by an employee(s) of the United States |
|
655 Government and is in the public domain.}% |
|
656 \toappear{% |
|
657 \noindent \@permission \par |
|
658 \vspace{2pt} |
|
659 \noindent \textsl{\@conferencename}\quad \@conferenceinfo \par |
|
660 ACM \@copyrightdata.}} |
|
661 |
|
662 \newcommand{\reprintprice}[1]{% |
|
663 \gdef \@reprintprice {#1}} |
|
664 |
|
665 \reprintprice{\$10.00} |
|
666 |
|
667 % Enunciations |
|
668 % ------------ |
|
669 |
|
670 |
|
671 \def \@begintheorem #1#2{% {name}{number} |
|
672 \trivlist |
|
673 \item[\hskip \labelsep \textsc{#1 #2.}]% |
|
674 \itshape\selectfont |
|
675 \ignorespaces} |
|
676 |
|
677 \def \@opargbegintheorem #1#2#3{% {name}{number}{title} |
|
678 \trivlist |
|
679 \item[% |
|
680 \hskip\labelsep \textsc{#1\ #2}% |
|
681 \if \@notp{\@emptyargp{#3}}\nut (#3).\fi]% |
|
682 \itshape\selectfont |
|
683 \ignorespaces} |
|
684 |
|
685 % Figures |
|
686 % ------- |
|
687 |
|
688 |
|
689 \@setflag \@caprule = \@true |
|
690 |
|
691 \long\def \@makecaption #1#2{% |
|
692 \addvspace{4pt} |
|
693 \if \@caprule |
|
694 \hrule width \hsize height .33pt |
|
695 \vspace{4pt} |
|
696 \fi |
|
697 \setbox \@tempboxa = \hbox{\@setfigurenumber{#1.}\nut #2}% |
|
698 \if \@dimgtrp{\wd\@tempboxa}{\hsize}% |
|
699 \noindent \@setfigurenumber{#1.}\nut #2\par |
|
700 \else |
|
701 \centerline{\box\@tempboxa}% |
|
702 \fi} |
|
703 |
|
704 \newcommand{\nocaptionrule}{% |
|
705 \@setflag \@caprule = \@false} |
|
706 |
|
707 \def \@setfigurenumber #1{% |
|
708 {\rmfamily \bfseries \selectfont #1}} |
|
709 |
|
710 % Hierarchy |
|
711 % --------- |
|
712 |
|
713 |
|
714 \setcounter{secnumdepth}{\@numheaddepth} |
|
715 |
|
716 \newskip{\@sectionaboveskip} |
|
717 \setvspace{\@sectionaboveskip}{10pt plus 3pt minus 2pt} |
|
718 |
|
719 \newskip{\@sectionbelowskip} |
|
720 \if \@blockstyle |
|
721 \setlength{\@sectionbelowskip}{0.1pt}% |
|
722 \else |
|
723 \setlength{\@sectionbelowskip}{4pt}% |
|
724 \fi |
|
725 |
|
726 \renewcommand{\section}{% |
|
727 \@startsection |
|
728 {section}% |
|
729 {1}% |
|
730 {0pt}% |
|
731 {-\@sectionaboveskip}% |
|
732 {\@sectionbelowskip}% |
|
733 {\large \bfseries \raggedright}} |
|
734 |
|
735 \newskip{\@subsectionaboveskip} |
|
736 \setvspace{\@subsectionaboveskip}{8pt plus 2pt minus 2pt} |
|
737 |
|
738 \newskip{\@subsectionbelowskip} |
|
739 \if \@blockstyle |
|
740 \setlength{\@subsectionbelowskip}{0.1pt}% |
|
741 \else |
|
742 \setlength{\@subsectionbelowskip}{4pt}% |
|
743 \fi |
|
744 |
|
745 \renewcommand{\subsection}{% |
|
746 \@startsection% |
|
747 {subsection}% |
|
748 {2}% |
|
749 {0pt}% |
|
750 {-\@subsectionaboveskip}% |
|
751 {\@subsectionbelowskip}% |
|
752 {\normalsize \bfseries \raggedright}} |
|
753 |
|
754 \renewcommand{\subsubsection}{% |
|
755 \@startsection% |
|
756 {subsubsection}% |
|
757 {3}% |
|
758 {0pt}% |
|
759 {-\@subsectionaboveskip} |
|
760 {\@subsectionbelowskip}% |
|
761 {\normalsize \bfseries \raggedright}} |
|
762 |
|
763 \newskip{\@paragraphaboveskip} |
|
764 \setvspace{\@paragraphaboveskip}{6pt plus 2pt minus 2pt} |
|
765 |
|
766 \renewcommand{\paragraph}{% |
|
767 \@startsection% |
|
768 {paragraph}% |
|
769 {4}% |
|
770 {0pt}% |
|
771 {\@paragraphaboveskip} |
|
772 {-1em}% |
|
773 {\normalsize \bfseries \if \@times \itshape \fi}} |
|
774 |
|
775 \renewcommand{\subparagraph}{% |
|
776 \@startsection% |
|
777 {subparagraph}% |
|
778 {4}% |
|
779 {0pt}% |
|
780 {\@paragraphaboveskip} |
|
781 {-1em}% |
|
782 {\normalsize \itshape}} |
|
783 |
|
784 % Standard headings: |
|
785 |
|
786 \newcommand{\acks}{\section*{Acknowledgments}} |
|
787 |
|
788 \newcommand{\keywords}{\paragraph*{Keywords}} |
|
789 |
|
790 \newcommand{\terms}{\paragraph*{General Terms}} |
|
791 |
|
792 % Identification |
|
793 % -------------- |
|
794 |
|
795 |
|
796 \def \@conferencename {} |
|
797 \def \@conferenceinfo {} |
|
798 \def \@copyrightyear {} |
|
799 \def \@copyrightdata {[to be supplied]} |
|
800 \def \@proceedings {[Unknown Proceedings]} |
|
801 |
|
802 |
|
803 \newcommand{\conferenceinfo}[2]{% |
|
804 \gdef \@conferencename {#1}% |
|
805 \gdef \@conferenceinfo {#2}} |
|
806 |
|
807 \newcommand{\copyrightyear}[1]{% |
|
808 \gdef \@copyrightyear {#1}} |
|
809 |
|
810 \let \CopyrightYear = \copyrightyear |
|
811 |
|
812 \newcommand{\copyrightdata}[1]{% |
|
813 \gdef \@copyrightdata {#1}} |
|
814 |
|
815 \let \crdata = \copyrightdata |
|
816 |
|
817 \newcommand{\proceedings}[1]{% |
|
818 \gdef \@proceedings {#1}} |
|
819 |
|
820 % Lists |
|
821 % ----- |
|
822 |
|
823 |
|
824 \setlength{\leftmargini}{13pt} |
|
825 \setlength\leftmarginii{13pt} |
|
826 \setlength\leftmarginiii{13pt} |
|
827 \setlength\leftmarginiv{13pt} |
|
828 \setlength{\labelsep}{3.5pt} |
|
829 |
|
830 \setlength{\topsep}{\standardvspace} |
|
831 \if \@blockstyle |
|
832 \setlength{\itemsep}{1pt} |
|
833 \setlength{\parsep}{3pt} |
|
834 \else |
|
835 \setlength{\itemsep}{1pt} |
|
836 \setlength{\parsep}{3pt} |
|
837 \fi |
|
838 |
|
839 \renewcommand{\labelitemi}{{\small \centeroncapheight{\textbullet}}} |
|
840 \renewcommand{\labelitemii}{\centeroncapheight{\rule{2.5pt}{2.5pt}}} |
|
841 \renewcommand{\labelitemiii}{$-$} |
|
842 \renewcommand{\labelitemiv}{{\Large \textperiodcentered}} |
|
843 |
|
844 \renewcommand{\@listi}{% |
|
845 \leftmargin = \leftmargini |
|
846 \listparindent = 0pt} |
|
847 %%% \itemsep = 1pt |
|
848 %%% \parsep = 3pt} |
|
849 %%% \listparindent = \parindent} |
|
850 |
|
851 \let \@listI = \@listi |
|
852 |
|
853 \renewcommand{\@listii}{% |
|
854 \leftmargin = \leftmarginii |
|
855 \topsep = 1pt |
|
856 \labelwidth = \leftmarginii |
|
857 \advance \labelwidth by -\labelsep |
|
858 \listparindent = \parindent} |
|
859 |
|
860 \renewcommand{\@listiii}{% |
|
861 \leftmargin = \leftmarginiii |
|
862 \labelwidth = \leftmarginiii |
|
863 \advance \labelwidth by -\labelsep |
|
864 \listparindent = \parindent} |
|
865 |
|
866 \renewcommand{\@listiv}{% |
|
867 \leftmargin = \leftmarginiv |
|
868 \labelwidth = \leftmarginiv |
|
869 \advance \labelwidth by -\labelsep |
|
870 \listparindent = \parindent} |
|
871 |
|
872 % Mathematics |
|
873 % ----------- |
|
874 |
|
875 |
|
876 \def \theequation {\arabic{equation}} |
|
877 |
|
878 % Miscellaneous |
|
879 % ------------- |
|
880 |
|
881 |
|
882 \newcommand{\balancecolumns}{% |
|
883 \vfill\eject |
|
884 \global\@colht = \textheight |
|
885 \global\ht\@cclv = \textheight} |
|
886 |
|
887 \newcommand{\nut}{\hspace{.5em}} |
|
888 |
|
889 \newcommand{\softraggedright}{% |
|
890 \let \\ = \@centercr |
|
891 \leftskip = 0pt |
|
892 \rightskip = 0pt plus 10pt} |
|
893 |
|
894 % Program Code |
|
895 % ------- ---- |
|
896 |
|
897 |
|
898 \newcommand{\mono}[1]{% |
|
899 {\@tempdima = \fontdimen2\font |
|
900 \texttt{\spaceskip = 1.1\@tempdima #1}}} |
|
901 |
|
902 % Running Heads and Feet |
|
903 % ------- ----- --- ---- |
|
904 |
|
905 |
|
906 \def \@preprintfooter {} |
|
907 |
|
908 \newcommand{\preprintfooter}[1]{% |
|
909 \gdef \@preprintfooter {#1}} |
|
910 |
|
911 \if \@preprint |
|
912 |
|
913 \def \ps@plain {% |
|
914 \let \@mkboth = \@gobbletwo |
|
915 \let \@evenhead = \@empty |
|
916 \def \@evenfoot {\scriptsize \textit{\@preprintfooter}\hfil \thepage \hfil |
|
917 \textit{\@formatyear}}% |
|
918 \let \@oddhead = \@empty |
|
919 \let \@oddfoot = \@evenfoot} |
|
920 |
|
921 \else\if \@reprint |
|
922 |
|
923 \def \ps@plain {% |
|
924 \let \@mkboth = \@gobbletwo |
|
925 \let \@evenhead = \@empty |
|
926 \def \@evenfoot {\scriptsize \hfil \thepage \hfil}% |
|
927 \let \@oddhead = \@empty |
|
928 \let \@oddfoot = \@evenfoot} |
|
929 |
|
930 \else |
|
931 |
|
932 \let \ps@plain = \ps@empty |
|
933 \let \ps@headings = \ps@empty |
|
934 \let \ps@myheadings = \ps@empty |
|
935 |
|
936 \fi\fi |
|
937 |
|
938 \def \@formatyear {% |
|
939 \number\year/\number\month/\number\day} |
|
940 |
|
941 % Special Characters |
|
942 % ------- ---------- |
|
943 |
|
944 |
|
945 \DeclareRobustCommand{\euro}{% |
|
946 \protect{\rlap{=}}{\sf \kern .1em C}} |
|
947 |
|
948 % Title Page |
|
949 % ----- ---- |
|
950 |
|
951 |
|
952 \@setflag \@addauthorsdone = \@false |
|
953 |
|
954 \def \@titletext {\@latex@error{No title was provided}{}} |
|
955 \def \@subtitletext {} |
|
956 |
|
957 \newcount{\@authorcount} |
|
958 |
|
959 \newcount{\@titlenotecount} |
|
960 \newtoks{\@titlenotetext} |
|
961 |
|
962 \def \@titlebanner {} |
|
963 |
|
964 \renewcommand{\title}[1]{% |
|
965 \gdef \@titletext {#1}} |
|
966 |
|
967 \newcommand{\subtitle}[1]{% |
|
968 \gdef \@subtitletext {#1}} |
|
969 |
|
970 \newcommand{\authorinfo}[3]{% {names}{affiliation}{email/URL} |
|
971 \global\@increment \@authorcount |
|
972 \@withname\gdef {\@authorname\romannumeral\@authorcount}{#1}% |
|
973 \@withname\gdef {\@authoraffil\romannumeral\@authorcount}{#2}% |
|
974 \@withname\gdef {\@authoremail\romannumeral\@authorcount}{#3}} |
|
975 |
|
976 \renewcommand{\author}[1]{% |
|
977 \@latex@error{The \string\author\space command is obsolete; |
|
978 use \string\authorinfo}{}} |
|
979 |
|
980 \newcommand{\titlebanner}[1]{% |
|
981 \gdef \@titlebanner {#1}} |
|
982 |
|
983 \renewcommand{\maketitle}{% |
|
984 \pagestyle{plain}% |
|
985 \if \@onecolumn |
|
986 {\hsize = \standardtextwidth |
|
987 \@maketitle}% |
|
988 \else |
|
989 \twocolumn[\@maketitle]% |
|
990 \fi |
|
991 \@placetitlenotes |
|
992 \if \@copyrightwanted \@copyrightspace \fi} |
|
993 |
|
994 \def \@maketitle {% |
|
995 \begin{center} |
|
996 \@settitlebanner |
|
997 \let \thanks = \titlenote |
|
998 {\leftskip = 0pt plus 0.25\linewidth |
|
999 \rightskip = 0pt plus 0.25 \linewidth |
|
1000 \parfillskip = 0pt |
|
1001 \spaceskip = .7em |
|
1002 \noindent \LARGE \bfseries \@titletext \par} |
|
1003 \vskip 6pt |
|
1004 \noindent \Large \@subtitletext \par |
|
1005 \vskip 12pt |
|
1006 \ifcase \@authorcount |
|
1007 \@latex@error{No authors were specified for this paper}{}\or |
|
1008 \@titleauthors{i}{}{}\or |
|
1009 \@titleauthors{i}{ii}{}\or |
|
1010 \@titleauthors{i}{ii}{iii}\or |
|
1011 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{}{}\or |
|
1012 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{}\or |
|
1013 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}\or |
|
1014 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% |
|
1015 \@titleauthors{vii}{}{}\or |
|
1016 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% |
|
1017 \@titleauthors{vii}{viii}{}\or |
|
1018 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% |
|
1019 \@titleauthors{vii}{viii}{ix}\or |
|
1020 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% |
|
1021 \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{}{}\or |
|
1022 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% |
|
1023 \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{}\or |
|
1024 \@titleauthors{i}{ii}{iii}\@titleauthors{iv}{v}{vi}% |
|
1025 \@titleauthors{vii}{viii}{ix}\@titleauthors{x}{xi}{xii}% |
|
1026 \else |
|
1027 \@latex@error{Cannot handle more than 12 authors}{}% |
|
1028 \fi |
|
1029 \vspace{1.75pc} |
|
1030 \end{center}} |
|
1031 |
|
1032 \def \@settitlebanner {% |
|
1033 \if \@andp{\@preprint}{\@notp{\@emptydefp{\@titlebanner}}}% |
|
1034 \vbox to 0pt{% |
|
1035 \vskip -32pt |
|
1036 \noindent \textbf{\@titlebanner}\par |
|
1037 \vss}% |
|
1038 \nointerlineskip |
|
1039 \fi} |
|
1040 |
|
1041 \def \@titleauthors #1#2#3{% |
|
1042 \if \@andp{\@emptyargp{#2}}{\@emptyargp{#3}}% |
|
1043 \noindent \@setauthor{40pc}{#1}{\@false}\par |
|
1044 \else\if \@emptyargp{#3}% |
|
1045 \noindent \@setauthor{17pc}{#1}{\@false}\hspace{3pc}% |
|
1046 \@setauthor{17pc}{#2}{\@false}\par |
|
1047 \else |
|
1048 \noindent \@setauthor{12.5pc}{#1}{\@false}\hspace{2pc}% |
|
1049 \@setauthor{12.5pc}{#2}{\@false}\hspace{2pc}% |
|
1050 \@setauthor{12.5pc}{#3}{\@true}\par |
|
1051 \relax |
|
1052 \fi\fi |
|
1053 \vspace{20pt}} |
|
1054 |
|
1055 \def \@setauthor #1#2#3{% {width}{text}{unused} |
|
1056 \vtop{% |
|
1057 \def \and {% |
|
1058 \hspace{16pt}} |
|
1059 \hsize = #1 |
|
1060 \normalfont |
|
1061 \centering |
|
1062 \large \@name{\@authorname#2}\par |
|
1063 \vspace{5pt} |
|
1064 \normalsize \@name{\@authoraffil#2}\par |
|
1065 \vspace{2pt} |
|
1066 \textsf{\@name{\@authoremail#2}}\par}} |
|
1067 |
|
1068 \def \@maybetitlenote #1{% |
|
1069 \if \@andp{#1}{\@gtrp{\@authorcount}{3}}% |
|
1070 \titlenote{See page~\pageref{@addauthors} for additional authors.}% |
|
1071 \fi} |
|
1072 |
|
1073 \newtoks{\@fnmark} |
|
1074 |
|
1075 \newcommand{\titlenote}[1]{% |
|
1076 \global\@increment \@titlenotecount |
|
1077 \ifcase \@titlenotecount \relax \or |
|
1078 \@fnmark = {\ast}\or |
|
1079 \@fnmark = {\dagger}\or |
|
1080 \@fnmark = {\ddagger}\or |
|
1081 \@fnmark = {\S}\or |
|
1082 \@fnmark = {\P}\or |
|
1083 \@fnmark = {\ast\ast}% |
|
1084 \fi |
|
1085 \,$^{\the\@fnmark}$% |
|
1086 \edef \reserved@a {\noexpand\@appendtotext{% |
|
1087 \noexpand\@titlefootnote{\the\@fnmark}}}% |
|
1088 \reserved@a{#1}} |
|
1089 |
|
1090 \def \@appendtotext #1#2{% |
|
1091 \global\@titlenotetext = \expandafter{\the\@titlenotetext #1{#2}}} |
|
1092 |
|
1093 \newcount{\@authori} |
|
1094 |
|
1095 \iffalse |
|
1096 \def \additionalauthors {% |
|
1097 \if \@gtrp{\@authorcount}{3}% |
|
1098 \section{Additional Authors}% |
|
1099 \label{@addauthors}% |
|
1100 \noindent |
|
1101 \@authori = 4 |
|
1102 {\let \\ = ,% |
|
1103 \loop |
|
1104 \textbf{\@name{\@authorname\romannumeral\@authori}}, |
|
1105 \@name{\@authoraffil\romannumeral\@authori}, |
|
1106 email: \@name{\@authoremail\romannumeral\@authori}.% |
|
1107 \@increment \@authori |
|
1108 \if \@notp{\@gtrp{\@authori}{\@authorcount}} \repeat}% |
|
1109 \par |
|
1110 \fi |
|
1111 \global\@setflag \@addauthorsdone = \@true} |
|
1112 \fi |
|
1113 |
|
1114 \let \addauthorsection = \additionalauthors |
|
1115 |
|
1116 \def \@placetitlenotes { |
|
1117 \the\@titlenotetext} |
|
1118 |
|
1119 % Utilities |
|
1120 % --------- |
|
1121 |
|
1122 |
|
1123 \newcommand{\centeroncapheight}[1]{% |
|
1124 {\setbox\@tempboxa = \hbox{#1}% |
|
1125 \@measurecapheight{\@tempdima}% % Calculate ht(CAP) - ht(text) |
|
1126 \advance \@tempdima by -\ht\@tempboxa % ------------------ |
|
1127 \divide \@tempdima by 2 % 2 |
|
1128 \raise \@tempdima \box\@tempboxa}} |
|
1129 |
|
1130 \newbox{\@measbox} |
|
1131 |
|
1132 \def \@measurecapheight #1{% {\dimen} |
|
1133 \setbox\@measbox = \hbox{ABCDEFGHIJKLMNOPQRSTUVWXYZ}% |
|
1134 #1 = \ht\@measbox} |
|
1135 |
|
1136 \long\def \@titlefootnote #1#2{% |
|
1137 \insert\footins{% |
|
1138 \reset@font\footnotesize |
|
1139 \interlinepenalty\interfootnotelinepenalty |
|
1140 \splittopskip\footnotesep |
|
1141 \splitmaxdepth \dp\strutbox \floatingpenalty \@MM |
|
1142 \hsize\columnwidth \@parboxrestore |
|
1143 %%% \protected@edef\@currentlabel{% |
|
1144 %%% \csname p@footnote\endcsname\@thefnmark}% |
|
1145 \color@begingroup |
|
1146 \def \@makefnmark {$^{#1}$}% |
|
1147 \@makefntext{% |
|
1148 \rule\z@\footnotesep\ignorespaces#2\@finalstrut\strutbox}% |
|
1149 \color@endgroup}} |
|
1150 |
|
1151 % LaTeX Modifications |
|
1152 % ----- ------------- |
|
1153 |
|
1154 \def \@seccntformat #1{% |
|
1155 \@name{\the#1}% |
|
1156 \@expandaftertwice\@seccntformata \csname the#1\endcsname.\@mark |
|
1157 \quad} |
|
1158 |
|
1159 \def \@seccntformata #1.#2\@mark{% |
|
1160 \if \@emptyargp{#2}.\fi} |
|
1161 |
|
1162 % Revision History |
|
1163 % -------- ------- |
|
1164 |
|
1165 |
|
1166 % Date Person Ver. Change |
|
1167 % ---- ------ ---- ------ |
|
1168 |
|
1169 % 2004.09.12 PCA 0.1--5 Preliminary development. |
|
1170 |
|
1171 % 2004.11.18 PCA 0.5 Start beta testing. |
|
1172 |
|
1173 % 2004.11.19 PCA 0.6 Obsolete \author and replace with |
|
1174 % \authorinfo. |
|
1175 % Add 'nocopyrightspace' option. |
|
1176 % Compress article opener spacing. |
|
1177 % Add 'mathtime' option. |
|
1178 % Increase text height by 6 points. |
|
1179 |
|
1180 % 2004.11.28 PCA 0.7 Add 'cm/computermodern' options. |
|
1181 % Change default to Times text. |
|
1182 |
|
1183 % 2004.12.14 PCA 0.8 Remove use of mathptm.sty; it cannot |
|
1184 % coexist with latexsym or amssymb. |
|
1185 |
|
1186 % 2005.01.20 PCA 0.9 Rename class file to sigplanconf.cls. |
|
1187 |
|
1188 % 2005.03.05 PCA 0.91 Change default copyright data. |
|
1189 |
|
1190 % 2005.03.06 PCA 0.92 Add at-signs to some macro names. |
|
1191 |
|
1192 % 2005.03.07 PCA 0.93 The 'onecolumn' option defaults to '11pt', |
|
1193 % and it uses the full type width. |
|
1194 |
|
1195 % 2005.03.15 PCA 0.94 Add at-signs to more macro names. |
|
1196 % Allow margin paragraphs during review. |
|
1197 |
|
1198 % 2005.03.22 PCA 0.95 Implement \euro. |
|
1199 % Remove proof and newdef environments. |
|
1200 |
|
1201 % 2005.05.06 PCA 1.0 Eliminate 'onecolumn' option. |
|
1202 % Change footer to small italic and eliminate |
|
1203 % left portion if no \preprintfooter. |
|
1204 % Eliminate copyright notice if preprint. |
|
1205 % Clean up and shrink copyright box. |
|
1206 |
|
1207 % 2005.05.30 PCA 1.1 Add alternate permission statements. |
|
1208 |
|
1209 % 2005.06.29 PCA 1.1 Publish final first edition of guide. |
|
1210 |
|
1211 % 2005.07.14 PCA 1.2 Add \subparagraph. |
|
1212 % Use block paragraphs in lists, and adjust |
|
1213 % spacing between items and paragraphs. |
|
1214 |
|
1215 % 2006.06.22 PCA 1.3 Add 'reprint' option and associated |
|
1216 % commands. |
|
1217 |
|
1218 % 2006.08.24 PCA 1.4 Fix bug in \maketitle case command. |
|
1219 |
|
1220 % 2007.03.13 PCA 1.5 The title banner only displays with the |
|
1221 % 'preprint' option. |
|
1222 |
|
1223 % 2007.06.06 PCA 1.6 Use \bibfont in \thebibliography. |
|
1224 % Add 'natbib' option to load and configure |
|
1225 % the natbib package. |
|
1226 |
|
1227 % 2007.11.20 PCA 1.7 Balance line lengths in centered article |
|
1228 % title (thanks to Norman Ramsey). |
|
1229 |
|
1230 % 2009.01.26 PCA 1.8 Change natbib \bibpunct values. |
|
1231 |
|
1232 % 2009.03.24 PCA 1.9 Change natbib to use the 'numbers' option. |
|
1233 % Change templates to use 'natbib' option. |
|
1234 |
|
1235 % 2009.09.01 PCA 2.0 Add \reprintprice command (suggested by |
|
1236 % Stephen Chong). |
|
1237 |
|
1238 % 2009.09.08 PCA 2.1 Make 'natbib' the default; add 'nonatbib'. |
|
1239 % SB Add 'authoryear' and 'numbers' (default) to |
|
1240 % control citation style when using natbib. |
|
1241 % Add \bibpunct to change punctuation for |
|
1242 % 'authoryear' style. |
|
1243 |
|
1244 % 2009.09.21 PCA 2.2 Add \softraggedright to the thebibliography |
|
1245 % environment. Also add to template so it will |
|
1246 % happen with natbib. |
|
1247 |
|
1248 % 2009.09.30 PCA 2.3 Remove \softraggedright from thebibliography. |
|
1249 % Just include in the template. |
|
1250 |
|
1251 % 2010.05.24 PCA 2.4 Obfuscate author's email address. |
|