diff options
Diffstat (limited to 'biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.bst')
-rw-r--r-- | biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.bst | 256 |
1 files changed, 183 insertions, 73 deletions
diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.bst index 89e5c51528..81bc4063ff 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.bst +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.bst @@ -4,8 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Time-stamp: <2018-12-07 18:48:59 st> -% Version: 2.4 +% Version: 2.7 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -21,24 +20,19 @@ % % The Current Maintainer of this work is Shiro Takeda. -%% Main features of econ.bst. - -% "econ.bst" is a BibTeX style file for economics. It provids the following -% features: - -% 1) The author-year type citation (you need "natbib.sty" as well). -% 2) Reference style used in economics papers ("econ.bst" is not a BibTeX style -% for a specific journal). -% 3) Highly customizable. You can easily customize reference style as you wish. -% 4) You can use "certified random order" proposed by Ray ⓡ Robson (2018) -% (http://dx.doi.org/10.1257/aer.20161492). +% "econ-econometrica.bst" is a BibTeX style file for Econometrica. +% "econ-econometrica.bst" is created from "econ.bst" which is distributed from +% https://github.com/ShiroTakeda/econ-bst % Bug reports, requests and suggestions are welcome. % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "2.5" } +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "econ-econometrica.bst" } % Debug mode. Non-zero makes debug mode on. FUNCTION {econ.debug} @@ -61,7 +55,7 @@ ENTRY %% String entry variable { label cyear flabel alabel extra.label sort.label sort.label.abb - extra.label.bysame nameorder.temp } + extra.label.bysame nameorder.temp jname } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -263,7 +257,8 @@ FUNCTION {bst.notuse.order.field} % String replaced with _ in "Mr. A _ Mr. B " % FUNCTION {bst.and} -{ " and " } % (default) +{ ", and " } +% { " and " } % (default) %%% String used to separate author names in references (more than two authors). % @@ -312,7 +307,11 @@ FUNCTION {bst.cite.and.nameorder} % authors is greater or equal to bst.and.others.num. FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% { #4 } + +% If the number of authors is greater or equal to bst.max.author.num, only +% first author is listed and other authors' names are abbreviated as "et al.". +FUNCTION {bst.max.author.num} +{ #12 } % If the number of authors is greater or equal to 12 (default). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -339,7 +338,7 @@ FUNCTION {bst.author.pre} % The string after author: % FUNCTION {bst.author.post} -{ "}" } +{ "} " } % { "" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -419,13 +418,23 @@ FUNCTION {bst.journal.pre} FUNCTION {bst.journal.post} { "}" } % (default) +% Use the abbreviated journal name +% +% If set to #0, do not use abbreviated journal name. +% If set to non-#0, use abbreviated journal name. +% +FUNCTION {bst.journal.name.abb} +{ #0 } % (default) +% { #1 } + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % editor notation: % The string that indicates multiple editors: % FUNCTION {bst.editors} -{ " eds. " } % (default) +{ " ed. " } +% { " eds. " } % (default) % The string that indicates single editor: % @@ -438,7 +447,8 @@ FUNCTION {bst.editor} % If set to non-zero: booktitle -> editors order % FUNCTION {bst.editor.btitle.order} -{ #0 } % (default) +% { #0 } % (default) +{ #1 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % edition @@ -459,8 +469,7 @@ FUNCTION {bst.edition.post} % The string before volume: % FUNCTION {bst.volume.pre} -{ ", " } -% { ", Vol. " } % (default) +{ ", " } % (default) % The string after volume: % @@ -474,20 +483,18 @@ FUNCTION {bst.volume.post} % Hide number. If non-zero, number is suppressed. FUNCTION {bst.hide.number} -{ #0 } % #0 -> show number field (default) -% { #1 } % non-#0 -> Hide number field. +% { #0 } % #0 -> show number field (default) +{ #1 } % non-#0 -> Hide number field. % The string before number: % FUNCTION {bst.number.pre} -{ " (" } -% { ", No. " } % (default) +{ " (" } % (default) % The string after number: % FUNCTION {bst.number.post} -{ ")" } -% { "" } % (default) +{ ")" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % in @@ -503,14 +510,12 @@ FUNCTION {bst.in} % The string before page (multiple pages): % FUNCTION {bst.pages.pre} -{ ", " } -% { ", pp." } % (default) +{ ", " } % (default) % The string before page: % FUNCTION {bst.page.pre} -{ ", " } -% { ", p." } % (default) +{ ", " } % (default) % The string after page (multiple pages): % @@ -658,7 +663,7 @@ FUNCTION {bst.show.url} % The string before url: % FUNCTION {bst.url.pre} -{ ", URL: \url{" } % (default) +{ ", \url{" } % (default) % The string after url: % @@ -693,12 +698,12 @@ FUNCTION {bst.show.doi} % The string before DOI: % FUNCTION {bst.doi.pre} -{ ", DOI: \href{http://dx.doi.org/" doi * "}{" * } % (default) +{ ", \href{http://dx.doi.org/" doi * "}{\urlstyle{rm} \nolinkurl{" * } % (default) % The string after DOI: % FUNCTION {bst.doi.post} -{ "}" } % (default) +{ "}}" } % (default) % How to show URL and DOI fields when both fields exist. % @@ -707,9 +712,9 @@ FUNCTION {bst.doi.post} % #2 -> Only DOI field is displayed % FUNCTION {bst.url.doi} -% { #0 } % (default) -> Both fields are displayed +% { #0 } % -> Both fields are displayed % { #1 } % -> Only URL field is displayed -{ #2 } % -> Only DOI field is displayed +{ #2 } % (default) --> Only DOI field is displayed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Other functions: @@ -725,7 +730,7 @@ FUNCTION {bst.note.post} % The string that represents Technical report: % FUNCTION {bst.techrep} -{ " Tech. Rep." } % (default) +{ "Technical Report" } % (default) % The string that represents master thesis: % @@ -735,7 +740,8 @@ FUNCTION {bst.mthesis} % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } +% { " Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -1068,11 +1074,37 @@ FUNCTION {format.btitle} if$ } +FUNCTION {journal.name.sub} +{ 't := + t #1 #4 substring$ "The " = + % Use #30 to handle with the long journal name. + { t #5 #30 substring$ 't := } + 'skip$ + if$ + t +} + +FUNCTION {format.journal.name.abb} +{ journal 's := + journal 'jname := + s journal.name.sub 's := + bst.journal.name.abb #0 = + 'skip$ + { + s "Academic Management Review" = + { "Acad. Manage. J." 'jname := } + 'skip$ + if$ + } + if$ + jname +} + %%% journal FUNCTION {format.journal} { journal empty$ { "" } - { bst.journal.pre journal * bst.journal.post * } + { bst.journal.pre format.journal.name.abb * bst.journal.post * } if$ } @@ -1148,37 +1180,99 @@ FUNCTION {format.names} numnames 'namesleft := % Repeat if namesleft > 0 { namesleft #0 > } + + { nameptr #1 = + % First author + { bst.author.name #0 = + bst.author.name #1 = + or + { bst.first.name.initial #0 = + { s nameptr "{vv~}{ll}{, ff}{, jj}" format.name$ 't := } + { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := } + if$ + } + { bst.first.name.initial #0 = + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := } + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := } + if$ + } + if$ + } + % The second or later authors + { bst.author.name #0 = + bst.author.name #2 = + or + { bst.first.name.initial #0 = + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := } + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := } + if$ + } + { bst.first.name.initial #0 = + { s nameptr "{vv~}{ll}{, ff}{, jj}" format.name$ 't := } + { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := } + if$ + } + if$ + } + if$ + + nameptr #1 > + % The second or later authors + { numnames bst.max.author.num > + { bst.and.others * + #1 'namesleft := } + { nameorder.temp "random" = + bst.use.nameorder #0 = not and + { bst.and.nameorder * t * } + { namesleft #1 > + % More than one authors left + { ", " * t * } + % Only one author left + { t "others" = + { bst.and.others.output * } + { numnames #2 = + % Entry with two authors + { bst.and * t * } + { bst.ands * t * } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +% For Econometrica, we define `format.name.ed` in addition to `format.name`. +FUNCTION {format.names.ed} +{ 's := + % insert 1 to nameptr. + #1 'nameptr := + % Set the number of authors to numnames. + s num.names$ 'numnames := + numnames 'namesleft := + % Repeat if namesleft > 0 + { namesleft #0 > } { nameptr #1 = % First author - { bst.author.name #0 = - bst.author.name #1 = - or - { bst.first.name.initial #0 = - { s nameptr "{vv~}{ll}{, ff}{, jj}" format.name$ 't := } - { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := } - if$ - } - { bst.first.name.initial #0 = - { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := } - { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := } - if$ - } + { bst.first.name.initial #0 = + { s nameptr "{vv~}{ll}{, ff}{, jj}" format.name$ 't := } + { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := } if$ } % The second or later authors - { bst.author.name #0 = - bst.author.name #2 = - or - { bst.first.name.initial #0 = - { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := } - { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := } - if$ - } - { bst.first.name.initial #0 = - { s nameptr "{vv~}{ll}{, ff}{, jj}" format.name$ 't := } - { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := } - if$ - } + { bst.first.name.initial #0 = + { s nameptr "{vv~}{ll}{, ff}{, jj}" format.name$ 't := } + { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ 't := } if$ } if$ @@ -1356,7 +1450,8 @@ FUNCTION {format.editors.x} if$ } if$ - editor format.names * + editor format.names.ed * +% editor format.names * bst.editor.btitle.order #0 = { editor num.names$ #1 > { bst.editors * } @@ -1491,7 +1586,8 @@ FUNCTION {either.or.check} FUNCTION {format.bvolume} { volume empty$ { "" } - { bst.volume.pre volume * bst.volume.post * + { " Volume " volume * bst.volume.post * +% { bst.volume.pre volume * bst.volume.post * series empty$ 'skip$ %% If there is series field @@ -1924,7 +2020,7 @@ FUNCTION {format.thesis.type} FUNCTION {format.tr.number} { type empty$ - { "Technical Report" } + { bst.techrep } { " " type * } if$ number empty$ @@ -2161,9 +2257,12 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma + % For Econometrica, publisher and its address are placed before edition, + % chapter and page number. output.address.organization.publisher format.edition output.nocomma format.chapter.pages output.nocomma +% output.address.organization.publisher bst.year.position #0 = not { format.year "year" output.check.nocomma } @@ -2408,6 +2507,8 @@ FUNCTION {techreport} 'skip$ if$ + format.url.doi output.nocomma + format.note output.nocomma fin.entry } @@ -2920,6 +3021,15 @@ FUNCTION {calc.flabel} } if$ 'flabel := + author empty$ + 'skip$ + { author num.names$ 'numnames := + numnames bst.max.author.num > + { alabel 'flabel := } + 'skip$ + if$ + } + if$ % For debug econ.debug #0 = not { "flabel = ``\texttt{" write$ @@ -3458,10 +3568,10 @@ ITERATE {forward.pass.two} FUNCTION{punctuation} { - "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" write$ newline$ - "% This bbl file is created by econ.bst ver." econ.version * write$ newline$ - "% The latest econ.bst is available at" write$ newline$ - "% <https://github.com/ShiroTakeda/econ-bst>" write$ newline$ newline$ + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" write$ newline$ + "% This bbl file is created by " econ.file * " ver." * econ.version * write$ newline$ + "% The latest " econ.file * " is available at " * write$ newline$ + "% <https://github.com/ShiroTakeda/econ-bst>" write$ newline$ newline$ } EXECUTE {punctuation} |