Journal/document/acmtrans2m.cls
changeset 372 2c56b20032a7
equal deleted inserted replaced
371:48b231495281 372:2c56b20032a7
       
     1 % latex2e by nr 7/3/96
       
     2 % acmtrans.cls revised 4/19/96
       
     3 %              revised again 31-JAN-1996 (see end of file)
       
     4 %              revised 5-14-1997 :
       
     5 %                       Don't use sans-serif font in categories and descriptors
       
     6 %                       include latexsym by default
       
     7 %                       Define longpage and shortpage
       
     8 % Adjusted from the acmtrans2e.cls file to the needs of ACM TOCL by
       
     9 % Marco Aiello on June 14, 2000.
       
    10 % Further changes made by Frederic Goualard on Sep. 27, 2000
       
    11 % to take care of the indentation problem in the bibliography 
       
    12 % arising without the use of the hyperref package.
       
    13 % Modularization to adapt to the needs of ALL Transactions of the ACM, 
       
    14 % and the Journal of the ACM, by Marco Aiello on June and October 2001.
       
    15 % Here is the basic framework that is needed to convert your paper 
       
    16 % into ACM Transactions format and bibliographic format.  For a tutorial
       
    17 % introduction, see ``instructions.tex'' (compile it with LaTeX) that
       
    18 % accompanies the distribution of this style file.
       
    19 %
       
    20 %  -> \documentclass{acmtrans2m}
       
    21 %  -> \markboth{}{}
       
    22 %         takes 2 arguments and it is for the left- and right-page headers:
       
    23 %         the first set of braces is assigned for author's name(s) 
       
    24 %         and
       
    25 %         the second set of braces is assigned for the title 
       
    26 %             (if the title is too long, contraction may be needed
       
    27 %  -> \title{}
       
    28 %         if the title is too long, it can be separated by \\
       
    29 %  -> \author{}
       
    30 %         author1 \\ author1 affiliation
       
    31 %         \and
       
    32 %         author2 \\ author2 affiliation
       
    33 %  -> \begin{abstract}
       
    34 %  -> \end{abstract}
       
    35 %
       
    36 %  -> \category{}{}{}
       
    37 %         takes 3 arguments for the Computing Reviews Classification Scheme.
       
    38 %         ex: \category{D.3.3}{Programming Languages}{Language Constructs and 
       
    39 %                   Features}[data types and structures]
       
    40 %                   the last argument, in square brackets, is optional.
       
    41 %  -> \terms{} (ex: \terms{Human Factors, Languages})
       
    42 %  -> \keywords{} (in alphabetical order \keywords{document processing, sequences, 
       
    43 %                      string searching, subsequences, substrings})
       
    44 %  -> \begin{document}
       
    45 %
       
    46 %  -> \begin{bottomstuff}
       
    47 %          similar to \thanks     
       
    48 %          for authors' addresses; research/grant statements
       
    49 %  -> \end{bottomstuff}
       
    50 %  -> \maketitle
       
    51 %
       
    52 %     Now you can start the body of the paper; your figures, tables and 
       
    53 %          use all the latex constructs.
       
    54 %
       
    55 %  -> \begin{acks}
       
    56 %          acknowledgements
       
    57 %  -> \end{acks}
       
    58 %
       
    59 %  -> \bibliographystyle{acmtrans}
       
    60 %  -> \bibliography{mybib_file}
       
    61 %
       
    62 %     ****
       
    63 %     If your paper has been accepted with a separate (electronic only)
       
    64 %        appendix, you need to add the following control sequence:
       
    65 %
       
    66 %
       
    67 %       body of appendix 
       
    68 %!!!!!! \appendixhead has be cut into two: \appendixhead and \elecappendix
       
    69 %!!!!!! See end of file. (jtb)
       
    70 %
       
    71 %  -> \end{document}
       
    72 %
       
    73 % Do not worry about the other definitions in this style file
       
    74 % Remember to compile: latex, bibtex, latex latex
       
    75 %
       
    76 % Bibliographic cite forms needed:
       
    77 %
       
    78 %  \cite{key}
       
    79 %    which produces citations with author list and year.
       
    80 %    eg. [Brown 1978; Jarke, et al. 1985]
       
    81 %  \citeA{key}
       
    82 %    which produces citations with only the author list.
       
    83 %    eg. [Brown; Jarke, et al.]
       
    84 %  \citeN{key}
       
    85 %    which produces citations with the author list and year, but
       
    86 %    can be used as nouns in a sentence; no brackets appear around
       
    87 %    the author names, but only around the year.
       
    88 %      eg. Shneiderman [1978] states that......
       
    89 %    \citeN should only be used for a single citation.
       
    90 %    \citeNN{refkey1,refkey2} for author [ref1year; ref2year]
       
    91 %    \citeyear{key}
       
    92 %        which produces the year information only, within brackets.
       
    93 %
       
    94 % Abbreviated author lists use the ``et al.'' construct.
       
    95 %
       
    96 % The above are examples of required ACM bibliographic cite formats needed.
       
    97 % *******************
       
    98 % Here is the complete list of cite forms from the chicago bibliographic style
       
    99 %
       
   100 %  \cite{key}
       
   101 %    which produces citations with abbreviated author list and year.
       
   102 %  \citeNP{key}
       
   103 %    which produces citations with abbreviated author list and year.
       
   104 %  \citeA{key}
       
   105 %    which produces only the abbreviated author list.
       
   106 %  \citeANP{key}
       
   107 %    which produces only the abbreviated author list.
       
   108 %  \citeN{key}
       
   109 %    which produces the abbreviated author list and year, with only the
       
   110 %    year in parentheses. Use with only one citation.
       
   111 %  \citeyear{key}
       
   112 %    which produces the year information only, within parentheses.
       
   113 %  \citeyearNP{key}
       
   114 %    which produces the year information only.
       
   115 %
       
   116 % Abbreviated author lists use the ``et al.'' construct.
       
   117 %
       
   118 % `NP' means `no parentheses' 
       
   119 %
       
   120 
       
   121 \NeedsTeXFormat{LaTeX2e}
       
   122 \ProvidesClass{acmtrans2m} [1996/07/03 ACM Transactions class based on <23 April 96>]
       
   123 \RequirePackage{latexsym}
       
   124 %aiellom{
       
   125 \RequirePackage{url}
       
   126 
       
   127 % Do not change the following! Use the appropriate acmtocl, acmtods, ... 
       
   128 % options in the .tex file
       
   129 \def\@acmVolume{V} %the volume
       
   130 \def\@acmNumber{N} %the number
       
   131 \def\@acmYear{YY}  %the last two digits of the year, 
       
   132 \def\@acmMonth{0}  %the month number
       
   133 \def\@journalName{ACM Journal Name} %the name of the ACM journal
       
   134 \def\@journalNameShort{jn} %the acronym of the ACM journal
       
   135 \def\@permissionCodeOne{0000-0000} %the permission code of the ACM journal
       
   136 \def\@permissionCodeTwo{\acmMonthCode} %the permission code of the ACM journal part 2
       
   137 \def\@pageCode{\acmPageCode} %the first page of the article in 4 digits
       
   138 
       
   139 \newif\if@acmnow \newif\if@acmjacm \newif\if@acmcsur
       
   140 \newif\if@acmtissec \newif\if@acmtochi \newif\if@acmtocl
       
   141 \newif\if@acmtocs \newif\if@acmtodaes \newif\if@acmtods
       
   142 \newif\if@acmtogs \newif\if@acmtois \newif\if@acmtoit
       
   143 \newif\if@acmtomacs \newif\if@acmtoms \newif\if@acmtoplas
       
   144 \newif\if@acmtosem
       
   145 
       
   146 \DeclareOption{acmnow}{
       
   147   \typeout{Directly generating the Month and Year for footers from the clock.}
       
   148   \def\@acmYear{\yearTwoDigits}  
       
   149   \def\@acmMonth{\the\month}  
       
   150 }
       
   151 
       
   152 \DeclareOption{acmjacm}{
       
   153   \typeout{}
       
   154   \typeout{Using ACM JACM option: 2001/06/01 by Marco Aiello et al.}
       
   155   \typeout{}
       
   156   %\global\@acmjacmfalse
       
   157   \global\@acmcsurfalse \global\@acmtissecfalse \global\@acmtochifalse
       
   158   \global\@acmtoclfalse \global\@acmtocsfalse \global\@acmtodaesfalse
       
   159   \global\@acmtodsfalse \global\@acmtogsfalse \global\@acmtoisfalse
       
   160   \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
       
   161   \global\@acmtoplasfalse \global\@acmtosemfalse 
       
   162   \global\@acmjacmtrue
       
   163   \def\@journalName{Journal of the ACM} 
       
   164   \def\@journalNameShort{jacm}
       
   165   \def\@permissionCodeOne{0004-5411} 
       
   166 }
       
   167 
       
   168 \DeclareOption{acmcsur}{
       
   169   \typeout{}
       
   170   \typeout{Using ACM CSUR option: 2001/06/01 by Marco Aiello et al.}
       
   171   \typeout{}
       
   172   \global\@acmjacmfalse % \global\@acmcsurfalse
       
   173   \global\@acmtissecfalse \global\@acmtochifalse \global\@acmtoclfalse
       
   174   \global\@acmtocsfalse \global\@acmtodaesfalse \global\@acmtodsfalse
       
   175   \global\@acmtogsfalse \global\@acmtoisfalse \global\@acmtoitfalse
       
   176   \global\@acmtomacsfalse \global\@acmtomsfalse
       
   177   \global\@acmtoplasfalse \global\@acmtosemfalse
       
   178   \global\@acmcsurtrue
       
   179   \def\@journalName{ACM Computing Surveys}
       
   180   \def\@journalNameShort{csur}        
       
   181   \def\@permissionCodeOne{0360-0300} 
       
   182 }
       
   183 
       
   184 \DeclareOption{acmtissec}{
       
   185   \typeout{}
       
   186   \typeout{Using ACM TISSEC option: 2001/06/01 by Marco Aiello et al.}
       
   187   \typeout{}
       
   188   \global\@acmjacmfalse \global\@acmcsurfalse %\global\@acmtissecfalse
       
   189   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   190   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   191   \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
       
   192   \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
       
   193   \global\@acmtissectrue
       
   194   \def\@journalName{ACM Transactions on Information Systems and Security}
       
   195   \def\@journalNameShort{tissec}        
       
   196   \def\@permissionCodeOne{1094-9224} 
       
   197 }
       
   198 
       
   199 \DeclareOption{acmtochi}{
       
   200   \typeout{}
       
   201   \typeout{Using ACM TOCHI option: 2001/06/01 by Marco Aiello et al.}
       
   202   \typeout{}
       
   203   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   204   %\global\@acmtochifalse
       
   205   \global\@acmtoclfalse \global\@acmtocsfalse \global\@acmtodaesfalse
       
   206   \global\@acmtodsfalse \global\@acmtogsfalse \global\@acmtoisfalse
       
   207   \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
       
   208   \global\@acmtoplasfalse \global\@acmtosemfalse
       
   209   \global\@acmtochitrue
       
   210   \def\@journalName{ACM Transactions on Computer-Human Interaction}
       
   211   \def\@journalNameShort{tochi}        
       
   212   \def\@permissionCodeOne{1073-0516} 
       
   213 }
       
   214 
       
   215 \DeclareOption{acmtocl}{ 
       
   216   \typeout{} 
       
   217   \typeout{Using ACM TOCL option: 2001/06/01 by Marco Aiello et al.}  
       
   218   \typeout{}
       
   219   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   220   \global\@acmtochifalse  %\global\@acmtoclfalse
       
   221   \global\@acmtocsfalse \global\@acmtodaesfalse \global\@acmtodsfalse
       
   222   \global\@acmtogsfalse \global\@acmtoisfalse \global\@acmtoitfalse
       
   223   \global\@acmtomacsfalse \global\@acmtomsfalse
       
   224   \global\@acmtoplasfalse \global\@acmtosemfalse 
       
   225   \global\@acmtocltrue
       
   226   \def\@journalName{ACM Transactions on Computational Logic}
       
   227   \def\@journalNameShort{tocl}        
       
   228   \def\@permissionCodeOne{1529-3785} 
       
   229 }
       
   230 
       
   231 \DeclareOption{acmtocs}{
       
   232   \typeout{}
       
   233   \typeout{Using ACM TOCS option: 2001/06/01 by Marco Aiello et al.}
       
   234   \typeout{}
       
   235   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   236   \global\@acmtochifalse \global\@acmtoclfalse
       
   237   %\global\@acmtocsfalse
       
   238   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   239   \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
       
   240   \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
       
   241   \global\@acmtocstrue
       
   242   \def\@journalName{ACM Transactions on Computer Systems}
       
   243   \def\@journalNameShort{tocs}        
       
   244   \def\@permissionCodeOne{0734-2071} 
       
   245 }
       
   246 
       
   247 \DeclareOption{acmtodaes}{
       
   248   \typeout{}
       
   249   \typeout{Using ACM TODAES option: 2001/06/01 by Marco Aiello et al.}
       
   250   \typeout{}
       
   251   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   252   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   253   %\global\@acmtodaesfalse
       
   254   \global\@acmtodsfalse \global\@acmtogsfalse \global\@acmtoisfalse
       
   255   \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
       
   256   \global\@acmtoplasfalse \global\@acmtosemfalse
       
   257   \global\@acmtodaestrue
       
   258   \def\@journalName{ACM Transactions on Design Automation of Electronic Systems}
       
   259   \def\@journalNameShort{todaes}        
       
   260   \def\@permissionCodeOne{1084-4309} 
       
   261 }
       
   262 
       
   263 \DeclareOption{acmtods}{
       
   264   \typeout{}
       
   265   \typeout{Using ACM TODS option: 2001/06/01 by Marco Aiello et al.}
       
   266   \typeout{}
       
   267   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   268   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   269   \global\@acmtodaesfalse
       
   270   %\global\@acmtodsfalse
       
   271   \global\@acmtogsfalse \global\@acmtoisfalse \global\@acmtoitfalse
       
   272   \global\@acmtomacsfalse \global\@acmtomsfalse
       
   273   \global\@acmtoplasfalse \global\@acmtosemfalse
       
   274   \global\@acmtodstrue
       
   275   \def\@journalName{ACM Transactions on Database Systems}
       
   276   \def\@journalNameShort{tods}        
       
   277   \def\@permissionCodeOne{0362-5915} 
       
   278 }
       
   279 
       
   280 \DeclareOption{acmtogs}{
       
   281   \typeout{}
       
   282   \typeout{Using ACM TOGS option: 2001/06/01 by Marco Aiello et al.}
       
   283   \typeout{}
       
   284   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   285   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   286   \global\@acmtodaesfalse \global\@acmtodsfalse
       
   287   %\global\@acmtogsfalse
       
   288   \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
       
   289   \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
       
   290   \global\@acmtogstrue
       
   291   \def\@journalName{ACM Transactions on Graphics}
       
   292   \def\@journalNameShort{togs}        
       
   293   \def\@permissionCodeOne{0730-0301} 
       
   294 }
       
   295 
       
   296 \DeclareOption{acmtois}{
       
   297   \typeout{}
       
   298   \typeout{Using ACM TOIS option: 2001/06/01 by Marco Aiello et al.}
       
   299   \typeout{}
       
   300   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   301   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   302   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   303   %\global\@acmtoisfalse
       
   304   \global\@acmtoitfalse \global\@acmtomacsfalse \global\@acmtomsfalse
       
   305   \global\@acmtoplasfalse \global\@acmtosemfalse
       
   306   \global\@acmtoistrue
       
   307   \def\@journalName{ACM Transactions on Information Systems}
       
   308   \def\@journalNameShort{tois}        
       
   309   \def\@permissionCodeOne{1046-8188} 
       
   310 }
       
   311 
       
   312 \DeclareOption{acmtoit}{
       
   313   \typeout{}
       
   314   \typeout{Using ACM TOIT option: 2001/06/01 by Marco Aiello et al.}
       
   315   \typeout{}
       
   316   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   317   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   318   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   319   \global\@acmtoisfalse
       
   320   %\global\@acmtoitfalse
       
   321   \global\@acmtomacsfalse \global\@acmtomsfalse
       
   322   \global\@acmtoplasfalse \global\@acmtosemfalse
       
   323   \global\@acmtoittrue
       
   324   \def\@journalName{ACM Transactions on Internet Technology}
       
   325   \def\@journalNameShort{toit}        
       
   326   \def\@permissionCodeOne{1533-5399} 
       
   327 }
       
   328 
       
   329 \DeclareOption{acmtomacs}{
       
   330   \typeout{}
       
   331   \typeout{Using ACM TOMACS option: 2001/06/01 by Marco Aiello et al.}
       
   332   \typeout{}
       
   333   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   334   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   335   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   336   \global\@acmtoisfalse \global\@acmtoitfalse
       
   337   %\global\@acmtomacsfalse
       
   338   \global\@acmtomsfalse \global\@acmtoplasfalse \global\@acmtosemfalse
       
   339   \global\@acmtomacstrue
       
   340   \def\@journalName{ACM Transactions on Modeling and Computer Simulation}
       
   341   \def\@journalNameShort{tomacs}        
       
   342   \def\@permissionCodeOne{1049-3301} 
       
   343 }
       
   344 
       
   345 \DeclareOption{acmtoms}{
       
   346   \typeout{}
       
   347   \typeout{Using ACM TOMS option: 2001/06/01 by Marco Aiello et al.}
       
   348   \typeout{}
       
   349   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   350   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   351   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   352   \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
       
   353   %\global\@acmtomsfalse
       
   354   \global\@acmtoplasfalse \global\@acmtosemfalse
       
   355   \global\@acmtomstrue
       
   356   \def\@journalName{ACM Transactions on Mathematical Software}
       
   357   \def\@journalNameShort{toms}        
       
   358   \def\@permissionCodeOne{0098-3500} 
       
   359 }
       
   360 
       
   361 \DeclareOption{acmtoplas}{
       
   362   \typeout{}
       
   363   \typeout{Using ACM TOPLAS option: 2001/06/01 by Marco Aiello et al.}
       
   364   \typeout{}
       
   365   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   366   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   367   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   368   \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
       
   369   \global\@acmtomsfalse
       
   370   %\global\@acmtoplasfalse
       
   371   \global\@acmtosemfalse
       
   372   \global\@acmtoplastrue
       
   373   \def\@journalName{ACM Transactions on Programming Languages and Systems}
       
   374   \def\@journalNameShort{toplas}        
       
   375   \def\@permissionCodeOne{0164-0925} 
       
   376 }
       
   377 
       
   378 \DeclareOption{acmtosem}{
       
   379   \typeout{}
       
   380   \typeout{Using ACM, TOSEM option: 2001/06/01 by Marco Aiello et al.}
       
   381   \typeout{}
       
   382   \global\@acmjacmfalse \global\@acmcsurfalse \global\@acmtissecfalse
       
   383   \global\@acmtochifalse \global\@acmtoclfalse \global\@acmtocsfalse
       
   384   \global\@acmtodaesfalse \global\@acmtodsfalse \global\@acmtogsfalse
       
   385   \global\@acmtoisfalse \global\@acmtoitfalse \global\@acmtomacsfalse
       
   386   \global\@acmtomsfalse \global\@acmtoplasfalse
       
   387   %\global\@acmtosemfalse
       
   388   \global\@acmtosemtrue
       
   389   \def\@journalName{ACM Transactions on Software Engineering and Methodology}
       
   390   \def\@journalNameShort{tosem}        
       
   391   \def\@permissionCodeOne{1049-331X} 
       
   392 }
       
   393 %}aiellom
       
   394 
       
   395 
       
   396 
       
   397 \if@compatibility\else
       
   398 \DeclareOption{a4paper}
       
   399    {\setlength\paperheight {297mm}%
       
   400     \setlength\paperwidth  {210mm}%
       
   401     \def\special@paper{210mm,297mm}}
       
   402 \DeclareOption{a5paper}
       
   403    {\setlength\paperheight {210mm}%
       
   404     \setlength\paperwidth  {148mm}%
       
   405     \def\special@paper{148mm,210mm}}
       
   406 \DeclareOption{b5paper}
       
   407    {\setlength\paperheight {250mm}%
       
   408     \setlength\paperwidth  {176mm}%
       
   409     \setlength\voffset     {-15mm}%
       
   410     \setlength\hoffset     {-20mm}%
       
   411     \def\special@paper{176mm,250mm}}
       
   412 \DeclareOption{letterpaper}
       
   413    {\setlength\paperheight {11in}%
       
   414     \setlength\paperwidth  {8.5in}%
       
   415     \def\special@paper{8.5in,11in}}
       
   416 \DeclareOption{legalpaper}
       
   417    {\setlength\paperheight {14in}%
       
   418     \setlength\paperwidth  {8.5in}%
       
   419     \def\special@paper{8.5in,14in}}
       
   420 \DeclareOption{executivepaper}
       
   421    {\setlength\paperheight {10.5in}%
       
   422     \setlength\paperwidth  {7.25in}%
       
   423     \def\special@paper{7.25in,10.5in}}
       
   424 \DeclareOption{landscape}
       
   425    {\setlength\@tempdima   {\paperheight}%
       
   426     \setlength\paperheight {\paperwidth}%
       
   427     \setlength\paperwidth  {\@tempdima}}
       
   428 \fi
       
   429 
       
   430 \DeclareOption{checkMargin}{\setlength\overfullrule{5pt}}
       
   431 \DeclareOption{final}{\setlength\overfullrule{0pt}}
       
   432 
       
   433 \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
       
   434 \DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
       
   435 
       
   436 \DeclareOption{10pt}{\def\@ptsize{0}} %needed for amssymbols.sty 
       
   437 \DeclareOption{11pt}{\ClassError{acmtrans}{11pt style not supported}
       
   438                         {ACM transactions documents can be set in 10pt only}}
       
   439 \DeclareOption{12pt}{\ClassError{acmtrans}{11pt style not supported}
       
   440                         {ACM transactions documents can be set in 10pt only}}
       
   441 \newif\if@hyperref
       
   442 \DeclareOption{hyperref}{%
       
   443         \def\pages{\pageref{@firstpg}--\pageref{@lastpg}}%
       
   444         \def\mypage{\thepage}%
       
   445         \def\@getpagenum#1#2#3#4{#2}%
       
   446         \def\pdfinfo#1#2{\pdfmark{pdfmark=/DOCINFO,Title=#1,Author=#2}}
       
   447         \global\@hyperreftrue
       
   448         }
       
   449 \DeclareOption{nohyperref}{
       
   450                 \def\pages{\pageref{@firstpg}--\pageref{@lastpg}}%
       
   451                 \def\@getpagenum#1#2{#2}%
       
   452                 \def\mypage{\thepage}%
       
   453                 \def\pdfinfo#1#2{}%
       
   454                 \def\pdfbookmark#1#2{}%
       
   455                 \global\@hyperreffalse
       
   456                 }
       
   457 \DeclareOption{notfinal}{
       
   458                 \def\pages{BD}%
       
   459                 \def\mypage{TBD}%
       
   460                 \def\@getpagenum#1#2{#2}%
       
   461                 \def\pdfinfo#1#2{}%
       
   462                 \def\pdfbookmark#1#2{}%
       
   463                 }
       
   464 \DeclareOption{omitline}{\def\@abstractbottom{\relax}}
       
   465 \DeclareOption{dontomitline}{\def\@abstractbottom{\if@acmjacm\else\hbox{\vrule height .2pt width 30pc}\fi}}
       
   466 \ExecuteOptions{twoside,notfinal,10pt,dontomitline,nohyperref,letterpaper} % defaults
       
   467 
       
   468 
       
   469 
       
   470 \ProcessOptions
       
   471 
       
   472 %{aiellom to automatize the issue specific data
       
   473 \def\acmVolume#1{\def\@acmVolume{#1}}
       
   474 \def\acmNumber#1{\def\@acmNumber{#1}}
       
   475 \if@acmnow\else
       
   476 \def\acmYear#1{\def\@acmYear{#1}}
       
   477 \def\acmMonth#1{\def\@acmMonth{#1}}
       
   478 \fi
       
   479 \def\@acmMonthName{\ifnum\@acmMonth=1 January\fi\ifnum\@acmMonth=2 February\fi\ifnum\@acmMonth=3 March\fi\ifnum\@acmMonth=4 April\fi\ifnum\@acmMonth=5 May\fi\ifnum\@acmMonth=6 June\fi\ifnum\@acmMonth=7 July\fi\ifnum\@acmMonth=8 August\fi\ifnum\@acmMonth=9 September\fi\ifnum\@acmMonth=10 October\fi\ifnum\@acmMonth=11 November\fi\ifnum\@acmMonth=12 December\fi}
       
   480 
       
   481 
       
   482 
       
   483 % Command to get the year from the system and display the last two digits
       
   484 \newcommand{\ignoretwo}[2]{}
       
   485 \newcommand{\yearTwoDigits}{\expandafter\ignoretwo\the\year}
       
   486 % overright the \@setref definition, so that if a reference is undefined 
       
   487 % then it returns a number 0 and then the usual double boldface 
       
   488 % question marks ??
       
   489 % this is necessary for the \acmPageCode command, otherwise it gives an error 
       
   490 % everytime the aux file is not there
       
   491 \def\@setref#1#2#3{%
       
   492   \ifx#1\relax
       
   493     \number 0\relax
       
   494     \protect\G@refundefinedtrue
       
   495     \nfss@text{\reset@font\bfseries ??}%
       
   496     \@latex@warning{Reference `#3' on page \thepage \space undefined}%
       
   497   \else
       
   498     \expandafter#2#1\null
       
   499   \fi}
       
   500 %make the code a four digits string based on the first page number
       
   501 \newcommand{\acmPageCode}{\bgroup
       
   502   \newcount\c@tempo
       
   503   \setcounter{tempo}{\number\pageref{@firstpg}}\ifnum \c@tempo<1000 0\fi\ifnum \c@tempo<100 0\fi\ifnum \c@tempo<10 0\fi\ifnum \c@tempo<1 0\fi\pageref{@firstpg}
       
   504   \egroup
       
   505 }
       
   506 \newcommand{\acmMonthCode}{\bgroup
       
   507   \newcount\c@tempo
       
   508   \setcounter{tempo}{\number\@acmMonth}\ifnum \c@tempo<10 0\fi\number\@acmMonth00\egroup
       
   509 }%}aiellom
       
   510 
       
   511 
       
   512 
       
   513 \lineskip 1pt \normallineskip 1pt
       
   514 \def\baselinestretch{1}
       
   515 
       
   516 \renewcommand\normalsize{%
       
   517   \@setfontsize\normalsize\@xpt\@xiipt
       
   518   \abovedisplayskip 6pt plus2pt minus1pt\belowdisplayskip \abovedisplayskip
       
   519   \abovedisplayshortskip 6pt plus0pt minus 3pt
       
   520   \belowdisplayshortskip 6pt plus0pt minus3pt\let\@listi\@listI} 
       
   521 
       
   522 \newcommand\small{%
       
   523   \@setfontsize\small\@ixpt{11pt}%
       
   524   \abovedisplayskip 5pt plus 2pt minus 1pt\belowdisplayskip \abovedisplayskip
       
   525   \abovedisplayshortskip 5pt plus0pt minus2pt\belowdisplayshortskip 5pt plus0pt
       
   526       minus 2pt
       
   527   \def\@listi{\leftmargin\leftmargini \topsep 5pt plus 2pt minus 1pt\parsep 0pt
       
   528     plus .7pt 
       
   529   \itemsep 1.6pt plus .8pt}}
       
   530 \newcommand\footnotesize{%
       
   531 %   \@setfontsize\footnotesize\@viiipt{10pt}
       
   532  \@setsize\footnotesize{10pt}\viiipt\@viiipt
       
   533   \abovedisplayskip 4pt plus 1pt minus 0pt\belowdisplayskip \abovedisplayskip
       
   534   \abovedisplayshortskip 4pt plus 0pt minus 1pt\belowdisplayshortskip 4pt plus
       
   535        0pt minus 1pt
       
   536   \def\@listi{\leftmargin\leftmargini \topsep 4pt plus 1pt minus
       
   537      0pt\parsep 0pt plus .5pt 
       
   538      \itemsep 1pt plus .7pt}}
       
   539 
       
   540 \newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
       
   541 \newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
       
   542 \newcommand\large{\@setfontsize\large\@xiipt{14}}
       
   543 \newcommand\Large{\@setfontsize\Large\@xivpt{18}}
       
   544 \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20}}
       
   545 \newcommand\huge{\@setfontsize\huge\@xxpt{25}}
       
   546 \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
       
   547 
       
   548 \normalsize 
       
   549 
       
   550  \oddsidemargin .75in \evensidemargin .75in \marginparwidth .5in 
       
   551  \marginparsep .125in 
       
   552  \topmargin .25in \headheight 12pt\headsep 16pt
       
   553   %% not in latex2e  \footheight 10pt
       
   554   \footskip 15pt 
       
   555 
       
   556 \textheight 47pc \textwidth 30pc \columnsep 10pt \columnseprule 0pt 
       
   557 % next five lines added by K.R. Apt, March 20, 01
       
   558 \advance\textheight-2.6pt
       
   559 \newdimen\normaltextheight
       
   560 \setlength\normaltextheight{\textheight}
       
   561 %\renewcommand\rmdefault{pnc}
       
   562 %\renewcommand\sfdefault{phv}
       
   563 
       
   564 
       
   565 \footnotesep 7pt
       
   566 \skip\footins 15pt plus 4pt minus 3pt 
       
   567 \floatsep 12pt plus 2pt minus 2pt 
       
   568 \textfloatsep \floatsep 
       
   569 \intextsep 1pc plus 1pc 
       
   570 %%% not in 2e %% \@maxsep 1pc 
       
   571 %%% not in 2e %% \@dblmaxsep 20pt 
       
   572 \dblfloatsep 12pt plus 2pt minus 2pt 
       
   573 \dbltextfloatsep 20pt plus 2pt minus 4pt 
       
   574 \@fptop 0pt plus 1fil \@fpsep 1pc plus 2fil \@fpbot 0pt plus 1fil 
       
   575 \@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil
       
   576 \marginparpush 6pt 
       
   577 
       
   578 \parskip 0pt plus .1pt \parindent 10pt \partopsep 0pt 
       
   579 \@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 
       
   580 \@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty
       
   581 -\@lowpenalty 
       
   582 
       
   583 
       
   584 \def\part{\@ucheadtrue
       
   585  \@startsection{part}{9}{\z@}{-10pt plus -4pt minus 
       
   586  -2pt}{4pt}{\reset@font\normalsize\sffamily}}
       
   587 \def\section{\@ucheadtrue
       
   588  \@startsection{section}{1}{\z@}{-10pt plus -4pt minus 
       
   589  -2pt}{4pt}{\reset@font\normalsize\sffamily}}
       
   590 \def\subsection{\@ucheadfalse
       
   591  \@startsection{subsection}{2}{\z@}{-8pt plus -2pt minus 
       
   592  -1pt}{4pt}{\reset@font\normalsize\sffamily}}
       
   593 \def\subsubsection{\@ucheadfalse
       
   594  \@startsection{subsubsection}{3}{\parindent}{6pt plus 
       
   595 1pt}{-5pt}{\reset@font\normalsize\itshape}}
       
   596 \def\paragraph{\@ucheadfalse
       
   597  \@startsection{paragraph}{3}{\parindent}{6pt plus 
       
   598 1pt}{-5pt}{\reset@font\normalsize\itshape}}
       
   599 
       
   600 \renewcommand{\@seccntformat}[1]{\textup{\csname the#1\endcsname}}
       
   601 
       
   602 \gdef\@period{.}
       
   603 \def\@trivlist{\@topsepadd\topsep
       
   604 \if@noskipsec \gdef\@period{}\leavevmode\gdef\@period{.}\fi
       
   605  \ifvmode \advance\@topsepadd\partopsep \else \unskip\par\fi
       
   606  \if@inlabel \@noparitemtrue \@noparlisttrue 
       
   607  \else \@noparlistfalse \@topsep\@topsepadd \fi
       
   608  \advance\@topsep \parskip
       
   609  \leftskip\z@\rightskip\@rightskip \parfillskip\@flushglue
       
   610  \@setpar{\if@newlist\else{\@@par}\fi} \global\@newlisttrue
       
   611 \@outerparskip\parskip}
       
   612 
       
   613 
       
   614 \def\@startsection#1#2#3#4#5#6{%
       
   615   \if@noskipsec \leavevmode \fi
       
   616   \par
       
   617   \@tempskipa #4\relax
       
   618   \@afterindenttrue
       
   619   \ifdim \@tempskipa <\z@
       
   620     \@tempskipa -\@tempskipa \@afterindentfalse
       
   621   \fi
       
   622   \if@nobreak
       
   623     \everypar{}%
       
   624   \else
       
   625     \addpenalty\@secpenalty\addvspace\@tempskipa
       
   626   \fi
       
   627   \@ifstar
       
   628     {\@ssect{#3}{#4}{#5}{#6}}%
       
   629     {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
       
   630 \def\@sect#1#2#3#4#5#6[#7]#8{%
       
   631   \ifnum #2>\c@secnumdepth
       
   632     \let\@svsec\@empty
       
   633   \else
       
   634     \refstepcounter{#1}%
       
   635       \if@uchead%
       
   636             \protected@edef\@svsec{\@seccntformat{#1}.\quad\relax}%
       
   637         \else%
       
   638             \protected@edef\@svsec{\@seccntformat{#1}\quad\relax}%
       
   639         \fi%
       
   640   \fi
       
   641   \@tempskipa #5\relax
       
   642   \ifdim \@tempskipa>\z@
       
   643     \begingroup
       
   644       #6{%
       
   645         \@hangfrom{\hskip #3\relax\@svsec}%
       
   646           \interlinepenalty \@M \if@uchead\MakeUppercase{#8}\else#8\fi \@@par}%
       
   647     \endgroup
       
   648     \csname #1mark\endcsname{#7}%
       
   649     \addcontentsline{toc}{#1}{%
       
   650       \ifnum #2>\c@secnumdepth \else
       
   651         \protect\numberline{\csname the#1\endcsname}%
       
   652       \fi
       
   653       #7}%
       
   654   \else
       
   655     \def\@svsechd{%
       
   656       #6{\hskip #3\relax
       
   657       \@svsec \if@uchead\Makeuppercase{#8}\else#8\fi}%
       
   658       \csname #1mark\endcsname{#7}%
       
   659       \addcontentsline{toc}{#1}{%
       
   660         \ifnum #2>\c@secnumdepth \else
       
   661           \protect\numberline{\csname the#1\endcsname}%
       
   662         \fi
       
   663         #7}}%
       
   664   \fi
       
   665   \@xsect{#5}}
       
   666 
       
   667 \def\@xsect#1{\@tempskipa #1\relax
       
   668  \ifdim \@tempskipa>\z@
       
   669  \par \nobreak
       
   670  \vskip \@tempskipa
       
   671  \@afterheading
       
   672  \else \global\@nobreakfalse \global\@noskipsectrue
       
   673  \everypar{\if@noskipsec \global\@noskipsecfalse
       
   674  \clubpenalty\@M \hskip -\parindent
       
   675  \begingroup \@svsechd\@period \endgroup \unskip
       
   676  \hskip -#1
       
   677  \else \clubpenalty \@clubpenalty
       
   678  \everypar{}\fi}\fi\ignorespaces}
       
   679 \newif\if@uchead\@ucheadfalse
       
   680 
       
   681 
       
   682 \setcounter{secnumdepth}{3}
       
   683 \newcounter{secnumbookdepth}
       
   684 \setcounter{secnumbookdepth}{3}
       
   685 
       
   686 \newfont{\apbf}{cmbx9}
       
   687 
       
   688 \def\@withappendix#1{App--\number #1}
       
   689 
       
   690 \newcommand{\elecappendix}{
       
   691 }
       
   692 
       
   693 \def\appenheader{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
       
   694 \newfont{\sc}{cmcsc10}
       
   695 \parindent\z@
       
   696 \hbox{}
       
   697 \vskip -\textfloatsep
       
   698 \vskip 11pt
       
   699 \hrule height .2pt width 30pc
       
   700 \vskip 2pt\rule{0pt}{10pt}\ignorespaces}
       
   701 \def\endappenheader{\end{figure}\gdef\appendixhead{}}
       
   702 
       
   703 \def\@appsec{}
       
   704 
       
   705 \def\appendix{\par
       
   706  \setcounter{section}{0}
       
   707  \setcounter{subsection}{0}
       
   708  \def\@appsec{APPENDIX } 
       
   709         \def\thesection{\Alph{section}}
       
   710         \def\theHsection{\Alph{section}}}
       
   711 
       
   712 
       
   713 
       
   714 \labelsep 5pt
       
   715 \settowidth{\leftmargini}{(9)} \addtolength\leftmargini\labelsep
       
   716 \settowidth{\leftmarginii}{(b)} \addtolength\leftmarginii\labelsep
       
   717 \leftmarginiii \leftmarginii
       
   718 \leftmarginiv \leftmarginii 
       
   719 \leftmarginv \leftmarginii 
       
   720 \leftmarginvi \leftmarginii 
       
   721 \leftmargin\leftmargini
       
   722 \labelwidth\leftmargini\advance\labelwidth-\labelsep
       
   723 \def\@listI{\leftmargin\leftmargini \parsep 0pt plus 1pt\topsep 6pt plus 2pt
       
   724 minus 2pt\itemsep 2pt plus 1pt minus .5pt}
       
   725 \let\@listi\@listI
       
   726 \@listi 
       
   727 \def\@listii{\leftmargin\leftmarginii
       
   728  \labelwidth\leftmarginii\advance\labelwidth-\labelsep
       
   729  \topsep 0pt plus 1pt 
       
   730  \parsep 0pt plus .5pt 
       
   731  \itemsep \parsep}
       
   732 \def\@listiii{\leftmargin\leftmarginiii
       
   733  \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
       
   734  \topsep 0pt plus 1pt 
       
   735  \parsep 0pt plus .5pt 
       
   736  \itemsep \parsep}
       
   737 \def\@listiv{\leftmargin\leftmarginiv
       
   738  \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
       
   739 \def\@listv{\leftmargin\leftmarginv
       
   740  \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
       
   741 \def\@listvi{\leftmargin\leftmarginvi
       
   742  \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
       
   743 
       
   744 
       
   745 
       
   746 
       
   747 \def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
       
   748  \advance\@enumdepth \@ne 
       
   749  \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
       
   750  {\csname label\@enumctr\endcsname}{\usecounter
       
   751  {\@enumctr}\def\makelabel##1{##1\hss}}\fi}
       
   752 \def\longenum{\ifnum \@enumdepth >3 \@toodeep\else
       
   753  \advance\@enumdepth \@ne 
       
   754  \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
       
   755  {\csname label\@enumctr\endcsname}{\usecounter
       
   756  {\@enumctr}\labelwidth\z@}\fi}
       
   757 %\leftmargin\z@ \itemindent\parindent}\fi} - this indents each item in enumerate
       
   758 \let\endlongenum\endlist
       
   759 %%--------------------CHANGED: always roman parentheses. dave ---------------%%
       
   760 \def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}} 
       
   761 \def\theenumi{\arabic{enumi}} 
       
   762 \def\labelenumii{{\rm (}\alph{enumii}\rm{)}}
       
   763 \def\theenumii{\alph{enumii}}
       
   764 \def\p@enumii{\theenumi}
       
   765 \def\labelenumiii{\roman{enumiii}.}
       
   766 \def\theenumiii{\roman{enumiii}}
       
   767 \def\p@enumiii{\theenumi{\rm (}\theenumii{\rm )}}
       
   768 \def\labelenumiv{\Alph{enumiv}.}
       
   769 \def\theenumiv{\Alph{enumiv}} 
       
   770 \def\p@enumiv{\p@enumiii\theenumiii}
       
   771 
       
   772 \def\p@enumiv{\p@enumiii\theenumiii}
       
   773 
       
   774 \def\itemize{\list{---\hskip -\labelsep}{\settowidth
       
   775  {\leftmargin}{---}\labelwidth\leftmargin
       
   776  \addtolength{\labelwidth}{-\labelsep}}}
       
   777 \let\enditemize\endlist
       
   778 \def\longitem{\list{---}{\labelwidth\z@
       
   779  \leftmargin\z@ \itemindent\parindent \advance\itemindent\labelsep}}
       
   780 \let\endlongitem\endlist
       
   781 \def\verse{\let\\=\@centercr 
       
   782  \list{}{\leftmargin 2pc 
       
   783  \itemindent -1.5em\listparindent \itemindent 
       
   784  \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
       
   785 \let\endverse\endlist
       
   786 \def\quotation{\list{}{\leftmargin 2pc \listparindent .5em
       
   787  \itemindent\listparindent
       
   788  \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
       
   789 \let\endquotation=\endlist
       
   790 \def\quote{\list{}{\leftmargin 2pc \rightmargin\leftmargin}\item[]}
       
   791 \let\endquote=\endlist
       
   792 
       
   793 \def\description{\list{}{\listparindent\parindent\labelwidth\z@
       
   794  \leftmargin\z@ \itemindent\parindent\advance\itemindent\labelsep
       
   795  \def\makelabel##1{\it ##1.}}}
       
   796 \let\enddescription\endlist
       
   797 
       
   798 \def\describe#1{\list{}{\listparindent\parindent\settowidth{\labelwidth}{#1}\leftmargin
       
   799  \labelwidth\addtolength\leftmargin\labelsep\def\makelabel##1{##1\hfil}}}
       
   800 \let\enddescribe\endlist
       
   801 
       
   802         \def\program{\ifx\@currsize\normalsize\small \else \rm \fi\tabbing}
       
   803         \let\endprogram\endtabbing
       
   804          \def\@begintheorem#1#2{\trivlist \item[\hskip 10pt\hskip 
       
   805          \labelsep{\sc{#1}\hskip 5pt\relax #2.}] \itshape}
       
   806         % aiellom{: this is what makes the theorem environment with names 
       
   807         % ABOVE #1 is the word example, corollary, etc.
       
   808         %            #2 is the number
       
   809         % \def\@opargbegintheorem#1#2#3{\trivlist
       
   810         % \item[\hskip 10pt \hskip \labelsep{\sc #1\savebox\@tempboxa{#3}\ifdim 
       
   811         % \wd\@tempboxa>\z@ \hskip 5pt\relax \box\@tempboxa\fi.}] \itshape}
       
   812         %  is been changed to
       
   813         % #1 is the word theorem, lemma, etc.
       
   814         % #2 is the number
       
   815         % #3 is the name of the theorem, lemma, etc.
       
   816         \def\@opargbegintheorem#1#2#3{\trivlist
       
   817         \item[\hskip 10pt \hskip 
       
   818 \labelsep{\sc{#1}\savebox\@tempboxa{\sc{#3}}\ifdim 
       
   819         \wd\@tempboxa>\z@ \hskip 5pt\relax \sc{#2}  \box\@tempboxa\fi.}]
       
   820 \itshape}
       
   821         % aiellom} 
       
   822 
       
   823 
       
   824 
       
   825 \newif\if@qeded\global\@qededfalse
       
   826 \def\proof{\global\@qededfalse\@ifnextchar[{\@xproof}{\@proof}}
       
   827 \def\endproof{\if@qeded\else\qed\fi\endtrivlist}
       
   828 \def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(6,6){}}
       
   829 \global\@qededtrue}
       
   830 \def\@proof{\trivlist \item[\hskip 10pt\hskip 
       
   831  \labelsep{\sc Proof.}]\ignorespaces}
       
   832 \def\@xproof[#1]{\trivlist \item[\hskip 10pt\hskip 
       
   833  \labelsep{\sc Proof #1.}]\ignorespaces}
       
   834 
       
   835 \def\newdef#1#2{\expandafter\@ifdefinable\csname #1\endcsname
       
   836 {\@definecounter{#1}\expandafter\xdef\csname
       
   837 the#1\endcsname{\@thmcounter{#1}}\global
       
   838  \@namedef{#1}{\@defthm{#1}{#2}}\global
       
   839  \@namedef{end#1}{\@endtheorem}}}
       
   840 \def\@defthm#1#2{\refstepcounter
       
   841  {#1}\@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}}
       
   842 \def\@xdefthm#1#2{\@begindef{#2}{\csname the#1\endcsname}\ignorespaces}
       
   843 \def\@ydefthm#1#2[#3]{\trivlist \item[\hskip 10pt\hskip 
       
   844  \labelsep{\it #2\savebox\@tempboxa{#3}\ifdim 
       
   845  \wd\@tempboxa>\z@ \ \box\@tempboxa\fi.}]\ignorespaces}
       
   846 \def\@begindef#1#2{\trivlist \item[\hskip 10pt\hskip 
       
   847  \labelsep{\it #1\ \rm #2.}]}
       
   848 
       
   849 \def\theequation{\arabic{equation}}
       
   850 
       
   851 \def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
       
   852  \else \newpage \fi \thispagestyle{empty}\c@page\z@}
       
   853 \def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
       
   854 
       
   855 \arraycolsep 2.5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt 
       
   856 \tabbingsep \labelsep 
       
   857 
       
   858 \skip\@mpfootins = \skip\footins
       
   859 \fboxsep = 3pt \fboxrule = .4pt 
       
   860 
       
   861 \newcounter{part}
       
   862 \newcounter{section}
       
   863 \newcounter{subsection}[section]
       
   864 \newcounter{subsubsection}[subsection]
       
   865 \newcounter{paragraph}[subsubsection]
       
   866 
       
   867 \def\thepart{\Roman{part}} 
       
   868 \def\thesection {\arabic{section}}
       
   869 \def\thesubsection {\thesection.\arabic{subsection}}
       
   870 \def\thesubsubsection {\thesubsection.\arabic{subsubsection}}
       
   871 \def\theparagraph {\thesubsubsection.\arabic{paragraph}}
       
   872 
       
   873 \def\@pnumwidth{1.55em}
       
   874 \def\@tocrmarg {2.55em}
       
   875 \def\@dotsep{4.5}
       
   876 \setcounter{tocdepth}{3}
       
   877 
       
   878 \def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
       
   879  \@starttoc{toc}}
       
   880 \def\l@part#1#2{\addpenalty{\@secpenalty}
       
   881  \addvspace{2.25em plus 1pt} \begingroup
       
   882  \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
       
   883 -\@pnumwidth 
       
   884  {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
       
   885  \nobreak \endgroup}
       
   886 \def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
       
   887 \@tempdima 1.5em \begingroup
       
   888  \parindent \z@ \rightskip \@pnumwidth 
       
   889  \parfillskip -\@pnumwidth 
       
   890  \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par
       
   891  \endgroup}
       
   892 \def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
       
   893 \def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
       
   894 \def\listoffigures{\section*{List of Figures\@mkboth
       
   895  {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}}
       
   896 \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
       
   897 \def\listoftables{\section*{List of Tables\@mkboth
       
   898  {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}}
       
   899 \let\l@table\l@figure
       
   900 
       
   901 
       
   902 \def\thebibliography#1{\par\footnotesize 
       
   903 \@ucheadfalse
       
   904 \@startsection{subsection}{2}{\z@}{16pt plus 2pt minus 
       
   905         1pt}{2pt}{\sf}*{REFERENCES}%
       
   906 \list{\arabic{enumi}.}{%
       
   907  \settowidth{\labelwidth}{99.}%
       
   908  \leftmargin\labelwidth
       
   909  \advance\leftmargin\labelsep \topsep \z@ \parsep 0pt plus .1pt
       
   910  \itemsep \parsep 
       
   911  \usecounter{enumi}}%
       
   912  \def\newblock{\hskip .11em plus .33em minus .07em}
       
   913  \sloppy
       
   914  \widowpenalty=4500
       
   915  \clubpenalty=4500
       
   916  \sfcode`\.=1000\relax}
       
   917 \let\endthebibliography=\endlist
       
   918  
       
   919 
       
   920 \newif\if@restonecol
       
   921 \def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
       
   922 \columnseprule \z@
       
   923 \columnsep 35pt\twocolumn[\section*{Index}]
       
   924  \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
       
   925  \parskip\z@ plus .3pt\relax\let\item\@idxitem}
       
   926 \def\@idxitem{\par\hangindent 40pt}
       
   927 \def\subitem{\par\hangindent 40pt \hspace*{20pt}}
       
   928 \def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
       
   929 \def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
       
   930 \def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
       
   931 
       
   932 \def\footnoterule{\kern-3\p@
       
   933  \hrule \@height 0.2\p@ \@width 47\p@ 
       
   934   \kern 2.6\p@
       
   935 } 
       
   936 
       
   937 \long\def\@makefntext#1{\parindent 1em\noindent 
       
   938  $^{\@thefnmark}$#1}
       
   939 
       
   940 
       
   941 \setcounter{topnumber}{3}
       
   942 \def\topfraction{.99}
       
   943 \setcounter{bottomnumber}{1}
       
   944 \def\bottomfraction{.5}
       
   945 \setcounter{totalnumber}{3}
       
   946 \def\textfraction{.01}
       
   947 \def\floatpagefraction{.85}
       
   948 \setcounter{dbltopnumber}{2}
       
   949 \def\dbltopfraction{.7}
       
   950 \def\dblfloatpagefraction{.5}
       
   951 
       
   952 \long\def\@makecaption#1#2{\vskip 1pc \setbox\@tempboxa\hbox{#1.\hskip
       
   953 1em\relax #2}
       
   954  \ifdim \wd\@tempboxa >\hsize #1. #2\par \else \hbox
       
   955 to\hsize{\hfil\box\@tempboxa\hfil} 
       
   956  \fi}
       
   957 
       
   958 \def\nocaption{\refstepcounter\@captype \par
       
   959  \vskip 1pc \hbox to\hsize{\hfil \footnotesize Figure \thefigure
       
   960  \hfil}}
       
   961 
       
   962 
       
   963 \newcounter{figure}
       
   964 \def\thefigure{\@arabic\c@figure}
       
   965 \def\fps@figure{tbp}
       
   966 \def\ftype@figure{1}
       
   967 \def\ext@figure{lof}
       
   968 \def\fnum@figure{Fig.\ \thefigure}
       
   969 \def\figure{\let\normalsize\footnotesize \normalsize \@float{figure}}
       
   970 \let\endfigure\end@float
       
   971 \@namedef{figure*}{\@dblfloat{figure}}
       
   972 \@namedef{endfigure*}{\end@dblfloat}
       
   973 
       
   974 \newcounter{table}
       
   975 \def\thetable{\@Roman\c@table}
       
   976 \def\fps@table{tbp}
       
   977 \def\ftype@table{2}
       
   978 \def\ext@table{lot}
       
   979 \def\fnum@table{Table \thetable}
       
   980 \def\table{\let\normalsize\footnotesize \normalsize\@float{table}}
       
   981 \let\endtable\end@float
       
   982 \@namedef{table*}{\@dblfloat{table}}
       
   983 \@namedef{endtable*}{\end@dblfloat}
       
   984 \def\acmtable#1{\@narrowfig #1\relax
       
   985  \let\caption\@atcap \let\nocaption\@atnocap
       
   986  \def\@tmpnf{}\@ifnextchar[{\@xntab}{\@ntab}}
       
   987 \def\endacmtable{\hbox to \textwidth{\hfil
       
   988 \vbox{\hsize \@narrowfig
       
   989 \box\@nfcapbox
       
   990 {\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}
       
   991 \vskip -1pt
       
   992 \box\@nfigbox\vskip -1pt
       
   993 {\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}}\hfil}
       
   994 \end@float}
       
   995 \def\@xntab[#1]{\def\@tmpnf{[#1]}\@ntab}
       
   996 \def\@ntab{\expandafter\table\@tmpnf
       
   997  \setbox\@nfigbox\vbox\bgroup
       
   998  \hsize \@narrowfig \@parboxrestore}
       
   999 \def\@atmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}
       
  1000  \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
       
  1001 to\hsize{\hfil\box\@tempboxa\hfil}
       
  1002  \fi}
       
  1003 \def\@atcap{\par\egroup\refstepcounter\@captype 
       
  1004  \@dblarg{\@atcapx\@captype}}
       
  1005 \long\def\@atcapx#1[#2]#3{\setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox
       
  1006  \@parboxrestore
       
  1007  \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par}}
       
  1008 \def\@atnocap{\egroup \refstepcounter\@captype 
       
  1009  \setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox
       
  1010  \hbox to\hsize{\hfil \footnotesize Table \thetable\hfil}}}
       
  1011 
       
  1012 %
       
  1013 %% Narrow figures
       
  1014 %
       
  1015 \def\narrowfig#1{\@narrowfig #1\relax
       
  1016  \let\caption\@nfcap \let\nocaption\@nfnocap
       
  1017  \def\@tmpnf{}\@ifnextchar[{\@xnfig}{\@nfig}}
       
  1018 \def\endnarrowfig{\hbox to \textwidth{\if@nfeven
       
  1019  \box\@nfcapbox\hfil\box\@nfigbox
       
  1020  \else \box\@nfigbox\hfil\box\@nfcapbox\fi}\end@float}
       
  1021 \def\@xnfig[#1]{\def\@tmpnf{[#1]}\@nfig}
       
  1022 \def\@nfig{\expandafter\figure\@tmpnf
       
  1023  \setbox\@nfigbox\vbox\bgroup
       
  1024  \hsize \@narrowfig \@parboxrestore}
       
  1025 \def\@nfmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}
       
  1026  \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
       
  1027 to\hsize{\if@nfeven\else\hfil\fi\box\@tempboxa\if@nfeven\hfil\fi}
       
  1028  \fi}
       
  1029 \def\@nfcap{\par\egroup\refstepcounter\@captype 
       
  1030  \@dblarg{\@nfcapx\@captype}}
       
  1031 \long\def\@nfcapx#1[#2]#3{\@seteven
       
  1032  \setbox\@nfcapbox\vbox to \ht\@nfigbox
       
  1033  {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox
       
  1034  \@parboxrestore
       
  1035  \vfil 
       
  1036  \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
       
  1037  \vfil}}
       
  1038 \def\@nfnocap{\egroup \refstepcounter\@captype \@seteven
       
  1039  \setbox\@nfcapbox\vbox to \ht\@nfigbox
       
  1040  {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox
       
  1041  \@parboxrestore
       
  1042  \vfil 
       
  1043  \hbox to\hsize{\if@nfeven\else\hfil\fi 
       
  1044  \footnotesize Figure \thefigure
       
  1045  \if@nfeven\hfil\fi}
       
  1046  \vfil}}
       
  1047 \def\@seteven{\@nfeventrue 
       
  1048    \@ifundefined{r@@nf\thefigure}{}{%
       
  1049       \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}%
       
  1050       \edef\@tmpnf{\expandafter\@getpagenum\@tmpnf}%
       
  1051       \ifodd\@tmpnf\relax\@nfevenfalse\fi}%
       
  1052 \label{@nf\thefigure}\edef\@tmpnfx{\if@nfeven e\else o\fi}
       
  1053 \edef\@tmpnf{\write\@unused {\noexpand\ifodd \noexpand\c@page 
       
  1054  \noexpand\if \@tmpnfx e\noexpand\@nfmsg{\thefigure} \noexpand\fi
       
  1055  \noexpand\else 
       
  1056  \noexpand\if \@tmpnfx o\noexpand\@nfmsg{\thefigure}\noexpand\fi 
       
  1057  \noexpand\fi }}\@tmpnf}
       
  1058 \def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage}
       
  1059 
       
  1060 \newdimen\@narrowfig
       
  1061 \newbox\@nfigbox
       
  1062 \newbox\@nfcapbox
       
  1063 \newif\if@nfeven 
       
  1064 
       
  1065 \def\and{\\ and\\}
       
  1066 \def\maketitle{\newpage \thispagestyle{titlepage}\par
       
  1067  \begingroup \lineskip = \z@\null \vskip -30pt\relax 
       
  1068  \parindent\z@ \LARGE {\raggedright \hyphenpenalty\@M
       
  1069  %\sf \@title \par
       
  1070   \@title \par
       
  1071  \global\firstfoot %aiellom
       
  1072  \global\runningfoot %aiellom
       
  1073 }
       
  1074 \label{@firstpg}
       
  1075 { \vskip 13.5pt\relax \normalsize \sf %vskip 13.5pt between title and author
       
  1076  \begingroup \addtolength{\baselineskip}{2pt}
       
  1077  \@author\par \vskip -2pt 
       
  1078  \endgroup }
       
  1079  {\ifx \@categories\@empty 
       
  1080  \else 
       
  1081  \baselineskip 17pt\relax
       
  1082  \if@acmjacm\else\hbox{\vrule height .2pt width 30pc}\fi%to eliminate the lines for jacm
       
  1083  }
       
  1084  \vskip 8.5pt \footnotesize \box\@abstract \vskip 4pt\relax %vskip8.5 space above abstract
       
  1085  {\def\and{\unskip\/{\rm ; }}
       
  1086  Categories and Subject Descriptors: \@categories \fi}\par\vskip 4pt\relax
       
  1087  \box\@terms \vskip 4pt\relax
       
  1088  \box\@keywords \par 
       
  1089  {\baselineskip 14pt\relax 
       
  1090  \@abstractbottom
       
  1091  }
       
  1092  \vskip 23pt\relax
       
  1093  \endgroup
       
  1094 \let\maketitle\relax
       
  1095  % \gdef\@author{}\gdef\@title{}
       
  1096  \gdef\@categories{}}
       
  1097 
       
  1098 
       
  1099 \newbox\@abstract
       
  1100 \newbox\@terms
       
  1101 \newbox\@keywords
       
  1102 \def\abstract{\global\setbox\@abstract=\vbox\bgroup \everypar{}
       
  1103  \footnotesize \hsize 30pc \parindent 10pt \noindent 
       
  1104  \rule{0pt}{10pt}\ignorespaces}
       
  1105 \def\endabstract{\egroup}
       
  1106 
       
  1107 \def\terms#1{\setbox\@terms=\vbox{\everypar{}
       
  1108  \footnotesize \hsize 30pc \parindent 0pt \noindent 
       
  1109  General Terms: \ignorespaces #1}}
       
  1110 \def\keywords#1{\setbox\@keywords=\vbox{\everypar{}
       
  1111  \footnotesize \hsize 30pc \parindent 0pt \noindent 
       
  1112  Additional Key Words and Phrases: \ignorespaces #1}
       
  1113 }
       
  1114 
       
  1115 \def\category#1#2#3{\@ifnextchar
       
  1116  [{\@category{#1}{#2}{#3}}{\@xcategory{#1}{#2}{#3}}}
       
  1117 \def\@category#1#2#3[#4]{\edef\@tempa{\ifx \@categories\@empty 
       
  1118  \else ; \fi}{\def\protect{\noexpand\protect
       
  1119  \noexpand}\def\and{\noexpand\and}\xdef\@categories{\@categories\@tempa #1
       
  1120 [{\bf #2}]: 
       
  1121  #3\kern\z@---\hskip\z@{\it #4}}}}
       
  1122 \def\@xcategory#1#2#3{\edef\@tempa{\ifx \@categories\@empty \else ;
       
  1123 \fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand
       
  1124  \and}\xdef\@categories{\@categories\@tempa #1 [{\bf #2}]: #3}}}
       
  1125 \def\@categories{}
       
  1126 \def\bottomstuff{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
       
  1127 \parindent\z@
       
  1128 \hbox{}
       
  1129 \vskip -\textfloatsep
       
  1130 \vskip 10pt
       
  1131 \hrule height .2pt width 30pc
       
  1132 \vskip 2pt\rule{0pt}{10pt}\ignorespaces}
       
  1133 \def\endbottomstuff{\permission\end{figure}\gdef\permission{}}
       
  1134 
       
  1135 \newenvironment{ackslike}[1]
       
  1136   {\par \footnotesize 
       
  1137    \@ucheadfalse
       
  1138    \@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus -1pt}{2pt}{\sf}*
       
  1139    {\uppercase{#1}}\par\normalsize
       
  1140    \pdfbookmark{Acknowledgments}{Ack}
       
  1141         }
       
  1142   {\par}
       
  1143 \newenvironment{acks}{\begin{ackslike}{ACKNOWLEDGMENTS}}{\end{ackslike}}
       
  1144 
       
  1145 \def\received{\par\footnotesize\addvspace{18pt plus 0pt minus
       
  1146 4pt}\parindent\z@}
       
  1147 %the line below replaced by the line that follows (K.R. Apt, July 11, 2000
       
  1148 %\def\endreceived{\label{@lastpg}\hskip-2pt\par}
       
  1149 \def\endreceived{\label{@lastpg}\hskip-2pt\par\normalsize}
       
  1150 
       
  1151 \mark{{}{}} 
       
  1152 
       
  1153 \def\ps@myheadings{\let\@mkboth\@gobbletwo
       
  1154 \def\@oddhead{\hbox{}\hfill \small\sf \rightmark\hskip
       
  1155 19pt{\Large$\cdot$}\hskip 17pt\mypage}
       
  1156 \def\@oddfoot{\hbox{}\hfill\tiny\@runningfoot}
       
  1157 \def\@evenhead{\small\sf\mypage \hskip 17pt{\Large$\cdot$}\hskip 19pt\leftmark\hfill \hbox{}}
       
  1158 \def\@evenfoot{\tiny\@runningfoot\hfill\hbox{}}
       
  1159 \def\sectionmark##1{}\def\subsectionmark##1{}}
       
  1160 \def\@runningfoot{}
       
  1161 \def\runningfoot{\def\@runningfoot{\@journalName, Vol.\ \@acmVolume, No.\ \@acmNumber, \@acmMonthName\ 20\@acmYear.}}
       
  1162 \def\@firstfoot{}
       
  1163 \def\firstfoot{\def\@firstfoot{\@journalName, Vol.\ \@acmVolume, No.\ \@acmNumber, \@acmMonthName\ 20\@acmYear, Pages \pages.}}
       
  1164 \def\ps@titlepage{\let\@mkboth\@gobbletwo
       
  1165 \def\@oddhead{}\def\@oddfoot{\hbox{}\hfill
       
  1166 \tiny\@firstfoot}\def\@evenhead{}\def\@evenfoot{\tiny\@firstfoot\hfill\hbox{}}}
       
  1167 
       
  1168 \def\today{\ifcase\month\or
       
  1169  January\or February\or March\or April\or May\or June\or
       
  1170  July\or August\or September\or October\or November\or December\fi
       
  1171  \space\number\day, \number\year}
       
  1172 \def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}}
       
  1173 \def\@marrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
       
  1174  \or \or \@addamp \or
       
  1175  \@acolampacol \or \@firstampfalse \@acol \fi
       
  1176 \edef\@preamble{\@preamble
       
  1177  \ifcase \@chnum 
       
  1178  \hfil$\relax\displaystyle\@sharp$\hfil \or $\relax\displaystyle\@sharp$\hfil 
       
  1179  \or \hfil$\relax\displaystyle\@sharp$\fi}}
       
  1180 \def\marray{\arraycolsep 2.5pt\let\@acol\@arrayacol \let\@classz\@marrayclassz
       
  1181  \let\@classiv\@marrayclassiv \let\\\@arraycr\def\@halignto{}\@tabarray}
       
  1182 \def\endmarray{\crcr\egroup\egroup}
       
  1183 
       
  1184 
       
  1185 \ps@myheadings \pagenumbering{arabic} \onecolumn 
       
  1186 
       
  1187 %-----------------------BIBLIOGRAPHY STUFF-------------------------
       
  1188 % this is adapted (November 1993) by Andrew Appel and Rebecca Davies from
       
  1189 % 
       
  1190 %%%     filename        = "chicago.sty",
       
  1191 %%%     version         = "4",  % MODIFIED!
       
  1192 %%%     date            = "31 August 1992",
       
  1193 %%%     time            = "09:42:44 199",
       
  1194 %%%     author          = "Glenn Paulley",
       
  1195 %%%     address         = "Data Structuring Group
       
  1196 %%%                        Department of Computer Science
       
  1197 %%%                        University of Waterloo
       
  1198 %%%                        Waterloo, Ontario, Canada
       
  1199 %%%                        N2L 3G1",
       
  1200 %%%     telephone       = "(519) 885-1211",
       
  1201 %%%     FAX             = "(519) 885-1208",
       
  1202 %%%     email           = "gnpaulle@bluebox.uwaterloo.ca",
       
  1203 
       
  1204 %%% ====================================================================
       
  1205 %
       
  1206 % this file: Modification of chicago.sty for new ACM bibliography
       
  1207 % style, which is similar (but not identical) to the ``Chicago'' style.
       
  1208 %
       
  1209 % chicago.sty: Style file for use with bibtex style chicago.bst, for
       
  1210 % bibliographies formatted according to the 13th Edition of the Chicago
       
  1211 % Manual of Style.
       
  1212 %
       
  1213 % 'newapa.bst' was made from 'plain.bst', 'named.bst', and 'apalike.bst',
       
  1214 % with lots of tweaking to make it look like APA style, along with tips
       
  1215 % from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
       
  1216 % newapa.sty formed the basis of this style, chicago.sty. Author-date
       
  1217 % references in newapa.bst formed the basis for chicago.bst. Chicagoa.bst
       
  1218 % supports annotations.
       
  1219 %
       
  1220 % Version 4 (August, 1992):
       
  1221 % - fixed chicago.bst and chicagoa.bst to handle long author lists in
       
  1222 %   sorting
       
  1223 % - fixed chicago.bst and chicagoa.bst so that missing page numbers in
       
  1224 %   ``article'' entries are handled correctly
       
  1225 % - modified chicago.sty to format entries with 2nd and subsequent lines
       
  1226 %   indented.
       
  1227 %
       
  1228 %   Citation format: (author-last-name year)
       
  1229 %             (author-last-name and author-last-name year)
       
  1230 %             (author-last-name et al. year)
       
  1231 %             (author-last-name)
       
  1232 %             author-last-name
       
  1233 %             author-last-name (year)
       
  1234 %             (author-last-name and author-last-name)
       
  1235 %             (author-last-name et al.)
       
  1236 %             (year) or (year,year)
       
  1237 %             year or year,year
       
  1238 %
       
  1239 %   Reference list ordering: alphabetical by author or whatever passes
       
  1240 %    for author in the absence of one.
       
  1241 %
       
  1242 % This BibTeX style has support for abbreviated author lists and for
       
  1243 %    year-only citations.  This is done by having the citations
       
  1244 %    actually look like
       
  1245 %
       
  1246 %    \citeauthoryear{full-author-info}{abbrev-author-info}{year}
       
  1247 %
       
  1248 % The LaTeX style has to have the following (or similar)
       
  1249 %
       
  1250 %     \let\@internalcite\cite
       
  1251 %     \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
       
  1252 %     \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
       
  1253 %     \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
       
  1254 %     \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
       
  1255 %     \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
       
  1256 %
       
  1257 %
       
  1258 % -------------------------------------------------------------------------
       
  1259 %
       
  1260 % Citation macros.
       
  1261 %
       
  1262 \let\@internalcite\cite
       
  1263 
       
  1264 \def\cite{\def\@citeseppen{-1000}%
       
  1265     \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
       
  1266     \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
       
  1267 \def\citeXNP#1#2{%
       
  1268   \def\@cite@label{#2}%
       
  1269   \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
       
  1270   \def\citeauthoryear##1##2##3{\@cite@label}\@internalcite{#1}}
       
  1271 % \def\@citeseppen{-1000}%
       
  1272 %    \def\@cite@label{#1}
       
  1273 %    \def\@cite##1##2{\if@tempswa ##2\fi}%
       
  1274 %    \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
       
  1275 \def\citeNP{\def\@citeseppen{-1000}%
       
  1276     \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
       
  1277     \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
       
  1278 \def\citeN{\def\@citeseppen{-1000}%
       
  1279     \def\@cite##1##2{##1\if@tempswa , ##2]\else{]}\fi}%
       
  1280     \def\citeauthoryear##1##2##3{##2 [##3}\@citedata}
       
  1281 \def\shortcite#1{\citeyear{#1}}
       
  1282 \def\citeS#1{[\citeANP{#1} \citeyearNP{#1}]}
       
  1283 \def\citeNS#1{\citeANP{#1} \citeyear{#1}}
       
  1284 \def\citeNPS#1{\citeANP{#1} \citeyearNP{#1}}
       
  1285 %testing year,year
       
  1286 \def\citeNN{\def\@citeseppen{-1000}%
       
  1287     \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
       
  1288     \def\citeauthoryear##1##2##3{##3}\@citedata}
       
  1289 
       
  1290 \def\citeA{\def\@citeseppen{-1000}%
       
  1291     \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
       
  1292     \def\citeauthoryear##1##2##3{##2}\@internalcite}
       
  1293 \def\citeANP{\def\@citeseppen{-1000}%
       
  1294     \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
       
  1295     \def\citeauthoryear##1##2##3{##2}\@internalcite}
       
  1296 
       
  1297 \def\citeyear{\def\@citeseppen{-1000}%
       
  1298     \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
       
  1299     \def\citeauthoryear##1##2##3{##3}\@citedata}
       
  1300 \def\citeyearNP{\def\@citeseppen{-1000}%
       
  1301     \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
       
  1302     \def\citeauthoryear##1##2##3{##3}\@citedata}
       
  1303 
       
  1304 %
       
  1305 % \@citedata and \@citedatax:
       
  1306 %
       
  1307 % Place commas in-between citations in the same \citeyear, \citeyearNP,
       
  1308 % or \citeN command.
       
  1309 % Use something like \citeN{ref1,ref2,ref3} and \citeN{ref4} for a list.
       
  1310 %
       
  1311 \def\@citedata{%
       
  1312         \@ifnextchar [{\@tempswatrue\@citedatax}%
       
  1313                                   {\@tempswafalse\@citedatax[]}%
       
  1314 }
       
  1315 
       
  1316 \def\@citedatax[#1]#2{%
       
  1317 \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
       
  1318   \def\@citea{}\@cite{\@for\@citeb:=#2\do%
       
  1319     {\@citea\def\@citea{; }\@ifundefined% by Young
       
  1320        {b@\@citeb}{{\bf ?}%
       
  1321        \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
       
  1322 {\csname b@\@citeb\endcsname}}}{#1}}%
       
  1323 
       
  1324 % don't box citations, separate with ; and a space
       
  1325 % also, make the penalty between citations negative: a good place to break.
       
  1326 %
       
  1327 \def\@citex[#1]#2{%
       
  1328 \if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
       
  1329   \def\@citea{}\@cite{\@for\@citeb:=#2\do%
       
  1330     {\@citea\def\@citea{; }\@ifundefined% by Young
       
  1331        {b@\@citeb}{{\bf ?}%
       
  1332        \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
       
  1333 {\csname b@\@citeb\endcsname}}}{#1}}%
       
  1334 
       
  1335 % (from apalike.sty)
       
  1336 % No labels in the bibliography.
       
  1337 %
       
  1338 \def\@biblabel#1{}
       
  1339 
       
  1340 % (from apalike.sty)
       
  1341 % Set length of hanging indentation for bibliography entries.
       
  1342 %
       
  1343 \newlength{\bibhang}
       
  1344 \setlength{\bibhang}{2em}
       
  1345 
       
  1346 % Indent second and subsequent lines of bibliographic entries. Stolen
       
  1347 % from openbib.sty: \newblock is set to {}.
       
  1348 
       
  1349 \newdimen\bibindent
       
  1350 \bibindent=1em
       
  1351 \@ifundefined{refname}%
       
  1352    {\@ifundefined{chapter}%
       
  1353      {\newcommand{\refname}{\footnotesize REFERENCES}}%
       
  1354      {\newcommand{\refname}{\footnotesize BIBLIOGRAPHY}}%
       
  1355    }%
       
  1356    {}%
       
  1357 \@ifundefined{chapter}%
       
  1358  {\def\thebibliography#1{\footnotesize \section*{\refname\@mkboth 
       
  1359    {\uppercase{\refname}}{\uppercase{\refname}}}\list
       
  1360    {[\arabic{enumi}]}{
       
  1361    \settowidth\labelwidth{[#1]}
       
  1362    \leftmargin\labelwidth
       
  1363    \advance\leftmargin\labelsep
       
  1364    \advance\leftmargin\bibindent
       
  1365    \itemindent -\bibindent
       
  1366    \listparindent \itemindent
       
  1367    \parsep \z@
       
  1368    \usecounter{enumi}}
       
  1369    \def\newblock{}
       
  1370    \sloppy
       
  1371    \sfcode`\.=1000\relax}}
       
  1372  {\def\thebibliography#1{\footnotesize \chapter*{\refname\@mkboth 
       
  1373    {\uppercase{\refname}}{\uppercase{\refname}}}\list
       
  1374    {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}
       
  1375    \leftmargin\labelwidth
       
  1376    \advance\leftmargin\labelsep
       
  1377    \advance\leftmargin\bibindent
       
  1378    \itemindent -\bibindent
       
  1379    \listparindent \itemindent
       
  1380    \parsep \z@
       
  1381    \usecounter{enumi}}
       
  1382    \def\newblock{}
       
  1383    \sloppy
       
  1384    \sfcode`\.=1000\relax}}
       
  1385 
       
  1386 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
       
  1387 
       
  1388 % fixes to acm trans macro package
       
  1389 % 31-JAN-1996
       
  1390 % John Tang Boyland
       
  1391 
       
  1392 % newdef need to take the optional parameters of newtheorem
       
  1393 \def\newdef#1{\@ifnextchar[{\@xnewdef{#1}}{\@ynewdef{#1}}}
       
  1394 \def\@xnewdef#1[#2]#3{\newtheorem{italic@#1}[#2]{{\em #3}}\@newdef{#1}}
       
  1395 \def\@ynewdef#1#2{\@ifnextchar[{\@xynewdef{#1}{#2}}{\@yynewdef{#1}{#2}}}
       
  1396 \def\@xynewdef#1#2[#3]{\newtheorem{italic@#1}{{\em #2}}[#3]\@newdef{#1}}
       
  1397 \def\@yynewdef#1#2{\newtheorem{italic@#1}{{\em #2}}\@newdef{#1}}
       
  1398 % and now fix up definition, to change body to use roman font:
       
  1399 \def\@newdef#1{\newenvironment{#1}{\@ifnextchar[{\@xstartdef{#1}}{\@ystartdef{#1}}}{\end{italic@#1}}}
       
  1400 %changed by K.R. Apt on Sep. 27, 2000. It was: \def\@xstartdef#1[#2]{\begin{italic@#1}[#2]\rm}
       
  1401 \def\@xstartdef#1[#2]{\begin{italic@#1}[{\em #2}]\rm}
       
  1402 \def\@ystartdef#1{\begin{italic@#1}\rm}
       
  1403 
       
  1404 % footers produced too small (vpt), when ACM typsets them at 7.5pt (!).
       
  1405 % A better compromise is viipt.
       
  1406 \def\@oddfoot{\hbox{}\hfill\scriptsize\@runningfoot}
       
  1407 \def\@evenfoot{\scriptsize\@runningfoot\hfill\hbox{}}
       
  1408 
       
  1409 % first footer was set to (vpt), when ACM typesets them at 6.5pt (!).
       
  1410 % A better compromise is vipt.
       
  1411 \def\firstfootsize{\@setsize\firstfootsize{7pt}\vipt\@vipt}
       
  1412 \def\ps@titlepage{\let\@mkboth\@gobbletwo
       
  1413 \def\@oddhead{}\def\@oddfoot{\hbox{}\hfill\firstfootsize\@firstfoot}%
       
  1414 \def\@evenhead{}\def\@evenfoot{\firstfootsize\@firstfoot\hfill\hbox{}}}
       
  1415 
       
  1416 % new permission statement
       
  1417 \long\def\permission{\par
       
  1418 % linebreaks added to conform to the current style
       
  1419 Permission to make digital/hard copy of all or part of this material without
       
  1420 fee 
       
  1421 for personal or classroom use
       
  1422 provided that the copies are not made or distributed for profit
       
  1423 or commercial advantage, the ACM copyright/server notice, the title of the
       
  1424 publication, and its date appear, and notice is given that copying is by
       
  1425 permission of the ACM, Inc.  To copy
       
  1426 otherwise, to republish, to post on servers, or to redistribute to lists
       
  1427 requires prior specific 
       
  1428 permission and/or a fee.\par
       
  1429 \copyright\ 20\@acmYear\ 
       
  1430 ACM \@permissionCodeOne/\@acmYear/\@permissionCodeTwo-\@pageCode\$5.00 % aiellom
       
  1431 }
       
  1432 
       
  1433 % make sure \permission doesn't get trashed
       
  1434 \def\endbottomstuff{\permission\end{figure}}
       
  1435 
       
  1436 % alternate way of using citeyear
       
  1437 %  \def\shortcite#1{\citeyear{#1}
       
  1438 % enumerations and longenums are wrong
       
  1439 % 1. the second line in a paragraph of an enumerations in theorems
       
  1440 %  (or other trivlists) doesn't line up under the first
       
  1441 % 1. the second line of a longenum doesn't properly wrap around
       
  1442 %  back to the left margin.
       
  1443 
       
  1444 % the original definition of \@listI doesn't set labelwidth
       
  1445 \def\@listI{\leftmargin\leftmargini
       
  1446  \labelwidth\leftmargini\advance\labelwidth-\labelsep
       
  1447  \parsep 0pt plus 1pt
       
  1448  \topsep 6pt plus 2pt minus 2pt
       
  1449  \itemsep 2pt plus 1pt minus .5pt}
       
  1450 \let\@listi\@listI
       
  1451 \@listi 
       
  1452 
       
  1453 % add set of \labelwidth and \itemindent
       
  1454 \def\longenum{\ifnum \@enumdepth >3 \@toodeep\else
       
  1455  \advance\@enumdepth \@ne 
       
  1456  \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
       
  1457  {\csname label\@enumctr\endcsname}{\usecounter
       
  1458  {\@enumctr}\labelwidth\z@\leftmargin\z@
       
  1459  \itemindent\parindent \advance\itemindent\labelsep}\fi}
       
  1460 
       
  1461 % split electronic appendix into two parts:
       
  1462 
       
  1463 
       
  1464 %aiellom{
       
  1465 \def\appendixhead#1{\appendix
       
  1466 \section*{ELECTRONIC APPENDIX}
       
  1467 The electronic appendix for this article can be accessed in
       
  1468   the ACM Digital Library by visiting the following URL:$\;$ 
       
  1469   \url{http://www.acm.org/pubs/citations/journals/}{\tt \@journalNameShort /20\@acmYear-\@acmVolume-\@acmNumber/p\pageref{@firstpg}-#1}.
       
  1470 % \quad \href{http://www.acm.org/tocl}{{\small http://www.acm.org/tocl} }
       
  1471 }
       
  1472 %aiellom}
       
  1473 
       
  1474 \long\def\elecappendix{
       
  1475 \clearpage
       
  1476 \makeatletter
       
  1477 \pagenumbering{withappendix}
       
  1478 \makeatother
       
  1479 \appendix
       
  1480 \par\noindent{\sc This document is the online-only appendix to:}\hfill \vskip 1em
       
  1481 {\vbox{\Large\sf \parindent0pt\@title{}}}\vskip .5em
       
  1482 \vbox{\sf \parindent0pt\@author{}}\vskip .5em\noindent
       
  1483 \vskip 10pt\noindent
       
  1484 {\firstfootsize 
       
  1485 \@journalName, Vol.\ \@acmVolume, No.\ \@acmNumber, \@acmMonthName\ 20\@acmYear, Pages \pages.}
       
  1486 \vskip 11pt\noindent
       
  1487 \hrule height .2pt
       
  1488 \par
       
  1489 \bottomstuff
       
  1490 \endbottomstuff
       
  1491 }
       
  1492 
       
  1493 % provide for a single acknowledgment
       
  1494 \def\ack{ \par \footnotesize 
       
  1495 \@ucheadfalse
       
  1496 \@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus 
       
  1497  -1pt}{2pt}{\sf}*{ACKNOWLEDGMENT}\par\normalsize
       
  1498 \pdfbookmark{Acknowledgment}{Ack}
       
  1499 }
       
  1500 \def\endack{\par}
       
  1501 
       
  1502 % provide both spellings of Acknowledgment(s)
       
  1503 \let\acknowledgments\acks
       
  1504 \let\endacknowledgments\endacks
       
  1505 \let\acknowledgment\ack
       
  1506 \let\endacknowledgment\endack
       
  1507 
       
  1508 \newcommand{\longpage}{\enlargethispage{\baselineskip}}
       
  1509 \newcommand{\shortpage}{\enlargethispage{-\baselineskip}}
       
  1510 
       
  1511 
       
  1512 % Don't indent bibliography and
       
  1513 % override \refname (which sets fontsize):
       
  1514 \def\thebibliography#1{
       
  1515   \footnotesize\section*{\footnotesize\sf{REFERENCES}\@mkboth
       
  1516   {\uppercase{\refname}}{\uppercase{\refname}}}%
       
  1517    \pdfbookmark{References}{Ref}
       
  1518    \list
       
  1519   {\@biblabel{\arabic{enumiv}}}{%
       
  1520    %\settowidth\labelwidth{[#1]}
       
  1521    \labelwidth 0pt
       
  1522    \leftmargin \bibindent
       
  1523    \labelsep 0pt
       
  1524    \if@hyperref
       
  1525      \itemindent -\bibindent
       
  1526    \fi
       
  1527    \listparindent -\bibindent
       
  1528    \labelsep -\bibindent
       
  1529     \usecounter{enumiv}%
       
  1530     \let\p@enumiv\@empty
       
  1531     \def\theenumiv{\arabic{enumiv}}}%
       
  1532     \def\newblock{\hskip .11em plus.33em minus.07em}%
       
  1533     \sloppy
       
  1534     \clubpenalty=4500
       
  1535     \widowpenalty=4500
       
  1536     \frenchspacing}
       
  1537 \def\endthebibliography{%
       
  1538   \def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
       
  1539   \endlist}
       
  1540 \def\@lbibitem[#1]#2{\item[]\if@filesw
       
  1541       {\def\protect##1{\string ##1\space}\immediate
       
  1542        \write\@auxout{\string\bibcite{#2}{#1}}}\fi\hskip-1em\ignorespaces}
       
  1543 % Fix cite so it doesn't repeat author lists in citations:
       
  1544 
       
  1545 \def\cite{\def\@citeseppen{-1000}%
       
  1546     \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
       
  1547     \let\@lastauthor=\@noauthor
       
  1548     \let\citeauthoryear=\citeauthoryear@no@repeats\@internalcite}
       
  1549     %\def\citeauthoryear##1##2##3{##2 ##3}\@internalcite
       
  1550 
       
  1551 \def\@noauthor={\relax}
       
  1552 \let\@lastauthor=\@noauthor
       
  1553 \let\@currauthor=\@noauthor
       
  1554 
       
  1555 \def\citeauthoryear@no@repeats#1#2#3{%
       
  1556   \def\@currauthor{\csname @author #1\endcsname}%
       
  1557   \ifx\@lastauthor\@currauthor{#3}\else{#2 #3}\fi%
       
  1558   \let\@lastauthor=\@currauthor}
       
  1559 
       
  1560 \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
       
  1561 \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
       
  1562 \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
       
  1563 \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
       
  1564 \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
       
  1565 \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
       
  1566 \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
       
  1567 \DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
       
  1568 \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
       
  1569 
       
  1570 
       
  1571 \if@hyperref
       
  1572    \let\pdfbookmark=\relax
       
  1573    \RequirePackage[pdfmark]{hyperref}
       
  1574 \fi
       
  1575 
       
  1576 % \renewcommand{\thefootnote}{\arabic{footnote}\hspace{-3pt}}
       
  1577 
       
  1578