From 02193cc5ca03abf234d3bc9d77b4821d85f58c62 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Fri, 28 Feb 2020 03:02:25 +0000 Subject: CTAN sync 202002280302 --- biblio/bibtex/contrib/econ-bst/CHANGES.md | 59 +- biblio/bibtex/contrib/econ-bst/README.md | 22 +- .../contrib/econ-bst/customization/README.md | 45 +- .../contrib/econ-bst/customization/cited-part.tex | 93 +- .../contrib/econ-bst/customization/econ-a.bst | 210 +- .../contrib/econ-bst/customization/econ-a.pdf | Bin 65579 -> 76081 bytes .../contrib/econ-bst/customization/econ-a.tex | 2 +- .../contrib/econ-bst/customization/econ-abbr.bst | 4727 +++++++++++++++++++ .../contrib/econ-bst/customization/econ-abbr.pdf | Bin 0 -> 112009 bytes .../contrib/econ-bst/customization/econ-abbr.tex | 56 + .../contrib/econ-bst/customization/econ-aea.bst | 3604 +++++++++++++++ .../contrib/econ-bst/customization/econ-aea.pdf | Bin 0 -> 121134 bytes .../contrib/econ-bst/customization/econ-aea.tex | 58 + .../contrib/econ-bst/customization/econ-aer.bst | 3538 -------------- .../contrib/econ-bst/customization/econ-aer.pdf | Bin 100143 -> 0 bytes .../contrib/econ-bst/customization/econ-aer.tex | 55 - .../contrib/econ-bst/customization/econ-b.bst | 205 +- .../contrib/econ-bst/customization/econ-b.pdf | Bin 98518 -> 121531 bytes .../contrib/econ-bst/customization/econ-b.tex | 2 +- .../econ-bst/customization/econ-default.pdf | Bin 91915 -> 112697 bytes .../econ-bst/customization/econ-default.tex | 2 +- .../econ-bst/customization/econ-econometrica.bst | 256 +- .../econ-bst/customization/econ-econometrica.pdf | Bin 91963 -> 116359 bytes .../econ-bst/customization/econ-econometrica.tex | 4 +- .../contrib/econ-bst/customization/econ-jet.bst | 1773 ++++++-- .../contrib/econ-bst/customization/econ-jet.pdf | Bin 80407 -> 103727 bytes .../contrib/econ-bst/customization/econ-jet.tex | 18 +- .../contrib/econ-bst/customization/econ-jie.bst | 217 +- .../contrib/econ-bst/customization/econ-jie.pdf | Bin 80213 -> 0 bytes .../contrib/econ-bst/customization/econ-jie.tex | 2 +- .../contrib/econ-bst/customization/econ-jpe.bst | 4802 ++++++++++++++++++++ .../contrib/econ-bst/customization/econ-jpe.pdf | Bin 0 -> 110347 bytes .../contrib/econ-bst/customization/econ-jpe.tex | 56 + .../econ-bst/customization/econ-no-sort.bst | 202 +- .../econ-bst/customization/econ-no-sort.pdf | Bin 91057 -> 111928 bytes .../econ-bst/customization/econ-no-sort.tex | 2 +- .../econ-bst/customization/econ-numbers.pdf | Bin 91952 -> 111363 bytes .../econ-bst/customization/econ-numbers.tex | 2 +- .../contrib/econ-bst/customization/econ-old.bst | 3579 +++++++++++++++ .../contrib/econ-bst/customization/econ-old.pdf | Bin 0 -> 113125 bytes .../contrib/econ-bst/customization/econ-old.tex | 58 + biblio/bibtex/contrib/econ-bst/econ-example.bib | 487 +- biblio/bibtex/contrib/econ-bst/econ-example.pdf | Bin 179544 -> 194482 bytes biblio/bibtex/contrib/econ-bst/econ-example.tex | 161 +- biblio/bibtex/contrib/econ-bst/econ.bst | 198 +- 45 files changed, 19965 insertions(+), 4530 deletions(-) create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-abbr.bst create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-aea.bst create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex delete mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-aer.bst delete mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-aer.pdf delete mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-aer.tex delete mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-jpe.bst create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-old.bst create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf create mode 100644 biblio/bibtex/contrib/econ-bst/customization/econ-old.tex (limited to 'biblio/bibtex/contrib') diff --git a/biblio/bibtex/contrib/econ-bst/CHANGES.md b/biblio/bibtex/contrib/econ-bst/CHANGES.md index 3704d1fe74..70af69ab06 100644 --- a/biblio/bibtex/contrib/econ-bst/CHANGES.md +++ b/biblio/bibtex/contrib/econ-bst/CHANGES.md @@ -1,12 +1,69 @@ Changelogs for econ.bst ============================== +## Changelogs + +## Ver 2.7 + +* 2020-02-27: Modified the document files. + +* 2019-10-16: Modified the default style of econ.bst. The new default style is + simpler than the old one. + +* 2019-10-16: Set the roman font to font for URL (the default font for URL is + type writer font). This is the change made to TeX file (not to bst file). + +* 2019-10-15: Removed "Time-Stamp" lines from all bst files. + +* 2019-10-14: In the previous version of econ.bst, econ.bst cannot handle DOI + field with TeX control sequences such as underscore. The new econ.bst can + handle DOI field with TeX control sequences. + +* 2019-10-01: Modified `customization/README.md`. + +* 2019-09-26: Supported the abbreviated journal names for `econ-jpe.bst` because + JPE (Journal of Political Economy) uses abbreviated journal names. + +* 2019-09-21: Changed the default value for `bst.techrep`. + + +## Ver 2.6.1 + +* Changed `format.tr.number`. + +* Added the new style `econ-abbr.bst`. In this style, we use abbreviated names + for journal name such as "Am. Econ. Rev." for "American Economics Review". + The list of abbreviated names is provided in "journal_name.xlsx". + + To use abbreviated journal name, we have to hardcode the list of all + abbreviated journal names in the bst file. It makes the bst file quite + long. So this feature is not provided in the standard `econ.bst` and provided + only in `econ-abbr.bst` (and `econ-jet.bst`). + + +## Ver 2.6 + +* Added the new style `econ-aea.bst` and removed `econ-aer.bst`. `econ-aea.bst` + is the style for journals of AEA (American Economic Association) such as AER, + JEL, and AEJ. + +* Added the new function `bst.max.author.num`. If the number of authors exceeds + 12, the authors after the 2nd author are abbriviated by "et al.". + + +## Ver 2.5.1 + +* Added URL and DOI to techreport. + +* Changed the default setting of `bst.url.doi` to `#2` (this means that only DOI + is displayed if both DOI and URL fields have the values). + + ## Ver. 2.5 * Changed the license of `econ.bst` to the LaTeX Project Public License. diff --git a/biblio/bibtex/contrib/econ-bst/README.md b/biblio/bibtex/contrib/econ-bst/README.md index c9a06fa57e..553f8e9ced 100644 --- a/biblio/bibtex/contrib/econ-bst/README.md +++ b/biblio/bibtex/contrib/econ-bst/README.md @@ -3,7 +3,6 @@ Filename: README.md Author: Shiro Takeda e-mail First-written: <2017-07-30> -Time-stamp: <2018-12-07 17:12:31 st> --> econ.bst @@ -20,17 +19,20 @@ features: ## Explanation of files -| File | Explanation | -|:-----------------------------------------|:-------------------------------------------------------------| -| `econ.bst` | This is the main bst file. | -| `econ-example.tex` | This file explains how to use econ.bst. | -| [`econ-example.pdf`](econ-example.pdf) | A PDF file created fom `econ-example.tex`. | -| `econ-example.bib` | This is a bibliography database file. | -| `customization` | This folder contains customized bst files. | -| [`CHANGES.md`](CHANGES.md) | Changelog file. | -| `README.md` | This file. | +| File | Explanation | +|:---------------------------------------|:-------------------------------------------| +| `econ.bst` | This is the main bst file. | +| `econ-example.tex` | This file explains how to use econ.bst. | +| [`econ-example.pdf`](econ-example.pdf) | A PDF file created fom `econ-example.tex`. | +| `econ-example.bib` | This is a bibliography database file. | +| [`customization`](customization) | This folder contains customized bst files. | +| [`CHANGES.md`](CHANGES.md) | Changelog file. | +| `README.md` | This file. | + + + Contents of this folder ============================== + This folders includes bst files created by customizing econ.bst. + + These bst files are basically the same as econ.bst except that function named like + bst.xxx have different values. + If you want to customize econ.bst, see these files. -| bst file | Explanation | -|:---------------------|:--------------------------------------------------------| -| `econ.bst` | The default econ.bst file. | -| `econ-a.bst` | A simple style. | -| `econ-b.bst` | A style with much decoration. | -| `econ-aer.bst` | A style like AER (American Economic Review). | -| `econ-jet.bst` | A style like JET (Journal of Economic Theoriy). | -| `econ-no-sort.bst` | This style lists entries in citation order. | -| `econ-econometrica.bst` | A style like Econometrica. | -| `econ-jie.bst` | A style like JIE (Journal of International Economics). | - -| PDF file | Explanation | -|:---------------------|:--------------------------------------------------------| -| `econ-default.pdf` | PDF file created from econ.bst file. | -| `econ-numbers.pdf` | PDF file which use numerical citation mode. | - -Other PDF files are created from the corresponding bst files above. - +| bst file | PDF file | Explanation | +|:------------------------|:-------------------------------------------------|:----------------------------------------------------------| +| `econ.bst` | [`econ-default.pdf`](econ-default.pdf) | The default econ.bst file. | +| `econ-a.bst` | [`econ-a.pdf`](econ-a.pdf) | A simple style. | +| `econ-b.bst` | [`econ-b.pdf`](econ-b.pdf) | A style with much decoration. | +| `econ-no-sort.bst` | [`econ-no-sort.pdf`](econ-no-sort.pdf) | This style lists entries in citation order. | +| `econ-abbr.bst` | [`econ-abbr.pdf`](econ-abbr.pdf) | This style uses abbreviated journal name. | +| `econ-aea.bst` | [`econ-aea.pdf`](econ-aea.pdf) | The style for AEA journals such as AER, JEL, AEJ and JEP. | +| `econ-econometrica.bst` | [`econ-econometrica.pdf`](econ-econometrica.pdf) | The style for Econometrica. | +| `econ-jpe.bst` | [`econ-jpe.pdf`](econ-jpe.pdf) | The style for JPE (Journal of Poilitical Economy). | +| `econ-jet.bst` | [`econ-jet.pdf`](econ-jet.pdf) | The style for JET (Journal of Economic Theoriy). | +| `econ-jie.bst` | [`econ-jie.pdf`](econ-jie.pdf) | The style for JIE (Journal of International Economics). | +| `econ-old.bst` | [`econ-old.pdf`](econ-old.pdf) | The style of the old econ.bst. | +| | [`econ-numbers.pdf`](econ-numbers.pdf) | An example with numerical citation mode. | + + +| File | Explanation | +|:------------------|:--------------------------------------------------------------------------| +| journal_name.xlsx | This file stores correspondence between journal name and its abbreviation. | + + + + Only DOI field is displayed %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Other functions: @@ -736,7 +749,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: % @@ -746,7 +759,7 @@ FUNCTION {bst.mthesis} % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. thesis" } % (default) +{ " Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -1079,11 +1092,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$ } @@ -1159,56 +1198,62 @@ 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 = + % 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 - { 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 * } + { 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$ @@ -1935,7 +1980,7 @@ FUNCTION {format.thesis.type} FUNCTION {format.tr.number} { type empty$ - { "Technical Report" } + { bst.techrep } { " " type * } if$ number empty$ @@ -2172,9 +2217,9 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - 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 } @@ -2419,6 +2464,8 @@ FUNCTION {techreport} 'skip$ if$ + format.url.doi output.nocomma + format.note output.nocomma fin.entry } @@ -2931,6 +2978,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$ @@ -3469,10 +3525,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$ - "% " 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$ + "% " write$ newline$ newline$ } EXECUTE {punctuation} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf index 087a705082..7cfbd35d84 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex index 71051674e5..c1f366e76f 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex @@ -6,7 +6,7 @@ %% Use natbib.sty \usepackage{natbib} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.bst new file mode 100644 index 0000000000..7beacd5cf6 --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.bst @@ -0,0 +1,4727 @@ +%% econ.bst: BibTeX style file for papers in economics. +% +% Author: Shiro Takeda +% Maintainer: Shiro Takeda +% Copyright (C) 2001-2018 Shiro Takeda +% First-written: <2007/07/28> +% Version: 2.7 +% Keywords: TeX, BibTeX, bst +% URL: https://github.com/ShiroTakeda/econ-bst + +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% 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). + +% Bug reports, requests and suggestions are welcome. + +% For changelogs, see CHANGES.txt file. + +% version number +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "econ.bst" } + +% Debug mode. Non-zero makes debug mode on. +FUNCTION {econ.debug} +{ #0 } % Debug mode off (default). +% { #1 } % Debug mode on. + +ENTRY + %%% Declaration of field + { access address author booktitle chapter doi edition editor howpublished + institution journal key month note number organization pages publisher + school series title type url volume year + % Fields specific to econ.bst + order absorder nameorder + } + + % Definition of entry variable. The entry variable is a variable which has + % different values according to different entries. + %% Integer entry variable: + { order.cited } + + %% String entry variable + { label cyear flabel alabel extra.label sort.label sort.label.abb + extra.label.bysame nameorder.temp jname } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Use \bysame or not. +% +% If set to #0, \bysame is not used. +% If set to #1, \bysame is used +% If set to #2, \bysame is used (alternative abbreviation style). +% +% Note that integer number is expressed as # + integer in bst file. +% \bysame is the function that abbreviates succession of the same authors' name by ---. +% +% See econ-sample.pdf for details. +% +FUNCTION {bst.use.bysame} +% { #0 } % Not use \bysame +{ #1 } % -> Use \bysame (default) +% { #2 } % -> Use \bysame of alternative style. + +% The definition of \bysame command. +% +FUNCTION {bst.bysame.definition} +{ "\hskip.3em \leavevmode\rule[.5ex]{3em}{.3pt}\hskip0.5em" } % (default) +% { "\leavevmode\hbox to\leftmargin{\hrulefill\,\,}" } % If you set #2 to bst.use.bysame, use this. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The order of fist and last name. +% +FUNCTION {bst.author.name} +{ #0 } % (default) +% { #1 } +% { #2 } + +% Case of #0: First author -> last-first, other authors -> first-last. +% Fujita, Masahisa, Paul R. Krugman, and Anthony J. Venables. + +% Case of #1: All authors -> last-first +% Fujita, Masahisa, Krugman, Paul R., and Venables, Anthony J. + +% Case of #2: All authors -> first-last +% Masahisa Fujita, Paul R. Krugman, and Anthony J. Venables. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Abbreviate first name of authors (editors): +% +FUNCTION {bst.first.name.initial} +{ #0 } % #0 -> full letters (default). +% { #1 } % Non-zero -> initial letter only. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Decapitalize of strings in title field. +% +FUNCTION {bst.title.lower.case} +{ #0 } % If #0, not decapitalize title (default). +% { #1 } % If non-#0, decapitalize title + +% Hide title filed. +% +FUNCTION {bst.hide.title} +{ #0 } % #0 -> Title field is displayed (default) +% { #1 } % Non-zer -> Title field is hidden + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide month. +% +FUNCTION {bst.hide.month} +{ #0 } % #0 -> show month field (default). +% { #1 } % non-#0 -> hide month field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Attach number index like plain.bst. +% +FUNCTION {bst.use.number.index} +{ #0 } % Not use number index (default). +% { #1 } % Non-#0 -> Use number index + +% The string before number index: +% +FUNCTION {bst.number.index.pre} +{ "[" } % (default) + +% The string after number index. Adjustment is recommended. +% +FUNCTION {bst.number.index.post} +{ "]\hskip1.0em " } % (default) + +% Maximum digit of number index: +% If the number of reference items >= 100, set 3 to this function. +% If the number of reference items < 100, set 2 to this function. +% If the number of reference items < 10, set 1 to this function. +% +FUNCTION {bst.number.index.digit} +{ "2" } % (default) +% { "3" } + +% The functions below are used to adjust space and postion. If you use fonts +% other than computer modern fonts, you had better make adjustments. +% +% Setting for bst.number.index.digit = 1: +FUNCTION {bst.number.index.bibhang.one} +{ "2.05em" } % (default) +% Setting for bst.number.index.digit = 2: +FUNCTION {bst.number.index.bibhang.ten} +{ "2.55em" } % (default) +% Setting for bst.number.index.digit = 3: +FUNCTION {bst.number.index.bibhang.hund} +{ "3.05em" } % (default). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Position of "year": +% +% You can choose the position of year by this function. +% +% If set to #0, year is placed right after "author". +% If set to non-zero, year is placed at the end (before note field) except for +% aritcle type entry. +% +% In article type entry, the position of year changes according to the +% following rule: +% +% #1 -> year is placed at the end. +% #2 -> year is placed after journal name in aritcle type entry. +% #3 -> year is placed after volume in aritcle type entry. +% +FUNCTION {bst.year.position} +{ #0 } % (default). +% { #1 } % Last place before note. +% { #2 } % After journal name for aticle type entry. +% { #3 } % After volume for aticle type entry. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If 0, references are sorted by old documents -> recent documents. If +% non-zero, reverse order. +FUNCTION {bst.reverse.year} +{ #0 } % Normal order (old -> recent) (default). +% { #1 } % inverse order (recent -> old) + +% If non-zero, sort references by using year field as the primary key +% (chronological sorting). +FUNCTION {bst.sort.year} +{ #0 } % Normal case: year is used as the sorting key next to author (default). +% { #1 } % year is used as the primary sorting key. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If non-zero, references are listed in citation order. +% +FUNCTION {bst.no.sort} +{ #0 } % (default) +% { #1 } % listed in citation order. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Non-zero -> sort references by entry type (article, book, incollection etc.) +% +FUNCTION {bst.sort.entry.type} +{ #0 } % #0 -> Normal (not sort references by entry type) (default). +% { #1 } % Non-zero -> sort references by entry type. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use absorder field to sort items. Otherwise, ignore absorder field. +% +FUNCTION {bst.notuse.absorder.field} +{ #0 } % #0 -> Use absorder (default). +% { #1 } % Non-#0 -> Not use absorder. +% +% Order of priority to sort items +% +% absorder -> author -> year -> order -> month -> title +% +% wehre absorder and order fields are specific to econ.bst. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use order field to sort items. Otherwise, ignore order field. +% Note: order field is specific to econ.bst. +FUNCTION {bst.notuse.order.field} +{ #0 } % #0 -> Use order field (default). +% { #1 } % Non-#0 -> not use order field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% and + +%%% String used to separate author names in references. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.and} +{ " and " } % (default) + +%%% String used to separate author names in references (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.ands} +{ ", and " } % (default) + +%%% String used to separate author names in citation part. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.cite.and} +{ " and " } % (default) + +%%% String used to separate author names in citation part (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.cite.ands} +{ " and " } % (default) + +%%% If you want to use random author order for some bibliography entries, set +% non-zero to this function. +% +FUNCTION {bst.use.nameorder} +{ #1 } % Use random order (default) +% { #0 } % Not use random order + +%%% String used to separate author names in references for the entry of random +% author order. +% +FUNCTION {bst.and.nameorder} +{ " \textcircled{r} " } % (default) + +%%% String used to separate author names in citation part for the entry of +% random author order +% +FUNCTION {bst.cite.and.nameorder} +{ " \textcircled{r} " } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Author names in the citation part are abbreviated by et al. if the number of +% 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). + +% 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). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Strings used when abbreviating multiple-authors in citation part. +FUNCTION {bst.and.others} +{ " et~al." } % (default) + +% Strings used when abbreviating multiple-authors in citation part for entries +% with random author order. +FUNCTION {bst.and.others.nameorder} +{ " \textcircled{r}~al." } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% author + +% The string before author: +% +FUNCTION {bst.author.pre} +{ "" } % (default) + +% The string after author: +% +FUNCTION {bst.author.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% year + +% The string before year only for aritcle type entry. +% +FUNCTION {bst.year.pre} +{ " (" } % (default) + +% The string after year only for aritcle type entry. +% +FUNCTION {bst.year.post} +{ ") " } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.pre} +{ " (" } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.post} +{ ") " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% title (except for title in book) + +% The string before title: +% +FUNCTION {bst.title.pre} +{ "``" } % (default) + +% The string after title: +% +FUNCTION {bst.title.post} +{ ",''" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tile for book: + +% The string before book title: +% +FUNCTION {bst.book.pre} +{ " \textit{" } % (default) + +% The string after book title: +% +FUNCTION {bst.book.post} +{ "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booktitle + +% The string before booktitle: +% +FUNCTION {bst.btitle.pre} +{ " \textit{" } % (default) + +% The string after booktitle: +% +FUNCTION {bst.btitle.post} +{ "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% journal name + +% The string before journal name: +% +FUNCTION {bst.journal.pre} +{ " \textit{" } % (default) + +% The string after journal name: +% +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) + +% The string that indicates single editor: +% +FUNCTION {bst.editor} +{ " ed. " } % (default) + +% Order of editor and booktitle in incollection and inproceedings entries. +% +% If set to #0: editors -> booktitle order +% If set to non-zero: booktitle -> editors order +% +FUNCTION {bst.editor.btitle.order} +{ #0 } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% edition + +% The string before edition: +% +FUNCTION {bst.edition.pre} +{ ", " } % (default) + +% The string after edition: +% +FUNCTION {bst.edition.post} +{ " edition" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% volume + +% The string before volume: +% +FUNCTION {bst.volume.pre} +{ ", " } % (default) + +% The string after volume: +% +FUNCTION {bst.volume.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% number + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide number. If non-zero, number is suppressed. +FUNCTION {bst.hide.number} +{ #0 } % #0 -> show number field (default) +% { #1 } % non-#0 -> Hide number field. + +% The string before number: +% +FUNCTION {bst.number.pre} +{ " (" } % (default) + +% The string after number: +% +FUNCTION {bst.number.post} +{ ")" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% in + +% In +% +FUNCTION {bst.in} +{ " in " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% page + +% The string before page (multiple pages): +% +FUNCTION {bst.pages.pre} +{ ", " } % (default) + +% The string before page: +% +FUNCTION {bst.page.pre} +{ ", " } % (default) + +% The string after page (multiple pages): +% +FUNCTION {bst.pages.post} +{ "" } % (default) + +% The string after page: +% +FUNCTION {bst.page.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% chapter + +% The string before chapter: +% +FUNCTION {bst.chapter.pre} +{ ", Chap." } % (default) + +% The string after chapter: +% +FUNCTION {bst.chapter.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% month + +% The string before month: +% +FUNCTION {bst.month.pre} +{ ", " } % (default) + +% The string after month: +% +FUNCTION {bst.month.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% address +% The string before address: +% +FUNCTION {bst.address.pre} +{ ", " } % (default) + +% The string after address: +% +FUNCTION {bst.address.post} +{ "" } % (default) + +% You can choose the order of address and publisher by this function. +% +% If #0, address -> publisher order (the default value). +% If non-zero, publisher -> address order. + +FUNCTION {bst.address.position} +{ #0 } % Address is placed before publisher (default) +% { #1 } % Address is placed after publisher + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% publisher + +% The string before publisher: +% +FUNCTION {bst.publisher.pre} +{ ": " } % (default) + +% The string after publisher: +% +FUNCTION {bst.publisher.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% series + +% The string before series: +% +FUNCTION {bst.series.pre} +{ ", " } % (default) + +% The string after series: +% +FUNCTION {bst.series.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% organization + +% The string before organization: +% +FUNCTION {bst.organization.pre} +{ ", " } % (default) + +% The string after organization: +% +FUNCTION {bst.organization.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% school + +% The string before school: +% +FUNCTION {bst.school.pre} +{ ", " } % (default) + +% The string after school: +% +FUNCTION {bst.school.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% institution + +% The string before institution: +% +FUNCTION {bst.institution.pre} +{ ", " } % (default) + +% The string after institution: +% +FUNCTION {bst.institution.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% howpublished + +% The string before howpublished: +% +FUNCTION {bst.howpublished.pre} +{ " " } % (default) + +% The string after howpublished: +% +FUNCTION {bst.howpublished.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% url + +% Show or Hide url. If non-zero, url is displayed. Otherwise, url is suppressed. +FUNCTION {bst.show.url} +{ #1 } % non-#0 -> Show url field (default) +% { #0 } % #0 -> Not show url field. + +% The string before url: +% +FUNCTION {bst.url.pre} +{ ", \url{" } % (default) + +% The string after url: +% +FUNCTION {bst.url.post} +{ "}" } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Access + +% This setting is valid only if there are "access" field in bib +% files. The value of access field indicates accessed date for URL. + +% The string before access. +FUNCTION {bst.access.pre} +{ ", accessed on " } % (default) + +% The string after access. +FUNCTION {bst.access.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DOI (digital object identifier) + +% This setting is valid only if there are "doi" field in bib files. + +% Show or Hide DOI. If non-zero, DOI is displayed. Otherwise, DOI is suppressed. +FUNCTION {bst.show.doi} +{ #1 } % non-#0 -> Show DOI field (default) +% { #0 } % #0 -> Not show DOI field. + +% The string before DOI: +% +FUNCTION {bst.doi.pre} +{ ", \href{http://dx.doi.org/" doi * "}{\urlstyle{rm} \nolinkurl{" * } % (default) + +% The string after DOI: +% +FUNCTION {bst.doi.post} +{ "}}" } % (default) + +% How to show URL and DOI fields when both fields exist. +% +% #0 -> Both fields are displayed +% #1 -> Only URL field is displayed +% #2 -> Only DOI field is displayed +% +FUNCTION {bst.url.doi} +% { #0 } % -> Both fields are displayed +% { #1 } % -> Only URL field is displayed +{ #2 } % (default) --> Only DOI field is displayed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Other functions: + +% The string before note. +FUNCTION {bst.note.pre} +{ ", " } % (default) + +% The string after note. +FUNCTION {bst.note.post} +{ "" } % (default) + +% The string that represents Technical report: +% +FUNCTION {bst.techrep} +{ "Technical Report" } % (default) + +% The string that represents master thesis: +% +FUNCTION {bst.mthesis} +{ " Master's thesis" } % (default) + +% The string that represents phd thesis: +% +FUNCTION {bst.phdthesis} +{ " Ph.D. dissertation" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization end here: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bst.first} +{ "1st" } + +FUNCTION {bst.second} +{ "2nd" } + +FUNCTION {bst.third} +{ "3rd" } + +FUNCTION {bst.fourth} +{ "4th" } + +FUNCTION {bst.fifth} +{ "5th" } + +FUNCTION {bst.st} +{ "st" } + +FUNCTION {bst.nd} +{ "nd" } + +FUNCTION {bst.rd} +{ "rd" } + +FUNCTION {bst.th} +{ "th" } + +%%%%% memo by Takeda + +% "a" 'b := indicates substituting string "a" for variable b. + +% Integer number #0, #1,... + +%%% Function definition: +% +% FUNCTION {name} +% { 's := +% +% } +% +% This is the definition of a function named "name". The function "name" is +% used in the following way +% +% "foo" name +% "foo" is an argument for the function "name". +% +% About the definition of a function with more than two arguments, see the +% definition of "chop.word". + +%%% Declaration of variables: + +%% String global variables: +STRINGS { s t tt } +STRINGS { year.num } +STRINGS { preone preten } +STRINGS { last.sort.label next.extra prev.author prev.author.aer this.author } +STRINGS { hang } +STRINGS { item.type } +STRINGS { tempa tempb } + +%% Integer global variables: +INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { multiresult } +INTEGERS { index } +INTEGERS { len } +INTEGERS { last.extra.num } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +INTEGERS { last.period.comma } +INTEGERS { len1.aer len2.aer i.aer } + +%%% Definition of functions: +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +%%% Initialize variables: +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +%%% Remove comma and add period: +% +%%% +FUNCTION {add.period.x} +{ duplicate$ + #-1 #1 substring$ "," = + { #-2 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ". " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ", " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ",'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #2 substring$ ",~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #3 substring$ ",''" = + { #-4 global.max$ substring$ ".''" * } + { duplicate$ + #-1 #3 substring$ ".''" = + { #-4 global.max$ substring$ ".''" * } + { add.period$ } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {output.nonnull} +{ 's := + % mid.sentence + output.state mid.sentence = + { ", " * write$ } + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period.x " " * write$ } + if$ + } + if$ + % not mid.sentence, set to mid.sentence + mid.sentence 'output.state := + } + if$ + s +} + +%%% If the last character is period or comma, set non-zero to +%%% last.period.comma. +FUNCTION {period.comma.p} +{ duplicate$ 't := + t #-1 #1 substring$ "." = + t #-1 #1 substring$ "," = or + t #-1 #1 substring$ ":" = or + t #-1 #2 substring$ ".'" = or + t #-1 #2 substring$ ",'" = or + t #-1 #3 substring$ ".''" = or + t #-1 #3 substring$ ",''" = or + t #-1 #2 substring$ ".~" = or + t #-1 #2 substring$ ",~" = or + { #1 'last.period.comma := } + { #0 'last.period.comma := } + if$ +} + +%%% remove unnecessary comma. +FUNCTION {remove.pre.comma} +{ 's := + s empty$ + { "" } + { s #1 #1 substring$ "," = + { s #2 global.max$ substring$ } + { s #1 #1 substring$ "." = + { s #2 global.max$ substring$ } + 's + if$ + } + if$ + } + if$ +} + +%%% output.nonnull.nocomma is the same as output.nonnull except that it does +%%% not add commas even in mid.sentence. +FUNCTION {output.nonnull.nocomma} +{ 's := + output.state mid.sentence = + % mid.sentence + { period.comma.p "" * write$ } + + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + last.period.comma #0 = + { s } + { s remove.pre.comma } + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output} +% { duplicate$ empty$ +% 'pop$ +% 'output.nonnull +% if$ +% } + +FUNCTION {output.nocomma} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull.nocomma + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output.check} +% { 't := +% duplicate$ empty$ +% { pop$ "empty " t * " in " * cite$ * warning$ } +% 'output.nonnull +% if$ +% } + +FUNCTION {output.check.nocomma} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull.nocomma + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Format in bbl file: + +% \harvarditem[Brezis et~al.]{Brezis, Krugman and +% Tsiddon}{1993}{brezis93:_leapf_inter_compet} +% Brezis, Elise~S., Paul~R. Krugman, and Daniel Tsiddon (1993) ``Leapfrogging in +% International Competition: A Theory of Cycles in National Technological +% Leadership.'', {\em American Economic Review.}, Vol.~83. No.~5. pp. +% 1211--1219. + +% \harvarditem[abbreviated citation]{full citation}{year}{keyword} ... + +%%% Add period and newline. +FUNCTION {fin.entry} +{ add.period.x + 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 {new.block.check} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +%%% booktitle +FUNCTION {format.btitle} +{ booktitle empty$ + { "" } + { bst.btitle.pre booktitle * bst.btitle.post * } + 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$ + s "Academy of Management Journal" = + { "Acad. Manage. Rev." 'jname := } + 'skip$ + if$ + s "Accounting Review" = + { "Account. Rev." 'jname := } + 'skip$ + if$ + s "Accounting, Organizations and Society" = + { "Account. Org. Soc." 'jname := } + 'skip$ + if$ + s "Accounting, Organizations and Society" = + { "Admin. Sci. Quart." 'jname := } + 'skip$ + if$ + s "Administrative Science Quarterly" = + { "Agr. Econ." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Applied Economics" = + { "Am. Econ. J. Appl. Econ." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Economic Policy" = + { "Am. Econ. J. Econ. Policy" 'jname := } + 'skip$ + if$ + s "American Economic Journal: Macroeconomics" = + { "Am. Econ. J. Macro." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Microeconomics" = + { "Am. Econ. J. Micro." 'jname := } + 'skip$ + if$ + s "American Economic Review" = + { "Am. Econ. Rev." 'jname := } + 'skip$ + if$ + s "American Journal of Agricultural Economics" = + { "Am. J. Agr. Econ." 'jname := } + 'skip$ + if$ + s "American Journal of Economics and Sociology" = + { "Am. J. Econ. Sociol." 'jname := } + 'skip$ + if$ + s "Applied Economics" = + { "Appl. Econ." 'jname := } + 'skip$ + if$ + s "Applied Economics Letters" = + { "Appl. Econ. Lett." 'jname := } + 'skip$ + if$ + s "Applied Energy" = + { "Appl. Energ." 'jname := } + 'skip$ + if$ + s "Applied Stochastic Models in Business and Industry" = + { "Appl. Stoch. Model Bus." 'jname := } + 'skip$ + if$ + s "Auditing: A Journal of Practise and Theory" = + { "Auditing.-J. Pract. Th." 'jname := } + 'skip$ + if$ + s "Australian Journal of Agricultural and Resource Economics" = + { "Aust. J. Agr. Resour. Ec." 'jname := } + 'skip$ + if$ + s "B.E. Journal of Economic Analysis \& Policy" = + { "B.E. J. Econ. Anal. Policy" 'jname := } + 'skip$ + if$ + s "Betriebswirtschaftliche Forschung Und Praxis" = + { "Betrieb. Forsch. Prax." 'jname := } + 'skip$ + if$ + s "British Journal of Industrial Relations" = + { "Brit. J. Ind. Relat." 'jname := } + 'skip$ + if$ + s "British Journal of Management" = + { "Brit. J. Manage." 'jname := } + 'skip$ + if$ + s "Bulletin of Indonesian Economic Studies" = + { "B. Indones. Econ. Stud." 'jname := } + 'skip$ + if$ + s "Business Ethics Quarterly" = + { "Bus. Ethics Q." 'jname := } + 'skip$ + if$ + s "Business History" = + { "Bus. Hist." 'jname := } + 'skip$ + if$ + s "Business History Review" = + { "Bus. Hist. Rev." 'jname := } + 'skip$ + if$ + s "Business Lawyer" = + { "Bus. Lawyer" 'jname := } + 'skip$ + if$ + s "California Management Review" = + { "Calif. Manage. Rev." 'jname := } + 'skip$ + if$ + s "Cambridge Journal of Economics" = + { "Cambridge J. Econ." 'jname := } + 'skip$ + if$ + s "Canadian Journal of Administrative Sciences" = + { "Can. J. Adm. Sci." 'jname := } + 'skip$ + if$ + s "Canadian Journal of Economics" = + { "Can. J. Econ." 'jname := } + 'skip$ + if$ + s "China Economic Review" = + { "China. Econ. Rev." 'jname := } + 'skip$ + if$ + s "Climate Change Economics" = + { "Clim. Change Econ." 'jname := } + 'skip$ + if$ + s "Climate Policy" = + { "Clim. Policy" 'jname := } + 'skip$ + if$ + s "Communications in Statistics – Part A: Theory and Methods" = + { "Commun. Stat.-Theor. M." 'jname := } + 'skip$ + if$ + s "Computational Economics" = + { "Computation. Econ." 'jname := } + 'skip$ + if$ + s "Computational Statistics" = + { "Computation. Stat." 'jname := } + 'skip$ + if$ + s "Computational Statistics and Data Analysis" = + { "Comput. Stat. Data An." 'jname := } + 'skip$ + if$ + s "Contemporary Accounting Research" = + { "Contemp. Account. Res." 'jname := } + 'skip$ + if$ + s "Contemporary Economic Policy" = + { "Contemp. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Defence and Peace Economics" = + { "Defence Peace Econ." 'jname := } + 'skip$ + if$ + s "Development Economics" = + { "Dev. Econ." 'jname := } + 'skip$ + if$ + s "Eastern European Economics" = + { "Eastern Eur. Econ." 'jname := } + 'skip$ + if$ + s "Ecological Economics" = + { "Ecol. Econ." 'jname := } + 'skip$ + if$ + s "Econometric Theory" = + { "Economet. Theor." 'jname := } + 'skip$ + if$ + s "Econometrica" = + { "Econometrica" 'jname := } + 'skip$ + if$ + s "Economic and Industrial Democracy" = + { "Econ. Ind. Democr." 'jname := } + 'skip$ + if$ + s "Economic Development and Cultural Change" = + { "Econ. Dev. Cult. Change" 'jname := } + 'skip$ + if$ + s "Economic Development and Cultural Change" = + { "Economist.-Netherland" 'jname := } + 'skip$ + if$ + s "Economic Development Quarterly" = + { "Econ. Dev. Q." 'jname := } + 'skip$ + if$ + s "Economic Geography" = + { "Econ. Geogr." 'jname := } + 'skip$ + if$ + s "Economic History Review" = + { "Econ. Hist. Rev." 'jname := } + 'skip$ + if$ + s "Economic Inquiry" = + { "Econ. Inq." 'jname := } + 'skip$ + if$ + s "Economic Journal" = + { "Econ. J." 'jname := } + 'skip$ + if$ + s "Economic Modelling" = + { "Econ. Model." 'jname := } + 'skip$ + if$ + s "Economic Policy" = + { "Econ. Policy" 'jname := } + 'skip$ + if$ + s "Economic Record" = + { "Econ. Rec." 'jname := } + 'skip$ + if$ + s "Economic Theory" = + { "Econ. Theor." 'jname := } + 'skip$ + if$ + s "Economica" = + { "Economica" 'jname := } + 'skip$ + if$ + s "Economics and Philosophy" = + { "Econ. Philos." 'jname := } + 'skip$ + if$ + s "Economics Letters" = + { "Econ. Lett." 'jname := } + 'skip$ + if$ + s "Economics of Education Review" = + { "Econ. Educ. Rev." 'jname := } + 'skip$ + if$ + s "Economics of Energy \& Environmental Policy" = + { "Econ. Energ. Environ. Policy" 'jname := } + 'skip$ + if$ + s "Economics of Transition" = + { "Econ. Transit." 'jname := } + 'skip$ + if$ + s "Economy and Society" = + { "Econ. Soc." 'jname := } + 'skip$ + if$ + s "Ekonomicky Casopis" = + { "Ekon. Cas." 'jname := } + 'skip$ + if$ + s "Ekonomiska Samfundets Tidskrift" = + { "Ekon. Samf. Tidskr." 'jname := } + 'skip$ + if$ + s "Emerging Markets Finance and Trade" = + { "Emerg. Mark. Financ. Tr." 'jname := } + 'skip$ + if$ + s "Energy Economics" = + { "Energ. Econ." 'jname := } + 'skip$ + if$ + s "Energy Journal" = + { "Energ. J." 'jname := } + 'skip$ + if$ + s "Energy Policy" = + { "Energ. Policy" 'jname := } + 'skip$ + if$ + s "Entrepreneurship \& Regional Development" = + { "Entrep. Region. Dev." 'jname := } + 'skip$ + if$ + s "Entrepreneurship Theory and Practice" = + { "Entrep. Theory Pract." 'jname := } + 'skip$ + if$ + s "Environment and Development Economics" = + { "Environ. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Environmental and Resource Economics" = + { "Environ. Resour. Econ." 'jname := } + 'skip$ + if$ + s "Environmental Economics and Policy Studies" = + { "Environ. Econ. Policy Stud." 'jname := } + 'skip$ + if$ + s "Environmental Science and Policy" = + { "Environ. Sci. Policy" 'jname := } + 'skip$ + if$ + s "Environmental Science \& Technology" = + { "Environ. Sci. Technol." 'jname := } + 'skip$ + if$ + s "Eurasian Geography and Economics " = + { "Eurasian Geogr. Econ." 'jname := } + 'skip$ + if$ + s "European Economic Review" = + { "Eur. Econ. Rev." 'jname := } + 'skip$ + if$ + s "European Journal of Industrial Relations" = + { "Eur. J. Ind. Relat." 'jname := } + 'skip$ + if$ + s "European Review of Agricultural Economics" = + { "Eur. Rev. Agric. Econ." 'jname := } + 'skip$ + if$ + s "Europe-Asia Studies" = + { "Europe-Asia Stud." 'jname := } + 'skip$ + if$ + s "Explorations in Economic History" = + { "Explor. Econ. Hist." 'jname := } + 'skip$ + if$ + s "Feminist Economics" = + { "Fem. Econ." 'jname := } + 'skip$ + if$ + s "Finance a Uver" = + { "Financ. Uver." 'jname := } + 'skip$ + if$ + s "Finance and Stochastics" = + { "Financ. Stoch." 'jname := } + 'skip$ + if$ + s "Financial Analysts Journal" = + { "Financ. Anal. J." 'jname := } + 'skip$ + if$ + s "Financial Management" = + { "Financ. Manage." 'jname := } + 'skip$ + if$ + s "Fiscal Studies" = + { "Fisc. Stud." 'jname := } + 'skip$ + if$ + s "Food Policy" = + { "Food. Policy." 'jname := } + 'skip$ + if$ + s "Futures" = + { "Futures" 'jname := } + 'skip$ + if$ + s "Games and Economic Behavior" = + { "Game Econ. Behav." 'jname := } + 'skip$ + if$ + s "Health Economics" = + { "Health Econ." 'jname := } + 'skip$ + if$ + s "Hitotsubashi Journal of Economics" = + { "Hitotsub. J. Econ." 'jname := } + 'skip$ + if$ + s "IMF Staff Papers" = + { "Imf. Staff. Papers" 'jname := } + 'skip$ + if$ + s "Industrial and Corporate Change" = + { "Ind. Corp. Change" 'jname := } + 'skip$ + if$ + s "Industrial and Labor Relations Review" = + { "Ind. Labor. Relat. Rev." 'jname := } + 'skip$ + if$ + s "Industrial Marketing Management" = + { "Ind. Market Manag." 'jname := } + 'skip$ + if$ + s "Industrial Relations" = + { "Ind. Relat." 'jname := } + 'skip$ + if$ + s "Information Economics and Policy" = + { "Info. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Insurance: Mathematics and Economics" = + { "Insur. Math. Econ." 'jname := } + 'skip$ + if$ + s "International Economic Review" = + { "Int. Econ. Rev." 'jname := } + 'skip$ + if$ + s "International Journal of Electronics and Telecommunications" = + { "Int. J. Electron. Comm." 'jname := } + 'skip$ + if$ + s "International Journal of Economic Theory" = + { "Int. J. Econ. Theory" 'jname := } + 'skip$ + if$ + s "International Journal of Finance \& Economics" = + { "Int. J. Financ. Econ." 'jname := } + 'skip$ + if$ + s "International Journal of Forecasting" = + { "Int. J. Forecast." 'jname := } + 'skip$ + if$ + s "International Journal of Game Theory" = + { "Int. J. Game. Theory" 'jname := } + 'skip$ + if$ + s "International Journal of Industrial Organization" = + { "Int. J. Ind. Organ." 'jname := } + 'skip$ + if$ + s "International Journal of Manpower" = + { "Int. J. Manpow." 'jname := } + 'skip$ + if$ + s "International Journal of Market Research" = + { "Int. J. Market Res." 'jname := } + 'skip$ + if$ + s "International Journal of Research in Marketing" = + { "Int. J. Res. Mark." 'jname := } + 'skip$ + if$ + s "International Labour Review" = + { "Int. Labour Rev." 'jname := } + 'skip$ + if$ + s "International Marketing Review" = + { "Int. Market. Rev." 'jname := } + 'skip$ + if$ + s "International Review of Applied Economics" = + { "Int. Rev. Appl. Econ." 'jname := } + 'skip$ + if$ + s "International Review of Law and Economics" = + { "Int. Rev. Law Econ." 'jname := } + 'skip$ + if$ + s "International Small Business Journal" = + { "Int. Small. Bus. J." 'jname := } + 'skip$ + if$ + s "International Tax and Public Finance" = + { "Int. Tax Public Finan." 'jname := } + 'skip$ + if$ + s "Jahrbücher für Nationalökonomie und Statistik" = + { "Jahrb. Natl. Stat." 'jname := } + 'skip$ + if$ + s "Japan and the World Economy" = + { "Jpn. World Econ." 'jname := } + 'skip$ + if$ + s "Japanese Economic Review" = + { "Jpn. Econ. Rev." 'jname := } + 'skip$ + if$ + s "JCMS-journal of Common Market Studies" = + { "Jcms.-J. Common. Mark. S." 'jname := } + 'skip$ + if$ + s "Journal of Accounting and Economics" = + { "J. Account. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Accounting Research" = + { "J. Account. Res." 'jname := } + 'skip$ + if$ + s "Journal of Advertising" = + { "J. Advertising" 'jname := } + 'skip$ + if$ + s "Journal of Advertising Research" = + { "J. Advertising Res." 'jname := } + 'skip$ + if$ + s "Journal of African Economies" = + { "J. Afr. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Agricultural and Resource Economics" = + { "J. Agr. Resour. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Agricultural Economics" = + { "J. Agr. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Applied Econometrics" = + { "J. Appl. Econom." 'jname := } + 'skip$ + if$ + s "Journal of Banking and Finance" = + { "J. Bank Financ." 'jname := } + 'skip$ + if$ + s "Journal of Business" = + { "J. Bus." 'jname := } + 'skip$ + if$ + s "Journal of Business and Economic Statistics" = + { "J. Bus. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Journal of Business and Psychology" = + { "J. Bus. Psychol." 'jname := } + 'skip$ + if$ + s "Journal of Business and Technical Communication" = + { "J. Bus. Tech. Commun." 'jname := } + 'skip$ + if$ + s "Journal of Business Ethics" = + { "J. Bus. Ethics" 'jname := } + 'skip$ + if$ + s "Journal of Business Research" = + { "J. Bus. Res." 'jname := } + 'skip$ + if$ + s "Journal of Business Venturing" = + { "J. Bus. Venturing." 'jname := } + 'skip$ + if$ + s "Journal of Cleaner Productiond" = + { "J. Clean. Prod." 'jname := } + 'skip$ + if$ + s "Journal of Comparative Economics" = + { "J. Comp. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Consumer Affairs" = + { "J. Consum. Aff." 'jname := } + 'skip$ + if$ + s "Journal of Consumer Research" = + { "J. Consum. Res." 'jname := } + 'skip$ + if$ + s "Journal of Corporate Finance" = + { "J. Corp. Financ." 'jname := } + 'skip$ + if$ + s "Journal of Development Economics" = + { "J. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Econometrics" = + { "J. Econometrics" 'jname := } + 'skip$ + if$ + s "Journal of Economic Behavior and Organization" = + { "J. Econ. Behav. Organ." 'jname := } + 'skip$ + if$ + s "Journal of Economic Dynamics and Control" = + { "J. Econ. Dyn. Control" 'jname := } + 'skip$ + if$ + s "Journal of Economic Education" = + { "J. Econ. Educ." 'jname := } + 'skip$ + if$ + s "Journal of Economic Geography" = + { "J. Econ. Geogr." 'jname := } + 'skip$ + if$ + s "Journal of Economic Growth" = + { "J. Econ. Growth" 'jname := } + 'skip$ + if$ + s "Journal of Economic History" = + { "J. Econ. Hist." 'jname := } + 'skip$ + if$ + s "Journal of Economic Integration" = + { "J. Econ. Integr." 'jname := } + 'skip$ + if$ + s "Journal of Economic Issues" = + { "J. Econ. Issues." 'jname := } + 'skip$ + if$ + s "Journal of Economic Perspectives" = + { "J. Econ. Perspect." 'jname := } + 'skip$ + if$ + s "Journal of Economic Psychology" = + { "J. Econ. Psychol." 'jname := } + 'skip$ + if$ + s "Journal of Economic Literature" = + { "J. Econ. Lit." 'jname := } + 'skip$ + if$ + s "Journal of Economic Surveys" = + { "J. Econ. Surv." 'jname := } + 'skip$ + if$ + s "Journal of Economic Theory" = + { "J. Econ. Theory" 'jname := } + 'skip$ + if$ + s "Journal of Economics" = + { "J. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Economics and Management Strategy" = + { "J. Econ. Manage. Strat." 'jname := } + 'skip$ + if$ + s "Journal of Environmental Economics and Management" = + { "J. Environ. Econ. Manag." 'jname := } + 'skip$ + if$ + s "Journal of Evolutionary Economics" = + { "J. Evol. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Finance" = + { "J. Financ." 'jname := } + 'skip$ + if$ + s "Journal of Financial and Quantitative Analysis" = + { "J. Financ. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Financial Economics" = + { "J. Financ. Intermed." 'jname := } + 'skip$ + if$ + s "Journal of Financial Intermediation" = + { "J. Financ. Mark." 'jname := } + 'skip$ + if$ + s "Journal of Financial Markets" = + { "J. Financ. Quant. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Forecasting" = + { "J. Forecasting." 'jname := } + 'skip$ + if$ + s "Journal of Futures Markets" = + { "J. Futures Market" 'jname := } + 'skip$ + if$ + s "Journal of Health Economics" = + { "J. Health Econ." 'jname := } + 'skip$ + if$ + s "Journal of Housing Economics" = + { "J. Hous. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Human Resources" = + { "J. Hum. Resour." 'jname := } + 'skip$ + if$ + s "Journal of Industrial Economics" = + { "J. Ind. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Institutional and Theoretical Economics" = + { "J. Inst. Theor. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Integrated Disaster Risk Management" = + { "J. Integr. Disaster Risk Manag." 'jname := } + 'skip$ + if$ + s "Journal of International Business Studies" = + { "J. Int. Bus. Stud." 'jname := } + 'skip$ + if$ + s "Journal of International Economics" = + { "J. Int. Econ." 'jname := } + 'skip$ + if$ + s "Journal of International Marketing" = + { "J. Int. Marketing" 'jname := } + 'skip$ + if$ + s "Journal of International Money and Finance" = + { "J. Int. Money Financ." 'jname := } + 'skip$ + if$ + s "Journal of Labor Economics" = + { "J. Labor Econ." 'jname := } + 'skip$ + if$ + s "Journal of Labor Research" = + { "J. Labor Res." 'jname := } + 'skip$ + if$ + s "Journal of Law and Economics" = + { "J. Law. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Law, Economics, and Organization" = + { "J. Law. Econ. Organ." 'jname := } + 'skip$ + if$ + s "Journal of Macroeconomics" = + { "J. Macroecon." 'jname := } + 'skip$ + if$ + s "Journal of Management" = + { "J. Manage." 'jname := } + 'skip$ + if$ + s "Journal of Management Studies" = + { "J. Manage. Stud." 'jname := } + 'skip$ + if$ + s "Journal of Marketing" = + { "J. Marketing" 'jname := } + 'skip$ + if$ + s "Journal of Marketing Research" = + { "J. Marketing Res." 'jname := } + 'skip$ + if$ + s "Journal of Mathematical Economics" = + { "J. Math. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Media Economics" = + { "J. Media Econ." 'jname := } + 'skip$ + if$ + s "Journal of Monetary Economics" = + { "J. Monetary. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Money, Credit and Banking" = + { "J. Money Credit Bank." 'jname := } + 'skip$ + if$ + s "Journal of Policy Modeling" = + { "J. Policy Model." 'jname := } + 'skip$ + if$ + s "Journal of Political Economy" = + { "J. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Population Economics" = + { "J. Popul. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Portfolio Management" = + { "J. Portfolio Manage." 'jname := } + 'skip$ + if$ + s "Journal of Post Keynesian Economics" = + { "J. Post Keynesian Ec." 'jname := } + 'skip$ + if$ + s "Journal of Product Innovation Management" = + { "J. Prod. Innovat. Manag." 'jname := } + 'skip$ + if$ + s "Journal of Productivity Analysis" = + { "J. Prod. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Public Economics" = + { "J. Public Econ." 'jname := } + 'skip$ + if$ + s "Journal of Public Policy and Marketing" = + { "J. Public Policy Mark." 'jname := } + 'skip$ + if$ + s "Journal of Real Estate Finance and Economics" = + { "J. Real Estate Financ." 'jname := } + 'skip$ + if$ + s "Journal of Regulatory Economics" = + { "J. Regul. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Retailing" = + { "J. Retailing" 'jname := } + 'skip$ + if$ + s "Journal of Risk and Insurance" = + { "J. Risk. Insur" 'jname := } + 'skip$ + if$ + s "Journal of Risk and Uncertainty" = + { "J. Risk Uncertainty" 'jname := } + 'skip$ + if$ + s "Journal of Statistical Computation and Simulation" = + { "J. Stat. Comput. Sim." 'jname := } + 'skip$ + if$ + s "Journal of Statistical Planning and Inference" = + { "J. Stat. Plan. Infer." 'jname := } + 'skip$ + if$ + s "Journal of the Academy of Marketing Science" = + { "J. Acad. Market. Sci." 'jname := } + 'skip$ + if$ + s "Journal of the American Statistical Association" = + { "J. Am. Stat. Assoc." 'jname := } + 'skip$ + if$ + s "Journal of the European Economic Association" = + { "J. Eur. Econ. Assoc." 'jname := } + 'skip$ + if$ + s "Journal of the Japanese and International Economies" = + { "J. Jpn. Int. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Time Series Analysis" = + { "J. Time Ser. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Transport Economics and Policy" = + { "J. Transp. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Journal of Urban Economics" = + { "J. Urban Econ." 'jname := } + 'skip$ + if$ + s "Journal of World Business" = + { "J. World. Bus." 'jname := } + 'skip$ + if$ + s "Kyklos" = + { "Kyklos" 'jname := } + 'skip$ + if$ + s "Labor History" = + { "Labor Hist." 'jname := } + 'skip$ + if$ + s "Labour Economics" = + { "Labour Econ." 'jname := } + 'skip$ + if$ + s "Land Economics" = + { "Land Econ." 'jname := } + 'skip$ + if$ + s "Long Range Planning" = + { "Long Range Plann." 'jname := } + 'skip$ + if$ + s "Macroeconomic Dynamics" = + { "Macroecon. Dyn." 'jname := } + 'skip$ + if$ + s "Management Science" = + { "Manage. Sci." 'jname := } + 'skip$ + if$ + s "Manchester School" = + { "Manch. Sch." 'jname := } + 'skip$ + if$ + s "Marketing Letters" = + { "Market. Lett." 'jname := } + 'skip$ + if$ + s "Marketing Science" = + { "Market. Sci." 'jname := } + 'skip$ + if$ + s "Materials Transactions" = + { "Mater. Trans." 'jname := } + 'skip$ + if$ + s "Mathematical Finance" = + { "Math. Financ." 'jname := } + 'skip$ + if$ + s "Monthly Labor Review" = + { "Mon. Labor Rev." 'jname := } + 'skip$ + if$ + s "National Tax Journal" = + { "Natl. Tax. J." 'jname := } + 'skip$ + if$ + s "New England Economic Review" = + { "New Engl. Econ. Rev." 'jname := } + 'skip$ + if$ + s "New Political Economy" = + { "New Polit. Econ." 'jname := } + 'skip$ + if$ + s "Open Economies Review" = + { "Open. Econ. Rev." 'jname := } + 'skip$ + if$ + s "Organizational Dynamics" = + { "Organ. Dyn." 'jname := } + 'skip$ + if$ + s "Oxford Bulletin of Economics and Statistics" = + { "Oxford. B. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Oxford Economic Papers" = + { "Oxford Econ. Pap." 'jname := } + 'skip$ + if$ + s "Oxford Review of Economic Policy" = + { "Oxford. Rev. Econ. Pol." 'jname := } + 'skip$ + if$ + s "Politicka Ekonomie" = + { "Polit. Ekon." 'jname := } + 'skip$ + if$ + s "Population and Development Review" = + { "Popul. Dev. Rev." 'jname := } + 'skip$ + if$ + s "Post-Communist Economies" = + { "Post.-Communist. Econ." 'jname := } + 'skip$ + if$ + s "Post-Soviet Affairs" = + { "Post.-Sov. Aff." 'jname := } + 'skip$ + if$ + s "Psychology \& Marketing" = + { "Psychol. Market." 'jname := } + 'skip$ + if$ + s "Public Choice" = + { "Public. Choice." 'jname := } + 'skip$ + if$ + s "Quantitative Finance" = + { "Quant. Financ." 'jname := } + 'skip$ + if$ + s "Quarterly Journal of Economics" = + { "Q. J. Econ." 'jname := } + 'skip$ + if$ + s "R\&D Management" = + { "R.\&D. Manage." 'jname := } + 'skip$ + if$ + s "RAND Journal of Economics" = + { "Rand. J. Econ." 'jname := } + 'skip$ + if$ + s "Real Estate Economics" = + { "Real Estate Econ." 'jname := } + 'skip$ + if$ + s "Regional Science and Urban Economics" = + { "Reg. Sci. Urban. Econ." 'jname := } + 'skip$ + if$ + s "Regional Studies" = + { "Reg. Stud." 'jname := } + 'skip$ + if$ + s "Relations Industrielles-Industrial Relations" = + { "Relat. Ind.-Ind. Relat." 'jname := } + 'skip$ + if$ + s "Research-Technology Management" = + { "Res. Technol. Manage." 'jname := } + 'skip$ + if$ + s "Resource and Energy Economics" = + { "Resour. Energy. Econ." 'jname := } + 'skip$ + if$ + s "Review of Accounting Studies" = + { "Rev. Acc. Stud." 'jname := } + 'skip$ + if$ + s "Review of Agricultural Economics" = + { "Rev. Agr. Econ." 'jname := } + 'skip$ + if$ + s "Review of Development Economics" = + { "Rev. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Review of Economic Dynamics" = + { "Rev. Econ. Dynam." 'jname := } + 'skip$ + if$ + s "Review of Economic Studies" = + { "Rev. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Review of Economics and Statistics" = + { "Rev. Econ. Stud." 'jname := } + 'skip$ + if$ + s "Review of Financial Studies" = + { "Rev. Financ. Stud." 'jname := } + 'skip$ + if$ + s "Review of Income and Wealth" = + { "Rev. Income Wealth" 'jname := } + 'skip$ + if$ + s "Review of Industrial Organization" = + { "Rev. Ind. Organ." 'jname := } + 'skip$ + if$ + s "Review of International Economics" = + { "Rev. Int. Econ." 'jname := } + 'skip$ + if$ + s "Review of International Political Economy" = + { "Rev. Int. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Review of World Economics" = + { "Rev. World Econ." 'jname := } + 'skip$ + if$ + s "Scandinavian Journal of Economics" = + { "Scand. J. Econ." 'jname := } + 'skip$ + if$ + s "Scottish Journal of Political Economy" = + { "Scot. J. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Small Business Economics" = + { "Small. Bus. Econ." 'jname := } + 'skip$ + if$ + s "Social Choice and Welfare" = + { "Soc. Choice Welfare" 'jname := } + 'skip$ + if$ + s "South African Journal of Economics" = + { "S. Afr. J. Econ." 'jname := } + 'skip$ + if$ + s "Southern Economic Journal" = + { "South. Econ. J." 'jname := } + 'skip$ + if$ + s "Strategic Management Journal" = + { "Statistics." 'jname := } + 'skip$ + if$ + s "Strategic Management Journal" = + { "Strategic Manage. J." 'jname := } + 'skip$ + if$ + s "Studies in Nonlinear Dynamics and Econometrics" = + { "Stoch. Anal. Appl." 'jname := } + 'skip$ + if$ + s "Studies in Nonlinear Dynamics and Econometrics" = + { "Stud. Nonlinear. Dyn. E." 'jname := } + 'skip$ + if$ + s "Supply Chain Management" = + { "Supply. Chain. Manag." 'jname := } + 'skip$ + if$ + s "Sustainability" = + { "Sustainability" 'jname := } + 'skip$ + if$ + s "Technological Forecasting and Social Change" = + { "Technol. Forecast. Soc." 'jname := } + 'skip$ + if$ + s "Theory and Decision" = + { "Theor. Decis." 'jname := } + 'skip$ + if$ + s "Tijdschrift voor Economische en Sociale Geografie" = + { "Tijdschr. Econ. Soc. Ge." 'jname := } + 'skip$ + if$ + s "Trimestre Economico" = + { "Trimest. Econ." 'jname := } + 'skip$ + if$ + s "Work and Occupations" = + { "Work Occupation." 'jname := } + 'skip$ + if$ + s "Work, Employment and Society" = + { "Work Employ. Soc." 'jname := } + 'skip$ + if$ + s "World Bank Economic Review" = + { "World Bank Econ. Rev." 'jname := } + 'skip$ + if$ + s "World Bank Research Observer" = + { "World Bank Res. Obser." 'jname := } + 'skip$ + if$ + s "World Development" = + { "World Dev." 'jname := } + 'skip$ + if$ + s "World Economy" = + { "World Econ." 'jname := } + 'skip$ + if$ + } + if$ + jname +} + +%%% journal +FUNCTION {format.journal} +{ journal empty$ + { "" } + { bst.journal.pre format.journal.name.abb * bst.journal.post * } + if$ +} + +%%% title for book +FUNCTION {format.book} +{ title empty$ + { "" } + { bst.book.pre title * bst.book.post * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { type$ "online" = bst.show.url or + { bst.url.pre url * bst.url.post * + access empty$ + { "" * } + { bst.access.pre * access * bst.access.post * } + if$ + } + { "" } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ bst.show.doi not or + { "" } + { bst.doi.pre doi * bst.doi.post * } + if$ +} + +FUNCTION {format.url.doi} +{ url empty$ + { format.doi } + { doi empty$ + { format.url } + { bst.url.doi #0 = + { format.url output.nocomma + format.doi } + { bst.url.doi #1 = + { format.url } + { format.doi } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% and others +FUNCTION {bst.and.others.output} +{ nameorder.temp "random" = + bst.use.nameorder #0 = not and + { bst.and.others.nameorder } + { bst.and.others } + if$ +} + +%%% author and editor + +%%% name +FUNCTION {format.names} +{ '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$ + } + 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$ +} + +% remove successive periods (commas) from author +FUNCTION {remove.ss.period.auth} +{ 's := + s format.names 'tempa := + bst.author.post 'tempb := + tempb #1 #1 substring$ "}" = + { tempa tempb * } + { tempa #-1 #1 substring$ tempb #1 #1 substring$ = + { tempa tempb #2 global.max$ substring$ * } + { tempa tempb * } + if$ + } + if$ +} + +% compare.names +FUNCTION {compare.names.aer} +{ 's := + 'tempa := + +% "current.author = " s * "\\" * write$ newline$ +% "prev.author = " tempa * "\\" * write$ newline$ + + tempa num.names$ 'len1.aer := % len1 = the number of previous authors + s num.names$ 'len2.aer := % len2 = the number of current authors + +% len1.aer := min(len1.aer,len2.aer) +% len1 -> min{ the number of previous authors, the number of current authors } + len1.aer len2.aer > + { len2.aer 'len1.aer := } + { } + if$ + +% start with an empty string, then while the components are the same +% add "\bysame" + "" + #1 'i.aer := + + { i.aer len1.aer > not } + { tempa i.aer "{ff }{vv }{ll}{ jj}" format.name$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ + = + { #1 i.aer < + { " and " * } % \bysame で省略する著者の前につく and + { } + if$ + "\bysame{}" * + i.aer #1 + 'i.aer := } + { #-1 'len1.aer := } + if$ + } + while$ + +% add the rest of the second string + { i.aer len2.aer > not } + { #1 i.aer < + { " and " * } + { } + if$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ * + i.aer #1 + 'i.aer := + } + while$ +} + +%%% author +FUNCTION {format.authors} +{ author empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer author compare.names.aer 's := + author 'prev.author.aer := } + { author 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors} +{ editor empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer editor compare.names.aer 's := + editor 'prev.author.aer := } + { editor 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + s num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +FUNCTION {format.authors.alt} +{ author empty$ + { "" } + { extra.label.bysame "bysame" = + {"\bysame "} + { bst.author.pre author remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors.alt} +{ editor empty$ + { "" } + { extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre editor remove.ss.period.auth * } + if$ + editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +%%% format.in.ed.booktitle +FUNCTION {format.editors.x} +{ editor empty$ + { "" } + { bst.editor.btitle.order #0 = + { "" } + { editor num.names$ #1 > + { bst.editors " by " * } + { bst.editor " by " * } + if$ + } + if$ + editor format.names * + bst.editor.btitle.order #0 = + { editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + { "" * } + if$ + } + if$ +} + +%%% Remove commas in the cases like "?." and "?,". +FUNCTION {remove.irrelevant.period.comma} +{ 's := + s empty$ + { "" } + { s #-1 #3 substring$ "?,'" = + s #-1 #3 substring$ "?.'" = or + { s #-3 global.max$ substring$ "'" * } + { s #-1 #4 substring$ "?,''" = + s #-1 #4 substring$ "?.''" = or + { s #-4 global.max$ substring$ "''" * } + { s #-1 #2 substring$ "?," = + s #-1 #2 substring$ "?." = or + { s #-2 global.max$ substring$ "" * } + { s #-1 #3 substring$ "?,~" = + s #-1 #3 substring$ "?.~" = or + { s #-4 global.max$ substring$ "?~" * } + 's + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% title +FUNCTION {format.title.sub} +{ bst.title.lower.case #0 = + { bst.title.pre title * bst.title.post * } + { bst.title.pre title "t" change.case$ * bst.title.post * } + if$ +} + +%%% title +FUNCTION {format.title} +{ title empty$ + bst.hide.title #0 = not or + { "" } + { format.title.sub remove.irrelevant.period.comma } + if$ +} + +%%% title for misc. +FUNCTION {format.misc.title} +{ title empty$ + { "" } + { bst.title.pre title * bst.title.post * } + if$ +} + +% Convert "-" to "--" (for pages field) +FUNCTION {n.dashify} +{ 't := + "" + %% while$ + { 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$ +} + +%%% year +FUNCTION {format.year} +{ year empty$ + { "there's no year in " cite$ * warning$ + ", " } + { type$ "article" = + { bst.year.pre year * extra.label * bst.year.post * } + { bst.year.na.pre year * extra.label * bst.year.na.post * } + if$ + } + if$ +} + +%%% page for book +FUNCTION {format.book.pages} +{ pages empty$ + { "" } + { bst.pages.pre pages * bst.pages.post * } + if$ +} + +%%% Attach tie for the string with two or less characters. +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$ +} + +%%% volume for book +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bst.volume.pre volume * bst.volume.post * + series empty$ + 'skip$ + %% If there is series field + { " of " * series * bst.series.post * } + if$ +% "volume and number" number either.or.check + } + if$ +} + +%%% series +FUNCTION {output.series} +{ series empty$ + { "" } + { bst.series.pre series * bst.series.post * } + if$ +} + +%%% number and series +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + bst.hide.month #0 = not or + % number is empty + { series empty$ + { "" } + % series is not empty. + { output.series } + if$ + } + % number is not empty$ + { series empty$ + { bst.number.pre number * bst.number.post * } + % series is not empty. + { bst.in bst.series.pre * series * bst.series.post * + bst.number.pre * number * bst.number.post * } + if$ + } + if$ + } + { "" } + if$ +} + +%%% Number or not. +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% edition + +% Convert edition to 1st, 2nd, 3rd, 4th etc +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bst.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bst.st * } + { duplicate$ "2" = + { pop$ bst.nd * } + { "3" = + { bst.rd * } + { bst.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% Convert first, second etc in edition field to 1st, 2nd (from jfm.bst) +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bst.first } + { s "second" = s "2" = or + { bst.second } + { s "third" = s "3" = or + { bst.third } + { s "fourth" = s "4" = or + { bst.fourth } + { s "fifth" = s "5" = or + { bst.fifth } + { s #1 #1 substring$ is.num + { s eng.ord } + { edition } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% edition +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { bst.edition.pre convert.edition "l" change.case$ * bst.edition.post * } + { bst.edition.pre convert.edition "t" change.case$ * bst.edition.post * } + if$ + } + if$ +} + +%%% month +FUNCTION {format.month} +{ month empty$ + bst.hide.month #0 = not or + { "" } + { bst.month.pre month * bst.month.post * } + if$ +} + +%%% year and month +FUNCTION {format.date} +{ format.month format.year * +} + +%%% Is multiple pages like 1-100? +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 +} + +%%% pages +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { bst.pages.pre pages n.dashify tie.or.space.connect * bst.pages.post } + { bst.page.pre pages tie.or.space.connect * bst.page.post } + if$ + } + if$ +} + +%%% number +FUNCTION {format.number} +{ number empty$ + bst.hide.number #0 = not or + { "" } + { bst.number.pre number * bst.number.post * } + if$ +} + +%%% volume +FUNCTION {format.volume} +{ volume empty$ + 'skip$ + { bst.volume.pre volume * bst.volume.post * + bst.year.position #3 = + { format.year * } + 'skip$ + if$ + } + if$ +} + +%%% number, page +FUNCTION {format.number.pages} +{ number empty$ + { format.pages } + { format.number format.pages * } + if$ +} + +%%% volume, page +FUNCTION {format.volume.pages} +{ volume empty$ + { format.pages } + { format.volume format.pages * } + if$ +} + +%%% volume, number, page +FUNCTION {format.volume.number.pages} +{ volume empty$ + { number empty$ + { format.pages } + { format.number format.pages * } + if$ + } + { number empty$ + { format.volume format.pages * } + { format.volume format.number * format.pages * } + if$ + } + if$ +} + +% volume, number, page +FUNCTION {format.vol.num.pages} +{ volume empty$ + %% volume is empty. + { number empty$ + %% number is empty. + { pages empty$ + % warning + { "there is no volume, number, and pages in " cite$ * warning$ "" } + { "" format.pages * } + if$ + } + %% number is not empty. + % warning + { "there's a number but no volume in " cite$ * warning$ + format.number.pages } + if$ + } + %% volume is not empty. + { number empty$ + %% number is empty. + { format.volume.pages } + %% number is not empty. + { format.volume.number.pages } + if$ + } + if$ +} + +%%% chapter +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { type empty$ + { bst.chapter.pre chapter tie.or.space.connect * bst.chapter.post } + { ", " * type " " * chapter * } + if$ + } + if$ +} + +%%% chapter, pages +FUNCTION {format.chapter.pages} +{ chapter empty$ + { pages empty$ + { "" } + { "" format.pages * } + if$ + } + { pages empty$ + { "" format.chapter * } + { "" format.chapter * format.pages * } + if$ + } + if$ +} + +%%% editor and booktitle +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { bst.in format.btitle * } + { bst.editor.btitle.order #0 = + { bst.in format.editors.x * " " * format.btitle * } + { bst.in format.btitle * " " * format.editors.x * } + if$ + } + if$ + } + if$ +} + +%%% howpublished +FUNCTION {format.howpublished} +{ howpublished empty$ + { "" } + { bst.howpublished.pre howpublished * bst.howpublished.post * } + if$ +} + +%%% address +FUNCTION {format.address} +{ address empty$ + { "" } + { bst.address.pre address * bst.address.post * } + if$ +} + +%%% publisher +FUNCTION {format.publisher} +{ publisher empty$ + { "" } + { bst.publisher.pre publisher * bst.publisher.post * } + if$ +} + +%%% organization +FUNCTION {format.organization} +{ organization empty$ + { "" } + { bst.organization.pre organization * bst.organization.post * } + if$ +} + +%% publisher and address +FUNCTION {output.publisher.address} +{ address empty$ + { format.publisher "publisher" output.check.nocomma } + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ +} + +%% address, organization, publisher +FUNCTION {output.address.organization.publisher} +{ address empty$ + %% address is empty + { organization empty$ + %% organization is empty + { publisher empty$ + 'skip$ + { format.publisher "publisher" output.check.nocomma } + if$ + } + %% organization is not empty + { publisher empty$ + { format.organization "organization" output.check.nocomma } + { format.organization "organization" output.check.nocomma + format.publisher "publisher" output.check.nocomma } + if$ + } + if$ + } + %% address is not empty + { organization empty$ + %% organization is empty + { publisher empty$ + %% publisher is empty + { format.address output.nocomma } + %% publisher is not empty + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + %% organization is not empty + { publisher empty$ + %% publisher is empty + { format.organization "organization" output.check.nocomma + format.address output.nocomma } + %% publisher is not empty + { format.organization "organization" output.check.nocomma + bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% misc +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 * } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bst.techrep } + { " " type * } + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +%%% phdthesis +FUNCTION {format.phd} +{ bst.phdthesis } + +%%% mastersthesis +FUNCTION {format.mthesis} +{ bst.mthesis } + +%%% school +FUNCTION {format.school} +{ school empty$ + { "" } + { bst.school.pre school * bst.school.post * } + if$ +} + +%%% institution +FUNCTION {format.institution} +{ institution empty$ + { "" } + { bst.institution.pre institution * bst.institution.post * } + if$ +} + +%%% remove first ? characters. +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.note} +{ note empty$ + { "" } + { bst.note.pre note * bst.note.post * } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \havarditem + +FUNCTION {output.bibitem} +{ newline$ + "\harvarditem[" write$ + alabel write$ % alabel <- abbreviated citation + "]{" write$ + flabel write$ % flabel <- full citation + "}{" write$ + cyear write$ + % cyear = year + "}{" write$ + cite$ write$ % cite$ -> pusch keyword + "}" write$ + % If number index is on + bst.use.number.index #0 = + 'skip$ + { index #1 + 'index := + "" 'preone := + "" 'preten := + bst.number.index.digit "1" = + 'skip$ + { bst.number.index.digit "2" = + { "\hskip0.5em" 'preone := } + { bst.number.index.digit "3" = + { "\hskip1em" 'preone := + "\hskip0.5em" 'preten := } + 'skip$ + if$ + } + if$ + } + if$ + } + if$ + newline$ + before.all 'output.state := + "" + % number index + bst.use.number.index #0 = + 'skip$ + { index #10 < + % Insert spaces according to digit of number index. + { preone } + { index #100 < + { preten } + { "" } + if$ + } + if$ + bst.number.index.pre * index int.to.str$ * bst.number.index.post * write$ + } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% article + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.journal "journal" output.check.nocomma + bst.year.position #2 = + { format.date output.nocomma } + 'skip$ + if$ + format.vol.num.pages output.nocomma + + bst.year.position #1 = + { format.date output.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% book + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + + format.bvolume output.nocomma + format.number.series output.nocomma + output.publisher.address + + format.edition output.nocomma + format.book.pages output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booklet + +FUNCTION {booklet} +{ output.bibitem + format.authors output.nocomma + format.year output.nocomma + format.misc.title "title" output.check.nocomma + format.howpublished output.nocomma + format.address output.nocomma + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inbook + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ +% format.book remove.pre.comma "title" output.check.nocomma + format.book "title" output.check.nocomma + format.edition output.nocomma + + format.bvolume output.nocomma + format.chapter.pages "chapter and pages" output.check.nocomma + format.number.series output.nocomma + output.publisher.address + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% incollection + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + format.edition output.nocomma + format.chapter.pages output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inproceedings + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + format.pages output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% conference + +FUNCTION {conference} +{ inproceedings } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% manual +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull.nocomma + address output.nocomma + } + if$ + } + { format.authors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + author empty$ + { organization empty$ + { format.address new.block.check + format.address output.nocomma + } + 'skip$ + if$ + } + { output.address.organization.publisher } + if$ + format.edition output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% mastersthesis + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.mthesis format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% misc + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Online + +FUNCTION {online} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% phdthesis + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + format.phd + format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + address empty$ + 'skip$ + { format.address output.nocomma } + if$ + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% proceedings + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output.nocomma } + { format.editors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.btitle remove.pre.comma "title" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% techreport + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.tr.number output.nonnull.nocomma + format.institution "institution" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% unpublished + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + bst.year.position #0 = not + { format.date remove.pre.comma output.nocomma } + { month empty$ + 'skip$ + { format.month remove.pre.comma output.nocomma } + if$ + } + if$ + + format.url.doi output.nocomma + + format.note "note" output.check.nocomma + fin.entry +} + +FUNCTION {default.type} +{ misc } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Alias for month names: + +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"} + +%%% Read entries: +READ + +%%% Variable for remembering the order of citation. +INTEGERS { order.num } +FUNCTION {initialize.order.num} +{ + #1 'order.num := +} +%%% Initialize a variables +EXECUTE {initialize.order.num} + +%%% Variable for remembering the order of citation. +FUNCTION {set.order.cited} +{ + order.num 'order.cited := + #1 order.num + 'order.num := +} +%%% Iterate for all entries: +ITERATE {set.order.cited} + +%%% check the value of nameorder field. +FUNCTION {set.nameorder} +{ nameorder empty$ + { "" 'nameorder.temp := } + { nameorder 'nameorder.temp := } + if$ +} +%%% Iterate for all entries: +ITERATE {set.nameorder} + +%%% Remove symbols and convert to lowercase. +FUNCTION {sortify} +{ purify$ "l" change.case$ } + +%%% names for sorting +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { ", " * } + 'skip$ + if$ + s nameptr "{ll}{ f}{ j}" format.name$ 't := + nameptr numnames = t "others" = and + { bst.and.others.output *} + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + { s sort.format.names } + { s #1 "{ll}{ f}{ j}" format.name$ " zz " * } + if$ +} + +%%% Label for full author name. +FUNCTION {format.lab.names.full} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.and.nameorder * t * } + { ", " * t * } + if$ + } + { t "others" = + { bst.and.others.output * } + { numnames #2 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.ands * t * } + if$ + } + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.and * t * } + if$ + } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #1 > #1 #2 = and {", eds" *} {} if$ + numnames #1 = #1 #2 = and {", ed" *} {} if$ +} + +%%% laberl for abbreviated author name. +FUNCTION {format.lab.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + % if the number of authors is less than bst.and.others.num, full name. + { s format.lab.names.full } + % if the number of authors is equal or more than bst.and.others.num, abbreviated name. + { s #1 "{ll}" format.name$ bst.and.others.output * } + if$ +} + +%%% abbreviated author +FUNCTION {author.key.label.abb} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.key.label.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {format.names.full.wo.and} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}{, ff}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { " " * t * } + { t "others" = + { " " * } + { numnames #2 > + { " " * t * } + { " " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.full.wo.and} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {author.editor.key.full.wo.and} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.names.full.wo.and } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {editor.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +FUNCTION {author.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +%%% abbreviated author +FUNCTION {author.editor.key.label.abb} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.abb } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.editor.key.label.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.full } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {author.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {author.key.organization.label.abb} +{ 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.abb } + if$ +} + +FUNCTION {editor.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {editor.key.organization.label.abb} +{ 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.abb } + if$ +} + +%%% Convert numbers: 0->9, 1->8, 2->7,..., 9->0 +FUNCTION {reverse.num} +{ 's := + s "1" = + { "8" 'year.num := } + { s "2" = + { "7" 'year.num := } + { s "3" = + { "6" 'year.num := } + { s "4" = + { "5" 'year.num := } + { s "5" = + { "4" 'year.num := } + { s "6" = + { "3" 'year.num := } + { s "7" = + { "2" 'year.num := } + { s "8" = + { "1" 'year.num := } + { s "9" = + { "0" 'year.num := } + { s "0" = + { "9" 'year.num := } + { "9" 'year.num := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + year.num +} + +%%% Convert year (large number -> small number) +FUNCTION {convert.year} +{ 't := + bst.reverse.year #0 = + { t 'tt := } + { t #1 #1 substring$ reverse.num + t #2 #1 substring$ reverse.num * + t #3 #1 substring$ reverse.num * + t #4 #1 substring$ reverse.num * 'tt := } + if$ + tt +} + +%%% cyear +FUNCTION {calc.cyear} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full.wo.and + { type$ "proceedings" = + 'editor.key.organization.key.full.wo.and + { type$ "manual" = + 'author.key.organization.key.full.wo.and + 'author.key.full.wo.and + if$ + } + if$ + } + if$ + duplicate$ + year empty$ + { "2199" 'cyear := } + { year 'cyear := } + if$ + year empty$ + { " " "2199" convert.year * field.or.null * } + { " " year convert.year * field.or.null * } + if$ + sortify 'sort.label := + % For debug + econ.debug #0 = not + { "sort.label = ``\texttt{" write$ + sort.label write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ + pop$ +} + +FUNCTION {calc.sort.label.abb} +{ author empty$ + { editor empty$ + { "" } + { editor 's := } + if$ + } + { author 's := } + if$ + s sort.format.names.abb 't := + year empty$ + { t sortify " " * "2199" convert.year * 'sort.label.abb := } + { t sortify " " * year convert.year * 'sort.label.abb := } + if$ + econ.debug #0 = not + { "sort.label.abb = ``\texttt{" write$ + sort.label.abb write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% flabel +FUNCTION {calc.flabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.full + { type$ "proceedings" = + 'editor.key.organization.label.full + { type$ "manual" = + 'author.key.organization.label.full + 'author.key.label.full + if$ + } + if$ + } + 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$ + flabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% alabel +FUNCTION {calc.alabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.abb + { type$ "proceedings" = + 'editor.key.organization.label.abb + { type$ "manual" = + 'author.key.organization.label.abb + 'author.key.label.abb + if$ + } + if$ + } + if$ + 'alabel := + % For debug + econ.debug #0 = not + { "alabel = ``\texttt{" write$ + alabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% title for sorting +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +%%% author for sorting +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +%%% editor for sorting +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$ +} + +%%% 1,...,9 -> 001,...,009 +%%% 10,...,99 -> 010,...,099 +FUNCTION {add.zero.to.number} +{ 's := + s text.length$ #1 = + { "00" s * } + { s text.length$ #2 = + { "0" s * } + { s } + if$ + } + if$ +} + +%% entry type +FUNCTION {bst.sort.entry.type.order} +{ 'item.type := + item.type "article" = + { "01" } + { item.type "book" = + { "02" } + { item.type "booklet" = + { "03" } + { item.type "comment" = + { "04" } + { item.type "conference" = + { "05" } + { item.type "inbook" = + { "06" } + { item.type "incollection" = + { "07" } + { item.type "inproceedings" = + { "08" } + { item.type "manual" = + { "09" } + { item.type "masterthesis" = + { "10" } + { item.type "misc" = + { "11" } + { item.type "phdthesis" = + { "12" } + { item.type "proceedings" = + { "13" } + { item.type "techreport" = + { "14" } + { item.type "unpublished" = + { "15" } + { "16" } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% Create sort.key$: absorder -> author -> year -> order -> month -> title. +FUNCTION {presort.one} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * + sort.label.abb * + " " * + type$ "book" = type$ "inbook" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + * " " * + " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +FUNCTION {presort.two} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * sort.label * " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% Codes for debugging +FUNCTION {calc.alabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.alabel: alabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {calc.flabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.flabel: flabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {presort.one.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (1st time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {presort.two.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (2nd time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.cyear.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.cyear: sort.label = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.sort.label.abb.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.sort.label.abb: sort.label.abb = }\\" write$ + newline$ } + 'skip$ + if$ +} + +%%% alabel +EXECUTE {calc.alabel.mess} +ITERATE {calc.alabel} + +%%% flabel +EXECUTE {calc.flabel.mess} +ITERATE {calc.flabel} + +%%% cyear and sort.label +EXECUTE {calc.cyear.mess} +ITERATE {calc.cyear} + +%%% +EXECUTE {calc.sort.label.abb.mess} +ITERATE {calc.sort.label.abb} + +%%% Sorting by $sort.key (first time) +% +% Sorting is done in two times. This is the first time. +% +EXECUTE {presort.one.mess} +ITERATE {presort.one} +SORT + +FUNCTION {forward.pass} +{ bst.use.bysame #0 = bst.use.bysame #2 = or + % Not use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + } + % Use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + % format.names 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label empty$ not + { cyear extra.label * } + { cyear "" * } + if$ + "" field.or.null * + 'cyear := + extra.label 'next.extra := +} + +%%% \bysame +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +%%% Sorting by sort.key$ (second time) +EXECUTE {presort.two.mess} +ITERATE {presort.two} +SORT + +FUNCTION {reset.prev.author} +{ "xxyyzz" 'prev.author := } + +EXECUTE {reset.prev.author} + +FUNCTION {forward.pass.two} +{ bst.use.bysame #1 = + { author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + 'skip$ + if$ +} + +ITERATE {forward.pass.two} + +FUNCTION{punctuation} +{ + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" write$ newline$ + "% This bbl file is created by " econ.file * " ver." * econ.version * write$ newline$ + "% The latest " econ.file * " is available at " * write$ newline$ + "% " write$ newline$ newline$ +} + +EXECUTE {punctuation} + +FUNCTION {begin.bib} +{ + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + bst.use.bysame #0 = + % Not use \bysame. + 'skip$ + % Use \bysame. + { "%%% Definition of \bysame" write$ newline$ + "\ifx\undefined\bysame" write$ newline$ + "\newcommand{\bysame}{" bst.bysame.definition * "}" * + write$ newline$ + "\fi" write$ newline$ newline$ } + if$ + %% When number index is attached to the beginning of each item. + bst.use.number.index #0 = + 'skip$ + { bst.number.index.digit "1" = + % one digit. + { bst.number.index.bibhang.one } + { bst.number.index.digit "2" = + % two digits. + { bst.number.index.bibhang.ten } + % three or more digits. + { bst.number.index.bibhang.hund } + if$ + } + if$ + 'hang := + "%%% Redefinition of \bibhang" write$ newline$ + "\ifx\undefined\bibhang" write$ newline$ + "\relax" write$ newline$ + "\else" write$ newline$ + "\setlength{\bibhang}{" + hang * "}" * write$ newline$ + "\fi" write$ newline$ newline$ + } + if$ + "\begin{thebibliography}{xxx}" write$ newline$ + + %% Initialize the variable `index'. + #0 'index := +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +EXECUTE {end.bib} + +% -------------------- +% Local Variables: +% fill-column: 78 +% mode: bst +% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf new file mode 100644 index 0000000000..309c142278 Binary files /dev/null and b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex new file mode 100644 index 0000000000..5d10761c4b --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex @@ -0,0 +1,56 @@ +%#!pdflatex +%#BIBTEX bibtex econ-abbr + +%############################## Main ################################# +\documentclass[10pt]{article} + +%% Use natbib.sty +\usepackage{natbib} +\usepackage{newtxtext,newtxmath} +\usepackage{url} +\usepackage{graphicx} +\usepackage{color} +\definecolor{MyBrown}{rgb}{0.3,0,0} +\definecolor{MyBlue}{rgb}{0,0,0.3} +\definecolor{MyRed}{rgb}{0.4,0,0.1} +\definecolor{MyGreen}{rgb}{0,0.4,0} +\usepackage[bookmarks=true,% +bookmarksnumbered=true,% +colorlinks=true,% +linkcolor=MyBlue,% +citecolor=MyRed,% +filecolor=MyBlue,% +urlcolor=MyGreen% +]{hyperref} + +\setlength{\topmargin}{-20pt} +\setlength{\textheight}{648pt} +\setlength{\oddsidemargin}{15pt} +\setlength{\textwidth}{440pt} + +%##################################################################### +%######################### Document Starts ########################### +%##################################################################### +\begin{document} + +This document uses ``\verb|econ-abbr.bst|'', which uses abbreviated journal +names such as ``\textit{Am. Econ. Rev.}'' for ``\textit{American Economic Review}''. + +\vspace{1em} + +\input{cited-part} +\nocite{*} + +%% bst file: +\bibliographystyle{econ-abbr} +\bibliography{../econ-example} + +\end{document} + +%##################################################################### +%######################### Document Ends ############################# +%##################################################################### +% -------------------- +% Local Variables: +% fill-column: 80 +% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.bst new file mode 100644 index 0000000000..21f2fb4803 --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.bst @@ -0,0 +1,3604 @@ +%% aea.bst: BibTeX style file for journals of American Economic Association (AEA). +% +% Author: Shiro Takeda +% Maintainer: Shiro Takeda +% Copyright (C) 2001-2018 Shiro Takeda +% First-written: <2007/07/28> +% Version: 2.7 +% Keywords: TeX, BibTeX, bst +% URL: https://github.com/ShiroTakeda/econ-bst + +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Shiro Takeda. + +%% Main features of aea.bst + +% "aea.bst" is a BibTeX style file for journals of American Economic +% Association such as +% - The American Economic Review +% - Papers and Proceedins +% - Journal of Economic Literature +% - American Economics Journals +% +% AEA Style Guide is found at the following site: +% https://www.aeaweb.org/journals/aer/submissions/accepted-articles/styleguide + +% "aea.bst" is created from "econ.bst" which is distributed from +% https://github.com/ShiroTakeda/econ-bst + +% version number +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "aer.bst" } + +% Debug mode. Non-zero makes debug mode on. +FUNCTION {econ.debug} +{ #0 } % Debug mode off (default). +% { #1 } % Debug mode on. + +ENTRY + %%% Declaration of field + { access address author booktitle chapter doi edition editor howpublished + institution journal key month note number organization pages publisher + school series title type url volume year + % Fields specific to econ.bst + order absorder nameorder + } + + % Definition of entry variable. The entry variable is a variable which has + % different values according to different entries. + %% Integer entry variable: + { order.cited } + + %% String entry variable + { label cyear flabel alabel extra.label sort.label sort.label.abb + extra.label.bysame nameorder.temp jname } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Use \bysame or not. +% +% If set to #0, \bysame is not used. +% If set to #1, \bysame is used +% If set to #2, \bysame is used (alternative abbreviation style). +% +% Note that integer number is expressed as # + integer in bst file. +% \bysame is the function that abbreviates succession of the same authors' name by ---. +% +% See econ-sample.pdf for details. +% +FUNCTION {bst.use.bysame} +{ #0 } % Not use \bysame +% { #1 } % -> Use \bysame (default) +% { #2 } % -> Use \bysame of alternative style. + +% The definition of \bysame command. +% +FUNCTION {bst.bysame.definition} +{ "\hskip.3em \leavevmode\rule[.5ex]{3em}{.3pt}\hskip0.5em" } % (default) +% { "\leavevmode\hbox to\leftmargin{\hrulefill\,\,}" } % If you set #2 to bst.use.bysame, use this. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The order of fist and last name. +% +FUNCTION {bst.author.name} +{ #0 } % (default) +% { #1 } +% { #2 } + +% Case of #0: First author -> last-first, other authors -> first-last. +% Fujita, Masahisa, Paul R. Krugman, and Anthony J. Venables. + +% Case of #1: All authors -> last-first +% Fujita, Masahisa, Krugman, Paul R., and Venables, Anthony J. + +% Case of #2: All authors -> first-last +% Masahisa Fujita, Paul R. Krugman, and Anthony J. Venables. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Abbreviate first name of authors (editors): +% +FUNCTION {bst.first.name.initial} +{ #0 } % #0 -> full letters (default). +% { #1 } % Non-zero -> initial letter only. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Decapitalize of strings in title field. +% +FUNCTION {bst.title.lower.case} +{ #0 } % If #0, not decapitalize title (default). +% { #1 } % If non-#0, decapitalize title + +% Hide title filed. +% +FUNCTION {bst.hide.title} +{ #0 } % #0 -> Title field is displayed (default) +% { #1 } % Non-zer -> Title field is hidden + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide month. +% +FUNCTION {bst.hide.month} +{ #0 } % #0 -> show month field (default). +% { #1 } % non-#0 -> hide month field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Attach number index like plain.bst. +% +FUNCTION {bst.use.number.index} +{ #0 } % Not use number index (default). +% { #1 } % Non-#0 -> Use number index + +% The string before number index: +% +FUNCTION {bst.number.index.pre} +{ "[" } % (default) + +% The string after number index. Adjustment is recommended. +% +FUNCTION {bst.number.index.post} +{ "]\hskip1.0em " } % (default) + +% Maximum digit of number index: +% If the number of reference items >= 100, set 3 to this function. +% If the number of reference items < 100, set 2 to this function. +% If the number of reference items < 10, set 1 to this function. +% +FUNCTION {bst.number.index.digit} +{ "2" } % (default) +% { "3" } + +% The functions below are used to adjust space and postion. If you use fonts +% other than computer modern fonts, you had better make adjustments. +% +% Setting for bst.number.index.digit = 1: +FUNCTION {bst.number.index.bibhang.one} +{ "2.05em" } % (default) +% Setting for bst.number.index.digit = 2: +FUNCTION {bst.number.index.bibhang.ten} +{ "2.55em" } % (default) +% Setting for bst.number.index.digit = 3: +FUNCTION {bst.number.index.bibhang.hund} +{ "3.05em" } % (default). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Position of "year": +% +% You can choose the position of year by this function. +% +% If set to #0, year is placed right after "author". +% If set to non-zero, year is placed at the end (before note field) except for +% aritcle type entry. +% +% In article type entry, the position of year changes according to the +% following rule: +% +% #1 -> year is placed at the end. +% #2 -> year is placed after journal name in aritcle type entry. +% #3 -> year is placed after volume in aritcle type entry. +% +FUNCTION {bst.year.position} +{ #0 } % (default). +% { #1 } % Last place before note. +% { #2 } % After journal name for aticle type entry. +% { #3 } % After volume for aticle type entry. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If 0, references are sorted by old documents -> recent documents. If +% non-zero, reverse order. +FUNCTION {bst.reverse.year} +{ #0 } % Normal order (old -> recent) (default). +% { #1 } % inverse order (recent -> old) + +% If non-zero, sort references by using year field as the primary key +% (chronological sorting). +FUNCTION {bst.sort.year} +{ #0 } % Normal case: year is used as the sorting key next to author (default). +% { #1 } % year is used as the primary sorting key. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If non-zero, references are listed in citation order. +% +FUNCTION {bst.no.sort} +{ #0 } % (default) +% { #1 } % listed in citation order. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Non-zero -> sort references by entry type (article, book, incollection etc.) +% +FUNCTION {bst.sort.entry.type} +{ #0 } % #0 -> Normal (not sort references by entry type) (default). +% { #1 } % Non-zero -> sort references by entry type. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use absorder field to sort items. Otherwise, ignore absorder field. +% +FUNCTION {bst.notuse.absorder.field} +{ #0 } % #0 -> Use absorder (default). +% { #1 } % Non-#0 -> Not use absorder. +% +% Order of priority to sort items +% +% absorder -> author -> year -> order -> month -> title +% +% wehre absorder and order fields are specific to econ.bst. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use order field to sort items. Otherwise, ignore order field. +% Note: order field is specific to econ.bst. +FUNCTION {bst.notuse.order.field} +{ #0 } % #0 -> Use order field (default). +% { #1 } % Non-#0 -> not use order field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% and + +%%% String used to separate author names in references. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.and} +{ ", and " } +% { " and " } % (default) + +%%% String used to separate author names in references (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.ands} +{ ", and " } % (default) + +%%% String used to separate author names in citation part. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.cite.and} +{ " and " } % (default) + +%%% String used to separate author names in citation part (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.cite.ands} +{ ", and " } +% { " and " } % (default) + +%%% If you want to use random author order for some bibliography entries, set +% non-zero to this function. +% +FUNCTION {bst.use.nameorder} +{ #1 } % Use random order (default) +% { #0 } % Not use random order + +%%% String used to separate author names in references for the entry of random +% author order. +% +FUNCTION {bst.and.nameorder} +{ " \textcircled{r} " } % (default) + +%%% String used to separate author names in citation part for the entry of +% random author order +% +FUNCTION {bst.cite.and.nameorder} +{ " \textcircled{r} " } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Author names in the citation part are abbreviated by et al. if the number of +% 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). + +% 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). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Strings used when abbreviating multiple-authors in citation part. +FUNCTION {bst.and.others} +{ " et~al." } % (default) + +% Strings used when abbreviating multiple-authors in citation part for entries +% with random author order. +FUNCTION {bst.and.others.nameorder} +{ " \textcircled{r}~al." } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% author + +% The string before author: +% +FUNCTION {bst.author.pre} +{ "\textbf{" } +% { "" } % (default) + +% The string after author: +% +FUNCTION {bst.author.post} +{ ".}" } +% { "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% year + +% The string before year only for aritcle type entry. +% +FUNCTION {bst.year.pre} +{ " " } +% { " (" } % (default) + +% The string after year only for aritcle type entry. +% +FUNCTION {bst.year.post} +{ ". " } +% { ") " } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.pre} +{ " " } +% { " (" } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.post} +{ ". " } +% { ") " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% title (except for title in book) + +% The string before title: +% +FUNCTION {bst.title.pre} +{ "``" } % (default) + +% The string after title: +% +FUNCTION {bst.title.post} +{ ".''" } +% { ",''" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tile for book: + +% The string before book title: +% +FUNCTION {bst.book.pre} +{ " \textit{" } % (default) + +% The string after book title: +% +FUNCTION {bst.book.post} +{ "}." } +% { "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booktitle + +% The string before booktitle: +% +FUNCTION {bst.btitle.pre} +{ " \textit{" } % (default) + +% The string after booktitle: +% +FUNCTION {bst.btitle.post} +{ "}," } +% { "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% journal name + +% The string before journal name: +% +FUNCTION {bst.journal.pre} +{ " \textit{" } % (default) + +% The string after journal name: +% +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) + +% The string that indicates single editor: +% +FUNCTION {bst.editor} +{ " ed. " } % (default) + +% Order of editor and booktitle in incollection and inproceedings entries. +% +% If set to #0: editors -> booktitle order +% If set to non-zero: booktitle -> editors order +% +FUNCTION {bst.editor.btitle.order} +{ #1 } +% { #0 } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% edition + +% The string before edition: +% +FUNCTION {bst.edition.pre} +{ ", " } % (default) + +% The string after edition: +% +FUNCTION {bst.edition.post} +{ " edition" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% volume + +% The string before volume: +% +FUNCTION {bst.volume.pre} +{ " " } +% { ", " } % (default) + +% The string after volume: +% +FUNCTION {bst.volume.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% number + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide number. If non-zero, number is suppressed. +FUNCTION {bst.hide.number} +{ #0 } % #0 -> show number field (default) +% { #1 } % non-#0 -> Hide number field. + +% The string before number: +% +FUNCTION {bst.number.pre} +{ " (" } % (default) + +% The string after number: +% +FUNCTION {bst.number.post} +{ "): " } +% { ")" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% in + +% In +% +FUNCTION {bst.in} +{ " In " } +% { " in " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% page + +% The string before page (multiple pages): +% +FUNCTION {bst.pages.pre} +{ " " } +% { ", pp." } % (default) + +% The string before page: +% +FUNCTION {bst.page.pre} +{ "" } +% { ", " } % (default) + +% The string after page (multiple pages): +% +FUNCTION {bst.pages.post} +{ "" } % (default) + +% The string after page: +% +FUNCTION {bst.page.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% chapter + +% The string before chapter: +% +FUNCTION {bst.chapter.pre} +{ ", Chap." } % (default) + +% The string after chapter: +% +FUNCTION {bst.chapter.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% month + +% The string before month: +% +FUNCTION {bst.month.pre} +{ ", " } % (default) + +% The string after month: +% +FUNCTION {bst.month.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% address +% The string before address: +% +FUNCTION {bst.address.pre} +{ ", " } % (default) + +% The string after address: +% +FUNCTION {bst.address.post} +{ "" } % (default) + +% You can choose the order of address and publisher by this function. +% +% If #0, address -> publisher order (the default value). +% If non-zero, publisher -> address order. + +FUNCTION {bst.address.position} +{ #0 } % Address is placed before publisher (default) +% { #1 } % Address is placed after publisher + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% publisher + +% The string before publisher: +% +FUNCTION {bst.publisher.pre} +{ ": " } % (default) + +% The string after publisher: +% +FUNCTION {bst.publisher.post} +{ ", " } +% { "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% series + +% The string before series: +% +FUNCTION {bst.series.pre} +{ ", " } % (default) + +% The string after series: +% +FUNCTION {bst.series.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% organization + +% The string before organization: +% +FUNCTION {bst.organization.pre} +{ ", " } % (default) + +% The string after organization: +% +FUNCTION {bst.organization.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% school + +% The string before school: +% +FUNCTION {bst.school.pre} +{ ", " } % (default) + +% The string after school: +% +FUNCTION {bst.school.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% institution + +% The string before institution: +% +FUNCTION {bst.institution.pre} +{ ", " } % (default) + +% The string after institution: +% +FUNCTION {bst.institution.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% howpublished + +% The string before howpublished: +% +FUNCTION {bst.howpublished.pre} +{ " " } % (default) + +% The string after howpublished: +% +FUNCTION {bst.howpublished.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% url + +% Show or Hide url. If non-zero, url is displayed. Otherwise, url is suppressed. +FUNCTION {bst.show.url} +{ #1 } % non-#0 -> Show url field (default) +% { #0 } % #0 -> Not show url field. + +% The string before url: +% +FUNCTION {bst.url.pre} +{ ", \url{" } % (default) + +% The string after url: +% +FUNCTION {bst.url.post} +{ "}" } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Access + +% This setting is valid only if there are "access" field in bib +% files. The value of access field indicates accessed date for URL. + +% The string before access. +FUNCTION {bst.access.pre} +{ ", accessed on " } % (default) + +% The string after access. +FUNCTION {bst.access.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DOI (digital object identifier) + +% This setting is valid only if there are "doi" field in bib files. + +% Show or Hide DOI. If non-zero, DOI is displayed. Otherwise, DOI is suppressed. +FUNCTION {bst.show.doi} +{ #1 } % non-#0 -> Show DOI field (default) +% { #0 } % #0 -> Not show DOI field. + +% The string before DOI: +% +FUNCTION {bst.doi.pre} +{ ". \href{http://dx.doi.org/" doi * "}{\urlstyle{rm} \nolinkurl{" * } +% { ", \href{http://dx.doi.org/" doi * "}{\urlstyle{rm} \nolinkurl{" * } % (default) + +% The string after DOI: +% +FUNCTION {bst.doi.post} +{ "}}" } % (default) + +% How to show URL and DOI fields when both fields exist. +% +% #0 -> Both fields are displayed +% #1 -> Only URL field is displayed +% #2 -> Only DOI field is displayed +% +FUNCTION {bst.url.doi} +% { #0 } % -> Both fields are displayed +% { #1 } % -> Only URL field is displayed +{ #2 } % (default) --> Only DOI field is displayed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Other functions: + +% The string before note. +FUNCTION {bst.note.pre} +{ ", " } % (default) + +% The string after note. +FUNCTION {bst.note.post} +{ "" } % (default) + +% The string that represents Technical report: +% +FUNCTION {bst.techrep} +{ "Technical Report" } % (default) + +% The string that represents master thesis: +% +FUNCTION {bst.mthesis} +{ " Master's thesis" } % (default) + +% The string that represents phd thesis: +% +FUNCTION {bst.phdthesis} +{ " Ph.D. dissertation" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization end here: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bst.first} +{ "1st" } + +FUNCTION {bst.second} +{ "2nd" } + +FUNCTION {bst.third} +{ "3rd" } + +FUNCTION {bst.fourth} +{ "4th" } + +FUNCTION {bst.fifth} +{ "5th" } + +FUNCTION {bst.st} +{ "st" } + +FUNCTION {bst.nd} +{ "nd" } + +FUNCTION {bst.rd} +{ "rd" } + +FUNCTION {bst.th} +{ "th" } + +%%%%% memo by Takeda + +% "a" 'b := indicates substituting string "a" for variable b. + +% Integer number #0, #1,... + +%%% Function definition: +% +% FUNCTION {name} +% { 's := +% +% } +% +% This is the definition of a function named "name". The function "name" is +% used in the following way +% +% "foo" name +% "foo" is an argument for the function "name". +% +% About the definition of a function with more than two arguments, see the +% definition of "chop.word". + +%%% Declaration of variables: + +%% String global variables: +STRINGS { s t tt } +STRINGS { year.num } +STRINGS { preone preten } +STRINGS { last.sort.label next.extra prev.author prev.author.aer this.author } +STRINGS { hang } +STRINGS { item.type } +STRINGS { tempa tempb } + +%% Integer global variables: +INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { multiresult } +INTEGERS { index } +INTEGERS { len } +INTEGERS { last.extra.num } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +INTEGERS { last.period.comma } +INTEGERS { len1.aer len2.aer i.aer } + +%%% Definition of functions: +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +%%% Initialize variables: +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +%%% Remove comma and add period: +% +%%% +FUNCTION {add.period.x} +{ duplicate$ + #-1 #1 substring$ "," = + { #-2 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ". " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ", " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ",'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #2 substring$ ",~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #3 substring$ ",''" = + { #-4 global.max$ substring$ ".''" * } + { duplicate$ + #-1 #3 substring$ ".''" = + { #-4 global.max$ substring$ ".''" * } + { add.period$ } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {output.nonnull} +{ 's := + % mid.sentence + output.state mid.sentence = + { ", " * write$ } + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period.x " " * write$ } + if$ + } + if$ + % not mid.sentence, set to mid.sentence + mid.sentence 'output.state := + } + if$ + s +} + +%%% If the last character is period or comma, set non-zero to +%%% last.period.comma. +FUNCTION {period.comma.p} +{ duplicate$ 't := + t #-1 #1 substring$ "." = + t #-1 #1 substring$ "," = or + t #-1 #1 substring$ ":" = or + t #-1 #2 substring$ ".'" = or + t #-1 #2 substring$ ",'" = or + t #-1 #3 substring$ ".''" = or + t #-1 #3 substring$ ",''" = or + t #-1 #2 substring$ ".~" = or + t #-1 #2 substring$ ",~" = or + { #1 'last.period.comma := } + { #0 'last.period.comma := } + if$ +} + +%%% remove unnecessary comma. +FUNCTION {remove.pre.comma} +{ 's := + s empty$ + { "" } + { s #1 #1 substring$ "," = + { s #2 global.max$ substring$ } + { s #1 #1 substring$ "." = + { s #2 global.max$ substring$ } + 's + if$ + } + if$ + } + if$ +} + +%%% output.nonnull.nocomma is the same as output.nonnull except that it does +%%% not add commas even in mid.sentence. +FUNCTION {output.nonnull.nocomma} +{ 's := + output.state mid.sentence = + % mid.sentence + { period.comma.p "" * write$ } + + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + last.period.comma #0 = + { s } + { s remove.pre.comma } + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output} +% { duplicate$ empty$ +% 'pop$ +% 'output.nonnull +% if$ +% } + +FUNCTION {output.nocomma} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull.nocomma + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output.check} +% { 't := +% duplicate$ empty$ +% { pop$ "empty " t * " in " * cite$ * warning$ } +% 'output.nonnull +% if$ +% } + +FUNCTION {output.check.nocomma} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull.nocomma + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Format in bbl file: + +% \harvarditem[Brezis et~al.]{Brezis, Krugman and +% Tsiddon}{1993}{brezis93:_leapf_inter_compet} +% Brezis, Elise~S., Paul~R. Krugman, and Daniel Tsiddon (1993) ``Leapfrogging in +% International Competition: A Theory of Cycles in National Technological +% Leadership.'', {\em American Economic Review.}, Vol.~83. No.~5. pp. +% 1211--1219. + +% \harvarditem[abbreviated citation]{full citation}{year}{keyword} ... + +%%% Add period and newline. +FUNCTION {fin.entry} +{ add.period.x + 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 {new.block.check} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +%%% booktitle +FUNCTION {format.btitle} +{ booktitle empty$ + { "" } + { bst.btitle.pre booktitle * bst.btitle.post * } + 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 format.journal.name.abb * bst.journal.post * } + if$ +} + +%%% title for book +FUNCTION {format.book} +{ title empty$ + { "" } + { bst.book.pre title * bst.book.post * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { type$ "online" = bst.show.url or + { bst.url.pre url * bst.url.post * + access empty$ + { "" * } + { bst.access.pre * access * bst.access.post * } + if$ + } + { "" } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ bst.show.doi not or + { "" } + { bst.doi.pre doi * bst.doi.post * } + if$ +} + +FUNCTION {format.url.doi} +{ url empty$ + { format.doi } + { doi empty$ + { format.url } + { bst.url.doi #0 = + { format.url output.nocomma + format.doi } + { bst.url.doi #1 = + { format.url } + { format.doi } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% and others +FUNCTION {bst.and.others.output} +{ nameorder.temp "random" = + bst.use.nameorder #0 = not and + { bst.and.others.nameorder } + { bst.and.others } + if$ +} + +%%% author and editor + +%%% name +FUNCTION {format.names} +{ '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$ + } + 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$ +} + +% remove successive periods (commas) from author +FUNCTION {remove.ss.period.auth} +{ 's := + s format.names 'tempa := + bst.author.post 'tempb := + tempb #1 #1 substring$ "}" = + { tempa tempb * } + { tempa #-1 #1 substring$ tempb #1 #1 substring$ = + { tempa tempb #2 global.max$ substring$ * } + { tempa tempb * } + if$ + } + if$ +} + +% compare.names +FUNCTION {compare.names.aer} +{ 's := + 'tempa := + +% "current.author = " s * "\\" * write$ newline$ +% "prev.author = " tempa * "\\" * write$ newline$ + + tempa num.names$ 'len1.aer := % len1 = the number of previous authors + s num.names$ 'len2.aer := % len2 = the number of current authors + +% len1.aer := min(len1.aer,len2.aer) +% len1 -> min{ the number of previous authors, the number of current authors } + len1.aer len2.aer > + { len2.aer 'len1.aer := } + { } + if$ + +% start with an empty string, then while the components are the same +% add "\bysame" + "" + #1 'i.aer := + + { i.aer len1.aer > not } + { tempa i.aer "{ff }{vv }{ll}{ jj}" format.name$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ + = + { #1 i.aer < + { " and " * } % \bysame ŏȗ钘҂̑Oɂ‚ and + { } + if$ + "\bysame{}" * + i.aer #1 + 'i.aer := } + { #-1 'len1.aer := } + if$ + } + while$ + +% add the rest of the second string + { i.aer len2.aer > not } + { #1 i.aer < + { " and " * } + { } + if$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ * + i.aer #1 + 'i.aer := + } + while$ +} + +%%% author +FUNCTION {format.authors} +{ author empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer author compare.names.aer 's := + author 'prev.author.aer := } + { author 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors} +{ editor empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer editor compare.names.aer 's := + editor 'prev.author.aer := } + { editor 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + s num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +FUNCTION {format.authors.alt} +{ author empty$ + { "" } + { extra.label.bysame "bysame" = + {"\bysame "} + { bst.author.pre author remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors.alt} +{ editor empty$ + { "" } + { extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre editor remove.ss.period.auth * } + if$ + editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +%%% format.in.ed.booktitle +FUNCTION {format.editors.x} +{ editor empty$ + { "" } + { bst.editor.btitle.order #0 = + { "" } + { editor num.names$ #1 > + { " edited by " } + { " edited by " } +% { bst.editors " by " * } +% { bst.editor " by " * } + if$ + } + if$ + editor format.names * + bst.editor.btitle.order #0 = + { editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + { "" * } + if$ + } + if$ +} + +%%% Remove commas in the cases like "?." and "?,". +FUNCTION {remove.irrelevant.period.comma} +{ 's := + s empty$ + { "" } + { s #-1 #3 substring$ "?,'" = + s #-1 #3 substring$ "?.'" = or + { s #-3 global.max$ substring$ "'" * } + { s #-1 #4 substring$ "?,''" = + s #-1 #4 substring$ "?.''" = or + { s #-4 global.max$ substring$ "''" * } + { s #-1 #2 substring$ "?," = + s #-1 #2 substring$ "?." = or + { s #-2 global.max$ substring$ "" * } + { s #-1 #3 substring$ "?,~" = + s #-1 #3 substring$ "?.~" = or + { s #-4 global.max$ substring$ "?~" * } + 's + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% title +FUNCTION {format.title.sub} +{ bst.title.lower.case #0 = + { bst.title.pre title * bst.title.post * } + { bst.title.pre title "t" change.case$ * bst.title.post * } + if$ +} + +%%% title +FUNCTION {format.title} +{ title empty$ + bst.hide.title #0 = not or + { "" } + { format.title.sub remove.irrelevant.period.comma } + if$ +} + +%%% title for misc. +FUNCTION {format.misc.title} +{ title empty$ + { "" } + { bst.title.pre title * bst.title.post * } + if$ +} + +% Convert "-" to "--" (for pages field) +FUNCTION {n.dashify} +{ 't := + "" + %% while$ + { 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$ +} + +%%% year +FUNCTION {format.year} +{ year empty$ + { "there's no year in " cite$ * warning$ + ", " } + { type$ "article" = + { bst.year.pre year * extra.label * bst.year.post * } + { bst.year.na.pre year * extra.label * bst.year.na.post * } + if$ + } + if$ +} + +%%% page for book +FUNCTION {format.book.pages} +{ pages empty$ + { "" } + { bst.pages.pre pages * bst.pages.post * } + if$ +} + +%%% Attach tie for the string with two or less characters. +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$ +} + +%%% volume for book +FUNCTION {format.bvolume} +{ volume empty$ + { "" } +% { bst.volume.pre volume * bst.volume.post * + { " Volume " volume * "." * + series empty$ + 'skip$ + %% If there is series field + { " of " * series * bst.series.post * } + if$ +% "volume and number" number either.or.check + } + if$ +} + +%%% series +FUNCTION {output.series} +{ series empty$ + { "" } + { bst.series.pre series * bst.series.post * } + if$ +} + +%%% number and series +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + bst.hide.month #0 = not or + % number is empty + { series empty$ + { "" } + % series is not empty. + { output.series } + if$ + } + % number is not empty$ + { series empty$ + { bst.number.pre number * bst.number.post * } + % series is not empty. + { bst.in bst.series.pre * series * bst.series.post * + bst.number.pre * number * bst.number.post * } + if$ + } + if$ + } + { "" } + if$ +} + +%%% Number or not. +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% edition + +% Convert edition to 1st, 2nd, 3rd, 4th etc +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bst.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bst.st * } + { duplicate$ "2" = + { pop$ bst.nd * } + { "3" = + { bst.rd * } + { bst.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% Convert first, second etc in edition field to 1st, 2nd (from jfm.bst) +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bst.first } + { s "second" = s "2" = or + { bst.second } + { s "third" = s "3" = or + { bst.third } + { s "fourth" = s "4" = or + { bst.fourth } + { s "fifth" = s "5" = or + { bst.fifth } + { s #1 #1 substring$ is.num + { s eng.ord } + { edition } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% edition +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { bst.edition.pre convert.edition "l" change.case$ * bst.edition.post * } + { bst.edition.pre convert.edition "t" change.case$ * bst.edition.post * } + if$ + } + if$ +} + +%%% month +FUNCTION {format.month} +{ month empty$ + bst.hide.month #0 = not or + { "" } + { bst.month.pre month * bst.month.post * } + if$ +} + +%%% year and month +FUNCTION {format.date} +{ format.month format.year * +} + +%%% Is multiple pages like 1-100? +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 +} + +%%% pages +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { bst.pages.pre pages n.dashify tie.or.space.connect * bst.pages.post } + { bst.page.pre pages tie.or.space.connect * bst.page.post } + if$ + } + if$ +} + +%%% number +FUNCTION {format.number} +{ number empty$ + bst.hide.number #0 = not or + { "" } + { bst.number.pre number * bst.number.post * } + if$ +} + +%%% volume +FUNCTION {format.volume} +{ volume empty$ + 'skip$ + { bst.volume.pre volume * bst.volume.post * + bst.year.position #3 = + { format.year * } + 'skip$ + if$ + } + if$ +} + +%%% number, page +FUNCTION {format.number.pages} +{ number empty$ + { format.pages } + { format.number format.pages * } + if$ +} + +%%% volume, page +FUNCTION {format.volume.pages} +{ volume empty$ + { format.pages } + { format.volume format.pages * } + if$ +} + +%%% volume, number, page +FUNCTION {format.volume.number.pages} +{ volume empty$ + { number empty$ + { format.pages } + { format.number format.pages * } + if$ + } + { number empty$ + { format.volume format.pages * } + { format.volume format.number * format.pages * } + if$ + } + if$ +} + +% volume, number, page +FUNCTION {format.vol.num.pages} +{ volume empty$ + %% volume is empty. + { number empty$ + %% number is empty. + { pages empty$ + % warning + { "there is no volume, number, and pages in " cite$ * warning$ "" } + { "" format.pages * } + if$ + } + %% number is not empty. + % warning + { "there's a number but no volume in " cite$ * warning$ + format.number.pages } + if$ + } + %% volume is not empty. + { number empty$ + %% number is empty. + { format.volume.pages } + %% number is not empty. + { format.volume.number.pages } + if$ + } + if$ +} + +%%% chapter +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { type empty$ + { bst.chapter.pre chapter tie.or.space.connect * bst.chapter.post } + { ", " * type " " * chapter * } + if$ + } + if$ +} + +%%% chapter, pages +FUNCTION {format.chapter.pages} +{ chapter empty$ + { pages empty$ + { "" } + { "" format.pages * } + if$ + } + { pages empty$ + { "" format.chapter * } + { "" format.chapter * format.pages * } + if$ + } + if$ +} + +%%% editor and booktitle +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { bst.in format.btitle * } + { bst.editor.btitle.order #0 = + { bst.in format.editors.x * " " * format.btitle * } + { bst.in format.btitle * " " * format.editors.x * } + if$ + } + if$ + } + if$ +} + +%%% howpublished +FUNCTION {format.howpublished} +{ howpublished empty$ + { "" } + { bst.howpublished.pre howpublished * bst.howpublished.post * } + if$ +} + +%%% address +FUNCTION {format.address} +{ address empty$ + { "" } + { bst.address.pre address * bst.address.post * } + if$ +} + +%%% publisher +FUNCTION {format.publisher} +{ publisher empty$ + { "" } + { address empty$ + { ", " publisher * bst.publisher.post * } + { bst.publisher.pre publisher * bst.publisher.post * } + if$ + } + if$ +} + +%%% organization +FUNCTION {format.organization} +{ organization empty$ + { "" } + { bst.organization.pre organization * bst.organization.post * } + if$ +} + +%% publisher and address +FUNCTION {output.publisher.address} +{ address empty$ + { format.publisher "publisher" output.check.nocomma } + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ +} + +%% address, organization, publisher +FUNCTION {output.address.organization.publisher} +{ address empty$ + %% address is empty + { organization empty$ + %% organization is empty + { publisher empty$ + 'skip$ + { format.publisher "publisher" output.check.nocomma } + if$ + } + %% organization is not empty + { publisher empty$ + { format.organization "organization" output.check.nocomma } + { format.organization "organization" output.check.nocomma + format.publisher "publisher" output.check.nocomma } + if$ + } + if$ + } + %% address is not empty + { organization empty$ + %% organization is empty + { publisher empty$ + %% publisher is empty + { format.address output.nocomma } + %% publisher is not empty + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + %% organization is not empty + { publisher empty$ + %% publisher is empty + { format.organization "organization" output.check.nocomma + format.address output.nocomma } + %% publisher is not empty + { format.organization "organization" output.check.nocomma + bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% misc +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 * } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bst.techrep } + { " " type * } + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +%%% phdthesis +FUNCTION {format.phd} +{ bst.phdthesis } + +%%% mastersthesis +FUNCTION {format.mthesis} +{ bst.mthesis } + +%%% school +FUNCTION {format.school} +{ school empty$ + { "" } + { bst.school.pre school * bst.school.post * } + if$ +} + +%%% institution +FUNCTION {format.institution} +{ institution empty$ + { "" } + { bst.institution.pre institution * bst.institution.post * } + if$ +} + +%%% remove first ? characters. +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.note} +{ note empty$ + { "" } + { bst.note.pre note * bst.note.post * } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \havarditem + +FUNCTION {output.bibitem} +{ newline$ + "\harvarditem[" write$ + alabel write$ % alabel <- abbreviated citation + "]{" write$ + flabel write$ % flabel <- full citation + "}{" write$ + cyear write$ + % cyear = year + "}{" write$ + cite$ write$ % cite$ -> pusch keyword + "}" write$ + % If number index is on + bst.use.number.index #0 = + 'skip$ + { index #1 + 'index := + "" 'preone := + "" 'preten := + bst.number.index.digit "1" = + 'skip$ + { bst.number.index.digit "2" = + { "\hskip0.5em" 'preone := } + { bst.number.index.digit "3" = + { "\hskip1em" 'preone := + "\hskip0.5em" 'preten := } + 'skip$ + if$ + } + if$ + } + if$ + } + if$ + newline$ + before.all 'output.state := + "" + % number index + bst.use.number.index #0 = + 'skip$ + { index #10 < + % Insert spaces according to digit of number index. + { preone } + { index #100 < + { preten } + { "" } + if$ + } + if$ + bst.number.index.pre * index int.to.str$ * bst.number.index.post * write$ + } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% article + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.journal "journal" output.check.nocomma + bst.year.position #2 = + { format.date output.nocomma } + 'skip$ + if$ + format.vol.num.pages output.nocomma + + bst.year.position #1 = + { format.date output.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% book + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + + format.bvolume output.nocomma + format.number.series output.nocomma + output.publisher.address + + format.edition output.nocomma + format.book.pages output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booklet + +FUNCTION {booklet} +{ output.bibitem + format.authors output.nocomma + format.year output.nocomma + format.misc.title "title" output.check.nocomma + format.howpublished output.nocomma + format.address output.nocomma + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inbook + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ +% format.book remove.pre.comma "title" output.check.nocomma + format.book "title" output.check.nocomma + format.edition output.nocomma + + format.bvolume output.nocomma + format.chapter.pages "chapter and pages" output.check.nocomma + format.number.series output.nocomma + output.publisher.address + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% incollection + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + format.edition output.nocomma + format.chapter.pages output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inproceedings + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + format.pages output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% conference + +FUNCTION {conference} +{ inproceedings } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% manual +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull.nocomma + address output.nocomma + } + if$ + } + { format.authors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + author empty$ + { organization empty$ + { format.address new.block.check + format.address output.nocomma + } + 'skip$ + if$ + } + { output.address.organization.publisher } + if$ + format.edition output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% mastersthesis + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.mthesis format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% misc + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Online + +FUNCTION {online} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% phdthesis + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + format.phd + format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + address empty$ + 'skip$ + { format.address output.nocomma } + if$ + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% proceedings + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output.nocomma } + { format.editors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.btitle remove.pre.comma "title" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% techreport + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.tr.number output.nonnull.nocomma + format.institution "institution" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% unpublished + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + bst.year.position #0 = not + { format.date remove.pre.comma output.nocomma } + { month empty$ + 'skip$ + { format.month remove.pre.comma output.nocomma } + if$ + } + if$ + + format.url.doi output.nocomma + + format.note "note" output.check.nocomma + fin.entry +} + +FUNCTION {default.type} +{ misc } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Alias for month names: + +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"} + +%%% Read entries: +READ + +%%% Variable for remembering the order of citation. +INTEGERS { order.num } +FUNCTION {initialize.order.num} +{ + #1 'order.num := +} +%%% Initialize a variables +EXECUTE {initialize.order.num} + +%%% Variable for remembering the order of citation. +FUNCTION {set.order.cited} +{ + order.num 'order.cited := + #1 order.num + 'order.num := +} +%%% Iterate for all entries: +ITERATE {set.order.cited} + +%%% check the value of nameorder field. +FUNCTION {set.nameorder} +{ nameorder empty$ + { "" 'nameorder.temp := } + { nameorder 'nameorder.temp := } + if$ +} +%%% Iterate for all entries: +ITERATE {set.nameorder} + +%%% Remove symbols and convert to lowercase. +FUNCTION {sortify} +{ purify$ "l" change.case$ } + +%%% names for sorting +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { ", " * } + 'skip$ + if$ + s nameptr "{ll}{ f}{ j}" format.name$ 't := + nameptr numnames = t "others" = and + { bst.and.others.output *} + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + { s sort.format.names } + { s #1 "{ll}{ f}{ j}" format.name$ " zz " * } + if$ +} + +%%% Label for full author name. +FUNCTION {format.lab.names.full} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.and.nameorder * t * } + { ", " * t * } + if$ + } + { t "others" = + { bst.and.others.output * } + { numnames #2 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.ands * t * } + if$ + } + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.and * t * } + if$ + } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #1 > #1 #2 = and {", eds" *} {} if$ + numnames #1 = #1 #2 = and {", ed" *} {} if$ +} + +%%% laberl for abbreviated author name. +FUNCTION {format.lab.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + % if the number of authors is less than bst.and.others.num, full name. + { s format.lab.names.full } + % if the number of authors is equal or more than bst.and.others.num, abbreviated name. + { s #1 "{ll}" format.name$ bst.and.others.output * } + if$ +} + +%%% abbreviated author +FUNCTION {author.key.label.abb} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.key.label.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {format.names.full.wo.and} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}{, ff}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { " " * t * } + { t "others" = + { " " * } + { numnames #2 > + { " " * t * } + { " " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.full.wo.and} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {author.editor.key.full.wo.and} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.names.full.wo.and } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {editor.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +FUNCTION {author.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +%%% abbreviated author +FUNCTION {author.editor.key.label.abb} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.abb } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.editor.key.label.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.full } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {author.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {author.key.organization.label.abb} +{ 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.abb } + if$ +} + +FUNCTION {editor.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {editor.key.organization.label.abb} +{ 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.abb } + if$ +} + +%%% Convert numbers: 0->9, 1->8, 2->7,..., 9->0 +FUNCTION {reverse.num} +{ 's := + s "1" = + { "8" 'year.num := } + { s "2" = + { "7" 'year.num := } + { s "3" = + { "6" 'year.num := } + { s "4" = + { "5" 'year.num := } + { s "5" = + { "4" 'year.num := } + { s "6" = + { "3" 'year.num := } + { s "7" = + { "2" 'year.num := } + { s "8" = + { "1" 'year.num := } + { s "9" = + { "0" 'year.num := } + { s "0" = + { "9" 'year.num := } + { "9" 'year.num := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + year.num +} + +%%% Convert year (large number -> small number) +FUNCTION {convert.year} +{ 't := + bst.reverse.year #0 = + { t 'tt := } + { t #1 #1 substring$ reverse.num + t #2 #1 substring$ reverse.num * + t #3 #1 substring$ reverse.num * + t #4 #1 substring$ reverse.num * 'tt := } + if$ + tt +} + +%%% cyear +FUNCTION {calc.cyear} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full.wo.and + { type$ "proceedings" = + 'editor.key.organization.key.full.wo.and + { type$ "manual" = + 'author.key.organization.key.full.wo.and + 'author.key.full.wo.and + if$ + } + if$ + } + if$ + duplicate$ + year empty$ + { "2199" 'cyear := } + { year 'cyear := } + if$ + year empty$ + { " " "2199" convert.year * field.or.null * } + { " " year convert.year * field.or.null * } + if$ + sortify 'sort.label := + % For debug + econ.debug #0 = not + { "sort.label = ``\texttt{" write$ + sort.label write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ + pop$ +} + +FUNCTION {calc.sort.label.abb} +{ author empty$ + { editor empty$ + { "" } + { editor 's := } + if$ + } + { author 's := } + if$ + s sort.format.names.abb 't := + year empty$ + { t sortify " " * "2199" convert.year * 'sort.label.abb := } + { t sortify " " * year convert.year * 'sort.label.abb := } + if$ + econ.debug #0 = not + { "sort.label.abb = ``\texttt{" write$ + sort.label.abb write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% flabel +FUNCTION {calc.flabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.full + { type$ "proceedings" = + 'editor.key.organization.label.full + { type$ "manual" = + 'author.key.organization.label.full + 'author.key.label.full + if$ + } + if$ + } + 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$ + flabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% alabel +FUNCTION {calc.alabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.abb + { type$ "proceedings" = + 'editor.key.organization.label.abb + { type$ "manual" = + 'author.key.organization.label.abb + 'author.key.label.abb + if$ + } + if$ + } + if$ + 'alabel := + % For debug + econ.debug #0 = not + { "alabel = ``\texttt{" write$ + alabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% title for sorting +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +%%% author for sorting +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +%%% editor for sorting +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$ +} + +%%% 1,...,9 -> 001,...,009 +%%% 10,...,99 -> 010,...,099 +FUNCTION {add.zero.to.number} +{ 's := + s text.length$ #1 = + { "00" s * } + { s text.length$ #2 = + { "0" s * } + { s } + if$ + } + if$ +} + +%% entry type +FUNCTION {bst.sort.entry.type.order} +{ 'item.type := + item.type "article" = + { "01" } + { item.type "book" = + { "02" } + { item.type "booklet" = + { "03" } + { item.type "comment" = + { "04" } + { item.type "conference" = + { "05" } + { item.type "inbook" = + { "06" } + { item.type "incollection" = + { "07" } + { item.type "inproceedings" = + { "08" } + { item.type "manual" = + { "09" } + { item.type "masterthesis" = + { "10" } + { item.type "misc" = + { "11" } + { item.type "phdthesis" = + { "12" } + { item.type "proceedings" = + { "13" } + { item.type "techreport" = + { "14" } + { item.type "unpublished" = + { "15" } + { "16" } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% Create sort.key$: absorder -> author -> year -> order -> month -> title. +FUNCTION {presort.one} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * + sort.label.abb * + " " * + type$ "book" = type$ "inbook" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + * " " * + " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +FUNCTION {presort.two} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * sort.label * " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% Codes for debugging +FUNCTION {calc.alabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.alabel: alabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {calc.flabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.flabel: flabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {presort.one.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (1st time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {presort.two.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (2nd time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.cyear.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.cyear: sort.label = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.sort.label.abb.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.sort.label.abb: sort.label.abb = }\\" write$ + newline$ } + 'skip$ + if$ +} + +%%% alabel +EXECUTE {calc.alabel.mess} +ITERATE {calc.alabel} + +%%% flabel +EXECUTE {calc.flabel.mess} +ITERATE {calc.flabel} + +%%% cyear and sort.label +EXECUTE {calc.cyear.mess} +ITERATE {calc.cyear} + +%%% +EXECUTE {calc.sort.label.abb.mess} +ITERATE {calc.sort.label.abb} + +%%% Sorting by $sort.key (first time) +% +% Sorting is done in two times. This is the first time. +% +EXECUTE {presort.one.mess} +ITERATE {presort.one} +SORT + +FUNCTION {forward.pass} +{ bst.use.bysame #0 = bst.use.bysame #2 = or + % Not use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + } + % Use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + % format.names 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label empty$ not + { cyear extra.label * } + { cyear "" * } + if$ + "" field.or.null * + 'cyear := + extra.label 'next.extra := +} + +%%% \bysame +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +%%% Sorting by sort.key$ (second time) +EXECUTE {presort.two.mess} +ITERATE {presort.two} +SORT + +FUNCTION {reset.prev.author} +{ "xxyyzz" 'prev.author := } + +EXECUTE {reset.prev.author} + +FUNCTION {forward.pass.two} +{ bst.use.bysame #1 = + { author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + 'skip$ + if$ +} + +ITERATE {forward.pass.two} + +FUNCTION{punctuation} +{ + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" write$ newline$ + "% This bbl file is created by aea.bst ver." econ.version * write$ newline$ + "% The latest aea.bst is available at" write$ newline$ + "% " write$ newline$ newline$ +} + +EXECUTE {punctuation} + +FUNCTION {begin.bib} +{ + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + bst.use.bysame #0 = + % Not use \bysame. + 'skip$ + % Use \bysame. + { "%%% Definition of \bysame" write$ newline$ + "\ifx\undefined\bysame" write$ newline$ + "\newcommand{\bysame}{" bst.bysame.definition * "}" * + write$ newline$ + "\fi" write$ newline$ newline$ } + if$ + %% When number index is attached to the beginning of each item. + bst.use.number.index #0 = + 'skip$ + { bst.number.index.digit "1" = + % one digit. + { bst.number.index.bibhang.one } + { bst.number.index.digit "2" = + % two digits. + { bst.number.index.bibhang.ten } + % three or more digits. + { bst.number.index.bibhang.hund } + if$ + } + if$ + 'hang := + "%%% Redefinition of \bibhang" write$ newline$ + "\ifx\undefined\bibhang" write$ newline$ + "\relax" write$ newline$ + "\else" write$ newline$ + "\setlength{\bibhang}{" + hang * "}" * write$ newline$ + "\fi" write$ newline$ newline$ + } + if$ + "\begin{thebibliography}{xxx}" write$ newline$ + + %% Initialize the variable `index'. + #0 'index := +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +EXECUTE {end.bib} + +% -------------------- +% Local Variables: +% fill-column: 78 +% mode: bst +% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf new file mode 100644 index 0000000000..dd4682d6fd Binary files /dev/null and b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex new file mode 100644 index 0000000000..adf2074476 --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex @@ -0,0 +1,58 @@ +%#!pdflatex +%#BIBTEX bibtex econ-aea + +%############################## Main ################################# +\documentclass[10pt]{article} + +%% Use natbib.sty +\usepackage{natbib} +\usepackage{newtxtext,newtxmath} +\usepackage{url} +\usepackage{graphicx} +\usepackage{color} +\definecolor{MyBrown}{rgb}{0.3,0,0} +\definecolor{MyBlue}{rgb}{0,0,0.3} +\definecolor{MyRed}{rgb}{0.4,0,0.1} +\definecolor{MyGreen}{rgb}{0,0.4,0} +\usepackage[bookmarks=true,% +bookmarksnumbered=true,% +colorlinks=true,% +linkcolor=MyBlue,% +citecolor=MyRed,% +filecolor=MyBlue,% +urlcolor=MyGreen% +]{hyperref} + +\setlength{\topmargin}{-20pt} +\setlength{\textheight}{648pt} +\setlength{\oddsidemargin}{15pt} +\setlength{\textwidth}{440pt} + +%##################################################################### +%######################### Document Starts ########################### +%##################################################################### +\begin{document} + +This document uses ``\verb|econ-aea.bst|'', which is the style for journals of +American Economic Association (AEA) such as {\itshape American Economic Review}, +{\itshape Journal of Economic Literature} and {\itshape American Economic +Journals}. + +\vspace{1em} + +\input{cited-part} +\nocite{*} + +%% bst file: +\bibliographystyle{econ-aea} +\bibliography{../econ-example} + +\end{document} + +%##################################################################### +%######################### Document Ends ############################# +%##################################################################### +% -------------------- +% Local Variables: +% fill-column: 80 +% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aer.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-aer.bst deleted file mode 100644 index d570b82a67..0000000000 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-aer.bst +++ /dev/null @@ -1,3538 +0,0 @@ -%% econ.bst: BibTeX style file for papers in economics. -% -% Author: Shiro Takeda -% Maintainer: Shiro Takeda -% Copyright (C) 2001-2018 Shiro Takeda -% First-written: <2007/07/28> -% Time-stamp: <2018-12-07 18:49:31 st> -% Version: 2.5 -% Keywords: TeX, BibTeX, bst -% URL: https://github.com/ShiroTakeda/econ-bst - -% This work may be distributed and/or modified under the -% conditions of the LaTeX Project Public License, either version 1.3 -% of this license or (at your option) any later version. -% The latest version of this license is in -% http://www.latex-project.org/lppl.txt -% and version 1.3 or later is part of all distributions of LaTeX -% version 2005/12/01 or later. -% -% This work has the LPPL maintenance status "maintained". -% -% 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). - -% Bug reports, requests and suggestions are welcome. - -% For changelogs, see CHANGES.txt file. - -% version number -FUNCTION {econ.version} { "2.5" } - -% Debug mode. Non-zero makes debug mode on. -FUNCTION {econ.debug} -{ #0 } % Debug mode off (default). -% { #1 } % Debug mode on. - -ENTRY - %%% Declaration of field - { access address author booktitle chapter doi edition editor howpublished - institution journal key month note number organization pages publisher - school series title type url volume year - % Fields specific to econ.bst - order absorder nameorder - } - - % Definition of entry variable. The entry variable is a variable which has - % different values according to different entries. - %% Integer entry variable: - { order.cited } - - %% String entry variable - { label cyear flabel alabel extra.label sort.label sort.label.abb - extra.label.bysame nameorder.temp } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Functions for customization: -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Use \bysame or not. -% -% If set to #0, \bysame is not used. -% If set to #1, \bysame is used -% If set to #2, \bysame is used (alternative abbreviation style). -% -% Note that integer number is expressed as # + integer in bst file. -% \bysame is the function that abbreviates succession of the same authors' name by ---. -% -% See econ-sample.pdf for details. -% -FUNCTION {bst.use.bysame} -{ #0 } % Not use \bysame -% { #1 } % -> Use \bysame (default) -% { #2 } % -> Use \bysame of alternative style. - -% The definition of \bysame command. -% -FUNCTION {bst.bysame.definition} -{ "\hskip.3em \leavevmode\rule[.5ex]{3em}{.3pt}\hskip0.5em" } % (default) -% { "\leavevmode\hbox to\leftmargin{\hrulefill\,\,}" } % If you set #2 to bst.use.bysame, use this. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% The order of fist and last name. -% -FUNCTION {bst.author.name} -{ #0 } % (default) -% { #1 } -% { #2 } - -% Case of #0: First author -> last-first, other authors -> first-last. -% Fujita, Masahisa, Paul R. Krugman, and Anthony J. Venables. - -% Case of #1: All authors -> last-first -% Fujita, Masahisa, Krugman, Paul R., and Venables, Anthony J. - -% Case of #2: All authors -> first-last -% Masahisa Fujita, Paul R. Krugman, and Anthony J. Venables. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Abbreviate first name of authors (editors): -% -FUNCTION {bst.first.name.initial} -{ #0 } % #0 -> full letters (default). -% { #1 } % Non-zero -> initial letter only. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Decapitalize of strings in title field. -% -FUNCTION {bst.title.lower.case} -{ #0 } % If #0, not decapitalize title (default). -% { #1 } % If non-#0, decapitalize title - -% Hide title filed. -% -FUNCTION {bst.hide.title} -{ #0 } % #0 -> Title field is displayed (default) -% { #1 } % Non-zer -> Title field is hidden - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Hide month. -% -FUNCTION {bst.hide.month} -{ #0 } % #0 -> show month field (default). -% { #1 } % non-#0 -> hide month field. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Attach number index like plain.bst. -% -FUNCTION {bst.use.number.index} -{ #0 } % Not use number index (default). -% { #1 } % Non-#0 -> Use number index - -% The string before number index: -% -FUNCTION {bst.number.index.pre} -{ "[" } % (default) - -% The string after number index. Adjustment is recommended. -% -FUNCTION {bst.number.index.post} -{ "]\hskip1.0em " } % (default) - -% Maximum digit of number index: -% If the number of reference items >= 100, set 3 to this function. -% If the number of reference items < 100, set 2 to this function. -% If the number of reference items < 10, set 1 to this function. -% -FUNCTION {bst.number.index.digit} -{ "2" } % (default) -% { "3" } - -% The functions below are used to adjust space and postion. If you use fonts -% other than computer modern fonts, you had better make adjustments. -% -% Setting for bst.number.index.digit = 1: -FUNCTION {bst.number.index.bibhang.one} -{ "2.05em" } % (default) -% Setting for bst.number.index.digit = 2: -FUNCTION {bst.number.index.bibhang.ten} -{ "2.55em" } % (default) -% Setting for bst.number.index.digit = 3: -FUNCTION {bst.number.index.bibhang.hund} -{ "3.05em" } % (default). - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Position of "year": -% -% You can choose the position of year by this function. -% -% If set to #0, year is placed right after "author". -% If set to non-zero, year is placed at the end (before note field) except for -% aritcle type entry. -% -% In article type entry, the position of year changes according to the -% following rule: -% -% #1 -> year is placed at the end. -% #2 -> year is placed after journal name in aritcle type entry. -% #3 -> year is placed after volume in aritcle type entry. -% -FUNCTION {bst.year.position} -{ #0 } % (default). -% { #1 } % Last place before note. -% { #2 } % After journal name for aticle type entry. -% { #3 } % After volume for aticle type entry. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% If 0, references are sorted by old documents -> recent documents. If -% non-zero, reverse order. -FUNCTION {bst.reverse.year} -{ #0 } % Normal order (old -> recent) (default). -% { #1 } % inverse order (recent -> old) - -% If non-zero, sort references by using year field as the primary key -% (chronological sorting). -FUNCTION {bst.sort.year} -{ #0 } % Normal case: year is used as the sorting key next to author (default). -% { #1 } % year is used as the primary sorting key. - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% If non-zero, references are listed in citation order. -% -FUNCTION {bst.no.sort} -{ #0 } % (default) -% { #1 } % listed in citation order. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Non-zero -> sort references by entry type (article, book, incollection etc.) -% -FUNCTION {bst.sort.entry.type} -{ #0 } % #0 -> Normal (not sort references by entry type) (default). -% { #1 } % Non-zero -> sort references by entry type. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% 0 -> use absorder field to sort items. Otherwise, ignore absorder field. -% -FUNCTION {bst.notuse.absorder.field} -{ #0 } % #0 -> Use absorder (default). -% { #1 } % Non-#0 -> Not use absorder. -% -% Order of priority to sort items -% -% absorder -> author -> year -> order -> month -> title -% -% wehre absorder and order fields are specific to econ.bst. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% 0 -> use order field to sort items. Otherwise, ignore order field. -% Note: order field is specific to econ.bst. -FUNCTION {bst.notuse.order.field} -{ #0 } % #0 -> Use order field (default). -% { #1 } % Non-#0 -> not use order field. - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% and - -%%% String used to separate author names in references. -% -% String replaced with _ in "Mr. A _ Mr. B " -% -FUNCTION {bst.and} -{ ", and " } -% { " and " } % (default) - -%%% String used to separate author names in references (more than two authors). -% -% String replaced with _ in "Mr. A, Mr. B _ Mr. C" -% -FUNCTION {bst.ands} -{ ", and " } % (default) - -%%% String used to separate author names in citation part. -% -% String replaced with _ in "Mr. A _ Mr. B " -% -FUNCTION {bst.cite.and} -{ " and " } % (default) - -%%% String used to separate author names in citation part (more than two authors). -% -% String replaced with _ in "Mr. A, Mr. B _ Mr. C" -% -FUNCTION {bst.cite.ands} -{ " and " } % (default) - -%%% If you want to use random author order for some bibliography entries, set -% non-zero to this function. -% -FUNCTION {bst.use.nameorder} -{ #1 } % Use random order (default) -% { #0 } % Not use random order - -%%% String used to separate author names in references for the entry of random -% author order. -% -FUNCTION {bst.and.nameorder} -{ " \textcircled{r} " } % (default) - -%%% String used to separate author names in citation part for the entry of -% random author order -% -FUNCTION {bst.cite.and.nameorder} -{ " \textcircled{r} " } % (default) - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Author names in the citation part are abbreviated by et al. if the number of -% 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 } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Strings used when abbreviating multiple-authors in citation part. -FUNCTION {bst.and.others} -{ " et~al." } % (default) - -% Strings used when abbreviating multiple-authors in citation part for entries -% with random author order. -FUNCTION {bst.and.others.nameorder} -{ " \textcircled{r}~al." } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% author - -% The string before author: -% -FUNCTION {bst.author.pre} -{ "\textbf{" } -% { "" } % (default) - -% The string after author: -% -FUNCTION {bst.author.post} -{ ".}" } -% { "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% year - -% The string before year only for aritcle type entry. -% -FUNCTION {bst.year.pre} -{ " " } -% { " (" } % (default) - -% The string after year only for aritcle type entry. -% -FUNCTION {bst.year.post} -{ ". " } -% { ") " } % (default) - -% The string after year for non-article type entry (book, incollection etc) -% -FUNCTION {bst.year.na.pre} -{ " " } -% { " (" } % (default) - -% The string after year for non-article type entry (book, incollection etc) -% -FUNCTION {bst.year.na.post} -{ ". " } -% { ") " } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% title (except for title in book) - -% The string before title: -% -FUNCTION {bst.title.pre} -{ "``" } % (default) - -% The string after title: -% -FUNCTION {bst.title.post} -{ ".''" } -% { ",''" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% tile for book: - -% The string before book title: -% -FUNCTION {bst.book.pre} -{ " \textit{" } % (default) - -% The string after book title: -% -FUNCTION {bst.book.post} -{ "}." } -% { "}" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% booktitle - -% The string before booktitle: -% -FUNCTION {bst.btitle.pre} -{ " \textit{" } % (default) - -% The string after booktitle: -% -FUNCTION {bst.btitle.post} -{ "}." } -% { "}" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% journal name - -% The string before journal name: -% -FUNCTION {bst.journal.pre} -{ " \textit{" } % (default) - -% The string after journal name: -% -FUNCTION {bst.journal.post} -{ "}" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% editor notation: - -% The string that indicates multiple editors: -% -FUNCTION {bst.editors} -{ " eds. " } % (default) - -% The string that indicates single editor: -% -FUNCTION {bst.editor} -{ " ed. " } % (default) - -% Order of editor and booktitle in incollection and inproceedings entries. -% -% If set to #0: editors -> booktitle order -% If set to non-zero: booktitle -> editors order -% -FUNCTION {bst.editor.btitle.order} -{ #1 } -% { #0 } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% edition - -% The string before edition: -% -FUNCTION {bst.edition.pre} -{ ", " } % (default) - -% The string after edition: -% -FUNCTION {bst.edition.post} -{ " edition" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% volume - -% The string before volume: -% -FUNCTION {bst.volume.pre} -{ ", " } -% { ", Vol. " } % (default) - -% The string after volume: -% -FUNCTION {bst.volume.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% number - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -% Hide number. If non-zero, number is suppressed. -FUNCTION {bst.hide.number} -{ #0 } % #0 -> show number field (default) -% { #1 } % non-#0 -> Hide number field. - -% The string before number: -% -FUNCTION {bst.number.pre} -{ "(" } -% { ", No. " } % (default) - -% The string after number: -% -FUNCTION {bst.number.post} -{ "): " } -% { "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% in - -% In -% -FUNCTION {bst.in} -{ " In " } -% { " in " } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% page - -% The string before page (multiple pages): -% -FUNCTION {bst.pages.pre} -{ " " } -% { ", pp." } % (default) - -% The string before page: -% -FUNCTION {bst.page.pre} -{ ", p." } % (default) - -% The string after page (multiple pages): -% -FUNCTION {bst.pages.post} -{ "" } % (default) - -% The string after page: -% -FUNCTION {bst.page.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% chapter - -% The string before chapter: -% -FUNCTION {bst.chapter.pre} -{ ", Chap." } % (default) - -% The string after chapter: -% -FUNCTION {bst.chapter.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% month - -% The string before month: -% -FUNCTION {bst.month.pre} -{ ", " } % (default) - -% The string after month: -% -FUNCTION {bst.month.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% address -% The string before address: -% -FUNCTION {bst.address.pre} -{ ", " } % (default) - -% The string after address: -% -FUNCTION {bst.address.post} -{ "" } % (default) - -% You can choose the order of address and publisher by this function. -% -% If #0, address -> publisher order (the default value). -% If non-zero, publisher -> address order. - -FUNCTION {bst.address.position} -{ #0 } % Address is placed before publisher (default) -% { #1 } % Address is placed after publisher - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% publisher - -% The string before publisher: -% -FUNCTION {bst.publisher.pre} -{ ": " } % (default) - -% The string after publisher: -% -FUNCTION {bst.publisher.post} -{ ", " } -% { "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% series - -% The string before series: -% -FUNCTION {bst.series.pre} -{ ", " } % (default) - -% The string after series: -% -FUNCTION {bst.series.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% organization - -% The string before organization: -% -FUNCTION {bst.organization.pre} -{ ", " } % (default) - -% The string after organization: -% -FUNCTION {bst.organization.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% school - -% The string before school: -% -FUNCTION {bst.school.pre} -{ ", " } % (default) - -% The string after school: -% -FUNCTION {bst.school.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% institution - -% The string before institution: -% -FUNCTION {bst.institution.pre} -{ ", " } % (default) - -% The string after institution: -% -FUNCTION {bst.institution.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% howpublished - -% The string before howpublished: -% -FUNCTION {bst.howpublished.pre} -{ " " } % (default) - -% The string after howpublished: -% -FUNCTION {bst.howpublished.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% url - -% Show or Hide url. If non-zero, url is displayed. Otherwise, url is suppressed. -FUNCTION {bst.show.url} -{ #1 } % non-#0 -> Show url field (default) -% { #0 } % #0 -> Not show url field. - -% The string before url: -% -FUNCTION {bst.url.pre} -{ ", URL: \url{" } % (default) - -% The string after url: -% -FUNCTION {bst.url.post} -{ "}" } % (default) - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Access - -% This setting is valid only if there are "access" field in bib -% files. The value of access field indicates accessed date for URL. - -% The string before access. -FUNCTION {bst.access.pre} -{ ", accessed on " } % (default) - -% The string after access. -FUNCTION {bst.access.post} -{ "" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% DOI (digital object identifier) - -% This setting is valid only if there are "doi" field in bib files. - -% Show or Hide DOI. If non-zero, DOI is displayed. Otherwise, DOI is suppressed. -FUNCTION {bst.show.doi} -{ #1 } % non-#0 -> Show DOI field (default) -% { #0 } % #0 -> Not show DOI field. - -% The string before DOI: -% -FUNCTION {bst.doi.pre} -{ ", DOI: \href{http://dx.doi.org/" doi * "}{" * } % (default) - -% The string after DOI: -% -FUNCTION {bst.doi.post} -{ "}" } % (default) - -% How to show URL and DOI fields when both fields exist. -% -% #0 -> Both fields are displayed -% #1 -> Only URL field is displayed -% #2 -> Only DOI field is displayed -% -FUNCTION {bst.url.doi} -% { #0 } % (default) -> Both fields are displayed -% { #1 } % -> Only URL field is displayed -{ #2 } % -> Only DOI field is displayed - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Other functions: - -% The string before note. -FUNCTION {bst.note.pre} -{ ", " } % (default) - -% The string after note. -FUNCTION {bst.note.post} -{ "" } % (default) - -% The string that represents Technical report: -% -FUNCTION {bst.techrep} -{ " Tech. Rep." } % (default) - -% The string that represents master thesis: -% -FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) - -% The string that represents phd thesis: -% -FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% -%% Functions for customization end here: -%% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -FUNCTION {bst.first} -{ "1st" } - -FUNCTION {bst.second} -{ "2nd" } - -FUNCTION {bst.third} -{ "3rd" } - -FUNCTION {bst.fourth} -{ "4th" } - -FUNCTION {bst.fifth} -{ "5th" } - -FUNCTION {bst.st} -{ "st" } - -FUNCTION {bst.nd} -{ "nd" } - -FUNCTION {bst.rd} -{ "rd" } - -FUNCTION {bst.th} -{ "th" } - -%%%%% memo by Takeda - -% "a" 'b := indicates substituting string "a" for variable b. - -% Integer number #0, #1,... - -%%% Function definition: -% -% FUNCTION {name} -% { 's := -% -% } -% -% This is the definition of a function named "name". The function "name" is -% used in the following way -% -% "foo" name -% "foo" is an argument for the function "name". -% -% About the definition of a function with more than two arguments, see the -% definition of "chop.word". - -%%% Declaration of variables: - -%% String global variables: -STRINGS { s t tt } -STRINGS { year.num } -STRINGS { preone preten } -STRINGS { last.sort.label next.extra prev.author prev.author.aer this.author } -STRINGS { hang } -STRINGS { item.type } -STRINGS { tempa tempb } - -%% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } -INTEGERS { multiresult } -INTEGERS { index } -INTEGERS { len } -INTEGERS { last.extra.num } -INTEGERS { output.state before.all mid.sentence after.sentence after.block } -INTEGERS { last.period.comma } -INTEGERS { len1.aer len2.aer i.aer } - -%%% Definition of functions: -FUNCTION {not} -{ { #0 } - { #1 } - if$ -} - -FUNCTION {and} -{ 'skip$ - { pop$ #0 } - if$ -} - -FUNCTION {or} -{ { pop$ #1 } - 'skip$ - if$ -} - -%%% Initialize variables: -FUNCTION {init.state.consts} -{ #0 'before.all := - #1 'mid.sentence := - #2 'after.sentence := - #3 'after.block := -} - -%%% Remove comma and add period: -% -%%% -FUNCTION {add.period.x} -{ duplicate$ - #-1 #1 substring$ "," = - { #-2 global.max$ substring$ "." * } - { duplicate$ - #-1 #2 substring$ ". " = - { #-3 global.max$ substring$ "." * } - { duplicate$ - #-1 #2 substring$ ", " = - { #-3 global.max$ substring$ "." * } - { duplicate$ - #-1 #2 substring$ ",'" = - { #-3 global.max$ substring$ ".'" * } - { duplicate$ - #-1 #2 substring$ ".'" = - { #-3 global.max$ substring$ ".'" * } - { duplicate$ - #-1 #2 substring$ ".~" = - { #-3 global.max$ substring$ ".~" * } - { duplicate$ - #-1 #2 substring$ ",~" = - { #-3 global.max$ substring$ ".~" * } - { duplicate$ - #-1 #3 substring$ ",''" = - { #-4 global.max$ substring$ ".''" * } - { duplicate$ - #-1 #3 substring$ ".''" = - { #-4 global.max$ substring$ ".''" * } - { add.period$ } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ -} - -FUNCTION {output.nonnull} -{ 's := - % mid.sentence - output.state mid.sentence = - { ", " * write$ } - % not mid.sentence - { output.state after.block = - % after.block - { add.period.x " " * write$ } - % before.all - { output.state before.all = - 'write$ - { add.period.x " " * write$ } - if$ - } - if$ - % not mid.sentence, set to mid.sentence - mid.sentence 'output.state := - } - if$ - s -} - -%%% If the last character is period or comma, set non-zero to -%%% last.period.comma. -FUNCTION {period.comma.p} -{ duplicate$ 't := - t #-1 #1 substring$ "." = - t #-1 #1 substring$ "," = or - t #-1 #1 substring$ ":" = or - t #-1 #2 substring$ ".'" = or - t #-1 #2 substring$ ",'" = or - t #-1 #3 substring$ ".''" = or - t #-1 #3 substring$ ",''" = or - t #-1 #2 substring$ ".~" = or - t #-1 #2 substring$ ",~" = or - { #1 'last.period.comma := } - { #0 'last.period.comma := } - if$ -} - -%%% remove unnecessary comma. -FUNCTION {remove.pre.comma} -{ 's := - s empty$ - { "" } - { s #1 #1 substring$ "," = - { s #2 global.max$ substring$ } - { s #1 #1 substring$ "." = - { s #2 global.max$ substring$ } - 's - if$ - } - if$ - } - if$ -} - -%%% output.nonnull.nocomma is the same as output.nonnull except that it does -%%% not add commas even in mid.sentence. -FUNCTION {output.nonnull.nocomma} -{ 's := - output.state mid.sentence = - % mid.sentence - { period.comma.p "" * write$ } - - % not mid.sentence - { output.state after.block = - % after.block - { add.period.x " " * write$ } - % before.all - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } - if$ - mid.sentence 'output.state := - } - if$ - last.period.comma #0 = - { s } - { s remove.pre.comma } - if$ -} - -% Not used in the current econ.bst. -% FUNCTION {output} -% { duplicate$ empty$ -% 'pop$ -% 'output.nonnull -% if$ -% } - -FUNCTION {output.nocomma} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull.nocomma - if$ -} - -% Not used in the current econ.bst. -% FUNCTION {output.check} -% { 't := -% duplicate$ empty$ -% { pop$ "empty " t * " in " * cite$ * warning$ } -% 'output.nonnull -% if$ -% } - -FUNCTION {output.check.nocomma} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull.nocomma - if$ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% Format in bbl file: - -% \harvarditem[Brezis et~al.]{Brezis, Krugman and -% Tsiddon}{1993}{brezis93:_leapf_inter_compet} -% Brezis, Elise~S., Paul~R. Krugman, and Daniel Tsiddon (1993) ``Leapfrogging in -% International Competition: A Theory of Cycles in National Technological -% Leadership.'', {\em American Economic Review.}, Vol.~83. No.~5. pp. -% 1211--1219. - -% \harvarditem[abbreviated citation]{full citation}{year}{keyword} ... - -%%% Add period and newline. -FUNCTION {fin.entry} -{ add.period.x - 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 {new.block.check} -{ empty$ - 'skip$ - 'new.block - if$ -} - -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -%%% booktitle -FUNCTION {format.btitle} -{ booktitle empty$ - { "" } - { bst.btitle.pre booktitle * bst.btitle.post * } - if$ -} - -%%% journal -FUNCTION {format.journal} -{ journal empty$ - { "" } - { bst.journal.pre journal * bst.journal.post * } - if$ -} - -%%% title for book -FUNCTION {format.book} -{ title empty$ - { "" } - { bst.book.pre title * bst.book.post * } - if$ -} - -FUNCTION {format.url} -{ url empty$ - { "" } - { type$ "online" = bst.show.url or - { bst.url.pre url * bst.url.post * - access empty$ - { "" * } - { bst.access.pre * access * bst.access.post * } - if$ - } - { "" } - if$ - } - if$ -} - -FUNCTION {format.doi} -{ doi empty$ bst.show.doi not or - { "" } - { bst.doi.pre doi * bst.doi.post * } - if$ -} - -FUNCTION {format.url.doi} -{ url empty$ - { format.doi } - { doi empty$ - { format.url } - { bst.url.doi #0 = - { format.url output.nocomma - format.doi } - { bst.url.doi #1 = - { format.url } - { format.doi } - if$ - } - if$ - } - if$ - } - if$ -} - -%%% and others -FUNCTION {bst.and.others.output} -{ nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.others.nameorder } - { bst.and.others } - if$ -} - -%%% author and editor - -%%% name -FUNCTION {format.names} -{ '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$ - } - 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 - { 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$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -% remove successive periods (commas) from author -FUNCTION {remove.ss.period.auth} -{ 's := - s format.names 'tempa := - bst.author.post 'tempb := - tempb #1 #1 substring$ "}" = - { tempa tempb * } - { tempa #-1 #1 substring$ tempb #1 #1 substring$ = - { tempa tempb #2 global.max$ substring$ * } - { tempa tempb * } - if$ - } - if$ -} - -% compare.names -FUNCTION {compare.names.aer} -{ 's := - 'tempa := - -% "current.author = " s * "\\" * write$ newline$ -% "prev.author = " tempa * "\\" * write$ newline$ - - tempa num.names$ 'len1.aer := % len1 = the number of previous authors - s num.names$ 'len2.aer := % len2 = the number of current authors - -% len1.aer := min(len1.aer,len2.aer) -% len1 -> min{ the number of previous authors, the number of current authors } - len1.aer len2.aer > - { len2.aer 'len1.aer := } - { } - if$ - -% start with an empty string, then while the components are the same -% add "\bysame" - "" - #1 'i.aer := - - { i.aer len1.aer > not } - { tempa i.aer "{ff }{vv }{ll}{ jj}" format.name$ - s i.aer "{ff }{vv }{ll}{ jj}" format.name$ - = - { #1 i.aer < - { " and " * } % \bysame で省略する著者の前につく and - { } - if$ - "\bysame{}" * - i.aer #1 + 'i.aer := } - { #-1 'len1.aer := } - if$ - } - while$ - -% add the rest of the second string - { i.aer len2.aer > not } - { #1 i.aer < - { " and " * } - { } - if$ - s i.aer "{ff }{vv }{ll}{ jj}" format.name$ * - i.aer #1 + 'i.aer := - } - while$ -} - -%%% author -FUNCTION {format.authors} -{ author empty$ - { "" } - { bst.use.bysame #2 = - { prev.author.aer author compare.names.aer 's := - author 'prev.author.aer := } - { author 's := } - if$ - extra.label.bysame "bysame" = - { "\bysame " } - { bst.author.pre s remove.ss.period.auth * } - if$ - } - if$ -} - -%%% editor -FUNCTION {format.editors} -{ editor empty$ - { "" } - { bst.use.bysame #2 = - { prev.author.aer editor compare.names.aer 's := - editor 'prev.author.aer := } - { editor 's := } - if$ - extra.label.bysame "bysame" = - { "\bysame " } - { bst.author.pre s remove.ss.period.auth * } - if$ - s num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ - } - if$ -} - -FUNCTION {format.authors.alt} -{ author empty$ - { "" } - { extra.label.bysame "bysame" = - {"\bysame "} - { bst.author.pre author remove.ss.period.auth * } - if$ - } - if$ -} - -%%% editor -FUNCTION {format.editors.alt} -{ editor empty$ - { "" } - { extra.label.bysame "bysame" = - { "\bysame " } - { bst.author.pre editor remove.ss.period.auth * } - if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ - } - if$ -} - -%%% format.in.ed.booktitle -FUNCTION {format.editors.x} -{ editor empty$ - { "" } - { bst.editor.btitle.order #0 = - { "" } - { editor num.names$ #1 > - { bst.editors " by " * } - { bst.editor " by " * } - if$ - } - if$ - editor format.names * - bst.editor.btitle.order #0 = - { editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ - } - { "" * } - if$ - } - if$ -} - -%%% Remove commas in the cases like "?." and "?,". -FUNCTION {remove.irrelevant.period.comma} -{ 's := - s empty$ - { "" } - { s #-1 #3 substring$ "?,'" = - s #-1 #3 substring$ "?.'" = or - { s #-3 global.max$ substring$ "'" * } - { s #-1 #4 substring$ "?,''" = - s #-1 #4 substring$ "?.''" = or - { s #-4 global.max$ substring$ "''" * } - { s #-1 #2 substring$ "?," = - s #-1 #2 substring$ "?." = or - { s #-2 global.max$ substring$ "" * } - { s #-1 #3 substring$ "?,~" = - s #-1 #3 substring$ "?.~" = or - { s #-4 global.max$ substring$ "?~" * } - 's - if$ - } - if$ - } - if$ - } - if$ - } - if$ -} - -%%% title -FUNCTION {format.title.sub} -{ bst.title.lower.case #0 = - { bst.title.pre title * bst.title.post * } - { bst.title.pre title "t" change.case$ * bst.title.post * } - if$ -} - -%%% title -FUNCTION {format.title} -{ title empty$ - bst.hide.title #0 = not or - { "" } - { format.title.sub remove.irrelevant.period.comma } - if$ -} - -%%% title for misc. -FUNCTION {format.misc.title} -{ title empty$ - { "" } - { bst.title.pre title * bst.title.post * } - if$ -} - -% Convert "-" to "--" (for pages field) -FUNCTION {n.dashify} -{ 't := - "" - %% while$ - { 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$ -} - -%%% year -FUNCTION {format.year} -{ year empty$ - { "there's no year in " cite$ * warning$ - ", " } - { type$ "article" = - { bst.year.pre year * extra.label * bst.year.post * } - { bst.year.na.pre year * extra.label * bst.year.na.post * } - if$ - } - if$ -} - -%%% page for book -FUNCTION {format.book.pages} -{ pages empty$ - { "" } - { bst.pages.pre pages * bst.pages.post * } - if$ -} - -%%% Attach tie for the string with two or less characters. -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$ -} - -%%% volume for book -FUNCTION {format.bvolume} -{ volume empty$ - { "" } - { bst.volume.pre volume * bst.volume.post * - series empty$ - 'skip$ - %% If there is series field - { " of " * series * bst.series.post * } - if$ -% "volume and number" number either.or.check - } - if$ -} - -%%% series -FUNCTION {output.series} -{ series empty$ - { "" } - { bst.series.pre series * bst.series.post * } - if$ -} - -%%% number and series -FUNCTION {format.number.series} -{ volume empty$ - { number empty$ - bst.hide.month #0 = not or - % number is empty - { series empty$ - { "" } - % series is not empty. - { output.series } - if$ - } - % number is not empty$ - { series empty$ - { bst.number.pre number * bst.number.post * } - % series is not empty. - { bst.in bst.series.pre * series * bst.series.post * - bst.number.pre * number * bst.number.post * } - if$ - } - if$ - } - { "" } - if$ -} - -%%% Number or not. -FUNCTION {is.num} -{ chr.to.int$ - duplicate$ "0" chr.to.int$ < not - swap$ "9" chr.to.int$ > not and -} - -FUNCTION {extract.num} -{ duplicate$ 't := - "" 's := - { t empty$ not } - { t #1 #1 substring$ - t #2 global.max$ substring$ 't := - duplicate$ is.num - { s swap$ * 's := } - { pop$ "" 't := } - if$ - } - while$ - s empty$ - 'skip$ - { pop$ s } - if$ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% edition - -% Convert edition to 1st, 2nd, 3rd, 4th etc -FUNCTION {eng.ord} -{ duplicate$ "1" swap$ * - #-2 #1 substring$ "1" = - { bst.th * } - { duplicate$ #-1 #1 substring$ - duplicate$ "1" = - { pop$ bst.st * } - { duplicate$ "2" = - { pop$ bst.nd * } - { "3" = - { bst.rd * } - { bst.th * } - if$ - } - if$ - } - if$ - } - if$ -} - -% Convert first, second etc in edition field to 1st, 2nd (from jfm.bst) -FUNCTION {convert.edition} -{ edition extract.num "l" change.case$ 's := - s "first" = s "1" = or - { bst.first } - { s "second" = s "2" = or - { bst.second } - { s "third" = s "3" = or - { bst.third } - { s "fourth" = s "4" = or - { bst.fourth } - { s "fifth" = s "5" = or - { bst.fifth } - { s #1 #1 substring$ is.num - { s eng.ord } - { edition } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ -} - -%%% edition -FUNCTION {format.edition} -{ edition empty$ - { "" } - { output.state mid.sentence = - { bst.edition.pre convert.edition "l" change.case$ * bst.edition.post * } - { bst.edition.pre convert.edition "t" change.case$ * bst.edition.post * } - if$ - } - if$ -} - -%%% month -FUNCTION {format.month} -{ month empty$ - bst.hide.month #0 = not or - { "" } - { bst.month.pre month * bst.month.post * } - if$ -} - -%%% year and month -FUNCTION {format.date} -{ format.month format.year * -} - -%%% Is multiple pages like 1-100? -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 -} - -%%% pages -FUNCTION {format.pages} -{ pages empty$ - { "" } - { pages multi.page.check - { bst.pages.pre pages n.dashify tie.or.space.connect * bst.pages.post } - { bst.page.pre pages tie.or.space.connect * bst.page.post } - if$ - } - if$ -} - -%%% number -FUNCTION {format.number} -{ number empty$ - bst.hide.number #0 = not or - { "" } - { bst.number.pre number * bst.number.post * } - if$ -} - -%%% volume -FUNCTION {format.volume} -{ volume empty$ - 'skip$ - { bst.volume.pre volume * bst.volume.post * - bst.year.position #3 = - { format.year * } - 'skip$ - if$ - } - if$ -} - -%%% number, page -FUNCTION {format.number.pages} -{ number empty$ - { format.pages } - { format.number format.pages * } - if$ -} - -%%% volume, page -FUNCTION {format.volume.pages} -{ volume empty$ - { format.pages } - { format.volume format.pages * } - if$ -} - -%%% volume, number, page -FUNCTION {format.volume.number.pages} -{ volume empty$ - { number empty$ - { format.pages } - { format.number format.pages * } - if$ - } - { number empty$ - { format.volume format.pages * } - { format.volume format.number * format.pages * } - if$ - } - if$ -} - -% volume, number, page -FUNCTION {format.vol.num.pages} -{ volume empty$ - %% volume is empty. - { number empty$ - %% number is empty. - { pages empty$ - % warning - { "there is no volume, number, and pages in " cite$ * warning$ "" } - { "" format.pages * } - if$ - } - %% number is not empty. - % warning - { "there's a number but no volume in " cite$ * warning$ - format.number.pages } - if$ - } - %% volume is not empty. - { number empty$ - %% number is empty. - { format.volume.pages } - %% number is not empty. - { format.volume.number.pages } - if$ - } - if$ -} - -%%% chapter -FUNCTION {format.chapter} -{ chapter empty$ - { "" } - { type empty$ - { bst.chapter.pre chapter tie.or.space.connect * bst.chapter.post } - { ", " * type " " * chapter * } - if$ - } - if$ -} - -%%% chapter, pages -FUNCTION {format.chapter.pages} -{ chapter empty$ - { pages empty$ - { "" } - { "" format.pages * } - if$ - } - { pages empty$ - { "" format.chapter * } - { "" format.chapter * format.pages * } - if$ - } - if$ -} - -%%% editor and booktitle -FUNCTION {format.in.ed.booktitle} -{ booktitle empty$ - { "" } - { editor empty$ - { bst.in format.btitle * } - { bst.editor.btitle.order #0 = - { bst.in format.editors.x * " " * format.btitle * } - { bst.in format.btitle * " " * format.editors.x * } - if$ - } - if$ - } - if$ -} - -%%% howpublished -FUNCTION {format.howpublished} -{ howpublished empty$ - { "" } - { bst.howpublished.pre howpublished * bst.howpublished.post * } - if$ -} - -%%% address -FUNCTION {format.address} -{ address empty$ - { "" } - { bst.address.pre address * bst.address.post * } - if$ -} - -%%% publisher -FUNCTION {format.publisher} -{ publisher empty$ - { "" } - { bst.publisher.pre publisher * bst.publisher.post * } - if$ -} - -%%% organization -FUNCTION {format.organization} -{ organization empty$ - { "" } - { bst.organization.pre organization * bst.organization.post * } - if$ -} - -%% publisher and address -FUNCTION {output.publisher.address} -{ address empty$ - { format.publisher "publisher" output.check.nocomma } - { bst.address.position #0 = - { format.address output.nocomma - format.publisher "publisher" output.check.nocomma } - { format.publisher "publisher" output.check.nocomma - format.address output.nocomma } - if$ - } - if$ -} - -%% address, organization, publisher -FUNCTION {output.address.organization.publisher} -{ address empty$ - %% address is empty - { organization empty$ - %% organization is empty - { publisher empty$ - 'skip$ - { format.publisher "publisher" output.check.nocomma } - if$ - } - %% organization is not empty - { publisher empty$ - { format.organization "organization" output.check.nocomma } - { format.organization "organization" output.check.nocomma - format.publisher "publisher" output.check.nocomma } - if$ - } - if$ - } - %% address is not empty - { organization empty$ - %% organization is empty - { publisher empty$ - %% publisher is empty - { format.address output.nocomma } - %% publisher is not empty - { bst.address.position #0 = - { format.address output.nocomma - format.publisher "publisher" output.check.nocomma } - { format.publisher "publisher" output.check.nocomma - format.address output.nocomma } - if$ - } - if$ - } - %% organization is not empty - { publisher empty$ - %% publisher is empty - { format.organization "organization" output.check.nocomma - format.address output.nocomma } - %% publisher is not empty - { format.organization "organization" output.check.nocomma - bst.address.position #0 = - { format.address output.nocomma - format.publisher "publisher" output.check.nocomma } - { format.publisher "publisher" output.check.nocomma - format.address output.nocomma } - if$ - } - if$ - } - if$ - } - if$ -} - -%%% misc -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 * } - if$ -} - -FUNCTION {format.tr.number} -{ type empty$ - { "Technical Report" } - { " " type * } - if$ - number empty$ - { "t" change.case$ } - { number tie.or.space.connect } - if$ -} - -%%% phdthesis -FUNCTION {format.phd} -{ bst.phdthesis } - -%%% mastersthesis -FUNCTION {format.mthesis} -{ bst.mthesis } - -%%% school -FUNCTION {format.school} -{ school empty$ - { "" } - { bst.school.pre school * bst.school.post * } - if$ -} - -%%% institution -FUNCTION {format.institution} -{ institution empty$ - { "" } - { bst.institution.pre institution * bst.institution.post * } - if$ -} - -%%% remove first ? characters. -FUNCTION {chop.word} -{ 's := - 'len := - s #1 len substring$ = - { s len #1 + global.max$ substring$ } - 's - if$ -} - -FUNCTION {format.note} -{ note empty$ - { "" } - { bst.note.pre note * bst.note.post * } - if$ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \havarditem - -FUNCTION {output.bibitem} -{ newline$ - "\harvarditem[" write$ - alabel write$ % alabel <- abbreviated citation - "]{" write$ - flabel write$ % flabel <- full citation - "}{" write$ - cyear write$ - % cyear = year - "}{" write$ - cite$ write$ % cite$ -> pusch keyword - "}" write$ - % If number index is on - bst.use.number.index #0 = - 'skip$ - { index #1 + 'index := - "" 'preone := - "" 'preten := - bst.number.index.digit "1" = - 'skip$ - { bst.number.index.digit "2" = - { "\hskip0.5em" 'preone := } - { bst.number.index.digit "3" = - { "\hskip1em" 'preone := - "\hskip0.5em" 'preten := } - 'skip$ - if$ - } - if$ - } - if$ - } - if$ - newline$ - before.all 'output.state := - "" - % number index - bst.use.number.index #0 = - 'skip$ - { index #10 < - % Insert spaces according to digit of number index. - { preone } - { index #100 < - { preten } - { "" } - if$ - } - if$ - bst.number.index.pre * index int.to.str$ * bst.number.index.post * write$ - } - if$ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% article - -FUNCTION {article} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.title "title" output.check.nocomma - - format.journal "journal" output.check.nocomma - bst.year.position #2 = - { format.date output.nocomma } - 'skip$ - if$ - format.vol.num.pages output.nocomma - - bst.year.position #1 = - { format.date output.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% book - -FUNCTION {book} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check.nocomma } - { format.authors output.nonnull.nocomma - "author and editor" editor either.or.check - } - if$ - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.book "title" output.check.nocomma - - format.bvolume output.nocomma - format.number.series output.nocomma - output.publisher.address - - format.edition output.nocomma - format.book.pages output.nocomma - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% booklet - -FUNCTION {booklet} -{ output.bibitem - format.authors output.nocomma - format.year output.nocomma - format.misc.title "title" output.check.nocomma - format.howpublished output.nocomma - format.address output.nocomma - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% inbook - -FUNCTION {inbook} -{ output.bibitem - author empty$ - { format.editors "author and editor" output.check.nocomma } - { format.authors output.nonnull.nocomma - "author and editor" editor either.or.check - } - if$ - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ -% format.book remove.pre.comma "title" output.check.nocomma - format.book "title" output.check.nocomma - format.edition output.nocomma - - format.bvolume output.nocomma - format.chapter.pages "chapter and pages" output.check.nocomma - format.number.series output.nocomma - output.publisher.address - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% incollection - -FUNCTION {incollection} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.title "title" output.check.nocomma - - format.in.ed.booktitle "booktitle" output.check.nocomma - format.bvolume output.nocomma - output.address.organization.publisher - format.edition output.nocomma - format.chapter.pages output.nocomma - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% inproceedings - -FUNCTION {inproceedings} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.title "title" output.check.nocomma - - format.in.ed.booktitle "booktitle" output.check.nocomma - format.bvolume output.nocomma - format.number.series output.nocomma - format.pages output.nocomma - output.address.organization.publisher - - bst.year.position #0 = not - { format.date output.nocomma } - { format.month output.nocomma } - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% conference - -FUNCTION {conference} -{ inproceedings } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% manual -FUNCTION {manual} -{ output.bibitem - author empty$ - { organization empty$ - 'skip$ - { organization output.nonnull.nocomma - address output.nocomma - } - if$ - } - { format.authors output.nonnull.nocomma } - if$ - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.book "title" output.check.nocomma - author empty$ - { organization empty$ - { format.address new.block.check - format.address output.nocomma - } - 'skip$ - if$ - } - { output.address.organization.publisher } - if$ - format.edition output.nocomma - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% mastersthesis - -FUNCTION {mastersthesis} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.title "title" output.check.nocomma - format.mthesis format.thesis.type output.nonnull.nocomma - format.school "school" output.check.nocomma - format.address output.nocomma - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% misc - -FUNCTION {misc} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.misc.title output.nocomma - format.howpublished output.nocomma - - bst.year.position #0 = not - { format.date output.nocomma } - { format.month output.nocomma } - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry - empty.misc.check -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Online - -FUNCTION {online} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.misc.title output.nocomma - format.howpublished output.nocomma - - bst.year.position #0 = not - { format.date output.nocomma } - { format.month output.nocomma } - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry - empty.misc.check -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% phdthesis - -FUNCTION {phdthesis} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.book "title" output.check.nocomma - format.phd - format.thesis.type output.nonnull.nocomma - format.school "school" output.check.nocomma - address empty$ - 'skip$ - { format.address output.nocomma } - if$ - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% proceedings - -FUNCTION {proceedings} -{ output.bibitem - editor empty$ - { organization output.nocomma } - { format.editors output.nonnull.nocomma } - if$ - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.btitle remove.pre.comma "title" output.check.nocomma - format.bvolume output.nocomma - format.number.series output.nocomma - output.address.organization.publisher - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.url.doi output.nocomma - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% techreport - -FUNCTION {techreport} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.title "title" output.check.nocomma - format.tr.number output.nonnull.nocomma - format.institution "institution" output.check.nocomma - format.address output.nocomma - - bst.year.position #0 = not - { format.year "year" output.check.nocomma } - 'skip$ - if$ - - format.note output.nocomma - fin.entry -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% unpublished - -FUNCTION {unpublished} -{ output.bibitem - format.authors "author" output.check.nocomma - bst.year.position #0 = - { format.year "year" output.check.nocomma } - 'skip$ - if$ - format.title "title" output.check.nocomma - - bst.year.position #0 = not - { format.date remove.pre.comma output.nocomma } - { month empty$ - 'skip$ - { format.month remove.pre.comma output.nocomma } - if$ - } - if$ - - format.url.doi output.nocomma - - format.note "note" output.check.nocomma - fin.entry -} - -FUNCTION {default.type} -{ misc } - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% Alias for month names: - -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"} - -%%% Read entries: -READ - -%%% Variable for remembering the order of citation. -INTEGERS { order.num } -FUNCTION {initialize.order.num} -{ - #1 'order.num := -} -%%% Initialize a variables -EXECUTE {initialize.order.num} - -%%% Variable for remembering the order of citation. -FUNCTION {set.order.cited} -{ - order.num 'order.cited := - #1 order.num + 'order.num := -} -%%% Iterate for all entries: -ITERATE {set.order.cited} - -%%% check the value of nameorder field. -FUNCTION {set.nameorder} -{ nameorder empty$ - { "" 'nameorder.temp := } - { nameorder 'nameorder.temp := } - if$ -} -%%% Iterate for all entries: -ITERATE {set.nameorder} - -%%% Remove symbols and convert to lowercase. -FUNCTION {sortify} -{ purify$ "l" change.case$ } - -%%% names for sorting -FUNCTION {sort.format.names} -{ 's := - #1 'nameptr := - "" - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { nameptr #1 > - { ", " * } - 'skip$ - if$ - s nameptr "{ll}{ f}{ j}" format.name$ 't := - nameptr numnames = t "others" = and - { bst.and.others.output *} - { t sortify * } - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {sort.format.names.abb} -{ 's := - s num.names$ 'numnames := - numnames bst.and.others.num < - { s sort.format.names } - { s #1 "{ll}{ f}{ j}" format.name$ " zz " * } - if$ -} - -%%% Label for full author name. -FUNCTION {format.lab.names.full} -{ 's := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr "{vv~}{ll}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { nameorder.temp "random" = bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { ", " * t * } - if$ - } - { t "others" = - { bst.and.others.output * } - { numnames #2 > - { nameorder.temp "random" = bst.use.nameorder #0 = not and - { bst.cite.and.nameorder * t * } - { bst.cite.ands * t * } - if$ - } - { nameorder.temp "random" = bst.use.nameorder #0 = not and - { bst.cite.and.nameorder * t * } - { bst.cite.and * t * } - if$ - } - if$ - } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ - numnames #1 > #1 #2 = and {", eds" *} {} if$ - numnames #1 = #1 #2 = and {", ed" *} {} if$ -} - -%%% laberl for abbreviated author name. -FUNCTION {format.lab.names.abb} -{ 's := - s num.names$ 'numnames := - numnames bst.and.others.num < - % if the number of authors is less than bst.and.others.num, full name. - { s format.lab.names.full } - % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } - if$ -} - -%%% abbreviated author -FUNCTION {author.key.label.abb} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names.abb } - if$ -} - -%%% full author -FUNCTION {author.key.label.full} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.lab.names.full } - if$ -} - -FUNCTION {format.names.full.wo.and} -{ 's := - #1 'nameptr := - s num.names$ 'numnames := - numnames 'namesleft := - { namesleft #0 > } - { s nameptr "{ll}{, ff}{, jj}" format.name$ 't := - nameptr #1 > - { namesleft #1 > - { " " * t * } - { t "others" = - { " " * } - { numnames #2 > - { " " * t * } - { " " * t * } - if$ - } - if$ - } - if$ - } - 't - if$ - nameptr #1 + 'nameptr := - namesleft #1 - 'namesleft := - } - while$ -} - -FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { author format.names.full.wo.and } - if$ -} - -FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.names.full.wo.and } - if$ - } - { author format.names.full.wo.and } - if$ -} - -FUNCTION {editor.key.organization.key.full.wo.and} -{ 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.names.full.wo.and } - if$ -} - -FUNCTION {author.key.organization.key.full.wo.and} -{ 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.names.full.wo.and } - if$ -} - -%%% abbreviated author -FUNCTION {author.editor.key.label.abb} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names.abb } - if$ - } - { author format.lab.names.abb } - if$ -} - -%%% full author -FUNCTION {author.editor.key.label.full} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } - if$ - } - { editor format.lab.names.full } - if$ - } - { author format.lab.names.full } - if$ -} - -FUNCTION {author.key.organization.label.full} -{ 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.full } - if$ -} - -FUNCTION {author.key.organization.label.abb} -{ 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.abb } - if$ -} - -FUNCTION {editor.key.organization.label.full} -{ 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.full } - if$ -} - -FUNCTION {editor.key.organization.label.abb} -{ 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.abb } - if$ -} - -%%% Convert numbers: 0->9, 1->8, 2->7,..., 9->0 -FUNCTION {reverse.num} -{ 's := - s "1" = - { "8" 'year.num := } - { s "2" = - { "7" 'year.num := } - { s "3" = - { "6" 'year.num := } - { s "4" = - { "5" 'year.num := } - { s "5" = - { "4" 'year.num := } - { s "6" = - { "3" 'year.num := } - { s "7" = - { "2" 'year.num := } - { s "8" = - { "1" 'year.num := } - { s "9" = - { "0" 'year.num := } - { s "0" = - { "9" 'year.num := } - { "9" 'year.num := } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - year.num -} - -%%% Convert year (large number -> small number) -FUNCTION {convert.year} -{ 't := - bst.reverse.year #0 = - { t 'tt := } - { t #1 #1 substring$ reverse.num - t #2 #1 substring$ reverse.num * - t #3 #1 substring$ reverse.num * - t #4 #1 substring$ reverse.num * 'tt := } - if$ - tt -} - -%%% cyear -FUNCTION {calc.cyear} -{ type$ "book" = - type$ "inbook" = - or - 'author.editor.key.full.wo.and - { type$ "proceedings" = - 'editor.key.organization.key.full.wo.and - { type$ "manual" = - 'author.key.organization.key.full.wo.and - 'author.key.full.wo.and - if$ - } - if$ - } - if$ - duplicate$ - year empty$ - { "2199" 'cyear := } - { year 'cyear := } - if$ - year empty$ - { " " "2199" convert.year * field.or.null * } - { " " year convert.year * field.or.null * } - if$ - sortify 'sort.label := - % For debug - econ.debug #0 = not - { "sort.label = ``\texttt{" write$ - sort.label write$ - "}''\\" write$ - newline$ - } - 'skip$ - if$ - pop$ -} - -FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } - if$ - } - { author 's := } - if$ - s sort.format.names.abb 't := - year empty$ - { t sortify " " * "2199" convert.year * 'sort.label.abb := } - { t sortify " " * year convert.year * 'sort.label.abb := } - if$ - econ.debug #0 = not - { "sort.label.abb = ``\texttt{" write$ - sort.label.abb write$ - "}''\\" write$ - newline$ - } - 'skip$ - if$ -} - -%%% flabel -FUNCTION {calc.flabel} -{ type$ "book" = - type$ "inbook" = - or - 'author.editor.key.label.full - { type$ "proceedings" = - 'editor.key.organization.label.full - { type$ "manual" = - 'author.key.organization.label.full - 'author.key.label.full - if$ - } - if$ - } - if$ - 'flabel := - % For debug - econ.debug #0 = not - { "flabel = ``\texttt{" write$ - flabel write$ - "}''\\" write$ - newline$ - } - 'skip$ - if$ -} - -%%% alabel -FUNCTION {calc.alabel} -{ type$ "book" = - type$ "inbook" = - or - 'author.editor.key.label.abb - { type$ "proceedings" = - 'editor.key.organization.label.abb - { type$ "manual" = - 'author.key.organization.label.abb - 'author.key.label.abb - if$ - } - if$ - } - if$ - 'alabel := - % For debug - econ.debug #0 = not - { "alabel = ``\texttt{" write$ - alabel write$ - "}''\\" write$ - newline$ - } - 'skip$ - if$ -} - -%%% title for sorting -FUNCTION {sort.format.title} -{ 't := - "A " #2 - "An " #3 - "The " #4 t chop.word - chop.word - chop.word - sortify - #1 global.max$ substring$ -} - -%%% author for sorting -FUNCTION {author.sort} -{ author empty$ - { key empty$ - { "to sort, need author or key in " cite$ * warning$ - "" - } - { key sortify } - if$ - } - { author sort.format.names } - if$ -} - -%%% editor for sorting -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$ -} - -%%% 1,...,9 -> 001,...,009 -%%% 10,...,99 -> 010,...,099 -FUNCTION {add.zero.to.number} -{ 's := - s text.length$ #1 = - { "00" s * } - { s text.length$ #2 = - { "0" s * } - { s } - if$ - } - if$ -} - -%% entry type -FUNCTION {bst.sort.entry.type.order} -{ 'item.type := - item.type "article" = - { "01" } - { item.type "book" = - { "02" } - { item.type "booklet" = - { "03" } - { item.type "comment" = - { "04" } - { item.type "conference" = - { "05" } - { item.type "inbook" = - { "06" } - { item.type "incollection" = - { "07" } - { item.type "inproceedings" = - { "08" } - { item.type "manual" = - { "09" } - { item.type "masterthesis" = - { "10" } - { item.type "misc" = - { "11" } - { item.type "phdthesis" = - { "12" } - { item.type "proceedings" = - { "13" } - { item.type "techreport" = - { "14" } - { item.type "unpublished" = - { "15" } - { "16" } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ - } - if$ -} - -%%% Create sort.key$: absorder -> author -> year -> order -> month -> title. -FUNCTION {presort.one} -{ - bst.no.sort #0 = not - { order.cited int.to.str$ add.zero.to.number " " * } - { "" } - if$ - bst.sort.year #0 = not - %% Use year field as the primary sorting key. - { year convert.year * } - 'skip$ - if$ - bst.sort.entry.type #0 = not - { type$ bst.sort.entry.type.order * " " * } - 'skip$ - if$ - absorder empty$ - { "/// " * } - { bst.notuse.absorder.field #0 = - { absorder "999" = - { "zzz " * } - { absorder add.zero.to.number "000" = - { "/// " * } - { absorder add.zero.to.number * " " * } - if$ - } - if$ - } - { "/// " * } - if$ - } - if$ - " " * - sort.label.abb * - " " * - type$ "book" = type$ "inbook" = or - 'author.editor.sort - { type$ "proceedings" = - 'editor.organization.sort - { type$ "manual" = - 'author.organization.sort - 'author.sort - if$ - } - if$ - } - if$ - * " " * - " " - order empty$ - { "/// " * } - { bst.notuse.order.field #0 = - { order "999" = - { "zzz " * } - { order add.zero.to.number "000" = - { "/// " * } - { order add.zero.to.number * " " * } - if$ - } - if$ - } - { "/// " * } - if$ - } - if$ - month empty$ - { * "/// " * } - { month "999" = - { * month add.zero.to.number * "zzz " * } - { month add.zero.to.number "000" = - { * month add.zero.to.number * "/// " * } - { * month add.zero.to.number * " " * } - if$ - } - if$ - } - if$ - title field.or.null sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := - % For debug - econ.debug #0 = not - { "``\texttt{" write$ - sort.key$ write$ - "}''\\" write$ - newline$ - } - 'skip$ - if$ -} - -FUNCTION {presort.two} -{ - bst.no.sort #0 = not - { order.cited int.to.str$ add.zero.to.number " " * } - { "" } - if$ - bst.sort.year #0 = not - %% Use year field as the primary sorting key. - { year convert.year * } - 'skip$ - if$ - bst.sort.entry.type #0 = not - { type$ bst.sort.entry.type.order * " " * } - 'skip$ - if$ - absorder empty$ - { "/// " * } - { bst.notuse.absorder.field #0 = - { absorder "999" = - { "zzz " * } - { absorder add.zero.to.number "000" = - { "/// " * } - { absorder add.zero.to.number * " " * } - if$ - } - if$ - } - { "/// " * } - if$ - } - if$ - " " * sort.label * " " - order empty$ - { "/// " * } - { bst.notuse.order.field #0 = - { order "999" = - { "zzz " * } - { order add.zero.to.number "000" = - { "/// " * } - { order add.zero.to.number * " " * } - if$ - } - if$ - } - { "/// " * } - if$ - } - if$ - month empty$ - { * "/// " * } - { month "999" = - { * month add.zero.to.number * "zzz " * } - { month add.zero.to.number "000" = - { * month add.zero.to.number * "/// " * } - { * month add.zero.to.number * " " * } - if$ - } - if$ - } - if$ - title field.or.null sort.format.title - * - #1 entry.max$ substring$ - 'sort.key$ := - % For debug - econ.debug #0 = not - { "``\texttt{" write$ - sort.key$ write$ - "}''\\" write$ - newline$ - } - 'skip$ - if$ -} - -%%% Codes for debugging -FUNCTION {calc.alabel.mess} -{ econ.debug #0 = not - { "\textbf{Iteration of calc.alabel: alabel = }\\" write$ - newline$ } - 'skip$ - if$ -} -FUNCTION {calc.flabel.mess} -{ econ.debug #0 = not - { "\textbf{Iteration of calc.flabel: flabel = }\\" write$ - newline$ } - 'skip$ - if$ -} -FUNCTION {presort.one.mess} -{ econ.debug #0 = not - { "\textbf{Iteration of presort (1st time): \$sort.key = }\\" write$ - newline$ } - 'skip$ - if$ -} - -FUNCTION {presort.two.mess} -{ econ.debug #0 = not - { "\textbf{Iteration of presort (2nd time): \$sort.key = }\\" write$ - newline$ } - 'skip$ - if$ -} - -FUNCTION {calc.cyear.mess} -{ econ.debug #0 = not - { "\textbf{Iteration of calc.cyear: sort.label = }\\" write$ - newline$ } - 'skip$ - if$ -} - -FUNCTION {calc.sort.label.abb.mess} -{ econ.debug #0 = not - { "\textbf{Iteration of calc.sort.label.abb: sort.label.abb = }\\" write$ - newline$ } - 'skip$ - if$ -} - -%%% alabel -EXECUTE {calc.alabel.mess} -ITERATE {calc.alabel} - -%%% flabel -EXECUTE {calc.flabel.mess} -ITERATE {calc.flabel} - -%%% cyear and sort.label -EXECUTE {calc.cyear.mess} -ITERATE {calc.cyear} - -%%% -EXECUTE {calc.sort.label.abb.mess} -ITERATE {calc.sort.label.abb} - -%%% Sorting by $sort.key (first time) -% -% Sorting is done in two times. This is the first time. -% -EXECUTE {presort.one.mess} -ITERATE {presort.one} -SORT - -FUNCTION {forward.pass} -{ bst.use.bysame #0 = bst.use.bysame #2 = or - % Not use \bysame - { last.sort.label sort.label.abb = - { 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.abb 'last.sort.label := - } - if$ - } - % Use \bysame - { last.sort.label sort.label.abb = - { 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.abb 'last.sort.label := - } - if$ - author empty$ - { editor empty$ - { "" } - 'format.editors.alt - if$ - } - 'format.authors.alt - if$ - 'this.author := - % format.names 'this.author := - this.author prev.author = - { "bysame" 'extra.label.bysame := } - { this.author "" = - { "abcxyz" } - 'this.author - if$ - 'prev.author := - } - if$ - } - if$ -} - -FUNCTION {reverse.pass} -{ next.extra "b" = - { "a" 'extra.label := } - 'skip$ - if$ - extra.label empty$ not - { cyear extra.label * } - { cyear "" * } - if$ - "" field.or.null * - 'cyear := - extra.label 'next.extra := -} - -%%% \bysame -ITERATE {forward.pass} - -REVERSE {reverse.pass} - -%%% Sorting by sort.key$ (second time) -EXECUTE {presort.two.mess} -ITERATE {presort.two} -SORT - -FUNCTION {reset.prev.author} -{ "xxyyzz" 'prev.author := } - -EXECUTE {reset.prev.author} - -FUNCTION {forward.pass.two} -{ bst.use.bysame #1 = - { author empty$ - { editor empty$ - { "" } - 'format.editors.alt - if$ - } - 'format.authors.alt - if$ - 'this.author := - this.author prev.author = - { "bysame" 'extra.label.bysame := } - { this.author "" = - { "abcxyz" } - 'this.author - if$ - 'prev.author := - } - if$ - } - 'skip$ - if$ -} - -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$ - "% " write$ newline$ newline$ -} - -EXECUTE {punctuation} - -FUNCTION {begin.bib} -{ - preamble$ empty$ - 'skip$ - { preamble$ write$ newline$ } - if$ - bst.use.bysame #0 = - % Not use \bysame. - 'skip$ - % Use \bysame. - { "%%% Definition of \bysame" write$ newline$ - "\ifx\undefined\bysame" write$ newline$ - "\newcommand{\bysame}{" bst.bysame.definition * "}" * - write$ newline$ - "\fi" write$ newline$ newline$ } - if$ - %% When number index is attached to the beginning of each item. - bst.use.number.index #0 = - 'skip$ - { bst.number.index.digit "1" = - % one digit. - { bst.number.index.bibhang.one } - { bst.number.index.digit "2" = - % two digits. - { bst.number.index.bibhang.ten } - % three or more digits. - { bst.number.index.bibhang.hund } - if$ - } - if$ - 'hang := - "%%% Redefinition of \bibhang" write$ newline$ - "\ifx\undefined\bibhang" write$ newline$ - "\relax" write$ newline$ - "\else" write$ newline$ - "\setlength{\bibhang}{" - hang * "}" * write$ newline$ - "\fi" write$ newline$ newline$ - } - if$ - "\begin{thebibliography}{xxx}" write$ newline$ - - %% Initialize the variable `index'. - #0 'index := -} - -FUNCTION {end.bib} -{ newline$ "\end{thebibliography}" write$ newline$ } - -EXECUTE {begin.bib} - -EXECUTE {init.state.consts} - -ITERATE {call.type$} - -EXECUTE {end.bib} - -% -------------------- -% Local Variables: -% fill-column: 78 -% mode: bst -% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aer.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-aer.pdf deleted file mode 100644 index 6bd2af9835..0000000000 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-aer.pdf and /dev/null differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aer.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-aer.tex deleted file mode 100644 index 00ba236e95..0000000000 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-aer.tex +++ /dev/null @@ -1,55 +0,0 @@ -%#!pdflatex -%#BIBTEX bibtex econ-aer - -%############################## Main ################################# -\documentclass[10pt]{article} - -%% Use natbib.sty -\usepackage{natbib} -\usepackage{mathpazo} -\usepackage{url} -\usepackage{graphicx} -\usepackage{color} -\definecolor{MyBrown}{rgb}{0.3,0,0} -\definecolor{MyBlue}{rgb}{0,0,0.3} -\definecolor{MyRed}{rgb}{0.4,0,0.1} -\definecolor{MyGreen}{rgb}{0,0.4,0} -\usepackage[bookmarks=true,% -bookmarksnumbered=true,% -colorlinks=true,% -linkcolor=MyBlue,% -citecolor=MyRed,% -filecolor=MyBlue,% -urlcolor=MyGreen% -]{hyperref} - -\setlength{\topmargin}{-20pt} -\setlength{\textheight}{648pt} -\setlength{\oddsidemargin}{15pt} -\setlength{\textwidth}{440pt} - -%##################################################################### -%######################### Document Starts ########################### -%##################################################################### -\begin{document} - -This document uses ``\verb|econ-aer.bst|''. The style like AER ({\itshape American Economic Review}). - -\vspace{1em} - -\input{cited-part} -\nocite{*} - -%% bst file: -\bibliographystyle{econ-aer} -\bibliography{../econ-example} - -\end{document} - -%##################################################################### -%######################### Document Ends ############################# -%##################################################################### -% -------------------- -% Local Variables: -% fill-column: 80 -% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-b.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-b.bst index bba236ac1d..2e668eb9e0 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-b.bst +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-b.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:49:15 st> -% Version: 2.5 +% Version: 2.7 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -38,7 +37,10 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "2.5" } +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "econ.bst" } % Debug mode. Non-zero makes debug mode on. FUNCTION {econ.debug} @@ -61,7 +63,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 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -320,7 +322,12 @@ 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). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -429,6 +436,15 @@ 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: @@ -471,7 +487,7 @@ FUNCTION {bst.edition.post} % FUNCTION {bst.volume.pre} { ", \textbf{" } -% { ", Vol. " } % (default) +% { ", " } % (default) % The string after volume: % @@ -492,14 +508,12 @@ FUNCTION {bst.hide.number} % The string before number: % FUNCTION {bst.number.pre} -{ " (" } -% { ", No. " } % (default) +{ " (" } % (default) % The string after number: % FUNCTION {bst.number.post} -{ ")" } -% { "" } % (default) +{ ")" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % in @@ -516,12 +530,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): % @@ -574,8 +588,8 @@ FUNCTION {bst.address.post} % You can choose the order of address and publisher by this function. % -% If #0, address -> publisher order (the default value). -% If non-zero, publisher -> address order. +% If #0, address -> publisher order (the default value). +% If non-zero, publisher -> address order. FUNCTION {bst.address.position} { #0 } % Address is placed before publisher (default) @@ -670,7 +684,7 @@ FUNCTION {bst.show.url} % The string before url: % FUNCTION {bst.url.pre} -{ ", URL: \url{" } % (default) +{ ", \url{" } % (default) % The string after url: % @@ -707,12 +721,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. % @@ -721,9 +735,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: @@ -739,7 +753,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: % @@ -1082,11 +1096,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$ } @@ -1162,56 +1202,62 @@ 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 = + % 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 - { 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 * } + { 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$ @@ -1938,7 +1984,7 @@ FUNCTION {format.thesis.type} FUNCTION {format.tr.number} { type empty$ - { "Technical Report" } + { bst.techrep } { " " type * } if$ number empty$ @@ -2175,9 +2221,9 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - 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 } @@ -2422,6 +2468,8 @@ FUNCTION {techreport} 'skip$ if$ + format.url.doi output.nocomma + format.note output.nocomma fin.entry } @@ -2934,6 +2982,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$ @@ -3472,10 +3529,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$ - "% " 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$ + "% " write$ newline$ newline$ } EXECUTE {punctuation} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf index e0ebbf3139..0e5383e49d 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex index 8023ef3ccd..549aa78783 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex @@ -6,7 +6,7 @@ %% Use natbib.sty \usepackage{natbib} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf index 9c740aad58..63fd420112 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex index 43dbe40588..e6a2b5ed13 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex @@ -6,7 +6,7 @@ %% Use natbib.sty \usepackage[longnamesfirst]{natbib} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} 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$ } @@ -1140,6 +1172,88 @@ FUNCTION {bst.and.others.output} %%% name FUNCTION {format.names} +{ '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$ + } + 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 := @@ -1150,35 +1264,15 @@ FUNCTION {format.names} { 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$ - "% " 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$ + "% " write$ newline$ newline$ } EXECUTE {punctuation} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf index 1f55afb51e..7873e80dc4 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex index f4b1251bc7..9c43e4d35b 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex @@ -6,7 +6,7 @@ %% Use natbib.sty \usepackage{natbib} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} @@ -33,7 +33,7 @@ urlcolor=MyGreen% %##################################################################### \begin{document} -This document uses ``\verb|econ-econometrica.bst|''. The style like ({\itshape Econometrica}). +This document uses ``\verb|econ-econometrica.bst|''. The style like {\itshape Econometrica}. \vspace{1em} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.bst index 7898a51f3a..67a00ed083 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.bst +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.bst @@ -1,11 +1,10 @@ -n%% econ.bst: BibTeX style file for papers in economics. +%% econ-jet.bst: BibTeX style file for "Journal of Economic Theory". % % Author: Shiro Takeda % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Time-stamp: <2018-12-07 18:48:36 st> -% Version: 2.5 +% Version: 2.7 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -21,24 +20,19 @@ n%% econ.bst: BibTeX style file for papers in economics. % % 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-jet.bst" is a BibTeX style file for Journal fo Economic Theory. +% "econ-jet.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-jet.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 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -97,8 +91,8 @@ FUNCTION {bst.bysame.definition} % FUNCTION {bst.author.name} % { #0 } % (default) -% { #1 } -{ #2 } +{ #1 } +% { #2 } % Case of #0: First author -> last-first, other authors -> first-last. % Fujita, Masahisa, Paul R. Krugman, and Anthony J. Venables. @@ -122,8 +116,8 @@ FUNCTION {bst.first.name.initial} % Decapitalize of strings in title field. % FUNCTION {bst.title.lower.case} -% { #0 } % If #0, not decapitalize title (default). -{ #1 } % If non-#0, decapitalize title +{ #0 } % If #0, not decapitalize title (default). +% { #1 } % If non-#0, decapitalize title % Hide title filed. % @@ -197,10 +191,10 @@ FUNCTION {bst.number.index.bibhang.hund} % #3 -> year is placed after volume in aritcle type entry. % FUNCTION {bst.year.position} -% { #0 } % (default). +{ #0 } % (default). % { #1 } % Last place before note. % { #2 } % After journal name for aticle type entry. -{ #3 } % After volume for aticle type entry. +% { #3 } % After volume for aticle type entry. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -263,14 +257,16 @@ FUNCTION {bst.notuse.order.field} % String replaced with _ in "Mr. A _ Mr. B " % FUNCTION {bst.and} -{ " and " } % (default) +{ ", " } +% { " and " } % (default) %%% String used to separate author names in references (more than two authors). % % String replaced with _ in "Mr. A, Mr. B _ Mr. C" % FUNCTION {bst.ands} -{ ", and " } % (default) +{ ", " } +% { ", and " } % (default) %%% String used to separate author names in citation part. % @@ -312,7 +308,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). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -338,7 +338,7 @@ FUNCTION {bst.author.pre} % The string after author: % FUNCTION {bst.author.post} -{ ", " } +{ "," } % { "" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -347,13 +347,13 @@ FUNCTION {bst.author.post} % The string before year only for aritcle type entry. % FUNCTION {bst.year.pre} -{ " (" } +{ ", " } % { " (" } % (default) % The string after year only for aritcle type entry. % FUNCTION {bst.year.post} -{ ")" } +{ ". " } % { ") " } % (default) % The string after year for non-article type entry (book, incollection etc) @@ -365,7 +365,7 @@ FUNCTION {bst.year.na.pre} % The string after year for non-article type entry (book, incollection etc) % FUNCTION {bst.year.na.post} -{ "" } +{ ". " } % { ") " } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -380,7 +380,7 @@ FUNCTION {bst.title.pre} % The string after title: % FUNCTION {bst.title.post} -{ "," } +{ "." } % { ",''" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -389,13 +389,13 @@ FUNCTION {bst.title.post} % The string before book title: % FUNCTION {bst.book.pre} -{ "" } +{ " " } % { " \textit{" } % (default) % The string after book title: % FUNCTION {bst.book.post} -{ "" } +{ "." } % { "}" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -425,8 +425,17 @@ FUNCTION {bst.journal.pre} % The string after journal name: % 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: @@ -434,8 +443,7 @@ FUNCTION {bst.journal.post} % The string that indicates multiple editors: % FUNCTION {bst.editors} -{ " (Eds.), " } -% { " eds. " } % (default) +{ " eds. " } % (default) % The string that indicates single editor: % @@ -469,8 +477,8 @@ FUNCTION {bst.edition.post} % The string before volume: % FUNCTION {bst.volume.pre} -{ " " } -% { ", Vol. " } % (default) +{ ". " } +% { ", " } % (default) % The string after volume: % @@ -484,18 +492,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,8 +511,7 @@ FUNCTION {bst.number.post} % In % FUNCTION {bst.in} -{ " in: " } -% { " in " } % (default) +{ " in " } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % page @@ -512,13 +519,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): % @@ -541,8 +547,7 @@ FUNCTION {bst.chapter.pre} % The string after chapter: % FUNCTION {bst.chapter.post} -{ ", " } -% { "" } % (default) +{ "" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % month @@ -567,8 +572,7 @@ FUNCTION {bst.address.pre} % The string after address: % FUNCTION {bst.address.post} -{ "," } -% { "" } % (default) +{ "" } % (default) % You can choose the order of address and publisher by this function. % @@ -576,8 +580,8 @@ FUNCTION {bst.address.post} % If non-zero, publisher -> address order. FUNCTION {bst.address.position} -% { #0 } % Address is placed before publisher (default) -{ #1 } % Address is placed after publisher +{ #0 } % Address is placed before publisher (default) +% { #1 } % Address is placed after publisher %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % publisher @@ -585,14 +589,12 @@ FUNCTION {bst.address.position} % The string before publisher: % FUNCTION {bst.publisher.pre} -{ ", " } -% { ": " } % (default) +{ ": " } % (default) % The string after publisher: % FUNCTION {bst.publisher.post} -{ "," } -% { "" } % (default) +{ "" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % series @@ -670,7 +672,8 @@ FUNCTION {bst.show.url} % The string before url: % FUNCTION {bst.url.pre} -{ ", URL: \url{" } % (default) +{ ", \url{" } +% { ", URL: \url{" } % (default) % The string after url: % @@ -705,15 +708,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) - -FUNCTION {bst.doi.post.jp} -{ "}" } % (default) +{ "}}" } % (default) % How to show URL and DOI fields when both fields exist. % @@ -722,9 +722,9 @@ FUNCTION {bst.doi.post.jp} % #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: @@ -740,7 +740,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: % @@ -902,192 +902,1366 @@ FUNCTION {add.period.x} if$ } if$ - } - if$ -} - -FUNCTION {output.nonnull} -{ 's := - % mid.sentence - output.state mid.sentence = - { ", " * write$ } - % not mid.sentence - { output.state after.block = - % after.block - { add.period.x " " * write$ } - % before.all - { output.state before.all = - 'write$ - { add.period.x " " * write$ } - if$ - } + } + if$ +} + +FUNCTION {output.nonnull} +{ 's := + % mid.sentence + output.state mid.sentence = + { ", " * write$ } + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period.x " " * write$ } + if$ + } + if$ + % not mid.sentence, set to mid.sentence + mid.sentence 'output.state := + } + if$ + s +} + +%%% If the last character is period or comma, set non-zero to +%%% last.period.comma. +FUNCTION {period.comma.p} +{ duplicate$ 't := + t #-1 #1 substring$ "." = + t #-1 #1 substring$ "," = or + t #-1 #1 substring$ ":" = or + t #-1 #2 substring$ ".'" = or + t #-1 #2 substring$ ",'" = or + t #-1 #3 substring$ ".''" = or + t #-1 #3 substring$ ",''" = or + t #-1 #2 substring$ ".~" = or + t #-1 #2 substring$ ",~" = or + { #1 'last.period.comma := } + { #0 'last.period.comma := } + if$ +} + +%%% remove unnecessary comma. +FUNCTION {remove.pre.comma} +{ 's := + s empty$ + { "" } + { s #1 #1 substring$ "," = + { s #2 global.max$ substring$ } + { s #1 #1 substring$ "." = + { s #2 global.max$ substring$ } + 's + if$ + } + if$ + } + if$ +} + +%%% output.nonnull.nocomma is the same as output.nonnull except that it does +%%% not add commas even in mid.sentence. +FUNCTION {output.nonnull.nocomma} +{ 's := + output.state mid.sentence = + % mid.sentence + { period.comma.p "" * write$ } + + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + last.period.comma #0 = + { s } + { s remove.pre.comma } + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output} +% { duplicate$ empty$ +% 'pop$ +% 'output.nonnull +% if$ +% } + +FUNCTION {output.nocomma} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull.nocomma + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output.check} +% { 't := +% duplicate$ empty$ +% { pop$ "empty " t * " in " * cite$ * warning$ } +% 'output.nonnull +% if$ +% } + +FUNCTION {output.check.nocomma} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull.nocomma + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Format in bbl file: + +% \harvarditem[Brezis et~al.]{Brezis, Krugman and +% Tsiddon}{1993}{brezis93:_leapf_inter_compet} +% Brezis, Elise~S., Paul~R. Krugman, and Daniel Tsiddon (1993) ``Leapfrogging in +% International Competition: A Theory of Cycles in National Technological +% Leadership.'', {\em American Economic Review.}, Vol.~83. No.~5. pp. +% 1211--1219. + +% \harvarditem[abbreviated citation]{full citation}{year}{keyword} ... + +%%% Add period and newline. +FUNCTION {fin.entry} +{ add.period.x + 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 {new.block.check} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +%%% booktitle +FUNCTION {format.btitle} +{ booktitle empty$ + { "" } + { bst.btitle.pre booktitle * bst.btitle.post * } + 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$ + s "Academy of Management Journal" = + { "Acad. Manage. Rev." 'jname := } + 'skip$ + if$ + s "Accounting Review" = + { "Account. Rev." 'jname := } + 'skip$ + if$ + s "Accounting, Organizations and Society" = + { "Account. Org. Soc." 'jname := } + 'skip$ + if$ + s "Accounting, Organizations and Society" = + { "Admin. Sci. Quart." 'jname := } + 'skip$ + if$ + s "Administrative Science Quarterly" = + { "Agr. Econ." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Applied Economics" = + { "Am. Econ. J. Appl. Econ." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Economic Policy" = + { "Am. Econ. J. Econ. Policy" 'jname := } + 'skip$ + if$ + s "American Economic Journal: Macroeconomics" = + { "Am. Econ. J. Macro." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Microeconomics" = + { "Am. Econ. J. Micro." 'jname := } + 'skip$ + if$ + s "American Economic Review" = + { "Am. Econ. Rev." 'jname := } + 'skip$ + if$ + s "American Journal of Agricultural Economics" = + { "Am. J. Agr. Econ." 'jname := } + 'skip$ + if$ + s "American Journal of Economics and Sociology" = + { "Am. J. Econ. Sociol." 'jname := } + 'skip$ + if$ + s "Applied Economics" = + { "Appl. Econ." 'jname := } + 'skip$ + if$ + s "Applied Economics Letters" = + { "Appl. Econ. Lett." 'jname := } + 'skip$ + if$ + s "Applied Energy" = + { "Appl. Energ." 'jname := } + 'skip$ + if$ + s "Applied Stochastic Models in Business and Industry" = + { "Appl. Stoch. Model Bus." 'jname := } + 'skip$ + if$ + s "Auditing: A Journal of Practise and Theory" = + { "Auditing.-J. Pract. Th." 'jname := } + 'skip$ + if$ + s "Australian Journal of Agricultural and Resource Economics" = + { "Aust. J. Agr. Resour. Ec." 'jname := } + 'skip$ + if$ + s "B.E. Journal of Economic Analysis \& Policy" = + { "B.E. J. Econ. Anal. Policy" 'jname := } + 'skip$ + if$ + s "Betriebswirtschaftliche Forschung Und Praxis" = + { "Betrieb. Forsch. Prax." 'jname := } + 'skip$ + if$ + s "British Journal of Industrial Relations" = + { "Brit. J. Ind. Relat." 'jname := } + 'skip$ + if$ + s "British Journal of Management" = + { "Brit. J. Manage." 'jname := } + 'skip$ + if$ + s "Bulletin of Indonesian Economic Studies" = + { "B. Indones. Econ. Stud." 'jname := } + 'skip$ + if$ + s "Business Ethics Quarterly" = + { "Bus. Ethics Q." 'jname := } + 'skip$ + if$ + s "Business History" = + { "Bus. Hist." 'jname := } + 'skip$ + if$ + s "Business History Review" = + { "Bus. Hist. Rev." 'jname := } + 'skip$ + if$ + s "Business Lawyer" = + { "Bus. Lawyer" 'jname := } + 'skip$ + if$ + s "California Management Review" = + { "Calif. Manage. Rev." 'jname := } + 'skip$ + if$ + s "Cambridge Journal of Economics" = + { "Cambridge J. Econ." 'jname := } + 'skip$ + if$ + s "Canadian Journal of Administrative Sciences" = + { "Can. J. Adm. Sci." 'jname := } + 'skip$ + if$ + s "Canadian Journal of Economics" = + { "Can. J. Econ." 'jname := } + 'skip$ + if$ + s "China Economic Review" = + { "China. Econ. Rev." 'jname := } + 'skip$ + if$ + s "Climate Change Economics" = + { "Clim. Change Econ." 'jname := } + 'skip$ + if$ + s "Climate Policy" = + { "Clim. Policy" 'jname := } + 'skip$ + if$ + s "Communications in Statistics – Part A: Theory and Methods" = + { "Commun. Stat.-Theor. M." 'jname := } + 'skip$ + if$ + s "Computational Economics" = + { "Computation. Econ." 'jname := } + 'skip$ + if$ + s "Computational Statistics" = + { "Computation. Stat." 'jname := } + 'skip$ + if$ + s "Computational Statistics and Data Analysis" = + { "Comput. Stat. Data An." 'jname := } + 'skip$ + if$ + s "Contemporary Accounting Research" = + { "Contemp. Account. Res." 'jname := } + 'skip$ + if$ + s "Contemporary Economic Policy" = + { "Contemp. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Defence and Peace Economics" = + { "Defence Peace Econ." 'jname := } + 'skip$ + if$ + s "Development Economics" = + { "Dev. Econ." 'jname := } + 'skip$ + if$ + s "Eastern European Economics" = + { "Eastern Eur. Econ." 'jname := } + 'skip$ + if$ + s "Ecological Economics" = + { "Ecol. Econ." 'jname := } + 'skip$ + if$ + s "Econometric Theory" = + { "Economet. Theor." 'jname := } + 'skip$ + if$ + s "Econometrica" = + { "Econometrica" 'jname := } + 'skip$ + if$ + s "Economic and Industrial Democracy" = + { "Econ. Ind. Democr." 'jname := } + 'skip$ + if$ + s "Economic Development and Cultural Change" = + { "Econ. Dev. Cult. Change" 'jname := } + 'skip$ + if$ + s "Economic Development and Cultural Change" = + { "Economist.-Netherland" 'jname := } + 'skip$ + if$ + s "Economic Development Quarterly" = + { "Econ. Dev. Q." 'jname := } + 'skip$ + if$ + s "Economic Geography" = + { "Econ. Geogr." 'jname := } + 'skip$ + if$ + s "Economic History Review" = + { "Econ. Hist. Rev." 'jname := } + 'skip$ + if$ + s "Economic Inquiry" = + { "Econ. Inq." 'jname := } + 'skip$ + if$ + s "Economic Journal" = + { "Econ. J." 'jname := } + 'skip$ + if$ + s "Economic Modelling" = + { "Econ. Model." 'jname := } + 'skip$ + if$ + s "Economic Policy" = + { "Econ. Policy" 'jname := } + 'skip$ + if$ + s "Economic Record" = + { "Econ. Rec." 'jname := } + 'skip$ + if$ + s "Economic Theory" = + { "Econ. Theor." 'jname := } + 'skip$ + if$ + s "Economica" = + { "Economica" 'jname := } + 'skip$ + if$ + s "Economics and Philosophy" = + { "Econ. Philos." 'jname := } + 'skip$ + if$ + s "Economics Letters" = + { "Econ. Lett." 'jname := } + 'skip$ + if$ + s "Economics of Education Review" = + { "Econ. Educ. Rev." 'jname := } + 'skip$ + if$ + s "Economics of Energy \& Environmental Policy" = + { "Econ. Energ. Environ. Policy" 'jname := } + 'skip$ + if$ + s "Economics of Transition" = + { "Econ. Transit." 'jname := } + 'skip$ + if$ + s "Economy and Society" = + { "Econ. Soc." 'jname := } + 'skip$ + if$ + s "Ekonomicky Casopis" = + { "Ekon. Cas." 'jname := } + 'skip$ + if$ + s "Ekonomiska Samfundets Tidskrift" = + { "Ekon. Samf. Tidskr." 'jname := } + 'skip$ + if$ + s "Emerging Markets Finance and Trade" = + { "Emerg. Mark. Financ. Tr." 'jname := } + 'skip$ + if$ + s "Energy Economics" = + { "Energ. Econ." 'jname := } + 'skip$ + if$ + s "Energy Journal" = + { "Energ. J." 'jname := } + 'skip$ + if$ + s "Energy Policy" = + { "Energ. Policy" 'jname := } + 'skip$ + if$ + s "Entrepreneurship \& Regional Development" = + { "Entrep. Region. Dev." 'jname := } + 'skip$ + if$ + s "Entrepreneurship Theory and Practice" = + { "Entrep. Theory Pract." 'jname := } + 'skip$ + if$ + s "Environment and Development Economics" = + { "Environ. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Environmental and Resource Economics" = + { "Environ. Resour. Econ." 'jname := } + 'skip$ + if$ + s "Environmental Economics and Policy Studies" = + { "Environ. Econ. Policy Stud." 'jname := } + 'skip$ + if$ + s "Environmental Science and Policy" = + { "Environ. Sci. Policy" 'jname := } + 'skip$ + if$ + s "Environmental Science \& Technology" = + { "Environ. Sci. Technol." 'jname := } + 'skip$ + if$ + s "Eurasian Geography and Economics " = + { "Eurasian Geogr. Econ." 'jname := } + 'skip$ + if$ + s "European Economic Review" = + { "Eur. Econ. Rev." 'jname := } + 'skip$ + if$ + s "European Journal of Industrial Relations" = + { "Eur. J. Ind. Relat." 'jname := } + 'skip$ + if$ + s "European Review of Agricultural Economics" = + { "Eur. Rev. Agric. Econ." 'jname := } + 'skip$ + if$ + s "Europe-Asia Studies" = + { "Europe-Asia Stud." 'jname := } + 'skip$ + if$ + s "Explorations in Economic History" = + { "Explor. Econ. Hist." 'jname := } + 'skip$ + if$ + s "Feminist Economics" = + { "Fem. Econ." 'jname := } + 'skip$ + if$ + s "Finance a Uver" = + { "Financ. Uver." 'jname := } + 'skip$ + if$ + s "Finance and Stochastics" = + { "Financ. Stoch." 'jname := } + 'skip$ + if$ + s "Financial Analysts Journal" = + { "Financ. Anal. J." 'jname := } + 'skip$ + if$ + s "Financial Management" = + { "Financ. Manage." 'jname := } + 'skip$ + if$ + s "Fiscal Studies" = + { "Fisc. Stud." 'jname := } + 'skip$ + if$ + s "Food Policy" = + { "Food. Policy." 'jname := } + 'skip$ + if$ + s "Futures" = + { "Futures" 'jname := } + 'skip$ + if$ + s "Games and Economic Behavior" = + { "Game Econ. Behav." 'jname := } + 'skip$ + if$ + s "Health Economics" = + { "Health Econ." 'jname := } + 'skip$ + if$ + s "Hitotsubashi Journal of Economics" = + { "Hitotsub. J. Econ." 'jname := } + 'skip$ + if$ + s "IMF Staff Papers" = + { "Imf. Staff. Papers" 'jname := } + 'skip$ + if$ + s "Industrial and Corporate Change" = + { "Ind. Corp. Change" 'jname := } + 'skip$ + if$ + s "Industrial and Labor Relations Review" = + { "Ind. Labor. Relat. Rev." 'jname := } + 'skip$ + if$ + s "Industrial Marketing Management" = + { "Ind. Market Manag." 'jname := } + 'skip$ + if$ + s "Industrial Relations" = + { "Ind. Relat." 'jname := } + 'skip$ + if$ + s "Information Economics and Policy" = + { "Info. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Insurance: Mathematics and Economics" = + { "Insur. Math. Econ." 'jname := } + 'skip$ + if$ + s "International Economic Review" = + { "Int. Econ. Rev." 'jname := } + 'skip$ + if$ + s "International Journal of Electronics and Telecommunications" = + { "Int. J. Electron. Comm." 'jname := } + 'skip$ + if$ + s "International Journal of Economic Theory" = + { "Int. J. Econ. Theory" 'jname := } + 'skip$ + if$ + s "International Journal of Finance \& Economics" = + { "Int. J. Financ. Econ." 'jname := } + 'skip$ + if$ + s "International Journal of Forecasting" = + { "Int. J. Forecast." 'jname := } + 'skip$ + if$ + s "International Journal of Game Theory" = + { "Int. J. Game. Theory" 'jname := } + 'skip$ + if$ + s "International Journal of Industrial Organization" = + { "Int. J. Ind. Organ." 'jname := } + 'skip$ + if$ + s "International Journal of Manpower" = + { "Int. J. Manpow." 'jname := } + 'skip$ + if$ + s "International Journal of Market Research" = + { "Int. J. Market Res." 'jname := } + 'skip$ + if$ + s "International Journal of Research in Marketing" = + { "Int. J. Res. Mark." 'jname := } + 'skip$ + if$ + s "International Labour Review" = + { "Int. Labour Rev." 'jname := } + 'skip$ + if$ + s "International Marketing Review" = + { "Int. Market. Rev." 'jname := } + 'skip$ + if$ + s "International Review of Applied Economics" = + { "Int. Rev. Appl. Econ." 'jname := } + 'skip$ + if$ + s "International Review of Law and Economics" = + { "Int. Rev. Law Econ." 'jname := } + 'skip$ + if$ + s "International Small Business Journal" = + { "Int. Small. Bus. J." 'jname := } + 'skip$ + if$ + s "International Tax and Public Finance" = + { "Int. Tax Public Finan." 'jname := } + 'skip$ + if$ + s "Jahrbücher für Nationalökonomie und Statistik" = + { "Jahrb. Natl. Stat." 'jname := } + 'skip$ + if$ + s "Japan and the World Economy" = + { "Jpn. World Econ." 'jname := } + 'skip$ + if$ + s "Japanese Economic Review" = + { "Jpn. Econ. Rev." 'jname := } + 'skip$ + if$ + s "JCMS-journal of Common Market Studies" = + { "Jcms.-J. Common. Mark. S." 'jname := } + 'skip$ + if$ + s "Journal of Accounting and Economics" = + { "J. Account. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Accounting Research" = + { "J. Account. Res." 'jname := } + 'skip$ + if$ + s "Journal of Advertising" = + { "J. Advertising" 'jname := } + 'skip$ + if$ + s "Journal of Advertising Research" = + { "J. Advertising Res." 'jname := } + 'skip$ + if$ + s "Journal of African Economies" = + { "J. Afr. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Agricultural and Resource Economics" = + { "J. Agr. Resour. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Agricultural Economics" = + { "J. Agr. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Applied Econometrics" = + { "J. Appl. Econom." 'jname := } + 'skip$ + if$ + s "Journal of Banking and Finance" = + { "J. Bank Financ." 'jname := } + 'skip$ + if$ + s "Journal of Business" = + { "J. Bus." 'jname := } + 'skip$ + if$ + s "Journal of Business and Economic Statistics" = + { "J. Bus. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Journal of Business and Psychology" = + { "J. Bus. Psychol." 'jname := } + 'skip$ + if$ + s "Journal of Business and Technical Communication" = + { "J. Bus. Tech. Commun." 'jname := } + 'skip$ + if$ + s "Journal of Business Ethics" = + { "J. Bus. Ethics" 'jname := } + 'skip$ + if$ + s "Journal of Business Research" = + { "J. Bus. Res." 'jname := } + 'skip$ + if$ + s "Journal of Business Venturing" = + { "J. Bus. Venturing." 'jname := } + 'skip$ + if$ + s "Journal of Cleaner Productiond" = + { "J. Clean. Prod." 'jname := } + 'skip$ + if$ + s "Journal of Comparative Economics" = + { "J. Comp. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Consumer Affairs" = + { "J. Consum. Aff." 'jname := } + 'skip$ + if$ + s "Journal of Consumer Research" = + { "J. Consum. Res." 'jname := } + 'skip$ + if$ + s "Journal of Corporate Finance" = + { "J. Corp. Financ." 'jname := } + 'skip$ + if$ + s "Journal of Development Economics" = + { "J. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Econometrics" = + { "J. Econometrics" 'jname := } + 'skip$ + if$ + s "Journal of Economic Behavior and Organization" = + { "J. Econ. Behav. Organ." 'jname := } + 'skip$ + if$ + s "Journal of Economic Dynamics and Control" = + { "J. Econ. Dyn. Control" 'jname := } + 'skip$ + if$ + s "Journal of Economic Education" = + { "J. Econ. Educ." 'jname := } + 'skip$ + if$ + s "Journal of Economic Geography" = + { "J. Econ. Geogr." 'jname := } + 'skip$ + if$ + s "Journal of Economic Growth" = + { "J. Econ. Growth" 'jname := } + 'skip$ + if$ + s "Journal of Economic History" = + { "J. Econ. Hist." 'jname := } + 'skip$ + if$ + s "Journal of Economic Integration" = + { "J. Econ. Integr." 'jname := } + 'skip$ + if$ + s "Journal of Economic Issues" = + { "J. Econ. Issues." 'jname := } + 'skip$ + if$ + s "Journal of Economic Perspectives" = + { "J. Econ. Perspect." 'jname := } + 'skip$ + if$ + s "Journal of Economic Psychology" = + { "J. Econ. Psychol." 'jname := } + 'skip$ + if$ + s "Journal of Economic Literature" = + { "J. Econ. Lit." 'jname := } + 'skip$ + if$ + s "Journal of Economic Surveys" = + { "J. Econ. Surv." 'jname := } + 'skip$ + if$ + s "Journal of Economic Theory" = + { "J. Econ. Theory" 'jname := } + 'skip$ + if$ + s "Journal of Economics" = + { "J. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Economics and Management Strategy" = + { "J. Econ. Manage. Strat." 'jname := } + 'skip$ + if$ + s "Journal of Environmental Economics and Management" = + { "J. Environ. Econ. Manag." 'jname := } + 'skip$ + if$ + s "Journal of Evolutionary Economics" = + { "J. Evol. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Finance" = + { "J. Financ." 'jname := } + 'skip$ + if$ + s "Journal of Financial and Quantitative Analysis" = + { "J. Financ. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Financial Economics" = + { "J. Financ. Intermed." 'jname := } + 'skip$ + if$ + s "Journal of Financial Intermediation" = + { "J. Financ. Mark." 'jname := } + 'skip$ + if$ + s "Journal of Financial Markets" = + { "J. Financ. Quant. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Forecasting" = + { "J. Forecasting." 'jname := } + 'skip$ + if$ + s "Journal of Futures Markets" = + { "J. Futures Market" 'jname := } + 'skip$ + if$ + s "Journal of Health Economics" = + { "J. Health Econ." 'jname := } + 'skip$ + if$ + s "Journal of Housing Economics" = + { "J. Hous. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Human Resources" = + { "J. Hum. Resour." 'jname := } + 'skip$ + if$ + s "Journal of Industrial Economics" = + { "J. Ind. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Institutional and Theoretical Economics" = + { "J. Inst. Theor. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Integrated Disaster Risk Management" = + { "J. Integr. Disaster Risk Manag." 'jname := } + 'skip$ + if$ + s "Journal of International Business Studies" = + { "J. Int. Bus. Stud." 'jname := } + 'skip$ + if$ + s "Journal of International Economics" = + { "J. Int. Econ." 'jname := } + 'skip$ + if$ + s "Journal of International Marketing" = + { "J. Int. Marketing" 'jname := } + 'skip$ + if$ + s "Journal of International Money and Finance" = + { "J. Int. Money Financ." 'jname := } + 'skip$ + if$ + s "Journal of Labor Economics" = + { "J. Labor Econ." 'jname := } + 'skip$ + if$ + s "Journal of Labor Research" = + { "J. Labor Res." 'jname := } + 'skip$ + if$ + s "Journal of Law and Economics" = + { "J. Law. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Law, Economics, and Organization" = + { "J. Law. Econ. Organ." 'jname := } + 'skip$ + if$ + s "Journal of Macroeconomics" = + { "J. Macroecon." 'jname := } + 'skip$ + if$ + s "Journal of Management" = + { "J. Manage." 'jname := } + 'skip$ + if$ + s "Journal of Management Studies" = + { "J. Manage. Stud." 'jname := } + 'skip$ + if$ + s "Journal of Marketing" = + { "J. Marketing" 'jname := } + 'skip$ + if$ + s "Journal of Marketing Research" = + { "J. Marketing Res." 'jname := } + 'skip$ + if$ + s "Journal of Mathematical Economics" = + { "J. Math. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Media Economics" = + { "J. Media Econ." 'jname := } + 'skip$ + if$ + s "Journal of Monetary Economics" = + { "J. Monetary. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Money, Credit and Banking" = + { "J. Money Credit Bank." 'jname := } + 'skip$ + if$ + s "Journal of Policy Modeling" = + { "J. Policy Model." 'jname := } + 'skip$ + if$ + s "Journal of Political Economy" = + { "J. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Population Economics" = + { "J. Popul. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Portfolio Management" = + { "J. Portfolio Manage." 'jname := } + 'skip$ + if$ + s "Journal of Post Keynesian Economics" = + { "J. Post Keynesian Ec." 'jname := } + 'skip$ + if$ + s "Journal of Product Innovation Management" = + { "J. Prod. Innovat. Manag." 'jname := } + 'skip$ + if$ + s "Journal of Productivity Analysis" = + { "J. Prod. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Public Economics" = + { "J. Public Econ." 'jname := } + 'skip$ + if$ + s "Journal of Public Policy and Marketing" = + { "J. Public Policy Mark." 'jname := } + 'skip$ + if$ + s "Journal of Real Estate Finance and Economics" = + { "J. Real Estate Financ." 'jname := } + 'skip$ + if$ + s "Journal of Regulatory Economics" = + { "J. Regul. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Retailing" = + { "J. Retailing" 'jname := } + 'skip$ + if$ + s "Journal of Risk and Insurance" = + { "J. Risk. Insur" 'jname := } + 'skip$ + if$ + s "Journal of Risk and Uncertainty" = + { "J. Risk Uncertainty" 'jname := } + 'skip$ + if$ + s "Journal of Statistical Computation and Simulation" = + { "J. Stat. Comput. Sim." 'jname := } + 'skip$ + if$ + s "Journal of Statistical Planning and Inference" = + { "J. Stat. Plan. Infer." 'jname := } + 'skip$ + if$ + s "Journal of the Academy of Marketing Science" = + { "J. Acad. Market. Sci." 'jname := } + 'skip$ + if$ + s "Journal of the American Statistical Association" = + { "J. Am. Stat. Assoc." 'jname := } + 'skip$ + if$ + s "Journal of the European Economic Association" = + { "J. Eur. Econ. Assoc." 'jname := } + 'skip$ + if$ + s "Journal of the Japanese and International Economies" = + { "J. Jpn. Int. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Time Series Analysis" = + { "J. Time Ser. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Transport Economics and Policy" = + { "J. Transp. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Journal of Urban Economics" = + { "J. Urban Econ." 'jname := } + 'skip$ + if$ + s "Journal of World Business" = + { "J. World. Bus." 'jname := } + 'skip$ + if$ + s "Kyklos" = + { "Kyklos" 'jname := } + 'skip$ + if$ + s "Labor History" = + { "Labor Hist." 'jname := } + 'skip$ + if$ + s "Labour Economics" = + { "Labour Econ." 'jname := } + 'skip$ + if$ + s "Land Economics" = + { "Land Econ." 'jname := } + 'skip$ + if$ + s "Long Range Planning" = + { "Long Range Plann." 'jname := } + 'skip$ + if$ + s "Macroeconomic Dynamics" = + { "Macroecon. Dyn." 'jname := } + 'skip$ + if$ + s "Management Science" = + { "Manage. Sci." 'jname := } + 'skip$ + if$ + s "Manchester School" = + { "Manch. Sch." 'jname := } + 'skip$ + if$ + s "Marketing Letters" = + { "Market. Lett." 'jname := } + 'skip$ + if$ + s "Marketing Science" = + { "Market. Sci." 'jname := } + 'skip$ + if$ + s "Materials Transactions" = + { "Mater. Trans." 'jname := } + 'skip$ + if$ + s "Mathematical Finance" = + { "Math. Financ." 'jname := } + 'skip$ + if$ + s "Monthly Labor Review" = + { "Mon. Labor Rev." 'jname := } + 'skip$ + if$ + s "National Tax Journal" = + { "Natl. Tax. J." 'jname := } + 'skip$ + if$ + s "New England Economic Review" = + { "New Engl. Econ. Rev." 'jname := } + 'skip$ + if$ + s "New Political Economy" = + { "New Polit. Econ." 'jname := } + 'skip$ + if$ + s "Open Economies Review" = + { "Open. Econ. Rev." 'jname := } + 'skip$ + if$ + s "Organizational Dynamics" = + { "Organ. Dyn." 'jname := } + 'skip$ + if$ + s "Oxford Bulletin of Economics and Statistics" = + { "Oxford. B. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Oxford Economic Papers" = + { "Oxford Econ. Pap." 'jname := } + 'skip$ + if$ + s "Oxford Review of Economic Policy" = + { "Oxford. Rev. Econ. Pol." 'jname := } + 'skip$ + if$ + s "Politicka Ekonomie" = + { "Polit. Ekon." 'jname := } + 'skip$ + if$ + s "Population and Development Review" = + { "Popul. Dev. Rev." 'jname := } + 'skip$ + if$ + s "Post-Communist Economies" = + { "Post.-Communist. Econ." 'jname := } + 'skip$ + if$ + s "Post-Soviet Affairs" = + { "Post.-Sov. Aff." 'jname := } + 'skip$ + if$ + s "Psychology \& Marketing" = + { "Psychol. Market." 'jname := } + 'skip$ + if$ + s "Public Choice" = + { "Public. Choice." 'jname := } + 'skip$ + if$ + s "Quantitative Finance" = + { "Quant. Financ." 'jname := } + 'skip$ + if$ + s "Quarterly Journal of Economics" = + { "Q. J. Econ." 'jname := } + 'skip$ + if$ + s "R\&D Management" = + { "R.\&D. Manage." 'jname := } + 'skip$ + if$ + s "RAND Journal of Economics" = + { "Rand. J. Econ." 'jname := } + 'skip$ + if$ + s "Real Estate Economics" = + { "Real Estate Econ." 'jname := } + 'skip$ + if$ + s "Regional Science and Urban Economics" = + { "Reg. Sci. Urban. Econ." 'jname := } + 'skip$ + if$ + s "Regional Studies" = + { "Reg. Stud." 'jname := } + 'skip$ + if$ + s "Relations Industrielles-Industrial Relations" = + { "Relat. Ind.-Ind. Relat." 'jname := } + 'skip$ + if$ + s "Research-Technology Management" = + { "Res. Technol. Manage." 'jname := } + 'skip$ + if$ + s "Resource and Energy Economics" = + { "Resour. Energy. Econ." 'jname := } + 'skip$ + if$ + s "Review of Accounting Studies" = + { "Rev. Acc. Stud." 'jname := } + 'skip$ + if$ + s "Review of Agricultural Economics" = + { "Rev. Agr. Econ." 'jname := } + 'skip$ + if$ + s "Review of Development Economics" = + { "Rev. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Review of Economic Dynamics" = + { "Rev. Econ. Dynam." 'jname := } + 'skip$ + if$ + s "Review of Economic Studies" = + { "Rev. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Review of Economics and Statistics" = + { "Rev. Econ. Stud." 'jname := } + 'skip$ + if$ + s "Review of Financial Studies" = + { "Rev. Financ. Stud." 'jname := } + 'skip$ + if$ + s "Review of Income and Wealth" = + { "Rev. Income Wealth" 'jname := } + 'skip$ + if$ + s "Review of Industrial Organization" = + { "Rev. Ind. Organ." 'jname := } + 'skip$ + if$ + s "Review of International Economics" = + { "Rev. Int. Econ." 'jname := } + 'skip$ + if$ + s "Review of International Political Economy" = + { "Rev. Int. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Review of World Economics" = + { "Rev. World Econ." 'jname := } + 'skip$ if$ - % not mid.sentence, set to mid.sentence - mid.sentence 'output.state := - } - if$ - s -} - -%%% If the last character is period or comma, set non-zero to -%%% last.period.comma. -FUNCTION {period.comma.p} -{ duplicate$ 't := - t #-1 #1 substring$ "." = - t #-1 #1 substring$ "," = or - t #-1 #1 substring$ ":" = or - t #-1 #2 substring$ ".'" = or - t #-1 #2 substring$ ",'" = or - t #-1 #3 substring$ ".''" = or - t #-1 #3 substring$ ",''" = or - t #-1 #2 substring$ ".~" = or - t #-1 #2 substring$ ",~" = or - { #1 'last.period.comma := } - { #0 'last.period.comma := } - if$ -} - -%%% remove unnecessary comma. -FUNCTION {remove.pre.comma} -{ 's := - s empty$ - { "" } - { s #1 #1 substring$ "," = - { s #2 global.max$ substring$ } - { s #1 #1 substring$ "." = - { s #2 global.max$ substring$ } - 's - if$ - } + s "Scandinavian Journal of Economics" = + { "Scand. J. Econ." 'jname := } + 'skip$ if$ - } - if$ -} - -%%% output.nonnull.nocomma is the same as output.nonnull except that it does -%%% not add commas even in mid.sentence. -FUNCTION {output.nonnull.nocomma} -{ 's := - output.state mid.sentence = - % mid.sentence - { period.comma.p "" * write$ } - - % not mid.sentence - { output.state after.block = - % after.block - { add.period.x " " * write$ } - % before.all - { output.state before.all = - 'write$ - { add.period$ " " * write$ } - if$ - } + s "Scottish Journal of Political Economy" = + { "Scot. J. Polit. Econ." 'jname := } + 'skip$ if$ - mid.sentence 'output.state := - } - if$ - last.period.comma #0 = - { s } - { s remove.pre.comma } - if$ -} - -% Not used in the current econ.bst. -% FUNCTION {output} -% { duplicate$ empty$ -% 'pop$ -% 'output.nonnull -% if$ -% } - -FUNCTION {output.nocomma} -{ duplicate$ empty$ - 'pop$ - 'output.nonnull.nocomma - if$ -} - -% Not used in the current econ.bst. -% FUNCTION {output.check} -% { 't := -% duplicate$ empty$ -% { pop$ "empty " t * " in " * cite$ * warning$ } -% 'output.nonnull -% if$ -% } - -FUNCTION {output.check.nocomma} -{ 't := - duplicate$ empty$ - { pop$ "empty " t * " in " * cite$ * warning$ } - 'output.nonnull.nocomma - if$ -} - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%%% Format in bbl file: - -% \harvarditem[Brezis et~al.]{Brezis, Krugman and -% Tsiddon}{1993}{brezis93:_leapf_inter_compet} -% Brezis, Elise~S., Paul~R. Krugman, and Daniel Tsiddon (1993) ``Leapfrogging in -% International Competition: A Theory of Cycles in National Technological -% Leadership.'', {\em American Economic Review.}, Vol.~83. No.~5. pp. -% 1211--1219. - -% \harvarditem[abbreviated citation]{full citation}{year}{keyword} ... - -%%% Add period and newline. -FUNCTION {fin.entry} -{ add.period.x - 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 = + s "Small Business Economics" = + { "Small. Bus. Econ." 'jname := } + 'skip$ + if$ + s "Social Choice and Welfare" = + { "Soc. Choice Welfare" 'jname := } + 'skip$ + if$ + s "South African Journal of Economics" = + { "S. Afr. J. Econ." 'jname := } + 'skip$ + if$ + s "Southern Economic Journal" = + { "South. Econ. J." 'jname := } + 'skip$ + if$ + s "Strategic Management Journal" = + { "Statistics." 'jname := } + 'skip$ + if$ + s "Strategic Management Journal" = + { "Strategic Manage. J." 'jname := } + 'skip$ + if$ + s "Studies in Nonlinear Dynamics and Econometrics" = + { "Stoch. Anal. Appl." 'jname := } + 'skip$ + if$ + s "Studies in Nonlinear Dynamics and Econometrics" = + { "Stud. Nonlinear. Dyn. E." 'jname := } + 'skip$ + if$ + s "Supply Chain Management" = + { "Supply. Chain. Manag." 'jname := } + 'skip$ + if$ + s "Sustainability" = + { "Sustainability" 'jname := } + 'skip$ + if$ + s "Technological Forecasting and Social Change" = + { "Technol. Forecast. Soc." 'jname := } + 'skip$ + if$ + s "Theory and Decision" = + { "Theor. Decis." 'jname := } + 'skip$ + if$ + s "Tijdschrift voor Economische en Sociale Geografie" = + { "Tijdschr. Econ. Soc. Ge." 'jname := } + 'skip$ + if$ + s "Trimestre Economico" = + { "Trimest. Econ." 'jname := } + 'skip$ + if$ + s "Work and Occupations" = + { "Work Occupation." 'jname := } + 'skip$ + if$ + s "Work, Employment and Society" = + { "Work Employ. Soc." 'jname := } + 'skip$ + if$ + s "World Bank Economic Review" = + { "World Bank Econ. Rev." 'jname := } + 'skip$ + if$ + s "World Bank Research Observer" = + { "World Bank Res. Obser." 'jname := } + 'skip$ + if$ + s "World Development" = + { "World Dev." 'jname := } + 'skip$ + if$ + s "World Economy" = + { "World Econ." 'jname := } 'skip$ - { after.sentence 'output.state := } if$ } if$ -} - -FUNCTION {new.block.check} -{ empty$ - 'skip$ - 'new.block - if$ -} - -FUNCTION {field.or.null} -{ duplicate$ empty$ - { pop$ "" } - 'skip$ - if$ -} - -%%% booktitle -FUNCTION {format.btitle} -{ booktitle empty$ - { "" } - { bst.btitle.pre booktitle * bst.btitle.post * } - 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$ } @@ -1163,56 +2337,62 @@ 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 = + % 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 - { 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 * } + { 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$ @@ -1939,7 +3119,7 @@ FUNCTION {format.thesis.type} FUNCTION {format.tr.number} { type empty$ - { "Technical Report" } + { bst.techrep } { " " type * } if$ number empty$ @@ -2176,9 +3356,9 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - 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 } @@ -2423,6 +3603,8 @@ FUNCTION {techreport} 'skip$ if$ + format.url.doi output.nocomma + format.note output.nocomma fin.entry } @@ -2935,6 +4117,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$ @@ -3473,10 +4664,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$ - "% " 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$ + "% " write$ newline$ newline$ } EXECUTE {punctuation} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf index 8458c1e3fd..ae4af81610 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex index d130e07be0..d446886609 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex @@ -5,8 +5,8 @@ \documentclass[10pt]{article} %% Use natbib.sty -\usepackage[numbers]{natbib} -\usepackage{mathpazo} +\usepackage{natbib} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} @@ -33,22 +33,12 @@ urlcolor=MyGreen% %##################################################################### \begin{document} -This document uses ``\verb|econ-jet.bst|''. The style like JET ({\itshape Journal of -Economic Theory}). +This document uses ``\verb|econ-jet.bst|'', which is the style for \textit{``Journal of +Economic Theory (JET)''}. \vspace{1em} \input{cited-part} -\vspace*{1em} - -In the citation part above, we use -\verb|\citet| command which creates the style like ``author name + number''. If we use \verb|\cite| -command, we have the style only with number like the followings: \\ -\cite{Ryza15:_advan_analy_spark_patter_learn_data_scale}, -\cite{yamazaki13:_japan}, \cite{stakeda2013web}, \cite{Takeda2012a}, -\cite{bergemann11:_ration}, \cite{goldin:katz:2011}, \cite{Takeda2011b}, -\cite{takeda2011c}. - \nocite{*} %% bst file: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.bst index ee4ff74ecd..06a2cfbe50 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.bst +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.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:19 st> -% Version: 2.5 +% Version: 2.7 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -21,24 +20,21 @@ % % The Current Maintainer of this work is Shiro Takeda. -%% Main features of econ.bst. +%% econ-jie.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-jie.bst" is a BibTeX style file for Journal of International Economics +% "econ-jie.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-jie.bst" } % Debug mode. Non-zero makes debug mode on. FUNCTION {econ.debug} @@ -61,7 +57,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 +259,7 @@ FUNCTION {bst.notuse.order.field} % String replaced with _ in "Mr. A _ Mr. B " % FUNCTION {bst.and} -{ " " } +{ ", " } % { " and " } % (default) %%% String used to separate author names in references (more than two authors). @@ -271,7 +267,7 @@ FUNCTION {bst.and} % String replaced with _ in "Mr. A, Mr. B _ Mr. C" % FUNCTION {bst.ands} -{ " " } +{ ", " } % { ", and " } % (default) %%% String used to separate author names in citation part. @@ -314,7 +310,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). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -427,9 +427,18 @@ FUNCTION {bst.journal.pre} % The string after journal name: % 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: @@ -472,7 +481,7 @@ FUNCTION {bst.edition.post} % FUNCTION {bst.volume.pre} { " " } -% { ", Vol. " } % (default) +% { ", " } % (default) % The string after volume: % @@ -492,14 +501,13 @@ FUNCTION {bst.hide.number} % The string before number: % FUNCTION {bst.number.pre} -{ " (" } -% { ", No. " } % (default) +{ " (" } % (default) % The string after number: % FUNCTION {bst.number.post} { ")," } -% { "" } % (default) +% { ")" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % in @@ -517,12 +525,12 @@ FUNCTION {bst.in} % FUNCTION {bst.pages.pre} { " " } -% { ", pp." } % (default) +% { ", " } % (default) % The string before page: % FUNCTION {bst.page.pre} -{ ", p." } % (default) +{ ", " } % (default) % The string after page (multiple pages): % @@ -671,7 +679,7 @@ FUNCTION {bst.show.url} % The string before url: % FUNCTION {bst.url.pre} -{ ", URL: \url{" } % (default) +{ ", \url{" } % (default) % The string after url: % @@ -706,12 +714,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. % @@ -722,7 +730,7 @@ FUNCTION {bst.doi.post} FUNCTION {bst.url.doi} % { #0 } % (default) -> 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: @@ -738,7 +746,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: % @@ -1081,11 +1089,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$ } @@ -1161,56 +1195,62 @@ 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 = + % 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 - { 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 * } + { 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$ @@ -1937,7 +1977,7 @@ FUNCTION {format.thesis.type} FUNCTION {format.tr.number} { type empty$ - { "Technical Report" } + { bst.techrep } { " " type * } if$ number empty$ @@ -2174,9 +2214,9 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - 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 } @@ -2421,6 +2461,8 @@ FUNCTION {techreport} 'skip$ if$ + format.url.doi output.nocomma + format.note output.nocomma fin.entry } @@ -2933,6 +2975,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$ @@ -3471,10 +3522,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$ - "% " 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$ + "% " write$ newline$ newline$ } EXECUTE {punctuation} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf deleted file mode 100644 index 900654b4fe..0000000000 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf and /dev/null differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex index aa01c92619..9743a21a9b 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex @@ -6,7 +6,7 @@ %% Use natbib.sty \usepackage{natbib} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.bst new file mode 100644 index 0000000000..ee6d4364ab --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.bst @@ -0,0 +1,4802 @@ +%% econ.bst: BibTeX style file for papers in economics. +% +% Author: Shiro Takeda +% Maintainer: Shiro Takeda +% Copyright (C) 2001-2018 Shiro Takeda +% First-written: <2007/07/28> +% Version: 2.7 +% Keywords: TeX, BibTeX, bst +% URL: https://github.com/ShiroTakeda/econ-bst + +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% 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). + +% Bug reports, requests and suggestions are welcome. + +% For changelogs, see CHANGES.txt file. + +% version number +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "econ-jpe.bst" } + +% Debug mode. Non-zero makes debug mode on. +FUNCTION {econ.debug} +{ #0 } % Debug mode off (default). +% { #1 } % Debug mode on. + +ENTRY + %%% Declaration of field + { access address author booktitle chapter doi edition editor howpublished + institution journal key month note number organization pages publisher + school series title type url volume year + % Fields specific to econ.bst + order absorder nameorder + } + + % Definition of entry variable. The entry variable is a variable which has + % different values according to different entries. + %% Integer entry variable: + { order.cited } + + %% String entry variable + { label cyear flabel alabel extra.label sort.label sort.label.abb + extra.label.bysame nameorder.temp jname } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Use \bysame or not. +% +% If set to #0, \bysame is not used. +% If set to #1, \bysame is used +% If set to #2, \bysame is used (alternative abbreviation style). +% +% Note that integer number is expressed as # + integer in bst file. +% \bysame is the function that abbreviates succession of the same authors' name by ---. +% +% See econ-sample.pdf for details. +% +FUNCTION {bst.use.bysame} +% { #0 } % Not use \bysame +{ #1 } % -> Use \bysame (default) +% { #2 } % -> Use \bysame of alternative style. + +% The definition of \bysame command. +% +FUNCTION {bst.bysame.definition} +{ "\hskip.3em \leavevmode\rule[.5ex]{3em}{.3pt}\hskip0.5em" } % (default) +% { "\leavevmode\hbox to\leftmargin{\hrulefill\,\,}" } % If you set #2 to bst.use.bysame, use this. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The order of fist and last name. +% +FUNCTION {bst.author.name} +{ #0 } % (default) +% { #1 } +% { #2 } + +% Case of #0: First author -> last-first, other authors -> first-last. +% Fujita, Masahisa, Paul R. Krugman, and Anthony J. Venables. + +% Case of #1: All authors -> last-first +% Fujita, Masahisa, Krugman, Paul R., and Venables, Anthony J. + +% Case of #2: All authors -> first-last +% Masahisa Fujita, Paul R. Krugman, and Anthony J. Venables. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Abbreviate first name of authors (editors): +% +FUNCTION {bst.first.name.initial} +{ #0 } % #0 -> full letters (default). +% { #1 } % Non-zero -> initial letter only. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Decapitalize of strings in title field. +% +FUNCTION {bst.title.lower.case} +{ #0 } % If #0, not decapitalize title (default). +% { #1 } % If non-#0, decapitalize title + +% Hide title filed. +% +FUNCTION {bst.hide.title} +{ #0 } % #0 -> Title field is displayed (default) +% { #1 } % Non-zer -> Title field is hidden + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide month. +% +FUNCTION {bst.hide.month} +{ #0 } % #0 -> show month field (default). +% { #1 } % non-#0 -> hide month field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Attach number index like plain.bst. +% +FUNCTION {bst.use.number.index} +{ #0 } % Not use number index (default). +% { #1 } % Non-#0 -> Use number index + +% The string before number index: +% +FUNCTION {bst.number.index.pre} +{ "[" } % (default) + +% The string after number index. Adjustment is recommended. +% +FUNCTION {bst.number.index.post} +{ "]\hskip1.0em " } % (default) + +% Maximum digit of number index: +% If the number of reference items >= 100, set 3 to this function. +% If the number of reference items < 100, set 2 to this function. +% If the number of reference items < 10, set 1 to this function. +% +FUNCTION {bst.number.index.digit} +{ "2" } % (default) +% { "3" } + +% The functions below are used to adjust space and postion. If you use fonts +% other than computer modern fonts, you had better make adjustments. +% +% Setting for bst.number.index.digit = 1: +FUNCTION {bst.number.index.bibhang.one} +{ "2.05em" } % (default) +% Setting for bst.number.index.digit = 2: +FUNCTION {bst.number.index.bibhang.ten} +{ "2.55em" } % (default) +% Setting for bst.number.index.digit = 3: +FUNCTION {bst.number.index.bibhang.hund} +{ "3.05em" } % (default). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Position of "year": +% +% You can choose the position of year by this function. +% +% If set to #0, year is placed right after "author". +% If set to non-zero, year is placed at the end (before note field) except for +% aritcle type entry. +% +% In article type entry, the position of year changes according to the +% following rule: +% +% #1 -> year is placed at the end. +% #2 -> year is placed after journal name in aritcle type entry. +% #3 -> year is placed after volume in aritcle type entry. +% +FUNCTION {bst.year.position} +{ #0 } % (default). +% { #1 } % Last place before note. +% { #2 } % After journal name for aticle type entry. +% { #3 } % After volume for aticle type entry. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If 0, references are sorted by old documents -> recent documents. If +% non-zero, reverse order. +FUNCTION {bst.reverse.year} +{ #0 } % Normal order (old -> recent) (default). +% { #1 } % inverse order (recent -> old) + +% If non-zero, sort references by using year field as the primary key +% (chronological sorting). +FUNCTION {bst.sort.year} +{ #0 } % Normal case: year is used as the sorting key next to author (default). +% { #1 } % year is used as the primary sorting key. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If non-zero, references are listed in citation order. +% +FUNCTION {bst.no.sort} +{ #0 } % (default) +% { #1 } % listed in citation order. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Non-zero -> sort references by entry type (article, book, incollection etc.) +% +FUNCTION {bst.sort.entry.type} +{ #0 } % #0 -> Normal (not sort references by entry type) (default). +% { #1 } % Non-zero -> sort references by entry type. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use absorder field to sort items. Otherwise, ignore absorder field. +% +FUNCTION {bst.notuse.absorder.field} +{ #0 } % #0 -> Use absorder (default). +% { #1 } % Non-#0 -> Not use absorder. +% +% Order of priority to sort items +% +% absorder -> author -> year -> order -> month -> title +% +% wehre absorder and order fields are specific to econ.bst. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use order field to sort items. Otherwise, ignore order field. +% Note: order field is specific to econ.bst. +FUNCTION {bst.notuse.order.field} +{ #0 } % #0 -> Use order field (default). +% { #1 } % Non-#0 -> not use order field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% and + +%%% String used to separate author names in references. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.and} +{ ", and " } +% { " and " } % (default) + +%%% String used to separate author names in references (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.ands} +{ ", and " } % (default) + +%%% String used to separate author names in citation part. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.cite.and} +{ " and " } % (default) + +%%% String used to separate author names in citation part (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.cite.ands} +{ " and " } % (default) + +%%% If you want to use random author order for some bibliography entries, set +% non-zero to this function. +% +FUNCTION {bst.use.nameorder} +{ #1 } % Use random order (default) +% { #0 } % Not use random order + +%%% String used to separate author names in references for the entry of random +% author order. +% +FUNCTION {bst.and.nameorder} +{ " \textcircled{r} " } % (default) + +%%% String used to separate author names in citation part for the entry of +% random author order +% +FUNCTION {bst.cite.and.nameorder} +{ " \textcircled{r} " } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Author names in the citation part are abbreviated by et al. if the number of +% 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). + +% 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). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Strings used when abbreviating multiple-authors in citation part. +FUNCTION {bst.and.others} +{ " et~al." } % (default) + +% Strings used when abbreviating multiple-authors in citation part for entries +% with random author order. +FUNCTION {bst.and.others.nameorder} +{ " \textcircled{r}~al." } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% author + +% The string before author: +% +FUNCTION {bst.author.pre} +{ "" } % (default) + +% The string after author: +% +FUNCTION {bst.author.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% year + +% The string before year only for aritcle type entry. +% +FUNCTION {bst.year.pre} +{ " " } +% { " (" } % (default) + +% The string after year only for aritcle type entry. +% +FUNCTION {bst.year.post} +{ "." } +% { ") " } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.pre} +{ " " } +% { " (" } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.post} +{ "." } +% { ") " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% title (except for title in book) + +% The string before title: +% +FUNCTION {bst.title.pre} +{ "``" } % (default) + +% The string after title: +% +FUNCTION {bst.title.post} +{ ".''" } +% { ",''" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tile for book: + +% The string before book title: +% +FUNCTION {bst.book.pre} +{ " \textit{" } % (default) + +% The string after book title: +% +FUNCTION {bst.book.post} +{ "}. " } +% { "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booktitle + +% The string before booktitle: +% +FUNCTION {bst.btitle.pre} +{ " \textit{" } % (default) + +% The string after booktitle: +% +FUNCTION {bst.btitle.post} +{ "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% journal name + +% The string before journal name: +% +FUNCTION {bst.journal.pre} +{ " \textit{" } % (default) + +% The string after journal name: +% +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) + +% The string that indicates single editor: +% +FUNCTION {bst.editor} +{ " ed. " } % (default) + +% Order of editor and booktitle in incollection and inproceedings entries. +% +% If set to #0: editors -> booktitle order +% If set to non-zero: booktitle -> editors order +% +FUNCTION {bst.editor.btitle.order} +{ #1 } +% { #0 } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% edition + +% The string before edition: +% +FUNCTION {bst.edition.pre} +{ ", " } % (default) + +% The string after edition: +% +FUNCTION {bst.edition.post} +{ " edition" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% volume + +% The string before volume: +% +FUNCTION {bst.volume.pre} +{ " " } +% { ", " } % (default) + +% The string after volume: +% +FUNCTION {bst.volume.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% number + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide number. If non-zero, number is suppressed. +FUNCTION {bst.hide.number} +{ #0 } % #0 -> show number field (default) +% { #1 } % non-#0 -> Hide number field. + +% The string before number: +% +FUNCTION {bst.number.pre} +{ " (" } % (default) + +% The string after number: +% +FUNCTION {bst.number.post} +{ "): " } +% { ")" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% in + +% In +% +FUNCTION {bst.in} +{ " In " } +% { " in " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% page + +% The string before page (multiple pages): +% +FUNCTION {bst.pages.pre} +{ " " } +% { ", " } % (default) + +% The string before page: +% +FUNCTION {bst.page.pre} +{ ", " } % (default) + +% The string after page (multiple pages): +% +FUNCTION {bst.pages.post} +{ "" } % (default) + +% The string after page: +% +FUNCTION {bst.page.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% chapter + +% The string before chapter: +% +FUNCTION {bst.chapter.pre} +{ ", Chap." } % (default) + +% The string after chapter: +% +FUNCTION {bst.chapter.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% month + +% The string before month: +% +FUNCTION {bst.month.pre} +{ ", " } % (default) + +% The string after month: +% +FUNCTION {bst.month.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% address +% The string before address: +% +FUNCTION {bst.address.pre} +{ ", " } % (default) + +% The string after address: +% +FUNCTION {bst.address.post} +{ "" } % (default) + +% You can choose the order of address and publisher by this function. +% +% If #0, address -> publisher order (the default value). +% If non-zero, publisher -> address order. + +FUNCTION {bst.address.position} +{ #0 } % Address is placed before publisher (default) +% { #1 } % Address is placed after publisher + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% publisher + +% The string before publisher: +% +FUNCTION {bst.publisher.pre} +{ ": " } % (default) + +% The string after publisher: +% +FUNCTION {bst.publisher.post} +{ "," } +% { "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% series + +% The string before series: +% +FUNCTION {bst.series.pre} +{ ", " } % (default) + +% The string after series: +% +FUNCTION {bst.series.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% organization + +% The string before organization: +% +FUNCTION {bst.organization.pre} +{ ", " } % (default) + +% The string after organization: +% +FUNCTION {bst.organization.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% school + +% The string before school: +% +FUNCTION {bst.school.pre} +{ ", " } % (default) + +% The string after school: +% +FUNCTION {bst.school.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% institution + +% The string before institution: +% +FUNCTION {bst.institution.pre} +{ ", " } % (default) + +% The string after institution: +% +FUNCTION {bst.institution.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% howpublished + +% The string before howpublished: +% +FUNCTION {bst.howpublished.pre} +{ " " } % (default) + +% The string after howpublished: +% +FUNCTION {bst.howpublished.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% url + +% Show or Hide url. If non-zero, url is displayed. Otherwise, url is suppressed. +FUNCTION {bst.show.url} +{ #1 } % non-#0 -> Show url field (default) +% { #0 } % #0 -> Not show url field. + +% The string before url: +% +FUNCTION {bst.url.pre} +{ ", \url{" } % (default) + +% The string after url: +% +FUNCTION {bst.url.post} +{ "}" } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Access + +% This setting is valid only if there are "access" field in bib +% files. The value of access field indicates accessed date for URL. + +% The string before access. +FUNCTION {bst.access.pre} +{ ", accessed on " } % (default) + +% The string after access. +FUNCTION {bst.access.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DOI (digital object identifier) + +% This setting is valid only if there are "doi" field in bib files. + +% Show or Hide DOI. If non-zero, DOI is displayed. Otherwise, DOI is suppressed. +FUNCTION {bst.show.doi} +{ #1 } % non-#0 -> Show DOI field (default) +% { #0 } % #0 -> Not show DOI field. + +% The string before DOI: +% +FUNCTION {bst.doi.pre} +{ ", \href{http://dx.doi.org/" doi * "}{\urlstyle{rm} \nolinkurl{" * } % (default) + +% The string after DOI: +% +FUNCTION {bst.doi.post} +{ "}}" } % (default) + +% How to show URL and DOI fields when both fields exist. +% +% #0 -> Both fields are displayed +% #1 -> Only URL field is displayed +% #2 -> Only DOI field is displayed +% +FUNCTION {bst.url.doi} +% { #0 } % -> Both fields are displayed +% { #1 } % -> Only URL field is displayed +{ #2 } % (default) --> Only DOI field is displayed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Other functions: + +% The string before note. +FUNCTION {bst.note.pre} +{ ", " } % (default) + +% The string after note. +FUNCTION {bst.note.post} +{ "" } % (default) + +% The string that represents Technical report: +% +FUNCTION {bst.techrep} +{ "Technical Report" } % (default) + +% The string that represents master thesis: +% +FUNCTION {bst.mthesis} +{ " Master's thesis" } % (default) + +% The string that represents phd thesis: +% +FUNCTION {bst.phdthesis} +{ " Ph.D. dissertation" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization end here: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bst.first} +{ "1st" } + +FUNCTION {bst.second} +{ "2nd" } + +FUNCTION {bst.third} +{ "3rd" } + +FUNCTION {bst.fourth} +{ "4th" } + +FUNCTION {bst.fifth} +{ "5th" } + +FUNCTION {bst.st} +{ "st" } + +FUNCTION {bst.nd} +{ "nd" } + +FUNCTION {bst.rd} +{ "rd" } + +FUNCTION {bst.th} +{ "th" } + +%%%%% memo by Takeda + +% "a" 'b := indicates substituting string "a" for variable b. + +% Integer number #0, #1,... + +%%% Function definition: +% +% FUNCTION {name} +% { 's := +% +% } +% +% This is the definition of a function named "name". The function "name" is +% used in the following way +% +% "foo" name +% "foo" is an argument for the function "name". +% +% About the definition of a function with more than two arguments, see the +% definition of "chop.word". + +%%% Declaration of variables: + +%% String global variables: +STRINGS { s t tt } +STRINGS { year.num } +STRINGS { preone preten } +STRINGS { last.sort.label next.extra prev.author prev.author.aer this.author } +STRINGS { hang } +STRINGS { item.type } +STRINGS { tempa tempb } + +%% Integer global variables: +INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { multiresult } +INTEGERS { index } +INTEGERS { len } +INTEGERS { last.extra.num } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +INTEGERS { last.period.comma } +INTEGERS { len1.aer len2.aer i.aer } + +%%% Definition of functions: +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +%%% Initialize variables: +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +%%% Remove comma and add period: +% +%%% +FUNCTION {add.period.x} +{ duplicate$ + #-1 #1 substring$ "," = + { #-2 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ". " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ", " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ",'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #2 substring$ ",~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #3 substring$ ",''" = + { #-4 global.max$ substring$ ".''" * } + { duplicate$ + #-1 #3 substring$ ".''" = + { #-4 global.max$ substring$ ".''" * } + { add.period$ } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {output.nonnull} +{ 's := + % mid.sentence + output.state mid.sentence = + { ", " * write$ } + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period.x " " * write$ } + if$ + } + if$ + % not mid.sentence, set to mid.sentence + mid.sentence 'output.state := + } + if$ + s +} + +%%% If the last character is period or comma, set non-zero to +%%% last.period.comma. +FUNCTION {period.comma.p} +{ duplicate$ 't := + t #-1 #1 substring$ "." = + t #-1 #1 substring$ "," = or + t #-1 #1 substring$ ":" = or + t #-1 #2 substring$ ".'" = or + t #-1 #2 substring$ ",'" = or + t #-1 #3 substring$ ".''" = or + t #-1 #3 substring$ ",''" = or + t #-1 #2 substring$ ".~" = or + t #-1 #2 substring$ ",~" = or + { #1 'last.period.comma := } + { #0 'last.period.comma := } + if$ +} + +%%% remove unnecessary comma. +FUNCTION {remove.pre.comma} +{ 's := + s empty$ + { "" } + { s #1 #1 substring$ "," = + { s #2 global.max$ substring$ } + { s #1 #1 substring$ "." = + { s #2 global.max$ substring$ } + 's + if$ + } + if$ + } + if$ +} + +%%% output.nonnull.nocomma is the same as output.nonnull except that it does +%%% not add commas even in mid.sentence. +FUNCTION {output.nonnull.nocomma} +{ 's := + output.state mid.sentence = + % mid.sentence + { period.comma.p "" * write$ } + + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + last.period.comma #0 = + { s } + { s remove.pre.comma } + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output} +% { duplicate$ empty$ +% 'pop$ +% 'output.nonnull +% if$ +% } + +FUNCTION {output.nocomma} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull.nocomma + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output.check} +% { 't := +% duplicate$ empty$ +% { pop$ "empty " t * " in " * cite$ * warning$ } +% 'output.nonnull +% if$ +% } + +FUNCTION {output.check.nocomma} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull.nocomma + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Format in bbl file: + +% \harvarditem[Brezis et~al.]{Brezis, Krugman and +% Tsiddon}{1993}{brezis93:_leapf_inter_compet} +% Brezis, Elise~S., Paul~R. Krugman, and Daniel Tsiddon (1993) ``Leapfrogging in +% International Competition: A Theory of Cycles in National Technological +% Leadership.'', {\em American Economic Review.}, Vol.~83. No.~5. pp. +% 1211--1219. + +% \harvarditem[abbreviated citation]{full citation}{year}{keyword} ... + +%%% Add period and newline. +FUNCTION {fin.entry} +{ add.period.x + 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 {new.block.check} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +%%% booktitle +FUNCTION {format.btitle} +{ booktitle empty$ + { "" } + { bst.btitle.pre booktitle * bst.btitle.post * } + 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$ + s "Academy of Management Journal" = + { "Acad. Manage. Rev." 'jname := } + 'skip$ + if$ + s "Accounting Review" = + { "Account. Rev." 'jname := } + 'skip$ + if$ + s "Accounting, Organizations and Society" = + { "Account. Org. Soc." 'jname := } + 'skip$ + if$ + s "Accounting, Organizations and Society" = + { "Admin. Sci. Quart." 'jname := } + 'skip$ + if$ + s "Administrative Science Quarterly" = + { "Agr. Econ." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Applied Economics" = + { "Am. Econ. J. Appl. Econ." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Economic Policy" = + { "Am. Econ. J. Econ. Policy" 'jname := } + 'skip$ + if$ + s "American Economic Journal: Macroeconomics" = + { "Am. Econ. J. Macro." 'jname := } + 'skip$ + if$ + s "American Economic Journal: Microeconomics" = + { "Am. Econ. J. Micro." 'jname := } + 'skip$ + if$ + s "American Economic Review" = + { "Am. Econ. Rev." 'jname := } + 'skip$ + if$ + s "American Journal of Agricultural Economics" = + { "Am. J. Agr. Econ." 'jname := } + 'skip$ + if$ + s "American Journal of Economics and Sociology" = + { "Am. J. Econ. Sociol." 'jname := } + 'skip$ + if$ + s "Applied Economics" = + { "Appl. Econ." 'jname := } + 'skip$ + if$ + s "Applied Economics Letters" = + { "Appl. Econ. Lett." 'jname := } + 'skip$ + if$ + s "Applied Energy" = + { "Appl. Energ." 'jname := } + 'skip$ + if$ + s "Applied Stochastic Models in Business and Industry" = + { "Appl. Stoch. Model Bus." 'jname := } + 'skip$ + if$ + s "Auditing: A Journal of Practise and Theory" = + { "Auditing.-J. Pract. Th." 'jname := } + 'skip$ + if$ + s "Australian Journal of Agricultural and Resource Economics" = + { "Aust. J. Agr. Resour. Ec." 'jname := } + 'skip$ + if$ + s "B.E. Journal of Economic Analysis \& Policy" = + { "B.E. J. Econ. Anal. Policy" 'jname := } + 'skip$ + if$ + s "Betriebswirtschaftliche Forschung Und Praxis" = + { "Betrieb. Forsch. Prax." 'jname := } + 'skip$ + if$ + s "British Journal of Industrial Relations" = + { "Brit. J. Ind. Relat." 'jname := } + 'skip$ + if$ + s "British Journal of Management" = + { "Brit. J. Manage." 'jname := } + 'skip$ + if$ + s "Bulletin of Indonesian Economic Studies" = + { "B. Indones. Econ. Stud." 'jname := } + 'skip$ + if$ + s "Business Ethics Quarterly" = + { "Bus. Ethics Q." 'jname := } + 'skip$ + if$ + s "Business History" = + { "Bus. Hist." 'jname := } + 'skip$ + if$ + s "Business History Review" = + { "Bus. Hist. Rev." 'jname := } + 'skip$ + if$ + s "Business Lawyer" = + { "Bus. Lawyer" 'jname := } + 'skip$ + if$ + s "California Management Review" = + { "Calif. Manage. Rev." 'jname := } + 'skip$ + if$ + s "Cambridge Journal of Economics" = + { "Cambridge J. Econ." 'jname := } + 'skip$ + if$ + s "Canadian Journal of Administrative Sciences" = + { "Can. J. Adm. Sci." 'jname := } + 'skip$ + if$ + s "Canadian Journal of Economics" = + { "Can. J. Econ." 'jname := } + 'skip$ + if$ + s "China Economic Review" = + { "China. Econ. Rev." 'jname := } + 'skip$ + if$ + s "Climate Change Economics" = + { "Clim. Change Econ." 'jname := } + 'skip$ + if$ + s "Climate Policy" = + { "Clim. Policy" 'jname := } + 'skip$ + if$ + s "Communications in Statistics – Part A: Theory and Methods" = + { "Commun. Stat.-Theor. M." 'jname := } + 'skip$ + if$ + s "Computational Economics" = + { "Computation. Econ." 'jname := } + 'skip$ + if$ + s "Computational Statistics" = + { "Computation. Stat." 'jname := } + 'skip$ + if$ + s "Computational Statistics and Data Analysis" = + { "Comput. Stat. Data An." 'jname := } + 'skip$ + if$ + s "Contemporary Accounting Research" = + { "Contemp. Account. Res." 'jname := } + 'skip$ + if$ + s "Contemporary Economic Policy" = + { "Contemp. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Defence and Peace Economics" = + { "Defence Peace Econ." 'jname := } + 'skip$ + if$ + s "Development Economics" = + { "Dev. Econ." 'jname := } + 'skip$ + if$ + s "Eastern European Economics" = + { "Eastern Eur. Econ." 'jname := } + 'skip$ + if$ + s "Ecological Economics" = + { "Ecol. Econ." 'jname := } + 'skip$ + if$ + s "Econometric Theory" = + { "Economet. Theor." 'jname := } + 'skip$ + if$ + s "Econometrica" = + { "Econometrica" 'jname := } + 'skip$ + if$ + s "Economic and Industrial Democracy" = + { "Econ. Ind. Democr." 'jname := } + 'skip$ + if$ + s "Economic Development and Cultural Change" = + { "Econ. Dev. Cult. Change" 'jname := } + 'skip$ + if$ + s "Economic Development and Cultural Change" = + { "Economist.-Netherland" 'jname := } + 'skip$ + if$ + s "Economic Development Quarterly" = + { "Econ. Dev. Q." 'jname := } + 'skip$ + if$ + s "Economic Geography" = + { "Econ. Geogr." 'jname := } + 'skip$ + if$ + s "Economic History Review" = + { "Econ. Hist. Rev." 'jname := } + 'skip$ + if$ + s "Economic Inquiry" = + { "Econ. Inq." 'jname := } + 'skip$ + if$ + s "Economic Journal" = + { "Econ. J." 'jname := } + 'skip$ + if$ + s "Economic Modelling" = + { "Econ. Model." 'jname := } + 'skip$ + if$ + s "Economic Policy" = + { "Econ. Policy" 'jname := } + 'skip$ + if$ + s "Economic Record" = + { "Econ. Rec." 'jname := } + 'skip$ + if$ + s "Economic Theory" = + { "Econ. Theor." 'jname := } + 'skip$ + if$ + s "Economica" = + { "Economica" 'jname := } + 'skip$ + if$ + s "Economics and Philosophy" = + { "Econ. Philos." 'jname := } + 'skip$ + if$ + s "Economics Letters" = + { "Econ. Lett." 'jname := } + 'skip$ + if$ + s "Economics of Education Review" = + { "Econ. Educ. Rev." 'jname := } + 'skip$ + if$ + s "Economics of Energy \& Environmental Policy" = + { "Econ. Energ. Environ. Policy" 'jname := } + 'skip$ + if$ + s "Economics of Transition" = + { "Econ. Transit." 'jname := } + 'skip$ + if$ + s "Economy and Society" = + { "Econ. Soc." 'jname := } + 'skip$ + if$ + s "Ekonomicky Casopis" = + { "Ekon. Cas." 'jname := } + 'skip$ + if$ + s "Ekonomiska Samfundets Tidskrift" = + { "Ekon. Samf. Tidskr." 'jname := } + 'skip$ + if$ + s "Emerging Markets Finance and Trade" = + { "Emerg. Mark. Financ. Tr." 'jname := } + 'skip$ + if$ + s "Energy Economics" = + { "Energ. Econ." 'jname := } + 'skip$ + if$ + s "Energy Journal" = + { "Energ. J." 'jname := } + 'skip$ + if$ + s "Energy Policy" = + { "Energ. Policy" 'jname := } + 'skip$ + if$ + s "Entrepreneurship \& Regional Development" = + { "Entrep. Region. Dev." 'jname := } + 'skip$ + if$ + s "Entrepreneurship Theory and Practice" = + { "Entrep. Theory Pract." 'jname := } + 'skip$ + if$ + s "Environment and Development Economics" = + { "Environ. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Environmental and Resource Economics" = + { "Environ. Resour. Econ." 'jname := } + 'skip$ + if$ + s "Environmental Economics and Policy Studies" = + { "Environ. Econ. Policy Stud." 'jname := } + 'skip$ + if$ + s "Environmental Science and Policy" = + { "Environ. Sci. Policy" 'jname := } + 'skip$ + if$ + s "Environmental Science \& Technology" = + { "Environ. Sci. Technol." 'jname := } + 'skip$ + if$ + s "Eurasian Geography and Economics " = + { "Eurasian Geogr. Econ." 'jname := } + 'skip$ + if$ + s "European Economic Review" = + { "Eur. Econ. Rev." 'jname := } + 'skip$ + if$ + s "European Journal of Industrial Relations" = + { "Eur. J. Ind. Relat." 'jname := } + 'skip$ + if$ + s "European Review of Agricultural Economics" = + { "Eur. Rev. Agric. Econ." 'jname := } + 'skip$ + if$ + s "Europe-Asia Studies" = + { "Europe-Asia Stud." 'jname := } + 'skip$ + if$ + s "Explorations in Economic History" = + { "Explor. Econ. Hist." 'jname := } + 'skip$ + if$ + s "Feminist Economics" = + { "Fem. Econ." 'jname := } + 'skip$ + if$ + s "Finance a Uver" = + { "Financ. Uver." 'jname := } + 'skip$ + if$ + s "Finance and Stochastics" = + { "Financ. Stoch." 'jname := } + 'skip$ + if$ + s "Financial Analysts Journal" = + { "Financ. Anal. J." 'jname := } + 'skip$ + if$ + s "Financial Management" = + { "Financ. Manage." 'jname := } + 'skip$ + if$ + s "Fiscal Studies" = + { "Fisc. Stud." 'jname := } + 'skip$ + if$ + s "Food Policy" = + { "Food. Policy." 'jname := } + 'skip$ + if$ + s "Futures" = + { "Futures" 'jname := } + 'skip$ + if$ + s "Games and Economic Behavior" = + { "Game Econ. Behav." 'jname := } + 'skip$ + if$ + s "Health Economics" = + { "Health Econ." 'jname := } + 'skip$ + if$ + s "Hitotsubashi Journal of Economics" = + { "Hitotsub. J. Econ." 'jname := } + 'skip$ + if$ + s "IMF Staff Papers" = + { "Imf. Staff. Papers" 'jname := } + 'skip$ + if$ + s "Industrial and Corporate Change" = + { "Ind. Corp. Change" 'jname := } + 'skip$ + if$ + s "Industrial and Labor Relations Review" = + { "Ind. Labor. Relat. Rev." 'jname := } + 'skip$ + if$ + s "Industrial Marketing Management" = + { "Ind. Market Manag." 'jname := } + 'skip$ + if$ + s "Industrial Relations" = + { "Ind. Relat." 'jname := } + 'skip$ + if$ + s "Information Economics and Policy" = + { "Info. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Insurance: Mathematics and Economics" = + { "Insur. Math. Econ." 'jname := } + 'skip$ + if$ + s "International Economic Review" = + { "Int. Econ. Rev." 'jname := } + 'skip$ + if$ + s "International Journal of Electronics and Telecommunications" = + { "Int. J. Electron. Comm." 'jname := } + 'skip$ + if$ + s "International Journal of Economic Theory" = + { "Int. J. Econ. Theory" 'jname := } + 'skip$ + if$ + s "International Journal of Finance \& Economics" = + { "Int. J. Financ. Econ." 'jname := } + 'skip$ + if$ + s "International Journal of Forecasting" = + { "Int. J. Forecast." 'jname := } + 'skip$ + if$ + s "International Journal of Game Theory" = + { "Int. J. Game. Theory" 'jname := } + 'skip$ + if$ + s "International Journal of Industrial Organization" = + { "Int. J. Ind. Organ." 'jname := } + 'skip$ + if$ + s "International Journal of Manpower" = + { "Int. J. Manpow." 'jname := } + 'skip$ + if$ + s "International Journal of Market Research" = + { "Int. J. Market Res." 'jname := } + 'skip$ + if$ + s "International Journal of Research in Marketing" = + { "Int. J. Res. Mark." 'jname := } + 'skip$ + if$ + s "International Labour Review" = + { "Int. Labour Rev." 'jname := } + 'skip$ + if$ + s "International Marketing Review" = + { "Int. Market. Rev." 'jname := } + 'skip$ + if$ + s "International Review of Applied Economics" = + { "Int. Rev. Appl. Econ." 'jname := } + 'skip$ + if$ + s "International Review of Law and Economics" = + { "Int. Rev. Law Econ." 'jname := } + 'skip$ + if$ + s "International Small Business Journal" = + { "Int. Small. Bus. J." 'jname := } + 'skip$ + if$ + s "International Tax and Public Finance" = + { "Int. Tax Public Finan." 'jname := } + 'skip$ + if$ + s "Jahrbücher für Nationalökonomie und Statistik" = + { "Jahrb. Natl. Stat." 'jname := } + 'skip$ + if$ + s "Japan and the World Economy" = + { "Jpn. World Econ." 'jname := } + 'skip$ + if$ + s "Japanese Economic Review" = + { "Jpn. Econ. Rev." 'jname := } + 'skip$ + if$ + s "JCMS-journal of Common Market Studies" = + { "Jcms.-J. Common. Mark. S." 'jname := } + 'skip$ + if$ + s "Journal of Accounting and Economics" = + { "J. Account. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Accounting Research" = + { "J. Account. Res." 'jname := } + 'skip$ + if$ + s "Journal of Advertising" = + { "J. Advertising" 'jname := } + 'skip$ + if$ + s "Journal of Advertising Research" = + { "J. Advertising Res." 'jname := } + 'skip$ + if$ + s "Journal of African Economies" = + { "J. Afr. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Agricultural and Resource Economics" = + { "J. Agr. Resour. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Agricultural Economics" = + { "J. Agr. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Applied Econometrics" = + { "J. Appl. Econom." 'jname := } + 'skip$ + if$ + s "Journal of Banking and Finance" = + { "J. Bank Financ." 'jname := } + 'skip$ + if$ + s "Journal of Business" = + { "J. Bus." 'jname := } + 'skip$ + if$ + s "Journal of Business and Economic Statistics" = + { "J. Bus. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Journal of Business and Psychology" = + { "J. Bus. Psychol." 'jname := } + 'skip$ + if$ + s "Journal of Business and Technical Communication" = + { "J. Bus. Tech. Commun." 'jname := } + 'skip$ + if$ + s "Journal of Business Ethics" = + { "J. Bus. Ethics" 'jname := } + 'skip$ + if$ + s "Journal of Business Research" = + { "J. Bus. Res." 'jname := } + 'skip$ + if$ + s "Journal of Business Venturing" = + { "J. Bus. Venturing." 'jname := } + 'skip$ + if$ + s "Journal of Cleaner Productiond" = + { "J. Clean. Prod." 'jname := } + 'skip$ + if$ + s "Journal of Comparative Economics" = + { "J. Comp. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Consumer Affairs" = + { "J. Consum. Aff." 'jname := } + 'skip$ + if$ + s "Journal of Consumer Research" = + { "J. Consum. Res." 'jname := } + 'skip$ + if$ + s "Journal of Corporate Finance" = + { "J. Corp. Financ." 'jname := } + 'skip$ + if$ + s "Journal of Development Economics" = + { "J. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Econometrics" = + { "J. Econometrics" 'jname := } + 'skip$ + if$ + s "Journal of Economic Behavior and Organization" = + { "J. Econ. Behav. Organ." 'jname := } + 'skip$ + if$ + s "Journal of Economic Dynamics and Control" = + { "J. Econ. Dyn. Control" 'jname := } + 'skip$ + if$ + s "Journal of Economic Education" = + { "J. Econ. Educ." 'jname := } + 'skip$ + if$ + s "Journal of Economic Geography" = + { "J. Econ. Geogr." 'jname := } + 'skip$ + if$ + s "Journal of Economic Growth" = + { "J. Econ. Growth" 'jname := } + 'skip$ + if$ + s "Journal of Economic History" = + { "J. Econ. Hist." 'jname := } + 'skip$ + if$ + s "Journal of Economic Integration" = + { "J. Econ. Integr." 'jname := } + 'skip$ + if$ + s "Journal of Economic Issues" = + { "J. Econ. Issues." 'jname := } + 'skip$ + if$ + s "Journal of Economic Perspectives" = + { "J. Econ. Perspect." 'jname := } + 'skip$ + if$ + s "Journal of Economic Psychology" = + { "J. Econ. Psychol." 'jname := } + 'skip$ + if$ + s "Journal of Economic Literature" = + { "J. Econ. Lit." 'jname := } + 'skip$ + if$ + s "Journal of Economic Surveys" = + { "J. Econ. Surv." 'jname := } + 'skip$ + if$ + s "Journal of Economic Theory" = + { "J. Econ. Theory" 'jname := } + 'skip$ + if$ + s "Journal of Economics" = + { "J. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Economics and Management Strategy" = + { "J. Econ. Manage. Strat." 'jname := } + 'skip$ + if$ + s "Journal of Environmental Economics and Management" = + { "J. Environ. Econ. Manag." 'jname := } + 'skip$ + if$ + s "Journal of Evolutionary Economics" = + { "J. Evol. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Finance" = + { "J. Financ." 'jname := } + 'skip$ + if$ + s "Journal of Financial and Quantitative Analysis" = + { "J. Financ. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Financial Economics" = + { "J. Financ. Intermed." 'jname := } + 'skip$ + if$ + s "Journal of Financial Intermediation" = + { "J. Financ. Mark." 'jname := } + 'skip$ + if$ + s "Journal of Financial Markets" = + { "J. Financ. Quant. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Forecasting" = + { "J. Forecasting." 'jname := } + 'skip$ + if$ + s "Journal of Futures Markets" = + { "J. Futures Market" 'jname := } + 'skip$ + if$ + s "Journal of Health Economics" = + { "J. Health Econ." 'jname := } + 'skip$ + if$ + s "Journal of Housing Economics" = + { "J. Hous. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Human Resources" = + { "J. Hum. Resour." 'jname := } + 'skip$ + if$ + s "Journal of Industrial Economics" = + { "J. Ind. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Institutional and Theoretical Economics" = + { "J. Inst. Theor. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Integrated Disaster Risk Management" = + { "J. Integr. Disaster Risk Manag." 'jname := } + 'skip$ + if$ + s "Journal of International Business Studies" = + { "J. Int. Bus. Stud." 'jname := } + 'skip$ + if$ + s "Journal of International Economics" = + { "J. Int. Econ." 'jname := } + 'skip$ + if$ + s "Journal of International Marketing" = + { "J. Int. Marketing" 'jname := } + 'skip$ + if$ + s "Journal of International Money and Finance" = + { "J. Int. Money Financ." 'jname := } + 'skip$ + if$ + s "Journal of Labor Economics" = + { "J. Labor Econ." 'jname := } + 'skip$ + if$ + s "Journal of Labor Research" = + { "J. Labor Res." 'jname := } + 'skip$ + if$ + s "Journal of Law and Economics" = + { "J. Law. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Law, Economics, and Organization" = + { "J. Law. Econ. Organ." 'jname := } + 'skip$ + if$ + s "Journal of Macroeconomics" = + { "J. Macroecon." 'jname := } + 'skip$ + if$ + s "Journal of Management" = + { "J. Manage." 'jname := } + 'skip$ + if$ + s "Journal of Management Studies" = + { "J. Manage. Stud." 'jname := } + 'skip$ + if$ + s "Journal of Marketing" = + { "J. Marketing" 'jname := } + 'skip$ + if$ + s "Journal of Marketing Research" = + { "J. Marketing Res." 'jname := } + 'skip$ + if$ + s "Journal of Mathematical Economics" = + { "J. Math. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Media Economics" = + { "J. Media Econ." 'jname := } + 'skip$ + if$ + s "Journal of Monetary Economics" = + { "J. Monetary. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Money, Credit and Banking" = + { "J. Money Credit Bank." 'jname := } + 'skip$ + if$ + s "Journal of Policy Modeling" = + { "J. Policy Model." 'jname := } + 'skip$ + if$ + s "Journal of Political Economy" = + { "J. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Population Economics" = + { "J. Popul. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Portfolio Management" = + { "J. Portfolio Manage." 'jname := } + 'skip$ + if$ + s "Journal of Post Keynesian Economics" = + { "J. Post Keynesian Ec." 'jname := } + 'skip$ + if$ + s "Journal of Product Innovation Management" = + { "J. Prod. Innovat. Manag." 'jname := } + 'skip$ + if$ + s "Journal of Productivity Analysis" = + { "J. Prod. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Public Economics" = + { "J. Public Econ." 'jname := } + 'skip$ + if$ + s "Journal of Public Policy and Marketing" = + { "J. Public Policy Mark." 'jname := } + 'skip$ + if$ + s "Journal of Real Estate Finance and Economics" = + { "J. Real Estate Financ." 'jname := } + 'skip$ + if$ + s "Journal of Regulatory Economics" = + { "J. Regul. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Retailing" = + { "J. Retailing" 'jname := } + 'skip$ + if$ + s "Journal of Risk and Insurance" = + { "J. Risk. Insur" 'jname := } + 'skip$ + if$ + s "Journal of Risk and Uncertainty" = + { "J. Risk Uncertainty" 'jname := } + 'skip$ + if$ + s "Journal of Statistical Computation and Simulation" = + { "J. Stat. Comput. Sim." 'jname := } + 'skip$ + if$ + s "Journal of Statistical Planning and Inference" = + { "J. Stat. Plan. Infer." 'jname := } + 'skip$ + if$ + s "Journal of the Academy of Marketing Science" = + { "J. Acad. Market. Sci." 'jname := } + 'skip$ + if$ + s "Journal of the American Statistical Association" = + { "J. Am. Stat. Assoc." 'jname := } + 'skip$ + if$ + s "Journal of the European Economic Association" = + { "J. Eur. Econ. Assoc." 'jname := } + 'skip$ + if$ + s "Journal of the Japanese and International Economies" = + { "J. Jpn. Int. Econ." 'jname := } + 'skip$ + if$ + s "Journal of Time Series Analysis" = + { "J. Time Ser. Anal." 'jname := } + 'skip$ + if$ + s "Journal of Transport Economics and Policy" = + { "J. Transp. Econ. Policy" 'jname := } + 'skip$ + if$ + s "Journal of Urban Economics" = + { "J. Urban Econ." 'jname := } + 'skip$ + if$ + s "Journal of World Business" = + { "J. World. Bus." 'jname := } + 'skip$ + if$ + s "Kyklos" = + { "Kyklos" 'jname := } + 'skip$ + if$ + s "Labor History" = + { "Labor Hist." 'jname := } + 'skip$ + if$ + s "Labour Economics" = + { "Labour Econ." 'jname := } + 'skip$ + if$ + s "Land Economics" = + { "Land Econ." 'jname := } + 'skip$ + if$ + s "Long Range Planning" = + { "Long Range Plann." 'jname := } + 'skip$ + if$ + s "Macroeconomic Dynamics" = + { "Macroecon. Dyn." 'jname := } + 'skip$ + if$ + s "Management Science" = + { "Manage. Sci." 'jname := } + 'skip$ + if$ + s "Manchester School" = + { "Manch. Sch." 'jname := } + 'skip$ + if$ + s "Marketing Letters" = + { "Market. Lett." 'jname := } + 'skip$ + if$ + s "Marketing Science" = + { "Market. Sci." 'jname := } + 'skip$ + if$ + s "Materials Transactions" = + { "Mater. Trans." 'jname := } + 'skip$ + if$ + s "Mathematical Finance" = + { "Math. Financ." 'jname := } + 'skip$ + if$ + s "Monthly Labor Review" = + { "Mon. Labor Rev." 'jname := } + 'skip$ + if$ + s "National Tax Journal" = + { "Natl. Tax. J." 'jname := } + 'skip$ + if$ + s "New England Economic Review" = + { "New Engl. Econ. Rev." 'jname := } + 'skip$ + if$ + s "New Political Economy" = + { "New Polit. Econ." 'jname := } + 'skip$ + if$ + s "Open Economies Review" = + { "Open. Econ. Rev." 'jname := } + 'skip$ + if$ + s "Organizational Dynamics" = + { "Organ. Dyn." 'jname := } + 'skip$ + if$ + s "Oxford Bulletin of Economics and Statistics" = + { "Oxford. B. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Oxford Economic Papers" = + { "Oxford Econ. Pap." 'jname := } + 'skip$ + if$ + s "Oxford Review of Economic Policy" = + { "Oxford. Rev. Econ. Pol." 'jname := } + 'skip$ + if$ + s "Politicka Ekonomie" = + { "Polit. Ekon." 'jname := } + 'skip$ + if$ + s "Population and Development Review" = + { "Popul. Dev. Rev." 'jname := } + 'skip$ + if$ + s "Post-Communist Economies" = + { "Post.-Communist. Econ." 'jname := } + 'skip$ + if$ + s "Post-Soviet Affairs" = + { "Post.-Sov. Aff." 'jname := } + 'skip$ + if$ + s "Psychology \& Marketing" = + { "Psychol. Market." 'jname := } + 'skip$ + if$ + s "Public Choice" = + { "Public. Choice." 'jname := } + 'skip$ + if$ + s "Quantitative Finance" = + { "Quant. Financ." 'jname := } + 'skip$ + if$ + s "Quarterly Journal of Economics" = + { "Q. J. Econ." 'jname := } + 'skip$ + if$ + s "R\&D Management" = + { "R.\&D. Manage." 'jname := } + 'skip$ + if$ + s "RAND Journal of Economics" = + { "Rand. J. Econ." 'jname := } + 'skip$ + if$ + s "Real Estate Economics" = + { "Real Estate Econ." 'jname := } + 'skip$ + if$ + s "Regional Science and Urban Economics" = + { "Reg. Sci. Urban. Econ." 'jname := } + 'skip$ + if$ + s "Regional Studies" = + { "Reg. Stud." 'jname := } + 'skip$ + if$ + s "Relations Industrielles-Industrial Relations" = + { "Relat. Ind.-Ind. Relat." 'jname := } + 'skip$ + if$ + s "Research-Technology Management" = + { "Res. Technol. Manage." 'jname := } + 'skip$ + if$ + s "Resource and Energy Economics" = + { "Resour. Energy. Econ." 'jname := } + 'skip$ + if$ + s "Review of Accounting Studies" = + { "Rev. Acc. Stud." 'jname := } + 'skip$ + if$ + s "Review of Agricultural Economics" = + { "Rev. Agr. Econ." 'jname := } + 'skip$ + if$ + s "Review of Development Economics" = + { "Rev. Dev. Econ." 'jname := } + 'skip$ + if$ + s "Review of Economic Dynamics" = + { "Rev. Econ. Dynam." 'jname := } + 'skip$ + if$ + s "Review of Economic Studies" = + { "Rev. Econ. Stat." 'jname := } + 'skip$ + if$ + s "Review of Economics and Statistics" = + { "Rev. Econ. Stud." 'jname := } + 'skip$ + if$ + s "Review of Financial Studies" = + { "Rev. Financ. Stud." 'jname := } + 'skip$ + if$ + s "Review of Income and Wealth" = + { "Rev. Income Wealth" 'jname := } + 'skip$ + if$ + s "Review of Industrial Organization" = + { "Rev. Ind. Organ." 'jname := } + 'skip$ + if$ + s "Review of International Economics" = + { "Rev. Int. Econ." 'jname := } + 'skip$ + if$ + s "Review of International Political Economy" = + { "Rev. Int. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Review of World Economics" = + { "Rev. World Econ." 'jname := } + 'skip$ + if$ + s "Scandinavian Journal of Economics" = + { "Scand. J. Econ." 'jname := } + 'skip$ + if$ + s "Scottish Journal of Political Economy" = + { "Scot. J. Polit. Econ." 'jname := } + 'skip$ + if$ + s "Small Business Economics" = + { "Small. Bus. Econ." 'jname := } + 'skip$ + if$ + s "Social Choice and Welfare" = + { "Soc. Choice Welfare" 'jname := } + 'skip$ + if$ + s "South African Journal of Economics" = + { "S. Afr. J. Econ." 'jname := } + 'skip$ + if$ + s "Southern Economic Journal" = + { "South. Econ. J." 'jname := } + 'skip$ + if$ + s "Strategic Management Journal" = + { "Statistics." 'jname := } + 'skip$ + if$ + s "Strategic Management Journal" = + { "Strategic Manage. J." 'jname := } + 'skip$ + if$ + s "Studies in Nonlinear Dynamics and Econometrics" = + { "Stoch. Anal. Appl." 'jname := } + 'skip$ + if$ + s "Studies in Nonlinear Dynamics and Econometrics" = + { "Stud. Nonlinear. Dyn. E." 'jname := } + 'skip$ + if$ + s "Supply Chain Management" = + { "Supply. Chain. Manag." 'jname := } + 'skip$ + if$ + s "Sustainability" = + { "Sustainability" 'jname := } + 'skip$ + if$ + s "Technological Forecasting and Social Change" = + { "Technol. Forecast. Soc." 'jname := } + 'skip$ + if$ + s "Theory and Decision" = + { "Theor. Decis." 'jname := } + 'skip$ + if$ + s "Tijdschrift voor Economische en Sociale Geografie" = + { "Tijdschr. Econ. Soc. Ge." 'jname := } + 'skip$ + if$ + s "Trimestre Economico" = + { "Trimest. Econ." 'jname := } + 'skip$ + if$ + s "Work and Occupations" = + { "Work Occupation." 'jname := } + 'skip$ + if$ + s "Work, Employment and Society" = + { "Work Employ. Soc." 'jname := } + 'skip$ + if$ + s "World Bank Economic Review" = + { "World Bank Econ. Rev." 'jname := } + 'skip$ + if$ + s "World Bank Research Observer" = + { "World Bank Res. Obser." 'jname := } + 'skip$ + if$ + s "World Development" = + { "World Dev." 'jname := } + 'skip$ + if$ + s "World Economy" = + { "World Econ." 'jname := } + 'skip$ + if$ + } + if$ + jname +} + +%%% journal +FUNCTION {format.journal} +{ journal empty$ + { "" } + { bst.journal.pre format.journal.name.abb * bst.journal.post * } + if$ +} + +%%% title for book +FUNCTION {format.book} +{ title empty$ + { "" } + { bst.book.pre title * bst.book.post * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { type$ "online" = bst.show.url or + { bst.url.pre url * bst.url.post * + access empty$ + { "" * } + { bst.access.pre * access * bst.access.post * } + if$ + } + { "" } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ bst.show.doi not or + { "" } + { bst.doi.pre doi * bst.doi.post * } + if$ +} + +FUNCTION {format.url.doi} +{ url empty$ + { format.doi } + { doi empty$ + { format.url } + { bst.url.doi #0 = + { format.url output.nocomma + format.doi } + { bst.url.doi #1 = + { format.url } + { format.doi } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% and others +FUNCTION {bst.and.others.output} +{ nameorder.temp "random" = + bst.use.nameorder #0 = not and + { bst.and.others.nameorder } + { bst.and.others } + if$ +} + +%%% author and editor + +%%% name +FUNCTION {format.names} +{ '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$ + } + 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 JPE, 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.first.name.initial #0 = + { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't := } + { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't := } + if$ + } + % The second or later authors + { 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$ + + nameptr #1 > + % The second or later authors + { 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$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +% remove successive periods (commas) from author +FUNCTION {remove.ss.period.auth} +{ 's := + s format.names 'tempa := + bst.author.post 'tempb := + tempb #1 #1 substring$ "}" = + { tempa tempb * } + { tempa #-1 #1 substring$ tempb #1 #1 substring$ = + { tempa tempb #2 global.max$ substring$ * } + { tempa tempb * } + if$ + } + if$ +} + +% compare.names +FUNCTION {compare.names.aer} +{ 's := + 'tempa := + +% "current.author = " s * "\\" * write$ newline$ +% "prev.author = " tempa * "\\" * write$ newline$ + + tempa num.names$ 'len1.aer := % len1 = the number of previous authors + s num.names$ 'len2.aer := % len2 = the number of current authors + +% len1.aer := min(len1.aer,len2.aer) +% len1 -> min{ the number of previous authors, the number of current authors } + len1.aer len2.aer > + { len2.aer 'len1.aer := } + { } + if$ + +% start with an empty string, then while the components are the same +% add "\bysame" + "" + #1 'i.aer := + + { i.aer len1.aer > not } + { tempa i.aer "{ff }{vv }{ll}{ jj}" format.name$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ + = + { #1 i.aer < + { " and " * } % \bysame で省略する著者の前につく and + { } + if$ + "\bysame{}" * + i.aer #1 + 'i.aer := } + { #-1 'len1.aer := } + if$ + } + while$ + +% add the rest of the second string + { i.aer len2.aer > not } + { #1 i.aer < + { " and " * } + { } + if$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ * + i.aer #1 + 'i.aer := + } + while$ +} + +%%% author +FUNCTION {format.authors} +{ author empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer author compare.names.aer 's := + author 'prev.author.aer := } + { author 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors} +{ editor empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer editor compare.names.aer 's := + editor 'prev.author.aer := } + { editor 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + s num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +FUNCTION {format.authors.alt} +{ author empty$ + { "" } + { extra.label.bysame "bysame" = + {"\bysame "} + { bst.author.pre author remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors.alt} +{ editor empty$ + { "" } + { extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre editor remove.ss.period.auth * } + if$ + editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +%%% format.in.ed.booktitle +FUNCTION {format.editors.x} +{ editor empty$ + { "" } + { bst.editor.btitle.order #0 = + { "" } + { editor num.names$ #1 > + { " edited by " } + { " edited by " } +% { bst.editors " by " * } +% { bst.editor " by " * } + if$ + } + if$ + editor format.names.ed * + bst.editor.btitle.order #0 = + { editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + { "" * } + if$ + } + if$ +} + +%%% Remove commas in the cases like "?." and "?,". +FUNCTION {remove.irrelevant.period.comma} +{ 's := + s empty$ + { "" } + { s #-1 #3 substring$ "?,'" = + s #-1 #3 substring$ "?.'" = or + { s #-3 global.max$ substring$ "'" * } + { s #-1 #4 substring$ "?,''" = + s #-1 #4 substring$ "?.''" = or + { s #-4 global.max$ substring$ "''" * } + { s #-1 #2 substring$ "?," = + s #-1 #2 substring$ "?." = or + { s #-2 global.max$ substring$ "" * } + { s #-1 #3 substring$ "?,~" = + s #-1 #3 substring$ "?.~" = or + { s #-4 global.max$ substring$ "?~" * } + 's + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% title +FUNCTION {format.title.sub} +{ bst.title.lower.case #0 = + { bst.title.pre title * bst.title.post * } + { bst.title.pre title "t" change.case$ * bst.title.post * } + if$ +} + +%%% title +FUNCTION {format.title} +{ title empty$ + bst.hide.title #0 = not or + { "" } + { format.title.sub remove.irrelevant.period.comma } + if$ +} + +%%% title for misc. +FUNCTION {format.misc.title} +{ title empty$ + { "" } + { bst.title.pre title * bst.title.post * } + if$ +} + +% Convert "-" to "--" (for pages field) +FUNCTION {n.dashify} +{ 't := + "" + %% while$ + { 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$ +} + +%%% year +FUNCTION {format.year} +{ year empty$ + { "there's no year in " cite$ * warning$ + ", " } + { type$ "article" = + { bst.year.pre year * extra.label * bst.year.post * } + { bst.year.na.pre year * extra.label * bst.year.na.post * } + if$ + } + if$ +} + +%%% page for book +FUNCTION {format.book.pages} +{ pages empty$ + { "" } + { bst.pages.pre pages * bst.pages.post * } + if$ +} + +%%% Attach tie for the string with two or less characters. +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$ +} + +%%% volume for book +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bst.volume.pre volume * bst.volume.post * + series empty$ + 'skip$ + %% If there is series field + { " of " * series * bst.series.post * } + if$ +% "volume and number" number either.or.check + } + if$ +} + +%%% series +FUNCTION {output.series} +{ series empty$ + { "" } + { bst.series.pre series * bst.series.post * } + if$ +} + +%%% number and series +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + bst.hide.month #0 = not or + % number is empty + { series empty$ + { "" } + % series is not empty. + { output.series } + if$ + } + % number is not empty$ + { series empty$ + { bst.number.pre number * bst.number.post * } + % series is not empty. + { bst.in bst.series.pre * series * bst.series.post * + bst.number.pre * number * bst.number.post * } + if$ + } + if$ + } + { "" } + if$ +} + +%%% Number or not. +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% edition + +% Convert edition to 1st, 2nd, 3rd, 4th etc +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bst.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bst.st * } + { duplicate$ "2" = + { pop$ bst.nd * } + { "3" = + { bst.rd * } + { bst.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% Convert first, second etc in edition field to 1st, 2nd (from jfm.bst) +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bst.first } + { s "second" = s "2" = or + { bst.second } + { s "third" = s "3" = or + { bst.third } + { s "fourth" = s "4" = or + { bst.fourth } + { s "fifth" = s "5" = or + { bst.fifth } + { s #1 #1 substring$ is.num + { s eng.ord } + { edition } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% edition +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { bst.edition.pre convert.edition "l" change.case$ * bst.edition.post * } + { bst.edition.pre convert.edition "t" change.case$ * bst.edition.post * } + if$ + } + if$ +} + +%%% month +FUNCTION {format.month} +{ month empty$ + bst.hide.month #0 = not or + { "" } + { bst.month.pre month * bst.month.post * } + if$ +} + +%%% year and month +FUNCTION {format.date} +{ format.month format.year * +} + +%%% Is multiple pages like 1-100? +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 +} + +%%% pages +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { bst.pages.pre pages n.dashify tie.or.space.connect * bst.pages.post } + { bst.page.pre pages tie.or.space.connect * bst.page.post } + if$ + } + if$ +} + +%%% number +FUNCTION {format.number} +{ number empty$ + bst.hide.number #0 = not or + { "" } + { bst.number.pre number * bst.number.post * } + if$ +} + +%%% volume +FUNCTION {format.volume} +{ volume empty$ + 'skip$ + { bst.volume.pre volume * bst.volume.post * + bst.year.position #3 = + { format.year * } + 'skip$ + if$ + } + if$ +} + +%%% number, page +FUNCTION {format.number.pages} +{ number empty$ + { format.pages } + { format.number format.pages * } + if$ +} + +%%% volume, page +FUNCTION {format.volume.pages} +{ volume empty$ + { format.pages } + { format.volume format.pages * } + if$ +} + +%%% volume, number, page +FUNCTION {format.volume.number.pages} +{ volume empty$ + { number empty$ + { format.pages } + { format.number format.pages * } + if$ + } + { number empty$ + { format.volume format.pages * } + { format.volume format.number * format.pages * } + if$ + } + if$ +} + +% volume, number, page +FUNCTION {format.vol.num.pages} +{ volume empty$ + %% volume is empty. + { number empty$ + %% number is empty. + { pages empty$ + % warning + { "there is no volume, number, and pages in " cite$ * warning$ "" } + { "" format.pages * } + if$ + } + %% number is not empty. + % warning + { "there's a number but no volume in " cite$ * warning$ + format.number.pages } + if$ + } + %% volume is not empty. + { number empty$ + %% number is empty. + { format.volume.pages } + %% number is not empty. + { format.volume.number.pages } + if$ + } + if$ +} + +%%% chapter +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { type empty$ + { bst.chapter.pre chapter tie.or.space.connect * bst.chapter.post } + { ", " * type " " * chapter * } + if$ + } + if$ +} + +%%% chapter, pages +FUNCTION {format.chapter.pages} +{ chapter empty$ + { pages empty$ + { "" } + { "" format.pages * } + if$ + } + { pages empty$ + { "" format.chapter * } + { "" format.chapter * format.pages * } + if$ + } + if$ +} + +%%% editor and booktitle +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { bst.in format.btitle * } + { bst.editor.btitle.order #0 = + { bst.in format.editors.x * " " * format.btitle * } + { bst.in format.btitle * " " * format.editors.x * } + if$ + } + if$ + } + if$ +} + +%%% howpublished +FUNCTION {format.howpublished} +{ howpublished empty$ + { "" } + { bst.howpublished.pre howpublished * bst.howpublished.post * } + if$ +} + +%%% address +FUNCTION {format.address} +{ address empty$ + { "" } + { bst.address.pre address * bst.address.post * } + if$ +} + +%%% publisher +FUNCTION {format.publisher} +{ publisher empty$ + { "" } + { bst.publisher.pre publisher * bst.publisher.post * } + if$ +} + +%%% organization +FUNCTION {format.organization} +{ organization empty$ + { "" } + { bst.organization.pre organization * bst.organization.post * } + if$ +} + +%% publisher and address +FUNCTION {output.publisher.address} +{ address empty$ + { format.publisher "publisher" output.check.nocomma } + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ +} + +%% address, organization, publisher +FUNCTION {output.address.organization.publisher} +{ address empty$ + %% address is empty + { organization empty$ + %% organization is empty + { publisher empty$ + 'skip$ + { format.publisher "publisher" output.check.nocomma } + if$ + } + %% organization is not empty + { publisher empty$ + { format.organization "organization" output.check.nocomma } + { format.organization "organization" output.check.nocomma + format.publisher "publisher" output.check.nocomma } + if$ + } + if$ + } + %% address is not empty + { organization empty$ + %% organization is empty + { publisher empty$ + %% publisher is empty + { format.address output.nocomma } + %% publisher is not empty + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + %% organization is not empty + { publisher empty$ + %% publisher is empty + { format.organization "organization" output.check.nocomma + format.address output.nocomma } + %% publisher is not empty + { format.organization "organization" output.check.nocomma + bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% misc +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 * } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bst.techrep } + { " " type * } + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +%%% phdthesis +FUNCTION {format.phd} +{ bst.phdthesis } + +%%% mastersthesis +FUNCTION {format.mthesis} +{ bst.mthesis } + +%%% school +FUNCTION {format.school} +{ school empty$ + { "" } + { bst.school.pre school * bst.school.post * } + if$ +} + +%%% institution +FUNCTION {format.institution} +{ institution empty$ + { "" } + { bst.institution.pre institution * bst.institution.post * } + if$ +} + +%%% remove first ? characters. +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.note} +{ note empty$ + { "" } + { bst.note.pre note * bst.note.post * } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \havarditem + +FUNCTION {output.bibitem} +{ newline$ + "\harvarditem[" write$ + alabel write$ % alabel <- abbreviated citation + "]{" write$ + flabel write$ % flabel <- full citation + "}{" write$ + cyear write$ + % cyear = year + "}{" write$ + cite$ write$ % cite$ -> pusch keyword + "}" write$ + % If number index is on + bst.use.number.index #0 = + 'skip$ + { index #1 + 'index := + "" 'preone := + "" 'preten := + bst.number.index.digit "1" = + 'skip$ + { bst.number.index.digit "2" = + { "\hskip0.5em" 'preone := } + { bst.number.index.digit "3" = + { "\hskip1em" 'preone := + "\hskip0.5em" 'preten := } + 'skip$ + if$ + } + if$ + } + if$ + } + if$ + newline$ + before.all 'output.state := + "" + % number index + bst.use.number.index #0 = + 'skip$ + { index #10 < + % Insert spaces according to digit of number index. + { preone } + { index #100 < + { preten } + { "" } + if$ + } + if$ + bst.number.index.pre * index int.to.str$ * bst.number.index.post * write$ + } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% article + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.journal "journal" output.check.nocomma + bst.year.position #2 = + { format.date output.nocomma } + 'skip$ + if$ + format.vol.num.pages output.nocomma + + bst.year.position #1 = + { format.date output.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% book + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + + format.bvolume output.nocomma + format.number.series output.nocomma + output.publisher.address + + format.edition output.nocomma + format.book.pages output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booklet + +FUNCTION {booklet} +{ output.bibitem + format.authors output.nocomma + format.year output.nocomma + format.misc.title "title" output.check.nocomma + format.howpublished output.nocomma + format.address output.nocomma + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inbook + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ +% format.book remove.pre.comma "title" output.check.nocomma + format.book "title" output.check.nocomma + format.edition output.nocomma + + format.bvolume output.nocomma + format.chapter.pages "chapter and pages" output.check.nocomma + format.number.series output.nocomma + output.publisher.address + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% incollection + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + % For JPE, 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 } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inproceedings + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + format.pages output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% conference + +FUNCTION {conference} +{ inproceedings } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% manual +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull.nocomma + address output.nocomma + } + if$ + } + { format.authors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + author empty$ + { organization empty$ + { format.address new.block.check + format.address output.nocomma + } + 'skip$ + if$ + } + { output.address.organization.publisher } + if$ + format.edition output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% mastersthesis + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.mthesis format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% misc + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Online + +FUNCTION {online} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% phdthesis + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + format.phd + format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + address empty$ + 'skip$ + { format.address output.nocomma } + if$ + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% proceedings + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output.nocomma } + { format.editors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.btitle remove.pre.comma "title" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% techreport + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.tr.number output.nonnull.nocomma + format.institution "institution" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% unpublished + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + bst.year.position #0 = not + { format.date remove.pre.comma output.nocomma } + { month empty$ + 'skip$ + { format.month remove.pre.comma output.nocomma } + if$ + } + if$ + + format.url.doi output.nocomma + + format.note "note" output.check.nocomma + fin.entry +} + +FUNCTION {default.type} +{ misc } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Alias for month names: + +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"} + +%%% Read entries: +READ + +%%% Variable for remembering the order of citation. +INTEGERS { order.num } +FUNCTION {initialize.order.num} +{ + #1 'order.num := +} +%%% Initialize a variables +EXECUTE {initialize.order.num} + +%%% Variable for remembering the order of citation. +FUNCTION {set.order.cited} +{ + order.num 'order.cited := + #1 order.num + 'order.num := +} +%%% Iterate for all entries: +ITERATE {set.order.cited} + +%%% check the value of nameorder field. +FUNCTION {set.nameorder} +{ nameorder empty$ + { "" 'nameorder.temp := } + { nameorder 'nameorder.temp := } + if$ +} +%%% Iterate for all entries: +ITERATE {set.nameorder} + +%%% Remove symbols and convert to lowercase. +FUNCTION {sortify} +{ purify$ "l" change.case$ } + +%%% names for sorting +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { ", " * } + 'skip$ + if$ + s nameptr "{ll}{ f}{ j}" format.name$ 't := + nameptr numnames = t "others" = and + { bst.and.others.output *} + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + { s sort.format.names } + { s #1 "{ll}{ f}{ j}" format.name$ " zz " * } + if$ +} + +%%% Label for full author name. +FUNCTION {format.lab.names.full} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.and.nameorder * t * } + { ", " * t * } + if$ + } + { t "others" = + { bst.and.others.output * } + { numnames #2 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.ands * t * } + if$ + } + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.and * t * } + if$ + } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #1 > #1 #2 = and {", eds" *} {} if$ + numnames #1 = #1 #2 = and {", ed" *} {} if$ +} + +%%% laberl for abbreviated author name. +FUNCTION {format.lab.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + % if the number of authors is less than bst.and.others.num, full name. + { s format.lab.names.full } + % if the number of authors is equal or more than bst.and.others.num, abbreviated name. + { s #1 "{ll}" format.name$ bst.and.others.output * } + if$ +} + +%%% abbreviated author +FUNCTION {author.key.label.abb} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.key.label.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {format.names.full.wo.and} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}{, ff}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { " " * t * } + { t "others" = + { " " * } + { numnames #2 > + { " " * t * } + { " " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.full.wo.and} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {author.editor.key.full.wo.and} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.names.full.wo.and } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {editor.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +FUNCTION {author.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +%%% abbreviated author +FUNCTION {author.editor.key.label.abb} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.abb } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.editor.key.label.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.full } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {author.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {author.key.organization.label.abb} +{ 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.abb } + if$ +} + +FUNCTION {editor.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {editor.key.organization.label.abb} +{ 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.abb } + if$ +} + +%%% Convert numbers: 0->9, 1->8, 2->7,..., 9->0 +FUNCTION {reverse.num} +{ 's := + s "1" = + { "8" 'year.num := } + { s "2" = + { "7" 'year.num := } + { s "3" = + { "6" 'year.num := } + { s "4" = + { "5" 'year.num := } + { s "5" = + { "4" 'year.num := } + { s "6" = + { "3" 'year.num := } + { s "7" = + { "2" 'year.num := } + { s "8" = + { "1" 'year.num := } + { s "9" = + { "0" 'year.num := } + { s "0" = + { "9" 'year.num := } + { "9" 'year.num := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + year.num +} + +%%% Convert year (large number -> small number) +FUNCTION {convert.year} +{ 't := + bst.reverse.year #0 = + { t 'tt := } + { t #1 #1 substring$ reverse.num + t #2 #1 substring$ reverse.num * + t #3 #1 substring$ reverse.num * + t #4 #1 substring$ reverse.num * 'tt := } + if$ + tt +} + +%%% cyear +FUNCTION {calc.cyear} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full.wo.and + { type$ "proceedings" = + 'editor.key.organization.key.full.wo.and + { type$ "manual" = + 'author.key.organization.key.full.wo.and + 'author.key.full.wo.and + if$ + } + if$ + } + if$ + duplicate$ + year empty$ + { "2199" 'cyear := } + { year 'cyear := } + if$ + year empty$ + { " " "2199" convert.year * field.or.null * } + { " " year convert.year * field.or.null * } + if$ + sortify 'sort.label := + % For debug + econ.debug #0 = not + { "sort.label = ``\texttt{" write$ + sort.label write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ + pop$ +} + +FUNCTION {calc.sort.label.abb} +{ author empty$ + { editor empty$ + { "" } + { editor 's := } + if$ + } + { author 's := } + if$ + s sort.format.names.abb 't := + year empty$ + { t sortify " " * "2199" convert.year * 'sort.label.abb := } + { t sortify " " * year convert.year * 'sort.label.abb := } + if$ + econ.debug #0 = not + { "sort.label.abb = ``\texttt{" write$ + sort.label.abb write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% flabel +FUNCTION {calc.flabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.full + { type$ "proceedings" = + 'editor.key.organization.label.full + { type$ "manual" = + 'author.key.organization.label.full + 'author.key.label.full + if$ + } + if$ + } + 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$ + flabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% alabel +FUNCTION {calc.alabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.abb + { type$ "proceedings" = + 'editor.key.organization.label.abb + { type$ "manual" = + 'author.key.organization.label.abb + 'author.key.label.abb + if$ + } + if$ + } + if$ + 'alabel := + % For debug + econ.debug #0 = not + { "alabel = ``\texttt{" write$ + alabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% title for sorting +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +%%% author for sorting +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +%%% editor for sorting +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$ +} + +%%% 1,...,9 -> 001,...,009 +%%% 10,...,99 -> 010,...,099 +FUNCTION {add.zero.to.number} +{ 's := + s text.length$ #1 = + { "00" s * } + { s text.length$ #2 = + { "0" s * } + { s } + if$ + } + if$ +} + +%% entry type +FUNCTION {bst.sort.entry.type.order} +{ 'item.type := + item.type "article" = + { "01" } + { item.type "book" = + { "02" } + { item.type "booklet" = + { "03" } + { item.type "comment" = + { "04" } + { item.type "conference" = + { "05" } + { item.type "inbook" = + { "06" } + { item.type "incollection" = + { "07" } + { item.type "inproceedings" = + { "08" } + { item.type "manual" = + { "09" } + { item.type "masterthesis" = + { "10" } + { item.type "misc" = + { "11" } + { item.type "phdthesis" = + { "12" } + { item.type "proceedings" = + { "13" } + { item.type "techreport" = + { "14" } + { item.type "unpublished" = + { "15" } + { "16" } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% Create sort.key$: absorder -> author -> year -> order -> month -> title. +FUNCTION {presort.one} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * + sort.label.abb * + " " * + type$ "book" = type$ "inbook" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + * " " * + " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +FUNCTION {presort.two} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * sort.label * " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% Codes for debugging +FUNCTION {calc.alabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.alabel: alabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {calc.flabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.flabel: flabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {presort.one.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (1st time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {presort.two.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (2nd time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.cyear.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.cyear: sort.label = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.sort.label.abb.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.sort.label.abb: sort.label.abb = }\\" write$ + newline$ } + 'skip$ + if$ +} + +%%% alabel +EXECUTE {calc.alabel.mess} +ITERATE {calc.alabel} + +%%% flabel +EXECUTE {calc.flabel.mess} +ITERATE {calc.flabel} + +%%% cyear and sort.label +EXECUTE {calc.cyear.mess} +ITERATE {calc.cyear} + +%%% +EXECUTE {calc.sort.label.abb.mess} +ITERATE {calc.sort.label.abb} + +%%% Sorting by $sort.key (first time) +% +% Sorting is done in two times. This is the first time. +% +EXECUTE {presort.one.mess} +ITERATE {presort.one} +SORT + +FUNCTION {forward.pass} +{ bst.use.bysame #0 = bst.use.bysame #2 = or + % Not use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + } + % Use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + % format.names 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label empty$ not + { cyear extra.label * } + { cyear "" * } + if$ + "" field.or.null * + 'cyear := + extra.label 'next.extra := +} + +%%% \bysame +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +%%% Sorting by sort.key$ (second time) +EXECUTE {presort.two.mess} +ITERATE {presort.two} +SORT + +FUNCTION {reset.prev.author} +{ "xxyyzz" 'prev.author := } + +EXECUTE {reset.prev.author} + +FUNCTION {forward.pass.two} +{ bst.use.bysame #1 = + { author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + 'skip$ + if$ +} + +ITERATE {forward.pass.two} + +FUNCTION{punctuation} +{ + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" write$ newline$ + "% This bbl file is created by " econ.file * " ver." * econ.version * write$ newline$ + "% The latest " econ.file * " is available at " * write$ newline$ + "% " write$ newline$ newline$ +} + +EXECUTE {punctuation} + +FUNCTION {begin.bib} +{ + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + bst.use.bysame #0 = + % Not use \bysame. + 'skip$ + % Use \bysame. + { "%%% Definition of \bysame" write$ newline$ + "\ifx\undefined\bysame" write$ newline$ + "\newcommand{\bysame}{" bst.bysame.definition * "}" * + write$ newline$ + "\fi" write$ newline$ newline$ } + if$ + %% When number index is attached to the beginning of each item. + bst.use.number.index #0 = + 'skip$ + { bst.number.index.digit "1" = + % one digit. + { bst.number.index.bibhang.one } + { bst.number.index.digit "2" = + % two digits. + { bst.number.index.bibhang.ten } + % three or more digits. + { bst.number.index.bibhang.hund } + if$ + } + if$ + 'hang := + "%%% Redefinition of \bibhang" write$ newline$ + "\ifx\undefined\bibhang" write$ newline$ + "\relax" write$ newline$ + "\else" write$ newline$ + "\setlength{\bibhang}{" + hang * "}" * write$ newline$ + "\fi" write$ newline$ newline$ + } + if$ + "\begin{thebibliography}{xxx}" write$ newline$ + + %% Initialize the variable `index'. + #0 'index := +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +EXECUTE {end.bib} + +% -------------------- +% Local Variables: +% fill-column: 78 +% mode: bst +% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf new file mode 100644 index 0000000000..0f5e899d60 Binary files /dev/null and b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex new file mode 100644 index 0000000000..373181586b --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex @@ -0,0 +1,56 @@ +%#!pdflatex +%#BIBTEX bibtex econ-jpe + +%############################## Main ################################# +\documentclass[10pt]{article} + +%% Use natbib.sty +\usepackage{natbib} +\usepackage{newtxtext,newtxmath} +\usepackage{url} +\usepackage{graphicx} +\usepackage{color} +\definecolor{MyBrown}{rgb}{0.3,0,0} +\definecolor{MyBlue}{rgb}{0,0,0.3} +\definecolor{MyRed}{rgb}{0.4,0,0.1} +\definecolor{MyGreen}{rgb}{0,0.4,0} +\usepackage[bookmarks=true,% +bookmarksnumbered=true,% +colorlinks=true,% +linkcolor=MyBlue,% +citecolor=MyRed,% +filecolor=MyBlue,% +urlcolor=MyGreen% +]{hyperref} + +\setlength{\topmargin}{-20pt} +\setlength{\textheight}{648pt} +\setlength{\oddsidemargin}{15pt} +\setlength{\textwidth}{440pt} + +%##################################################################### +%######################### Document Starts ########################### +%##################################################################### +\begin{document} + +This document uses ``\verb|econ-jpe.bst|''. The style like {\itshape Journal of +Polictical Economy}. + +\vspace{1em} + +\input{cited-part} +\nocite{*} + +%% bst file: +\bibliographystyle{econ-jpe} +\bibliography{../econ-example} + +\end{document} + +%##################################################################### +%######################### Document Ends ############################# +%##################################################################### +% -------------------- +% Local Variables: +% fill-column: 80 +% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.bst index 2e272ee2c3..b2cbcd057e 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.bst +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.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:07 st> -% Version: 2.5 +% Version: 2.7 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -38,7 +37,10 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "2.5" } +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "econ.bst" } % Debug mode. Non-zero makes debug mode on. FUNCTION {econ.debug} @@ -61,7 +63,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 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -312,7 +314,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). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -415,6 +421,15 @@ 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: @@ -455,7 +470,7 @@ FUNCTION {bst.edition.post} % The string before volume: % FUNCTION {bst.volume.pre} -{ ", Vol. " } % (default) +{ ", " } % (default) % The string after volume: % @@ -469,18 +484,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 @@ -496,12 +511,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): % @@ -649,7 +664,7 @@ FUNCTION {bst.show.url} % The string before url: % FUNCTION {bst.url.pre} -{ ", URL: \url{" } % (default) +{ ", \url{" } % (default) % The string after url: % @@ -684,12 +699,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. % @@ -698,9 +713,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: @@ -716,7 +731,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: % @@ -1059,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$ } @@ -1139,56 +1180,62 @@ 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 = + % 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 - { 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 * } + { 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$ @@ -1915,7 +1962,7 @@ FUNCTION {format.thesis.type} FUNCTION {format.tr.number} { type empty$ - { "Technical Report" } + { bst.techrep } { " " type * } if$ number empty$ @@ -2152,9 +2199,9 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - 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 } @@ -2399,6 +2446,8 @@ FUNCTION {techreport} 'skip$ if$ + format.url.doi output.nocomma + format.note output.nocomma fin.entry } @@ -2911,6 +2960,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$ @@ -3449,10 +3507,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$ - "% " 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$ + "% " write$ newline$ newline$ } EXECUTE {punctuation} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf index b85f9c19ac..a3e0803fb6 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex index 48134687aa..65581ff0b9 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex @@ -6,7 +6,7 @@ %% Use natbib.sty \usepackage{natbib} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf index e8c9e567df..0419bf76e4 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex index c071bf5e52..db2f9821c4 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex @@ -6,7 +6,7 @@ %% Use natbib.sty \usepackage[numbers]{natbib} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-old.bst b/biblio/bibtex/contrib/econ-bst/customization/econ-old.bst new file mode 100644 index 0000000000..e16c585fff --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-old.bst @@ -0,0 +1,3579 @@ +%% econ.bst: BibTeX style file for papers in economics. +% +% Author: Shiro Takeda +% Maintainer: Shiro Takeda +% Copyright (C) 2001-2018 Shiro Takeda +% First-written: <2007/07/28> +% Version: 2.7 +% Keywords: TeX, BibTeX, bst +% URL: https://github.com/ShiroTakeda/econ-bst + +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% 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). + +% Bug reports, requests and suggestions are welcome. + +% For changelogs, see CHANGES.txt file. + +% version number +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "econ.bst" } + +% Debug mode. Non-zero makes debug mode on. +FUNCTION {econ.debug} +{ #0 } % Debug mode off (default). +% { #1 } % Debug mode on. + +ENTRY + %%% Declaration of field + { access address author booktitle chapter doi edition editor howpublished + institution journal key month note number organization pages publisher + school series title type url volume year + % Fields specific to econ.bst + order absorder nameorder + } + + % Definition of entry variable. The entry variable is a variable which has + % different values according to different entries. + %% Integer entry variable: + { order.cited } + + %% String entry variable + { label cyear flabel alabel extra.label sort.label sort.label.abb + extra.label.bysame nameorder.temp jname } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Use \bysame or not. +% +% If set to #0, \bysame is not used. +% If set to #1, \bysame is used +% If set to #2, \bysame is used (alternative abbreviation style). +% +% Note that integer number is expressed as # + integer in bst file. +% \bysame is the function that abbreviates succession of the same authors' name by ---. +% +% See econ-sample.pdf for details. +% +FUNCTION {bst.use.bysame} +% { #0 } % Not use \bysame +{ #1 } % -> Use \bysame (default) +% { #2 } % -> Use \bysame of alternative style. + +% The definition of \bysame command. +% +FUNCTION {bst.bysame.definition} +{ "\hskip.3em \leavevmode\rule[.5ex]{3em}{.3pt}\hskip0.5em" } % (default) +% { "\leavevmode\hbox to\leftmargin{\hrulefill\,\,}" } % If you set #2 to bst.use.bysame, use this. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% The order of fist and last name. +% +FUNCTION {bst.author.name} +{ #0 } % (default) +% { #1 } +% { #2 } + +% Case of #0: First author -> last-first, other authors -> first-last. +% Fujita, Masahisa, Paul R. Krugman, and Anthony J. Venables. + +% Case of #1: All authors -> last-first +% Fujita, Masahisa, Krugman, Paul R., and Venables, Anthony J. + +% Case of #2: All authors -> first-last +% Masahisa Fujita, Paul R. Krugman, and Anthony J. Venables. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Abbreviate first name of authors (editors): +% +FUNCTION {bst.first.name.initial} +{ #0 } % #0 -> full letters (default). +% { #1 } % Non-zero -> initial letter only. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Decapitalize of strings in title field. +% +FUNCTION {bst.title.lower.case} +{ #0 } % If #0, not decapitalize title (default). +% { #1 } % If non-#0, decapitalize title + +% Hide title filed. +% +FUNCTION {bst.hide.title} +{ #0 } % #0 -> Title field is displayed (default) +% { #1 } % Non-zer -> Title field is hidden + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide month. +% +FUNCTION {bst.hide.month} +{ #0 } % #0 -> show month field (default). +% { #1 } % non-#0 -> hide month field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Attach number index like plain.bst. +% +FUNCTION {bst.use.number.index} +{ #0 } % Not use number index (default). +% { #1 } % Non-#0 -> Use number index + +% The string before number index: +% +FUNCTION {bst.number.index.pre} +{ "[" } % (default) + +% The string after number index. Adjustment is recommended. +% +FUNCTION {bst.number.index.post} +{ "]\hskip1.0em " } % (default) + +% Maximum digit of number index: +% If the number of reference items >= 100, set 3 to this function. +% If the number of reference items < 100, set 2 to this function. +% If the number of reference items < 10, set 1 to this function. +% +FUNCTION {bst.number.index.digit} +{ "2" } % (default) +% { "3" } + +% The functions below are used to adjust space and postion. If you use fonts +% other than computer modern fonts, you had better make adjustments. +% +% Setting for bst.number.index.digit = 1: +FUNCTION {bst.number.index.bibhang.one} +{ "2.05em" } % (default) +% Setting for bst.number.index.digit = 2: +FUNCTION {bst.number.index.bibhang.ten} +{ "2.55em" } % (default) +% Setting for bst.number.index.digit = 3: +FUNCTION {bst.number.index.bibhang.hund} +{ "3.05em" } % (default). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Position of "year": +% +% You can choose the position of year by this function. +% +% If set to #0, year is placed right after "author". +% If set to non-zero, year is placed at the end (before note field) except for +% aritcle type entry. +% +% In article type entry, the position of year changes according to the +% following rule: +% +% #1 -> year is placed at the end. +% #2 -> year is placed after journal name in aritcle type entry. +% #3 -> year is placed after volume in aritcle type entry. +% +FUNCTION {bst.year.position} +{ #0 } % (default). +% { #1 } % Last place before note. +% { #2 } % After journal name for aticle type entry. +% { #3 } % After volume for aticle type entry. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If 0, references are sorted by old documents -> recent documents. If +% non-zero, reverse order. +FUNCTION {bst.reverse.year} +{ #0 } % Normal order (old -> recent) (default). +% { #1 } % inverse order (recent -> old) + +% If non-zero, sort references by using year field as the primary key +% (chronological sorting). +FUNCTION {bst.sort.year} +{ #0 } % Normal case: year is used as the sorting key next to author (default). +% { #1 } % year is used as the primary sorting key. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% If non-zero, references are listed in citation order. +% +FUNCTION {bst.no.sort} +{ #0 } % (default) +% { #1 } % listed in citation order. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Non-zero -> sort references by entry type (article, book, incollection etc.) +% +FUNCTION {bst.sort.entry.type} +{ #0 } % #0 -> Normal (not sort references by entry type) (default). +% { #1 } % Non-zero -> sort references by entry type. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use absorder field to sort items. Otherwise, ignore absorder field. +% +FUNCTION {bst.notuse.absorder.field} +{ #0 } % #0 -> Use absorder (default). +% { #1 } % Non-#0 -> Not use absorder. +% +% Order of priority to sort items +% +% absorder -> author -> year -> order -> month -> title +% +% wehre absorder and order fields are specific to econ.bst. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% 0 -> use order field to sort items. Otherwise, ignore order field. +% Note: order field is specific to econ.bst. +FUNCTION {bst.notuse.order.field} +{ #0 } % #0 -> Use order field (default). +% { #1 } % Non-#0 -> not use order field. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% and + +%%% String used to separate author names in references. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.and} +{ " and " } % (default) + +%%% String used to separate author names in references (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.ands} +{ ", and " } % (default) + +%%% String used to separate author names in citation part. +% +% String replaced with _ in "Mr. A _ Mr. B " +% +FUNCTION {bst.cite.and} +{ " and " } % (default) + +%%% String used to separate author names in citation part (more than two authors). +% +% String replaced with _ in "Mr. A, Mr. B _ Mr. C" +% +FUNCTION {bst.cite.ands} +{ " and " } % (default) + +%%% If you want to use random author order for some bibliography entries, set +% non-zero to this function. +% +FUNCTION {bst.use.nameorder} +{ #1 } % Use random order (default) +% { #0 } % Not use random order + +%%% String used to separate author names in references for the entry of random +% author order. +% +FUNCTION {bst.and.nameorder} +{ " \textcircled{r} " } % (default) + +%%% String used to separate author names in citation part for the entry of +% random author order +% +FUNCTION {bst.cite.and.nameorder} +{ " \textcircled{r} " } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Author names in the citation part are abbreviated by et al. if the number of +% 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). + +% 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). + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Strings used when abbreviating multiple-authors in citation part. +FUNCTION {bst.and.others} +{ " et~al." } % (default) + +% Strings used when abbreviating multiple-authors in citation part for entries +% with random author order. +FUNCTION {bst.and.others.nameorder} +{ " \textcircled{r}~al." } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% author + +% The string before author: +% +FUNCTION {bst.author.pre} +{ "" } % (default) + +% The string after author: +% +FUNCTION {bst.author.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% year + +% The string before year only for aritcle type entry. +% +FUNCTION {bst.year.pre} +{ " (" } % (default) + +% The string after year only for aritcle type entry. +% +FUNCTION {bst.year.post} +{ ") " } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.pre} +{ " (" } % (default) + +% The string after year for non-article type entry (book, incollection etc) +% +FUNCTION {bst.year.na.post} +{ ") " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% title (except for title in book) + +% The string before title: +% +FUNCTION {bst.title.pre} +{ "``" } % (default) + +% The string after title: +% +FUNCTION {bst.title.post} +{ ",''" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% tile for book: + +% The string before book title: +% +FUNCTION {bst.book.pre} +{ " \textit{" } % (default) + +% The string after book title: +% +FUNCTION {bst.book.post} +{ "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booktitle + +% The string before booktitle: +% +FUNCTION {bst.btitle.pre} +{ " \textit{" } % (default) + +% The string after booktitle: +% +FUNCTION {bst.btitle.post} +{ "}" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% journal name + +% The string before journal name: +% +FUNCTION {bst.journal.pre} +{ " \textit{" } % (default) + +% The string after journal name: +% +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) + +% The string that indicates single editor: +% +FUNCTION {bst.editor} +{ " ed. " } % (default) + +% Order of editor and booktitle in incollection and inproceedings entries. +% +% If set to #0: editors -> booktitle order +% If set to non-zero: booktitle -> editors order +% +FUNCTION {bst.editor.btitle.order} +{ #0 } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% edition + +% The string before edition: +% +FUNCTION {bst.edition.pre} +{ ", " } % (default) + +% The string after edition: +% +FUNCTION {bst.edition.post} +{ " edition" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% volume + +% The string before volume: +% +FUNCTION {bst.volume.pre} +{ ", Vol. " } + +% The string after volume: +% +FUNCTION {bst.volume.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% number + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Hide number. If non-zero, number is suppressed. +FUNCTION {bst.hide.number} +{ #0 } % #0 -> show number field (default) +% { #1 } % non-#0 -> Hide number field. + +% The string before number: +% +FUNCTION {bst.number.pre} +{ ", No. " } + +% The string after number: +% +FUNCTION {bst.number.post} +{ "" } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% in + +% In +% +FUNCTION {bst.in} +{ " in " } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% page + +% The string before page (multiple pages): +% +FUNCTION {bst.pages.pre} +{ ", pp." } + +% The string before page: +% +FUNCTION {bst.page.pre} +{ ", p." } + +% The string after page (multiple pages): +% +FUNCTION {bst.pages.post} +{ "" } % (default) + +% The string after page: +% +FUNCTION {bst.page.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% chapter + +% The string before chapter: +% +FUNCTION {bst.chapter.pre} +{ ", Chap." } % (default) + +% The string after chapter: +% +FUNCTION {bst.chapter.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% month + +% The string before month: +% +FUNCTION {bst.month.pre} +{ ", " } % (default) + +% The string after month: +% +FUNCTION {bst.month.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% address +% The string before address: +% +FUNCTION {bst.address.pre} +{ ", " } % (default) + +% The string after address: +% +FUNCTION {bst.address.post} +{ "" } % (default) + +% You can choose the order of address and publisher by this function. +% +% If #0, address -> publisher order (the default value). +% If non-zero, publisher -> address order. + +FUNCTION {bst.address.position} +{ #0 } % Address is placed before publisher (default) +% { #1 } % Address is placed after publisher + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% publisher + +% The string before publisher: +% +FUNCTION {bst.publisher.pre} +{ ": " } % (default) + +% The string after publisher: +% +FUNCTION {bst.publisher.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% series + +% The string before series: +% +FUNCTION {bst.series.pre} +{ ", " } % (default) + +% The string after series: +% +FUNCTION {bst.series.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% organization + +% The string before organization: +% +FUNCTION {bst.organization.pre} +{ ", " } % (default) + +% The string after organization: +% +FUNCTION {bst.organization.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% school + +% The string before school: +% +FUNCTION {bst.school.pre} +{ ", " } % (default) + +% The string after school: +% +FUNCTION {bst.school.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% institution + +% The string before institution: +% +FUNCTION {bst.institution.pre} +{ ", " } % (default) + +% The string after institution: +% +FUNCTION {bst.institution.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% howpublished + +% The string before howpublished: +% +FUNCTION {bst.howpublished.pre} +{ " " } % (default) + +% The string after howpublished: +% +FUNCTION {bst.howpublished.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% url + +% Show or Hide url. If non-zero, url is displayed. Otherwise, url is suppressed. +FUNCTION {bst.show.url} +{ #1 } % non-#0 -> Show url field (default) +% { #0 } % #0 -> Not show url field. + +% The string before url: +% +FUNCTION {bst.url.pre} +{ ", URL: \url{" } + +% The string after url: +% +FUNCTION {bst.url.post} +{ "}" } % (default) + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Access + +% This setting is valid only if there are "access" field in bib +% files. The value of access field indicates accessed date for URL. + +% The string before access. +FUNCTION {bst.access.pre} +{ ", accessed on " } % (default) + +% The string after access. +FUNCTION {bst.access.post} +{ "" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% DOI (digital object identifier) + +% This setting is valid only if there are "doi" field in bib files. + +% Show or Hide DOI. If non-zero, DOI is displayed. Otherwise, DOI is suppressed. +FUNCTION {bst.show.doi} +{ #1 } % non-#0 -> Show DOI field (default) +% { #0 } % #0 -> Not show DOI field. + +% The string before DOI: +% +FUNCTION {bst.doi.pre} +{ ", DOI: \href{http://dx.doi.org/" doi * "}{\urlstyle{rm} \nolinkurl{" * } + +% The string after DOI: +% +FUNCTION {bst.doi.post} +{ "}}" } % (default) + +% How to show URL and DOI fields when both fields exist. +% +% #0 -> Both fields are displayed +% #1 -> Only URL field is displayed +% #2 -> Only DOI field is displayed +% +FUNCTION {bst.url.doi} +% { #0 } % -> Both fields are displayed +% { #1 } % -> Only URL field is displayed +{ #2 } % (default) --> Only DOI field is displayed + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Other functions: + +% The string before note. +FUNCTION {bst.note.pre} +{ ", " } % (default) + +% The string after note. +FUNCTION {bst.note.post} +{ "" } % (default) + +% The string that represents Technical report: +% +FUNCTION {bst.techrep} +{ "Technical Report" } % (default) + +% The string that represents master thesis: +% +FUNCTION {bst.mthesis} +{ " Master's thesis" } % (default) + +% The string that represents phd thesis: +% +FUNCTION {bst.phdthesis} +{ " Ph.D. dissertation" } % (default) + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% Functions for customization end here: +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +FUNCTION {bst.first} +{ "1st" } + +FUNCTION {bst.second} +{ "2nd" } + +FUNCTION {bst.third} +{ "3rd" } + +FUNCTION {bst.fourth} +{ "4th" } + +FUNCTION {bst.fifth} +{ "5th" } + +FUNCTION {bst.st} +{ "st" } + +FUNCTION {bst.nd} +{ "nd" } + +FUNCTION {bst.rd} +{ "rd" } + +FUNCTION {bst.th} +{ "th" } + +%%%%% memo by Takeda + +% "a" 'b := indicates substituting string "a" for variable b. + +% Integer number #0, #1,... + +%%% Function definition: +% +% FUNCTION {name} +% { 's := +% +% } +% +% This is the definition of a function named "name". The function "name" is +% used in the following way +% +% "foo" name +% "foo" is an argument for the function "name". +% +% About the definition of a function with more than two arguments, see the +% definition of "chop.word". + +%%% Declaration of variables: + +%% String global variables: +STRINGS { s t tt } +STRINGS { year.num } +STRINGS { preone preten } +STRINGS { last.sort.label next.extra prev.author prev.author.aer this.author } +STRINGS { hang } +STRINGS { item.type } +STRINGS { tempa tempb } + +%% Integer global variables: +INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { multiresult } +INTEGERS { index } +INTEGERS { len } +INTEGERS { last.extra.num } +INTEGERS { output.state before.all mid.sentence after.sentence after.block } +INTEGERS { last.period.comma } +INTEGERS { len1.aer len2.aer i.aer } + +%%% Definition of functions: +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +%%% Initialize variables: +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +%%% Remove comma and add period: +% +%%% +FUNCTION {add.period.x} +{ duplicate$ + #-1 #1 substring$ "," = + { #-2 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ". " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ", " = + { #-3 global.max$ substring$ "." * } + { duplicate$ + #-1 #2 substring$ ",'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".'" = + { #-3 global.max$ substring$ ".'" * } + { duplicate$ + #-1 #2 substring$ ".~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #2 substring$ ",~" = + { #-3 global.max$ substring$ ".~" * } + { duplicate$ + #-1 #3 substring$ ",''" = + { #-4 global.max$ substring$ ".''" * } + { duplicate$ + #-1 #3 substring$ ".''" = + { #-4 global.max$ substring$ ".''" * } + { add.period$ } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {output.nonnull} +{ 's := + % mid.sentence + output.state mid.sentence = + { ", " * write$ } + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period.x " " * write$ } + if$ + } + if$ + % not mid.sentence, set to mid.sentence + mid.sentence 'output.state := + } + if$ + s +} + +%%% If the last character is period or comma, set non-zero to +%%% last.period.comma. +FUNCTION {period.comma.p} +{ duplicate$ 't := + t #-1 #1 substring$ "." = + t #-1 #1 substring$ "," = or + t #-1 #1 substring$ ":" = or + t #-1 #2 substring$ ".'" = or + t #-1 #2 substring$ ",'" = or + t #-1 #3 substring$ ".''" = or + t #-1 #3 substring$ ",''" = or + t #-1 #2 substring$ ".~" = or + t #-1 #2 substring$ ",~" = or + { #1 'last.period.comma := } + { #0 'last.period.comma := } + if$ +} + +%%% remove unnecessary comma. +FUNCTION {remove.pre.comma} +{ 's := + s empty$ + { "" } + { s #1 #1 substring$ "," = + { s #2 global.max$ substring$ } + { s #1 #1 substring$ "." = + { s #2 global.max$ substring$ } + 's + if$ + } + if$ + } + if$ +} + +%%% output.nonnull.nocomma is the same as output.nonnull except that it does +%%% not add commas even in mid.sentence. +FUNCTION {output.nonnull.nocomma} +{ 's := + output.state mid.sentence = + % mid.sentence + { period.comma.p "" * write$ } + + % not mid.sentence + { output.state after.block = + % after.block + { add.period.x " " * write$ } + % before.all + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + last.period.comma #0 = + { s } + { s remove.pre.comma } + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output} +% { duplicate$ empty$ +% 'pop$ +% 'output.nonnull +% if$ +% } + +FUNCTION {output.nocomma} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull.nocomma + if$ +} + +% Not used in the current econ.bst. +% FUNCTION {output.check} +% { 't := +% duplicate$ empty$ +% { pop$ "empty " t * " in " * cite$ * warning$ } +% 'output.nonnull +% if$ +% } + +FUNCTION {output.check.nocomma} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull.nocomma + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Format in bbl file: + +% \harvarditem[Brezis et~al.]{Brezis, Krugman and +% Tsiddon}{1993}{brezis93:_leapf_inter_compet} +% Brezis, Elise~S., Paul~R. Krugman, and Daniel Tsiddon (1993) ``Leapfrogging in +% International Competition: A Theory of Cycles in National Technological +% Leadership.'', {\em American Economic Review.}, Vol.~83. No.~5. pp. +% 1211--1219. + +% \harvarditem[abbreviated citation]{full citation}{year}{keyword} ... + +%%% Add period and newline. +FUNCTION {fin.entry} +{ add.period.x + 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 {new.block.check} +{ empty$ + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +%%% booktitle +FUNCTION {format.btitle} +{ booktitle empty$ + { "" } + { bst.btitle.pre booktitle * bst.btitle.post * } + 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 format.journal.name.abb * bst.journal.post * } + if$ +} + +%%% title for book +FUNCTION {format.book} +{ title empty$ + { "" } + { bst.book.pre title * bst.book.post * } + if$ +} + +FUNCTION {format.url} +{ url empty$ + { "" } + { type$ "online" = bst.show.url or + { bst.url.pre url * bst.url.post * + access empty$ + { "" * } + { bst.access.pre * access * bst.access.post * } + if$ + } + { "" } + if$ + } + if$ +} + +FUNCTION {format.doi} +{ doi empty$ bst.show.doi not or + { "" } + { bst.doi.pre doi * bst.doi.post * } + if$ +} + +FUNCTION {format.url.doi} +{ url empty$ + { format.doi } + { doi empty$ + { format.url } + { bst.url.doi #0 = + { format.url output.nocomma + format.doi } + { bst.url.doi #1 = + { format.url } + { format.doi } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% and others +FUNCTION {bst.and.others.output} +{ nameorder.temp "random" = + bst.use.nameorder #0 = not and + { bst.and.others.nameorder } + { bst.and.others } + if$ +} + +%%% author and editor + +%%% name +FUNCTION {format.names} +{ '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$ + } + 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$ +} + +% remove successive periods (commas) from author +FUNCTION {remove.ss.period.auth} +{ 's := + s format.names 'tempa := + bst.author.post 'tempb := + tempb #1 #1 substring$ "}" = + { tempa tempb * } + { tempa #-1 #1 substring$ tempb #1 #1 substring$ = + { tempa tempb #2 global.max$ substring$ * } + { tempa tempb * } + if$ + } + if$ +} + +% compare.names +FUNCTION {compare.names.aer} +{ 's := + 'tempa := + +% "current.author = " s * "\\" * write$ newline$ +% "prev.author = " tempa * "\\" * write$ newline$ + + tempa num.names$ 'len1.aer := % len1 = the number of previous authors + s num.names$ 'len2.aer := % len2 = the number of current authors + +% len1.aer := min(len1.aer,len2.aer) +% len1 -> min{ the number of previous authors, the number of current authors } + len1.aer len2.aer > + { len2.aer 'len1.aer := } + { } + if$ + +% start with an empty string, then while the components are the same +% add "\bysame" + "" + #1 'i.aer := + + { i.aer len1.aer > not } + { tempa i.aer "{ff }{vv }{ll}{ jj}" format.name$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ + = + { #1 i.aer < + { " and " * } % \bysame で省略する著者の前につく and + { } + if$ + "\bysame{}" * + i.aer #1 + 'i.aer := } + { #-1 'len1.aer := } + if$ + } + while$ + +% add the rest of the second string + { i.aer len2.aer > not } + { #1 i.aer < + { " and " * } + { } + if$ + s i.aer "{ff }{vv }{ll}{ jj}" format.name$ * + i.aer #1 + 'i.aer := + } + while$ +} + +%%% author +FUNCTION {format.authors} +{ author empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer author compare.names.aer 's := + author 'prev.author.aer := } + { author 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors} +{ editor empty$ + { "" } + { bst.use.bysame #2 = + { prev.author.aer editor compare.names.aer 's := + editor 'prev.author.aer := } + { editor 's := } + if$ + extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre s remove.ss.period.auth * } + if$ + s num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +FUNCTION {format.authors.alt} +{ author empty$ + { "" } + { extra.label.bysame "bysame" = + {"\bysame "} + { bst.author.pre author remove.ss.period.auth * } + if$ + } + if$ +} + +%%% editor +FUNCTION {format.editors.alt} +{ editor empty$ + { "" } + { extra.label.bysame "bysame" = + { "\bysame " } + { bst.author.pre editor remove.ss.period.auth * } + if$ + editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + if$ +} + +%%% format.in.ed.booktitle +FUNCTION {format.editors.x} +{ editor empty$ + { "" } + { bst.editor.btitle.order #0 = + { "" } + { editor num.names$ #1 > + { bst.editors " by " * } + { bst.editor " by " * } + if$ + } + if$ + editor format.names * + bst.editor.btitle.order #0 = + { editor num.names$ #1 > + { bst.editors * } + { bst.editor * } + if$ + } + { "" * } + if$ + } + if$ +} + +%%% Remove commas in the cases like "?." and "?,". +FUNCTION {remove.irrelevant.period.comma} +{ 's := + s empty$ + { "" } + { s #-1 #3 substring$ "?,'" = + s #-1 #3 substring$ "?.'" = or + { s #-3 global.max$ substring$ "'" * } + { s #-1 #4 substring$ "?,''" = + s #-1 #4 substring$ "?.''" = or + { s #-4 global.max$ substring$ "''" * } + { s #-1 #2 substring$ "?," = + s #-1 #2 substring$ "?." = or + { s #-2 global.max$ substring$ "" * } + { s #-1 #3 substring$ "?,~" = + s #-1 #3 substring$ "?.~" = or + { s #-4 global.max$ substring$ "?~" * } + 's + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% title +FUNCTION {format.title.sub} +{ bst.title.lower.case #0 = + { bst.title.pre title * bst.title.post * } + { bst.title.pre title "t" change.case$ * bst.title.post * } + if$ +} + +%%% title +FUNCTION {format.title} +{ title empty$ + bst.hide.title #0 = not or + { "" } + { format.title.sub remove.irrelevant.period.comma } + if$ +} + +%%% title for misc. +FUNCTION {format.misc.title} +{ title empty$ + { "" } + { bst.title.pre title * bst.title.post * } + if$ +} + +% Convert "-" to "--" (for pages field) +FUNCTION {n.dashify} +{ 't := + "" + %% while$ + { 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$ +} + +%%% year +FUNCTION {format.year} +{ year empty$ + { "there's no year in " cite$ * warning$ + ", " } + { type$ "article" = + { bst.year.pre year * extra.label * bst.year.post * } + { bst.year.na.pre year * extra.label * bst.year.na.post * } + if$ + } + if$ +} + +%%% page for book +FUNCTION {format.book.pages} +{ pages empty$ + { "" } + { bst.pages.pre pages * bst.pages.post * } + if$ +} + +%%% Attach tie for the string with two or less characters. +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$ +} + +%%% volume for book +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bst.volume.pre volume * bst.volume.post * + series empty$ + 'skip$ + %% If there is series field + { " of " * series * bst.series.post * } + if$ +% "volume and number" number either.or.check + } + if$ +} + +%%% series +FUNCTION {output.series} +{ series empty$ + { "" } + { bst.series.pre series * bst.series.post * } + if$ +} + +%%% number and series +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + bst.hide.month #0 = not or + % number is empty + { series empty$ + { "" } + % series is not empty. + { output.series } + if$ + } + % number is not empty$ + { series empty$ + { bst.number.pre number * bst.number.post * } + % series is not empty. + { bst.in bst.series.pre * series * bst.series.post * + bst.number.pre * number * bst.number.post * } + if$ + } + if$ + } + { "" } + if$ +} + +%%% Number or not. +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% edition + +% Convert edition to 1st, 2nd, 3rd, 4th etc +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bst.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bst.st * } + { duplicate$ "2" = + { pop$ bst.nd * } + { "3" = + { bst.rd * } + { bst.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +% Convert first, second etc in edition field to 1st, 2nd (from jfm.bst) +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bst.first } + { s "second" = s "2" = or + { bst.second } + { s "third" = s "3" = or + { bst.third } + { s "fourth" = s "4" = or + { bst.fourth } + { s "fifth" = s "5" = or + { bst.fifth } + { s #1 #1 substring$ is.num + { s eng.ord } + { edition } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% edition +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { bst.edition.pre convert.edition "l" change.case$ * bst.edition.post * } + { bst.edition.pre convert.edition "t" change.case$ * bst.edition.post * } + if$ + } + if$ +} + +%%% month +FUNCTION {format.month} +{ month empty$ + bst.hide.month #0 = not or + { "" } + { bst.month.pre month * bst.month.post * } + if$ +} + +%%% year and month +FUNCTION {format.date} +{ format.month format.year * +} + +%%% Is multiple pages like 1-100? +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 +} + +%%% pages +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check + { bst.pages.pre pages n.dashify tie.or.space.connect * bst.pages.post } + { bst.page.pre pages tie.or.space.connect * bst.page.post } + if$ + } + if$ +} + +%%% number +FUNCTION {format.number} +{ number empty$ + bst.hide.number #0 = not or + { "" } + { bst.number.pre number * bst.number.post * } + if$ +} + +%%% volume +FUNCTION {format.volume} +{ volume empty$ + 'skip$ + { bst.volume.pre volume * bst.volume.post * + bst.year.position #3 = + { format.year * } + 'skip$ + if$ + } + if$ +} + +%%% number, page +FUNCTION {format.number.pages} +{ number empty$ + { format.pages } + { format.number format.pages * } + if$ +} + +%%% volume, page +FUNCTION {format.volume.pages} +{ volume empty$ + { format.pages } + { format.volume format.pages * } + if$ +} + +%%% volume, number, page +FUNCTION {format.volume.number.pages} +{ volume empty$ + { number empty$ + { format.pages } + { format.number format.pages * } + if$ + } + { number empty$ + { format.volume format.pages * } + { format.volume format.number * format.pages * } + if$ + } + if$ +} + +% volume, number, page +FUNCTION {format.vol.num.pages} +{ volume empty$ + %% volume is empty. + { number empty$ + %% number is empty. + { pages empty$ + % warning + { "there is no volume, number, and pages in " cite$ * warning$ "" } + { "" format.pages * } + if$ + } + %% number is not empty. + % warning + { "there's a number but no volume in " cite$ * warning$ + format.number.pages } + if$ + } + %% volume is not empty. + { number empty$ + %% number is empty. + { format.volume.pages } + %% number is not empty. + { format.volume.number.pages } + if$ + } + if$ +} + +%%% chapter +FUNCTION {format.chapter} +{ chapter empty$ + { "" } + { type empty$ + { bst.chapter.pre chapter tie.or.space.connect * bst.chapter.post } + { ", " * type " " * chapter * } + if$ + } + if$ +} + +%%% chapter, pages +FUNCTION {format.chapter.pages} +{ chapter empty$ + { pages empty$ + { "" } + { "" format.pages * } + if$ + } + { pages empty$ + { "" format.chapter * } + { "" format.chapter * format.pages * } + if$ + } + if$ +} + +%%% editor and booktitle +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { bst.in format.btitle * } + { bst.editor.btitle.order #0 = + { bst.in format.editors.x * " " * format.btitle * } + { bst.in format.btitle * " " * format.editors.x * } + if$ + } + if$ + } + if$ +} + +%%% howpublished +FUNCTION {format.howpublished} +{ howpublished empty$ + { "" } + { bst.howpublished.pre howpublished * bst.howpublished.post * } + if$ +} + +%%% address +FUNCTION {format.address} +{ address empty$ + { "" } + { bst.address.pre address * bst.address.post * } + if$ +} + +%%% publisher +FUNCTION {format.publisher} +{ publisher empty$ + { "" } + { bst.publisher.pre publisher * bst.publisher.post * } + if$ +} + +%%% organization +FUNCTION {format.organization} +{ organization empty$ + { "" } + { bst.organization.pre organization * bst.organization.post * } + if$ +} + +%% publisher and address +FUNCTION {output.publisher.address} +{ address empty$ + { format.publisher "publisher" output.check.nocomma } + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ +} + +%% address, organization, publisher +FUNCTION {output.address.organization.publisher} +{ address empty$ + %% address is empty + { organization empty$ + %% organization is empty + { publisher empty$ + 'skip$ + { format.publisher "publisher" output.check.nocomma } + if$ + } + %% organization is not empty + { publisher empty$ + { format.organization "organization" output.check.nocomma } + { format.organization "organization" output.check.nocomma + format.publisher "publisher" output.check.nocomma } + if$ + } + if$ + } + %% address is not empty + { organization empty$ + %% organization is empty + { publisher empty$ + %% publisher is empty + { format.address output.nocomma } + %% publisher is not empty + { bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + %% organization is not empty + { publisher empty$ + %% publisher is empty + { format.organization "organization" output.check.nocomma + format.address output.nocomma } + %% publisher is not empty + { format.organization "organization" output.check.nocomma + bst.address.position #0 = + { format.address output.nocomma + format.publisher "publisher" output.check.nocomma } + { format.publisher "publisher" output.check.nocomma + format.address output.nocomma } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% misc +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 * } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bst.techrep } + { " " type * } + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +%%% phdthesis +FUNCTION {format.phd} +{ bst.phdthesis } + +%%% mastersthesis +FUNCTION {format.mthesis} +{ bst.mthesis } + +%%% school +FUNCTION {format.school} +{ school empty$ + { "" } + { bst.school.pre school * bst.school.post * } + if$ +} + +%%% institution +FUNCTION {format.institution} +{ institution empty$ + { "" } + { bst.institution.pre institution * bst.institution.post * } + if$ +} + +%%% remove first ? characters. +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {format.note} +{ note empty$ + { "" } + { bst.note.pre note * bst.note.post * } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% \havarditem + +FUNCTION {output.bibitem} +{ newline$ + "\harvarditem[" write$ + alabel write$ % alabel <- abbreviated citation + "]{" write$ + flabel write$ % flabel <- full citation + "}{" write$ + cyear write$ + % cyear = year + "}{" write$ + cite$ write$ % cite$ -> pusch keyword + "}" write$ + % If number index is on + bst.use.number.index #0 = + 'skip$ + { index #1 + 'index := + "" 'preone := + "" 'preten := + bst.number.index.digit "1" = + 'skip$ + { bst.number.index.digit "2" = + { "\hskip0.5em" 'preone := } + { bst.number.index.digit "3" = + { "\hskip1em" 'preone := + "\hskip0.5em" 'preten := } + 'skip$ + if$ + } + if$ + } + if$ + } + if$ + newline$ + before.all 'output.state := + "" + % number index + bst.use.number.index #0 = + 'skip$ + { index #10 < + % Insert spaces according to digit of number index. + { preone } + { index #100 < + { preten } + { "" } + if$ + } + if$ + bst.number.index.pre * index int.to.str$ * bst.number.index.post * write$ + } + if$ +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% article + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.journal "journal" output.check.nocomma + bst.year.position #2 = + { format.date output.nocomma } + 'skip$ + if$ + format.vol.num.pages output.nocomma + + bst.year.position #1 = + { format.date output.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% book + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + + format.bvolume output.nocomma + format.number.series output.nocomma + output.publisher.address + + format.edition output.nocomma + format.book.pages output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% booklet + +FUNCTION {booklet} +{ output.bibitem + format.authors output.nocomma + format.year output.nocomma + format.misc.title "title" output.check.nocomma + format.howpublished output.nocomma + format.address output.nocomma + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inbook + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check.nocomma } + { format.authors output.nonnull.nocomma + "author and editor" editor either.or.check + } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ +% format.book remove.pre.comma "title" output.check.nocomma + format.book "title" output.check.nocomma + format.edition output.nocomma + + format.bvolume output.nocomma + format.chapter.pages "chapter and pages" output.check.nocomma + format.number.series output.nocomma + output.publisher.address + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% incollection + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + format.edition output.nocomma + format.chapter.pages output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% inproceedings + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + format.in.ed.booktitle "booktitle" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + format.pages output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% conference + +FUNCTION {conference} +{ inproceedings } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% manual +FUNCTION {manual} +{ output.bibitem + author empty$ + { organization empty$ + 'skip$ + { organization output.nonnull.nocomma + address output.nocomma + } + if$ + } + { format.authors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + author empty$ + { organization empty$ + { format.address new.block.check + format.address output.nocomma + } + 'skip$ + if$ + } + { output.address.organization.publisher } + if$ + format.edition output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% mastersthesis + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.mthesis format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% misc + +FUNCTION {misc} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Online + +FUNCTION {online} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.misc.title output.nocomma + format.howpublished output.nocomma + + bst.year.position #0 = not + { format.date output.nocomma } + { format.month output.nocomma } + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry + empty.misc.check +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% phdthesis + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.book "title" output.check.nocomma + format.phd + format.thesis.type output.nonnull.nocomma + format.school "school" output.check.nocomma + address empty$ + 'skip$ + { format.address output.nocomma } + if$ + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% proceedings + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output.nocomma } + { format.editors output.nonnull.nocomma } + if$ + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.btitle remove.pre.comma "title" output.check.nocomma + format.bvolume output.nocomma + format.number.series output.nocomma + output.address.organization.publisher + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% techreport + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + format.tr.number output.nonnull.nocomma + format.institution "institution" output.check.nocomma + format.address output.nocomma + + bst.year.position #0 = not + { format.year "year" output.check.nocomma } + 'skip$ + if$ + + format.url.doi output.nocomma + + format.note output.nocomma + fin.entry +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% unpublished + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check.nocomma + bst.year.position #0 = + { format.year "year" output.check.nocomma } + 'skip$ + if$ + format.title "title" output.check.nocomma + + bst.year.position #0 = not + { format.date remove.pre.comma output.nocomma } + { month empty$ + 'skip$ + { format.month remove.pre.comma output.nocomma } + if$ + } + if$ + + format.url.doi output.nocomma + + format.note "note" output.check.nocomma + fin.entry +} + +FUNCTION {default.type} +{ misc } + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Alias for month names: + +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"} + +%%% Read entries: +READ + +%%% Variable for remembering the order of citation. +INTEGERS { order.num } +FUNCTION {initialize.order.num} +{ + #1 'order.num := +} +%%% Initialize a variables +EXECUTE {initialize.order.num} + +%%% Variable for remembering the order of citation. +FUNCTION {set.order.cited} +{ + order.num 'order.cited := + #1 order.num + 'order.num := +} +%%% Iterate for all entries: +ITERATE {set.order.cited} + +%%% check the value of nameorder field. +FUNCTION {set.nameorder} +{ nameorder empty$ + { "" 'nameorder.temp := } + { nameorder 'nameorder.temp := } + if$ +} +%%% Iterate for all entries: +ITERATE {set.nameorder} + +%%% Remove symbols and convert to lowercase. +FUNCTION {sortify} +{ purify$ "l" change.case$ } + +%%% names for sorting +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { nameptr #1 > + { ", " * } + 'skip$ + if$ + s nameptr "{ll}{ f}{ j}" format.name$ 't := + nameptr numnames = t "others" = and + { bst.and.others.output *} + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + { s sort.format.names } + { s #1 "{ll}{ f}{ j}" format.name$ " zz " * } + if$ +} + +%%% Label for full author name. +FUNCTION {format.lab.names.full} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{vv~}{ll}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.and.nameorder * t * } + { ", " * t * } + if$ + } + { t "others" = + { bst.and.others.output * } + { numnames #2 > + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.ands * t * } + if$ + } + { nameorder.temp "random" = bst.use.nameorder #0 = not and + { bst.cite.and.nameorder * t * } + { bst.cite.and * t * } + if$ + } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + numnames #1 > #1 #2 = and {", eds" *} {} if$ + numnames #1 = #1 #2 = and {", ed" *} {} if$ +} + +%%% laberl for abbreviated author name. +FUNCTION {format.lab.names.abb} +{ 's := + s num.names$ 'numnames := + numnames bst.and.others.num < + % if the number of authors is less than bst.and.others.num, full name. + { s format.lab.names.full } + % if the number of authors is equal or more than bst.and.others.num, abbreviated name. + { s #1 "{ll}" format.name$ bst.and.others.output * } + if$ +} + +%%% abbreviated author +FUNCTION {author.key.label.abb} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.key.label.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {format.names.full.wo.and} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr "{ll}{, ff}{, jj}" format.name$ 't := + nameptr #1 > + { namesleft #1 > + { " " * t * } + { t "others" = + { " " * } + { numnames #2 > + { " " * t * } + { " " * t * } + if$ + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.key.full.wo.and} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {author.editor.key.full.wo.and} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.names.full.wo.and } + if$ + } + { author format.names.full.wo.and } + if$ +} + +FUNCTION {editor.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +FUNCTION {author.key.organization.key.full.wo.and} +{ 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.names.full.wo.and } + if$ +} + +%%% abbreviated author +FUNCTION {author.editor.key.label.abb} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.abb } + if$ + } + { author format.lab.names.abb } + if$ +} + +%%% full author +FUNCTION {author.editor.key.label.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + { editor format.lab.names.full } + if$ + } + { author format.lab.names.full } + if$ +} + +FUNCTION {author.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {author.key.organization.label.abb} +{ 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.abb } + if$ +} + +FUNCTION {editor.key.organization.label.full} +{ 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.full } + if$ +} + +FUNCTION {editor.key.organization.label.abb} +{ 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.abb } + if$ +} + +%%% Convert numbers: 0->9, 1->8, 2->7,..., 9->0 +FUNCTION {reverse.num} +{ 's := + s "1" = + { "8" 'year.num := } + { s "2" = + { "7" 'year.num := } + { s "3" = + { "6" 'year.num := } + { s "4" = + { "5" 'year.num := } + { s "5" = + { "4" 'year.num := } + { s "6" = + { "3" 'year.num := } + { s "7" = + { "2" 'year.num := } + { s "8" = + { "1" 'year.num := } + { s "9" = + { "0" 'year.num := } + { s "0" = + { "9" 'year.num := } + { "9" 'year.num := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + year.num +} + +%%% Convert year (large number -> small number) +FUNCTION {convert.year} +{ 't := + bst.reverse.year #0 = + { t 'tt := } + { t #1 #1 substring$ reverse.num + t #2 #1 substring$ reverse.num * + t #3 #1 substring$ reverse.num * + t #4 #1 substring$ reverse.num * 'tt := } + if$ + tt +} + +%%% cyear +FUNCTION {calc.cyear} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full.wo.and + { type$ "proceedings" = + 'editor.key.organization.key.full.wo.and + { type$ "manual" = + 'author.key.organization.key.full.wo.and + 'author.key.full.wo.and + if$ + } + if$ + } + if$ + duplicate$ + year empty$ + { "2199" 'cyear := } + { year 'cyear := } + if$ + year empty$ + { " " "2199" convert.year * field.or.null * } + { " " year convert.year * field.or.null * } + if$ + sortify 'sort.label := + % For debug + econ.debug #0 = not + { "sort.label = ``\texttt{" write$ + sort.label write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ + pop$ +} + +FUNCTION {calc.sort.label.abb} +{ author empty$ + { editor empty$ + { "" } + { editor 's := } + if$ + } + { author 's := } + if$ + s sort.format.names.abb 't := + year empty$ + { t sortify " " * "2199" convert.year * 'sort.label.abb := } + { t sortify " " * year convert.year * 'sort.label.abb := } + if$ + econ.debug #0 = not + { "sort.label.abb = ``\texttt{" write$ + sort.label.abb write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% flabel +FUNCTION {calc.flabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.full + { type$ "proceedings" = + 'editor.key.organization.label.full + { type$ "manual" = + 'author.key.organization.label.full + 'author.key.label.full + if$ + } + if$ + } + 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$ + flabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% alabel +FUNCTION {calc.alabel} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label.abb + { type$ "proceedings" = + 'editor.key.organization.label.abb + { type$ "manual" = + 'author.key.organization.label.abb + 'author.key.label.abb + if$ + } + if$ + } + if$ + 'alabel := + % For debug + econ.debug #0 = not + { "alabel = ``\texttt{" write$ + alabel write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% title for sorting +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +%%% author for sorting +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +%%% editor for sorting +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$ +} + +%%% 1,...,9 -> 001,...,009 +%%% 10,...,99 -> 010,...,099 +FUNCTION {add.zero.to.number} +{ 's := + s text.length$ #1 = + { "00" s * } + { s text.length$ #2 = + { "0" s * } + { s } + if$ + } + if$ +} + +%% entry type +FUNCTION {bst.sort.entry.type.order} +{ 'item.type := + item.type "article" = + { "01" } + { item.type "book" = + { "02" } + { item.type "booklet" = + { "03" } + { item.type "comment" = + { "04" } + { item.type "conference" = + { "05" } + { item.type "inbook" = + { "06" } + { item.type "incollection" = + { "07" } + { item.type "inproceedings" = + { "08" } + { item.type "manual" = + { "09" } + { item.type "masterthesis" = + { "10" } + { item.type "misc" = + { "11" } + { item.type "phdthesis" = + { "12" } + { item.type "proceedings" = + { "13" } + { item.type "techreport" = + { "14" } + { item.type "unpublished" = + { "15" } + { "16" } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +%%% Create sort.key$: absorder -> author -> year -> order -> month -> title. +FUNCTION {presort.one} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * + sort.label.abb * + " " * + type$ "book" = type$ "inbook" = or + 'author.editor.sort + { type$ "proceedings" = + 'editor.organization.sort + { type$ "manual" = + 'author.organization.sort + 'author.sort + if$ + } + if$ + } + if$ + * " " * + " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +FUNCTION {presort.two} +{ + bst.no.sort #0 = not + { order.cited int.to.str$ add.zero.to.number " " * } + { "" } + if$ + bst.sort.year #0 = not + %% Use year field as the primary sorting key. + { year convert.year * } + 'skip$ + if$ + bst.sort.entry.type #0 = not + { type$ bst.sort.entry.type.order * " " * } + 'skip$ + if$ + absorder empty$ + { "/// " * } + { bst.notuse.absorder.field #0 = + { absorder "999" = + { "zzz " * } + { absorder add.zero.to.number "000" = + { "/// " * } + { absorder add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + " " * sort.label * " " + order empty$ + { "/// " * } + { bst.notuse.order.field #0 = + { order "999" = + { "zzz " * } + { order add.zero.to.number "000" = + { "/// " * } + { order add.zero.to.number * " " * } + if$ + } + if$ + } + { "/// " * } + if$ + } + if$ + month empty$ + { * "/// " * } + { month "999" = + { * month add.zero.to.number * "zzz " * } + { month add.zero.to.number "000" = + { * month add.zero.to.number * "/// " * } + { * month add.zero.to.number * " " * } + if$ + } + if$ + } + if$ + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := + % For debug + econ.debug #0 = not + { "``\texttt{" write$ + sort.key$ write$ + "}''\\" write$ + newline$ + } + 'skip$ + if$ +} + +%%% Codes for debugging +FUNCTION {calc.alabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.alabel: alabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {calc.flabel.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.flabel: flabel = }\\" write$ + newline$ } + 'skip$ + if$ +} +FUNCTION {presort.one.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (1st time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {presort.two.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of presort (2nd time): \$sort.key = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.cyear.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.cyear: sort.label = }\\" write$ + newline$ } + 'skip$ + if$ +} + +FUNCTION {calc.sort.label.abb.mess} +{ econ.debug #0 = not + { "\textbf{Iteration of calc.sort.label.abb: sort.label.abb = }\\" write$ + newline$ } + 'skip$ + if$ +} + +%%% alabel +EXECUTE {calc.alabel.mess} +ITERATE {calc.alabel} + +%%% flabel +EXECUTE {calc.flabel.mess} +ITERATE {calc.flabel} + +%%% cyear and sort.label +EXECUTE {calc.cyear.mess} +ITERATE {calc.cyear} + +%%% +EXECUTE {calc.sort.label.abb.mess} +ITERATE {calc.sort.label.abb} + +%%% Sorting by $sort.key (first time) +% +% Sorting is done in two times. This is the first time. +% +EXECUTE {presort.one.mess} +ITERATE {presort.one} +SORT + +FUNCTION {forward.pass} +{ bst.use.bysame #0 = bst.use.bysame #2 = or + % Not use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + } + % Use \bysame + { last.sort.label sort.label.abb = + { 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.abb 'last.sort.label := + } + if$ + author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + % format.names 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + if$ +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label empty$ not + { cyear extra.label * } + { cyear "" * } + if$ + "" field.or.null * + 'cyear := + extra.label 'next.extra := +} + +%%% \bysame +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +%%% Sorting by sort.key$ (second time) +EXECUTE {presort.two.mess} +ITERATE {presort.two} +SORT + +FUNCTION {reset.prev.author} +{ "xxyyzz" 'prev.author := } + +EXECUTE {reset.prev.author} + +FUNCTION {forward.pass.two} +{ bst.use.bysame #1 = + { author empty$ + { editor empty$ + { "" } + 'format.editors.alt + if$ + } + 'format.authors.alt + if$ + 'this.author := + this.author prev.author = + { "bysame" 'extra.label.bysame := } + { this.author "" = + { "abcxyz" } + 'this.author + if$ + 'prev.author := + } + if$ + } + 'skip$ + if$ +} + +ITERATE {forward.pass.two} + +FUNCTION{punctuation} +{ + "%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%" write$ newline$ + "% This bbl file is created by " econ.file * " ver." * econ.version * write$ newline$ + "% The latest " econ.file * " is available at " * write$ newline$ + "% " write$ newline$ newline$ +} + +EXECUTE {punctuation} + +FUNCTION {begin.bib} +{ + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + bst.use.bysame #0 = + % Not use \bysame. + 'skip$ + % Use \bysame. + { "%%% Definition of \bysame" write$ newline$ + "\ifx\undefined\bysame" write$ newline$ + "\newcommand{\bysame}{" bst.bysame.definition * "}" * + write$ newline$ + "\fi" write$ newline$ newline$ } + if$ + %% When number index is attached to the beginning of each item. + bst.use.number.index #0 = + 'skip$ + { bst.number.index.digit "1" = + % one digit. + { bst.number.index.bibhang.one } + { bst.number.index.digit "2" = + % two digits. + { bst.number.index.bibhang.ten } + % three or more digits. + { bst.number.index.bibhang.hund } + if$ + } + if$ + 'hang := + "%%% Redefinition of \bibhang" write$ newline$ + "\ifx\undefined\bibhang" write$ newline$ + "\relax" write$ newline$ + "\else" write$ newline$ + "\setlength{\bibhang}{" + hang * "}" * write$ newline$ + "\fi" write$ newline$ newline$ + } + if$ + "\begin{thebibliography}{xxx}" write$ newline$ + + %% Initialize the variable `index'. + #0 'index := +} + +FUNCTION {end.bib} +{ newline$ "\end{thebibliography}" write$ newline$ } + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +EXECUTE {end.bib} + +% -------------------- +% Local Variables: +% fill-column: 78 +% mode: bst +% End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf new file mode 100644 index 0000000000..5e219b9457 Binary files /dev/null and b/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-old.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-old.tex new file mode 100644 index 0000000000..108f4cb46c --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-old.tex @@ -0,0 +1,58 @@ +%#!pdflatex +%#BIBTEX bibtex econ-old + +%############################## Main ################################# +\documentclass[10pt]{article} + +%% Use natbib.sty +\usepackage[longnamesfirst]{natbib} +\usepackage{newtxtext,newtxmath} +\usepackage{url} +\usepackage{graphicx} +\usepackage{color} +\definecolor{MyBrown}{rgb}{0.3,0,0} +\definecolor{MyBlue}{rgb}{0,0,0.3} +\definecolor{MyRed}{rgb}{0.4,0,0.1} +\definecolor{MyGreen}{rgb}{0,0.4,0} +\usepackage[bookmarks=true,% +bookmarksnumbered=true,% +colorlinks=true,% +linkcolor=MyBlue,% +citecolor=MyRed,% +filecolor=MyBlue,% +pagecolor=MyBlue,% +urlcolor=MyGreen% +]{hyperref} + +\setlength{\topmargin}{-20pt} +\setlength{\textheight}{648pt} +\setlength{\oddsidemargin}{15pt} +\setlength{\textwidth}{440pt} + +%##################################################################### +%######################### Document Starts ########################### +%##################################################################### +\begin{document} + +This document uses ``\verb|econ-old.bst|''. + +\vspace{1em} + +\input{cited-part} +\nocite{*} + +%% bst file: +\bibliographystyle{./econ-old} +\bibliography{../econ-example} + + +\end{document} + + +%##################################################################### +%######################### Document Ends ############################# +%##################################################################### +% -------------------- +% Local Variables: +% fill-column: 80 +% End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.bib b/biblio/bibtex/contrib/econ-bst/econ-example.bib index 4b65c99bf3..720ec7a504 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-example.bib +++ b/biblio/bibtex/contrib/econ-bst/econ-example.bib @@ -14,7 +14,6 @@ number = 5, pages = {1211-1219}, month = {December}, - url = {http://www.jstor.org/stable/2117557}, } @Article{ishikawa94:_revis_stolp_samuel_rybcz_theor_produc_exter, @@ -27,6 +26,7 @@ pages = {101-111}, number = 1, url = {http://www.jstor.org/stable/135804}, + doi = {10.2307/135804} } @article{Biker-2007-unemployment, @@ -93,12 +93,14 @@ @article{BabikerRutherford-2005-EconomicEffectsof, author = {Mustafa H. Babiker and Thomas F. Rutherford}, - title = {The Economic Effects of Border Measures in Subglobal Climate Agreements}, - journal = {Energy Journal}, + title = {The Economic Effects of Border Measures in Subglobal Climate + Agreements}, + journal = {The Energy Journal}, year = 2005, volume = 26, pages = {99-126}, - number = 4 + number = 4, + doi = {10.5547/ISSN0195-6574-EJ-Vol26-No4-6}, } @article{2009yamasue502165, @@ -116,7 +118,8 @@ order = 3, pdf = {2009yamasue502165.pdf}, publisher = {Japan Institute of Metals}, - url = {http://ci.nii.ac.jp/naid/40016713752/} + url = {http://ci.nii.ac.jp/naid/40016713752/}, + doi = {10.2320/matertrans.MAW200908} } @article{2007yamasue482353, @@ -124,7 +127,7 @@ Hashimoto and Hideyuki Okumura and Keiichi N. Ishihara}, title = {Evaluation of the Potential Amounts of Dissipated Rare Metals from WEEE in {Japan}}, - journal = {Materials transactions}, + journal = {Materials Transactions}, year = 2007, volume = 48, pages = {2353--2357}, @@ -132,7 +135,8 @@ issn = 13459678, pdf = {2007yamasue482353.pdf}, publisher = {Japan Institute of Metals}, - url = {http://ci.nii.ac.jp/naid/10019853407/} + url = {http://ci.nii.ac.jp/naid/10019853407/}, + doi = {10.2320/matertrans.MAW200781} } @article{Babiker2000525, @@ -149,33 +153,70 @@ } @article{Parry1997, - author = {Parry, Ian W. H.}, - doi = {10.2139/ssrn.293599}, + title = {Environmental taxes and quotas in the presence of distorting + taxes in factor markets}, journal = {Resource and Energy Economics}, - pages = {5--6}, - title = {{Environmental Taxes and Quotas in the Presence of Distorting - Taxes in Factor Markets}}, - url = {http://linkinghub.elsevier.com/retrieve/pii/S0928765596000127}, - year = {1997} + volume = {19}, + number = {3}, + pages = {203-220}, + year = {1997}, + issn = {0928-7655}, + doi = {10.1016/S0928-7655(96)00012-7}, + url = + {http://www.sciencedirect.com/science/article/pii/S0928765596000127}, + author = {Parry, Ian W. H.}, + keywords = {Environmental tax, Environmental quota, Pre-existing labor + tax, General equilibrium welfare effect}, + abstract = {Environmental quotas tend to compound the welfare cost of + pre-existing tax distortions in the labor market. Under + plausible parameters, this source of welfare loss can easily + be large enough to outweigh the entire partial equilibrium + welfare gain from the quota. Environmental taxes induce the + same interaction effect, however they also raise government + revenues. If the revenues are used to reduce distortionary + taxes, then most of this interaction effect can be + offset. Therefore, revenue-raising can be a necessary + condition for environmental policies to increase welfare.} } @Article{bergemann11:_ration, - author = {D. Bergemann and S. Morris and O. Tercieux}, - title = {Rationalizable Implementation}, + title = {Rationalizable implementation}, journal = {Journal of Economic Theory}, - year = 2011, - volume = 146, - pages = {1253-1274} + volume = {146}, + number = {3}, + pages = {1253-1274}, + year = {2011}, + issn = {0022-0531}, + doi = {10.1016/j.jet.2010.12.011}, + url = + {http://www.sciencedirect.com/science/article/pii/S0022053111000044}, + author = {Dirk Bergemann and Stephen Morris and Olivier Tercieux}, + keywords = {Implementation, Complete information, Rationalizability, + Maskin monotonicity, Robust mechanism design, Robust + implementation}, + abstract = {We consider the implementation of social choice functions + under complete information in rationalizable strategies. A + strict version of the monotonicity condition introduced by + Maskin is necessary under the solution concept of + rationalizability. Assuming the social choice function is + responsive, i.e. in distinct states it selects distinct + outcomes, we show that strict Maskin monotonicity is also + sufficient under a mild “no worst alternative” condition. In + particular, no economic condition is required. We discuss how + our results extend when the social choice function is not + responsive.} } @article{goldin:katz:2000, author = {Claudia Goldin and Lawrence F. Katz}, - title = {Education and Income in the Early Twentieth Century: Evidence from the Prairies}, + title = {Education and Income in the Early Twentieth Century: Evidence + from the Prairies}, journal = {Journal of Economic History}, year = {2000}, volume = {60}, number = {3}, - pages = {782-818} + pages = {782-818}, + doi = {10.1017/S0022050700025766} } @article{10.1257/aer.20161492, @@ -192,6 +233,241 @@ nameorder = {random} } +@article{10.1257/aer.20170619, + Author = {Giorcelli, Michela}, + Title = {The Long-Term Effects of Management and Technology Transfers}, + Journal = {American Economic Review}, + Volume = {109}, + Number = {1}, + Year = {2019}, + Month = {January}, + Pages = {121-52}, + DOI = {10.1257/aer.20170619}, + URL = {http://www.aeaweb.org/articles?id=10.1257/aer.20170619} +} + +@article{10.1257/pol.2.1.155, + Author = {Mankiw, N. Gregory and Weinzierl, Matthew}, + Title = {The Optimal Taxation of Height: A Case Study of Utilitarian + Income Redistribution}, + Journal = {American Economic Journal: Economic Policy}, + Volume = {2}, + Number = {1}, + Year = {2010}, + Month = {February}, + Pages = {155-76}, + DOI = {10.1257/pol.2.1.155}, + URL = {http://www.aeaweb.org/articles?id=10.1257/pol.2.1.155} +} + +@article{10.1257/aer.100.3.763, + Author = {Romer, Christina D. and Romer, David H.}, + Title = {The Macroeconomic Effects of Tax Changes: Estimates Based on a + New Measure of Fiscal Shocks}, + Journal = {American Economic Review}, + Volume = {100}, + Number = {3}, + Year = {2010}, + Month = {June}, + Pages = {763-801}, + DOI = {10.1257/aer.100.3.763}, + URL = {http://www.aeaweb.org/articles?id=10.1257/aer.100.3.763} +} + +@Article{Takeda2014a, + author = {Takeda, Shiro and Arimura, Toshi H. and Tamechika, Hanae and + Fischer, Carolyn and Fox, Alan K.}, + title = {Output-based allocation of emissions permits for mitigating + the leakage and competitiveness issues for the Japanese + economy}, + journal = {Environmental Economics and Policy Studies}, + year = {2014}, + month = {Jan}, + day = {01}, + volume = {16}, + number = {1}, + pages = {89--110}, + issn = {1867-383X}, + doi = {10.1007/s10018-013-0072-8}, +} + +@Article{Takeda2019a, + author = {Takeda, Shiro and Arimura, Toshi H. and Sugino, Makoto}, + title = {Labor Market Distortions and Welfare-Decreasing International + Emissions Trading}, + journal = {Environmental and Resource Economics}, + volume = {74}, + number = {1}, + pages = {271–293}, + year = {2019}, + month = Jan, + day = {17}, + issn = {1573-1502}, + doi = {10.1007/s10640-018-00317-4}, +} + +@article{doi:10.1175/2009BAMS2778.1, + author = {Meehl, Gerald A. and Goddard, Lisa and Murphy, James and + Stouffer, Ronald J. and Boer, George and Danabasoglu, Gokhan + and Dixon, Keith and Giorgetta, Marco A. and Greene, Arthur + M. and Hawkins, Ed and Hegerl, Gabriele and Karoly, David and + Keenlyside, Noel and Kimoto, Masahide and Kirtman, Ben and + Navarra, Antonio and Pulwarty, Roger and Smith, Doug and + Stammer, Detlef and Stockdale, Timothy}, + title = {Decadal Prediction}, + journal = {Bulletin of the American Meteorological Society}, + volume = {90}, + number = {10}, + pages = {1467-1486}, + year = {2009}, + doi = {10.1175/2009BAMS2778.1}, + URL = {https://doi.org/10.1175/2009BAMS2778.1}, + eprint = {https://doi.org/10.1175/2009BAMS2778.1}, +} + +@Article{luthi08:_high, + author = {Luthi, Dieter and Le Floch, Martine and Bereiter, Bernhard and + Blunier, Thomas and Barnola, Jean-Marc and Siegenthaler, Urs + and Raynaud, Dominique and Jouzel, Jean and Fischer, Hubertus + and Kawamura, Kenji and Stocker, Thomas F.}, + title = {High-resolution carbon dioxide concentration record + 650,000-800,000 years before present}, + journal = {Nature}, + year = 2008, + volume = 453, + number = 7193, + pages = {379-82}, + month = {May}, + DOI = {10.1038/nature06949} +} + +@Article{essd-10-405-2018, + author = {Le Qu\'er\'e, C. + and Andrew, R. M. + and Friedlingstein, P. + and Sitch, S. + and Pongratz, J. + and Manning, A. C. + and Korsbakken, J. I. + and Peters, G. P. + and Canadell, J. G. + and Jackson, R. B. + and Boden, T. A. + and Tans, P. P. + and Andrews, O. D. + and Arora, V. K. + and Bakker, D. C. E. + and Barbero, L. + and Becker, M. + and Betts, R. A. + and Bopp, L. + and Chevallier, F. + and Chini, L. P. + and Ciais, P. + and Cosca, C. E. + and Cross, J. + and Currie, K. + and Gasser, T. + and Harris, I. + and Hauck, J. + and Haverd, V. + and Houghton, R. A. + and Hunt, C. W. + and Hurtt, G. + and Ilyina, T. + and Jain, A. K. + and Kato, E. + and Kautz, M. + and Keeling, R. F. + and Klein Goldewijk, K. + and K\"ortzinger, A. + and Landsch\"utzer, P. + and Lef\`evre, N. + and Lenton, A. + and Lienert, S. + and Lima, I. + and Lombardozzi, D. + and Metzl, N. + and Millero, F. + and Monteiro, P. M. S. + and Munro, D. R. + and Nabel, J. E. M. S. + and Nakaoka, S.-I. + and Nojiri, Y. + and Padin, X. A. + and Peregon, A. + and Pfeil, B. + and Pierrot, D. + and Poulter, B. + and Rehder, G. + and Reimer, J. + and R\"odenbeck, C. + and Schwinger, J. + and S\'ef\'erian, R. + and Skjelvan, I. + and Stocker, B. D. + and Tian, H. + and Tilbrook, B. + and Tubiello, F. N. + and van der Laan-Luijkx, I. T. + and van der Werf, G. R. + and van Heuven, S. + and Viovy, N. + and Vuichard, N. + and Walker, A. P. + and Watson, A. J. + and Wiltshire, A. J. + and Zaehle, S. + and Zhu, D.}, + title = {Global Carbon Budget 2017}, + journal = {Earth System Science Data}, + volume = {10}, + year = {2018}, + number = {1}, + pages = {405--448}, + url = {https://www.earth-syst-sci-data.net/10/405/2018/}, + doi = {10.5194/essd-10-405-2018} +} + +@article{Rivers-2005-CombiningTop-Downand, + author = {Rivers, Nic and Jaccard, Mark}, + journal = {The Energy Journal}, + pages = {83--107}, + title = {Combining Top-Down and Bottom-Up Approaches To Energy-Economy + Modeling Using Discrete Choice Methods}, + volume = {26}, + year = {2005} +} + +@article{WilsonMannOtsuki-2005-AssessingBenefitsof, + author = {Wilson, John S. and Mann, Catherine L. and Otsuki, Tsunehiro}, + journal = {The World Economy}, + number = {6}, + pages = {841--871}, + title = {{Assessing the Benefits of Trade Facilitation: A Global + Perspective}}, + doi = {10.1111/j.1467-9701.2005.00709.x}, + volume = {28}, + year = {2005} +} + +@article{imbens2019Optimized, + title = {Optimized {{Regression Discontinuity Designs}}}, + volume = {101}, + issn = {0034-6535, 1530-9142}, + language = {en}, + number = {2}, + urldate = {2019-07-27}, + journal = {Review of Economics and Statistics}, + doi = {10.1162/rest_a_00793}, + url = {https://www.mitpressjournals.org/doi/abs/10.1162/rest_a_00793}, + author = {Imbens, Guido and Wager, Stefan}, + month = may, + year = {2019}, + keywords = {unread}, + pages = {264-278} +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % Book @Book{krugman91:_geogr_trade, @@ -215,11 +491,7 @@ title = {The Spatial Economy}, publisher = {MIT Press}, address = {Cambridge, MA}, - year = 1999, - jauthor = {o V}, - jtitle = {Ԍoϊw}, - jpublisher = {moϐV}, - jyear = 2000 + year = 1999 } @Book{Ryza15:_advan_analy_spark_patter_learn_data_scale, @@ -237,6 +509,15 @@ year = {2008} } +@Book{kusuoka06:_advan_mathem_econom, + editor = {Kusuoka, Shigeo and Yamasue, Akira}, + title = {Advances in Mathematical Economics}, + publisher = {Springer}, + year = 2006, + volume = 8, + address = {New York} +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % Incollection @InCollection{krugman91:_is_bilat_bad, @@ -260,11 +541,12 @@ volume = 1, series = {Carnegie Rochester Conference Series on Public Policy}, publisher = {North-Holland}, - address = {Amsterdam} + address = {Amsterdam}, + doi = {10.1016/S0167-2231(76)80003-6}, } @incollection{DeGorter2002, - author = {{De Gorter}, Harry and Swinnen, Johan}, + author = {De Gorter, Harry and Swinnen, Johan}, booktitle = {Handbook of Agricuultural Economics}, chapter = {36}, doi = {10.1016/S1574-0072(02)10023-5}, @@ -281,17 +563,20 @@ url = {http://www.sciencedirect.com/science/article/pii/S1574007202100235}, volume = {2}, + address = {Amsterdam}, year = {2002} } @InCollection{borgers95:_note_implem_stron_domin, - author = {T. Borgers}, + author = {Tilman Borgers}, title = {A Note on Implementation and Strong Dominance}, - booktitle = {Social Choice, Welfare, and Ethics: Proceedings of the Eighth International - Symposium in Economic Theory and Econometrics}, + booktitle = {Social Choice, Welfare, and Ethics: Proceedings of the Eighth + International Symposium in Economic Theory and Econometrics}, publisher = {Cambridge University Press}, + address = {Cambridge, UK.}, year = 1995, - editor = {William A. Barnett and Herve Moulin and Maurice Salles and Norman J. Schofield}, + editor = {William A. Barnett and Herve Moulin and Maurice Salles and + Norman J. Schofield}, pages = {277-287} } @@ -308,6 +593,57 @@ pages = {275-310}, } +@incollection{balistreri20131513, + title = {Computing General Equilibrium Theories of Monopolistic + Competition and Heterogeneous Firms}, + editor = {Peter B. Dixon and Dale W. Jorgenson}, + chapter = {23}, + publisher = {Elsevier}, + volume = {1}, + pages = {1513 - 1570}, + year = {2013}, + booktitle = {Handbook of Computable General Equilibrium Modeling SET, + Vols. 1A and 1B}, + issn = {2211-6885}, + doi = {10.1016/B978-0-444-59568-3.00023-7}, + url = + {http://www.sciencedirect.com/science/article/pii/B9780444595683000237}, + author = {Edward J. Balistreri and Thomas F. Rutherford}, + keywords = {New trade theory, computable general equilibrium, + intraindustry trade, trade policy, climate policy}, + abstract = {This chapter considers alternatives to the Armington + formulation of international trade found in most computable + general equilibrium (CGE) models. International trade + structures consistent with the monopolistic competition models + suggested by Krugman (1980) and Melitz (2003) are presented in + a computational setting. The Melitz structure of heterogeneous + firms is particularly appealing given its consistency with + micro-level findings on firm sizes and export behavior. We + broaden the accessibility of these advanced trade theories for + CGE modelers, and strengthen the link between contemporary CGE + analysis and the broader trade community. Small-scale examples + of all three theories (Armington, Krugman and Melitz) are + introduced under a unified treatment. This is helpful in + translating the advanced theories into an environment that is + more familiar to CGE modelers. It is also helpful in showing + how the different approaches affect outcomes, in a relatively + transparent setting. Moving to an applied setting, we offer + our approach to calibration and computation of models that + include the Melitz heterogeneous firms structure. Our + applications include an analysis of economic integration and + subglobal climate policy in a model calibrated to the Global + Trade Analysis Project (GTAP) data. We do find that the + heterogeneous firms structure matters for conclusions drawn + from empirical CGE analysis. In our analysis of economic + integration we find endogenous entry leading to important + variety effects. We also find important productivity effects + related to the competitive selection of more productive + firms. In our examination of subglobal climate policy we see + substantial trade diversion in the Melitz structure. This + exacerbates the problem of carbon leakage and impacts the + emissions yields from carbon-based tariffs.} +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % Unpublished @@ -332,25 +668,14 @@ note = {Working Paper, University of Colorad, Department of Economics} } -@unpublished{Takeda2011b, - author = {Takeda, Shiro and Arimura, Toshi H. and Tamechika, Hanae and - Fischer, Carolyn and Fox, Alan K.}, - title = {Output Based Allocation of Emissions Permits for Mitigating - the Leakage and Competitiveness Issues for {Japanese} Economy}, - note = {RFF (Resources for the Future) Discussion Paper 11-40, - September 2011}, - url = - {http://rff.org/Publications/Pages/PublicationDetails.aspx?PublicationID=21652}, - year = 2011 -} - -@unpublished{takeda2011c, +@unpublished{takeda2015a, author = {Takeda, Shiro and Arimura, Toshi H. and Sugino, Makoto}, title = {Labor Market Distortions and Welfare-Decreasing International Emissions Trading}, - url = {http://papers.ssrn.com/sol3/papers.cfm?abstract_id=1886200}, - year = {2011}, - access = {29/06/2013}, + url = + {http://www.waseda.jp/fpse/winpec/assets/uploads/2015/06/No.E1422Takeda_Arimura_Sugino.pdf}, + year = {2015}, + note = {WINPEC Working Paper Series No.E1422, March 2015} } @unpublished{Babiker-1999-KyotoProtocoland, @@ -413,6 +738,23 @@ note = {September, 2018}, } +@Unpublished{saito17:_effec_immig_japan, + author = {Saito, Muneyuki and Kato, Shinya and Takeda, Shiro}, + title = {Effects of Immigration in Japan: A Computable General + Equilibrium Assessment}, + url = {https://ssrn.com/abstract=2782708}, + year = 2017 +} + +@Unpublished{takeda10:_region_effec_trade_liber_japan, + author = {Takeda, Shiro and Kanemi, Ban}, + title = {Regional Effects of Trade Liberalization in Japan: A CGE + Analysis Based on an Interregional Input-Output Table}, + url = + {http://shirotakeda.org/assets/files/research/rio_2008/en/takeda-ban-iro-2010-04-15.pdf}, + year = 2010 +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % inbook @InBook{wong95:_inter_trade_goods_factor_mobil_, @@ -449,6 +791,27 @@ month = sep # "~6" } +@inproceedings{zhang2016Deep, + address = {{Paduva, Italy}}, + title = {Deep {{Learning}} over {{Multi}}-Field {{Categorical Data}}}, + volume = {9626}, + language = {en}, + urldate = {2018-12-26}, + booktitle = {Proceedings of 38th {{European Conference}} on {{IR + Research}}}, + publisher = {{Springer International Publishing}}, + doi = {10.1007/978-3-319-30671-1_4}, + url = {http://link.springer.com/10.1007/978-3-319-30671-1_4}, + author = {Zhang, Weinan and Du, Tianming and Wang, Jun}, + editor = {Ferro, Nicola and Crestani, Fabio and Moens, Marie-Francine + and Mothe, Josiane and Silvestri, Fabrizio and Di Nunzio, + Giorgio Maria and Hauff, Claudia and Silvello, Gianmaria}, + month = mar, + year = {2016}, + keywords = {unread,FM-supported NN (FNN),Sample-based NN (SNN)}, + pages = {45-57} +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % Manual @Manual{brooke03:_gams, @@ -490,28 +853,28 @@ } @techreport{NBERw25205, - title = "Electoral Systems and Inequalities in Government - Interventions", - author = "Garance Genicot and Laurent Bouton and Micael Castanheira", - institution = "National Bureau of Economic Research", - type = "Working Paper", - series = "Working Paper Series", - number = "25205", - year = "2018", - month = "October", + title = {Electoral Systems and Inequalities in Government + Interventions}, + author = {Garance Genicot and Laurent Bouton and Micael Castanheira}, + institution = {National Bureau of Economic Research}, + type = {Working Paper}, + series = {Working Paper Series}, + number = 25205, + year = 2018, + month = {October}, doi = {10.3386/w25205}, - URL = "http://www.nber.org/papers/w25205", + URL = {http://www.nber.org/papers/w25205}, nameorder = {random} } %%%%%%%%%%%%%%%%%%%%%%%%%% % Online -@online{stakeda2013web, +@online{stakeda2019web, author = {Shiro Takeda}, - year = {2013}, + year = {2019}, title = {econ.bst: {BibTeX} style file for economics}, - url = {http://shirotakeda.org/en/tex/econ-bst.html}, - access = {4th July, 2013} + url = {https://github.com/ShiroTakeda/econ-bst}, + access = {28th Jan, 2019} } diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.pdf b/biblio/bibtex/contrib/econ-bst/econ-example.pdf index bfd58cac6b..464b1d6814 100644 Binary files a/biblio/bibtex/contrib/econ-bst/econ-example.pdf and b/biblio/bibtex/contrib/econ-bst/econ-example.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.tex b/biblio/bibtex/contrib/econ-bst/econ-example.tex index 237076ccc0..1b2a3b6068 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-example.tex +++ b/biblio/bibtex/contrib/econ-bst/econ-example.tex @@ -3,7 +3,6 @@ % Filename: econ-example.tex % Author: Shiro Takeda % First-written: <2002/11/02> -% Time-stamp: <2018-12-06 00:47:47 st> % % This document explains how to use econ.bst. @@ -14,12 +13,12 @@ %% Use natbib.sty. \usepackage{natbib} \usepackage{fancybox} -\usepackage{mathpazo} +\usepackage{newtxtext,newtxmath} \usepackage{url} \usepackage{graphicx} \usepackage{color} \definecolor{MyBrown}{rgb}{0.3,0,0} -\definecolor{MyBlue}{rgb}{0,0,0.3} +\definecolor{MyBlue}{rgb}{0,0.2,0.6} \definecolor{MyRed}{rgb}{0.4,0,0.1} \definecolor{MyGreen}{rgb}{0,0.4,0} \usepackage[bookmarks=true,bookmarksnumbered=true,colorlinks=true,linkcolor=MyBlue,citecolor=MyRed,filecolor=MyBlue,urlcolor=MyGreen]{hyperref} @@ -31,6 +30,9 @@ \makeatletter +% Set the roman font to font for URL (the default font for URL is type writer font). +\renewcommand\UrlFont{\rmfamily} + \newenvironment{Frame}% {\setlength{\fboxsep}{15pt} \setlength{\mylength}{\linewidth}% @@ -53,14 +55,12 @@ %%% title, author, acknowledgement, and date \title{\texttt{econ.bst}:\\ -\BibTeX{} style for economics\\ -(for ver. 2.4) -\thanks{\texttt{econ.bst} is available at +\BibTeX{} style for economics\thanks{\texttt{econ.bst} is available at \url{https://github.com/ShiroTakeda/econ-bst}} } \author{Shiro Takeda\thanks{email: {\ttfamily shiro.takeda@gmail.com}.}} -\date{\today} +\date{2020/02/26} %##################################################################### %######################### Document Starts ########################### @@ -95,6 +95,10 @@ features: wish. \item You can use ``\textit{certified random order}'' proposed by \href{http://dx.doi.org/10.1257/aer.20161492}{\citet[][AER]{10.1257/aer.20161492}}. + \begin{itemize} + \item If you want to use certified random order, please see Section + \ref{sec:cro}. + \end{itemize} \end{itemize} \end{Frame} @@ -103,15 +107,12 @@ features: \section{How to use ``\texttt{econ.bst}''} \begin{itemize} - \item ``\texttt{econ.bst}'' requires ``\texttt{natbib.sty}''. - If ``\texttt{natbib.sty}'' is not installed in your \TeX{} system, you must - install it first. + \item ``\texttt{econ.bst}'' requires ``\texttt{natbib.sty}'', which is + installed in the standard \TeX{} system. \item Put ``\texttt{econ.bst}'' file somewhere under the directory (folder) ``\texttt{/texmf/bibtex/bst}''. Or you can place ``\texttt{econ.bst}'' at the same directory as the \TeX{} file you are editting. - \item You may need to change the character code of ``\texttt{econ.bst}'' - according to your \TeX system. - \item See ``\texttt{econ-example.tex}'' for an example tex file. + \item See ``\texttt{econ-example.tex}'' for preparing an tex file. \item For \BibTeX{} in general, see, for example, \href{https://www.economics.utoronto.ca/osborne/latex/BIBTEX.HTM}{Using BibTeX: a short guide} by Martin J. Osborne. @@ -121,7 +122,7 @@ features: \subsection{Preparing a tex file} In the tex file you are editting, you first need to load \texttt{natbib} -package. +package in the preample (i.e. before \verb|\begin{document}|) \begin{Frame} \begin{verbatim} \usepackage{natbib} @@ -131,9 +132,9 @@ package. In the main text, you can cite bibliographic entries by \verb|\citet| command. -For example, ``\verb|\citet{Takeda2011b}| is my paper'' generates the output like +For example, ``\verb|\citet{Takeda2014a}| is my paper'' generates the output like \begin{Frame} -\citet{Takeda2011b} is my paper. +\citet{Takeda2014a} is my paper. \end{Frame} At the place where you want to add ``the reference part'', you have to set the @@ -144,7 +145,22 @@ bibliography style (\texttt{econ.bst}) and database (\texttt{econ-example.bib}) \bibliography{econ-example} \end{verbatim} \end{Frame} +Note that you should not attach the extension ``bst'' and ``bib'' to the bst and +database file name. +\subsection{Running pdf\TeX{}} + +\texttt{econ-example.tex} is created so that it is compiled with pdf\LaTeX +(``\texttt{pdflatex.exe}''). So to compile \texttt{econ-example.tex}, you just +execute the following commnads. +\begin{Frame} +\begin{verbatim} +pdflatex econ-example.tex +bibtex econ-example +pdflatex econ-example.tex +pdflatex econ-example.tex +\end{verbatim} +\end{Frame} \section{Customization} @@ -169,6 +185,33 @@ changing the contents of these functions. \item In a bst file, integer (e.g. 0, 1, 2) is represented as \verb|#0|, \verb|#1| , \verb|#2|. \end{itemize} +\subsection{Customized bst files} + +Many customized bst files listed in Table \ref{tab:c-files} are already +provided. You can find these files under the ``customization'' folder. See +\url{https://github.com/ShiroTakeda/econ-bst/tree/master/customization}. + +\begin{table}[htbp] +\begin{flushleft} +\caption{List of customized files.} +\label{tab:c-files} +\begin{tabular}{l|l} \hline \hline +\multicolumn{1}{c}{bst files} & \multicolumn{1}{c}{Explanation} \\\hline +\texttt{econ.bst} & The default econ.bst file. \\\hline +\texttt{econ-a.bst} & A simple style. \\\hline +\texttt{econ-b.bst} & A style with much decoration. \\\hline +\texttt{econ-no-sort.bst} & This style lists entries in citation order. \\\hline +\texttt{econ-abbr.bst} & This style uses abbreviated journal name. \\\hline +\texttt{econ-aea.bst} & The style for AEA journals such as AER, JEL, AEJ and JEP. \\\hline +\texttt{econ-econometrica.bst} & The style for Econometrica. \\\hline +\texttt{econ-jpe.bst} & The style for JPE (\textit{Journal of Poilitical Economy}). \\\hline +\texttt{econ-jet.bst} & The style for JET (\textit{Journal of Economic Theoriy}). \\\hline +\texttt{econ-jie.bst} & The style for JIE (\textit{Journal of International Economics}). \\\hline +\texttt{econ-old.bst} & The style of the old econ.bst. \\\hline +\end{tabular} +\end{flushleft} +\end{table} + \subsection{Examples of customization} \subsubsection{Change delimiter used to separate mutiple author names @@ -246,13 +289,13 @@ For this, change the contents of ``\texttt{bst.volume.pre}'', \begin{Frame} \begin{verbatim} FUNCTION {bst.volume.pre} -{ ", Vol. " } +{ ", " } FUNCTION {bst.volume.post} { "" } FUNCTION {bst.number.pre} -{ ", No. " } +{ " (" } FUNCTION {bst.number.post} -{ "" } +{ ")" } \end{verbatim} \end{Frame} @@ -260,19 +303,18 @@ FUNCTION {bst.number.post} \begin{Frame} \begin{verbatim} FUNCTION {bst.volume.pre} -{ ", \textbf{" } +{ ", Vol. " } FUNCTION {bst.volume.post} -{ "}" } +{ "" } FUNCTION {bst.number.pre} -{ " (" } +{ ", No. " } FUNCTION {bst.number.post} -{ ")" } +{ "" } \end{verbatim} \end{Frame} -By this, the style of volume and number change from ``Vol. 5, No. 10'' -to ``\textbf{5} (10)''. See ``\texttt{econ-b.bst}'' for an example. - +By this, the style of volume and number change from ``5 (10)'' to ``Vol. 5, +Non. 10''. See ``\texttt{econ-b.bst}'' for an example. \subsubsection{Abbreviation of author name} @@ -456,10 +498,14 @@ With respect to aritcle type entry, the following rule is applied: For example, reference style changes as follows: \begin{description} - \item[\#0: ] Mazda, A. and B. Subaru, 2007, ``ABC,'' \textit{Journal of Automobiles}, Vol. 1, pp. 1-10. - \item[\#1: ] Mazda, A. and B. Subaru, ``ABC,'' \textit{Journal of Automobiles}, Vol. 1, pp. 1-10, 2007. - \item[\#2: ] Mazda, A. and B. Subaru, ``ABC,'' \textit{Journal of Automobiles}, 2007, Vol. 1, pp. 1-10. - \item[\#3: ] Mazda, A. and B. Subaru, ``ABC,'' \textit{Journal of Automobiles}, Vol. 1, 2007, pp. 1-10. + \item[\#0: ] Mazda, A. and B. Subaru, 2007, ``ABC,'' \textit{Journal of + Automobiles}, 1 (2), pp. 1-10. + \item[\#1: ] Mazda, A. and B. Subaru, ``ABC,'' \textit{Journal of Automobiles}, + 1 (2), pp. 1-10, 2007. + \item[\#2: ] Mazda, A. and B. Subaru, ``ABC,'' \textit{Journal of Automobiles}, + 2007, 1 (2), pp. 1-10. + \item[\#3: ] Mazda, A. and B. Subaru, ``ABC,'' \textit{Journal of Automobiles}, + 1 (2), 2007, pp. 1-10. \end{description} See ``\texttt{econ-a.bst}'' and ``\texttt{econ-b.bst}'' for exmpales. @@ -518,9 +564,9 @@ abbreviated names. For example, by using command `\verb|\citet|' and `\verb|\citet*|', you can generate the following two styles. \begin{itemize} \item Citation by full names: \\ - \verb|\citet*{Takeda2011b}| $\longrightarrow$ \citet*{Takeda2011b} + \verb|\citet*{Takeda2014a}| $\longrightarrow$ \citet*{Takeda2014a} \item Citation by abbreviated names: \\ - \verb|\citet{Takeda2011b}| $\longrightarrow$ \citet{Takeda2011b} + \verb|\citet{Takeda2014a}| $\longrightarrow$ \citet{Takeda2014a} \end{itemize} By the default, author names more than three are abbreviated. But you can change @@ -542,9 +588,9 @@ change the style of citation part by changing commands and options provided by See the manual of \texttt{natbib.sty} for the details. \begin{itemize} \item The manual of \texttt{natbib.sty}: - \href{http://ctan.math.utah.edu/ctan/tex-archive/macros/latex/contrib/natbib/natbib.pdf}{natbib.pdf} + \href{http://mirror.ctan.org/macros/latex/contrib/natbib/natbib.pdf}{natbib.pdf} \item The reference sheet of \texttt{natbib.sty}: - \href{http://mirror.las.iastate.edu/tex-archive/macros/latex/contrib/natbib/natnotes.pdf}{natnotex.pdf} + \href{http://mirror.ctan.org/macros/latex/contrib/natbib/natnotes.pdf}{natnotex.pdf} \end{itemize} \subsubsection{Citation by number index} @@ -564,7 +610,7 @@ To use this style, you first need to load \texttt{natbib} package with option In addition, you need to use \texttt{citep} command in the citation part like \begin{Frame} \begin{verbatim} -\citep{Takeda2011b} +\citep{Takeda2014a} \end{verbatim} \end{Frame} @@ -640,10 +686,10 @@ and you can cite bibliographic entries as before. For example, the command references: \begin{quote} -Ray, Debraj \textcircled{r} Arthur Robson (2018) ``Certified Random: A New Order -for Coauthorship,'' \textit{American Economic Review}, Vol. 108, No. 2, -pp. 489--520, URL: \url{http://www.aeaweb.org/articles?id=10.1257/aer.20161492}, -DOI: \href{http://dx.doi.org/10.1257/aer.20161492}{10.1257/aer.20161492}. +Ray, Debraj \textcircled{r} Arthur Robson (2018) ``Certified Random: A New +Order for Coauthorship,'' \textit{American Economic Review}, 108 (2), +489--520, \href{http://dx.doi.org/10.1257/aer.20161492}{\urlstyle{rm} +\nolinkurl{10.1257/aer.20161492}}. \end{quote} Under the random order style, an entry with two authors is cited as already @@ -677,9 +723,23 @@ FUNCTION {bst.use.nameorder} \end{verbatim} \end{Frame} -Under the default setting, the symbol ``\textcircled{r}'' -(\verb|\textcircled{r}|) is used. But you can use another symbol. If you want -to use an alternative symbol, you need to change settings for +Under the default setting, we use ``\textcircled{r}'' (\verb|\textcircled{r}|) +for the symbol for separating author names. +They are defined with the following code in \texttt{econ.bst}. +\begin{Frame} +\begin{verbatim} +FUNCTION {bst.and.nameorder} +{ " \textcircled{r} " } + +FUNCTION {bst.cite.and.nameorder} +{ " \textcircled{r} " } + +FUNCTION {bst.and.others.nameorder} +{ " \textcircled{r}~al." } +\end{verbatim} +\end{Frame} + +You can use an alternative symbol by redefining these functions: `\texttt{bst.and.nameorder}', `\texttt{bst.cite.and.nameorder}' and `\texttt{bst.and.others.nameorder}'. @@ -699,7 +759,8 @@ order of priority: \begin{enumerate} \item Type of entry (if ``\texttt{bst.sort.entry.type}'' has non-zero value) \item Value of ``\texttt{year}'' field (if ``\texttt{bst.sort.year}'' has non-zero value) - \item Value of ``\texttt{absorder}'' field. + \item Value of ``\texttt{absorder}'' field (if ``\texttt{absorder}'' field has + a value) \item Value of ``\texttt{author}'' (or ``\texttt{editor}'') field. \item Value of ``\texttt{year}'' field. \item Value of ``\texttt{order}'' field. @@ -819,15 +880,23 @@ FUNCTION {bst.notuse.absorder.field} \citet{borgers95:_note_implem_stron_domin}, \citet{bergemann11:_ration}, -\citet{takeda2011c}, -\citet{Takeda2011b}, +\citet{takeda2015a}, +\citet{Takeda2014a}, \citet{Biker-2007-unemployment}, \citet{Babiker-1999-JapaneseNuclearPower}, \citet{Babiker-1999-KyotoProtocoland}, \citet{Babiker2000525}, \citet{BabikerRutherford-2005-EconomicEffectsof}, \citet{goldin:katz:2011}, \citet{goldin:katz:2008}, \citet{goldin:katz:2000}. -\citet{stakeda2013web} +\citet{stakeda2019web}, +\citet{essd-10-405-2018}, +\citet{luthi08:_high}, +\citet{doi:10.1175/2009BAMS2778.1}, +\citet{Rivers-2005-CombiningTop-Downand}, +\citet{WilsonMannOtsuki-2005-AssessingBenefitsof}, +\citet{zhang2016Deep}, +\citet{imbens2019Optimized}. + \vspace*{1em} \nocite{*} diff --git a/biblio/bibtex/contrib/econ-bst/econ.bst b/biblio/bibtex/contrib/econ-bst/econ.bst index 802f4c9658..f74137a79d 100644 --- a/biblio/bibtex/contrib/econ-bst/econ.bst +++ b/biblio/bibtex/contrib/econ-bst/econ.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:49:14 st> -% Version: 2.5 +% Version: 2.7 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -38,7 +37,10 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "2.5" } +FUNCTION {econ.version} { "2.7" } + +% File name +FUNCTION {econ.file} { "econ.bst" } % Debug mode. Non-zero makes debug mode on. FUNCTION {econ.debug} @@ -61,7 +63,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 } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% @@ -312,7 +314,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). %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -415,6 +421,15 @@ 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: @@ -455,7 +470,7 @@ FUNCTION {bst.edition.post} % The string before volume: % FUNCTION {bst.volume.pre} -{ ", Vol. " } % (default) +{ ", " } % (default) % The string after volume: % @@ -475,12 +490,12 @@ FUNCTION {bst.hide.number} % The string before number: % FUNCTION {bst.number.pre} -{ ", No. " } % (default) +{ " (" } % (default) % The string after number: % FUNCTION {bst.number.post} -{ "" } % (default) +{ ")" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % in @@ -496,12 +511,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): % @@ -649,7 +664,7 @@ FUNCTION {bst.show.url} % The string before url: % FUNCTION {bst.url.pre} -{ ", URL: \url{" } % (default) +{ ", \url{" } % (default) % The string after url: % @@ -684,12 +699,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. % @@ -698,9 +713,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: @@ -716,7 +731,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: % @@ -1059,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$ } @@ -1139,56 +1180,62 @@ 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 = + % 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 - { 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 * } + { 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$ @@ -1915,7 +1962,7 @@ FUNCTION {format.thesis.type} FUNCTION {format.tr.number} { type empty$ - { "Technical Report" } + { bst.techrep } { " " type * } if$ number empty$ @@ -2152,9 +2199,9 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - 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 } @@ -2399,6 +2446,8 @@ FUNCTION {techreport} 'skip$ if$ + format.url.doi output.nocomma + format.note output.nocomma fin.entry } @@ -2911,6 +2960,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$ @@ -3449,10 +3507,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$ - "% " 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$ + "% " write$ newline$ newline$ } EXECUTE {punctuation} -- cgit v1.2.3