From 07dc96bc3bbd691fc52aca15a172eaf41a89d873 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 25 May 2021 03:01:10 +0000 Subject: CTAN sync 202105250301 --- biblio/bibtex/contrib/econ-bst/CHANGES.md | 33 +++- biblio/bibtex/contrib/econ-bst/README.md | 14 +- .../contrib/econ-bst/customization/README.md | 3 +- .../contrib/econ-bst/customization/cited-part.tex | 13 +- .../contrib/econ-bst/customization/econ-a.pdf | Bin 76080 -> 143958 bytes .../contrib/econ-bst/customization/econ-a.tex | 1 + .../contrib/econ-bst/customization/econ-abbr.pdf | Bin 112011 -> 199485 bytes .../contrib/econ-bst/customization/econ-abbr.tex | 1 + .../contrib/econ-bst/customization/econ-aea.pdf | Bin 121138 -> 226736 bytes .../contrib/econ-bst/customization/econ-aea.tex | 1 + .../contrib/econ-bst/customization/econ-b.pdf | Bin 121534 -> 213457 bytes .../contrib/econ-bst/customization/econ-b.tex | 1 + .../econ-bst/customization/econ-default.pdf | Bin 112695 -> 200352 bytes .../econ-bst/customization/econ-default.tex | 1 + .../econ-bst/customization/econ-econometrica.pdf | Bin 116350 -> 207437 bytes .../econ-bst/customization/econ-econometrica.tex | 1 + .../contrib/econ-bst/customization/econ-jet.pdf | Bin 103734 -> 189836 bytes .../contrib/econ-bst/customization/econ-jet.tex | 1 + .../contrib/econ-bst/customization/econ-jie.tex | 1 + .../contrib/econ-bst/customization/econ-jpe.pdf | Bin 110347 -> 199002 bytes .../contrib/econ-bst/customization/econ-jpe.tex | 1 + .../econ-bst/customization/econ-no-sort.pdf | Bin 111927 -> 199606 bytes .../econ-bst/customization/econ-no-sort.tex | 1 + .../econ-bst/customization/econ-numbers.pdf | Bin 111368 -> 198716 bytes .../econ-bst/customization/econ-numbers.tex | 1 + .../contrib/econ-bst/customization/econ-old.pdf | Bin 113122 -> 201072 bytes .../contrib/econ-bst/customization/econ-old.tex | 1 + biblio/bibtex/contrib/econ-bst/econ-a.bst | 200 ++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-abbr.bst | 200 ++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-aea.bst | 214 ++++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-b.bst | 202 ++++++++++++------- .../bibtex/contrib/econ-bst/econ-econometrica.bst | 208 +++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-example.bib | 142 +++++++++++++- biblio/bibtex/contrib/econ-bst/econ-example.pdf | Bin 190003 -> 305652 bytes biblio/bibtex/contrib/econ-bst/econ-example.tex | 96 +++++++-- biblio/bibtex/contrib/econ-bst/econ-jet.bst | 202 ++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-jie.bst | 202 ++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-jpe.bst | 210 +++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-no-sort.bst | 200 ++++++++++++------- biblio/bibtex/contrib/econ-bst/econ-old.bst | 1 + biblio/bibtex/contrib/econ-bst/econ.bst | 200 ++++++++++++------- 41 files changed, 1634 insertions(+), 718 deletions(-) (limited to 'biblio') diff --git a/biblio/bibtex/contrib/econ-bst/CHANGES.md b/biblio/bibtex/contrib/econ-bst/CHANGES.md index b441437e0d..076367319b 100644 --- a/biblio/bibtex/contrib/econ-bst/CHANGES.md +++ b/biblio/bibtex/contrib/econ-bst/CHANGES.md @@ -8,6 +8,37 @@ Changelogs for econ.bst ## Changelogs +## Ver. 3.1 + +* 2021-05-23: Fixed a bug in label for sorting. + +* 2021-05-23: Added sample bibliography items with sortname field. + +* 2021-05-23: Suported sortname field. If you add sortname field to a + bibliography entry, the value of sortname field is used for sorting instead of + author or editor. For the details, see ``sorting'' section in + econ-example.pdf. + + +## Ver. 3.0 + +* 2020-12-29: bst files in the customization folder are updated. + +* 2020-06-23: In the new econ.bst, if the number of authors is greater than N1, + only the first N2 authors' names are displayed in the reference part (and + other authors' names are omitted by "et el."). + + N1 is determined by `bst.max.author.num` (the default value = 8). + N2 is determined by `bst.max.author.num.displayed` (the default value = 3). + + See econ-example.pdf or econ-many-authors.pdf in the customization folder. + + +## Ver. 2.9 + +* 2020-03-26: Fixed the bug related to book editors. + + ## Ver. 2.8 * 2020-03-03: Changed the directory structure. @@ -340,7 +371,7 @@ Changelogs for econ.bst Local Variables: mode: markdown fill-column: 80 -coding: utf-8-dos +coding: utf-8-unix End: --> diff --git a/biblio/bibtex/contrib/econ-bst/README.md b/biblio/bibtex/contrib/econ-bst/README.md index 938baee618..1468375d06 100644 --- a/biblio/bibtex/contrib/econ-bst/README.md +++ b/biblio/bibtex/contrib/econ-bst/README.md @@ -29,18 +29,6 @@ features: | [`CHANGES.md`](CHANGES.md) | Changelog file. | | `README.md` | This file. | -| bst file | Explanation | -|:------------------------|:----------------------------------------------------------| -| `econ-a.bst` | A simple style. | -| `econ-b.bst` | A style with much decoration. | -| `econ-no-sort.bst` | This style lists entries in citation order. | -| `econ-abbr.bst` | This style uses abbreviated journal name. | -| `econ-aea.bst` | The style for AEA journals such as AER, JEL, AEJ and JEP. | -| `econ-econometrica.bst` | The style for Econometrica. | -| `econ-jpe.bst` | The style for JPE (Journal of Poilitical Economy). | -| `econ-jet.bst` | The style for JET (Journal of Economic Theoriy). | -| `econ-jie.bst` | The style for JIE (Journal of International Economics). | -| `econ-old.bst` | The style of the old econ.bst. | @@ -50,7 +38,7 @@ features: Local Variables: mode: markdown fill-column: 80 -coding: utf-8-dos +coding: utf-8-unix End: --> diff --git a/biblio/bibtex/contrib/econ-bst/customization/README.md b/biblio/bibtex/contrib/econ-bst/customization/README.md index b8fafc3153..c267a0f6ce 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 First-written: <2016-03-16> -Time-stamp: <2020-02-26 13:55:53 st> +Time-stamp: <2020-06-24 23:43:29 st> --> Contents of this folder @@ -27,6 +27,7 @@ Contents of this folder | `econ-jie.bst` | [`econ-jie.pdf`](econ-jie.pdf) | The style for JIE (Journal of International Economics). | | `econ-old.bst` | [`econ-old.pdf`](econ-old.pdf) | The style of the old econ.bst. | | | [`econ-numbers.pdf`](econ-numbers.pdf) | An example with numerical citation mode. | +| | [`econ-many-authors.pdf`](econ-many-authors.pdf) | An example with a very large number of authros | | File | Explanation | diff --git a/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex b/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex index ace7e41136..eae5945317 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/cited-part.tex @@ -53,7 +53,17 @@ \citet{Rivers-2005-CombiningTop-Downand}, \citet{WilsonMannOtsuki-2005-AssessingBenefitsof}, \citet{zhang2016Deep}, -\citet{imbens2019Optimized}. +\citet{imbens2019Optimized}, +\citet{Attwood06:SexedUp_art}, +\citet{Attwood09:Mainstreaming}, +\citet{attwood2010porn}, +\citet{jones84:_handb_inter_econom}, +\citet{jones85:_handb_inter_econom}, +\citet{jones97:_handb_inter_econom}. +\citet{d'Aspremont-2004-BalancedBayesianMechanisms}, +\citet{d'Aspremont-2003-CorrelationIndependenceAndBayesian}, +\citet{Chung-1999-ANoteOnMatsushima's}, +\citet{d'Aspremont-1998-LinearInequalityMethodsTo}, \\ \vspace*{1em} @@ -67,5 +77,6 @@ % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf index c9fcf77fc2..202a7009f5 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-a.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex index c1f366e76f..a218313cd6 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-a.tex @@ -52,4 +52,5 @@ This document uses ``\verb|econ-a.bst|''. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf index 76230bae9f..edd5d8b607 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex index 5d10761c4b..2e96a446d1 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-abbr.tex @@ -53,4 +53,5 @@ names such as ``\textit{Am. Econ. Rev.}'' for ``\textit{American Economic Review % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf index 476a1d473b..20bf7a332a 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex index adf2074476..b78abb60a7 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-aea.tex @@ -55,4 +55,5 @@ Journals}. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf index fab03cb781..422dd8d5d0 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-b.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex index 549aa78783..9f49104c7e 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-b.tex @@ -52,4 +52,5 @@ This document uses ``\verb|econ-b.bst|''. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf index 0977859dbd..4bbc355ff3 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-default.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex index e6a2b5ed13..366196c498 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-default.tex @@ -55,4 +55,5 @@ This document uses ``\verb|econ.bst|''. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf index 8646918e29..c7a43683e2 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex index 9c43e4d35b..2b8d5a3c1b 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-econometrica.tex @@ -52,4 +52,5 @@ This document uses ``\verb|econ-econometrica.bst|''. The style like {\itshape Ec % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf index 438938c75a..4587051df1 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex index d446886609..2e9c332f2e 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jet.tex @@ -53,4 +53,5 @@ Economic Theory (JET)''}. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex index 9743a21a9b..3a280c7237 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jie.tex @@ -53,4 +53,5 @@ International Economics}). % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf index 0f5e899d60..e5c59392f5 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex index 373181586b..eb3e3cf8e7 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-jpe.tex @@ -53,4 +53,5 @@ Polictical Economy}. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf index 85f101163d..bbe956b94d 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex index 65581ff0b9..a0dba812bf 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-no-sort.tex @@ -55,4 +55,5 @@ alphabetical order). % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf index ce42db86b9..b19d6651d3 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex index db2f9821c4..97f74ee749 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-numbers.tex @@ -69,4 +69,5 @@ To use numerical mode of \texttt{natbib.sty}, we use the following setting. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf b/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf index 28790193ee..823c74a8bc 100644 Binary files a/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf and b/biblio/bibtex/contrib/econ-bst/customization/econ-old.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/customization/econ-old.tex b/biblio/bibtex/contrib/econ-bst/customization/econ-old.tex index 108f4cb46c..4bb7d6d325 100644 --- a/biblio/bibtex/contrib/econ-bst/customization/econ-old.tex +++ b/biblio/bibtex/contrib/econ-bst/customization/econ-old.tex @@ -55,4 +55,5 @@ This document uses ``\verb|econ-old.bst|''. % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-a.bst b/biblio/bibtex/contrib/econ-bst/econ-a.bst index 6a047e97d0..2d5330e22a 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-a.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-a.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -53,7 +53,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -317,10 +317,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -828,7 +836,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -1188,6 +1196,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -1196,11 +1209,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -1216,7 +1238,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -1233,27 +1255,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -1262,12 +1306,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -1392,10 +1441,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -2635,7 +2680,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -2693,58 +2738,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -2938,13 +2999,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -3594,4 +3659,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-abbr.bst b/biblio/bibtex/contrib/econ-bst/econ-abbr.bst index 7beacd5cf6..6b012acc1b 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-abbr.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-abbr.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -53,7 +53,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -315,10 +315,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -810,7 +818,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -2318,6 +2326,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -2326,11 +2339,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -2346,7 +2368,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -2363,27 +2385,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -2392,12 +2436,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -2522,10 +2571,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -3765,7 +3810,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -3823,58 +3868,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -4068,13 +4129,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -4724,4 +4789,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-aea.bst b/biblio/bibtex/contrib/econ-bst/econ-aea.bst index 21f2fb4803..cb6c44f4ea 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-aea.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-aea.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % Keywords: TeX, BibTeX, bst % URL: https://github.com/ShiroTakeda/econ-bst @@ -36,7 +36,7 @@ % https://github.com/ShiroTakeda/econ-bst % version number -FUNCTION {econ.version} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "aer.bst" } @@ -52,7 +52,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -316,10 +316,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -584,8 +592,8 @@ FUNCTION {bst.address.post} % You can choose the order of address and publisher by this function. % -% If #0, address -> publisher order (the default value). -% If non-zero, publisher -> address order. +% If #0, address -> publisher order (the default value). +% If non-zero, publisher -> address order. FUNCTION {bst.address.position} { #0 } % Address is placed before publisher (default) @@ -828,7 +836,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -1188,6 +1196,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -1196,11 +1209,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -1216,7 +1238,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -1233,27 +1255,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -1262,12 +1306,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -1313,7 +1362,7 @@ FUNCTION {compare.names.aer} s i.aer "{ff }{vv }{ll}{ jj}" format.name$ = { #1 i.aer < - { " and " * } % \bysame ŏȗ钘҂̑Oɂ‚ and + { " and " * } % \bysame で省略する著者の前につく and { } if$ "\bysame{}" * @@ -1392,10 +1441,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -1407,8 +1452,8 @@ FUNCTION {format.editors.x} { bst.editor.btitle.order #0 = { "" } { editor num.names$ #1 > - { " edited by " } - { " edited by " } + { " edited by " } % For econ-aea.bst + { " edited by " } % For econ-aea.bst % { bst.editors " by " * } % { bst.editor " by " * } if$ @@ -1550,7 +1595,7 @@ FUNCTION {format.bvolume} { volume empty$ { "" } % { bst.volume.pre volume * bst.volume.post * - { " Volume " volume * "." * + { " Volume " volume * "." * % For econ-aea.bst series empty$ 'skip$ %% If there is series field @@ -1880,7 +1925,7 @@ FUNCTION {format.address} FUNCTION {format.publisher} { publisher empty$ { "" } - { address empty$ + { address empty$ % For econ-aea.bst { ", " publisher * bst.publisher.post * } { bst.publisher.pre publisher * bst.publisher.post * } if$ @@ -2642,7 +2687,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -2700,58 +2745,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -2945,13 +3006,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -3601,4 +3666,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-b.bst b/biblio/bibtex/contrib/econ-bst/econ-b.bst index 2e668eb9e0..1388401e63 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-b.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-b.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -53,7 +53,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -322,12 +322,20 @@ FUNCTION {bst.and.others.num} % { #3 } % If the number of authors is greater or equal to three (default). { #4 } - If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -832,7 +840,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -1192,6 +1200,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -1200,11 +1213,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -1220,7 +1242,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -1237,27 +1259,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -1266,12 +1310,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -1396,10 +1445,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -2639,7 +2684,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -2697,58 +2742,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -2942,13 +3003,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -3598,4 +3663,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst b/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst index 81bc4063ff..9a20f53de7 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-econometrica.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ-econometrica.bst" } @@ -45,7 +45,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -308,10 +308,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -810,7 +818,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -1170,6 +1178,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -1178,11 +1191,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -1198,7 +1220,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -1215,27 +1237,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -1244,15 +1288,20 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } -% For Econometrica, we define `format.name.ed` in addition to `format.name`. +% For econ-econometrica.bst, we define `format.name.ed` in addition to `format.name`. FUNCTION {format.names.ed} { 's := % insert 1 to nameptr. @@ -1430,10 +1479,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -1450,7 +1495,7 @@ FUNCTION {format.editors.x} if$ } if$ - editor format.names.ed * + editor format.names.ed * % For econ-econometrica.bst % editor format.names * bst.editor.btitle.order #0 = { editor num.names$ #1 > @@ -1586,7 +1631,7 @@ FUNCTION {either.or.check} FUNCTION {format.bvolume} { volume empty$ { "" } - { " Volume " volume * bst.volume.post * + { " Volume " volume * bst.volume.post * % For econ-econometrica.bst % { bst.volume.pre volume * bst.volume.post * series empty$ 'skip$ @@ -2257,7 +2302,7 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - % For Econometrica, publisher and its address are placed before edition, + % For econ-econometrica.bst, publisher and its address are placed before edition, % chapter and page number. output.address.organization.publisher format.edition output.nocomma @@ -2678,7 +2723,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -2736,58 +2781,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -2981,13 +3042,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -3637,4 +3702,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.bib b/biblio/bibtex/contrib/econ-bst/econ-example.bib index 720ec7a504..b489e70c3b 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-example.bib +++ b/biblio/bibtex/contrib/econ-bst/econ-example.bib @@ -468,6 +468,104 @@ pages = {264-278} } +@ARTICLE{Attwood06:SexedUp_art, + title = {Sexed Up: Theorizing the Sexualization of Culture}, + author = {Attwood, Feona}, + journal = {Sexualities}, + volume = 9, + number = 1, + pages = {77--94}, + month = feb, + year = 2006 +} + +@article{Chung-1999-ANoteOnMatsushima's, + title = {A Note on {Matsushima}'s Regularity Condition}, + author = {Chung, Kim-Sau}, + year = 1999, + volume = 87, + pages = {429--433}, + issn = {0022-0531}, + doi = {10.1006/jeth.1999.2545}, + abstract = {This note first uses a simple example to show that + H. Matsushima's (1991, J. Econ. Theory54, 198\textendash 203) + regularity condition, to the contrary of his claim, actually + does not imply C. d'Aspremont and L.-A. G\'erard-Varet's + (1979, J. Public Econ.11, 25\textendash 45) compatibility + condition. It then proves a stronger version of Matsushima's + proposition, namely that efficient public decision rules can + be truthfully implemented with budget-balancing mechanisms + under the weak regularity condition. Journal of Economic + Literature Classification Numbers: C72, D82.}, + journal = {Journal of Economic Theory}, + number = 2 +} + +@article{d'Aspremont-1998-LinearInequalityMethodsTo, + title = {Linear Inequality Methods to Enforce Partnerships under + Uncertainty: {{An}} Overview}, + author = {{d'Aspremont}, Claude and {G{\'e}rard-Varet}, Louis-Andr{\'e}}, + year = 1998, + volume = 25, + pages = {311--336}, + issn = {0899-8256}, + doi = {10.1006/game.1998.0675}, + abstract = {We review different (generic) conditions on stochastic outcome + functions to enforce either efficient or nearly efficient + partnerships. Their logical relationship is explored. Two + kinds of conditions are considered. However, the property for + an action profile to be ``compatible'' plays a crucial role in + both kinds. Also, two kinds of enforcement mechanisms are + considered: enforcement through utility transfers and + enforcement through repetition.Journal of Economic + LiteratureClassification Numbers: D2, D7.}, + journal = {Games and Economic Behavior}, + keywords = {folk theorem,mechanism design,partnership,team moral hazard}, + number = 2, + sortname = {Aspremont, Claude and {G{\'e}rard-Varet}, Louis-Andr{\'e}}, +} + +@article{d'Aspremont-2003-CorrelationIndependenceAndBayesian, + title = {Correlation, Independence, and {{Bayesian}} Incentives}, + author = {{d'Aspremont}, Claude and Cr{\'e}mer, Jacques and + {G{\'e}rard-Varet}, Louis-Andr{\'e}}, + year = 2003, + month = oct, + volume = 21, + pages = {281--310}, + issn = {0176-1714, 1432-217X}, + doi = {10.1007/s00355-003-0260-8}, + journal = {Social Choice and Welfare}, + number = 2, + sortname = {Aspremont, Claude and Cr{\'e}mer, Jacques and + {G{\'e}rard-Varet}, Louis-Andr{\'e}}, +} + +@article{d'Aspremont-2004-BalancedBayesianMechanisms, + title = {Balanced Bayesian Mechanisms}, + author = {{d'Aspremont}, Claude and Cr{\'e}mer, Jacques and + {G{\'e}rard-Varet}, Louis-Andr{\'e}}, + year = 2004, + volume = 115, + pages = {385--396}, + issn = {0022-0531}, + doi = {10.1016/j.jet.2003.07.001}, + abstract = {In the transferable utility case, a number of authors have + identified conditions on beliefs that guarantee the existence + of Bayesian incentive compatible mechanisms with balanced + transfers. We present a new, easy to interpret, condition and + we show that it is (strictly) more general than all the other + conditions found in the literature. We also study conditions + guaranteeing the Bayesian implementability of all social + decision rules with balanced budget mechanisms.}, + journal = {Journal of Economic Theory}, + keywords = {Bayesian implementation,Bayesian incentive + compatibility,Mechanism design}, + number = 2, + sortname = {Aspremont, Claude and Cr{\'e}mer, Jacques and + {G{\'e}rard-Varet}, Louis-Andr{\'e}}, +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % Book @Book{krugman91:_geogr_trade, @@ -518,6 +616,48 @@ address = {New York} } +@book{jones84:_handb_inter_econom, + editor = {Ronald W. Jones and Peter B. Kenen}, + title = {Handbook of International Economics}, + publisher = {Elsevier}, + year = 1984, + volume = 1, + address = {Amsterdam} +} + +@book{jones85:_handb_inter_econom, + editor = {Ronald W. Jones and Peter B. Kenen}, + title = {Handbook of International Economics}, + publisher = {Elsevier}, + year = 1985, + volume = 2, + address = {Amsterdam} +} + +@book{jones97:_handb_inter_econom, + title = {Handbook of International Economics}, + editor = {Jones, Ronald W. and Grossman, Gene M. and Kenen, Peter B. + and Rogoff, Kenneth}, + volume = 3, + year = 1997, + publisher = {Elsevier}, + address = {Amsterdam} +} + +@book{Attwood09:Mainstreaming, + title = {Mainstreaming Sex: the Sexualization of Western Culture}, + editor = {Feona Attwood}, + publisher = {I.~B. Tauris}, + year = 2009, +} + +@book{attwood2010porn, + title = {Porn.com: Making Sense of Online Pornography}, + editor = {Feona Attwood}, + year = 2010, + publisher = {Peter Lang} +} + %%%%%%%%%%%%%%%%%%%%%%%%%% % Incollection @InCollection{krugman91:_is_bilat_bad, @@ -896,5 +1036,5 @@ % Local Variables: % mode: bibtex % fill-column: 80 -% code: utf-8-dos +% code: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.pdf b/biblio/bibtex/contrib/econ-bst/econ-example.pdf index 248c366936..65f8fb0ae7 100644 Binary files a/biblio/bibtex/contrib/econ-bst/econ-example.pdf and b/biblio/bibtex/contrib/econ-bst/econ-example.pdf differ diff --git a/biblio/bibtex/contrib/econ-bst/econ-example.tex b/biblio/bibtex/contrib/econ-bst/econ-example.tex index a12cc33087..1a5bc65dc4 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-example.tex +++ b/biblio/bibtex/contrib/econ-bst/econ-example.tex @@ -55,12 +55,12 @@ %%% title, author, acknowledgement, and date \title{\texttt{econ.bst}:\\ -\BibTeX{} style for economics\thanks{\texttt{econ.bst} is available at +\BibTeX{} style for economics\\(ver. 3.1)\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{2020/03/03} +\date{2021-05-23} %##################################################################### %######################### Document Starts ########################### @@ -552,6 +552,28 @@ Krugman, Paul~R. (1991) ``Is Bilateralism Bad?'' in Elhanan Helpman and Assaf Cambridge, MA, pp. 9--23. \end{Frame} +\subsubsection{When the number of authors is very large} + +In some research areas, the number of authors of a paper is sometimes very large +(more than 100 ). In such a bibliographic entry, it is not possible to list all +authors names in the reference part. To handle a bibliographic entry with many +authors, ``\texttt{econ.bst}'' lists only a part of authors when the number of +authors is large. In particular, econ.bst works as follows: +\begin{itemize} + \item If the number of authors is greater than N1, only the first N2 authors' + names are displayed in the reference part (and other authors' names are + omitted by ``et el.''). + \item N1 is determined by `bst.max.author.num' (the default value = 8). + \item N2 is determined by `bst.max.author.num.displayed' (the default value = + 3). +\end{itemize} + +This function is applied to The following three entries: +\citet{essd-10-405-2018}, \citet{luthi08:_high}, and +\citet{doi:10.1175/2009BAMS2778.1}. In addition, \texttt{econ-many-authors.tex} +in the customization folder includes other examples. + + \subsection{Customization of citation part} We have so far seen the customization of reference part. ``\texttt{econ.bst}'' @@ -588,9 +610,9 @@ change the style of citation part by changing commands and options provided by See the manual of \texttt{natbib.sty} for the details. \begin{itemize} \item The manual of \texttt{natbib.sty}: - \href{http://mirror.ctan.org/macros/latex/contrib/natbib/natbib.pdf}{natbib.pdf} + \href{https://mirror.ctan.org/macros/latex/contrib/natbib/natbib.pdf}{natbib.pdf} \item The reference sheet of \texttt{natbib.sty}: - \href{http://mirror.ctan.org/macros/latex/contrib/natbib/natnotes.pdf}{natnotex.pdf} + \href{https://mirror.ctan.org/macros/latex/contrib/natbib/natnotes.pdf}{natnotex.pdf} \end{itemize} \subsubsection{Citation by number index} @@ -762,6 +784,10 @@ order of priority: \item Value of ``\texttt{absorder}'' field (if ``\texttt{absorder}'' field has a value) \item Value of ``\texttt{author}'' (or ``\texttt{editor}'') field. + \begin{itemize} + \item If ``\texttt{sortname}'' field is assigned a value, it is used + instead of ``\texttt{author}'' and ``\texttt{editor}''. + \end{itemize} \item Value of ``\texttt{year}'' field. \item Value of ``\texttt{order}'' field. \item Value of ``\texttt{month}'' field. @@ -772,7 +798,7 @@ By default, \begin{itemize} \item ``\texttt{bst.sort.entry.type}'' and ``\texttt{bst.sort.year}'' have zero, - \item \textbf{''\texttt{absorder}''} and \textbf{''\texttt{order}''} + \item \textbf{``\texttt{absorder}''} and \textbf{``\texttt{order}''} fields are not assigned values because they are fields specific to ``\texttt{econ.bst}''. \end{itemize} @@ -840,11 +866,11 @@ FUNCTION {bst.sort.year} By default, old references are listed first. But if you set non-zero to ``\texttt{bst.reverse.year}'', new references are listed first. -\subsection{Sorting by ''\texttt{absorder}'' field} +\subsection{Sorting by ``\texttt{absorder}'' field} If ``\texttt{absorder}'' is defined in bib file, ``\texttt{econ.bst}'' uses its content as the primary sorting key. -You can set number 0--999 to ''\texttt{absorder}'' field. +You can set number 0--999 to ``\texttt{absorder}'' field. \begin{Frame} \begin{center} @@ -858,7 +884,7 @@ with the key \citet{takeda10:_cge_analy_welfar_effec_trade} has 999 for ``\texttt{absorder}'' field and thus listed in the last. -\subsubsection{Ignore ''\texttt{absorder}'' field} +\subsubsection{Ignore ``\texttt{absorder}'' field} If you set some values for ``\texttt{absorder}'' fields in bib file, but if you want to ignore them, set non-zero to @@ -870,6 +896,47 @@ FUNCTION {bst.notuse.absorder.field} \end{verbatim} \end{Frame} +\subsection{Sorting by ``\texttt{sortname}'' field} + +If ``\texttt{sortname}'' field is assigned a value, it is used for sorting +instead of ``\texttt{author}'' or ``\texttt{editor}''. + +For example, the first author name of the following bibliography +entry starts with the letter "d", so it is listed after the +documents with author names that start with the letter c. +\begin{Frame} +\begin{verbatim} +@article{d'Aspremont-2004-BalancedBayesianMechanisms, + title = {Balanced Bayesian Mechanisms}, + author = {{d'Aspremont}, Claude and Cr{\'e}mer, Jacques and + {G{\'e}rard-Varet}, Louis-Andr{\'e}}, + year = 2004, + volume = 115, + pages = {385--396}, + issn = {0022-0531}, + doi = {10.1016/j.jet.2003.07.001}, + journal = {Journal of Economic Theory}, + number = 2, +} +\end{verbatim} +\end{Frame} + +However, for the name ``d'Aspremont'' we should think that it starts with the +letter a.In this case, you had better to add the following ``\texttt{sortname}'' +field +\begin{Frame} +\begin{verbatim} + sortname = {Aspremont, Claude and Cr{\'e}mer, Jacques and + {G{\'e}rard-Varet}, Louis-Andr{\'e}}, +\end{verbatim} +\end{Frame} + +Then, this entry is listed as author whose name begin with letter A. The +following three entries have sortname fields: +\citet{d'Aspremont-2004-BalancedBayesianMechanisms}, +\citet{d'Aspremont-2003-CorrelationIndependenceAndBayesian}, and +\citet{d'Aspremont-1998-LinearInequalityMethodsTo}. + \section{Misc.} \begin{itemize} @@ -889,13 +956,17 @@ FUNCTION {bst.notuse.absorder.field} \citet{BabikerRutherford-2005-EconomicEffectsof}, \citet{goldin:katz:2011}, \citet{goldin:katz:2008}, \citet{goldin:katz:2000}. \citet{stakeda2019web}, -\citet{essd-10-405-2018}, -\citet{luthi08:_high}, -\citet{doi:10.1175/2009BAMS2778.1}, \citet{Rivers-2005-CombiningTop-Downand}, \citet{WilsonMannOtsuki-2005-AssessingBenefitsof}, \citet{zhang2016Deep}, -\citet{imbens2019Optimized}. +\citet{imbens2019Optimized}, +\citet{essd-10-405-2018}, +\citet{luthi08:_high}, +\citet{doi:10.1175/2009BAMS2778.1}, +\citet{d'Aspremont-2004-BalancedBayesianMechanisms}, +\citet{d'Aspremont-2003-CorrelationIndependenceAndBayesian}, +\citet{Chung-1999-ANoteOnMatsushima's}, +\citet{d'Aspremont-1998-LinearInequalityMethodsTo}, \vspace*{1em} @@ -916,5 +987,6 @@ FUNCTION {bst.notuse.absorder.field} % -------------------- % Local Variables: % fill-column: 80 +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-jet.bst b/biblio/bibtex/contrib/econ-bst/econ-jet.bst index 67a00ed083..ed0329ab39 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-jet.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-jet.bst @@ -1,10 +1,10 @@ -%% econ-jet.bst: BibTeX style file for "Journal of Economic Theory". +nn%% econ-jet.bst: BibTeX style file for "Journal of Economic Theory". % % Author: Shiro Takeda % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ-jet.bst" } @@ -45,7 +45,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -309,10 +309,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -819,7 +827,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -2327,6 +2335,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -2335,11 +2348,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -2355,7 +2377,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -2372,27 +2394,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -2401,12 +2445,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -2531,10 +2580,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -3774,7 +3819,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -3832,58 +3877,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -4077,13 +4138,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -4733,4 +4798,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-jie.bst b/biblio/bibtex/contrib/econ-bst/econ-jie.bst index 06a2cfbe50..f151baaed0 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-jie.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-jie.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ-jie.bst" } @@ -47,7 +47,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -311,10 +311,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -728,7 +736,7 @@ FUNCTION {bst.doi.post} % #2 -> Only DOI field is displayed % FUNCTION {bst.url.doi} -% { #0 } % (default) -> Both fields are displayed +% { #0 } % -> Both fields are displayed % { #1 } % -> Only URL field is displayed { #2 } % (default) --> Only DOI field is displayed @@ -825,7 +833,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -1185,6 +1193,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -1193,11 +1206,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -1213,7 +1235,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -1230,27 +1252,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -1259,12 +1303,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -1389,10 +1438,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -2632,7 +2677,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -2690,58 +2735,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -2935,13 +2996,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -3591,4 +3656,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-jpe.bst b/biblio/bibtex/contrib/econ-bst/econ-jpe.bst index ee6d4364ab..2fac0d1b56 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-jpe.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-jpe.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ-jpe.bst" } @@ -53,7 +53,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -316,10 +316,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -824,7 +832,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -2332,6 +2340,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -2340,11 +2353,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -2360,7 +2382,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -2377,27 +2399,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -2406,15 +2450,20 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } -% For JPE, we define `format.name.ed` in addition to `format.name`. +% For econ-jpe.bst, we define `format.name.ed` in addition to `format.name`. FUNCTION {format.names.ed} { 's := % insert 1 to nameptr. @@ -2592,10 +2641,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -2607,14 +2652,14 @@ FUNCTION {format.editors.x} { bst.editor.btitle.order #0 = { "" } { editor num.names$ #1 > - { " edited by " } - { " edited by " } + { " edited by " } % For econ-jpe.bst + { " edited by " } % For econ-jpe.bst % { bst.editors " by " * } % { bst.editor " by " * } if$ } if$ - editor format.names.ed * + editor format.names.ed * % For econ-jpe.bst bst.editor.btitle.order #0 = { editor num.names$ #1 > { bst.editors * } @@ -3419,7 +3464,7 @@ FUNCTION {incollection} format.in.ed.booktitle "booktitle" output.check.nocomma format.bvolume output.nocomma - % For JPE, publisher and its address are placed before edition, + % For econ-jpe.bst, publisher and its address are placed before edition, % chapter and page number. output.address.organization.publisher format.edition output.nocomma @@ -3840,7 +3885,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -3898,58 +3943,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -4143,13 +4204,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -4799,4 +4864,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst b/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst index b2cbcd057e..6a9e8f51eb 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-no-sort.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -53,7 +53,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -315,10 +315,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -810,7 +818,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -1170,6 +1178,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -1178,11 +1191,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -1198,7 +1220,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -1215,27 +1237,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -1244,12 +1288,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -1374,10 +1423,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -2617,7 +2662,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -2675,58 +2720,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -2920,13 +2981,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -3576,4 +3641,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ-old.bst b/biblio/bibtex/contrib/econ-bst/econ-old.bst index e16c585fff..3211980e1b 100644 --- a/biblio/bibtex/contrib/econ-bst/econ-old.bst +++ b/biblio/bibtex/contrib/econ-bst/econ-old.bst @@ -3576,4 +3576,5 @@ EXECUTE {end.bib} % Local Variables: % fill-column: 78 % mode: bst +% coding: utf-8-unix % End: diff --git a/biblio/bibtex/contrib/econ-bst/econ.bst b/biblio/bibtex/contrib/econ-bst/econ.bst index f74137a79d..070b7299f9 100644 --- a/biblio/bibtex/contrib/econ-bst/econ.bst +++ b/biblio/bibtex/contrib/econ-bst/econ.bst @@ -4,7 +4,7 @@ % Maintainer: Shiro Takeda % Copyright (C) 2001-2018 Shiro Takeda % First-written: <2007/07/28> -% Version: 2.7 +% Version: 3.1 % 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} { "2.7" } +FUNCTION {econ.version} { "3.1" } % File name FUNCTION {econ.file} { "econ.bst" } @@ -53,7 +53,7 @@ ENTRY institution journal key month note number organization pages publisher school series title type url volume year % Fields specific to econ.bst - order absorder nameorder + order absorder nameorder sortname } % Definition of entry variable. The entry variable is a variable which has @@ -315,10 +315,18 @@ FUNCTION {bst.cite.and.nameorder} FUNCTION {bst.and.others.num} { #3 } % If the number of authors is greater or equal to three (default). -% If the number of authors is greater or equal to bst.max.author.num, only -% first author is listed and other authors' names are abbreviated as "et al.". +% 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} -{ #12 } % If the number of authors is greater or equal to 12 (default). +{ #8 } % (default). + +% The following function determines the value of N2. +FUNCTION {bst.max.author.num.display} +{ #3 } % (default). + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -810,7 +818,7 @@ STRINGS { item.type } STRINGS { tempa tempb } %% Integer global variables: -INTEGERS { nameptr namesleft numnames name.num } +INTEGERS { nameptr namesleft numnames name.num numtrunc } INTEGERS { multiresult } INTEGERS { index } INTEGERS { len } @@ -1170,6 +1178,11 @@ FUNCTION {bst.and.others.output} %%% 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 := @@ -1178,11 +1191,20 @@ FUNCTION {format.names} % Set the number of authors to numnames. s num.names$ 'numnames := numnames 'namesleft := - % Repeat if namesleft > 0 + + 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 > } - { nameptr #1 = - % First author + { + % Block A starts + nameptr #1 = + % A-1: If the author is the 1st author { bst.author.name #0 = bst.author.name #1 = or @@ -1198,7 +1220,7 @@ FUNCTION {format.names} } if$ } - % The second or later authors + % A-2: If the author is the second or later authors (not the 1st author). { bst.author.name #0 = bst.author.name #2 = or @@ -1215,27 +1237,49 @@ FUNCTION {format.names} if$ } if$ + % Block A ends + % Block B starts nameptr #1 > - % The second or later authors - { numnames bst.max.author.num > - { bst.and.others * - #1 'namesleft := } - { nameorder.temp "random" = - bst.use.nameorder #0 = not and - { bst.and.nameorder * t * } - { namesleft #1 > - % More than one authors left - { ", " * t * } - % Only one author left - { t "others" = - { bst.and.others.output * } - { numnames #2 = - % Entry with two authors - { bst.and * t * } - { bst.ands * t * } - if$ - } + + % 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$ @@ -1244,12 +1288,17 @@ FUNCTION {format.names} } if$ } + + % When the author is the first author. 't if$ + % Block B ends + nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := + } - while$ + while$ % ---- Repeat until here } % remove successive periods (commas) from author @@ -1374,10 +1423,6 @@ FUNCTION {format.editors.alt} { "\bysame " } { bst.author.pre editor remove.ss.period.auth * } if$ - editor num.names$ #1 > - { bst.editors * } - { bst.editor * } - if$ } if$ } @@ -2617,7 +2662,7 @@ FUNCTION {format.lab.names.abb} % if the number of authors is less than bst.and.others.num, full name. { s format.lab.names.full } % if the number of authors is equal or more than bst.and.others.num, abbreviated name. - { s #1 "{ll}" format.name$ bst.and.others.output * } + { s #1 "{vv~}{ll}" format.name$ bst.and.others.output * } if$ } @@ -2675,58 +2720,74 @@ FUNCTION {format.names.full.wo.and} } FUNCTION {author.key.full.wo.and} -{ author empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { author format.names.full.wo.and } if$ } FUNCTION {author.editor.key.full.wo.and} -{ author empty$ - { editor empty$ - { key empty$ - { cite$ #1 #3 substring$ } - { key #3 text.prefix$ } +{ 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$ } - { editor format.names.full.wo.and } if$ } - { author format.names.full.wo.and } if$ } FUNCTION {editor.key.organization.key.full.wo.and} -{ editor empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { editor format.names.full.wo.and } if$ } FUNCTION {author.key.organization.key.full.wo.and} -{ author empty$ - { key empty$ - { organization empty$ - { cite$ #1 #3 substring$ } - { "The " #4 organization chop.word #3 text.prefix$ } +{ 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$ } - { key #3 text.prefix$ } if$ } - { author format.names.full.wo.and } if$ } @@ -2920,13 +2981,17 @@ FUNCTION {calc.cyear} } FUNCTION {calc.sort.label.abb} -{ author empty$ - { editor empty$ - { "" } - { editor 's := } +{ sortname empty$ not + { sortname 's := } + { author empty$ not + { author 's := } + { editor empty$ not + { editor 's := } + { "" } + if$ + } if$ } - { author 's := } if$ s sort.format.names.abb 't := year empty$ @@ -3575,5 +3640,6 @@ EXECUTE {end.bib} % -------------------- % Local Variables: % fill-column: 78 +% coding: utf-8-unix % mode: bst % End: -- cgit v1.2.3