diff options
Diffstat (limited to 'biblio/bibtex/contrib')
31 files changed, 3799 insertions, 60 deletions
diff --git a/biblio/bibtex/contrib/econ-bst/CHANGES.md b/biblio/bibtex/contrib/econ-bst/CHANGES.md index 2c17d8aa30..72fb911331 100644 --- a/biblio/bibtex/contrib/econ-bst/CHANGES.md +++ b/biblio/bibtex/contrib/econ-bst/CHANGES.md @@ -6,6 +6,17 @@ First-written: <2008/11/18> Changelogs for econ.bst ============================== +## Ver. 3.2 + +* 2023-10-27: Added the new style `econ-te.bst`, which is the style for + "Theoretical Economics". + +* 2023-10-27: In econ-sample.tex, I added `pagebackref` option to hyperref + package which realizes page back reference. + +* 2023-10-28: Changed the default value of `bst.mthesis` and `bst.phdthesis`. + + ## Ver. 3.1.1 * 2021-12-29: Changed the license (lppl 1.3 -> lppl 1.3c). diff --git a/biblio/bibtex/contrib/econ-bst/customization/README.md b/biblio/bibtex/contrib/econ-bst/customization/README.md index 1d018af8f3..8e73acccc2 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/README.md +++ b/biblio/bibtex/contrib/econ-bst/customization/README.md @@ -2,7 +2,7 @@ Author: Shiro Takeda e-mail <shiro.takeda@gmail.com> First-written: <2016-03-16> -Time-stamp: <2022-01-02 00:17:27 st> +Time-stamp: <2023-11-07 09:55:28 st> --> Contents of this folder @@ -23,15 +23,16 @@ Contents of this folder | `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-jet.bst` | [`econ-jet.pdf`](econ-jet.pdf) | The style for JET (Journal of Economic Theory). | | `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-te.bst` | [`econ-te.pdf`](econ-te.pdf) | The style for TE (Theoretical Economics). | +| `econ-old.bst` | [`econ-old.pdf`](econ-old.pdf) | The style of the old econ.bst (ver. 2.7). | | | [`econ-numbers.pdf`](econ-numbers.pdf) | An example with numerical citation mode. | | | [`econ-many-authors.pdf`](econ-many-authors.pdf) | An example with a very large number of authros | -| File | Explanation | -|:------------------|:--------------------------------------------------------------------------| +| File | Explanation | +|:------------------|:---------------------------------------------------------------------------| | journal_name.xlsx | This file stores correspondence between journal name and its abbreviation. | diff --git a/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex b/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex index acfab5bad8..5125e93c53 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex @@ -64,6 +64,7 @@ \citet{d'Aspremont-2003-CorrelationIndependenceAndBayesian}, \citet{Chung-1999-ANoteOnMatsushima's}, \citet{d'Aspremont-1998-LinearInequalityMethodsTo}, +\citet{myerson98:_exten_poiss_games_condor_jury_theor}, \\ \vspace*{1em} diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf Binary files differindex 68f23c49ac..197712f801 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf Binary files differindex 564cae1790..c74431938b 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf Binary files differindex dba7beba6f..6c14cd9483 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf Binary files differindex e7b3cd15b2..9c5f43b7a2 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf Binary files differindex 9f2e25387e..ade5aef9d1 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf Binary files differindex 788403bc43..ca23102dac 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf Binary files differindex f1272be47d..0dd9ae090a 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf Binary files differindex 7814671452..a658e93525 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf Binary files differindex 83b771119e..5707107add 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf Binary files differindex 01d8b715d4..4b186d4b6a 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf Binary files differindex 2ce886a5cb..376213c4d4 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf Binary files differindex 91edda805d..d7afc3ab9a 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-te.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-te.pdf Binary files differnew file mode 100644 index 0000000000..27a40f7b18 --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-te.pdf diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-te.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-te.tex new file mode 100644 index 0000000000..0ee3720cff --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-te.tex @@ -0,0 +1,66 @@ +%#!pdflatex +%#BIBTEX bibtex econ-te + +%############################## 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,% +pagebackref% Added pagebackref option +]{hyperref} + +% Change the style for back reference. +\renewcommand*\backref[1]{\ifx#1\relax \else [#1] \fi} + +\setlength{\topmargin}{-20pt} +\setlength{\textheight}{648pt} +\setlength{\oddsidemargin}{15pt} +\setlength{\textwidth}{440pt} + +%##################################################################### +%######################### Document Starts ########################### +%##################################################################### +\begin{document} + +This document uses ``\verb|econ-te.bst|'', which is the style for +``\href{https://econtheory.org/}{\textit{Theoretical Economics (TE)}}''. + +\vspace{1em} + +I added `\texttt{pagebackref}` option to hyperref package which realizes page +back reference. + +\vspace{1em} + +\input{cited-part} +\nocite{*} + +%% bst file: +\bibliographystyle{econ-te} +\bibliography{../econ-example} + +\end{document} + +%##################################################################### +%######################### Document Ends ############################# +%##################################################################### +% -------------------- +% Local Variables: +% fill-column: 80 +% coding: utf-8 +% End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-a.bst b/biblio/bibtex/contrib/econ-bst/econ-a.bst index 7b9a3ec118..0802aaf472 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-a.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-a.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -37,7 +37,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -762,12 +762,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-abbr.bst b/biblio/bibtex/contrib/econ-bst/econ-abbr.bst index 1efef1a665..2055468a5d 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-abbr.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-abbr.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -37,7 +37,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -744,12 +744,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-aea.bst b/biblio/bibtex/contrib/econ-bst/econ-aea.bst index 879ead090c..e65d892aa6 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-aea.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-aea.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -36,10 +36,10 @@ % https://github.com/ShiroTakeda/econ-bst % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name -FUNCTION {econ.file} { "aer.bst" } +FUNCTION {econ.file} { "econ-aea.bst" } % Debug mode. Non-zero makes debug mode on. FUNCTION {econ.debug} @@ -762,12 +762,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-b.bst b/biblio/bibtex/contrib/econ-bst/econ-b.bst index 14dbcfb606..39a7b6eccc 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-b.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-b.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -37,7 +37,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -766,12 +766,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst b/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst index cf54291d8d..ffb123ad42 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -29,7 +29,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ-econometrica.bst" } @@ -743,13 +743,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ ", Ph.D. dissertation" } -% { " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.bib b/biblio/bibtex/contrib/econ-bst/econ-example.bib index c38f2ddfb1..99c4d6c675 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-example.bib +++ b/biblio/bibtex/contrib/econ-bst/econ-example.bib @@ -566,6 +566,20 @@ {G{\'e}rard-Varet}, Louis-Andr{\'e}}, } +@article{myerson98:_exten_poiss_games_condor_jury_theor, + title = {Extended Poisson Games and the Condorcet Jury Theorem}, + journal = {Games and Economic Behavior}, + volume = 25, + number = 1, + pages = {111-131}, + year = 1998, + issn = {0899-8256}, + doi = {10.1006/game.1997.0610}, + url = + {https://www.sciencedirect.com/science/article/pii/S0899825697906102}, + author = {Roger B. Myerson}, +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % Book @Book{krugman91:_geogr_trade, diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.pdf b/biblio/bibtex/contrib/econ-bst/econ-example.pdf Binary files differindex 713d418325..607c31510d 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-example.pdf +++ b/biblio/bibtex/contrib/econ-bst/econ-example.pdf diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.tex b/biblio/bibtex/contrib/econ-bst/econ-example.tex index 3295255a7f..5c892e113c 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-example.tex +++ b/biblio/bibtex/contrib/econ-bst/econ-example.tex @@ -21,7 +21,10 @@ \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} +\usepackage[bookmarks=true,bookmarksnumbered=true,colorlinks=true,linkcolor=MyBlue,citecolor=MyRed,filecolor=MyBlue,urlcolor=MyGreen,pagebackref]{hyperref} + +% Change the style for back reference. +\renewcommand*\backref[1]{\ifx#1\relax \else [#1] \fi} \setlength{\topmargin}{-15pt} \setlength{\textheight}{638pt} @@ -55,12 +58,12 @@ %%% title, author, acknowledgement, and date \title{\texttt{econ.bst}:\\ -\BibTeX{} style for economics\\(ver. 3.1.1)\thanks{\texttt{econ.bst} is available at +\BibTeX{} style for economics\\(ver. 3.2)\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{2021-12-28} +\date{2023-10-28} %##################################################################### %######################### Document Starts ########################### @@ -207,6 +210,7 @@ provided. You can find these files under the ``customization'' folder. See \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-te.bst} & The style for TE (\textit{Theoretical Economics}). \\\hline \texttt{econ-old.bst} & The style of the old econ.bst. \\\hline \end{tabular} \end{flushleft} @@ -968,6 +972,7 @@ following three entries have sortname fields: \citet{d'Aspremont-2003-CorrelationIndependenceAndBayesian}, \citet{Chung-1999-ANoteOnMatsushima's}, \citet{d'Aspremont-1998-LinearInequalityMethodsTo}, +\citet{myerson98:_exten_poiss_games_condor_jury_theor}. \vspace*{1em} diff --git a/biblio/bibtex/contrib/econ-bst/econ-jet.bst b/biblio/bibtex/contrib/econ-bst/econ-jet.bst index 95ed5fd22c..c6488e66d5 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-jet.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-jet.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -29,7 +29,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ-jet.bst" } @@ -753,12 +753,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-jie.bst b/biblio/bibtex/contrib/econ-bst/econ-jie.bst index 90d1a5894b..4c76bcdf6a 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-jie.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-jie.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -31,7 +31,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ-jie.bst" } @@ -759,12 +759,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-jpe.bst b/biblio/bibtex/contrib/econ-bst/econ-jpe.bst index 9a78b59548..5953abb562 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-jpe.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-jpe.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2021 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -37,7 +37,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ-jpe.bst" } @@ -758,12 +758,13 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} { " Ph.D. dissertation" } % (default) +% { ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst b/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst index 319407d9e3..83194ade3f 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst @@ -1,10 +1,10 @@ -%% econ.bst: BibTeX style file for papers in economics. +n%% econ.bst: BibTeX style file for papers in economics. % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -37,7 +37,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -744,12 +744,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% diff --git a/biblio/bibtex/contrib/econ-bst/econ-te.bst b/biblio/bibtex/contrib/econ-bst/econ-te.bst new file mode 100644 index 0000000000..36b22ece80 --- /dev/null +++ b/biblio/bibtex/contrib/econ-bst/econ-te.bst @@ -0,0 +1,3641 @@ +%% econ-te.bst: BibTeX style file for "Theoretical Economics". +% +% Author: Shiro Takeda +% Maintainer: Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda +% First-written: <2007/07/28> +% Version: 3.2 +% Keywords: TeX, BibTeX, bst +% URL: https://github.com/ShiroTakeda/econ-bst + +% It may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3c +% of this license or (at your option) any later version. +% The latest version of this license is in +% https://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2008 or later. +% +% This work has the LPPL maintenance status "maintained". +% +% The Current Maintainer of this work is Shiro Takeda. + +% "econ-te.bst" is a BibTeX style file for "Theoretical Economics". +% "econ-te.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} { "3.2" } + +% File name +FUNCTION {econ.file} { "econ-te.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 sortname + } + + % 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 than N1, only the first N2 authors are +% displayed in the reference part (and other authors' names are omitted by "et +% al". +% +% The following function determines the value of N1. +FUNCTION {bst.max.author.num} +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (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{" * } +% { ", \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 numtrunc } +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 + +% nameptr: author number +% numnames: the total number of authors +% namesleft: the number of authors which have not been processed. +% numtrunc: bst.max.author.num.display + +%%% name +FUNCTION {format.names} +{ 's := + % insert 1 to nameptr. + #1 'nameptr := + % Set the number of authors to numnames. + s num.names$ 'numnames := + numnames 'namesleft := + + numnames bst.max.author.num > + % If numnames > bst.max.author.num + { bst.max.author.num.display 'numtrunc := } + { #0 'numtrunc := } + if$ + + % Repeat if namesleft > 0 ---- Repeat from here + { namesleft #0 > } + + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st 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$ + } + % A-2: If the author is the second or later authors (not the 1st author). + { 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$ + % Block A ends + + % Block B starts + nameptr #1 > + + % B-1: If the author is the second or later authors + { + + nameptr #1 - numtrunc = + % If nameptr - 1 = numtrunc + { #1 'namesleft := + "others" 't := } + 'skip$ + if$ + + % If numnames <= bst.max.author.num + nameorder.temp "random" = + bst.use.nameorder #0 = not and + + % If random ordering is used + { bst.and.nameorder * t * } + + % If random ordering is not used + { namesleft #1 > + + % If more than one authors are left + { ", " * t * } + + % If the author is the last author. + { t "others" = + + % If the name is "others" + { bst.and.others.output * } + + % If the name is not "others" + { numnames #2 = + + % If the entry have two authors + { bst.and * t * } + + % If the entry have more than two authors + { bst.ands * t * } + + if$ + } + if$ + } + if$ + } + if$ + } + + % When the author is the first author. + 't + if$ + % Block B ends + + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + + } + while$ % ---- Repeat until here +} + +% 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$ +} + +% <prev name list> <new name list> compare.names <modified name list> +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 " * } + { } + 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$ + } + 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 "{vv~}{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} +{ sortname empty$ not + { sortname format.names.full.wo.and } + { author empty$ not + { author format.names.full.wo.and } + { key empty$ not + { key #3 text.prefix$ } + { cite$ #1 #3 substring$ } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.editor.key.full.wo.and} +{ sortname empty$ not + { sortname format.names.full.wo.and } + { author empty$ not + { author format.names.full.wo.and } + { editor empty$ not + { editor format.names.full.wo.and } + { key empty$ + { cite$ #1 #3 substring$ } + { key #3 text.prefix$ } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {editor.key.organization.key.full.wo.and} +{ sortname empty$ not + { sortname format.names.full.wo.and } + { editor empty$ not + { editor format.names.full.wo.and } + { key empty$ not + { key #3 text.prefix$ } + { organization empty$ not + { "The " #4 organization chop.word #3 text.prefix$ } + { cite$ #1 #3 substring$ } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.organization.key.full.wo.and} +{ sortname empty$ not + { sortname format.names.full.wo.and } + { author empty$ not + { author format.names.full.wo.and } + { key empty$ not + { key #3 text.prefix$ } + { organization empty$ not + { "The " #4 organization chop.word #3 text.prefix$ } + { cite$ #1 #3 substring$ } + if$ + } + if$ + } + if$ + } + 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} +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } + if$ + } + 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$ + "% <https://github.com/ShiroTakeda/econ-bst>" 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 +% coding: utf-8 +% mode: bibtex-style +% End: diff --git a/biblio/bibtex/contrib/econ-bst/econ.bst b/biblio/bibtex/contrib/econ-bst/econ.bst index fa6d0a5234..90d4e25ab3 100644 --- a/biblio/bibtex/contrib/econ-bst/econ.bst +++ b/biblio/bibtex/contrib/econ-bst/econ.bst @@ -2,9 +2,9 @@ % % Author: Shiro Takeda % Maintainer: Shiro Takeda -% Copyright (C) 2001-2022 Shiro Takeda +% Copyright (C) 2001-2023 Shiro Takeda % First-written: <2007/07/28> -% Version: 3.1.1 +% Version: 3.2 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -37,7 +37,7 @@ % For changelogs, see CHANGES.txt file. % version number -FUNCTION {econ.version} { "3.1.1" } +FUNCTION {econ.version} { "3.2" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -744,12 +744,12 @@ FUNCTION {bst.techrep} % The string that represents master thesis: % FUNCTION {bst.mthesis} -{ " Master's thesis" } % (default) +{ ", Master's thesis" } % (default) % The string that represents phd thesis: % FUNCTION {bst.phdthesis} -{ " Ph.D. dissertation" } % (default) +{ ", Ph.D. dissertation" } % (default) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% |