From 11ed52a4a8d75f0b00e81db3fab3007841679924 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 1 May 2017 18:57:46 +0900 Subject: add acmtrans --- texmf-dist/bibtex/bst/acmtrans/acmtrans.bst | 1768 ++++++++++++++++++++++++++ texmf-dist/doc/latex/acmtrans/acmtr.bib | 116 ++ texmf-dist/doc/latex/acmtrans/acmtr2e.pdf | Bin 0 -> 180516 bytes texmf-dist/doc/latex/acmtrans/acmtr2e.tex | 1000 +++++++++++++++ texmf-dist/tex/latex/acmtrans/acmtrans2e.cls | 1243 ++++++++++++++++++ 5 files changed, 4127 insertions(+) create mode 100644 texmf-dist/bibtex/bst/acmtrans/acmtrans.bst create mode 100644 texmf-dist/doc/latex/acmtrans/acmtr.bib create mode 100644 texmf-dist/doc/latex/acmtrans/acmtr2e.pdf create mode 100644 texmf-dist/doc/latex/acmtrans/acmtr2e.tex create mode 100644 texmf-dist/tex/latex/acmtrans/acmtrans2e.cls (limited to 'texmf-dist') 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 Binary files /dev/null and b/texmf-dist/doc/latex/acmtrans/acmtr2e.pdf 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.} -- cgit v1.2.3