summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/bibtex/bst/revtex/apsrev4-1.bst
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/bibtex/bst/revtex/apsrev4-1.bst')
-rw-r--r--Master/texmf-dist/bibtex/bst/revtex/apsrev4-1.bst1789
1 files changed, 1416 insertions, 373 deletions
diff --git a/Master/texmf-dist/bibtex/bst/revtex/apsrev4-1.bst b/Master/texmf-dist/bibtex/bst/revtex/apsrev4-1.bst
index 001f5a5ba63..adb16c4493b 100644
--- a/Master/texmf-dist/bibtex/bst/revtex/apsrev4-1.bst
+++ b/Master/texmf-dist/bibtex/bst/revtex/apsrev4-1.bst
@@ -4,13 +4,13 @@
%%
%% The original source files were:
%%
-%% merlin.mbs (with options: `head,lang,annote,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
-%% physjour.mbs (with options: `lang,annote,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
-%% geojour.mbs (with options: `lang,annote,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
-%% photjour.mbs (with options: `lang,annote,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
-%% merlin.mbs (with options: `tail,lang,annote,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
+%% merlin.mbs (with options: `head,ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
+%% physjour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
+%% geojour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
+%% photjour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
+%% merlin.mbs (with options: `tail,ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,isbn,issn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}')
%% ----------------------------------------
-%% *** REVTeX-compatible Phys Rev 2009-10-08 ***
+%% *** REVTeX-compatible Phys Rev 2010-02-12 ***
%%
%% Copyright 1994-2007 Patrick W Daly
% ===============================================================
@@ -24,27 +24,40 @@
% version 1 of the License, or any later version.
% ===============================================================
% Name and version information of the main mbs file:
- % \ProvidesFile{merlin.mbs}[2008/01/17 4.21 (PWD, AO, DPC)]
% For use with BibTeX version 0.99a or later
%-------------------------------------------------------------------
% This bibliography style file is intended for texts in ENGLISH
- % This is a numerical citation style, and as such is standard LaTeX.
- % It requires no extra package to interface to the main text.
+ % This is an author-year citation style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is natbib.sty by Patrick W. Daly
% The form of the \bibitem entries is
- % \bibitem{key}...
- % Usage of \cite is as follows:
- % \cite{key} ==>> [#]
- % \cite[chap. 2]{key} ==>> [#, chap. 2]
- % where # is a number determined by the ordering in the reference list.
- % The order in the reference list is that by which the works were originally
- % cited in the text, or that in the database.
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
+ % The essential feature is that the label (the part in brackets) consists
+ % of the author names, as they should appear in the citation, with the year
+ % in parentheses following. There must be no space before the opening
+ % parenthesis!
+ % With natbib v5.3, a full list of authors may also follow the year.
+ % In natbib.sty, it is possible to define the type of enclosures that is
+ % really wanted (brackets or parentheses), but in either case, there must
+ % be parentheses in the label.
+ % The \cite command functions as follows:
+ % \citet{key} ==>> Jones et al. (1990)
+ % \citet*{key} ==>> Jones, Baker, and Smith (1990)
+ % \citep{key} ==>> (Jones et al., 1990)
+ % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
+ % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeauthor*{key} ==>> Jones, Baker, and Smith
+ % \citeyear{key} ==>> 1990
%---------------------------------------------------------------------
-FUNCTION {id.bst} {"Merlin.mbs v4.21 2009-07-09. "}
+FUNCTION {id.bst} {"merlin.mbs 2010-03-15 4.21a (PWD, AO, DPC)"}
ENTRY
{
address
- annote
archive
archivePrefix
author
@@ -83,6 +96,8 @@ ENTRY
}{
}{
label
+ extra.label sort.label
+ short.list
}
INTEGERS
@@ -98,6 +113,7 @@ INTEGERS
}
STRINGS { bibfield output.bibfield }
+
FUNCTION {not}
{ { #0 }
{ #1 }
@@ -122,6 +138,399 @@ FUNCTION {non.stop}
#-1 #1 substring$ "." =
}
+INTEGERS { arith.mulitplier arith.multiplicand }
+
+FUNCTION {multiply}
+{
+ 'arith.multiplicand :=
+ 'arith.mulitplier :=
+ #0
+ { arith.mulitplier #0 > }
+ { arith.multiplicand +
+ arith.mulitplier #1 - 'arith.mulitplier :=
+ }
+ while$
+}
+
+FUNCTION {chr.to.hex}
+{
+ chr.to.int$
+ duplicate$ "0" chr.to.int$ -
+ duplicate$ duplicate$ #0 < swap$ #9 > or not
+ { swap$ pop$ }
+ { pop$
+ duplicate$ "A" chr.to.int$ -
+ duplicate$ duplicate$ #0 < swap$ #5 > or not
+ { swap$ pop$ #10 + }
+ { pop$
+ duplicate$ "a" chr.to.int$ -
+ duplicate$ duplicate$ #0 < swap$ #5 > or not
+ { swap$ pop$ #10 + }
+ { pop$
+ pop$ #-1
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+INTEGERS { arith.accumulator }
+
+FUNCTION {str.to.hex}
+{ #0 'arith.accumulator :=
+ { duplicate$ empty$ not }
+ { duplicate$ #1 #1 substring$ chr.to.hex
+ duplicate$ #0 <
+ { pop$ pop$ ""
+ }
+ { arith.accumulator #16 multiply + 'arith.accumulator :=
+ #2 global.max$ substring$
+ }
+ if$
+ }
+ while$
+ pop$ arith.accumulator
+}
+
+FUNCTION {diagn.cmntlog}
+{
+ duplicate$ top$ "%" swap$ * write$ newline$
+}
+
+INTEGERS { control.key control.author control.editor control.title control.pages control.eprint control.year }
+
+INTEGERS { control.author.jnrlst control.author.dotless control.author.nospace control.author.initials control.author.nocomma control.author.first control.author.reversed }
+
+FUNCTION { control.init }
+{
+ #0
+ 'control.key :=
+ #0
+ #8 +
+ #64 +
+ 'control.author :=
+ #1
+ 'control.author.jnrlst :=
+ #0
+ 'control.author.dotless :=
+ #0
+ 'control.author.nospace :=
+ #1
+ 'control.author.initials :=
+ #0
+ 'control.author.nocomma :=
+ #0
+ 'control.author.first :=
+ #0
+ 'control.author.reversed :=
+ #1
+ 'control.editor :=
+ #-1
+ 'control.title :=
+ #0
+ 'control.pages :=
+ #0
+ 'control.eprint :=
+ #1
+ 'control.year :=
+}
+
+FUNCTION {warning.dependency}
+{
+ " (dependency: " * swap$ * ") set " * swap$ int.to.str$ * warning$
+}
+
+FUNCTION {control.check}
+{
+ control.editor
+ {
+ "editor formatted same as author"
+ control.author.reversed {
+ duplicate$ #0 swap$ "reversed" warning.dependency
+ #0 'control.author.reversed :=
+ } 'skip$ if$
+ control.author.first {
+ duplicate$ #0 swap$ "first" warning.dependency
+ #0 'control.author.first :=
+ } 'skip$ if$
+ control.author.nocomma {
+ duplicate$ #0 swap$ "nocomma" warning.dependency
+ #0 'control.author.nocomma :=
+ } 'skip$ if$
+ pop$
+ } 'skip$ if$
+ control.author.reversed 'skip$
+ {
+ "not reversed"
+ control.author.nospace {
+ duplicate$ #0 swap$ "nospace" warning.dependency
+ #0 'control.author.nospace :=
+ } 'skip$ if$
+ control.author.jnrlst 'skip$ {
+ duplicate$ #1 swap$ "jnrlst" warning.dependency
+ #1 'control.author.jnrlst :=
+ } if$
+ control.author.initials {
+ duplicate$ ", initials" *
+ control.author.dotless {
+ duplicate$ #0 swap$ "dotless" warning.dependency
+ #0 'control.author.dotless :=
+ } 'skip$ if$
+ pop$
+ } 'skip$ if$
+ pop$
+ }
+ if$
+ control.author.initials 'skip$ {
+ "not initials"
+ control.author.nocomma {
+ duplicate$ #0 swap$ "nocomma" warning.dependency
+ #0 'control.author.nocomma :=
+ } 'skip$ if$
+ control.author.nospace {
+ duplicate$ #0 swap$ "nospace" warning.dependency
+ #0 'control.author.nospace :=
+ } 'skip$ if$
+ control.author.dotless 'skip$ {
+ duplicate$ #1 swap$ "dotless" warning.dependency
+ #1 'control.author.dotless :=
+ } if$
+ pop$
+ } if$
+}
+
+FUNCTION {control.parse}
+{
+ duplicate$ duplicate$ missing$
+ {
+ pop$ pop$ pop$
+ }
+ { empty$
+ {
+ pop$ #-1
+ }{
+ str.to.hex
+ }
+ if$
+ swap$ :=
+ }
+ if$
+}
+
+FUNCTION {control.dump}
+{
+ duplicate$ missing$ { pop$ "N/A" } 'skip$ if$
+ "{" swap$ * "}, " *
+ *
+}
+
+INTEGERS { decode.threshold }
+
+FUNCTION {control.decode}
+{
+ - duplicate$
+ #0 <
+ {
+ skip$ pop$ swap$ #0
+ }
+ {
+ swap$ pop$ swap$ #1
+ }
+ if$
+ swap$ :=
+}
+
+FUNCTION {control.author.decode}
+{
+ control.author
+ duplicate$ duplicate$ #0 < swap$ #128 < not or
+ {
+ int.to.str$ "(" swap$ * ")" *
+ "Control cannot interpret author " swap$ *
+ warning$
+ }{
+ 'control.author.jnrlst swap$ duplicate$ #64 control.decode
+ 'control.author.dotless swap$ duplicate$ #32 control.decode
+ 'control.author.nospace swap$ duplicate$ #16 control.decode
+ 'control.author.initials swap$ duplicate$ #8 control.decode
+ 'control.author.nocomma swap$ duplicate$ #4 control.decode
+ 'control.author.first swap$ duplicate$ #2 control.decode
+ 'control.author.reversed swap$ duplicate$ #1 control.decode
+ duplicate$ #0 =
+ 'skip$
+ {
+ "Control: residue of author"
+ "(" swap$ * ")" * *
+ warning$
+ }
+ if$
+ pop$
+ }
+ if$
+}
+
+FUNCTION {control.setup}
+{
+ type$ cite$ "{" swap$ * "}, " * *
+ "control.key" key control.dump *
+ "control.author" author control.dump *
+ "control.editor" editor control.dump *
+ "control.title" title control.dump *
+ "control.pages" pages control.dump *
+ "control.year" year control.dump *
+ "control.eprint" eprint control.dump *
+ top$
+ 'control.key key control.parse
+ 'control.author author control.parse
+ 'control.editor editor control.parse
+ 'control.title title control.parse
+ 'control.pages pages control.parse
+ 'control.year year control.parse
+ 'control.eprint eprint control.parse
+ control.author.decode
+}
+
+FUNCTION {control.pass}
+{ type$ "control" = 'control.setup 'skip$ if$
+}
+
+FUNCTION {control.presort}
+{
+}
+
+FUNCTION {control.forward}
+{
+}
+
+FUNCTION {control.reverse}
+{
+}
+
+FUNCTION {control.sort}
+{
+}
+
+FUNCTION {control.longest.label}
+{
+}
+
+FUNCTION {control.key.bib}
+{
+ "Control: key "
+ control.key
+ duplicate$ "(" swap$ int.to.str$ * ") " * swap$
+ pop$ *
+ diagn.cmntlog
+}
+
+FUNCTION {control.author.bib}
+{
+ "Control: author "
+ control.author "(" swap$ int.to.str$ * ")" * *
+ control.author.reversed { " reversed" * }{} if$
+ control.author.first { " first" * }{} if$
+ control.author.nocomma { " nocomma" * }{} if$
+ control.author.initials { " initials" * }{} if$
+ control.author.nospace { " nospace" * }{} if$
+ control.author.dotless { " dotless" * }{} if$
+ control.author.jnrlst { " jnrlst" * }{} if$
+ diagn.cmntlog
+}
+
+FUNCTION {control.editor.bib}
+{
+ "Control: editor formatted "
+ control.editor
+ duplicate$ "(" swap$ int.to.str$ * ") " * swap$
+ duplicate$ #0 < {
+ pop$
+ "disabled!"
+ } {
+ #0 > {
+ "identically to author"
+ } {
+ "differently from author"
+ } if$
+ } if$ * *
+ diagn.cmntlog
+}
+
+FUNCTION {control.title.bib}
+{
+ "Control: production of article title "
+ control.title
+ duplicate$ "(" swap$ int.to.str$ * ") " * swap$
+ duplicate$ #0 < {
+ pop$
+ "disabled"
+ } {
+ #0 > {
+ "required"
+ } {
+ "allowed"
+ } if$
+ } if$ * *
+ diagn.cmntlog
+}
+
+FUNCTION {control.pages.bib}
+{
+ "Control: page "
+ control.pages
+ duplicate$ "(" swap$ int.to.str$ * ") " * swap$
+ duplicate$ #0 < {
+ pop$
+ "none"
+ } {
+ #0 > {
+ "range"
+ } {
+ "single"
+ } if$
+ } if$ * *
+ diagn.cmntlog
+}
+
+FUNCTION {control.year.bib}
+{
+ "Control: year "
+ control.year
+ duplicate$ "(" swap$ int.to.str$ * ") " * swap$
+ duplicate$ #0 < {
+ pop$
+ "disabled!"
+ } {
+ #0 > {
+ "truncated"
+ } {
+ "verbatim"
+ } if$
+ } if$ * *
+ diagn.cmntlog
+}
+
+FUNCTION {control.eprint.bib}
+{
+ "Control: production of eprint "
+ control.eprint
+ duplicate$ "(" swap$ int.to.str$ * ") " * swap$
+ #0 < { "disabled" } { "enabled" } if$ * *
+ diagn.cmntlog
+}
+
+FUNCTION {control.bib}
+{
+ control.key.bib
+ control.author.bib
+ control.editor.bib
+ control.title.bib
+ control.pages.bib
+ control.year.bib
+ control.eprint.bib
+}
+
FUNCTION {init.state.consts}
{
#0 'before.all :=
@@ -166,7 +575,7 @@ FUNCTION {show.stackstring.two}{
duplicate$ "2(" swap$ * ")" * top$
}
-FUNCTION {bibfield.command}{ "\bibfield"}
+FUNCTION {bibfield.command}{ "\bibfield "}
FUNCTION {output.nonnull}
{
@@ -196,9 +605,7 @@ FUNCTION {output.nonnull}
output.bibfield duplicate$ empty$ 'pop$
{
bibfield.command
- "{" * swap$ * "}{%" * write$ newline$
- " " swap$ * "}%" * write$ newline$
- " "
+ " {" * swap$ * "} {" * swap$ * "}" *
}
if$
write$
@@ -229,6 +636,12 @@ FUNCTION {output}
if$
}
+FUNCTION {output.nopunct}
+{
+ punctuation.no 'punctuation.state :=
+ output.nonnull
+}
+
FUNCTION {output.check}
{ swap$
duplicate$ empty$
@@ -237,9 +650,9 @@ FUNCTION {output.check}
if$
}
-FUNCTION {bbl.open} { "\BibitemOpen" }
+FUNCTION {bbl.open} { "\BibitemOpen " }
-FUNCTION {bbl.shut} { "\BibitemShut" }
+FUNCTION {bbl.shut} { "\BibitemShut " }
FUNCTION {bibitem.shut.stop} { bbl.shut "{Stop}%" * }
@@ -276,18 +689,7 @@ FUNCTION {output.SLACcitation}
FUNCTION {fin.entry}
{
- non.stop swap$
- "%" * write$ newline$
- { "{NoStop}" }
- { "{Stop}" }
- if$
- annote missing$
- {
- " \bibAnnoteFile" swap$ * "{" * cite$ * "}%" *
- }{
- " \bibAnnote" swap$ * "{" * cite$ * "}{" * annote * add.period$ "}%" *
- }
- if$
+ bibitem.shut
write$
output.SLACcitation
}
@@ -327,7 +729,7 @@ FUNCTION {add.blank}
FUNCTION {no.blank.or.punct}
{
- "\hspace{0pt}" *
+ "\hspace {0pt}" *
before.all 'output.state :=
}
@@ -337,11 +739,21 @@ FUNCTION {date.block}
skip$
}
-FUNCTION {new.block.checka}
-{ empty$
- 'skip$
- 'new.block
- if$
+STRINGS {z}
+FUNCTION {remove.dots}
+{
+ control.author.dotless {
+ 'z :=
+ ""
+ { z empty$ not }
+ { z #1 #1 substring$
+ z #2 global.max$ substring$ 'z :=
+ duplicate$ "." = 'pop$
+ { * }
+ if$
+ }
+ while$
+ } 'skip$ if$
}
FUNCTION {new.block.checkb}
@@ -353,22 +765,6 @@ FUNCTION {new.block.checkb}
if$
}
-FUNCTION {new.sentence.checka}
-{ empty$
- 'skip$
- 'new.sentence
- if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
- swap$ empty$
- and
- 'skip$
- 'new.sentence
- if$
-}
-
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
@@ -381,7 +777,7 @@ FUNCTION {emphasize}
duplicate$ empty$
{ pop$ "" }
{
- "\emph{" swap$ * "}" *
+ "\emph {" swap$ * "}" *
}
if$
}
@@ -389,7 +785,7 @@ FUNCTION {emphasize}
FUNCTION {bolden}
{ duplicate$ empty$
{ pop$ "" }
- { "\textbf{" swap$ * "}" * }
+ { "\textbf {" swap$ * "}" * }
if$
}
@@ -398,7 +794,7 @@ FUNCTION {bib.name.font}
duplicate$ empty$
{ pop$ "" }
{
- "\bibnamefont{" swap$ * "}" *
+ "\bibnamefont {" swap$ * "}" *
}
if$
}
@@ -408,7 +804,7 @@ FUNCTION {bib.fname.font}
duplicate$ empty$
{ pop$ "" }
{
- "\bibfnamefont{" swap$ * "}" *
+ "\bibfnamefont {" swap$ * "}" *
}
if$
}
@@ -418,7 +814,7 @@ FUNCTION {cite.name.font}
duplicate$ empty$
{ pop$ "" }
{
- "\citenamefont{" swap$ * "}" *
+ "\citenamefont {" swap$ * "}" *
}
if$
}
@@ -442,6 +838,7 @@ FUNCTION {space.word}
% Here are the language-specific definitions for explicit words.
% Each function has a name bbl.xxx where xxx is the English word.
% The language selected here is ENGLISH
+
FUNCTION {bbl.and}
{
"and"
@@ -581,7 +978,7 @@ MACRO {dec} {"Dec."}
FUNCTION {bbl.url.prefix}
{
- "\urlprefix"
+ "\urlprefix "
}
FUNCTION {eng.ord}
@@ -893,7 +1290,7 @@ MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
MACRO {tcs} {"Theor. Comput. Sci."}
-FUNCTION {bibinfo.command} { "\bibinfo" }
+FUNCTION {bibinfo.command} { "\bibinfo " }
FUNCTION {bibinfo.check}
{ swap$
@@ -907,7 +1304,7 @@ FUNCTION {bibinfo.check}
swap$ pop$
}{
swap$
- bibinfo.command " {" * swap$ * "} {" * swap$ * "}" *
+ bibinfo.command "{" * swap$ * "} {" * swap$ * "}" *
}
if$
}
@@ -945,11 +1342,14 @@ FUNCTION {archiv.prefix.base}
FUNCTION {eprint.command}
{
- "\Eprint"
+ "\Eprint "
}
FUNCTION {format.eprint}
-{ eprint duplicate$ empty$
+{
+ eprint duplicate$ empty$
+ control.eprint #0 <
+ or
{ pop$ "" }
{
duplicate$
@@ -957,13 +1357,13 @@ FUNCTION {format.eprint}
archive duplicate$ empty$ { pop$ archiv.base } 'skip$ if$ *
"/" *
swap$ *
- "{" swap$ * "}" *
+ "{" swap$ * "} " *
swap$
""
archivePrefix duplicate$ empty$ { pop$ "" } { ":" * } if$ *
swap$ *
primaryClass duplicate$ empty$ { pop$ "" } { " [" swap$ * "]" * } if$ *
- "{" swap$ * "}" *
+ "{" swap$ * "} " *
*
eprint.command swap$ *
}
@@ -985,7 +1385,7 @@ FUNCTION {format.url}
url duplicate$ empty$
{ pop$ "" }
{
- "\url"
+ "\url "
"{" * swap$ * "}" *
}
if$
@@ -1008,75 +1408,347 @@ FUNCTION {check.speaker}
STRINGS { bibinfo}
+FUNCTION {format.names.fname}
+{
+ control.author.initials {
+ control.author.dotless {
+ control.author.nospace {
+ "f{}"
+ } {
+ "f{~}"
+ } if$
+ } {
+ control.author.nospace {
+ "f{.}."
+ } {
+ "f."
+ } if$
+ } if$
+ } {
+ "ff"
+ } if$
+}
+
+FUNCTION {bracify}
+{
+ "{" swap$ * "}" *
+}
+
+FUNCTION {name.comma}
+{
+ control.author.nocomma 'skip$ { "," swap$ * } if$
+}
+
+FUNCTION {format.names.format.onefont}
+{
+ "{vv~}{ll}"
+ nameptr #1 >
+ control.author.first
+ and
+ control.author.reversed not
+ or
+ {
+ control.author.initials {
+ "f"
+ control.author.dotless 'skip$ {
+ "." *
+ } if$
+ "~" *
+ } {
+ "ff"
+ } if$
+ bracify
+ swap$
+ } {
+ format.names.fname
+ " " swap$ *
+ name.comma
+ bracify
+ }
+ if$
+ "jj"
+ " " swap$ *
+ name.comma
+ bracify
+ control.author.jnrlst 'skip$ 'swap$ if$
+ * *
+}
+
+FUNCTION {format.names.onefont}
+{
+ s nameptr format.names.format.onefont format.name$
+ remove.dots
+ bib.name.font
+}
+
+FUNCTION {format.names.morfont}
+{ s nameptr
+ "{vv~}{ll}" format.name$ bib.name.font
+ nameptr #1 >
+ control.author.first
+ and
+ control.author.reversed not
+ or
+ {
+ s nameptr
+ control.author.initials {
+ "f" % default: name + surname + comma junior
+ } {
+ "ff"
+ } if$
+ control.author.dotless 'skip$ {
+ "." * % nm-init % Initials. + surname (J. F. Smith) control.author.initials
+ } if$
+ bracify
+ format.name$ duplicate$ empty$ 'skip$
+ { tie.or.space.prefix bib.fname.font swap$ * }
+ if$
+ swap$
+ *
+ s nameptr
+ "{jj}" format.name$ duplicate$ empty$ 'skip$
+ { bib.fname.font ", " swap$ * }
+ if$
+ } {
+ s nameptr
+ format.names.fname
+ "jj"
+ " "
+ name.comma
+ control.author.jnrlst {
+ swap$ * skip$
+ } {
+ skip$ * swap$
+ } if$
+ bracify swap$ bracify swap$
+ *
+ format.name$
+ remove.dots
+ duplicate$ empty$ 'skip$
+ { bib.fname.font " " swap$ * }
+ if$
+ } if$
+ *
+}
+
+FUNCTION {names.punctuate}
+{
+ "," *
+ " " *
+}
+
FUNCTION {format.names}
{ 'bibinfo :=
- duplicate$ empty$ 'skip$ {
- 's :=
- "" 't :=
- #1 'nameptr :=
- s num.names$ 'numnames :=
- numnames 'namesleft :=
- { namesleft #0 > }
- { s nameptr
- "{f.}" format.name$ duplicate$ empty$ 'skip$
+ duplicate$ empty$ { pop$ "" } {
+ duplicate$ num.names$
+ duplicate$ 'numnames :=
+ 'namesleft :=
+ 's :=
+ #1 'nameptr :=
+ ""
+ { namesleft #0 > }
+ {
+ format.names.morfont
+ bibinfo bibinfo.check
+ type$ "presentation" =
+ 'check.speaker
+ 'skip$
+ if$
+ 't :=
+ nameptr #1 > not
+ {
+ t *
+ } {
+ namesleft #1 >
+ {
+ names.punctuate
+ t *
+ } {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ numnames #2 >
+ 'names.punctuate
+ 'skip$
+ if$
+ t "others" =
+ {
+ " " *
+ bbl.etal
+ emphasize
+ *
+ } {
+ bbl.and
+ space.word *
+ t *
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+
+FUNCTION {format.names.ed.onefont}
+{
+ s nameptr
+ control.author.initials {
+ control.author.dotless {
+ control.author.nospace {
+ "{f{}~}{vv~}{ll}{ jj}" % nm-rvx|nm-rvcx
+ } {
+ "{f{~}~}{vv~}{ll}{ jj}" % nm-rv
+ } if$
+ } {
+ control.author.nospace {
+ "{f{.}.~}{vv~}{ll}{ jj}" % nm-rvv|nm-rvvc
+ }{
+ "{f.~}{vv~}{ll}{, jj}" % nm-init|nm-rev|nm-rev1
+ } if$
+ } if$
+ } {
+ "{ff~}{vv~}{ll}{, jj}"
+ } if$
+ format.name$
+ remove.dots
+ bib.name.font
+}
+
+FUNCTION {format.names.ed.morfont}
+{
+ control.author.reversed { %
+ control.author.initials { %
+ control.author.dotless { %
+ s nameptr
+ control.author.nospace { % nm-rvx nm-rvcx
+ "{f{}}"
+ } { % nm-rv
+ "{f{~}}"
+ } if$
+ format.name$ duplicate$ empty$ 'skip$
+ { tie.or.space.prefix bib.fname.font swap$ * }
+ if$
+ s nameptr
+ "{vv~}{ll}" format.name$ bib.name.font *
+ s nameptr
+ "{jj}" format.name$
+ remove.dots
+ duplicate$ empty$ 'skip$
+ { bib.fname.font " " swap$ * }
+ if$
+ } { % !control.author.dotless
+ s nameptr
+ control.author.nospace { % nm-rvv
+ "{ff}"
+ } { % nm-rev nm-rev1
+ "{f.}"
+ } if$
+ format.name$ duplicate$ empty$ 'skip$
+ { tie.or.space.prefix bib.fname.font swap$ * }
+ if$
+ s nameptr
+ "{vv~}{ll}" format.name$ bib.name.font *
+ s nameptr
+ "{jj}" format.name$
+ duplicate$ empty$ 'skip$
+ { bib.fname.font ", " swap$ * }
+ if$
+ } if$
+ } { % Full names !control.author.initials nm-revf nm-revv1
+ s nameptr
+ "{ff}"
+ format.name$ duplicate$ empty$ 'skip$
{ tie.or.space.prefix bib.fname.font swap$ * }
if$
s nameptr
"{vv~}{ll}" format.name$ bib.name.font *
s nameptr
- "{jj}" format.name$ duplicate$ empty$ 'skip$
+ "{jj}" format.name$
+ duplicate$ empty$ 'skip$
{ bib.fname.font ", " swap$ * }
if$
- *
- bibinfo bibinfo.check
- type$ "presentation" =
- { check.speaker }
- 'skip$
- if$
- 't :=
- nameptr #1 >
- {
- namesleft #1 >
- {
- ", " *
- t *
- }{
- s nameptr "{ll}" format.name$ duplicate$ "others" =
- { 't := }
- { pop$ }
- if$
- numnames #2 >
- {
- "," *
- }
- 'skip$
- if$
- t "others" =
- {
- " " * bbl.etal
- emphasize
- *
- }{
- bbl.and
- space.word *
- t *
- }
- if$
- }
- if$
- }
- 't
- if$
- nameptr #1 + 'nameptr :=
- namesleft #1 - 'namesleft :=
- }
- while$
+ } if$
+ } { % !control.author.reversed nm-init
+ s nameptr
+ "{f.}"
+ format.name$ duplicate$ empty$ 'skip$
+ { tie.or.space.prefix bib.fname.font swap$ * }
+ if$
+ s nameptr
+ "{vv~}{ll}" format.name$ bib.name.font *
+ s nameptr
+ "{jj}" format.name$
+ duplicate$ empty$ 'skip$
+ { bib.fname.font ", " swap$ * }
+ if$
} if$
+ *
}
FUNCTION {format.names.ed}
{
- format.names
+ control.editor #0 > {
+ format.names
+ } {
+ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ {
+ format.names.ed.morfont
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ {
+ names.punctuate
+ t *
+ }{
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ numnames #2 >
+ 'names.punctuate
+ 'skip$
+ if$
+ t "others" =
+ {
+ " " * bbl.etal emphasize *
+ }{
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+ } if$
+}
+
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
}
FUNCTION {format.authors}
@@ -1133,18 +1805,28 @@ FUNCTION {doi.base}
"http://dx.doi.org/"
}
+FUNCTION {noop.command}
+{
+ "\href@noop "
+}
+
FUNCTION {doi.command}
{
- "\doi"
+ "\doi "
}
FUNCTION {doi.command.href}
{
- "\Doi"
+ "\Doi "
+}
+
+FUNCTION {href.command}
+{
+ "\href "
}
FUNCTION {format.doi}
-{ doi "doi" bibinfo.check
+{ doi
duplicate$ empty$ 'skip$
{
new.block.comma
@@ -1153,22 +1835,67 @@ FUNCTION {format.doi}
if$
}
-FUNCTION {add.doi}
+FUNCTION {add.doi.old}
{
duplicate$ empty$ 'skip$
{
- doi duplicate$ empty$ 'pop$
+ doi duplicate$ empty$
{
- "{" swap$ * "}" *
- swap$
- "{" swap$ * "}" *
- *
- doi.command.href swap$ *
+ pop$
+ url duplicate$ empty$
+ {
+ pop$
+ }{
+ href.command " {" * swap$ * "} {" * swap$ * "}" *
+ }
+ if$
+ }
+ {
+ doi.command.href " {" * swap$ * "} {" * swap$ * "}" *
}
if$
}
if$
}
+FUNCTION {link.tag.open}
+{
+ doi duplicate$ empty$
+ {
+ pop$
+ url duplicate$ empty$
+ {
+ pop$ "" noop.command
+ }{
+ href.command
+ }
+ if$
+ }
+ {
+ doi.command.href
+ }
+ if$
+ "{" * swap$ * "} {" *
+}
+
+FUNCTION {link.tag.shut}
+{
+ "}"
+}
+
+FUNCTION {link.open}
+{
+ link.tag.open output.nopunct
+}
+
+FUNCTION {link.shut}
+{
+ link.tag.shut *
+}
+
+FUNCTION {add.doi}
+{
+ link.tag.open swap$ * link.tag.shut *
+}
FUNCTION {select.language}
{ duplicate$ empty$
@@ -1202,7 +1929,7 @@ FUNCTION {format.note}
FUNCTION {bbl.enquote}
{
- "\enquote"
+ "\enquote "
}
FUNCTION {string.enquote}
@@ -1210,7 +1937,7 @@ FUNCTION {string.enquote}
punctuation.no 'punctuation.state :=
non.stop {
block.punctuation
- } { "." } if$
+ } { "" } if$
swap$ pop$
*
bbl.enquote "{" * swap$ * "}" *
@@ -1237,22 +1964,105 @@ FUNCTION {end.quote.title}
if$
}
+FUNCTION {format.name.apply}
+{
+ s nameptr
+ "{vv~}{ll}"
+ format.name$
+ cite.name.font
+}
+
+FUNCTION {format.full.names}
+{
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { format.name.apply
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ {
+ 't :=
+ }
+ 'pop$
+ if$
+ t "others" =
+ {
+ " " * bbl.etal
+ emphasize *
+ }{
+ numnames #2 > { "," * }{ skip$ } if$
+ bbl.and
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {make.full.names}
+{
+ key editor author
+ type$ "proceedings" =
+ type$ "book" =
+ type$ "inbook" =
+ or { pop$ }{ { pop$ "" }{ swap$ pop$ "" swap$ } if$ } if$
+ duplicate$ empty$
+ { pop$
+ duplicate$ empty$
+ { pop$
+ duplicate$ empty$
+ { pop$
+ cite$ #1 #3 substring$
+ }{
+ skip$
+ }
+ if$
+ }
+ { swap$ pop$ format.full.names }
+ if$
+ }
+ { swap$ pop$ swap$ pop$ format.full.names }
+ if$
+}
+
FUNCTION {year.bibitem}
{
year duplicate$ empty$
{ pop$ ""
- "????" *
}{
skip$
} if$
+ extra.label *
}
FUNCTION {output.bibitem}
{
newline$
""
- "{" * cite$ * "}%" *
- "\bibitem"
+ label
+ *
+ make.full.names duplicate$ short.list =
+ { pop$ }{ * } if$
+ bracify
+ "[" swap$ * "]" *
+ cite$ bracify "%" *
+ *
+ "\bibitem "
swap$ *
write$ newline$
" "
@@ -1306,23 +2116,12 @@ FUNCTION {date.encapsulate}
FUNCTION {format.date}
{
- month "month" bibinfo.check
- duplicate$ empty$
- year "year" bibinfo.check duplicate$ empty$
- { swap$ 'skip$
- { "there's a month but no year in " cite$ * warning$ }
- if$
- *
- }{
- swap$ 'skip$
- {
- swap$
- word.space * swap$
- }
- if$
- *
+ year "year" bibinfo.check duplicate$ empty$
+ {
}
+ 'skip$
if$
+ extra.label *
date.encapsulate
}
@@ -1334,7 +2133,7 @@ FUNCTION {format.date.output.check}
FUNCTION {format.date.output}
{
- format.date output
+ format.date.output.check
}
FUNCTION {format.btitle}
@@ -1559,7 +2358,16 @@ FUNCTION {format.journal.pages}
{ pop$ pop$ format.pages }
{ volnum.punct *
swap$
- first.page
+ control.pages duplicate$ #0 < {
+ pop$ pop$
+ }{
+ #0 >
+ {
+ n.dashify
+ }{
+ first.page
+ } if$
+ } if$
"pages" bibinfo.check
*
}
@@ -1590,7 +2398,6 @@ FUNCTION {eid.or.pages}
FUNCTION {format.ser.vol.num}
{
series "series" bibinfo.check output
- after.punctuation 'output.state :=
volume field.or.null
duplicate$ empty$ 'skip$
{
@@ -1665,7 +2472,7 @@ FUNCTION {format.in.ed.booktitle}
{
format.booktitle duplicate$ empty$ 'pop$
{
- add.doi
+ add.doi
word.in swap$ * output.nonnull
bookaddress "address" bibinfo.check output
format.number.series "series and number" bibinfo.check output
@@ -1679,7 +2486,7 @@ FUNCTION {format.in.ed.booktitle.inbook}
{
format.booktitle duplicate$ empty$ 'pop$
{
- add.doi
+ add.doi
word.in swap$ * output.nonnull
bookaddress "address" bibinfo.check output
format.number.series "series and number" bibinfo.check output
@@ -1691,15 +2498,6 @@ FUNCTION {format.in.ed.booktitle.inbook}
if$
}
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
- month empty$ year empty$ note empty$
- and and and and and
- { "all relevant fields are empty in " cite$ * warning$ }
- 'skip$
- if$
-}
-
FUNCTION {format.thesis.type}
{ type duplicate$ empty$
'pop$
@@ -1724,52 +2522,10 @@ FUNCTION {format.tr.number}
FUNCTION {format.article.crossref}
{
- key duplicate$ empty$
- { pop$
- journal duplicate$ empty$
- { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
- { "journal" bibinfo.check emphasize word.in swap$ * }
- if$
- }
- { word.in swap$ * word.space *}
- if$
+ word.in
" \cite{" * crossref * "}" *
}
-FUNCTION {format.crossref.editor}
-{ editor #1 "{vv~}{ll}" format.name$
- bib.name.font
- "editor" bibinfo.check
- editor num.names$ duplicate$
- #2 >
- { pop$
- "editor" bibinfo.check
- word.space * bbl.etal
- emphasize
- *
- }
- { #2 <
- 'skip$
- { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
- {
- "editor" bibinfo.check
- word.space * bbl.etal
- emphasize
- *
- }{
- bbl.and space.word
- * editor #2 "{vv~}{ll}" format.name$
- bib.name.font
- "editor" bibinfo.check
- *
- }
- if$
- }
- if$
- }
- if$
-}
-
FUNCTION {format.book.crossref}
{ volume duplicate$ empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
@@ -1779,44 +2535,12 @@ FUNCTION {format.book.crossref}
swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
}
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$
- "" *
- }
- { series emphasize * }
- 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$
- { format.booktitle duplicate$ empty$
- { "need editor, key, or booktitle for " cite$ * " to crossref " *
- crossref * warning$
- }
- { word.in swap$ * }
- if$
- }
- { word.in key * word.space *}
- if$
- }
- { word.in format.crossref.editor * word.space *}
- if$
+ word.in
" \cite{" * crossref * "}" *
}
@@ -1904,25 +2628,49 @@ FUNCTION {format.school.address.output}
output
}
+FUNCTION {article.title.produce}
+{
+ control.title duplicate$ #0 <
+ { pop$
+ }{
+ format.title
+ "title" 'bibfield :=
+ swap$ #0 >
+ {
+ "title" output.check
+ }{
+ output
+ } if$
+ new.block.comma
+ } if$
+}
+
+FUNCTION {control}
+{
+}
+
FUNCTION {article}
{ output.bibitem
format.authors
booktitle empty$ {
"author" output.check
}{ output } if$
+ author format.key output
new.block.comma
+ article.title.produce
output.article.booktitle
crossref missing$
{
+ link.open
journal
"journal" bibinfo.warn
- pages empty$ 'skip$ { add.doi } if$
"journal" 'bibfield :=
output
format.ser.vol.num
output
eid.or.pages
format.date.output.check
+ link.shut
}{
format.article.crossref output.nonnull
format.pages output
@@ -1936,7 +2684,6 @@ FUNCTION {article}
new.sentence.comma
format.note output
format.eprint output
- format.url output
format.translation output
fin.entry
}
@@ -1945,24 +2692,28 @@ FUNCTION {book}
{ output.bibitem
author empty$
{
+ format.editors "author and editor" output.check
+ editor format.key output
}{
format.authors output.nonnull
- crossref missing$ { editor.check.book } 'skip$ if$
+% crossref missing$ { editor.check.book } 'skip$ if$
}
if$
new.block.comma
+ link.open
format.btitle
- add.doi
"title" output.check
+ link.shut
format.edition output
author empty$
{
- format.editor.in output
}
{
+ format.editor.in output
+ editor format.key output
}
if$
- format.number.series output
+ format.number.series output
crossref missing$
{
format.bvolume output
@@ -1975,23 +2726,24 @@ FUNCTION {book}
}
if$
format.isbn output
- format.chapter.pages
- output
+ format.chapter.pages
+ output
new.block.comma
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
+ author format.key output
new.block.comma
+ link.open
format.title
- add.doi
"title" output.check
+ link.shut
new.block.comma
howpublished "howpublished" bibinfo.check output
address "address" bibinfo.check output
@@ -2002,7 +2754,12 @@ FUNCTION {booklet}
new.sentence.comma
format.note output
format.eprint output
- format.url output
+ fin.entry
+}
+
+FUNCTION {footnote}
+{ output.bibitem
+ format.note output
fin.entry
}
@@ -2011,8 +2768,10 @@ FUNCTION {inbook}
author empty$
{
format.editors "editor" output.check
+ editor format.key output
}{
format.authors output.nonnull
+ author format.key output
}
if$
new.block.comma
@@ -2047,14 +2806,15 @@ FUNCTION {inbook}
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
+ author format.key output
new.block.comma
+ article.title.produce
crossref missing$
{
format.in.ed.booktitle
@@ -2071,14 +2831,15 @@ FUNCTION {incollection}
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
+ author format.key output
new.block.comma
+ article.title.produce
crossref missing$
{
format.in.ed.booktitle
@@ -2095,112 +2856,102 @@ FUNCTION {inproceedings}
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
- author empty$
- { organization "organization" bibinfo.check
- duplicate$ empty$ 'pop$
- { output
- address "address" bibinfo.check output
- }
- if$
- }{
- format.authors output.nonnull
- }
- if$
+ format.authors output
+ author format.key output
new.block.comma
+ link.open
format.btitle
- add.doi
"title" output.check
- author empty$
- { organization empty$
- {
- address "address" bibinfo.check output
- }
- 'skip$
- if$
- }{
+ link.shut
organization "organization" bibinfo.check output
address "address" bibinfo.check output
- }
- if$
format.edition output
format.date.output
new.block.comma
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
+ author format.key output
new.block.comma
format.btitle
output
new.block.comma
+ link.open
bbl.mthesis
format.thesis.type
- add.doi
output.nonnull
+ link.shut
format.school.address.output
format.date.output.check
new.block.comma
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
- format.title output
+ author format.key output
+ new.block.comma
+ link.open
+ format.title
+ output
+ link.shut
+ new.block.comma
howpublished "howpublished" bibinfo.check output
format.date.output
new.block.comma
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
- empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
+ author format.key output
new.block.comma
format.btitle
output
new.block.comma
+ link.open
bbl.phdthesis
format.thesis.type
- add.doi
output.nonnull
+ link.shut
format.school.address.output
format.date.output.check
new.block.comma
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {presentation}
{ output.bibitem
format.authors output
+ author format.key output
new.block.comma
- format.title output
+ link.open
+ format.title
+ output
+ link.shut
new.block.comma
format.organization.address "organization and address" output.check
month "month" output.check
@@ -2212,52 +2963,40 @@ FUNCTION {presentation}
type missing$ 'skip$
{"(" type capitalize * ")" * output}
if$
- new.block.comma format.url output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
- editor empty$
- { organization "organization" bibinfo.check output }
- { format.editors output.nonnull }
- if$
+ format.editors output
+ editor format.key output
new.block.comma
+ link.open
format.btitle
- add.doi
"title" output.check
+ link.shut
bookaddress "address" bibinfo.check output
format.number.series output
format.bvolume output
- editor empty$
- {
- publisher empty$
- {
- }{
- format.publisher.address output
- }
- if$
- }{
- format.organization.publisher.address output
- }
- if$
+ format.organization.publisher.address output
format.isbn output
format.issn output
new.block.comma
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
+ author format.key output
new.block.comma
+ link.open
format.btitle
- add.doi
"title" output.check
+ link.shut
new.block.comma
format.tr.number
output.nonnull
@@ -2267,55 +3006,369 @@ FUNCTION {techreport}
new.sentence.comma
format.note output
format.eprint output
- format.url output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
+ author format.key output
new.block.comma
+ link.open
format.title
- add.doi
"title" output.check
+ link.shut
format.date.output
new.block.comma
new.sentence.comma
format.note "note" output.check
format.eprint output
- format.url output
fin.entry
}
FUNCTION {default.type} { misc }
+
READ
-STRINGS { longest.label }
-INTEGERS { number.label longest.label.width }
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
- #1 'number.label :=
- #0 'longest.label.width :=
+
+EXECUTE {control.init}
+
+ITERATE {control.pass}
+
+EXECUTE {control.check}
+
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
}
-FUNCTION {longest.label.pass}
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+
+FUNCTION {cite.name.font.apply}
{
- number.label int.to.str$ 'label :=
- number.label #1 + 'number.label :=
- label width$ longest.label.width >
- { label 'longest.label :=
- label width$ 'longest.label.width :=
+ word.space * bbl.etal
+ emphasize
+ *
+}
+
+FUNCTION {format.lab.names}
+{ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ format.name.apply
+ s num.names$ duplicate$
+ #2 >
+ { pop$
+ cite.name.font.apply
+ }{
+ #2 <
+ 'skip$
+ {
+ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ {
+ cite.name.font.apply
+ }{
+ bbl.and space.word *
+ s #2 "{vv~}{ll}" format.name$
+ cite.name.font
+ *
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+ }
+ { author format.lab.names }
+ if$
+}
+
+FUNCTION {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{
+ calc.short.authors
+ short.list
+ year duplicate$ empty$
+ short.list key field.or.null = or
+ {
+ pop$ ""
+ }{
+ control.year #0 > { purify$ #-1 #4 substring$ } 'skip$ if$
+ }
+ if$
+ "(" swap$ * ")" *
+ * 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}"
+ control.author.initials {
+ "{ f{ }}" *
+ }{
+ "{ ff{ }}" *
+ } if$
+ "{ jj{ }}" *
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ {
+ t sortify *
+ }
+ if$
+ }
+ { 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 {year.sort.key}
+{
+ year
+}
+
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+
+INTEGERS { seq.num }
+
+FUNCTION {init.seq}
+{ #0 'seq.num :=}
+
+EXECUTE {init.seq}
+
+FUNCTION {int.to.fix}
+{ "000000000" swap$ int.to.str$ *
+ #-1 #10 substring$
+}
+
+FUNCTION {label.presort}
+{
+ calc.label
+ label sortify
+ " "
+ *
+ seq.num #1 + 'seq.num :=
+ seq.num int.to.fix
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+FUNCTION {presort.pass}
+{ type$ "control" = 'control.presort 'label.presort if$
+}
+
+ITERATE {presort.pass}
+
+SORT
+
+STRINGS { last.label next.extra }
+
+INTEGERS { last.extra.num number.label }
+
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+
+FUNCTION {label.forward}
+{
+ last.label 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 :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+
+FUNCTION {label.reverse}
+{ next.extra "b" =
+ { "a" 'extra.label := }
'skip$
if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+
+EXECUTE {initialize.extra.label.stuff}
+
+FUNCTION {forward.pass}
+{ type$ "control" = 'control.forward 'label.forward if$
+}
+
+ITERATE {forward.pass}
+
+FUNCTION {reverse.pass}
+{ type$ "control" = 'control.reverse 'label.reverse if$
+}
+
+REVERSE {reverse.pass}
+
+FUNCTION {sortkey.sort}
+{ sort.label
+ " "
+ *
+ year.sort.key
+ field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+FUNCTION {bib.sort.pass}
+{ type$ "control" = 'control.sort 'sortkey.sort if$
}
-EXECUTE {initialize.longest.label}
-ITERATE {longest.label.pass}
+ITERATE {bib.sort.pass}
+
+SORT
+
FUNCTION {init.bib.eprint}
{
- "\texttt{"
+ "\texttt {"
pop$
- "\providecommand \url [0]{\begingroup\@sanitize \@url }%" write$ newline$
+ "\providecommand \url [0]{\begingroup\@sanitize@url \@url }%" write$ newline$
"\providecommand \@url [1]{\endgroup\@href {#1}{" "}}%" bbl.url.prefix swap$ * * write$ newline$
"\providecommand " " [0]{URL }%" bbl.url.prefix swap$ * * write$ newline$
eprint.command "\providecommand " swap$ * "[0]{\href }%" * write$ newline$
@@ -2324,36 +3377,26 @@ FUNCTION {init.bib.eprint}
FUNCTION {init.bib.doi}
{
"\@ifxundefined \urlstyle {%" write$ newline$
- " \providecommand \doi [1]{doi:\discretionary{}{}{}#1}%" write$ newline$
+ " \providecommand " doi.command " [0]{\begingroup \@sanitize@url \@doi}%" * * write$ newline$
+ " \providecommand \@doi [1]{\endgroup \@@startlink {\doibase #1}doi:\discretionary {}{}{}#1\@@endlink }%" write$ newline$
"}{%" write$ newline$
- " \providecommand \doi [0]{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url }%"
- write$ newline$
+ " \providecommand " doi.command " [0]{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url }%" * * write$ newline$
"}%" write$ newline$
- "\providecommand \doibase [0]{" doi.base * "}%" * write$ newline$
- doi.command.href "\providecommand " swap$ * "[1]{\href{\doibase#1}}%" * write$ newline$
+ "\providecommand \doibase [0]{" doi.base "}%" * * write$ newline$
+ "\providecommand " doi.command.href "[0]{\begingroup \@sanitize@url \@Doi }%" * * write$ newline$
+ "\providecommand \@Doi [1]{\endgroup\@@startlink{\doibase#1}\@@Doi}%" write$ newline$
+ "\providecommand \@@Doi [1]{#1\@@endlink}%" write$ newline$
}
FUNCTION {init.bib.hypertex}
{
- "\providecommand\href[0]{\@sanitize\@href}%" write$ newline$
- "\providecommand\@href[1]{\endgroup\@@startlink{#1}\endgroup\@@href}%" write$ newline$
- "\providecommand\@@href[1]{#1\@@endlink}%" write$ newline$
- "\providecommand \@sanitize [0]{\begingroup\catcode`\&12\catcode`\#12\relax}%" write$ newline$
- "\@ifxundefined \pdfoutput {\@firstoftwo}{%" write$ newline$
- " \@ifnum{\z@=\pdfoutput}{\@firstoftwo}{\@secondoftwo}%" write$ newline$
- "}{%" write$ newline$
- " \providecommand\@@startlink[1]{\leavevmode\special{html:<a href=" quote$ * "#1" * quote$ * ">}}%" * write$ newline$
- " \providecommand\@@endlink[0]{\special{html:</a>}}%" write$ newline$
- "}{%" write$ newline$
- " \providecommand\@@startlink[1]{%" write$ newline$
- " \leavevmode" write$ newline$
- " \pdfstartlink" write$ newline$
- " attr{/Border[0 0 1 ]/H/I/C[0 1 1]}%" write$ newline$
- " user{/Subtype/Link/A<</Type/Action/S/URI/URI(#1)>>}%" write$ newline$
- " \relax" write$ newline$
- " }%" write$ newline$
- " \providecommand\@@endlink[0]{\pdfendlink}%" write$ newline$
- "}%" write$ newline$
+ "\providecommand " noop.command "[0]{\@secondoftwo}%" * * write$ newline$
+ "\providecommand " href.command "[0]{\begingroup \@sanitize@url \@href}%" * * write$ newline$
+ "\providecommand \@href[1]{\@@startlink{#1}\@@href}%" write$ newline$
+ "\providecommand \@@href[1]{\endgroup#1\@@endlink}%" write$ newline$
+ "\providecommand \@sanitize@url [0]{\catcode `\\12\catcode `\$12\catcode `\&12\catcode `\#12\catcode `\^12\catcode `\_12\catcode `\%12\relax}%" write$ newline$
+ "\providecommand \@@startlink[1]{}%" write$ newline$
+ "\providecommand \@@endlink[0]{}%" write$ newline$
}
FUNCTION {init.bib.namefont}
@@ -2370,18 +3413,10 @@ FUNCTION {init.bib.quote}
"#1" swap$ "}%" * * * * write$ newline$
}
-FUNCTION {init.bib.annote}
+FUNCTION {init.bib.ay}
{
- "\providecommand \bibAnnote [3]{%" write$ newline$
- " " bbl.shut * "{#1}%" * write$ newline$
- " \begin{quotation}\noindent" write$ newline$
- " \textsc{Key:}\ #2\\\textsc{Annotation:}\ #3%" write$ newline$
- " \end{quotation}%" write$ newline$
- "}%" write$ newline$
- "\providecommand \bibAnnoteFile [2]{%" write$ newline$
- " \IfFileExists{#2}{\bibAnnote {#1} {#2} {\input{#2}}}{}%" write$ newline$
- "}%" write$ newline$
- "\providecommand \typeout [0]{\immediate \write \m@ne }%" write$ newline$
+ "\providecommand \natexlab [1]{#1}%"
+ write$ newline$
}
FUNCTION {init.bib.bibinfo}
@@ -2416,22 +3451,25 @@ FUNCTION {init.bib}
{
warn.bib
"\makeatletter" write$ newline$
- "\providecommand \@ifxundefined [1]{%" write$ newline$
- " \ifx #1\undefined \expandafter \@firstoftwo" write$ newline$
- " \else \expandafter \@secondoftwo" write$ newline$
- "\fi" write$ newline$
+ "\providecommand \@ifxundefined [1]{%" write$ newline$
+ " \@ifx{#1\undefined}" write$ newline$
"}%" write$ newline$
"\providecommand \@ifnum [1]{%" write$ newline$
" \ifnum #1\expandafter \@firstoftwo" write$ newline$
" \else \expandafter \@secondoftwo" write$ newline$
- "\fi" write$ newline$
+ " \fi" write$ newline$
+ "}%" write$ newline$
+ "\providecommand \@ifx [1]{%" write$ newline$
+ " \ifx #1\expandafter \@firstoftwo" write$ newline$
+ " \else \expandafter \@secondoftwo" write$ newline$
+ " \fi" write$ newline$
"}%" write$ newline$
+ init.bib.ay
init.bib.quote
init.bib.namefont
init.bib.hypertex
init.bib.eprint
init.bib.doi
- init.bib.annote
init.bib.lang
init.bib.bibinfo
init.bib.translation
@@ -2442,21 +3480,25 @@ FUNCTION {init.bib}
FUNCTION {begin.bib}
{
- id.bst duplicate$ top$ "%" swap$ * write$ newline$
+ id.bst diagn.cmntlog
+ control.bib
preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{"
- longest.label
+ number.label int.to.str$
* "}%" *
write$ newline$
init.bib
}
EXECUTE {begin.bib}
+
EXECUTE {init.state.consts}
+
ITERATE {call.type$}
+
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}%"
@@ -2464,6 +3506,7 @@ FUNCTION {end.bib}
}
EXECUTE {end.bib}
+
%% End of customized bst file
%%
%% End of file `apsrev4-1.bst'.