ghc-dup: 7834262e249fa92e97da49ad69765b612a07a689

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

Generated by git2html.