summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst (renamed from Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst)89
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst3352
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst3311
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst3339
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst3311
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst3142
-rw-r--r--Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst1384
-rw-r--r--Master/texmf-dist/doc/latex/acmart/Makefile2
-rw-r--r--Master/texmf-dist/doc/latex/acmart/README20
-rw-r--r--Master/texmf-dist/doc/latex/acmart/acmart.pdfbin661277 -> 665566 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdfbin634017 -> 619659 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex44
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdfbin628211 -> 626489 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex42
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdfbin587937 -> 585722 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex49
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdfbin650179 -> 653145 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex56
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdfbin1284438 -> 1284666 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex60
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdfbin1054259 -> 1060721 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex61
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdfbin592955 -> 599494 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex62
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdfbin1028388 -> 1031921 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex65
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdfbin956625 -> 960121 bytes
-rw-r--r--Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex62
-rw-r--r--Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex32
-rw-r--r--Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex17
-rw-r--r--Master/texmf-dist/source/latex/acmart/acmart.dtx982
-rw-r--r--Master/texmf-dist/tex/latex/acmart/acmart.cls437
32 files changed, 1406 insertions, 18513 deletions
diff --git a/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst b/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst
index 694bee7078e..670b2b55481 100644
--- a/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format-Journals.bst
+++ b/Master/texmf-dist/bibtex/bst/acmart/ACM-Reference-Format.bst
@@ -2,19 +2,9 @@
%%% ====================================================================
%%% @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"
+%%% version = "1.18",
+%%% date = "10 July 2016",
+%%% filename = "ACM-Reference-Format.bst",
%%% email = "beebe@math.utah.edu, beebe@acm.org,
%%% beebe@computer.org, borisv@lk.net, murray@hq.acm.org",
%%% codetable = "ISO/ASCII",
@@ -22,12 +12,10 @@
%%% 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
+% 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)
@@ -36,6 +24,7 @@
% 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)
@@ -547,7 +536,7 @@ FUNCTION { format.articleno }
{ "articleno field, but no numpages field, in " cite$ * warning$ }
{ }
if$
- "Article " articleno *
+ "Article \bibinfo{articleno}{" articleno * "}" *
}
if$
}
@@ -556,10 +545,12 @@ 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 }
@@ -568,13 +559,13 @@ FUNCTION { format.day.month }
{
month empty.or.unknown
{ "" }
- { month " " *}
+ { "\bibinfo{date}{" month * "} " *}
if$
}
{
month empty.or.unknown
{ "" }
- { day " " * month * " " *}
+ { "\bibinfo{date}{" day * " " * month * "} " *}
if$
}
if$
@@ -1112,8 +1103,8 @@ FUNCTION { format.names }
{ 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 := }
+ {"\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 >
{
@@ -1186,7 +1177,7 @@ FUNCTION { format.names.fml }
{ namesleft #0 > }
{
- "{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
+ "\bibinfo{person}{" s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ * "}" * 't :=
nameptr #1 >
{
@@ -1216,7 +1207,9 @@ FUNCTION { format.authors }
{
author empty.or.unknown
{ "" }
- { author format.names add.period$} % jtb: add period if none before
+ {
+ "\bibfield{author}{"
+ author format.names add.period$ * "}" *} % jtb: add period if none before
if$
}
@@ -1259,7 +1252,9 @@ FUNCTION { format.editors }
editor empty.or.unknown
{ "" }
{
+ "\bibfield{editor}{"
editor format.names
+ * "}" *
editor num.names$ #1 >
{ " (Eds.)." * }
{ " (Ed.)." * }
@@ -1284,7 +1279,7 @@ FUNCTION { format.title }
title empty.or.unknown
{ "" }
% Use this to preserve lettercase in titles:
- { title }
+ { "\bibinfo{title}{" title * "}" * }
% Use this for downcase title style:
% { title "t" change.case$ }
if$
@@ -1323,6 +1318,7 @@ FUNCTION { n.dashify }
FUNCTION { format.btitle }
{
+ "\bibinfo{booktitle}{"
edition empty.or.unknown
{ title emphasize }
{ title empty.or.unknown
@@ -1331,10 +1327,12 @@ FUNCTION { format.btitle }
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
@@ -1343,6 +1341,7 @@ FUNCTION { format.emphasize.booktitle }
if$
}
if$
+ * "}" *
}
FUNCTION { format.city }
@@ -1397,11 +1396,13 @@ FUNCTION { format.bvolume }
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$
}
@@ -1411,12 +1412,14 @@ 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$
}
@@ -1425,7 +1428,7 @@ FUNCTION { format.series }
{
series empty.or.unknown
{""}
- {" {\em (" * series ")}" *}
+ {" \bibinfo{series}{{\em (" * series ")}}" *}
if$
}
@@ -1440,7 +1443,7 @@ FUNCTION { format.number.series }
{
series empty.or.unknown
{ "" }
- { " (" series * ")" * }
+ { " \bibinfo{series}{(" series * ")}" * }
if$
}
if$
@@ -1452,7 +1455,7 @@ FUNCTION { format.number.series }
if$
number tie.or.space.connect series empty.or.unknown
{ "there's a number but no series in " cite$ * warning$ }
- { " in " * series * }
+ { " in \bibinfo{series}{" * series * "}" * }
if$
}
if$
@@ -1488,11 +1491,12 @@ FUNCTION { format.pages }
{
pages empty.or.unknown
{ "" }
- {
+ { "\bibinfo{pages}{"
pages multi.page.check
{ pages n.dashify } % gnp - removed () % jtb: removed pp.
{ pages }
if$
+ * "}" *
}
if$
}
@@ -1621,6 +1625,7 @@ FUNCTION { format.journal.volume.number.day.month.year }
"" }
% { journal emphasize.with.italic.correction }
{
+ "\bibinfo{journal}{"
journal "Journal of the ACM" =
{ "{\it J. ACM}" }
{
@@ -2036,6 +2041,7 @@ FUNCTION { format.journal.volume.number.day.month.year }
if$
}
if$
+ * "}" *
}
if$
@@ -2043,16 +2049,16 @@ FUNCTION { format.journal.volume.number.day.month.year }
{
volume empty.or.unknown
{ "no number and no volume in " cite$ * warning$ "" * }
- { " " * " {" * volume * "}" * }
+ { " " * " \bibinfo{volume}{" * volume * "}" * }
if$
}
{
volume empty.or.unknown
{
"unusual to have number, but no volume, for " cite$ * warning$
- " " * number *
+ " \bibinfo{volume}{" * number * "}" *
}
- { " " * volume comma " " * number * * }
+ { " \bibinfo{volume}{" * volume comma " " * number * * "}" *}
if$
}
if$
@@ -2089,7 +2095,7 @@ FUNCTION { format.in.booktitle }
{ % jtb: format for proceedings appearing in a journal
booktitle empty.or.unknown
{ "" }
- { "In " booktitle * }
+ { "In \bibinfo{booktitle}{" booktitle * "}" * }
if$
}
@@ -2362,19 +2368,6 @@ FUNCTION { calc.label }
'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 }
{
@@ -3328,6 +3321,10 @@ FUNCTION { begin.bib }
"\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}
@@ -3345,5 +3342,5 @@ FUNCTION { end.bib }
EXECUTE {end.bib}
-%%% End of ACM-Reference-Format-Journals.bst V1.00 - 18 January 2012
+
diff --git a/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst b/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst
deleted file mode 100644
index 6fc5574d2cd..00000000000
--- a/Master/texmf-dist/bibtex/bst/acmart/SIGCHI-Reference-Format.bst
+++ /dev/null
@@ -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@math.utah.edu, beebe@acm.org,
-%%% beebe@computer.org, borisv@lk.net, murray@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@SCORE.STANFORD.EDU), and the 'named' BibTeX
-% style of Peter F. Patel-Schneider.
-%
-% Copyright (C) 1985, all rights reserved.
-% Copying of this file is authorized only if either
-% (1) you make absolutely no changes to your copy, including name, or
-% (2) if you do make changes, you name it something other than 'newapa.bst'.
-% There are undoubtably bugs in this style. If you make bug fixes,
-% improvements, etc. please let me know. My e-mail address is:
-% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
-%
-% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
-% with lots of tweaking to make it look like APA style, along with tips
-% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
-%
-%
-% 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
-
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst
deleted file mode 100644
index a6e37db0b0e..00000000000
--- a/Master/texmf-dist/bibtex/bst/acmart/acm-abbrv.bst
+++ /dev/null
@@ -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@math.utah.edu, beebe@acm.org,
-%%% beebe@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@SCORE.STANFORD.EDU), and the 'named' BibTeX
-% style of Peter F. Patel-Schneider.
-%
-% Copyright (C) 1985, all rights reserved.
-% Copying of this file is authorized only if either
-% (1) you make absolutely no changes to your copy, including name, or
-% (2) if you do make changes, you name it something other than 'newapa.bst'.
-% There are undoubtably bugs in this style. If you make bug fixes,
-% improvements, etc. please let me know. My e-mail address is:
-% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
-%
-% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
-% with lots of tweaking to make it look like APA style, along with tips
-% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
-
-ENTRY
- { address
- 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}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst
deleted file mode 100644
index 5750ca02831..00000000000
--- a/Master/texmf-dist/bibtex/bst/acmart/acm-alpha.bst
+++ /dev/null
@@ -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@math.utah.edu, beebe@acm.org,
-%%% beebe@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@SCORE.STANFORD.EDU), and the 'named' BibTeX
-% style of Peter F. Patel-Schneider.
-%
-% Copyright (C) 1985, all rights reserved.
-% Copying of this file is authorized only if either
-% (1) you make absolutely no changes to your copy, including name, or
-% (2) if you do make changes, you name it something other than 'newapa.bst'.
-% There are undoubtably bugs in this style. If you make bug fixes,
-% improvements, etc. please let me know. My e-mail address is:
-% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
-%
-% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
-% with lots of tweaking to make it look like APA style, along with tips
-% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
-
-ENTRY
- { address
- 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}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst
deleted file mode 100644
index 43121f83a3c..00000000000
--- a/Master/texmf-dist/bibtex/bst/acmart/acm-plain.bst
+++ /dev/null
@@ -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@math.utah.edu, beebe@acm.org,
-%%% beebe@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@SCORE.STANFORD.EDU), and the 'named' BibTeX
-% style of Peter F. Patel-Schneider.
-%
-% Copyright (C) 1985, all rights reserved.
-% Copying of this file is authorized only if either
-% (1) you make absolutely no changes to your copy, including name, or
-% (2) if you do make changes, you name it something other than 'newapa.bst'.
-% There are undoubtably bugs in this style. If you make bug fixes,
-% improvements, etc. please let me know. My e-mail address is:
-% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
-%
-% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
-% with lots of tweaking to make it look like APA style, along with tips
-% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
-
-ENTRY
- { address
- 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}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst b/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst
deleted file mode 100644
index 0994f2c2412..00000000000
--- a/Master/texmf-dist/bibtex/bst/acmart/acm-unsrt.bst
+++ /dev/null
@@ -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@math.utah.edu, beebe@acm.org,
-%%% beebe@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@SCORE.STANFORD.EDU), and the 'named' BibTeX
-% style of Peter F. Patel-Schneider.
-%
-% Copyright (C) 1985, all rights reserved.
-% Copying of this file is authorized only if either
-% (1) you make absolutely no changes to your copy, including name, or
-% (2) if you do make changes, you name it something other than 'newapa.bst'.
-% There are undoubtably bugs in this style. If you make bug fixes,
-% improvements, etc. please let me know. My e-mail address is:
-% spencer@cgrg.ohio.state.edu or 71160.3141@compuserve.com
-%
-% This style was made from 'plain.bst', 'named.bst', and 'apalike.bst',
-% with lots of tweaking to make it look like APA style, along with tips
-% from Young Ryu and Brian Reiser's modifications of 'apalike.bst'.
-
-ENTRY
- { address
- 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}
diff --git a/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst b/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst
deleted file mode 100644
index be38c028f28..00000000000
--- a/Master/texmf-dist/bibtex/bst/acmart/acmsiggraph.bst
+++ /dev/null
@@ -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@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}
-
diff --git a/Master/texmf-dist/doc/latex/acmart/Makefile b/Master/texmf-dist/doc/latex/acmart/Makefile
index a73c07e30e6..b90e372243b 100644
--- a/Master/texmf-dist/doc/latex/acmart/Makefile
+++ b/Master/texmf-dist/doc/latex/acmart/Makefile
@@ -77,4 +77,4 @@ archive: all clean
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/*'
diff --git a/Master/texmf-dist/doc/latex/acmart/README b/Master/texmf-dist/doc/latex/acmart/README
index a65719bb698..a912373c93a 100644
--- a/Master/texmf-dist/doc/latex/acmart/README
+++ b/Master/texmf-dist/doc/latex/acmart/README
@@ -16,3 +16,23 @@ version 1.12 Bug fixes and documentation updates.
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.
+
+
diff --git a/Master/texmf-dist/doc/latex/acmart/acmart.pdf b/Master/texmf-dist/doc/latex/acmart/acmart.pdf
index 0b1d4977be8..ac7ffe99f62 100644
--- a/Master/texmf-dist/doc/latex/acmart/acmart.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/acmart.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf
index 48782993fed..2251f7f8080 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex
index 103f92ac200..075314776c8 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmlarge.tex
@@ -48,21 +48,44 @@
\title{A Multifrequency MAC Specially Designed for Wireless Sensor
Network Applications}
\author{Gang Zhou}
-\email{zhou@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@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
@@ -145,6 +168,9 @@ multi-channel, radio interference, time synchronization}
\maketitle
+% The default list of authors is too long for headers}
+\renewcommand{\shortauthors}{G. Zhou et. al.}
+
\input{samplebody-journals}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf
index 7f9a52774a1..2eab3c0f65f 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex
index 4ecfded2f15..630fd9c4779 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmsmall.tex
@@ -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 @@ this article, we propose MMSN, which takes advantage of
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}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf
index c503998d199..696211eded7 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex
index 6381b904f0e..ebe66c1f5a1 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-acmtog.tex
@@ -44,20 +44,53 @@
\title{A Multifrequency MAC Specially Designed for Wireless Sensor
Network Applications}
\author{Gang Zhou}
-\email{zhou@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@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
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf
index b2aacebaa25..adc6d8eb2a8 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex
index d60b1e8fcd1..7a7ca096cc1 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-manuscript.tex
@@ -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@uva.edu}
\author{Yafeng Wu}
\email{ywu@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
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf
index b7d9b4d04b6..b5a4d52f9eb 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex
index 2eb984029c1..c1d3fbd7982 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi-a.tex
@@ -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@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@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@another.com}
\email{author4@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@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@author.fr}
\author{Seventh Author}
-\affiliation{University of Umbhali\\
- Pretoria, South Africa}
+\affiliation{\institution{University of Umbhali}
+ \city{Pretoria} \country{South Africa}}
\email{author7@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,15 +379,16 @@ widely available at no cost. Note that most reviewers will use a North
American/European version of Acrobat reader, so please check your PDF
accordingly.
-\section{Acknowledgements}
-
-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.
+\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}
\section{References Format}
@@ -421,6 +435,6 @@ black.
\bibliography{sigchi-a}
-\bibliographystyle{SIGCHI-Reference-Format}
+\bibliographystyle{ACM-Reference-Format}
\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf
index 8855872c461..8451289eeae 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex
index ee44e606e10..54dab36b39b 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigchi.tex
@@ -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@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@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@affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner@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@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@prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith@affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat@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 @@ ACM SIG Proceedings.
\input{samplebody-conf}
-\bibliographystyle{SIGCHI-Reference-Format}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf
index f28fe9c847f..c4f16a5e396 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex
index 30e1b52e04e..4dea9c21a50 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigconf.tex
@@ -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@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@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@affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner@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@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@prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith@affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat@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 @@ ACM SIG Proceedings\footnote{This is an abstract footnote}.
\input{samplebody-conf}
-\bibliographystyle{acm-abbrv}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf
index 2bac2bcd7f1..c20049bdd02 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex
index 6a821fcafaa..0cdc2d9ef97 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-siggraph.tex
@@ -1,7 +1,7 @@
\documentclass[siggraph, review=false]{acmart}
\usepackage{booktabs} % For formal tables
-
+\citestyle{acmauthoryear} % Author-year format
% Copyright
%\setcopyright{none}
@@ -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@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@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@affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner@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@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@prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith@affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat@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 @@ ACM SIG Proceedings.
\input{samplebody-conf}
-\bibliographystyle{acmsiggraph}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf
index 407a7a936cb..749528509f4 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex
index c1785ba6197..1c4bef59045 100644
--- a/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex
+++ b/Master/texmf-dist/doc/latex/acmart/sample-sigplan.tex
@@ -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@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@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@affiliation.org}
\author{Lawrence P. Leipuner}
-\affiliation{Brookhaven Laboratories\\
- P.O. Box 5000}
+\affiliation{
+ \institution{Brookhaven Laboratories}
+ \streetaddress{P.O. Box 5000}}
\email{lleipuner@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@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@prl.com}
\author{John Smith}
-\affiliation{The Th{\o}rv{\"a}ld Group}
+\affiliation{\institution{The Th{\o}rv{\"a}ld Group}}
\email{jsmith@affiliation.org}
\author{Julius P.~Kumquat}
-\affiliation{The Kumquat Consortium}
+\affiliation{\institution{The Kumquat Consortium}}
\email{jpkumquat@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 @@ ACM SIG Proceedings.
\input{samplebody-conf}
-\bibliographystyle{ACM-Reference-Format-Journals}
+\bibliographystyle{ACM-Reference-Format}
\bibliography{sigproc}
\end{document}
diff --git a/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex b/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex
index 29cbdf8b7ff..d8bcd284b0b 100644
--- a/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex
+++ b/Master/texmf-dist/doc/latex/acmart/samplebody-conf.tex
@@ -262,7 +262,7 @@ Here is a definition:
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 @@ do with the present subject and are used as
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 @@ document in Appendix-appropriate form:
\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 @@ the command \texttt{{\char'134}thebibliography}.
\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}
diff --git a/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex b/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex
index 803d7cf5b46..a7339c32ecb 100644
--- a/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex
+++ b/Master/texmf-dist/doc/latex/acmart/samplebody-journals.tex
@@ -260,7 +260,7 @@ also give its 90\% confidence interval.
\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 @@ denoted as $N_{1}$. In contrast, we also measure the same value of the
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 @@ MAC layer.
\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}
diff --git a/Master/texmf-dist/source/latex/acmart/acmart.dtx b/Master/texmf-dist/source/latex/acmart/acmart.dtx
index 3500b5c3269..46a8f4e8f5c 100644
--- a/Master/texmf-dist/source/latex/acmart/acmart.dtx
+++ b/Master/texmf-dist/source/latex/acmart/acmart.dtx
@@ -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{A. U. Thor}
-% \email{author@nsw.au.edu}
-% \affiliation{University of New South Wales}
-% \author{A. N. Other}
-% \author{C. O. Respondent}
-% \affiliation{University of Pennsylvania}
+% \author{...}
+% \orcid{...}
+% \affiliation{...}
+% \email{...}
% \end{verbatim}
-% In the cases of overlapping affiliations it is advisable to repeat
-% the full list, for example,
+% 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}
-% \affiliation{University of New South Wales, Australia}
-% \email{author@nsw.edu.au}
+% \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@nsw.au.edu}
% \author{A. N. Other}
-% \affiliation{University of Pennsylvania, USA and University of New South
-% Wales, Australia}
-% \email{other@upenn.edu}
+% \affiliation{%
+% \institution{University of New South Wales}
+% \city{Sidney}
+% \state{NSW}
+% \country{Australia}}
+% \author{C. O. Respondent}
+% \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}
-% 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,10 +1004,11 @@
% \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
-%
-% \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}
+% 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.
+%
%
-% 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 @@ Computing Machinery]
% \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 @@ Computing Machinery]
% overrode format's selection):
% \begin{macrocode}
\if@ACM@natbib@override\else
- \ifcase\ACM@format@nr
- \relax % manuscript
- \@ACM@natbibtrue
- \or % acmsmall
- \@ACM@natbibtrue
- \or % acmlarge
\@ACM@natbibtrue
- \or % acmtog
- \@ACM@natbibtrue
- \or % sigconf
- \@ACM@natbibfalse
- \or % siggraph
- \@ACM@natbibfalse
- \or % sigplan
- \@ACM@natbibtrue
- \or % sigchi
- \@ACM@natbibfalse
- \or % sigchi-a
- \@ACM@natbibfalse
- \fi
\fi
% \end{macrocode}
%
@@ -1327,6 +1455,8 @@ Computing Machinery]
%\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@fontsize}, or use defaults
% \begin{macrocode}
@@ -1337,7 +1467,7 @@ Computing Machinery]
\or % acmsmall
\def\ACM@fontsize{10pt}%
\or % acmlarge
- \def\ACM@fontsize{9pt}%
+ \def\ACM@fontsize{10pt}%
\or % acmtog
\def\ACM@fontsize{9pt}%
\or % sigconf
@@ -1377,8 +1507,10 @@ Computing Machinery]
\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@ACM@natbib
\RequirePackage{natbib}
@@ -1448,13 +1580,53 @@ Computing Machinery]
}%
\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@error{Undefined `#1' citestyle}%
+ \fi
+ }%
\fi
% \end{macrocode}
%
+% \begin{macro}{\bibstyle@acmauthoryear}
+% \changes{v1.13}{2016/06/06}{Added macro}
+% \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@acmauthoryear}
+% before use}
+% The default author-year format:
+% \begin{macrocode}
+\newcommand{\bibstyle@acmauthoryear}{%
+ \setcitestyle{%
+ authoryear,%
+ open={(},close={)},citesep={;},%
+ aysep={},yysep={,},%
+ notesep={, }}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+% \begin{macro}{\bibstyle@acmnumeric}
+% \changes{v1.13}{2016/06/06}{Added macro}
+% \changes{v1.14}{2016/06/09}{Moved def of \cs{bibstyle@numeric}
+% before use}
+% The default numeric format:
+% \begin{macrocode}
+\newcommand{\bibstyle@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 @@ Computing Machinery]
\fi
% \end{macrocode}
%
-% Bibliography mangling. Siggraph does not want the label.
+% Bibliography mangling.
% \begin{macrocode}
\if@ACM@natbib
\let\citeN\cite
@@ -1591,45 +1763,31 @@ Computing Machinery]
\def\shortcite#1{\citeyear{#1}}
\DeclareRobustCommand\citeA
{\begingroup\NAT@swafalse
- \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}
- \providecommand\newblock{}
+ \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
+ \providecommand\newblock{}%
\else
\providecommand\citename[1]{#1}
\fi
-\ifcase\ACM@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@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@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@filesw
+ \immediate\write\@auxout{\string\bibstyle{#1}}%
+ \fi}}
+% \end{macrocode}
+%
+% \end{macro}
+%
+%
% Graphics and color
% \begin{macrocode}
\RequirePackage{graphicx, xcolor}
@@ -1651,6 +1809,7 @@ Computing Machinery]
%\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 @@ Computing Machinery]
\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 @@ Computing Machinery]
\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 @@ Computing Machinery]
\color@endgroup
\egroup
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
-
% \end{macrocode}
%
% \end{macro}
@@ -1817,6 +1975,36 @@ Computing Machinery]
%
% \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@font\footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected@edef\@currentlabel
+ {\csname p@mpfootnote\endcsname\@thefnmark}%
+ \color@begingroup\centering
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@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 @@ Computing Machinery]
%
% \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 @@ Computing Machinery]
%
% The defaults:
% \begin{macrocode}
+\def\@journalCode@nr{0}
\def\@journalName{}%
\def\@journalNameShort{\@journalName}%
\def\@permissionCodeOne{XXXX-XX}%
@@ -2326,20 +2533,33 @@ Computing Machinery]
% \end{macro}
%
%
-% \begin{macro}{\num@authors}
-% The total number of authors
+% \begin{macro}{\num@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@authors
-\num@authors=0\relax
+\newcount\num@authorgroups
+\num@authorgroups=0\relax
% \end{macrocode}
%
% \end{macro}
%
+% \begin{macro}{\if@insideauthorgroup}
+% \changes{v1.15}{2016/06/25}{Introduced macro}
+% Whether we are continuing an author group
+\newif\if@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@authors by 1\relax
+ \if@insideauthorgroup\else
+ \global\advance\num@authorgroups by 1\relax
+ \global\@insideauthorgrouptrue
+ \fi
\ifx\addresses\@empty
\if@ACM@anonymous
\gdef\addresses{\@author{Anonymous Author(s)}}%
@@ -2380,11 +2600,13 @@ Computing Machinery]
%
%
% \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@ACM@anonymous\else
\g@addto@macro\addresses{\affiliation{#1}{#2}}%
\fi}
@@ -2405,6 +2627,12 @@ Computing Machinery]
%
% \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 @@ Computing Machinery]
% \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 @@ Computing Machinery]
% \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 @@ Computing Machinery]
% \end{macrocode}
%
% \end{macro}
-% \begin{macro}{\if@ACM@printbib}
+% \begin{macro}{\if@ACM@printacmref}
+% \changes{v1.17}{2016/07/10}{Renamed from \cs{if@ACM@printbib}}
% Whether to print ACM bib
% \begin{macrocode}
-\define@boolkey+{@ACM@topmatter@}[@ACM@]{printbib}[true]{%
- \if@ACM@printcss
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
+ \if@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@ACM@printfolios}
+% \changes{v1.13}{2016/06/06}{Added macro}
+% Whether to print folios
+% \begin{macrocode}
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
+ \if@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 @@ Computing Machinery]
% \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@ACM@manuscript
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=true}
\else
\if@ACM@journal
- \settopmatter{printbib=true}
+ \settopmatter{printfolios=true}
\else
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=false}
\fi
\fi
% \end{macrocode}
@@ -3134,7 +3382,7 @@ Computing Machinery]
% \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 @@ Computing Machinery]
\def\maketitle{%
\if@ACM@anonymous
% Anonymize omission of \author-s
- \ifnum\num@authors=0\author{}\fi
+ \ifnum\num@authorgroups=0\author{}\fi
\fi
\begingroup
\let\@footnotemark\@footnotemark@nolink
@@ -3238,7 +3486,7 @@ Computing Machinery]
\andify\shortauthors
\global\let\authors=\authors
\global\let\shortauthors=\shortauthors
- \if@ACM@printbib
+ \if@ACM@printacmref
\@mkbibcitation
\fi
\hypersetup{pdfauthor={\authors},
@@ -3521,8 +3769,83 @@ Computing Machinery]
%
% \end{macro}
%
+% \begin{macro}{\@ACM@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@commabox
+\def\@ACM@addtoaddress#1{%
+ \ifvmode\else
+ \setbox\@ACM@commabox=\hbox{, }%
+ \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@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@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@addtoaddress
+ \let\state\@ACM@addtoaddress
+ \def\postcode#1{\unskip\space#1}%
+ \let\country\@ACM@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 @@ Computing Machinery]
\or % acmlarge
\@mkauthors@i
\or % acmtog
- \@mkauthors@ii
+ \@mkauthors@i
\or % sigconf
\@mkauthors@iii
\or % siggraph
@@ -3569,11 +3892,14 @@ Computing Machinery]
% \end{macrocode}
% \end{macro}
%
+% \changes{v1.13}{2016/06/06}{Font adjustments for acmsmall}
% Adjusting fonts for different formats
% \begin{macrocode}
\ifcase\ACM@format@nr
\relax % manuscript
\or % acmsmall
+ \def\@authorfont{\large\sffamily}
+ \def\@affiliationfont{\small\normalfont}
\or % acmlarge
\or % acmtog
\def\@authorfont{\LARGE\sffamily}
@@ -3596,62 +3922,61 @@ Computing Machinery]
\fi
% \end{macrocode}
%
+% \begin{macro}{\@typeset@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@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@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@i{%
\def\@currentauthors{}%
- \def\and{%
- \andify\@currentauthors\par\noindent
- \@currentauthors\def\@currentauthors{}}%
+ \def\@currentaffiliations{}%
+ \global\let\and\@typeset@author@line
\def\@author##1{%
\ifx\@currentauthors\@empty
\gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
\else
\g@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@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@author@line}
\global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+ \noindent\addresses\@typeset@author@line
+ \par\medskip}%
}
% \end{macrocode}
%
% \end{macro}
%
% \begin{macro}{\@mkauthors@ii}
-% This is version used in acmtog. A more vertical design
-% \begin{macrocode}
-\def\@mkauthors@ii{\par\medskip
- \def\@currentauthors{}%
- \def\and{}%
- \def\@author##1{%
- \ifx\@currentauthors\@empty
- \gdef\@currentauthors{\@authorfont
- \MakeUppercase{##1}}%
- \else
- \g@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@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
-}
-% \end{macrocode}
+% \changes{v1.17}{2017/07/09}{Deleted}
+% \cs{@mkauthors@iI} was version used in acmtog. No longer necessary
%
% \end{macro}
%
@@ -3680,9 +4005,25 @@ Computing Machinery]
%
% \end{macro}
%
+% \begin{macro}{\@typeset@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@author@bx{\bgroup\hsize=\author@bx@wd\def\and{\par}%
+ \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hspace{\author@bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}
+% \end{macrocode}
+%
+% \end{macro}
%
%
% \begin{macro}{\@mkauthors@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 @@ Computing Machinery]
% \begin{macrocode}
\author@bx@wd=\textwidth\relax
\advance\author@bx@wd by -\author@bx@sep\relax
- \ifcase\num@authors
+ \ifcase\num@authorgroups
\relax % 0?
\or % 1=one author per row
\or % 2=two authors per row
- \divide\author@bx@wd by \num@authors\relax
+ \divide\author@bx@wd by \num@authorgroups\relax
\or % 3=three authors per row
- \divide\author@bx@wd by \num@authors\relax
+ \divide\author@bx@wd by \num@authorgroups\relax
\or % 4=two authors per row (!)
\divide\author@bx@wd by 2\relax
\else % three authors per row
@@ -3717,8 +4058,9 @@ Computing Machinery]
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g@addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g@addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -3728,25 +4070,17 @@ Computing Machinery]
\gdef\@currentaffiliation{##2}%
\else
\g@addto@macro\@currentaffiliation{\par##2}%
- \fi}%
-% \end{macrocode}
-% Actual typesetting is done by \cs{and} macro
-% \begin{macrocode}
- \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
- \global\setbox\author@bx=\vtop{\centering
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author@bx\hspace{\author@bx@sep}%
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}%
+ \fi
+ \global\let\and\@typeset@author@bx
+}%
% \end{macrocode}
-% And here we use it:
+% Actual typesetting is done by \cs{and} macro:
% \begin{macrocode}
\hsize=\textwidth
\global\setbox\mktitle@bx=\vbox{\noindent
\box\mktitle@bx\par\medskip\leavevmode
\lineskip=1pc\relax\centering\hspace*{-1em}%
- \addresses\and\par\bigskip}}
+ \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
% \end{macrocode}
%
% \end{macro}
@@ -3766,7 +4100,7 @@ Computing Machinery]
% \begin{macrocode}
\author@bx@wd=\columnwidth\relax
\advance\author@bx@wd by -\author@bx@sep\relax
- \ifcase\num@authors
+ \ifcase\num@authorgroups
\relax % 0?
\or % 1=one author per row
\else % 2=two authors per row
@@ -3781,8 +4115,9 @@ Computing Machinery]
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g@addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g@addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -3792,23 +4127,16 @@ Computing Machinery]
\gdef\@currentaffiliation{##2}%
\else
\g@addto@macro\@currentaffiliation{\par##2}%
- \fi}%
+ \fi
+ \global\let\and\@typeset@author@bx}%
+%
% \end{macrocode}
% Actual typesetting is done by \cs{and} macro
% \begin{macrocode}
- \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
- \global\setbox\author@bx=\vtop{\raggedright
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author@bx\hskip\author@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@author@bx\and\par\bigskip\egroup}
% \end{macrocode}
%
% \end{macro}
@@ -3860,13 +4188,25 @@ Computing Machinery]
% \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@ACM@journal
+ \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber, Article~\@acmArticle\ (\@acmPubDate),
+ \ref{TotPages}~pages.
+ \else
+ In \textit{Proceedings of \acmConference@name, \acmConference@venue,
+ \acmConference@date
+ \ifx\acmConference@name\acmConference@shortname\else
+ \ (\acmConference@shortname)\fi
+ ,} \ref{TotPages}~pages.
+ \fi\par
\noindent DOI: \nolinkurl{\@acmDOI}
\par\egroup}
% \end{macrocode}
@@ -3949,10 +4289,53 @@ Computing Machinery]
%
% \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@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@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,37 +4344,45 @@ Computing Machinery]
\renewcommand{\footrulewidth}{\z@}%
\ifcase\ACM@format@nr
\relax % manuscript
- \fancyhead[LE]{\ACM@linecount\thepage}%
- \fancyhead[RO]{\thepage}%
- \fancyhead[RE]{\shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\if@ACM@printfolios\thepage\fi}%
+ \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
+ \fancyhead[RE]{\@shortauthors}%
\fancyhead[LO]{\ACM@linecount\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
- \fancyhead[LE]{\ACM@linecount\sffamily\@acmArticle:\thepage}%
- \fancyhead[RO]{\sffamily\@acmArticle:\thepage}%
- \fancyhead[RE]{\sffamily\shortauthors}%
- \fancyhead[LO]{\ACM@linecount\sffamily\shorttitle}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
+ \fancyhead[RO]{\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LO]{\ACM@linecount\@headfootfont\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmlarge
- \fancyhead[LE]{\ACM@linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont
+ \@acmArticle:\if@ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM@linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmtog
- \fancyhead[LE]{\ACM@linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont
+ \@acmArticle:\if@ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM@linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if@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@linecount}%
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
+ \fancyhead[LO]{\ACM@linecount\@headfootfont\shorttitle}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont\acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fancyhead[RO]{\@headfootfont\acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fi
+ \if@ACM@sigchiamode
+ \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
\fi
}
\pagestyle{standardpagestyle}
@@ -4075,7 +4466,7 @@ Computing Machinery]
\ifcase\ACM@format@nr
\relax % manuscript
\fancyhead[L]{\ACM@linecount}%
- \fancyfoot[RO,LE]{\small\thepage}%
+ \fancyfoot[RO,LE]{\if@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 @@ Computing Machinery]
\fancyhead[L]{\ACM@linecount}%
\else % Conference proceedings
\fancyhead[L]{\ACM@linecount}%
- \fancyfoot[R]{\footnotesize\thepage}%
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
\fi
}
% \end{macrocode}
@@ -4112,6 +4503,43 @@ Computing Machinery]
%\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@raggedright}
+% \changes{v1.12}{2016/05/30}{Introduced macro}%
+% Special version of \cs{raggedright} compatible with
+% \cs{MakeUppercase}
+% \begin{macrocode}
+\def\section@raggedright{\@rightskip\@flushglue
+ \rightskip\@rightskip
+ \leftskip\z@skip
+ \parindent\z@}
+% \end{macrocode}
+%
+% \end{macro}
+%
%
% \begin{macro}{\@secfont}
% \begin{macro}{\@subsecfont}
@@ -4191,44 +4619,6 @@ Computing Machinery]
% \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@raggedright}
-% \changes{v1.12}{2016/05/30}{Introduced macro}%
-% Special version of \cs{raggedright} compatible with
-% \cs{MakeUppercase}
-% \begin{macrocode}
-\def\section@raggedright{\@rightskip\@flushglue
- \rightskip\@rightskip
- \leftskip\z@skip
- \parindent\z@}
-% \end{macrocode}
-%
-% \end{macro}
-%
-%
%\subsection{Theorems}
%\label{sec:theorems}
%
@@ -4437,6 +4827,40 @@ Computing Machinery]
% \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 @@ Computing Machinery]
\fi
\if@ACM@anonymous
\excludecomment{anonsuppress}
+ \excludecomment{acks}
\else
\includecomment{anonsuppress}
\fi
% \end{macrocode}
%
-%
%\subsection{End of Class}
%\label{end}
%
diff --git a/Master/texmf-dist/tex/latex/acmart/acmart.cls b/Master/texmf-dist/tex/latex/acmart/acmart.cls
index 39129a62d05..7035523121d 100644
--- a/Master/texmf-dist/tex/latex/acmart/acmart.cls
+++ b/Master/texmf-dist/tex/latex/acmart/acmart.cls
@@ -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 @@ Computing Machinery]
\@ACM@sigchiamodetrue
\fi
\if@ACM@natbib@override\else
- \ifcase\ACM@format@nr
- \relax % manuscript
- \@ACM@natbibtrue
- \or % acmsmall
- \@ACM@natbibtrue
- \or % acmlarge
- \@ACM@natbibtrue
- \or % acmtog
\@ACM@natbibtrue
- \or % sigconf
- \@ACM@natbibfalse
- \or % siggraph
- \@ACM@natbibfalse
- \or % sigplan
- \@ACM@natbibtrue
- \or % sigchi
- \@ACM@natbibfalse
- \or % sigchi-a
- \@ACM@natbibfalse
- \fi
\fi
\ifx\ACM@fontsize\@empty
\ifcase\ACM@format@nr
@@ -168,7 +150,7 @@ Computing Machinery]
\or % acmsmall
\def\ACM@fontsize{10pt}%
\or % acmlarge
- \def\ACM@fontsize{9pt}%
+ \def\ACM@fontsize{10pt}%
\or % acmtog
\def\ACM@fontsize{9pt}%
\or % sigconf
@@ -260,11 +242,26 @@ Computing Machinery]
}%
\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@error{Undefined `#1' citestyle}%
+ \fi
+ }%
\fi
+\newcommand{\bibstyle@acmauthoryear}{%
+ \setcitestyle{%
+ authoryear,%
+ open={(},close={)},citesep={;},%
+ aysep={},yysep={,},%
+ notesep={, }}}
+\newcommand{\bibstyle@acmnumeric}{%
+ \setcitestyle{%
+ numbers,sort&compress,%
+ open={[},close={]},citesep={,},%
+ notesep={, }}}
+\citestyle{acmnumeric}
\def\@startsection#1#2#3#4#5#6{%
\if@noskipsec \leavevmode \fi
\par
@@ -387,43 +384,18 @@ Computing Machinery]
\def\shortcite#1{\citeyear{#1}}
\DeclareRobustCommand\citeA
{\begingroup\NAT@swafalse
- \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}
- \providecommand\newblock{}
+ \let\NAT@ctype\@ne\NAT@partrue\NAT@fullfalse\NAT@open\NAT@citetp}%
+ \providecommand\newblock{}%
\else
\providecommand\citename[1]{#1}
\fi
-\ifcase\ACM@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@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@warning{Empty `thebibliography' environment}}%
- \endlist
- }
-\or % sigplan
-\or % sigchi
-\or % sigchi-a
-\fi
+\def\bibliographystyle#1{%
+ \ifx\@begindocumenthook\@undefined\else
+ \expandafter\AtBeginDocument
+ \fi
+ {\if@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 @@ Computing Machinery]
\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 @@ Computing Machinery]
\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 @@ Computing Machinery]
\color@endgroup
\egroup
\expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}}
-
\def\@makefntext{\noindent\@makefnmark}
\if@ACM@sigchiamode
\long\def\@footnotetext#1{\marginpar{%
@@ -536,6 +507,19 @@ Computing Machinery]
\rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
\color@endgroup}}%
\fi
+\long\def\@mpfootnotetext#1{%
+ \global\setbox\@mpfootins\vbox{%
+ \unvbox\@mpfootins
+ \reset@font\footnotesize
+ \hsize\columnwidth
+ \@parboxrestore
+ \protected@edef\@currentlabel
+ {\csname p@mpfootnote\endcsname\@thefnmark}%
+ \color@begingroup\centering
+ \@makefntext{%
+ \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}%
+ \color@endgroup}}
+\def\@makefnmark{\hbox{\@textsuperscript{\normalfont\@thefnmark}}}
\newif\if@ACM@newfonts
\@ACM@newfontstrue
\IfFileExists{libertine.sty}{}{\ClassWarning{\@classname}{You do not
@@ -633,6 +617,13 @@ Computing Machinery]
\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@choicekey*+{ACM}{acmJournal}[\@journalCode\@journalCode@nr]{%
CIE,%
CSUR,%
@@ -869,6 +860,7 @@ Computing Machinery]
\ClassError{\@classname}{Incorrect journal #1}%
}%
\def\acmJournal#1{\setkeys{ACM}{acmJournal=#1}}
+\def\@journalCode@nr{0}
\def\@journalName{}%
\def\@journalNameShort{\@journalName}%
\def\@permissionCodeOne{XXXX-XX}%
@@ -885,10 +877,15 @@ Computing Machinery]
DC, USA}
\def\subtitle#1{\def\@subtitle{#1}}
\subtitle{}
-\newcount\num@authors
-\num@authors=0\relax
+\newcount\num@authorgroups
+\num@authorgroups=0\relax
+\newif\if@insideauthorgroup
+\@insideauthorgroupfalse
\renewcommand\author[2][]{%
- \global\advance\num@authors by 1\relax
+ \if@insideauthorgroup\else
+ \global\advance\num@authorgroups by 1\relax
+ \global\@insideauthorgrouptrue
+ \fi
\ifx\addresses\@empty
\if@ACM@anonymous
\gdef\addresses{\@author{Anonymous Author(s)}}%
@@ -924,6 +921,7 @@ Computing Machinery]
\fi
\fi}
\newcommand{\affiliation}[2][]{%
+ \global\@insideauthorgroupfalse
\if@ACM@anonymous\else
\g@addto@macro\addresses{\affiliation{#1}{#2}}%
\fi}
@@ -931,6 +929,7 @@ Computing Machinery]
\if@ACM@anonymous\else
\g@addto@macro\addresses{\email{#1}{#2}}%
\fi}
+\let\orcid\@gobble
\def\@titlenotes{}
\def\titlenote#1{%
\g@addto@macro\@title{\footnotemark}%
@@ -958,17 +957,17 @@ Computing Machinery]
\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 @@ Computing Machinery]
\else
\ClassInfo{\@classname}{Suppressing CSS}%
\fi}{\ClassError{\@classname}{printcss must be true or false}}
-\define@boolkey+{@ACM@topmatter@}[@ACM@]{printbib}[true]{%
- \if@ACM@printcss
+\define@boolkey+{@ACM@topmatter@}[@ACM@]{printacmref}[true]{%
+ \if@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@boolkey+{@ACM@topmatter@}[@ACM@]{printfolios}[true]{%
+ \if@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@topmatter@}{#1}}
-\settopmatter{printcss=true}
+\settopmatter{printcss=true, printacmref=true}
\if@ACM@manuscript
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=true}
\else
\if@ACM@journal
- \settopmatter{printbib=true}
+ \settopmatter{printfolios=true}
\else
- \settopmatter{printbib=false}
+ \settopmatter{printfolios=false}
\fi
\fi
\def\@received{}
@@ -1256,7 +1261,7 @@ Computing Machinery]
\def\maketitle{%
\if@ACM@anonymous
% Anonymize omission of \author-s
- \ifnum\num@authors=0\author{}\fi
+ \ifnum\num@authorgroups=0\author{}\fi
\fi
\begingroup
\let\@footnotemark\@footnotemark@nolink
@@ -1348,7 +1353,7 @@ Computing Machinery]
\andify\shortauthors
\global\let\authors=\authors
\global\let\shortauthors=\shortauthors
- \if@ACM@printbib
+ \if@ACM@printacmref
\@mkbibcitation
\fi
\hypersetup{pdfauthor={\authors},
@@ -1550,6 +1555,32 @@ Computing Machinery]
\par\noindent\@subtitlefont\@subtitle
\fi
\par\bigskip}}%
+\newbox\@ACM@commabox
+\def\@ACM@addtoaddress#1{%
+ \ifvmode\else
+ \setbox\@ACM@commabox=\hbox{, }%
+ \unskip\cleaders\copy\@ACM@commabox\hskip\wd\@ACM@commabox
+ \fi
+ #1}
+\if@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@addtoaddress
+ \let\state\@ACM@addtoaddress
+ \def\postcode#1{\unskip\space#1}%
+ \let\country\@ACM@addtoaddress
+\fi
\def\@mkauthors{\begingroup
\hsize=\textwidth
\ifcase\ACM@format@nr
@@ -1560,7 +1591,7 @@ Computing Machinery]
\or % acmlarge
\@mkauthors@i
\or % acmtog
- \@mkauthors@ii
+ \@mkauthors@i
\or % sigconf
\@mkauthors@iii
\or % siggraph
@@ -1579,6 +1610,8 @@ Computing Machinery]
\ifcase\ACM@format@nr
\relax % manuscript
\or % acmsmall
+ \def\@authorfont{\large\sffamily}
+ \def\@affiliationfont{\small\normalfont}
\or % acmlarge
\or % acmtog
\def\@authorfont{\LARGE\sffamily}
@@ -1599,64 +1632,60 @@ Computing Machinery]
\def\@authorfont{\bfseries}
\def\@affiliationfont{\mdseries}
\fi
+\def\@typeset@author@line{%
+ \andify\@currentauthors\par\noindent
+ \@currentauthors\def\@currentauthors{}%
+ \ifx\@currentaffiliations\@empty\else
+ \andify\@currentaffiliations
+ \unskip, {\@currentaffiliations}\par
+ \fi
+ \def\@currentaffiliations{}}
\def\@mkauthors@i{%
\def\@currentauthors{}%
- \def\and{%
- \andify\@currentauthors\par\noindent
- \@currentauthors\def\@currentauthors{}}%
+ \def\@currentaffiliations{}%
+ \global\let\and\@typeset@author@line
\def\@author##1{%
\ifx\@currentauthors\@empty
\gdef\@currentauthors{\@authorfont\MakeUppercase{##1}}%
\else
\g@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
- \fi
- \def\@currentauthors{}\def\@tempa{##2}\ifx\@tempa\@empty\else
- \unskip, {\@affiliationfont##2}\fi\def\and{\par\noindent}}%
- \global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
-}
-\def\@mkauthors@ii{\par\medskip
- \def\@currentauthors{}%
- \def\and{}%
- \def\@author##1{%
- \ifx\@currentauthors\@empty
- \gdef\@currentauthors{\@authorfont
- \MakeUppercase{##1}}%
- \else
- \g@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
+ \def\@tempa{##2}\ifx\@tempa\@empty\else
+ \ifx\@currentaffiliations\@empty
+ \gdef\@currentaffiliations{\@affiliationfont##2}%
+ \else
+ \g@addto@macro{\@currentaffiliations}{\and##2}%
+ \fi
\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\let\and\@typeset@author@line}
\global\setbox\mktitle@bx=\vbox{\noindent\box\mktitle@bx\par\medskip
- \noindent\addresses\andify\@currentauthors\par\noindent\@currentauthors\par\medskip}%
+ \noindent\addresses\@typeset@author@line
+ \par\medskip}%
}
\newbox\author@bx
\newdimen\author@bx@wd
\newskip\author@bx@sep
\author@bx@sep=1pc\relax
+\def\@typeset@author@bx{\bgroup\hsize=\author@bx@wd\def\and{\par}%
+ \global\setbox\author@bx=\vtop{\if@ACM@sigchiamode\else\centering\fi
+ \@authorfont\@currentauthors\par\@affiliationfont
+ \@currentaffiliation}\egroup
+ \box\author@bx\hspace{\author@bx@sep}%
+ \gdef\@currentauthors{}%
+ \gdef\@currentaffiliation{}}
\def\@mkauthors@iii{%
\author@bx@wd=\textwidth\relax
\advance\author@bx@wd by -\author@bx@sep\relax
- \ifcase\num@authors
+ \ifcase\num@authorgroups
\relax % 0?
\or % 1=one author per row
\or % 2=two authors per row
- \divide\author@bx@wd by \num@authors\relax
+ \divide\author@bx@wd by \num@authorgroups\relax
\or % 3=three authors per row
- \divide\author@bx@wd by \num@authors\relax
+ \divide\author@bx@wd by \num@authorgroups\relax
\or % 4=two authors per row (!)
\divide\author@bx@wd by 2\relax
\else % three authors per row
@@ -1668,8 +1697,9 @@ Computing Machinery]
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g@addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g@addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -1679,23 +1709,18 @@ Computing Machinery]
\gdef\@currentaffiliation{##2}%
\else
\g@addto@macro\@currentaffiliation{\par##2}%
- \fi}%
- \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
- \global\setbox\author@bx=\vtop{\centering
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author@bx\hspace{\author@bx@sep}%
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}%
+ \fi
+ \global\let\and\@typeset@author@bx
+}%
\hsize=\textwidth
\global\setbox\mktitle@bx=\vbox{\noindent
\box\mktitle@bx\par\medskip\leavevmode
\lineskip=1pc\relax\centering\hspace*{-1em}%
- \addresses\and\par\bigskip}}
+ \addresses\let\and\@typeset@author@bx\and\par\bigskip}}
\def\@mkauthors@iv{%
\author@bx@wd=\columnwidth\relax
\advance\author@bx@wd by -\author@bx@sep\relax
- \ifcase\num@authors
+ \ifcase\num@authorgroups
\relax % 0?
\or % 1=one author per row
\else % 2=two authors per row
@@ -1707,8 +1732,9 @@ Computing Machinery]
\def\@author##1{\ifx\@currentauthors\@empty
\gdef\@currentauthors{\par##1}%
\else
- \g@addto@macro\@currentauthors{\quad##1}%
- \fi}%
+ \g@addto@macro\@currentauthors{\par##1}%
+ \fi
+ \gdef\and{}}%
\def\email##1##2{\ifx\@currentaffiliation\@empty
\gdef\@currentaffiliation{\nolinkurl{##2}}%
\else
@@ -1718,17 +1744,12 @@ Computing Machinery]
\gdef\@currentaffiliation{##2}%
\else
\g@addto@macro\@currentaffiliation{\par##2}%
- \fi}%
- \def\and{\bgroup\hsize=\author@bx@wd\def\and{\quad}%
- \global\setbox\author@bx=\vtop{\raggedright
- \@authorfont\@currentauthors\par\@affiliationfont
- \@currentaffiliation}\egroup
- \box\author@bx\hskip\author@bx@sep
- \gdef\@currentauthors{}%
- \gdef\@currentaffiliation{}}%
+ \fi
+ \global\let\and\@typeset@author@bx}%
\bgroup\hsize=\columnwidth
\par\raggedright\leftskip=\z@
- \lineskip=1pc\noindent\addresses\and\par\bigskip\egroup}
+ \lineskip=1pc\noindent
+ \addresses\let\and\@typeset@author@bx\and\par\bigskip\egroup}
\def\@authornotemark{\g@addto@macro\@currentauthors{\footnotemark}}
\def\@mkteasers{%
\ifx\@teaserfigures\@empty\else
@@ -1748,10 +1769,20 @@ Computing Machinery]
\@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@ACM@journal
+ \textit{\@journalNameShort}
+ \@acmVolume, \@acmNumber, Article~\@acmArticle\ (\@acmPubDate),
+ \ref{TotPages}~pages.
+ \else
+ In \textit{Proceedings of \acmConference@name, \acmConference@venue,
+ \acmConference@date
+ \ifx\acmConference@name\acmConference@shortname\else
+ \ (\acmConference@shortname)\fi
+ ,} \ref{TotPages}~pages.
+ \fi\par
\noindent DOI: \nolinkurl{\@acmDOI}
\par\egroup}
\def\@printendtopmatter{\par\medskip
@@ -1793,43 +1824,73 @@ Computing Machinery]
\put(-26,-22){\usebox{\ACM@linecount@bx}}%
\end{picture}%
\fi}
+\def\@shortauthors{\if@ACM@anonymous Anon.\else\shortauthors\fi}
+\def\@headfootfont{%
+ \ifcase\ACM@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@}%
\renewcommand{\footrulewidth}{\z@}%
\ifcase\ACM@format@nr
\relax % manuscript
- \fancyhead[LE]{\ACM@linecount\thepage}%
- \fancyhead[RO]{\thepage}%
- \fancyhead[RE]{\shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\if@ACM@printfolios\thepage\fi}%
+ \fancyhead[RO]{\if@ACM@printfolios\thepage\fi}%
+ \fancyhead[RE]{\@shortauthors}%
\fancyhead[LO]{\ACM@linecount\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize Manuscript submitted to ACM}%
\or % acmsmall
- \fancyhead[LE]{\ACM@linecount\sffamily\@acmArticle:\thepage}%
- \fancyhead[RO]{\sffamily\@acmArticle:\thepage}%
- \fancyhead[RE]{\sffamily\shortauthors}%
- \fancyhead[LO]{\ACM@linecount\sffamily\shorttitle}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
+ \fancyhead[RO]{\@headfootfont\@acmArticle\if@ACM@printfolios:\thepage\fi}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LO]{\ACM@linecount\@headfootfont\shorttitle}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmlarge
- \fancyhead[LE]{\ACM@linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont
+ \@acmArticle:\if@ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM@linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if@ACM@printfolios:\thepage\fi}%
\fancyfoot[RO,LE]{\footnotesize \@journalName, Vol. \@acmVolume, No.
\@acmNumber, Article \@acmArticle. Publication date: \@acmPubDate.}%
\or % acmtog
- \fancyhead[LE]{\ACM@linecount\sffamily
- \@acmArticle:\thepage\quad\textbullet\quad\shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont
+ \@acmArticle:\if@ACM@printfolios\thepage\quad\textbullet\quad\fi\@shortauthors}%
\fancyhead[LO]{\ACM@linecount}%
- \fancyhead[RO]{\sffamily
- \shorttitle\quad\textbullet\quad\@acmArticle:\thepage}%
+ \fancyhead[RO]{\@headfootfont
+ \shorttitle\quad\textbullet\quad\@acmArticle\if@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@linecount}%
+ \fancyfoot[C]{\if@ACM@printfolios\footnotesize\thepage\fi}%
+ \fancyhead[LO]{\ACM@linecount\@headfootfont\shorttitle}%
+ \fancyhead[RE]{\@headfootfont\@shortauthors}%
+ \fancyhead[LE]{\ACM@linecount\@headfootfont\acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fancyhead[RO]{\@headfootfont\acmConference@shortname,
+ \acmConference@date, \acmConference@venue}%
+ \fi
+ \if@ACM@sigchiamode
+ \fancyheadoffset[L]{\dimexpr(\marginparsep+\marginparwidth)}%
\fi
}
\pagestyle{standardpagestyle}
@@ -1879,7 +1940,7 @@ Computing Machinery]
\ifcase\ACM@format@nr
\relax % manuscript
\fancyhead[L]{\ACM@linecount}%
- \fancyfoot[RO,LE]{\small\thepage}%
+ \fancyfoot[RO,LE]{\if@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 @@ Computing Machinery]
\fancyhead[L]{\ACM@linecount}%
\else % Conference proceedings
\fancyhead[L]{\ACM@linecount}%
- \fancyfoot[R]{\footnotesize\thepage}%
+ \fancyfoot[C]{\if@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@raggedright{\@rightskip\@flushglue
+ \rightskip\@rightskip
+ \leftskip\z@skip
+ \parindent\z@}
\def\@secfont{\sffamily\bfseries\section@raggedright\MakeUppercase}
\def\@subsecfont{\sffamily\bfseries\section@raggedright}
\def\@subsubsecfont{\sffamily\itshape}
@@ -1956,30 +2041,6 @@ Computing Machinery]
\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@raggedright{\@rightskip\@flushglue
- \rightskip\@rightskip
- \leftskip\z@skip
- \parindent\z@}
\def\@acmplainbodyfont{\itshape}
\def\@acmplainindent{\parindent}
\def\@acmplainheadfont{\scshape}
@@ -2074,6 +2135,11 @@ Computing Machinery]
}{%
\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@ACM@screen
\includecomment{screenonly}
\excludecomment{printonly}
@@ -2083,6 +2149,7 @@ Computing Machinery]
\fi
\if@ACM@anonymous
\excludecomment{anonsuppress}
+ \excludecomment{acks}
\else
\includecomment{anonsuppress}
\fi