
samer@0: % SIG-ALTERNATE.CLS - VERSION 1.7
samer@0: % "COMPATIBLE" WITH THE "ACM_PROC_ARTICLE-SP.CLS" V2.7SP
samer@0: % Gerald Murray October 15th. 2004
samer@0: %
samer@0: % ---- Start of 'updates'  ----
samer@0: %
samer@0: % Allowance made to switch default fonts between those systems using
samer@0: % METAFONT and those using 'Type 1' or 'Truetype' fonts.
samer@0: % See LINE NUMBER 252 for details.
samer@0: % Also provided for enumerated/annotated Corollaries 'surrounded' by
samer@0: % enumerated Theorems (line 841).
samer@0: % Gerry November 11th. 1999
samer@0: %
samer@0: % Made the Permission Statement / Conference Info / Copyright Info
samer@0: % 'user definable' in the source .tex file OR automatic if
samer@0: % not specified.
samer@0: %
samer@0: % Georgia fixed bug in sub-sub-section numbering in paragraphs (July 29th. 2002)
samer@0: % JS/GM fix to vertical spacing before Proofs (July 30th. 2002)
samer@0: %
samer@0: % Footnotes inside table cells using \minipage (Oct. 2002)
samer@0: %
samer@0: % ---- End of 'updates' ----
samer@0: %
samer@0: \def\fileversion{v1.7}          % for ACM's tracking purposes
samer@0: \def\filedate{October 15, 2004}    % Gerry Murray's tracking data
samer@0: \def\docdate {Friday 15th. October 2004} % Gerry Murray (with deltas to doc}
samer@0: \usepackage{epsfig}
samer@0: \usepackage{amssymb}
samer@0: \usepackage{amsmath}
samer@0: \usepackage{amsfonts}
samer@0: %
samer@0: % SIG-ALTERNATE DOCUMENT STYLE
samer@0: % G.K.M. Tobin August-October 1999
samer@0: %    adapted from ARTICLE document style by Ken Traub, Olin Shivers
samer@0: %    also using elements of esub2acm.cls
samer@0: % HEAVILY MODIFIED, SUBSEQUENTLY, BY GERRY MURRAY 2000
samer@0: % ARTICLE DOCUMENT STYLE -- Released 16 March 1988
samer@0: %    for LaTeX version 2.09
samer@0: % Copyright (C) 1988 by Leslie Lamport
samer@0: %
samer@0: %
samer@0: %%% sig-alternate.cls is an 'ALTERNATE' document style for producing
samer@0: %%% two-column camera-ready pages for ACM conferences.
samer@0: %%% THIS FILE DOES NOT STRICTLY ADHERE TO THE SIGS (BOARD-ENDORSED)
samer@0: %%% PROCEEDINGS STYLE. It has been designed to produce a 'tighter'
samer@0: %%% paper in response to concerns over page budgets.
samer@0: %%% The main features of this style are:
samer@0: %%%
samer@0: %%% 1)  Two columns.
samer@0: %%% 2)  Side and top margins of 4.5pc, bottom margin of 6pc, column gutter of
samer@0: %%%     2pc, hence columns are 20pc wide and 55.5pc tall.  (6pc =3D 1in, approx)
samer@0: %%% 3)  First page has title information, and an extra 6pc of space at the
samer@0: %%%     bottom of the first column for the ACM copyright notice.
samer@0: %%% 4)  Text is 9pt on 10pt baselines; titles (except main) are 9pt bold.
samer@0: %%%
samer@0: %%%
samer@0: %%% There are a few restrictions you must observe:
samer@0: %%%
samer@0: %%% 1)  You cannot change the font size; ACM wants you to use 9pt.
samer@0: %%% 3)  You must start your paper with the \maketitle command.  Prior to the
samer@0: %%%     \maketitle you must have \title and \author commands.  If you have a
samer@0: %%%     \date command it will be ignored; no date appears on the paper, since
samer@0: %%%     the proceedings will have a date on the front cover.
samer@0: %%% 4)  Marginal paragraphs, tables of contents, lists of figures and tables,
samer@0: %%%     and page headings are all forbidden.
samer@0: %%% 5)  The `figure' environment will produce a figure one column wide; if you
samer@0: %%%     want one that is two columns wide, use `figure*'.
samer@0: %%%
samer@0: %
samer@0: %%% Copyright Space:
samer@0: %%% This style automatically reserves 1" blank space at the bottom of page 1/
samer@0: %%% column 1.  This space can optionally be filled with some text using the
samer@0: %%% \toappear{...} command.  If used, this command must be BEFORE the \maketitle
samer@0: %%% command.  If this command is defined AND [preprint] is on, then the
samer@0: %%% space is filled with the {...} text (at the bottom); otherwise, it is
samer@0: %%% blank.  If you use \toappearbox{...} instead of \toappear{...} then a
samer@0: %%% box will be drawn around the text (if [preprint] is on).
samer@0: %%%
samer@0: %%% A typical usage looks like this:
samer@0: %%%     \toappear{To appear in the Ninth AES Conference on Medievil Lithuanian
samer@0: %%%               Embalming Technique, June 1991, Alfaretta, Georgia.}
samer@0: %%% This will be included in the preprint, and left out of the conference
samer@0: %%% version.
samer@0: %%%
samer@0: %%% WARNING:
samer@0: %%% Some dvi-ps converters heuristically allow chars to drift from their
samer@0: %%% true positions a few pixels. This may be noticeable with the 9pt sans-serif
samer@0: %%% bold font used for section headers.
samer@0: %%% You may turn this hackery off via the -e option:
samer@0: %%%     dvips -e 0 foo.dvi >foo.ps
samer@0: %%%
samer@0: \typeout{Document Class 'sig-alternate' <15th. October '04>.  Modified by G.K.M. Tobin/Gerry Murray}
samer@0: \typeout{Based in part upon document Style `acmconf' <22 May 89>. Hacked 4/91 by}
samer@0: \typeout{shivers@cs.cmu.edu, 4/93 by theobald@cs.mcgill.ca}
samer@0: \typeout{Excerpts were taken from (Journal Style) 'esub2acm.cls'.}
samer@0: \typeout{****** Bugs/comments/suggestions/technicalities to Gerry Murray -- murray@hq.acm.org ******}
samer@0: \typeout{Questions on the style, SIGS policies, etc. to Adrienne Griscti griscti@acm.org}
samer@0: \oddsidemargin 4.5pc
samer@0: \evensidemargin 4.5pc
samer@0: \advance\oddsidemargin by -1in  % Correct for LaTeX gratuitousness
samer@0: \advance\evensidemargin by -1in % Correct for LaTeX gratuitousness
samer@0: \marginparwidth 0pt             % Margin pars are not allowed.
samer@0: \marginparsep 11pt              % Horizontal space between outer margin and
samer@0:                                 % marginal note
samer@0: 
samer@0:                                 % Top of page:
samer@0: \topmargin 4.5pc                % Nominal distance from top of page to top of
samer@0:                                 % box containing running head.
samer@0: \advance\topmargin by -1in      % Correct for LaTeX gratuitousness
samer@0: \headheight 0pt                 % Height of box containing running head.
samer@0: \headsep 0pt                    % Space between running head and text.
samer@0:                                 % Bottom of page:
samer@0: \footskip 30pt                  % Distance from baseline of box containing foot
samer@0:                                 % to baseline of last line of text.
samer@0: \@ifundefined{footheight}{\newdimen\footheight}{}% this is for LaTeX2e
samer@0: \footheight 12pt                % Height of box containing running foot.
samer@0: 
samer@0: %% Must redefine the top margin so there's room for headers and
samer@0: %% page numbers if you are using the preprint option. Footers
samer@0: %% are OK as is. Olin.
samer@0: \advance\topmargin by -37pt     % Leave 37pt above text for headers
samer@0: \headheight 12pt                % Height of box containing running head.
samer@0: \headsep 25pt                   % Space between running head and text.
samer@0: 
samer@0: \textheight 666pt       % 9 1/4 column height
samer@0: \textwidth 42pc         % Width of text line.
samer@0:                         % For two-column mode:
samer@0: \columnsep 2pc          %    Space between columns
samer@0: \columnseprule 0pt      %    Width of rule between columns.
samer@0: \hfuzz 1pt              % Allow some variation in column width, otherwise it's
samer@0:                         % too hard to typeset in narrow columns.
samer@0: 
samer@0: \footnotesep 5.6pt      % Height of strut placed at the beginning of every
samer@0:                         % footnote =3D height of normal \footnotesize strut,
samer@0:                         % so no extra space between footnotes.
samer@0: 
samer@0: \skip\footins 8.1pt plus 4pt minus 2pt  % Space between last line of text and
samer@0:                                         % top of first footnote.
samer@0: \floatsep 11pt plus 2pt minus 2pt       % Space between adjacent floats moved
samer@0:                                         % to top or bottom of text page.
samer@0: \textfloatsep 18pt plus 2pt minus 4pt   % Space between main text and floats
samer@0:                                         % at top or bottom of page.
samer@0: \intextsep 11pt plus 2pt minus 2pt      % Space between in-text figures and
samer@0:                                         % text.
samer@0: \@ifundefined{@maxsep}{\newdimen\@maxsep}{}% this is for LaTeX2e
samer@0: \@maxsep 18pt                           % The maximum of \floatsep,
samer@0:                                         % \textfloatsep and \intextsep (minus
samer@0:                                         % the stretch and shrink).
samer@0: \dblfloatsep 11pt plus 2pt minus 2pt    % Same as \floatsep for double-column
samer@0:                                         % figures in two-column mode.
samer@0: \dbltextfloatsep 18pt plus 2pt minus 4pt% \textfloatsep for double-column
samer@0:                                         % floats.
samer@0: \@ifundefined{@dblmaxsep}{\newdimen\@dblmaxsep}{}% this is for LaTeX2e
samer@0: \@dblmaxsep 18pt                        % The maximum of \dblfloatsep and
samer@0:                                         % \dbltexfloatsep.
samer@0: \@fptop 0pt plus 1fil    % Stretch at top of float page/column. (Must be
samer@0:                          % 0pt plus ...)
samer@0: \@fpsep 8pt plus 2fil    % Space between floats on float page/column.
samer@0: \@fpbot 0pt plus 1fil    % Stretch at bottom of float page/column. (Must be
samer@0:                          % 0pt plus ... )
samer@0: \@dblfptop 0pt plus 1fil % Stretch at top of float page. (Must be 0pt plus ...)
samer@0: \@dblfpsep 8pt plus 2fil % Space between floats on float page.
samer@0: \@dblfpbot 0pt plus 1fil % Stretch at bottom of float page. (Must be
samer@0:                          % 0pt plus ... )
samer@0: \marginparpush 5pt       % Minimum vertical separation between two marginal
samer@0:                          % notes.
samer@0: 
samer@0: \parskip 0pt plus 1pt            % Extra vertical space between paragraphs.
samer@0: \parindent 9pt  % GM July 2000 / was 0pt - width of paragraph indentation.
samer@0: \partopsep 2pt plus 1pt minus 1pt% Extra vertical space, in addition to
samer@0:                                  % \parskip and \topsep, added when user
samer@0:                                  % leaves blank line before environment.
samer@0: 
samer@0: \@lowpenalty   51       % Produced by \nopagebreak[1] or \nolinebreak[1]
samer@0: \@medpenalty  151       % Produced by \nopagebreak[2] or \nolinebreak[2]
samer@0: \@highpenalty 301       % Produced by \nopagebreak[3] or \nolinebreak[3]
samer@0: 
samer@0: \@beginparpenalty -\@lowpenalty % Before a list or paragraph environment.
samer@0: \@endparpenalty   -\@lowpenalty % After a list or paragraph environment.
samer@0: \@itempenalty     -\@lowpenalty % Between list items.
samer@0: 
samer@0: \@namedef{ds@10pt}{\@latexerr{The `10pt' option is not allowed in the `acmconf'
samer@0:   document style.}\@eha}
samer@0: \@namedef{ds@11pt}{\@latexerr{The `11pt' option is not allowed in the `acmconf'
samer@0:   document style.}\@eha}
samer@0: \@namedef{ds@12pt}{\@latexerr{The `12pt' option is not allowed in the `acmconf'
samer@0:   document style.}\@eha}
samer@0: 
samer@0: \@options
samer@0: 
samer@0: \lineskip 2pt           % \lineskip is 1pt for all font sizes.
samer@0: \normallineskip 2pt
samer@0: \def\baselinestretch{1}
samer@0: 
samer@0: \abovedisplayskip 9pt plus2pt minus4.5pt%
samer@0: \belowdisplayskip \abovedisplayskip
samer@0: \abovedisplayshortskip  \z@ plus3pt%
samer@0: \belowdisplayshortskip  5.4pt plus3pt minus3pt%
samer@0: \let\@listi\@listI     % Setting of \@listi added 9 Jun 87
samer@0: 
samer@0: \def\small{\@setsize\small{9pt}\viiipt\@viiipt
samer@0: \abovedisplayskip 7.6pt plus 3pt minus 4pt%
samer@0: \belowdisplayskip \abovedisplayskip
samer@0: \abovedisplayshortskip \z@ plus2pt%
samer@0: \belowdisplayshortskip 3.6pt plus2pt minus 2pt
samer@0: \def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
samer@0: \topsep 4pt plus 2pt minus 2pt\parsep 2pt plus 1pt minus 1pt
samer@0: \itemsep \parsep}}
samer@0: 
samer@0: \def\footnotesize{\@setsize\footnotesize{9pt}\ixpt\@ixpt
samer@0: \abovedisplayskip 6.4pt plus 2pt minus 4pt%
samer@0: \belowdisplayskip \abovedisplayskip
samer@0: \abovedisplayshortskip \z@ plus 1pt%
samer@0: \belowdisplayshortskip 2.7pt plus 1pt minus 2pt
samer@0: \def\@listi{\leftmargin\leftmargini %% Added 22 Dec 87
samer@0: \topsep 3pt plus 1pt minus 1pt\parsep 2pt plus 1pt minus 1pt
samer@0: \itemsep \parsep}}
samer@0: 
samer@0: \newcount\aucount
samer@0: \newcount\originalaucount
samer@0: \newdimen\auwidth
samer@0: \auwidth=\textwidth
samer@0: \newdimen\auskip
samer@0: \newcount\auskipcount
samer@0: \newdimen\auskip
samer@0: \global\auskip=1pc
samer@0: \newdimen\allauboxes
samer@0: \allauboxes=\auwidth
samer@0: \newtoks\addauthors
samer@0: \newcount\addauflag
samer@0: \global\addauflag=0 %Haven't shown additional authors yet
samer@0: 
samer@0: \newtoks\subtitletext
samer@0: \gdef\subtitle#1{\subtitletext={#1}}
samer@0: 
samer@0: \gdef\additionalauthors#1{\addauthors={#1}}
samer@0: 
samer@0: \gdef\numberofauthors#1{\global\aucount=#1
samer@0: \ifnum\aucount>3\global\originalaucount=\aucount \global\aucount=3\fi %g}
samer@0: \global\auskipcount=\aucount\global\advance\auskipcount by 1
samer@0: \global\multiply\auskipcount by 2
samer@0: \global\multiply\auskip by \auskipcount
samer@0: \global\advance\auwidth by -\auskip
samer@0: \global\divide\auwidth by \aucount}
samer@0: 
samer@0: % \and was modified to count the number of authors.  GKMT 12 Aug 1999
samer@0: \def\alignauthor{%                  % \begin{tabular}
samer@0: \end{tabular}%
samer@0:   \begin{tabular}[t]{p{\auwidth}}\centering}%
samer@0: 
samer@0: %  *** NOTE *** NOTE *** NOTE *** NOTE ***
samer@0: %  If you have 'font problems' then you may need
samer@0: %  to change these, e.g. 'arialb' instead of "arialbd".
samer@0: %  Gerry Murray 11/11/1999
samer@0: %  *** OR ** comment out block A and activate block B or vice versa.
samer@0: % **********************************************
samer@0: %
samer@0: %  -- Start of block A -- (Type 1 or Truetype fonts)
samer@0: %\newfont{\secfnt}{timesbd at 12pt} % was timenrb originally - now is timesbd
samer@0: %\newfont{\secit}{timesbi at 12pt}   %13 Jan 00 gkmt
samer@0: %\newfont{\subsecfnt}{timesi at 11pt} % was timenrri originally - now is timesi
samer@0: %\newfont{\subsecit}{timesbi at 11pt} % 13 Jan 00 gkmt -- was times changed to timesbi gm 2/4/2000
samer@0: %                         % because "normal" is italic, "italic" is Roman
samer@0: %\newfont{\ttlfnt}{arialbd at 18pt} % was arialb originally - now is arialbd
samer@0: %\newfont{\ttlit}{arialbi at 18pt}    % 13 Jan 00 gkmt
samer@0: %\newfont{\subttlfnt}{arial at 14pt} % was arialr originally - now is arial
samer@0: %\newfont{\subttlit}{ariali at 14pt} % 13 Jan 00 gkmt
samer@0: %\newfont{\subttlbf}{arialbd at 14pt}  % 13 Jan 00 gkmt
samer@0: %\newfont{\aufnt}{arial at 12pt} % was arialr originally - now is arial
samer@0: %\newfont{\auit}{ariali at 12pt} % 13 Jan 00 gkmt
samer@0: %\newfont{\affaddr}{arial at 10pt} % was arialr originally - now is arial
samer@0: %\newfont{\affaddrit}{ariali at 10pt} %13 Jan 00 gkmt
samer@0: %\newfont{\eaddfnt}{arial at 12pt} % was arialr originally - now is arial
samer@0: %\newfont{\ixpt}{times at 9pt} % was timenrr originally - now is times
samer@0: %\newfont{\confname}{timesi at 8pt} % was timenrri - now is timesi
samer@0: %\newfont{\crnotice}{times at 8pt} % was timenrr originally - now is times
samer@0: %\newfont{\ninept}{times at 9pt} % was timenrr originally - now is times
samer@0: 
samer@0: % *********************************************
samer@0: %  -- End of block A --
samer@0: %
samer@0: %
samer@0: % -- Start of block B -- METAFONT
samer@0: % +++++++++++++++++++++++++++++++++++++++++++++
samer@0: % Next (default) block for those using Metafont
samer@0: % Gerry Murray 11/11/1999
samer@0: % *** THIS BLOCK FOR THOSE USING METAFONT *****
samer@0: % *********************************************
samer@0: \newfont{\secfnt}{ptmb at 12pt}
samer@0: \newfont{\secit}{ptmbi at 12pt}    %13 Jan 00 gkmt
samer@0: \newfont{\subsecfnt}{ptmri at 11pt}
samer@0: \newfont{\subsecit}{ptmbi at 11pt}  % 13 Jan 00 gkmt -- was ptmr changed to ptmbi gm 2/4/2000
samer@0:                          % because "normal" is italic, "italic" is Roman
samer@0: \newfont{\ttlfnt}{phvb at 18pt}
samer@0: \newfont{\ttlit}{phvbo at 18pt}    % GM 2/4/2000
samer@0: \newfont{\subttlfnt}{phvr at 14pt}
samer@0: \newfont{\subttlit}{phvro at 14pt} % GM 2/4/2000
samer@0: \newfont{\subttlbf}{phvb at 14pt}  % 13 Jan 00 gkmt
samer@0: \newfont{\aufnt}{phvr at 12pt}
samer@0: \newfont{\auit}{phvro at 12pt}     % GM 2/4/2000
samer@0: \newfont{\affaddr}{phvr at 10pt}
samer@0: \newfont{\affaddrit}{phvro at 10pt} % GM 2/4/2000
samer@0: \newfont{\eaddfnt}{phvr at 12pt}
samer@0: \newfont{\ixpt}{ptmr at 9pt}
samer@0: \newfont{\confname}{ptmri at 8pt}
samer@0: \newfont{\crnotice}{ptmr at 8pt}
samer@0: \newfont{\ninept}{ptmr at 9pt}
samer@0: % +++++++++++++++++++++++++++++++++++++++++++++
samer@0: % -- End of block B --
samer@0: 
samer@0: 
samer@0: \def\email#1{{{\eaddfnt{\vskip 4pt#1}}}}
samer@0: 
samer@0: \def\addauthorsection{\ifnum\originalaucount>3
samer@0:     \section{Additional Authors}\the\addauthors
samer@0:   \fi}
samer@0: 
samer@0: \newcount\savesection
samer@0: \newcount\sectioncntr
samer@0: \global\sectioncntr=1
samer@0: 
samer@0: \setcounter{secnumdepth}{3}
samer@0: 
samer@0: \def\appendix{\par
samer@0: \section*{APPENDIX}
samer@0: \setcounter{section}{0}
samer@0:  \setcounter{subsection}{0}
samer@0:  \def\thesection{\Alph{section}} }
samer@0: 
samer@0: \leftmargini 22.5pt
samer@0: \leftmarginii 19.8pt    % > \labelsep + width of '(m)'
samer@0: \leftmarginiii 16.8pt   % > \labelsep + width of 'vii.'
samer@0: \leftmarginiv 15.3pt    % > \labelsep + width of 'M.'
samer@0: \leftmarginv 9pt
samer@0: \leftmarginvi 9pt
samer@0: 
samer@0: \leftmargin\leftmargini
samer@0: \labelsep 4.5pt
samer@0: \labelwidth\leftmargini\advance\labelwidth-\labelsep
samer@0: 
samer@0: \def\@listI{\leftmargin\leftmargini \parsep 3.6pt plus 2pt minus 1pt%
samer@0: \topsep 7.2pt plus 2pt minus 4pt%
samer@0: \itemsep 3.6pt plus 2pt minus 1pt}
samer@0: 
samer@0: \let\@listi\@listI
samer@0: \@listi
samer@0: 
samer@0: \def\@listii{\leftmargin\leftmarginii
samer@0:    \labelwidth\leftmarginii\advance\labelwidth-\labelsep
samer@0:    \topsep 3.6pt plus 2pt minus 1pt
samer@0:    \parsep 1.8pt plus 0.9pt minus 0.9pt
samer@0:    \itemsep \parsep}
samer@0: 
samer@0: \def\@listiii{\leftmargin\leftmarginiii
samer@0:     \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
samer@0:     \topsep 1.8pt plus 0.9pt minus 0.9pt
samer@0:     \parsep \z@ \partopsep 1pt plus 0pt minus 1pt
samer@0:     \itemsep \topsep}
samer@0: 
samer@0: \def\@listiv{\leftmargin\leftmarginiv
samer@0:      \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
samer@0: 
samer@0: \def\@listv{\leftmargin\leftmarginv
samer@0:      \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
samer@0: 
samer@0: \def\@listvi{\leftmargin\leftmarginvi
samer@0:      \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
samer@0: 
samer@0: \def\labelenumi{\theenumi.}
samer@0: \def\theenumi{\arabic{enumi}}
samer@0: 
samer@0: \def\labelenumii{(\theenumii)}
samer@0: \def\theenumii{\alph{enumii}}
samer@0: \def\p@enumii{\theenumi}
samer@0: 
samer@0: \def\labelenumiii{\theenumiii.}
samer@0: \def\theenumiii{\roman{enumiii}}
samer@0: \def\p@enumiii{\theenumi(\theenumii)}
samer@0: 
samer@0: \def\labelenumiv{\theenumiv.}
samer@0: \def\theenumiv{\Alph{enumiv}}
samer@0: \def\p@enumiv{\p@enumiii\theenumiii}
samer@0: 
samer@0: \def\labelitemi{$\bullet$}
samer@0: \def\labelitemii{\bf --}
samer@0: \def\labelitemiii{$\ast$}
samer@0: \def\labelitemiv{$\cdot$}
samer@0: 
samer@0: \def\verse{\let\\=\@centercr
samer@0:   \list{}{\itemsep\z@ \itemindent -1.5em\listparindent \itemindent
samer@0:           \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
samer@0: \let\endverse\endlist
samer@0: 
samer@0: \def\quotation{\list{}{\listparindent 1.5em
samer@0:     \itemindent\listparindent
samer@0:     \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
samer@0: \let\endquotation=\endlist
samer@0: 
samer@0: \def\quote{\list{}{\rightmargin\leftmargin}\item[]}
samer@0: \let\endquote=\endlist
samer@0: 
samer@0: \def\descriptionlabel#1{\hspace\labelsep \bf #1}
samer@0: \def\description{\list{}{\labelwidth\z@ \itemindent-\leftmargin
samer@0:        \let\makelabel\descriptionlabel}}
samer@0: 
samer@0: \let\enddescription\endlist
samer@0: 
samer@0: \def\theequation{\arabic{equation}}
samer@0: 
samer@0: \arraycolsep 4.5pt   % Half the space between columns in an array environment.
samer@0: \tabcolsep 5.4pt    % Half the space between columns in a tabular environment.
samer@0: \arrayrulewidth .4pt % Width of rules in array and tabular environment.
samer@0: \doublerulesep 1.8pt % Space between adjacent rules in array or tabular env.
samer@0: 
samer@0: \tabbingsep \labelsep   % Space used by the \' command.  (See LaTeX manual.)
samer@0: 
samer@0: \skip\@mpfootins =\skip\footins
samer@0: 
samer@0: \fboxsep =2.7pt      % Space left between box and text by \fbox and \framebox.
samer@0: \fboxrule =.4pt      % Width of rules in box made by \fbox and \framebox.
samer@0: 
samer@0: \def\thepart{\Roman{part}} % Roman numeral part numbers.
samer@0: \def\thesection       {\arabic{section}}
samer@0: \def\thesubsection    {\thesection.\arabic{subsection}}
samer@0: %\def\thesubsubsection {\thesubsection.\arabic{subsubsection}} % GM 7/30/2002
samer@0: %\def\theparagraph     {\thesubsubsection.\arabic{paragraph}}  % GM 7/30/2002
samer@0: \def\thesubparagraph  {\theparagraph.\arabic{subparagraph}}
samer@0: 
samer@0: \def\@pnumwidth{1.55em}
samer@0: \def\@tocrmarg {2.55em}
samer@0: \def\@dotsep{4.5}
samer@0: \setcounter{tocdepth}{3}
samer@0: 
samer@0: \def\tableofcontents{\@latexerr{\tableofcontents: Tables of contents are not
samer@0:   allowed in the `acmconf' document style.}\@eha}
samer@0: 
samer@0: \def\l@part#1#2{\addpenalty{\@secpenalty}
samer@0:    \addvspace{2.25em plus 1pt}  % space above part line
samer@0:    \begingroup
samer@0:    \@tempdima 3em       % width of box holding part number, used by
samer@0:      \parindent \z@ \rightskip \@pnumwidth      %% \numberline
samer@0:      \parfillskip -\@pnumwidth
samer@0:      {\large \bf        % set line in \large boldface
samer@0:      \leavevmode        % TeX command to enter horizontal mode.
samer@0:      #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
samer@0:      \nobreak           % Never break after part entry
samer@0:    \endgroup}
samer@0: 
samer@0: \def\l@section#1#2{\addpenalty{\@secpenalty} % good place for page break
samer@0:    \addvspace{1.0em plus 1pt}   % space above toc entry
samer@0:    \@tempdima 1.5em             % width of box holding section number
samer@0:    \begingroup
samer@0:     \parindent  \z@ \rightskip \@pnumwidth
samer@0:      \parfillskip -\@pnumwidth
samer@0:      \bf                        % Boldface.
samer@0:      \leavevmode                % TeX command to enter horizontal mode.
samer@0:       \advance\leftskip\@tempdima %% added 5 Feb 88 to conform to
samer@0:       \hskip -\leftskip           %% 25 Jan 88 change to \numberline
samer@0:      #1\nobreak\hfil \nobreak\hbox to\@pnumwidth{\hss #2}\par
samer@0:    \endgroup}
samer@0: 
samer@0: 
samer@0: \def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
samer@0: \def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
samer@0: \def\l@paragraph{\@dottedtocline{4}{7.0em}{4.1em}}
samer@0: \def\l@subparagraph{\@dottedtocline{5}{10em}{5em}}
samer@0: 
samer@0: \def\listoffigures{\@latexerr{\listoffigures: Lists of figures are not
samer@0:   allowed in the `acmconf' document style.}\@eha}
samer@0: 
samer@0: \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
samer@0: 
samer@0: \def\listoftables{\@latexerr{\listoftables: Lists of tables are not
samer@0:   allowed in the `acmconf' document style.}\@eha}
samer@0: \let\l@table\l@figure
samer@0: 
samer@0: \def\footnoterule{\kern-3\p@
samer@0:   \hrule width .4\columnwidth
samer@0:   \kern 2.6\p@}                 % The \hrule has default height of .4pt .
samer@0: % ------
samer@0: \long\def\@makefntext#1{\noindent 
samer@0: %\hbox to .5em{\hss$^{\@thefnmark}$}#1}   % original
samer@0: \hbox to .5em{\hss\textsuperscript{\@thefnmark}}#1}  % C. Clifton / GM Oct. 2nd. 2002
samer@0: % -------
samer@0: 
samer@0: \long\def\@maketntext#1{\noindent
samer@0: #1}
samer@0: 
samer@0: \long\def\@maketitlenotetext#1#2{\noindent
samer@0:             \hbox to 1.8em{\hss$^{#1}$}#2}
samer@0: 
samer@0: \setcounter{topnumber}{2}
samer@0: \def\topfraction{.7}
samer@0: \setcounter{bottomnumber}{1}
samer@0: \def\bottomfraction{.3}
samer@0: \setcounter{totalnumber}{3}
samer@0: \def\textfraction{.2}
samer@0: \def\floatpagefraction{.5}
samer@0: \setcounter{dbltopnumber}{2}
samer@0: \def\dbltopfraction{.7}
samer@0: \def\dblfloatpagefraction{.5}
samer@0: 
samer@0: %
samer@0: \long\def\@makecaption#1#2{
samer@0:    \vskip \baselineskip
samer@0:    \setbox\@tempboxa\hbox{\textbf{#1: #2}}
samer@0:    \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
samer@0:        \textbf{#1: #2}\par               %   THEN set as ordinary paragraph.
samer@0:      \else                      %   ELSE  center.
samer@0:        \hbox to\hsize{\hfil\box\@tempboxa\hfil}\par
samer@0:    \fi}
samer@0: 
samer@0: %
samer@0: 
samer@0: \long\def\@makecaption#1#2{
samer@0:    \vskip 10pt
samer@0:    \setbox\@tempboxa\hbox{\textbf{#1: #2}}
samer@0:    \ifdim \wd\@tempboxa >\hsize % IF longer than one line:
samer@0:        \textbf{#1: #2}\par                %   THEN set as ordinary paragraph.
samer@0:      \else                      %   ELSE  center.
samer@0:        \hbox to\hsize{\hfil\box\@tempboxa\hfil}
samer@0:    \fi}
samer@0: 
samer@0: \@ifundefined{figure}{\newcounter {figure}} % this is for LaTeX2e
samer@0: 
samer@0: \def\fps@figure{tbp}
samer@0: \def\ftype@figure{1}
samer@0: \def\ext@figure{lof}
samer@0: \def\fnum@figure{Figure \thefigure}
samer@0: \def\figure{\@float{figure}}
samer@0: \let\endfigure\end@float
samer@0: \@namedef{figure*}{\@dblfloat{figure}}
samer@0: \@namedef{endfigure*}{\end@dblfloat}
samer@0: 
samer@0: \@ifundefined{table}{\newcounter {table}} % this is for LaTeX2e
samer@0: 
samer@0: \def\fps@table{tbp}
samer@0: \def\ftype@table{2}
samer@0: \def\ext@table{lot}
samer@0: \def\fnum@table{Table \thetable}
samer@0: \def\table{\@float{table}}
samer@0: \let\endtable\end@float
samer@0: \@namedef{table*}{\@dblfloat{table}}
samer@0: \@namedef{endtable*}{\end@dblfloat}
samer@0: 
samer@0: \newtoks\titleboxnotes
samer@0: \newcount\titleboxnoteflag
samer@0: 
samer@0: \def\maketitle{\par
samer@0:  \begingroup
samer@0:    \def\thefootnote{\fnsymbol{footnote}}
samer@0:    \def\@makefnmark{\hbox
samer@0:        to 0pt{$^{\@thefnmark}$\hss}}
samer@0:      \twocolumn[\@maketitle]
samer@0: \@thanks
samer@0:  \endgroup
samer@0:  \setcounter{footnote}{0}
samer@0:  \let\maketitle\relax
samer@0:  \let\@maketitle\relax
samer@0:  \gdef\@thanks{}\gdef\@author{}\gdef\@title{}\gdef\@subtitle{}\let\thanks\relax
samer@0:  \@copyrightspace}
samer@0: 
samer@0: %% CHANGES ON NEXT LINES
samer@0: \newif\if@ll % to record which version of LaTeX is in use
samer@0: 
samer@0: \expandafter\ifx\csname LaTeXe\endcsname\relax % LaTeX2.09 is used
samer@0: \else% LaTeX2e is used, so set ll to true
samer@0: \global\@lltrue
samer@0: \fi
samer@0: 
samer@0: \if@ll
samer@0:   \NeedsTeXFormat{LaTeX2e}
samer@0:   \ProvidesClass{sig-alternate} [2004/15/10 - V1.7 - based on acmproc.cls V1.3 <Nov. 30 '99>]
samer@0:   \RequirePackage{latexsym}% QUERY: are these two really needed?
samer@0:   \let\dooptions\ProcessOptions
samer@0: \else
samer@0:   \let\dooptions\@options
samer@0: \fi
samer@0: %% END CHANGES
samer@0: 
samer@0: \def\@height{height}
samer@0: \def\@width{width}
samer@0: \def\@minus{minus}
samer@0: \def\@plus{plus}
samer@0: \def\hb@xt@{\hbox to}
samer@0: \newif\if@faircopy
samer@0: \@faircopyfalse
samer@0: \def\ds@faircopy{\@faircopytrue}
samer@0: 
samer@0: \def\ds@preprint{\@faircopyfalse}
samer@0: 
samer@0: \@twosidetrue
samer@0: \@mparswitchtrue
samer@0: \def\ds@draft{\overfullrule 5\p@}
samer@0: %% CHANGE ON NEXT LINE
samer@0: \dooptions
samer@0: 
samer@0: \lineskip \p@
samer@0: \normallineskip \p@
samer@0: \def\baselinestretch{1}
samer@0: \def\@ptsize{0} %needed for amssymbols.sty
samer@0: 
samer@0: %% CHANGES ON NEXT LINES
samer@0: \if@ll% allow use of old-style font change commands in LaTeX2e
samer@0: \@maxdepth\maxdepth
samer@0: %
samer@0: \DeclareOldFontCommand{\rm}{\ninept\rmfamily}{\mathrm}
samer@0: \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
samer@0: \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
samer@0: \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
samer@0: \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
samer@0: \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
samer@0: \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
samer@0: \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}}
samer@0: \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}}
samer@0: \fi
samer@0: %
samer@0: \if@ll
samer@0:  \renewcommand{\rmdefault}{cmr}  % was 'ttm'
samer@0: % Note! I have also found 'mvr' to work ESPECIALLY well.
samer@0: % Gerry - October 1999
samer@0: % You may need to change your LV1times.fd file so that sc is
samer@0: % mapped to cmcsc - -for smallcaps -- that is if you decide
samer@0: % to change {cmr} to {times} above. (Not recommended)
samer@0:   \renewcommand{\@ptsize}{}
samer@0:   \renewcommand{\normalsize}{%
samer@0:     \@setfontsize\normalsize\@ixpt{10.5\p@}%\ninept%
samer@0:     \abovedisplayskip 6\p@ \@plus2\p@ \@minus\p@
samer@0:     \belowdisplayskip \abovedisplayskip
samer@0:     \abovedisplayshortskip 6\p@ \@minus 3\p@
samer@0:     \belowdisplayshortskip 6\p@ \@minus 3\p@
samer@0:     \let\@listi\@listI
samer@0:   }
samer@0: \else
samer@0:   \def\@normalsize{%changed next to 9 from 10
samer@0:     \@setsize\normalsize{9\p@}\ixpt\@ixpt
samer@0:    \abovedisplayskip 6\p@ \@plus2\p@ \@minus\p@
samer@0:     \belowdisplayskip \abovedisplayskip
samer@0:     \abovedisplayshortskip 6\p@ \@minus 3\p@
samer@0:     \belowdisplayshortskip 6\p@ \@minus 3\p@
samer@0:     \let\@listi\@listI
samer@0:   }%
samer@0: \fi
samer@0: \if@ll
samer@0:   \newcommand\scriptsize{\@setfontsize\scriptsize\@viipt{8\p@}}
samer@0:   \newcommand\tiny{\@setfontsize\tiny\@vpt{6\p@}}
samer@0:   \newcommand\large{\@setfontsize\large\@xiipt{14\p@}}
samer@0:   \newcommand\Large{\@setfontsize\Large\@xivpt{18\p@}}
samer@0:   \newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20\p@}}
samer@0:   \newcommand\huge{\@setfontsize\huge\@xxpt{25\p@}}
samer@0:   \newcommand\Huge{\@setfontsize\Huge\@xxvpt{30\p@}}
samer@0: \else
samer@0:   \def\scriptsize{\@setsize\scriptsize{8\p@}\viipt\@viipt}
samer@0:   \def\tiny{\@setsize\tiny{6\p@}\vpt\@vpt}
samer@0:   \def\large{\@setsize\large{14\p@}\xiipt\@xiipt}
samer@0:   \def\Large{\@setsize\Large{18\p@}\xivpt\@xivpt}
samer@0:   \def\LARGE{\@setsize\LARGE{20\p@}\xviipt\@xviipt}
samer@0:   \def\huge{\@setsize\huge{25\p@}\xxpt\@xxpt}
samer@0:   \def\Huge{\@setsize\Huge{30\p@}\xxvpt\@xxvpt}
samer@0: \fi
samer@0: \normalsize
samer@0: 
samer@0: % make aubox hsize/number of authors up to 3, less gutter
samer@0: % then showbox gutter showbox gutter showbox -- GKMT Aug 99
samer@0: \newbox\@acmtitlebox
samer@0: \def\@maketitle{\newpage
samer@0:  \null
samer@0:  \setbox\@acmtitlebox\vbox{%
samer@0: \baselineskip 20pt
samer@0: \vskip 2em                   % Vertical space above title.
samer@0:    \begin{center}
samer@0:     {\ttlfnt \@title\par}       % Title set in 18pt Helvetica (Arial) bold size.
samer@0:     \vskip 1.5em                % Vertical space after title.
samer@0: %This should be the subtitle.
samer@0: {\subttlfnt \the\subtitletext\par}\vskip 1.25em%\fi
samer@0:     {\baselineskip 16pt\aufnt   % each author set in \12 pt Arial, in a
samer@0:      \lineskip .5em             % tabular environment
samer@0:      \begin{tabular}[t]{c}\@author
samer@0:      \end{tabular}\par}
samer@0:     \vskip 1.5em               % Vertical space after author.
samer@0:    \end{center}}
samer@0:  \dimen0=\ht\@acmtitlebox
samer@0:  \advance\dimen0 by -12.75pc\relax % Increased space for title box -- KBT
samer@0:  \unvbox\@acmtitlebox
samer@0:  \ifdim\dimen0<0.0pt\relax\vskip-\dimen0\fi}
samer@0: 
samer@0: 
samer@0: \newcount\titlenotecount
samer@0: \global\titlenotecount=0
samer@0: \newtoks\tntoks
samer@0: \newtoks\tntokstwo
samer@0: \newtoks\tntoksthree
samer@0: \newtoks\tntoksfour
samer@0: \newtoks\tntoksfive
samer@0: 
samer@0: \def\abstract{
samer@0: \ifnum\titlenotecount>0 % was =1
samer@0:     \insert\footins{%
samer@0:     \reset@font\footnotesize
samer@0:         \interlinepenalty\interfootnotelinepenalty
samer@0:         \splittopskip\footnotesep
samer@0:         \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
samer@0:         \hsize\columnwidth \@parboxrestore
samer@0:         \protected@edef\@currentlabel{%
samer@0:         }%
samer@0:         \color@begingroup
samer@0: \ifnum\titlenotecount=1
samer@0:       \@maketntext{%
samer@0:          \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\@finalstrut\strutbox}%
samer@0: \fi
samer@0: \ifnum\titlenotecount=2
samer@0:       \@maketntext{%
samer@0:       \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\@finalstrut\strutbox}%
samer@0: \fi
samer@0: \ifnum\titlenotecount=3
samer@0:       \@maketntext{%
samer@0:          \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\@finalstrut\strutbox}%
samer@0: \fi
samer@0: \ifnum\titlenotecount=4
samer@0:       \@maketntext{%
samer@0:          \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\@finalstrut\strutbox}%
samer@0: \fi
samer@0: \ifnum\titlenotecount=5
samer@0:       \@maketntext{%
samer@0:          \raisebox{4pt}{$\ast$}\rule\z@\footnotesep\ignorespaces\the\tntoks\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\dagger$}\rule\z@\footnotesep\ignorespaces\the\tntokstwo\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\ddagger$}\rule\z@\footnotesep\ignorespaces\the\tntoksthree\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\S$}\rule\z@\footnotesep\ignorespaces\the\tntoksfour\par\@finalstrut\strutbox}%
samer@0: \@maketntext{%
samer@0:          \raisebox{4pt}{$\P$}\rule\z@\footnotesep\ignorespaces\the\tntoksfive\@finalstrut\strutbox}%
samer@0: \fi
samer@0:    \color@endgroup} %g}
samer@0: \fi
samer@0: \setcounter{footnote}{0}
samer@0: \section*{ABSTRACT}\normalsize%\ninept
samer@0: }
samer@0: 
samer@0: \def\endabstract{\if@twocolumn\else\endquotation\fi}
samer@0: 
samer@0: \def\keywords{\if@twocolumn
samer@0: \section*{Keywords}
samer@0: \else \small
samer@0: \quotation
samer@0: \fi}
samer@0: 
samer@0: \def\terms{\if@twocolumn
samer@0: \section*{General Terms}
samer@0: \else \small
samer@0: \quotation
samer@0: \fi}
samer@0: 
samer@0: % -- Classification needs to be a bit smart due to optionals - Gerry/Georgia November 2nd. 1999
samer@0: \newcount\catcount
samer@0: \global\catcount=1
samer@0: 
samer@0: \def\category#1#2#3{%
samer@0: \ifnum\catcount=1
samer@0: \section*{Categories and Subject Descriptors}
samer@0: \advance\catcount by 1\else{\unskip; }\fi
samer@0:     \@ifnextchar [{\@category{#1}{#2}{#3}}{\@category{#1}{#2}{#3}[]}%
samer@0: }
samer@0: 
samer@0: \def\@category#1#2#3[#4]{%
samer@0:     \begingroup
samer@0:         \let\and\relax
samer@0:             #1 [\textbf{#2}]%
samer@0:             \if!#4!%
samer@0:                 \if!#3!\else : #3\fi
samer@0:             \else
samer@0:                 :\space
samer@0:                 \if!#3!\else #3\kern\z@---\hskip\z@\fi
samer@0:                 \textit{#4}%
samer@0:             \fi
samer@0:     \endgroup
samer@0: }
samer@0: %
samer@0: 
samer@0: %%% This section (written by KBT) handles the 1" box in the lower left
samer@0: %%% corner of the left column of the first page by creating a picture,
samer@0: %%% and inserting the predefined string at the bottom (with a negative
samer@0: %%% displacement to offset the space allocated for a non-existent
samer@0: %%% caption).
samer@0: %%%
samer@0: \newtoks\copyrightnotice
samer@0: \def\ftype@copyrightbox{8}
samer@0: \def\@copyrightspace{
samer@0: \@float{copyrightbox}[b]
samer@0: \begin{center}
samer@0: \setlength{\unitlength}{1pc}
samer@0: \begin{picture}(20,6) %Space for copyright notice
samer@0: \put(0,-0.95){\crnotice{\@toappear}}
samer@0: \end{picture}
samer@0: \end{center}
samer@0: \end@float}
samer@0: 
samer@0: \def\@toappear{} % Default setting blank - commands below change this.
samer@0: \long\def\toappear#1{\def\@toappear{\parbox[b]{20pc}{\baselineskip 9pt#1}}}
samer@0: \def\toappearbox#1{\def\@toappear{\raisebox{5pt}{\framebox[20pc]{\parbox[b]{19pc}{#1}}}}}
samer@0: 
samer@0: \newtoks\conf
samer@0: \newtoks\confinfo
samer@0: \def\conferenceinfo#1#2{\global\conf={#1}\global\confinfo{#2}}
samer@0: 
samer@0: 
samer@0: \def\marginpar{\@latexerr{The \marginpar command is not allowed in the
samer@0:   `acmconf' document style.}\@eha}
samer@0: 
samer@0: \mark{{}{}}     % Initializes TeX's marks
samer@0: 
samer@0: \def\today{\ifcase\month\or
samer@0:   January\or February\or March\or April\or May\or June\or
samer@0:   July\or August\or September\or October\or November\or December\fi
samer@0:   \space\number\day, \number\year}
samer@0: 
samer@0: \def\@begintheorem#1#2{%
samer@0:     \parskip 0pt % GM July 2000 (for tighter spacing)
samer@0:     \trivlist
samer@0:     \item[%
samer@0:         \hskip 10\p@
samer@0:         \hskip \labelsep
samer@0:         {{\sc #1}\hskip 5\p@\relax#2.}%
samer@0:     ]
samer@0:     \it
samer@0: }
samer@0: \def\@opargbegintheorem#1#2#3{%
samer@0:     \parskip 0pt % GM July 2000 (for tighter spacing)
samer@0:     \trivlist
samer@0:     \item[%
samer@0:         \hskip 10\p@
samer@0:         \hskip \labelsep
samer@0:         {\sc #1\ #2\             % This mod by Gerry to enumerate corollaries
samer@0:    \setbox\@tempboxa\hbox{(#3)}  % and bracket the 'corollary title'
samer@0:         \ifdim \wd\@tempboxa>\z@ % and retain the correct numbering of e.g. theorems
samer@0:             \hskip 5\p@\relax    % if they occur 'around' said corollaries.
samer@0:             \box\@tempboxa       % Gerry - Nov. 1999.
samer@0:         \fi.}%
samer@0:     ]
samer@0:     \it
samer@0: }
samer@0: \newif\if@qeded
samer@0: \global\@qededfalse
samer@0: 
samer@0: % -- original
samer@0: %\def\proof{%
samer@0: %  \vspace{-\parskip} % GM July 2000 (for tighter spacing)
samer@0: %    \global\@qededfalse
samer@0: %    \@ifnextchar[{\@xproof}{\@proof}%
samer@0: %}
samer@0: % -- end of original
samer@0: 
samer@0: % (JSS) Fix for vertical spacing bug - Gerry Murray July 30th. 2002
samer@0: \def\proof{%
samer@0: \vspace{-\lastskip}\vspace{-\parsep}\penalty-51%
samer@0: \global\@qededfalse
samer@0: \@ifnextchar[{\@xproof}{\@proof}%
samer@0: }
samer@0: 
samer@0: \def\endproof{%
samer@0:     \if@qeded\else\qed\fi
samer@0:     \endtrivlist
samer@0: }
samer@0: \def\@proof{%
samer@0:     \trivlist
samer@0:     \item[%
samer@0:         \hskip 10\p@
samer@0:         \hskip \labelsep
samer@0:         {\sc Proof.}%
samer@0:     ]
samer@0:     \ignorespaces
samer@0: }
samer@0: \def\@xproof[#1]{%
samer@0:     \trivlist
samer@0:     \item[\hskip 10\p@\hskip \labelsep{\sc Proof #1.}]%
samer@0:     \ignorespaces
samer@0: }
samer@0: \def\qed{%
samer@0:     \unskip
samer@0:     \kern 10\p@
samer@0:     \begingroup
samer@0:         \unitlength\p@
samer@0:         \linethickness{.4\p@}%
samer@0:         \framebox(6,6){}%
samer@0:     \endgroup
samer@0:     \global\@qededtrue
samer@0: }
samer@0: 
samer@0: \def\newdef#1#2{%
samer@0:     \expandafter\@ifdefinable\csname #1\endcsname
samer@0:         {\@definecounter{#1}%
samer@0:          \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
samer@0:          \global\@namedef{#1}{\@defthm{#1}{#2}}%
samer@0:          \global\@namedef{end#1}{\@endtheorem}%
samer@0:     }%
samer@0: }
samer@0: \def\@defthm#1#2{%
samer@0:     \refstepcounter{#1}%
samer@0:     \@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}%
samer@0: }
samer@0: \def\@xdefthm#1#2{%
samer@0:     \@begindef{#2}{\csname the#1\endcsname}%
samer@0:     \ignorespaces
samer@0: }
samer@0: \def\@ydefthm#1#2[#3]{%
samer@0:     \trivlist
samer@0:     \item[%
samer@0:         \hskip 10\p@
samer@0:         \hskip \labelsep
samer@0:         {\it #2%
samer@0:          \savebox\@tempboxa{#3}%
samer@0:          \ifdim \wd\@tempboxa>\z@
samer@0:             \ \box\@tempboxa
samer@0:          \fi.%
samer@0:         }]%
samer@0:     \ignorespaces
samer@0: }
samer@0: \def\@begindef#1#2{%
samer@0:     \trivlist
samer@0:     \item[%
samer@0:         \hskip 10\p@
samer@0:         \hskip \labelsep
samer@0:         {\it #1\ \rm #2.}%
samer@0:     ]%
samer@0: }
samer@0: \def\theequation{\arabic{equation}}
samer@0: 
samer@0: \newcounter{part}
samer@0: \newcounter{section}
samer@0: \newcounter{subsection}[section]
samer@0: \newcounter{subsubsection}[subsection]
samer@0: \newcounter{paragraph}[subsubsection]
samer@0: \def\thepart{\Roman{part}}
samer@0: \def\thesection{\arabic{section}}
samer@0: \def\thesubsection{\thesection.\arabic{subsection}}
samer@0: \def\thesubsubsection{\thesubsection.\arabic{subsubsection}} %removed \subsecfnt 29 July 2002 gkmt
samer@0: \def\theparagraph{\thesubsubsection.\arabic{paragraph}} %removed \subsecfnt 29 July 2002 gkmt
samer@0: \newif\if@uchead
samer@0: \@ucheadfalse
samer@0: 
samer@0: %% CHANGES: NEW NOTE
samer@0: %% NOTE: OK to use old-style font commands below, since they were
samer@0: %% suitably redefined for LaTeX2e
samer@0: %% END CHANGES
samer@0: \setcounter{secnumdepth}{3}
samer@0: \def\part{%
samer@0:     \@startsection{part}{9}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}
samer@0:         {4\p@}{\normalsize\@ucheadtrue}%
samer@0: }
samer@0: \def\section{%
samer@0:     \@startsection{section}{1}{\z@}{-10\p@ \@plus -4\p@ \@minus -2\p@}% GM
samer@0:     {4\p@}{\baselineskip 14pt\secfnt\@ucheadtrue}%
samer@0: }
samer@0: 
samer@0: \def\subsection{%
samer@0:     \@startsection{subsection}{2}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}
samer@0:     {4\p@}{\secfnt}%
samer@0: }
samer@0: \def\subsubsection{%
samer@0:     \@startsection{subsubsection}{3}{\z@}{-8\p@ \@plus -2\p@ \@minus -\p@}%
samer@0:     {4\p@}{\subsecfnt}%
samer@0: }
samer@0: \def\paragraph{%
samer@0:     \vskip 12pt\@startsection{paragraph}{3}{\z@}{6\p@ \@plus \p@}%
samer@0:     {-5\p@}{\subsecfnt}%
samer@0: }
samer@0: \let\@period=.
samer@0: \def\@startsection#1#2#3#4#5#6{%
samer@0:         \if@noskipsec  %gkmt, 11 aug 99
samer@0:         \global\let\@period\@empty
samer@0:         \leavevmode
samer@0:         \global\let\@period.%
samer@0:     \fi
samer@0:       \par %
samer@0:     \@tempskipa #4\relax
samer@0:     \@afterindenttrue
samer@0:     \ifdim \@tempskipa <\z@
samer@0:         \@tempskipa -\@tempskipa
samer@0:         \@afterindentfalse
samer@0:     \fi
samer@0:     \if@nobreak
samer@0:     \everypar{}%
samer@0:     \else
samer@0:         \addpenalty\@secpenalty
samer@0:         \addvspace\@tempskipa
samer@0:     \fi
samer@0: \parskip=0pt % GM July 2000 (non numbered) section heads
samer@0:     \@ifstar
samer@0:         {\@ssect{#3}{#4}{#5}{#6}}
samer@0:         {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}%
samer@0: }
samer@0: \def\@sect#1#2#3#4#5#6[#7]#8{%
samer@0:     \ifnum #2>\c@secnumdepth
samer@0:         \let\@svsec\@empty
samer@0:     \else
samer@0:         \refstepcounter{#1}%
samer@0:         \edef\@svsec{%
samer@0:             \begingroup
samer@0:                 %\ifnum#2>2 \noexpand\rm \fi % changed to next 29 July 2002 gkmt
samer@0:                         \ifnum#2>2 \noexpand#6 \fi
samer@0:                 \csname the#1\endcsname
samer@0:             \endgroup
samer@0:             \ifnum #2=1\relax .\fi
samer@0:             \hskip 1em
samer@0:         }%
samer@0:     \fi
samer@0:     \@tempskipa #5\relax
samer@0:     \ifdim \@tempskipa>\z@
samer@0:         \begingroup
samer@0:             #6\relax
samer@0:             \@hangfrom{\hskip #3\relax\@svsec}%
samer@0:             \begingroup
samer@0:                 \interlinepenalty \@M
samer@0:                 \if@uchead
samer@0:                     \uppercase{#8}%
samer@0:                 \else
samer@0:                     #8%
samer@0:                 \fi
samer@0:                 \par
samer@0:             \endgroup
samer@0:         \endgroup
samer@0:         \csname #1mark\endcsname{#7}%
samer@0:         \vskip -12pt  %gkmt, 11 aug 99 and GM July 2000 (was -14) - numbered section head spacing
samer@0: \addcontentsline{toc}{#1}{%
samer@0:             \ifnum #2>\c@secnumdepth \else
samer@0:                 \protect\numberline{\csname the#1\endcsname}%
samer@0:             \fi
samer@0:             #7%
samer@0:         }%
samer@0:     \else
samer@0:         \def\@svsechd{%
samer@0:             #6%
samer@0:             \hskip #3\relax
samer@0:             \@svsec
samer@0:             \if@uchead
samer@0:                 \uppercase{#8}%
samer@0:             \else
samer@0:                 #8%
samer@0:             \fi
samer@0:             \csname #1mark\endcsname{#7}%
samer@0:             \addcontentsline{toc}{#1}{%
samer@0:                 \ifnum #2>\c@secnumdepth \else
samer@0:                     \protect\numberline{\csname the#1\endcsname}%
samer@0:                 \fi
samer@0:                 #7%
samer@0:             }%
samer@0:         }%
samer@0:     \fi
samer@0:     \@xsect{#5}\hskip 1pt
samer@0:     \par
samer@0: }
samer@0: \def\@xsect#1{%
samer@0:     \@tempskipa #1\relax
samer@0:     \ifdim \@tempskipa>\z@
samer@0:         \par
samer@0:         \nobreak
samer@0:         \vskip \@tempskipa
samer@0:         \@afterheading
samer@0:     \else
samer@0:         \global\@nobreakfalse
samer@0:         \global\@noskipsectrue
samer@0:         \everypar{%
samer@0:             \if@noskipsec
samer@0:                 \global\@noskipsecfalse
samer@0:                 \clubpenalty\@M
samer@0:                 \hskip -\parindent
samer@0:                 \begingroup
samer@0:                     \@svsechd
samer@0:                     \@period
samer@0:                 \endgroup
samer@0:                 \unskip
samer@0:                 \@tempskipa #1\relax
samer@0:                 \hskip -\@tempskipa
samer@0:             \else
samer@0:                 \clubpenalty \@clubpenalty
samer@0:                 \everypar{}%
samer@0:             \fi
samer@0:         }%
samer@0:     \fi
samer@0:     \ignorespaces
samer@0: }
samer@0: \def\@trivlist{%
samer@0:     \@topsepadd\topsep
samer@0:     \if@noskipsec
samer@0:         \global\let\@period\@empty
samer@0:         \leavevmode
samer@0:         \global\let\@period.%
samer@0:     \fi
samer@0:     \ifvmode
samer@0:         \advance\@topsepadd\partopsep
samer@0:     \else
samer@0:         \unskip
samer@0:         \par
samer@0:     \fi
samer@0:     \if@inlabel
samer@0:         \@noparitemtrue
samer@0:         \@noparlisttrue
samer@0:     \else
samer@0:         \@noparlistfalse
samer@0:         \@topsep\@topsepadd
samer@0:     \fi
samer@0:     \advance\@topsep \parskip
samer@0:     \leftskip\z@skip
samer@0:     \rightskip\@rightskip
samer@0:     \parfillskip\@flushglue
samer@0:     \@setpar{\if@newlist\else{\@@par}\fi}
samer@0:     \global\@newlisttrue
samer@0:     \@outerparskip\parskip
samer@0: }
samer@0: 
samer@0: %%% Actually, 'abbrev' works just fine as the default
samer@0: %%% Bibliography style.
samer@0: 
samer@0: \typeout{Using 'Abbrev' bibliography style}
samer@0: \newcommand\bibyear[2]{%
samer@0:     \unskip\quad\ignorespaces#1\unskip
samer@0:     \if#2..\quad \else \quad#2 \fi
samer@0: }
samer@0: \newcommand{\bibemph}[1]{{\em#1}}
samer@0: \newcommand{\bibemphic}[1]{{\em#1\/}}
samer@0: \newcommand{\bibsc}[1]{{\sc#1}}
samer@0: \def\@normalcite{%
samer@0:     \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
samer@0: }
samer@0: \def\@citeNB{%
samer@0:     \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
samer@0: }
samer@0: \def\@citeRB{%
samer@0:     \def\@cite##1##2{##1\if@tempswa , ##2\fi]}%
samer@0: }
samer@0: \def\start@cite#1#2{%
samer@0:     \edef\citeauthoryear##1##2##3{%
samer@0:         ###1%
samer@0:         \ifnum#2=\z@ \else\ ###2\fi
samer@0:     }%
samer@0:     \ifnum#1=\thr@@
samer@0:         \let\@@cite\@citeyear
samer@0:     \else
samer@0:         \let\@@cite\@citenormal
samer@0:     \fi
samer@0:     \@ifstar{\@citeNB\@@cite}{\@normalcite\@@cite}%
samer@0: }
samer@0: \def\cite{\start@cite23}
samer@0: \def\citeNP{\cite*}
samer@0: \def\citeA{\start@cite10}
samer@0: \def\citeANP{\citeA*}
samer@0: \def\shortcite{\start@cite23}
samer@0: \def\shortciteNP{\shortcite*}
samer@0: \def\shortciteA{\start@cite20}
samer@0: \def\shortciteANP{\shortciteA*}
samer@0: \def\citeyear{\start@cite30}
samer@0: \def\citeyearNP{\citeyear*}
samer@0: \def\citeN{%
samer@0:     \@citeRB
samer@0:     \def\citeauthoryear##1##2##3{##1\ [##3%
samer@0:         \def\reserved@a{##1}%
samer@0:         \def\citeauthoryear####1####2####3{%
samer@0:             \def\reserved@b{####1}%
samer@0:             \ifx\reserved@a\reserved@b
samer@0:                 ####3%
samer@0:             \else
samer@0:                 \errmessage{Package acmart Error: author mismatch
samer@0:                          in \string\citeN^^J^^J%
samer@0:                     See the acmart package documentation for explanation}%
samer@0:             \fi
samer@0:         }%
samer@0:     }%
samer@0:     \@ifstar\@citeyear\@citeyear
samer@0: }
samer@0: \def\shortciteN{%
samer@0:     \@citeRB
samer@0:     \def\citeauthoryear##1##2##3{##2\ [##3%
samer@0:         \def\reserved@a{##2}%
samer@0:         \def\citeauthoryear####1####2####3{%
samer@0:             \def\reserved@b{####2}%
samer@0:             \ifx\reserved@a\reserved@b
samer@0:                 ####3%
samer@0:             \else
samer@0:                 \errmessage{Package acmart Error: author mismatch
samer@0:                          in \string\shortciteN^^J^^J%
samer@0:                     See the acmart package documentation for explanation}%
samer@0:             \fi
samer@0:         }%
samer@0:     }%
samer@0:     \@ifstar\@citeyear\@citeyear  % GM July 2000
samer@0: }
samer@0: \def\@citenormal{%
samer@0:     \@ifnextchar [{\@tempswatrue\@citex;}
samer@0:                   {\@tempswafalse\@citex,[]}% % GM July 2000
samer@0: }
samer@0: \def\@citeyear{%
samer@0:     \@ifnextchar [{\@tempswatrue\@citex,}%
samer@0:                   {\@tempswafalse\@citex,[]}%
samer@0: }
samer@0: \def\@citex#1[#2]#3{%
samer@0:     \let\@citea\@empty
samer@0:     \@cite{%
samer@0:         \@for\@citeb:=#3\do{%
samer@0:             \@citea
samer@0:             \def\@citea{#1 }%
samer@0:             \edef\@citeb{\expandafter\@iden\@citeb}%
samer@0:             \if@filesw
samer@0:                 \immediate\write\@auxout{\string\citation{\@citeb}}%
samer@0:             \fi
samer@0:             \@ifundefined{b@\@citeb}{%
samer@0:                 {\bf ?}%
samer@0:                 \@warning{%
samer@0:                     Citation `\@citeb' on page \thepage\space undefined%
samer@0:                 }%
samer@0:             }%
samer@0:             {\csname b@\@citeb\endcsname}%
samer@0:         }%
samer@0:     }{#2}%
samer@0: }
samer@0: \let\@biblabel\@gobble
samer@0: \newdimen\bibindent
samer@0: \setcounter{enumi}{1}
samer@0: \bibindent=0em
samer@0: \def\thebibliography#1{% \ifnum\addauflag=0\addauthorsection\global\addauflag=1\fi
samer@0:      \section[References]{%    <=== OPTIONAL ARGUMENT ADDED HERE
samer@0:         {References} % was uppercased but this affects pdf bookmarks (SP/GM October 2004)
samer@0:           \vskip -9pt  % GM July 2000 (for tighter spacing)
samer@0:          \@mkboth{{\refname}}{{\refname}}%
samer@0:      }%
samer@0:      \list{[\arabic{enumi}]}{%
samer@0:          \settowidth\labelwidth{[#1]}%
samer@0:          \leftmargin\labelwidth
samer@0:          \advance\leftmargin\labelsep
samer@0:          \advance\leftmargin\bibindent
samer@0:          \parsep=0pt\itemsep=1pt % GM July 2000
samer@0:          \itemindent -\bibindent
samer@0:          \listparindent \itemindent
samer@0:          \usecounter{enumi}
samer@0:      }%
samer@0:      \let\newblock\@empty
samer@0:      \raggedright % GM July 2000
samer@0:      \sloppy
samer@0:      \sfcode`\.=1000\relax
samer@0: }
samer@0: 
samer@0: 
samer@0: \gdef\balancecolumns
samer@0: {\vfill\eject
samer@0: \global\@colht=\textheight
samer@0: \global\ht\@cclv=\textheight
samer@0: }
samer@0: 
samer@0: \newcount\colcntr
samer@0: \global\colcntr=0
samer@0: \newbox\savebox
samer@0: 
samer@0: \gdef \@makecol {%
samer@0: \global\advance\colcntr by 1
samer@0: \ifnum\colcntr>2 \global\colcntr=1\fi
samer@0:    \ifvoid\footins
samer@0:      \setbox\@outputbox \box\@cclv
samer@0:    \else
samer@0:      \setbox\@outputbox \vbox{%
samer@0: \boxmaxdepth \@maxdepth
samer@0:        \@tempdima\dp\@cclv
samer@0:        \unvbox \@cclv
samer@0:        \vskip-\@tempdima
samer@0:        \vskip \skip\footins
samer@0:        \color@begingroup
samer@0:          \normalcolor
samer@0:          \footnoterule
samer@0:          \unvbox \footins
samer@0:        \color@endgroup
samer@0:        }%
samer@0:    \fi
samer@0:    \xdef\@freelist{\@freelist\@midlist}%
samer@0:    \global \let \@midlist \@empty
samer@0:    \@combinefloats
samer@0:    \ifvbox\@kludgeins
samer@0:      \@makespecialcolbox
samer@0:    \else
samer@0:      \setbox\@outputbox \vbox to\@colht {%
samer@0: \@texttop
samer@0:        \dimen@ \dp\@outputbox
samer@0:        \unvbox \@outputbox
samer@0:    \vskip -\dimen@
samer@0:        \@textbottom
samer@0:        }%
samer@0:    \fi
samer@0:    \global \maxdepth \@maxdepth
samer@0: }
samer@0: \def\titlenote{\@ifnextchar[\@xtitlenote{\stepcounter\@mpfn
samer@0: \global\advance\titlenotecount by 1
samer@0: \ifnum\titlenotecount=1
samer@0:     \raisebox{9pt}{$\ast$}
samer@0: \fi
samer@0: \ifnum\titlenotecount=2
samer@0:     \raisebox{9pt}{$\dagger$}
samer@0: \fi
samer@0: \ifnum\titlenotecount=3
samer@0:     \raisebox{9pt}{$\ddagger$}
samer@0: \fi
samer@0: \ifnum\titlenotecount=4
samer@0: \raisebox{9pt}{$\S$}
samer@0: \fi
samer@0: \ifnum\titlenotecount=5
samer@0: \raisebox{9pt}{$\P$}
samer@0: \fi
samer@0:          \@titlenotetext
samer@0: }}
samer@0: 
samer@0: \long\def\@titlenotetext#1{\insert\footins{%
samer@0: \ifnum\titlenotecount=1\global\tntoks={#1}\fi
samer@0: \ifnum\titlenotecount=2\global\tntokstwo={#1}\fi
samer@0: \ifnum\titlenotecount=3\global\tntoksthree={#1}\fi
samer@0: \ifnum\titlenotecount=4\global\tntoksfour={#1}\fi
samer@0: \ifnum\titlenotecount=5\global\tntoksfive={#1}\fi
samer@0:     \reset@font\footnotesize
samer@0:     \interlinepenalty\interfootnotelinepenalty
samer@0:     \splittopskip\footnotesep
samer@0:     \splitmaxdepth \dp\strutbox \floatingpenalty \@MM
samer@0:     \hsize\columnwidth \@parboxrestore
samer@0:     \protected@edef\@currentlabel{%
samer@0:     }%
samer@0:     \color@begingroup
samer@0:    \color@endgroup}}
samer@0: 
samer@0: %%%%%%%%%%%%%%%%%%%%%%%%%
samer@0: \ps@plain
samer@0: \baselineskip=11pt
samer@0: \let\thepage\relax % For NO page numbers - GM Nov. 30th. 1999 and July 2000
samer@0: \def\setpagenumber#1{\global\setcounter{page}{#1}}
samer@0: %\pagenumbering{arabic}  % Arabic page numbers GM July 2000
samer@0: \twocolumn             % Double column.
samer@0: \flushbottom           % Even bottom -- alas, does not balance columns at end of document
samer@0: \pagestyle{plain}
samer@0: 
samer@0: % Need Copyright Year and Copyright Data to be user definable (in .tex file).
samer@0: % Gerry Nov. 30th. 1999
samer@0: \newtoks\copyrtyr
samer@0: \newtoks\acmcopyr
samer@0: \newtoks\boilerplate
samer@0: \global\acmcopyr={X-XXXXX-XX-X/XX/XX}  % Default - 5/11/2001 *** Gerry
samer@0: \global\copyrtyr={200X}                % Default - 3/3/2003 *** Gerry
samer@0: \def\CopyrightYear#1{\global\copyrtyr{#1}}
samer@0: \def\crdata#1{\global\acmcopyr{#1}}
samer@0: \def\permission#1{\global\boilerplate{#1}}
samer@0: %
samer@0: \global\boilerplate={Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page.  To copy otherwise, to republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee.}
samer@0: \newtoks\copyrightetc
samer@0: \global\copyrightetc{Copyright \the\copyrtyr\  \the\acmcopyr}
samer@0: 
samer@0: \toappear{\the\boilerplate\par
samer@0: {\confname{\the\conf}} \the\confinfo\par \the\copyrightetc}
samer@0: %
samer@0: %% End of sig-alternate.cls -- V1.7 - 10/15/2004 --
samer@0: %% Gerry Murray -- Wednesday October 15th. 2004




