texlive[41692] Master/texmf-dist: acmart (14jul16)
commits+karl at tug.org
commits+karl at tug.org
Thu Jul 14 23:38:03 CEST 2016
Revision: 41692
http://tug.org/svn/texlive?view=revision&revision=41692
Author: karl
Date: 2016-07-14 23:38:03 +0200 (Thu, 14 Jul 2016)
Log Message:
-----------
acmart (14jul16)
Modified Paths:
--------------
trunk/Master/texmf-dist/doc/latex/acmart/Makefile
trunk/Master/texmf-dist/doc/latex/acmart/README
trunk/Master/texmf-dist/doc/latex/acmart/acmart.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf
trunk/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex
trunk/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex
trunk/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex
trunk/Master/texmf-dist/source/latex/acmart/acmart.dtx
trunk/Master/texmf-dist/tex/latex/acmart/acmart.cls
Added Paths:
-----------
trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst
Removed Paths:
-------------
trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst
trunk/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst
trunk/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst
trunk/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst
trunk/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst
trunk/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst
trunk/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst
Deleted: trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,3349 +0,0 @@
-%%% -*-BibTeX-*-
-%%% ====================================================================
-%%% @BibTeX-style-file{
-%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
-%%% version = "1.00",
-%%% date = "18 January 2012",
-%%% time = "11:48 EST",
-%%% filename = "ACM-Reference-Format-Journals.bst",
-%%% address = "University of Utah
-%%% Department of Mathematics, 110 LCB
-%%% 155 S 1400 E RM 233
-%%% Salt Lake City, UT 84112-0090
-%%% USA",
-%%% telephone = "+1 801 581 5254",
-%%% FAX = "+1 801 581 4148",
-%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "available here: http://www.acm.org/publications/latex_style/CRC-journals.txt"
-%%% email = "beebe at math.utah.edu, beebe at acm.org,
-%%% beebe at computer.org, borisv at lk.net, murray at hq.acm.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "ACM Transactions bibliography style; BibTeX",
-%%% license = "public domain",
-%%% supported = "yes",
-%%% abstract = "",
-%%% docstring = "The checksum field, above, is produced by WinMD5Free (v1.20)
-%%% available from http://www.winmd5.com/?rid=winmd5,"
-%%% }
-%%% ====================================================================
-
-% "ACM Transactions" BibTeX style, ACM-Reference-Format-Journals.bst
-% for BibTeX version 0.99c, LaTeX version 3.141
-% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
-% Revised 17-APRIL-2008 (Nelson)
-% Revised 13-MARCH-2011 (Boris/Gerry)
-% Revised 23-MARCH-2011 (Boris/Gerry)
-% Revised 27-MARCH-2011 (Boris/Gerry)
-% Revised 15-APRIL-2011 (Boris/Gerry)
-% Revised 27-SEPTEMBER-2011 (Boris)
-%
-%
-% History (by Nelson)
-%
-% Based on 'acmtrans' (for ACM Journals)
-% Date: 28th April 2008
-%
-% 1. Avoid 'repeating' the 'month' values.
-% 2. Avoid incorrectly italicizing the volume number.
-% 3. Avoid non italicizing certain titles (book, inproceedings etc).
-% 4. NO series if there is NO volume.
-% 5. Sorting of reference with first surname.
-% 6. Article no added for Inproceedings.
-%
-% Date: 07th May 2008
-%
-% 1. Abbreviation list added
-%
-% 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.
-%
-% Features of the old 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.journal.volume.number.
-% - 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 at 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 at cgrg.ohio.state.edu or 71160.3141 at 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'.
-%
-%
-% Start of ACM-Reference-Format-Journals.bst
-%
-% Note: Many of the new bibentry 'fields' will only work with the
-% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability,
-% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst.
-%
-%
-ENTRY
- { address
- advisor
- 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
- % New keys recognized
- issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
- articleno
- day % UTAH: needed for newspapers, weeklies, bi-weeklies
- doi % UTAH
- url % UTAH
- bookpages % UTAH
- numpages
- lastaccessed % UTAH: used only for @Misc{...}
- coden % UTAH
- isbn % UTAH
- isbn-13 % UTAH
- issn % UTAH
- lccn % UTAH
- }
- {}
- { label.year extra.label sort.year sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
-
-INTEGERS { nameptr namesleft numnames }
-
-INTEGERS { multiresult }
-
-INTEGERS { len }
-
-INTEGERS { last.extra.num }
-
-STRINGS { s t t.org u }
-
-STRINGS { last.label next.extra }
-
-STRINGS { p1 p2 p3 page.count }
-
-FUNCTION { dump.stack.1 }
-{
- duplicate$ "STACK[top] = [" swap$ * "]" * warning$
-}
-
-FUNCTION { dump.stack.2 }
-{
- duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
- swap$
- duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
- swap$
-}
-
-FUNCTION { empty.or.unknown }
-{
- %% Examine the top stack entry, and push 1 if it is empty, or
- %% consists only of whitespace, or is a string beginning with two
- %% queries (??), and otherwise, push 0.
- %%
- %% This function provides a replacement for empty$, with the
- %% convenient feature that unknown values marked by two leading
- %% queries are treated the same as missing values, and thus, do not
- %% appear in the output .bbl file, and yet, their presence in .bib
- %% file(s) serves to mark values which are temporarily missing, but
- %% are expected to be filled in eventually once more data is
- %% obtained. The TeX User Group and BibNet bibliography archives
- %% make extensive use of this practice.
- %%
- %% An empty string cannot serve the same purpose, because just as in
- %% statistics data processing, an unknown value is not the same as an
- %% empty value.
- %%
- %% At entry: stack = ... top:[string]
- %% At exit: stack = ... top:[0 or 1]
-
- duplicate$ empty$
- { pop$ #1 }
- { #1 #2 substring$ "??" = }
- if$
-}
-
-FUNCTION { writeln }
-{
- %% In BibTeX style files, the sequences
- %%
- %% ... "one" "two" output
- %% ... "one" "two" output.xxx
- %%
- %% ship "one" to the output file, possibly following by punctuation,
- %% leaving the stack with
- %%
- %% ... "two"
- %%
- %% There is thus a one-string lag in output processing that must be
- %% carefully handled to avoid duplicating a string in the output
- %% file. Unless otherwise noted, all output.xxx functions leave
- %% just one new string on the stack, and that model should be born
- %% in mind when reading or writing function code.
- %%
- %% BibTeX's asynchronous buffering of output from strings from the
- %% stack is confusing because newline$ bypasses the buffer. It
- %% would have been so much easier for newline to be a character
- %% rather than a state of the output-in-progress.
- %%
- %% The documentation in btxhak.dvi is WRONG: it says
- %%
- %% newline$ Writes onto the bbl file what's accumulated in the
- %% output buffer. It writes a blank line if and only
- %% if the output buffer is empty. Since write$ does
- %% reasonable line breaking, you should use this
- %% function only when you want a blank line or an
- %% explicit line break.
- %%
- %% write$ Pops the top (string) literal and writes it on the
- %% output buffer (which will result in stuff being
- %% written onto the bbl file when the buffer fills
- %% up).
- %%
- %% Examination of the BibTeX source code shows that write$ does
- %% indeed behave as claimed, but newline$ sends a newline character
- %% directly to the output file, leaving the stack unchanged. The
- %% first line "Writes onto ... buffer." is therefore wrong.
- %%
- %% The original BibTeX style files almost always use "write$ newline$"
- %% in that order, so it makes sense to hide that pair in a private
- %% function like this one, named after a statement in Pascal,
- %% the programming language embedded in the BibTeX Web program.
-
- write$ % output top-of-stack string
- newline$ % immediate write of newline (not via stack)
-}
-
-FUNCTION { init.state.consts }
-{
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-FUNCTION { output.nonnull }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
- 's :=
- output.state mid.sentence =
- {
- ", " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln
- "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.dot.space }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
- 's :=
- output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
- {
- ". " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.remove }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
- 's :=
- output.state mid.sentence =
- {
- " " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.removenospace }
-{ % Stack in: ... R S T Stack out: ... R T File out: S
- 's :=
- output.state mid.sentence =
- {
- "" * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output }
-{ % discard top token if empty, else like output.nonnull
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.dot.space }
-{ % discard top token if empty, else like output.nonnull.dot.space
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { output.removenospace }
-{ % discard top token if empty, else like output.nonnull.removenospace
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.removenospace
- if$
-}
-
-FUNCTION { output.check }
-{ % like output, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.check.dot.space }
-{ % like output.dot.space, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { fin.block }
-{ % functionally, but not logically, identical to fin.entry
- add.period$
- writeln
-}
-
-FUNCTION { fin.entry }
-{
- add.period$
- writeln
-}
-
-FUNCTION { new.sentence }
-{ % update sentence state, with neither output nor stack change
- output.state after.block =
- 'skip$
- {
- output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION { fin.sentence }
-{
- add.period$
- write$
- new.sentence
- ""
-}
-
-FUNCTION { new.block }
-{
- output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION { output.coden } % UTAH
-{ % output non-empty CODEN as one-line sentence (stack untouched)
- coden empty.or.unknown
- { }
- { "\showCODEN{" coden * "}" * writeln }
- if$
-}
-
-FUNCTION { format.articleno }
-{
- articleno empty.or.unknown
- { "" }
- {
- numpages empty.or.unknown
- { "articleno field, but no numpages field, in " cite$ * warning$ }
- { }
- if$
- "Article " articleno *
- }
- if$
-}
-
-FUNCTION { format.year }
-{ % push year string or "????" onto output stack
- %% Because year is a mandatory field, we always force SOMETHING
- %% to be output
- year empty.or.unknown
- { "????" }
- { year }
- if$
-}
-
-FUNCTION { format.day.month }
-{ % push "day month " or "month " or "" onto output stack
- day empty.or.unknown
- {
- month empty.or.unknown
- { "" }
- { month " " *}
- if$
- }
- {
- month empty.or.unknown
- { "" }
- { day " " * month * " " *}
- if$
- }
- if$
-}
-
-FUNCTION { format.day.month.year } % UTAH
-{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- % acm-*.bst addition: prefix parenthesized date string with
- % ", Article nnn "
- articleno empty.or.unknown
- { "" }
- { ", " format.articleno * }
- if$
- " (" * format.day.month * format.year * ")" *
-}
-
-FUNCTION { output.day.month.year } % UTAH
-{ % if month is empty value, do nothing; else output stack top and
- % leave with new top string "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- format.day.month.year
- output.nonnull.remove
-}
-
-FUNCTION { strip.doi } % UTAH
-{ % Strip any Web address prefix to recover the bare DOI, leaving the
- % result on the output stack, as recommended by CrossRef DOI
- % documentation.
- % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
- % "10.1145/1534530.1534545". That is later typeset and displayed as
- % doi:10.1145/1534530.1534545 as the LAST item in the reference list
- % entry. Publisher Web sites wrap this with a suitable link to a real
- % URL to resolve the DOI, and the master http://dx.doi.org/ address is
- % preferred, since publisher-specific URLs can disappear in response
- % to economic events. All journals are encouraged by the DOI
- % authorities to use that typeset format and link procedures for
- % uniformity across all publications that include DOIs in reference
- % lists.
- % The numeric prefix is guaranteed to start with "10.", so we use
- % that as a test.
- doi #1 #3 substring$ "10." =
- { doi }
- {
- doi #1 #7 substring$ "http://" =
- {
- doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
-
- "INTERNAL STYLE-FILE ERROR" 's :=
-
- % search for next "/" and assign its suffix to s
-
- { t text.length$ }
- {
- t #1 #1 substring$ "/" =
- {
- % save rest of string as true DOI (should be 10.xxxx/yyyy)
- t #2 t text.length$ #1 - substring$ 's :=
- "" 't := % empty string t terminates the loop
- }
- {
- % discard first character and continue loop: t <= substring(t,2,last)
- t #2 t text.length$ #1 - substring$ 't :=
- }
- if$
- }
- while$
-
- % check for valid DOI (should be 10.xxxx/yyyy)
- s #1 #3 substring$ "10." =
- { }
- { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
- if$
-
- s % push the stripped DOI on the output stack
-
- }
- {
- "unrecognized DOI value [" doi * "]" * warning$
- doi % push the unrecognized original DOI on the output stack
- }
- if$
- }
- if$
-}
-
-%
-% Change by BV: added standard prefix to URL
-%
-FUNCTION { output.doi } % UTAH
-{ % output non-empty DOI as one-line sentence (stack untouched)
- doi empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which then requires
- %% manual (or automated) editing of the .bbl file to repair.
- %% The \url{} macro strips percent-newlines, and is thus safe in
- %% the presence of the line wrapping, but \path|...| and
- %% \verb|...| do not.
- "\showDOI{%" writeln
- "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
- }
- if$
-}
-
-FUNCTION { output.isbn } % UTAH
-{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
- show-isbn-10-and-13
- {
- %% show both 10- and 13-digit ISBNs
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- isbn-13 empty.or.unknown
- { }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- {
- %% show 10-digit ISBNs only if 13-digit ISBNs not available
- isbn-13 empty.or.unknown
- {
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- if$
-}
-
-FUNCTION { output.issn } % UTAH
-{ % output non-empty ISSN as one-line sentence (stack untouched)
- issn empty.or.unknown
- { }
- { "\showISSN{" issn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.issue }
-{ % output non-empty issue number as a one-line sentence (stack untouched)
- issue empty.or.unknown
- { }
- { "Issue " issue * "." * writeln }
- if$
-}
-
-FUNCTION { output.lccn } % UTAH
-{ % return with stack untouched
- lccn empty.or.unknown
- { }
- { "\showLCCN{" lccn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note.check } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { "empty note in " cite$ * warning$ }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-%
-% Changes by BV 2011/04/15. Do not output
-% url if doi is defined
-%
-FUNCTION { output.url } % UTAH
-{ % return with stack untouched
- % output URL and associated lastaccessed fields
- doi empty.or.unknown
- {
- url empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which would require
- %% manual (or automated) editing of the .bbl file to repair. However,
- %% the \url{} macro handles the unwrapping job automatically.
- "\showURL{%" writeln
- lastaccessed empty.or.unknown
- { "" }
- { "Retrieved " lastaccessed * " from " * }
- if$
-
- %% The URL field may contain a semicolon-separated list of Web
- %% addresses, and we locate and wrap each of them in \url{...}.
- %% The simplistic approach of putting the entire list into the
- %% macro argument is that the semicolons are typeset in a
- %% typewriter font, and no space follows them.
- %%
- %% We therefore replace the original code
- %% "\url{" * url * "}}" * writeln
- %% with this character-at-a-time loop:
-
- "\url{" *
-
- url 't := % get modifiable copy of URL list
-
- { t text.length$ }
- {
- t #1 #1 substring$ ";" =
- { % then split argument at separator
- "};" * writeln
- "\url{"
- }
- { % else concatenate nonblank character to argument
- t #1 #1 substring$ " " =
- { }
- { t #1 #1 substring$ * }
- if$
- }
- if$
-
- t #2 t text.length$ #1 - substring$ 't :=
- }
- while$
-
- "}}" * writeln
- }
- if$
- }
- { }
- if$
-}
-
-FUNCTION { output.year.check }
-{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
- year empty.or.unknown
- { "empty year in " cite$ * warning$ }
- { write$
- " " year * extra.label *
- mid.sentence 'output.state :=
- }
- if$
-}
-
-FUNCTION { not }
-{
- { #0 }
- { #1 }
- if$
-}
-
-FUNCTION { and }
-{
- 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION { or }
-{
- { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION { le }
-{
- %% test whether first number is less than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 <= n2 then 1 else 0
-
- %% "DEBUG: le " cite$ * warning$
- > { #0 } { #1 } if$
-}
-
-FUNCTION { ge }
-{
- %% test whether first number is greater than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 >= n2 then 1 else 0
-
- %% "DEBUG: ge " cite$ * warning$
- < { #0 } { #1 } if$
-}
-
-FUNCTION { is.leading.digit }
-{
- %% test whether first character of string is a digit
- %% stack in: string
- %% stack out: if first-char-is-digit then 1 else 0
-
- #1 #1 substring$ % replace string by string[1:1]
- duplicate$ % string[1:1] string[1:1]
- chr.to.int$
- "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
- swap$ % 0-or-1 string[1:1]
- chr.to.int$
- "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
- and
-}
-
-FUNCTION { skip.digits }
-{
- %% skip over leading digits in string
- %% stack in: string
- %% stack out: rest-of-string leading-digits
-
- %% "DEBUG: enter skip.digits " cite$ * warning$
-
- %% dump.stack.1
-
- duplicate$
- 't :=
- 't.org :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
- t is.leading.digit
- { t #2 t text.length$ #1 - substring$ }
- {
- t 'u :=
- ""
- }
- if$
- 't :=
- }
- while$
-
- u % rest of string
- t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
-
- %% "DEBUG: t.org = [" t.org * "]" * warning$
- %% "DEBUG: u = [" u * "]" * warning$
-
- %% dump.stack.2
-
- %% "DEBUG: leave skip.digits " cite$ * warning$
-}
-
-FUNCTION { skip.nondigits }
-{
- %% skip over leading nondigits in string
- %% stack in: string
- %% stack out: rest-of-string
-
- %% "DEBUG: enter skip.nondigits " cite$ * warning$
-
- 't :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
- t is.leading.digit
- {
- t 'u :=
- ""
- }
- { t #2 t text.length$ #1 - substring$ }
- if$
- 't :=
- }
- while$
-
- u % rest of string
-
- %% dump.stack.1
- %% "DEBUG: leave skip.nondigits " cite$ * warning$
-}
-
-FUNCTION { parse.next.number }
-{
- %% stack in: string
- %% stack out: rest-of-string next-numeric-part-of-string
- %% Example:
- %% stack in: "123:1--123:59"
- %% stack out: ":1--123:59" "123"
-
- 's :=
- s skip.nondigits 's :=
- s skip.digits
-}
-
-FUNCTION { reduce.pages.to.page.count }
-{
- %% Stack in: arbitrary-and-unused
- %% Stack out: unchanged
- %%
- %% For the new-style pagination with article number and numpages or
- %% pages, we expect to have BibTeX entries containing something like
- %% articleno = "17",
- %% pages = "1--23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% numpages = "23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% pages = "17:1--17:23",
- %% with output "Article 17, 23 pages",
- %%
- %% If articleno is missing or empty, then we should output "1--23",
- %% "23" (with a warning of a missing articleno), or "17:1--17:23",
- %% respectively.
-
- %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
-
- %% "DEBUG: pages = [" pages * "]" * warning$
-
- pages
- parse.next.number 'p1 :=
- parse.next.number 'p2 :=
- parse.next.number 'p3 :=
- parse.next.number 'page.count :=
-
- duplicate$
- empty.or.unknown
- { }
- {
- duplicate$ "unexpected trailing garbage [" swap$ *
- "] after n:p1--n:p2 in pages = [" *
- pages *
- "] in " *
- cite$ *
- warning$
- }
- if$
-
- pop$
-
- %% "DEBUG: reduce.pages.to.page.count: "
- %% " p1 = " p1 * *
- %% " p2 = " p2 * *
- %% " p3 = " p3 * *
- %% " p4 = " page.count * *
- %% " in " cite$ * * warning$
-
- p1 p3 = p2 "1" = and numpages empty.or.unknown and
- { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
- {
- p2 'page.count :=
- "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
- }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
-}
-
-FUNCTION { new.block.checkb }
-{ % issue a new.block only if at least one of top two stack strings is not empty
- empty.or.unknown
- swap$ empty.or.unknown
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { field.or.null }
-{ % convert empty value to null string, else return value
- duplicate$ empty.or.unknown
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION { emphasize }
-{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "}" * }
- if$
-}
-
-FUNCTION { emphasize.with.italic.correction }
-{ % convert empty string to null string, or emphasize with a trailing italic correction
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "\/}" * }
- if$
-}
-
-FUNCTION { comma }
-{ % convert empty string to null string, or brace string and add trailing comma
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{" swap$ * "}," * }
- if$
-}
-
-FUNCTION { format.names }
-{
- % 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.
-
- 's :=
- #1 'nameptr := % nameptr = 1;
- s num.names$ 'numnames := % numnames = num.name$(s);
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 =
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- if$
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{\sc 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 { 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 "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
-
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{others}" =
- { " {et~al\mbox{.}}" * }
- { " {and} " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr := % nameptr += 1;
- namesleft #1 - 'namesleft := % namesleft =- 1;
- }
- while$
-}
-
-FUNCTION { format.authors }
-{
- author empty.or.unknown
- { "" }
- { author format.names add.period$} % jtb: add period if none before
- if$
-}
-
-FUNCTION { format.key }
-{
- empty.or.unknown
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION { format.no.key }
-{
- empty.or.unknown
- { "" }
- { "" }
- if$
-}
-
-FUNCTION { format.editors.fml }
-{
- % 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.
-
- editor empty.or.unknown
- { "" }
- {
- editor format.names.fml editor num.names$ #1 >
- { " (Eds.)" * }
- { " (Ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.editors }
-{ % format editor names for use in labels, last names first.
- editor empty.or.unknown
- { "" }
- {
- editor format.names
- editor num.names$ #1 >
- { " (Eds.)." * }
- { " (Ed.)." * }
- if$
- }
- if$
-}
-
-FUNCTION { format.articletitle }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { "\showarticletitle{" title * "}" * }
- % Use this for downcase title style:
- % { \showarticletitle{" title "t" change.case$ * "}" * }
- if$
-}
-
-FUNCTION { format.title }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { title }
- % Use this for downcase title style:
- % { title "t" change.case$ }
- if$
-}
-
-FUNCTION { n.dashify }
-{
- 't :=
- ""
- { t empty.or.unknown 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.or.unknown
- { title emphasize }
- { title empty.or.unknown
- { title emphasize } % jtb: what is this supposed to do ?!?
- { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
- if$
- }
- if$
-}
-
-FUNCTION { format.emphasize.booktitle }
-{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
- edition empty.or.unknown
- { booktitle emphasize }
- { booktitle empty.or.unknown
- { "" }
- { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.city }
-{
- % 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
-
- duplicate$ empty.or.unknown
- { }
- {
- city empty.or.unknown
- {
- date empty.or.unknown
- { }
- { " (" * date * ")" * }
- if$
- }
- {
- date empty.or.unknown
- { " (" * city * ")" * }
- { " (" * city * ", " * date * ")" * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION { tie.or.space.connect }
-{
- duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION { either.or.check }
-{
- empty.or.unknown
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION { format.bvolume }
-{
- % jtb: If there is a series, this is added and the volume trails after it.
- % jtb: Otherwise, "Vol" is Capitalized.
-
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.bvolume.noseries }
-{
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { "Vol." volume tie.or.space.connect}
-% { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.series }
-{
- series empty.or.unknown
- {""}
- {" {\em (" * series ")}" *}
- if$
-}
-
-FUNCTION { format.number.series }
-{
- volume empty.or.unknown
- {
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "" }
- { " (" series * ")" * }
- if$
- }
- if$
- } % { series field.or.null }
- {
- output.state mid.sentence =
- { "Number" } % gnp - changed to mixed case always
- { "Number" }
- if$
- number tie.or.space.connect series empty.or.unknown
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- {
- ""
- }
- if$
-}
-
-FUNCTION { multi.page.check }
-{
- 't :=
- #0 'multiresult :=
- { multiresult not
- t empty.or.unknown 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.or.unknown
- { "" }
- {
- pages multi.page.check
- { pages n.dashify } % gnp - removed () % jtb: removed pp.
- { pages }
- if$
- }
- if$
-}
-
-FUNCTION { format.pages.check.without.articleno }
-{ %% format pages field only if articleno is absent
- %% Stack out: pages-specification
- numpages missing$ pages missing$ and
- { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
- { }
- if$
-
- articleno empty.or.unknown
- {
- pages missing$
- { numpages }
- { format.pages }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION { format.pages.check }
-{
- pages empty.or.unknown
- { "page numbers missing in " cite$ * warning$ "" }
- { pages n.dashify }
- if$
-}
-
-FUNCTION { format.bookpages }
-{
- bookpages empty.or.unknown
- { "" }
- { bookpages "book pages" tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.named.pages }
-{
- pages empty.or.unknown
- { "" }
- { format.pages "pages" tie.or.space.connect }
- if$
-}
-
-%
-% Changed by Boris Veytsman, 2011-03-13
-% Now the word "pages" is printed even if
-% there field pages is not empty.
-%
-
-FUNCTION { format.page.count }
-{
- page.count empty.or.unknown
- { "" }
- {
- articleno empty.or.unknown
- { "numpages field, but no articleno field, in " cite$ * warning$ }
- { }
- if$
- page.count "pages" tie.or.space.connect
- }
- if$
-}
-
-FUNCTION { format.articleno.numpages }
-{
- %% There are seven possible outputs, depending on which fields are set.
- %%
- %% These four are handled here:
- %%
- %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
- %% articleno, numpages -> "Article articleno-value, numpages-value pages"
- %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
- %% articleno -> "Article articleno-value" and warn about missing numpages
- %%
- %% The remaining three have already been handled by
- %% format.pages.check.without.articleno:
- %%
- %% numpages, pages -> "pages-value"
- %% numpages -> "numpages-value"
- %% pages -> "pages-value"
-
- articleno empty.or.unknown
- {
- numpages empty.or.unknown
- { }
- { "require articleno with numpages field in " cite$ * warning$ }
- if$
- ""
- }
- {
- numpages empty.or.unknown
- {
- pages empty.or.unknown
- {
- "require pages or numpages fields with articleno field in " cite$ * warning$
- "" 'page.count :=
- }
- { reduce.pages.to.page.count }
- if$
- }
- { numpages 'page.count := }
- if$
-
- %% The Article number is now handled in format.day.month.year because
- %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
- %% over "Digital Libraries 12, 3 (July 2008), Article 5"
- %% format.articleno output
- format.page.count
- }
- if$
-}
-
-FUNCTION { format.journal.volume.number.day.month.year }
-{
- % By Young (and Spencer)
- % GNP - fixed bugs with missing volume, number, and/or pages
- %
- % Format journal, volume, number, pages for article types.
- %
- journal empty.or.unknown
- { "no journal in " cite$ * warning$
- "" }
-% { journal emphasize.with.italic.correction }
- {
- journal "Journal of the ACM" =
- { "{\it J. ACM}" }
- {
- journal "American Mathematical Society Translations" =
- { "{\it Amer. Math. Soc. Transl.}" }
- {
- journal "Bulletin of the American Mathematical Society" =
- { "{\it Bull. Amer. Math. Soc.}" }
- {
- journal "Proceedings of the American Mathematical Society" =
- { "{\it Proc. Amer. Math. Soc.}" }
- {
- journal "Transactions of the American Mathematical Society" =
- { "{\it Trans. Amer. Math. Soc.}" }
- {
- journal "Communications of the {ACM}" =
- { "{\it Commun. {ACM}}" }
- {
- journal "{ACM} Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "{ACM} Transactions on Mathematical Software" =
- { "{\it {ACM} Trans. Math. Software}" }
- {
- journal "{ACM} {SIGNUM} Newsletter" =
- { "{\it {ACM} {SIGNUM} Newslett.}" }
- {
- journal "American Journal of Sociology" =
- { "{\it Amer. J. Sociology}" }
- {
- journal "Journal of the American Statistical Association" =
- { "{\it J. Amer. Statist. Assoc.}" }
- {
- journal "Applied Mathematics and Computation" =
- { "{\it Appl. Math. Comput.}" }
- {
- journal "American Mathematical Monthly" =
- { "{\it Amer. Math. Monthly}" }
- {
- journal "British Journal of Mathematical and Statistical Psychology" =
- { "{\it Brit. J. Math. Statist. Psych.}" }
- {
- journal "Canadian Mathematical Bulletin" =
- { "{\it Canad. Math. Bull.}" }
- {
- journal "Journal of Computational and Applied Mathematics" =
- { "{\it J. Comput. Appl. Math.}" }
- {
- journal "Journal of Computational Physics" =
- { "{\it J. Comput. Phys.}" }
- {
- journal "Computers and Structures" =
- { "{\it Comput. \& Structures}" }
- {
- journal "The Computer Journal" =
- { "{\it Comput. J.}" }
- {
- journal "Journal of Computer and System Sciences" =
- { "{\it J. Comput. System Sci.}" }
- {
- journal "Contemporary Mathematics" =
- { "{\it Contemp. Math.}" }
- {
- journal "Crelle's Journal" =
- { "{\it Crelle's J.}" }
- {
- journal "Giornale di Mathematiche" =
- { "{\it Giorn. Mat.}" }
- {
- journal "{IEEE} Transactions on Computers" =
- { "{\it {IEEE} Trans. Comput.}" }
- {
- journal "{IEEE} Transactions on Automatic Control" =
- { "{\it {IEEE} Trans. Automat. Control}" }
- {
- journal "Proceedings of the {IEEE}" =
- { "{\it Proc. {IEEE}}" }
- {
- journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
- { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
- {
- journal "{IMA} Journal of Numerical Analysis" =
- { "{\it {IMA} J. Numer. Anal.}" }
- {
- journal "Information Processing Letters" =
- { "{\it Inform. Process. Lett.}" }
- {
- journal "Journal of the Institute of Mathematics and its Applications" =
- { "{\it J. Inst. Math. Appl.}" }
- {
- journal "International Journal of Control" =
- { "{\it Internat. J. Control}" }
- {
- journal "International Journal for Numerical Methods in Engineering" =
- { "{\it Internat. J. Numer. Methods Engrg.}" }
- {
- journal "International Journal of Supercomputing Applications" =
- { "{\it Internat. J. Supercomputing Applic.}" }
- {
- journal "Journal of Research of the National Bureau of Standards" =
- { "{\it J. Res. Nat. Bur. Standards}" }
- {
- journal "Linear Algebra and its Applications" =
- { "{\it Linear Algebra Appl.}" }
- {
- journal "Journal of Mathematical Analysis and Applications" =
- { "{\it J. Math. Anal. Appl.}" }
- {
- journal "Mathematische Annalen" =
- { "{\it Math. Ann.}" }
- {
- journal "Journal of Mathematical Physics" =
- { "{\it J. Math. Phys.}" }
- {
- journal "Mathematics of Computation" =
- { "{\it Math. Comp.}" }
- {
- journal "Mathematica Scandinavica" =
- { "{\it Math. Scand.}" }
- {
- journal "Mathematical Tables and Other Aids to Computation" =
- { "{\it Math. Tables Aids Comput.}" }
- {
- journal "Numerische Mathematik" =
- { "{\it Numer. Math.}" }
- {
- journal "Pacific Journal of Mathematics" =
- { "{\it Pacific J. Math.}" }
- {
- journal "Journal of Parallel and Distributed Computing" =
- { "{\it J. Parallel and Distrib. Comput.}" }
- {
- journal "Parallel Computing" =
- { "{\it Parallel Comput.}" }
- {
- journal "Philosophical Magazine" =
- { "{\it Philos. Mag.}" }
- {
- journal "Proceedings of the National Academy of Sciences of the USA" =
- { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
- {
- journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
- { "{\it Quart. J. Math. Oxford Ser. (2)}" }
- {
- journal "Quarterly of Applied Mathematics" =
- { "{\it Quart. Appl. Math.}" }
- {
- journal "Review of the International Statisical Institute" =
- { "{\it Rev. Inst. Internat. Statist.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics" =
- { "{\it J. Soc. Indust. Appl. Math.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
- { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
- {
- journal "{SIAM} Journal on Algebraic and Discrete Methods" =
- { "{\it {SIAM} J. Algebraic Discrete Methods}" }
- {
- journal "{SIAM} Journal on Applied Mathematics" =
- { "{\it {SIAM} J. Appl. Math.}" }
- {
- journal "{SIAM} Journal on Computing" =
- { "{\it {SIAM} J. Comput.}" }
- {
- journal "{SIAM} Journal on Matrix Analysis and Applications" =
- { "{\it {SIAM} J. Matrix Anal. Appl.}" }
- {
- journal "{SIAM} Journal on Numerical Analysis" =
- { "{\it {SIAM} J. Numer. Anal.}" }
- {
- journal "{SIAM} Review" =
- { "{\it {SIAM} Rev.}" }
- {
- journal "{SIAM} Journal on Scientific and Statistical Computing" =
- { "{\it {SIAM} J. Sci. Statist. Comput.}" }
- {
- journal "Software Practice and Experience" =
- { "{\it Software Prac. Experience}" }
- {
- journal "Statistical Science" =
- { "{\it Statist. Sci.}" }
- {
- journal "{USSR} Computational Mathematics and Mathematical Physics" =
- { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of {VLSI} and Computer Systems" =
- { "{\it J. {VLSI} Comput. Syst.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
- { "{\it Z. Angew. Math. Mech.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Physik" =
- { "{\it Z. Angew. Math. Phys.}" }
- {
- journal "ACM Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "ACM Transactions on Mathematical Software" =
- { "{\it ACM Trans. Math. Software}" }
- {
- journal "ACM {SIGNUM} Newsletter" =
- { "{\it ACM {SIGNUM} Newslett.}" }
- {
- journal "IEEE Transactions on Computers" =
- { "{\it IEEE Trans. Comput.}" }
- {
- journal "IEEE Transactions on Automatic Control" =
- { "{\it IEEE Trans. Automat. Control}" }
- {
- journal "Proceedings of the IEEE" =
- { "{\it Proc. IEEE}" }
- {
- journal "IEEE Transactions on Aerospace and Electronic Systems" =
- { "{\it IEEE Trans. Aerospace Electron. Systems}" }
- {
- journal "IMA Journal of Numerical Analysis" =
- { "{\it IMA J. Numer. Anal.}" }
- {
- journal "SIAM Journal on Algebraic and Discrete Methods" =
- { "{\it SIAM J. Algebraic Discrete Methods}" }
- {
- journal "SIAM Journal on Applied Mathematics" =
- { "{\it SIAM J. Appl. Math.}" }
- {
- journal "SIAM Journal on Computing" =
- { "{\it SIAM J. Comput.}" }
- {
- journal "SIAM Journal on Matrix Analysis and Applications" =
- { "{\it SIAM J. Matrix Anal. Appl.}" }
- {
- journal "SIAM Journal on Numerical Analysis" =
- { "{\it SIAM J. Numer. Anal.}" }
- {
- journal "SIAM Review" =
- { "{\it SIAM Rev.}" }
- {
- journal "SIAM Journal on Scientific and Statistical Computing" =
- { "{\it SIAM J. Sci. Statist. Comput.}" }
- {
- journal "USSR Computational Mathematics and Mathematical Physics" =
- { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of VLSI and Computer Systems" =
- { "{\it J. VLSI Comput. Syst.}" }
- {
- journal "Communications of the ACM" =
- { "{\it Commun. ACM}" }
- %% If no match with cases needing special handling, just output journal name
- { journal emphasize.with.italic.correction }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
-
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "no number and no volume in " cite$ * warning$ "" * }
- { " " * " {" * volume * "}" * }
- if$
- }
- {
- volume empty.or.unknown
- {
- "unusual to have number, but no volume, for " cite$ * warning$
- " " * number *
- }
- { " " * volume comma " " * number * * }
- if$
- }
- if$
-
- format.day.month.year *
-}
-
-FUNCTION { format.chapter.pages }
-{
- chapter empty.or.unknown
- 'format.pages
- { type empty.or.unknown
- { "Chapter" } % gnp - changed to mixed case
- { type "t" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty.or.unknown
- {"page numbers missing in " cite$ * warning$} % gnp - added check
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION { format.in.emphasize.booktitle }
-{ % jtb: format for collections or proceedings not appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " format.emphasize.booktitle * }
- if$
-}
-
-FUNCTION { format.in.booktitle }
-{ % jtb: format for proceedings appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " booktitle * }
- if$
-}
-
-FUNCTION { format.in.ed.booktitle }
-{
- booktitle empty.or.unknown
- { "" }
- { editor empty.or.unknown
- { "In " format.emphasize.booktitle * }
- % jtb: swapped editor location
- { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
- if$
- }
- if$
-}
-
-FUNCTION { format.thesis.type }
-{ % call with default type on stack top
- type empty.or.unknown
- 'skip$ % use default type
- {
- pop$ % discard default type
- % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
- type
- }
- if$
-}
-
-FUNCTION { format.tr.number }
-{
- type empty.or.unknown
-% { "Tech. Rep." }
- { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28)
- 'type
- if$
- number empty.or.unknown
- { "t" change.case$ }
- %% LOOKS BAD: { "." * number tie.or.space.connect }
- %% Prefer "Research report RJ687." to "Research report. RJ687."
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.advisor }
-{
- advisor empty.or.unknown
- { "" }
- { "Advisor(s) " advisor * }
- 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.or.unknown
- { "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.or.unknown
- editor field.or.null author field.or.null =
- or
- { key empty.or.unknown
- { series empty.or.unknown
- { "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 * "}" *
-}
-
-FUNCTION { format.lab.names }
-{
- % 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.
-
- '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.or.unknown
- { key empty.or.unknown
- { "no key, author in " cite$ * warning$
- cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION { author.key.organization.label }
-{ % added - gnp. Provide label formatting by organization if author is null.
- author empty.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { editor empty.or.unknown
- { key empty.or.unknown
- { "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
- type$ "periodical" =
- 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.or.unknown % generate the full label citation information.
- {
- editor empty.or.unknown
- {
- organization empty.or.unknown
- {
- key empty.or.unknown
- {
- "no author, editor, organization, or key in " cite$ * warning$
- "??"
- }
- { key }
- if$
- }
- { 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 :=
-}
-
-%
-% Change by Gerry: use number-like citations for transactions
-% 2011/03/23
-%
-%FUNCTION {output.bibitem}
-%{ newline$
-% "\bibitem{" write$
-% cite$ write$
-% "}" write$
-% newline$
-% ""
-% before.all 'output.state :=
-%}
-
-FUNCTION { output.bibitem }
-{
- newline$
- "\bibitem[\protect\citeauthoryear{" write$
- calc.label write$
- sort.year write$
- "}]%" writeln
- " {" write$
- cite$ write$
- "}" writeln
- ""
- before.all 'output.state :=
-}
-
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url }
-{ % enter and return with stack empty
- %% We switch now from buffered output to output of complete lines, so
- %% that the Issue .. URL data have their own lines, and are less likely
- %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
- %% lines longer than 79 characters, backtracking to what it thinks is
- %% a break point in the string. Any such wrapping MUST be undone to
- %% prevent percent-newline from appearing in DOIs and URLs. The
- %% output data are intentionally wrapped in \showxxx{} macros at
- %% beginning of line, and that supply their own punctuation (if they
- %% are not defined to suppress output entirely), to make it easier for
- %% other software to recover them from .bbl files.
- %%
- %% It also makes it possible to later change the macro definitions
- %% to suppress particular output values, or alter their appearance.
- %%
- %% Note that it is possible for theses, technical reports, and
- %% manuals to have ISBNs, and anything that has an ISBN may also
- %% have an ISSN. When there are no values for these keys, there
- %% is no output generated for them here.
-
- "\newblock" writeln
- after.block 'output.state :=
-
- output.issue
- output.isbn
- output.coden % CODEN is functionally like ISSN, so output them sequentially
- output.issn
- output.lccn
- output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
- output.url % but ACM wants URL last
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note
- }
- if$
- ""
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note.check
- }
- if$
- ""
-}
-
-FUNCTION { article }
-{
- output.bibitem
-
- author empty.or.unknown
- {
- editor empty.or.unknown
- { "neither author and editor supplied for " cite$ * warning$ }
- { format.editors "editor" output.check }
- if$
- }
- { format.authors "author" output.check }
- if$
-
- author format.no.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- new.block
- howpublished output
-
- crossref missing$
- { format.journal.volume.number.day.month.year }
- {
- "cross reference in @Article{...} is unusual" warning$
- format.article.crossref output.nonnull
- }
- if$
- output
-
- format.pages.check.without.articleno output
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { book }
-{
- output.bibitem
- author empty.or.unknown
- { 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
- fin.sentence
- pages empty.or.unknown
- { format.bookpages } % use bookpages when pages empty
- { format.pages.check "pages" tie.or.space.connect }
- if$
- output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inbook }
-{
- output.bibitem
- author empty.or.unknown
- { 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.bookpages output
- format.chapter.pages
- "chapter and pages" output.check % jtb: moved from before publisher
- }
- {
- format.bookpages output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { incollection }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "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.bookpages output
- 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$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inproceedings }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- howpublished output.dot.space
- crossref missing$
- {
- journal missing$ % jtb: proceedings appearing in journals
- { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
- format.series output.removenospace
- format.editors.fml output % BV 2011/09/27 Moved dot to comma
- format.bvolume.noseries output
- new.sentence
- organization output
- publisher "publisher" output.check % jtb: require publisher (?)
- address "address" output.check % jtb: require address
- format.bookpages output
- }
- {
- format.in.booktitle format.city "booktitle" output.check
- format.editors.fml output
- new.sentence
- format.journal.volume.number.day.month.year output
- }
- if$
- format.articleno output
- format.pages.check.without.articleno output
- }
- {
- format.incoll.inproc.crossref output.nonnull
- format.articleno output
- format.pages.check.without.articleno output
- }
- if$
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { conference } { inproceedings }
-
-FUNCTION { manual }
-{
- output.bibitem
- author empty.or.unknown
- { editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { mastersthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- "" output.nonnull.dot.space
- output.day.month.year % Gerry - appears odd if (only) the year is 'repeated' but (appears) 'valuable' if the month/day is _also_ included - 2011/09/28
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { phdthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION {format.date}
-{ year empty.or.unknown
- { month empty.or.unknown
- {
- "" % output empty date if year/month both empty
- day empty.or.unknown
- { }
- { "there's a day but no month or year in " cite$ * warning$ }
- if$
- }
- { "there's a month but no year in " cite$ * warning$
- month
- day empty.or.unknown
- { }
- { " " * day * }
- if$
- }
- if$
- }
- { month empty.or.unknown
- {
- year % output only year if month empty
- day empty.or.unknown
- { }
- { "there's a day and year but no month in " cite$ * warning$ }
- if$
- }
- {
- month " " *
- day empty.or.unknown
- { }
- { day * ", " * }
- if$
- year *
- }
- if$
- }
- if$
-}
-
-FUNCTION {new.block.checka}
-{
- empty.or.unknown
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { periodical }
-{
- output.bibitem
- editor empty.or.unknown
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- title emphasize "title" output.check
- format.date output
- new.sentence
- publisher output
- address output
- howpublished new.block.checka
- howpublished output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { proceedings }
-{
- output.bibitem
- editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { techreport }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.btitle "title" output.check
- new.block
-% format.tr.number output % jtb: moved month ...
- format.tr.number output new.sentence % Gerry - need dot 2011/09/28
- institution "institution" output.check
- address output
- new.sentence
- format.named.pages output
- % ACM omits year at end in transactions style
- % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.sentence
- output.day.month.year % UTAH
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note.check
- fin.entry
-}
-
-FUNCTION { default.type } { misc }
-
-%%% ACM journal-style month definitions: full name if 1--5 letters, else
-%%% abbreviation of 3 or 4 characters and a dot
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"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."}
-
-
-%%% ====================================================================
-%%% I M P O R T A N T C H A N G E
-%%%
-%%% For the 2009 release of the official acm-*.bst files, there are to
-%%% be NO predefined journal abbreviations in those style files.
-%%%
-%%% ACM may later develop an official list of mappings of full journal
-%%% names of commonly-cited journals to ACM-preferred abbreviations, but
-%%% authors should consider that use of any of these commented-out
-%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
-%%% its own @String{name = "value"} definitions.
-%%%
-%%% Use of journal (and publisher and address) @String{...}
-%%% abbreviations, as opposed to explicit value assignments such as
-%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
-%%% bibliographic databases, because it makes it easier for journal
-%%% production staff to replace those definitions by publisher-preferred
-%%% abbreviations when articles are typeset for publication.
-%%%
-%%% For historical reasons, and because some of these abbreviations are
-%%% used in other (non-ACM) bibliography style files, they are preserved
-%%% here in comments. Future releases of the acm*-.bst files are likely
-%%% to remove them entirely.
-%%% ====================================================================
-%%%
-%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {al} {"Ada Lett."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {bit} {"Bit"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cj} {"Comput. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
-%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
-%%% ====================================================================
-
-READ
-
-FUNCTION { sortify }
-{
- purify$
- "l" change.case$
-}
-
-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 "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
- 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.or.unknown
- { key empty.or.unknown
- { "to sort, need author or key in " cite$ * warning$
- "" }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION { author.editor.sort }
-{
- author empty.or.unknown
- {
- editor empty.or.unknown
- {
- key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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
-
-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
- % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
- % NEW:
- author.key.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 :=
- % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
- % NEW:
- author.key.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 }
-{
- %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
- %% Set to #1 to show both 10-digit and 13-digit ISBNs.
- #1 'show-isbn-10-and-13 :=
-
- "%%% -*-BibTeX-*-" writeln
- "%%% Do NOT edit. File created by BibTeX with style" writeln
- "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
- "" writeln
-
- preamble$ empty.or.unknown
- 'skip$
- { preamble$ writeln }
- if$
- "\begin{thebibliography}{00}" writeln
- "" writeln
- "%%% ====================================================================" writeln
- "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
- "%%% customized versions of any of these macros before the \bibliography" writeln
- "%%% command. Each of them MUST provide its own final punctuation," writeln
- "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
- "%%% do not use final punctuation, in order to avoid confusing it with" writeln
- "%%% the Web address." writeln
- "%%%" writeln
- "%%% To suppress output of a particular field, define its macro to expand" writeln
- "%%% to an empty string, or better, \unskip, like this:" writeln
- "%%%" writeln
- "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
- "%%%" writeln
- "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
- "%%%" writeln
- "%%% ====================================================================" writeln
- "" writeln
-
- %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
- %% macro wrappers expand to \unskip, discarding their values and unwanted
- %% space.
- %%
- %% For other publications, prior definitions like these may be useful:
- %%
- %% Plain TeX:
- %% \def \showCODEN #1{CODEN #1.}
- %% \def \showISSN #1{ISSN #1.}
- %% \def \showLCCN #1{LCCN #1.}
- %%
- %% LaTeX:
- %% \newcommand{\showCODEN}[1]{CODEN #1.}
- %% \newcommand{\showISSN}[1]#1{ISSN #1.}
- %% \newcommand{\showLCCN}[1]{LCCN #1.}
-
- "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
- "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
- % ACM styles omit ISBNs, but they can be included by suitable definitions of
- % \showISBNx and \showISBNxiii before the .bbl file is read
- "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
- "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
- "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
- "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
- "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
- "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
- "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION { end.bib }
-{
- newline$
- "\end{thebibliography}"
- writeln
-}
-
-EXECUTE {end.bib}
-
-%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012
-
Added: trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst (rev 0)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -0,0 +1,3346 @@
+%%% -*-BibTeX-*-
+%%% ====================================================================
+%%% @BibTeX-style-file{
+%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
+%%% version = "1.18",
+%%% date = "10 July 2016",
+%%% filename = "ACM-Reference-Format.bst",
+%%% email = "beebe at math.utah.edu, beebe at acm.org,
+%%% beebe at computer.org, borisv at lk.net, murray at hq.acm.org",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "ACM Transactions bibliography style; BibTeX",
+%%% license = "public domain",
+%%% supported = "yes",
+%%% abstract = "",
+%%% }
+%%% ====================================================================
+
+% ACM BibTeX style, ACM-Reference-Format.bst
+% for BibTeX version 0.99c, LaTeX version 3.141
+% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
+% Revised 17-APRIL-2008 (Nelson)
+% Revised 13-MARCH-2011 (Boris/Gerry)
+% Revised 23-MARCH-2011 (Boris/Gerry)
+% Revised 27-MARCH-2011 (Boris/Gerry)
+% Revised 15-APRIL-2011 (Boris/Gerry)
+% Revised 27-SEPTEMBER-2011 (Boris)
+% Revised 10-JULY-2016 (Boris)
+%
+%
+% History (by Nelson)
+%
+% Based on 'acmtrans' (for ACM Journals)
+% Date: 28th April 2008
+%
+% 1. Avoid 'repeating' the 'month' values.
+% 2. Avoid incorrectly italicizing the volume number.
+% 3. Avoid non italicizing certain titles (book, inproceedings etc).
+% 4. NO series if there is NO volume.
+% 5. Sorting of reference with first surname.
+% 6. Article no added for Inproceedings.
+%
+% Date: 07th May 2008
+%
+% 1. Abbreviation list added
+%
+% 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.
+%
+% Features of the old 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.journal.volume.number.
+% - 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 at 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 at cgrg.ohio.state.edu or 71160.3141 at 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'.
+%
+%
+% Start of ACM-Reference-Format-Journals.bst
+%
+% Note: Many of the new bibentry 'fields' will only work with the
+% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability,
+% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst.
+%
+%
+ENTRY
+ { address
+ advisor
+ 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
+ % New keys recognized
+ issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
+ articleno
+ day % UTAH: needed for newspapers, weeklies, bi-weeklies
+ doi % UTAH
+ url % UTAH
+ bookpages % UTAH
+ numpages
+ lastaccessed % UTAH: used only for @Misc{...}
+ coden % UTAH
+ isbn % UTAH
+ isbn-13 % UTAH
+ issn % UTAH
+ lccn % UTAH
+ }
+ {}
+ { label.year extra.label sort.year sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
+
+INTEGERS { nameptr namesleft numnames }
+
+INTEGERS { multiresult }
+
+INTEGERS { len }
+
+INTEGERS { last.extra.num }
+
+STRINGS { s t t.org u }
+
+STRINGS { last.label next.extra }
+
+STRINGS { p1 p2 p3 page.count }
+
+FUNCTION { dump.stack.1 }
+{
+ duplicate$ "STACK[top] = [" swap$ * "]" * warning$
+}
+
+FUNCTION { dump.stack.2 }
+{
+ duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
+ swap$
+ duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
+ swap$
+}
+
+FUNCTION { empty.or.unknown }
+{
+ %% Examine the top stack entry, and push 1 if it is empty, or
+ %% consists only of whitespace, or is a string beginning with two
+ %% queries (??), and otherwise, push 0.
+ %%
+ %% This function provides a replacement for empty$, with the
+ %% convenient feature that unknown values marked by two leading
+ %% queries are treated the same as missing values, and thus, do not
+ %% appear in the output .bbl file, and yet, their presence in .bib
+ %% file(s) serves to mark values which are temporarily missing, but
+ %% are expected to be filled in eventually once more data is
+ %% obtained. The TeX User Group and BibNet bibliography archives
+ %% make extensive use of this practice.
+ %%
+ %% An empty string cannot serve the same purpose, because just as in
+ %% statistics data processing, an unknown value is not the same as an
+ %% empty value.
+ %%
+ %% At entry: stack = ... top:[string]
+ %% At exit: stack = ... top:[0 or 1]
+
+ duplicate$ empty$
+ { pop$ #1 }
+ { #1 #2 substring$ "??" = }
+ if$
+}
+
+FUNCTION { writeln }
+{
+ %% In BibTeX style files, the sequences
+ %%
+ %% ... "one" "two" output
+ %% ... "one" "two" output.xxx
+ %%
+ %% ship "one" to the output file, possibly following by punctuation,
+ %% leaving the stack with
+ %%
+ %% ... "two"
+ %%
+ %% There is thus a one-string lag in output processing that must be
+ %% carefully handled to avoid duplicating a string in the output
+ %% file. Unless otherwise noted, all output.xxx functions leave
+ %% just one new string on the stack, and that model should be born
+ %% in mind when reading or writing function code.
+ %%
+ %% BibTeX's asynchronous buffering of output from strings from the
+ %% stack is confusing because newline$ bypasses the buffer. It
+ %% would have been so much easier for newline to be a character
+ %% rather than a state of the output-in-progress.
+ %%
+ %% The documentation in btxhak.dvi is WRONG: it says
+ %%
+ %% newline$ Writes onto the bbl file what's accumulated in the
+ %% output buffer. It writes a blank line if and only
+ %% if the output buffer is empty. Since write$ does
+ %% reasonable line breaking, you should use this
+ %% function only when you want a blank line or an
+ %% explicit line break.
+ %%
+ %% write$ Pops the top (string) literal and writes it on the
+ %% output buffer (which will result in stuff being
+ %% written onto the bbl file when the buffer fills
+ %% up).
+ %%
+ %% Examination of the BibTeX source code shows that write$ does
+ %% indeed behave as claimed, but newline$ sends a newline character
+ %% directly to the output file, leaving the stack unchanged. The
+ %% first line "Writes onto ... buffer." is therefore wrong.
+ %%
+ %% The original BibTeX style files almost always use "write$ newline$"
+ %% in that order, so it makes sense to hide that pair in a private
+ %% function like this one, named after a statement in Pascal,
+ %% the programming language embedded in the BibTeX Web program.
+
+ write$ % output top-of-stack string
+ newline$ % immediate write of newline (not via stack)
+}
+
+FUNCTION { init.state.consts }
+{
+ #0 'before.all :=
+ #1 'mid.sentence :=
+ #2 'after.sentence :=
+ #3 'after.block :=
+}
+
+FUNCTION { output.nonnull }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
+ 's :=
+ output.state mid.sentence =
+ {
+ ", " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln
+ "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.dot.space }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
+ 's :=
+ output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
+ {
+ ". " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.remove }
+{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
+ 's :=
+ output.state mid.sentence =
+ {
+ " " * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output.nonnull.removenospace }
+{ % Stack in: ... R S T Stack out: ... R T File out: S
+ 's :=
+ output.state mid.sentence =
+ {
+ "" * write$
+ }
+ {
+ output.state after.block =
+ {
+ add.period$ writeln "\newblock " write$
+ }
+ {
+ output.state before.all =
+ {
+ write$
+ }
+ {
+ add.period$ " " * write$
+ }
+ if$
+ }
+ if$
+ mid.sentence 'output.state :=
+ }
+ if$
+ s
+}
+
+FUNCTION { output }
+{ % discard top token if empty, else like output.nonnull
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.dot.space }
+{ % discard top token if empty, else like output.nonnull.dot.space
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { output.removenospace }
+{ % discard top token if empty, else like output.nonnull.removenospace
+ duplicate$ empty.or.unknown
+ 'pop$
+ 'output.nonnull.removenospace
+ if$
+}
+
+FUNCTION { output.check }
+{ % like output, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull
+ if$
+}
+
+FUNCTION { output.check.dot.space }
+{ % like output.dot.space, but warn if key name on top-of-stack is not set
+ 't :=
+ duplicate$ empty.or.unknown
+ { pop$ "empty " t * " in " * cite$ * warning$ }
+ 'output.nonnull.dot.space
+ if$
+}
+
+FUNCTION { fin.block }
+{ % functionally, but not logically, identical to fin.entry
+ add.period$
+ writeln
+}
+
+FUNCTION { fin.entry }
+{
+ add.period$
+ writeln
+}
+
+FUNCTION { new.sentence }
+{ % update sentence state, with neither output nor stack change
+ output.state after.block =
+ 'skip$
+ {
+ output.state before.all =
+ 'skip$
+ { after.sentence 'output.state := }
+ if$
+ }
+ if$
+}
+
+FUNCTION { fin.sentence }
+{
+ add.period$
+ write$
+ new.sentence
+ ""
+}
+
+FUNCTION { new.block }
+{
+ output.state before.all =
+ 'skip$
+ { after.block 'output.state := }
+ if$
+}
+
+FUNCTION { output.coden } % UTAH
+{ % output non-empty CODEN as one-line sentence (stack untouched)
+ coden empty.or.unknown
+ { }
+ { "\showCODEN{" coden * "}" * writeln }
+ if$
+}
+
+FUNCTION { format.articleno }
+{
+ articleno empty.or.unknown
+ { "" }
+ {
+ numpages empty.or.unknown
+ { "articleno field, but no numpages field, in " cite$ * warning$ }
+ { }
+ if$
+ "Article \bibinfo{articleno}{" articleno * "}" *
+ }
+ if$
+}
+
+FUNCTION { format.year }
+{ % push year string or "????" onto output stack
+ %% Because year is a mandatory field, we always force SOMETHING
+ %% to be output
+ "\bibinfo{year}{"
+ year empty.or.unknown
+ { "????" }
+ { year }
+ if$
+ * "}" *
+}
+
+FUNCTION { format.day.month }
+{ % push "day month " or "month " or "" onto output stack
+ day empty.or.unknown
+ {
+ month empty.or.unknown
+ { "" }
+ { "\bibinfo{date}{" month * "} " *}
+ if$
+ }
+ {
+ month empty.or.unknown
+ { "" }
+ { "\bibinfo{date}{" day * " " * month * "} " *}
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.day.month.year } % UTAH
+{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ % acm-*.bst addition: prefix parenthesized date string with
+ % ", Article nnn "
+ articleno empty.or.unknown
+ { "" }
+ { ", " format.articleno * }
+ if$
+ " (" * format.day.month * format.year * ")" *
+}
+
+FUNCTION { output.day.month.year } % UTAH
+{ % if month is empty value, do nothing; else output stack top and
+ % leave with new top string "(MON.)" or "(DD MON.)"
+ % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
+ format.day.month.year
+ output.nonnull.remove
+}
+
+FUNCTION { strip.doi } % UTAH
+{ % Strip any Web address prefix to recover the bare DOI, leaving the
+ % result on the output stack, as recommended by CrossRef DOI
+ % documentation.
+ % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
+ % "10.1145/1534530.1534545". That is later typeset and displayed as
+ % doi:10.1145/1534530.1534545 as the LAST item in the reference list
+ % entry. Publisher Web sites wrap this with a suitable link to a real
+ % URL to resolve the DOI, and the master http://dx.doi.org/ address is
+ % preferred, since publisher-specific URLs can disappear in response
+ % to economic events. All journals are encouraged by the DOI
+ % authorities to use that typeset format and link procedures for
+ % uniformity across all publications that include DOIs in reference
+ % lists.
+ % The numeric prefix is guaranteed to start with "10.", so we use
+ % that as a test.
+ doi #1 #3 substring$ "10." =
+ { doi }
+ {
+ doi #1 #7 substring$ "http://" =
+ {
+ doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
+
+ "INTERNAL STYLE-FILE ERROR" 's :=
+
+ % search for next "/" and assign its suffix to s
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ "/" =
+ {
+ % save rest of string as true DOI (should be 10.xxxx/yyyy)
+ t #2 t text.length$ #1 - substring$ 's :=
+ "" 't := % empty string t terminates the loop
+ }
+ {
+ % discard first character and continue loop: t <= substring(t,2,last)
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ if$
+ }
+ while$
+
+ % check for valid DOI (should be 10.xxxx/yyyy)
+ s #1 #3 substring$ "10." =
+ { }
+ { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
+ if$
+
+ s % push the stripped DOI on the output stack
+
+ }
+ {
+ "unrecognized DOI value [" doi * "]" * warning$
+ doi % push the unrecognized original DOI on the output stack
+ }
+ if$
+ }
+ if$
+}
+
+%
+% Change by BV: added standard prefix to URL
+%
+FUNCTION { output.doi } % UTAH
+{ % output non-empty DOI as one-line sentence (stack untouched)
+ doi empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which then requires
+ %% manual (or automated) editing of the .bbl file to repair.
+ %% The \url{} macro strips percent-newlines, and is thus safe in
+ %% the presence of the line wrapping, but \path|...| and
+ %% \verb|...| do not.
+ "\showDOI{%" writeln
+ "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
+ }
+ if$
+}
+
+FUNCTION { output.isbn } % UTAH
+{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
+ show-isbn-10-and-13
+ {
+ %% show both 10- and 13-digit ISBNs
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ isbn-13 empty.or.unknown
+ { }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ {
+ %% show 10-digit ISBNs only if 13-digit ISBNs not available
+ isbn-13 empty.or.unknown
+ {
+ isbn empty.or.unknown
+ { }
+ {
+ "\showISBNx{" isbn * "}" * writeln
+ }
+ if$
+ }
+ {
+ "\showISBNxiii{" isbn-13 * "}" * writeln
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { output.issn } % UTAH
+{ % output non-empty ISSN as one-line sentence (stack untouched)
+ issn empty.or.unknown
+ { }
+ { "\showISSN{" issn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.issue }
+{ % output non-empty issue number as a one-line sentence (stack untouched)
+ issue empty.or.unknown
+ { }
+ { "Issue " issue * "." * writeln }
+ if$
+}
+
+FUNCTION { output.lccn } % UTAH
+{ % return with stack untouched
+ lccn empty.or.unknown
+ { }
+ { "\showLCCN{" lccn * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+FUNCTION { output.note.check } % UTAH
+{ % return with stack empty
+ note empty.or.unknown
+ { "empty note in " cite$ * warning$ }
+ { "\shownote{" note add.period$ * "}" * writeln }
+ if$
+}
+
+%
+% Changes by BV 2011/04/15. Do not output
+% url if doi is defined
+%
+FUNCTION { output.url } % UTAH
+{ % return with stack untouched
+ % output URL and associated lastaccessed fields
+ doi empty.or.unknown
+ {
+ url empty.or.unknown
+ { }
+ {
+ %% NB: We want URLs at beginning of line to reduce likelihood of
+ %% BibTeX's nasty line wrapping after column 79, which would require
+ %% manual (or automated) editing of the .bbl file to repair. However,
+ %% the \url{} macro handles the unwrapping job automatically.
+ "\showURL{%" writeln
+ lastaccessed empty.or.unknown
+ { "" }
+ { "Retrieved " lastaccessed * " from " * }
+ if$
+
+ %% The URL field may contain a semicolon-separated list of Web
+ %% addresses, and we locate and wrap each of them in \url{...}.
+ %% The simplistic approach of putting the entire list into the
+ %% macro argument is that the semicolons are typeset in a
+ %% typewriter font, and no space follows them.
+ %%
+ %% We therefore replace the original code
+ %% "\url{" * url * "}}" * writeln
+ %% with this character-at-a-time loop:
+
+ "\url{" *
+
+ url 't := % get modifiable copy of URL list
+
+ { t text.length$ }
+ {
+ t #1 #1 substring$ ";" =
+ { % then split argument at separator
+ "};" * writeln
+ "\url{"
+ }
+ { % else concatenate nonblank character to argument
+ t #1 #1 substring$ " " =
+ { }
+ { t #1 #1 substring$ * }
+ if$
+ }
+ if$
+
+ t #2 t text.length$ #1 - substring$ 't :=
+ }
+ while$
+
+ "}}" * writeln
+ }
+ if$
+ }
+ { }
+ if$
+}
+
+FUNCTION { output.year.check }
+{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
+ year empty.or.unknown
+ { "empty year in " cite$ * warning$ }
+ { write$
+ " " year * extra.label *
+ mid.sentence 'output.state :=
+ }
+ if$
+}
+
+FUNCTION { not }
+{
+ { #0 }
+ { #1 }
+ if$
+}
+
+FUNCTION { and }
+{
+ 'skip$
+ { pop$ #0 }
+ if$
+}
+
+FUNCTION { or }
+{
+ { pop$ #1 }
+ 'skip$
+ if$
+}
+
+FUNCTION { le }
+{
+ %% test whether first number is less than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 <= n2 then 1 else 0
+
+ %% "DEBUG: le " cite$ * warning$
+ > { #0 } { #1 } if$
+}
+
+FUNCTION { ge }
+{
+ %% test whether first number is greater than or equal to second number
+ %% stack in: n1 n2
+ %% stack out: if n1 >= n2 then 1 else 0
+
+ %% "DEBUG: ge " cite$ * warning$
+ < { #0 } { #1 } if$
+}
+
+FUNCTION { is.leading.digit }
+{
+ %% test whether first character of string is a digit
+ %% stack in: string
+ %% stack out: if first-char-is-digit then 1 else 0
+
+ #1 #1 substring$ % replace string by string[1:1]
+ duplicate$ % string[1:1] string[1:1]
+ chr.to.int$
+ "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
+ swap$ % 0-or-1 string[1:1]
+ chr.to.int$
+ "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
+ and
+}
+
+FUNCTION { skip.digits }
+{
+ %% skip over leading digits in string
+ %% stack in: string
+ %% stack out: rest-of-string leading-digits
+
+ %% "DEBUG: enter skip.digits " cite$ * warning$
+
+ %% dump.stack.1
+
+ duplicate$
+ 't :=
+ 't.org :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
+ t is.leading.digit
+ { t #2 t text.length$ #1 - substring$ }
+ {
+ t 'u :=
+ ""
+ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+ t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
+
+ %% "DEBUG: t.org = [" t.org * "]" * warning$
+ %% "DEBUG: u = [" u * "]" * warning$
+
+ %% dump.stack.2
+
+ %% "DEBUG: leave skip.digits " cite$ * warning$
+}
+
+FUNCTION { skip.nondigits }
+{
+ %% skip over leading nondigits in string
+ %% stack in: string
+ %% stack out: rest-of-string
+
+ %% "DEBUG: enter skip.nondigits " cite$ * warning$
+
+ 't :=
+ "" 'u :=
+
+ { t text.length$ }
+ {
+ %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
+ t is.leading.digit
+ {
+ t 'u :=
+ ""
+ }
+ { t #2 t text.length$ #1 - substring$ }
+ if$
+ 't :=
+ }
+ while$
+
+ u % rest of string
+
+ %% dump.stack.1
+ %% "DEBUG: leave skip.nondigits " cite$ * warning$
+}
+
+FUNCTION { parse.next.number }
+{
+ %% stack in: string
+ %% stack out: rest-of-string next-numeric-part-of-string
+ %% Example:
+ %% stack in: "123:1--123:59"
+ %% stack out: ":1--123:59" "123"
+
+ 's :=
+ s skip.nondigits 's :=
+ s skip.digits
+}
+
+FUNCTION { reduce.pages.to.page.count }
+{
+ %% Stack in: arbitrary-and-unused
+ %% Stack out: unchanged
+ %%
+ %% For the new-style pagination with article number and numpages or
+ %% pages, we expect to have BibTeX entries containing something like
+ %% articleno = "17",
+ %% pages = "1--23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% numpages = "23",
+ %% with output "Article 17, 23 pages",
+ %% or
+ %% articleno = "17",
+ %% pages = "17:1--17:23",
+ %% with output "Article 17, 23 pages",
+ %%
+ %% If articleno is missing or empty, then we should output "1--23",
+ %% "23" (with a warning of a missing articleno), or "17:1--17:23",
+ %% respectively.
+
+ %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
+
+ %% "DEBUG: pages = [" pages * "]" * warning$
+
+ pages
+ parse.next.number 'p1 :=
+ parse.next.number 'p2 :=
+ parse.next.number 'p3 :=
+ parse.next.number 'page.count :=
+
+ duplicate$
+ empty.or.unknown
+ { }
+ {
+ duplicate$ "unexpected trailing garbage [" swap$ *
+ "] after n:p1--n:p2 in pages = [" *
+ pages *
+ "] in " *
+ cite$ *
+ warning$
+ }
+ if$
+
+ pop$
+
+ %% "DEBUG: reduce.pages.to.page.count: "
+ %% " p1 = " p1 * *
+ %% " p2 = " p2 * *
+ %% " p3 = " p3 * *
+ %% " p4 = " page.count * *
+ %% " in " cite$ * * warning$
+
+ p1 p3 = p2 "1" = and numpages empty.or.unknown and
+ { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
+ {
+ p2 'page.count :=
+ "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
+ }
+ {
+ numpages empty.or.unknown
+ { pages }
+ { numpages }
+ if$
+ 'page.count :=
+ }
+ if$
+
+ %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
+}
+
+FUNCTION { new.block.checkb }
+{ % issue a new.block only if at least one of top two stack strings is not empty
+ empty.or.unknown
+ swap$ empty.or.unknown
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { field.or.null }
+{ % convert empty value to null string, else return value
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ 'skip$
+ if$
+}
+
+FUNCTION { emphasize }
+{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "}" * }
+ if$
+}
+
+FUNCTION { emphasize.with.italic.correction }
+{ % convert empty string to null string, or emphasize with a trailing italic correction
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{\em " swap$ * "\/}" * }
+ if$
+}
+
+FUNCTION { comma }
+{ % convert empty string to null string, or brace string and add trailing comma
+ duplicate$ empty.or.unknown
+ { pop$ "" }
+ { "{" swap$ * "}," * }
+ if$
+}
+
+FUNCTION { format.names }
+{
+ % 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.
+
+ 's :=
+ #1 'nameptr := % nameptr = 1;
+ s num.names$ 'numnames := % numnames = num.name$(s);
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { nameptr #1 =
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
+ {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ {"\bibinfo{person}{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
+ if$
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{\sc 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 { 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 > }
+
+ {
+ "\bibinfo{person}{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ numnames #2 >
+ { "," * }
+ 'skip$
+ if$
+ t "{others}" =
+ { " {et~al\mbox{.}}" * }
+ { " {and} " * t * }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr := % nameptr += 1;
+ namesleft #1 - 'namesleft := % namesleft =- 1;
+ }
+ while$
+}
+
+FUNCTION { format.authors }
+{
+ author empty.or.unknown
+ { "" }
+ {
+ "\bibfield{author}{"
+ author format.names add.period$ * "}" *} % jtb: add period if none before
+ if$
+}
+
+FUNCTION { format.key }
+{
+ empty.or.unknown
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION { format.no.key }
+{
+ empty.or.unknown
+ { "" }
+ { "" }
+ if$
+}
+
+FUNCTION { format.editors.fml }
+{
+ % 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.
+
+ editor empty.or.unknown
+ { "" }
+ {
+ editor format.names.fml editor num.names$ #1 >
+ { " (Eds.)" * }
+ { " (Ed.)" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.editors }
+{ % format editor names for use in labels, last names first.
+ editor empty.or.unknown
+ { "" }
+ {
+ "\bibfield{editor}{"
+ editor format.names
+ * "}" *
+ editor num.names$ #1 >
+ { " (Eds.)." * }
+ { " (Ed.)." * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.articletitle }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\showarticletitle{" title * "}" * }
+ % Use this for downcase title style:
+ % { \showarticletitle{" title "t" change.case$ * "}" * }
+ if$
+}
+
+FUNCTION { format.title }
+{
+ title empty.or.unknown
+ { "" }
+ % Use this to preserve lettercase in titles:
+ { "\bibinfo{title}{" title * "}" * }
+ % Use this for downcase title style:
+ % { title "t" change.case$ }
+ if$
+}
+
+FUNCTION { n.dashify }
+{
+ 't :=
+ ""
+ { t empty.or.unknown 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 }
+{
+ "\bibinfo{booktitle}{"
+ edition empty.or.unknown
+ { title emphasize }
+ { title empty.or.unknown
+ { title emphasize } % jtb: what is this supposed to do ?!?
+ { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
+ if$
+ }
+ if$
+ * "}" *
+}
+
+FUNCTION { format.emphasize.booktitle }
+{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
+ "\bibinfo{booktitle}{"
+ edition empty.or.unknown
+ { booktitle emphasize }
+ { booktitle empty.or.unknown
+ { "" }
+ { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
+ if$
+ }
+ if$
+ * "}" *
+}
+
+FUNCTION { format.city }
+{
+ % 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
+
+ duplicate$ empty.or.unknown
+ { }
+ {
+ city empty.or.unknown
+ {
+ date empty.or.unknown
+ { }
+ { " (" * date * ")" * }
+ if$
+ }
+ {
+ date empty.or.unknown
+ { " (" * city * ")" * }
+ { " (" * city * ", " * date * ")" * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION { tie.or.space.connect }
+{
+ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$ * *
+}
+
+FUNCTION { either.or.check }
+{
+ empty.or.unknown
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+
+FUNCTION { format.bvolume }
+{
+ % jtb: If there is a series, this is added and the volume trails after it.
+ % jtb: Otherwise, "Vol" is Capitalized.
+
+ volume empty.or.unknown
+ { "" }
+ {
+ "\bibinfo{volume}{"
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ * "}" *
+ }
+ if$
+}
+
+FUNCTION { format.bvolume.noseries }
+{
+ volume empty.or.unknown
+ { "" }
+ {
+ "\bibinfo{volume}{"
+ series empty.or.unknown
+ { "Vol." volume tie.or.space.connect}
+ { "Vol." volume tie.or.space.connect}
+% { series ", " * "Vol." volume tie.or.space.connect *}
+ if$
+ "volume and number" number either.or.check
+ * "}" *
+ }
+ if$
+}
+
+FUNCTION { format.series }
+{
+ series empty.or.unknown
+ {""}
+ {" \bibinfo{series}{{\em (" * series ")}}" *}
+ if$
+}
+
+FUNCTION { format.number.series }
+{
+ volume empty.or.unknown
+ {
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "" }
+ {
+ series empty.or.unknown
+ { "" }
+ { " \bibinfo{series}{(" series * ")}" * }
+ if$
+ }
+ if$
+ } % { series field.or.null }
+ {
+ output.state mid.sentence =
+ { "Number" } % gnp - changed to mixed case always
+ { "Number" }
+ if$
+ number tie.or.space.connect series empty.or.unknown
+ { "there's a number but no series in " cite$ * warning$ }
+ { " in \bibinfo{series}{" * series * "}" * }
+ if$
+ }
+ if$
+ }
+ {
+ ""
+ }
+ if$
+}
+
+FUNCTION { multi.page.check }
+{
+ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty.or.unknown 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.or.unknown
+ { "" }
+ { "\bibinfo{pages}{"
+ pages multi.page.check
+ { pages n.dashify } % gnp - removed () % jtb: removed pp.
+ { pages }
+ if$
+ * "}" *
+ }
+ if$
+}
+
+FUNCTION { format.pages.check.without.articleno }
+{ %% format pages field only if articleno is absent
+ %% Stack out: pages-specification
+ numpages missing$ pages missing$ and
+ { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
+ { }
+ if$
+
+ articleno empty.or.unknown
+ {
+ pages missing$
+ { numpages }
+ { format.pages }
+ if$
+ }
+ { "" }
+ if$
+}
+
+FUNCTION { format.pages.check }
+{
+ pages empty.or.unknown
+ { "page numbers missing in " cite$ * warning$ "" }
+ { pages n.dashify }
+ if$
+}
+
+FUNCTION { format.bookpages }
+{
+ bookpages empty.or.unknown
+ { "" }
+ { bookpages "book pages" tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.named.pages }
+{
+ pages empty.or.unknown
+ { "" }
+ { format.pages "pages" tie.or.space.connect }
+ if$
+}
+
+%
+% Changed by Boris Veytsman, 2011-03-13
+% Now the word "pages" is printed even if
+% there field pages is not empty.
+%
+
+FUNCTION { format.page.count }
+{
+ page.count empty.or.unknown
+ { "" }
+ {
+ articleno empty.or.unknown
+ { "numpages field, but no articleno field, in " cite$ * warning$ }
+ { }
+ if$
+ page.count "pages" tie.or.space.connect
+ }
+ if$
+}
+
+FUNCTION { format.articleno.numpages }
+{
+ %% There are seven possible outputs, depending on which fields are set.
+ %%
+ %% These four are handled here:
+ %%
+ %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
+ %% articleno, numpages -> "Article articleno-value, numpages-value pages"
+ %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
+ %% articleno -> "Article articleno-value" and warn about missing numpages
+ %%
+ %% The remaining three have already been handled by
+ %% format.pages.check.without.articleno:
+ %%
+ %% numpages, pages -> "pages-value"
+ %% numpages -> "numpages-value"
+ %% pages -> "pages-value"
+
+ articleno empty.or.unknown
+ {
+ numpages empty.or.unknown
+ { }
+ { "require articleno with numpages field in " cite$ * warning$ }
+ if$
+ ""
+ }
+ {
+ numpages empty.or.unknown
+ {
+ pages empty.or.unknown
+ {
+ "require pages or numpages fields with articleno field in " cite$ * warning$
+ "" 'page.count :=
+ }
+ { reduce.pages.to.page.count }
+ if$
+ }
+ { numpages 'page.count := }
+ if$
+
+ %% The Article number is now handled in format.day.month.year because
+ %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
+ %% over "Digital Libraries 12, 3 (July 2008), Article 5"
+ %% format.articleno output
+ format.page.count
+ }
+ if$
+}
+
+FUNCTION { format.journal.volume.number.day.month.year }
+{
+ % By Young (and Spencer)
+ % GNP - fixed bugs with missing volume, number, and/or pages
+ %
+ % Format journal, volume, number, pages for article types.
+ %
+ journal empty.or.unknown
+ { "no journal in " cite$ * warning$
+ "" }
+% { journal emphasize.with.italic.correction }
+ {
+ "\bibinfo{journal}{"
+ journal "Journal of the ACM" =
+ { "{\it J. ACM}" }
+ {
+ journal "American Mathematical Society Translations" =
+ { "{\it Amer. Math. Soc. Transl.}" }
+ {
+ journal "Bulletin of the American Mathematical Society" =
+ { "{\it Bull. Amer. Math. Soc.}" }
+ {
+ journal "Proceedings of the American Mathematical Society" =
+ { "{\it Proc. Amer. Math. Soc.}" }
+ {
+ journal "Transactions of the American Mathematical Society" =
+ { "{\it Trans. Amer. Math. Soc.}" }
+ {
+ journal "Communications of the {ACM}" =
+ { "{\it Commun. {ACM}}" }
+ {
+ journal "{ACM} Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "{ACM} Transactions on Mathematical Software" =
+ { "{\it {ACM} Trans. Math. Software}" }
+ {
+ journal "{ACM} {SIGNUM} Newsletter" =
+ { "{\it {ACM} {SIGNUM} Newslett.}" }
+ {
+ journal "American Journal of Sociology" =
+ { "{\it Amer. J. Sociology}" }
+ {
+ journal "Journal of the American Statistical Association" =
+ { "{\it J. Amer. Statist. Assoc.}" }
+ {
+ journal "Applied Mathematics and Computation" =
+ { "{\it Appl. Math. Comput.}" }
+ {
+ journal "American Mathematical Monthly" =
+ { "{\it Amer. Math. Monthly}" }
+ {
+ journal "British Journal of Mathematical and Statistical Psychology" =
+ { "{\it Brit. J. Math. Statist. Psych.}" }
+ {
+ journal "Canadian Mathematical Bulletin" =
+ { "{\it Canad. Math. Bull.}" }
+ {
+ journal "Journal of Computational and Applied Mathematics" =
+ { "{\it J. Comput. Appl. Math.}" }
+ {
+ journal "Journal of Computational Physics" =
+ { "{\it J. Comput. Phys.}" }
+ {
+ journal "Computers and Structures" =
+ { "{\it Comput. \& Structures}" }
+ {
+ journal "The Computer Journal" =
+ { "{\it Comput. J.}" }
+ {
+ journal "Journal of Computer and System Sciences" =
+ { "{\it J. Comput. System Sci.}" }
+ {
+ journal "Contemporary Mathematics" =
+ { "{\it Contemp. Math.}" }
+ {
+ journal "Crelle's Journal" =
+ { "{\it Crelle's J.}" }
+ {
+ journal "Giornale di Mathematiche" =
+ { "{\it Giorn. Mat.}" }
+ {
+ journal "{IEEE} Transactions on Computers" =
+ { "{\it {IEEE} Trans. Comput.}" }
+ {
+ journal "{IEEE} Transactions on Automatic Control" =
+ { "{\it {IEEE} Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the {IEEE}" =
+ { "{\it Proc. {IEEE}}" }
+ {
+ journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
+ { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
+ {
+ journal "{IMA} Journal of Numerical Analysis" =
+ { "{\it {IMA} J. Numer. Anal.}" }
+ {
+ journal "Information Processing Letters" =
+ { "{\it Inform. Process. Lett.}" }
+ {
+ journal "Journal of the Institute of Mathematics and its Applications" =
+ { "{\it J. Inst. Math. Appl.}" }
+ {
+ journal "International Journal of Control" =
+ { "{\it Internat. J. Control}" }
+ {
+ journal "International Journal for Numerical Methods in Engineering" =
+ { "{\it Internat. J. Numer. Methods Engrg.}" }
+ {
+ journal "International Journal of Supercomputing Applications" =
+ { "{\it Internat. J. Supercomputing Applic.}" }
+ {
+ journal "Journal of Research of the National Bureau of Standards" =
+ { "{\it J. Res. Nat. Bur. Standards}" }
+ {
+ journal "Linear Algebra and its Applications" =
+ { "{\it Linear Algebra Appl.}" }
+ {
+ journal "Journal of Mathematical Analysis and Applications" =
+ { "{\it J. Math. Anal. Appl.}" }
+ {
+ journal "Mathematische Annalen" =
+ { "{\it Math. Ann.}" }
+ {
+ journal "Journal of Mathematical Physics" =
+ { "{\it J. Math. Phys.}" }
+ {
+ journal "Mathematics of Computation" =
+ { "{\it Math. Comp.}" }
+ {
+ journal "Mathematica Scandinavica" =
+ { "{\it Math. Scand.}" }
+ {
+ journal "Mathematical Tables and Other Aids to Computation" =
+ { "{\it Math. Tables Aids Comput.}" }
+ {
+ journal "Numerische Mathematik" =
+ { "{\it Numer. Math.}" }
+ {
+ journal "Pacific Journal of Mathematics" =
+ { "{\it Pacific J. Math.}" }
+ {
+ journal "Journal of Parallel and Distributed Computing" =
+ { "{\it J. Parallel and Distrib. Comput.}" }
+ {
+ journal "Parallel Computing" =
+ { "{\it Parallel Comput.}" }
+ {
+ journal "Philosophical Magazine" =
+ { "{\it Philos. Mag.}" }
+ {
+ journal "Proceedings of the National Academy of Sciences of the USA" =
+ { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
+ {
+ journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
+ { "{\it Quart. J. Math. Oxford Ser. (2)}" }
+ {
+ journal "Quarterly of Applied Mathematics" =
+ { "{\it Quart. Appl. Math.}" }
+ {
+ journal "Review of the International Statisical Institute" =
+ { "{\it Rev. Inst. Internat. Statist.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics" =
+ { "{\it J. Soc. Indust. Appl. Math.}" }
+ {
+ journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
+ { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
+ {
+ journal "{SIAM} Journal on Algebraic and Discrete Methods" =
+ { "{\it {SIAM} J. Algebraic Discrete Methods}" }
+ {
+ journal "{SIAM} Journal on Applied Mathematics" =
+ { "{\it {SIAM} J. Appl. Math.}" }
+ {
+ journal "{SIAM} Journal on Computing" =
+ { "{\it {SIAM} J. Comput.}" }
+ {
+ journal "{SIAM} Journal on Matrix Analysis and Applications" =
+ { "{\it {SIAM} J. Matrix Anal. Appl.}" }
+ {
+ journal "{SIAM} Journal on Numerical Analysis" =
+ { "{\it {SIAM} J. Numer. Anal.}" }
+ {
+ journal "{SIAM} Review" =
+ { "{\it {SIAM} Rev.}" }
+ {
+ journal "{SIAM} Journal on Scientific and Statistical Computing" =
+ { "{\it {SIAM} J. Sci. Statist. Comput.}" }
+ {
+ journal "Software Practice and Experience" =
+ { "{\it Software Prac. Experience}" }
+ {
+ journal "Statistical Science" =
+ { "{\it Statist. Sci.}" }
+ {
+ journal "{USSR} Computational Mathematics and Mathematical Physics" =
+ { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of {VLSI} and Computer Systems" =
+ { "{\it J. {VLSI} Comput. Syst.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
+ { "{\it Z. Angew. Math. Mech.}" }
+ {
+ journal "Zeitschrift fur Angewandte Mathematik und Physik" =
+ { "{\it Z. Angew. Math. Phys.}" }
+ {
+ journal "ACM Computing Surveys" =
+ { "{\it Comput. Surveys}" }
+ {
+ journal "ACM Transactions on Mathematical Software" =
+ { "{\it ACM Trans. Math. Software}" }
+ {
+ journal "ACM {SIGNUM} Newsletter" =
+ { "{\it ACM {SIGNUM} Newslett.}" }
+ {
+ journal "IEEE Transactions on Computers" =
+ { "{\it IEEE Trans. Comput.}" }
+ {
+ journal "IEEE Transactions on Automatic Control" =
+ { "{\it IEEE Trans. Automat. Control}" }
+ {
+ journal "Proceedings of the IEEE" =
+ { "{\it Proc. IEEE}" }
+ {
+ journal "IEEE Transactions on Aerospace and Electronic Systems" =
+ { "{\it IEEE Trans. Aerospace Electron. Systems}" }
+ {
+ journal "IMA Journal of Numerical Analysis" =
+ { "{\it IMA J. Numer. Anal.}" }
+ {
+ journal "SIAM Journal on Algebraic and Discrete Methods" =
+ { "{\it SIAM J. Algebraic Discrete Methods}" }
+ {
+ journal "SIAM Journal on Applied Mathematics" =
+ { "{\it SIAM J. Appl. Math.}" }
+ {
+ journal "SIAM Journal on Computing" =
+ { "{\it SIAM J. Comput.}" }
+ {
+ journal "SIAM Journal on Matrix Analysis and Applications" =
+ { "{\it SIAM J. Matrix Anal. Appl.}" }
+ {
+ journal "SIAM Journal on Numerical Analysis" =
+ { "{\it SIAM J. Numer. Anal.}" }
+ {
+ journal "SIAM Review" =
+ { "{\it SIAM Rev.}" }
+ {
+ journal "SIAM Journal on Scientific and Statistical Computing" =
+ { "{\it SIAM J. Sci. Statist. Comput.}" }
+ {
+ journal "USSR Computational Mathematics and Mathematical Physics" =
+ { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
+ {
+ journal "Journal of VLSI and Computer Systems" =
+ { "{\it J. VLSI Comput. Syst.}" }
+ {
+ journal "Communications of the ACM" =
+ { "{\it Commun. ACM}" }
+ %% If no match with cases needing special handling, just output journal name
+ { journal emphasize.with.italic.correction }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ * "}" *
+ }
+ if$
+
+ number empty.or.unknown
+ {
+ volume empty.or.unknown
+ { "no number and no volume in " cite$ * warning$ "" * }
+ { " " * " \bibinfo{volume}{" * volume * "}" * }
+ if$
+ }
+ {
+ volume empty.or.unknown
+ {
+ "unusual to have number, but no volume, for " cite$ * warning$
+ " \bibinfo{volume}{" * number * "}" *
+ }
+ { " \bibinfo{volume}{" * volume comma " " * number * * "}" *}
+ if$
+ }
+ if$
+
+ format.day.month.year *
+}
+
+FUNCTION { format.chapter.pages }
+{
+ chapter empty.or.unknown
+ 'format.pages
+ { type empty.or.unknown
+ { "Chapter" } % gnp - changed to mixed case
+ { type "t" change.case$ }
+ if$
+ chapter tie.or.space.connect
+ pages empty.or.unknown
+ {"page numbers missing in " cite$ * warning$} % gnp - added check
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.in.emphasize.booktitle }
+{ % jtb: format for collections or proceedings not appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In " format.emphasize.booktitle * }
+ if$
+}
+
+FUNCTION { format.in.booktitle }
+{ % jtb: format for proceedings appearing in a journal
+ booktitle empty.or.unknown
+ { "" }
+ { "In \bibinfo{booktitle}{" booktitle * "}" * }
+ if$
+}
+
+FUNCTION { format.in.ed.booktitle }
+{
+ booktitle empty.or.unknown
+ { "" }
+ { editor empty.or.unknown
+ { "In " format.emphasize.booktitle * }
+ % jtb: swapped editor location
+ { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
+ if$
+ }
+ if$
+}
+
+FUNCTION { format.thesis.type }
+{ % call with default type on stack top
+ type empty.or.unknown
+ 'skip$ % use default type
+ {
+ pop$ % discard default type
+ % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
+ type
+ }
+ if$
+}
+
+FUNCTION { format.tr.number }
+{
+ type empty.or.unknown
+% { "Tech. Rep." }
+ { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28)
+ 'type
+ if$
+ number empty.or.unknown
+ { "t" change.case$ }
+ %% LOOKS BAD: { "." * number tie.or.space.connect }
+ %% Prefer "Research report RJ687." to "Research report. RJ687."
+ { number tie.or.space.connect }
+ if$
+}
+
+FUNCTION { format.advisor }
+{
+ advisor empty.or.unknown
+ { "" }
+ { "Advisor(s) " advisor * }
+ 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.or.unknown
+ { "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.or.unknown
+ editor field.or.null author field.or.null =
+ or
+ { key empty.or.unknown
+ { series empty.or.unknown
+ { "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 * "}" *
+}
+
+FUNCTION { format.lab.names }
+{
+ % 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.
+
+ '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.or.unknown
+ { key empty.or.unknown
+ { "no key, author in " cite$ * warning$
+ cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION { author.key.organization.label }
+{ % added - gnp. Provide label formatting by organization if author is null.
+ author empty.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "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.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "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.or.unknown
+ { editor empty.or.unknown
+ { key empty.or.unknown
+ { "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
+ type$ "periodical" =
+ 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.or.unknown % generate the full label citation information.
+ {
+ editor empty.or.unknown
+ {
+ organization empty.or.unknown
+ {
+ key empty.or.unknown
+ {
+ "no author, editor, organization, or key in " cite$ * warning$
+ "??"
+ }
+ { key }
+ if$
+ }
+ { 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$
+ "}]%" writeln
+ " {" write$
+ cite$ write$
+ "}" writeln
+ ""
+ before.all 'output.state :=
+}
+
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url }
+{ % enter and return with stack empty
+ %% We switch now from buffered output to output of complete lines, so
+ %% that the Issue .. URL data have their own lines, and are less likely
+ %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
+ %% lines longer than 79 characters, backtracking to what it thinks is
+ %% a break point in the string. Any such wrapping MUST be undone to
+ %% prevent percent-newline from appearing in DOIs and URLs. The
+ %% output data are intentionally wrapped in \showxxx{} macros at
+ %% beginning of line, and that supply their own punctuation (if they
+ %% are not defined to suppress output entirely), to make it easier for
+ %% other software to recover them from .bbl files.
+ %%
+ %% It also makes it possible to later change the macro definitions
+ %% to suppress particular output values, or alter their appearance.
+ %%
+ %% Note that it is possible for theses, technical reports, and
+ %% manuals to have ISBNs, and anything that has an ISBN may also
+ %% have an ISSN. When there are no values for these keys, there
+ %% is no output generated for them here.
+
+ "\newblock" writeln
+ after.block 'output.state :=
+
+ output.issue
+ output.isbn
+ output.coden % CODEN is functionally like ISSN, so output them sequentially
+ output.issn
+ output.lccn
+ output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
+ output.url % but ACM wants URL last
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note
+ }
+ if$
+ ""
+}
+
+FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
+{ % enter with stack empty, return with empty string on stack
+ output.issue.doi.coden.isxn.lccn.url
+ note empty.or.unknown
+ { }
+ {
+ "\newblock" writeln
+ output.note.check
+ }
+ if$
+ ""
+}
+
+FUNCTION { article }
+{
+ output.bibitem
+
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ { "neither author and editor supplied for " cite$ * warning$ }
+ { format.editors "editor" output.check }
+ if$
+ }
+ { format.authors "author" output.check }
+ if$
+
+ author format.no.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ new.block
+ howpublished output
+
+ crossref missing$
+ { format.journal.volume.number.day.month.year }
+ {
+ "cross reference in @Article{...} is unusual" warning$
+ format.article.crossref output.nonnull
+ }
+ if$
+ output
+
+ format.pages.check.without.articleno output
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { book }
+{
+ output.bibitem
+ author empty.or.unknown
+ { 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
+ fin.sentence
+ pages empty.or.unknown
+ { format.bookpages } % use bookpages when pages empty
+ { format.pages.check "pages" tie.or.space.connect }
+ if$
+ output
+ }
+ { new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ 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
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inbook }
+{
+ output.bibitem
+ author empty.or.unknown
+ { 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.bookpages output
+ format.chapter.pages
+ "chapter and pages" output.check % jtb: moved from before publisher
+ }
+ {
+ format.bookpages output
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { incollection }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "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.bookpages output
+ 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$
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { inproceedings }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.articletitle "title" output.check
+ howpublished output.dot.space
+ crossref missing$
+ {
+ journal missing$ % jtb: proceedings appearing in journals
+ { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
+ format.series output.removenospace
+ format.editors.fml output % BV 2011/09/27 Moved dot to comma
+ format.bvolume.noseries output
+ new.sentence
+ organization output
+ publisher "publisher" output.check % jtb: require publisher (?)
+ address "address" output.check % jtb: require address
+ format.bookpages output
+ }
+ {
+ format.in.booktitle format.city "booktitle" output.check
+ format.editors.fml output
+ new.sentence
+ format.journal.volume.number.day.month.year output
+ }
+ if$
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ {
+ format.incoll.inproc.crossref output.nonnull
+ format.articleno output
+ format.pages.check.without.articleno output
+ }
+ if$
+ format.articleno.numpages output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { conference } { inproceedings }
+
+FUNCTION { manual }
+{
+ output.bibitem
+ author empty.or.unknown
+ { editor empty.or.unknown
+ { 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
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { mastersthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ 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
+ "" output.nonnull.dot.space
+ output.day.month.year % Gerry - appears odd if (only) the year is 'repeated' but (appears) 'valuable' if the month/day is _also_ included - 2011/09/28
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { phdthesis }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
+ new.block
+ "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
+ school "school" output.check
+ address output
+ new.block
+ format.advisor output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION {format.date}
+{ year empty.or.unknown
+ { month empty.or.unknown
+ {
+ "" % output empty date if year/month both empty
+ day empty.or.unknown
+ { }
+ { "there's a day but no month or year in " cite$ * warning$ }
+ if$
+ }
+ { "there's a month but no year in " cite$ * warning$
+ month
+ day empty.or.unknown
+ { }
+ { " " * day * }
+ if$
+ }
+ if$
+ }
+ { month empty.or.unknown
+ {
+ year % output only year if month empty
+ day empty.or.unknown
+ { }
+ { "there's a day and year but no month in " cite$ * warning$ }
+ if$
+ }
+ {
+ month " " *
+ day empty.or.unknown
+ { }
+ { day * ", " * }
+ if$
+ year *
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {new.block.checka}
+{
+ empty.or.unknown
+ 'skip$
+ 'new.block
+ if$
+}
+
+FUNCTION { periodical }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { organization output }
+ { format.editors output.nonnull }
+ if$
+ new.block
+ title emphasize "title" output.check
+ format.date output
+ new.sentence
+ publisher output
+ address output
+ howpublished new.block.checka
+ howpublished output
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { proceedings }
+{
+ output.bibitem
+ editor empty.or.unknown
+ { 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
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ fin.entry
+}
+
+FUNCTION { techreport }
+{
+ output.bibitem
+ format.authors "author" output.check
+ author format.key output % added
+ output.year.check % added
+ new.block
+ format.btitle "title" output.check
+ new.block
+% format.tr.number output % jtb: moved month ...
+ format.tr.number output new.sentence % Gerry - need dot 2011/09/28
+ institution "institution" output.check
+ address output
+ new.sentence
+ format.named.pages output
+ % ACM omits year at end in transactions style
+ % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note
+ 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
+ fin.sentence
+ output.day.month.year % UTAH
+ fin.block
+ output.issue.doi.coden.isxn.lccn.url.note.check
+ fin.entry
+}
+
+FUNCTION { default.type } { misc }
+
+%%% ACM journal-style month definitions: full name if 1--5 letters, else
+%%% abbreviation of 3 or 4 characters and a dot
+
+MACRO {jan} {"Jan."}
+
+MACRO {feb} {"Feb."}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"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."}
+
+
+%%% ====================================================================
+%%% I M P O R T A N T C H A N G E
+%%%
+%%% For the 2009 release of the official acm-*.bst files, there are to
+%%% be NO predefined journal abbreviations in those style files.
+%%%
+%%% ACM may later develop an official list of mappings of full journal
+%%% names of commonly-cited journals to ACM-preferred abbreviations, but
+%%% authors should consider that use of any of these commented-out
+%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
+%%% its own @String{name = "value"} definitions.
+%%%
+%%% Use of journal (and publisher and address) @String{...}
+%%% abbreviations, as opposed to explicit value assignments such as
+%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
+%%% bibliographic databases, because it makes it easier for journal
+%%% production staff to replace those definitions by publisher-preferred
+%%% abbreviations when articles are typeset for publication.
+%%%
+%%% For historical reasons, and because some of these abbreviations are
+%%% used in other (non-ACM) bibliography style files, they are preserved
+%%% here in comments. Future releases of the acm*-.bst files are likely
+%%% to remove them entirely.
+%%% ====================================================================
+%%%
+%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {al} {"Ada Lett."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {bit} {"Bit"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cj} {"Comput. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
+%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
+%%% DEPRECATED:
+%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
+%%% ====================================================================
+
+READ
+
+FUNCTION { sortify }
+{
+ purify$
+ "l" change.case$
+}
+
+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 "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
+ 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.or.unknown
+ { key empty.or.unknown
+ { "to sort, need author or key in " cite$ * warning$
+ "" }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+
+FUNCTION { author.editor.sort }
+{
+ author empty.or.unknown
+ {
+ editor empty.or.unknown
+ {
+ key empty.or.unknown
+ { "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.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "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.or.unknown
+ { organization empty.or.unknown
+ { key empty.or.unknown
+ { "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
+
+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
+ % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.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 :=
+ % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
+ % NEW:
+ author.key.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 }
+{
+ %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
+ %% Set to #1 to show both 10-digit and 13-digit ISBNs.
+ #1 'show-isbn-10-and-13 :=
+
+ "%%% -*-BibTeX-*-" writeln
+ "%%% Do NOT edit. File created by BibTeX with style" writeln
+ "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
+ "" writeln
+
+ preamble$ empty.or.unknown
+ 'skip$
+ { preamble$ writeln }
+ if$
+ "\begin{thebibliography}{00}" writeln
+ "" writeln
+ "%%% ====================================================================" writeln
+ "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
+ "%%% customized versions of any of these macros before the \bibliography" writeln
+ "%%% command. Each of them MUST provide its own final punctuation," writeln
+ "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
+ "%%% do not use final punctuation, in order to avoid confusing it with" writeln
+ "%%% the Web address." writeln
+ "%%%" writeln
+ "%%% To suppress output of a particular field, define its macro to expand" writeln
+ "%%% to an empty string, or better, \unskip, like this:" writeln
+ "%%%" writeln
+ "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
+ "%%%" writeln
+ "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
+ "%%%" writeln
+ "%%% ====================================================================" writeln
+ "" writeln
+
+ %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
+ %% macro wrappers expand to \unskip, discarding their values and unwanted
+ %% space.
+ %%
+ %% For other publications, prior definitions like these may be useful:
+ %%
+ %% Plain TeX:
+ %% \def \showCODEN #1{CODEN #1.}
+ %% \def \showISSN #1{ISSN #1.}
+ %% \def \showLCCN #1{LCCN #1.}
+ %%
+ %% LaTeX:
+ %% \newcommand{\showCODEN}[1]{CODEN #1.}
+ %% \newcommand{\showISSN}[1]#1{ISSN #1.}
+ %% \newcommand{\showLCCN}[1]{LCCN #1.}
+
+ "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
+ "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
+ % ACM styles omit ISBNs, but they can be included by suitable definitions of
+ % \showISBNx and \showISBNxiii before the .bbl file is read
+ "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
+ "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
+ "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
+ "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
+ "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
+ "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
+ "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
+ "% The following commands are used for tagged output and should be " writeln
+ "% invisible to TeX" writeln
+ "\providecommand\bibfield[2]{#2}" writeln
+ "\providecommand\bibinfo[2]{#2}" writeln
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION { end.bib }
+{
+ newline$
+ "\end{thebibliography}"
+ writeln
+}
+
+EXECUTE {end.bib}
+
+
+
Property changes on: trunk/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Deleted: trunk/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,3352 +0,0 @@
-%%% -*-BibTeX-*-
-%%% ====================================================================
-%%% @BibTeX-style-file{
-%%% author = "Nelson H. F. Beebe, Boris Veytsman and Gerald Murray",
-%%% version = "1.00",
-%%% date = "18 January 2012",
-%%% time = "11:48 EST",
-%%% filename = "ACM-Reference-Format-Journals.bst",
-%%% address = "University of Utah
-%%% Department of Mathematics, 110 LCB
-%%% 155 S 1400 E RM 233
-%%% Salt Lake City, UT 84112-0090
-%%% USA",
-%%% telephone = "+1 801 581 5254",
-%%% FAX = "+1 801 581 4148",
-%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "available here: http://www.acm.org/publications/latex_style/CRC-journals.txt"
-%%% email = "beebe at math.utah.edu, beebe at acm.org,
-%%% beebe at computer.org, borisv at lk.net, murray at hq.acm.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "ACM Transactions bibliography style; BibTeX",
-%%% license = "public domain",
-%%% supported = "yes",
-%%% abstract = "",
-%%% docstring = "The checksum field, above, is produced by WinMD5Free (v1.20)
-%%% available from http://www.winmd5.com/?rid=winmd5,"
-%%% }
-%%% ====================================================================
-
-% "SIGCHI Format" BibTeX style, Forked from ACM-Reference-Format-Journals.bst
-% Modifications 13-FEBURARY-2015 (David Ayman Shamma)
-
-% "ACM Transactions" BibTeX style, ACM-Reference-Format-Journals.bst
-% for BibTeX version 0.99c, LaTeX version 3.141
-% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
-% Revised 17-APRIL-2008 (Nelson)
-% Revised 13-MARCH-2011 (Boris/Gerry)
-% Revised 23-MARCH-2011 (Boris/Gerry)
-% Revised 27-MARCH-2011 (Boris/Gerry)
-% Revised 15-APRIL-2011 (Boris/Gerry)
-% Revised 27-SEPTEMBER-2011 (Boris)
-%
-%
-% History (by Nelson)
-%
-% Based on 'acmtrans' (for ACM Journals)
-% Date: 28th April 2008
-%
-% 1. Avoid 'repeating' the 'month' values.
-% 2. Avoid incorrectly italicizing the volume number.
-% 3. Avoid non italicizing certain titles (book, inproceedings etc).
-% 4. NO series if there is NO volume.
-% 5. Sorting of reference with first surname.
-% 6. Article no added for Inproceedings.
-%
-% Date: 07th May 2008
-%
-% 1. Abbreviation list added
-%
-% 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.
-%
-% Features of the old 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.journal.volume.number.
-% - 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 at 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 at cgrg.ohio.state.edu or 71160.3141 at 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'.
-%
-%
-% Start of ACM-Reference-Format-Journals.bst
-%
-% Note: Many of the new bibentry 'fields' will only work with the
-% 'ACM-Reference-Format-Journals.bst' file. Legacy .bib files (which will, in all probability,
-% NOT contain these new fields) will _still_ work with the ACM-Reference-Format-Journals.bst.
-%
-%
-ENTRY
- { address
- advisor
- 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
- % New keys recognized
- issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
- articleno
- day % UTAH: needed for newspapers, weeklies, bi-weeklies
- doi % UTAH
- url % UTAH
- bookpages % UTAH
- numpages
- lastaccessed % UTAH: used only for @Misc{...}
- coden % UTAH
- isbn % UTAH
- isbn-13 % UTAH
- issn % UTAH
- lccn % UTAH
- }
- {}
- { label.year extra.label sort.year sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
-
-INTEGERS { nameptr namesleft numnames }
-
-INTEGERS { multiresult }
-
-INTEGERS { len }
-
-INTEGERS { last.extra.num }
-
-STRINGS { s t t.org u }
-
-STRINGS { last.label next.extra }
-
-STRINGS { p1 p2 p3 page.count }
-
-FUNCTION { dump.stack.1 }
-{
- duplicate$ "STACK[top] = [" swap$ * "]" * warning$
-}
-
-FUNCTION { dump.stack.2 }
-{
- duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
- swap$
- duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
- swap$
-}
-
-FUNCTION { empty.or.unknown }
-{
- %% Examine the top stack entry, and push 1 if it is empty, or
- %% consists only of whitespace, or is a string beginning with two
- %% queries (??), and otherwise, push 0.
- %%
- %% This function provides a replacement for empty$, with the
- %% convenient feature that unknown values marked by two leading
- %% queries are treated the same as missing values, and thus, do not
- %% appear in the output .bbl file, and yet, their presence in .bib
- %% file(s) serves to mark values which are temporarily missing, but
- %% are expected to be filled in eventually once more data is
- %% obtained. The TeX User Group and BibNet bibliography archives
- %% make extensive use of this practice.
- %%
- %% An empty string cannot serve the same purpose, because just as in
- %% statistics data processing, an unknown value is not the same as an
- %% empty value.
- %%
- %% At entry: stack = ... top:[string]
- %% At exit: stack = ... top:[0 or 1]
-
- duplicate$ empty$
- { pop$ #1 }
- { #1 #2 substring$ "??" = }
- if$
-}
-
-FUNCTION { writeln }
-{
- %% In BibTeX style files, the sequences
- %%
- %% ... "one" "two" output
- %% ... "one" "two" output.xxx
- %%
- %% ship "one" to the output file, possibly following by punctuation,
- %% leaving the stack with
- %%
- %% ... "two"
- %%
- %% There is thus a one-string lag in output processing that must be
- %% carefully handled to avoid duplicating a string in the output
- %% file. Unless otherwise noted, all output.xxx functions leave
- %% just one new string on the stack, and that model should be born
- %% in mind when reading or writing function code.
- %%
- %% BibTeX's asynchronous buffering of output from strings from the
- %% stack is confusing because newline$ bypasses the buffer. It
- %% would have been so much easier for newline to be a character
- %% rather than a state of the output-in-progress.
- %%
- %% The documentation in btxhak.dvi is WRONG: it says
- %%
- %% newline$ Writes onto the bbl file what's accumulated in the
- %% output buffer. It writes a blank line if and only
- %% if the output buffer is empty. Since write$ does
- %% reasonable line breaking, you should use this
- %% function only when you want a blank line or an
- %% explicit line break.
- %%
- %% write$ Pops the top (string) literal and writes it on the
- %% output buffer (which will result in stuff being
- %% written onto the bbl file when the buffer fills
- %% up).
- %%
- %% Examination of the BibTeX source code shows that write$ does
- %% indeed behave as claimed, but newline$ sends a newline character
- %% directly to the output file, leaving the stack unchanged. The
- %% first line "Writes onto ... buffer." is therefore wrong.
- %%
- %% The original BibTeX style files almost always use "write$ newline$"
- %% in that order, so it makes sense to hide that pair in a private
- %% function like this one, named after a statement in Pascal,
- %% the programming language embedded in the BibTeX Web program.
-
- write$ % output top-of-stack string
- newline$ % immediate write of newline (not via stack)
-}
-
-FUNCTION { init.state.consts }
-{
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-FUNCTION { output.nonnull }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
- 's :=
- output.state mid.sentence =
- {
- ", " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln
- "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.dot.space }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
- 's :=
- output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
- {
- ". " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.remove }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
- 's :=
- output.state mid.sentence =
- {
- " " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.removenospace }
-{ % Stack in: ... R S T Stack out: ... R T File out: S
- 's :=
- output.state mid.sentence =
- {
- "" * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output }
-{ % discard top token if empty, else like output.nonnull
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.dot.space }
-{ % discard top token if empty, else like output.nonnull.dot.space
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { output.removenospace }
-{ % discard top token if empty, else like output.nonnull.removenospace
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.removenospace
- if$
-}
-
-FUNCTION { output.check }
-{ % like output, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.check.dot.space }
-{ % like output.dot.space, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { fin.block }
-{ % functionally, but not logically, identical to fin.entry
- add.period$
- writeln
-}
-
-FUNCTION { fin.entry }
-{
- add.period$
- writeln
-}
-
-FUNCTION { new.sentence }
-{ % update sentence state, with neither output nor stack change
- output.state after.block =
- 'skip$
- {
- output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION { fin.sentence }
-{
- add.period$
- write$
- new.sentence
- ""
-}
-
-FUNCTION { new.block }
-{
- output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION { output.coden } % UTAH
-{ % output non-empty CODEN as one-line sentence (stack untouched)
- coden empty.or.unknown
- { }
- { "\showCODEN{" coden * "}" * writeln }
- if$
-}
-
-FUNCTION { format.articleno }
-{
- articleno empty.or.unknown
- { "" }
- {
- numpages empty.or.unknown
- { "articleno field, but no numpages field, in " cite$ * warning$ }
- { }
- if$
- "Article " articleno *
- }
- if$
-}
-
-FUNCTION { format.year }
-{ % push year string or "????" onto output stack
- %% Because year is a mandatory field, we always force SOMETHING
- %% to be output
- year empty.or.unknown
- { "????" }
- { year }
- if$
-}
-
-FUNCTION { format.day.month }
-{ % push "day month " or "month " or "" onto output stack
- day empty.or.unknown
- {
- month empty.or.unknown
- { "" }
- { month " " *}
- if$
- }
- {
- month empty.or.unknown
- { "" }
- { day " " * month * " " *}
- if$
- }
- if$
-}
-
-FUNCTION { format.day.month.year } % UTAH
-{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- % acm-*.bst addition: prefix parenthesized date string with
- % ", Article nnn "
- articleno empty.or.unknown
- { "" }
- { ", " format.articleno * }
- if$
- " (" * format.day.month * format.year * ")" *
-}
-
-FUNCTION { output.day.month.year } % UTAH
-{ % if month is empty value, do nothing; else output stack top and
- % leave with new top string "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- format.day.month.year
- output.nonnull.remove
-}
-
-FUNCTION { strip.doi } % UTAH
-{ % Strip any Web address prefix to recover the bare DOI, leaving the
- % result on the output stack, as recommended by CrossRef DOI
- % documentation.
- % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
- % "10.1145/1534530.1534545". That is later typeset and displayed as
- % doi:10.1145/1534530.1534545 as the LAST item in the reference list
- % entry. Publisher Web sites wrap this with a suitable link to a real
- % URL to resolve the DOI, and the master http://dx.doi.org/ address is
- % preferred, since publisher-specific URLs can disappear in response
- % to economic events. All journals are encouraged by the DOI
- % authorities to use that typeset format and link procedures for
- % uniformity across all publications that include DOIs in reference
- % lists.
- % The numeric prefix is guaranteed to start with "10.", so we use
- % that as a test.
- doi #1 #3 substring$ "10." =
- { doi }
- {
- doi #1 #7 substring$ "http://" =
- {
- doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
-
- "INTERNAL STYLE-FILE ERROR" 's :=
-
- % search for next "/" and assign its suffix to s
-
- { t text.length$ }
- {
- t #1 #1 substring$ "/" =
- {
- % save rest of string as true DOI (should be 10.xxxx/yyyy)
- t #2 t text.length$ #1 - substring$ 's :=
- "" 't := % empty string t terminates the loop
- }
- {
- % discard first character and continue loop: t <= substring(t,2,last)
- t #2 t text.length$ #1 - substring$ 't :=
- }
- if$
- }
- while$
-
- % check for valid DOI (should be 10.xxxx/yyyy)
- s #1 #3 substring$ "10." =
- { }
- { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
- if$
-
- s % push the stripped DOI on the output stack
-
- }
- {
- "unrecognized DOI value [" doi * "]" * warning$
- doi % push the unrecognized original DOI on the output stack
- }
- if$
- }
- if$
-}
-
-%
-% Change by BV: added standard prefix to URL
-%
-FUNCTION { output.doi } % UTAH
-{ % output non-empty DOI as one-line sentence (stack untouched)
- doi empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which then requires
- %% manual (or automated) editing of the .bbl file to repair.
- %% The \url{} macro strips percent-newlines, and is thus safe in
- %% the presence of the line wrapping, but \path|...| and
- %% \verb|...| do not.
- "\showDOI{%" writeln
- "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
- }
- if$
-}
-
-FUNCTION { output.isbn } % UTAH
-{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
- show-isbn-10-and-13
- {
- %% show both 10- and 13-digit ISBNs
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- isbn-13 empty.or.unknown
- { }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- {
- %% show 10-digit ISBNs only if 13-digit ISBNs not available
- isbn-13 empty.or.unknown
- {
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- if$
-}
-
-FUNCTION { output.issn } % UTAH
-{ % output non-empty ISSN as one-line sentence (stack untouched)
- issn empty.or.unknown
- { }
- { "\showISSN{" issn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.issue }
-{ % output non-empty issue number as a one-line sentence (stack untouched)
- issue empty.or.unknown
- { }
- { "Issue " issue * "." * writeln }
- if$
-}
-
-FUNCTION { output.lccn } % UTAH
-{ % return with stack untouched
- lccn empty.or.unknown
- { }
- { "\showLCCN{" lccn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note.check } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { "empty note in " cite$ * warning$ }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-%
-% Changes by BV 2011/04/15. Do not output
-% url if doi is defined
-%
-FUNCTION { output.url } % UTAH
-{ % return with stack untouched
- % output URL and associated lastaccessed fields
- doi empty.or.unknown
- {
- url empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which would require
- %% manual (or automated) editing of the .bbl file to repair. However,
- %% the \url{} macro handles the unwrapping job automatically.
- "\showURL{%" writeln
- lastaccessed empty.or.unknown
- { "" }
- { "Retrieved " lastaccessed * " from " * }
- if$
-
- %% The URL field may contain a semicolon-separated list of Web
- %% addresses, and we locate and wrap each of them in \url{...}.
- %% The simplistic approach of putting the entire list into the
- %% macro argument is that the semicolons are typeset in a
- %% typewriter font, and no space follows them.
- %%
- %% We therefore replace the original code
- %% "\url{" * url * "}}" * writeln
- %% with this character-at-a-time loop:
-
- "\url{" *
-
- url 't := % get modifiable copy of URL list
-
- { t text.length$ }
- {
- t #1 #1 substring$ ";" =
- { % then split argument at separator
- "};" * writeln
- "\url{"
- }
- { % else concatenate nonblank character to argument
- t #1 #1 substring$ " " =
- { }
- { t #1 #1 substring$ * }
- if$
- }
- if$
-
- t #2 t text.length$ #1 - substring$ 't :=
- }
- while$
-
- "}}" * writeln
- }
- if$
- }
- { }
- if$
-}
-
-FUNCTION { output.year.check }
-{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
- year empty.or.unknown
- { "empty year in " cite$ * warning$ }
- { write$
- " " year * extra.label *
- mid.sentence 'output.state :=
- }
- if$
-}
-
-FUNCTION { not }
-{
- { #0 }
- { #1 }
- if$
-}
-
-FUNCTION { and }
-{
- 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION { or }
-{
- { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION { le }
-{
- %% test whether first number is less than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 <= n2 then 1 else 0
-
- %% "DEBUG: le " cite$ * warning$
- > { #0 } { #1 } if$
-}
-
-FUNCTION { ge }
-{
- %% test whether first number is greater than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 >= n2 then 1 else 0
-
- %% "DEBUG: ge " cite$ * warning$
- < { #0 } { #1 } if$
-}
-
-FUNCTION { is.leading.digit }
-{
- %% test whether first character of string is a digit
- %% stack in: string
- %% stack out: if first-char-is-digit then 1 else 0
-
- #1 #1 substring$ % replace string by string[1:1]
- duplicate$ % string[1:1] string[1:1]
- chr.to.int$
- "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
- swap$ % 0-or-1 string[1:1]
- chr.to.int$
- "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
- and
-}
-
-FUNCTION { skip.digits }
-{
- %% skip over leading digits in string
- %% stack in: string
- %% stack out: rest-of-string leading-digits
-
- %% "DEBUG: enter skip.digits " cite$ * warning$
-
- %% dump.stack.1
-
- duplicate$
- 't :=
- 't.org :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
- t is.leading.digit
- { t #2 t text.length$ #1 - substring$ }
- {
- t 'u :=
- ""
- }
- if$
- 't :=
- }
- while$
-
- u % rest of string
- t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
-
- %% "DEBUG: t.org = [" t.org * "]" * warning$
- %% "DEBUG: u = [" u * "]" * warning$
-
- %% dump.stack.2
-
- %% "DEBUG: leave skip.digits " cite$ * warning$
-}
-
-FUNCTION { skip.nondigits }
-{
- %% skip over leading nondigits in string
- %% stack in: string
- %% stack out: rest-of-string
-
- %% "DEBUG: enter skip.nondigits " cite$ * warning$
-
- 't :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
- t is.leading.digit
- {
- t 'u :=
- ""
- }
- { t #2 t text.length$ #1 - substring$ }
- if$
- 't :=
- }
- while$
-
- u % rest of string
-
- %% dump.stack.1
- %% "DEBUG: leave skip.nondigits " cite$ * warning$
-}
-
-FUNCTION { parse.next.number }
-{
- %% stack in: string
- %% stack out: rest-of-string next-numeric-part-of-string
- %% Example:
- %% stack in: "123:1--123:59"
- %% stack out: ":1--123:59" "123"
-
- 's :=
- s skip.nondigits 's :=
- s skip.digits
-}
-
-FUNCTION { reduce.pages.to.page.count }
-{
- %% Stack in: arbitrary-and-unused
- %% Stack out: unchanged
- %%
- %% For the new-style pagination with article number and numpages or
- %% pages, we expect to have BibTeX entries containing something like
- %% articleno = "17",
- %% pages = "1--23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% numpages = "23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% pages = "17:1--17:23",
- %% with output "Article 17, 23 pages",
- %%
- %% If articleno is missing or empty, then we should output "1--23",
- %% "23" (with a warning of a missing articleno), or "17:1--17:23",
- %% respectively.
-
- %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
-
- %% "DEBUG: pages = [" pages * "]" * warning$
-
- pages
- parse.next.number 'p1 :=
- parse.next.number 'p2 :=
- parse.next.number 'p3 :=
- parse.next.number 'page.count :=
-
- duplicate$
- empty.or.unknown
- { }
- {
- duplicate$ "unexpected trailing garbage [" swap$ *
- "] after n:p1--n:p2 in pages = [" *
- pages *
- "] in " *
- cite$ *
- warning$
- }
- if$
-
- pop$
-
- %% "DEBUG: reduce.pages.to.page.count: "
- %% " p1 = " p1 * *
- %% " p2 = " p2 * *
- %% " p3 = " p3 * *
- %% " p4 = " page.count * *
- %% " in " cite$ * * warning$
-
- p1 p3 = p2 "1" = and numpages empty.or.unknown and
- { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
- {
- p2 'page.count :=
- "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
- }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
-}
-
-FUNCTION { new.block.checkb }
-{ % issue a new.block only if at least one of top two stack strings is not empty
- empty.or.unknown
- swap$ empty.or.unknown
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { field.or.null }
-{ % convert empty value to null string, else return value
- duplicate$ empty.or.unknown
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION { emphasize }
-{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "}" * }
- if$
-}
-
-FUNCTION { emphasize.with.italic.correction }
-{ % convert empty string to null string, or emphasize with a trailing italic correction
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "\/}" * }
- if$
-}
-
-FUNCTION { comma }
-{ % convert empty string to null string, or brace string and add trailing comma
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{" swap$ * "}," * }
- if$
-}
-
-FUNCTION { format.names }
-{
- % 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.
-
- 's :=
- #1 'nameptr := % nameptr = 1;
- s num.names$ 'numnames := % numnames = num.name$(s);
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 =
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- if$
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{\sc 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 { 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 "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
-
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{others}" =
- { " {et~al\mbox{.}}" * }
- { " {and} " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr := % nameptr += 1;
- namesleft #1 - 'namesleft := % namesleft =- 1;
- }
- while$
-}
-
-FUNCTION { format.authors }
-{
- author empty.or.unknown
- { "" }
- { author format.names add.period$} % jtb: add period if none before
- if$
-}
-
-FUNCTION { format.key }
-{
- empty.or.unknown
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION { format.no.key }
-{
- empty.or.unknown
- { "" }
- { "" }
- if$
-}
-
-FUNCTION { format.editors.fml }
-{
- % 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.
-
- editor empty.or.unknown
- { "" }
- {
- editor format.names.fml editor num.names$ #1 >
- { " (Eds.)" * }
- { " (Ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.editors }
-{ % format editor names for use in labels, last names first.
- editor empty.or.unknown
- { "" }
- {
- editor format.names
- editor num.names$ #1 >
- { " (Eds.)." * }
- { " (Ed.)." * }
- if$
- }
- if$
-}
-
-FUNCTION { format.articletitle }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { "\showarticletitle{" title * "}" * }
- % Use this for downcase title style:
- % { \showarticletitle{" title "t" change.case$ * "}" * }
- if$
-}
-
-FUNCTION { format.title }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { title }
- % Use this for downcase title style:
- % { title "t" change.case$ }
- if$
-}
-
-FUNCTION { n.dashify }
-{
- 't :=
- ""
- { t empty.or.unknown 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.or.unknown
- { title emphasize }
- { title empty.or.unknown
- { title emphasize } % jtb: what is this supposed to do ?!?
- { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
- if$
- }
- if$
-}
-
-FUNCTION { format.emphasize.booktitle }
-{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
- edition empty.or.unknown
- { booktitle emphasize }
- { booktitle empty.or.unknown
- { "" }
- { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.city }
-{
- % 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
-
- duplicate$ empty.or.unknown
- { }
- {
- city empty.or.unknown
- {
- date empty.or.unknown
- { }
- { " (" * date * ")" * }
- if$
- }
- {
- date empty.or.unknown
- { " (" * city * ")" * }
- { " (" * city * ", " * date * ")" * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION { tie.or.space.connect }
-{
- duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION { either.or.check }
-{
- empty.or.unknown
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION { format.bvolume }
-{
- % jtb: If there is a series, this is added and the volume trails after it.
- % jtb: Otherwise, "Vol" is Capitalized.
-
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.bvolume.noseries }
-{
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { "Vol." volume tie.or.space.connect}
-% { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.series }
-{
- series empty.or.unknown
- {""}
- {" {\em (" * series ")}" *}
- if$
-}
-
-FUNCTION { format.number.series }
-{
- volume empty.or.unknown
- {
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "" }
- { " (" series * ")" * }
- if$
- }
- if$
- } % { series field.or.null }
- {
- output.state mid.sentence =
- { "Number" } % gnp - changed to mixed case always
- { "Number" }
- if$
- number tie.or.space.connect series empty.or.unknown
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- {
- ""
- }
- if$
-}
-
-FUNCTION { multi.page.check }
-{
- 't :=
- #0 'multiresult :=
- { multiresult not
- t empty.or.unknown 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.or.unknown
- { "" }
- {
- pages multi.page.check
- { pages n.dashify } % gnp - removed () % jtb: removed pp.
- { pages }
- if$
- }
- if$
-}
-
-FUNCTION { format.pages.check.without.articleno }
-{ %% format pages field only if articleno is absent
- %% Stack out: pages-specification
- numpages missing$ pages missing$ and
- { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
- { }
- if$
-
- articleno empty.or.unknown
- {
- pages missing$
- { numpages }
- { format.pages }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION { format.pages.check }
-{
- pages empty.or.unknown
- { "page numbers missing in " cite$ * warning$ "" }
- { pages n.dashify }
- if$
-}
-
-FUNCTION { format.bookpages }
-{
- bookpages empty.or.unknown
- { "" }
- { bookpages "book pages" tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.named.pages }
-{
- pages empty.or.unknown
- { "" }
- { format.pages "pages" tie.or.space.connect }
- if$
-}
-
-%
-% Changed by Boris Veytsman, 2011-03-13
-% Now the word "pages" is printed even if
-% there field pages is not empty.
-%
-
-FUNCTION { format.page.count }
-{
- page.count empty.or.unknown
- { "" }
- {
- articleno empty.or.unknown
- { "numpages field, but no articleno field, in " cite$ * warning$ }
- { }
- if$
- page.count "pages" tie.or.space.connect
- }
- if$
-}
-
-FUNCTION { format.articleno.numpages }
-{
- %% There are seven possible outputs, depending on which fields are set.
- %%
- %% These four are handled here:
- %%
- %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
- %% articleno, numpages -> "Article articleno-value, numpages-value pages"
- %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
- %% articleno -> "Article articleno-value" and warn about missing numpages
- %%
- %% The remaining three have already been handled by
- %% format.pages.check.without.articleno:
- %%
- %% numpages, pages -> "pages-value"
- %% numpages -> "numpages-value"
- %% pages -> "pages-value"
-
- articleno empty.or.unknown
- {
- numpages empty.or.unknown
- { }
- { "require articleno with numpages field in " cite$ * warning$ }
- if$
- ""
- }
- {
- numpages empty.or.unknown
- {
- pages empty.or.unknown
- {
- "require pages or numpages fields with articleno field in " cite$ * warning$
- "" 'page.count :=
- }
- { reduce.pages.to.page.count }
- if$
- }
- { numpages 'page.count := }
- if$
-
- %% The Article number is now handled in format.day.month.year because
- %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
- %% over "Digital Libraries 12, 3 (July 2008), Article 5"
- %% format.articleno output
- format.page.count
- }
- if$
-}
-
-FUNCTION { format.journal.volume.number.day.month.year }
-{
- % By Young (and Spencer)
- % GNP - fixed bugs with missing volume, number, and/or pages
- %
- % Format journal, volume, number, pages for article types.
- %
- journal empty.or.unknown
- { "no journal in " cite$ * warning$
- "" }
-% { journal emphasize.with.italic.correction }
- {
- journal "Journal of the ACM" =
- { "{\it J. ACM}" }
- {
- journal "American Mathematical Society Translations" =
- { "{\it Amer. Math. Soc. Transl.}" }
- {
- journal "Bulletin of the American Mathematical Society" =
- { "{\it Bull. Amer. Math. Soc.}" }
- {
- journal "Proceedings of the American Mathematical Society" =
- { "{\it Proc. Amer. Math. Soc.}" }
- {
- journal "Transactions of the American Mathematical Society" =
- { "{\it Trans. Amer. Math. Soc.}" }
- {
- journal "Communications of the {ACM}" =
- { "{\it Commun. {ACM}}" }
- {
- journal "{ACM} Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "{ACM} Transactions on Mathematical Software" =
- { "{\it {ACM} Trans. Math. Software}" }
- {
- journal "{ACM} {SIGNUM} Newsletter" =
- { "{\it {ACM} {SIGNUM} Newslett.}" }
- {
- journal "American Journal of Sociology" =
- { "{\it Amer. J. Sociology}" }
- {
- journal "Journal of the American Statistical Association" =
- { "{\it J. Amer. Statist. Assoc.}" }
- {
- journal "Applied Mathematics and Computation" =
- { "{\it Appl. Math. Comput.}" }
- {
- journal "American Mathematical Monthly" =
- { "{\it Amer. Math. Monthly}" }
- {
- journal "British Journal of Mathematical and Statistical Psychology" =
- { "{\it Brit. J. Math. Statist. Psych.}" }
- {
- journal "Canadian Mathematical Bulletin" =
- { "{\it Canad. Math. Bull.}" }
- {
- journal "Journal of Computational and Applied Mathematics" =
- { "{\it J. Comput. Appl. Math.}" }
- {
- journal "Journal of Computational Physics" =
- { "{\it J. Comput. Phys.}" }
- {
- journal "Computers and Structures" =
- { "{\it Comput. \& Structures}" }
- {
- journal "The Computer Journal" =
- { "{\it Comput. J.}" }
- {
- journal "Journal of Computer and System Sciences" =
- { "{\it J. Comput. System Sci.}" }
- {
- journal "Contemporary Mathematics" =
- { "{\it Contemp. Math.}" }
- {
- journal "Crelle's Journal" =
- { "{\it Crelle's J.}" }
- {
- journal "Giornale di Mathematiche" =
- { "{\it Giorn. Mat.}" }
- {
- journal "{IEEE} Transactions on Computers" =
- { "{\it {IEEE} Trans. Comput.}" }
- {
- journal "{IEEE} Transactions on Automatic Control" =
- { "{\it {IEEE} Trans. Automat. Control}" }
- {
- journal "Proceedings of the {IEEE}" =
- { "{\it Proc. {IEEE}}" }
- {
- journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
- { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
- {
- journal "{IMA} Journal of Numerical Analysis" =
- { "{\it {IMA} J. Numer. Anal.}" }
- {
- journal "Information Processing Letters" =
- { "{\it Inform. Process. Lett.}" }
- {
- journal "Journal of the Institute of Mathematics and its Applications" =
- { "{\it J. Inst. Math. Appl.}" }
- {
- journal "International Journal of Control" =
- { "{\it Internat. J. Control}" }
- {
- journal "International Journal for Numerical Methods in Engineering" =
- { "{\it Internat. J. Numer. Methods Engrg.}" }
- {
- journal "International Journal of Supercomputing Applications" =
- { "{\it Internat. J. Supercomputing Applic.}" }
- {
- journal "Journal of Research of the National Bureau of Standards" =
- { "{\it J. Res. Nat. Bur. Standards}" }
- {
- journal "Linear Algebra and its Applications" =
- { "{\it Linear Algebra Appl.}" }
- {
- journal "Journal of Mathematical Analysis and Applications" =
- { "{\it J. Math. Anal. Appl.}" }
- {
- journal "Mathematische Annalen" =
- { "{\it Math. Ann.}" }
- {
- journal "Journal of Mathematical Physics" =
- { "{\it J. Math. Phys.}" }
- {
- journal "Mathematics of Computation" =
- { "{\it Math. Comp.}" }
- {
- journal "Mathematica Scandinavica" =
- { "{\it Math. Scand.}" }
- {
- journal "Mathematical Tables and Other Aids to Computation" =
- { "{\it Math. Tables Aids Comput.}" }
- {
- journal "Numerische Mathematik" =
- { "{\it Numer. Math.}" }
- {
- journal "Pacific Journal of Mathematics" =
- { "{\it Pacific J. Math.}" }
- {
- journal "Journal of Parallel and Distributed Computing" =
- { "{\it J. Parallel and Distrib. Comput.}" }
- {
- journal "Parallel Computing" =
- { "{\it Parallel Comput.}" }
- {
- journal "Philosophical Magazine" =
- { "{\it Philos. Mag.}" }
- {
- journal "Proceedings of the National Academy of Sciences of the USA" =
- { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
- {
- journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
- { "{\it Quart. J. Math. Oxford Ser. (2)}" }
- {
- journal "Quarterly of Applied Mathematics" =
- { "{\it Quart. Appl. Math.}" }
- {
- journal "Review of the International Statisical Institute" =
- { "{\it Rev. Inst. Internat. Statist.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics" =
- { "{\it J. Soc. Indust. Appl. Math.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
- { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
- {
- journal "{SIAM} Journal on Algebraic and Discrete Methods" =
- { "{\it {SIAM} J. Algebraic Discrete Methods}" }
- {
- journal "{SIAM} Journal on Applied Mathematics" =
- { "{\it {SIAM} J. Appl. Math.}" }
- {
- journal "{SIAM} Journal on Computing" =
- { "{\it {SIAM} J. Comput.}" }
- {
- journal "{SIAM} Journal on Matrix Analysis and Applications" =
- { "{\it {SIAM} J. Matrix Anal. Appl.}" }
- {
- journal "{SIAM} Journal on Numerical Analysis" =
- { "{\it {SIAM} J. Numer. Anal.}" }
- {
- journal "{SIAM} Review" =
- { "{\it {SIAM} Rev.}" }
- {
- journal "{SIAM} Journal on Scientific and Statistical Computing" =
- { "{\it {SIAM} J. Sci. Statist. Comput.}" }
- {
- journal "Software Practice and Experience" =
- { "{\it Software Prac. Experience}" }
- {
- journal "Statistical Science" =
- { "{\it Statist. Sci.}" }
- {
- journal "{USSR} Computational Mathematics and Mathematical Physics" =
- { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of {VLSI} and Computer Systems" =
- { "{\it J. {VLSI} Comput. Syst.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
- { "{\it Z. Angew. Math. Mech.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Physik" =
- { "{\it Z. Angew. Math. Phys.}" }
- {
- journal "ACM Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "ACM Transactions on Mathematical Software" =
- { "{\it ACM Trans. Math. Software}" }
- {
- journal "ACM {SIGNUM} Newsletter" =
- { "{\it ACM {SIGNUM} Newslett.}" }
- {
- journal "IEEE Transactions on Computers" =
- { "{\it IEEE Trans. Comput.}" }
- {
- journal "IEEE Transactions on Automatic Control" =
- { "{\it IEEE Trans. Automat. Control}" }
- {
- journal "Proceedings of the IEEE" =
- { "{\it Proc. IEEE}" }
- {
- journal "IEEE Transactions on Aerospace and Electronic Systems" =
- { "{\it IEEE Trans. Aerospace Electron. Systems}" }
- {
- journal "IMA Journal of Numerical Analysis" =
- { "{\it IMA J. Numer. Anal.}" }
- {
- journal "SIAM Journal on Algebraic and Discrete Methods" =
- { "{\it SIAM J. Algebraic Discrete Methods}" }
- {
- journal "SIAM Journal on Applied Mathematics" =
- { "{\it SIAM J. Appl. Math.}" }
- {
- journal "SIAM Journal on Computing" =
- { "{\it SIAM J. Comput.}" }
- {
- journal "SIAM Journal on Matrix Analysis and Applications" =
- { "{\it SIAM J. Matrix Anal. Appl.}" }
- {
- journal "SIAM Journal on Numerical Analysis" =
- { "{\it SIAM J. Numer. Anal.}" }
- {
- journal "SIAM Review" =
- { "{\it SIAM Rev.}" }
- {
- journal "SIAM Journal on Scientific and Statistical Computing" =
- { "{\it SIAM J. Sci. Statist. Comput.}" }
- {
- journal "USSR Computational Mathematics and Mathematical Physics" =
- { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of VLSI and Computer Systems" =
- { "{\it J. VLSI Comput. Syst.}" }
- {
- journal "Communications of the ACM" =
- { "{\it Commun. ACM}" }
- %% If no match with cases needing special handling, just output journal name
- { journal emphasize.with.italic.correction }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
-
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "no number and no volume in " cite$ * warning$ "" * }
- { " " * " {" * volume * "}" * }
- if$
- }
- {
- volume empty.or.unknown
- {
- "unusual to have number, but no volume, for " cite$ * warning$
- " " * number *
- }
- { " " * volume comma " " * number * * }
- if$
- }
- if$
-
- format.day.month.year *
-}
-
-FUNCTION { format.chapter.pages }
-{
- chapter empty.or.unknown
- 'format.pages
- { type empty.or.unknown
- { "Chapter" } % gnp - changed to mixed case
- { type "t" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty.or.unknown
- {"page numbers missing in " cite$ * warning$} % gnp - added check
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION { format.in.emphasize.booktitle }
-{ % jtb: format for collections or proceedings not appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " format.emphasize.booktitle * }
- if$
-}
-
-FUNCTION { format.in.booktitle }
-{ % jtb: format for proceedings appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " booktitle * }
- if$
-}
-
-FUNCTION { format.in.ed.booktitle }
-{
- booktitle empty.or.unknown
- { "" }
- { editor empty.or.unknown
- { "In " format.emphasize.booktitle * }
- % jtb: swapped editor location
- { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
- if$
- }
- if$
-}
-
-FUNCTION { format.thesis.type }
-{ % call with default type on stack top
- type empty.or.unknown
- 'skip$ % use default type
- {
- pop$ % discard default type
- % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
- type
- }
- if$
-}
-
-FUNCTION { format.tr.number }
-{
- type empty.or.unknown
-% { "Tech. Rep." }
- { "{T}echnical {R}eport" } % ACM wants it explicit (Gerry 9/28)
- 'type
- if$
- number empty.or.unknown
- { "t" change.case$ }
- %% LOOKS BAD: { "." * number tie.or.space.connect }
- %% Prefer "Research report RJ687." to "Research report. RJ687."
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.advisor }
-{
- advisor empty.or.unknown
- { "" }
- { "Advisor(s) " advisor * }
- 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.or.unknown
- { "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.or.unknown
- editor field.or.null author field.or.null =
- or
- { key empty.or.unknown
- { series empty.or.unknown
- { "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 * "}" *
-}
-
-FUNCTION { format.lab.names }
-{
- % 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.
-
- '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.or.unknown
- { key empty.or.unknown
- { "no key, author in " cite$ * warning$
- cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION { author.key.organization.label }
-{ % added - gnp. Provide label formatting by organization if author is null.
- author empty.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { editor empty.or.unknown
- { key empty.or.unknown
- { "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
- type$ "periodical" =
- 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.or.unknown % generate the full label citation information.
- {
- editor empty.or.unknown
- {
- organization empty.or.unknown
- {
- key empty.or.unknown
- {
- "no author, editor, organization, or key in " cite$ * warning$
- "??"
- }
- { key }
- if$
- }
- { 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 :=
-}
-
-%
-% Change by Gerry: use number-like citations for transactions
-% 2011/03/23
-% Reverting: Ayman
-FUNCTION {output.bibitem}
-{ newline$
- "\bibitem{" write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-% FUNCTION { output.bibitem }
-% {
-% newline$
-% "\bibitem[\protect\citeauthoryear{" write$
-% calc.label write$
-% sort.year write$
-% "}]%" writeln
-% " {" write$
-% cite$ write$
-% "}" writeln
-% ""
-% before.all 'output.state :=
-% }
-
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url }
-{ % enter and return with stack empty
- %% We switch now from buffered output to output of complete lines, so
- %% that the Issue .. URL data have their own lines, and are less likely
- %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
- %% lines longer than 79 characters, backtracking to what it thinks is
- %% a break point in the string. Any such wrapping MUST be undone to
- %% prevent percent-newline from appearing in DOIs and URLs. The
- %% output data are intentionally wrapped in \showxxx{} macros at
- %% beginning of line, and that supply their own punctuation (if they
- %% are not defined to suppress output entirely), to make it easier for
- %% other software to recover them from .bbl files.
- %%
- %% It also makes it possible to later change the macro definitions
- %% to suppress particular output values, or alter their appearance.
- %%
- %% Note that it is possible for theses, technical reports, and
- %% manuals to have ISBNs, and anything that has an ISBN may also
- %% have an ISSN. When there are no values for these keys, there
- %% is no output generated for them here.
-
- "\newblock" writeln
- after.block 'output.state :=
-
- output.issue
- output.isbn
- output.coden % CODEN is functionally like ISSN, so output them sequentially
- output.issn
- output.lccn
- output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
- output.url % but ACM wants URL last
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note
- }
- if$
- ""
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note.check
- }
- if$
- ""
-}
-
-FUNCTION { article }
-{
- output.bibitem
-
- author empty.or.unknown
- {
- editor empty.or.unknown
- { "neither author and editor supplied for " cite$ * warning$ }
- { format.editors "editor" output.check }
- if$
- }
- { format.authors "author" output.check }
- if$
-
- author format.no.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- new.block
- howpublished output
-
- crossref missing$
- { format.journal.volume.number.day.month.year }
- {
- "cross reference in @Article{...} is unusual" warning$
- format.article.crossref output.nonnull
- }
- if$
- output
-
- format.pages.check.without.articleno output
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { book }
-{
- output.bibitem
- author empty.or.unknown
- { 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
- fin.sentence
- pages empty.or.unknown
- { format.bookpages } % use bookpages when pages empty
- { format.pages.check "pages" tie.or.space.connect }
- if$
- output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inbook }
-{
- output.bibitem
- author empty.or.unknown
- { 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.bookpages output
- format.chapter.pages
- "chapter and pages" output.check % jtb: moved from before publisher
- }
- {
- format.bookpages output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { incollection }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "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.bookpages output
- 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$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inproceedings }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- howpublished output.dot.space
- crossref missing$
- {
- journal missing$ % jtb: proceedings appearing in journals
- { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
- format.series output.removenospace
- format.editors.fml output % BV 2011/09/27 Moved dot to comma
- format.bvolume.noseries output
- new.sentence
- organization output
- publisher "publisher" output.check % jtb: require publisher (?)
- address "address" output.check % jtb: require address
- format.bookpages output
- }
- {
- format.in.booktitle format.city "booktitle" output.check
- format.editors.fml output
- new.sentence
- format.journal.volume.number.day.month.year output
- }
- if$
- format.articleno output
- format.pages.check.without.articleno output
- }
- {
- format.incoll.inproc.crossref output.nonnull
- format.articleno output
- format.pages.check.without.articleno output
- }
- if$
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { conference } { inproceedings }
-
-FUNCTION { manual }
-{
- output.bibitem
- author empty.or.unknown
- { editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { mastersthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Master's\ thesis" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- "" output.nonnull.dot.space
- output.day.month.year % Gerry - appears odd if (only) the year is 'repeated' but (appears) 'valuable' if the month/day is _also_ included - 2011/09/28
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { phdthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Ph.D. Dissertation" format.thesis.type output new.sentence % Added dot. BV 2011/09/27
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION {format.date}
-{ year empty.or.unknown
- { month empty.or.unknown
- {
- "" % output empty date if year/month both empty
- day empty.or.unknown
- { }
- { "there's a day but no month or year in " cite$ * warning$ }
- if$
- }
- { "there's a month but no year in " cite$ * warning$
- month
- day empty.or.unknown
- { }
- { " " * day * }
- if$
- }
- if$
- }
- { month empty.or.unknown
- {
- year % output only year if month empty
- day empty.or.unknown
- { }
- { "there's a day and year but no month in " cite$ * warning$ }
- if$
- }
- {
- month " " *
- day empty.or.unknown
- { }
- { day * ", " * }
- if$
- year *
- }
- if$
- }
- if$
-}
-
-FUNCTION {new.block.checka}
-{
- empty.or.unknown
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { periodical }
-{
- output.bibitem
- editor empty.or.unknown
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- title emphasize "title" output.check
- format.date output
- new.sentence
- publisher output
- address output
- howpublished new.block.checka
- howpublished output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { proceedings }
-{
- output.bibitem
- editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { techreport }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.btitle "title" output.check
- new.block
-% format.tr.number output % jtb: moved month ...
- format.tr.number output new.sentence % Gerry - need dot 2011/09/28
- institution "institution" output.check
- address output
- new.sentence
- format.named.pages output
- % ACM omits year at end in transactions style
- % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.sentence
- output.day.month.year % UTAH
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note.check
- fin.entry
-}
-
-FUNCTION { default.type } { misc }
-
-%%% ACM journal-style month definitions: full name if 1--5 letters, else
-%%% abbreviation of 3 or 4 characters and a dot
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"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."}
-
-
-%%% ====================================================================
-%%% I M P O R T A N T C H A N G E
-%%%
-%%% For the 2009 release of the official acm-*.bst files, there are to
-%%% be NO predefined journal abbreviations in those style files.
-%%%
-%%% ACM may later develop an official list of mappings of full journal
-%%% names of commonly-cited journals to ACM-preferred abbreviations, but
-%%% authors should consider that use of any of these commented-out
-%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
-%%% its own @String{name = "value"} definitions.
-%%%
-%%% Use of journal (and publisher and address) @String{...}
-%%% abbreviations, as opposed to explicit value assignments such as
-%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
-%%% bibliographic databases, because it makes it easier for journal
-%%% production staff to replace those definitions by publisher-preferred
-%%% abbreviations when articles are typeset for publication.
-%%%
-%%% For historical reasons, and because some of these abbreviations are
-%%% used in other (non-ACM) bibliography style files, they are preserved
-%%% here in comments. Future releases of the acm*-.bst files are likely
-%%% to remove them entirely.
-%%% ====================================================================
-%%%
-%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {al} {"Ada Lett."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {bit} {"Bit"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cj} {"Comput. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
-%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
-%%% ====================================================================
-
-READ
-
-FUNCTION { sortify }
-{
- purify$
- "l" change.case$
-}
-
-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 "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
- 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.or.unknown
- { key empty.or.unknown
- { "to sort, need author or key in " cite$ * warning$
- "" }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION { author.editor.sort }
-{
- author empty.or.unknown
- {
- editor empty.or.unknown
- {
- key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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
-
-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
- % OLD:calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
- % NEW:
- author.key.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 :=
- % OLD: calc.label year field.or.null purify$ #-1 #4 substring$ * % add year
- % NEW:
- author.key.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 }
-{
- %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
- %% Set to #1 to show both 10-digit and 13-digit ISBNs.
- #1 'show-isbn-10-and-13 :=
-
- "%%% -*-BibTeX-*-" writeln
- "%%% Do NOT edit. File created by BibTeX with style" writeln
- "%%% ACM-Reference-Format-Journals [18-Jan-2012]." writeln
- "" writeln
-
- preamble$ empty.or.unknown
- 'skip$
- { preamble$ writeln }
- if$
- "\begin{thebibliography}{00}" writeln
- "" writeln
- "%%% ====================================================================" writeln
- "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
- "%%% customized versions of any of these macros before the \bibliography" writeln
- "%%% command. Each of them MUST provide its own final punctuation," writeln
- "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
- "%%% do not use final punctuation, in order to avoid confusing it with" writeln
- "%%% the Web address." writeln
- "%%%" writeln
- "%%% To suppress output of a particular field, define its macro to expand" writeln
- "%%% to an empty string, or better, \unskip, like this:" writeln
- "%%%" writeln
- "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
- "%%%" writeln
- "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
- "%%%" writeln
- "%%% ====================================================================" writeln
- "" writeln
-
- %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
- %% macro wrappers expand to \unskip, discarding their values and unwanted
- %% space.
- %%
- %% For other publications, prior definitions like these may be useful:
- %%
- %% Plain TeX:
- %% \def \showCODEN #1{CODEN #1.}
- %% \def \showISSN #1{ISSN #1.}
- %% \def \showLCCN #1{LCCN #1.}
- %%
- %% LaTeX:
- %% \newcommand{\showCODEN}[1]{CODEN #1.}
- %% \newcommand{\showISSN}[1]#1{ISSN #1.}
- %% \newcommand{\showLCCN}[1]{LCCN #1.}
-
- "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
- "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
- % ACM styles omit ISBNs, but they can be included by suitable definitions of
- % \showISBNx and \showISBNxiii before the .bbl file is read
- "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
- "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
- "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
- "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
- "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
- "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
- "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION { end.bib }
-{
- newline$
- "\end{thebibliography}"
- writeln
-}
-
-EXECUTE {end.bib}
-
-%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012
-
Deleted: trunk/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,3311 +0,0 @@
-%%% -*-BibTeX-*-
-%%% ====================================================================
-%%% @BibTeX-style-file{
-%%% author = "Nelson H. F. Beebe and many others",
-%%% version = "1.03",
-%%% date = "15 April 2011",
-%%% time = "23:40:53 EDT",
-%%% filename = "acm-abbrv.bst",
-%%% address = "University of Utah
-%%% Department of Mathematics, 110 LCB
-%%% 155 S 1400 E RM 233
-%%% Salt Lake City, UT 84112-0090
-%%% USA",
-%%% telephone = "+1 801 581 5254",
-%%% FAX = "+1 801 581 4148",
-%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "62819 3311 12013 90137",
-%%% email = "beebe at math.utah.edu, beebe at acm.org,
-%%% beebe at computer.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "ACM abbrv bibliography style; BibTeX",
-%%% license = "public domain",
-%%% supported = "yes",
-%%% abstract = "",
-%%% docstring = "The checksum field above contains a CRC-16
-%%% checksum as the first value, followed by the
-%%% equivalent of the standard UNIX wc (word
-%%% count) utility output of lines, words, and
-%%% characters. This is produced by Robert
-%%% Solovay's checksum utility.",
-%%% }
-%%% ====================================================================
-
-% "ACM abbrv" BibTeX style, derived by minimal modifications from acm-plain.bst
-% "ACM Transactions" BibTeX style, acmtrans-v2.bst
-% for BibTeX version 0.99c, LaTeX version 3.141
-% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
-% Revised 28-MARCH-1996
-% Revised 30-JUNE-1995
-% Revised 15-JAN-1996
-% Revised 17-APRIL-2008
-% Revised 13-MARCH-2011
-% Revised 27-MARCH-2011
-% Revised 15-APRIL-2011
-%
-% 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.
-%
-% Version 2.2
-% Johny Sebatian and Sanjeev Sharma
-% Aptara corp (c) 2008
-%
-% History
-%
-% Date: 28th April 2008
-%
-% 1. Avoid 'repeating' the 'month' values.
-% 2. Avoid incorrectly italicizing the volume number.
-% 3. Avoid non italicizing certain titles (book, inproceedings etc).
-% 4. NO series if there is NO volume.
-% 5. Sorting of reference with first surname.
-% 6. Article no added for Inproceedings.
-%
-% Date: 07th May 2008
-%
-% 1. Abbreviation list added
-%
-% 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.journal.volume.number.
-% - 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 at 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 at cgrg.ohio.state.edu or 71160.3141 at 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
- advisor
- 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
- % New keys recognized for acmtrans-v2.bst
- issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
- articleno
- day % UTAH: needed for newspapers, weeklies, bi-weeklies
- doi % UTAH
- url % UTAH
- bookpages % UTAH
- numpages
- lastaccessed % UTAH: used only for @Misc{...}
- coden % UTAH
- isbn % UTAH
- isbn-13 % UTAH
- issn % UTAH
- lccn % UTAH
- }
- {}
- { label label.year extra.label sort.year sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
-
-INTEGERS { nameptr namesleft numnames }
-
-INTEGERS { multiresult }
-
-INTEGERS { len }
-
-INTEGERS { last.extra.num }
-
-STRINGS { s t t.org u }
-
-STRINGS { last.label next.extra }
-
-STRINGS { p1 p2 p3 page.count }
-
-FUNCTION { dump.stack.1 }
-{
- duplicate$ "STACK[top] = [" swap$ * "]" * warning$
-}
-
-FUNCTION { dump.stack.2 }
-{
- duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
- swap$
- duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
- swap$
-}
-
-FUNCTION { empty.or.unknown }
-{
- %% Examine the top stack entry, and push 1 if it is empty, or
- %% consists only of whitespace, or is a string beginning with two
- %% queries (??), and otherwise, push 0.
- %%
- %% This function provides a replacement for empty$, with the
- %% convenient feature that unknown values marked by two leading
- %% queries are treated the same as missing values, and thus, do not
- %% appear in the output .bbl file, and yet, their presence in .bib
- %% file(s) serves to mark values which are temporarily missing, but
- %% are expected to be filled in eventually once more data is
- %% obtained. The TeX User Group and BibNet bibliography archives
- %% make extensive use of this practice.
- %%
- %% An empty string cannot serve the same purpose, because just as in
- %% statistics data processing, an unknown value is not the same as an
- %% empty value.
- %%
- %% At entry: stack = ... top:[string]
- %% At exit: stack = ... top:[0 or 1]
-
- duplicate$ empty$
- { pop$ #1 }
- { #1 #2 substring$ "??" = }
- if$
-}
-
-FUNCTION { writeln }
-{
- %% In BibTeX style files, the sequences
- %%
- %% ... "one" "two" output
- %% ... "one" "two" output.xxx
- %%
- %% ship "one" to the output file, possibly following by punctuation,
- %% leaving the stack with
- %%
- %% ... "two"
- %%
- %% There is thus a one-string lag in output processing that must be
- %% carefully handled to avoid duplicating a string in the output
- %% file. Unless otherwise noted, all output.xxx functions leave
- %% just one new string on the stack, and that model should be born
- %% in mind when reading or writing function code.
- %%
- %% BibTeX's asynchronous buffering of output from strings from the
- %% stack is confusing because newline$ bypasses the buffer. It
- %% would have been so much easier for newline to be a character
- %% rather than a state of the output-in-progress.
- %%
- %% The documentation in btxhak.dvi is WRONG: it says
- %%
- %% newline$ Writes onto the bbl file what's accumulated in the
- %% output buffer. It writes a blank line if and only
- %% if the output buffer is empty. Since write$ does
- %% reasonable line breaking, you should use this
- %% function only when you want a blank line or an
- %% explicit line break.
- %%
- %% write$ Pops the top (string) literal and writes it on the
- %% output buffer (which will result in stuff being
- %% written onto the bbl file when the buffer fills
- %% up).
- %%
- %% Examination of the BibTeX source code shows that write$ does
- %% indeed behave as claimed, but newline$ sends a newline character
- %% directly to the output file, leaving the stack unchanged. The
- %% first line "Writes onto ... buffer." is therefore wrong.
- %%
- %% The original BibTeX style files almost always use "write$ newline$"
- %% in that order, so it makes sense to hide that pair in a private
- %% function like this one, named after a statement in Pascal,
- %% the programming language embedded in the BibTeX Web program.
-
- write$ % output top-of-stack string
- newline$ % immediate write of newline (not via stack)
-}
-
-FUNCTION { init.state.consts }
-{
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-FUNCTION { output.nonnull }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
- 's :=
- output.state mid.sentence =
- {
- ", " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln
- "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.dot.space }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
- 's :=
- output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
- {
- ". " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.remove }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
- 's :=
- output.state mid.sentence =
- {
- " " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.removenospace }
-{ % Stack in: ... R S T Stack out: ... R T File out: S
- 's :=
- output.state mid.sentence =
- {
- "" * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output }
-{ % discard top token if empty, else like output.nonnull
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.dot.space }
-{ % discard top token if empty, else like output.nonnull.dot.space
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { output.removenospace }
-{ % discard top token if empty, else like output.nonnull.removenospace
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.removenospace
- if$
-}
-
-FUNCTION { output.check }
-{ % like output, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.check.dot.space }
-{ % like output.dot.space, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { fin.block }
-{ % functionally, but not logically, identical to fin.entry
- add.period$
- writeln
-}
-
-FUNCTION { fin.entry }
-{
- add.period$
- writeln
-}
-
-FUNCTION { new.sentence }
-{ % update sentence state, with neither output nor stack change
- output.state after.block =
- 'skip$
- {
- output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION { fin.sentence }
-{
- add.period$
- write$
- new.sentence
- ""
-}
-
-FUNCTION { new.block }
-{
- output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION { output.coden } % UTAH
-{ % output non-empty CODEN as one-line sentence (stack untouched)
- coden empty.or.unknown
- { }
- { "\showCODEN{" coden * "}" * writeln }
- if$
-}
-
-FUNCTION { format.articleno }
-{
- articleno empty.or.unknown
- { "" }
- {
- numpages empty.or.unknown
- { "articleno field, but no numpages field, in " cite$ * warning$ }
- { }
- if$
- "Article " articleno *
- }
- if$
-}
-
-FUNCTION { format.year }
-{ % push year string or "????" onto output stack
- %% Because year is a mandatory field, we always force SOMETHING
- %% to be output
- year empty.or.unknown
- { "????" }
- { year }
- if$
-}
-
-FUNCTION { format.day.month }
-{ % push "day month " or "month " or "" onto output stack
- day empty.or.unknown
- {
- month empty.or.unknown
- { "" }
- { month " " *}
- if$
- }
- {
- month empty.or.unknown
- { "" }
- { day " " * month * " " *}
- if$
- }
- if$
-}
-
-FUNCTION { format.day.month.year } % UTAH
-{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- % acm-*.bst addition: prefix parenthesized date string with
- % ", Article nnn "
- articleno empty.or.unknown
- { "" }
- { ", " format.articleno * }
- if$
- " (" * format.day.month * format.year * ")" *
-}
-
-FUNCTION { output.day.month.year } % UTAH
-{ % if month is empty value, do nothing; else output stack top and
- % leave with new top string "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- format.day.month.year
- output.nonnull.remove
-}
-
-FUNCTION { strip.doi } % UTAH
-{ % Strip any Web address prefix to recover the bare DOI, leaving the
- % result on the output stack, as recommended by CrossRef DOI
- % documentation.
- % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
- % "10.1145/1534530.1534545". That is later typeset and displayed as
- % doi:10.1145/1534530.1534545 as the LAST item in the reference list
- % entry. Publisher Web sites wrap this with a suitable link to a real
- % URL to resolve the DOI, and the master http://dx.doi.org/ address is
- % preferred, since publisher-specific URLs can disappear in response
- % to economic events. All journals are encouraged by the DOI
- % authorities to use that typeset format and link procedures for
- % uniformity across all publications that include DOIs in reference
- % lists.
- % The numeric prefix is guaranteed to start with "10.", so we use
- % that as a test.
- doi #1 #3 substring$ "10." =
- { doi }
- {
- doi #1 #7 substring$ "http://" =
- {
- doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
-
- "INTERNAL STYLE-FILE ERROR" 's :=
-
- % search for next "/" and assign its suffix to s
-
- { t text.length$ }
- {
- t #1 #1 substring$ "/" =
- {
- % save rest of string as true DOI (should be 10.xxxx/yyyy)
- t #2 t text.length$ #1 - substring$ 's :=
- "" 't := % empty string t terminates the loop
- }
- {
- % discard first character and continue loop: t <= substring(t,2,last)
- t #2 t text.length$ #1 - substring$ 't :=
- }
- if$
- }
- while$
-
- % check for valid DOI (should be 10.xxxx/yyyy)
- s #1 #3 substring$ "10." =
- { }
- { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
- if$
-
- s % push the stripped DOI on the output stack
-
- }
- {
- "unrecognized DOI value [" doi * "]" * warning$
- doi % push the unrecognized original DOI on the output stack
- }
- if$
- }
- if$
-}
-
-%
-% Change by BV: added standard prefix to URL
-%
-FUNCTION { output.doi } % UTAH
-{ % output non-empty DOI as one-line sentence (stack untouched)
- doi empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which then requires
- %% manual (or automated) editing of the .bbl file to repair.
- %% The \url{} macro strips percent-newlines, and is thus safe in
- %% the presence of the line wrapping, but \path|...| and
- %% \verb|...| do not.
- "\showDOI{%" writeln
- "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
- }
- if$
-}
-
-FUNCTION { output.isbn } % UTAH
-{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
- show-isbn-10-and-13
- {
- %% show both 10- and 13-digit ISBNs
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- isbn-13 empty.or.unknown
- { }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- {
- %% show 10-digit ISBNs only if 13-digit ISBNs not available
- isbn-13 empty.or.unknown
- {
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- if$
-}
-
-FUNCTION { output.issn } % UTAH
-{ % output non-empty ISSN as one-line sentence (stack untouched)
- issn empty.or.unknown
- { }
- { "\showISSN{" issn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.issue }
-{ % output non-empty issue number as a one-line sentence (stack untouched)
- issue empty.or.unknown
- { }
- { "Issue " issue * "." * writeln }
- if$
-}
-
-FUNCTION { output.lccn } % UTAH
-{ % return with stack untouched
- lccn empty.or.unknown
- { }
- { "\showLCCN{" lccn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note.check } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { "empty note in " cite$ * warning$ }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-
-%
-% Changes by BV 2011/04/15. Do not output
-% url if doi is defined
-%
-FUNCTION { output.url } % UTAH
-{ % return with stack untouched
- % output URL and associated lastaccessed fields
- doi empty.or.unknown
- {
- url empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which would require
- %% manual (or automated) editing of the .bbl file to repair. However,
- %% the \url{} macro handles the unwrapping job automatically.
- "\showURL{%" writeln
- lastaccessed empty.or.unknown
- { "" }
- { "Retrieved " lastaccessed * " from " * }
- if$
-
- %% The URL field may contain a semicolon-separated list of Web
- %% addresses, and we locate and wrap each of them in \url{...}.
- %% The simplistic approach of putting the entire list into the
- %% macro argument is that the semicolons are typeset in a
- %% typewriter font, and no space follows them.
- %%
- %% We therefore replace the original code
- %% "\url{" * url * "}}" * writeln
- %% with this character-at-a-time loop:
-
- "\url{" *
-
- url 't := % get modifiable copy of URL list
-
- { t text.length$ }
- {
- t #1 #1 substring$ ";" =
- { % then split argument at separator
- "};" * writeln
- "\url{"
- }
- { % else concatenate nonblank character to argument
- t #1 #1 substring$ " " =
- { }
- { t #1 #1 substring$ * }
- if$
- }
- if$
-
- t #2 t text.length$ #1 - substring$ 't :=
- }
- while$
-
- "}}" * writeln
- }
- if$
- }
- { }
- if$
-}
-
-FUNCTION { output.year.check }
-{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
- year empty.or.unknown
- { "empty year in " cite$ * warning$ }
- { write$
- " " year * extra.label *
- mid.sentence 'output.state :=
- }
- if$
-}
-
-FUNCTION { not }
-{
- { #0 }
- { #1 }
- if$
-}
-
-FUNCTION { and }
-{
- 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION { or }
-{
- { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION { le }
-{
- %% test whether first number is less than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 <= n2 then 1 else 0
-
- %% "DEBUG: le " cite$ * warning$
- > { #0 } { #1 } if$
-}
-
-FUNCTION { ge }
-{
- %% test whether first number is greater than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 >= n2 then 1 else 0
-
- %% "DEBUG: ge " cite$ * warning$
- < { #0 } { #1 } if$
-}
-
-FUNCTION { is.leading.digit }
-{
- %% test whether first character of string is a digit
- %% stack in: string
- %% stack out: if first-char-is-digit then 1 else 0
-
- #1 #1 substring$ % replace string by string[1:1]
- duplicate$ % string[1:1] string[1:1]
- chr.to.int$
- "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
- swap$ % 0-or-1 string[1:1]
- chr.to.int$
- "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
- and
-}
-
-FUNCTION { skip.digits }
-{
- %% skip over leading digits in string
- %% stack in: string
- %% stack out: rest-of-string leading-digits
-
- duplicate$
- 't :=
- 't.org :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
- t is.leading.digit
- { t #2 t text.length$ #1 - substring$ }
- {
- t 'u :=
- ""
- }
- if$
- 't :=
- }
- while$
-
- u % rest of string
- t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
-}
-
-FUNCTION { skip.nondigits }
-{
- %% skip over leading nondigits in string
- %% stack in: string
- %% stack out: rest-of-string
-
- 't :=
- "" 'u :=
-
- { t text.length$ }
- {
- t is.leading.digit
- {
- t 'u :=
- ""
- }
- { t #2 t text.length$ #1 - substring$ }
- if$
- 't :=
- }
- while$
-
- u % rest of string
-}
-
-FUNCTION { parse.next.number }
-{
- %% stack in: string
- %% stack out: rest-of-string next-numeric-part-of-string
- %% Example:
- %% stack in: "123:1--123:59"
- %% stack out: ":1--123:59" "123"
-
- 's :=
- s skip.nondigits 's :=
- s skip.digits
-}
-
-FUNCTION { reduce.pages.to.page.count }
-{
- %% Stack in: arbitrary-and-unused
- %% Stack out: unchanged
- %%
- %% For the new-style pagination with article number and numpages or
- %% pages, we expect to have BibTeX entries containing something like
- %% articleno = "17",
- %% pages = "1--23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% numpages = "23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% pages = "17:1--17:23",
- %% with output "Article 17, 23 pages",
- %%
- %% If articleno is missing or empty, then we should output "1--23",
- %% "23" (with a warning of a missing articleno), or "17:1--17:23",
- %% respectively.
-
- %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
-
- %% "DEBUG: pages = [" pages * "]" * warning$
-
- pages
- parse.next.number 'p1 :=
- parse.next.number 'p2 :=
- parse.next.number 'p3 :=
- parse.next.number 'page.count :=
-
- duplicate$
- empty.or.unknown
- { }
- {
- duplicate$ "unexpected trailing garbage [" swap$ *
- "] after n:p1--n:p2 in pages = [" *
- pages *
- "] in " *
- cite$ *
- warning$
- }
- if$
-
- pop$
-
- %% "DEBUG: reduce.pages.to.page.count: "
- %% " p1 = " p1 * *
- %% " p2 = " p2 * *
- %% " p3 = " p3 * *
- %% " p4 = " page.count * *
- %% " in " cite$ * * warning$
-
- p1 p3 = p2 "1" = and numpages empty.or.unknown and
- { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
- {
- p2 'page.count :=
- "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
- }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
-}
-
-FUNCTION { new.block.checkb }
-{ % issue a new.block only if at least one of top two stack strings is not empty
- empty.or.unknown
- swap$ empty.or.unknown
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { field.or.null }
-{ % convert empty value to null string, else return value
- duplicate$ empty.or.unknown
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION { emphasize }
-{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "}" * }
- if$
-}
-
-FUNCTION { emphasize.with.italic.correction }
-{ % convert empty string to null string, or emphasize with a trailing italic correction
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "\/}" * }
- if$
-}
-
-FUNCTION { comma }
-{ % convert empty string to null string, or brace string and add trailing comma
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{" swap$ * "}," * }
- if$
-}
-
-FUNCTION { format.names }
-{
- % 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.
-
- 's :=
- #1 'nameptr := % nameptr = 1;
- s num.names$ 'numnames := % numnames = num.name$(s);
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 =
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- {"{" s nameptr "{f. }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- {"{" s nameptr "{f. }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- if$
- 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 { 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 "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
-
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{others}" =
- { " {et~al\mbox{.}}" * }
- { " {and} " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr := % nameptr += 1;
- namesleft #1 - 'namesleft := % namesleft =- 1;
- }
- while$
-}
-
-FUNCTION { format.authors }
-{
- author empty.or.unknown
- { "" }
- { author format.names add.period$} % jtb: add period if none before
- if$
-}
-
-FUNCTION { format.key }
-{
- empty.or.unknown
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION { format.no.key }
-{
- empty.or.unknown
- { "" }
- { "" }
- if$
-}
-
-FUNCTION { format.editors.fml }
-{
- % 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.
-
- editor empty.or.unknown
- { "" }
- {
- editor format.names.fml editor num.names$ #1 >
- { " (Eds.)" * }
- { " (Ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.editors }
-{ % format editor names for use in labels, last names first.
- editor empty.or.unknown
- { "" }
- {
- editor format.names
- editor num.names$ #1 >
- { " (Eds.)." * }
- { " (Ed.)." * }
- if$
- }
- if$
-}
-
-FUNCTION { format.articletitle }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { "\showarticletitle{" title * "}" * }
- % Use this for downcase title style:
- % { \showarticletitle{" title "t" change.case$ * "}" * }
- if$
-}
-
-FUNCTION { format.title }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { title }
- % Use this for downcase title style:
- % { title "t" change.case$ }
- if$
-}
-
-FUNCTION { n.dashify }
-{
- 't :=
- ""
- { t empty.or.unknown 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.or.unknown
- { title emphasize }
- { title empty.or.unknown
- { title emphasize } % jtb: what is this supposed to do ?!?
- { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
- if$
- }
- if$
-}
-
-FUNCTION { format.emphasize.booktitle }
-{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
- edition empty.or.unknown
- { booktitle emphasize }
- { booktitle empty.or.unknown
- { "" }
- { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.city }
-{
- % 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
-
- duplicate$ empty.or.unknown
- { }
- {
- city empty.or.unknown
- {
- date empty.or.unknown
- { }
- { " (" * date * ")" * }
- if$
- }
- {
- date empty.or.unknown
- { " (" * city * ")" * }
- { " (" * city * ", " * date * ")" * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION { tie.or.space.connect }
-{
- duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION { either.or.check }
-{
- empty.or.unknown
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION { format.bvolume }
-{
- % jtb: If there is a series, this is added and the volume trails after it.
- % jtb: Otherwise, "Vol" is Capitalized.
-
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.bvolume.noseries }
-{
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { "Vol." volume tie.or.space.connect}
-% { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.series }
-{
- series empty.or.unknown
- {""}
- {" {\em (" * series ")}" *}
- if$
-}
-
-FUNCTION { format.number.series }
-{
- volume empty.or.unknown
- {
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "" }
- { " (" series * ")" * }
- if$
- }
- if$
- } % { series field.or.null }
- {
- output.state mid.sentence =
- { "Number" } % gnp - changed to mixed case always
- { "Number" }
- if$
- number tie.or.space.connect series empty.or.unknown
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- {
- ""
- }
- if$
-}
-
-FUNCTION { multi.page.check }
-{
- 't :=
- #0 'multiresult :=
- { multiresult not
- t empty.or.unknown 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.or.unknown
- { "" }
- {
- pages multi.page.check
- { pages n.dashify } % gnp - removed () % jtb: removed pp.
- { pages }
- if$
- }
- if$
-}
-
-FUNCTION { format.pages.check.without.articleno }
-{ %% format pages field only if articleno is absent
- %% Stack out: pages-specification
- numpages missing$ pages missing$ and
- { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
- { }
- if$
-
- articleno empty.or.unknown
- {
- pages missing$
- { numpages }
- { format.pages }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION { format.pages.check }
-{
- pages empty.or.unknown
- { "page numbers missing in " cite$ * warning$ "" }
- { pages n.dashify }
- if$
-}
-
-FUNCTION { format.bookpages }
-{
- bookpages empty.or.unknown
- { "" }
- { bookpages "book pages" tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.named.pages }
-{
- pages empty.or.unknown
- { "" }
- { format.pages "pages" tie.or.space.connect }
- if$
-}
-
-%
-% Changed by Boris Veytsman, 2011-03-13
-% Now the word "pages" is printed even if
-% there field pages is not empty.
-%
-
-FUNCTION { format.page.count }
-{
- page.count empty.or.unknown
- { "" }
- {
- articleno empty.or.unknown
- { "numpages field, but no articleno field, in " cite$ * warning$ }
- { }
- if$
- page.count "pages" tie.or.space.connect
- }
- if$
-}
-
-FUNCTION { format.articleno.numpages }
-{
- %% There are seven possible outputs, depending on which fields are set.
- %%
- %% These four are handled here:
- %%
- %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
- %% articleno, numpages -> "Article articleno-value, numpages-value pages"
- %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
- %% articleno -> "Article articleno-value" and warn about missing numpages
- %%
- %% The remaining three have already been handled by
- %% format.pages.check.without.articleno:
- %%
- %% numpages, pages -> "pages-value"
- %% numpages -> "numpages-value"
- %% pages -> "pages-value"
-
- articleno empty.or.unknown
- {
- numpages empty.or.unknown
- { }
- { "require articleno with numpages field in " cite$ * warning$ }
- if$
- ""
- }
- {
- numpages empty.or.unknown
- {
- pages empty.or.unknown
- {
- "require pages or numpages fields with articleno field in " cite$ * warning$
- "" 'page.count :=
- }
- { reduce.pages.to.page.count }
- if$
- }
- { numpages 'page.count := }
- if$
-
- %% The Article number is now handled in format.day.month.year because
- %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
- %% over "Digital Libraries 12, 3 (July 2008), Article 5"
- %% format.articleno output
- format.page.count
- }
- if$
-}
-
-FUNCTION { format.journal.volume.number.day.month.year }
-{
- % By Young (and Spencer)
- % GNP - fixed bugs with missing volume, number, and/or pages
- %
- % Format journal, volume, number, pages for article types.
- %
- journal empty.or.unknown
- { "no journal in " cite$ * warning$
- "" }
-% { journal emphasize.with.italic.correction }
- {
- journal "Journal of the ACM" =
- { "{\it J. ACM}" }
- {
- journal "American Mathematical Society Translations" =
- { "{\it Amer. Math. Soc. Transl.}" }
- {
- journal "Bulletin of the American Mathematical Society" =
- { "{\it Bull. Amer. Math. Soc.}" }
- {
- journal "Proceedings of the American Mathematical Society" =
- { "{\it Proc. Amer. Math. Soc.}" }
- {
- journal "Transactions of the American Mathematical Society" =
- { "{\it Trans. Amer. Math. Soc.}" }
- {
- journal "Communications of the {ACM}" =
- { "{\it Commun. {ACM}}" }
- {
- journal "{ACM} Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "{ACM} Transactions on Mathematical Software" =
- { "{\it {ACM} Trans. Math. Software}" }
- {
- journal "{ACM} {SIGNUM} Newsletter" =
- { "{\it {ACM} {SIGNUM} Newslett.}" }
- {
- journal "American Journal of Sociology" =
- { "{\it Amer. J. Sociology}" }
- {
- journal "Journal of the American Statistical Association" =
- { "{\it J. Amer. Statist. Assoc.}" }
- {
- journal "Applied Mathematics and Computation" =
- { "{\it Appl. Math. Comput.}" }
- {
- journal "American Mathematical Monthly" =
- { "{\it Amer. Math. Monthly}" }
- {
- journal "British Journal of Mathematical and Statistical Psychology" =
- { "{\it Brit. J. Math. Statist. Psych.}" }
- {
- journal "Canadian Mathematical Bulletin" =
- { "{\it Canad. Math. Bull.}" }
- {
- journal "Journal of Computational and Applied Mathematics" =
- { "{\it J. Comput. Appl. Math.}" }
- {
- journal "Journal of Computational Physics" =
- { "{\it J. Comput. Phys.}" }
- {
- journal "Computers and Structures" =
- { "{\it Comput. \& Structures}" }
- {
- journal "The Computer Journal" =
- { "{\it Comput. J.}" }
- {
- journal "Journal of Computer and System Sciences" =
- { "{\it J. Comput. System Sci.}" }
- {
- journal "Contemporary Mathematics" =
- { "{\it Contemp. Math.}" }
- {
- journal "Crelle's Journal" =
- { "{\it Crelle's J.}" }
- {
- journal "Giornale di Mathematiche" =
- { "{\it Giorn. Mat.}" }
- {
- journal "{IEEE} Transactions on Computers" =
- { "{\it {IEEE} Trans. Comput.}" }
- {
- journal "{IEEE} Transactions on Automatic Control" =
- { "{\it {IEEE} Trans. Automat. Control}" }
- {
- journal "Proceedings of the {IEEE}" =
- { "{\it Proc. {IEEE}}" }
- {
- journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
- { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
- {
- journal "{IMA} Journal of Numerical Analysis" =
- { "{\it {IMA} J. Numer. Anal.}" }
- {
- journal "Information Processing Letters" =
- { "{\it Inform. Process. Lett.}" }
- {
- journal "Journal of the Institute of Mathematics and its Applications" =
- { "{\it J. Inst. Math. Appl.}" }
- {
- journal "International Journal of Control" =
- { "{\it Internat. J. Control}" }
- {
- journal "International Journal for Numerical Methods in Engineering" =
- { "{\it Internat. J. Numer. Methods Engrg.}" }
- {
- journal "International Journal of Supercomputing Applications" =
- { "{\it Internat. J. Supercomputing Applic.}" }
- {
- journal "Journal of Research of the National Bureau of Standards" =
- { "{\it J. Res. Nat. Bur. Standards}" }
- {
- journal "Linear Algebra and its Applications" =
- { "{\it Linear Algebra Appl.}" }
- {
- journal "Journal of Mathematical Analysis and Applications" =
- { "{\it J. Math. Anal. Appl.}" }
- {
- journal "Mathematische Annalen" =
- { "{\it Math. Ann.}" }
- {
- journal "Journal of Mathematical Physics" =
- { "{\it J. Math. Phys.}" }
- {
- journal "Mathematics of Computation" =
- { "{\it Math. Comp.}" }
- {
- journal "Mathematica Scandinavica" =
- { "{\it Math. Scand.}" }
- {
- journal "Mathematical Tables and Other Aids to Computation" =
- { "{\it Math. Tables Aids Comput.}" }
- {
- journal "Numerische Mathematik" =
- { "{\it Numer. Math.}" }
- {
- journal "Pacific Journal of Mathematics" =
- { "{\it Pacific J. Math.}" }
- {
- journal "Journal of Parallel and Distributed Computing" =
- { "{\it J. Parallel and Distrib. Comput.}" }
- {
- journal "Parallel Computing" =
- { "{\it Parallel Comput.}" }
- {
- journal "Philosophical Magazine" =
- { "{\it Philos. Mag.}" }
- {
- journal "Proceedings of the National Academy of Sciences of the USA" =
- { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
- {
- journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
- { "{\it Quart. J. Math. Oxford Ser. (2)}" }
- {
- journal "Quarterly of Applied Mathematics" =
- { "{\it Quart. Appl. Math.}" }
- {
- journal "Review of the International Statisical Institute" =
- { "{\it Rev. Inst. Internat. Statist.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics" =
- { "{\it J. Soc. Indust. Appl. Math.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
- { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
- {
- journal "{SIAM} Journal on Algebraic and Discrete Methods" =
- { "{\it {SIAM} J. Algebraic Discrete Methods}" }
- {
- journal "{SIAM} Journal on Applied Mathematics" =
- { "{\it {SIAM} J. Appl. Math.}" }
- {
- journal "{SIAM} Journal on Computing" =
- { "{\it {SIAM} J. Comput.}" }
- {
- journal "{SIAM} Journal on Matrix Analysis and Applications" =
- { "{\it {SIAM} J. Matrix Anal. Appl.}" }
- {
- journal "{SIAM} Journal on Numerical Analysis" =
- { "{\it {SIAM} J. Numer. Anal.}" }
- {
- journal "{SIAM} Review" =
- { "{\it {SIAM} Rev.}" }
- {
- journal "{SIAM} Journal on Scientific and Statistical Computing" =
- { "{\it {SIAM} J. Sci. Statist. Comput.}" }
- {
- journal "Software Practice and Experience" =
- { "{\it Software Prac. Experience}" }
- {
- journal "Statistical Science" =
- { "{\it Statist. Sci.}" }
- {
- journal "{USSR} Computational Mathematics and Mathematical Physics" =
- { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of {VLSI} and Computer Systems" =
- { "{\it J. {VLSI} Comput. Syst.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
- { "{\it Z. Angew. Math. Mech.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Physik" =
- { "{\it Z. Angew. Math. Phys.}" }
- {
- journal "ACM Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "ACM Transactions on Mathematical Software" =
- { "{\it ACM Trans. Math. Software}" }
- {
- journal "ACM {SIGNUM} Newsletter" =
- { "{\it ACM {SIGNUM} Newslett.}" }
- {
- journal "IEEE Transactions on Computers" =
- { "{\it IEEE Trans. Comput.}" }
- {
- journal "IEEE Transactions on Automatic Control" =
- { "{\it IEEE Trans. Automat. Control}" }
- {
- journal "Proceedings of the IEEE" =
- { "{\it Proc. IEEE}" }
- {
- journal "IEEE Transactions on Aerospace and Electronic Systems" =
- { "{\it IEEE Trans. Aerospace Electron. Systems}" }
- {
- journal "IMA Journal of Numerical Analysis" =
- { "{\it IMA J. Numer. Anal.}" }
- {
- journal "SIAM Journal on Algebraic and Discrete Methods" =
- { "{\it SIAM J. Algebraic Discrete Methods}" }
- {
- journal "SIAM Journal on Applied Mathematics" =
- { "{\it SIAM J. Appl. Math.}" }
- {
- journal "SIAM Journal on Computing" =
- { "{\it SIAM J. Comput.}" }
- {
- journal "SIAM Journal on Matrix Analysis and Applications" =
- { "{\it SIAM J. Matrix Anal. Appl.}" }
- {
- journal "SIAM Journal on Numerical Analysis" =
- { "{\it SIAM J. Numer. Anal.}" }
- {
- journal "SIAM Review" =
- { "{\it SIAM Rev.}" }
- {
- journal "SIAM Journal on Scientific and Statistical Computing" =
- { "{\it SIAM J. Sci. Statist. Comput.}" }
- {
- journal "USSR Computational Mathematics and Mathematical Physics" =
- { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of VLSI and Computer Systems" =
- { "{\it J. VLSI Comput. Syst.}" }
- {
- journal "Communications of the ACM" =
- { "{\it Commun. ACM}" }
- %% If no match with cases needing special handling, just output journal name
- { journal emphasize.with.italic.correction }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
-
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "no number and no volume in " cite$ * warning$ "" * }
- { " " * " {" * volume * "}" * }
- if$
- }
- {
- volume empty.or.unknown
- {
- "unusual to have number, but no volume, for " cite$ * warning$
- " " * number *
- }
- { " " * volume comma " " * number * * }
- if$
- }
- if$
-
- format.day.month.year *
-}
-
-FUNCTION { format.chapter.pages }
-{
- chapter empty.or.unknown
- 'format.pages
- { type empty.or.unknown
- { "Chapter" } % gnp - changed to mixed case
- { type "t" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty.or.unknown
- {"page numbers missing in " cite$ * warning$} % gnp - added check
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION { format.in.emphasize.booktitle }
-{ % jtb: format for collections or proceedings not appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " format.emphasize.booktitle * }
- if$
-}
-
-FUNCTION { format.in.booktitle }
-{ % jtb: format for proceedings appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " booktitle * }
- if$
-}
-
-FUNCTION { format.in.ed.booktitle }
-{
- booktitle empty.or.unknown
- { "" }
- { editor empty.or.unknown
- { "In " format.emphasize.booktitle * }
- % jtb: swapped editor location
- { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
- if$
- }
- if$
-}
-
-FUNCTION { format.thesis.type }
-{ % call with default type on stack top
- type empty.or.unknown
- 'skip$ % use default type
- {
- pop$ % discard default type
- % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
- type
- }
- if$
-}
-
-FUNCTION { format.tr.number }
-{
- type empty.or.unknown
- { "Tech. Rep." }
- 'type
- if$
- number empty.or.unknown
- { "t" change.case$ }
- %% LOOKS BAD: { "." * number tie.or.space.connect }
- %% Prefer "Research report RJ687." to "Research report. RJ687."
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.advisor }
-{
- advisor empty.or.unknown
- { "" }
- { "Advisor(s) " advisor * }
- if$
-}
-
-FUNCTION { format.article.crossref }
-{ "See"
- "\cite{" * 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.or.unknown
- { "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.or.unknown
- editor field.or.null author field.or.null =
- or
- { key empty.or.unknown
- { series empty.or.unknown
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { "{\em " * series * "\/}" * }
- if$
- }
- { key * }
- if$
- }
- { format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { format.incoll.inproc.crossref }
-{ "See"
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { format.lab.names }
-{
- % 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.
-
- '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.or.unknown
- { key empty.or.unknown
- { "no key, author in " cite$ * warning$
- cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION { author.key.organization.label }
-{ % added - gnp. Provide label formatting by organization if author is null.
- author empty.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { editor empty.or.unknown
- { key empty.or.unknown
- { "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
- type$ "periodical" =
- 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.or.unknown % generate the full label citation information.
- {
- editor empty.or.unknown
- {
- organization empty.or.unknown
- {
- key empty.or.unknown
- {
- "no author, editor, organization, or key in " cite$ * warning$
- "??"
- }
- { key }
- if$
- }
- { 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$
- %% acmtrans.bst alphanumeric style:
- %%: "\bibitem[\protect\citeauthoryear{" write$
- %%: calc.label write$
- %%: sort.year write$
- %%: "}]%" writeln
- %%: " {" write$
- %%: cite$ write$
- %%: "}" writeln
- %% acm-plain.bst numeric style:
- newline$
- "\bibitem{" write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url }
-{ % enter and return with stack empty
- %% We switch now from buffered output to output of complete lines, so
- %% that the Issue .. URL data have their own lines, and are less likely
- %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
- %% lines longer than 79 characters, backtracking to what it thinks is
- %% a break point in the string. Any such wrapping MUST be undone to
- %% prevent percent-newline from appearing in DOIs and URLs. The
- %% output data are intentionally wrapped in \showxxx{} macros at
- %% beginning of line, and that supply their own punctuation (if they
- %% are not defined to suppress output entirely), to make it easier for
- %% other software to recover them from .bbl files.
- %%
- %% It also makes it possible to later change the macro definitions
- %% to suppress particular output values, or alter their appearance.
- %%
- %% Note that it is possible for theses, technical reports, and
- %% manuals to have ISBNs, and anything that has an ISBN may also
- %% have an ISSN. When there are no values for these keys, there
- %% is no output generated for them here.
-
- "\newblock" writeln
- after.block 'output.state :=
-
- output.issue
- output.isbn
- output.coden % CODEN is functionally like ISSN, so output them sequentially
- output.issn
- output.lccn
- output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
- output.url % but ACM wants URL last
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note
- }
- if$
- ""
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note.check
- }
- if$
- ""
-}
-
-FUNCTION { article }
-{
- output.bibitem
-
- author empty.or.unknown
- {
- editor empty.or.unknown
- { "neither author and editor supplied for " cite$ * warning$ }
- { format.editors "editor" output.check }
- if$
- }
- { format.authors "author" output.check }
- if$
-
- author format.no.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- new.block
- howpublished output
-
- crossref missing$
- { format.journal.volume.number.day.month.year }
- {
- "cross reference in @Article{...} is unusual" warning$
- format.article.crossref output.nonnull
- }
- if$
- output
-
- format.pages.check.without.articleno output
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { book }
-{
- output.bibitem
- author empty.or.unknown
- { 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
- fin.sentence
- pages empty.or.unknown
- { format.bookpages } % use bookpages when pages empty
- { format.pages.check "pages" tie.or.space.connect }
- if$
- output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inbook }
-{
- output.bibitem
- author empty.or.unknown
- { 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.bookpages output
- format.chapter.pages
- "chapter and pages" output.check % jtb: moved from before publisher
- }
- {
- format.bookpages output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { incollection }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "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.bookpages output
- 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$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inproceedings }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- howpublished output.dot.space
- crossref missing$
- {
- journal missing$ % jtb: proceedings appearing in journals
- { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
- format.series output.removenospace
- format.editors.fml output.dot.space
- format.bvolume.noseries output
- new.sentence
- organization output
- publisher "publisher" output.check % jtb: require publisher (?)
- address "address" output.check % jtb: require address
- format.bookpages output
- }
- {
- format.in.booktitle format.city "booktitle" output.check
- format.editors.fml output
- new.sentence
- format.journal.volume.number.day.month.year output
- }
- if$
- format.articleno output
- format.pages.check.without.articleno output
- }
- {
- format.incoll.inproc.crossref output.nonnull
- format.articleno output
- format.pages.check.without.articleno output
- }
- if$
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { conference } { inproceedings }
-
-FUNCTION { manual }
-{
- output.bibitem
- author empty.or.unknown
- { editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { mastersthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "M.S.\ thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- "" output.nonnull.dot.space
- output.day.month.year
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { phdthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Ph.D. thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION {format.date}
-{ year empty.or.unknown
- { month empty.or.unknown
- {
- "" % output empty date if year/month both empty
- day empty.or.unknown
- { }
- { "there's a day but no month or year in " cite$ * warning$ }
- if$
- }
- { "there's a month but no year in " cite$ * warning$
- month
- day empty.or.unknown
- { }
- { " " * day * }
- if$
- }
- if$
- }
- { month empty.or.unknown
- {
- year % output only year if month empty
- day empty.or.unknown
- { }
- { "there's a day and year but no month in " cite$ * warning$ }
- if$
- }
- {
- month " " *
- day empty.or.unknown
- { }
- { day * ", " * }
- if$
- year *
- }
- if$
- }
- if$
-}
-
-FUNCTION {new.block.checka}
-{
- empty.or.unknown
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { periodical }
-{
- output.bibitem
- editor empty.or.unknown
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- title emphasize "title" output.check
- format.date output
- new.sentence
- publisher output
- address output
- howpublished new.block.checka
- howpublished output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { proceedings }
-{
- output.bibitem
- editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { techreport }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.btitle "title" output.check
- new.block
- format.tr.number output % jtb: moved month ...
- institution "institution" output.check
- address output
- new.sentence
- format.named.pages output
- % ACM omits year at end in transactions style
- % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.sentence
- output.day.month.year % UTAH
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note.check
- fin.entry
-}
-
-FUNCTION { default.type } { misc }
-
-%%% ACM journal-style month definitions: full name if 1--5 letters, else
-%%% abbreviation of 3 or 4 characters and a dot
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"Mar."}
-
-MACRO {apr} {"Apr."}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"Aug."}
-
-MACRO {sep} {"Sept."}
-
-MACRO {oct} {"Oct."}
-
-MACRO {nov} {"Nov."}
-
-MACRO {dec} {"Dec."}
-
-%%% ====================================================================
-%%% I M P O R T A N T C H A N G E
-%%%
-%%% For the 2009 release of the official acm-*.bst files, there are to
-%%% be NO predefined journal abbreviations in those style files.
-%%%
-%%% ACM may later develop an official list of mappings of full journal
-%%% names of commonly-cited journals to ACM-preferred abbreviations, but
-%%% authors should consider that use of any of these commented-out
-%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
-%%% its own @String{name = "value"} definitions.
-%%%
-%%% Use of journal (and publisher and address) @String{...}
-%%% abbreviations, as opposed to explicit value assignments such as
-%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
-%%% bibliographic databases, because it makes it easier for journal
-%%% production staff to replace those definitions by publisher-preferred
-%%% abbreviations when articles are typeset for publication.
-%%%
-%%% For historical reasons, and because some of these abbreviations are
-%%% used in other (non-ACM) bibliography style files, they are preserved
-%%% here in comments. Future releases of the acm*-.bst files are likely
-%%% to remove them entirely.
-%%% ====================================================================
-%%%
-%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {al} {"Ada Lett."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {bit} {"Bit"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cj} {"Comput. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
-%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
-%%% ====================================================================
-
-READ
-
-FUNCTION { sortify }
-{
- purify$
- "l" change.case$
-}
-
-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 "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
- 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.or.unknown
- { key empty.or.unknown
- { "to sort, need author or key in " cite$ * warning$
- "" }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION { author.editor.sort }
-{
- author empty.or.unknown
- {
- editor empty.or.unknown
- {
- key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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$
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE { presort }
-
-SORT % by label, year, author/editor, title
-
-STRINGS { longest.label }
-
-INTEGERS { number.label longest.label.width }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
-}
-
-FUNCTION {longest.label.pass}
-{ number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {longest.label.pass}
-
-FUNCTION { initialize.extra.label.stuff }
-{ #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'last.extra.num :=
-}
-
-EXECUTE {initialize.extra.label.stuff}
-
-FUNCTION { begin.bib }
-{
- %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
- %% Set to #1 to show both 10-digit and 13-digit ISBNs.
- #1 'show-isbn-10-and-13 :=
-
- "%%% -*-BibTeX-*-" writeln
- "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
- "" writeln
-
- preamble$ empty.or.unknown
- 'skip$
- { preamble$ writeln }
- if$
- "\begin{thebibliography}{" longest.label * "}" * writeln
- "" writeln
- "%%% ====================================================================" writeln
- "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
- "%%% customized versions of any of these macros before the \bibliography" writeln
- "%%% command. Each of them MUST provide its own final punctuation," writeln
- "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
- "%%% do not use final punctuation, in order to avoid confusing it with" writeln
- "%%% the Web address." writeln
- "%%%" writeln
- "%%% To suppress output of a particular field, define its macro to expand" writeln
- "%%% to an empty string, or better, \unskip, like this:" writeln
- "%%%" writeln
- "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
- "%%%" writeln
- "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
- "%%%" writeln
- "%%% ====================================================================" writeln
- "" writeln
-
- %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
- %% macro wrappers expand to \unskip, discarding their values and unwanted
- %% space.
- %%
- %% For other publications, prior definitions like these may be useful:
- %%
- %% Plain TeX:
- %% \def \showCODEN #1{CODEN #1.}
- %% \def \showISSN #1{ISSN #1.}
- %% \def \showLCCN #1{LCCN #1.}
- %%
- %% LaTeX:
- %% \newcommand{\showCODEN}[1]{CODEN #1.}
- %% \newcommand{\showISSN}[1]#1{ISSN #1.}
- %% \newcommand{\showLCCN}[1]{LCCN #1.}
-
- "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
- "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
- % ACM styles omit ISBNs, but they can be included by suitable definitions of
- % \showISBNx and \showISBNxiii before the .bbl file is read
- "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
- "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
- "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
- "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
- "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
- "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
- "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION { end.bib }
-{
- newline$
- "\end{thebibliography}"
- writeln
-}
-
-EXECUTE {end.bib}
Deleted: trunk/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,3339 +0,0 @@
-%%% -*-BibTeX-*-
-%%% ====================================================================
-%%% @BibTeX-style-file{
-%%% author = "Nelson H. F. Beebe and many others",
-%%% version = "1.03",
-%%% date = "15 April 2011",
-%%% time = "23:52:46 EDT",
-%%% filename = "acm-alpha.bst",
-%%% address = "University of Utah
-%%% Department of Mathematics, 110 LCB
-%%% 155 S 1400 E RM 233
-%%% Salt Lake City, UT 84112-0090
-%%% USA",
-%%% telephone = "+1 801 581 5254",
-%%% FAX = "+1 801 581 4148",
-%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "47407 3339 11966 90008",
-%%% email = "beebe at math.utah.edu, beebe at acm.org,
-%%% beebe at computer.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "ACM alpha bibliography style; BibTeX",
-%%% license = "public domain",
-%%% supported = "yes",
-%%% abstract = "",
-%%% docstring = "The checksum field above contains a CRC-16
-%%% checksum as the first value, followed by the
-%%% equivalent of the standard UNIX wc (word
-%%% count) utility output of lines, words, and
-%%% characters. This is produced by Robert
-%%% Solovay's checksum utility.",
-%%% }
-%%% ====================================================================
-
-% "ACM alpha" BibTeX style, derived by minimal modifications from acm-trans.bst
-% "ACM Transactions" BibTeX style, acmtrans-v2.bst
-% for BibTeX version 0.99c, LaTeX version 3.141
-% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
-% Revised 28-MARCH-1996
-% Revised 30-JUNE-1995
-% Revised 15-JAN-1996
-% Revised 17-APRIL-2008
-% Revised 13-MARCH-2011
-% Revised 15-APRIL-2011
-%
-% 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.
-%
-% Version 2.2
-% Johny Sebatian and Sanjeev Sharma
-% Aptara corp (c) 2008
-%
-% History
-%
-% Date: 28th April 2008
-%
-% 1. Avoid 'repeating' the 'month' values.
-% 2. Avoid incorrectly italicizing the volume number.
-% 3. Avoid non italicizing certain titles (book, inproceedings etc).
-% 4. NO series if there is NO volume.
-% 5. Sorting of reference with first surname.
-% 6. Article no added for Inproceedings.
-%
-% Date: 07th May 2008
-%
-% 1. Abbreviation list added
-%
-% 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.journal.volume.number.
-% - 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 at 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 at cgrg.ohio.state.edu or 71160.3141 at 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
- advisor
- 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
- % New keys recognized for acmtrans-v2.bst
- issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
- articleno
- day % UTAH: needed for newspapers, weeklies, bi-weeklies
- doi % UTAH
- url % UTAH
- bookpages % UTAH
- numpages
- lastaccessed % UTAH: used only for @Misc{...}
- coden % UTAH
- isbn % UTAH
- isbn-13 % UTAH
- issn % UTAH
- lccn % UTAH
- }
- {}
- { label label.year extra.label sort.year sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
-
-INTEGERS { nameptr namesleft numnames }
-
-INTEGERS { multiresult }
-
-INTEGERS { len }
-
-STRINGS { s t t.org u }
-
-STRINGS { last.label }
-
-STRINGS { p1 p2 p3 page.count }
-
-FUNCTION { dump.stack.1 }
-{
- duplicate$ "STACK[top] = [" swap$ * "]" * warning$
-}
-
-FUNCTION { dump.stack.2 }
-{
- duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
- swap$
- duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
- swap$
-}
-
-FUNCTION { empty.or.unknown }
-{
- %% Examine the top stack entry, and push 1 if it is empty, or
- %% consists only of whitespace, or is a string beginning with two
- %% queries (??), and otherwise, push 0.
- %%
- %% This function provides a replacement for empty$, with the
- %% convenient feature that unknown values marked by two leading
- %% queries are treated the same as missing values, and thus, do not
- %% appear in the output .bbl file, and yet, their presence in .bib
- %% file(s) serves to mark values which are temporarily missing, but
- %% are expected to be filled in eventually once more data is
- %% obtained. The TeX User Group and BibNet bibliography archives
- %% make extensive use of this practice.
- %%
- %% An empty string cannot serve the same purpose, because just as in
- %% statistics data processing, an unknown value is not the same as an
- %% empty value.
- %%
- %% At entry: stack = ... top:[string]
- %% At exit: stack = ... top:[0 or 1]
-
- duplicate$ empty$
- { pop$ #1 }
- { #1 #2 substring$ "??" = }
- if$
-}
-
-FUNCTION { writeln }
-{
- %% In BibTeX style files, the sequences
- %%
- %% ... "one" "two" output
- %% ... "one" "two" output.xxx
- %%
- %% ship "one" to the output file, possibly following by punctuation,
- %% leaving the stack with
- %%
- %% ... "two"
- %%
- %% There is thus a one-string lag in output processing that must be
- %% carefully handled to avoid duplicating a string in the output
- %% file. Unless otherwise noted, all output.xxx functions leave
- %% just one new string on the stack, and that model should be born
- %% in mind when reading or writing function code.
- %%
- %% BibTeX's asynchronous buffering of output from strings from the
- %% stack is confusing because newline$ bypasses the buffer. It
- %% would have been so much easier for newline to be a character
- %% rather than a state of the output-in-progress.
- %%
- %% The documentation in btxhak.dvi is WRONG: it says
- %%
- %% newline$ Writes onto the bbl file what's accumulated in the
- %% output buffer. It writes a blank line if and only
- %% if the output buffer is empty. Since write$ does
- %% reasonable line breaking, you should use this
- %% function only when you want a blank line or an
- %% explicit line break.
- %%
- %% write$ Pops the top (string) literal and writes it on the
- %% output buffer (which will result in stuff being
- %% written onto the bbl file when the buffer fills
- %% up).
- %%
- %% Examination of the BibTeX source code shows that write$ does
- %% indeed behave as claimed, but newline$ sends a newline character
- %% directly to the output file, leaving the stack unchanged. The
- %% first line "Writes onto ... buffer." is therefore wrong.
- %%
- %% The original BibTeX style files almost always use "write$ newline$"
- %% in that order, so it makes sense to hide that pair in a private
- %% function like this one, named after a statement in Pascal,
- %% the programming language embedded in the BibTeX Web program.
-
- write$ % output top-of-stack string
- newline$ % immediate write of newline (not via stack)
-}
-
-FUNCTION { init.state.consts }
-{
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-FUNCTION { output.nonnull }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
- 's :=
- output.state mid.sentence =
- {
- ", " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln
- "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.dot.space }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
- 's :=
- output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
- {
- ". " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.remove }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
- 's :=
- output.state mid.sentence =
- {
- " " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.removenospace }
-{ % Stack in: ... R S T Stack out: ... R T File out: S
- 's :=
- output.state mid.sentence =
- {
- "" * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output }
-{ % discard top token if empty, else like output.nonnull
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.dot.space }
-{ % discard top token if empty, else like output.nonnull.dot.space
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { output.removenospace }
-{ % discard top token if empty, else like output.nonnull.removenospace
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.removenospace
- if$
-}
-
-FUNCTION { output.check }
-{ % like output, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.check.dot.space }
-{ % like output.dot.space, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { fin.block }
-{ % functionally, but not logically, identical to fin.entry
- add.period$
- writeln
-}
-
-FUNCTION { fin.entry }
-{
- add.period$
- writeln
-}
-
-FUNCTION { new.sentence }
-{ % update sentence state, with neither output nor stack change
- output.state after.block =
- 'skip$
- {
- output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION { fin.sentence }
-{
- add.period$
- write$
- new.sentence
- ""
-}
-
-FUNCTION { new.block }
-{
- output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION { output.coden } % UTAH
-{ % output non-empty CODEN as one-line sentence (stack untouched)
- coden empty.or.unknown
- { }
- { "\showCODEN{" coden * "}" * writeln }
- if$
-}
-
-FUNCTION { format.articleno }
-{
- articleno empty.or.unknown
- { "" }
- {
- numpages empty.or.unknown
- { "articleno field, but no numpages field, in " cite$ * warning$ }
- { }
- if$
- "Article " articleno *
- }
- if$
-}
-
-FUNCTION { format.year }
-{ % push year string or "????" onto output stack
- %% Because year is a mandatory field, we always force SOMETHING
- %% to be output
- year empty.or.unknown
- { "????" }
- { year }
- if$
-}
-
-FUNCTION { format.day.month }
-{ % push "day month " or "month " or "" onto output stack
- day empty.or.unknown
- {
- month empty.or.unknown
- { "" }
- { month " " *}
- if$
- }
- {
- month empty.or.unknown
- { "" }
- { day " " * month * " " *}
- if$
- }
- if$
-}
-
-FUNCTION { format.day.month.year } % UTAH
-{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- % acm-*.bst addition: prefix parenthesized date string with
- % ", Article nnn "
- articleno empty.or.unknown
- { "" }
- { ", " format.articleno * }
- if$
- " (" * format.day.month * format.year * ")" *
-}
-
-FUNCTION { output.day.month.year } % UTAH
-{ % if month is empty value, do nothing; else output stack top and
- % leave with new top string "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- format.day.month.year
- output.nonnull.remove
-}
-
-FUNCTION { strip.doi } % UTAH
-{ % Strip any Web address prefix to recover the bare DOI, leaving the
- % result on the output stack, as recommended by CrossRef DOI
- % documentation.
- % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
- % "10.1145/1534530.1534545". That is later typeset and displayed as
- % doi:10.1145/1534530.1534545 as the LAST item in the reference list
- % entry. Publisher Web sites wrap this with a suitable link to a real
- % URL to resolve the DOI, and the master http://dx.doi.org/ address is
- % preferred, since publisher-specific URLs can disappear in response
- % to economic events. All journals are encouraged by the DOI
- % authorities to use that typeset format and link procedures for
- % uniformity across all publications that include DOIs in reference
- % lists.
- % The numeric prefix is guaranteed to start with "10.", so we use
- % that as a test.
- doi #1 #3 substring$ "10." =
- { doi }
- {
- doi #1 #7 substring$ "http://" =
- {
- doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
-
- "INTERNAL STYLE-FILE ERROR" 's :=
-
- % search for next "/" and assign its suffix to s
-
- { t text.length$ }
- {
- t #1 #1 substring$ "/" =
- {
- % save rest of string as true DOI (should be 10.xxxx/yyyy)
- t #2 t text.length$ #1 - substring$ 's :=
- "" 't := % empty string t terminates the loop
- }
- {
- % discard first character and continue loop: t <= substring(t,2,last)
- t #2 t text.length$ #1 - substring$ 't :=
- }
- if$
- }
- while$
-
- % check for valid DOI (should be 10.xxxx/yyyy)
- s #1 #3 substring$ "10." =
- { }
- { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
- if$
-
- s % push the stripped DOI on the output stack
-
- }
- {
- "unrecognized DOI value [" doi * "]" * warning$
- doi % push the unrecognized original DOI on the output stack
- }
- if$
- }
- if$
-}
-
-%
-% Change by BV: added standard prefix to URL
-%
-FUNCTION { output.doi } % UTAH
-{ % output non-empty DOI as one-line sentence (stack untouched)
- doi empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which then requires
- %% manual (or automated) editing of the .bbl file to repair.
- %% The \url{} macro strips percent-newlines, and is thus safe in
- %% the presence of the line wrapping, but \path|...| and
- %% \verb|...| do not.
- "\showDOI{%" writeln
- "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
- }
- if$
-}
-
-FUNCTION { output.isbn } % UTAH
-{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
- show-isbn-10-and-13
- {
- %% show both 10- and 13-digit ISBNs
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- isbn-13 empty.or.unknown
- { }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- {
- %% show 10-digit ISBNs only if 13-digit ISBNs not available
- isbn-13 empty.or.unknown
- {
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- if$
-}
-
-FUNCTION { output.issn } % UTAH
-{ % output non-empty ISSN as one-line sentence (stack untouched)
- issn empty.or.unknown
- { }
- { "\showISSN{" issn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.issue }
-{ % output non-empty issue number as a one-line sentence (stack untouched)
- issue empty.or.unknown
- { }
- { "Issue " issue * "." * writeln }
- if$
-}
-
-FUNCTION { output.lccn } % UTAH
-{ % return with stack untouched
- lccn empty.or.unknown
- { }
- { "\showLCCN{" lccn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note.check } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { "empty note in " cite$ * warning$ }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-%
-% Changes by BV 2011/04/15. Do not output
-% url if doi is defined
-%
-FUNCTION { output.url } % UTAH
-{ % return with stack untouched
- % output URL and associated lastaccessed fields
- doi empty.or.unknown
- {
- url empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which would require
- %% manual (or automated) editing of the .bbl file to repair. However,
- %% the \url{} macro handles the unwrapping job automatically.
- "\showURL{%" writeln
- lastaccessed empty.or.unknown
- { "" }
- { "Retrieved " lastaccessed * " from " * }
- if$
-
- %% The URL field may contain a semicolon-separated list of Web
- %% addresses, and we locate and wrap each of them in \url{...}.
- %% The simplistic approach of putting the entire list into the
- %% macro argument is that the semicolons are typeset in a
- %% typewriter font, and no space follows them.
- %%
- %% We therefore replace the original code
- %% "\url{" * url * "}}" * writeln
- %% with this character-at-a-time loop:
-
- "\url{" *
-
- url 't := % get modifiable copy of URL list
-
- { t text.length$ }
- {
- t #1 #1 substring$ ";" =
- { % then split argument at separator
- "};" * writeln
- "\url{"
- }
- { % else concatenate nonblank character to argument
- t #1 #1 substring$ " " =
- { }
- { t #1 #1 substring$ * }
- if$
- }
- if$
-
- t #2 t text.length$ #1 - substring$ 't :=
- }
- while$
-
- "}}" * writeln
- }
- if$
- }
- { }
- if$
-}
-
-FUNCTION { output.year.check }
-{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
- year empty.or.unknown
- { "empty year in " cite$ * warning$ }
- { write$
- " " year * extra.label *
- mid.sentence 'output.state :=
- }
- if$
-}
-
-FUNCTION { not }
-{
- { #0 }
- { #1 }
- if$
-}
-
-FUNCTION { and }
-{
- 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION { or }
-{
- { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION { le }
-{
- %% test whether first number is less than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 <= n2 then 1 else 0
-
- %% "DEBUG: le " cite$ * warning$
- > { #0 } { #1 } if$
-}
-
-FUNCTION { ge }
-{
- %% test whether first number is greater than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 >= n2 then 1 else 0
-
- %% "DEBUG: ge " cite$ * warning$
- < { #0 } { #1 } if$
-}
-
-FUNCTION { is.leading.digit }
-{
- %% test whether first character of string is a digit
- %% stack in: string
- %% stack out: if first-char-is-digit then 1 else 0
-
- #1 #1 substring$ % replace string by string[1:1]
- duplicate$ % string[1:1] string[1:1]
- chr.to.int$
- "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
- swap$ % 0-or-1 string[1:1]
- chr.to.int$
- "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
- and
-}
-
-FUNCTION { skip.digits }
-{
- %% skip over leading digits in string
- %% stack in: string
- %% stack out: rest-of-string leading-digits
-
- %% "DEBUG: enter skip.digits " cite$ * warning$
-
- %% dump.stack.1
-
- duplicate$
- 't :=
- 't.org :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
- t is.leading.digit
- { t #2 t text.length$ #1 - substring$ }
- {
- t 'u :=
- ""
- }
- if$
- 't :=
- }
- while$
-
- u % rest of string
- t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
-
- %% "DEBUG: t.org = [" t.org * "]" * warning$
- %% "DEBUG: u = [" u * "]" * warning$
-
- %% dump.stack.2
-
- %% "DEBUG: leave skip.digits " cite$ * warning$
-}
-
-FUNCTION { skip.nondigits }
-{
- %% skip over leading nondigits in string
- %% stack in: string
- %% stack out: rest-of-string
-
- %% "DEBUG: enter skip.nondigits " cite$ * warning$
-
- 't :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.nondigits t = [" t * "]" * warning$
- t is.leading.digit
- {
- t 'u :=
- ""
- }
- { t #2 t text.length$ #1 - substring$ }
- if$
- 't :=
- }
- while$
-
- u % rest of string
-
- %% dump.stack.1
- %% "DEBUG: leave skip.nondigits " cite$ * warning$
-}
-
-FUNCTION { parse.next.number }
-{
- %% stack in: string
- %% stack out: rest-of-string next-numeric-part-of-string
- %% Example:
- %% stack in: "123:1--123:59"
- %% stack out: ":1--123:59" "123"
-
- 's :=
- s skip.nondigits 's :=
- s skip.digits
-}
-
-FUNCTION { reduce.pages.to.page.count }
-{
- %% Stack in: arbitrary-and-unused
- %% Stack out: unchanged
- %%
- %% For the new-style pagination with article number and numpages or
- %% pages, we expect to have BibTeX entries containing something like
- %% articleno = "17",
- %% pages = "1--23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% numpages = "23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% pages = "17:1--17:23",
- %% with output "Article 17, 23 pages",
- %%
- %% If articleno is missing or empty, then we should output "1--23",
- %% "23" (with a warning of a missing articleno), or "17:1--17:23",
- %% respectively.
-
- %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
-
- %% "DEBUG: pages = [" pages * "]" * warning$
-
- pages
- parse.next.number 'p1 :=
- parse.next.number 'p2 :=
- parse.next.number 'p3 :=
- parse.next.number 'page.count :=
-
- duplicate$
- empty.or.unknown
- { }
- {
- duplicate$ "unexpected trailing garbage [" swap$ *
- "] after n:p1--n:p2 in pages = [" *
- pages *
- "] in " *
- cite$ *
- warning$
- }
- if$
-
- pop$
-
- %% "DEBUG: reduce.pages.to.page.count: "
- %% " p1 = " p1 * *
- %% " p2 = " p2 * *
- %% " p3 = " p3 * *
- %% " p4 = " page.count * *
- %% " in " cite$ * * warning$
-
- p1 p3 = p2 "1" = and numpages empty.or.unknown and
- { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
- {
- p2 'page.count :=
- "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
- }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
-}
-
-FUNCTION { new.block.checkb }
-{ % issue a new.block only if at least one of top two stack strings is not empty
- empty.or.unknown
- swap$ empty.or.unknown
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { field.or.null }
-{ % convert empty value to null string, else return value
- duplicate$ empty.or.unknown
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION { emphasize }
-{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "}" * }
- if$
-}
-
-FUNCTION { emphasize.with.italic.correction }
-{ % convert empty string to null string, or emphasize with a trailing italic correction
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "\/}" * }
- if$
-}
-
-FUNCTION { comma }
-{ % convert empty string to null string, or brace string and add trailing comma
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{" swap$ * "}," * }
- if$
-}
-
-FUNCTION { format.names }
-{
- % 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.
-
- 's :=
- #1 'nameptr := % nameptr = 1;
- s num.names$ 'numnames := % numnames = num.name$(s);
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 =
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- if$
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{\sc 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 { 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 "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
-
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{others}" =
- { " {et~al\mbox{.}}" * }
- { " {and} " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr := % nameptr += 1;
- namesleft #1 - 'namesleft := % namesleft =- 1;
- }
- while$
-}
-
-FUNCTION { format.authors }
-{
- author empty.or.unknown
- { "" }
- { author format.names add.period$} % jtb: add period if none before
- if$
-}
-
-FUNCTION { format.key }
-{
- empty.or.unknown
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION { format.no.key }
-{
- empty.or.unknown
- { "" }
- { "" }
- if$
-}
-
-FUNCTION { format.editors.fml }
-{
- % 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.
-
- editor empty.or.unknown
- { "" }
- {
- editor format.names.fml editor num.names$ #1 >
- { " (Eds.)" * }
- { " (Ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.editors }
-{ % format editor names for use in labels, last names first.
- editor empty.or.unknown
- { "" }
- {
- editor format.names
- editor num.names$ #1 >
- { " (Eds.)." * }
- { " (Ed.)." * }
- if$
- }
- if$
-}
-
-FUNCTION { format.articletitle }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { "\showarticletitle{" title * "}" * }
- % Use this for downcase title style:
- % { \showarticletitle{" title "t" change.case$ * "}" * }
- if$
-}
-
-FUNCTION { format.title }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { title }
- % Use this for downcase title style:
- % { title "t" change.case$ }
- if$
-}
-
-FUNCTION { n.dashify }
-{
- 't :=
- ""
- { t empty.or.unknown 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.or.unknown
- { title emphasize }
- { title empty.or.unknown
- { title emphasize } % jtb: what is this supposed to do ?!?
- { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
- if$
- }
- if$
-}
-
-FUNCTION { format.emphasize.booktitle }
-{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
- edition empty.or.unknown
- { booktitle emphasize }
- { booktitle empty.or.unknown
- { "" }
- { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.city }
-{
- % 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
-
- duplicate$ empty.or.unknown
- { }
- {
- city empty.or.unknown
- {
- date empty.or.unknown
- { }
- { " (" * date * ")" * }
- if$
- }
- {
- date empty.or.unknown
- { " (" * city * ")" * }
- { " (" * city * ", " * date * ")" * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION { tie.or.space.connect }
-{
- duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION { either.or.check }
-{
- empty.or.unknown
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION { format.bvolume }
-{
- % jtb: If there is a series, this is added and the volume trails after it.
- % jtb: Otherwise, "Vol" is Capitalized.
-
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.bvolume.noseries }
-{
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { "Vol." volume tie.or.space.connect}
-% { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.series }
-{
- series empty.or.unknown
- {""}
- {" {\em (" * series ")}" *}
- if$
-}
-
-FUNCTION { format.number.series }
-{
- volume empty.or.unknown
- {
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "" }
- { " (" series * ")" * }
- if$
- }
- if$
- } % { series field.or.null }
- {
- output.state mid.sentence =
- { "Number" } % gnp - changed to mixed case always
- { "Number" }
- if$
- number tie.or.space.connect series empty.or.unknown
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- {
- ""
- }
- if$
-}
-
-FUNCTION { multi.page.check }
-{
- 't :=
- #0 'multiresult :=
- { multiresult not
- t empty.or.unknown 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.or.unknown
- { "" }
- {
- pages multi.page.check
- { pages n.dashify } % gnp - removed () % jtb: removed pp.
- { pages }
- if$
- }
- if$
-}
-
-FUNCTION { format.pages.check.without.articleno }
-{ %% format pages field only if articleno is absent
- %% Stack out: pages-specification
- numpages missing$ pages missing$ and
- { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
- { }
- if$
-
- articleno empty.or.unknown
- {
- pages missing$
- { numpages }
- { format.pages }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION { format.pages.check }
-{
- pages empty.or.unknown
- { "page numbers missing in " cite$ * warning$ "" }
- { pages n.dashify }
- if$
-}
-
-FUNCTION { format.bookpages }
-{
- bookpages empty.or.unknown
- { "" }
- { bookpages "book pages" tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.named.pages }
-{
- pages empty.or.unknown
- { "" }
- { format.pages "pages" tie.or.space.connect }
- if$
-}
-
-%
-% Changed by Boris Veytsman, 2011-03-13
-% Now the word "pages" is printed even if
-% there field pages is not empty.
-%
-
-FUNCTION { format.page.count }
-{
- page.count empty.or.unknown
- { "" }
- {
- articleno empty.or.unknown
- { "numpages field, but no articleno field, in " cite$ * warning$ }
- { }
- if$
- page.count "pages" tie.or.space.connect
- }
- if$
-}
-
-FUNCTION { format.articleno.numpages }
-{
- %% There are seven possible outputs, depending on which fields are set.
- %%
- %% These four are handled here:
- %%
- %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
- %% articleno, numpages -> "Article articleno-value, numpages-value pages"
- %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
- %% articleno -> "Article articleno-value" and warn about missing numpages
- %%
- %% The remaining three have already been handled by
- %% format.pages.check.without.articleno:
- %%
- %% numpages, pages -> "pages-value"
- %% numpages -> "numpages-value"
- %% pages -> "pages-value"
-
- articleno empty.or.unknown
- {
- numpages empty.or.unknown
- { }
- { "require articleno with numpages field in " cite$ * warning$ }
- if$
- ""
- }
- {
- numpages empty.or.unknown
- {
- pages empty.or.unknown
- {
- "require pages or numpages fields with articleno field in " cite$ * warning$
- "" 'page.count :=
- }
- { reduce.pages.to.page.count }
- if$
- }
- { numpages 'page.count := }
- if$
-
- %% The Article number is now handled in format.day.month.year because
- %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
- %% over "Digital Libraries 12, 3 (July 2008), Article 5"
- %% format.articleno output
- format.page.count
- }
- if$
-}
-
-FUNCTION { format.journal.volume.number.day.month.year }
-{
- % By Young (and Spencer)
- % GNP - fixed bugs with missing volume, number, and/or pages
- %
- % Format journal, volume, number, pages for article types.
- %
- journal empty.or.unknown
- { "no journal in " cite$ * warning$
- "" }
-% { journal emphasize.with.italic.correction }
- {
- journal "Journal of the ACM" =
- { "{\it J. ACM}" }
- {
- journal "American Mathematical Society Translations" =
- { "{\it Amer. Math. Soc. Transl.}" }
- {
- journal "Bulletin of the American Mathematical Society" =
- { "{\it Bull. Amer. Math. Soc.}" }
- {
- journal "Proceedings of the American Mathematical Society" =
- { "{\it Proc. Amer. Math. Soc.}" }
- {
- journal "Transactions of the American Mathematical Society" =
- { "{\it Trans. Amer. Math. Soc.}" }
- {
- journal "Communications of the {ACM}" =
- { "{\it Commun. {ACM}}" }
- {
- journal "{ACM} Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "{ACM} Transactions on Mathematical Software" =
- { "{\it {ACM} Trans. Math. Software}" }
- {
- journal "{ACM} {SIGNUM} Newsletter" =
- { "{\it {ACM} {SIGNUM} Newslett.}" }
- {
- journal "American Journal of Sociology" =
- { "{\it Amer. J. Sociology}" }
- {
- journal "Journal of the American Statistical Association" =
- { "{\it J. Amer. Statist. Assoc.}" }
- {
- journal "Applied Mathematics and Computation" =
- { "{\it Appl. Math. Comput.}" }
- {
- journal "American Mathematical Monthly" =
- { "{\it Amer. Math. Monthly}" }
- {
- journal "British Journal of Mathematical and Statistical Psychology" =
- { "{\it Brit. J. Math. Statist. Psych.}" }
- {
- journal "Canadian Mathematical Bulletin" =
- { "{\it Canad. Math. Bull.}" }
- {
- journal "Journal of Computational and Applied Mathematics" =
- { "{\it J. Comput. Appl. Math.}" }
- {
- journal "Journal of Computational Physics" =
- { "{\it J. Comput. Phys.}" }
- {
- journal "Computers and Structures" =
- { "{\it Comput. \& Structures}" }
- {
- journal "The Computer Journal" =
- { "{\it Comput. J.}" }
- {
- journal "Journal of Computer and System Sciences" =
- { "{\it J. Comput. System Sci.}" }
- {
- journal "Contemporary Mathematics" =
- { "{\it Contemp. Math.}" }
- {
- journal "Crelle's Journal" =
- { "{\it Crelle's J.}" }
- {
- journal "Giornale di Mathematiche" =
- { "{\it Giorn. Mat.}" }
- {
- journal "{IEEE} Transactions on Computers" =
- { "{\it {IEEE} Trans. Comput.}" }
- {
- journal "{IEEE} Transactions on Automatic Control" =
- { "{\it {IEEE} Trans. Automat. Control}" }
- {
- journal "Proceedings of the {IEEE}" =
- { "{\it Proc. {IEEE}}" }
- {
- journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
- { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
- {
- journal "{IMA} Journal of Numerical Analysis" =
- { "{\it {IMA} J. Numer. Anal.}" }
- {
- journal "Information Processing Letters" =
- { "{\it Inform. Process. Lett.}" }
- {
- journal "Journal of the Institute of Mathematics and its Applications" =
- { "{\it J. Inst. Math. Appl.}" }
- {
- journal "International Journal of Control" =
- { "{\it Internat. J. Control}" }
- {
- journal "International Journal for Numerical Methods in Engineering" =
- { "{\it Internat. J. Numer. Methods Engrg.}" }
- {
- journal "International Journal of Supercomputing Applications" =
- { "{\it Internat. J. Supercomputing Applic.}" }
- {
- journal "Journal of Research of the National Bureau of Standards" =
- { "{\it J. Res. Nat. Bur. Standards}" }
- {
- journal "Linear Algebra and its Applications" =
- { "{\it Linear Algebra Appl.}" }
- {
- journal "Journal of Mathematical Analysis and Applications" =
- { "{\it J. Math. Anal. Appl.}" }
- {
- journal "Mathematische Annalen" =
- { "{\it Math. Ann.}" }
- {
- journal "Journal of Mathematical Physics" =
- { "{\it J. Math. Phys.}" }
- {
- journal "Mathematics of Computation" =
- { "{\it Math. Comp.}" }
- {
- journal "Mathematica Scandinavica" =
- { "{\it Math. Scand.}" }
- {
- journal "Mathematical Tables and Other Aids to Computation" =
- { "{\it Math. Tables Aids Comput.}" }
- {
- journal "Numerische Mathematik" =
- { "{\it Numer. Math.}" }
- {
- journal "Pacific Journal of Mathematics" =
- { "{\it Pacific J. Math.}" }
- {
- journal "Journal of Parallel and Distributed Computing" =
- { "{\it J. Parallel and Distrib. Comput.}" }
- {
- journal "Parallel Computing" =
- { "{\it Parallel Comput.}" }
- {
- journal "Philosophical Magazine" =
- { "{\it Philos. Mag.}" }
- {
- journal "Proceedings of the National Academy of Sciences of the USA" =
- { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
- {
- journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
- { "{\it Quart. J. Math. Oxford Ser. (2)}" }
- {
- journal "Quarterly of Applied Mathematics" =
- { "{\it Quart. Appl. Math.}" }
- {
- journal "Review of the International Statisical Institute" =
- { "{\it Rev. Inst. Internat. Statist.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics" =
- { "{\it J. Soc. Indust. Appl. Math.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
- { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
- {
- journal "{SIAM} Journal on Algebraic and Discrete Methods" =
- { "{\it {SIAM} J. Algebraic Discrete Methods}" }
- {
- journal "{SIAM} Journal on Applied Mathematics" =
- { "{\it {SIAM} J. Appl. Math.}" }
- {
- journal "{SIAM} Journal on Computing" =
- { "{\it {SIAM} J. Comput.}" }
- {
- journal "{SIAM} Journal on Matrix Analysis and Applications" =
- { "{\it {SIAM} J. Matrix Anal. Appl.}" }
- {
- journal "{SIAM} Journal on Numerical Analysis" =
- { "{\it {SIAM} J. Numer. Anal.}" }
- {
- journal "{SIAM} Review" =
- { "{\it {SIAM} Rev.}" }
- {
- journal "{SIAM} Journal on Scientific and Statistical Computing" =
- { "{\it {SIAM} J. Sci. Statist. Comput.}" }
- {
- journal "Software Practice and Experience" =
- { "{\it Software Prac. Experience}" }
- {
- journal "Statistical Science" =
- { "{\it Statist. Sci.}" }
- {
- journal "{USSR} Computational Mathematics and Mathematical Physics" =
- { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of {VLSI} and Computer Systems" =
- { "{\it J. {VLSI} Comput. Syst.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
- { "{\it Z. Angew. Math. Mech.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Physik" =
- { "{\it Z. Angew. Math. Phys.}" }
- {
- journal "ACM Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "ACM Transactions on Mathematical Software" =
- { "{\it ACM Trans. Math. Software}" }
- {
- journal "ACM {SIGNUM} Newsletter" =
- { "{\it ACM {SIGNUM} Newslett.}" }
- {
- journal "IEEE Transactions on Computers" =
- { "{\it IEEE Trans. Comput.}" }
- {
- journal "IEEE Transactions on Automatic Control" =
- { "{\it IEEE Trans. Automat. Control}" }
- {
- journal "Proceedings of the IEEE" =
- { "{\it Proc. IEEE}" }
- {
- journal "IEEE Transactions on Aerospace and Electronic Systems" =
- { "{\it IEEE Trans. Aerospace Electron. Systems}" }
- {
- journal "IMA Journal of Numerical Analysis" =
- { "{\it IMA J. Numer. Anal.}" }
- {
- journal "SIAM Journal on Algebraic and Discrete Methods" =
- { "{\it SIAM J. Algebraic Discrete Methods}" }
- {
- journal "SIAM Journal on Applied Mathematics" =
- { "{\it SIAM J. Appl. Math.}" }
- {
- journal "SIAM Journal on Computing" =
- { "{\it SIAM J. Comput.}" }
- {
- journal "SIAM Journal on Matrix Analysis and Applications" =
- { "{\it SIAM J. Matrix Anal. Appl.}" }
- {
- journal "SIAM Journal on Numerical Analysis" =
- { "{\it SIAM J. Numer. Anal.}" }
- {
- journal "SIAM Review" =
- { "{\it SIAM Rev.}" }
- {
- journal "SIAM Journal on Scientific and Statistical Computing" =
- { "{\it SIAM J. Sci. Statist. Comput.}" }
- {
- journal "USSR Computational Mathematics and Mathematical Physics" =
- { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of VLSI and Computer Systems" =
- { "{\it J. VLSI Comput. Syst.}" }
- {
- journal "Communications of the ACM" =
- { "{\it Commun. ACM}" }
- %% If no match with cases needing special handling, just output journal name
- { journal emphasize.with.italic.correction }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
-
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "no number and no volume in " cite$ * warning$ "" * }
- { " " * " {" * volume * "}" * }
- if$
- }
- {
- volume empty.or.unknown
- {
- "unusual to have number, but no volume, for " cite$ * warning$
- " " * number *
- }
- { " " * volume comma " " * number * * }
- if$
- }
- if$
-
- format.day.month.year *
-}
-
-FUNCTION { format.chapter.pages }
-{
- chapter empty.or.unknown
- 'format.pages
- { type empty.or.unknown
- { "Chapter" } % gnp - changed to mixed case
- { type "t" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty.or.unknown
- {"page numbers missing in " cite$ * warning$} % gnp - added check
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION { format.in.emphasize.booktitle }
-{ % jtb: format for collections or proceedings not appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " format.emphasize.booktitle * }
- if$
-}
-
-FUNCTION { format.in.booktitle }
-{ % jtb: format for proceedings appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " booktitle * }
- if$
-}
-
-FUNCTION { format.in.ed.booktitle }
-{
- booktitle empty.or.unknown
- { "" }
- { editor empty.or.unknown
- { "In " format.emphasize.booktitle * }
- % jtb: swapped editor location
- { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
- if$
- }
- if$
-}
-
-FUNCTION { format.thesis.type }
-{ % call with default type on stack top
- type empty.or.unknown
- 'skip$ % use default type
- {
- pop$ % discard default type
- % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
- type
- }
- if$
-}
-
-FUNCTION { format.tr.number }
-{
- type empty.or.unknown
- { "Tech. Rep." }
- 'type
- if$
- number empty.or.unknown
- { "t" change.case$ }
- %% LOOKS BAD: { "." * number tie.or.space.connect }
- %% Prefer "Research report RJ687." to "Research report. RJ687."
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.advisor }
-{
- advisor empty.or.unknown
- { "" }
- { "Advisor(s) " advisor * }
- if$
-}
-
-FUNCTION { format.article.crossref }
-{ "See"
- "\cite{" * 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.or.unknown
- { "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.or.unknown
- editor field.or.null author field.or.null =
- or
- { key empty.or.unknown
- { series empty.or.unknown
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { "{\em " * series * "\/}" * }
- if$
- }
- { key * }
- if$
- }
- { format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { format.incoll.inproc.crossref }
-{ "See"
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { output.bibitem }
-{
- newline$
- "\bibitem[" write$
- label write$
- "]%" writeln
- " {" write$
- cite$ write$
- "}" writeln
- ""
- before.all 'output.state :=
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url }
-{ % enter and return with stack empty
- %% We switch now from buffered output to output of complete lines, so
- %% that the Issue .. URL data have their own lines, and are less likely
- %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
- %% lines longer than 79 characters, backtracking to what it thinks is
- %% a break point in the string. Any such wrapping MUST be undone to
- %% prevent percent-newline from appearing in DOIs and URLs. The
- %% output data are intentionally wrapped in \showxxx{} macros at
- %% beginning of line, and that supply their own punctuation (if they
- %% are not defined to suppress output entirely), to make it easier for
- %% other software to recover them from .bbl files.
- %%
- %% It also makes it possible to later change the macro definitions
- %% to suppress particular output values, or alter their appearance.
- %%
- %% Note that it is possible for theses, technical reports, and
- %% manuals to have ISBNs, and anything that has an ISBN may also
- %% have an ISSN. When there are no values for these keys, there
- %% is no output generated for them here.
-
- "\newblock" writeln
- after.block 'output.state :=
-
- output.issue
- output.isbn
- output.coden % CODEN is functionally like ISSN, so output them sequentially
- output.issn
- output.lccn
- output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
- output.url % but ACM wants URL last
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note
- }
- if$
- ""
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note.check
- }
- if$
- ""
-}
-
-FUNCTION { article }
-{
- output.bibitem
-
- author empty.or.unknown
- {
- editor empty.or.unknown
- { "neither author and editor supplied for " cite$ * warning$ }
- { format.editors "editor" output.check }
- if$
- }
- { format.authors "author" output.check }
- if$
-
- author format.no.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- new.block
- howpublished output
-
- crossref missing$
- { format.journal.volume.number.day.month.year }
- {
- "cross reference in @Article{...} is unusual" warning$
- format.article.crossref output.nonnull
- }
- if$
- output
-
- format.pages.check.without.articleno output
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { book }
-{
- output.bibitem
- author empty.or.unknown
- { 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
- fin.sentence
- pages empty.or.unknown
- { format.bookpages } % use bookpages when pages empty
- { format.pages.check "pages" tie.or.space.connect }
- if$
- output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inbook }
-{
- output.bibitem
- author empty.or.unknown
- { 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.bookpages output
- format.chapter.pages
- "chapter and pages" output.check % jtb: moved from before publisher
- }
- {
- format.bookpages output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { incollection }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "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.bookpages output
- 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$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inproceedings }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- howpublished output.dot.space
- crossref missing$
- {
- journal missing$ % jtb: proceedings appearing in journals
- { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
- format.series output.removenospace
- format.editors.fml output.dot.space
- format.bvolume.noseries output
- new.sentence
- organization output
- publisher "publisher" output.check % jtb: require publisher (?)
- address "address" output.check % jtb: require address
- format.bookpages output
- }
- {
- format.in.booktitle format.city "booktitle" output.check
- format.editors.fml output
- new.sentence
- format.journal.volume.number.day.month.year output
- }
- if$
- format.articleno output
- format.pages.check.without.articleno output
- }
- {
- format.incoll.inproc.crossref output.nonnull
- format.articleno output
- format.pages.check.without.articleno output
- }
- if$
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { conference } { inproceedings }
-
-FUNCTION { manual }
-{
- output.bibitem
- author empty.or.unknown
- { editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { mastersthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "M.S.\ thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- "" output.nonnull.dot.space
- output.day.month.year
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { phdthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Ph.D. thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION {format.date}
-{ year empty.or.unknown
- { month empty.or.unknown
- {
- "" % output empty date if year/month both empty
- day empty.or.unknown
- { }
- { "there's a day but no month or year in " cite$ * warning$ }
- if$
- }
- { "there's a month but no year in " cite$ * warning$
- month
- day empty.or.unknown
- { }
- { " " * day * }
- if$
- }
- if$
- }
- { month empty.or.unknown
- {
- year % output only year if month empty
- day empty.or.unknown
- { }
- { "there's a day and year but no month in " cite$ * warning$ }
- if$
- }
- {
- month " " *
- day empty.or.unknown
- { }
- { day * ", " * }
- if$
- year *
- }
- if$
- }
- if$
-}
-
-FUNCTION {new.block.checka}
-{
- empty.or.unknown
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { periodical }
-{
- output.bibitem
- editor empty.or.unknown
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- title emphasize "title" output.check
- format.date output
- new.sentence
- publisher output
- address output
- howpublished new.block.checka
- howpublished output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { proceedings }
-{
- output.bibitem
- editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { techreport }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.btitle "title" output.check
- new.block
- format.tr.number output % jtb: moved month ...
- institution "institution" output.check
- address output
- new.sentence
- format.named.pages output
- % ACM omits year at end in transactions style
- % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.sentence
- output.day.month.year % UTAH
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note.check
- fin.entry
-}
-
-FUNCTION { default.type } { misc }
-
-MACRO {jan} {"January"}
-
-MACRO {feb} {"February"}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"April"}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"August"}
-
-MACRO {sep} {"September"}
-
-MACRO {oct} {"October"}
-
-MACRO {nov} {"November"}
-
-MACRO {dec} {"December"}
-
-%%% ====================================================================
-%%% I M P O R T A N T C H A N G E
-%%%
-%%% For the 2009 release of the official acm-*.bst files, there are to
-%%% be NO predefined journal abbreviations in those style files.
-%%%
-%%% ACM may later develop an official list of mappings of full journal
-%%% names of commonly-cited journals to ACM-preferred abbreviations, but
-%%% authors should consider that use of any of these commented-out
-%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
-%%% its own @String{name = "value"} definitions.
-%%%
-%%% Use of journal (and publisher and address) @String{...}
-%%% abbreviations, as opposed to explicit value assignments such as
-%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
-%%% bibliographic databases, because it makes it easier for journal
-%%% production staff to replace those definitions by publisher-preferred
-%%% abbreviations when articles are typeset for publication.
-%%%
-%%% For historical reasons, and because some of these abbreviations are
-%%% used in other (non-ACM) bibliography style files, they are preserved
-%%% here in comments. Future releases of the acm*-.bst files are likely
-%%% to remove them entirely.
-%%% ====================================================================
-%%%
-%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {al} {"Ada Lett."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {bit} {"Bit"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cj} {"Comput. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
-%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
-%%% ====================================================================
-
-READ
-
-INTEGERS { et.al.char.used }
-
-FUNCTION {initialize.et.al.char.used}
-{ #0 'et.al.char.used :=
-}
-
-EXECUTE {initialize.et.al.char.used}
-
-FUNCTION {format.lab.names}
-{ 's :=
- s num.names$ 'numnames :=
- numnames #1 >
- { numnames #4 >
- { #3 'namesleft := }
- { numnames 'namesleft := }
- if$
- #1 'nameptr :=
- ""
- { namesleft #0 > }
- { nameptr numnames =
- { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- { s nameptr "{v{}}{l{}}" format.name$ * }
- if$
- }
- { s nameptr "{v{}}{l{}}" format.name$ * }
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
- numnames #4 >
- { "{\etalchar{+}}" *
- #1 'et.al.char.used :=
- }
- 'skip$
- if$
- }
- { s #1 "{v{}}{l{}}" format.name$
- duplicate$ text.length$ #2 <
- { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
- 'skip$
- if$
- }
- if$
-}
-
-FUNCTION { author.key.label }
-{
- author empty.or.unknown
- { key empty.or.unknown
- { "no key, author in " cite$ * warning$
- cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION { author.key.organization.label }
-{ % added - gnp. Provide label formatting by organization if author is null.
- author empty.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { editor empty.or.unknown
- { key empty.or.unknown
- { "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 { sortify }
-{
- purify$
- "l" change.case$
-}
-
-FUNCTION { calc.label }
-{
- type$ "book" =
- type$ "inbook" =
- or
- type$ "periodical" =
- or
- 'author.editor.key.label
- { type$ "proceedings" =
- 'editor.key.organization.label
- { type$ "manual" =
- 'author.key.organization.label
- 'author.key.label
- if$
- }
- if$
- }
- if$
- duplicate$
- year field.or.null purify$ #-1 #2 substring$
- *
- 'label :=
- year field.or.null purify$ #-1 #4 substring$
- *
- sortify 'sort.label :=
-}
-
-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 "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
- s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ 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.or.unknown
- { key empty.or.unknown
- { "to sort, need author or key in " cite$ * warning$
- "" }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION { author.editor.sort }
-{
- author empty.or.unknown
- {
- editor empty.or.unknown
- {
- key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "to sort, need editor, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { organization sortify }
- if$
- }
- { editor sort.format.names }
- if$
-}
-
-FUNCTION {presort}
-{ calc.label
- sort.label
- " "
- *
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.organization.sort
- { type$ "manual" =
- 'author.organization.sort
- 'author.sort
- if$
- }
- if$
- }
- if$
- *
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE { presort }
-
-SORT % by label, year, author/editor, title
-
-STRINGS { longest.label last.sort.label next.extra }
-
-INTEGERS { longest.label.width last.extra.num }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #0 int.to.chr$ 'last.sort.label :=
- "" 'next.extra :=
- #0 'longest.label.width :=
- #0 'last.extra.num :=
- "NOT-YET-SET" 'last.label :=
-}
-
-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 % push last.label on stack
- calc.label % set label and sort.label
- label % push \bibitem label on stack
- year field.or.null purify$
- #-1 #4 substring$ * % add year to \bibitem label on stack
- #1 entry.max$ substring$ = % are last.label and modified \bibitem label 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
- label % push \bibitem label on stack
- year field.or.null purify$
- #-1 #4 substring$ * % add year to \bibitem label on stack
- #1 entry.max$ substring$ 'last.label :=
- }
- if$
-}
-
-FUNCTION {reverse.pass}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- label extra.label * 'label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
- extra.label 'next.extra :=
-}
-
-EXECUTE {initialize.longest.label}
-
-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 }
-{
- %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
- %% Set to #1 to show both 10-digit and 13-digit ISBNs.
- #1 'show-isbn-10-and-13 :=
-
- "%%% -*-BibTeX-*-" writeln
- "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
- "" writeln
-
- et.al.char.used
- { "\ifx \etalchar \undefined \newcommand{\etalchar}[1]{$^{#1}$} \fi" write$ newline$ }
- 'skip$
- if$
-
- preamble$ empty.or.unknown
- 'skip$
- { preamble$ writeln }
- if$
- "\begin{thebibliography}{" longest.label * "}" * writeln
- "" writeln
- "%%% ====================================================================" writeln
- "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
- "%%% customized versions of any of these macros before the \bibliography" writeln
- "%%% command. Each of them MUST provide its own final punctuation," writeln
- "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
- "%%% do not use final punctuation, in order to avoid confusing it with" writeln
- "%%% the Web address." writeln
- "%%%" writeln
- "%%% To suppress output of a particular field, define its macro to expand" writeln
- "%%% to an empty string, or better, \unskip, like this:" writeln
- "%%%" writeln
- "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
- "%%%" writeln
- "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
- "%%%" writeln
- "%%% ====================================================================" writeln
- "" writeln
-
- %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
- %% macro wrappers expand to \unskip, discarding their values and unwanted
- %% space.
- %%
- %% For other publications, prior definitions like these may be useful:
- %%
- %% Plain TeX:
- %% \def \showCODEN #1{CODEN #1.}
- %% \def \showISSN #1{ISSN #1.}
- %% \def \showLCCN #1{LCCN #1.}
- %%
- %% LaTeX:
- %% \newcommand{\showCODEN}[1]{CODEN #1.}
- %% \newcommand{\showISSN}[1]#1{ISSN #1.}
- %% \newcommand{\showLCCN}[1]{LCCN #1.}
-
- "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
- "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
- % ACM styles omit ISBNs, but they can be included by suitable definitions of
- % \showISBNx and \showISBNxiii before the .bbl file is read
- "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
- "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
- "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
- "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
- "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
- "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
- "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION { end.bib }
-{
- newline$
- "\end{thebibliography}"
- writeln
-}
-
-EXECUTE {end.bib}
Deleted: trunk/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,3311 +0,0 @@
-%%% -*-BibTeX-*-
-%%% ====================================================================
-%%% @BibTeX-style-file{
-%%% author = "Nelson H. F. Beebe and many others",
-%%% version = "1.03",
-%%% date = "15 April 2011",
-%%% time = "23:53:39 EDT",
-%%% filename = "acm-plain.bst",
-%%% address = "University of Utah
-%%% Department of Mathematics, 110 LCB
-%%% 155 S 1400 E RM 233
-%%% Salt Lake City, UT 84112-0090
-%%% USA",
-%%% telephone = "+1 801 581 5254",
-%%% FAX = "+1 801 581 4148",
-%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "43736 3311 12014 90145",
-%%% email = "beebe at math.utah.edu, beebe at acm.org,
-%%% beebe at computer.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "ACM plain bibliography style; BibTeX",
-%%% license = "public domain",
-%%% supported = "yes",
-%%% abstract = "",
-%%% docstring = "The checksum field above contains a CRC-16
-%%% checksum as the first value, followed by the
-%%% equivalent of the standard UNIX wc (word
-%%% count) utility output of lines, words, and
-%%% characters. This is produced by Robert
-%%% Solovay's checksum utility.",
-%%% }
-%%% ====================================================================
-
-% "ACM plain" BibTeX style, derived by minimal modifications from acm-trans.bst
-% "ACM Transactions" BibTeX style, acmtrans-v2.bst
-% for BibTeX version 0.99c, LaTeX version 3.141
-% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
-% Revised 28-MARCH-1996
-% Revised 30-JUNE-1995
-% Revised 15-JAN-1996
-% Revised 17-APRIL-2008
-% Revised 13-MARCH-2011
-% Revised 27-MARCH-2011
-% Revised 15-APRIL-2011
-%
-% 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.
-%
-% Version 2.2
-% Johny Sebatian and Sanjeev Sharma
-% Aptara corp (c) 2008
-%
-% History
-%
-% Date: 28th April 2008
-%
-% 1. Avoid 'repeating' the 'month' values.
-% 2. Avoid incorrectly italicizing the volume number.
-% 3. Avoid non italicizing certain titles (book, inproceedings etc).
-% 4. NO series if there is NO volume.
-% 5. Sorting of reference with first surname.
-% 6. Article no added for Inproceedings.
-%
-% Date: 07th May 2008
-%
-% 1. Abbreviation list added
-%
-% 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.journal.volume.number.
-% - 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 at 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 at cgrg.ohio.state.edu or 71160.3141 at 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
- advisor
- 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
- % New keys recognized for acmtrans-v2.bst
- issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
- articleno
- day % UTAH: needed for newspapers, weeklies, bi-weeklies
- doi % UTAH
- url % UTAH
- bookpages % UTAH
- numpages
- lastaccessed % UTAH: used only for @Misc{...}
- coden % UTAH
- isbn % UTAH
- isbn-13 % UTAH
- issn % UTAH
- lccn % UTAH
- }
- {}
- { label label.year extra.label sort.year sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
-
-INTEGERS { nameptr namesleft numnames }
-
-INTEGERS { multiresult }
-
-INTEGERS { len }
-
-INTEGERS { last.extra.num }
-
-STRINGS { s t t.org u }
-
-STRINGS { last.label next.extra }
-
-STRINGS { p1 p2 p3 page.count }
-
-FUNCTION { dump.stack.1 }
-{
- duplicate$ "STACK[top] = [" swap$ * "]" * warning$
-}
-
-FUNCTION { dump.stack.2 }
-{
- duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
- swap$
- duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
- swap$
-}
-
-FUNCTION { empty.or.unknown }
-{
- %% Examine the top stack entry, and push 1 if it is empty, or
- %% consists only of whitespace, or is a string beginning with two
- %% queries (??), and otherwise, push 0.
- %%
- %% This function provides a replacement for empty$, with the
- %% convenient feature that unknown values marked by two leading
- %% queries are treated the same as missing values, and thus, do not
- %% appear in the output .bbl file, and yet, their presence in .bib
- %% file(s) serves to mark values which are temporarily missing, but
- %% are expected to be filled in eventually once more data is
- %% obtained. The TeX User Group and BibNet bibliography archives
- %% make extensive use of this practice.
- %%
- %% An empty string cannot serve the same purpose, because just as in
- %% statistics data processing, an unknown value is not the same as an
- %% empty value.
- %%
- %% At entry: stack = ... top:[string]
- %% At exit: stack = ... top:[0 or 1]
-
- duplicate$ empty$
- { pop$ #1 }
- { #1 #2 substring$ "??" = }
- if$
-}
-
-FUNCTION { writeln }
-{
- %% In BibTeX style files, the sequences
- %%
- %% ... "one" "two" output
- %% ... "one" "two" output.xxx
- %%
- %% ship "one" to the output file, possibly following by punctuation,
- %% leaving the stack with
- %%
- %% ... "two"
- %%
- %% There is thus a one-string lag in output processing that must be
- %% carefully handled to avoid duplicating a string in the output
- %% file. Unless otherwise noted, all output.xxx functions leave
- %% just one new string on the stack, and that model should be born
- %% in mind when reading or writing function code.
- %%
- %% BibTeX's asynchronous buffering of output from strings from the
- %% stack is confusing because newline$ bypasses the buffer. It
- %% would have been so much easier for newline to be a character
- %% rather than a state of the output-in-progress.
- %%
- %% The documentation in btxhak.dvi is WRONG: it says
- %%
- %% newline$ Writes onto the bbl file what's accumulated in the
- %% output buffer. It writes a blank line if and only
- %% if the output buffer is empty. Since write$ does
- %% reasonable line breaking, you should use this
- %% function only when you want a blank line or an
- %% explicit line break.
- %%
- %% write$ Pops the top (string) literal and writes it on the
- %% output buffer (which will result in stuff being
- %% written onto the bbl file when the buffer fills
- %% up).
- %%
- %% Examination of the BibTeX source code shows that write$ does
- %% indeed behave as claimed, but newline$ sends a newline character
- %% directly to the output file, leaving the stack unchanged. The
- %% first line "Writes onto ... buffer." is therefore wrong.
- %%
- %% The original BibTeX style files almost always use "write$ newline$"
- %% in that order, so it makes sense to hide that pair in a private
- %% function like this one, named after a statement in Pascal,
- %% the programming language embedded in the BibTeX Web program.
-
- write$ % output top-of-stack string
- newline$ % immediate write of newline (not via stack)
-}
-
-FUNCTION { init.state.consts }
-{
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-FUNCTION { output.nonnull }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
- 's :=
- output.state mid.sentence =
- {
- ", " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln
- "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.dot.space }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
- 's :=
- output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
- {
- ". " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.remove }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
- 's :=
- output.state mid.sentence =
- {
- " " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.removenospace }
-{ % Stack in: ... R S T Stack out: ... R T File out: S
- 's :=
- output.state mid.sentence =
- {
- "" * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output }
-{ % discard top token if empty, else like output.nonnull
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.dot.space }
-{ % discard top token if empty, else like output.nonnull.dot.space
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { output.removenospace }
-{ % discard top token if empty, else like output.nonnull.removenospace
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.removenospace
- if$
-}
-
-FUNCTION { output.check }
-{ % like output, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.check.dot.space }
-{ % like output.dot.space, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { fin.block }
-{ % functionally, but not logically, identical to fin.entry
- add.period$
- writeln
-}
-
-FUNCTION { fin.entry }
-{
- add.period$
- writeln
-}
-
-FUNCTION { new.sentence }
-{ % update sentence state, with neither output nor stack change
- output.state after.block =
- 'skip$
- {
- output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION { fin.sentence }
-{
- add.period$
- write$
- new.sentence
- ""
-}
-
-FUNCTION { new.block }
-{
- output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION { output.coden } % UTAH
-{ % output non-empty CODEN as one-line sentence (stack untouched)
- coden empty.or.unknown
- { }
- { "\showCODEN{" coden * "}" * writeln }
- if$
-}
-
-FUNCTION { format.articleno }
-{
- articleno empty.or.unknown
- { "" }
- {
- numpages empty.or.unknown
- { "articleno field, but no numpages field, in " cite$ * warning$ }
- { }
- if$
- "Article " articleno *
- }
- if$
-}
-
-FUNCTION { format.year }
-{ % push year string or "????" onto output stack
- %% Because year is a mandatory field, we always force SOMETHING
- %% to be output
- year empty.or.unknown
- { "????" }
- { year }
- if$
-}
-
-FUNCTION { format.day.month }
-{ % push "day month " or "month " or "" onto output stack
- day empty.or.unknown
- {
- month empty.or.unknown
- { "" }
- { month " " *}
- if$
- }
- {
- month empty.or.unknown
- { "" }
- { day " " * month * " " *}
- if$
- }
- if$
-}
-
-FUNCTION { format.day.month.year } % UTAH
-{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- % acm-*.bst addition: prefix parenthesized date string with
- % ", Article nnn "
- articleno empty.or.unknown
- { "" }
- { ", " format.articleno * }
- if$
- " (" * format.day.month * format.year * ")" *
-}
-
-FUNCTION { output.day.month.year } % UTAH
-{ % if month is empty value, do nothing; else output stack top and
- % leave with new top string "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- format.day.month.year
- output.nonnull.remove
-}
-
-FUNCTION { strip.doi } % UTAH
-{ % Strip any Web address prefix to recover the bare DOI, leaving the
- % result on the output stack, as recommended by CrossRef DOI
- % documentation.
- % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
- % "10.1145/1534530.1534545". That is later typeset and displayed as
- % doi:10.1145/1534530.1534545 as the LAST item in the reference list
- % entry. Publisher Web sites wrap this with a suitable link to a real
- % URL to resolve the DOI, and the master http://dx.doi.org/ address is
- % preferred, since publisher-specific URLs can disappear in response
- % to economic events. All journals are encouraged by the DOI
- % authorities to use that typeset format and link procedures for
- % uniformity across all publications that include DOIs in reference
- % lists.
- % The numeric prefix is guaranteed to start with "10.", so we use
- % that as a test.
- doi #1 #3 substring$ "10." =
- { doi }
- {
- doi #1 #7 substring$ "http://" =
- {
- doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
-
- "INTERNAL STYLE-FILE ERROR" 's :=
-
- % search for next "/" and assign its suffix to s
-
- { t text.length$ }
- {
- t #1 #1 substring$ "/" =
- {
- % save rest of string as true DOI (should be 10.xxxx/yyyy)
- t #2 t text.length$ #1 - substring$ 's :=
- "" 't := % empty string t terminates the loop
- }
- {
- % discard first character and continue loop: t <= substring(t,2,last)
- t #2 t text.length$ #1 - substring$ 't :=
- }
- if$
- }
- while$
-
- % check for valid DOI (should be 10.xxxx/yyyy)
- s #1 #3 substring$ "10." =
- { }
- { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
- if$
-
- s % push the stripped DOI on the output stack
-
- }
- {
- "unrecognized DOI value [" doi * "]" * warning$
- doi % push the unrecognized original DOI on the output stack
- }
- if$
- }
- if$
-}
-
-%
-% Change by BV: added standard prefix to URL
-%
-FUNCTION { output.doi } % UTAH
-{ % output non-empty DOI as one-line sentence (stack untouched)
- doi empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which then requires
- %% manual (or automated) editing of the .bbl file to repair.
- %% The \url{} macro strips percent-newlines, and is thus safe in
- %% the presence of the line wrapping, but \path|...| and
- %% \verb|...| do not.
- "\showDOI{%" writeln
- "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
- }
- if$
-}
-
-FUNCTION { output.isbn } % UTAH
-{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
- show-isbn-10-and-13
- {
- %% show both 10- and 13-digit ISBNs
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- isbn-13 empty.or.unknown
- { }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- {
- %% show 10-digit ISBNs only if 13-digit ISBNs not available
- isbn-13 empty.or.unknown
- {
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- if$
-}
-
-FUNCTION { output.issn } % UTAH
-{ % output non-empty ISSN as one-line sentence (stack untouched)
- issn empty.or.unknown
- { }
- { "\showISSN{" issn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.issue }
-{ % output non-empty issue number as a one-line sentence (stack untouched)
- issue empty.or.unknown
- { }
- { "Issue " issue * "." * writeln }
- if$
-}
-
-FUNCTION { output.lccn } % UTAH
-{ % return with stack untouched
- lccn empty.or.unknown
- { }
- { "\showLCCN{" lccn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note.check } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { "empty note in " cite$ * warning$ }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-%
-% Changes by BV 2011/04/15. Do not output
-% url if doi is defined
-%
-FUNCTION { output.url } % UTAH
-{ % return with stack untouched
- % output URL and associated lastaccessed fields
- doi empty.or.unknown
- {
- url empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which would require
- %% manual (or automated) editing of the .bbl file to repair. However,
- %% the \url{} macro handles the unwrapping job automatically.
- "\showURL{%" writeln
- lastaccessed empty.or.unknown
- { "" }
- { "Retrieved " lastaccessed * " from " * }
- if$
-
- %% The URL field may contain a semicolon-separated list of Web
- %% addresses, and we locate and wrap each of them in \url{...}.
- %% The simplistic approach of putting the entire list into the
- %% macro argument is that the semicolons are typeset in a
- %% typewriter font, and no space follows them.
- %%
- %% We therefore replace the original code
- %% "\url{" * url * "}}" * writeln
- %% with this character-at-a-time loop:
-
- "\url{" *
-
- url 't := % get modifiable copy of URL list
-
- { t text.length$ }
- {
- t #1 #1 substring$ ";" =
- { % then split argument at separator
- "};" * writeln
- "\url{"
- }
- { % else concatenate nonblank character to argument
- t #1 #1 substring$ " " =
- { }
- { t #1 #1 substring$ * }
- if$
- }
- if$
-
- t #2 t text.length$ #1 - substring$ 't :=
- }
- while$
-
- "}}" * writeln
- }
- if$
- }
- { }
- if$
-}
-
-FUNCTION { output.year.check }
-{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
- year empty.or.unknown
- { "empty year in " cite$ * warning$ }
- { write$
- " " year * extra.label *
- mid.sentence 'output.state :=
- }
- if$
-}
-
-FUNCTION { not }
-{
- { #0 }
- { #1 }
- if$
-}
-
-FUNCTION { and }
-{
- 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION { or }
-{
- { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION { le }
-{
- %% test whether first number is less than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 <= n2 then 1 else 0
-
- %% "DEBUG: le " cite$ * warning$
- > { #0 } { #1 } if$
-}
-
-FUNCTION { ge }
-{
- %% test whether first number is greater than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 >= n2 then 1 else 0
-
- %% "DEBUG: ge " cite$ * warning$
- < { #0 } { #1 } if$
-}
-
-FUNCTION { is.leading.digit }
-{
- %% test whether first character of string is a digit
- %% stack in: string
- %% stack out: if first-char-is-digit then 1 else 0
-
- #1 #1 substring$ % replace string by string[1:1]
- duplicate$ % string[1:1] string[1:1]
- chr.to.int$
- "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
- swap$ % 0-or-1 string[1:1]
- chr.to.int$
- "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
- and
-}
-
-FUNCTION { skip.digits }
-{
- %% skip over leading digits in string
- %% stack in: string
- %% stack out: rest-of-string leading-digits
-
- duplicate$
- 't :=
- 't.org :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
- t is.leading.digit
- { t #2 t text.length$ #1 - substring$ }
- {
- t 'u :=
- ""
- }
- if$
- 't :=
- }
- while$
-
- u % rest of string
- t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
-}
-
-FUNCTION { skip.nondigits }
-{
- %% skip over leading nondigits in string
- %% stack in: string
- %% stack out: rest-of-string
-
- 't :=
- "" 'u :=
-
- { t text.length$ }
- {
- t is.leading.digit
- {
- t 'u :=
- ""
- }
- { t #2 t text.length$ #1 - substring$ }
- if$
- 't :=
- }
- while$
-
- u % rest of string
-}
-
-FUNCTION { parse.next.number }
-{
- %% stack in: string
- %% stack out: rest-of-string next-numeric-part-of-string
- %% Example:
- %% stack in: "123:1--123:59"
- %% stack out: ":1--123:59" "123"
-
- 's :=
- s skip.nondigits 's :=
- s skip.digits
-}
-
-FUNCTION { reduce.pages.to.page.count }
-{
- %% Stack in: arbitrary-and-unused
- %% Stack out: unchanged
- %%
- %% For the new-style pagination with article number and numpages or
- %% pages, we expect to have BibTeX entries containing something like
- %% articleno = "17",
- %% pages = "1--23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% numpages = "23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% pages = "17:1--17:23",
- %% with output "Article 17, 23 pages",
- %%
- %% If articleno is missing or empty, then we should output "1--23",
- %% "23" (with a warning of a missing articleno), or "17:1--17:23",
- %% respectively.
-
- %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
-
- %% "DEBUG: pages = [" pages * "]" * warning$
-
- pages
- parse.next.number 'p1 :=
- parse.next.number 'p2 :=
- parse.next.number 'p3 :=
- parse.next.number 'page.count :=
-
- duplicate$
- empty.or.unknown
- { }
- {
- duplicate$ "unexpected trailing garbage [" swap$ *
- "] after n:p1--n:p2 in pages = [" *
- pages *
- "] in " *
- cite$ *
- warning$
- }
- if$
-
- pop$
-
- %% "DEBUG: reduce.pages.to.page.count: "
- %% " p1 = " p1 * *
- %% " p2 = " p2 * *
- %% " p3 = " p3 * *
- %% " p4 = " page.count * *
- %% " in " cite$ * * warning$
-
- p1 p3 = p2 "1" = and numpages empty.or.unknown and
- { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
- {
- p2 'page.count :=
- "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
- }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
-}
-
-FUNCTION { new.block.checkb }
-{ % issue a new.block only if at least one of top two stack strings is not empty
- empty.or.unknown
- swap$ empty.or.unknown
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { field.or.null }
-{ % convert empty value to null string, else return value
- duplicate$ empty.or.unknown
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION { emphasize }
-{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "}" * }
- if$
-}
-
-FUNCTION { emphasize.with.italic.correction }
-{ % convert empty string to null string, or emphasize with a trailing italic correction
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "\/}" * }
- if$
-}
-
-FUNCTION { comma }
-{ % convert empty string to null string, or brace string and add trailing comma
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{" swap$ * "}," * }
- if$
-}
-
-FUNCTION { format.names }
-{
- % 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.
-
- 's :=
- #1 'nameptr := % nameptr = 1;
- s num.names$ 'numnames := % numnames = num.name$(s);
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 =
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- if$
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{\sc 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 { 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 "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
-
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{others}" =
- { " {et~al\mbox{.}}" * }
- { " {and} " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr := % nameptr += 1;
- namesleft #1 - 'namesleft := % namesleft =- 1;
- }
- while$
-}
-
-FUNCTION { format.authors }
-{
- author empty.or.unknown
- { "" }
- { author format.names add.period$} % jtb: add period if none before
- if$
-}
-
-FUNCTION { format.key }
-{
- empty.or.unknown
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION { format.no.key }
-{
- empty.or.unknown
- { "" }
- { "" }
- if$
-}
-
-FUNCTION { format.editors.fml }
-{
- % 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.
-
- editor empty.or.unknown
- { "" }
- {
- editor format.names.fml editor num.names$ #1 >
- { " (Eds.)" * }
- { " (Ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.editors }
-{ % format editor names for use in labels, last names first.
- editor empty.or.unknown
- { "" }
- {
- editor format.names
- editor num.names$ #1 >
- { " (Eds.)." * }
- { " (Ed.)." * }
- if$
- }
- if$
-}
-
-FUNCTION { format.articletitle }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { "\showarticletitle{" title * "}" * }
- % Use this for downcase title style:
- % { \showarticletitle{" title "t" change.case$ * "}" * }
- if$
-}
-
-FUNCTION { format.title }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { title }
- % Use this for downcase title style:
- % { title "t" change.case$ }
- if$
-}
-
-FUNCTION { n.dashify }
-{
- 't :=
- ""
- { t empty.or.unknown 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.or.unknown
- { title emphasize }
- { title empty.or.unknown
- { title emphasize } % jtb: what is this supposed to do ?!?
- { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
- if$
- }
- if$
-}
-
-FUNCTION { format.emphasize.booktitle }
-{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
- edition empty.or.unknown
- { booktitle emphasize }
- { booktitle empty.or.unknown
- { "" }
- { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.city }
-{
- % 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
-
- duplicate$ empty.or.unknown
- { }
- {
- city empty.or.unknown
- {
- date empty.or.unknown
- { }
- { " (" * date * ")" * }
- if$
- }
- {
- date empty.or.unknown
- { " (" * city * ")" * }
- { " (" * city * ", " * date * ")" * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION { tie.or.space.connect }
-{
- duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION { either.or.check }
-{
- empty.or.unknown
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION { format.bvolume }
-{
- % jtb: If there is a series, this is added and the volume trails after it.
- % jtb: Otherwise, "Vol" is Capitalized.
-
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.bvolume.noseries }
-{
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { "Vol." volume tie.or.space.connect}
-% { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.series }
-{
- series empty.or.unknown
- {""}
- {" {\em (" * series ")}" *}
- if$
-}
-
-FUNCTION { format.number.series }
-{
- volume empty.or.unknown
- {
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "" }
- { " (" series * ")" * }
- if$
- }
- if$
- } % { series field.or.null }
- {
- output.state mid.sentence =
- { "Number" } % gnp - changed to mixed case always
- { "Number" }
- if$
- number tie.or.space.connect series empty.or.unknown
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- {
- ""
- }
- if$
-}
-
-FUNCTION { multi.page.check }
-{
- 't :=
- #0 'multiresult :=
- { multiresult not
- t empty.or.unknown 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.or.unknown
- { "" }
- {
- pages multi.page.check
- { pages n.dashify } % gnp - removed () % jtb: removed pp.
- { pages }
- if$
- }
- if$
-}
-
-FUNCTION { format.pages.check.without.articleno }
-{ %% format pages field only if articleno is absent
- %% Stack out: pages-specification
- numpages missing$ pages missing$ and
- { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
- { }
- if$
-
- articleno empty.or.unknown
- {
- pages missing$
- { numpages }
- { format.pages }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION { format.pages.check }
-{
- pages empty.or.unknown
- { "page numbers missing in " cite$ * warning$ "" }
- { pages n.dashify }
- if$
-}
-
-FUNCTION { format.bookpages }
-{
- bookpages empty.or.unknown
- { "" }
- { bookpages "book pages" tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.named.pages }
-{
- pages empty.or.unknown
- { "" }
- { format.pages "pages" tie.or.space.connect }
- if$
-}
-
-%
-% Changed by Boris Veytsman, 2011-03-13
-% Now the word "pages" is printed even if
-% there field pages is not empty.
-%
-
-FUNCTION { format.page.count }
-{
- page.count empty.or.unknown
- { "" }
- {
- articleno empty.or.unknown
- { "numpages field, but no articleno field, in " cite$ * warning$ }
- { }
- if$
- page.count "pages" tie.or.space.connect
- }
- if$
-}
-
-FUNCTION { format.articleno.numpages }
-{
- %% There are seven possible outputs, depending on which fields are set.
- %%
- %% These four are handled here:
- %%
- %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
- %% articleno, numpages -> "Article articleno-value, numpages-value pages"
- %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
- %% articleno -> "Article articleno-value" and warn about missing numpages
- %%
- %% The remaining three have already been handled by
- %% format.pages.check.without.articleno:
- %%
- %% numpages, pages -> "pages-value"
- %% numpages -> "numpages-value"
- %% pages -> "pages-value"
-
- articleno empty.or.unknown
- {
- numpages empty.or.unknown
- { }
- { "require articleno with numpages field in " cite$ * warning$ }
- if$
- ""
- }
- {
- numpages empty.or.unknown
- {
- pages empty.or.unknown
- {
- "require pages or numpages fields with articleno field in " cite$ * warning$
- "" 'page.count :=
- }
- { reduce.pages.to.page.count }
- if$
- }
- { numpages 'page.count := }
- if$
-
- %% The Article number is now handled in format.day.month.year because
- %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
- %% over "Digital Libraries 12, 3 (July 2008), Article 5"
- %% format.articleno output
- format.page.count
- }
- if$
-}
-
-FUNCTION { format.journal.volume.number.day.month.year }
-{
- % By Young (and Spencer)
- % GNP - fixed bugs with missing volume, number, and/or pages
- %
- % Format journal, volume, number, pages for article types.
- %
- journal empty.or.unknown
- { "no journal in " cite$ * warning$
- "" }
-% { journal emphasize.with.italic.correction }
- {
- journal "Journal of the ACM" =
- { "{\it J. ACM}" }
- {
- journal "American Mathematical Society Translations" =
- { "{\it Amer. Math. Soc. Transl.}" }
- {
- journal "Bulletin of the American Mathematical Society" =
- { "{\it Bull. Amer. Math. Soc.}" }
- {
- journal "Proceedings of the American Mathematical Society" =
- { "{\it Proc. Amer. Math. Soc.}" }
- {
- journal "Transactions of the American Mathematical Society" =
- { "{\it Trans. Amer. Math. Soc.}" }
- {
- journal "Communications of the {ACM}" =
- { "{\it Commun. {ACM}}" }
- {
- journal "{ACM} Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "{ACM} Transactions on Mathematical Software" =
- { "{\it {ACM} Trans. Math. Software}" }
- {
- journal "{ACM} {SIGNUM} Newsletter" =
- { "{\it {ACM} {SIGNUM} Newslett.}" }
- {
- journal "American Journal of Sociology" =
- { "{\it Amer. J. Sociology}" }
- {
- journal "Journal of the American Statistical Association" =
- { "{\it J. Amer. Statist. Assoc.}" }
- {
- journal "Applied Mathematics and Computation" =
- { "{\it Appl. Math. Comput.}" }
- {
- journal "American Mathematical Monthly" =
- { "{\it Amer. Math. Monthly}" }
- {
- journal "British Journal of Mathematical and Statistical Psychology" =
- { "{\it Brit. J. Math. Statist. Psych.}" }
- {
- journal "Canadian Mathematical Bulletin" =
- { "{\it Canad. Math. Bull.}" }
- {
- journal "Journal of Computational and Applied Mathematics" =
- { "{\it J. Comput. Appl. Math.}" }
- {
- journal "Journal of Computational Physics" =
- { "{\it J. Comput. Phys.}" }
- {
- journal "Computers and Structures" =
- { "{\it Comput. \& Structures}" }
- {
- journal "The Computer Journal" =
- { "{\it Comput. J.}" }
- {
- journal "Journal of Computer and System Sciences" =
- { "{\it J. Comput. System Sci.}" }
- {
- journal "Contemporary Mathematics" =
- { "{\it Contemp. Math.}" }
- {
- journal "Crelle's Journal" =
- { "{\it Crelle's J.}" }
- {
- journal "Giornale di Mathematiche" =
- { "{\it Giorn. Mat.}" }
- {
- journal "{IEEE} Transactions on Computers" =
- { "{\it {IEEE} Trans. Comput.}" }
- {
- journal "{IEEE} Transactions on Automatic Control" =
- { "{\it {IEEE} Trans. Automat. Control}" }
- {
- journal "Proceedings of the {IEEE}" =
- { "{\it Proc. {IEEE}}" }
- {
- journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
- { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
- {
- journal "{IMA} Journal of Numerical Analysis" =
- { "{\it {IMA} J. Numer. Anal.}" }
- {
- journal "Information Processing Letters" =
- { "{\it Inform. Process. Lett.}" }
- {
- journal "Journal of the Institute of Mathematics and its Applications" =
- { "{\it J. Inst. Math. Appl.}" }
- {
- journal "International Journal of Control" =
- { "{\it Internat. J. Control}" }
- {
- journal "International Journal for Numerical Methods in Engineering" =
- { "{\it Internat. J. Numer. Methods Engrg.}" }
- {
- journal "International Journal of Supercomputing Applications" =
- { "{\it Internat. J. Supercomputing Applic.}" }
- {
- journal "Journal of Research of the National Bureau of Standards" =
- { "{\it J. Res. Nat. Bur. Standards}" }
- {
- journal "Linear Algebra and its Applications" =
- { "{\it Linear Algebra Appl.}" }
- {
- journal "Journal of Mathematical Analysis and Applications" =
- { "{\it J. Math. Anal. Appl.}" }
- {
- journal "Mathematische Annalen" =
- { "{\it Math. Ann.}" }
- {
- journal "Journal of Mathematical Physics" =
- { "{\it J. Math. Phys.}" }
- {
- journal "Mathematics of Computation" =
- { "{\it Math. Comp.}" }
- {
- journal "Mathematica Scandinavica" =
- { "{\it Math. Scand.}" }
- {
- journal "Mathematical Tables and Other Aids to Computation" =
- { "{\it Math. Tables Aids Comput.}" }
- {
- journal "Numerische Mathematik" =
- { "{\it Numer. Math.}" }
- {
- journal "Pacific Journal of Mathematics" =
- { "{\it Pacific J. Math.}" }
- {
- journal "Journal of Parallel and Distributed Computing" =
- { "{\it J. Parallel and Distrib. Comput.}" }
- {
- journal "Parallel Computing" =
- { "{\it Parallel Comput.}" }
- {
- journal "Philosophical Magazine" =
- { "{\it Philos. Mag.}" }
- {
- journal "Proceedings of the National Academy of Sciences of the USA" =
- { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
- {
- journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
- { "{\it Quart. J. Math. Oxford Ser. (2)}" }
- {
- journal "Quarterly of Applied Mathematics" =
- { "{\it Quart. Appl. Math.}" }
- {
- journal "Review of the International Statisical Institute" =
- { "{\it Rev. Inst. Internat. Statist.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics" =
- { "{\it J. Soc. Indust. Appl. Math.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
- { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
- {
- journal "{SIAM} Journal on Algebraic and Discrete Methods" =
- { "{\it {SIAM} J. Algebraic Discrete Methods}" }
- {
- journal "{SIAM} Journal on Applied Mathematics" =
- { "{\it {SIAM} J. Appl. Math.}" }
- {
- journal "{SIAM} Journal on Computing" =
- { "{\it {SIAM} J. Comput.}" }
- {
- journal "{SIAM} Journal on Matrix Analysis and Applications" =
- { "{\it {SIAM} J. Matrix Anal. Appl.}" }
- {
- journal "{SIAM} Journal on Numerical Analysis" =
- { "{\it {SIAM} J. Numer. Anal.}" }
- {
- journal "{SIAM} Review" =
- { "{\it {SIAM} Rev.}" }
- {
- journal "{SIAM} Journal on Scientific and Statistical Computing" =
- { "{\it {SIAM} J. Sci. Statist. Comput.}" }
- {
- journal "Software Practice and Experience" =
- { "{\it Software Prac. Experience}" }
- {
- journal "Statistical Science" =
- { "{\it Statist. Sci.}" }
- {
- journal "{USSR} Computational Mathematics and Mathematical Physics" =
- { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of {VLSI} and Computer Systems" =
- { "{\it J. {VLSI} Comput. Syst.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
- { "{\it Z. Angew. Math. Mech.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Physik" =
- { "{\it Z. Angew. Math. Phys.}" }
- {
- journal "ACM Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "ACM Transactions on Mathematical Software" =
- { "{\it ACM Trans. Math. Software}" }
- {
- journal "ACM {SIGNUM} Newsletter" =
- { "{\it ACM {SIGNUM} Newslett.}" }
- {
- journal "IEEE Transactions on Computers" =
- { "{\it IEEE Trans. Comput.}" }
- {
- journal "IEEE Transactions on Automatic Control" =
- { "{\it IEEE Trans. Automat. Control}" }
- {
- journal "Proceedings of the IEEE" =
- { "{\it Proc. IEEE}" }
- {
- journal "IEEE Transactions on Aerospace and Electronic Systems" =
- { "{\it IEEE Trans. Aerospace Electron. Systems}" }
- {
- journal "IMA Journal of Numerical Analysis" =
- { "{\it IMA J. Numer. Anal.}" }
- {
- journal "SIAM Journal on Algebraic and Discrete Methods" =
- { "{\it SIAM J. Algebraic Discrete Methods}" }
- {
- journal "SIAM Journal on Applied Mathematics" =
- { "{\it SIAM J. Appl. Math.}" }
- {
- journal "SIAM Journal on Computing" =
- { "{\it SIAM J. Comput.}" }
- {
- journal "SIAM Journal on Matrix Analysis and Applications" =
- { "{\it SIAM J. Matrix Anal. Appl.}" }
- {
- journal "SIAM Journal on Numerical Analysis" =
- { "{\it SIAM J. Numer. Anal.}" }
- {
- journal "SIAM Review" =
- { "{\it SIAM Rev.}" }
- {
- journal "SIAM Journal on Scientific and Statistical Computing" =
- { "{\it SIAM J. Sci. Statist. Comput.}" }
- {
- journal "USSR Computational Mathematics and Mathematical Physics" =
- { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of VLSI and Computer Systems" =
- { "{\it J. VLSI Comput. Syst.}" }
- {
- journal "Communications of the ACM" =
- { "{\it Commun. ACM}" }
- %% If no match with cases needing special handling, just output journal name
- { journal emphasize.with.italic.correction }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
-
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "no number and no volume in " cite$ * warning$ "" * }
- { " " * " {" * volume * "}" * }
- if$
- }
- {
- volume empty.or.unknown
- {
- "unusual to have number, but no volume, for " cite$ * warning$
- " " * number *
- }
- { " " * volume comma " " * number * * }
- if$
- }
- if$
-
- format.day.month.year *
-}
-
-FUNCTION { format.chapter.pages }
-{
- chapter empty.or.unknown
- 'format.pages
- { type empty.or.unknown
- { "Chapter" } % gnp - changed to mixed case
- { type "t" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty.or.unknown
- {"page numbers missing in " cite$ * warning$} % gnp - added check
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION { format.in.emphasize.booktitle }
-{ % jtb: format for collections or proceedings not appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " format.emphasize.booktitle * }
- if$
-}
-
-FUNCTION { format.in.booktitle }
-{ % jtb: format for proceedings appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " booktitle * }
- if$
-}
-
-FUNCTION { format.in.ed.booktitle }
-{
- booktitle empty.or.unknown
- { "" }
- { editor empty.or.unknown
- { "In " format.emphasize.booktitle * }
- % jtb: swapped editor location
- { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
- if$
- }
- if$
-}
-
-FUNCTION { format.thesis.type }
-{ % call with default type on stack top
- type empty.or.unknown
- 'skip$ % use default type
- {
- pop$ % discard default type
- % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
- type
- }
- if$
-}
-
-FUNCTION { format.tr.number }
-{
- type empty.or.unknown
- { "Tech. Rep." }
- 'type
- if$
- number empty.or.unknown
- { "t" change.case$ }
- %% LOOKS BAD: { "." * number tie.or.space.connect }
- %% Prefer "Research report RJ687." to "Research report. RJ687."
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.advisor }
-{
- advisor empty.or.unknown
- { "" }
- { "Advisor(s) " advisor * }
- if$
-}
-
-FUNCTION { format.article.crossref }
-{ "See"
- "\cite{" * 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.or.unknown
- { "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.or.unknown
- editor field.or.null author field.or.null =
- or
- { key empty.or.unknown
- { series empty.or.unknown
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { "{\em " * series * "\/}" * }
- if$
- }
- { key * }
- if$
- }
- { format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { format.incoll.inproc.crossref }
-{ "See"
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { format.lab.names }
-{
- % 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.
-
- '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.or.unknown
- { key empty.or.unknown
- { "no key, author in " cite$ * warning$
- cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION { author.key.organization.label }
-{ % added - gnp. Provide label formatting by organization if author is null.
- author empty.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { editor empty.or.unknown
- { key empty.or.unknown
- { "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
- type$ "periodical" =
- 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.or.unknown % generate the full label citation information.
- {
- editor empty.or.unknown
- {
- organization empty.or.unknown
- {
- key empty.or.unknown
- {
- "no author, editor, organization, or key in " cite$ * warning$
- "??"
- }
- { key }
- if$
- }
- { 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$
- %% acmtrans.bst alphanumeric style:
- %%: "\bibitem[\protect\citeauthoryear{" write$
- %%: calc.label write$
- %%: sort.year write$
- %%: "}]%" writeln
- %%: " {" write$
- %%: cite$ write$
- %%: "}" writeln
- %% acm-plain.bst numeric style:
- newline$
- "\bibitem{" write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url }
-{ % enter and return with stack empty
- %% We switch now from buffered output to output of complete lines, so
- %% that the Issue .. URL data have their own lines, and are less likely
- %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
- %% lines longer than 79 characters, backtracking to what it thinks is
- %% a break point in the string. Any such wrapping MUST be undone to
- %% prevent percent-newline from appearing in DOIs and URLs. The
- %% output data are intentionally wrapped in \showxxx{} macros at
- %% beginning of line, and that supply their own punctuation (if they
- %% are not defined to suppress output entirely), to make it easier for
- %% other software to recover them from .bbl files.
- %%
- %% It also makes it possible to later change the macro definitions
- %% to suppress particular output values, or alter their appearance.
- %%
- %% Note that it is possible for theses, technical reports, and
- %% manuals to have ISBNs, and anything that has an ISBN may also
- %% have an ISSN. When there are no values for these keys, there
- %% is no output generated for them here.
-
- "\newblock" writeln
- after.block 'output.state :=
-
- output.issue
- output.isbn
- output.coden % CODEN is functionally like ISSN, so output them sequentially
- output.issn
- output.lccn
- output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
- output.url % but ACM wants URL last
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note
- }
- if$
- ""
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note.check
- }
- if$
- ""
-}
-
-FUNCTION { article }
-{
- output.bibitem
-
- author empty.or.unknown
- {
- editor empty.or.unknown
- { "neither author and editor supplied for " cite$ * warning$ }
- { format.editors "editor" output.check }
- if$
- }
- { format.authors "author" output.check }
- if$
-
- author format.no.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- new.block
- howpublished output
-
- crossref missing$
- { format.journal.volume.number.day.month.year }
- {
- "cross reference in @Article{...} is unusual" warning$
- format.article.crossref output.nonnull
- }
- if$
- output
-
- format.pages.check.without.articleno output
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { book }
-{
- output.bibitem
- author empty.or.unknown
- { 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
- fin.sentence
- pages empty.or.unknown
- { format.bookpages } % use bookpages when pages empty
- { format.pages.check "pages" tie.or.space.connect }
- if$
- output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inbook }
-{
- output.bibitem
- author empty.or.unknown
- { 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.bookpages output
- format.chapter.pages
- "chapter and pages" output.check % jtb: moved from before publisher
- }
- {
- format.bookpages output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { incollection }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "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.bookpages output
- 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$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inproceedings }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- howpublished output.dot.space
- crossref missing$
- {
- journal missing$ % jtb: proceedings appearing in journals
- { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
- format.series output.removenospace
- format.editors.fml output.dot.space
- format.bvolume.noseries output
- new.sentence
- organization output
- publisher "publisher" output.check % jtb: require publisher (?)
- address "address" output.check % jtb: require address
- format.bookpages output
- }
- {
- format.in.booktitle format.city "booktitle" output.check
- format.editors.fml output
- new.sentence
- format.journal.volume.number.day.month.year output
- }
- if$
- format.articleno output
- format.pages.check.without.articleno output
- }
- {
- format.incoll.inproc.crossref output.nonnull
- format.articleno output
- format.pages.check.without.articleno output
- }
- if$
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { conference } { inproceedings }
-
-FUNCTION { manual }
-{
- output.bibitem
- author empty.or.unknown
- { editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { mastersthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "M.S.\ thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- "" output.nonnull.dot.space
- output.day.month.year
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { phdthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Ph.D. thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION {format.date}
-{ year empty.or.unknown
- { month empty.or.unknown
- {
- "" % output empty date if year/month both empty
- day empty.or.unknown
- { }
- { "there's a day but no month or year in " cite$ * warning$ }
- if$
- }
- { "there's a month but no year in " cite$ * warning$
- month
- day empty.or.unknown
- { }
- { " " * day * }
- if$
- }
- if$
- }
- { month empty.or.unknown
- {
- year % output only year if month empty
- day empty.or.unknown
- { }
- { "there's a day and year but no month in " cite$ * warning$ }
- if$
- }
- {
- month " " *
- day empty.or.unknown
- { }
- { day * ", " * }
- if$
- year *
- }
- if$
- }
- if$
-}
-
-FUNCTION {new.block.checka}
-{
- empty.or.unknown
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { periodical }
-{
- output.bibitem
- editor empty.or.unknown
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- title emphasize "title" output.check
- format.date output
- new.sentence
- publisher output
- address output
- howpublished new.block.checka
- howpublished output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { proceedings }
-{
- output.bibitem
- editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { techreport }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.btitle "title" output.check
- new.block
- format.tr.number output % jtb: moved month ...
- institution "institution" output.check
- address output
- new.sentence
- format.named.pages output
- % ACM omits year at end in transactions style
- % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.sentence
- output.day.month.year % UTAH
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note.check
- fin.entry
-}
-
-FUNCTION { default.type } { misc }
-
-%%% ACM journal-style month definitions: full name if 1--5 letters, else
-%%% abbreviation of 3 or 4 characters and a dot
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"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."}
-
-
-%%% ====================================================================
-%%% I M P O R T A N T C H A N G E
-%%%
-%%% For the 2009 release of the official acm-*.bst files, there are to
-%%% be NO predefined journal abbreviations in those style files.
-%%%
-%%% ACM may later develop an official list of mappings of full journal
-%%% names of commonly-cited journals to ACM-preferred abbreviations, but
-%%% authors should consider that use of any of these commented-out
-%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
-%%% its own @String{name = "value"} definitions.
-%%%
-%%% Use of journal (and publisher and address) @String{...}
-%%% abbreviations, as opposed to explicit value assignments such as
-%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
-%%% bibliographic databases, because it makes it easier for journal
-%%% production staff to replace those definitions by publisher-preferred
-%%% abbreviations when articles are typeset for publication.
-%%%
-%%% For historical reasons, and because some of these abbreviations are
-%%% used in other (non-ACM) bibliography style files, they are preserved
-%%% here in comments. Future releases of the acm*-.bst files are likely
-%%% to remove them entirely.
-%%% ====================================================================
-%%%
-%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {al} {"Ada Lett."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {bit} {"Bit"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cj} {"Comput. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
-%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
-%%% ====================================================================
-
-READ
-
-FUNCTION { sortify }
-{
- purify$
- "l" change.case$
-}
-
-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 "{ff{ } }{ll{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
- 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.or.unknown
- { key empty.or.unknown
- { "to sort, need author or key in " cite$ * warning$
- "" }
- { key sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION { author.editor.sort }
-{
- author empty.or.unknown
- {
- editor empty.or.unknown
- {
- key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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$
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE { presort }
-
-SORT % by label, year, author/editor, title
-
-STRINGS { longest.label }
-
-INTEGERS { number.label longest.label.width }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
-}
-
-FUNCTION {longest.label.pass}
-{ number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {longest.label.pass}
-
-FUNCTION { initialize.extra.label.stuff }
-{ #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'last.extra.num :=
-}
-
-EXECUTE {initialize.extra.label.stuff}
-
-FUNCTION { begin.bib }
-{
- %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
- %% Set to #1 to show both 10-digit and 13-digit ISBNs.
- #1 'show-isbn-10-and-13 :=
-
- "%%% -*-BibTeX-*-" writeln
- "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
- "" writeln
-
- preamble$ empty.or.unknown
- 'skip$
- { preamble$ writeln }
- if$
- "\begin{thebibliography}{" longest.label * "}" * writeln
- "" writeln
- "%%% ====================================================================" writeln
- "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
- "%%% customized versions of any of these macros before the \bibliography" writeln
- "%%% command. Each of them MUST provide its own final punctuation," writeln
- "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
- "%%% do not use final punctuation, in order to avoid confusing it with" writeln
- "%%% the Web address." writeln
- "%%%" writeln
- "%%% To suppress output of a particular field, define its macro to expand" writeln
- "%%% to an empty string, or better, \unskip, like this:" writeln
- "%%%" writeln
- "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
- "%%%" writeln
- "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
- "%%%" writeln
- "%%% ====================================================================" writeln
- "" writeln
-
- %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
- %% macro wrappers expand to \unskip, discarding their values and unwanted
- %% space.
- %%
- %% For other publications, prior definitions like these may be useful:
- %%
- %% Plain TeX:
- %% \def \showCODEN #1{CODEN #1.}
- %% \def \showISSN #1{ISSN #1.}
- %% \def \showLCCN #1{LCCN #1.}
- %%
- %% LaTeX:
- %% \newcommand{\showCODEN}[1]{CODEN #1.}
- %% \newcommand{\showISSN}[1]#1{ISSN #1.}
- %% \newcommand{\showLCCN}[1]{LCCN #1.}
-
- "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
- "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
- % ACM styles omit ISBNs, but they can be included by suitable definitions of
- % \showISBNx and \showISBNxiii before the .bbl file is read
- "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
- "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
- "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
- "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
- "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
- "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
- "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION { end.bib }
-{
- newline$
- "\end{thebibliography}"
- writeln
-}
-
-EXECUTE {end.bib}
Deleted: trunk/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,3142 +0,0 @@
-%%% -*-BibTeX-*-
-%%% ====================================================================
-%%% @BibTeX-style-file{
-%%% author = "Nelson H. F. Beebe and many others",
-%%% version = "1.03",
-%%% date = "15 April 2011",
-%%% time = "23:55:02 EDT",
-%%% filename = "acm-unsrt.bst",
-%%% address = "University of Utah
-%%% Department of Mathematics, 110 LCB
-%%% 155 S 1400 E RM 233
-%%% Salt Lake City, UT 84112-0090
-%%% USA",
-%%% telephone = "+1 801 581 5254",
-%%% FAX = "+1 801 581 4148",
-%%% URL = "http://www.math.utah.edu/~beebe",
-%%% checksum = "18030 3142 11525 86689",
-%%% email = "beebe at math.utah.edu, beebe at acm.org,
-%%% beebe at computer.org",
-%%% codetable = "ISO/ASCII",
-%%% keywords = "ACM unsrt bibliography style; BibTeX",
-%%% license = "public domain",
-%%% supported = "yes",
-%%% abstract = "",
-%%% docstring = "The checksum field above contains a CRC-16
-%%% checksum as the first value, followed by the
-%%% equivalent of the standard UNIX wc (word
-%%% count) utility output of lines, words, and
-%%% characters. This is produced by Robert
-%%% Solovay's checksum utility.",
-%%% }
-%%% ====================================================================
-
-% "ACM unsrt" BibTeX style, derived by minimal modifications from acm-plain.bst
-% "ACM Transactions" BibTeX style, acmtrans-v2.bst
-% for BibTeX version 0.99c, LaTeX version 3.141
-% ACM extensions with code cleaned up, extended, and debugged 10--15-Nov-2008
-% Revised 28-MARCH-1996
-% Revised 30-JUNE-1995
-% Revised 15-JAN-1996
-% Revised 17-APRIL-2008
-% Revised 13-MARCH-2011
-% Revised 27-MARCH-2011
-% Revised 15-APRIL-2011
-%
-% 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.
-%
-% Version 2.2
-% Johny Sebatian and Sanjeev Sharma
-% Aptara corp (c) 2008
-%
-% History
-%
-% Date: 28th April 2008
-%
-% 1. Avoid 'repeating' the 'month' values.
-% 2. Avoid incorrectly italicizing the volume number.
-% 3. Avoid non italicizing certain titles (book, inproceedings etc).
-% 4. NO series if there is NO volume.
-% 5. Sorting of reference with first surname.
-% 6. Article no added for Inproceedings.
-%
-% Date: 07th May 2008
-%
-% 1. Abbreviation list added
-%
-% 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.journal.volume.number.
-% - 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 at 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 at cgrg.ohio.state.edu or 71160.3141 at 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
- advisor
- 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
- % New keys recognized for acmtrans-v2.bst
- issue % UTAH: used in, e.g., ACM SIGSAM Bulletin and ACM Communications in Computer Algebra
- articleno
- day % UTAH: needed for newspapers, weeklies, bi-weeklies
- doi % UTAH
- url % UTAH
- bookpages % UTAH
- numpages
- lastaccessed % UTAH: used only for @Misc{...}
- coden % UTAH
- isbn % UTAH
- isbn-13 % UTAH
- issn % UTAH
- lccn % UTAH
- }
- {}
- { label label.year extra.label sort.year sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-INTEGERS { show-isbn-10-and-13 } % initialized below in begin.bib
-
-INTEGERS { nameptr namesleft numnames }
-
-INTEGERS { multiresult }
-
-INTEGERS { len }
-
-INTEGERS { last.extra.num }
-
-STRINGS { s t t.org u }
-
-STRINGS { last.label next.extra }
-
-STRINGS { p1 p2 p3 page.count }
-
-FUNCTION { dump.stack.1 }
-{
- duplicate$ "STACK[top] = [" swap$ * "]" * warning$
-}
-
-FUNCTION { dump.stack.2 }
-{
- duplicate$ "STACK[top ] = [" swap$ * "]" * warning$
- swap$
- duplicate$ "STACK[top-1] = [" swap$ * "]" * warning$
- swap$
-}
-
-FUNCTION { empty.or.unknown }
-{
- %% Examine the top stack entry, and push 1 if it is empty, or
- %% consists only of whitespace, or is a string beginning with two
- %% queries (??), and otherwise, push 0.
- %%
- %% This function provides a replacement for empty$, with the
- %% convenient feature that unknown values marked by two leading
- %% queries are treated the same as missing values, and thus, do not
- %% appear in the output .bbl file, and yet, their presence in .bib
- %% file(s) serves to mark values which are temporarily missing, but
- %% are expected to be filled in eventually once more data is
- %% obtained. The TeX User Group and BibNet bibliography archives
- %% make extensive use of this practice.
- %%
- %% An empty string cannot serve the same purpose, because just as in
- %% statistics data processing, an unknown value is not the same as an
- %% empty value.
- %%
- %% At entry: stack = ... top:[string]
- %% At exit: stack = ... top:[0 or 1]
-
- duplicate$ empty$
- { pop$ #1 }
- { #1 #2 substring$ "??" = }
- if$
-}
-
-FUNCTION { writeln }
-{
- %% In BibTeX style files, the sequences
- %%
- %% ... "one" "two" output
- %% ... "one" "two" output.xxx
- %%
- %% ship "one" to the output file, possibly following by punctuation,
- %% leaving the stack with
- %%
- %% ... "two"
- %%
- %% There is thus a one-string lag in output processing that must be
- %% carefully handled to avoid duplicating a string in the output
- %% file. Unless otherwise noted, all output.xxx functions leave
- %% just one new string on the stack, and that model should be born
- %% in mind when reading or writing function code.
- %%
- %% BibTeX's asynchronous buffering of output from strings from the
- %% stack is confusing because newline$ bypasses the buffer. It
- %% would have been so much easier for newline to be a character
- %% rather than a state of the output-in-progress.
- %%
- %% The documentation in btxhak.dvi is WRONG: it says
- %%
- %% newline$ Writes onto the bbl file what's accumulated in the
- %% output buffer. It writes a blank line if and only
- %% if the output buffer is empty. Since write$ does
- %% reasonable line breaking, you should use this
- %% function only when you want a blank line or an
- %% explicit line break.
- %%
- %% write$ Pops the top (string) literal and writes it on the
- %% output buffer (which will result in stuff being
- %% written onto the bbl file when the buffer fills
- %% up).
- %%
- %% Examination of the BibTeX source code shows that write$ does
- %% indeed behave as claimed, but newline$ sends a newline character
- %% directly to the output file, leaving the stack unchanged. The
- %% first line "Writes onto ... buffer." is therefore wrong.
- %%
- %% The original BibTeX style files almost always use "write$ newline$"
- %% in that order, so it makes sense to hide that pair in a private
- %% function like this one, named after a statement in Pascal,
- %% the programming language embedded in the BibTeX Web program.
-
- write$ % output top-of-stack string
- newline$ % immediate write of newline (not via stack)
-}
-
-FUNCTION { init.state.consts }
-{
- #0 'before.all :=
- #1 'mid.sentence :=
- #2 'after.sentence :=
- #3 'after.block :=
-}
-
-FUNCTION { output.nonnull }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<comma><space>
- 's :=
- output.state mid.sentence =
- {
- ", " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln
- "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.dot.space }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<dot><space>
- 's :=
- output.state mid.sentence = % { "<DEBUG output.nonnull.dot.space>. " * write$ }
- {
- ". " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.remove }
-{ % Stack in: ... R S T Stack out: ... R T File out: S<space>
- 's :=
- output.state mid.sentence =
- {
- " " * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output.nonnull.removenospace }
-{ % Stack in: ... R S T Stack out: ... R T File out: S
- 's :=
- output.state mid.sentence =
- {
- "" * write$
- }
- {
- output.state after.block =
- {
- add.period$ writeln "\newblock " write$
- }
- {
- output.state before.all =
- {
- write$
- }
- {
- add.period$ " " * write$
- }
- if$
- }
- if$
- mid.sentence 'output.state :=
- }
- if$
- s
-}
-
-FUNCTION { output }
-{ % discard top token if empty, else like output.nonnull
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.dot.space }
-{ % discard top token if empty, else like output.nonnull.dot.space
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { output.removenospace }
-{ % discard top token if empty, else like output.nonnull.removenospace
- duplicate$ empty.or.unknown
- 'pop$
- 'output.nonnull.removenospace
- if$
-}
-
-FUNCTION { output.check }
-{ % like output, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION { output.check.dot.space }
-{ % like output.dot.space, but warn if key name on top-of-stack is not set
- 't :=
- duplicate$ empty.or.unknown
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull.dot.space
- if$
-}
-
-FUNCTION { fin.block }
-{ % functionally, but not logically, identical to fin.entry
- add.period$
- writeln
-}
-
-FUNCTION { fin.entry }
-{
- add.period$
- writeln
-}
-
-FUNCTION { new.sentence }
-{ % update sentence state, with neither output nor stack change
- output.state after.block =
- 'skip$
- {
- output.state before.all =
- 'skip$
- { after.sentence 'output.state := }
- if$
- }
- if$
-}
-
-FUNCTION { fin.sentence }
-{
- add.period$
- write$
- new.sentence
- ""
-}
-
-FUNCTION { new.block }
-{
- output.state before.all =
- 'skip$
- { after.block 'output.state := }
- if$
-}
-
-FUNCTION { output.coden } % UTAH
-{ % output non-empty CODEN as one-line sentence (stack untouched)
- coden empty.or.unknown
- { }
- { "\showCODEN{" coden * "}" * writeln }
- if$
-}
-
-FUNCTION { format.articleno }
-{
- articleno empty.or.unknown
- { "" }
- {
- numpages empty.or.unknown
- { "articleno field, but no numpages field, in " cite$ * warning$ }
- { }
- if$
- "Article " articleno *
- }
- if$
-}
-
-FUNCTION { format.year }
-{ % push year string or "????" onto output stack
- %% Because year is a mandatory field, we always force SOMETHING
- %% to be output
- year empty.or.unknown
- { "????" }
- { year }
- if$
-}
-
-FUNCTION { format.day.month }
-{ % push "day month " or "month " or "" onto output stack
- day empty.or.unknown
- {
- month empty.or.unknown
- { "" }
- { month " " *}
- if$
- }
- {
- month empty.or.unknown
- { "" }
- { day " " * month * " " *}
- if$
- }
- if$
-}
-
-FUNCTION { format.day.month.year } % UTAH
-{ % if month is empty, push "" else push "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- % acm-*.bst addition: prefix parenthesized date string with
- % ", Article nnn "
- articleno empty.or.unknown
- { "" }
- { ", " format.articleno * }
- if$
- " (" * format.day.month * format.year * ")" *
-}
-
-FUNCTION { output.day.month.year } % UTAH
-{ % if month is empty value, do nothing; else output stack top and
- % leave with new top string "(MON.)" or "(DD MON.)"
- % Needed for frequent periodicals: 2008. ... New York Times C-1, C-2, C-17 (23 Oct.)
- format.day.month.year
- output.nonnull.remove
-}
-
-FUNCTION { strip.doi } % UTAH
-{ % Strip any Web address prefix to recover the bare DOI, leaving the
- % result on the output stack, as recommended by CrossRef DOI
- % documentation.
- % For example, reduce "http://doi.acm.org/10.1145/1534530.1534545" to
- % "10.1145/1534530.1534545". That is later typeset and displayed as
- % doi:10.1145/1534530.1534545 as the LAST item in the reference list
- % entry. Publisher Web sites wrap this with a suitable link to a real
- % URL to resolve the DOI, and the master http://dx.doi.org/ address is
- % preferred, since publisher-specific URLs can disappear in response
- % to economic events. All journals are encouraged by the DOI
- % authorities to use that typeset format and link procedures for
- % uniformity across all publications that include DOIs in reference
- % lists.
- % The numeric prefix is guaranteed to start with "10.", so we use
- % that as a test.
- doi #1 #3 substring$ "10." =
- { doi }
- {
- doi #1 #7 substring$ "http://" =
- {
- doi #8 doi text.length$ #7 - substring$ 't := % get modifiable copy of rest of DOI
-
- "INTERNAL STYLE-FILE ERROR" 's :=
-
- % search for next "/" and assign its suffix to s
-
- { t text.length$ }
- {
- t #1 #1 substring$ "/" =
- {
- % save rest of string as true DOI (should be 10.xxxx/yyyy)
- t #2 t text.length$ #1 - substring$ 's :=
- "" 't := % empty string t terminates the loop
- }
- {
- % discard first character and continue loop: t <= substring(t,2,last)
- t #2 t text.length$ #1 - substring$ 't :=
- }
- if$
- }
- while$
-
- % check for valid DOI (should be 10.xxxx/yyyy)
- s #1 #3 substring$ "10." =
- { }
- { "unrecognized DOI substring " s * " in DOI value [" * doi * "]" * warning$ }
- if$
-
- s % push the stripped DOI on the output stack
-
- }
- {
- "unrecognized DOI value [" doi * "]" * warning$
- doi % push the unrecognized original DOI on the output stack
- }
- if$
- }
- if$
-}
-
-%
-% Change by BV: added standard prefix to URL
-%
-FUNCTION { output.doi } % UTAH
-{ % output non-empty DOI as one-line sentence (stack untouched)
- doi empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which then requires
- %% manual (or automated) editing of the .bbl file to repair.
- %% The \url{} macro strips percent-newlines, and is thus safe in
- %% the presence of the line wrapping, but \path|...| and
- %% \verb|...| do not.
- "\showDOI{%" writeln
- "\url{http://dx.doi.org/" strip.doi * "}}" * writeln
- }
- if$
-}
-
-FUNCTION { output.isbn } % UTAH
-{ % output non-empty ISBN-10 and/or ISBN-13 as one-line sentences (stack untouched)
- show-isbn-10-and-13
- {
- %% show both 10- and 13-digit ISBNs
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- isbn-13 empty.or.unknown
- { }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- {
- %% show 10-digit ISBNs only if 13-digit ISBNs not available
- isbn-13 empty.or.unknown
- {
- isbn empty.or.unknown
- { }
- {
- "\showISBNx{" isbn * "}" * writeln
- }
- if$
- }
- {
- "\showISBNxiii{" isbn-13 * "}" * writeln
- }
- if$
- }
- if$
-}
-
-FUNCTION { output.issn } % UTAH
-{ % output non-empty ISSN as one-line sentence (stack untouched)
- issn empty.or.unknown
- { }
- { "\showISSN{" issn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.issue }
-{ % output non-empty issue number as a one-line sentence (stack untouched)
- issue empty.or.unknown
- { }
- { "Issue " issue * "." * writeln }
- if$
-}
-
-FUNCTION { output.lccn } % UTAH
-{ % return with stack untouched
- lccn empty.or.unknown
- { }
- { "\showLCCN{" lccn * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-FUNCTION { output.note.check } % UTAH
-{ % return with stack empty
- note empty.or.unknown
- { "empty note in " cite$ * warning$ }
- { "\shownote{" note add.period$ * "}" * writeln }
- if$
-}
-
-%
-% Changes by BV 2011/04/15. Do not output
-% url if doi is defined
-%
-FUNCTION { output.url } % UTAH
-{ % return with stack untouched
- % output URL and associated lastaccessed fields
- doi empty.or.unknown
- {
- url empty.or.unknown
- { }
- {
- %% NB: We want URLs at beginning of line to reduce likelihood of
- %% BibTeX's nasty line wrapping after column 79, which would require
- %% manual (or automated) editing of the .bbl file to repair. However,
- %% the \url{} macro handles the unwrapping job automatically.
- "\showURL{%" writeln
- lastaccessed empty.or.unknown
- { "" }
- { "Retrieved " lastaccessed * " from " * }
- if$
-
- %% The URL field may contain a semicolon-separated list of Web
- %% addresses, and we locate and wrap each of them in \url{...}.
- %% The simplistic approach of putting the entire list into the
- %% macro argument is that the semicolons are typeset in a
- %% typewriter font, and no space follows them.
- %%
- %% We therefore replace the original code
- %% "\url{" * url * "}}" * writeln
- %% with this character-at-a-time loop:
-
- "\url{" *
-
- url 't := % get modifiable copy of URL list
-
- { t text.length$ }
- {
- t #1 #1 substring$ ";" =
- { % then split argument at separator
- "};" * writeln
- "\url{"
- }
- { % else concatenate nonblank character to argument
- t #1 #1 substring$ " " =
- { }
- { t #1 #1 substring$ * }
- if$
- }
- if$
-
- t #2 t text.length$ #1 - substring$ 't :=
- }
- while$
-
- "}}" * writeln
- }
- if$
- }
- { }
- if$
-}
-
-FUNCTION { output.year.check }
-{ % warn if year empty, else output top string and leave " YEAR<label>" on stack in mid-sentence
- year empty.or.unknown
- { "empty year in " cite$ * warning$ }
- { write$
- " " year * extra.label *
- mid.sentence 'output.state :=
- }
- if$
-}
-
-FUNCTION { not }
-{
- { #0 }
- { #1 }
- if$
-}
-
-FUNCTION { and }
-{
- 'skip$
- { pop$ #0 }
- if$
-}
-
-FUNCTION { or }
-{
- { pop$ #1 }
- 'skip$
- if$
-}
-
-FUNCTION { le }
-{
- %% test whether first number is less than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 <= n2 then 1 else 0
-
- %% "DEBUG: le " cite$ * warning$
- > { #0 } { #1 } if$
-}
-
-FUNCTION { ge }
-{
- %% test whether first number is greater than or equal to second number
- %% stack in: n1 n2
- %% stack out: if n1 >= n2 then 1 else 0
-
- %% "DEBUG: ge " cite$ * warning$
- < { #0 } { #1 } if$
-}
-
-FUNCTION { is.leading.digit }
-{
- %% test whether first character of string is a digit
- %% stack in: string
- %% stack out: if first-char-is-digit then 1 else 0
-
- #1 #1 substring$ % replace string by string[1:1]
- duplicate$ % string[1:1] string[1:1]
- chr.to.int$
- "0" chr.to.int$ swap$ le % "0" <= string[1:1] --> 0-or-1
- swap$ % 0-or-1 string[1:1]
- chr.to.int$
- "9" chr.to.int$ le % string[1:1} <= "9" --> 0-or-1
- and
-}
-
-FUNCTION { skip.digits }
-{
- %% skip over leading digits in string
- %% stack in: string
- %% stack out: rest-of-string leading-digits
-
- duplicate$
- 't :=
- 't.org :=
- "" 'u :=
-
- { t text.length$ }
- {
- %% "=================DEBUG: skip.digits t = [" t * "]" * warning$
- t is.leading.digit
- { t #2 t text.length$ #1 - substring$ }
- {
- t 'u :=
- ""
- }
- if$
- 't :=
- }
- while$
-
- u % rest of string
- t.org #1 t.org text.length$ u text.length$ - substring$ % leading digits
-}
-
-FUNCTION { skip.nondigits }
-{
- %% skip over leading nondigits in string
- %% stack in: string
- %% stack out: rest-of-string
-
- 't :=
- "" 'u :=
-
- { t text.length$ }
- {
- t is.leading.digit
- {
- t 'u :=
- ""
- }
- { t #2 t text.length$ #1 - substring$ }
- if$
- 't :=
- }
- while$
-
- u % rest of string
-}
-
-FUNCTION { parse.next.number }
-{
- %% stack in: string
- %% stack out: rest-of-string next-numeric-part-of-string
- %% Example:
- %% stack in: "123:1--123:59"
- %% stack out: ":1--123:59" "123"
-
- 's :=
- s skip.nondigits 's :=
- s skip.digits
-}
-
-FUNCTION { reduce.pages.to.page.count }
-{
- %% Stack in: arbitrary-and-unused
- %% Stack out: unchanged
- %%
- %% For the new-style pagination with article number and numpages or
- %% pages, we expect to have BibTeX entries containing something like
- %% articleno = "17",
- %% pages = "1--23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% numpages = "23",
- %% with output "Article 17, 23 pages",
- %% or
- %% articleno = "17",
- %% pages = "17:1--17:23",
- %% with output "Article 17, 23 pages",
- %%
- %% If articleno is missing or empty, then we should output "1--23",
- %% "23" (with a warning of a missing articleno), or "17:1--17:23",
- %% respectively.
-
- %% "DEBUG: enter reduce.pages.to.page.count " cite$ * warning$
-
- %% "DEBUG: pages = [" pages * "]" * warning$
-
- pages
- parse.next.number 'p1 :=
- parse.next.number 'p2 :=
- parse.next.number 'p3 :=
- parse.next.number 'page.count :=
-
- duplicate$
- empty.or.unknown
- { }
- {
- duplicate$ "unexpected trailing garbage [" swap$ *
- "] after n:p1--n:p2 in pages = [" *
- pages *
- "] in " *
- cite$ *
- warning$
- }
- if$
-
- pop$
-
- %% "DEBUG: reduce.pages.to.page.count: "
- %% " p1 = " p1 * *
- %% " p2 = " p2 * *
- %% " p3 = " p3 * *
- %% " p4 = " page.count * *
- %% " in " cite$ * * warning$
-
- p1 p3 = p2 "1" = and numpages empty.or.unknown and
- { "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$ }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- p1 "1" = p3 empty.or.unknown and numpages empty.or.unknown and
- {
- p2 'page.count :=
- "INFO: reduced pages = [" pages * "] to numpages = [" * page.count * "]" * warning$
- }
- {
- numpages empty.or.unknown
- { pages }
- { numpages }
- if$
- 'page.count :=
- }
- if$
-
- %% "DEBUG: leave reduce.pages.to.page.count " cite$ * warning$
-}
-
-FUNCTION { new.block.checkb }
-{ % issue a new.block only if at least one of top two stack strings is not empty
- empty.or.unknown
- swap$ empty.or.unknown
- and
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { field.or.null }
-{ % convert empty value to null string, else return value
- duplicate$ empty.or.unknown
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION { emphasize }
-{ % emphasize a non-empty top string on the stack (WITHOUT italic correction)
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "}" * }
- if$
-}
-
-FUNCTION { emphasize.with.italic.correction }
-{ % convert empty string to null string, or emphasize with a trailing italic correction
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{\em " swap$ * "\/}" * }
- if$
-}
-
-FUNCTION { comma }
-{ % convert empty string to null string, or brace string and add trailing comma
- duplicate$ empty.or.unknown
- { pop$ "" }
- { "{" swap$ * "}," * }
- if$
-}
-
-FUNCTION { format.names }
-{
- % 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.
-
- 's :=
- #1 'nameptr := % nameptr = 1;
- s num.names$ 'numnames := % numnames = num.name$(s);
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 =
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- %NO: BAD ORDER: {"{" s nameptr "{ff~}{ll}{, jj}{, vv}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- {"{" s nameptr "{ff }{vv }{ll}{, jj}" format.name$ * "}" * 't := }
- if$
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{\sc 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 { 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 "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
-
- nameptr #1 >
- {
- namesleft #1 >
- { ", " * t * }
- {
- numnames #2 >
- { "," * }
- 'skip$
- if$
- t "{others}" =
- { " {et~al\mbox{.}}" * }
- { " {and} " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr := % nameptr += 1;
- namesleft #1 - 'namesleft := % namesleft =- 1;
- }
- while$
-}
-
-FUNCTION { format.authors }
-{
- author empty.or.unknown
- { "" }
- { author format.names add.period$} % jtb: add period if none before
- if$
-}
-
-FUNCTION { format.key }
-{
- empty.or.unknown
- { key field.or.null }
- { "" }
- if$
-}
-
-FUNCTION { format.no.key }
-{
- empty.or.unknown
- { "" }
- { "" }
- if$
-}
-
-FUNCTION { format.editors.fml }
-{
- % 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.
-
- editor empty.or.unknown
- { "" }
- {
- editor format.names.fml editor num.names$ #1 >
- { " (Eds.)" * }
- { " (Ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.editors }
-{ % format editor names for use in labels, last names first.
- editor empty.or.unknown
- { "" }
- {
- editor format.names
- editor num.names$ #1 >
- { " (Eds.)." * }
- { " (Ed.)." * }
- if$
- }
- if$
-}
-
-FUNCTION { format.articletitle }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { "\showarticletitle{" title * "}" * }
- % Use this for downcase title style:
- % { \showarticletitle{" title "t" change.case$ * "}" * }
- if$
-}
-
-FUNCTION { format.title }
-{
- title empty.or.unknown
- { "" }
- % Use this to preserve lettercase in titles:
- { title }
- % Use this for downcase title style:
- % { title "t" change.case$ }
- if$
-}
-
-FUNCTION { n.dashify }
-{
- 't :=
- ""
- { t empty.or.unknown 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.or.unknown
- { title emphasize }
- { title empty.or.unknown
- { title emphasize } % jtb: what is this supposed to do ?!?
- { "{\em " title * "\/} (" * edition "l" change.case$ * " ed.)" * } % jtb: no parens for ed.
- if$
- }
- if$
-}
-
-FUNCTION { format.emphasize.booktitle }
-{ % push "" or "{\em booktitle}" or "{\em booktitle}, (second ed.)" on stack
- edition empty.or.unknown
- { booktitle emphasize }
- { booktitle empty.or.unknown
- { "" }
- { "{\em " booktitle * "} (" * edition "l" change.case$ * " ed.)" * }
- if$
- }
- if$
-}
-
-FUNCTION { format.city }
-{
- % 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
-
- duplicate$ empty.or.unknown
- { }
- {
- city empty.or.unknown
- {
- date empty.or.unknown
- { }
- { " (" * date * ")" * }
- if$
- }
- {
- date empty.or.unknown
- { " (" * city * ")" * }
- { " (" * city * ", " * date * ")" * }
- if$
- }
- if$
- }
- if$
-}
-
-FUNCTION { tie.or.space.connect }
-{
- duplicate$ text.length$ #3 <
- { "~" }
- { " " }
- if$
- swap$ * *
-}
-
-FUNCTION { either.or.check }
-{
- empty.or.unknown
- 'pop$
- { "can't use both " swap$ * " fields in " * cite$ * warning$ }
- if$
-}
-
-FUNCTION { format.bvolume }
-{
- % jtb: If there is a series, this is added and the volume trails after it.
- % jtb: Otherwise, "Vol" is Capitalized.
-
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.bvolume.noseries }
-{
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "Vol." volume tie.or.space.connect}
- { "Vol." volume tie.or.space.connect}
-% { series ", " * "Vol." volume tie.or.space.connect *}
- if$
- "volume and number" number either.or.check
- }
- if$
-}
-
-FUNCTION { format.series }
-{
- series empty.or.unknown
- {""}
- {" {\em (" * series ")}" *}
- if$
-}
-
-FUNCTION { format.number.series }
-{
- volume empty.or.unknown
- {
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "" }
- {
- series empty.or.unknown
- { "" }
- { " (" series * ")" * }
- if$
- }
- if$
- } % { series field.or.null }
- {
- output.state mid.sentence =
- { "Number" } % gnp - changed to mixed case always
- { "Number" }
- if$
- number tie.or.space.connect series empty.or.unknown
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- {
- ""
- }
- if$
-}
-
-FUNCTION { multi.page.check }
-{
- 't :=
- #0 'multiresult :=
- { multiresult not
- t empty.or.unknown 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.or.unknown
- { "" }
- {
- pages multi.page.check
- { pages n.dashify } % gnp - removed () % jtb: removed pp.
- { pages }
- if$
- }
- if$
-}
-
-FUNCTION { format.pages.check.without.articleno }
-{ %% format pages field only if articleno is absent
- %% Stack out: pages-specification
- numpages missing$ pages missing$ and
- { "page numbers missing in both pages and numpages fields in " cite$ * warning$ }
- { }
- if$
-
- articleno empty.or.unknown
- {
- pages missing$
- { numpages }
- { format.pages }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION { format.pages.check }
-{
- pages empty.or.unknown
- { "page numbers missing in " cite$ * warning$ "" }
- { pages n.dashify }
- if$
-}
-
-FUNCTION { format.bookpages }
-{
- bookpages empty.or.unknown
- { "" }
- { bookpages "book pages" tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.named.pages }
-{
- pages empty.or.unknown
- { "" }
- { format.pages "pages" tie.or.space.connect }
- if$
-}
-
-%
-% Changed by Boris Veytsman, 2011-03-13
-% Now the word "pages" is printed even if
-% there field pages is not empty.
-%
-
-FUNCTION { format.page.count }
-{
- page.count empty.or.unknown
- { "" }
- {
- articleno empty.or.unknown
- { "numpages field, but no articleno field, in " cite$ * warning$ }
- { }
- if$
- page.count "pages" tie.or.space.connect
- }
- if$
-}
-
-FUNCTION { format.articleno.numpages }
-{
- %% There are seven possible outputs, depending on which fields are set.
- %%
- %% These four are handled here:
- %%
- %% articleno, numpages, pages -> "Article articleno-value, numpages-value pages"
- %% articleno, numpages -> "Article articleno-value, numpages-value pages"
- %% articleno, pages -> "Article articleno-value, reduced-pages-value pages"
- %% articleno -> "Article articleno-value" and warn about missing numpages
- %%
- %% The remaining three have already been handled by
- %% format.pages.check.without.articleno:
- %%
- %% numpages, pages -> "pages-value"
- %% numpages -> "numpages-value"
- %% pages -> "pages-value"
-
- articleno empty.or.unknown
- {
- numpages empty.or.unknown
- { }
- { "require articleno with numpages field in " cite$ * warning$ }
- if$
- ""
- }
- {
- numpages empty.or.unknown
- {
- pages empty.or.unknown
- {
- "require pages or numpages fields with articleno field in " cite$ * warning$
- "" 'page.count :=
- }
- { reduce.pages.to.page.count }
- if$
- }
- { numpages 'page.count := }
- if$
-
- %% The Article number is now handled in format.day.month.year because
- %% ACM prefers the style "Digital Libraries 12, 3, Article 5 (July 2008)"
- %% over "Digital Libraries 12, 3 (July 2008), Article 5"
- %% format.articleno output
- format.page.count
- }
- if$
-}
-
-FUNCTION { format.journal.volume.number.day.month.year }
-{
- % By Young (and Spencer)
- % GNP - fixed bugs with missing volume, number, and/or pages
- %
- % Format journal, volume, number, pages for article types.
- %
- journal empty.or.unknown
- { "no journal in " cite$ * warning$
- "" }
-% { journal emphasize.with.italic.correction }
- {
- journal "Journal of the ACM" =
- { "{\it J. ACM}" }
- {
- journal "American Mathematical Society Translations" =
- { "{\it Amer. Math. Soc. Transl.}" }
- {
- journal "Bulletin of the American Mathematical Society" =
- { "{\it Bull. Amer. Math. Soc.}" }
- {
- journal "Proceedings of the American Mathematical Society" =
- { "{\it Proc. Amer. Math. Soc.}" }
- {
- journal "Transactions of the American Mathematical Society" =
- { "{\it Trans. Amer. Math. Soc.}" }
- {
- journal "Communications of the {ACM}" =
- { "{\it Commun. {ACM}}" }
- {
- journal "{ACM} Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "{ACM} Transactions on Mathematical Software" =
- { "{\it {ACM} Trans. Math. Software}" }
- {
- journal "{ACM} {SIGNUM} Newsletter" =
- { "{\it {ACM} {SIGNUM} Newslett.}" }
- {
- journal "American Journal of Sociology" =
- { "{\it Amer. J. Sociology}" }
- {
- journal "Journal of the American Statistical Association" =
- { "{\it J. Amer. Statist. Assoc.}" }
- {
- journal "Applied Mathematics and Computation" =
- { "{\it Appl. Math. Comput.}" }
- {
- journal "American Mathematical Monthly" =
- { "{\it Amer. Math. Monthly}" }
- {
- journal "British Journal of Mathematical and Statistical Psychology" =
- { "{\it Brit. J. Math. Statist. Psych.}" }
- {
- journal "Canadian Mathematical Bulletin" =
- { "{\it Canad. Math. Bull.}" }
- {
- journal "Journal of Computational and Applied Mathematics" =
- { "{\it J. Comput. Appl. Math.}" }
- {
- journal "Journal of Computational Physics" =
- { "{\it J. Comput. Phys.}" }
- {
- journal "Computers and Structures" =
- { "{\it Comput. \& Structures}" }
- {
- journal "The Computer Journal" =
- { "{\it Comput. J.}" }
- {
- journal "Journal of Computer and System Sciences" =
- { "{\it J. Comput. System Sci.}" }
- {
- journal "Contemporary Mathematics" =
- { "{\it Contemp. Math.}" }
- {
- journal "Crelle's Journal" =
- { "{\it Crelle's J.}" }
- {
- journal "Giornale di Mathematiche" =
- { "{\it Giorn. Mat.}" }
- {
- journal "{IEEE} Transactions on Computers" =
- { "{\it {IEEE} Trans. Comput.}" }
- {
- journal "{IEEE} Transactions on Automatic Control" =
- { "{\it {IEEE} Trans. Automat. Control}" }
- {
- journal "Proceedings of the {IEEE}" =
- { "{\it Proc. {IEEE}}" }
- {
- journal "{IEEE} Transactions on Aerospace and Electronic Systems" =
- { "{\it {IEEE} Trans. Aerospace Electron. Systems}" }
- {
- journal "{IMA} Journal of Numerical Analysis" =
- { "{\it {IMA} J. Numer. Anal.}" }
- {
- journal "Information Processing Letters" =
- { "{\it Inform. Process. Lett.}" }
- {
- journal "Journal of the Institute of Mathematics and its Applications" =
- { "{\it J. Inst. Math. Appl.}" }
- {
- journal "International Journal of Control" =
- { "{\it Internat. J. Control}" }
- {
- journal "International Journal for Numerical Methods in Engineering" =
- { "{\it Internat. J. Numer. Methods Engrg.}" }
- {
- journal "International Journal of Supercomputing Applications" =
- { "{\it Internat. J. Supercomputing Applic.}" }
- {
- journal "Journal of Research of the National Bureau of Standards" =
- { "{\it J. Res. Nat. Bur. Standards}" }
- {
- journal "Linear Algebra and its Applications" =
- { "{\it Linear Algebra Appl.}" }
- {
- journal "Journal of Mathematical Analysis and Applications" =
- { "{\it J. Math. Anal. Appl.}" }
- {
- journal "Mathematische Annalen" =
- { "{\it Math. Ann.}" }
- {
- journal "Journal of Mathematical Physics" =
- { "{\it J. Math. Phys.}" }
- {
- journal "Mathematics of Computation" =
- { "{\it Math. Comp.}" }
- {
- journal "Mathematica Scandinavica" =
- { "{\it Math. Scand.}" }
- {
- journal "Mathematical Tables and Other Aids to Computation" =
- { "{\it Math. Tables Aids Comput.}" }
- {
- journal "Numerische Mathematik" =
- { "{\it Numer. Math.}" }
- {
- journal "Pacific Journal of Mathematics" =
- { "{\it Pacific J. Math.}" }
- {
- journal "Journal of Parallel and Distributed Computing" =
- { "{\it J. Parallel and Distrib. Comput.}" }
- {
- journal "Parallel Computing" =
- { "{\it Parallel Comput.}" }
- {
- journal "Philosophical Magazine" =
- { "{\it Philos. Mag.}" }
- {
- journal "Proceedings of the National Academy of Sciences of the USA" =
- { "{\it Proc. Nat. Acad. Sci. U. S. A.}" }
- {
- journal "Quarterly Journal of Mathematics, Oxford, Series (2)" =
- { "{\it Quart. J. Math. Oxford Ser. (2)}" }
- {
- journal "Quarterly of Applied Mathematics" =
- { "{\it Quart. Appl. Math.}" }
- {
- journal "Review of the International Statisical Institute" =
- { "{\it Rev. Inst. Internat. Statist.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics" =
- { "{\it J. Soc. Indust. Appl. Math.}" }
- {
- journal "Journal of the Society for Industrial and Applied Mathematics, Series B, Numerical Analysis" =
- { "{\it J. Soc. Indust. Appl. Math. Ser. B Numer. Anal.}" }
- {
- journal "{SIAM} Journal on Algebraic and Discrete Methods" =
- { "{\it {SIAM} J. Algebraic Discrete Methods}" }
- {
- journal "{SIAM} Journal on Applied Mathematics" =
- { "{\it {SIAM} J. Appl. Math.}" }
- {
- journal "{SIAM} Journal on Computing" =
- { "{\it {SIAM} J. Comput.}" }
- {
- journal "{SIAM} Journal on Matrix Analysis and Applications" =
- { "{\it {SIAM} J. Matrix Anal. Appl.}" }
- {
- journal "{SIAM} Journal on Numerical Analysis" =
- { "{\it {SIAM} J. Numer. Anal.}" }
- {
- journal "{SIAM} Review" =
- { "{\it {SIAM} Rev.}" }
- {
- journal "{SIAM} Journal on Scientific and Statistical Computing" =
- { "{\it {SIAM} J. Sci. Statist. Comput.}" }
- {
- journal "Software Practice and Experience" =
- { "{\it Software Prac. Experience}" }
- {
- journal "Statistical Science" =
- { "{\it Statist. Sci.}" }
- {
- journal "{USSR} Computational Mathematics and Mathematical Physics" =
- { "{\it {U. S. S. R.} Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of {VLSI} and Computer Systems" =
- { "{\it J. {VLSI} Comput. Syst.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Mechanik" =
- { "{\it Z. Angew. Math. Mech.}" }
- {
- journal "Zeitschrift fur Angewandte Mathematik und Physik" =
- { "{\it Z. Angew. Math. Phys.}" }
- {
- journal "ACM Computing Surveys" =
- { "{\it Comput. Surveys}" }
- {
- journal "ACM Transactions on Mathematical Software" =
- { "{\it ACM Trans. Math. Software}" }
- {
- journal "ACM {SIGNUM} Newsletter" =
- { "{\it ACM {SIGNUM} Newslett.}" }
- {
- journal "IEEE Transactions on Computers" =
- { "{\it IEEE Trans. Comput.}" }
- {
- journal "IEEE Transactions on Automatic Control" =
- { "{\it IEEE Trans. Automat. Control}" }
- {
- journal "Proceedings of the IEEE" =
- { "{\it Proc. IEEE}" }
- {
- journal "IEEE Transactions on Aerospace and Electronic Systems" =
- { "{\it IEEE Trans. Aerospace Electron. Systems}" }
- {
- journal "IMA Journal of Numerical Analysis" =
- { "{\it IMA J. Numer. Anal.}" }
- {
- journal "SIAM Journal on Algebraic and Discrete Methods" =
- { "{\it SIAM J. Algebraic Discrete Methods}" }
- {
- journal "SIAM Journal on Applied Mathematics" =
- { "{\it SIAM J. Appl. Math.}" }
- {
- journal "SIAM Journal on Computing" =
- { "{\it SIAM J. Comput.}" }
- {
- journal "SIAM Journal on Matrix Analysis and Applications" =
- { "{\it SIAM J. Matrix Anal. Appl.}" }
- {
- journal "SIAM Journal on Numerical Analysis" =
- { "{\it SIAM J. Numer. Anal.}" }
- {
- journal "SIAM Review" =
- { "{\it SIAM Rev.}" }
- {
- journal "SIAM Journal on Scientific and Statistical Computing" =
- { "{\it SIAM J. Sci. Statist. Comput.}" }
- {
- journal "USSR Computational Mathematics and Mathematical Physics" =
- { "{\it U. S. S. R. Comput. Math. and Math. Phys.}" }
- {
- journal "Journal of VLSI and Computer Systems" =
- { "{\it J. VLSI Comput. Syst.}" }
- {
- journal "Communications of the ACM" =
- { "{\it Commun. ACM}" }
- %% If no match with cases needing special handling, just output journal name
- { journal emphasize.with.italic.correction }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
- }
- if$
-
- number empty.or.unknown
- {
- volume empty.or.unknown
- { "no number and no volume in " cite$ * warning$ "" * }
- { " " * " {" * volume * "}" * }
- if$
- }
- {
- volume empty.or.unknown
- {
- "unusual to have number, but no volume, for " cite$ * warning$
- " " * number *
- }
- { " " * volume comma " " * number * * }
- if$
- }
- if$
-
- format.day.month.year *
-}
-
-FUNCTION { format.chapter.pages }
-{
- chapter empty.or.unknown
- 'format.pages
- { type empty.or.unknown
- { "Chapter" } % gnp - changed to mixed case
- { type "t" change.case$ }
- if$
- chapter tie.or.space.connect
- pages empty.or.unknown
- {"page numbers missing in " cite$ * warning$} % gnp - added check
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION { format.in.emphasize.booktitle }
-{ % jtb: format for collections or proceedings not appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " format.emphasize.booktitle * }
- if$
-}
-
-FUNCTION { format.in.booktitle }
-{ % jtb: format for proceedings appearing in a journal
- booktitle empty.or.unknown
- { "" }
- { "In " booktitle * }
- if$
-}
-
-FUNCTION { format.in.ed.booktitle }
-{
- booktitle empty.or.unknown
- { "" }
- { editor empty.or.unknown
- { "In " format.emphasize.booktitle * }
- % jtb: swapped editor location
- { "In " format.emphasize.booktitle * ", " * format.editors.fml * }
- if$
- }
- if$
-}
-
-FUNCTION { format.thesis.type }
-{ % call with default type on stack top
- type empty.or.unknown
- 'skip$ % use default type
- {
- pop$ % discard default type
- % NO: it is silly to have to brace protect every degree type!: type "t" change.case$
- type
- }
- if$
-}
-
-FUNCTION { format.tr.number }
-{
- type empty.or.unknown
- { "Tech. Rep." }
- 'type
- if$
- number empty.or.unknown
- { "t" change.case$ }
- %% LOOKS BAD: { "." * number tie.or.space.connect }
- %% Prefer "Research report RJ687." to "Research report. RJ687."
- { number tie.or.space.connect }
- if$
-}
-
-FUNCTION { format.advisor }
-{
- advisor empty.or.unknown
- { "" }
- { "Advisor(s) " advisor * }
- if$
-}
-
-FUNCTION { format.article.crossref }
-{ "See"
- "\cite{" * 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.or.unknown
- { "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.or.unknown
- editor field.or.null author field.or.null =
- or
- { key empty.or.unknown
- { series empty.or.unknown
- { "need editor, key, or series for " cite$ * " to crossref " *
- crossref * warning$
- "" *
- }
- { "{\em " * series * "\/}" * }
- if$
- }
- { key * }
- if$
- }
- { format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { format.incoll.inproc.crossref }
-{ "See"
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION { format.lab.names }
-{
- % 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.
-
- '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.or.unknown
- { key empty.or.unknown
- { "no key, author in " cite$ * warning$
- cite$ #1 #3 substring$ }
- 'key
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION { author.key.organization.label }
-{ % added - gnp. Provide label formatting by organization if author is null.
- author empty.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { organization empty.or.unknown
- { key empty.or.unknown
- { "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.or.unknown
- { editor empty.or.unknown
- { key empty.or.unknown
- { "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
- type$ "periodical" =
- 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.or.unknown % generate the full label citation information.
- {
- editor empty.or.unknown
- {
- organization empty.or.unknown
- {
- key empty.or.unknown
- {
- "no author, editor, organization, or key in " cite$ * warning$
- "??"
- }
- { key }
- if$
- }
- { 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$
- %% acmtrans.bst alphanumeric style:
- %%: "\bibitem[\protect\citeauthoryear{" write$
- %%: calc.label write$
- %%: sort.year write$
- %%: "}]%" writeln
- %%: " {" write$
- %%: cite$ write$
- %%: "}" writeln
- %% acm-plain.bst numeric style:
- newline$
- "\bibitem{" write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url }
-{ % enter and return with stack empty
- %% We switch now from buffered output to output of complete lines, so
- %% that the Issue .. URL data have their own lines, and are less likely
- %% to be line-wrapped by BibTeX's short-sighted algorithm, which wraps
- %% lines longer than 79 characters, backtracking to what it thinks is
- %% a break point in the string. Any such wrapping MUST be undone to
- %% prevent percent-newline from appearing in DOIs and URLs. The
- %% output data are intentionally wrapped in \showxxx{} macros at
- %% beginning of line, and that supply their own punctuation (if they
- %% are not defined to suppress output entirely), to make it easier for
- %% other software to recover them from .bbl files.
- %%
- %% It also makes it possible to later change the macro definitions
- %% to suppress particular output values, or alter their appearance.
- %%
- %% Note that it is possible for theses, technical reports, and
- %% manuals to have ISBNs, and anything that has an ISBN may also
- %% have an ISSN. When there are no values for these keys, there
- %% is no output generated for them here.
-
- "\newblock" writeln
- after.block 'output.state :=
-
- output.issue
- output.isbn
- output.coden % CODEN is functionally like ISSN, so output them sequentially
- output.issn
- output.lccn
- output.doi % DOI is ALWAYS last according to CrossRef DOI documentation
- output.url % but ACM wants URL last
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note
- }
- if$
- ""
-}
-
-FUNCTION { output.issue.doi.coden.isxn.lccn.url.note.check }
-{ % enter with stack empty, return with empty string on stack
- output.issue.doi.coden.isxn.lccn.url
- note empty.or.unknown
- { }
- {
- "\newblock" writeln
- output.note.check
- }
- if$
- ""
-}
-
-FUNCTION { article }
-{
- output.bibitem
-
- author empty.or.unknown
- {
- editor empty.or.unknown
- { "neither author and editor supplied for " cite$ * warning$ }
- { format.editors "editor" output.check }
- if$
- }
- { format.authors "author" output.check }
- if$
-
- author format.no.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- new.block
- howpublished output
-
- crossref missing$
- { format.journal.volume.number.day.month.year }
- {
- "cross reference in @Article{...} is unusual" warning$
- format.article.crossref output.nonnull
- }
- if$
- output
-
- format.pages.check.without.articleno output
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { book }
-{
- output.bibitem
- author empty.or.unknown
- { 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
- fin.sentence
- pages empty.or.unknown
- { format.bookpages } % use bookpages when pages empty
- { format.pages.check "pages" tie.or.space.connect }
- if$
- output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inbook }
-{
- output.bibitem
- author empty.or.unknown
- { 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.bookpages output
- format.chapter.pages
- "chapter and pages" output.check % jtb: moved from before publisher
- }
- {
- format.bookpages output
- format.chapter.pages "chapter and pages" output.check
- new.block
- format.book.crossref output.nonnull
- }
- if$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { incollection }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "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.bookpages output
- 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$
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { inproceedings }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.articletitle "title" output.check
- howpublished output.dot.space
- crossref missing$
- {
- journal missing$ % jtb: proceedings appearing in journals
- { format.in.emphasize.booktitle format.city "booktitle" output.check.dot.space
- format.series output.removenospace
- format.editors.fml output.dot.space
- format.bvolume.noseries output
- new.sentence
- organization output
- publisher "publisher" output.check % jtb: require publisher (?)
- address "address" output.check % jtb: require address
- format.bookpages output
- }
- {
- format.in.booktitle format.city "booktitle" output.check
- format.editors.fml output
- new.sentence
- format.journal.volume.number.day.month.year output
- }
- if$
- format.articleno output
- format.pages.check.without.articleno output
- }
- {
- format.incoll.inproc.crossref output.nonnull
- format.articleno output
- format.pages.check.without.articleno output
- }
- if$
- format.articleno.numpages output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { conference } { inproceedings }
-
-FUNCTION { manual }
-{
- output.bibitem
- author empty.or.unknown
- { editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { mastersthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "M.S.\ thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- "" output.nonnull.dot.space
- output.day.month.year
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { phdthesis }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.title emphasize "title" output.check % NB: ACM style requires emphasized thesis title
- new.block
- "Ph.D. thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- new.block
- format.advisor output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION {format.date}
-{ year empty.or.unknown
- { month empty.or.unknown
- {
- "" % output empty date if year/month both empty
- day empty.or.unknown
- { }
- { "there's a day but no month or year in " cite$ * warning$ }
- if$
- }
- { "there's a month but no year in " cite$ * warning$
- month
- day empty.or.unknown
- { }
- { " " * day * }
- if$
- }
- if$
- }
- { month empty.or.unknown
- {
- year % output only year if month empty
- day empty.or.unknown
- { }
- { "there's a day and year but no month in " cite$ * warning$ }
- if$
- }
- {
- month " " *
- day empty.or.unknown
- { }
- { day * ", " * }
- if$
- year *
- }
- if$
- }
- if$
-}
-
-FUNCTION {new.block.checka}
-{
- empty.or.unknown
- 'skip$
- 'new.block
- if$
-}
-
-FUNCTION { periodical }
-{
- output.bibitem
- editor empty.or.unknown
- { organization output }
- { format.editors output.nonnull }
- if$
- new.block
- title emphasize "title" output.check
- format.date output
- new.sentence
- publisher output
- address output
- howpublished new.block.checka
- howpublished output
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { proceedings }
-{
- output.bibitem
- editor empty.or.unknown
- { 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
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- fin.entry
-}
-
-FUNCTION { techreport }
-{
- output.bibitem
- format.authors "author" output.check
- author format.key output % added
- output.year.check % added
- new.block
- format.btitle "title" output.check
- new.block
- format.tr.number output % jtb: moved month ...
- institution "institution" output.check
- address output
- new.sentence
- format.named.pages output
- % ACM omits year at end in transactions style
- % format.day.month.year output.nonnull.dot.space % jtb: ... to here (no parens)
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note
- 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
- fin.sentence
- output.day.month.year % UTAH
- fin.block
- output.issue.doi.coden.isxn.lccn.url.note.check
- fin.entry
-}
-
-FUNCTION { default.type } { misc }
-
-%%% ACM journal-style month definitions: full name if 1--5 letters, else
-%%% abbreviation of 3 or 4 characters and a dot
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"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."}
-
-
-%%% ====================================================================
-%%% I M P O R T A N T C H A N G E
-%%%
-%%% For the 2009 release of the official acm-*.bst files, there are to
-%%% be NO predefined journal abbreviations in those style files.
-%%%
-%%% ACM may later develop an official list of mappings of full journal
-%%% names of commonly-cited journals to ACM-preferred abbreviations, but
-%%% authors should consider that use of any of these commented-out
-%%% abbreviations is DEPRECATED unless the BibTeX file itself provides
-%%% its own @String{name = "value"} definitions.
-%%%
-%%% Use of journal (and publisher and address) @String{...}
-%%% abbreviations, as opposed to explicit value assignments such as
-%%% journal = "J. ACM" and publisher = "IEEE", is preferred in
-%%% bibliographic databases, because it makes it easier for journal
-%%% production staff to replace those definitions by publisher-preferred
-%%% abbreviations when articles are typeset for publication.
-%%%
-%%% For historical reasons, and because some of these abbreviations are
-%%% used in other (non-ACM) bibliography style files, they are preserved
-%%% here in comments. Future releases of the acm*-.bst files are likely
-%%% to remove them entirely.
-%%% ====================================================================
-%%%
-%%% DEPRECATED: MACRO {acmcs} {"ACM Comput. Surv."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acmlett} {"ACM Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acta} {"Acta Inf."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ai} {"Artificial Intelligence"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {al} {"Ada Lett."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {acr} {"Adv. Comput. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {bit} {"Bit"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cacm} {"Commun. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cj} {"Comput. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cn} {"Comput. Netw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {cl} {"Comput. Lang."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmjrd} {"IBM J. Res. and Development"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ibmsj} {"IBM Systems Journal"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ict} {"Inf. Contr."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieebcs} {"IEE/BCS Softw. Eng. J."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieees} {"IEEE Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeese} {"IEEE Trans. Softw. Eng."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetc} {"IEEE Trans. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetcad} {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetpds} {"IEEE Trans. Parall. Distrib. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ieeetit} {"IEEE Trans. Inf. Theory"}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ipl} {"Inf. Process. Lett."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {icp} {"Inf. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ist} {"Inf. Softw. Tech."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijsa} {"Int. J. Supercomput. Appl."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ijpp} {"Int. J. Parallel Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jacm} {"J. ACM"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: % MACRO {jcss} {"Journal of Computer and System Sciences"} % original BibTeX
-%%% DEPRECATED: MACRO {jcss} {"J. Comput. Syst. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlp} {"J. Logic Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jfp} {"J. Funct. Program."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jsmrp} {"J. Softw. Maint. Res. Pract."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jss} {"J. Syst. Softw."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlc} {"J. Logic and Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {jlsc} {"J. Lisp Symb. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {lpls} {"Lett. Program. Lang. Syst."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mor} {"Math. Oper. Res."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mscs} {"Math. Struct. Comput. Sci."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {mst} {"Math. Syst. Theor."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {ngc} {"New Gen. Comput."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {scp} {"Sci. Comput. Program."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {sicomp} {"SIAM J. Comput."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {spe} {"Softw. Pract. Exper."}
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tocs} {"ACM Trans. Comput. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tods} {"ACM Trans. Database Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tog} {"ACM Trans. Graphics"} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toms} {"ACM Trans. Math. Softw."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toois} {"ACM Trans. Office Inf. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {toplas} {"ACM Trans. Program. Lang. Syst."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tcs} {"Theor. Comput. Sci."} % original BibTeX
-%%% DEPRECATED:
-%%% DEPRECATED: MACRO {tr} {"Tech. Rep."}
-%%% ====================================================================
-
-READ
-
-STRINGS { longest.label }
-
-INTEGERS { number.label longest.label.width }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
-}
-
-FUNCTION {longest.label.pass}
-{ number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {longest.label.pass}
-
-FUNCTION { initialize.extra.label.stuff }
-{ #0 int.to.chr$ 'last.label :=
- "" 'next.extra :=
- #0 'last.extra.num :=
-}
-
-EXECUTE {initialize.extra.label.stuff}
-
-FUNCTION { begin.bib }
-{
- %% Set to #0 show 13-digit ISBN in preference to 10-digit ISBN.
- %% Set to #1 to show both 10-digit and 13-digit ISBNs.
- #1 'show-isbn-10-and-13 :=
-
- "%%% -*-BibTeX-*-" writeln
- "%%% Do NOT edit. File created by BibTeX with style acmtrans-v2 [15-Nov-2008]." writeln
- "" writeln
-
- preamble$ empty.or.unknown
- 'skip$
- { preamble$ writeln }
- if$
- "\begin{thebibliography}{" longest.label * "}" * writeln
- "" writeln
- "%%% ====================================================================" writeln
- "%%% NOTE TO THE USER: you can override these defaults by providing" writeln
- "%%% customized versions of any of these macros before the \bibliography" writeln
- "%%% command. Each of them MUST provide its own final punctuation," writeln
- "%%% except for \shownote{}, \showDOI{}, and \showURL{}. The latter two" writeln
- "%%% do not use final punctuation, in order to avoid confusing it with" writeln
- "%%% the Web address." writeln
- "%%%" writeln
- "%%% To suppress output of a particular field, define its macro to expand" writeln
- "%%% to an empty string, or better, \unskip, like this:" writeln
- "%%%" writeln
- "%%% \newcommand{\showDOI}[1]{\unskip} % LaTeX syntax" writeln
- "%%%" writeln
- "%%% \def \showDOI #1{\unskip} % plain TeX syntax" writeln
- "%%%" writeln
- "%%% ====================================================================" writeln
- "" writeln
-
- %% ACM publications do not use CODEN, ISSN, and LCCN data, so their default
- %% macro wrappers expand to \unskip, discarding their values and unwanted
- %% space.
- %%
- %% For other publications, prior definitions like these may be useful:
- %%
- %% Plain TeX:
- %% \def \showCODEN #1{CODEN #1.}
- %% \def \showISSN #1{ISSN #1.}
- %% \def \showLCCN #1{LCCN #1.}
- %%
- %% LaTeX:
- %% \newcommand{\showCODEN}[1]{CODEN #1.}
- %% \newcommand{\showISSN}[1]#1{ISSN #1.}
- %% \newcommand{\showLCCN}[1]{LCCN #1.}
-
- "\ifx \showCODEN \undefined \def \showCODEN #1{\unskip} \fi" writeln
- "\ifx \showDOI \undefined \def \showDOI #1{{\tt DOI:}\penalty0{#1}\ } \fi" writeln
- % ACM styles omit ISBNs, but they can be included by suitable definitions of
- % \showISBNx and \showISBNxiii before the .bbl file is read
- "\ifx \showISBNx \undefined \def \showISBNx #1{\unskip} \fi" writeln
- "\ifx \showISBNxiii \undefined \def \showISBNxiii #1{\unskip} \fi" writeln
- "\ifx \showISSN \undefined \def \showISSN #1{\unskip} \fi" writeln
- "\ifx \showLCCN \undefined \def \showLCCN #1{\unskip} \fi" writeln
- "\ifx \shownote \undefined \def \shownote #1{#1} \fi" writeln % NB: final period supplied by add.period$ above
- "\ifx \showarticletitle \undefined \def \showarticletitle #1{#1} \fi" writeln
- "\ifx \showURL \undefined \def \showURL #1{#1} \fi" writeln
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION { end.bib }
-{
- newline$
- "\end{thebibliography}"
- writeln
-}
-
-EXECUTE {end.bib}
Deleted: trunk/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst
===================================================================
--- trunk/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,1384 +0,0 @@
-% 'acmsiggraph.bst'
-% ACM SIGGRAPH bibliography style
-% * based on "ACM Transactions bibliography style (24-Jan-88 version)"
-% A lot like abbrv.bst, but names come out "Last, initials", and in \sc.
-% Some dates are parenthesized.
-% * the citation format -- [Jones 2001] -- is pulled from 'alpha.bst'
-%
-% Version History
-% * 07 Sept 2001: original version - Stephen Spencer (spencer at acm.org)
-% * 22 Dec 2003: tweaked file for entry w/out year, removed "n. d."
-% * 28 Apr 2016: added doi
-%
-%
-ENTRY
- { address
- author
- booktitle
- chapter
- doi
- edition
- editor
- howpublished
- institution
- journal
- key
- month
- note
- number
- organization
- pages
- publisher
- school
- series
- title
- type
- volume
- year
- }
- {}
- { label extra.label 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 }
-
-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
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
- 'pop$
- 'output.nonnull
- if$
-}
-
-FUNCTION {output.check}
-{ 't :=
- duplicate$ empty$
- { pop$ "empty " t * " in " * cite$ * warning$ }
- 'output.nonnull
- if$
-}
-
-FUNCTION {output.bibitem}
-{ newline$
- "\bibitem[" write$
- label write$
- "]{" write$
- cite$ write$
- "}" write$
- newline$
- ""
- before.all 'output.state :=
-}
-
-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 {field.or.null}
-{ duplicate$ empty$
- { pop$ "" }
- 'skip$
- if$
-}
-
-FUNCTION {emphasize}
-{ duplicate$ empty$
- { pop$ "" }
- { "{\em " swap$ * "}" * }
- if$
-}
-
-FUNCTION {emphasizeic}
-{ duplicate$ empty$
- { pop$ "" }
- { "{\em " swap$ * "\/}" * }
- if$
-}
-
-FUNCTION {scapify}
-{ duplicate$ empty$
- { pop$ "" }
- { "{\sc " swap$ * "}" * }
- if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-FUNCTION {format.names}
-{ 's :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
- nameptr #1 >
- { namesleft #1 >
- { ", " * t * }
- { t "others" =
- { ", et~al." * }
- { ", and " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-% For names inside entries (e.g., editors of an "In ...");
-% this is exactly ABBRV.BST's `format.names' function.
-FUNCTION {format.innames}
-{ 's :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- 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." * }
- { " and " * t * }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
-}
-
-FUNCTION {format.authors}
-{ author empty$
- { "" }
- { author format.names scapify }
- if$
-}
-
-FUNCTION {format.editors}
-{ editor empty$
- { "" }
- { editor format.names scapify
- editor num.names$ #1 >
- { ", Eds." * }
- { ", Ed." * }
- if$
- }
- if$
-}
-
-FUNCTION {format.publisher.address}
-{ address empty$
- { publisher empty$
- 'skip$
- { publisher "publisher" output.check
- }
- if$
- }
- { publisher empty$
- 'skip$
- { publisher "publisher" output.check
- address "address" output.check
- }
- if$
- }
- if$
-}
-
-FUNCTION {format.ineditors}
-{ editor empty$
- { "" }
- { editor format.innames
- editor num.names$ #1 >
- { ", Eds." * }
- { ", Ed." * }
- if$
- }
- if$
-}
-
-FUNCTION {format.title}
-{ title empty$
- { "" }
- { title "t" change.case$ }
- if$
-}
-
-FUNCTION {format.doi}
-{ doi empty$
- { "" }
- { new.block "\doi{" doi * "}" * }
- 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.year}
-{ year empty$
- { "" }
- { year }
- if$
-}
-
-FUNCTION {format.month}
-{ month empty$
- { "" }
- { month }
- if$
-}
-
-FUNCTION {format.date}
-{ year empty$
- { month empty$
- { "" }
- { "there's a month but no year in " cite$ * warning$
- month
- }
- if$
- }
- { month empty$
- 'year
- { month " " * year * }
- if$
- }
- if$
-}
-
-FUNCTION {format.btitle}
-{ title emphasize
-}
-
-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$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
- { "" }
- { "vol.~" volume *
- series empty$
- 'skip$
- { " of " * series emphasize * }
- 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 =
- { "no.~" }
- { "No.~" }
- if$
- number *
- series empty$
- { "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
- if$
- }
- if$
- }
- { "" }
- if$
-}
-
-FUNCTION {format.edition}
-{ edition empty$
- { "" }
- { output.state mid.sentence =
- { edition "l" change.case$ "~ed." * }
- { edition "t" change.case$ "~ed." * }
- if$
- }
- if$
-}
-
-FUNCTION {format.pages}
-{ pages empty$
- { "" }
- { pages n.dashify }
- 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.pp.pages}
-{ pages empty$
- { "" }
- { pages multi.page.check
- { "pp.~" pages n.dashify * }
- { "p.~" pages * }
- if$
- }
- if$
-}
-
-FUNCTION {format.journal.vol.num.date}
-{ journal empty$
- { "empty journal in " cite$ * warning$
- ""
- }
- { journal
- volume empty$
- 'skip$
- { " " * volume * }
- if$
- number empty$
- 'emphasizeic
- { emphasize ", " * number * }
- if$
- month empty$
- 'skip$
- { " (" * format.month * ")" * }
- if$
- }
- if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
- 'format.pages
- { type empty$
- { "ch.~" chapter * }
- { type "l" change.case$ chapter tie.or.space.connect }
- if$
- pages empty$
- 'skip$
- { ", " * format.pages * }
- if$
- }
- if$
-}
-
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
- { "" }
- { "In " booktitle emphasize *
- editor empty$
- 'skip$
- { ", " * format.ineditors * }
- if$
- }
- if$
-}
-
-FUNCTION {format.in.proc.date}
-{ booktitle empty$
- { "" }
- { "In " booktitle emphasize * }
- if$
-}
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- month empty$ year empty$ note empty$
- and and and and and
- key empty$ not and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
- 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}
-{ key empty$
- { journal empty$
- { "need key or journal for " cite$ * " to crossref " * crossref *
- warning$
- ""
- }
- { "In {\em " journal * "\/}" * }
- if$
- }
- { "In " key * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.crossref.editor}
-{ editor #1 "{vv~}{ll}" format.name$
- editor num.names$ duplicate$
- #2 >
- { pop$ " et~al." * }
- { #2 <
- 'skip$
- { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- { " et~al." * }
- { " 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 "
- }
- { "Vol.~" volume *
- " 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$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
- editor field.or.null author field.or.null =
- or
- { key empty$
- { booktitle empty$
- { "need editor, key, or booktitle for " cite$ * " to crossref " *
- crossref * warning$
- ""
- }
- { "In {\em " booktitle * "\/}" * }
- if$
- }
- { "In " key * }
- if$
- }
- { "In " format.crossref.editor * }
- if$
- " \cite{" * crossref * "}" *
-}
-
-FUNCTION {article}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.year output
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.journal.vol.num.date output
- format.pages output
- }
- { format.article.crossref output.nonnull
- format.pages output
- }
- if$
- format.doi output
- 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$
- new.block
- format.year "year" output.check
- new.block
- format.btitle "title" output.check
- format.edition output
- crossref missing$
- { format.bvolume output
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- format.month output
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {booklet}
-{ output.bibitem
- format.authors output
- new.block
- format.year output
- new.block
- format.title "title" output.check
- howpublished address new.block.checkb
- howpublished output
- address output
- format.month output
- format.doi 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$
- new.block
- format.year "year" output.check
- new.block
- format.btitle "title" output.check
- format.edition output
- crossref missing$
- { format.bvolume output
- new.block
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- }
- { new.block
- format.book.crossref output.nonnull
- }
- if$
- format.month output
- format.chapter.pages "chapter and pages" output.check
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {incollection}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.year "year" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.ed.booktitle "booktitle" output.check
- format.edition output
- format.bvolume output
- format.number.series output
- new.sentence
- publisher "publisher" output.check
- address output
- format.month output
- }
- { format.incoll.inproc.crossref output.nonnull }
- if$
- format.chapter.pages output
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.year "year" output.check
- new.block
- format.title "title" output.check
- new.block
- crossref missing$
- { format.in.proc.date "booktitle" output.check
- address empty$
- { publisher empty$
- 'skip$
- { publisher "publisher" output.check
- }
- if$
- }
- { publisher empty$
- 'skip$
- { publisher "publisher" output.check
- address "address" output.check
- }
- if$
- }
- if$
- format.ineditors output
- format.bvolume output
- format.number.series output
- organization "organization" output.check
- }
- { format.incoll.inproc.crossref output.nonnull }
- if$
- format.pages output
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ output.bibitem
- author empty$
- { organization scapify output }
- { format.authors output.nonnull }
- if$
- new.block
- format.year output
- new.block
- format.btitle "title" output.check
- format.edition output
- author empty$
- { address new.block.checka }
- { organization address new.block.checkb
- organization output
- }
- if$
- address output
- format.month output
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.year "year" output.check
- new.block
- format.btitle "title" output.check
- new.block
- "Master's thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {misc}
-{ output.bibitem
- format.authors output
- format.year output
- title howpublished new.block.checkb
- format.title output
- howpublished new.block.checka
- howpublished output
- format.month output
- format.doi output
- new.block
- note output
- fin.entry
- empty.misc.check
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.year "year" output.check
- new.block
- format.btitle "title" output.check
- new.block
- "PhD thesis" format.thesis.type output.nonnull
- school "school" output.check
- address output
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
- editor empty$
- { organization scapify output }
- { format.editors output.nonnull }
- if$
- new.block
- format.year output
- new.block
- title "title" output.check
- format.bvolume output
- format.number.series output
- editor empty$
- 'skip$
- { organization output }
- if$
- address empty$
- { publisher empty$
- 'skip$
- { publisher "publisher" output.check
- }
- if$
- }
- { publisher empty$
- 'skip$
- { publisher "publisher" output.check
- address "address" output.check
- }
- if$
- }
- if$
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {techreport}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.year "year" output.check
- new.block
- format.title "title" output.check
- new.block
- format.tr.number output.nonnull
- institution "institution" output.check
- address output
- format.month output
- format.doi output
- new.block
- note output
- fin.entry
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
- format.authors "author" output.check
- new.block
- format.year output
- new.block
- format.title "title" output.check
- new.block
- note "note" output.check
- format.month output
- fin.entry
-}
-
-FUNCTION {default.type} { misc }
-
-MACRO {jan} {"Jan."}
-
-MACRO {feb} {"Feb."}
-
-MACRO {mar} {"Mar."}
-
-MACRO {apr} {"Apr."}
-
-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 {acta} {"Acta Inf."}
-
-MACRO {cacm} {"Commun. ACM"}
-
-MACRO {ibmjrd} {"IBM J. Res. Dev."}
-
-MACRO {ibmsj} {"IBM Syst.~J."}
-
-MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
-
-MACRO {ieeetc} {"IEEE Trans. Comput."}
-
-MACRO {ieeetcad}
- {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
-
-MACRO {ipl} {"Inf. Process. Lett."}
-
-MACRO {jacm} {"J.~ACM"}
-
-MACRO {jcss} {"J.~Comput. Syst. Sci."}
-
-MACRO {scp} {"Sci. Comput. Programming"}
-
-MACRO {sicomp} {"SIAM J. Comput."}
-
-MACRO {tocs} {"ACM Trans. Comput. Syst."}
-
-MACRO {tods} {"ACM Trans. Database Syst."}
-
-MACRO {tog} {"ACM Trans. Gr."}
-
-MACRO {toms} {"ACM Trans. Math. Softw."}
-
-MACRO {toois} {"ACM Trans. Office Inf. Syst."}
-
-MACRO {toplas} {"ACM Trans. Program. Lang. Syst."}
-
-MACRO {tcs} {"Theoretical Comput. Sci."}
-
-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$
-}
-
-INTEGERS { et.al.char.used }
-
-FUNCTION {initialize.et.al.char.used}
-{ #0 'et.al.char.used :=
-}
-
-EXECUTE {initialize.et.al.char.used}
-
-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{.}" * }
- {
- 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{.}" * }
- { " 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$
- { cite$ #1 #3 substring$ }
- { key #3 text.prefix$ }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
- { editor empty$
- { key empty$
- { cite$ #1 #3 substring$ }
- { key #3 text.prefix$ }
- if$
- }
- { editor format.lab.names }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {author.key.organization.label}
-{ author empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- { key #3 text.prefix$ }
- if$
- }
- { author format.lab.names }
- if$
-}
-
-FUNCTION {editor.key.organization.label}
-{ editor empty$
- { key empty$
- { organization empty$
- { cite$ #1 #3 substring$ }
- { "The " #4 organization chop.word #3 text.prefix$ }
- if$
- }
- { key #3 text.prefix$ }
- if$
- }
- { editor format.lab.names }
- if$
-}
-
-FUNCTION {calc.label}
-{ 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$
-
- duplicate$
- year empty$
- {
- "\protect\citename{" swap$ * " }" *
- "" * 'label :=
- }
- {
- "\protect\citename{" swap$ * " }" *
- year
- *
- 'label :=
- }
- if$
-
- year field.or.null *
- sortify 'sort.label :=
-}
-
-FUNCTION {sort.format.names}
-{ 's :=
- #1 'nameptr :=
- ""
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { nameptr #1 >
- { " " * }
- 'skip$
- if$
- s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ 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 {author.editor.sort}
-{ author empty$
- { 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}
-{ author empty$
- { organization empty$
- { key empty$
- { "to sort, need author, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { author sort.format.names }
- if$
-}
-
-FUNCTION {editor.organization.sort}
-{ editor empty$
- { organization empty$
- { key empty$
- { "to sort, need editor, organization, or key in " cite$ * warning$
- ""
- }
- { key sortify }
- if$
- }
- { "The " #4 organization chop.word sortify }
- if$
- }
- { editor sort.format.names }
- if$
-}
-
-FUNCTION {presort}
-{ calc.label
- sort.label
- " "
- *
- type$ "book" =
- type$ "inbook" =
- or
- 'author.editor.sort
- { type$ "proceedings" =
- 'editor.organization.sort
- { type$ "manual" =
- 'author.organization.sort
- 'author.sort
- if$
- }
- if$
- }
- if$
- *
- " "
- *
- year field.or.null sortify
- *
- " "
- *
- title field.or.null
- sort.format.title
- *
- #1 entry.max$ substring$
- 'sort.key$ :=
-}
-
-ITERATE {presort}
-
-SORT
-
-STRINGS { longest.label last.sort.label next.extra }
-
-INTEGERS { longest.label.width last.extra.num }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #0 int.to.chr$ 'last.sort.label :=
- "" 'next.extra :=
- #0 'longest.label.width :=
- #0 'last.extra.num :=
-}
-
-FUNCTION {forward.pass}
-{ last.sort.label sort.label =
- { last.extra.num #1 + 'last.extra.num :=
- last.extra.num int.to.chr$ 'extra.label :=
- }
- { "a" chr.to.int$ 'last.extra.num :=
- "" 'extra.label :=
- sort.label 'last.sort.label :=
- }
- if$
-}
-
-FUNCTION {reverse.pass}
-{ next.extra "b" =
- { "a" 'extra.label := }
- 'skip$
- if$
- label extra.label * 'label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
- }
- 'skip$
- if$
- extra.label 'next.extra :=
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {forward.pass}
-
-REVERSE {reverse.pass}
-
-FUNCTION {begin.bib}
-{ et.al.char.used
- { "\providecommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
- 'skip$
- if$
- preamble$ empty$
- 'skip$
- { preamble$ write$ newline$ }
- if$
- "\begin{thebibliography}{" longest.label * "}" * write$ newline$
- "\providecommand{\url}[1]{\texttt{#1}}"
- write$ newline$
- "\expandafter\ifx\csname urlstyle\endcsname\relax"
- write$ newline$
- " \providecommand{\doi}[1]{doi: #1}\else"
- write$ newline$
- " \expandafter\ifx\csname href\endcsname\relax"
- write$ newline$
- " \providecommand{\doi}[1]{doi: \url{#1}}\else"
- write$ newline$
- " \providecommand{\doi}[1]{doi: \href{http://dx.doi.org/#1}{\nolinkurl{#1}}}\fi\fi"
- write$ newline$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-FUNCTION {end.bib}
-{ newline$
- "\end{thebibliography}" write$ newline$
-}
-
-EXECUTE {end.bib}
-
Modified: trunk/Master/texmf-dist/doc/latex/acmart/Makefile
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/Makefile 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/Makefile 2016-07-14 21:38:03 UTC (rev 41692)
@@ -77,4 +77,4 @@
tar -C .. -czvf $(PACKAGE).tgz --exclude '*~' --exclude '*.tgz' --exclude '*.zip' --exclude CVS --exclude '.git*' $(PACKAGE)
zip: all clean
- zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x CVS -x 'CVS/*'
\ No newline at end of file
+ zip -r $(PACKAGE).zip * -x '*~' -x '*.tgz' -x '*.zip' -x CVS -x 'CVS/*'
Modified: trunk/Master/texmf-dist/doc/latex/acmart/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/README 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/README 2016-07-14 21:38:03 UTC (rev 41692)
@@ -16,3 +16,23 @@
Footnotes rearranged.
Option natbib is now mostly superfluous: the class
makes a guess based on the format chosen.
+
+version 1.13 Formatting changes: headers, folios etc.
+ Bibliography changes.
+
+version 1.14 Warn about undefined citation styles; move definitions
+ of acmauthoryear and acmnumeric citation styles before
+ use.
+
+version 1.15 New structured affiliation command.
+ New commands for acknowledgements.
+
+version 1.16 Formatting changes for headers and footers.
+
+version 1.17 Formatting changes for margins and lists. Bug fixes.
+
+version 1.18 Natbib is now the default for all versions. A unified bib
+ file is used for all styles. Better treatment
+ of multiple affiliations.
+
+
Modified: trunk/Master/texmf-dist/doc/latex/acmart/acmart.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -48,22 +48,45 @@
\title{A Multifrequency MAC Specially Designed for Wireless Sensor
Network Applications}
\author{Gang Zhou}
-\email{zhou at uva.edu}
+\orcid{1234-5678-9012-3456}
+\affiliation{%
+ \institution{College of William and Mary}
+ \streetaddress{104 Jamestown Rd}
+ \city{Williamsburg}
+ \state{VA}
+ \postcode{23185}
+ \country{USA}}
\author{Yafeng Wu}
-\email{ywu at uva.edu}
-\affiliation{University of Virginia}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
\author{Ting Yan}
-\affiliation{Eaton Innovation Center}
+\affiliation{%
+ \institution{Eaton Innovation Center}
+ \city{Prague}
+ \country{Czech Republic}}
\author{Tian He}
-\affiliation{University of Minnesota}
+\affiliation{%
+ \institution{University of Minnesota}
+ \country{USA}}
\author{Chengdu Huang}
-\affiliation{Google}
\author{John A. Stankovic}
-\affiliation{University of Virginia}
\author{Tarek F. Abdelzaher}
-\affiliation{University of Illinois at Urbana-Champaign}
-\affiliation{University of Virginia}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
+
\begin{abstract}
Multifrequency media access control has been well understood in
general wireless ad hoc networks, while in wireless sensor networks,
@@ -145,6 +168,9 @@
\maketitle
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{G. Zhou et. al.}
+
\input{samplebody-journals}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -45,17 +45,43 @@
\title[A Multifrequency MAC for Wireless Sensor]{A Multifrequency MAC
Specially Designed for Wireless Sensor Network Applications}
\author{Gang Zhou}
-\affiliation{College of William and Mary}
+\orcid{1234-5678-9012-3456}
+\affiliation{%
+ \institution{College of William and Mary}
+ \streetaddress{104 Jamestown Rd}
+ \city{Williamsburg}
+ \state{VA}
+ \postcode{23185}
+ \country{USA}}
\author{Yafeng Wu}
-\affiliation{University of Virginia}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
\author{Ting Yan}
-\affiliation{Eaton Innovation Center}
+\affiliation{%
+ \institution{Eaton Innovation Center}
+ \city{Prague}
+ \country{Czech Republic}}
\author{Tian He}
-\affiliation{University of Minnesota}
+\affiliation{%
+ \institution{University of Minnesota}
+ \country{USA}}
\author{Chengdu Huang}
\author{John A. Stankovic}
\author{Tarek F. Abdelzaher}
-\affiliation{University of Virginia}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
\begin{abstract}
Multifrequency media access control has been well understood in
@@ -71,11 +97,7 @@
multifrequency availability while, at the same time, takes into
consideration the restrictions of wireless sensor networks. Through
extensive experiments, MMSN exhibits the prominent ability to utilize
-parallel transmissions among neighboring nodes. When multiple physical
-frequencies are available, it also achieves increased energy
-efficiency, demonstrating the ability to work against radio
-interference and the tolerance to a wide range of measured time
-synchronization errors.
+parallel transmissions among neighboring nodes.
\end{abstract}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -44,21 +44,54 @@
\title{A Multifrequency MAC Specially Designed for Wireless Sensor
Network Applications}
\author{Gang Zhou}
-\email{zhou at uva.edu}
+\orcid{1234-5678-9012-3456}
+\affiliation{%
+ \institution{College of William and Mary}
+ \streetaddress{104 Jamestown Rd}
+ \city{Williamsburg}
+ \state{VA}
+ \postcode{23185}
+ \country{USA}}
\author{Yafeng Wu}
-\email{ywu at uva.edu}
-\affiliation{University of Virginia}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
\author{Ting Yan}
-\affiliation{Eaton Innovation Center}
+\affiliation{%
+ \institution{Eaton Innovation Center}
+ \city{Prague}
+ \country{Czech Republic}}
\author{Tian He}
-\affiliation{University of Minnesota}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
+\affiliation{%
+ \institution{University of Minnesota}
+ \country{USA}}
\author{Chengdu Huang}
-\affiliation{Google}
\author{John A. Stankovic}
-\affiliation{University of Virginia}
\author{Tarek F. Abdelzaher}
-\affiliation{University of Illinois at Urbana-Champaign}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
+\renewcommand\shortauthors{Zhou, G. et al}
+
\begin{abstract}
Multifrequency media access control has been well understood in
general wireless ad hoc networks, while in wireless sensor networks,
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -35,25 +35,59 @@
\title{A Multifrequency MAC Specially Designed for Wireless Sensor
Network Applications}
\titlenote{This is a titlenote}
-% \subtitle{This is a subtitle}
-% \subtitlenote{Subtitle note}
+ \subtitle{This is a subtitle}
+ \subtitlenote{Subtitle note}
\author{Gang Zhou}
-% \authornote{The corresponding author}
+\authornote{The corresponding author}
+\orcid{1234-5678-9012-3456}
\email{zhou at uva.edu}
\author{Yafeng Wu}
\email{ywu at uva.edu}
-\affiliation{University of Virginia}
+\author{John A. Stankovic}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
\author{Ting Yan}
-\affiliation{Eaton Innovation Center}
+\affiliation{%
+ \institution{Eaton Innovation Center}
+ \city{Prague}
+ \country{Czech Republic}}
\author{Tian He}
-\affiliation{University of Minnesota}
+\affiliation{%
+ \institution{University of Minnesota}
+ \country{USA}}
\author{Chengdu Huang}
-\affiliation{Google}
-\author{John A. Stankovic}
-\affiliation{University of Virginia}
+\affiliation{%
+ \institution{Google}
+ \country{USA}}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
\author{Tarek F. Abdelzaher}
-\affiliation{University of Illinois at Urbana-Champaign}
-\affiliation{University of Virginia}
+\affiliation{%
+ \institution{University of Illinois at Urbana-Champaign}
+ \country{USA}}
+\affiliation{%
+ \institution{University of Virginia}
+ \department{School of Engineering}
+ \city{Charlottesville}
+ \state{VA}
+ \postcode{22903}
+ \country{USA}
+}
+\affiliation{%
+ \institution{Google}
+ \country{USA}}
\begin{abstract}
Multifrequency media access control has been well understood in
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -34,38 +34,51 @@
\title{SIGCHI Extended Abstracts Sample File}
\author{First Author}
-\affiliation{University of Author\\
- Authortown, CA 94022, USA}
+\affiliation{%
+ \institution{University of Author}
+ \city{Authortown}
+ \state{CA}
+ \postcode{94022}
+ \country{USA} }
\email{author1 at anotherco.edu}
\author{Second Author}
-\affiliation{VP, Authoring\\
- Authorship Holdings, Ltd.\\
- Awdur SA22 8PP, UK}
+\affiliation{%
+ \position{VP, Authoring}
+ \institution{Authorship Holdings, Ltd.}
+ \city{Awdur}
+ \postcode{SA22 8PP}
+ \country{UK}}
\email{author2 at author.ac.uk}
\author{Third Author \\
Fourth Author}
-\affiliation{L\={e}khaka Labs\\
- Bengaluru 560 080, India}
+\affiliation{%
+ \institution{L\={e}khaka Labs}
+ \city{Bengaluru} \postcode{560 080} \country{India}}
\email{author3 at another.com}
\email{author4 at another.com}
\author{Fifth Author}
-\affiliation{YetAuthorCo, Inc.\\
- Authortown, BC V6M 22P Canada}
+\affiliation{\institution{YetAuthorCo, Inc.}
+ \city{Authortown} \state{BC}
+ \postcode{V6M 22P} \country{Canada}}
\email{author5 at anotherco.com}
\author{Sixth Author}
-\affiliation{Universit\'e de Auteur-Sud\\
- 40222 Auteur France}
+\affiliation{\institution{Universit\'e de Auteur-Sud}
+ \city{Auteur} \postcode{40222} \country{France}}
\email{author6 at author.fr}
\author{Seventh Author}
-\affiliation{University of Umbhali\\
- Pretoria, South Africa}
+\affiliation{\institution{University of Umbhali}
+ \city{Pretoria} \country{South Africa}}
\email{author7 at umbhaliu.ac.za}
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{F. Author et. al.}
+
+
%
% The code below should be generated by the tool at
% http://dl.acm.org/ccs.cfm
@@ -366,16 +379,17 @@
American/European version of Acrobat reader, so please check your PDF
accordingly.
-\section{Acknowledgements}
+\begin{acks}
+ We thank all the volunteers, publications support, staff, and
+ authors who wrote and provided helpful comments on previous versions
+ of this document. As well authors 1, 2, and 3 gratefully acknowledge
+ the grant from \grantsponsor{001}{NSF}{}
+ (\#\grantnum{001}{1234-2222-ABC}). Author 4 for example may want to
+ acknowledge a supervisor/manager from their original employer. This
+ whole paragraph is just for example. Some of the references cited in
+ this paper are included for illustrative purposes only.
+\end{acks}
-We thank all the volunteers, publications support, staff, and authors
-who wrote and provided helpful comments on previous versions of this
-document. As well authors 1, 2, and 3 gratefully acknowledge the grant
-from NSF (\#1234--2222--ABC). Author 4 for example may want to
-acknowledge a supervisor/manager from their original employer. This
-whole paragraph is just for example. Some of the references cited in
-this paper are included for illustrative purposes only.
-
\section{References Format}
Your references should be published materials accessible to the
@@ -421,6 +435,6 @@
\bibliography{sigchi-a}
-\bibliographystyle{SIGCHI-Reference-Format}
+\bibliographystyle{ACM-Reference-Format}
\end{document}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -39,51 +39,72 @@
\author{Ben Trovato}
\authornote{Dr.~Trovato insisted his name be first.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\orcid{1234-5678-9012}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{trovato at corporation.com}
\author{G.K.M. Tobin}
\authornote{The secretary disavows any knowledge of this author's actions.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{webmaster at marysville-ohio.com}
\author{Lars Th{\o}rv{\"a}ld}
\authornote{This author is the
one who did all the really hard work.}
-\affiliation{The Th{\o}rv{\"a}ld Group\\
- 1 Th{\o}rv{\"a}ld Circle\\
- Hekla, Iceland}
+\affiliation{%
+ \institution{The Th{\o}rv{\"a}ld Group}
+ \streetaddress{1 Th{\o}rv{\"a}ld Circle}
+ \city{Hekla}
+ \country{Iceland}}
\email{larst at affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner at researchlabs.org}
\author{Sean Fogarty}
-\affiliation{NASA Ames Research Center\\
- Moffett Field\\
- California 94035}
+\affiliation{%
+ \institution{NASA Ames Research Center}
+ \city{Moffett Field}
+ \state{California}
+ \postcode{94035}}
\email{fogartys at amesres.org}
\author{Charles Palmer}
-\affiliation{Palmer Research Laboratories\\
- 8600 Datapoint Drive\\
- San Antonio, Texas 78229}
+\affiliation{%
+ \institution{Palmer Research Laboratories}
+ \streetaddress{8600 Datapoint Drive}
+ \city{San Antonio}
+ \state{Texas}
+ \postcode{78229}}
\email{cpalmer at prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith at affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat at consortium.net}
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{B. Trovato et. al.}
+
+
\begin{abstract}
This paper provides a sample of a \LaTeX\ document which conforms,
somewhat loosely, to the formatting guidelines for
@@ -141,7 +162,7 @@
\input{samplebody-conf}
-\bibliographystyle{SIGCHI-Reference-Format}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -37,53 +37,75 @@
\subtitlenote{The full version of the author's guide is available as
\texttt{acmart.pdf} document}
+
\author{Ben Trovato}
\authornote{Dr.~Trovato insisted his name be first.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\orcid{1234-5678-9012}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{trovato at corporation.com}
\author{G.K.M. Tobin}
\authornote{The secretary disavows any knowledge of this author's actions.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{webmaster at marysville-ohio.com}
\author{Lars Th{\o}rv{\"a}ld}
\authornote{This author is the
one who did all the really hard work.}
-\affiliation{The Th{\o}rv{\"a}ld Group\\
- 1 Th{\o}rv{\"a}ld Circle\\
- Hekla, Iceland}
+\affiliation{%
+ \institution{The Th{\o}rv{\"a}ld Group}
+ \streetaddress{1 Th{\o}rv{\"a}ld Circle}
+ \city{Hekla}
+ \country{Iceland}}
\email{larst at affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner at researchlabs.org}
\author{Sean Fogarty}
-\affiliation{NASA Ames Research Center\\
- Moffett Field\\
- California 94035}
+\affiliation{%
+ \institution{NASA Ames Research Center}
+ \city{Moffett Field}
+ \state{California}
+ \postcode{94035}}
\email{fogartys at amesres.org}
\author{Charles Palmer}
-\affiliation{Palmer Research Laboratories\\
- 8600 Datapoint Drive\\
- San Antonio, Texas 78229}
+\affiliation{%
+ \institution{Palmer Research Laboratories}
+ \streetaddress{8600 Datapoint Drive}
+ \city{San Antonio}
+ \state{Texas}
+ \postcode{78229}}
\email{cpalmer at prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith at affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat at consortium.net}
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{B. Trovato et. al.}
+
+
\begin{abstract}
This paper provides a sample of a \LaTeX\ document which conforms,
somewhat loosely, to the formatting guidelines for
@@ -135,7 +157,7 @@
\input{samplebody-conf}
-\bibliographystyle{acm-abbrv}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -1,8 +1,8 @@
\documentclass[siggraph, review=false]{acmart}
\usepackage{booktabs} % For formal tables
+\citestyle{acmauthoryear} % Author-year format
-
% Copyright
%\setcopyright{none}
%\setcopyright{acmcopyright}
@@ -37,53 +37,76 @@
\subtitlenote{The full version of the author's guide is available as
\texttt{acmart.pdf} document}
+
\author{Ben Trovato}
\authornote{Dr.~Trovato insisted his name be first.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\orcid{1234-5678-9012}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{trovato at corporation.com}
\author{G.K.M. Tobin}
\authornote{The secretary disavows any knowledge of this author's actions.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{webmaster at marysville-ohio.com}
\author{Lars Th{\o}rv{\"a}ld}
\authornote{This author is the
one who did all the really hard work.}
-\affiliation{The Th{\o}rv{\"a}ld Group\\
- 1 Th{\o}rv{\"a}ld Circle\\
- Hekla, Iceland}
+\affiliation{%
+ \institution{The Th{\o}rv{\"a}ld Group}
+ \streetaddress{1 Th{\o}rv{\"a}ld Circle}
+ \city{Hekla}
+ \country{Iceland}}
\email{larst at affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner at researchlabs.org}
\author{Sean Fogarty}
-\affiliation{NASA Ames Research Center\\
- Moffett Field\\
- California 94035}
+\affiliation{%
+ \institution{NASA Ames Research Center}
+ \city{Moffett Field}
+ \state{California}
+ \postcode{94035}}
\email{fogartys at amesres.org}
\author{Charles Palmer}
-\affiliation{Palmer Research Laboratories\\
- 8600 Datapoint Drive\\
- San Antonio, Texas 78229}
+\affiliation{%
+ \institution{Palmer Research Laboratories}
+ \streetaddress{8600 Datapoint Drive}
+ \city{San Antonio}
+ \state{Texas}
+ \postcode{78229}}
\email{cpalmer at prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith at affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat at consortium.net}
+
+
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{B. Trovato et. al.}
+
\begin{abstract}
This paper provides a sample of a \LaTeX\ document which conforms,
somewhat loosely, to the formatting guidelines for
@@ -141,7 +164,7 @@
\input{samplebody-conf}
-\bibliographystyle{acmsiggraph}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf
===================================================================
(Binary files differ)
Modified: trunk/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -42,51 +42,73 @@
\author{Ben Trovato}
\authornote{Dr.~Trovato insisted his name be first.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\orcid{1234-5678-9012}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{trovato at corporation.com}
\author{G.K.M. Tobin}
\authornote{The secretary disavows any knowledge of this author's actions.}
-\affiliation{Institute for Clarity in Documentation\\
- P.O. Box 1212\\
- Dublin, Ohio 43017-6221}
+\affiliation{%
+ \institution{Institute for Clarity in Documentation}
+ \streetaddress{P.O. Box 1212}
+ \city{Dublin}
+ \state{Ohio}
+ \postcode{43017-6221}
+}
\email{webmaster at marysville-ohio.com}
\author{Lars Th{\o}rv{\"a}ld}
\authornote{This author is the
one who did all the really hard work.}
-\affiliation{The Th{\o}rv{\"a}ld Group\\
- 1 Th{\o}rv{\"a}ld Circle\\
- Hekla, Iceland}
+\affiliation{%
+ \institution{The Th{\o}rv{\"a}ld Group}
+ \streetaddress{1 Th{\o}rv{\"a}ld Circle}
+ \city{Hekla}
+ \country{Iceland}}
\email{larst at affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner at researchlabs.org}
\author{Sean Fogarty}
-\affiliation{NASA Ames Research Center\\
- Moffett Field\\
- California 94035}
+\affiliation{%
+ \institution{NASA Ames Research Center}
+ \city{Moffett Field}
+ \state{California}
+ \postcode{94035}}
\email{fogartys at amesres.org}
\author{Charles Palmer}
-\affiliation{Palmer Research Laboratories\\
- 8600 Datapoint Drive\\
- San Antonio, Texas 78229}
+\affiliation{%
+ \institution{Palmer Research Laboratories}
+ \streetaddress{8600 Datapoint Drive}
+ \city{San Antonio}
+ \state{Texas}
+ \postcode{78229}}
\email{cpalmer at prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith at affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat at consortium.net}
+
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{B. Trovato et. al.}
+
+
\begin{abstract}
This paper provides a sample of a \LaTeX\ document which conforms,
somewhat loosely, to the formatting guidelines for
@@ -144,7 +166,7 @@
\input{samplebody-conf}
-\bibliographystyle{ACM-Reference-Format-Journals}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -262,7 +262,7 @@
The pre-defined theorem-like constructs are \textbf{theorem},
\textbf{conjecture}, \textbf{proposition}, \textbf{lemma} and
-\textbf{corollary}. The pre-defined definition-like constructs are
+\textbf{corollary}. The pre-defined de\-fi\-ni\-ti\-on-like constructs are
\textbf{example} and \textbf{definition}. You can add your own
constructs using the \textsl{amsthm} interface~\cite{Amsthm15}. The
styles used in the \verb|\theoremstyle| command are \textbf{acmplain}
@@ -298,14 +298,6 @@
examples only.
%\end{document} % This is where a 'short' article might terminate
-%ACKNOWLEDGMENTS are optional
-\section{Acknowledgments}
-This section is optional; it is a location for you
-to acknowledge grants, funding, editing assistance and
-what have you. In the present case, for example, the
-authors would like to thank Gerald Murray of ACM for
-his help in codifying this \textit{Author's Guide}
-and the \texttt{.cls} and \texttt{.tex} files that it describes.
\appendix
@@ -334,7 +326,6 @@
\subsubsection{Theorem-like Constructs}
\subsubsection*{A Caveat for the \TeX\ Expert}
\subsection{Conclusions}
-\subsection{Acknowledgments}
\subsection{References}
Generated by bibtex from your \texttt{.bib} file. Run latex,
then bibtex, then latex twice (to resolve references)
@@ -346,13 +337,20 @@
\section{More Help for the Hardy}
Of course, reading the source code is always useful. The file
-\texttt{acmart.pdf} contains both the user guide and the commented
+\path{acmart.pdf} contains both the user guide and the commented
code.
-\section*{Acknowledgements}
-\label{sec:acks}
+\begin{acks}
+ The authors would like to thank Dr. Yuhua Li for providing the
+ matlab code of the \textit{BEPS} method.
-\begin{anonsuppress}
- The acknowledgements are suppressed when the paper is prepared for a
- blind review.
-\end{anonsuppress}
\ No newline at end of file
+ The authors would also like to thank the anonymous referees for
+ their valuable comments and helpful suggestions. The work is
+ supported by the \grantsponsor{GS501100001809}{National Natural
+ Science Foundation of
+ China}{http://dx.doi.org/10.13039/501100001809} under Grant
+ No.:~\grantnum{GS501100001809}{61273304}
+ and~\grantnum[http://www.nnsf.cn/youngscientsts]{GS501100001809}{Young
+ Scientsts' Support Program}.
+
+\end{acks}
Modified: trunk/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex 2016-07-14 21:38:03 UTC (rev 41692)
@@ -260,7 +260,7 @@
\bottomrule
\end{tabular}
\end{center}
-\bigskip
+\bigskip\centering
\footnotesize\emph{Source:} This is a table
sourcenote. This is a table sourcenote. This is a table
sourcenote.
@@ -320,7 +320,7 @@
test mote without switching channels, denoted as $N_{2}$. We calculate
the channel-switching time $s$ as
\begin{displaymath}%
-s=\frac{10}{N_{1}}-\frac{10}{N_{2}}/
+s=\frac{10}{N_{1}}-\frac{10}{N_{2}}.
\end{displaymath}%
By repeating the experiments 100 times, we get the average
channel-switching time of Micaz motes: 24.3\,$\mu$s.
@@ -359,12 +359,21 @@
\end{screenonly}
-\section*{Acknowledgements}
+\begin{acks}
The authors would like to thank Dr. Maura Turolla of Telecom
Italia for providing specifications about the application scenario.
+The work is supported by the \grantsponsor{GS501100001809}{National
+ Natural Science Foundation of
+ China}{http://dx.doi.org/10.13039/501100001809} under Grant
+No.:~\grantnum{GS501100001809}{61273304\_a}
+and~\grantnum[http://www.nnsf.cn/youngscientsts]{GS501100001809}{Young
+ Scientsts' Support Program}.
+
+\end{acks}
+
% Bibliography
-\bibliographystyle{ACM-Reference-Format-Journals}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sample-bibliography}
Modified: trunk/Master/texmf-dist/source/latex/acmart/acmart.dtx
===================================================================
--- trunk/Master/texmf-dist/source/latex/acmart/acmart.dtx 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/source/latex/acmart/acmart.dtx 2016-07-14 21:38:03 UTC (rev 41692)
@@ -263,7 +263,7 @@
% review & false & A review version: lines are numbered,
% hyperlinks are colored\\
% screen & false & A screen version: hyperlinks are colored\\
-% natbib & & Whether to use |natbib| package (see
+% natbib & true & Whether to use |natbib| package (see
% Section~\ref{sec:ug_bibliography})\\
% anonymous & false & Whether to make author(s) anonymous\\
% authorversion & false & Whether to generate a special
@@ -413,37 +413,126 @@
% Besides title, ACM classes allow subtitle, set with the
% \cs{subtitle}\marg{subtitle} macro.
%
+% The commands for specification of authors are highly structured.
+% The reason is, they serve double duty: the authors' information is
+% typeset in the manuscript, \emph{and} is used by the metadata
+% extraction tools for indexing and cataloguing. Therefore it is very
+% important to follow the guidelines exactly.
+%
% \DescribeMacro{\author}%
+% \DescribeMacro{\orcid}
% \DescribeMacro{\affiliation}%
% \DescribeMacro{\email}%
-% The interface for specifying the authors and their affiliations is
-% close the the one of \progname{amsart}~\cite{instr-l} (and different
-% from the standard \LaTeX). For each author a separate command
-% |\author| should be used, followed by |\affliation| and |\email|.
-% If several authors share affiliations, in journal formats like
-% |acmsmall| or |acmlarge| one may put the
-% affiliation after all these authors, for example:
+% The basic commands are \cs{author}, \cs{orcid} (for the researchers
+% registered with ORCID, \url{http://www.orcid.org/}), \cs{affiliation} and
+% \cs{email}. In the simplest case you enter them in this order:
% \begin{verbatim}
+% \author{...}
+% \orcid{...}
+% \affiliation{...}
+% \email{...}
+% \end{verbatim}
+% Do \emph{not} use \LaTeX\ \cs{and} macro! Each author deserves
+% his or her own \cs{author} command.
+%
+% Note that some formats do not typset e-mails of ORCID identifiers.
+% Do now worry: metadata tools will get them.
+%
+% Sometimes an author has several affiliations. In this case the
+% \cs{affiliation} command should be repeated:
+% \begin{verbatim}
+% \author{...}
+% \orcid{...}
+% \affiliation{...}
+% \affiliation{...}
+% \email{...}
+% \end{verbatim}
+% Similarly you can repeat \cs{email} command.
+%
+% You may have several authors with the same afifliation, different
+% affiliations or overlapping affiliations (author~$A_1$ is affiliated
+% with institutions $I_1$ and $I_2$, while author $A_2$ is affiliated
+% with $I_2$ only, and author $A_3$ is affiliated with
+% $I_1$ and $I_3$, \ldots). The recommended solution is to put the
+% \cs{affiliation} commands after each author, possibly repeating them:
+% \begin{verbatim}
+% \author{...}
+% \orcid{...}
+% \affiliation{...}
+% \affiliation{...}
+% \email{...}
+% \author{...}
+% \orcid{...}
+% \affiliation{...}
+% \email{...}
+% \author{...}
+% \orcid{...}
+% \affiliation{...}
+% \affiliation{...}
+% \email{...}
+% \end{verbatim}
+% In some cases when several authors share the same affiliation you may
+% try to save the space using the format
+% \begin{verbatim}
+% \author{...}
+% \email{...}
+% \author{...}
+% \email{...}
+% \affiliation{...}
+% \end{verbatim}
+% However, this format is not generally recommended.
+%
+% \DescribeMacro{\position}%
+% \DescribeMacro{\institution}%
+% \DescribeMacro{\department}%
+% \DescribeMacro{\streetaddress}%
+% \DescribeMacro{\city}%
+% \DescribeMacro{\state}%
+% \DescribeMacro{\postcode}%
+% \DescribeMacro{\country}%
+% The \cs{affiliation} command is further structured to interact with
+% the metadata extraction tools. Inside the this command you should
+% use \cs{position}, \cs{institution}, \cs{department}, \cs{city},
+% \cs{streetaddress}, \cs{state}, \cs{postcode} and \cs{country}
+% macros to indicate the corresponding parts of the affiliation.
+% Note that in some cases (for example, journals) these parts are not
+% printed in the resulting copy, but they \emph{are} necessary since
+% they are used by the XML metadata extraction programs. Do
+% \emph{not} put commas or |\\| between the elements of
+% \cs{affiliation}: they will be provided automatically.
+%
+% An example of the author block:
+% \begin{verbatim}
% \author{A. U. Thor}
+% \orcid{1234-4564-1234-4565}
+% \affiliation{%
+% \institution{University of New South Wales}
+% \department{School of Biomedical Engineering}
+% \streetaddress{Samuels Building (F25), Kensington Campus}
+% \city{Sidney}
+% \state{NSW}
+% \postcode{2052}
+% \country{Australia}}
% \email{author at nsw.au.edu}
-% \affiliation{University of New South Wales}
% \author{A. N. Other}
+% \affiliation{%
+% \institution{University of New South Wales}
+% \city{Sidney}
+% \state{NSW}
+% \country{Australia}}
% \author{C. O. Respondent}
-% \affiliation{University of Pennsylvania}
+% \orcid{1234-4565-4564-1234}
+% \affiliation{%
+% \institution{University of Pennsylvania}
+% \city{Philadelphia}
+% \state{PA}
+% \country{USA}}
+% \affiliation{%
+% \institution{University of New South Wales}
+% \city{Sidney}
+% \state{NSW}
+% \country{Australia}}
% \end{verbatim}
-% In the cases of overlapping affiliations it is advisable to repeat
-% the full list, for example,
-% \begin{verbatim}
-% \author{A. U. Thor}
-% \affiliation{University of New South Wales, Australia}
-% \email{author at nsw.edu.au}
-% \author{A. N. Other}
-% \affiliation{University of Pennsylvania, USA and University of New South
-% Wales, Australia}
-% \email{other at upenn.edu}
-% \end{verbatim}
-% For \emph{conferences} the affiliations should \emph{always} be
-% repeated, even if they are shared between the authors.
%
% Note that old ACM conference formats did not allow for more than six
% authors and required some efforts from the authors to achieve
@@ -719,7 +808,7 @@
% settings and their meanings are listed in
% Table~\ref{tab:settopmatter}. For example,
% \begin{verbatim}
-% \settopmatter{printbib=false, printccs=true}
+% \settopmatter{printacmref=false, printccs=true, printfolios=true}
% \end{verbatim}
%
%
@@ -732,8 +821,9 @@
% Parameter & Values & Meaning\\
% \midrule
% printccs & true/false & Whether to print CCS categories\\
-% printbib & true/false & Whether to print ACM bibliographic
+% printacmref & true/false & Whether to print ACM bibliographic
% entry\\
+% printfolios & true/false & Whether to print page numbers (folios)\\
% \bottomrule
% \end{tabularx}
% \end{table}
@@ -891,6 +981,8 @@
%
%
%
+%
+%
%\subsection{Online-only and offline-only material}
%\label{sec:ug_screen}
%
@@ -912,11 +1004,12 @@
% \begin{screenonly}
% (The actual section).
% \end{screenonly}
-%
% \end{verbatim}
%
+% We use \textsl{comment} package for typesetting this code, so
+% |\begin| and |\end| should start at the first positions of the lines
+% of their own (no initial spaces etc.).
%
-%
%\subsection{Note about anonymous mode}
%\label{sec:ug_anonymous}
%
@@ -924,51 +1017,100 @@
% When the option |anonymous| is selected, \TeX\ suppresses author
% information (including number of authors) for a blind review.
% However, sometimes the information identifying the authors may be
-% present in the body of the paper, for example, in the
-% acknowledgements. The environment |anonsuppress| is used to
-% suppress such information, for example
+% present in the body of the paper
% \begin{verbatim}
-% \section*{Acknowledgements}
% \begin{anonsuppress}
-% The authors wish to thank Prof. C.~O.~Lleague for her generous
-% advices and the Society for Development of Oort Cloud for the
-% financial support.
+% This is the continuation of the previous work by the author
+% \cite{prev1, prev2}.
% \end{anonsuppress}
% \end{verbatim}
+%
+% As for |printonly| and |screenonly| environments,
+% |\begin{anonsuppress}| and |\end{anonsuppress}| should start the
+% line of their own (no leading or trailing spaces).
%
+%\subsection{Acknowledgments}
+%\label{sec:ug_acks}
%
+% The traditional ``Acknowledgments'' section is conventionally used
+% to thank persons and granting agencies for their help and support.
+% However, there are several important considerations about this
+% section.
+%
+% First, in the anonymous mode this section must be omitted: it gives
+% too much information to the reviewers. Second, the data about
+% the grants is extracted and stored separately by the postprocessing
+% software. ACM classes provide facilities for both these tasks.
+%
+% \DescribeEnv{acks}%
+% The environment |acks| starts an unnumbered section
+% ``Acknowledgments'' unless the anonymous mode is chosen. Put all
+% thanks inside this environment.
+%
+% As for |printonly| and |screenonly| environments,
+% |\begin{acks}| and |\end{acls}| should start the
+% line of their own (no leading or trailing spaces).
+
+%
+% \DescribeMacro{\grantsponsor}%
+% \DescribeMacro{\grantnum}%
+% All the financial support \emph{must} be listed using the commands
+% \cs{grantsponsor} and \cs{grantnum}. These commands tell the
+% postprocessing software about the granting organization and the
+% grant. The format of the command is the following:
+% \begin{quote}
+% \cs{grantsponsor}\marg{sponsorID}\marg{name}\marg{url}\\
+% \cs{grantnum}\oarg{url}\marg{sponsorID}\marg{number}.
+% \end{quote}
+% Here \marg{sponsorID} is the unique ID used to match grants to
+% sponsors, \marg{name} is the name of the sponsor, \marg{url} is its
+% URL, and \marg{number} is the grant number. The \marg{sponsorID} of
+% the \cs{grantnum} command must correspond to \cs{sponsorID} of a
+% \cs{grantsponsor command}. Some awards have their own web pages,
+% which you can include using the optional argument of \cs{grantnum}
+% command.
+%
+% Example:
+% \begin{verbatim}
+% \begin{acks}
+% The authors would like to thank Dr. Yuhua Li for providing the
+% matlab code of the \textit{BEPS} method.
+%
+% The authors would also like to thank the anonymous referees for
+% their valuable comments and helpful suggestions. The work is
+% supported by the \grantsponsor{GS501100001809}{National Natural
+% Science Foundation of
+% China}{http://dx.doi.org/10.13039/501100001809} under Grant
+% No.:~\grantnum{GS501100001809}{61273304}
+% and~\grantnum[http://www.nnsf.cn/youngscientsts]{GS501100001809}{Young
+% Scientsts' Support Program}.
+% \end{acks}
+% \end{verbatim}
+%
+%
%\subsection{Bibliography}
%\label{sec:ug_bibliography}
%
-% At present some formats use \textsl{natbib} package by default,
-% while some are not compatible with \textsl{natbib}. Table
+% ACM uses \textsl{natbib} package for formatting of referencing ant
+% the style \path{ACM-Reference-Format.bst} for Bib\TeX\
+% processing. You may disable loading of \textsl{natbib} by using the
+% option |natbib=false| in \cs{documentclass}. However, it is not
+% recommended, as well as the use of Bib\TeX\ styles other than
+% \path{ACM-Reference-Format.bst}, and may delay the processing of the
+% manuscript.
+%
%
-% \begin{table}
-% \caption{Bibliography styles used by different formats}
-% \label{tab:bst}
-% \begin{tabularx}{\textwidth}{l<{\ttfamily}lX<{\raggedright}l}
-% \toprule
-% \normalfont Format & \textsl{natbib} use & Bibliography style &
-% Citaton format\\
-% \midrule
-% manuscript & Yes & ACM-Reference-Format-Journals & Author/year\\
-% acmsmall & Yes & ACM-Reference-Format-Journals & Author/year\\
-% acmlarge & Yes & ACM-Reference-Format-Journals & Author/year\\
-% acmtog & Yes & ACM-Reference-Format-Journals & Author/year\\
-% sigconf & No & acm-abbrv, acm-alpha, acm-plain or acm-unsrt &
-% Numeric or alpha \\
-% siggraph & No & acmsiggraph & Author/year \\
-% sigplan & Yes & ACM-Reference-Format-Journals & Author/year \\
-% sigchi & No & SIGCHI-Reference-Format & Numeric\\
-% sigchi-a & No & SIGCHI-Reference-Format & Numeric \\
-% \bottomrule
-% \end{tabularx}
-% \end{table}
-%
-% Usually when you select a format, \LaTeX\ automatically determines
-% whether you need \textsl{natbib} and the required settings.
-% However, you can ovveride these decision by manually setting the
-% option |natbib| to |true| or |false|. You may further customize
+% \DescribeMacro{\citestyle}%
+% If you use |natbib|, you can select one of two predefined sitation
+% styles: the author-year format |acmauthoryear| or the numeric
+% format |acmnumeric| using the command \cs{sitestyle}, for example,
+% \begin{verbatim}
+% \citestyle{acmauthoryear}
+% \end{verbatim}
+% Note that numeric citations are the default mode for most formats.
+%
+% \DescribeMacro{\setcitestyle}%
+% You may further customize
% \textsl{natbib} using \cs{setcitestyle} command, for example,
% \begin{verbatim}
% \setcitestyle{numbers,sort&compress}
@@ -1037,7 +1179,7 @@
\ProvidesFile{acmart.dtx}
%</gobble>
%<class>\ProvidesClass{acmart}
-[2016/05/30 v1.12 Typesetting articles for Association of
+[2016/07/12 v1.18 Typesetting articles for Association of
Computing Machinery]
% \end{macrocode}
%
@@ -1065,6 +1207,11 @@
% \changes{v1.11}{2016/05/27}{Customization of ACM theorem styles and
% proof environment by Matthew Fluet}
% \changes{v1.12}{2016/05/30}{Documentation updates}
+% \changes{v1.14}{2016/06/09}{\cs{citestyle} updates (Matthew Fluet)}
+% \changes{v1.16}{2016/07/07}{Formatting header/footer (Matthew
+% Fluet)}
+% \changes{v1.18}{2016/07/10}{Natbib is now the default for all
+% formats}
%
%
% And the driver code:
@@ -1300,26 +1447,7 @@
% overrode format's selection):
% \begin{macrocode}
\if at ACM@natbib at override\else
- \ifcase\ACM at format@nr
- \relax % manuscript
\@ACM at natbibtrue
- \or % acmsmall
- \@ACM at natbibtrue
- \or % acmlarge
- \@ACM at natbibtrue
- \or % acmtog
- \@ACM at natbibtrue
- \or % sigconf
- \@ACM at natbibfalse
- \or % siggraph
- \@ACM at natbibfalse
- \or % sigplan
- \@ACM at natbibtrue
- \or % sigchi
- \@ACM at natbibfalse
- \or % sigchi-a
- \@ACM at natbibfalse
- \fi
\fi
% \end{macrocode}
%
@@ -1327,7 +1455,9 @@
%\subsection{Loading base class and package}
%\label{sec:loading}
%
+% \changes{v1.13}{2016/06/06}{Increased font size for ACM Large}
%
+%
% At this point we either have \cs{ACM at fontsize}, or use defaults
% \begin{macrocode}
\ifx\ACM at fontsize\@empty
@@ -1337,7 +1467,7 @@
\or % acmsmall
\def\ACM at fontsize{10pt}%
\or % acmlarge
- \def\ACM at fontsize{9pt}%
+ \def\ACM at fontsize{10pt}%
\or % acmtog
\def\ACM at fontsize{9pt}%
\or % sigconf
@@ -1377,8 +1507,10 @@
\fi
% \end{macrocode}
%
+% \changes{v1.14}{2016/06/09}{Patched \cs{citestyle}}
% Citations. We patch \cs{setcitestyle} to allow, e.g.,
-% \cs{setcitestyle}|{sort}| and \cs{setcitestyle}|{nosort}|
+% \cs{setcitestyle}|{sort}| and \cs{setcitestyle}|{nosort}|. We patch
+% \cs{citestyle} to warn about undefined citation styles.
% \begin{macrocode}
\if at ACM@natbib
\RequirePackage{natbib}
@@ -1448,13 +1580,53 @@
}%
\NAT@@setcites
}
- \setcitestyle{%
- open={[},close={]},citesep={;},%
- authoryear,aysep={},yysep={,},%
- notesep={, }}
+ \renewcommand\citestyle[1]{%
+ \ifcsname bibstyle@#1\endcsname%
+ \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
+ \else%
+ \@latex at error{Undefined `#1' citestyle}%
+ \fi
+ }%
\fi
% \end{macrocode}
%
+% \begin{macro}{\bibstyle at acmauthoryear}
+% \changes{v1.13}{2016/06/06}{Added macro}
+% \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle at acmauthoryear}
+% before use}
+% The default author-year format:
+% \begin{macrocode}
+\newcommand{\bibstyle at acmauthoryear}{%
+ \setcitestyle{%
+ authoryear,%
+ open={(},close={)},citesep={;},%
+ aysep={},yysep={,},%
+ notesep={, }}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\bibstyle at acmnumeric}
+% \changes{v1.13}{2016/06/06}{Added macro}
+% \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle at numeric}
+% before use}
+% The default numeric format:
+% \begin{macrocode}
+\newcommand{\bibstyle at acmnumeric}{%
+ \setcitestyle{%
+ numbers,sort&compress,%
+ open={[},close={]},citesep={,},%
+ notesep={, }}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% The default is numeric:
+% \begin{macrocode}
+\citestyle{acmnumeric}
+% \end{macrocode}
+%
+%
% Before we call |hyperref|, we redefine \cs{startsection} commands to
% their \LaTeX\ defaults, since |amsart| ones are too AMS-specific.
% We need to do this early since we want |hyperref| to have a chance
@@ -1578,7 +1750,7 @@
\fi
% \end{macrocode}
%
-% Bibliography mangling. Siggraph does not want the label.
+% Bibliography mangling.
% \begin{macrocode}
\if at ACM@natbib
\let\citeN\cite
@@ -1591,45 +1763,31 @@
\def\shortcite#1{\citeyear{#1}}
\DeclareRobustCommand\citeA
{\begingroup\NAT at swafalse
- \let\NAT at ctype\@ne\NAT at partrue\NAT at fullfalse\NAT at open\NAT at citetp}
- \providecommand\newblock{}
+ \let\NAT at ctype\@ne\NAT at partrue\NAT at fullfalse\NAT at open\NAT at citetp}%
+ \providecommand\newblock{}%
\else
\providecommand\citename[1]{#1}
\fi
-\ifcase\ACM at format@nr
-\relax % manuscript
-\or % acmsmall
-\or % acmlarge
-\or % acmtog
-\or % sigconf
-\or % siggraph
- \def\@biblabel#1{}
- \ifx\bibhang\@undefined
- \newlength\bibhang
- \fi
- \setlength{\bibhang}{1em}
- \renewenvironment{thebibliography}[1]{%
- \@bibtitlestyle
- \normalfont\bibliofont\labelsep .5em\relax
- \renewcommand\theenumiv{\arabic{enumiv}}\let\p at enumiv\@empty
- \list{\@biblabel{\theenumiv}}{\labelwidth\z@
- \setlength{\itemindent}{-\bibhang}%
- \setlength{\leftmargin}{\bibhang}%
- \labelsep\z@
- \def\newblock{\hskip .11em plus .33em minus .07em}%
- \usecounter{enumiv}}%
- \sloppy \clubpenalty\@M \widowpenalty\clubpenalty
- \sfcode`\.=\@m
- }{%
- \def\@noitemerr{\@latex at warning{Empty `thebibliography' environment}}%
- \endlist
- }
-\or % sigplan
-\or % sigchi
-\or % sigchi-a
-\fi
% \end{macrocode}
%
+%
+% \begin{macro}{\bibliographystyle}
+% \changes{v1.13}{2016/06/06}{Redefined macro}
+% Amsart redefines \cs{bibliographystyle} since it prefers AMS
+% bibliography. We turn it back to \LaTeX\ definition:
+% \begin{macrocode}
+\def\bibliographystyle#1{%
+ \ifx\@begindocumenthook\@undefined\else
+ \expandafter\AtBeginDocument
+ \fi
+ {\if at filesw
+ \immediate\write\@auxout{\string\bibstyle{#1}}%
+ \fi}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
% Graphics and color
% \begin{macrocode}
\RequirePackage{graphicx, xcolor}
@@ -1651,6 +1809,7 @@
%\subsection{Paper size and paragraphing}
%\label{sec:paper}
%
+% \changes{v1.17}{2016/07/07}{Slightly decreased margins for sigs}
% We use |geometry| for dimensions
% \begin{macrocode}
\RequirePackage{geometry}
@@ -1679,13 +1838,13 @@
\geometry{twoside=true, head=1pc,
paperwidth=8.5in, paperheight=11in,
includeheadfoot, columnsep=2pc,
- top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt
}%
\or % siggraph
\geometry{twoside=true, head=1pc,
paperwidth=8.5in, paperheight=11in,
includeheadfoot, columnsep=2pc,
- top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt
}%
\or % sigplan
\geometry{twoside=true, head=1pc,
@@ -1697,7 +1856,7 @@
\geometry{twoside=true, head=1pc,
paperwidth=8.5in, paperheight=11in,
includeheadfoot, columnsep=2pc,
- top=66pt, bottom=78pt, inner=54pt, outer=48pt
+ top=66pt, bottom=73pt, inner=54pt, outer=54pt
}%
\or % sigchi-a
\geometry{twoside=false, head=1pc,
@@ -1785,7 +1944,6 @@
\color at endgroup
\egroup
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
-
% \end{macrocode}
%
% \end{macro}
@@ -1817,6 +1975,36 @@
%
% \end{macro}
%
+% \begin{macro}{\@mpfootnotetext}
+% \changes{v1.13}{2016/06/06}{Made minipage footnotes centered}
+% We want the footnotes in minipages centered:
+% \begin{macrocode}
+\long\def\@mpfootnotetext#1{%
+ \global\setbox\@mpfootins\vbox{%
+ \unvbox\@mpfootins
+ \reset at font\footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected at edef\@currentlabel
+ {\csname p at mpfootnote\endcsname\@thefnmark}%
+ \color at begingroup\centering
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color at endgroup}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\@makefnmark}
+% \changes{v1.17}{2016/067/09}{Redefined}
+% AMS classes use a buggy definition of \cs{makefnmark}. We revert
+% to the standard one.
+% \begin{macrocode}
+\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
+% \end{macrocode}
+%
+% \end{macro}
+%
%\subsection{Fonts}
%\label{sec:fonts}
%
@@ -2038,6 +2226,24 @@
%
% \end{macro}
%
+%
+% \begin{macro}{\description}
+% \changes{v1.17}{2016/07/07}{Decreased indent}
+% AMS uses additional indent of 6pt. Frank recommends
+% dropping it.
+% \begin{macrocode}
+\renewenvironment{description}{\list{}{%
+ \itemindent-12\p@
+ \labelwidth\z@ \let\makelabel\descriptionlabel}%
+}{
+ \endlist
+}
+\let\enddescription=\endlist % for efficiency
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
%\subsection{Top matter data}
%\label{sec:top_matter_data}
%
@@ -2292,6 +2498,7 @@
%
% The defaults:
% \begin{macrocode}
+\def\@journalCode at nr{0}
\def\@journalName{}%
\def\@journalNameShort{\@journalName}%
\def\@permissionCodeOne{XXXX-XX}%
@@ -2326,20 +2533,33 @@
% \end{macro}
%
%
-% \begin{macro}{\num at authors}
-% The total number of authors
+% \begin{macro}{\num at authorgroups}
+% \changes{v1.15}{2016/06/25}{Renamed}
+% The total number of ``groups''. Each group is several authors with
+% the same affiliations(s)
% \begin{macrocode}
-\newcount\num at authors
-\num at authors=0\relax
+\newcount\num at authorgroups
+\num at authorgroups=0\relax
% \end{macrocode}
%
% \end{macro}
%
+% \begin{macro}{\if at insideauthorgroup}
+% \changes{v1.15}{2016/06/25}{Introduced macro}
+% Whether we are continuing an author group
+\newif\if at insideauthorgroup
+\@insideauthorgroupfalse
+% \end{macro}
+%
% \begin{macro}{\author}
+% \changes{v1.15}{2016/06/25}{Added code for author groups}
% Adding an author to the list of authors and addresses
% \begin{macrocode}
\renewcommand\author[2][]{%
- \global\advance\num at authors by 1\relax
+ \if at insideauthorgroup\else
+ \global\advance\num at authorgroups by 1\relax
+ \global\@insideauthorgrouptrue
+ \fi
\ifx\addresses\@empty
\if at ACM@anonymous
\gdef\addresses{\@author{Anonymous Author(s)}}%
@@ -2380,11 +2600,13 @@
%
%
% \begin{macro}{\affiliation}
+% \changes{v1.15}{2016/06/25}{Added code for author groups}
% The macro \cs{affiliation} mimics \cs{address} from |amsart|.
% Note that it has an optional argument we do not currently need,
% but keep for the possible future use.
% \begin{macrocode}
\newcommand{\affiliation}[2][]{%
+ \global\@insideauthorgroupfalse
\if at ACM@anonymous\else
\g at addto@macro\addresses{\affiliation{#1}{#2}}%
\fi}
@@ -2405,6 +2627,12 @@
%
% \end{macro}
%
+% \begin{macro}{\orcid}
+% \changes{v1.15}{2016/06/25}{Introduced macro}
+% Right now we do not typeset orcids
+\let\orcid\@gobble
+% \end{macro}
+%
% \begin{macro}{\@titlenotes}
% The titlenotes
% \begin{macrocode}
@@ -2475,28 +2703,31 @@
% \end{macro}
%
% \begin{macro}{\acmVolume}
+% \changes{v1.17}{2016/07/10}{The default is now numerical}
% The current volume
% \begin{macrocode}
\def\acmVolume#1{\def\@acmVolume{#1}}
-\acmVolume{VV}
+\acmVolume{1}
% \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\acmNumber}
+% \changes{v1.17}{2016/07/10}{The default is now numerical}
% The current number
% \begin{macrocode}
\def\acmNumber#1{\def\@acmNumber{#1}}
-\acmNumber{NNN}
+\acmNumber{1}
% \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\acmArticle}
+% \changes{v1.17}{2016/07/10}{The default is now numerical}
% The current article
% \begin{macrocode}
\def\acmArticle#1{\def\@acmArticle{#1}}
-\acmArticle{AA}
+\acmArticle{1}
% \end{macrocode}
%
% \end{macro}
@@ -2512,19 +2743,21 @@
% \end{macro}
%
% \begin{macro}{\acmYear}
+% \changes{v1.17}{2016/07/10}{The default is now numerical}
% The current year
% \begin{macrocode}
\def\acmYear#1{\def\@acmYear{#1}}
-\acmYear{YYYY}
+\acmYear{2016}
% \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\acmMonth}
+% \changes{v1.17}{2017/07/09}{The default must be numerical. Closes \#50.}
% The current month
% \begin{macrocode}
\def\acmMonth#1{\def\@acmMonth{#1}}
-\acmMonth{MM}
+\acmMonth{1}
% \end{macrocode}
%
% \end{macro}
@@ -2707,20 +2940,33 @@
% \end{macrocode}
%
% \end{macro}
-% \begin{macro}{\if at ACM@printbib}
+% \begin{macro}{\if at ACM@printacmref}
+% \changes{v1.17}{2016/07/10}{Renamed from \cs{if at ACM@printbib}}
% Whether to print ACM bib
% \begin{macrocode}
-\define at boolkey+{@ACM at topmatter@}[@ACM@]{printbib}[true]{%
- \if at ACM@printcss
+\define at boolkey+{@ACM at topmatter@}[@ACM@]{printacmref}[true]{%
+ \if at ACM@printacmref
\ClassInfo{\@classname}{Printing bibformat}%
\else
\ClassInfo{\@classname}{Suppressing bibformat}%
- \fi}{\ClassError{\@classname}{printbib must be true or false}}
+ \fi}{\ClassError{\@classname}{printacmref must be true or false}}
% \end{macrocode}
%
% \end{macro}
%
-%
+% \begin{macro}{\if at ACM@printfolios}
+% \changes{v1.13}{2016/06/06}{Added macro}
+% Whether to print folios
+% \begin{macrocode}
+\define at boolkey+{@ACM at topmatter@}[@ACM@]{printfolios}[true]{%
+ \if at ACM@printfolios
+ \ClassInfo{\@classname}{Printing folios}%
+ \else
+ \ClassInfo{\@classname}{Suppressing folios}%
+ \fi}{\ClassError{\@classname}{printfolios must be true or false}}
+% \end{macrocode}
+% \end{macro}
+%
% \begin{macro}{\settopmatter}
% The usual syntactic sugar
% \begin{macrocode}
@@ -2730,16 +2976,18 @@
% \end{macro}
%
%
+% \changes{v1.13}{2016/06/06}{Print bibliographic information by
+% default for the proceedings}
% Now the settings
% \begin{macrocode}
-\settopmatter{printcss=true}
+\settopmatter{printcss=true, printacmref=true}
\if at ACM@manuscript
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=true}
\else
\if at ACM@journal
- \settopmatter{printbib=true}
+ \settopmatter{printfolios=true}
\else
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=false}
\fi
\fi
% \end{macrocode}
@@ -3134,7 +3382,7 @@
% \changes{v1.10}{2016/05/23}{Corrected a bug with doi in manuscript
% and author vertsion,
% \url{https://github.com/borisveytsman/acmart/issues/36}}
-% \changes{v1.12}{2016/05/30}{Moved thankses to copyrightpermission box.}
+% \changes{v1.12}{2016/05/30}{Moved thankses to copyrightpermission box}
% The (in)famous \cs{maketitle}. Note that in sigchi-a mode authors
% are \emph{not} in the title box.
%
@@ -3146,7 +3394,7 @@
\def\maketitle{%
\if at ACM@anonymous
% Anonymize omission of \author-s
- \ifnum\num at authors=0\author{}\fi
+ \ifnum\num at authorgroups=0\author{}\fi
\fi
\begingroup
\let\@footnotemark\@footnotemark at nolink
@@ -3238,7 +3486,7 @@
\andify\shortauthors
\global\let\authors=\authors
\global\let\shortauthors=\shortauthors
- \if at ACM@printbib
+ \if at ACM@printacmref
\@mkbibcitation
\fi
\hypersetup{pdfauthor={\authors},
@@ -3521,8 +3769,83 @@
%
% \end{macro}
%
+% \begin{macro}{\@ACM at addtoaddress}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% The macro adds an item to address using the following rules:
+% \begin{enumerate}
+% \item If we start a paragraph, add the item
+% \item Otherwise, add a comma and the item
+% \item However, the comma is deleted, if it is on the end of the
+% line. We use the magic cleaders trick for this.
+% \end{enumerate}
+% \begin{macrocode}
+\newbox\@ACM at commabox
+\def\@ACM at addtoaddress#1{%
+ \ifvmode\else
+ \setbox\@ACM at commabox=\hbox{, }%
+ \unskip\cleaders\copy\@ACM at commabox\hskip\wd\@ACM at commabox
+ \fi
+ #1}
+% \end{macrocode}
+% \end{macro}
%
+% \begin{macro}{\institution}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% \begin{macro}{\position}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% \begin{macro}{\department}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% \begin{macro}{\streetaddress}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% \begin{macro}{\city}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% \begin{macro}{\state}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% \begin{macro}{\postcode}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% \begin{macro}{\country}
+% \changes{v1.15}{2016/07/03}{Added macro}
+% Theoretically we can define the macros for \cs{affiliation} inside
+% the \cs{@mkauthors}-style commands. However, this would lead to a
+% strange error if an author uses them outside \cs{affiliation}. Of
+% course we can make them produce an error message, but\ldots
+%
+% We follow the strange American tradtion of no comma before zip
+% code.
+% \begin{macrocode}
+\if at ACM@journal
+ \let\position\@gobble
+ \def\institution#1{#1\ignorespaces}%
+ \let\department\@gobble
+ \let\streetaddress\@gobble
+ \let\city\@gobble
+ \let\state\@gobble
+ \let\postcode\@gobble
+ \let\country\@gobble
+\else
+ \def\position#1{#1\par}%
+ \def\institution#1{#1\par}%
+ \def\department#1{#1\par}%
+ \def\streetaddress#1{#1\par}%
+ \let\city\@ACM at addtoaddress
+ \let\state\@ACM at addtoaddress
+ \def\postcode#1{\unskip\space#1}%
+ \let\country\@ACM at addtoaddress
+\fi
+% \end{macrocode}
+%
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
% \begin{macro}{\@mkauthors}
+% \changes{v1.17}{2017/07/09}{TOG now uses the same authors block as
+% other journals}
% Typesetting authors
% \begin{macrocode}
\def\@mkauthors{\begingroup
@@ -3535,7 +3858,7 @@
\or % acmlarge
\@mkauthors at i
\or % acmtog
- \@mkauthors at ii
+ \@mkauthors at i
\or % sigconf
\@mkauthors at iii
\or % siggraph
@@ -3569,11 +3892,14 @@
% \end{macrocode}
% \end{macro}
%
+% \changes{v1.13}{2016/06/06}{Font adjustments for acmsmall}
% Adjusting fonts for different formats
% \begin{macrocode}
\ifcase\ACM at format@nr
\relax % manuscript
\or % acmsmall
+ \def\@authorfont{\large\sffamily}
+ \def\@affiliationfont{\small\normalfont}
\or % acmlarge
\or % acmtog
\def\@authorfont{\LARGE\sffamily}
@@ -3596,15 +3922,33 @@
\fi
% \end{macrocode}
%
+% \begin{macro}{\@typeset at author@line}
+% \changes{v1.18}{2017/07/12}{Added macro}
+% At this point we have \cs{@currentauthors} and
+% \cs{@currentaffiliations}. We typeset them in the journal style
+% \begin{macrocode}
+\def\@typeset at author@line{%
+ \andify\@currentauthors\par\noindent
+ \@currentauthors\def\@currentauthors{}%
+ \ifx\@currentaffiliations\@empty\else
+ \andify\@currentaffiliations
+ \unskip, {\@currentaffiliations}\par
+ \fi
+ \def\@currentaffiliations{}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
% \begin{macro}{\@mkauthors at i}
+% \changes{v1.18}{2017/07/12}{Now we andify affiliations}
% This is version used in most formats. Note that \cs{and} between
% authors with the same affiliation becomes \verb*| and |:
% \begin{macrocode}
\def\@mkauthors at i{%
\def\@currentauthors{}%
- \def\and{%
- \andify\@currentauthors\par\noindent
- \@currentauthors\def\@currentauthors{}}%
+ \def\@currentaffiliations{}%
+ \global\let\and\@typeset at author@line
\def\@author##1{%
\ifx\@currentauthors\@empty
\gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
@@ -3611,16 +3955,20 @@
\else
\g at addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
\fi
- \def\and{}}%
+ \gdef\and{}}%
\def\email##1##2{}%
\def\affiliation##1##2{%
- \ifx\@currentauthors\@empty\else
- \andify\@currentauthors\par\noindent\@currentauthors
+ \def\@tempa{##2}\ifx\@tempa\@empty\else
+ \ifx\@currentaffiliations\@empty
+ \gdef\@currentaffiliations{\@affiliationfont##2}%
+ \else
+ \g at addto@macro{\@currentaffiliations}{\and##2}%
+ \fi
\fi
- \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
- \unskip, {\@affiliationfont##2}\fi\def\and{\par\noindent}}%
+ \global\let\and\@typeset at author@line}
\global\setbox\mktitle at bx=\vbox{\noindent\box\mktitle at bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+ \noindent\addresses\@typeset at author@line
+ \par\medskip}%
}
% \end{macrocode}
%
@@ -3627,31 +3975,8 @@
% \end{macro}
%
% \begin{macro}{\@mkauthors at ii}
-% This is version used in acmtog. A more vertical design
-% \begin{macrocode}
-\def\@mkauthors at ii{\par\medskip
- \def\@currentauthors{}%
- \def\and{}%
- \def\@author##1{%
- \ifx\@currentauthors\@empty
- \gdef\@currentauthors{\@authorfont
- \MakeUppercase{##1}}%
- \else
- \g at addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
- \fi\def\and{}}%
- \def\email##1##2{}%
- \def\affiliation##1##2{%
- \ifx\@currentauthors\@empty\else
- \andify\@currentauthors\par\noindent\@currentauthors
- \fi
- \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
- \par\noindent{\@affiliationfont##2}\fi
- \def\and{\par\noindent{\@affiliationfont and}\par
- \noindent\def\and{}}}%
- \global\setbox\mktitle at bx=\vbox{\noindent\box\mktitle at bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
-}
-% \end{macrocode}
+% \changes{v1.17}{2017/07/09}{Deleted}
+% \cs{@mkauthors at iI} was version used in acmtog. No longer necessary
%
% \end{macro}
%
@@ -3680,9 +4005,25 @@
%
% \end{macro}
%
+% \begin{macro}{\@typeset at author@bx}
+% \changes{v1.15}{2016/07/04}{Moved to separate macro}
+% Typesetting the box with authors. Note that in SIGCHI-A the box
+% is not centered.
+% \begin{macrocode}
+\def\@typeset at author@bx{\bgroup\hsize=\author at bx@wd\def\and{\par}%
+ \global\setbox\author at bx=\vtop{\if at ACM@sigchiamode\else\centering\fi
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author at bx\hspace{\author at bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}
+% \end{macrocode}
+%
+% \end{macro}
%
%
% \begin{macro}{\@mkauthors at iii}
+% \changes{v1.15}{2016/07/04}{New authors system}
% The |sigconf| version. Here we use centered design with each
% author in a separate box.
% \begin{macrocode}
@@ -3696,13 +4037,13 @@
% \begin{macrocode}
\author at bx@wd=\textwidth\relax
\advance\author at bx@wd by -\author at bx@sep\relax
- \ifcase\num at authors
+ \ifcase\num at authorgroups
\relax % 0?
\or % 1=one author per row
\or % 2=two authors per row
- \divide\author at bx@wd by \num at authors\relax
+ \divide\author at bx@wd by \num at authorgroups\relax
\or % 3=three authors per row
- \divide\author at bx@wd by \num at authors\relax
+ \divide\author at bx@wd by \num at authorgroups\relax
\or % 4=two authors per row (!)
\divide\author at bx@wd by 2\relax
\else % three authors per row
@@ -3717,8 +4058,9 @@
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g at addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g at addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -3728,25 +4070,17 @@
\gdef\@currentaffiliation{##2}%
\else
\g at addto@macro\@currentaffiliation{\par##2}%
- \fi}%
+ \fi
+ \global\let\and\@typeset at author@bx
+}%
% \end{macrocode}
-% Actual typesetting is done by \cs{and} macro
+% Actual typesetting is done by \cs{and} macro:
% \begin{macrocode}
- \def\and{\bgroup\hsize=\author at bx@wd\def\and{\quad}%
- \global\setbox\author at bx=\vtop{\centering
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author at bx\hspace{\author at bx@sep}%
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}%
-% \end{macrocode}
-% And here we use it:
-% \begin{macrocode}
\hsize=\textwidth
\global\setbox\mktitle at bx=\vbox{\noindent
\box\mktitle at bx\par\medskip\leavevmode
\lineskip=1pc\relax\centering\hspace*{-1em}%
- \addresses\and\par\bigskip}}
+ \addresses\let\and\@typeset at author@bx\and\par\bigskip}}
% \end{macrocode}
%
% \end{macro}
@@ -3766,7 +4100,7 @@
% \begin{macrocode}
\author at bx@wd=\columnwidth\relax
\advance\author at bx@wd by -\author at bx@sep\relax
- \ifcase\num at authors
+ \ifcase\num at authorgroups
\relax % 0?
\or % 1=one author per row
\else % 2=two authors per row
@@ -3781,8 +4115,9 @@
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g at addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g at addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -3792,23 +4127,16 @@
\gdef\@currentaffiliation{##2}%
\else
\g at addto@macro\@currentaffiliation{\par##2}%
- \fi}%
+ \fi
+ \global\let\and\@typeset at author@bx}%
+%
% \end{macrocode}
% Actual typesetting is done by \cs{and} macro
% \begin{macrocode}
- \def\and{\bgroup\hsize=\author at bx@wd\def\and{\quad}%
- \global\setbox\author at bx=\vtop{\raggedright
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author at bx\hskip\author at bx@sep
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}%
-% \end{macrocode}
-% And here we use it:
-% \begin{macrocode}
\bgroup\hsize=\columnwidth
\par\raggedright\leftskip=\z@
- \lineskip=1pc\noindent\addresses\and\par\bigskip\egroup}
+ \lineskip=1pc\noindent
+ \addresses\let\and\@typeset at author@bx\and\par\bigskip\egroup}
% \end{macrocode}
%
% \end{macro}
@@ -3860,13 +4188,25 @@
% \end{macro}
%
% \begin{macro}{\@mkbibcitation}
+% \changes{v1.17}{2016/07/10}{Changed format for sigs}
+% \changes{v1.17}{2016/07/10}{Added \cs{nobreak}}
% Print bibcitation format
% \begin{macrocode}
\def\@mkbibcitation{\bgroup
- \par\medskip\small\noindent{\bfseries ACM Reference format:}\par
- \noindent\authors. \@acmYear. \@title. \textit{\@journalNameShort}
- \@acmVolume, \@acmNumber, Article~\@acmArticle\
- (\@acmPubDate), \ref{TotPages}~pages.\par
+ \def\footnotemark{}%
+ \par\medskip\small\noindent{\bfseries ACM Reference format:}\par\nobreak
+ \noindent\authors. \@acmYear. \@title.
+ \if at ACM@journal
+ \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber, Article~\@acmArticle\ (\@acmPubDate),
+ \ref{TotPages}~pages.
+ \else
+ In \textit{Proceedings of \acmConference at name, \acmConference at venue,
+ \acmConference at date
+ \ifx\acmConference at name\acmConference at shortname\else
+ \ (\acmConference at shortname)\fi
+ ,} \ref{TotPages}~pages.
+ \fi\par
\noindent DOI: \nolinkurl{\@acmDOI}
\par\egroup}
% \end{macrocode}
@@ -3949,10 +4289,53 @@
%
% \end{macro}
%
+% \begin{macro}{\@shortauthors}
+% \changes{v1.15}{2016/07/04}{Introduced macro}
+% Even if the author redefined \cs{shortauthors}, we do not print
+% them in the anonymous mode in the headers:
+% \begin{macrocode}
+\def\@shortauthors{\if at ACM@anonymous Anon.\else\shortauthors\fi}
+% \end{macrocode}
+%
+% \end{macro}
%
+% \begin{macro}{\@headfootfont}
+% \changes{v1.16}{2016/07/07}{Added macro}
+% The font to typeset header and footer text.
+% \begin{macrocode}
+\def\@headfootfont{%
+ \ifcase\ACM at format@nr
+ \relax % manuscript
+ \sffamily
+ \or % acmsmall
+ \sffamily
+ \or % acmlarge
+ \sffamily
+ \or % acmtog
+ \sffamily
+ \or % sigconf
+ \sffamily
+ \or % siggraph
+ \sffamily
+ \or % sigplan
+ \sffamily
+ \or % sigchi
+ \sffamily
+ \or % sigchi-a
+ \sffamily
+ \fi}
+% \end{macrocode}
%
+% \end{macro}
+%
% \begin{macro}{standardpagestyle}
% \changes{v1.10}{2016/05/22}{Reversed folios location}
+% \changes{v1.13}{2016/06/06}{Suppressed folios if sig}
+% \changes{v1.13}{2016/06/06}{Added headers for sigs}
+% \changes{v1.13}{2016/06/06}{Expanded headers for sigchi-a}
+% \changes{v1.15}{2016/07/04}{Better handling of anonymous mode}
+% \changes{v1.16}{2016/07/07}{Customize header/footer text font}
+% \changes{v1.17}{2016/07/10}{Added paper title to sigs}
% The pagestyle for all pages but the first one
% \begin{macrocode}
\fancypagestyle{standardpagestyle}{%
@@ -3961,38 +4344,46 @@
\renewcommand{\footrulewidth}{\z@}%
\ifcase\ACM at format@nr
\relax % manuscript
- \fancyhead[LE]{\ACM at linecount\thepage}%
- \fancyhead[RO]{\thepage}%
- \fancyhead[RE]{\shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\if at ACM@printfolios\thepage\fi}%
+ \fancyhead[RO]{\if at ACM@printfolios\thepage\fi}%
+ \fancyhead[RE]{\@shortauthors}%
\fancyhead[LO]{\ACM at linecount\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
- \fancyhead[LE]{\ACM at linecount\sffamily\@acmArticle:\thepage}%
- \fancyhead[RO]{\sffamily\@acmArticle:\thepage}%
- \fancyhead[RE]{\sffamily\shortauthors}%
- \fancyhead[LO]{\ACM at linecount\sffamily\shorttitle}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont\@acmArticle\if at ACM@printfolios:\thepage\fi}%
+ \fancyhead[RO]{\@headfootfont\@acmArticle\if at ACM@printfolios:\thepage\fi}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LO]{\ACM at linecount\@headfootfont\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmlarge
- \fancyhead[LE]{\ACM at linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont
+ \@acmArticle:\if at ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM at linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if at ACM@printfolios:\thepage\fi}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmtog
- \fancyhead[LE]{\ACM at linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont
+ \@acmArticle:\if at ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM at linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if at ACM@printfolios:\thepage\fi}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\else % Proceedings
- \fancyfoot[R]{\footnotesize\thepage}%
- \fancyhead[L]{\ACM at linecount}%
+ \fancyfoot[C]{\if at ACM@printfolios\footnotesize\thepage\fi}%
+ \fancyhead[LO]{\ACM at linecount\@headfootfont\shorttitle}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont\acmConference at shortname,
+ \acmConference at date, \acmConference at venue}%
+ \fancyhead[RO]{\@headfootfont\acmConference at shortname,
+ \acmConference at date, \acmConference at venue}%
\fi
+ \if at ACM@sigchiamode
+ \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
+ \fi
}
\pagestyle{standardpagestyle}
% \end{macrocode}
@@ -4075,7 +4466,7 @@
\ifcase\ACM at format@nr
\relax % manuscript
\fancyhead[L]{\ACM at linecount}%
- \fancyfoot[RO,LE]{\small\thepage}%
+ \fancyfoot[RO,LE]{\if at ACM@printfolios\small\thepage\fi}%
\fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
@@ -4100,7 +4491,7 @@
\fancyhead[L]{\ACM at linecount}%
\else % Conference proceedings
\fancyhead[L]{\ACM at linecount}%
- \fancyfoot[R]{\footnotesize\thepage}%
+ \fancyfoot[C]{\if at ACM@printfolios\footnotesize\thepage\fi}%
\fi
}
% \end{macrocode}
@@ -4112,7 +4503,44 @@
%\label{sec:sectioninng}
%
%
+% Sectioning is different for different levels
+% \begin{macrocode}
+\renewcommand\section{\@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@secfont}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@subsecfont}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@subsubsecfont\@adddotafter}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@parfont\@adddotafter}}
+\renewcommand\part{\@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\@parfont}}
+% \end{macrocode}
%
+% \begin{macro}{\section at raggedright}
+% \changes{v1.12}{2016/05/30}{Introduced macro}%
+% Special version of \cs{raggedright} compatible with
+% \cs{MakeUppercase}
+% \begin{macrocode}
+\def\section at raggedright{\@rightskip\@flushglue
+ \rightskip\@rightskip
+ \leftskip\z at skip
+ \parindent\z@}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
% \begin{macro}{\@secfont}
% \begin{macro}{\@subsecfont}
% \begin{macro}{\@subsubsecfont}
@@ -4191,44 +4619,6 @@
% \end{macro}
%
%
-% Sectioning is different for different levels
-% \begin{macrocode}
-\renewcommand\section{\@startsection{section}{1}{\z@}%
- {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {.25\baselineskip}%
- {\@secfont}}
-\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
- {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {.25\baselineskip}%
- {\@subsecfont}}
-\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\@subsubsecfont\@adddotafter}}
-\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\@parfont\@adddotafter}}
-\renewcommand\part{\@startsection{part}{9}{\z@}%
- {-10\p@ \@plus -4\p@ \@minus -2\p@}%
- {4\p@}%
- {\@parfont}}
-% \end{macrocode}
-%
-% \begin{macro}{\section at raggedright}
-% \changes{v1.12}{2016/05/30}{Introduced macro}%
-% Special version of \cs{raggedright} compatible with
-% \cs{MakeUppercase}
-% \begin{macrocode}
-\def\section at raggedright{\@rightskip\@flushglue
- \rightskip\@rightskip
- \leftskip\z at skip
- \parindent\z@}
-% \end{macrocode}
-%
-% \end{macro}
-%
-%
%\subsection{Theorems}
%\label{sec:theorems}
%
@@ -4437,6 +4827,40 @@
% \end{macro}
%
%
+%
+%\subsection{Acknowledgments}
+%\label{sec:acks}
+%
+% \begin{macro}{\acks}
+% \changes{v1.15}{2016/07/05}{Added macro}
+% This is a |comment|-like structure
+% \begin{macrocode}
+\specialcomment{acks}
+ {\begingroup\section*{Acknowledgments}}{\endgroup}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\grantsponsor}
+% \changes{v1.15}{2016/07/05}{Added macro}
+% \changes{v1.17}{2016/07/10}{Renamed}
+% We just typeset the name of the sponsor
+% \begin{macrocode}
+\def\grantsponsor#1#2#3{#2}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\grantnum}
+% \changes{v1.15}{2016/07/05}{Added macro}
+% \changes{v1.17}{2016/07/10}{Added url}
+% \begin{macrocode}
+\newcommand\grantnum[3][]{#3%
+ \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
+% \end{macrocode}
+%
+% \end{macro}
+%
% \subsection{Conditional typesetting}
% \label{sec:conditional}
%
@@ -4451,12 +4875,12 @@
\fi
\if at ACM@anonymous
\excludecomment{anonsuppress}
+ \excludecomment{acks}
\else
\includecomment{anonsuppress}
\fi
% \end{macrocode}
%
-%
%\subsection{End of Class}
%\label{end}
%
Modified: trunk/Master/texmf-dist/tex/latex/acmart/acmart.cls
===================================================================
--- trunk/Master/texmf-dist/tex/latex/acmart/acmart.cls 2016-07-14 21:22:53 UTC (rev 41691)
+++ trunk/Master/texmf-dist/tex/latex/acmart/acmart.cls 2016-07-14 21:38:03 UTC (rev 41692)
@@ -35,9 +35,10 @@
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
+
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{acmart}
-[2016/05/30 v1.12 Typesetting articles for Association of
+[2016/07/12 v1.18 Typesetting articles for Association of
Computing Machinery]
\def\@classname{acmart}
\RequirePackage{xkeyval}
@@ -140,26 +141,7 @@
\@ACM at sigchiamodetrue
\fi
\if at ACM@natbib at override\else
- \ifcase\ACM at format@nr
- \relax % manuscript
\@ACM at natbibtrue
- \or % acmsmall
- \@ACM at natbibtrue
- \or % acmlarge
- \@ACM at natbibtrue
- \or % acmtog
- \@ACM at natbibtrue
- \or % sigconf
- \@ACM at natbibfalse
- \or % siggraph
- \@ACM at natbibfalse
- \or % sigplan
- \@ACM at natbibtrue
- \or % sigchi
- \@ACM at natbibfalse
- \or % sigchi-a
- \@ACM at natbibfalse
- \fi
\fi
\ifx\ACM at fontsize\@empty
\ifcase\ACM at format@nr
@@ -168,7 +150,7 @@
\or % acmsmall
\def\ACM at fontsize{10pt}%
\or % acmlarge
- \def\ACM at fontsize{9pt}%
+ \def\ACM at fontsize{10pt}%
\or % acmtog
\def\ACM at fontsize{9pt}%
\or % sigconf
@@ -260,11 +242,26 @@
}%
\NAT@@setcites
}
+ \renewcommand\citestyle[1]{%
+ \ifcsname bibstyle@#1\endcsname%
+ \csname bibstyle@#1\endcsname\let\bibstyle\@gobble%
+ \else%
+ \@latex at error{Undefined `#1' citestyle}%
+ \fi
+ }%
+\fi
+\newcommand{\bibstyle at acmauthoryear}{%
\setcitestyle{%
- open={[},close={]},citesep={;},%
- authoryear,aysep={},yysep={,},%
- notesep={, }}
-\fi
+ authoryear,%
+ open={(},close={)},citesep={;},%
+ aysep={},yysep={,},%
+ notesep={, }}}
+\newcommand{\bibstyle at acmnumeric}{%
+ \setcitestyle{%
+ numbers,sort&compress,%
+ open={[},close={]},citesep={,},%
+ notesep={, }}}
+\citestyle{acmnumeric}
\def\@startsection#1#2#3#4#5#6{%
\if at noskipsec \leavevmode \fi
\par
@@ -387,43 +384,18 @@
\def\shortcite#1{\citeyear{#1}}
\DeclareRobustCommand\citeA
{\begingroup\NAT at swafalse
- \let\NAT at ctype\@ne\NAT at partrue\NAT at fullfalse\NAT at open\NAT at citetp}
- \providecommand\newblock{}
+ \let\NAT at ctype\@ne\NAT at partrue\NAT at fullfalse\NAT at open\NAT at citetp}%
+ \providecommand\newblock{}%
\else
\providecommand\citename[1]{#1}
\fi
-\ifcase\ACM at format@nr
-\relax % manuscript
-\or % acmsmall
-\or % acmlarge
-\or % acmtog
-\or % sigconf
-\or % siggraph
- \def\@biblabel#1{}
- \ifx\bibhang\@undefined
- \newlength\bibhang
- \fi
- \setlength{\bibhang}{1em}
- \renewenvironment{thebibliography}[1]{%
- \@bibtitlestyle
- \normalfont\bibliofont\labelsep .5em\relax
- \renewcommand\theenumiv{\arabic{enumiv}}\let\p at enumiv\@empty
- \list{\@biblabel{\theenumiv}}{\labelwidth\z@
- \setlength{\itemindent}{-\bibhang}%
- \setlength{\leftmargin}{\bibhang}%
- \labelsep\z@
- \def\newblock{\hskip .11em plus .33em minus .07em}%
- \usecounter{enumiv}}%
- \sloppy \clubpenalty\@M \widowpenalty\clubpenalty
- \sfcode`\.=\@m
- }{%
- \def\@noitemerr{\@latex at warning{Empty `thebibliography' environment}}%
- \endlist
- }
-\or % sigplan
-\or % sigchi
-\or % sigchi-a
-\fi
+\def\bibliographystyle#1{%
+ \ifx\@begindocumenthook\@undefined\else
+ \expandafter\AtBeginDocument
+ \fi
+ {\if at filesw
+ \immediate\write\@auxout{\string\bibstyle{#1}}%
+ \fi}}
\RequirePackage{graphicx, xcolor}
\definecolor[named]{ACMBlue}{cmyk}{1,0.1,0,0.1}
\definecolor[named]{ACMYellow}{cmyk}{0,0.16,1,0}
@@ -459,13 +431,13 @@
\geometry{twoside=true, head=1pc,
paperwidth=8.5in, paperheight=11in,
includeheadfoot, columnsep=2pc,
- top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt
}%
\or % siggraph
\geometry{twoside=true, head=1pc,
paperwidth=8.5in, paperheight=11in,
includeheadfoot, columnsep=2pc,
- top=57pt, bottom=75pt, inner=54pt, outer=57pt
+ top=57pt, bottom=73pt, inner=54pt, outer=54pt
}%
\or % sigplan
\geometry{twoside=true, head=1pc,
@@ -477,7 +449,7 @@
\geometry{twoside=true, head=1pc,
paperwidth=8.5in, paperheight=11in,
includeheadfoot, columnsep=2pc,
- top=66pt, bottom=78pt, inner=54pt, outer=48pt
+ top=66pt, bottom=73pt, inner=54pt, outer=54pt
}%
\or % sigchi-a
\geometry{twoside=false, head=1pc,
@@ -522,7 +494,6 @@
\color at endgroup
\egroup
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
-
\def\@makefntext{\noindent\@makefnmark}
\if at ACM@sigchiamode
\long\def\@footnotetext#1{\marginpar{%
@@ -536,6 +507,19 @@
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
\color at endgroup}}%
\fi
+\long\def\@mpfootnotetext#1{%
+ \global\setbox\@mpfootins\vbox{%
+ \unvbox\@mpfootins
+ \reset at font\footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected at edef\@currentlabel
+ {\csname p at mpfootnote\endcsname\@thefnmark}%
+ \color at begingroup\centering
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color at endgroup}}
+\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
\newif\if at ACM@newfonts
\@ACM at newfontstrue
\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
@@ -633,6 +617,13 @@
\or % sigchi-a
\fi
\renewcommand{\descriptionlabel}[1]{\hspace\labelsep \upshape\bfseries #1}
+\renewenvironment{description}{\list{}{%
+ \itemindent-12\p@
+ \labelwidth\z@ \let\makelabel\descriptionlabel}%
+}{
+ \endlist
+}
+\let\enddescription=\endlist % for efficiency
\define at choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode at nr]{%
CIE,%
CSUR,%
@@ -869,6 +860,7 @@
\ClassError{\@classname}{Incorrect journal #1}%
}%
\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
+\def\@journalCode at nr{0}
\def\@journalName{}%
\def\@journalNameShort{\@journalName}%
\def\@permissionCodeOne{XXXX-XX}%
@@ -885,10 +877,15 @@
DC, USA}
\def\subtitle#1{\def\@subtitle{#1}}
\subtitle{}
-\newcount\num at authors
-\num at authors=0\relax
+\newcount\num at authorgroups
+\num at authorgroups=0\relax
+\newif\if at insideauthorgroup
+\@insideauthorgroupfalse
\renewcommand\author[2][]{%
- \global\advance\num at authors by 1\relax
+ \if at insideauthorgroup\else
+ \global\advance\num at authorgroups by 1\relax
+ \global\@insideauthorgrouptrue
+ \fi
\ifx\addresses\@empty
\if at ACM@anonymous
\gdef\addresses{\@author{Anonymous Author(s)}}%
@@ -924,6 +921,7 @@
\fi
\fi}
\newcommand{\affiliation}[2][]{%
+ \global\@insideauthorgroupfalse
\if at ACM@anonymous\else
\g at addto@macro\addresses{\affiliation{#1}{#2}}%
\fi}
@@ -931,6 +929,7 @@
\if at ACM@anonymous\else
\g at addto@macro\addresses{\email{#1}{#2}}%
\fi}
+\let\orcid\@gobble
\def\@titlenotes{}
\def\titlenote#1{%
\g at addto@macro\@title{\footnotemark}%
@@ -958,17 +957,17 @@
\stepcounter{footnote}\footnotetext{#1}}%
\fi}
\def\acmVolume#1{\def\@acmVolume{#1}}
-\acmVolume{VV}
+\acmVolume{1}
\def\acmNumber#1{\def\@acmNumber{#1}}
-\acmNumber{NNN}
+\acmNumber{1}
\def\acmArticle#1{\def\@acmArticle{#1}}
-\acmArticle{AA}
+\acmArticle{1}
\def\acmArticleSeq#1{\def\@acmArticleSeq{#1}}
\acmArticleSeq{\@acmArticle}
\def\acmYear#1{\def\@acmYear{#1}}
-\acmYear{YYYY}
+\acmYear{2016}
\def\acmMonth#1{\def\@acmMonth{#1}}
-\acmMonth{MM}
+\acmMonth{1}
\def\@acmPubDate{\ifcase\@acmMonth\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or
@@ -1012,21 +1011,27 @@
\else
\ClassInfo{\@classname}{Suppressing CSS}%
\fi}{\ClassError{\@classname}{printcss must be true or false}}
-\define at boolkey+{@ACM at topmatter@}[@ACM@]{printbib}[true]{%
- \if at ACM@printcss
+\define at boolkey+{@ACM at topmatter@}[@ACM@]{printacmref}[true]{%
+ \if at ACM@printacmref
\ClassInfo{\@classname}{Printing bibformat}%
\else
\ClassInfo{\@classname}{Suppressing bibformat}%
- \fi}{\ClassError{\@classname}{printbib must be true or false}}
+ \fi}{\ClassError{\@classname}{printacmref must be true or false}}
+\define at boolkey+{@ACM at topmatter@}[@ACM@]{printfolios}[true]{%
+ \if at ACM@printfolios
+ \ClassInfo{\@classname}{Printing folios}%
+ \else
+ \ClassInfo{\@classname}{Suppressing folios}%
+ \fi}{\ClassError{\@classname}{printfolios must be true or false}}
\def\settopmatter#1{\setkeys{@ACM at topmatter@}{#1}}
-\settopmatter{printcss=true}
+\settopmatter{printcss=true, printacmref=true}
\if at ACM@manuscript
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=true}
\else
\if at ACM@journal
- \settopmatter{printbib=true}
+ \settopmatter{printfolios=true}
\else
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=false}
\fi
\fi
\def\@received{}
@@ -1256,7 +1261,7 @@
\def\maketitle{%
\if at ACM@anonymous
% Anonymize omission of \author-s
- \ifnum\num at authors=0\author{}\fi
+ \ifnum\num at authorgroups=0\author{}\fi
\fi
\begingroup
\let\@footnotemark\@footnotemark at nolink
@@ -1348,7 +1353,7 @@
\andify\shortauthors
\global\let\authors=\authors
\global\let\shortauthors=\shortauthors
- \if at ACM@printbib
+ \if at ACM@printacmref
\@mkbibcitation
\fi
\hypersetup{pdfauthor={\authors},
@@ -1550,6 +1555,32 @@
\par\noindent\@subtitlefont\@subtitle
\fi
\par\bigskip}}%
+\newbox\@ACM at commabox
+\def\@ACM at addtoaddress#1{%
+ \ifvmode\else
+ \setbox\@ACM at commabox=\hbox{, }%
+ \unskip\cleaders\copy\@ACM at commabox\hskip\wd\@ACM at commabox
+ \fi
+ #1}
+\if at ACM@journal
+ \let\position\@gobble
+ \def\institution#1{#1\ignorespaces}%
+ \let\department\@gobble
+ \let\streetaddress\@gobble
+ \let\city\@gobble
+ \let\state\@gobble
+ \let\postcode\@gobble
+ \let\country\@gobble
+\else
+ \def\position#1{#1\par}%
+ \def\institution#1{#1\par}%
+ \def\department#1{#1\par}%
+ \def\streetaddress#1{#1\par}%
+ \let\city\@ACM at addtoaddress
+ \let\state\@ACM at addtoaddress
+ \def\postcode#1{\unskip\space#1}%
+ \let\country\@ACM at addtoaddress
+\fi
\def\@mkauthors{\begingroup
\hsize=\textwidth
\ifcase\ACM at format@nr
@@ -1560,7 +1591,7 @@
\or % acmlarge
\@mkauthors at i
\or % acmtog
- \@mkauthors at ii
+ \@mkauthors at i
\or % sigconf
\@mkauthors at iii
\or % siggraph
@@ -1579,6 +1610,8 @@
\ifcase\ACM at format@nr
\relax % manuscript
\or % acmsmall
+ \def\@authorfont{\large\sffamily}
+ \def\@affiliationfont{\small\normalfont}
\or % acmlarge
\or % acmtog
\def\@authorfont{\LARGE\sffamily}
@@ -1599,11 +1632,18 @@
\def\@authorfont{\bfseries}
\def\@affiliationfont{\mdseries}
\fi
+\def\@typeset at author@line{%
+ \andify\@currentauthors\par\noindent
+ \@currentauthors\def\@currentauthors{}%
+ \ifx\@currentaffiliations\@empty\else
+ \andify\@currentaffiliations
+ \unskip, {\@currentaffiliations}\par
+ \fi
+ \def\@currentaffiliations{}}
\def\@mkauthors at i{%
\def\@currentauthors{}%
- \def\and{%
- \andify\@currentauthors\par\noindent
- \@currentauthors\def\@currentauthors{}}%
+ \def\@currentaffiliations{}%
+ \global\let\and\@typeset at author@line
\def\@author##1{%
\ifx\@currentauthors\@empty
\gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
@@ -1610,53 +1650,42 @@
\else
\g at addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
\fi
- \def\and{}}%
+ \gdef\and{}}%
\def\email##1##2{}%
\def\affiliation##1##2{%
- \ifx\@currentauthors\@empty\else
- \andify\@currentauthors\par\noindent\@currentauthors
+ \def\@tempa{##2}\ifx\@tempa\@empty\else
+ \ifx\@currentaffiliations\@empty
+ \gdef\@currentaffiliations{\@affiliationfont##2}%
+ \else
+ \g at addto@macro{\@currentaffiliations}{\and##2}%
+ \fi
\fi
- \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
- \unskip, {\@affiliationfont##2}\fi\def\and{\par\noindent}}%
+ \global\let\and\@typeset at author@line}
\global\setbox\mktitle at bx=\vbox{\noindent\box\mktitle at bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+ \noindent\addresses\@typeset at author@line
+ \par\medskip}%
}
-\def\@mkauthors at ii{\par\medskip
- \def\@currentauthors{}%
- \def\and{}%
- \def\@author##1{%
- \ifx\@currentauthors\@empty
- \gdef\@currentauthors{\@authorfont
- \MakeUppercase{##1}}%
- \else
- \g at addto@macro{\@currentauthors}{\and\MakeUppercase{##1}}%
- \fi\def\and{}}%
- \def\email##1##2{}%
- \def\affiliation##1##2{%
- \ifx\@currentauthors\@empty\else
- \andify\@currentauthors\par\noindent\@currentauthors
- \fi
- \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
- \par\noindent{\@affiliationfont##2}\fi
- \def\and{\par\noindent{\@affiliationfont and}\par
- \noindent\def\and{}}}%
- \global\setbox\mktitle at bx=\vbox{\noindent\box\mktitle at bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
-}
\newbox\author at bx
\newdimen\author at bx@wd
\newskip\author at bx@sep
\author at bx@sep=1pc\relax
+\def\@typeset at author@bx{\bgroup\hsize=\author at bx@wd\def\and{\par}%
+ \global\setbox\author at bx=\vtop{\if at ACM@sigchiamode\else\centering\fi
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author at bx\hspace{\author at bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}
\def\@mkauthors at iii{%
\author at bx@wd=\textwidth\relax
\advance\author at bx@wd by -\author at bx@sep\relax
- \ifcase\num at authors
+ \ifcase\num at authorgroups
\relax % 0?
\or % 1=one author per row
\or % 2=two authors per row
- \divide\author at bx@wd by \num at authors\relax
+ \divide\author at bx@wd by \num at authorgroups\relax
\or % 3=three authors per row
- \divide\author at bx@wd by \num at authors\relax
+ \divide\author at bx@wd by \num at authorgroups\relax
\or % 4=two authors per row (!)
\divide\author at bx@wd by 2\relax
\else % three authors per row
@@ -1668,8 +1697,9 @@
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g at addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g at addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -1679,23 +1709,18 @@
\gdef\@currentaffiliation{##2}%
\else
\g at addto@macro\@currentaffiliation{\par##2}%
- \fi}%
- \def\and{\bgroup\hsize=\author at bx@wd\def\and{\quad}%
- \global\setbox\author at bx=\vtop{\centering
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author at bx\hspace{\author at bx@sep}%
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}%
+ \fi
+ \global\let\and\@typeset at author@bx
+}%
\hsize=\textwidth
\global\setbox\mktitle at bx=\vbox{\noindent
\box\mktitle at bx\par\medskip\leavevmode
\lineskip=1pc\relax\centering\hspace*{-1em}%
- \addresses\and\par\bigskip}}
+ \addresses\let\and\@typeset at author@bx\and\par\bigskip}}
\def\@mkauthors at iv{%
\author at bx@wd=\columnwidth\relax
\advance\author at bx@wd by -\author at bx@sep\relax
- \ifcase\num at authors
+ \ifcase\num at authorgroups
\relax % 0?
\or % 1=one author per row
\else % 2=two authors per row
@@ -1707,8 +1732,9 @@
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g at addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g at addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -1718,17 +1744,12 @@
\gdef\@currentaffiliation{##2}%
\else
\g at addto@macro\@currentaffiliation{\par##2}%
- \fi}%
- \def\and{\bgroup\hsize=\author at bx@wd\def\and{\quad}%
- \global\setbox\author at bx=\vtop{\raggedright
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author at bx\hskip\author at bx@sep
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}%
+ \fi
+ \global\let\and\@typeset at author@bx}%
\bgroup\hsize=\columnwidth
\par\raggedright\leftskip=\z@
- \lineskip=1pc\noindent\addresses\and\par\bigskip\egroup}
+ \lineskip=1pc\noindent
+ \addresses\let\and\@typeset at author@bx\and\par\bigskip\egroup}
\def\@authornotemark{\g at addto@macro\@currentauthors{\footnotemark}}
\def\@mkteasers{%
\ifx\@teaserfigures\@empty\else
@@ -1748,10 +1769,20 @@
\@abstract\par}%
\fi\egroup}
\def\@mkbibcitation{\bgroup
- \par\medskip\small\noindent{\bfseries ACM Reference format:}\par
- \noindent\authors. \@acmYear. \@title. \textit{\@journalNameShort}
- \@acmVolume, \@acmNumber, Article~\@acmArticle\
- (\@acmPubDate), \ref{TotPages}~pages.\par
+ \def\footnotemark{}%
+ \par\medskip\small\noindent{\bfseries ACM Reference format:}\par\nobreak
+ \noindent\authors. \@acmYear. \@title.
+ \if at ACM@journal
+ \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber, Article~\@acmArticle\ (\@acmPubDate),
+ \ref{TotPages}~pages.
+ \else
+ In \textit{Proceedings of \acmConference at name, \acmConference at venue,
+ \acmConference at date
+ \ifx\acmConference at name\acmConference at shortname\else
+ \ (\acmConference at shortname)\fi
+ ,} \ref{TotPages}~pages.
+ \fi\par
\noindent DOI: \nolinkurl{\@acmDOI}
\par\egroup}
\def\@printendtopmatter{\par\medskip
@@ -1793,6 +1824,28 @@
\put(-26,-22){\usebox{\ACM at linecount@bx}}%
\end{picture}%
\fi}
+\def\@shortauthors{\if at ACM@anonymous Anon.\else\shortauthors\fi}
+\def\@headfootfont{%
+ \ifcase\ACM at format@nr
+ \relax % manuscript
+ \sffamily
+ \or % acmsmall
+ \sffamily
+ \or % acmlarge
+ \sffamily
+ \or % acmtog
+ \sffamily
+ \or % sigconf
+ \sffamily
+ \or % siggraph
+ \sffamily
+ \or % sigplan
+ \sffamily
+ \or % sigchi
+ \sffamily
+ \or % sigchi-a
+ \sffamily
+ \fi}
\fancypagestyle{standardpagestyle}{%
\fancyhf{}%
\renewcommand{\headrulewidth}{\z@}%
@@ -1799,38 +1852,46 @@
\renewcommand{\footrulewidth}{\z@}%
\ifcase\ACM at format@nr
\relax % manuscript
- \fancyhead[LE]{\ACM at linecount\thepage}%
- \fancyhead[RO]{\thepage}%
- \fancyhead[RE]{\shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\if at ACM@printfolios\thepage\fi}%
+ \fancyhead[RO]{\if at ACM@printfolios\thepage\fi}%
+ \fancyhead[RE]{\@shortauthors}%
\fancyhead[LO]{\ACM at linecount\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
- \fancyhead[LE]{\ACM at linecount\sffamily\@acmArticle:\thepage}%
- \fancyhead[RO]{\sffamily\@acmArticle:\thepage}%
- \fancyhead[RE]{\sffamily\shortauthors}%
- \fancyhead[LO]{\ACM at linecount\sffamily\shorttitle}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont\@acmArticle\if at ACM@printfolios:\thepage\fi}%
+ \fancyhead[RO]{\@headfootfont\@acmArticle\if at ACM@printfolios:\thepage\fi}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LO]{\ACM at linecount\@headfootfont\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmlarge
- \fancyhead[LE]{\ACM at linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont
+ \@acmArticle:\if at ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM at linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if at ACM@printfolios:\thepage\fi}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmtog
- \fancyhead[LE]{\ACM at linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont
+ \@acmArticle:\if at ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM at linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if at ACM@printfolios:\thepage\fi}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\else % Proceedings
- \fancyfoot[R]{\footnotesize\thepage}%
- \fancyhead[L]{\ACM at linecount}%
+ \fancyfoot[C]{\if at ACM@printfolios\footnotesize\thepage\fi}%
+ \fancyhead[LO]{\ACM at linecount\@headfootfont\shorttitle}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LE]{\ACM at linecount\@headfootfont\acmConference at shortname,
+ \acmConference at date, \acmConference at venue}%
+ \fancyhead[RO]{\@headfootfont\acmConference at shortname,
+ \acmConference at date, \acmConference at venue}%
\fi
+ \if at ACM@sigchiamode
+ \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
+ \fi
}
\pagestyle{standardpagestyle}
\newdimen\@folio at wd
@@ -1879,7 +1940,7 @@
\ifcase\ACM at format@nr
\relax % manuscript
\fancyhead[L]{\ACM at linecount}%
- \fancyfoot[RO,LE]{\small\thepage}%
+ \fancyfoot[RO,LE]{\if at ACM@printfolios\small\thepage\fi}%
\fancyfoot[RE,LO]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
@@ -1904,9 +1965,33 @@
\fancyhead[L]{\ACM at linecount}%
\else % Conference proceedings
\fancyhead[L]{\ACM at linecount}%
- \fancyfoot[R]{\footnotesize\thepage}%
+ \fancyfoot[C]{\if at ACM@printfolios\footnotesize\thepage\fi}%
\fi
}
+\renewcommand\section{\@startsection{section}{1}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@secfont}}
+\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
+ {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {.25\baselineskip}%
+ {\@subsecfont}}
+\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@subsubsecfont\@adddotafter}}
+\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
+ {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
+ {-3.5\p@}%
+ {\@parfont\@adddotafter}}
+\renewcommand\part{\@startsection{part}{9}{\z@}%
+ {-10\p@ \@plus -4\p@ \@minus -2\p@}%
+ {4\p@}%
+ {\@parfont}}
+\def\section at raggedright{\@rightskip\@flushglue
+ \rightskip\@rightskip
+ \leftskip\z at skip
+ \parindent\z@}
\def\@secfont{\sffamily\bfseries\section at raggedright\MakeUppercase}
\def\@subsecfont{\sffamily\bfseries\section at raggedright}
\def\@subsubsecfont{\sffamily\itshape}
@@ -1956,30 +2041,6 @@
\fi
\def\@adddotafter#1{#1\@addpunct{.}}
\def\@addspaceafter#1{#1\@addpunct{\enspace}}
-\renewcommand\section{\@startsection{section}{1}{\z@}%
- {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {.25\baselineskip}%
- {\@secfont}}
-\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
- {-.75\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {.25\baselineskip}%
- {\@subsecfont}}
-\renewcommand\subsubsection{\@startsection{subsubsection}{3}{10pt}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\@subsubsecfont\@adddotafter}}
-\renewcommand\paragraph{\@startsection{paragraph}{4}{\parindent}%
- {-.5\baselineskip \@plus -2\p@ \@minus -.2\p@}%
- {-3.5\p@}%
- {\@parfont\@adddotafter}}
-\renewcommand\part{\@startsection{part}{9}{\z@}%
- {-10\p@ \@plus -4\p@ \@minus -2\p@}%
- {4\p@}%
- {\@parfont}}
-\def\section at raggedright{\@rightskip\@flushglue
- \rightskip\@rightskip
- \leftskip\z at skip
- \parindent\z@}
\def\@acmplainbodyfont{\itshape}
\def\@acmplainindent{\parindent}
\def\@acmplainheadfont{\scshape}
@@ -2074,6 +2135,11 @@
}{%
\popQED\endtrivlist\@endpefalse
}
+\specialcomment{acks}
+ {\begingroup\section*{Acknowledgments}}{\endgroup}
+\def\grantsponsor#1#2#3{#2}
+\newcommand\grantnum[3][]{#3%
+ \def\@tempa{#1}\ifx\@tempa\@empty\else\space(\url{#1})\fi}
\if at ACM@screen
\includecomment{screenonly}
\excludecomment{printonly}
@@ -2083,6 +2149,7 @@
\fi
\if at ACM@anonymous
\excludecomment{anonsuppress}
+ \excludecomment{acks}
\else
\includecomment{anonsuppress}
\fi
More information about the tex-live-commits
mailing list