summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2017-05-01 18:57:46 +0900
committerNorbert Preining <norbert@preining.info>2017-05-01 18:57:46 +0900
commit11ed52a4a8d75f0b00e81db3fab3007841679924 (patch)
treee943b526c5ac908739ac66447758aba72f51a074
parentf1760ea85be17e19f8d256ae285dbc68744dfe3e (diff)
add acmtrans
-rw-r--r--texmf-dist/bibtex/bst/acmtrans/acmtrans.bst1768
-rw-r--r--texmf-dist/doc/latex/acmtrans/acmtr.bib116
-rw-r--r--texmf-dist/doc/latex/acmtrans/acmtr2e.pdfbin0 -> 180516 bytes
-rw-r--r--texmf-dist/doc/latex/acmtrans/acmtr2e.tex1000
-rw-r--r--texmf-dist/tex/latex/acmtrans/acmtrans2e.cls1243
-rw-r--r--tlpkg/tlpsrc/acmtrans.tlpsrc0
6 files changed, 4127 insertions, 0 deletions
diff --git a/texmf-dist/bibtex/bst/acmtrans/acmtrans.bst b/texmf-dist/bibtex/bst/acmtrans/acmtrans.bst
new file mode 100644
index 00000000..f9720fd4
--- /dev/null
+++ b/texmf-dist/bibtex/bst/acmtrans/acmtrans.bst
@@ -0,0 +1,1768 @@
+% "ACM Transactions" BibTeX style, acmtrans.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% Revised 28-MARCH-1996
+% Revised 30-JUNE-1995
+% Revised 15-JAN-1996
+% $Header: acmtrans.bst,v 1.2 96/01/17 09:05:38 boyland Exp $
+%
+% Hacked by John T. Boyland at University of California, Berkeley
+% (with assistance by John R. Hauser)
+% Hacked by Andrew W. Appel and Rebecca L. Davies at Princeton University,
+% based on a "chicago.bst" by Glenn Paulley at U. Waterloo,
+% which was based on "newapa.bst" found at ymir.claremont.edu.
+%
+% Citation format: [author-last-name year]
+% [author-last-name and author-last-name year]
+% [author-last-name, author-last-name, and author-last-name year]
+% [author-last-name et al. year]
+% [author-last-name]
+% author-last-name [year]
+% [author-last-name and author-last-name]
+% [author-last-name et al.]
+% [year] or [year,year]
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+% These TeX macro definitions are found in acmtrans.sty. Additional
+% commands to manipulate different components of a citation can be defined
+% so that, for example, you can list author's names without parentheses
+% if using a citation as a noun or object in a sentence.
+%
+% Features of acmtrans.bst:
+% ========================
+%
+% - all authors appear last name first.
+% - all pages are listed xx-xx, (no pp.) and are at the end of the reference
+% - publishers are identified as publisher, address
+% - conferences papers (inproceedings) may give city of conference,
+% date of conference, and journal that the proceedings appear in.
+% - months abbreviated to max four letters (eg. Mar.)
+% - volume of a series indicated after the title of the series
+% - editors appear after edited title and are identified by a trailing "Eds."
+% not in parentheses. Editor names are not given in small caps.
+% (unless there is no author line)
+% - names terminated with a period even if there is no first name.
+% - editions are indicated trailing after the work, not in parentheses.
+% - "et al." citations have a protected period to avoid bad spacing (jrh)
+% - "address" required when publisher given
+% - series (roman) and volume are in a sentence separate from (book-)title
+%
+%
+% Features of chicago.bst:
+% =======================
+%
+% - full names used in citations, but abbreviated citations are available
+% (see above)
+% - if an entry has a "month", then the month and year are also printed
+% as part of that bibitem.
+% - all conjunctions use "and" instead of "\&"
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries.
+% - book, inbook, and manual use "location: publisher" (or organization)
+% for address and publisher. All other types list publishers separately.
+% - "pp." are used to identify page numbers for all entry types except
+% articles.
+% - organization is used as a citation label if neither author nor editor
+% is present (for manuals).
+% - "et al." is used for long author and editor lists, or when "others"
+% is used.
+%
+% Modifications and bug fixes from newapa.bst:
+% ===========================================
+%
+% - added month, year to bib entries if month is present
+% - fixed bug with In proceedings, added necessary comma after title
+% - all conjunctions changed to "and" from "\&"
+% - fixed bug with author labels in my.full.label: "et al." now is
+% generated when "others" is an author name
+% - major modification from Chicago Manual of Style (13th ed.) is that
+% only the first author in a reference appears last name first-
+% additional authors appear as J. Q. Public.
+% - pages are listed as "pp. xx-xx" in all entry types except
+% article entries. Unnecessary (IMHO) "()" around page numbers
+% were removed, and page numbers now don't end with a period.
+% - created chicago.sty for use with this bibstyle (required).
+% - fixed bugs in FUNCTION {format.vol.num.pages} for missing volume,
+% number, and /or pages. Renamed to format.jour.vol.
+% - fixed bug in formatting booktitles: additional period an error if
+% book has a volume.
+% - fixed bug: editors usually given redundant period before next clause
+% (format.editors.dot) removed.
+% - added label support for organizations, if both author and editor
+% are missing (from alpha.bst). If organization is too long, then
+% the key field is used for abbreviated citations.
+% - In proceedings or books of several volumes, no comma was written
+% between the "Volume x" and the page numbers (this was intentional
+% in newapa.bst). Fixed.
+% - Some journals may not have volumes/numbers, only month/year (eg.
+% IEEE Computer). Fixed bug in article style that assumed volume/number
+% was always present.
+%
+% Original documentation for newapa.sty:
+% =====================================
+%
+% This version was made by modifying the master file made by
+% Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU), and the 'named' BibTeX
+% style of Peter F. Patel-Schneider.
+%
+% Copyright (C) 1985, all rights reserved.
+% Copying of this file is authorized only if either
+% (1) you make absolutely no changes to your copy, including name, or
+% (2) if you do make changes, you name it something other than 'newapa.bst'.
+% There are undoubtably bugs in this style. If you make bug fixes,
+% improvements, etc. please let me know. My e-mail address is:
+% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
+%
+% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ city % jtb: added
+ date % jtb: added
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+STRINGS { s t u }
+
+FUNCTION {output.nonnull}
+{ 's :=
+ output.state mid.sentence =
+ { ", " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+% Use a colon to separate output. Used only for address/publisher
+% combination in book/inbook types, address/institution for manuals,
+% and organization:publisher for proceedings (inproceedings).
+%
+FUNCTION {output.nonnull.colon}
+{ 's :=
+ output.state mid.sentence =
+ { ": " * write$ }
+ { output.state after.block =
+ { add.period$ write$
+ newline$
+ "\newblock " write$
+ }
+ { output.state before.all =
+ 'write$
+ { add.period$ " " * write$ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.colon}
+{ duplicate$ empty$
+ 'pop$
+ 'output.nonnull.colon
+ if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION {output.check.colon}
+{ 't :=
+ duplicate$ empty$
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.colon
+ if$
+}
+
+FUNCTION {output.year.check}
+{ year empty$
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+
+FUNCTION {fin.entry}
+{ add.period$
+ write$
+ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+ 'skip$
+ { output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.sentence
+ if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+%
+% Emphasize the top string on the stack.
+%
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+%
+% Emphasize the top string on the stack, but add a trailing space.
+%
+FUNCTION {emphasize.space}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+%
+% Emphasize the top string on stack, add a trailing comma and space.
+%
+FUNCTION {emphasize.comma}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\em " swap$ * ",\/}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+%
+% Format bibliographical entries with the first author last name first,
+% and subsequent authors with initials followed by last name.
+% All names are formatted in this routine.
+%
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { nameptr #1 =
+ {"{\sc " s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ * "}" * 't := }
+ {"{\sc " s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc others}" =
+ { " {\sc et~al\mbox{.}}" * } % jrh: avoid spacing problems
+ { " {\sc and} " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION {my.full.label}
+{ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { s nameptr "{vv~}{ll}" format.name$ 't := % get the next name
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * t * } % from Chicago Manual of Style
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+
+}
+
+FUNCTION {format.names.fml}
+%
+% Format names in "familiar" format, with first initial followed by
+% last name. Like format.names, ALL names are formatted.
+% jtb: The names are NOT put in small caps
+%
+{ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+
+ { "{" s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ { namesleft #1 >
+ { ", " * t * }
+ { numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+% { " {\&} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+ { "" }
+ { author format.names add.period$} % jtb: add period if none before
+ if$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+%
+% Format editor names for use in the "in" types: inbook, incollection,
+% inproceedings: first initial, then last names. When editors are the
+% LABEL for an entry, then format.editor is used which lists editors
+% by last name first.
+%
+FUNCTION {format.editors.fml}
+{ editor empty$
+ { "" }
+ { editor format.names.fml
+ editor num.names$ #1 >
+ { ", Eds." * } % jtb: removed parentheses
+ { ", Ed." * } % jtb: removed parentheses
+ if$
+ }
+ if$
+}
+
+%
+% Format editor names for use in labels, last names first.
+%
+FUNCTION {format.editors}
+{ editor empty$
+ { "" }
+ { editor format.names
+ editor num.names$ #1 >
+ { ", Eds." * } % jtb: removed parentheses
+ { ", Ed." * } % jtb: removed parentheses
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title empty$
+ { "" }
+ { title "t" change.case$ }
+ if$
+}
+
+% Note that the APA style requres case changes
+% in article titles. The following does not
+% change cases. If you perfer it, uncomment the
+% following and comment out the above.
+
+%FUNCTION {format.title}
+%{ title empty$
+% { "" }
+% { title }
+% if$
+%}
+
+FUNCTION {n.dashify}
+{ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {format.btitle}
+{ edition empty$
+ { title emphasize }
+ { title empty$
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/}, " * edition * " ed." * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.emphasize.booktitle}
+{ edition empty$
+ { booktitle emphasize }
+ { booktitle empty$
+ { booktitle emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " booktitle * "\/}, " * edition * " ed." * } % jtb: no ()s for ed.
+ if$
+ }
+ if$
+ }
+
+% jtb: if the preceding string (the title of the conference) is non-empty,
+% jtb: append the location, otherwise leave empty (so as to trigger the
+% jtb: error message in output.check
+FUNCTION {format.city}
+{ duplicate$ empty$
+ { }
+ { city empty$
+ { date empty$
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ { date empty$
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+% jtb: If there is a series, this is added and the volume trails after it.
+% jtb: Otherwise, "Vol" is Capitalized.
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { series empty$
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in " * series * }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+ { "" }
+ { pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ }
+ if$
+}
+
+% By Young (and Spencer)
+% GNP - fixed bugs with missing volume, number, and/or pages
+%
+% Format journal, volume, number, pages for article types.
+%
+FUNCTION {format.jour.vol}
+{ journal empty$
+ { "no journal in " cite$ * warning$
+ "" }
+ { journal emphasize.space }
+ if$
+ number empty$
+ { volume empty$
+ { "no number and no volume in " cite$ * warning$
+ "" * }
+ { "~{\em " * Volume * "}" * }
+ if$
+ }
+ { volume empty$
+ {"no volume for " cite$ * warning$
+ "~" * number * }
+ { "~" *
+ volume emphasize.comma
+ "~" * number * * }
+ if$
+ month empty$
+ {}
+ {" (" * month * ")" *}
+ if$
+ }
+ if$
+ pages empty$
+ {"page numbers missing in " cite$ * warning$
+ "" * } % gnp - place a null string on the stack for output
+ { duplicate$ empty$
+ { pop$ format.pages }
+ { ", " * pages n.dashify * } % gnp - removed pp. for articles
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty$
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+% jtb: format for collections or proceedings not appearing in a journal
+FUNCTION {format.in.emphasize.booktitle}
+{ booktitle empty$
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+% jtb: format for proceedings appearing in a journal
+FUNCTION {format.in.booktitle}
+{ booktitle empty$
+ { "" }
+ { "In " booktitle * }
+ if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+ { "" }
+ { editor empty$
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+ 'skip$
+% {pop$
+ {{ "" }
+ type "t" change.case$}
+ if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+ { "Tech. Rep." }
+ 'type
+ if$
+ number empty$
+ { "t" change.case$ }
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION {format.article.crossref}
+{ "See"
+ "\citeN{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+ editor num.names$ duplicate$
+ #2 >
+ { pop$ " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { #2 <
+ 'skip$
+ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ "In "
+ }
+ { "Volume" volume tie.or.space.connect % gnp - changed to mixed case
+ " of " *
+ }
+ if$
+ editor empty$
+ editor field.or.null author field.or.null =
+ or
+ { key empty$
+ { series empty$
+ { "need editor, key, or series for " cite$ * " to crossref " *
+ crossref * warning$
+ "" *
+ }
+ { "{\em " * series * "\/}" * }
+ if$
+ }
+ { key * }
+ if$
+ }
+ { format.crossref.editor * }
+ if$
+ " \citeN{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ "See"
+ " \citeN{" * crossref * "}" *
+}
+
+% format.lab.names:
+%
+% determines "short" names for the abbreviated author information.
+% "Long" labels are created in calc.label, using the routine my.full.label
+% to format author and editor fields.
+%
+% There are 4 cases for labels. (n=3 in the example)
+% a) one author Foo
+% b) one to n Foo, Bar and Baz
+% c) use of "and others" Foo, Bar et al.
+% d) more than n Foo et al.
+%
+FUNCTION {format.lab.names}
+{ 's :=
+ s num.names$ 'numnames :=
+ numnames #2 > % change number to number of others allowed before
+ % forcing "et al".
+ { s #1 "{vv~}{ll}" format.name$ " et~al\mbox{.}" * } % jrh: \mbox{} added
+ {
+ numnames #1 - 'namesleft :=
+ #2 'nameptr :=
+ s #1 "{vv~}{ll}" format.name$
+ { namesleft #0 > }
+ { nameptr numnames =
+ { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ { " et~al\mbox{.}" * } % jrh: avoid spacing problems
+ { " and " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ }
+ { ", " * s nameptr "{vv~}{ll}" format.name$ * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { "no key, editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {author.key.organization.label}
+%
+% added - gnp. Provide label formatting by organization if author is null.
+%
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "no key, author or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.organization.label}
+%
+% added - gnp. Provide label formatting by organization if editor is null.
+%
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "no key, editor or organization in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { organization }
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "no key, author, or editor in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {calc.label}
+%
+% Changed - GNP. See also author.organization.sort, editor.organization.sort
+% Form label for BibTeX entry. The classification of which fields are used
+% for which type of entry (book, inbook, etc.) are taken from alpha.bst.
+% The change here from newapa is to also include organization as a
+% citation label if author or editor is missing.
+%
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.organization.label
+ { type$ "manual" =
+ 'author.key.organization.label
+ 'author.key.label
+ if$
+ }
+ if$
+ }
+ if$
+
+ author empty$ % generate the full label citation information.
+ { editor empty$
+ { organization empty$
+ { "no author, editor, or organization in " cite$ * warning$
+ "??" }
+ { organization }
+ if$
+ }
+ { editor my.full.label }
+ if$
+ }
+ { author my.full.label }
+ if$
+
+% leave label on the stack, to be popped when required.
+
+ "}{" * swap$ * "}{" *
+% year field.or.null purify$ #-1 #4 substring$ *
+%
+% save the year for sort processing afterwards (adding a, b, c, etc.)
+%
+ year field.or.null purify$ #-1 #4 substring$
+ 'label.year :=
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+
+ "\bibitem[\protect\citeauthoryear{" write$
+ calc.label write$
+ sort.year write$
+ "}]{" write$
+
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ crossref missing$
+ { format.jour.vol output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors
+ "author and editor" output.check }
+ { format.authors
+ output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle
+ "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ howpublished output
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+ author empty$
+ { format.editors
+ "author and editor" output.check
+ }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle
+ "title" output.check
+ crossref missing$
+ { new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ { format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle
+ "booktitle" output.check
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher "publisher" output.check
+ address "address" output.check % jtb: require address
+ format.chapter.pages output % gnp - was special.output.nonnull
+% left out comma before page numbers
+ % jtb: moved from before publisher
+ }
+ { format.incoll.inproc.crossref
+ output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ crossref missing$
+ { journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence % jtb: start a new sentence for series/volume
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.pages output % jtb: moved from before publisher
+ }
+ % jtb: new:
+ { format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.jour.vol output
+ }
+ if$
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+ author empty$
+ { editor empty$
+ { organization "organization" output.check
+ organization format.key output } % if all else fails, use key
+ { format.editors "author and editor" output.check }
+ if$
+ }
+ { format.authors output.nonnull }
+ if$
+ output.year.check % added
+ new.block
+ format.btitle
+ "title" output.check
+ organization address new.block.checkb
+ % jtb: back to normal style: organization, address
+ organization "organization" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ "M.S.\ thesis" format.thesis.type output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output % added
+ output.year.check % added
+ title howpublished new.block.checkb
+ format.title output
+ new.block
+ howpublished output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ format.thesis.type "Ph.D. thesis" output.nonnull
+ school "school" output.check
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ editor empty$
+ { organization output
+ organization format.key output } % gnp - changed from author format.key
+ { format.editors output.nonnull }
+ if$
+% author format.key output % gnp - removed (should be either
+% editor or organization
+ output.year.check % added (newapa)
+ new.block
+ format.btitle format.city "title" output.check % jtb: added city
+ new.sentence
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ organization output
+ % jtb: normal order: publisher, address
+ publisher output
+ address output
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ format.tr.number output % jtb: moved month ...
+ institution "institution" output.check
+ address output
+ new.sentence
+ month output % jtb: ... to here (no parens)
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors
+ "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title
+ "title" output.check
+ new.block
+ note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"Mar."} % jtb: corrected: was "March"
+
+MACRO {apr} {"Apr."} % jtb: corrected: was "April"
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"Aug."}
+
+MACRO {sep} {"Sept."}
+
+MACRO {oct} {"Oct."}
+
+MACRO {nov} {"Nov."}
+
+MACRO {dec} {"Dec."}
+
+MACRO {acmcs} {"ACM Comput. Surv."}
+
+MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+
+MACRO {acta} {"Acta Inf."}
+
+MACRO {ai} {"Artificial Intelligence"}
+
+MACRO {al} {"Ada Lett."}
+
+MACRO {acr} {"Adv. Comput. Res."}
+
+MACRO {bit} {"Bit"}
+
+MACRO {cacm} {"Commun. ACM"}
+
+MACRO {cj} {"Comput. J."}
+
+MACRO {cn} {"Comput. Netw."}
+
+MACRO {cl} {"Comput. Lang."}
+
+MACRO {ibmjrd} {"IBM J. Res. and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ict} {"Inf. Contr."}
+
+MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+
+MACRO {ieees} {"IEEE Softw."}
+
+MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
+
+MACRO {ieeetc} {"IEEE Trans. Comput."}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+
+MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+
+MACRO {ipl} {"Inf. Process. Lett."}
+
+MACRO {icp} {"Inf. Comput."}
+
+MACRO {ist} {"Inf. Softw. Tech."}
+
+MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+
+MACRO {ijpp} {"Int. J. Parallel Program."}
+
+MACRO {jlp} {"J. Logic Program."}
+
+MACRO {jfp} {"J. Funct. Program."}
+
+MACRO {jcss} {"J. Comput. Syst. Sci."}
+
+MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+
+MACRO {jss} {"J. Syst. Softw."}
+
+MACRO {jlc} {"J. Logic and Comput."}
+
+MACRO {jlsc} {"J. Lisp Symb. Comput."}
+
+MACRO {lpls} {"Lett. Program. Lang. Syst."}
+
+MACRO {mor} {"Math. Oper. Res."}
+
+MACRO {mscs} {"Math. Struct. Comput. Sci."}
+
+MACRO {mst} {"Math. Syst. Theor."} % jtb: was Math. Syst. Theory
+ % jtb: (if you ask me, I prefer the old way)
+MACRO {ngc} {"New Gen. Comput."}
+
+MACRO {scp} {"Sci. Comput. Program."}
+
+MACRO {sicomp} {"SIAM J. Comput."}
+
+MACRO {spe} {"Softw. Pract. Exper."}
+
+MACRO {tocs} {"ACM Trans. Comput. Syst."}
+
+MACRO {tods} {"ACM Trans. Database Syst."}
+
+MACRO {tog} {"ACM Trans. Graphics"}
+
+MACRO {toms} {"ACM Trans. Math. Softw."}
+
+MACRO {toois} {"ACM Trans. Office Inf. Syst."}
+
+MACRO {toplas} {"ACM Trans. Program. Lang. Syst."}
+
+MACRO {tcs} {"Theor. Comput. Sci."} % jtb: was Theor. Comp. Sci.
+
+MACRO {tr} {"Tech. Rep."}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 >
+ { " " * }
+ 'skip$
+ if$
+ s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=
+ nameptr numnames = t "others" = and
+ { " et~al" * }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+ { "missing author in " cite$ * warning$
+ editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {author.organization.sort}
+%
+% added - GNP. Stack author or organization for sorting (from alpha.bst).
+% Unlike alpha.bst, we need entire names, not abbreviations
+%
+{ author empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need author, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION {editor.organization.sort}
+%
+% added - GNP. Stack editor or organization for sorting (from alpha.bst).
+% Unlike alpha.bst, we need entire names, not abbreviations
+%
+{ editor empty$
+ { organization empty$
+ { key empty$
+ { "to sort, need editor, organization, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { organization sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+FUNCTION {presort}
+%
+% Presort creates the bibentry's label via a call to calc.label, and then
+% sorts the entries based on entry type. Chicago.bst adds support for
+% including organizations as the sort key; the following is stolen from
+% alpha.bst.
+%
+{ calc.label sortify % recalculate bibitem label
+ year field.or.null purify$ #-1 #4 substring$ * % add year
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.organization.sort
+ { type$ "manual" =
+ 'author.organization.sort
+ 'author.sort
+ if$
+ }
+ if$
+ }
+ if$
+ #1 entry.max$ substring$ % added for newapa
+ 'sort.label := % added for newapa
+ sort.label % added for newapa
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT % by label, year, author/editor, title
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+%
+% Pass through all entries, comparing current entry to last one.
+% Need to concatenate year to the stack (done by calc.label) to determine
+% if two entries are the same (see presort)
+%
+{ last.label
+ calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ = % are they equal?
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ #1 entry.max$ substring$ 'last.label := % assign to last.label
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label.year extra.label * 'sort.year :=
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {bib.sort.order}
+
+SORT % by sort.label, year, title --- giving final bib. order.
+
+FUNCTION {begin.bib}
+
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{}" write$ newline$
+}
+
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/texmf-dist/doc/latex/acmtrans/acmtr.bib b/texmf-dist/doc/latex/acmtrans/acmtr.bib
new file mode 100644
index 00000000..9d6d9735
--- /dev/null
+++ b/texmf-dist/doc/latex/acmtrans/acmtr.bib
@@ -0,0 +1,116 @@
+% acmtr.bib
+% $Header: acmtr.bib,v 1.3 96/01/30 14:27:43 boyland Exp $
+
+@mastersthesis{ko94,
+author = "Jacob Kornerup",
+title = "Mapping Powerlists onto Hypercubes",
+school = "The University of Texas at Austin",
+note = "(In preparation)",
+year = "1994"}
+%month = "dec",}
+
+@PhdThesis{gerndt:89,
+ author = "Michael Gerndt",
+ title = "Automatic Parallelization for Distributed-Memory
+ Multiprocessing Systems",
+ school = "University of Bonn",
+ year = 1989,
+ address = "Bonn, Germany",
+ month = dec
+}
+
+@article{6:1:1,
+author = "J. E. {Archer, Jr.} and R. Conway and F. B. Schneider",
+title = "User recovery and reversal in interactive systems",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "6",
+number = "1",
+month = jan,
+year = 1984,
+pages = "1--19"}
+
+@article{7:1:137,
+author = "D. D. Dunlop and V. R. Basili",
+title = "Generalizing specifications for uniformly implemented loops",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "7",
+number = "1",
+month = jan,
+year = 1985,
+pages = "137--158"}
+
+@article{7:2:183,
+author = "J. Heering and P. Klint",
+title = "Towards monolingual programming environments",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "7",
+number = "2",
+month = apr,
+year = 1985,
+pages = "183--213"}
+
+@book{knuth:texbook,
+author = "Donald E. Knuth",
+title = "The {\TeX{}book}",
+publisher = "Addison-Wesley",
+address = "Reading, Mass.",
+year = 1984}
+
+@article{6:3:380,
+author = "E. Korach and D. Rotem and N. Santoro",
+title = "Distributed algorithms for finding centers and medians in networks",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "6",
+number = "3",
+month = jul,
+year = 1984,
+pages = "380--401"}
+
+@book{lamport:latex,
+author = "Leslie Lamport",
+title = "\it {\LaTeX}: A Document Preparation System",
+publisher = "Addison-Wesley",
+address = "Reading, Mass.",
+year = 1986}
+
+@article{7:3:359,
+author = "F. Nielson",
+title = "Program transformations in a denotational setting",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "7",
+number = "3",
+month = jul,
+year = 1985,
+pages = "359--379"}
+
+%testing
+@article{test,
+author = "F. Nielson",
+title = "Program transformations in a denotational setting",
+journal = "ACM Trans. Program. Lang. Syst.",
+volume = "7",
+number = "3",
+month = jul,
+year = 1986,
+pages = "359--379"}
+
+
+@inproceedings{reid:scribe,
+author = "Brian K. Reid",
+title = "A high-level approach to computer document formatting",
+booktitle = "Proceedings of the Seventh Annual Symposium on Principles of
+ Programming Languages",
+month = jan,
+year = 1980,
+publisher = "ACM",
+address = "New York",
+pages = "24--31"}
+
+
+
+
+
+
+
+
+
diff --git a/texmf-dist/doc/latex/acmtrans/acmtr2e.pdf b/texmf-dist/doc/latex/acmtrans/acmtr2e.pdf
new file mode 100644
index 00000000..dc70cf0d
--- /dev/null
+++ b/texmf-dist/doc/latex/acmtrans/acmtr2e.pdf
Binary files differ
diff --git a/texmf-dist/doc/latex/acmtrans/acmtr2e.tex b/texmf-dist/doc/latex/acmtrans/acmtr2e.tex
new file mode 100644
index 00000000..f6dd45ba
--- /dev/null
+++ b/texmf-dist/doc/latex/acmtrans/acmtr2e.tex
@@ -0,0 +1,1000 @@
+% acmtr.tex
+% revised 1/20/97
+% $Header: acmtr.tex,v 1.5 2/14/96 11:07:57 boyland Exp $
+
+\documentclass[hyperref]{acmtrans2e}
+\usepackage[pdfmark]{hyperref}
+
+%&t&{\tt #}&
+%&v&\verb|#|&
+
+\newcommand{\BibTeX}{{\rm B\kern-.05em{\sc i\kern-.025em b}\kern-.08em
+ T\kern-.1667em\lower.7ex\hbox{E}\kern-.125emX}}
+
+\firstfoot{ACM Transactions on Document Formatting,
+ Vol.\ 8, No.\ 1, January 1999, Pages \pages.}
+
+\runningfoot{ACM Transactions on Document Formatting,
+ Vol.\ 8, No.\ 1, January 1999.}
+
+\markboth{Leslie Lamport et al.}{Preparing Articles for the ACM Transactions}
+
+\title{Preparing Articles for the ACM Transactions
+with \LaTeX}
+\author{LESLIE LAMPORT\\Digital Equipment Corporation\\
+ANDREW W. APPEL\\Princeton University \and
+JOHN TANG BOYLAND\\University of California, Berkeley}
+\begin{abstract}
+The \LaTeX\ {\tt acmtrans} document style formats articles in
+the style of the ACM transactions. Users who have prepared their
+document with \LaTeX\ can, with very little effort, produce
+camera-ready copy for these journals.
+%Then the ACM production department
+%will re-typeset from scratch anyway, introducing typographical errors.
+\end{abstract}
+
+\category{D.2.7}{Software Engineering}{Distribution and Main\-ten\-ance}%
+[documentation]
+
+\category{H.4.0}{Information Systems Applications}{General}
+
+\category{I.7.2}{Text Processing}{Document Preparation}[languages \and
+ photocomposition]
+
+\terms{Documentation, Languages}
+
+\keywords{Document preparation, publications, typesetting}
+
+\begin{document}
+
+\setcounter{page}{111}
+
+\begin{bottomstuff}
+Author's address: L. Lamport, System Research Center,
+Digital Equipment Corporation, 130 Lytton Ave., Palo Alto, CA 94301.\newline
+Start of a second footnote ...
+\permission
+\copyright\ 1999 ACM 0164-0925/99/0100-0111 \$00.75
+\end{bottomstuff}
+\maketitle
+
+\section{Introduction}
+
+This article is a description of the \LaTeX\ {\tt acmtrans} document
+style for typesetting articles in the format of the ACM
+transactions---{\em Transactions on Programming Languages and
+Systems}, {\em Transactions on Database Systems}, etc. It has, of
+course, been typeset using this document style, so it is a
+self-illustrating article. The reader is assumed to be familiar
+with \LaTeX, as described by~\citeN{lamport:latex}.
+
+This document also describes the {\tt acmtrans} bibliography style.
+
+\LaTeX\ is a document preparation system
+implemented as a macro package in Donald Knuth's
+\TeX\ typesetting system~\cite{knuth:texbook}. It is based
+upon the premise that the user should describe the logical structure of
+his document and not how the document is to be formatted. Formatting
+is under the direction of a {\em document style} chosen by the user.
+The user can dramatically change the way the document is formatted by
+simply choosing a different document style. The idea of separating the
+logical structure from the formatting comes from Brian Reid's {\em
+Scribe\/} system~\cite{reid:scribe}.
+
+
+It is impossible to provide predefined logical structures to handle all
+situations that may arise in a document, so users must sometimes make
+their own formatting decisions. \LaTeX\ provides a number of features
+to assist in this task and, if necessary, the user can call upon the
+full power of \TeX, which is probably the most powerful typesetting
+system currently available. However, very little user formatting is
+necessary for the majority of documents that appear in journals such as
+the ACM transactions. Consequently, it is quite easy to convert
+an existing \LaTeX\ input file to the {\tt acmtrans} style.
+
+\section{The Title Page}
+
+\subsection{The Title, Author(s), and Abstract}
+
+Following order is mandatory to generate a correct title page:
+
+\begin{verbatim}
+ \documentstyle{acmtrans}
+ \markboth{}{}
+ \title{}
+ \author{}
+ \begin{abstract} ... \end{abstract}
+ \category{}{}{}
+ \terms{}
+ \keywords{}
+ \begin{document}
+ \begin{bottomstuff} ... \end{bottomstuff}
+ \maketitle
+\end{verbatim}
+
+\subsubsection{Title and Author}
+The \LaTeX\ \verb|\title| and \verb|\author| declarations and the
+\verb|\maketitle| command are employed as usual. However, the user
+must format the author a little differently to match the ACM standard.
+The following example \cite{6:1:1} illustrates most features:
+\begin{quote}
+\begin{verbatim}
+\author{JAMES E. ARCHER, JR.\\ Rational Machines
+ \and RICHARD CONWAY and FRED B. SCHNEIDER \\
+ Cornell University}
+\end{verbatim}
+\end{quote}
+Note that authors' names are in uppercase letters, authors are
+separated from their affiliation by a \verb|\\| command, multiple
+authors with the same affiliation are separated by ``and'' (or commas
+and ``and'' if there are more than two), and authors with different
+affiliations are separated by an \verb|\and| command. The following
+example \cite{6:3:380} shows what to do if there are more than
+two affiliations:
+\begin{quote}
+\begin{verbatim}
+\author{E. KORACH \\ IBM Israel \\
+ D. ROTEM \\ University of Waterloo
+ \and N. SANTORO \\ Carleton University}
+\end{verbatim}
+\end{quote}
+In both the title and the author, you may have to insert \verb|\\|
+commands if lines need to be broken.
+
+\subsubsection{Abstract}
+The abstract is typed as usual with the {\tt abstract} environment.
+However, this environment must come before the \verb|\maketitle|
+command.
+
+
+\subsection{Content Indicators and Keywords}
+
+The content indicators and keywords are entered with \LaTeX\
+declarations. The CR categories are indicated with \verb|\category|
+declarations. The first CR category of this article, appearing
+right below the abstract, was entered with the following command:
+\begin{quote}
+\begin{verbatim}
+\category{D.2.7}{Software Engineering}{Distribution and
+ Maintenance}[Documentation]
+\end{verbatim}
+\end{quote}
+Note that the last argument (which contains the subject descriptors)
+is optional, since some categories have none. Multiple subject descriptors
+are separated by \verb|\and| commands, as in the last category of
+this article:
+\begin{quote}
+\begin{verbatim}
+\category{I.7.2}{Text Processing}{Document Preparation}
+ [Languages \and Photocomposition]
+\end{verbatim}
+\end{quote}
+Use a separate \verb|\category| declaration for each CR category;
+they will be listed in the order that the commands appear. The
+\verb|\category| commands must precede the \verb|\maketitle|
+command.
+
+The General Terms are declared with a (single) \verb|\terms|
+command as in the one for this article:
+\begin{quote}
+\begin{verbatim}
+\terms{Documentation, Languages}
+\end{verbatim}
+\end{quote}
+The \verb|\terms| declaration must come before the \verb|\maketitle|
+command. The terms {\it must} be chosen from the following list:
+\begin{quote}
+Algorithms;
+Design;
+Documentation;
+Economics;
+Experimentation;
+Human factors;
+Languages;
+Legal aspects;
+Management;
+Measurement;
+Performance;
+Reliability;
+Security;
+Standardization;
+Theory;
+Verification;
+\end{quote}
+The general terms are
+orthogonal to the Categories, at least theoretically, and so
+may be applied to any elements of the classification tree.
+
+Think of them as `perspectives' from which any topic may
+be approached. Thus you could use {\em Theory} or {\em Performance} for an
+article about {\em C.2.1 Distributed Networks}. However,
+some of these general terms actually slide over into
+content areas. Thus {\em Legal aspects} is a general term
+applicable to any category, but also an entire node in the tree,
+{\em K.5}, devoted to {\em Legal aspects of computing,} with many sub-topics.
+
+So, though perhaps not perfect, the General Terms are most useful
+in online searches when used in combination with categories.
+
+The ``Additional Keywords and Phrases'' item on the title page
+is provided by the \verb|\keywords| declaration, {\bf listed alphabetically\/}.
+For this article,
+they were produced by the following command:
+\begin{quote}
+\begin{verbatim}
+\keywords{Document preparation, publications, typesetting}
+\end{verbatim}
+\end{quote}
+There is no prescribed list of ``additional keywords;'' use any that
+you want.
+
+\subsection{The Bottom of the Title Page}
+
+The bottom of the article's title page contains acknowledgment of
+support, the author(s) address(es), a ``permission to copy'' statement,
+and a line containing a copyright symbol (\copyright) and a mysterious
+number. This is all entered with a {\tt bottomstuff} environment;
+there must be no blank line after the \verb|\begin{bottomstuff}|
+command. The permission to copy statement is produced by the
+\verb|\permission| command.
+
+\subsection{The Page Headers}
+
+\verb|\markboth{}{}| generates the left- and right-page headers. The first
+argument is the author's name(s):
+
+\begin{itemize}
+\item If there is one author, then use author's full name (ex. Leslie Lamport);
+\item If there are two authors, then abbreviate each author's first name
+ (L.~Lamport and A.~Appel);
+\item If there are more than two authors, then the format is Leslie Lamport et al.
+\end{itemize}
+
+The second argument of \verb|markboth| is the title;
+if the title is too long,
+contract it by omitting subtitles and phrases, not by abbreviating words.
+
+
+\section{Ordinary Text}
+
+Most of the body of the text is typed just as in an ordinary
+document. This section lists the differences.
+
+\subsection{Lists}
+
+\subsubsection{Enumeration and Itemization}
+
+Let's begin with enumeration.
+\begin{longenum}
+\item The ACM style has two different formats for
+itemized lists, which I will call the {\em long\/} and {\em short\/}
+formats. The long format is generally used when the individual items
+are more than two or three lines long, but ACM has been inconsistent in
+their choice of format, sometimes using the long format for lists whose
+items are all one or two lines long and the short format for lists of
+long items. This list is an example of the long format.
+
+\item The ordinary {\tt enumerate} environment
+produces the short format. For the long format, use the
+{\tt longenum} environment.
+\begin{enumerate}\itemindent 10pt
+\item This inner enumeration uses the short format.
+\item It was produced using \LaTeX's ordinary {\tt enumerate}
+ environment.
+\item ACM has no standard for enumerations nested more than
+ two levels deep, so the {\tt acmtrans} style does not
+ handle them well.
+\end{enumerate}
+\end{longenum}
+
+Itemized lists are similar to enumerated ones.
+\begin{longitem}
+\item As with enumerations, there is a long and a short
+format for itemized lists. This list is in the long format.
+
+\item The long format is produced by the {\tt longitem}
+environment. The ordinary {\tt itemize} environment
+uses the short format.
+\begin{itemize}
+\item This is an itemized list using the short format.
+
+\item It was produced with the {\tt itemize} environment
+that is used in ordinary \LaTeX\ input.
+\end{itemize}
+\end{longitem}
+
+It is interesting to observe that the style of tick mark used
+for an itemization changed around 1985 from an en dash
+(--) to an em dash (---). % jtb: changed!
+
+\subsubsection{Descriptions}
+
+A list is a sequence of displayed text elements, called items, each
+composed of the following two elements:
+\begin{describe}{{\em item body\/}:}
+\item[{\em label\/}:]
+A marker that identifies or sets off the item. It
+is a number in an enumerated list and a tick mark in an itemized list.
+
+\item[{\em item body\/}:] The text of the item. It is usually ordinary prose,
+but sometimes consists of an equation, a program statement, etc.
+
+Or another paragraph, which will be indented like normal paragraphs.
+\end{describe}
+
+When the labels of a list are names rather than numbers or tick marks,
+the list is called a {\em description\/} list.
+The ACM style
+has both long and short description lists. The above list is a short
+description list; the bodies of all the items are indented enough to
+accommodate the widest label.
+The following list is a long description list.
+The {\tt acmtrans} style provides both kinds of description lists:
+\begin{description}
+\item[short]
+The {\tt describe} environment
+%that works the
+%same as the {\tt description} environment except that it
+takes an argument, which should be the same as the argument of the \verb|\item|
+command that produces the widest label. Thus, the above description
+list was begun with the command
+\begin{quote}
+\begin{verbatim}
+\begin{describe}{{\em item body\/}:}
+\end{verbatim}
+\end{quote}
+
+A description label is often emphasized in some way; in this example I
+used the \LaTeX\ \verb|\em| command, italicized the label. The ACM
+appears to have no standard convention for formatting the labels of a
+description list, so the {\tt describe} environment leaves the label
+formatting up to you. An \verb|\hfill| command can be used to produce
+a label like ``{\em gnu \hfill --\/}'' where {\em gnu\/} is flush left
+against the margin and the ``--'' is aligned flush right next to the
+item body.
+
+\item[long]
+The standard \LaTeX\ {\tt description} environment produces a long
+description list. It italicizes the labels, and puts a period after
+them, which seems to be what is done in the ACM transactions.
+\end{description}
+
+\subsection{Theorems, Etc.}
+
+%\newtheorem{theorem}{Theorem}[subsection]
+%\begin{theorem}
+%testing section counter
+%\end{theorem}
+
+\LaTeX\ provides a single class of theorem-like environments, which are
+defined with the \verb|\newtheorem| command. The ACM transactions
+style divides this class into two subclasses that are formatted
+differently. The first class includes theorems, corollaries, lemmas,
+and propositions. It is produced with the \verb|\newtheorem| command.
+Such a theorem-like environment is often followed by a proof, for which
+the {\tt acmtrans} style provides a {\tt proof} environment.
+
+\newtheorem{subtheorem}{Theorem}[subsection]
+\begin{subtheorem}
+Notice that theorems are numbered inside the nearest section\newline subsection.
+\end{subtheorem}
+
+When listing within the theorem environment, this style will now produce
+roman parantheses. Thank you David Sands.
+
+\begin{proof}
+This theorem is an instance of {\tt subtheorem}, theorems nested in
+subsections.
+\end{proof}
+
+
+The second subclass of theorem-like environments includes ones for
+definitions, examples, and remarks. These environments are defined
+with the \verb|\newdef| command, which works the same as
+\verb|\newtheorem|. Here
+is an example of such an environment.
+
+\newdef{subexample}[subtheorem]{Definition}
+
+\begin{subexample}
+This is an example of a Definition, typed with an {\tt subexample}
+environment defined with \verb|\newdef|.
+As you can see theorems are italicized and definitions are not.
+\end{subexample}
+
+\newtheorem{subproperty}[subtheorem]{Property}
+
+Sometimes theorem-like environments are numbered in unusual ways, or
+are identified by a name. Consider the following example
+from~\citeN{7:3:359}.
+\begin{subproperty}[{\rm Ca}]
+Let syn $\in$ Syn, occ $\in$ Occ be maximal and sta $\in$ Sta. Then
+Tcol\/{\rm [[}syn\/{\rm ]]} occ sta\hspace{-2pt} $\downarrow\!1$ $=$
+Tsto\/{\rm [[}syn\/{\rm ]]} sta.
+\end{subproperty}
+\begin{proof}[of Property {\rm Ca}]
+By straightforward structural induction, and is \linebreak
+omitted.
+\end{proof}
+It was obtained by giving optional arguments to the
+{\tt property} environment (defined with \verb|\newtheorem|)
+and the {\tt proof} environment and was typed as follows.
+\begin{quote}
+\begin{verbatim}
+\begin{subproperty}[{\rm Ca}] Let ... \end{subproperty}
+\begin{proof}[of Property {\rm Ca}] By straightforward ...
+\end{verbatim}
+\end{quote}
+Notice that the optional argument to the {\tt property} environment
+suppresses the automatic numbering. If a null optional argument
+were given to this environment by typing ``{\tt []}'', then
+it would have produced the label ``{\sc Property.}'' This is
+how unnumbered theorems, etc.\ are produced.
+
+Environments defined by \verb|\newdef| use the optional
+argument the same way as those defined by \verb|\newtheorem|.
+
+\vskip10pt
+With this definition
+
+\begin{verbatim}
+ \newtheorem{secthm}{Theorem}[section]
+\end{verbatim}
+\noindent
+one can solve the counter problems and counter and label problems for
+theorems, lemmas and definitions etc.
+
+With the above definition and with the following variations
+\begin{verbatim}
+ \newdef{secdefn}[secthm]{Definition} or
+ \newdef{seclem}[secthm]{Lemma} or
+ \newdef{sectheo}{secthm]{Theorem} etc.
+\end{verbatim}
+\noindent
+one can achieve
+\begin{enumerate}
+\item correct counters in definitions, theorems etc. in \verb|\section| environment.
+For example, to generate ``Definition 4.1.''; without the above two definitions, it produces ``Definition 4.0.1.'' and
+\item correct counter and label associated with definitions, theorems etc. in any environment (section or subsection). For example,
+\begin{verbatim}
+ \begin{secdefn}[\thesecthm\ (label)]
+ text text text
+ \end{secdefn}
+\end{verbatim}
+produces the correct definition counter + correct placement of the period as in
+``Definition 3.1 (label).''.
+\end{enumerate}
+
+\subsection{Overfull hbox - Stretching/filling one horizontal line}
+
+To solve a line break due to ``Overfull \verb|\hbox|'', here is a plain \TeX\
+solution; here \verb|\hsize| is the default setting of acmtrans.sty:
+
+\begin{center}
+\verb|\hbox to \hsize{line sentence to be stretched}|
+\end{center}
+
+This can be used in a list environment as well but \verb|\hsize| declared to a reduce
+dimension:
+
+\begin{verbatim}
+ \hbox{\vbox{\hsize = less than the default setting
+ \hbox to \hsize{line sentence to be stretched}}}
+\end{verbatim}
+
+\subsection{Programs}
+
+Good formatting of programs requires a knowledge of their semantics,
+and is beyond the scope of a document production system. While
+``pretty printers'' are useful for handling the many pages of a real
+program, the short examples that are published in articles should be
+formatted by hand to improve their clarity. The \LaTeX\ {\tt tabbing}
+environment makes the formatting of programs relatively easy,
+especially if the user defines commands for his particular language
+constructs.
+One may also use the {\tt verbatim} environment.
+
+The ACM transactions style requires that programs be formatted with
+different size fonts, depending upon whether they appear in the text or
+in a figure, but that is handled by the figure macro which
+automatically sets the correct font size.
+%The {\tt acmtrans} style provides a {\tt program}
+%environment that is exactly the same as the standard {\tt tabbing}
+%environment except for the size of the fonts it uses. This environment
+%should be used for formatting programs, whether they appear in the
+%running text or in a figure.
+Moreover, programs in running text should be indented two ems
+on each side (as provided by the {\tt quote} environment), and
+programs in regular figures should be centered.
+(Programs in ``narrow figures'' (q.v.) are left or right justified
+automatically).
+
+Here is an example of a program:
+\begin{quote}
+\begin{tabbing}
+{\bf type} date =\\
+\hspace*{1em}\= {\bf record} \= day: 1\,.\,.\,31;\+\+\\
+ month: 1\,.\,.\,12;\\
+ year: integer \-\\
+ {\bf end} \-\\
+{\bf var} mybirth, today : date;\\
+{\bf var} myage : integer;
+\end{tabbing}
+\end{quote}
+Figure~\ref{fig:prog} shows how the same program looks in a figure.
+\begin{figure}
+\centerline{\parbox{104pt}{% it's safe to overestimate the size here
+\begin{tabbing}
+{\bf type} date =\\
+\hspace*{1em}\= {\bf record} \= day: 1\,.\,.\,31;\+\+\\
+ month: 1\,.\,.\,12;\\
+ year: integer \-\\
+ {\bf end} \-\\
+{\bf var} mybirth, today : date;\\
+{\bf var} myage : integer;
+\end{tabbing}}}
+\caption{An example of a program centered in a figure}
+\label{fig:prog}
+\end{figure}
+
+%The ACM standard calls for the program to start flush at the left
+%margin, with each new level of nesting indented by a distance of one
+%em, and with the continuation of broken lines indented two ems. However,
+%this standard is not applied consistently.
+
+In addition to formatting programs, the {\tt tabbing} environment may be
+used for similar displayed material such as BNF syntax specifications
+and rewrite rules.
+
+\subsection{User-specified Formatting}
+
+If \LaTeX\ does not provide a particular text structure, the user must
+define it himself and specify how it is to be formatted. This is most
+easily done by defining the new structure in terms of existing ones;
+the \LaTeX\ {\tt list} and {\tt trivlist} environments are useful
+tools. However, it is occasionally necessary for the user to provide
+explicit formatting commands.
+
+The best guide to how something should be formatted is what has been
+done in the ACM transactions. While horizontal spacing tends to depend
+strongly upon the particular text, there is a standard amount of
+vertical space used to set off text. The ordinary \LaTeX\
+\verb|\medskip| command produces a vertical space of the appropriate
+size.
+
+\section{Figures and Tables}
+
+\subsection{Figures}
+
+The ordinary \LaTeX\ {\tt figure} environment works as usual.
+Figure~\ref{fig:ordinary}, which is Figure~6 of \citeN{7:3:359}, a bogus reference,
+\begin{figure}
+\centering
+\(\begin{array}{c|ccc}
+ & \bot & F & T \\
+\hline
+\bot & \bot & \bot & T \\
+F & \bot & F & T \\
+T & \bot & T & T
+\end{array}\)
+\caption{The truth table for the parallel-or.}
+\label{fig:ordinary}
+\end{figure}
+was produced in this way.
+Note that figures should never appear in the text or at the bottom of
+a page. (If you use the figure placement optional argument, use only
+\verb"t" or \verb"p" or both; do not use \verb"h" or \verb"b").
+
+Some figures (and tables) have no caption except for the figure number.
+For such figures (and tables), one uses a \verb|\nocaption| command,
+which has no argument, instead of the \verb|\caption| command.
+
+\begin{narrowfig}{3in}
+\begin{tabbing}
+{\bf type} date =\\
+\hspace*{1em}\= {\bf record} \= day: 1\,.\,.\,31;\+\+\\
+ month: 1\,.\,.\,12;\\
+ year: integer \-\\
+ {\bf end} \-\\
+{\bf var} mybirth, today : date;\\
+{\bf var} myage : integer;
+\end{tabbing}
+\caption{An example of a program displayed in a figure.}
+\label{fig:narrow}
+\end{narrowfig}
+
+In addition to this method of formatting figures, the ACM transactions
+also uses figures with side captions, as in Figure~\ref{fig:narrow}.
+Such a figure is produced with the {\tt narrowfig} environment. This
+environment has a single mandatory argument, which is the width of the
+figure.
+Note that if the figure is generated by {\tt tabbing} or {\tt
+tabular}, one can safely overestimate the size.
+It works just like the ordinary {\tt figure} environment,
+except it must contain only one \verb|\caption| or \verb|\nocaption|
+command, which must come after the figure itself.
+
+The {\tt narrowfig} environment should obviously not be used unless the
+figure is narrow enough to leave a reasonable amount of space beside it
+for the caption. The ACM seems to have no consistent policy for choosing
+which style of figure to employ.
+
+\subsection{Tables}
+
+The ordinary \LaTeX\ {\tt table} environment can be used, but it
+requires the user to add formatting commands to match the ACM
+transactions style. This formatting is performed automatically
+if the {\tt acmtable} environment is used instead, producing
+the result shown in Table~\ref{tab:table}, which shows the same
+table displayed in Figure~\ref{fig:ordinary}.
+\begin{acmtable}{100pt}
+\centering
+\(\begin{array}{c|ccc}
+ & \bot & F & T \\
+\hline
+\bot & \bot & \bot & T \\
+F & \bot & F & T \\
+T & \bot & T & T
+\end{array}\)
+\caption{The truth table for the parallel-or.}
+\label{tab:table}
+\end{acmtable}
+This environment has a mandatory argument that equals the width
+of the table---more precisely, it specifies the width of the rules
+above and below the table. There must be only one
+\verb|\caption| or \verb|\nocaption|
+command, which must come after the text of the table.
+(Even though the table caption is printed above the table, the
+\verb|\caption| command comes after the table in the input file.)
+
+
+\section{The End of the Document}
+
+\subsection{Appendix}
+
+The appendix (if the article has one) should precede the
+acknowledgments (if any) and bibliography.
+If the appendix isn't broken into separate sections,
+then you should add the following commands after the \verb|\appendix|
+command:
+\begin{quote}
+\begin{verbatim}
+\section*{APPENDIX}
+\setcounter{section}{1}
+\end{verbatim}
+\end{quote}
+Setting the counter is necessary so that numbered subsections and
+theorems will have the names ``A.{\em N\/}'' in the text.
+
+For an article with multiple appendices, one begins
+the appendix with an \verb|\appendix| followed by
+\verb|\section*{APPENDIX}|, and then starts each
+appendix with an ordinary \verb|\section| command.
+
+Information about electronic appendices is given in
+Section~\ref{sec:elecappendix} and in the Appendix.
+
+\subsection{Acknowledgments}
+
+An optional acknowledgments section follows all the text of the
+article, including any appendices. It is produced with the
+{\tt acks} environment. (Since I can never remember how many
+{\em e\/}'s there are in {\em acknowledgments}, it seemed
+like an abbreviation was in order for the environment name.
+One may also spell out the name as {\tt acknowledgments}).
+Sometimes, there is just a single acknowledgment.
+This may be given using the {\tt ack} or {\tt acknowledgment}
+environment.
+
+\subsection{Bibliography}
+
+The bibliography follows the acknowledgments, and is the last
+significant body of text in the article. It is produced by the usual
+\LaTeX\ commands.
+
+In 1993 the ACM changed bibliography styles, from numerical citations [13]
+to author's name and year \cite{7:3:359}.
+The user is encouraged to let \LaTeX\ produce his bibliography
+with the \verb|\bibliography| command, letting \BibTeX\ handle the
+formatting of the entries.
+The \verb|acmtrans.sty|
+bibliography style file now generates citations in this format.
+Put
+\begin{quote}
+\begin{verbatim}
+\bibliographystyle{acmtrans}
+\end{verbatim}
+\end{quote}
+between the \verb|\begin{document}| and the \verb|\end{document}|.
+
+The conventional \verb|\cite| command will generate citations as usual in
+\LaTeX.
+Note that the style file automatically omits repeating author
+names~\cite{7:3:359,test}.
+If you mention the work explicitly in your prose, you should use
+\verb|\citeN| command. This command generates for example, \citeN{7:3:359}
+discusses denotational program transformations. Or, you use
+\verb|\citeyear| and say that Nielson \citeyear{7:3:359} discusses
+them.
+The command \verb|\shortcite| is an alias for \verb|\citeyear|.
+Either command may be used in cases where one refers to multiple
+works (of the same authors!).
+For example, \verb|Nielson~\shortcite{7:3:359,test}| generates
+Nielson~\shortcite{7:3:359,test}.
+%To generate author~[year1; year2], give the author's name and then use
+%the command \verb|\citeNN{year1,year2}|,
+%which generates ``Nielson~\citeNN{7:3:359,test}.''
+
+More variations of \verb|\cite| are discussed in comments in the
+\verb|acmtrans.sty| file. Here are some {\bf examples} on how to get
+
+\begin{enumerate}
+\item{Appel [1996]} $\rightarrow$ using either \verb|\citeN| or \verb|\citeyear|
+\item{[Kempe 1879]} $\rightarrow$ \verb|\cite{kempe79}|
+\item{Appel [1995; 1996]} $\rightarrow$ \verb|\shortcite{ref1-key,ref2-key}|
+\item{Fil\'e [1981a; 1981b]} $\rightarrow$ \verb|Fil\'{e}~\shortcite{engelfriet/file:81sweep,|\\
+\hbox{}\kern.2in\verb|engelfriet/file:81passes}| or simply \verb|\shortcite{ref1-key, ref2-key}|
+\item{[Appel and Shao 1992; Shao and Appel 1994]} $\rightarrow$
+\verb|\cite{appel-zhong-lsc92,|\\
+\hbox{}\kern3.5in\verb|shao94:clo}|
+\item{Chow and Harrison [1992; 1994]} $\rightarrow$
+ Chow~and~Harrison~[\verb|\citeyearNP{CH-popl92};|
+ \hbox{}\kern2in\verb|\citeyearNP{CH-iccl94}|]
+\item{[Chow and Harrison 1992; 1994; Cousot and Cousot 1984]} $\rightarrow$
+\verb|[\citeNP{CH-popl92};|\\
+ \hbox{}\kern1.7in \verb|\citeyearNP{CH-iccl94}; \citeNP{CC-apct77}]|
+\item{[Cytron et al. 1991]} $\rightarrow$ \verb|\cite{cytron-et-al-toplas91}|
+\item{Briggs et al. [1994]} $\rightarrow$ \verb|\citeN{briggs-cooper-torczon-toplas94}| or
+\item{Duri et al. [1993]} $\rightarrow$ \verb|Duri~et~al.~\citeyear{DBDS-sigsoft93}|
+\item{[Chaitin 1982; Chaitin et al. 1981]} $\rightarrow$ \verb|\cite{chaitin-pldi82,chaitin-et-al-cl81}|
+\item{[Alblas 1991; Deransart et al. 1988; Knuth 1868]} $\rightarrow$
+\verb|\cite{alblas:91intro,|
+\hbox{}\kern1in\verb|deransart/jourdan/lorho:88ag,knuth:68semantics}|
+\item{[Gary and Johnson 1979]} $\rightarrow$ \verb|\cite{garey-johnson-bk79}|
+\item{[Brand and Zafiropulo 1983; Gouda et al. 1984;1987]} $\rightarrow$ \newline
+\verb|[\citeNP{brand83}; \citeNP{gouda84};\citeyearNP{gouda87}]|
+\end{enumerate}
+\noindent
+The list will be updated as we find unique cases.
+
+\subsection{Received Date}
+
+An ACM transactions article ends with the dates that the article and its
+revised versions were received and the date it was accepted for
+publication. In the {\tt acmtrans} document style, this information is
+produced with the {\tt received} environment. Type the body of the
+environment just as it should appear in the printed version.
+(Note that only \verb"Received" and the months should be capitalized,
+the entries should be separated by semicolons,
+and the whole ``sentence'' should {\em not} be terminated by a period.)
+You can get these dates from the editor-in-chief.
+
+\section{Running Heads and Feet}
+
+The running foot of all but the title page of the article is declared
+with the \linebreak
+\verb|\runningfoot| command. It contains the name of the
+journal, volume, number, and date. The foot for the title page
+contains this information plus the page numbers. It is declared
+with the \verb|\firstfoot| command.
+
+The \verb|\pages| command prints the page numbers of the article,
+producing something like ``123--132''. It is implemented with the
+\LaTeX\ \verb|\pageref| command, so it will not produce the correct
+page numbers the first time the file is run through \LaTeX, or if the
+number of the first or last page has changed since the last time.
+
+The default page style for the {\tt acmtrans} style is {\tt
+myheadings}. Thus, a \verb|\markboth| command is used to set the
+running heads. The left head contains the author's name (or authors'
+names) and the right head contains the title. For long titles,
+some contraction of the title is used.
+
+{\bf
+At present, the ACM prefers to strip in their own running heads and
+feet, so it is unnecessary to worry about them when producing
+camera-ready copy.
+}
+
+\section{Interacting with ACM's Production Staff}
+
+After your article is accepted, format your document and send
+a Postscript file to the editor-in-chief. An ACM copy editor will
+mark up a paper copy and send it back to you for corrections.
+If there are just a few corrections, they may be sent to you by e-mail.
+Iterate this process until the copy editor is satisfied (it may take
+one or two iterations).
+
+Then print your final camera-ready copy on a 1200-dpi phototypesetter
+(or a 600-dpi laser printer, if you must) and mail it to ACM.
+
+If you are using a laser printer for your final camera-ready copy,
+you may enjoy using special paper designed for this purpose (it gives
+a sharper image on a whiter background). One such paper
+(manufactured by Hammermill Papers) is:
+\begin{verse}
+ Hammermill Laser Plus (Featuring Wax Holdout)\\
+ 8$\frac{1}{2}$x11--12M--S24/60\\
+ 10450--5\\
+ For Prepress Proofing and Camera-Ready Masters.
+\end{verse}
+
+But the use of special paper is entirely optional; plain white laser-printer
+paper is fine.
+
+\subsection{ACM Copy Editors' Preferences}
+
+We wish to thank the authors who have mailed to us copies of their page proofs.
+From the page proofs (and explicit requests from ACM), here is a list of items most
+frequently marked up by the copy editors.
+
+\begin{description}\itemindent\labelsep % that is, no indentation
+\item[\bf Center] Displayed items like figures, pieces of program codes, and equations. Equation numbers to appear right flushed. Remember to add a period if the displayed equation ends in a sentence.
+\item[\bf Fonts] Following items in regular Roman font:
+\begin{itemize}
+\item such words like et al., e.g., i.e., ad hoc, and bona fide, and
+\item the body of the definition environment.
+\end{itemize}
+\item[\bf Etc] No double period when a sentence ends with ``etc.''
+\item[\bf Figure] Spell out the word ``figure'' when using in a sentence, as in Figure 1.
+Use a period as in ``Fig. 1.'' and not a colon as in ``Fig. 1:''
+\item[\bf Contractions] Avoid the use of contractions; for example, use
+{\em do not} instead of {\em don't}.
+(If you prefer to use contractions to avoid
+stuffiness, you'll have to tell the copy editor explicitly after you
+get the marked-up proofs.)
+\item[\bf Conference References] Please use {\it 4th International Conf. on
+Document Formatting}, not {\it Fourth International Conference ...}; that
+is, do not spell out the number.
+\item[\bf Journal References] Figure~\ref{fig:abbrev} gives common journal abbreviations; there is a duplicate list in the acmtrans.bst file for your convenience. Using the {\it abbreviation} feature of \BibTeX\ for journal
+names (and months!) makes it easy to follow the rules.
+\end{description}
+
+\begin{figure}\noindent
+\begin{tabular}{l|l||l|l}
+\footnotesize
+acmcs&ACM Comput. Surv.&jlp&J. Logic Program.\\
+acmlett&ACM Lett. Program. Lang. Syst.&jcss&J. Comput. Syst. Sci.\\
+acta&Acta Inf.&jsmrp&J. Softw. Maint. Res. Pract.\\
+al&Ada Lett.&jss&J. Syst. Softw.\\
+acr&Adv. Comput. Res.&jlsc&J. Lisp Symb. Comput.\\
+bit&Bit&lpls&Lett. Program. Lang. Syst.\\
+cacm&Commun. ACM&mscs&Math. Struct. Comput. Sci.\\
+cj&Comput. J.&mst&Math. Syst. Theor.\\
+cn&Comput. J.&ngc&New Gen. Comput.\\
+cl&Comput. Lang.&scp&Sci. Comput. Program.\\
+ict&Inf. Contr.&sicomp&SIAM J. Comput.\\
+ieebcs&IEE/BCS Softw. Eng. J.&spe&Softw. Pract. Exper.\\
+ieees&IEEE Softw.&tocs&ACM Trans. Comput. Syst.\\
+ieeese&IEEE Trans. Softw. Eng.&tods&ACM Trans. Database Syst.\\
+ieeetc&IEEE Trans. Comput.&tog&ACM Trans. Graphics\\
+ieeetpds&IEEE Trans. Parall. Distrib. Syst.&toms&ACM Trans. Math. Softw.\\
+ieeetit&IEEE Trans. Inf. Theory&toois&ACM Trans. Office Inf. Syst.\\
+ipl&Inf. Process. Lett.&toplas&ACM Trans. Program. Lang. Syst.\\
+icp&Inf. Comput.&tcs&Theor. Comput. Sci.\\
+ist&Inf. Softw. Tech.&tr&Tech. Rep.\\
+ijsa&Int. J. Supercomput. Appl.&jf&J. Funct. Program.\\
+ijpp&Int. J. Parallel Program.&jlc&J. Logic and Comput.\\
+\end{tabular}
+\caption{Common journal abbreviations.}
+\label{fig:abbrev}
+\end{figure}
+
+The best method of
+reducing the number of copy editorial markups is by using a recent ACM journal
+as a guide to typesetting your article.
+
+\section{Electronic Appendices}
+\label{sec:elecappendix}
+
+Because of severe constraints on how many pages it can print,
+{\it ACM Transactions on Programming Languages and Systems} (TOPLAS)
+accepts some articles with {\it electronic appendices:} appendices
+in Postscript format that will not appear in the printed article but
+will be available separately. If your article is accepted with an
+electronic appendix, you should put an appendix header where the
+appendix normally belongs (before the ``acknowledgments'').
+The body of the electronic appendix should be given after the
+references.
+The \verb|appendixhead| command is given
+\begin{quote}
+{\tt \verb|\|appendixhead\{{\it journal}\}\{{\it article-id}\}}
+\end{quote}
+where {\it journal} is the name of the journal (e.g. {\tt toplas} or
+{\tt todf}), and
+{\it article-id} is a number given to you by the Editor.
+The result of \verb|\appendixhead| looks like this:\footnote{%
+See the end of this document for the remainder of the explanation of
+electronic appendices}
+
+\appendix
+\section*{ONLINE-ONLY APPENDICES}
+\setcounter{secnumbookdepth}{-1}
+% \begin{NoHyper}
+\section{Splitting off the electronic appendix}
+\section{Single appendix}
+\section{Multiple appendices}
+% \end{NoHyper}
+\setcounter{secnumbookdepth}{3}
+
+\appendixhead{Appendix A is}{appendix}{http://www.acm.org/toplas}
+
+\begin{acks}
+We wish to thank Howard Trickey for providing the now-obsolete
+version of the {\tt acmtrans}
+bibliography style, and for giving advice on creating the new one;
+Rebecca Davies for helping to adapt
+Glenn Paulley's ``Chicago'' bibliography
+style to fit the new ACM style;
+and Marilyn Salmansohn and George Criscione for providing information
+on the official ACM transactions style.
+\end{acks}
+
+\bibliographystyle{acmtrans}
+\bibliography{acmtr}
+\begin{received}
+Received February 1986;
+November 1993;
+accepted January 1996
+\end{received}
+
+elecappendix{http://www.acm.org/toplas}{1998}{ACM Transactions on Document Formatting,
+ Vol.~8, No.~1, January 1999, Pages \pages.}{
+\copyright\ 1999 ACM 0164-0925/98/0100-0208A \$5.00}
+
+The contents of the electronic appendix is written after the references
+and the ``received'' environment.
+The electronic appendix is started
+by an \verb|\elecappendix| command that takes two
+required arguments:
+\begin{quote}
+{\tt \verb|\|elecappendix\{{\it year}\}\{{\it ref\/}\}}
+\end{quote}
+where
+{\it year} is the year of appearance (or, if this not known, the year
+of acceptance), necessary for the copyright notice, and
+{\it ref\/} is a sentence provided by the Editor describing the
+publication reference
+information regarding your article.
+
+\section{Splitting off the electronic appendix}
+
+If you have an electronic appendix, only the main body of the
+article, up through and including the description of how to obtain
+the electronic appendix, will be printed in the journal.
+
+It will be necessary to split your dvi or Postscript file into
+two parts: one to be printed, the other to be available by
+FTP. Please split your Postscript into two separate postscript files
+using {\tt dvipages} or {\tt pslpr} and
+email them separately to the Editor.
+
+Note that the pages of the appendix are numbered A-1, A-2, etc.
+so as not to interfere with the normal journal pagination.
+
+\section{Single Appendix}
+
+When an article has a single electronic appendix, then after
+the \verb|\elecappendix| command, type the following.
+\begin{quote}
+\begin{verbatim}
+\setcounter{section}{1}
+\end{verbatim}
+\end{quote}
+If the text starts immediately, add a \verb|\medskip| to set off the
+text from the horizontal rule created by \verb|\elecappendix|.
+
+\section{Multiple appendices}
+
+For an article with multiple electronic appendices, one begins
+the appendix with an \verb|\elecappendix|
+command, then starts each
+appendix with an ordinary \verb|\section| command. Lower levels of
+sectioning are produced by the ordinary sectioning commands.
+
+\end{document}
+
+
+
+
+
diff --git a/texmf-dist/tex/latex/acmtrans/acmtrans2e.cls b/texmf-dist/tex/latex/acmtrans/acmtrans2e.cls
new file mode 100644
index 00000000..2a67feb3
--- /dev/null
+++ b/texmf-dist/tex/latex/acmtrans/acmtrans2e.cls
@@ -0,0 +1,1243 @@
+% latex2e by nr 7/3/96
+% acmtrans.cls revised 4/19/96
+% revised again 31-JAN-1996 (see end of file)
+% revised 5-14-1997 :
+% Don't use sans-serif font in categories and descriptors
+% include latexsym by default
+% Define longpage and shortpage
+% $Header: acmtrans.sty,v 1.3 96/01/31 13:12:53 boyland Exp $
+% Here is the basic framework that is needed to convert your paper
+% into ACM TOPLAS format and bibliographic format. For a tutorial
+% introduction, see ``acmtr.tex'' (compile it with LaTeX) that
+% accompanies the distribution of this style file.
+%
+% -> \documentclass{acmtrans}
+% -> \markboth{}{}
+% takes 2 arguments and it is for the left- and right-page headers:
+% the first set of braces is assigned for author's name(s)
+% and
+% the second set of braces is assigned for the title
+% (if the title is too long, contraction may be needed
+% -> \title{}
+% if the title is too long, it can be separated by \\
+% -> \author{}
+% author1 \\ author1 affiliation
+% \and
+% author2 \\ author2 affiliation
+% -> \begin{abstract}
+% -> \end{abstract}
+%
+% -> \category{}{}{}
+% takes 3 arguments for the Computing Reviews Classification Scheme.
+% ex: \category{D.3.3}{Programming Languages}{Language Constructs and
+% Features}[data types and structures]
+% the last argument, in square brackets, is optional.
+% -> \terms{} (ex: \terms{Human Factors, Languages})
+% -> \keywords{} (in alphabetical order \keywords{document processing, sequences,
+% string searching, subsequences, substrings})
+% -> \begin{document}
+%
+% -> \begin{bottomstuff}
+% similar to \thanks
+% for authors' addresses; research/grant statements
+% -> \end{bottomstuff}
+% -> \maketitle
+%
+% Now you can start the body of the paper; your figures, tables and
+% use all the latex constructs.
+%
+% -> \begin{acks}
+% acknowledgements
+% -> \end{acks}
+%
+% -> \bibliographystyle{acmtrans}
+% -> \bibliography{mybib_file}
+%
+% ****
+% If your paper has been accepted with a separate (electronic only)
+% appendix, you need to add the following control sequence:
+%
+% -> \appendixhead{}{}{}{}
+% takes 4 arguments to identify your appendix section.
+% first = journal name (e.g. toplas )
+% second = paper-id (a four-digit number)
+% third = year of appearance, for copyright notice
+% (approximation will suffice)
+% fourth = journal, volume and year of publication if known
+%
+% body of appendix
+%!!!!!! \appendixhead has be cut into two: \appendixhead and \elecappendix
+%!!!!!! See end of file. (jtb)
+%
+% -> \end{document}
+%
+% Do not worry about the other definitions in this style file
+% Remember to compile: latex, bibtex, latex latex
+%
+% Bibliographic cite forms needed:
+%
+% \cite{key}
+% which produces citations with author list and year.
+% eg. [Brown 1978; Jarke, et al. 1985]
+% \citeA{key}
+% which produces citations with only the author list.
+% eg. [Brown; Jarke, et al.]
+% \citeN{key}
+% which produces citations with the author list and year, but
+% can be used as nouns in a sentence; no brackets appear around
+% the author names, but only around the year.
+% eg. Shneiderman [1978] states that......
+% \citeN should only be used for a single citation.
+% \citeNN{refkey1,refkey2} for author [ref1year; ref2year]
+% \citeyear{key}
+% which produces the year information only, within brackets.
+%
+% Abbreviated author lists use the ``et al.'' construct.
+%
+% The above are examples of required ACM bibliographic cite formats needed.
+% *******************
+% Here is the complete list of cite forms from the chicago bibliographic style
+%
+% \cite{key}
+% which produces citations with abbreviated author list and year.
+% \citeNP{key}
+% which produces citations with abbreviated author list and year.
+% \citeA{key}
+% which produces only the abbreviated author list.
+% \citeANP{key}
+% which produces only the abbreviated author list.
+% \citeN{key}
+% which produces the abbreviated author list and year, with only the
+% year in parentheses. Use with only one citation.
+% \citeyear{key}
+% which produces the year information only, within parentheses.
+% \citeyearNP{key}
+% which produces the year information only.
+%
+% Abbreviated author lists use the ``et al.'' construct.
+%
+% `NP' means `no parentheses'
+%
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{acmtrans2e} [1996/07/03 ACM Transactions class based on <23 April 96>]
+\RequirePackage{latexsym}
+
+
+\if@compatibility\else
+\DeclareOption{a4paper}
+ {\setlength\paperheight {297mm}%
+ \setlength\paperwidth {210mm}%
+ \def\special@paper{210mm,297mm}}
+\DeclareOption{a5paper}
+ {\setlength\paperheight {210mm}%
+ \setlength\paperwidth {148mm}%
+ \def\special@paper{148mm,210mm}}
+\DeclareOption{b5paper}
+ {\setlength\paperheight {250mm}%
+ \setlength\paperwidth {176mm}%
+ \setlength\voffset {-15mm}%
+ \setlength\hoffset {-20mm}%
+ \def\special@paper{176mm,250mm}}
+\DeclareOption{letterpaper}
+ {\setlength\paperheight {11in}%
+ \setlength\paperwidth {8.5in}%
+ \def\special@paper{8.5in,11in}}
+\DeclareOption{legalpaper}
+ {\setlength\paperheight {14in}%
+ \setlength\paperwidth {8.5in}%
+ \def\special@paper{8.5in,14in}}
+\DeclareOption{executivepaper}
+ {\setlength\paperheight {10.5in}%
+ \setlength\paperwidth {7.25in}%
+ \def\special@paper{7.25in,10.5in}}
+\DeclareOption{landscape}
+ {\setlength\@tempdima {\paperheight}%
+ \setlength\paperheight {\paperwidth}%
+ \setlength\paperwidth {\@tempdima}}
+\fi
+
+\DeclareOption{checkMargin}{\setlength\overfullrule{5pt}}
+\DeclareOption{final}{\setlength\overfullrule{0pt}}
+
+\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
+\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
+
+\DeclareOption{10pt}{\def\@ptsize{0}} %needed for amssymbols.sty
+\DeclareOption{11pt}{\ClassError{acmtrans}{11pt style not supported}
+ {ACM transactions doecuments can be set in 10pt only}}
+\DeclareOption{12pt}{\ClassError{acmtrans}{11pt style not supported}
+ {ACM transactions doecuments can be set in 10pt only}}
+
+\DeclareOption{hyperref}{%
+ \def\pages{\realpageref{@firstpg}--\realpageref{@lastpg}}%
+ \def\mypage{\thepage}%
+ \setlength{\bibitemindent}{-1em}
+ \def\@getpagenum#1#2#3#4{#2}%
+ \def\pdfinfo#1#2{\pdfmark{pdfmark=/DOCINFO,Title=#1,Author=#2}}
+ }
+\DeclareOption{nohyperref}{
+ \def\pages{\pageref{@firstpg}--\pageref{@lastpg}}%
+ \def\@getpagenum#1#2{#2}%
+ \def\mypage{\thepage}%
+ \def\pdfinfo#1#2{}%
+ \def\href#1#2{#2}%
+ \def\pdfbookmark#1#2{}%
+ }
+\DeclareOption{notfinal}{
+ \def\pages{TBD}%
+ \def\mypage{TBD}%
+ \def\@getpagenum#1#2{#2}%
+ \def\pdfinfo#1#2{}%
+ \def\pdfbookmark#1#2{}%
+ }
+\DeclareOption{omitline}{\def\@abstractbottom{\relax}}
+\DeclareOption{dontomitline}{\def\@abstractbottom{\hbox{\vrule height .2pt width 30pc}}}
+\newlength{\bibitemindent}
+\ExecuteOptions{twoside,final,10pt,dontomitline,nohyperref,letterpaper} % defaults
+
+
+
+\ProcessOptions
+
+
+ \widowpenalty=5000
+ \clubpenalty=5000
+
+
+\lineskip 1pt \normallineskip 1pt
+\def\baselinestretch{1}
+
+\renewcommand\normalsize{%
+ \@setfontsize\normalsize\@xpt\@xiipt
+ \abovedisplayskip 6pt plus2pt minus1pt\belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 6pt plus0pt minus 3pt
+ \belowdisplayshortskip 6pt plus0pt minus3pt\let\@listi\@listI}
+
+\newcommand\small{%
+ \@setfontsize\small\@ixpt{11pt}%
+ \abovedisplayskip 5pt plus 2pt minus 1pt\belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 5pt plus0pt minus2pt\belowdisplayshortskip 5pt plus0pt
+ minus 2pt
+ \def\@listi{\leftmargin\leftmargini \topsep 5pt plus 2pt minus 1pt\parsep 0pt
+ plus .7pt
+ \itemsep 1.6pt plus .8pt}}
+\newcommand\footnotesize{%
+% \@setfontsize\footnotesize\@viiipt{10pt}
+ \@setsize\footnotesize{10pt}\viiipt\@viiipt
+ \abovedisplayskip 4pt plus 1pt minus 0pt\belowdisplayskip \abovedisplayskip
+ \abovedisplayshortskip 4pt plus 0pt minus 1pt\belowdisplayshortskip 4pt plus
+ 0pt minus 1pt
+ \def\@listi{\leftmargin\leftmargini \topsep 4pt plus 1pt minus
+ 0pt\parsep 0pt plus .5pt
+ \itemsep 1pt plus .7pt}}
+
+\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt}
+\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}
+\newcommand\large{\@setfontsize\large\@xiipt{14}}
+\newcommand\Large{\@setfontsize\Large\@xivpt{18}}
+\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{20}}
+\newcommand\huge{\@setfontsize\huge\@xxpt{25}}
+\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}
+
+\normalsize
+
+ \oddsidemargin .75in \evensidemargin .75in \marginparwidth .5in
+ \marginparsep .125in
+ \topmargin .25in \headheight 12pt\headsep 16pt
+ %% not in latex2e \footheight 10pt
+ \footskip 15pt
+
+\textheight 47pc \textwidth 30pc \columnsep 10pt \columnseprule 0pt
+
+\footnotesep 7pt
+\skip\footins 15pt plus 4pt minus 3pt
+\floatsep 12pt plus 2pt minus 2pt
+\textfloatsep \floatsep
+\intextsep 1pc plus 1pc
+%%% not in 2e %% \@maxsep 1pc
+%%% not in 2e %% \@dblmaxsep 20pt
+\dblfloatsep 12pt plus 2pt minus 2pt
+\dbltextfloatsep 20pt plus 2pt minus 4pt
+\@fptop 0pt plus 1fil \@fpsep 1pc plus 2fil \@fpbot 0pt plus 1fil
+\@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil
+\marginparpush 6pt
+
+\parskip 0pt plus .1pt \parindent 10pt \partopsep 0pt
+\@lowpenalty 51 \@medpenalty 151 \@highpenalty 301
+\@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty
+-\@lowpenalty
+
+
+\def\part{\@ucheadtrue
+ \@startsection{part}{9}{\z@}{-10pt plus -4pt minus
+ -2pt}{4pt}{\reset@font\normalsize\sffamily}}
+\def\section{\@ucheadtrue
+ \@startsection{section}{1}{\z@}{-10pt plus -4pt minus
+ -2pt}{4pt}{\reset@font\normalsize\sffamily}}
+\def\subsection{\@ucheadfalse
+ \@startsection{subsection}{2}{\z@}{-8pt plus -2pt minus
+ -1pt}{4pt}{\reset@font\normalsize\sffamily}}
+\def\subsubsection{\@ucheadfalse
+ \@startsection{subsubsection}{3}{\parindent}{6pt plus
+1pt}{-5pt}{\reset@font\normalsize\itshape}}
+\def\paragraph{\@ucheadfalse
+ \@startsection{paragraph}{3}{\parindent}{6pt plus
+1pt}{-5pt}{\reset@font\normalsize\itshape}}
+
+\renewcommand{\@seccntformat}[1]{\textup{\csname the#1\endcsname}}
+
+\gdef\@period{.}
+\def\@trivlist{\@topsepadd\topsep
+\if@noskipsec \gdef\@period{}\leavevmode\gdef\@period{.}\fi
+ \ifvmode \advance\@topsepadd\partopsep \else \unskip\par\fi
+ \if@inlabel \@noparitemtrue \@noparlisttrue
+ \else \@noparlistfalse \@topsep\@topsepadd \fi
+ \advance\@topsep \parskip
+ \leftskip\z@\rightskip\@rightskip \parfillskip\@flushglue
+ \@setpar{\if@newlist\else{\@@par}\fi} \global\@newlisttrue
+\@outerparskip\parskip}
+
+
+\def\@startsection#1#2#3#4#5#6{%
+ \if@noskipsec \leavevmode \fi
+ \par
+ \@tempskipa #4\relax
+ \@afterindenttrue
+ \ifdim \@tempskipa <\z@
+ \@tempskipa -\@tempskipa \@afterindentfalse
+ \fi
+ \if@nobreak
+ \everypar{}%
+ \else
+ \addpenalty\@secpenalty\addvspace\@tempskipa
+ \fi
+ \@ifstar
+ {\@ssect{#3}{#4}{#5}{#6}}%
+ {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
+\def\@sect#1#2#3#4#5#6[#7]#8{%
+ \ifnum #2>\c@secnumdepth
+ \let\@svsec\@empty
+ \else
+ \refstepcounter{#1}%
+ \if@uchead%
+ \protected@edef\@svsec{\@seccntformat{#1}.\quad\relax}%
+ \else%
+ \protected@edef\@svsec{\@seccntformat{#1}\quad\relax}%
+ \fi%
+ \fi
+ \@tempskipa #5\relax
+ \ifdim \@tempskipa>\z@
+ \begingroup
+ #6{%
+ \@hangfrom{\hskip #3\relax\@svsec}%
+ \interlinepenalty \@M \if@uchead\MakeUppercase{#8}\else#8\fi \@@par}%
+ \endgroup
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}%
+ \else
+ \def\@svsechd{%
+ #6{\hskip #3\relax
+ \@svsec \if@uchead\Makeuppercase{#8}\else#8\fi}%
+ \csname #1mark\endcsname{#7}%
+ \addcontentsline{toc}{#1}{%
+ \ifnum #2>\c@secnumdepth \else
+ \protect\numberline{\csname the#1\endcsname}%
+ \fi
+ #7}}%
+ \fi
+ \@xsect{#5}}
+
+\def\@xsect#1{\@tempskipa #1\relax
+ \ifdim \@tempskipa>\z@
+ \par \nobreak
+ \vskip \@tempskipa
+ \@afterheading
+ \else \global\@nobreakfalse \global\@noskipsectrue
+ \everypar{\if@noskipsec \global\@noskipsecfalse
+ \clubpenalty\@M \hskip -\parindent
+ \begingroup \@svsechd\@period \endgroup \unskip
+ \hskip -#1
+ \else \clubpenalty \@clubpenalty
+ \everypar{}\fi}\fi\ignorespaces}
+\newif\if@uchead\@ucheadfalse
+
+
+\setcounter{secnumdepth}{3}
+\newcounter{secnumbookdepth}
+\setcounter{secnumbookdepth}{3}
+
+\newfont{\apbf}{cmbx9}
+
+\def\@withappendix#1{App--\number #1}
+
+\newcommand{\elecappendix}{
+}
+
+\def\appenheader{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
+\newfont{\sc}{cmcsc10}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 11pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endappenheader{\end{figure}\gdef\appendixhead{}}
+
+\def\@appsec{}
+
+\def\appendix{\par
+ \setcounter{section}{0}
+ \setcounter{subsection}{0}
+ \def\@appsec{APPENDIX }
+ \def\thesection{\Alph{section}}
+ \def\theHsection{\Alph{section}}}
+
+
+
+\labelsep 5pt
+\settowidth{\leftmargini}{(9)} \addtolength\leftmargini\labelsep
+\settowidth{\leftmarginii}{(b)} \addtolength\leftmarginii\labelsep
+\leftmarginiii \leftmarginii
+\leftmarginiv \leftmarginii
+\leftmarginv \leftmarginii
+\leftmarginvi \leftmarginii
+\leftmargin\leftmargini
+\labelwidth\leftmargini\advance\labelwidth-\labelsep
+\def\@listI{\leftmargin\leftmargini \parsep 0pt plus 1pt\topsep 6pt plus 2pt
+minus 2pt\itemsep 2pt plus 1pt minus .5pt}
+\let\@listi\@listI
+\@listi
+\def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii\advance\labelwidth-\labelsep
+ \topsep 0pt plus 1pt
+ \parsep 0pt plus .5pt
+ \itemsep \parsep}
+\def\@listiii{\leftmargin\leftmarginiii
+ \labelwidth\leftmarginiii\advance\labelwidth-\labelsep
+ \topsep 0pt plus 1pt
+ \parsep 0pt plus .5pt
+ \itemsep \parsep}
+\def\@listiv{\leftmargin\leftmarginiv
+ \labelwidth\leftmarginiv\advance\labelwidth-\labelsep}
+\def\@listv{\leftmargin\leftmarginv
+ \labelwidth\leftmarginv\advance\labelwidth-\labelsep}
+\def\@listvi{\leftmargin\leftmarginvi
+ \labelwidth\leftmarginvi\advance\labelwidth-\labelsep}
+
+
+
+
+\def\enumerate{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\def\makelabel##1{##1\hss}}\fi}
+\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\labelwidth\z@}\fi}
+%\leftmargin\z@ \itemindent\parindent}\fi} - this indents each item in enumerate
+\let\endlongenum\endlist
+%%--------------------CHANGED: always roman parentheses. dave ---------------%%
+\def\labelenumi{{\rm (}\arabic{enumi}\/{\rm )}}
+\def\theenumi{\arabic{enumi}}
+\def\labelenumii{{\rm (}\alph{enumii}\rm{)}}
+\def\theenumii{\alph{enumii}}
+\def\p@enumii{\theenumi}
+\def\labelenumiii{\roman{enumiii}.}
+\def\theenumiii{\roman{enumiii}}
+\def\p@enumiii{\theenumi{\rm (}\theenumii{\rm )}}
+\def\labelenumiv{\Alph{enumiv}.}
+\def\theenumiv{\Alph{enumiv}}
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\p@enumiv{\p@enumiii\theenumiii}
+
+\def\itemize{\list{---\hskip -\labelsep}{\settowidth
+ {\leftmargin}{---}\labelwidth\leftmargin
+ \addtolength{\labelwidth}{-\labelsep}}}
+\let\enditemize\endlist
+\def\longitem{\list{---}{\labelwidth\z@
+ \leftmargin\z@ \itemindent\parindent \advance\itemindent\labelsep}}
+\let\endlongitem\endlist
+\def\verse{\let\\=\@centercr
+ \list{}{\leftmargin 2pc
+ \itemindent -1.5em\listparindent \itemindent
+ \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]}
+\let\endverse\endlist
+\def\quotation{\list{}{\leftmargin 2pc \listparindent .5em
+ \itemindent\listparindent
+ \rightmargin\leftmargin \parsep 0pt plus 1pt}\item[]}
+\let\endquotation=\endlist
+\def\quote{\list{}{\leftmargin 2pc \rightmargin\leftmargin}\item[]}
+\let\endquote=\endlist
+
+\def\description{\list{}{\listparindent\parindent\labelwidth\z@
+ \leftmargin\z@ \itemindent\parindent\advance\itemindent\labelsep
+ \def\makelabel##1{\it ##1.}}}
+\let\enddescription\endlist
+
+\def\describe#1{\list{}{\listparindent\parindent\settowidth{\labelwidth}{#1}\leftmargin
+ \labelwidth\addtolength\leftmargin\labelsep\def\makelabel##1{##1\hfil}}}
+\let\enddescribe\endlist
+
+\def\program{\ifx\@currsize\normalsize\small \else \rm \fi\tabbing}
+\let\endprogram\endtabbing
+ \def\@begintheorem#1#2{\trivlist \item[\hskip 10pt\hskip
+ \labelsep{\sc #1\hskip 5pt\relax#2.}] \itshape}
+ \def\@opargbegintheorem#1#2#3{\trivlist
+ \item[\hskip 10pt \hskip \labelsep{\sc #1\savebox\@tempboxa{#3}\ifdim
+ \wd\@tempboxa>\z@ \hskip 5pt\relax \box\@tempboxa\fi.}] \itshape}
+
+\newif\if@qeded\global\@qededfalse
+\def\proof{\global\@qededfalse\@ifnextchar[{\@xproof}{\@proof}}
+\def\endproof{\if@qeded\else\qed\fi\endtrivlist}
+\def\qed{\unskip\kern 10pt{\unitlength1pt\linethickness{.4pt}\framebox(6,6){}}
+\global\@qededtrue}
+\def\@proof{\trivlist \item[\hskip 10pt\hskip
+ \labelsep{\sc Proof.}]\ignorespaces}
+\def\@xproof[#1]{\trivlist \item[\hskip 10pt\hskip
+ \labelsep{\sc Proof #1.}]\ignorespaces}
+
+\def\newdef#1#2{\expandafter\@ifdefinable\csname #1\endcsname
+{\@definecounter{#1}\expandafter\xdef\csname
+the#1\endcsname{\@thmcounter{#1}}\global
+ \@namedef{#1}{\@defthm{#1}{#2}}\global
+ \@namedef{end#1}{\@endtheorem}}}
+\def\@defthm#1#2{\refstepcounter
+ {#1}\@ifnextchar[{\@ydefthm{#1}{#2}}{\@xdefthm{#1}{#2}}}
+\def\@xdefthm#1#2{\@begindef{#2}{\csname the#1\endcsname}\ignorespaces}
+\def\@ydefthm#1#2[#3]{\trivlist \item[\hskip 10pt\hskip
+ \labelsep{\it #2\savebox\@tempboxa{#3}\ifdim
+ \wd\@tempboxa>\z@ \ \box\@tempboxa\fi.}]\ignorespaces}
+\def\@begindef#1#2{\trivlist \item[\hskip 10pt\hskip
+ \labelsep{\it #1\ \rm #2.}]}
+
+\def\theequation{\arabic{equation}}
+
+\def\titlepage{\@restonecolfalse\if@twocolumn\@restonecoltrue\onecolumn
+ \else \newpage \fi \thispagestyle{empty}\c@page\z@}
+\def\endtitlepage{\if@restonecol\twocolumn \else \newpage \fi}
+
+\arraycolsep 2.5pt \tabcolsep 6pt \arrayrulewidth .4pt \doublerulesep 2pt
+\tabbingsep \labelsep
+
+\skip\@mpfootins = \skip\footins
+\fboxsep = 3pt \fboxrule = .4pt
+
+\newcounter{part}
+\newcounter{section}
+\newcounter{subsection}[section]
+\newcounter{subsubsection}[subsection]
+\newcounter{paragraph}[subsubsection]
+
+\def\thepart{\Roman{part}}
+\def\thesection {\arabic{section}}
+\def\thesubsection {\thesection.\arabic{subsection}}
+\def\thesubsubsection {\thesubsection.\arabic{subsubsection}}
+\def\theparagraph {\thesubsubsection.\arabic{paragraph}}
+
+\def\@pnumwidth{1.55em}
+\def\@tocrmarg {2.55em}
+\def\@dotsep{4.5}
+\setcounter{tocdepth}{3}
+
+\def\tableofcontents{\section*{Contents\@mkboth{CONTENTS}{CONTENTS}}
+ \@starttoc{toc}}
+\def\l@part#1#2{\addpenalty{\@secpenalty}
+ \addvspace{2.25em plus 1pt} \begingroup
+ \@tempdima 3em \parindent \z@ \rightskip \@pnumwidth \parfillskip
+-\@pnumwidth
+ {\large \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}}\par
+ \nobreak \endgroup}
+\def\l@section#1#2{\addpenalty{\@secpenalty} \addvspace{1.0em plus 1pt}
+\@tempdima 1.5em \begingroup
+ \parindent \z@ \rightskip \@pnumwidth
+ \parfillskip -\@pnumwidth
+ \bf \leavevmode #1\hfil \hbox to\@pnumwidth{\hss #2}\par
+ \endgroup}
+\def\l@subsection{\@dottedtocline{2}{1.5em}{2.3em}}
+\def\l@subsubsection{\@dottedtocline{3}{3.8em}{3.2em}}
+\def\listoffigures{\section*{List of Figures\@mkboth
+ {LIST OF FIGURES}{LIST OF FIGURES}}\@starttoc{lof}}
+\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
+\def\listoftables{\section*{List of Tables\@mkboth
+ {LIST OF TABLES}{LIST OF TABLES}}\@starttoc{lot}}
+\let\l@table\l@figure
+
+
+\def\thebibliography#1{\par\footnotesize
+\@ucheadfalse
+\@startsection{subsection}{2}{\z@}{16pt plus 2pt minus
+ 1pt}{2pt}{\sf}*{REFERENCES}%
+\list{\arabic{enumi}.}{%
+ \settowidth{\labelwidth}{99.}%
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep \topsep \z@ \parsep 0pt plus .1pt
+ \itemsep \parsep
+ \usecounter{enumi}}%
+ \def\newblock{\hskip .11em plus .33em minus .07em}
+ \sloppy
+ \widowpenalty=10000
+ \clubpenalty=10000
+ \sfcode`\.=1000\relax}
+\let\endthebibliography=\endlist
+
+
+\newif\if@restonecol
+\def\theindex{\@restonecoltrue\if@twocolumn\@restonecolfalse\fi
+\columnseprule \z@
+\columnsep 35pt\twocolumn[\section*{Index}]
+ \@mkboth{INDEX}{INDEX}\thispagestyle{plain}\parindent\z@
+ \parskip\z@ plus .3pt\relax\let\item\@idxitem}
+\def\@idxitem{\par\hangindent 40pt}
+\def\subitem{\par\hangindent 40pt \hspace*{20pt}}
+\def\subsubitem{\par\hangindent 40pt \hspace*{30pt}}
+\def\endtheindex{\if@restonecol\onecolumn\else\clearpage\fi}
+\def\indexspace{\par \vskip 10pt plus 5pt minus 3pt\relax}
+
+\def\footnoterule{\kern-3\p@
+ \hrule \@height 0.2\p@ \@width 47\p@
+ \kern 2.6\p@
+}
+
+\long\def\@makefntext#1{\parindent 1em\noindent
+ $^{\@thefnmark}$#1}
+
+
+\setcounter{topnumber}{3}
+\def\topfraction{.99}
+\setcounter{bottomnumber}{1}
+\def\bottomfraction{.5}
+\setcounter{totalnumber}{3}
+\def\textfraction{.01}
+\def\floatpagefraction{.85}
+\setcounter{dbltopnumber}{2}
+\def\dbltopfraction{.7}
+\def\dblfloatpagefraction{.5}
+
+\long\def\@makecaption#1#2{\vskip 1pc \setbox\@tempboxa\hbox{#1.\hskip
+1em\relax #2}
+ \ifdim \wd\@tempboxa >\hsize #1. #2\par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+
+\def\nocaption{\refstepcounter\@captype \par
+ \vskip 1pc \hbox to\hsize{\hfil \footnotesize Figure \thefigure
+ \hfil}}
+
+
+\newcounter{figure}
+\def\thefigure{\@arabic\c@figure}
+\def\fps@figure{tbp}
+\def\ftype@figure{1}
+\def\ext@figure{lof}
+\def\fnum@figure{Fig.\ \thefigure}
+\def\figure{\let\normalsize\footnotesize \normalsize \@float{figure}}
+\let\endfigure\end@float
+\@namedef{figure*}{\@dblfloat{figure}}
+\@namedef{endfigure*}{\end@dblfloat}
+
+\newcounter{table}
+\def\thetable{\@Roman\c@table}
+\def\fps@table{tbp}
+\def\ftype@table{2}
+\def\ext@table{lot}
+\def\fnum@table{Table \thetable}
+\def\table{\let\normalsize\footnotesize \normalsize\@float{table}}
+\let\endtable\end@float
+\@namedef{table*}{\@dblfloat{table}}
+\@namedef{endtable*}{\end@dblfloat}
+\def\acmtable#1{\@narrowfig #1\relax
+ \let\caption\@atcap \let\nocaption\@atnocap
+ \def\@tmpnf{}\@ifnextchar[{\@xntab}{\@ntab}}
+\def\endacmtable{\hbox to \textwidth{\hfil
+\vbox{\hsize \@narrowfig
+\box\@nfcapbox
+{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}
+\vskip -1pt
+\box\@nfigbox\vskip -1pt
+{\baselineskip 4pt \hbox{\vrule height .4pt width \hsize}}}\hfil}
+\end@float}
+\def\@xntab[#1]{\def\@tmpnf{[#1]}\@ntab}
+\def\@ntab{\expandafter\table\@tmpnf
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize \@narrowfig \@parboxrestore}
+\def\@atmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}
+ \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
+to\hsize{\hfil\box\@tempboxa\hfil}
+ \fi}
+\def\@atcap{\par\egroup\refstepcounter\@captype
+ \@dblarg{\@atcapx\@captype}}
+\long\def\@atcapx#1[#2]#3{\setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox
+ \@parboxrestore
+ \@atmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par}}
+\def\@atnocap{\egroup \refstepcounter\@captype
+ \setbox\@nfcapbox\vbox {\hsize \wd\@nfigbox
+ \hbox to\hsize{\hfil \footnotesize Table \thetable\hfil}}}
+
+%
+%% Narrow figures
+%
+\def\narrowfig#1{\@narrowfig #1\relax
+ \let\caption\@nfcap \let\nocaption\@nfnocap
+ \def\@tmpnf{}\@ifnextchar[{\@xnfig}{\@nfig}}
+\def\endnarrowfig{\hbox to \textwidth{\if@nfeven
+ \box\@nfcapbox\hfil\box\@nfigbox
+ \else \box\@nfigbox\hfil\box\@nfcapbox\fi}\end@float}
+\def\@xnfig[#1]{\def\@tmpnf{[#1]}\@nfig}
+\def\@nfig{\expandafter\figure\@tmpnf
+ \setbox\@nfigbox\vbox\bgroup
+ \hsize \@narrowfig \@parboxrestore}
+\def\@nfmakecap #1#2{\setbox\@tempboxa\hbox{#1.\hskip 1em\relax #2}
+ \ifdim \wd\@tempboxa >\hsize \sloppy #1.\hskip 1em\relax #2 \par \else \hbox
+to\hsize{\if@nfeven\else\hfil\fi\box\@tempboxa\if@nfeven\hfil\fi}
+ \fi}
+\def\@nfcap{\par\egroup\refstepcounter\@captype
+ \@dblarg{\@nfcapx\@captype}}
+\long\def\@nfcapx#1[#2]#3{\@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox
+ {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil
+ \@nfmakecap{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
+ \vfil}}
+\def\@nfnocap{\egroup \refstepcounter\@captype \@seteven
+ \setbox\@nfcapbox\vbox to \ht\@nfigbox
+ {\hsize \textwidth \advance\hsize -2pc \advance\hsize -\wd\@nfigbox
+ \@parboxrestore
+ \vfil
+ \hbox to\hsize{\if@nfeven\else\hfil\fi
+ \footnotesize Figure \thefigure
+ \if@nfeven\hfil\fi}
+ \vfil}}
+\def\@seteven{\@nfeventrue
+ \@ifundefined{r@@nf\thefigure}{}{%
+ \edef\@tmpnf{\csname r@@nf\thefigure\endcsname}%
+ \edef\@tmpnf{\expandafter\@getpagenum\@tmpnf}%
+ \ifodd\@tmpnf\relax\@nfevenfalse\fi}%
+\label{@nf\thefigure}\edef\@tmpnfx{\if@nfeven e\else o\fi}
+\edef\@tmpnf{\write\@unused {\noexpand\ifodd \noexpand\c@page
+ \noexpand\if \@tmpnfx e\noexpand\@nfmsg{\thefigure} \noexpand\fi
+ \noexpand\else
+ \noexpand\if \@tmpnfx o\noexpand\@nfmsg{\thefigure}\noexpand\fi
+ \noexpand\fi }}\@tmpnf}
+\def\@nfmsg#1{Bad narrowfig: Figure #1 on page \thepage}
+
+\newdimen\@narrowfig
+\newbox\@nfigbox
+\newbox\@nfcapbox
+\newif\if@nfeven
+
+\def\and{\\ and\\}
+\def\maketitle{\newpage \thispagestyle{titlepage}\par
+ \begingroup \lineskip = \z@\null \vskip -30pt\relax
+ \parindent\z@ \LARGE {\raggedright \hyphenpenalty\@M
+ \sf \@title \par}
+\label{@firstpg}
+{ \vskip 13.5pt\relax \normalsize \sf %vskip 13.5pt between title and author
+ \begingroup \addtolength{\baselineskip}{2pt}
+ \@author\par \vskip -2pt
+ \endgroup }
+ {\ifx \@categories\@empty
+ \else
+ \baselineskip 17pt\relax
+ \hbox{\vrule height .2pt width 30pc}}
+ \vskip 8.5pt \footnotesize \box\@abstract \vskip 4pt\relax %vskip8.5 space above abstract
+ {\def\and{\unskip\/{\rm ; }}
+ Categories and Subject Descriptors: \@categories \fi}\par\vskip 4pt\relax
+ \box\@terms \vskip 4pt\relax
+ \box\@keywords \par
+ {\baselineskip 14pt\relax
+ \@abstractbottom
+ }
+ \vskip 23pt\relax
+ \endgroup
+\let\maketitle\relax
+ % \gdef\@author{}\gdef\@title{}
+ \gdef\@categories{}}
+
+
+\newbox\@abstract
+\newbox\@terms
+\newbox\@keywords
+\def\abstract{\global\setbox\@abstract=\vbox\bgroup \everypar{}
+ \footnotesize \hsize 30pc \parindent 10pt \noindent
+ \rule{0pt}{10pt}\ignorespaces}
+\def\endabstract{\egroup}
+
+\def\terms#1{\setbox\@terms=\vbox{\everypar{}
+ \footnotesize \hsize 30pc \parindent 0pt \noindent
+ General Terms: \ignorespaces #1}}
+\def\keywords#1{\setbox\@keywords=\vbox{\everypar{}
+ \footnotesize \hsize 30pc \parindent 0pt \noindent
+ Additional Key Words and Phrases: \ignorespaces #1}
+}
+
+\def\category#1#2#3{\@ifnextchar
+ [{\@category{#1}{#2}{#3}}{\@xcategory{#1}{#2}{#3}}}
+\def\@category#1#2#3[#4]{\edef\@tempa{\ifx \@categories\@empty
+ \else ; \fi}{\def\protect{\noexpand\protect
+ \noexpand}\def\and{\noexpand\and}\xdef\@categories{\@categories\@tempa #1
+[{\bf #2}]:
+ #3\kern\z@---\hskip\z@{\it #4}}}}
+\def\@xcategory#1#2#3{\edef\@tempa{\ifx \@categories\@empty \else ;
+\fi}{\def\protect{\noexpand\protect\noexpand}\def\and{\noexpand
+ \and}\xdef\@categories{\@categories\@tempa #1 [{\bf #2}]: #3}}}
+\def\@categories{}
+\def\bottomstuff{\global\@topnum\z@ \global\@botroom \textheight \begin{figure}
+\parindent\z@
+\hbox{}
+\vskip -\textfloatsep
+\vskip 10pt
+\hrule height .2pt width 30pc
+\vskip 2pt\rule{0pt}{10pt}\ignorespaces}
+\def\endbottomstuff{\end{figure}\gdef\permission{}}
+
+\newenvironment{ackslike}[1]
+ {\par \footnotesize
+ \@ucheadfalse
+ \@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus -1pt}{2pt}{\sf}*
+ {\uppercase{#1}}\par\normalsize
+ \pdfbookmark{Acknowledgments}{Ack}
+ }
+ {\par}
+\newenvironment{acks}{\begin{ackslike}{ACKNOWLEDGMENTS}}{\end{ackslike}}
+
+\def\received{\par\footnotesize\addvspace{18pt plus 0pt minus
+4pt}\parindent\z@}
+\def\endreceived{\label{@lastpg}\hskip-2pt\par}
+
+\mark{{}{}}
+
+\def\ps@myheadings{\let\@mkboth\@gobbletwo
+\def\@oddhead{\hbox{}\hfill \small\sf \rightmark\hskip
+19pt{\Large$\cdot$}\hskip 17pt\mypage}
+\def\@oddfoot{\hbox{}\hfill\tiny\@runningfoot}
+\def\@evenhead{\small\sf\mypage \hskip 17pt{\Large$\cdot$}\hskip 19pt\leftmark\hfill \hbox{}}
+\def\@evenfoot{\tiny\@runningfoot\hfill\hbox{}}
+\def\sectionmark##1{}\def\subsectionmark##1{}}
+\def\@runningfoot{}
+\def\runningfoot#1{\def\@runningfoot{#1}}
+\def\@firstfoot{}
+\def\firstfoot#1{\def\@firstfoot{#1}}
+\def\ps@titlepage{\let\@mkboth\@gobbletwo
+\def\@oddhead{}\def\@oddfoot{\hbox{}\hfill
+\tiny\@firstfoot}\def\@evenhead{}\def\@evenfoot{\tiny\@firstfoot\hfill\hbox{}}}
+
+\def\today{\ifcase\month\or
+ January\or February\or March\or April\or May\or June\or
+ July\or August\or September\or October\or November\or December\fi
+ \space\number\day, \number\year}
+\def\@marrayclassiv{\@addtopreamble{$\displaystyle \@nextchar$}}
+\def\@marrayclassz{\ifcase \@lastchclass \@acolampacol \or \@ampacol \or
+ \or \or \@addamp \or
+ \@acolampacol \or \@firstampfalse \@acol \fi
+\edef\@preamble{\@preamble
+ \ifcase \@chnum
+ \hfil$\relax\displaystyle\@sharp$\hfil \or $\relax\displaystyle\@sharp$\hfil
+ \or \hfil$\relax\displaystyle\@sharp$\fi}}
+\def\marray{\arraycolsep 2.5pt\let\@acol\@arrayacol \let\@classz\@marrayclassz
+ \let\@classiv\@marrayclassiv \let\\\@arraycr\def\@halignto{}\@tabarray}
+\def\endmarray{\crcr\egroup\egroup}
+
+
+\ps@myheadings \pagenumbering{arabic} \onecolumn
+
+%-----------------------BIBLIOGRAPHY STUFF-------------------------
+% this is adapted (November 1993) by Andrew Appel and Rebecca Davies from
+%
+%%% filename = "chicago.sty",
+%%% version = "4", % MODIFIED!
+%%% date = "31 August 1992",
+%%% time = "09:42:44 199",
+%%% author = "Glenn Paulley",
+%%% address = "Data Structuring Group
+%%% Department of Computer Science
+%%% University of Waterloo
+%%% Waterloo, Ontario, Canada
+%%% N2L 3G1",
+%%% telephone = "(519) 885-1211",
+%%% FAX = "(519) 885-1208",
+%%% email = "gnpaulle@bluebox.uwaterloo.ca",
+
+%%% ====================================================================
+%
+% this file: Modification of chicago.sty for new ACM bibliography
+% style, which is similar (but not identical) to the ``Chicago'' style.
+%
+% chicago.sty: Style file for use with bibtex style chicago.bst, for
+% bibliographies formatted according to the 13th Edition of the Chicago
+% Manual of Style.
+%
+% 'newapa.bst' was made from 'plain.bst', 'named.bst', and 'apalike.bst',
+% with lots of tweaking to make it look like APA style, along with tips
+% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
+% newapa.sty formed the basis of this style, chicago.sty. Author-date
+% references in newapa.bst formed the basis for chicago.bst. Chicagoa.bst
+% supports annotations.
+%
+% Version 4 (August, 1992):
+% - fixed chicago.bst and chicagoa.bst to handle long author lists in
+% sorting
+% - fixed chicago.bst and chicagoa.bst so that missing page numbers in
+% ``article'' entries are handled correctly
+% - modified chicago.sty to format entries with 2nd and subsequent lines
+% indented.
+%
+% Citation format: (author-last-name year)
+% (author-last-name and author-last-name year)
+% (author-last-name et al. year)
+% (author-last-name)
+% author-last-name
+% author-last-name (year)
+% (author-last-name and author-last-name)
+% (author-last-name et al.)
+% (year) or (year,year)
+% year or year,year
+%
+% Reference list ordering: alphabetical by author or whatever passes
+% for author in the absence of one.
+%
+% This BibTeX style has support for abbreviated author lists and for
+% year-only citations. This is done by having the citations
+% actually look like
+%
+% \citeauthoryear{full-author-info}{abbrev-author-info}{year}
+%
+% The LaTeX style has to have the following (or similar)
+%
+% \let\@internalcite\cite
+% \def\fullcite{\def\citeauthoryear##1##2##3{##1, ##3}\@internalcite}
+% \def\fullciteA{\def\citeauthoryear##1##2##3{##1}\@internalcite}
+% \def\shortcite{\def\citeauthoryear##1##2##3{##2, ##3}\@internalcite}
+% \def\shortciteA{\def\citeauthoryear##1##2##3{##2}\@internalcite}
+% \def\citeyear{\def\citeauthoryear##1##2##3{##3}\@internalcite}
+%
+%
+% -------------------------------------------------------------------------
+%
+% Citation macros.
+%
+\let\@internalcite\cite
+
+\def\cite{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeXNP#1#2{%
+ \def\@cite@label{#2}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{\@cite@label}\@internalcite{#1}}
+% \def\@citeseppen{-1000}%
+% \def\@cite@label{#1}
+% \def\@cite##1##2{\if@tempswa ##2\fi}%
+% \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeNP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##2 ##3}\@internalcite}
+\def\citeN{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2]\else{]}\fi}%
+ \def\citeauthoryear##1##2##3{##2 [##3}\@citedata}
+\def\shortciteN{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2]\else{]}\fi}%
+ \def\citeauthoryear##1##2##3{##2 [##3}\@citedata}
+\def\citeS#1{[\citeANP{#1} \citeyearNP{#1}]}
+\def\citeNS#1{\citeANP{#1} \citeyear{#1}}
+\def\citeNPS#1{\citeANP{#1} \citeyearNP{#1}}
+\def\citeNN{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+\def\citeA{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##2}\@internalcite}
+\def\citeANP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##2}\@internalcite}
+
+\def\citeyear{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+\def\citeyearNP{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{##1\if@tempswa , ##2\fi}%
+ \def\citeauthoryear##1##2##3{##3}\@citedata}
+
+%
+% \@citedata and \@citedatax:
+%
+% Place commas in-between citations in the same \citeyear, \citeyearNP,
+% or \citeN command.
+% Use something like \citeN{ref1,ref2,ref3} and \citeN{ref4} for a list.
+%
+\def\@citedata{%
+ \@ifnextchar [{\@tempswatrue\@citedatax}%
+ {\@tempswafalse\@citedatax[]}%
+}
+
+\def\@citedatax[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+ {\@citea\def\@citea{; }\@ifundefined% by Young
+ {b@\@citeb}{{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% don't box citations, separate with ; and a space
+% also, make the penalty between citations negative: a good place to break.
+%
+\def\@citex[#1]#2{%
+\if@filesw\immediate\write\@auxout{\string\citation{#2}}\fi%
+ \def\@citea{}\@cite{\@for\@citeb:=#2\do%
+ {\@citea\def\@citea{; }\@ifundefined% by Young
+ {b@\@citeb}{{\bf ?}%
+ \@warning{Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{#1}}%
+
+% (from apalike.sty)
+% No labels in the bibliography.
+%
+\def\@biblabel#1{}
+
+% (from apalike.sty)
+% Set length of hanging indentation for bibliography entries.
+%
+\newlength{\bibhang}
+\setlength{\bibhang}{2em}
+
+% Indent second and subsequent lines of bibliographic entries. Stolen
+% from openbib.sty: \newblock is set to {}.
+
+\newdimen\bibindent
+\bibindent=1em
+\@ifundefined{refname}%
+ {\@ifundefined{chapter}%
+ {\newcommand{\refname}{\footnotesize REFERENCES}}%
+ {\newcommand{\refname}{\footnotesize BIBLIOGRAPHY}}%
+ }%
+ {}%
+\@ifundefined{chapter}%
+ {\def\thebibliography#1{\footnotesize \section*{\refname\@mkboth
+ {\uppercase{\refname}}{\uppercase{\refname}}}\list
+ {[\arabic{enumi}]}{
+ \settowidth\labelwidth{[#1]}
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ \usecounter{enumi}}
+ \def\newblock{}
+ \sloppy
+ \sfcode`\.=1000\relax}}
+ {\def\thebibliography#1{\footnotesize \chapter*{\refname\@mkboth
+ {\uppercase{\refname}}{\uppercase{\refname}}}\list
+ {[\arabic{enumi}]}{\settowidth\labelwidth{[#1]}
+ \leftmargin\labelwidth
+ \advance\leftmargin\labelsep
+ \advance\leftmargin\bibindent
+ \itemindent -\bibindent
+ \listparindent \itemindent
+ \parsep \z@
+ \usecounter{enumi}}
+ \def\newblock{}
+ \sloppy
+ \sfcode`\.=1000\relax}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% fixes to acm trans macro package
+% 31-JAN-1996
+% John Tang Boyland
+
+% newdef need to take the optional parameters of newtheorem
+\def\newdef#1{\@ifnextchar[{\@xnewdef{#1}}{\@ynewdef{#1}}}
+\def\@xnewdef#1[#2]#3{\newtheorem{italic@#1}[#2]{{\em #3}}\@newdef{#1}}
+\def\@ynewdef#1#2{\@ifnextchar[{\@xynewdef{#1}{#2}}{\@yynewdef{#1}{#2}}}
+\def\@xynewdef#1#2[#3]{\newtheorem{italic@#1}{{\em #2}}[#3]\@newdef{#1}}
+\def\@yynewdef#1#2{\newtheorem{italic@#1}{{\em #2}}\@newdef{#1}}
+% and now fix up definition, to change body to use roman font:
+\def\@newdef#1{\newenvironment{#1}{\@ifnextchar[{\@xstartdef{#1}}{\@ystartdef{#1}}}{\end{italic@#1}}}
+\def\@xstartdef#1[#2]{\begin{italic@#1}[#2]\rm}
+\def\@ystartdef#1{\begin{italic@#1}\rm}
+
+% footers produced too small (vpt), when ACM typsets them at 7.5pt (!).
+% A better compromise is viipt.
+\def\@oddfoot{\hbox{}\hfill\scriptsize\@runningfoot}
+\def\@evenfoot{\scriptsize\@runningfoot\hfill\hbox{}}
+
+% first footer was set to (vpt), when ACM typesets them at 6.5pt (!).
+% A better compromise is vipt.
+\def\firstfootsize{\@setsize\firstfootsize{7pt}\vipt\@vipt}
+\def\ps@titlepage{\let\@mkboth\@gobbletwo
+\def\@oddhead{}\def\@oddfoot{\hbox{}\hfill\firstfootsize\@firstfoot}%
+\def\@evenhead{}\def\@evenfoot{\firstfootsize\@firstfoot\hfill\hbox{}}}
+
+% new permission statement
+\long\def\permission{\par
+% linebreaks added to conform to the current style
+Permission to make digital/hard copy of all or part of this material without
+fee
+for personal or classroom use
+provided that the copies are not made or distributed for profit
+or commercial advantage, the ACM copyright/server notice, the title of the
+publication, and its date appear, and notice is given that copying is by
+permission of the ACM, Inc. To copy
+otherwise, to republish, to post on servers, or to redistribute to lists
+requires prior specific
+permission and/or a fee.\par}
+
+% make sure \permission doesn't get trashed
+\def\endbottomstuff{\end{figure}}
+
+% alternate way of using citeyear
+\def\shortcite#1{\citeyear{#1}}
+
+% enumerations and longenums are wrong
+% 1. the second line in a paragraph of an enumerations in theorems
+% (or other trivlists) doesn't line up under the first
+% 1. the second line of a longenum doesn't properly wrap around
+% back to the left margin.
+
+% the original definition of \@listI doesn't set labelwidth
+\def\@listI{\leftmargin\leftmargini
+ \labelwidth\leftmargini\advance\labelwidth-\labelsep
+ \parsep 0pt plus 1pt
+ \topsep 6pt plus 2pt minus 2pt
+ \itemsep 2pt plus 1pt minus .5pt}
+\let\@listi\@listI
+\@listi
+
+% add set of \labelwidth and \itemindent
+\def\longenum{\ifnum \@enumdepth >3 \@toodeep\else
+ \advance\@enumdepth \@ne
+ \edef\@enumctr{enum\romannumeral\the\@enumdepth}\list
+ {\csname label\@enumctr\endcsname}{\usecounter
+ {\@enumctr}\labelwidth\z@\leftmargin\z@
+ \itemindent\parindent \advance\itemindent\labelsep}\fi}
+
+% split electronic appendix into two parts:
+
+\def\appendixhead#1#2#3{
+{#1} available only online.
+You should be able to get the online-only {#2} from the citation page
+for this article:
+\smallskip
+
+\quad \href{#3}{{\small #3}}
+\smallskip
+
+Alternative instructions on how to obtain online-only appendices
+are given on the back inside cover of current issues of ACM TOPLAS
+or on the ACM TOPLAS web page: \nopagebreak \smallskip
+
+ \quad \href{http://www.acm.org/toplas}{{\small http://www.acm.org/toplas} }}
+
+\long\def\elecappendix#1#2#3#4{
+\clearpage
+\makeatletter
+\pagenumbering{withappendix}
+\makeatother
+\appendix
+\par\noindent{\sc This document is the online-only appendix to:}\hfill \vskip 1em
+{\vbox{\Large\sf \parindent0pt\@title{}}}\vskip .5em
+\vbox{\sf \parindent0pt\@author{}}\vskip .5em\noindent
+\vskip 10pt\noindent
+{\firstfootsize #3}
+\vskip 11pt\noindent
+\hrule height .2pt
+\par
+\bottomstuff
+\permission
+\par
+#4
+\par
+\endbottomstuff
+}
+
+% provide for a single acknowledgment
+\def\ack{ \par \footnotesize
+\@ucheadfalse
+\@startsection{subsection}{2}{\z@}{-16pt plus -2pt minus
+ -1pt}{2pt}{\sf}*{ACKNOWLEDGMENT}\par\normalsize
+\pdfbookmark{Acknowledgment}{Ack}
+}
+\def\endack{\par}
+
+% provide both spellings of Acknowledgment(s)
+\let\acknowledgments\acks
+\let\endacknowledgments\endacks
+\let\acknowledgment\ack
+\let\endacknowledgment\endack
+
+\newcommand{\longpage}{\enlargethispage{\baselineskip}}
+\newcommand{\shortpage}{\enlargethispage{-\baselineskip}}
+
+
+% Don't indent bibliography and
+% override \refname (which sets fontsize):
+\def\thebibliography#1{
+ \footnotesize\section*{\footnotesize\sf{REFERENCES}\@mkboth
+ {\uppercase{\refname}}{\uppercase{\refname}}}\pdfbookmark{References}{Ref}\list
+ {\@biblabel{\arabic{enumiv}}}{%
+ %\settowidth\labelwidth{[#1]}
+ \labelwidth 0pt
+ \leftmargin \bibindent
+ \labelsep 0pt
+ \itemindent -\bibindent
+ \listparindent -\bibindent
+ \labelsep -\bibindent
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \def\theenumiv{\arabic{enumiv}}}%
+ \def\newblock{\hskip .11em plus.33em minus.07em}%
+ \sloppy
+ \clubpenalty=4500
+ \widowpenalty=4500
+ \frenchspacing}
+\def\endthebibliography{%
+ \def\@noitemerr{\@warning{Empty `thebibliography' environment}}%
+ \endlist}
+\def\@lbibitem[#1]#2{\item[]\if@filesw
+ {\def\protect##1{\string ##1\space}\immediate
+ \write\@auxout{\string\bibcite{#2}{#1}}}\fi\hspace{\bibitemindent}\ignorespaces}
+% Fix cite so it doesn't repeat author lists in citations:
+
+\def\cite{\def\@citeseppen{-1000}%
+ \def\@cite##1##2{[##1\if@tempswa , ##2\fi]}%
+ \let\@lastauthor=\@noauthor
+ \let\citeauthoryear=\citeauthoryear@no@repeats\@internalcite}
+ %\def\citeauthoryear##1##2##3{##2 ##3}\@internalcite
+
+\def\@noauthor={\relax}
+\let\@lastauthor=\@noauthor
+\let\@currauthor=\@noauthor
+
+\def\citeauthoryear@no@repeats#1#2#3{%
+ \def\@currauthor{\csname @author #1\endcsname}%
+ \ifx\@lastauthor\@currauthor{#3}\else{#2 #3}\fi%
+ \let\@lastauthor=\@currauthor}
+
+\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
+\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
+\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
+\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
+\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
+\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
+\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
+\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
+\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}
+
+
+\firstfoot{ACM Transactions on Programming Languages and Systems,
+ Vol.\ TBD, No.\ TDB, Month Year,
+Pages \pages.}
+
+\runningfoot{ACM Transactions on Programming Languages and Systems,
+ Vol.\ TBD, No.\ TDB, Month Year.}
diff --git a/tlpkg/tlpsrc/acmtrans.tlpsrc b/tlpkg/tlpsrc/acmtrans.tlpsrc
new file mode 100644
index 00000000..e69de29b
--- /dev/null
+++ b/tlpkg/tlpsrc/acmtrans.tlpsrc