source: docs/Cmpt886_Project_Report/sigplanconf.cls @ 4490

Last change on this file since 4490 was 1122, checked in by lindanl, 8 years ago

Add project report for cmpt886 on parallelizing Parabix2

File size: 34.7 KB
Line 
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%               paul@windfall.com
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}[2009/09/30 v2.3 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.
Note: See TracBrowser for help on using the repository browser.